From 99c1937c66ddbe9aff4badab844352800810f067 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 24 Oct 2024 14:07:02 +0000 Subject: [PATCH] deploy: 8b2d792afd477b17860014fbfaa438ba529d79f2 --- AboutUs.html | 2 +- AboutUs.page-vue-render.js | 2 +- Configuration.html | 2 +- Configuration.page-vue-render.js | 2 +- DevOps.html | 2 +- DevOps.page-vue-render.js | 2 +- DeveloperGuide.html | 2 +- DeveloperGuide.page-vue-render.js | 2 +- Documentation.html | 2 +- Documentation.page-vue-render.js | 2 +- Logging.html | 2 +- Logging.page-vue-render.js | 2 +- SettingUp.html | 2 +- SettingUp.page-vue-render.js | 2 +- Testing.html | 2 +- Testing.page-vue-render.js | 2 +- UserGuide.html | 4 ++-- UserGuide.page-vue-render.js | 18 +++++++++++++++--- diagrams/ModelClassDiagram.png | Bin 38300 -> 39499 bytes diagrams/ModelClassDiagram.puml | 4 +++- index.html | 2 +- index.page-vue-render.js | 2 +- siteData.json | 1 + team/abdulrahmanalrammah.html | 2 +- team/abdulrahmanalrammah.page-vue-render.js | 2 +- team/andrew22teoh.html | 2 +- team/andrew22teoh.page-vue-render.js | 2 +- team/johndoe.html | 2 +- team/johndoe.page-vue-render.js | 2 +- team/liauzhanyi.html | 2 +- team/liauzhanyi.page-vue-render.js | 2 +- team/rayray39.html | 2 +- team/rayray39.page-vue-render.js | 2 +- 33 files changed, 49 insertions(+), 34 deletions(-) diff --git a/AboutUs.html b/AboutUs.html index a7dcaf04766..64728a7aad9 100644 --- a/AboutUs.html +++ b/AboutUs.html @@ -21,7 +21,7 @@ [portfolio]

Rayner Lim Fang Yuh

[github] [portfolio]

Rachael Chan

[github] [portfolio]

Liau Zhan Yi

[github] -[portfolio]

+[portfolio]

diff --git a/AboutUs.page-vue-render.js b/AboutUs.page-vue-render.js index 9eac4d1c5a1..1dedfe2cc0e 100644 --- a/AboutUs.page-vue-render.js +++ b/AboutUs.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"about-us"}},[_v("About Us"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#about-us","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We are a team based in the "),_c('a',{attrs:{"href":"http://www.comp.nus.edu.sg"}},[_v("School of Computing, National University of Singapore")]),_v(".")]),_v(" "),_c('p',[_v("You can reach us at the email "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("seer[at]comp.nus.edu.sg")])]),_v(" "),_c('h2',{attrs:{"id":"project-team"}},[_v("Project team"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-team","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"andrew-teoh"}},[_v("Andrew Teoh"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#andrew-teoh","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/tp/images/andrew22teoh.png","width":"200px"}}),_v(" "),_c('p',[_v("["),_c('a',{attrs:{"href":"https://github.com/andrew22teoh"}},[_v("github")]),_v("]\n["),_c('a',{attrs:{"href":"/tp/team/andrew22teoh.html"}},[_v("portfolio")]),_v("]")]),_v(" "),_c('ul',[_c('li',[_v("Role: Team Lead")])]),_v(" "),_c('h3',{attrs:{"id":"abdulrahman-al-rammah"}},[_v("Abdulrahman Al Rammah"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#abdulrahman-al-rammah","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/tp/images/abdulrahmanalrammah.png","width":"200px"}}),_v(" "),_c('p',[_v("["),_c('a',{attrs:{"href":"http://github.com/abdulrahmanalrammah"}},[_v("github")]),_v("]\n["),_c('a',{attrs:{"href":"/tp/team/abdulrahmanalrammah.html"}},[_v("portfolio")]),_v("]")]),_v(" "),_c('ul',[_c('li',[_v("Role: Developer")]),_v(" "),_c('li',[_v("Responsibilities: Documentation")])]),_v(" "),_c('h3',{attrs:{"id":"rayner-lim-fang-yuh"}},[_v("Rayner Lim Fang Yuh"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#rayner-lim-fang-yuh","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/tp/images/rayray39.png","width":"200px"}}),_v(" "),_c('p',[_v("["),_c('a',{attrs:{"href":"http://github.com/rayray39"}},[_v("github")]),_v("]\n["),_c('a',{attrs:{"href":"/tp/team/johndoe.html"}},[_v("portfolio")]),_v("]")]),_v(" "),_c('ul',[_c('li',[_v("Role: Developer")]),_v(" "),_c('li',[_v("Responsibilities: UI")])]),_v(" "),_c('h3',{attrs:{"id":"rachael-chan"}},[_v("Rachael Chan"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#rachael-chan","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/tp/images/rachael-chan.png","width":"200px"}}),_v(" "),_c('p',[_v("["),_c('a',{attrs:{"href":"http://github.com/rachael-chan"}},[_v("github")]),_v("]\n["),_c('a',{attrs:{"href":"/tp/team/rachaelchan.html"}},[_v("portfolio")]),_v("]")]),_v(" "),_c('ul',[_c('li',[_v("Role: Software Engineer")]),_v(" "),_c('li',[_v("Responsibilities: In charge of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Model")])])]),_v(" "),_c('h3',{attrs:{"id":"liau-zhan-yi"}},[_v("Liau Zhan Yi"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#liau-zhan-yi","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/tp/images/liauzhanyi.png","width":"200px"}}),_v(" "),_c('p',[_v("["),_c('a',{attrs:{"href":"https://github.com/liauzhanyi"}},[_v("github")]),_v("]\n["),_c('a',{attrs:{"href":"/tp/team/liauzhanyi.html"}},[_v("portfolio")]),_v("]")]),_v(" "),_c('ul',[_c('li',[_v("Role: Integration")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/Configuration.html b/Configuration.html index 3ed868aa972..6b8e63325b4 100644 --- a/Configuration.html +++ b/Configuration.html @@ -16,7 +16,7 @@ Search

Configuration guide

Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: config.json).

+
  • Configuration guide

    Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: config.json).

    diff --git a/Configuration.page-vue-render.js b/Configuration.page-vue-render.js index 5e1dcff21d2..fc63a3f50c9 100644 --- a/Configuration.page-vue-render.js +++ b/Configuration.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"configuration-guide"}},[_v("Configuration guide"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#configuration-guide","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(").")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/DevOps.html b/DevOps.html index a758051a314..ff9a668c122 100644 --- a/DevOps.html +++ b/DevOps.html @@ -18,7 +18,7 @@
  • DevOps guide

    Build automation

    This project uses Gradle for build automation and dependency management. You are recommended to read this Gradle Tutorial from the se-edu/guides.

    Given below are how to use Gradle for some important project tasks.


    Continuous integration (CI)

    This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the .github/workflows folder). No further setting up required.

    Code coverage

    As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.

    However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.

    To enable Codecov for forks of this project, follow the steps given in this se-edu guide.

    Repository-wide checks

    In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.

    These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:

    ./config/travis/run-checks.sh

    Any warnings or errors will be printed out to the console.

    If adding new checks:


    Making a release

    Here are the steps to create a new release.

    1. Update the version number in MainApp.java.
    2. Generate a fat JAR file using Gradle (i.e., gradlew shadowJar).
    3. Tag the repo with the version number. e.g. v0.1
    4. Create a new release using GitHub. Upload the JAR file you created.
    +e.g. ./gradlew shadowJar.

  • run: Builds and runs the application.
    runShadow: Builds the application as a fat JAR, and then runs it.

  • checkstyleMain: Runs the code style check for the main code base.
    checkstyleTest: Runs the code style check for the test code base.

  • test: Runs all tests.


  • Continuous integration (CI)

    This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the .github/workflows folder). No further setting up required.

    Code coverage

    As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.

    However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.

    To enable Codecov for forks of this project, follow the steps given in this se-edu guide.

    Repository-wide checks

    In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.

    These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:

    ./config/travis/run-checks.sh

    Any warnings or errors will be printed out to the console.

    If adding new checks:


    Making a release

    Here are the steps to create a new release.

    1. Update the version number in MainApp.java.
    2. Generate a fat JAR file using Gradle (i.e., gradlew shadowJar).
    3. Tag the repo with the version number. e.g. v0.1
    4. Create a new release using GitHub. Upload the JAR file you created.
    diff --git a/DevOps.page-vue-render.js b/DevOps.page-vue-render.js index 3d1ff7488ff..74591d49e52 100644 --- a/DevOps.page-vue-render.js +++ b/DevOps.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"devops-guide"}},[_v("DevOps guide"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#devops-guide","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{pre:true,attrs:{"class":"page-nav-print d-none d-print-block"}}),_v(" "),_c('h2',{attrs:{"id":"build-automation"}},[_v("Build automation"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#build-automation","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This project uses Gradle for "),_c('strong',[_v("build automation and dependency management")]),_v(". "),_c('strong',[_v("You are recommended to read "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/gradle.html"}},[_v("this Gradle Tutorial from the se-edu/guides")])]),_v(".")]),_v(" "),_c('p',[_v("Given below are how to use Gradle for some important project tasks.")]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clean")])]),_v(": Deletes the files created during the previous build tasks (e.g. files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("build")]),_v(" folder)."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./gradlew clean")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("shadowJar")])]),_v(": Uses the ShadowJar plugin to creat a fat JAR file in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("build/lib")]),_v(" folder, "),_c('em',[_v("if the current file is outdated")]),_v("."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./gradlew shadowJar")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run")])]),_v(": Builds and runs the application."),_c('br'),_v(" "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("runShadow")])]),_v(": Builds the application as a fat JAR, and then runs it.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("checkstyleMain")])]),_v(": Runs the code style check for the main code base."),_c('br'),_v(" "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("checkstyleTest")])]),_v(": Runs the code style check for the test code base.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")])]),_v(": Runs all tests.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./gradlew test")]),_v(" — Runs all tests")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./gradlew clean test")]),_v(" — Cleans the project and runs tests")])])])]),_v(" "),_c('hr'),_v(" "),_c('h2',{attrs:{"id":"continuous-integration-ci"}},[_v("Continuous integration (CI)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#continuous-integration-ci","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".github/workflows")]),_v(" folder). No further setting up required.")]),_v(" "),_c('h3',{attrs:{"id":"code-coverage"}},[_v("Code coverage"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#code-coverage","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.")]),_v(" "),_c('p',[_v("However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.")]),_v(" "),_c('p',[_v("To enable Codecov for forks of this project, follow the steps given in "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/codecov.html"}},[_v("this se-edu guide")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"repository-wide-checks"}},[_v("Repository-wide checks"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repository-wide-checks","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.")]),_v(" "),_c('p',[_v("These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config/travis/run-checks.sh")])]),_v(" "),_c('p',[_v("Any warnings or errors will be printed out to the console.")]),_v(" "),_c('p',[_c('strong',[_v("If adding new checks:")])]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("Checks are implemented as executable "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("check-*")]),_v(" scripts within the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".github")]),_v(" directory. The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run-checks.sh")]),_v(" script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.")])]),_v(" "),_c('li',[_c('p',[_v("Check scripts should print out errors in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("SEVERITY:FILENAME:LINE: MESSAGE")])]),_v(" "),_c('ul',[_c('li',[_v("SEVERITY is either ERROR or WARN.")]),_v(" "),_c('li',[_v("FILENAME is the path to the file relative to the current directory.")]),_v(" "),_c('li',[_v("LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.")])])]),_v(" "),_c('li',[_c('p',[_v("Check scripts must exit with a non-zero exit code if any errors occur.")])])]),_v(" "),_c('hr'),_v(" "),_c('h2',{attrs:{"id":"making-a-release"}},[_v("Making a release"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#making-a-release","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Here are the steps to create a new release.")]),_v(" "),_c('ol',[_c('li',[_v("Update the version number in "),_c('a',{attrs:{"href":"https://github.com/AY2425S1-CS2103-F10-2/tp/blob/master/src/main/java/seedu/address/MainApp.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("MainApp.java")])]),_v(".")]),_v(" "),_c('li',[_v("Generate a fat JAR file using Gradle (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gradlew shadowJar")]),_v(").")]),_v(" "),_c('li',[_v("Tag the repo with the version number. e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("v0.1")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://help.github.com/articles/creating-releases/"}},[_v("Create a new release using GitHub")]),_v(". Upload the JAR file you created.")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/DeveloperGuide.html b/DeveloperGuide.html index 9e9a5fc4f57..16c6760ddf1 100644 --- a/DeveloperGuide.html +++ b/DeveloperGuide.html @@ -30,7 +30,7 @@ Expected: Similar to previous.

  • Deleting persons while all persons are being shown

    1. Prerequisites: List all persons using the list command. Multiple persons in the list.

    2. Test case: delete 1 2
      Expected: First and second contact are deleted from the list. Names of the deleted contacts are shown in the status message. Timestamp in the status bar is updated.

    3. Test case: delete x y
      (where x,y are greater than the number of listed persons) Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.

    4. Test case: delete 0 1
      -Expected: First contact is deleted from the list. Name of the deleted contact and invalidity of the index 0 is shown in the status message. Timestamp in the status bar is updated.

  • Saving data

    1. Dealing with missing/corrupted data files

      1. {explain how to simulate a missing/corrupted file, and the expected behavior}
    2. { more test cases …​ }

    +Expected: First contact is deleted from the list. Name of the deleted contact and invalidity of the index 0 is shown in the status message. Timestamp in the status bar is updated.

    Saving data

    1. Dealing with missing/corrupted data files

      1. {explain how to simulate a missing/corrupted file, and the expected behavior}
    2. { more test cases …​ }

    diff --git a/DeveloperGuide.page-vue-render.js b/DeveloperGuide.page-vue-render.js index f17e2468d53..36383ab7432 100644 --- a/DeveloperGuide.page-vue-render.js +++ b/DeveloperGuide.page-vue-render.js @@ -362,6 +362,6 @@ with(this){return _c('h3',{attrs:{"id":"saving-data"}},[_v("Saving data"),_c('a' with(this){return _c('ol',[_c('li',[_c('p',[_v("Dealing with missing/corrupted data files")]),_v(" "),_c('ol',[_c('li',[_c('em',[_v("{explain how to simulate a missing/corrupted file, and the expected behavior}")])])])]),_v(" "),_c('li',[_c('p',[_c('em',[_v("{ more test cases …​ }")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/Documentation.html b/Documentation.html index cbf717b983f..0a06129c50e 100644 --- a/Documentation.html +++ b/Documentation.html @@ -16,7 +16,7 @@ Search

    Documentation Guide

    Style guidance:

    Converting to PDF

    +
  • Documentation Guide

    Style guidance:

    Converting to PDF

    diff --git a/Documentation.page-vue-render.js b/Documentation.page-vue-render.js index 0b8682b93d1..cbc9c124e90 100644 --- a/Documentation.page-vue-render.js +++ b/Documentation.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"documentation-guide"}},[_v("Documentation Guide"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#documentation-guide","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("We use "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_c('strong',[_v("MarkBind")])]),_v(" to manage documentation.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docs/")]),_v(" folder contains the source files for the documentation website.")]),_v(" "),_c('li',[_v("To learn how set it up and maintain the project website, follow the guide "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/markbind-forked-sites.html"}},[_v("[se-edu/guides] Working with Forked MarkBind sites")]),_v(" for project documentation.")])]),_v(" "),_c('p',[_c('strong',[_v("Style guidance:")])]),_v(" "),_c('ul',[_c('li',[_v("Follow the "),_c('a',{attrs:{"href":"https://developers.google.com/style"}},[_c('strong',[_c('em',[_v("Google developer documentation style guide")])])]),_v(".")]),_v(" "),_c('li',[_v("Also relevant is the "),_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/markdown.html"}},[_c('em',[_v("se-edu/guides "),_c('strong',[_v("Markdown coding standard")])])]),_v(".")])]),_v(" "),_c('p',[_c('strong',[_v("Converting to PDF")])]),_v(" "),_c('ul',[_c('li',[_v("See the guide "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/savingPdf.html"}},[_c('em',[_v("se-edu/guides "),_c('strong',[_v("Saving web documents as PDF files")])])]),_v(".")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/Logging.html b/Logging.html index 5ab13bfe1f4..87cec9122d0 100644 --- a/Logging.html +++ b/Logging.html @@ -16,7 +16,7 @@ Search

    Logging guide

    +
  • Logging guide

    diff --git a/Logging.page-vue-render.js b/Logging.page-vue-render.js index 8433e0d8586..79697dc1919 100644 --- a/Logging.page-vue-render.js +++ b/Logging.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"logging-guide"}},[_v("Logging guide"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#logging-guide","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("We are using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java.util.logging")]),_v(" package for logging.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LogsCenter")]),_v(" class is used to manage the logging levels and logging destinations.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Logger")]),_v(" for a class can be obtained using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LogsCenter.getLogger(Class)")]),_v(" which will log messages according to the specified logging level.")]),_v(" "),_c('li',[_v("Log messages are output through the console and to a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".log")]),_v(" file.")]),_v(" "),_c('li',[_v("The output logging level can be controlled using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("logLevel")]),_v(" setting in the configuration file (See the "),_c('a',{attrs:{"href":"/tp/Configuration.html"}},[_v("Configuration guide")]),_v(" section).")]),_v(" "),_c('li',[_c('strong',[_v("When choosing a level for a log message")]),_v(", follow the conventions given in "),_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/java/logging.html"}},[_c('em',[_v("[se-edu/guides] Java: Logging conventions")])]),_v(".")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/SettingUp.html b/SettingUp.html index 95dfeaf6482..9519287f411 100644 --- a/SettingUp.html +++ b/SettingUp.html @@ -22,7 +22,7 @@
  • Verify the setup:
    1. Run the seedu.address.Main and try a few commands.
    2. Run the tests to ensure they all pass.

  • Before writing code

    1. Configure the coding style

      If using IDEA, follow the guide [se-edu/guides] IDEA: Configuring the code style to set up IDEA's coding style to match ours.

      Tip: Optionally, you can follow the guide [se-edu/guides] Using Checkstyle to find how to use the CheckStyle within IDEA e.g., to report problems as you write code.

    2. Set up CI

      This project comes with a GitHub Actions config files (in .github/workflows folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the master branch or to any PR. No set up required.

    3. Learn the design

      When you are ready to start coding, we recommend that you get some sense of the overall design by reading about SocialBook architecture.

    4. Do the tutorials -These tutorials will help you get acquainted with the codebase.

    +These tutorials will help you get acquainted with the codebase.

    diff --git a/SettingUp.page-vue-render.js b/SettingUp.page-vue-render.js index f4755bc6fe5..5b1f3435bc8 100644 --- a/SettingUp.page-vue-render.js +++ b/SettingUp.page-vue-render.js @@ -41,6 +41,6 @@ with(this){return _c('li',[_c('p',[_c('strong',[_v("Learn the design")])]),_v(" with(this){return _c('li',[_c('p',[_c('strong',[_v("Do the tutorials")]),_v("\nThese tutorials will help you get acquainted with the codebase.")]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"/tp/tutorials/TracingCode.html"}},[_v("Tracing code")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"/tp/tutorials/AddRemark.html"}},[_v("Adding a new command")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"/tp/tutorials/RemovingFields.html"}},[_v("Removing fields")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/Testing.html b/Testing.html index 1811afe1b64..48306bcef66 100644 --- a/Testing.html +++ b/Testing.html @@ -20,7 +20,7 @@ test class, or a test and choose Run 'ABC'
  • Method 2: Using Gradle
  • Link: Read this Gradle Tutorial from the se-edu/guides to learn more about using Gradle.


    Types of tests

    This project has three types of tests:

    1. Unit tests targeting the lowest level methods/classes.
      e.g. seedu.address.commons.StringUtilTest
    2. Integration tests that are checking the integration of multiple code units (those code units are assumed to be working).
      e.g. seedu.address.storage.StorageManagerTest
    3. Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together.
      -e.g. seedu.address.logic.LogicManagerTest
    +e.g. seedu.address.logic.LogicManagerTest diff --git a/Testing.page-vue-render.js b/Testing.page-vue-render.js index 87ccd519cf9..17c4ed40af5 100644 --- a/Testing.page-vue-render.js +++ b/Testing.page-vue-render.js @@ -20,6 +20,6 @@ with(this){return _c('h2',{attrs:{"id":"types-of-tests"}},[_v("Types of tests"), with(this){return _c('ol',[_c('li',[_c('em',[_v("Unit tests")]),_v(" targeting the lowest level methods/classes."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("seedu.address.commons.StringUtilTest")])]),_v(" "),_c('li',[_c('em',[_v("Integration tests")]),_v(" that are checking the integration of multiple code units (those code units are assumed to be working)."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("seedu.address.storage.StorageManagerTest")])]),_v(" "),_c('li',[_v("Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("seedu.address.logic.LogicManagerTest")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/UserGuide.html b/UserGuide.html index 442634f9653..d6f29edc12a 100644 --- a/UserGuide.html +++ b/UserGuide.html @@ -28,9 +28,9 @@ specifying any tags after it.

    Examples:

    Locating persons by name: find

    Finds contacts whose names or/and phone numbers or/and address contain any of the given field keywords.

    Format: find [n/NAMEKEYWORDS] [p/PHONEKEYWORDS] [a/ADDRESSKEYWORDS]

    NOTE: At least one field MUST be provided
    e.g. find n/Hans or find p/12345678 or find a/wall street will work
    e.g. find Hans or find wall street or find will fail

    Examples:

    Deleting a person : delete

    Deletes the specified person or persons from the address book.

    Format: delete INDEX delete INDEX INDEX ...

    Examples:

    Adding remarks to person : remark

    Add remarks to an existing person in the address book.

    Format: remark INDEX r/REMARK

    Examples:

    Clearing all entries : clear

    Clears all entries from the address book.

    Format: clear

    Populating with dummy data : seed

    Adds dummy data to the address book.

    Format: seed

    Exiting the program : exit

    Exits the program.

    Format: exit

    Saving the data

    SocialBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.

    Editing the data file

    SocialBook data are saved automatically as a JSON file [JAR file location]/data/socialbook.json. Advanced users are welcome to update data directly by editing that data file.

    Caution: +e.g. Hans Bo will return Hans Gruber, Bo Yang

  • If more than one fields are specified, contacts will be matched by multiple fields (i.e. AND search).
  • Examples:

    • find n/John returns john and John Doe
    • find n/alex david returns Alex Yeoh, David Li
      result for 'find n/alex david'
    • find p/87438807 91031282 returns Alex Yeoh, David Li
    • find a/serangoon returns David Li
    • find n/alex p/87438807 a/geylang returns Alex Yeoh

    Deleting a person : delete

    Deletes the specified person or persons from the address book.

    Format: delete INDEX delete INDEX INDEX ...

    • Deletes the person or persons at the specified INDEX or INDEX INDEX ....
    • The index refers to the index number shown in the displayed person list.
    • The index must be a positive integer 1, 2, 3, …​

    Examples:

    • list followed by delete 2 deletes the 2nd person in the address book.
    • find Betsy followed by delete 1 deletes the 1st person in the results of the find command.
    • list followed by delete 1 2 deletes the 1st and 2nd person in the address book.

    Adding remarks to person : remark

    Add remarks to an existing person in the address book.

    Format: remark INDEX r/REMARK

    • Adds remarks to the person at the specified INDEX. The index refers to the index number shown in the displayed person list. The index must be a positive integer 1, 2, 3, …​

    Examples:

    • remark 1 r/Financial Issues Adds the remark of the 1st person to be Financial Issues.
    • remark 1 r/ Clears remarks (if any) of the 1st person.

    Sorting the person list : sort

    Sorts the list of persons being viewed by name or date of last visit in ascending or descending order.

    Format: sort parameter/order

    • Sorts the displayed list of persons according to the specified order.
    • Order can be specified as ascending by leaving the order blank or asc/ascending
    • Order can be specified as descending by descending/desc

    Examples:

    • sort n/ sorts by name in ascending order.
    • sort d/descending sorts by date of last visit in descending order.

    Clearing all entries : clear

    Clears all entries from the address book.

    Format: clear

    Populating with dummy data : seed

    Adds dummy data to the address book.

    Format: seed

    Exiting the program : exit

    Exits the program.

    Format: exit

    Saving the data

    SocialBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.

    Editing the data file

    SocialBook data are saved automatically as a JSON file [JAR file location]/data/socialbook.json. Advanced users are welcome to update data directly by editing that data file.

    Caution: If a person's data values are changed to an invalid format, Socialbook will discard that particular person's data while keeping the rest. However, if your changes to the data file makes the file format invalid, SocialBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
    -Furthermore, certain edits can cause the SocialBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.

    Archiving data files [coming in v2.0]

    Details coming soon ...


    FAQ

    Q: How do I transfer my data to another Computer?
    A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous SocialBook home folder.


    Known issues

    1. When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the preferences.json file created by the application before running the application again.
    2. If you minimize the Help Window and then run the help command (or use the Help menu, or the keyboard shortcut F1) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.

    Command summary

    Action Format, Examples
    Add add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG]…​ [d/DATE_OF_LAST_VISIT] [ec/EMERGENCY_CONTACT]
    e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague d/07-23-2024
    Clear clear
    Delete delete INDEX
    e.g., delete 3
    Edit edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​ [d/DATE_OF_LAST_VISIT]
    e.g.,edit 2 n/James Lee e/jameslee@example.com
    Find find [n/NAMEKEYWORD] [p/PHONEKEYWORD] [a/ADDRESSKEYWORD]
    e.g., find n/James Jake a/clementi street_woodlands
    List list
    View view INDEX
    e.g.,view 1
    Help help
    Seed seed
    Remark remark INDEX r/REMARK
    [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]
    +Furthermore, certain edits can cause the SocialBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.

    Archiving data files [coming in v2.0]

    Details coming soon ...


    FAQ

    Q: How do I transfer my data to another Computer?
    A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous SocialBook home folder.


    Known issues

    1. When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the preferences.json file created by the application before running the application again.
    2. If you minimize the Help Window and then run the help command (or use the Help menu, or the keyboard shortcut F1) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.

    Command summary

    Action Format, Examples
    Add add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG]…​ [d/DATE_OF_LAST_VISIT] [ec/EMERGENCY_CONTACT]
    e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague d/07-23-2024
    Clear clear
    Delete delete INDEX
    e.g., delete 3
    Edit edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​ [d/DATE_OF_LAST_VISIT]
    e.g.,edit 2 n/James Lee e/jameslee@example.com
    Find find [n/NAMEKEYWORD] [p/PHONEKEYWORD] [a/ADDRESSKEYWORD]
    e.g., find n/James Jake a/clementi street_woodlands
    List list
    View view INDEX
    e.g.,view 1
    Help help
    Seed seed
    Sort sort parameter/order
    e.g., sort n/ascending
    Remark remark INDEX r/REMARK
    diff --git a/UserGuide.page-vue-render.js b/UserGuide.page-vue-render.js index 6be22083db5..a2c5f2eb3df 100644 --- a/UserGuide.page-vue-render.js +++ b/UserGuide.page-vue-render.js @@ -1,7 +1,7 @@ var pageVueRenderFn = function anonymous( ) { -with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/tp/index.html","title":"Home"}},[_v("SocialBook")])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/tp/index.html"}},[_v("Home")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/tp/UserGuide.html"}},[_v("User Guide")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/tp/DeveloperGuide.html"}},[_v("Developer Guide")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/tp/AboutUs.html"}},[_v("About Us")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/AY2425S1-CS2103-F10-2/tp","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"fw-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_v("Site Map")])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/index.html"}},[_v("Home")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/UserGuide.html"}},[_v("User Guide")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/UserGuide.html#quick-start"}},[_v("Quick Start")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/UserGuide.html#features"}},[_v("Features")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/UserGuide.html#faq"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/UserGuide.html#faq"}},[_v("Command Summary")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html"}},[_v("Developer Guide")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#acknowledgements"}},[_v("Acknowledgements")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#setting-up-getting-started"}},[_v("Setting Up")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#design"}},[_v("Design")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#implementation"}},[_v("Implementation")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops"}},[_v("Documentation, logging, testing, configuration, dev-ops")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#appendix-requirements"}},[_v("Appendix: Requirements")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#appendix-instructions-for-manual-testing"}},[_v("Appendix: Instructions for manual testing")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_v("Tutorials\n\n"),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/tutorials/TracingCode.html"}},[_v("Tracing code")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/tutorials/AddRemark.html"}},[_v("Adding a command")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/tutorials/RemovingFields.html"}},[_v("Removing Fields")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/AboutUs.html"}},[_v("About Us")])])])])],1)],1)]),_v(" "),_c('div',{attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_c('div',{pre:true,attrs:{"class":"page-nav-print d-none d-print-block"}}),_v(" "),_c('hr'),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_c('hr'),_v(" "),_m(4),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("Notes about the command format:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("Words in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("UPPER_CASE")]),_v(" are the parameters to be supplied by the user."),_c('br'),_v("\ne.g. in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n/NAME")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("NAME")]),_v(" is a parameter which can be used as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n/John Doe")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Items in square brackets are optional."),_c('br'),_v("\ne.g "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/NAME [t/TAG]")]),_v(" can be used as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/John Doe t/friend")]),_v(" or as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/John Doe")]),_v("."),_c('br'),_v("\ne.g "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/NAME [a/ADDRESS]")]),_v(" can be used as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/Jane Smith a/123 Hollywood Street 55")]),_v(" or as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/Jane Smith")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Items with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("…")]),_v("​ after them can be used multiple times including zero times."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[t/TAG]…​")]),_v(" can be used as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}}),_v(" (i.e. 0 times), "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("t/friend")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("t/friend t/family")]),_v(" etc.")])]),_v(" "),_c('li',[_c('p',[_v("Parameters can be in any order."),_c('br'),_v("\ne.g. if the command specifies "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/NAME p/PHONE_NUMBER")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("p/PHONE_NUMBER n/NAME")]),_v(" is also acceptable.")])]),_v(" "),_c('li',[_c('p',[_v("Extraneous parameters will result in an error for the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("view")]),_v(" commands. Other commands like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(" will ignore any additional parameters and execute as intended.\ne.g. if the command specifies "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help 123")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit please")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear 5")]),_v(", it will be interpreted as help, exit or clear respectively. However, if the command specifies "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list something")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("view 2 3")]),_v(", it will throw an error.")])]),_v(" "),_c('li',[_c('p',[_v("If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.")])])])]),_v(" "),_m(5),_v(" "),_c('p',[_v("Shows a message explaning how to access the help page.")]),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_c('p',[_v("Adds a person to the address book.")]),_v(" "),_m(9),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("Tip:")]),_v(" A person can have any number of tags (including 0)."),_c('br')])]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("Tip:")]),_v(" The only required fields for a person are a name and a phone number, so you can create a contact with just those 2 fields. Providing an email, address, date of last visit, emergency contact or tags is optional.")])]),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_c('p',[_v("Shows a list of all persons in the address book.")]),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_c('p',[_v("Pops up a window containing all the information that has been saved on this person. Also filters the current listed persons to just this specific person.")]),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_c('p',[_v("Edits an existing person in the address book.")]),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_c('p',[_v("Finds contacts whose names or/and phone numbers or/and address contain any of the given field keywords.")]),_v(" "),_m(22),_v(" "),_m(23),_v(" "),_m(24),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(25),_v(" "),_m(26),_v(" "),_c('p',[_v("Deletes the specified person or persons from the address book.")]),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(29),_v(" "),_m(30),_v(" "),_c('p',[_v("Add remarks to an existing person in the address book.")]),_v(" "),_m(31),_v(" "),_m(32),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(33),_v(" "),_m(34),_v(" "),_c('p',[_v("Clears all entries from the address book.")]),_v(" "),_m(35),_v(" "),_m(36),_v(" "),_c('p',[_v("Adds dummy data to the address book.")]),_v(" "),_m(37),_v(" "),_m(38),_v(" "),_c('p',[_v("Exits the program.")]),_v(" "),_m(39),_v(" "),_m(40),_v(" "),_c('p',[_v("SocialBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.")]),_v(" "),_m(41),_v(" "),_m(42),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_c('strong',[_v("Caution:")]),_v("\nIf a person's data values are changed to an invalid format, Socialbook will discard that particular person's data while keeping the rest. However, if your changes to the data file makes the file format invalid, SocialBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it."),_c('br'),_v("\nFurthermore, certain edits can cause the SocialBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.")])]),_v(" "),_m(43),_v(" "),_m(44),_v(" "),_c('hr'),_v(" "),_m(45),_v(" "),_m(46),_v(" "),_c('hr'),_v(" "),_m(47),_v(" "),_m(48),_v(" "),_c('hr'),_v(" "),_m(49),_v(" "),_m(50)],1),_v(" "),_c('overlay-source',{attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#socialbook-user-guide"}},[_v("SocialBook User Guide‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#quick-start"}},[_v("Quick start‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#features"}},[_v("Features‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#viewing-help-help"}},[_v("Viewing help : help‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#adding-a-person-add"}},[_v("Adding a person: add‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#listing-all-persons-list"}},[_v("Listing all persons : list‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#viewing-a-person-view"}},[_v("Viewing a person : view‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#editing-a-person-edit"}},[_v("Editing a person : edit‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#locating-persons-by-name-find"}},[_v("Locating persons by name: find‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#deleting-a-person-delete"}},[_v("Deleting a person : delete‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#adding-remarks-to-person-remark"}},[_v("Adding remarks to person : remark‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#clearing-all-entries-clear"}},[_v("Clearing all entries : clear‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#populating-with-dummy-data-seed"}},[_v("Populating with dummy data : seed‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#exiting-the-program-exit"}},[_v("Exiting the program : exit‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#saving-the-data"}},[_v("Saving the data‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#editing-the-data-file"}},[_v("Editing the data file‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#archiving-data-files-coming-in-v2-0"}},[_v("Archiving data files [coming in v2.0]‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#faq"}},[_v("FAQ‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#known-issues"}},[_v("Known issues‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#command-summary"}},[_v("Command summary‎")])])])],1)]),_v(" "),_c('scroll-top-button')],1),_v(" "),_m(51)])} +with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":""}},[_c('navbar',{attrs:{"type":"dark"},scopedSlots:_u([{key:"brand",fn:function(){return [_c('a',{staticClass:"navbar-brand",attrs:{"href":"/tp/index.html","title":"Home"}},[_v("SocialBook")])]},proxy:true},{key:"right",fn:function(){return [_c('li',[_c('form',{staticClass:"navbar-form"},[_c('searchbar',{attrs:{"data":searchData,"placeholder":"Search","on-hit":searchCallback,"menu-align-right":""}})],1)])]},proxy:true}])},[_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/tp/index.html"}},[_v("Home")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/tp/UserGuide.html"}},[_v("User Guide")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/tp/DeveloperGuide.html"}},[_v("Developer Guide")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"/tp/AboutUs.html"}},[_v("About Us")])]),_v(" "),_c('li',[_c('a',{staticClass:"nav-link",attrs:{"href":"https://github.com/AY2425S1-CS2103-F10-2/tp","target":"_blank"}},[_c('span',[_c('span',{staticClass:"fab fa-github",attrs:{"aria-hidden":"true"}})])])])])],1),_v(" "),_c('div',{attrs:{"id":"flex-body"}},[_c('overlay-source',{attrs:{"id":"site-nav","tag-name":"nav","to":"site-nav"}},[_c('div',{staticClass:"site-nav-top"},[_c('div',{staticClass:"fw-bold mb-2",staticStyle:{"font-size":"1.25rem"}},[_v("Site Map")])]),_v(" "),_c('div',{staticClass:"nav-component slim-scroll"},[_c('site-nav',[_c('overlay-source',{staticClass:"site-nav-list site-nav-list-root",attrs:{"tag-name":"ul","to":"mb-site-nav"}},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/index.html"}},[_v("Home")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/UserGuide.html"}},[_v("User Guide")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/UserGuide.html#quick-start"}},[_v("Quick Start")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/UserGuide.html#features"}},[_v("Features")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/UserGuide.html#faq"}},[_v("FAQ")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/UserGuide.html#faq"}},[_v("Command Summary")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html"}},[_v("Developer Guide")]),_v(" "),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon site-nav-rotate-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-dropdown-container-open site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#acknowledgements"}},[_v("Acknowledgements")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#setting-up-getting-started"}},[_v("Setting Up")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#design"}},[_v("Design")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#implementation"}},[_v("Implementation")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops"}},[_v("Documentation, logging, testing, configuration, dev-ops")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#appendix-requirements"}},[_v("Appendix: Requirements")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/DeveloperGuide.html#appendix-instructions-for-manual-testing"}},[_v("Appendix: Instructions for manual testing")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_v("Tutorials\n\n"),_c('div',{staticClass:"site-nav-dropdown-btn-container"},[_c('i',{staticClass:"site-nav-dropdown-btn-icon",attrs:{"onclick":"handleSiteNavClick(this.parentNode.parentNode, false); event.stopPropagation();"}},[_c('span',{staticClass:"glyphicon glyphicon-menu-down",attrs:{"aria-hidden":"true"}})])])]),_c('ul',{staticClass:"site-nav-dropdown-container site-nav-list"},[_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/tutorials/TracingCode.html"}},[_v("Tracing code")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/tutorials/AddRemark.html"}},[_v("Adding a command")])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-1",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/tutorials/RemovingFields.html"}},[_v("Removing Fields")])])])])]),_v(" "),_c('li',[_c('div',{staticClass:"site-nav-default-list-item site-nav-list-item-0",attrs:{"onclick":"handleSiteNavClick(this)"}},[_c('a',{attrs:{"href":"/tp/AboutUs.html"}},[_v("About Us")])])])])],1)],1)]),_v(" "),_c('div',{attrs:{"id":"content-wrapper"}},[_m(0),_v(" "),_m(1),_v(" "),_c('div',{pre:true,attrs:{"class":"page-nav-print d-none d-print-block"}}),_v(" "),_c('hr'),_v(" "),_m(2),_v(" "),_m(3),_v(" "),_c('hr'),_v(" "),_m(4),_v(" "),_c('box',{attrs:{"type":"info","seamless":""}},[_c('p',[_c('strong',[_v("Notes about the command format:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("Words in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("UPPER_CASE")]),_v(" are the parameters to be supplied by the user."),_c('br'),_v("\ne.g. in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n/NAME")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("NAME")]),_v(" is a parameter which can be used as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n/John Doe")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Items in square brackets are optional."),_c('br'),_v("\ne.g "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/NAME [t/TAG]")]),_v(" can be used as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/John Doe t/friend")]),_v(" or as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/John Doe")]),_v("."),_c('br'),_v("\ne.g "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/NAME [a/ADDRESS]")]),_v(" can be used as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/Jane Smith a/123 Hollywood Street 55")]),_v(" or as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/Jane Smith")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Items with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("…")]),_v("​ after them can be used multiple times including zero times."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[t/TAG]…​")]),_v(" can be used as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}}),_v(" (i.e. 0 times), "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("t/friend")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("t/friend t/family")]),_v(" etc.")])]),_v(" "),_c('li',[_c('p',[_v("Parameters can be in any order."),_c('br'),_v("\ne.g. if the command specifies "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n/NAME p/PHONE_NUMBER")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("p/PHONE_NUMBER n/NAME")]),_v(" is also acceptable.")])]),_v(" "),_c('li',[_c('p',[_v("Extraneous parameters will result in an error for the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("view")]),_v(" commands. Other commands like "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(" will ignore any additional parameters and execute as intended.\ne.g. if the command specifies "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help 123")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit please")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear 5")]),_v(", it will be interpreted as help, exit or clear respectively. However, if the command specifies "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list something")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("view 2 3")]),_v(", it will throw an error.")])]),_v(" "),_c('li',[_c('p',[_v("If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.")])])])]),_v(" "),_m(5),_v(" "),_c('p',[_v("Shows a message explaning how to access the help page.")]),_v(" "),_m(6),_v(" "),_m(7),_v(" "),_m(8),_v(" "),_c('p',[_v("Adds a person to the address book.")]),_v(" "),_m(9),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("Tip:")]),_v(" A person can have any number of tags (including 0)."),_c('br')])]),_v(" "),_c('box',{attrs:{"type":"tip","seamless":""}},[_c('p',[_c('strong',[_v("Tip:")]),_v(" The only required fields for a person are a name and a phone number, so you can create a contact with just those 2 fields. Providing an email, address, date of last visit, emergency contact or tags is optional.")])]),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(10),_v(" "),_m(11),_v(" "),_c('p',[_v("Shows a list of all persons in the address book.")]),_v(" "),_m(12),_v(" "),_m(13),_v(" "),_c('p',[_v("Pops up a window containing all the information that has been saved on this person. Also filters the current listed persons to just this specific person.")]),_v(" "),_m(14),_v(" "),_m(15),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(16),_v(" "),_m(17),_v(" "),_c('p',[_v("Edits an existing person in the address book.")]),_v(" "),_m(18),_v(" "),_m(19),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(20),_v(" "),_m(21),_v(" "),_c('p',[_v("Finds contacts whose names or/and phone numbers or/and address contain any of the given field keywords.")]),_v(" "),_m(22),_v(" "),_m(23),_v(" "),_m(24),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(25),_v(" "),_m(26),_v(" "),_c('p',[_v("Deletes the specified person or persons from the address book.")]),_v(" "),_m(27),_v(" "),_m(28),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(29),_v(" "),_m(30),_v(" "),_c('p',[_v("Add remarks to an existing person in the address book.")]),_v(" "),_m(31),_v(" "),_m(32),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(33),_v(" "),_m(34),_v(" "),_c('p',[_v("Sorts the list of persons being viewed by name or date of last visit in ascending or descending order.")]),_v(" "),_m(35),_v(" "),_m(36),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_m(37),_v(" "),_m(38),_v(" "),_c('p',[_v("Clears all entries from the address book.")]),_v(" "),_m(39),_v(" "),_m(40),_v(" "),_c('p',[_v("Adds dummy data to the address book.")]),_v(" "),_m(41),_v(" "),_m(42),_v(" "),_c('p',[_v("Exits the program.")]),_v(" "),_m(43),_v(" "),_m(44),_v(" "),_c('p',[_v("SocialBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.")]),_v(" "),_m(45),_v(" "),_m(46),_v(" "),_c('box',{attrs:{"type":"warning","seamless":""}},[_c('p',[_c('strong',[_v("Caution:")]),_v("\nIf a person's data values are changed to an invalid format, Socialbook will discard that particular person's data while keeping the rest. However, if your changes to the data file makes the file format invalid, SocialBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it."),_c('br'),_v("\nFurthermore, certain edits can cause the SocialBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.")])]),_v(" "),_m(47),_v(" "),_m(48),_v(" "),_c('hr'),_v(" "),_m(49),_v(" "),_m(50),_v(" "),_c('hr'),_v(" "),_m(51),_v(" "),_m(52),_v(" "),_c('hr'),_v(" "),_m(53),_v(" "),_m(54)],1),_v(" "),_c('overlay-source',{attrs:{"id":"page-nav","tag-name":"nav","to":"page-nav"}},[_c('div',{staticClass:"nav-component slim-scroll"},[_c('overlay-source',{staticClass:"nav nav-pills flex-column my-0 small no-flex-wrap",attrs:{"id":"mb-page-nav","tag-name":"nav","to":"mb-page-nav"}},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#socialbook-user-guide"}},[_v("SocialBook User Guide‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#quick-start"}},[_v("Quick start‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#features"}},[_v("Features‎")]),_v(" "),_c('nav',{staticClass:"nav nav-pills flex-column my-0 nested no-flex-wrap"},[_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#viewing-help-help"}},[_v("Viewing help : help‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#adding-a-person-add"}},[_v("Adding a person: add‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#listing-all-persons-list"}},[_v("Listing all persons : list‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#viewing-a-person-view"}},[_v("Viewing a person : view‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#editing-a-person-edit"}},[_v("Editing a person : edit‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#locating-persons-by-name-find"}},[_v("Locating persons by name: find‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#deleting-a-person-delete"}},[_v("Deleting a person : delete‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#adding-remarks-to-person-remark"}},[_v("Adding remarks to person : remark‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#sorting-the-person-list-sort"}},[_v("Sorting the person list : sort‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#clearing-all-entries-clear"}},[_v("Clearing all entries : clear‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#populating-with-dummy-data-seed"}},[_v("Populating with dummy data : seed‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#exiting-the-program-exit"}},[_v("Exiting the program : exit‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#saving-the-data"}},[_v("Saving the data‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#editing-the-data-file"}},[_v("Editing the data file‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#archiving-data-files-coming-in-v2-0"}},[_v("Archiving data files [coming in v2.0]‎")])]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#faq"}},[_v("FAQ‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#known-issues"}},[_v("Known issues‎")]),_v(" "),_c('a',{pre:true,attrs:{"class":"nav-link py-1","href":"#command-summary"}},[_v("Command summary‎")])])])],1)]),_v(" "),_c('scroll-top-button')],1),_v(" "),_m(55)])} }; var pageVueStaticRenderFns = [function anonymous( ) { @@ -107,6 +107,18 @@ with(this){return _c('ul',[_c('li',[_v("Adds remarks to the person at the specif with(this){return _c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("remark 1 r/Financial Issues")]),_v(" Adds the remark of the 1st person to be "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Financial Issues")]),_v(".")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("remark 1 r/")]),_v(" Clears remarks (if any) of the 1st person.")])])} },function anonymous( ) { +with(this){return _c('h3',{attrs:{"id":"sorting-the-person-list-sort"}},[_v("Sorting the person list : "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("sort")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#sorting-the-person-list-sort","onclick":"event.stopPropagation()"}})])} +},function anonymous( +) { +with(this){return _c('p',[_v("Format: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("sort parameter/order")])])} +},function anonymous( +) { +with(this){return _c('ul',[_c('li',[_v("Sorts the displayed list of persons according to the specified order.")]),_v(" "),_c('li',[_v("Order can be specified as ascending by leaving the order blank or "),_c('strong',[_v("asc")]),_v("/"),_c('strong',[_v("ascending")])]),_v(" "),_c('li',[_v("Order can be specified as descending by "),_c('strong',[_v("descending")]),_v("/"),_c('strong',[_v("desc")])])])} +},function anonymous( +) { +with(this){return _c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("sort n/")]),_v(" sorts by name in ascending order.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("sort d/descending")]),_v(" sorts by date of last visit in descending order.")])])} +},function anonymous( +) { with(this){return _c('h3',{attrs:{"id":"clearing-all-entries-clear"}},[_v("Clearing all entries : "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#clearing-all-entries-clear","onclick":"event.stopPropagation()"}})])} },function anonymous( ) { @@ -155,9 +167,9 @@ with(this){return _c('ol',[_c('li',[_c('strong',[_v("When using multiple screens with(this){return _c('h2',{attrs:{"id":"command-summary"}},[_v("Command summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#command-summary","onclick":"event.stopPropagation()"}})])} },function anonymous( ) { -with(this){return _c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Action")]),_v(" "),_c('th',[_v("Format, Examples")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('strong',[_v("Add")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG]…​ [d/DATE_OF_LAST_VISIT] [ec/EMERGENCY_CONTACT]")]),_v(" "),_c('br'),_v(" e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague d/07-23-2024")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Clear")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Delete")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete INDEX")]),_c('br'),_v(" e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete 3")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Edit")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​ [d/DATE_OF_LAST_VISIT]")]),_c('br'),_v(" e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit 2 n/James Lee e/jameslee@example.com")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Find")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find [n/NAMEKEYWORD] [p/PHONEKEYWORD] [a/ADDRESSKEYWORD]")]),_c('br'),_v(" e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find n/James Jake a/clementi street_woodlands")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("List")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("View")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("view INDEX")]),_c('br'),_v(" e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("view 1")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Help")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Seed")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("seed")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Remark")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("remark INDEX r/REMARK")])])])])])])} +with(this){return _c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Action")]),_v(" "),_c('th',[_v("Format, Examples")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('strong',[_v("Add")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG]…​ [d/DATE_OF_LAST_VISIT] [ec/EMERGENCY_CONTACT]")]),_v(" "),_c('br'),_v(" e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague d/07-23-2024")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Clear")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Delete")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete INDEX")]),_c('br'),_v(" e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete 3")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Edit")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​ [d/DATE_OF_LAST_VISIT]")]),_c('br'),_v(" e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit 2 n/James Lee e/jameslee@example.com")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Find")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find [n/NAMEKEYWORD] [p/PHONEKEYWORD] [a/ADDRESSKEYWORD]")]),_c('br'),_v(" e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find n/James Jake a/clementi street_woodlands")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("List")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("View")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("view INDEX")]),_c('br'),_v(" e.g.,"),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("view 1")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Help")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Seed")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("seed")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Sort")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("sort parameter/order")]),_v(" "),_c('br'),_v(" e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("sort n/ascending")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Remark")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("remark INDEX r/REMARK")])])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/diagrams/ModelClassDiagram.png b/diagrams/ModelClassDiagram.png index 3cc5d487048fa7a91da9875e7a679d455eebdaa9..78d3997a3cb7b3996a3a75246b51444104a25f7d 100644 GIT binary patch literal 39499 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 I>zopr0IRvhegFUf literal 38300 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

    +oj(YTe@sLzw>co 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 diff --git a/diagrams/ModelClassDiagram.puml b/diagrams/ModelClassDiagram.puml index 6a1538263ed..e9a5100e9ee 100644 --- a/diagrams/ModelClassDiagram.puml +++ b/diagrams/ModelClassDiagram.puml @@ -13,6 +13,7 @@ Class ModelManager Class UserPrefs Class UniquePersonList +Class PersonComparator Class Person Class Address Class Email @@ -39,6 +40,7 @@ ModelManager -right-> "1" UserPrefs UserPrefs .up.|> ReadOnlyUserPrefs AddressBook *--> "1" UniquePersonList +UniquePersonList .left.> PersonComparator UniquePersonList --> "~* all" Person Person *--> Name Person *--> Phone @@ -47,7 +49,7 @@ Person *--> Address Person *--> "*" Tag Person *--> EmergencyContact Person *--> DateOfLastVisit -Person *--> Remark +Person *--> "1" Remark Person -[hidden]up--> I UniquePersonList -[hidden]right-> I diff --git a/index.html b/index.html index 20d2bf8fdd2..90b50c43553 100644 --- a/index.html +++ b/index.html @@ -16,7 +16,7 @@ Search

    SocialBook

    CI Status codecov

    Ui

    SocialBook is a desktop application for managing your contact details. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).

    Acknowledgements

    [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]
    +
  • SocialBook

    CI Status codecov

    Ui

    SocialBook is a desktop application for managing your contact details. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).

    Acknowledgements

    [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]
    diff --git a/index.page-vue-render.js b/index.page-vue-render.js index 25943eff6b0..af4c073f1f3 100644 --- a/index.page-vue-render.js +++ b/index.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"socialbook"}},[_v("SocialBook"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#socialbook","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://github.com/AY2425S1-CS2103-F10-2/tp/actions"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://github.com/AY2425S1-CS2103-F10-2/tp/workflows/Java%20CI/badge.svg","alt":"CI Status"}})]),_v(" "),_c('a',{attrs:{"href":"https://codecov.io/gh/AY2425S1-CS2103-F10-2/tp"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://codecov.io/gh/AY2425S1-CS2103-F10-2/tp/branch/master/graph/badge.svg","alt":"codecov"}})])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/Ui.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/Ui.png","alt":"Ui"}})])]),_v(" "),_c('p',[_c('strong',[_v("SocialBook is a desktop application for managing your contact details.")]),_v(" While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).")]),_v(" "),_c('ul',[_c('li',[_v("If you are interested in using SocialBook, head over to the "),_c('a',{attrs:{"href":"/tp/UserGuide.html#quick-start"}},[_c('em',[_v("Quick Start")]),_v(" section of the "),_c('strong',[_v("User Guide")])]),_v(".")]),_v(" "),_c('li',[_v("If you are interested about developing SocialBook, the "),_c('a',{attrs:{"href":"/tp/DeveloperGuide.html"}},[_c('strong',[_v("Developer Guide")])]),_v(" is a good place to start.")])]),_v(" "),_c('p',[_c('strong',[_v("Acknowledgements")])]),_v(" "),_c('ul',[_c('li',[_v("Libraries used: "),_c('a',{attrs:{"href":"https://openjfx.io/"}},[_v("JavaFX")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/FasterXML/jackson"}},[_v("Jackson")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/junit-team/junit5"}},[_v("JUnit5")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/siteData.json b/siteData.json index d151dce2e87..b15dfc4f7b9 100644 --- a/siteData.json +++ b/siteData.json @@ -118,6 +118,7 @@ "locating-persons-by-name-find": "Locating persons by name: find", "deleting-a-person-delete": "Deleting a person : delete", "adding-remarks-to-person-remark": "Adding remarks to person : remark", + "sorting-the-person-list-sort": "Sorting the person list : sort", "clearing-all-entries-clear": "Clearing all entries : clear", "populating-with-dummy-data-seed": "Populating with dummy data : seed", "exiting-the-program-exit": "Exiting the program : exit", diff --git a/team/abdulrahmanalrammah.html b/team/abdulrahmanalrammah.html index 375ffd53022..7f54c62b184 100644 --- a/team/abdulrahmanalrammah.html +++ b/team/abdulrahmanalrammah.html @@ -18,7 +18,7 @@
  • Project: AddressBook Level 3

    AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

    Given below are my contributions to the project.

    • New Feature: Added the ability to undo/redo previous commands.

      • What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.
      • Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.
      • Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.
      • Credits: {mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}
    • New Feature: Added a history command that allows the user to navigate to previous commands using up/down keys.

    • Code contributed: RepoSense link

    • Project management:

      • Managed releases v1.3 - v1.5rc (3 releases) on GitHub
    • Enhancements to existing features:

      • Updated the GUI color scheme (Pull requests #33, #34)
      • Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests #36, #38)
    • Documentation:

      • User Guide:
        • Added documentation for the features delete and find #72
        • Did cosmetic tweaks to existing documentation of features clear, exit: #74
      • Developer Guide: -
        • Added implementation details of the delete feature.
    • Community:

      • PRs reviewed (with non-trivial review comments): #12, #32, #19, #42
      • Contributed to forum discussions (examples: 1, 2, 3, 4)
      • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3)
      • Some parts of the history feature I added was adopted by several other class mates (1, 2)
    • Tools:

      • Integrated a third party library (Natty) to the project (#42)
      • Integrated a new Github plugin (CircleCI) to the team repo
    • {you can add/remove categories in the list above}

    [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]
    +
    • Added implementation details of the delete feature.
  • Community:

    • PRs reviewed (with non-trivial review comments): #12, #32, #19, #42
    • Contributed to forum discussions (examples: 1, 2, 3, 4)
    • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3)
    • Some parts of the history feature I added was adopted by several other class mates (1, 2)
  • Tools:

    • Integrated a third party library (Natty) to the project (#42)
    • Integrated a new Github plugin (CircleCI) to the team repo
  • {you can add/remove categories in the list above}

  • [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]
    diff --git a/team/abdulrahmanalrammah.page-vue-render.js b/team/abdulrahmanalrammah.page-vue-render.js index 005a8a31ca6..2a4c81dd8d9 100644 --- a/team/abdulrahmanalrammah.page-vue-render.js +++ b/team/abdulrahmanalrammah.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-addressbook-level-3"}},[_v("Project: AddressBook Level 3"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-addressbook-level-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.")]),_v(" "),_c('p',[_v("Given below are my contributions to the project.")]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("New Feature")]),_v(": Added the ability to undo/redo previous commands.")]),_v(" "),_c('ul',[_c('li',[_v("What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.")]),_v(" "),_c('li',[_v("Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.")]),_v(" "),_c('li',[_v("Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.")]),_v(" "),_c('li',[_v("Credits: "),_c('em',[_v("{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}")])])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("New Feature")]),_v(": Added a history command that allows the user to navigate to previous commands using up/down keys.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Code contributed")]),_v(": "),_c('a',{attrs:{"href":""}},[_v("RepoSense link")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Project management")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("Managed releases "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("v1.3")]),_v(" - "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("v1.5rc")]),_v(" (3 releases) on GitHub")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Enhancements to existing features")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("Updated the GUI color scheme (Pull requests "),_c('a',{attrs:{"href":""}},[_v("#33")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#34")]),_v(")")]),_v(" "),_c('li',[_v("Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests "),_c('a',{attrs:{"href":""}},[_v("#36")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#38")]),_v(")")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Documentation")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("User Guide:\n"),_c('ul',[_c('li',[_v("Added documentation for the features "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(" "),_c('a',{attrs:{"href":""}},[_v("#72")])]),_v(" "),_c('li',[_v("Did cosmetic tweaks to existing documentation of features "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")]),_v(": "),_c('a',{attrs:{"href":""}},[_v("#74")])])])]),_v(" "),_c('li',[_v("Developer Guide:\n"),_c('ul',[_c('li',[_v("Added implementation details of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(" feature.")])])])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Community")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("PRs reviewed (with non-trivial review comments): "),_c('a',{attrs:{"href":""}},[_v("#12")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#32")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#19")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#42")])]),_v(" "),_c('li',[_v("Contributed to forum discussions (examples: "),_c('a',{attrs:{"href":""}},[_v("1")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("2")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("3")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("4")]),_v(")")]),_v(" "),_c('li',[_v("Reported bugs and suggestions for other teams in the class (examples: "),_c('a',{attrs:{"href":""}},[_v("1")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("2")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("3")]),_v(")")]),_v(" "),_c('li',[_v("Some parts of the history feature I added was adopted by several other class mates ("),_c('a',{attrs:{"href":""}},[_v("1")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("2")]),_v(")")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Tools")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("Integrated a third party library (Natty) to the project ("),_c('a',{attrs:{"href":""}},[_v("#42")]),_v(")")]),_v(" "),_c('li',[_v("Integrated a new Github plugin (CircleCI) to the team repo")])])]),_v(" "),_c('li',[_c('p',[_c('em',[_v("{you can add/remove categories in the list above}")])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/team/andrew22teoh.html b/team/andrew22teoh.html index 024b15d8ce1..cfd777bb8d8 100644 --- a/team/andrew22teoh.html +++ b/team/andrew22teoh.html @@ -18,7 +18,7 @@
  • Project: AddressBook Level 3

    AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

    Given below are my contributions to the project.

    • New Feature: Added the ability to undo/redo previous commands.

      • What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.
      • Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.
      • Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.
      • Credits: {mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}
    • New Feature: Added a history command that allows the user to navigate to previous commands using up/down keys.

    • Code contributed: RepoSense link

    • Project management:

      • Managed releases v1.3 - v1.5rc (3 releases) on GitHub
    • Enhancements to existing features:

      • Updated the GUI color scheme (Pull requests #33, #34)
      • Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests #36, #38)
    • Documentation:

      • User Guide:
        • Added documentation for the features delete and find #72
        • Did cosmetic tweaks to existing documentation of features clear, exit: #74
      • Developer Guide: -
        • Added implementation details of the delete feature.
    • Community:

      • PRs reviewed (with non-trivial review comments): #12, #32, #19, #42
      • Contributed to forum discussions (examples: 1, 2, 3, 4)
      • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3)
      • Some parts of the history feature I added was adopted by several other class mates (1, 2)
    • Tools:

      • Integrated a third party library (Natty) to the project (#42)
      • Integrated a new Github plugin (CircleCI) to the team repo
    • {you can add/remove categories in the list above}

    [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]
    +
    • Added implementation details of the delete feature.
  • Community:

    • PRs reviewed (with non-trivial review comments): #12, #32, #19, #42
    • Contributed to forum discussions (examples: 1, 2, 3, 4)
    • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3)
    • Some parts of the history feature I added was adopted by several other class mates (1, 2)
  • Tools:

    • Integrated a third party library (Natty) to the project (#42)
    • Integrated a new Github plugin (CircleCI) to the team repo
  • {you can add/remove categories in the list above}

  • [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]
    diff --git a/team/andrew22teoh.page-vue-render.js b/team/andrew22teoh.page-vue-render.js index 005a8a31ca6..2a4c81dd8d9 100644 --- a/team/andrew22teoh.page-vue-render.js +++ b/team/andrew22teoh.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-addressbook-level-3"}},[_v("Project: AddressBook Level 3"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-addressbook-level-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.")]),_v(" "),_c('p',[_v("Given below are my contributions to the project.")]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("New Feature")]),_v(": Added the ability to undo/redo previous commands.")]),_v(" "),_c('ul',[_c('li',[_v("What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.")]),_v(" "),_c('li',[_v("Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.")]),_v(" "),_c('li',[_v("Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.")]),_v(" "),_c('li',[_v("Credits: "),_c('em',[_v("{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}")])])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("New Feature")]),_v(": Added a history command that allows the user to navigate to previous commands using up/down keys.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Code contributed")]),_v(": "),_c('a',{attrs:{"href":""}},[_v("RepoSense link")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Project management")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("Managed releases "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("v1.3")]),_v(" - "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("v1.5rc")]),_v(" (3 releases) on GitHub")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Enhancements to existing features")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("Updated the GUI color scheme (Pull requests "),_c('a',{attrs:{"href":""}},[_v("#33")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#34")]),_v(")")]),_v(" "),_c('li',[_v("Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests "),_c('a',{attrs:{"href":""}},[_v("#36")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#38")]),_v(")")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Documentation")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("User Guide:\n"),_c('ul',[_c('li',[_v("Added documentation for the features "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(" "),_c('a',{attrs:{"href":""}},[_v("#72")])]),_v(" "),_c('li',[_v("Did cosmetic tweaks to existing documentation of features "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")]),_v(": "),_c('a',{attrs:{"href":""}},[_v("#74")])])])]),_v(" "),_c('li',[_v("Developer Guide:\n"),_c('ul',[_c('li',[_v("Added implementation details of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(" feature.")])])])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Community")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("PRs reviewed (with non-trivial review comments): "),_c('a',{attrs:{"href":""}},[_v("#12")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#32")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#19")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#42")])]),_v(" "),_c('li',[_v("Contributed to forum discussions (examples: "),_c('a',{attrs:{"href":""}},[_v("1")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("2")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("3")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("4")]),_v(")")]),_v(" "),_c('li',[_v("Reported bugs and suggestions for other teams in the class (examples: "),_c('a',{attrs:{"href":""}},[_v("1")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("2")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("3")]),_v(")")]),_v(" "),_c('li',[_v("Some parts of the history feature I added was adopted by several other class mates ("),_c('a',{attrs:{"href":""}},[_v("1")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("2")]),_v(")")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Tools")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("Integrated a third party library (Natty) to the project ("),_c('a',{attrs:{"href":""}},[_v("#42")]),_v(")")]),_v(" "),_c('li',[_v("Integrated a new Github plugin (CircleCI) to the team repo")])])]),_v(" "),_c('li',[_c('p',[_c('em',[_v("{you can add/remove categories in the list above}")])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/team/johndoe.html b/team/johndoe.html index 84f3b642fac..c2a375dab5f 100644 --- a/team/johndoe.html +++ b/team/johndoe.html @@ -18,7 +18,7 @@
  • Project: AddressBook Level 3

    AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

    Given below are my contributions to the project.

    • New Feature: Added the ability to undo/redo previous commands.

      • What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.
      • Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.
      • Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.
      • Credits: {mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}
    • New Feature: Added a history command that allows the user to navigate to previous commands using up/down keys.

    • Code contributed: RepoSense link

    • Project management:

      • Managed releases v1.3 - v1.5rc (3 releases) on GitHub
    • Enhancements to existing features:

      • Updated the GUI color scheme (Pull requests #33, #34)
      • Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests #36, #38)
    • Documentation:

      • User Guide:
        • Added documentation for the features delete and find #72
        • Did cosmetic tweaks to existing documentation of features clear, exit: #74
      • Developer Guide: -
        • Added implementation details of the delete feature.
    • Community:

      • PRs reviewed (with non-trivial review comments): #12, #32, #19, #42
      • Contributed to forum discussions (examples: 1, 2, 3, 4)
      • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3)
      • Some parts of the history feature I added was adopted by several other class mates (1, 2)
    • Tools:

      • Integrated a third party library (Natty) to the project (#42)
      • Integrated a new Github plugin (CircleCI) to the team repo
    • {you can add/remove categories in the list above}

    [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]
    +
    • Added implementation details of the delete feature.
  • Community:

    • PRs reviewed (with non-trivial review comments): #12, #32, #19, #42
    • Contributed to forum discussions (examples: 1, 2, 3, 4)
    • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3)
    • Some parts of the history feature I added was adopted by several other class mates (1, 2)
  • Tools:

    • Integrated a third party library (Natty) to the project (#42)
    • Integrated a new Github plugin (CircleCI) to the team repo
  • {you can add/remove categories in the list above}

  • [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]
    diff --git a/team/johndoe.page-vue-render.js b/team/johndoe.page-vue-render.js index 005a8a31ca6..2a4c81dd8d9 100644 --- a/team/johndoe.page-vue-render.js +++ b/team/johndoe.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-addressbook-level-3"}},[_v("Project: AddressBook Level 3"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-addressbook-level-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.")]),_v(" "),_c('p',[_v("Given below are my contributions to the project.")]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_v("New Feature")]),_v(": Added the ability to undo/redo previous commands.")]),_v(" "),_c('ul',[_c('li',[_v("What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.")]),_v(" "),_c('li',[_v("Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.")]),_v(" "),_c('li',[_v("Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.")]),_v(" "),_c('li',[_v("Credits: "),_c('em',[_v("{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}")])])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("New Feature")]),_v(": Added a history command that allows the user to navigate to previous commands using up/down keys.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Code contributed")]),_v(": "),_c('a',{attrs:{"href":""}},[_v("RepoSense link")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Project management")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("Managed releases "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("v1.3")]),_v(" - "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("v1.5rc")]),_v(" (3 releases) on GitHub")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Enhancements to existing features")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("Updated the GUI color scheme (Pull requests "),_c('a',{attrs:{"href":""}},[_v("#33")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#34")]),_v(")")]),_v(" "),_c('li',[_v("Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests "),_c('a',{attrs:{"href":""}},[_v("#36")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#38")]),_v(")")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Documentation")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("User Guide:\n"),_c('ul',[_c('li',[_v("Added documentation for the features "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(" "),_c('a',{attrs:{"href":""}},[_v("#72")])]),_v(" "),_c('li',[_v("Did cosmetic tweaks to existing documentation of features "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")]),_v(": "),_c('a',{attrs:{"href":""}},[_v("#74")])])])]),_v(" "),_c('li',[_v("Developer Guide:\n"),_c('ul',[_c('li',[_v("Added implementation details of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(" feature.")])])])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Community")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("PRs reviewed (with non-trivial review comments): "),_c('a',{attrs:{"href":""}},[_v("#12")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#32")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#19")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("#42")])]),_v(" "),_c('li',[_v("Contributed to forum discussions (examples: "),_c('a',{attrs:{"href":""}},[_v("1")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("2")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("3")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("4")]),_v(")")]),_v(" "),_c('li',[_v("Reported bugs and suggestions for other teams in the class (examples: "),_c('a',{attrs:{"href":""}},[_v("1")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("2")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("3")]),_v(")")]),_v(" "),_c('li',[_v("Some parts of the history feature I added was adopted by several other class mates ("),_c('a',{attrs:{"href":""}},[_v("1")]),_v(", "),_c('a',{attrs:{"href":""}},[_v("2")]),_v(")")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_v("Tools")]),_v(":")]),_v(" "),_c('ul',[_c('li',[_v("Integrated a third party library (Natty) to the project ("),_c('a',{attrs:{"href":""}},[_v("#42")]),_v(")")]),_v(" "),_c('li',[_v("Integrated a new Github plugin (CircleCI) to the team repo")])])]),_v(" "),_c('li',[_c('p',[_c('em',[_v("{you can add/remove categories in the list above}")])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/team/liauzhanyi.html b/team/liauzhanyi.html index f628ea90956..75928a4a718 100644 --- a/team/liauzhanyi.html +++ b/team/liauzhanyi.html @@ -16,7 +16,7 @@ Search

    Project: AddressBook Level 3

    AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

    Given below are my contributions to the project.

    [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]
    +
  • Project: AddressBook Level 3

    AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

    Given below are my contributions to the project.

    [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]
    diff --git a/team/liauzhanyi.page-vue-render.js b/team/liauzhanyi.page-vue-render.js index e102da667eb..c977fc7098d 100644 --- a/team/liauzhanyi.page-vue-render.js +++ b/team/liauzhanyi.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h3',{attrs:{"id":"project-addressbook-level-3"}},[_v("Project: AddressBook Level 3"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-addressbook-level-3","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.")]),_v(" "),_c('p',[_v("Given below are my contributions to the project.")]),_v(" "),_c('ul',[_c('li',[_c('strong',[_v("Code contributed")]),_v(": "),_c('a',{attrs:{"href":"https://nus-cs2103-ay2425s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2024-09-20"}},[_v("RepoSense link")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/team/rayray39.html b/team/rayray39.html index e05d94be3a6..1539f3758fb 100644 --- a/team/rayray39.html +++ b/team/rayray39.html @@ -16,7 +16,7 @@ Search
    [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]
    +
  • [Powered by MarkBind 5.5.3, generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]
    diff --git a/team/rayray39.page-vue-render.js b/team/rayray39.page-vue-render.js index 9ae6d27f381..b8dab02dbde 100644 --- a/team/rayray39.page-vue-render.js +++ b/team/rayray39.page-vue-render.js @@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" }; var pageVueStaticRenderFns = [function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 21:31:49 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.3")]),_v(", generated on Thu, 24 Oct 2024, 22:06:48 GMT+8]")])])])} }]; \ No newline at end of file