From ca971a1ba634fe1b0da91ff2a621247156fdeca6 Mon Sep 17 00:00:00 2001 From: freshcabbage123 Date: Mon, 13 Nov 2023 19:07:33 +0800 Subject: [PATCH 01/28] docs: Add WLOG for tasks in alt OOP model --- docs/DeveloperGuide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index e5a6c4b995d..2bf67a795c1 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -203,8 +203,9 @@ The `Model` component, An alternative (arguably, a more OOP) model is given below. It has a Tag list in the AddressBook, which Person references. This allows AddressBook to only require one Tag object per unique tag, instead of each Person needing their own Tag objects.

- +

+Without loss of generality, this model can be extended to Task entities. In that context, the UniquePersonList would be replaced by a UniqueTaskList, and each Person entity would become a Task entity. Each Task will reference: Title, Note, and Tag objects. " %}
From 8a612d147c0eb38d10c678404fc413c5326e892c Mon Sep 17 00:00:00 2001 From: freshcabbage123 Date: Mon, 13 Nov 2023 19:30:08 +0800 Subject: [PATCH 02/28] docs: Add feature-rich component to Effort --- docs/DeveloperGuide.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 2bf67a795c1..d1276b326ca 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1535,4 +1535,8 @@ testers are expected to do more exploratory testing. [Back to Table of Contents](#table-of-contents) -TODO +### 1. Feature-rich selection of commands +Tailored for the SoC Computing Club event planners, CoordiMate has expanded from the initial 8 commands in AB3 to a robust suite of 27. Each command was crafted to optimise the event planning workflow, addressing the need for quick and efficient management of contacts and tasks. Our enhancements were directed towards providing practical solutions within the event planning sphere. + +With the addition of a new `Task` class and an improved support for managing tags for both tasks and contacts, CoordiMate delivers a selection of commands that each serve a strategic function in the planning of SoC events. Every enhancement has been thoughtfully integrated to support the SoC event planners in creating and managing events that are as organised as they are impactful. + From d80e55d73acf681cd8a4bf3159eca246c6528770 Mon Sep 17 00:00:00 2001 From: jiakai-17 <111171022+jiakai-17@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:17:47 +0800 Subject: [PATCH 03/28] docs: Add planned enhancement for more accurate error messages --- docs/DeveloperGuide.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index d1276b326ca..e9eb90373ef 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1528,7 +1528,16 @@ testers are expected to do more exploratory testing. - Currently, when a user uses the `deleteAllDone` command, the task list resets to show all tasks after deletion. However, when a user uses the other `delete..` commands, the task list does not reset the list after deletion. - This enhancement will keep allow the `deleteAllDone` command to not reset the task list after deletion so that users will not get confused of the state of the task list. +### 9. Enhance error messages about leading whitespaces + +- **Enhancement**: Modify the error messages for fields with leading whitespaces to be more accurate. +- **Reason**: To reduce the confusion of the user when the error message differs from what is documented in the user guide and the behaviour of the application. +- **Example**: + - Currently, the error message for `addTask` states that the task title and note cannot start with a whitespace. However, when the user tries to add a task with a title and note that starts with a whitespace, the task is added successfully as the starting whitespace is automatically trimmed. + - This enhancement will update the error message to state that leading and trailing whitespaces are automatically trimmed. + --- +
## **Appendix: Effort** @@ -1539,4 +1548,3 @@ testers are expected to do more exploratory testing. Tailored for the SoC Computing Club event planners, CoordiMate has expanded from the initial 8 commands in AB3 to a robust suite of 27. Each command was crafted to optimise the event planning workflow, addressing the need for quick and efficient management of contacts and tasks. Our enhancements were directed towards providing practical solutions within the event planning sphere. With the addition of a new `Task` class and an improved support for managing tags for both tasks and contacts, CoordiMate delivers a selection of commands that each serve a strategic function in the planning of SoC events. Every enhancement has been thoughtfully integrated to support the SoC event planners in creating and managing events that are as organised as they are impactful. - From 83ed1a60c863905a3298a5251bc9a58306e4d151 Mon Sep 17 00:00:00 2001 From: jiakai-17 <111171022+jiakai-17@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:20:51 +0800 Subject: [PATCH 04/28] docs: Rephrase planned enhancement about invalid JSON files --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index e9eb90373ef..70f0ab070c4 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1518,7 +1518,7 @@ testers are expected to do more exploratory testing. - **Enhancement**: Error messages will be provided to pinpoint the specific part of the JSON file that does not follow the required format. - **Reason**: To improve the usability of the application, especially when users use the JSON file to import large amounts of data, users will be able to identify and correct the exact issue with their JSON data file without having to guess which part was incorrect. - **Example**: - - Currently, when a user imports an invalid JSON data file, CoordiMate will discard all data and start with an empty data file at the next run. This enhancement will be able to retain the information the user imported and allow the user to correct the format of the JSON file effectively. + - Currently, when a user imports an invalid JSON data file, CoordiMate will show an empty contact list and task list. This enhancement will show an error message to inform the user exactly which part of the JSON file is invalid, so that the user can correct the JSON file and import it again. ### 8. Standardise all command behaviours From 9179e4c85af49e7efeae79c8bc703ed43b4f10f6 Mon Sep 17 00:00:00 2001 From: pra-navi Date: Mon, 13 Nov 2023 20:29:26 +0800 Subject: [PATCH 05/28] docs: Add sections to Effort section --- docs/DeveloperGuide.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index e5a6c4b995d..130498ac3d7 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1534,4 +1534,20 @@ testers are expected to do more exploratory testing. [Back to Table of Contents](#table-of-contents) +### 1. Multiple Classes +TODO + +### 2. Rich In Features +TODO + +### 3. User Centric +TODO + +### 4. Improved UI +TODO + +### 5. Extensive Testing +TODO + +### 6. Software Engineering Practices TODO From dd1ed45fb1d0dbec03f1e35c1d319606376d15b5 Mon Sep 17 00:00:00 2001 From: jiakai-17 <111171022+jiakai-17@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:34:40 +0800 Subject: [PATCH 06/28] docs: Update diagrams - Re-render Logic and UI diagrams to update angle brackets - Add activation bar to findTask reference frames --- docs/assets/svg/dg/LogicClassDiagram.svg | 179 ++++++++++++- .../svg/dg/SDCreateFindTaskCommandResult.svg | 4 +- docs/assets/svg/dg/SDCreateTaskPredicate.svg | 4 +- docs/assets/svg/dg/UiClassDiagram.svg | 247 +++++++++++++++++- .../SDCreateFindTaskCommandResult.puml | 1 + docs/diagrams/SDCreateTaskPredicate.puml | 1 + 6 files changed, 432 insertions(+), 4 deletions(-) diff --git a/docs/assets/svg/dg/LogicClassDiagram.svg b/docs/assets/svg/dg/LogicClassDiagram.svg index 59629715b70..8085f9f8e49 100644 --- a/docs/assets/svg/dg/LogicClassDiagram.svg +++ b/docs/assets/svg/dg/LogicClassDiagram.svg @@ -1 +1,178 @@ -LogicModelAddressBookParserXYZCommandCommandResult{abstract}Command«interface»LogicLogicManagerHiddenModelStorageHiddenOutsideXYZCommand = AddPersonCommand,FindPersonCommand, etc1createsexecutesproduces +LogicModelAddressBookParserXYZCommandCommandResult{abstract}Command<<interface>>LogicLogicManagerHiddenModelStorageHiddenOutsideXYZCommand = AddPersonCommand,FindPersonCommand, etc1createsexecutesproduces diff --git a/docs/assets/svg/dg/SDCreateFindTaskCommandResult.svg b/docs/assets/svg/dg/SDCreateFindTaskCommandResult.svg index c5ac675078d..5fe9c5a1685 100644 --- a/docs/assets/svg/dg/SDCreateFindTaskCommandResult.svg +++ b/docs/assets/svg/dg/SDCreateFindTaskCommandResult.svg @@ -1,4 +1,4 @@ -sdCreate successful CommandResultcmd:FindTaskCommandCommandResult(MESSAGE_TASKS_LISTED_OVERVIEW)res:CommandResultresUIModelLogic«interface»Ui{abstract}UiPartUiManagerMainWindowHelpWindowResultDisplayPersonListPanelPersonCardTaskListPanelTaskCardStatusBarFooterCommandBoxHiddenModelHiddenLogicHiddenOutside1111110..1** +UIModelLogic<<interface>>Ui{abstract}UiPartUiManagerMainWindowHelpWindowResultDisplayPersonListPanelPersonCardTaskListPanelTaskCardStatusBarFooterCommandBoxHiddenModelHiddenLogicHiddenOutside1111110..1** diff --git a/docs/diagrams/SDCreateFindTaskCommandResult.puml b/docs/diagrams/SDCreateFindTaskCommandResult.puml index a51783f512f..d3e5c48344f 100644 --- a/docs/diagrams/SDCreateFindTaskCommandResult.puml +++ b/docs/diagrams/SDCreateFindTaskCommandResult.puml @@ -8,6 +8,7 @@ mainframe: **sd** Create successful CommandResult participant "cmd:FindTaskCommand" as FindTaskCommand LOGIC_COLOR participant "res:CommandResult" as CommandResult LOGIC_COLOR +activate FindTaskCommand create CommandResult FindTaskCommand -> CommandResult : CommandResult(MESSAGE_TASKS_LISTED_OVERVIEW) activate CommandResult diff --git a/docs/diagrams/SDCreateTaskPredicate.puml b/docs/diagrams/SDCreateTaskPredicate.puml index 7aaddf19575..95b8314e56e 100644 --- a/docs/diagrams/SDCreateTaskPredicate.puml +++ b/docs/diagrams/SDCreateTaskPredicate.puml @@ -8,6 +8,7 @@ mainframe: **sd** Create Task Predicate participant ":FindTaskCommandParser" as FindTaskCommandParser LOGIC_COLOR participant "pred:TaskContainsKeywordsPredicate" as TaskContainsKeywordsPredicate LOGIC_COLOR +activate FindTaskCommandParser create FindTaskCommandParser create TaskContainsKeywordsPredicate FindTaskCommandParser -> TaskContainsKeywordsPredicate : TaskContainsKeywordsPredicate(["agenda"]) From f0cc98a3885208dc334bf257fc9fa011abe9b3ae Mon Sep 17 00:00:00 2001 From: pra-navi Date: Mon, 13 Nov 2023 20:36:44 +0800 Subject: [PATCH 07/28] docs: Update sections in Effort --- docs/DeveloperGuide.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 70f0ab070c4..94d0a54f121 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1548,3 +1548,19 @@ testers are expected to do more exploratory testing. Tailored for the SoC Computing Club event planners, CoordiMate has expanded from the initial 8 commands in AB3 to a robust suite of 27. Each command was crafted to optimise the event planning workflow, addressing the need for quick and efficient management of contacts and tasks. Our enhancements were directed towards providing practical solutions within the event planning sphere. With the addition of a new `Task` class and an improved support for managing tags for both tasks and contacts, CoordiMate delivers a selection of commands that each serve a strategic function in the planning of SoC events. Every enhancement has been thoughtfully integrated to support the SoC event planners in creating and managing events that are as organised as they are impactful. + +### 2. Multiple Classes +TODO + +### 3. User Centric +TODO + +### 4. Improved UI +TODO + +### 5. Extensive Testing +TODO + +### 6. Software Engineering Practices +TODO + From a1d484d4e1e0050c1f7d1d5f552af841d3d194aa Mon Sep 17 00:00:00 2001 From: jiakai-17 <111171022+jiakai-17@users.noreply.github.com> Date: Mon, 13 Nov 2023 20:42:45 +0800 Subject: [PATCH 08/28] docs: Reorder Back to Table of Contents link --- docs/DeveloperGuide.md | 102 ++++++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 94d0a54f121..dbef5a890e8 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -37,10 +37,10 @@ This Developer Guide will help you get familiar with the architecture of CoordiM
-## **Acknowledgements** - [Back to Table of Contents](#table-of-contents) +## **Acknowledgements** + * CoordiMate is based on the [AddressBook-Level3](https://github.com/se-edu/addressbook-level3) project created by the [SE-EDU initiative](https://se-education.org). * CoordiMate makes use of the following open source libraries: * [JavaFX](https://openjfx.io/) for the Graphical User Interface (GUI). @@ -51,20 +51,20 @@ This Developer Guide will help you get familiar with the architecture of CoordiM
-## **Setting up, getting started** - [Back to Table of Contents](#table-of-contents) +## **Setting up, getting started** + Refer to the guide [_Setting up and getting started_](SettingUp.md). ---
-## **Design** - [Back to Table of Contents](#table-of-contents) +## **Design** + {% include admonition.html type="note" title="Note" body=" The .puml files used to create diagrams in this document are in the docs/diagrams folder.
@@ -72,10 +72,10 @@ Refer to the < " %} -### Architecture - [Back to Table of Contents](#table-of-contents) +### Architecture + The ***Architecture Diagram*** given above explains the high-level design of the App. @@ -117,10 +117,10 @@ The sections below give more details of each component.
-### UI component - [Back to Table of Contents](#table-of-contents) +### UI component + The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/ui/Ui.java) ![Structure of the UI Component](assets/svg/dg/UiClassDiagram.svg) @@ -138,10 +138,10 @@ The `UI` component,
-### Logic component - [Back to Table of Contents](#table-of-contents) +### Logic component + **API** : [`Logic.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/logic/Logic.java) Here's a (partial) class diagram of the `Logic` component: @@ -181,10 +181,10 @@ How the parsing works:
-### Model component - [Back to Table of Contents](#table-of-contents) +### Model component + **API** : [`Model.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/model/Model.java) @@ -210,10 +210,10 @@ Without loss of generality, this model can be extended to Task enti
-### Storage component - [Back to Table of Contents](#table-of-contents) +### Storage component + **API** : [`Storage.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/storage/Storage.java) @@ -225,26 +225,26 @@ The `Storage` component,
-### Common classes - [Back to Table of Contents](#table-of-contents) +### Common classes + Classes used by multiple components are in the `seedu.addressbook.commons` package.
--- -## **Implementation** - [Back to Table of Contents](#table-of-contents) -This section describes some noteworthy details on how certain features are implemented. +## **Implementation** -### Add Tag(s) To Person feature +This section describes some noteworthy details on how certain features are implemented. [Back to Table of Contents](#table-of-contents) +### Add Tag(s) To Person feature + #### Implementation The `addTagPerson` command is designed to allow users to add tags to existing persons in CoordiMate. It takes in an index to specify which person to add the tags to. It then takes in one or more tags to add to the list of existing tags of the specified person. @@ -280,10 +280,10 @@ The sequence diagrams below show the details of the respective reference frames.
-### List Task feature - [Back to Table of Contents](#table-of-contents) +### List Task feature + #### Implementation The `listTask` command is designed to exhibit all tasks currently stored within CoordiMate to the user. It takes in no arguments and provides a straightforward view of all tasks in their current state. @@ -312,10 +312,10 @@ The lifeline for ListTaskCommand should end at the destroy marker (
-### Edit Task feature - [Back to Table of Contents](#table-of-contents) +### Edit Task feature + #### Implementation The `editTask` command accepts an index, title, note, and tags, and edits the task at that index with the new fields. The index should be numeric. The title, note, and tags can be any string. At least one of the title, note, or tag must be provided for the command to be valid. @@ -353,10 +353,10 @@ The sequence diagrams below show the details of the respective reference frames.
-### Find Task feature - [Back to Table of Contents](#table-of-contents) +### Find Task feature + #### Implementation The `findTask` command accepts a String of space-separated keywords, and returns a list of tasks that contain any of their keywords in their title or note. The search is case-insensitive. @@ -402,10 +402,10 @@ These two predicates are used to filter the list of tasks in the `Model` compone
-### Mark Task feature - [Back to Table of Contents](#table-of-contents) +### Mark Task feature + #### Implementation The `markTask` command accepts an index and marks the task at that index with task status of **done**. The index should be numeric. @@ -462,10 +462,10 @@ Any string can be passed as a status, potentially resulting in invalid or unexpe
-### Delete Task feature - [Back to Table of Contents](#table-of-contents) +### Delete Task feature + #### Implementation The `deleteTask` command accepts a numeric Index, and removes the task at that index from the task list. @@ -502,10 +502,10 @@ The sequence diagrams below show the details of the respective reference frames.
-## **Documentation, Logging, Testing, Configuration, Dev-Ops** - [Back to Table of Contents](#table-of-contents) +## **Documentation, Logging, Testing, Configuration, Dev-Ops** + * [Documentation guide](Documentation.md) * [Testing guide](Testing.md) * [Logging guide](Logging.md) @@ -516,13 +516,11 @@ The sequence diagrams below show the details of the respective reference frames.
-## **Appendix: Requirements** - [Back to Table of Contents](#table-of-contents) -### Product scope +## **Appendix: Requirements** -[Back to Table of Contents](#table-of-contents) +### Product scope **Target user profile**: @@ -537,10 +535,10 @@ CoordiMate helps event planners to easily keep track of contact details as well
-### User stories - [Back to Table of Contents](#table-of-contents) +### User stories + Priorities: * `* * *` - High (must have) @@ -582,10 +580,10 @@ Priorities:
-### Use cases - [Back to Table of Contents](#table-of-contents) +### Use cases + For all use cases below, the **System** is `CoordiMate` and the **Actor** is the `user`, unless specified otherwise. --- @@ -1209,10 +1207,10 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the
-### Non-Functional Requirements - [Back to Table of Contents](#table-of-contents) +### Non-Functional Requirements + 1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. 2. Should be able to hold up to 1000 persons and tasks without a noticeable sluggishness in performance for typical usage. 3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. @@ -1224,10 +1222,10 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the 9. GUI should be usable for resolutions of 1280x720 and higher, and for screen scales of 150%. 10. Application should be packaged and delivered to user in a single JAR file under 100MB. -### Glossary - [Back to Table of Contents](#table-of-contents) +### Glossary + * **API**: Application Programming Interface, a set of predefined functions that a software program can use to interact with another software program. * **CLI**: Command Line Interface, a way of interacting with a computer program by typing commands and receiving text responses. * **Exploratory testing**: Testing a feature based on the tester's intuitive understanding of how the feature should function. @@ -1240,10 +1238,10 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the --- -## **Appendix: Instructions for manual testing** - [Back to Table of Contents](#table-of-contents) +## **Appendix: Instructions for manual testing** + Given below are instructions to test the app manually. The commands in this section are based on the assumption that the tester is using the sample data provided by CoordiMate. @@ -1457,10 +1455,10 @@ testers are expected to do more exploratory testing.
-## **Appendix: Planned Enhancements** - [Back to Table of Contents](#table-of-contents) +## **Appendix: Planned Enhancements** + ### 1. Character limits for person fields and tasks - **Enhancement**: Implement character limits for various fields associated with persons and tasks to ensure data consistency and integrity. @@ -1540,10 +1538,10 @@ testers are expected to do more exploratory testing.
-## **Appendix: Effort** - [Back to Table of Contents](#table-of-contents) +## **Appendix: Effort** + ### 1. Feature-rich selection of commands Tailored for the SoC Computing Club event planners, CoordiMate has expanded from the initial 8 commands in AB3 to a robust suite of 27. Each command was crafted to optimise the event planning workflow, addressing the need for quick and efficient management of contacts and tasks. Our enhancements were directed towards providing practical solutions within the event planning sphere. From 25d50a7e0a1c9f1b17f8cae3702307520ea52720 Mon Sep 17 00:00:00 2001 From: pra-navi Date: Mon, 13 Nov 2023 20:47:27 +0800 Subject: [PATCH 09/28] docs: Update Improved UI section in Effort --- docs/DeveloperGuide.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 94d0a54f121..280923b6525 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1556,7 +1556,13 @@ TODO TODO ### 4. Improved UI -TODO +The original AB3 program only displayed the list of persons which is not very useful for a contact and task management application. To make our app effective, we created additional panels for tasks, besides the original +panel for persons. This allows the user to view all the tasks and persons at a glance. Event planners can also easily track the status of their tasks through the status symbol we use to mark tasks as completed or not completed. + +To customise the application and set it apart from the original implementation of AB3, we also included our own enhance unique features. First and foremost, we have our own icon for the application that can be seen when opening +the application or any of the documents such as User Guide or Developer Guide. Next, we also included the feature to be able to drag the dividers across the screen. We understand that our output messages can be long at +times, especially for commands such as `listTag`. Hence, we wanted to give the user the ability to adjust the size of the output box according to their preference and the specific command they are using. For users who want to focus +more on their tasks at hand, they can drag the divider between the contact list and task list so that their screen can show more of the task list. This is also useful for users who have a smaller screen size and would like to view more of the application at once. ### 5. Extensive Testing TODO From c148a7505da3c3a66a629a20caab29ffdb11ac48 Mon Sep 17 00:00:00 2001 From: pra-navi Date: Mon, 13 Nov 2023 20:48:36 +0800 Subject: [PATCH 10/28] docs: Update Effort section --- docs/UserGuide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index e6e600dc4af..7b25cea24d4 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -527,7 +527,7 @@ This person will be removed from your contact list immediately. This action is i

Example:

-- `listPerson` followed by `deletePerson 2`.

+- `listPerson` followed by `deletePerson 2`. ![deletePerson_success_with_listPerson](images/output/deletePerson_success.png) *
CoordiMate deletes the person at the index 2.
* @@ -797,7 +797,7 @@ The task will be removed from your task list immediately. This action is irrever

Example:

-- `listTask` followed by `deleteTask 2`

+- `listTask` followed by `deleteTask 2` ![deleteTask_success](images/output/deleteTask_success.png) *
CoordiMate deletes the task at the index 2.
* From 706c9053ea6cb59c2088f67c2471de2fb78d98de Mon Sep 17 00:00:00 2001 From: jiakai-17 <111171022+jiakai-17@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:45:05 +0800 Subject: [PATCH 11/28] docs: Update Multiple Classes point under Effort section - Add newline after heading --- docs/DeveloperGuide.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 12b4587f506..6eefe73bf1e 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1543,28 +1543,37 @@ testers are expected to do more exploratory testing. ## **Appendix: Effort** ### 1. Feature-rich selection of commands + Tailored for the SoC Computing Club event planners, CoordiMate has expanded from the initial 8 commands in AB3 to a robust suite of 27. Each command was crafted to optimise the event planning workflow, addressing the need for quick and efficient management of contacts and tasks. Our enhancements were directed towards providing practical solutions within the event planning sphere. With the addition of a new `Task` class and an improved support for managing tags for both tasks and contacts, CoordiMate delivers a selection of commands that each serve a strategic function in the planning of SoC events. Every enhancement has been thoughtfully integrated to support the SoC event planners in creating and managing events that are as organised as they are impactful. -### 2. Multiple Classes -TODO +### 2. Creation of Multiple Classes + +In order for CoordiMate to track tasks, we had to create new classes that encapsulated the various elements of a task, such as the title, note and status. This was done to ensure that tasks can also be modelled in an object-oriented manner, just like the existing `Person` class. + +Furthermore, these classes needed to be integrated into the existing codebase, so that CoordiMate can keep track of the various tasks in the user's task list, as well as which tasks to show in the GUI. + +Lastly, to ensure that the tasks are saved and loaded correctly, the Storage class had to be modified to support the new `Task` class. This required the team to design how these tasks were to be stored in the data file, and the creation of the necessary helper classes to parse the tasks into JSON strings and vice versa. ### 3. User Centric + TODO ### 4. Improved UI -The original AB3 program only displayed the list of persons which is not very useful for a contact and task management application. To make our app effective, we created additional panels for tasks, besides the original + +The original AB3 program only displayed the list of persons which is not very useful for a contact and task management application. To make our app effective, we created additional panels for tasks, besides the original panel for persons. This allows the user to view all the tasks and persons at a glance. Event planners can also easily track the status of their tasks through the status symbol we use to mark tasks as completed or not completed. -To customise the application and set it apart from the original implementation of AB3, we also included our own enhance unique features. First and foremost, we have our own icon for the application that can be seen when opening -the application or any of the documents such as User Guide or Developer Guide. Next, we also included the feature to be able to drag the dividers across the screen. We understand that our output messages can be long at -times, especially for commands such as `listTag`. Hence, we wanted to give the user the ability to adjust the size of the output box according to their preference and the specific command they are using. For users who want to focus +To customise the application and set it apart from the original implementation of AB3, we also included our own enhance unique features. First and foremost, we have our own icon for the application that can be seen when opening +the application or any of the documents such as User Guide or Developer Guide. Next, we also included the feature to be able to drag the dividers across the screen. We understand that our output messages can be long at +times, especially for commands such as `listTag`. Hence, we wanted to give the user the ability to adjust the size of the output box according to their preference and the specific command they are using. For users who want to focus more on their tasks at hand, they can drag the divider between the contact list and task list so that their screen can show more of the task list. This is also useful for users who have a smaller screen size and would like to view more of the application at once. ### 5. Extensive Testing + TODO ### 6. Software Engineering Practices -TODO +TODO From 22172b80ab7c1c47bc3b633ab734ce56bfcb2aeb Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:50:46 +0800 Subject: [PATCH 12/28] docs: Update deleteAllDone --- docs/DeveloperGuide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 6eefe73bf1e..baf66d03ee8 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1520,10 +1520,10 @@ testers are expected to do more exploratory testing. ### 8. Standardise all command behaviours -- **Enhancement**: Modify the behavior of deleteAllDone to be similar with the other delete commands. +- **Enhancement**: Modify the behavior of `deleteAllDone` to be similar with the other delete commands. - **Reason**: To reduce the confusion of the user when using the application and standardise all delete behaviours in the application. - **Example**: - - Currently, when a user uses the `deleteAllDone` command, the task list resets to show all tasks after deletion. However, when a user uses the other `delete..` commands, the task list does not reset the list after deletion. + - Currently, when a user uses the `deleteAllDone` command, the task list resets to show all tasks after deletion. However, when a user uses the other `delete…` commands, the task list does not reset the list after deletion. - This enhancement will keep allow the `deleteAllDone` command to not reset the task list after deletion so that users will not get confused of the state of the task list. ### 9. Enhance error messages about leading whitespaces From 85d9ad3396557ad3d34e9c1eea5c34f25151c61f Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Mon, 13 Nov 2023 22:25:06 +0800 Subject: [PATCH 13/28] docs: Add efforts user centric --- docs/DeveloperGuide.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index baf66d03ee8..fd9803cbdec 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1558,7 +1558,11 @@ Lastly, to ensure that the tasks are saved and loaded correctly, the Storage cla ### 3. User Centric -TODO +In designing CoordiMate, our focus was on ensuring a seamless and user-friendly experience for SoC event planners. We recognized the value of our users' time and effort during event planning. To streamline interactions, we implemented command aliases, offering shorthand alternatives that reduce the need for extensive typing (i.e. from `listPerson` to `lp`). This enhancement simplifies command input, making the application more efficient and user-friendly. + +CoordiMate is all about putting users in control with a clear and efficient way to manage their event details. We have made it easy for users to update contacts and tasks directly from what they see on the screen. All changes requested by commands are done using the index of persons and tasks in the displayed list, making it straightforward for users to interact with the graphical interface. To make life simpler, we have also added a variety of `find` commands so users can filter their lists by keywords, tags, or task status. This means even if there's a lot of info in the app, users can quickly focus on what they need to view or update. With these deliberate design considerations, users can easily view the index of specific persons or tasks and make updates precisely, without getting lost in a sea of information. + +To guide users effectively, we crafted error messages that are not only informative but also pinpoint the specific areas where errors occurred in command inputs. This user-centric approach facilitates quick identification and resolution of issues, ensuring a smoother interaction with the application. Example of valid commands are also given to aid users in better understanding our error messages and assists users in rectifying errors efficiently. If more help is needed, we also went beyond from the given `help` command of AB3 by improving the help window that redirects the user to directly open our user guide on their preferred browser with ease. By prioritizing user-centric design principles, CoordiMate aims to elevate the event planning experience, making it both intuitive and efficient for SoC Computing Club event planners. ### 4. Improved UI From 35ac89f42cd1c1f3c4100347178710f6ec5737d1 Mon Sep 17 00:00:00 2001 From: Lingxi Xing Date: Mon, 13 Nov 2023 23:23:18 +0800 Subject: [PATCH 14/28] docs: Add Extensive Testing in efforts --- docs/DeveloperGuide.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index fd9803cbdec..174e9f6eb94 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1576,7 +1576,11 @@ more on their tasks at hand, they can drag the divider between the contact list ### 5. Extensive Testing -TODO +Our team placed a strong emphasis on testing to ensure that the application is robust and reliable. + +We conducted extensive unit testing for new features, recommending at least a **75%** coverage for new code. This was done to ensure that the new code is thoroughly tested and that the new features are working as intended. Only UI changes were left untested, as we felt that it was too time-consuming and difficult to automate UI tests. + +We managed to maintain **~83%** code coverage in CoordiMate, up from the original **75%** of AB3. In total, we have increased the **267** test cases in AB3 to **547** test cases in CoordiMate. ### 6. Software Engineering Practices From 0834518dd57d9642a1a572eaae7356a54007186b Mon Sep 17 00:00:00 2001 From: Lingxi Xing Date: Mon, 13 Nov 2023 23:23:38 +0800 Subject: [PATCH 15/28] docs: Add SWE practices in efforts --- docs/DeveloperGuide.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 174e9f6eb94..7087bd4d973 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1584,4 +1584,12 @@ We managed to maintain **~83%** code coverage in CoordiMate, up from the origina ### 6. Software Engineering Practices -TODO +Our team went beyond the recommended guidelines in the course and adopted various rigorous software engineering practices in our development workflow to ensure that our codebase is well-written and maintainable. + +For `git` commits, we went beyond the course's recommended `git` guidelines and followed the more elaborate [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format. Although this took more time and effort, it allowed us to write more descriptive commit messages that are easier to understand and follow. + +For pull requests, we made the effort to enforce that each pull request is approved by at least **two** other team members before merging. We believe that this practice allows us to catch more bugs and gain more perspectives on code changes before they are merged. This ensures that merged changes are of high quality, and that more team members are aware of the changes made to the codebase. + +For pull requests, we also standardised a [pull request template](https://github.com/AY2324S1-CS2103T-T10-2/tp/pull/17) to be filled by the pull request author. Having such a template ensures that pull requests descriptions are more descriptive and informative, allowing reviewers to better understand the changes made. We also included a checklist to remind the pull request author to test their code and maintain code coverage above 75% for new code. + +We also experimented with different `git` workflows to maximise our productivity. For new features done by individual team members, we maintained the recommended forking workflow. However, for changes that required multiple team members to work on, we adopted the feature workflow to allow concurrent work on the same branch and synchronise changes more easily. Some examples are UG and DG changes, which we believed was beneficial for us to visualise each other's changes while working on the same branch ([PR #160](https://github.com/AY2324S1-CS2103T-T10-2/tp/pull/160), [PR #163](https://github.com/AY2324S1-CS2103T-T10-2/tp/pull/163), and many more). From b73d97e829013b490844d8a370e3b69bc52956f3 Mon Sep 17 00:00:00 2001 From: jiakai-17 <111171022+jiakai-17@users.noreply.github.com> Date: Tue, 14 Nov 2023 00:01:20 +0800 Subject: [PATCH 16/28] docs: Add more elaboration to Creation of Multiple Classes point --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 7087bd4d973..4c78e4c1787 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1552,7 +1552,7 @@ With the addition of a new `Task` class and an improved support for managing tag In order for CoordiMate to track tasks, we had to create new classes that encapsulated the various elements of a task, such as the title, note and status. This was done to ensure that tasks can also be modelled in an object-oriented manner, just like the existing `Person` class. -Furthermore, these classes needed to be integrated into the existing codebase, so that CoordiMate can keep track of the various tasks in the user's task list, as well as which tasks to show in the GUI. +Furthermore, these classes needed to be integrated into the existing codebase. For example, we implemented the relevant `Predicate` classes to support the new `findTask`, `findTag` and `findAllTag` commands. We also created a `UniqueTaskList` class to store the list of tasks and to handle various operations, such as adding, deleting and modifying tasks in the list. This class was essential for the GUI to display information about the tasks in the task list. Lastly, to ensure that the tasks are saved and loaded correctly, the Storage class had to be modified to support the new `Task` class. This required the team to design how these tasks were to be stored in the data file, and the creation of the necessary helper classes to parse the tasks into JSON strings and vice versa. From 07b26b6f08396ba2e0fe1b1623faca1d81754ab6 Mon Sep 17 00:00:00 2001 From: freshcabbage123 Date: Tue, 14 Nov 2023 00:05:12 +0800 Subject: [PATCH 17/28] docs: Update feature-rich section --- docs/DeveloperGuide.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4c78e4c1787..4f0ca2cdb11 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1544,9 +1544,11 @@ testers are expected to do more exploratory testing. ### 1. Feature-rich selection of commands -Tailored for the SoC Computing Club event planners, CoordiMate has expanded from the initial 8 commands in AB3 to a robust suite of 27. Each command was crafted to optimise the event planning workflow, addressing the need for quick and efficient management of contacts and tasks. Our enhancements were directed towards providing practical solutions within the event planning sphere. +The process of building CoordiMate's command suite began with a structured approach, where we drafted user stories to encapsulate the frequent challenges faced by SoC event planners. This groundwork helped us identify and develop the commands that were critical to the application, particularly the CRUD operations for persons and tasks. Our aim was to ensure these core commands were not only functional but also intuitive for users. -With the addition of a new `Task` class and an improved support for managing tags for both tasks and contacts, CoordiMate delivers a selection of commands that each serve a strategic function in the planning of SoC events. Every enhancement has been thoughtfully integrated to support the SoC event planners in creating and managing events that are as organised as they are impactful. +Following the first iteration, we presented CoordiMate in a live demo to collect firsthand feedback from our peers. This step was crucial; it enabled us to understand how the app was being received by potential users and which additional features would enhance its value. We used this feedback to inform our development priorities, focusing on the user stories that had the most significant impact on the user experience for subsequent updates. + +In the second iteration of development, we honed in on features that were highly requested during peer reviews, such as the ability to filter tasks and contacts by tags and to check the status of tasks as done. These particular commands addressed key concerns from our peers about the ease of organising and tracking progress within the app. By aligning our development efforts with these specific user needs, we expanded from the initial **8** commands in AB3 to a robust suite of **27**, ensuring that each new feature was both meaningful and in direct response to our users' needs. ### 2. Creation of Multiple Classes From aaa36e4760c10cf459c29fde3ce1b29ac883c0f1 Mon Sep 17 00:00:00 2001 From: freshcabbage123 Date: Tue, 14 Nov 2023 00:14:44 +0800 Subject: [PATCH 18/28] docs: Add CRUD abbreviation --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4f0ca2cdb11..92287ab3ade 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1544,7 +1544,7 @@ testers are expected to do more exploratory testing. ### 1. Feature-rich selection of commands -The process of building CoordiMate's command suite began with a structured approach, where we drafted user stories to encapsulate the frequent challenges faced by SoC event planners. This groundwork helped us identify and develop the commands that were critical to the application, particularly the CRUD operations for persons and tasks. Our aim was to ensure these core commands were not only functional but also intuitive for users. +The process of building CoordiMate's command suite began with a structured approach, where we drafted user stories to encapsulate the frequent challenges faced by SoC event planners. This groundwork helped us identify and develop the commands that were critical to the application, particularly the (Create, Read, Update, Delete) CRUD operations for persons and tasks. Our aim was to ensure these core commands were not only functional but also intuitive for users. Following the first iteration, we presented CoordiMate in a live demo to collect firsthand feedback from our peers. This step was crucial; it enabled us to understand how the app was being received by potential users and which additional features would enhance its value. We used this feedback to inform our development priorities, focusing on the user stories that had the most significant impact on the user experience for subsequent updates. From 489db768597fbbd472e7aedac9791756c88d59fc Mon Sep 17 00:00:00 2001 From: freshcabbage123 Date: Tue, 14 Nov 2023 00:24:17 +0800 Subject: [PATCH 19/28] docs: Align spelling of headers for effort --- docs/DeveloperGuide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 92287ab3ade..3e2f19f682a 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1542,9 +1542,9 @@ testers are expected to do more exploratory testing. ## **Appendix: Effort** -### 1. Feature-rich selection of commands +### 1. Feature-rich Selection of Commands -The process of building CoordiMate's command suite began with a structured approach, where we drafted user stories to encapsulate the frequent challenges faced by SoC event planners. This groundwork helped us identify and develop the commands that were critical to the application, particularly the (Create, Read, Update, Delete) CRUD operations for persons and tasks. Our aim was to ensure these core commands were not only functional but also intuitive for users. +The process of building CoordiMate's command suite began with a structured approach, where we drafted user stories to encapsulate the frequent challenges faced by SoC event planners. This groundwork helped us identify and develop the commands that were critical to the application, particularly the Create, Read, Update, Delete (CRUD) operations for persons and tasks. Our aim was to ensure these core commands were not only functional but also intuitive for users. Following the first iteration, we presented CoordiMate in a live demo to collect firsthand feedback from our peers. This step was crucial; it enabled us to understand how the app was being received by potential users and which additional features would enhance its value. We used this feedback to inform our development priorities, focusing on the user stories that had the most significant impact on the user experience for subsequent updates. From ffdcff4b8de8f304d468986efb86230fa996c857 Mon Sep 17 00:00:00 2001 From: pra-navi Date: Tue, 14 Nov 2023 00:43:53 +0800 Subject: [PATCH 20/28] Revert "docs: Update Effort section" This reverts commit c148a7505da3c3a66a629a20caab29ffdb11ac48. --- docs/UserGuide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 7b25cea24d4..e6e600dc4af 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -527,7 +527,7 @@ This person will be removed from your contact list immediately. This action is i

Example:

-- `listPerson` followed by `deletePerson 2`. +- `listPerson` followed by `deletePerson 2`.

![deletePerson_success_with_listPerson](images/output/deletePerson_success.png) *
CoordiMate deletes the person at the index 2.
* @@ -797,7 +797,7 @@ The task will be removed from your task list immediately. This action is irrever

Example:

-- `listTask` followed by `deleteTask 2` +- `listTask` followed by `deleteTask 2`

![deleteTask_success](images/output/deleteTask_success.png) *
CoordiMate deletes the task at the index 2.
* From 2e83940cc66215da886d92c074e8046727d3ac63 Mon Sep 17 00:00:00 2001 From: jiakai-17 <111171022+jiakai-17@users.noreply.github.com> Date: Tue, 14 Nov 2023 01:31:51 +0800 Subject: [PATCH 21/28] docs: Remove numbering in Planned Enhancements - Remove duplicate user stories --- docs/DeveloperGuide.md | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 3e2f19f682a..17f57cdd30d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -572,8 +572,6 @@ Priorities: | `* *` | event planner | delete all done tasks | ensure that my task list is not cluttered with completed tasks | | `* *` | event planner | list all the tags I have used | avoid creating duplicate categories | | `* *` | event planner | find a person and tasks by tag | quickly see the persons and tasks in a category | -| `* *` | event planner | add tag(s) to a person | add tag(s) to the existing list of tags of the indexed person | -| `* *` | event planner | add tag(s) to a task | add tag(s) to the existing list of tags of the indexed task | | `* *` | event planner | delete tag(s) from a person | remove unwanted or outdated tag(s) | | `* *` | event planner | delete tag(s) from a task | remove unwanted or outdated tag(s) | {: .user-story-table} @@ -1459,7 +1457,7 @@ testers are expected to do more exploratory testing. ## **Appendix: Planned Enhancements** -### 1. Character limits for person fields and tasks +### Character limits for person fields and tasks - **Enhancement**: Implement character limits for various fields associated with persons and tasks to ensure data consistency and integrity. - **Reason**: To maintain a structured format for data entry and prevent excessively long inputs that could affect the display and usability of the system. @@ -1475,7 +1473,7 @@ testers are expected to do more exploratory testing. - For `Person/Task` tags: - **Tag**: Maximum of 30 characters to keep tags succinct and meaningful. -### 2. Command-specific error messages +### Command-specific error messages - **Enhancement**: Error messages will pinpoint the specific part of the command that has triggered the error. - **Reason**: Users will be able to identify and correct the exact issue with their command input without having to guess which part was incorrect. @@ -1483,42 +1481,42 @@ testers are expected to do more exploratory testing. - For an invalid command due to an excessively long or short user input, a possible error message would be "Invalid addPerson command: person's name exceeded 100 characters." - For tag-related commands, specifying error messages such as changing "Tag names should be alphanumeric" to "Tag names should be ONLY alphanumeric" for better clarity. -### 3. Stricter validity checks for email addresses +### Stricter validity checks for email addresses - **Enhancement**: Revise the regex used for validating email addresses to ensure the domain name is present and correctly formatted. - **Reason**: To prevent the acceptance of invalid email addresses that lack a top-level domain e.g. `.com`, which are not very usable for actual communication. - **Example**: - The current regex might validate `johndoe@example`, which is incorrect as it lacks a domain name. The enhanced regex would correctly invalidate this and require a proper top-level domain, like `johndoe@example.com`. -### 4. Accommodating Special Characters in Person Names +### Accommodating Special Characters in Person Names - **Enhancement**: Update the name input validation to allow some special characters that are part of valid names in various cultures, including diacritics and other linguistic markers. - **Reason**: To ensure the software is inclusive and capable of accurately recording names from a diverse range of ethnic backgrounds. - **Example**: - Under the current system, a name like "Séamus O'Connor" or "Anand Sai-Krishna" might be rejected due to special characters. The enhancement would allow these names to be entered and stored correctly. -### 5. Enhanced UI indicators for empty person/tasks lists +### Enhanced UI indicators for empty person/tasks lists - **Enhancement**: Implement clear and prominent UI indicators when task or person lists are empty, particularly after performing actions such as marking tasks complete. - **Reason**: To provide immediate and unmistakable visual feedback to users when there are no items to display, enhancing the user experience by avoiding potential confusion or the impression that the list may not have loaded properly. - **Example**: - After a user completes the last remaining task with `markTask` and no incomplete tasks are left, instead of the minimalistic message "0 tasks listed!", the UI could display a more noticeable and friendly graphic or message such as "All tasks complete!" within the task list itself. This visual cue would be both informative and encouraging to the user. -### 6. Preventing list jump on selection +### Preventing list jump on selection - **Enhancement**: Modify the UI behavior to maintain the current scroll position when selecting an item at the bottom of a list. - **Reason**: To improve the usability of the application, especially when dealing with long lists, by preventing the list from jumping back to the top after selection. - **Example**: - Currently, when a user selects an item at the bottom of a long list, the list resets to the top position. This enhancement will keep the list at the current scroll position, making it easier to manage and navigate long lists. -### 7. Error messages for invalid JSON file format +### Error messages for invalid JSON file format - **Enhancement**: Error messages will be provided to pinpoint the specific part of the JSON file that does not follow the required format. - **Reason**: To improve the usability of the application, especially when users use the JSON file to import large amounts of data, users will be able to identify and correct the exact issue with their JSON data file without having to guess which part was incorrect. - **Example**: - Currently, when a user imports an invalid JSON data file, CoordiMate will show an empty contact list and task list. This enhancement will show an error message to inform the user exactly which part of the JSON file is invalid, so that the user can correct the JSON file and import it again. -### 8. Standardise all command behaviours +### Standardise all command behaviours - **Enhancement**: Modify the behavior of `deleteAllDone` to be similar with the other delete commands. - **Reason**: To reduce the confusion of the user when using the application and standardise all delete behaviours in the application. @@ -1526,7 +1524,7 @@ testers are expected to do more exploratory testing. - Currently, when a user uses the `deleteAllDone` command, the task list resets to show all tasks after deletion. However, when a user uses the other `delete…` commands, the task list does not reset the list after deletion. - This enhancement will keep allow the `deleteAllDone` command to not reset the task list after deletion so that users will not get confused of the state of the task list. -### 9. Enhance error messages about leading whitespaces +### Enhance error messages about leading whitespaces - **Enhancement**: Modify the error messages for fields with leading whitespaces to be more accurate. - **Reason**: To reduce the confusion of the user when the error message differs from what is documented in the user guide and the behaviour of the application. @@ -1542,7 +1540,7 @@ testers are expected to do more exploratory testing. ## **Appendix: Effort** -### 1. Feature-rich Selection of Commands +### Feature-rich Selection of Commands The process of building CoordiMate's command suite began with a structured approach, where we drafted user stories to encapsulate the frequent challenges faced by SoC event planners. This groundwork helped us identify and develop the commands that were critical to the application, particularly the Create, Read, Update, Delete (CRUD) operations for persons and tasks. Our aim was to ensure these core commands were not only functional but also intuitive for users. @@ -1550,7 +1548,7 @@ Following the first iteration, we presented CoordiMate in a live demo to collect In the second iteration of development, we honed in on features that were highly requested during peer reviews, such as the ability to filter tasks and contacts by tags and to check the status of tasks as done. These particular commands addressed key concerns from our peers about the ease of organising and tracking progress within the app. By aligning our development efforts with these specific user needs, we expanded from the initial **8** commands in AB3 to a robust suite of **27**, ensuring that each new feature was both meaningful and in direct response to our users' needs. -### 2. Creation of Multiple Classes +### Creation of Multiple Classes In order for CoordiMate to track tasks, we had to create new classes that encapsulated the various elements of a task, such as the title, note and status. This was done to ensure that tasks can also be modelled in an object-oriented manner, just like the existing `Person` class. @@ -1558,7 +1556,7 @@ Furthermore, these classes needed to be integrated into the existing codebase. F Lastly, to ensure that the tasks are saved and loaded correctly, the Storage class had to be modified to support the new `Task` class. This required the team to design how these tasks were to be stored in the data file, and the creation of the necessary helper classes to parse the tasks into JSON strings and vice versa. -### 3. User Centric +### User Centric In designing CoordiMate, our focus was on ensuring a seamless and user-friendly experience for SoC event planners. We recognized the value of our users' time and effort during event planning. To streamline interactions, we implemented command aliases, offering shorthand alternatives that reduce the need for extensive typing (i.e. from `listPerson` to `lp`). This enhancement simplifies command input, making the application more efficient and user-friendly. @@ -1566,7 +1564,7 @@ CoordiMate is all about putting users in control with a clear and efficient way To guide users effectively, we crafted error messages that are not only informative but also pinpoint the specific areas where errors occurred in command inputs. This user-centric approach facilitates quick identification and resolution of issues, ensuring a smoother interaction with the application. Example of valid commands are also given to aid users in better understanding our error messages and assists users in rectifying errors efficiently. If more help is needed, we also went beyond from the given `help` command of AB3 by improving the help window that redirects the user to directly open our user guide on their preferred browser with ease. By prioritizing user-centric design principles, CoordiMate aims to elevate the event planning experience, making it both intuitive and efficient for SoC Computing Club event planners. -### 4. Improved UI +### Improved UI The original AB3 program only displayed the list of persons which is not very useful for a contact and task management application. To make our app effective, we created additional panels for tasks, besides the original panel for persons. This allows the user to view all the tasks and persons at a glance. Event planners can also easily track the status of their tasks through the status symbol we use to mark tasks as completed or not completed. @@ -1576,7 +1574,7 @@ the application or any of the documents such as User Guide or Developer Guide. N times, especially for commands such as `listTag`. Hence, we wanted to give the user the ability to adjust the size of the output box according to their preference and the specific command they are using. For users who want to focus more on their tasks at hand, they can drag the divider between the contact list and task list so that their screen can show more of the task list. This is also useful for users who have a smaller screen size and would like to view more of the application at once. -### 5. Extensive Testing +### Extensive Testing Our team placed a strong emphasis on testing to ensure that the application is robust and reliable. @@ -1584,7 +1582,7 @@ We conducted extensive unit testing for new features, recommending at least a ** We managed to maintain **~83%** code coverage in CoordiMate, up from the original **75%** of AB3. In total, we have increased the **267** test cases in AB3 to **547** test cases in CoordiMate. -### 6. Software Engineering Practices +### Software Engineering Practices Our team went beyond the recommended guidelines in the course and adopted various rigorous software engineering practices in our development workflow to ensure that our codebase is well-written and maintainable. From 4e93bf42e8dacbf385acff99edf65792d8ac6688 Mon Sep 17 00:00:00 2001 From: m1oojv <97022614+m1oojv@users.noreply.github.com> Date: Tue, 14 Nov 2023 10:29:26 +0800 Subject: [PATCH 22/28] docs: Add planned enhancement --- docs/DeveloperGuide.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 17f57cdd30d..c910cbbebc3 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1532,6 +1532,14 @@ testers are expected to do more exploratory testing. - Currently, the error message for `addTask` states that the task title and note cannot start with a whitespace. However, when the user tries to add a task with a title and note that starts with a whitespace, the task is added successfully as the starting whitespace is automatically trimmed. - This enhancement will update the error message to state that leading and trailing whitespaces are automatically trimmed. +### Enable Partial Matching in Filtering Features + +- **Enhancement**: Refine our commands that help users filter the task list and person list to support partial matching. +- **Reason**: To allow users to easily locate their contact or task without necessity of inputting the complete information, thereby minimizing limitations and optimizing user experience, especially users with long contact and task list. +- **Example**: + - Currently, all of the `find…` commands exclusively display results that precisely match at least one `KEYWORD` in the fields. It overlooks items that partially match the criteria. + - This enhancement aims to broaden the scope by including partial matches in the search results, providing users a more easier approach to locate their required information, especially users with a reasonably long list of persons or tasks. Users do not need to give the exact keyword for the find command to match in order to view the person or task. + ---
From 80266c5f2750852ebe2b1ba360045590bca305e2 Mon Sep 17 00:00:00 2001 From: Lingxi Xing Date: Tue, 14 Nov 2023 10:39:04 +0800 Subject: [PATCH 23/28] docs: Add hyperlinks to glossary --- docs/DeveloperGuide.md | 52 +++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c910cbbebc3..c8db5afd5b6 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -43,9 +43,9 @@ This Developer Guide will help you get familiar with the architecture of CoordiM * CoordiMate is based on the [AddressBook-Level3](https://github.com/se-edu/addressbook-level3) project created by the [SE-EDU initiative](https://se-education.org). * CoordiMate makes use of the following open source libraries: - * [JavaFX](https://openjfx.io/) for the Graphical User Interface (GUI). + * [JavaFX](https://openjfx.io/) for the [Graphical User Interface (GUI)](#glossary). * [JUnit 5](https://junit.org/junit5/) for unit testing. - * [Jackson](https://github.com/FasterXML/jackson) for parsing JavaScript Object Notation (JSON) files. + * [Jackson](https://github.com/FasterXML/jackson) for parsing [JavaScript Object Notation (JSON)](#glossary) files. --- @@ -106,10 +106,10 @@ The *Sequence Diagram* below shows how the components interact with each other f Each of the four main components (also shown in the diagram above), -* defines its *API* in an `interface` with the same name as the Component. -* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point. +* defines its [API](#glossary) in an `interface` with the same name as the Component. +* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding [API](#glossary) `interface` mentioned in the previous point. -For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. +For example, the `Logic` component defines its [API](#glossary) in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below. @@ -121,11 +121,11 @@ The sections below give more details of each component. ### UI component -The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/ui/Ui.java) +The [API](#glossary) of this component is specified in [`Ui.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/ui/Ui.java) ![Structure of the UI Component](assets/svg/dg/UiClassDiagram.svg) -The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI. +The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible [GUI](#glossary). The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/resources/view/MainWindow.fxml) @@ -142,13 +142,13 @@ The `UI` component, ### Logic component -**API** : [`Logic.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/logic/Logic.java) +[API](#glossary) : [`Logic.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/logic/Logic.java) Here's a (partial) class diagram of the `Logic` component: -The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("deleteTask 1")` API call as an example. +The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("deleteTask 1")` [API](#glossary) call as an example. ![Interactions Inside the Logic Component for the `deleteTask 1` Command](assets/svg/dg/DeleteTaskSequenceDiagram.svg) @@ -185,7 +185,7 @@ How the parsing works: ### Model component -**API** : [`Model.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/model/Model.java) +[API](#glossary) : [`Model.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/model/Model.java) @@ -214,12 +214,12 @@ Without loss of generality, this model can be extended to Task enti ### Storage component -**API** : [`Storage.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/storage/Storage.java) +[API](#glossary) : [`Storage.java`](https://github.com/AY2324S1-CS2103T-T10-2/tp/tree/master/src/main/java/seedu/address/storage/Storage.java) The `Storage` component, -* can save both CoordiMate's data and user preference data in JSON format, and read them back into corresponding objects. +* can save both CoordiMate's data and user preference data in [JSON](#glossary) format, and read them back into corresponding objects. * inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed). * depends on some classes in the `Model` component (because the `Storage` component's job is to save/retrieve objects that belong to the `Model`) @@ -526,12 +526,12 @@ The sequence diagrams below show the details of the respective reference frames. * Has a need to manage various contacts and tasks for event-planning * Prefers desktop apps over other types -* Is comfortable with CLI apps +* Is comfortable with [CLI](#glossary) apps * Is able to type fast **Value proposition**: -CoordiMate helps event planners to easily keep track of contact details as well as the tasks to be done for various events, in a more efficient way compared to a typical mouse/GUI driven app. +CoordiMate helps event planners to easily keep track of contact details as well as the tasks to be done for various events, in a more efficient way compared to a typical mouse/[GUI](#glossary) driven app.
@@ -548,7 +548,7 @@ Priorities: | Priority | As a …​ | I want to …​ | So that I can …​ | | -------- | -------| ----------- | --------------- | | `* * *` | new user | see help instructions | refer to documentation to understand the existing features effectively | -| `* * *` | event planner | view both lists on the same screen | compare the task list and contact list while using the GUI | +| `* * *` | event planner | view both lists on the same screen | compare the task list and contact list while using the [GUI](#glossary) | | `* * *` | event planner | add a new person's details | remember details of new people I meet | | `* * *` | event planner | list each person's details | view all my contacts' details at a quick glance | | `* * *` | event planner | edit a person's details | update details of persons that are outdated with new information | @@ -588,7 +588,7 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the **Use case: UC01 - Add a person to the contact list** -**MSS** +**[Main Success Scenario (MSS)](#glossary)** 1. User requests to add a new person's particulars. 2. CoordiMate adds the person with the specified particulars. @@ -1209,15 +1209,15 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the ### Non-Functional Requirements -1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed. +1. Should work on any [mainstream OS](#glossary) as long as it has Java `11` or above installed. 2. Should be able to hold up to 1000 persons and tasks without a noticeable sluggishness in performance for typical usage. 3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. 4. Application should be designed for a single user. 5. Data should be stored locally in a human-readable and editable text file. 6. Data should persist across usage sessions. 7. Application should not require internet connection to run. -8. GUI should work well for standard screen resolutions of 1920x1080 and higher, and for screen scales of 100% and 125%. -9. GUI should be usable for resolutions of 1280x720 and higher, and for screen scales of 150%. +8. [GUI](#glossary) should work well for standard screen resolutions of 1920x1080 and higher, and for screen scales of 100% and 125%. +9. [GUI](#glossary) should be usable for resolutions of 1280x720 and higher, and for screen scales of 150%. 10. Application should be packaged and delivered to user in a single JAR file under 100MB. [Back to Table of Contents](#table-of-contents) @@ -1249,7 +1249,7 @@ To reset to the sample data, delete the `data` folder in the same directory as t {% include admonition.html type="note" title="Note" body=" These instructions only provide a starting point for testers to work on; -testers are expected to do more exploratory testing. +testers are expected to do more [exploratory testing](#glossary). " %} @@ -1262,7 +1262,7 @@ testers are expected to do more exploratory testing. 2. Open a terminal and navigate to the folder you downloaded the JAR file to. 3. Run the command `java -jar CoordiMate.jar`.
- Expected: The app launches with a GUI window and has a set of sample contacts and tasks.
+ Expected: The app launches with a [GUI](#glossary) window and has a set of sample contacts and tasks.
2. Saving window preferences @@ -1511,10 +1511,10 @@ testers are expected to do more exploratory testing. ### Error messages for invalid JSON file format -- **Enhancement**: Error messages will be provided to pinpoint the specific part of the JSON file that does not follow the required format. -- **Reason**: To improve the usability of the application, especially when users use the JSON file to import large amounts of data, users will be able to identify and correct the exact issue with their JSON data file without having to guess which part was incorrect. +- **Enhancement**: Error messages will be provided to pinpoint the specific part of the [JSON](#glossary) file that does not follow the required format. +- **Reason**: To improve the usability of the application, especially when users use the [JSON](#glossary) file to import large amounts of data, users will be able to identify and correct the exact issue with their [JSON](#glossary) data file without having to guess which part was incorrect. - **Example**: - - Currently, when a user imports an invalid JSON data file, CoordiMate will show an empty contact list and task list. This enhancement will show an error message to inform the user exactly which part of the JSON file is invalid, so that the user can correct the JSON file and import it again. + - Currently, when a user imports an invalid [JSON](#glossary) data file, CoordiMate will show an empty contact list and task list. This enhancement will show an error message to inform the user exactly which part of the [JSON](#glossary) file is invalid, so that the user can correct the [JSON](#glossary) file and import it again. ### Standardise all command behaviours @@ -1560,9 +1560,9 @@ In the second iteration of development, we honed in on features that were highly In order for CoordiMate to track tasks, we had to create new classes that encapsulated the various elements of a task, such as the title, note and status. This was done to ensure that tasks can also be modelled in an object-oriented manner, just like the existing `Person` class. -Furthermore, these classes needed to be integrated into the existing codebase. For example, we implemented the relevant `Predicate` classes to support the new `findTask`, `findTag` and `findAllTag` commands. We also created a `UniqueTaskList` class to store the list of tasks and to handle various operations, such as adding, deleting and modifying tasks in the list. This class was essential for the GUI to display information about the tasks in the task list. +Furthermore, these classes needed to be integrated into the existing codebase. For example, we implemented the relevant `Predicate` classes to support the new `findTask`, `findTag` and `findAllTag` commands. We also created a `UniqueTaskList` class to store the list of tasks and to handle various operations, such as adding, deleting and modifying tasks in the list. This class was essential for the [GUI](#glossary) to display information about the tasks in the task list. -Lastly, to ensure that the tasks are saved and loaded correctly, the Storage class had to be modified to support the new `Task` class. This required the team to design how these tasks were to be stored in the data file, and the creation of the necessary helper classes to parse the tasks into JSON strings and vice versa. +Lastly, to ensure that the tasks are saved and loaded correctly, the Storage class had to be modified to support the new `Task` class. This required the team to design how these tasks were to be stored in the data file, and the creation of the necessary helper classes to parse the tasks into [JSON](#glossary) strings and vice versa. ### User Centric From 848fea2f63f23560d56d2eae716f2ea9f22c2fbc Mon Sep 17 00:00:00 2001 From: Lingxi Xing Date: Tue, 14 Nov 2023 10:45:26 +0800 Subject: [PATCH 24/28] docs: Fix hyperlink in admonition --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c8db5afd5b6..df1baa735b5 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1249,7 +1249,7 @@ To reset to the sample data, delete the `data` folder in the same directory as t {% include admonition.html type="note" title="Note" body=" These instructions only provide a starting point for testers to work on; -testers are expected to do more [exploratory testing](#glossary). +testers are expected to do more
exploratory testing. " %} From 0d4ceda838518ed51f584f0a37296fed7dec656e Mon Sep 17 00:00:00 2001 From: Lingxi Xing Date: Tue, 14 Nov 2023 12:17:42 +0800 Subject: [PATCH 25/28] docs: Remove extensions for UC06 and UC13 --- docs/DeveloperGuide.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index df1baa735b5..2a7161f1c4a 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -694,14 +694,6 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the Use case ends. -**Extensions** - -* 1a. The contact list is empty. - - * 1a1. CoordiMate informs the user that there are no contacts to be deleted. - - Use case ends. - --- **Use case: UC07 - Add tag to a person in the contact list** @@ -843,14 +835,6 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the Use case ends. -**Extensions** - -* 1a. The task list is empty. - - * 1a1. CoordiMate informs the user that there are no tasks to be deleted. - - Use case ends. - --- **Use case: UC14 - Mark a task as done** From cfbf67e3cb638cae3e1e1d6f55a8ff5788dd98ba Mon Sep 17 00:00:00 2001 From: Lingxi Xing Date: Tue, 14 Nov 2023 12:23:11 +0800 Subject: [PATCH 26/28] docs: Update extensions --- docs/DeveloperGuide.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 2a7161f1c4a..373c8dc35fb 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -639,6 +639,12 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the Use case resumes from step 3. +* 3b. The given particulars are invalid. + + * 3b1. CoordiMate shows an error message. + + Use case resumes from step 3. + --- **Use case: UC04 - Find a person in the contact list** @@ -731,14 +737,14 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the **MSS** -1. User requests to add a task with a title and note. +1. User requests to add a task. 2. CoordiMate adds the task. Use case ends. **Extensions** -* 1a. No task title or note was provided. +* 1a. The provided details are invalid. * 1a1. CoordiMate shows an error message. From 4173efa454dc8b1c1aa81a8db7600607659ddfd0 Mon Sep 17 00:00:00 2001 From: Lingxi Xing Date: Tue, 14 Nov 2023 12:26:34 +0800 Subject: [PATCH 27/28] docs: Update extensions for UC10, UC18 --- docs/DeveloperGuide.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 373c8dc35fb..6cdb23977f3 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -782,7 +782,13 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the * 3a. The given index is invalid. - * 3a1. CoordiMate shows an error message and prompts the user to enter a valid index. + * 3a1. CoordiMate shows an error message. + + Use case resumes from step 3. + +* 3b. The given details are invalid. + + * 3b1. CoordiMate shows an error message. Use case resumes from step 3. @@ -927,8 +933,8 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the **MSS** -1. User requests to clear all done tasks in task list. -2. CoordiMate clears all tasks whose status is done. +1. User requests to delete all done tasks in task list. +2. CoordiMate deletes all tasks whose status is done. Use case ends. From 9631dcdb4444d508f78ca0d90b4ef80ceb70b12e Mon Sep 17 00:00:00 2001 From: Lingxi Xing Date: Tue, 14 Nov 2023 12:34:05 +0800 Subject: [PATCH 28/28] docs: Update UC07, 19, 23, 24 --- docs/DeveloperGuide.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 6cdb23977f3..4cde5a274f4 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -710,6 +710,7 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the 2. CoordiMate shows a list of persons. 3. User requests to add tag(s) to a specific person in the list by index. 4. CoordiMate edits the person to include the specified tag(s). +5. CoordiMate informs the user of the added tag(s). Use case ends. @@ -729,7 +730,14 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the * 3b1. CoordiMate shows an error message and prompts the user to enter valid tag(s). - Use case resumes from step 3. + Use case resumes from step 3. + +* 3c. Some given tag(s) already exist in the person. + + * 3c1. CoordiMate only adds the tag(s) that do not exist. + * 3c2. CoordiMate informs the user of the addedtag(s), as well as the tag(s) that already exist. + + Use case resumes from step 3. --- @@ -956,6 +964,7 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the 2. CoordiMate shows a list of tasks. 3. User requests to add tag(s) to a specific task in the list by index. 4. CoordiMate edits the task to include the specified tag(s). +5. CoordiMate informs the user of the added tag(s). Use case ends. @@ -977,6 +986,13 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the Use case resumes from step 3. +* 3c. Some given tag(s) already exist in the person. + + * 3c1. CoordiMate only adds the tag(s) that do not exist. + * 3c2. CoordiMate informs the user of the addedtag(s), as well as the tag(s) that already exist. + + Use case resumes from step 3. + --- **Use case: UC20 - List all tags** @@ -1066,6 +1082,10 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the **Extensions** +* 2a. The task list is empty. + + Use case ends. + * 3a. Some given tag(s) do not exist in the person. * 3a1. CoordiMate only deletes the tag(s) that exist. @@ -1095,6 +1115,10 @@ For all use cases below, the **System** is `CoordiMate` and the **Actor** is the **Extensions** +* 2a. The task list is empty. + + Use case ends. + * 3a. Some given tag(s) do not exist in the task. * 3a1. CoordiMate only deletes the tag(s) that exist.