From 5dde955f7cabc213e146bc787a0a151f57430a93 Mon Sep 17 00:00:00 2001 From: DanielLai Date: Tue, 12 Nov 2024 10:58:32 +0800 Subject: [PATCH] Update DG --- docs/DeveloperGuide.md | 90 +++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 826daf109ae..a0bea6cf157 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -74,7 +74,7 @@ The sections below give more details about each component. ### UI component -As mentioned above, the **API** of this component is specified in [`Ui.java`](https://github.com/AY2425S1-CS2103T-W14-3/tp/blob/master/src/main/java/hallpointer/address/ui/Ui.java), and a partial but representative class diagram thereof is shown below. +The **API** of this component is specified in [`Ui.java`](https://github.com/AY2425S1-CS2103T-W14-3/tp/blob/master/src/main/java/hallpointer/address/ui/Ui.java), and a partial but representative class diagram thereof is shown below. @@ -87,13 +87,13 @@ The `UI` component has the following responsibilities: - Passing user commands to the `Logic` component using its reference thereof, so that the commands can be parsed and executed. - Keeping the display up to date with `Model` data, by listening for changes in `Model` data to update the display when appropriate. -It also depends on some classes in the `Model` component like the `Member` or `Session` objects residing in the `Model`, the details of which inform what sort of visual layout is appropriate. +It also depends on some classes in the `Model` component like the `Member` or `Session` classes, the details of which inform what sort of visual layout is appropriate. ### Logic component **API** : [`Logic.java`](https://github.com/AY2425S1-CS2103T-W14-3/tp/blob/master/src/main/java/hallpointer/address/logic/Logic.java) -Here's a partial and representative class diagram of the `Logic` component: +Here's a representative class diagram of the `Logic` component: @@ -121,14 +121,14 @@ Here are the other classes in `Logic` (omitted from the class diagram above) tha How the parsing works: -- When called upon to parse a user command, the `HallPointerParser` class creates an `XYZCommandParser` (where `XYZCommandParser` is a placeholder for the specific command name that matches the API call e.g. `AddMemberCommandParser`). This newly created `Parser` then uses the other classes shown above to parse the user command, creating a `XYZCommand` object (e.g. `AddMemberCommand`) which the `Parser` returns back as a `Command` object. +- When called upon to parse a user command, the `HallPointerParser` class creates an `XYZCommandParser` (where `XYZCommandParser` is a placeholder for the specific `Command` parser class that matches the API call e.g. `AddMemberCommandParser`). This newly created `Parser` then parses the user command, creating and returning a `XYZCommand` object (e.g. `AddMemberCommand`) as a `Command` object. - All `XYZCommandParser` classes (e.g. `AddMemberCommandParser`, `DeleteSessionCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible, making adding more commands and further testing easier. ### Model component **API** : [`Model.java`](https://github.com/AY2425S1-CS2103T-W14-3/tp/blob/master/src/main/java/hallpointer/address/model/Model.java) -Here is a partial and representative class diagram of the `Model` component: +Here's a representative class diagram of the `Model` component: @@ -136,7 +136,7 @@ The `Model` component has the following responsibilites: - Storing the HallPointer data (i.e. any `Member` and `Session` objects) in memory for easy access. - Storing the currently 'selected' `Member` objects (e.g. the results of a search query) in a separate _filtered_ list, one which is exposed to outsiders as an unmodifiable `ObservableList` that can be 'observed'. This allows the UI to observe the list and automatically update when the data in the list changes. -- Storing a `UserPref` object that represents the user’s preferences, and exposing to the outside as a `ReadOnlyUserPref` object. +- Storing a `UserPref` object that represents the user’s preferences, and exposing it to the outside as a `ReadOnlyUserPref` object. It does not depend on any of the other three components, as the `Model` represents data entities of the application and domain, and thus should make sense on its own without depending on other components. @@ -144,7 +144,7 @@ It does not depend on any of the other three components, as the `Model` represen **API** : [`Storage.java`](https://github.com/AY2425S1-CS2103T-W14-3/tp/blob/master/src/main/java/hallpointer/address/storage/Storage.java) -Here is a partial and representative class diagram of the `Storage` component: +Here's a representative class diagram of the `Storage` component: @@ -178,7 +178,7 @@ It depends on some classes in the `Model` component, as its job is to save and r - is a CCA leader in a NUS Hall - is responsible for managing member participation, tracking attendance, and allocating points - prefers streamlined solutions to minimize manual administrative work -- comfortable with both desktop and command-line interfaces (CLI) +- comfortable with both desktop applications and command-line interfaces (CLI) - often managing multiple responsibilities, including academic workload and hall duties **Value proposition**: Hall Pointer empowers CCA leaders in NUS Halls to efficiently manage member tracking by streamlining participation recording, points allocation, and member information (such as room addresses). It simplifies manual data management, allowing leaders to focus on organizing activities rather than administrative tasks. Ideal for small, close-knit CCAs, it ensures quick access to updated information, enabling accurate and easy sharing of participation records with hall management or other stakeholders. @@ -187,29 +187,29 @@ It depends on some classes in the `Model` component, as its job is to save and r Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` -| Priority | As a …​ | I want to …​ | So that I can …​ | Remarks/Notes | -| -------- | --------------- | ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------- | -| `* * *` | First-time user | Explore the application using sample data | I can understand its features without manually entering data | | -| `* * *` | First-time user | See a guide on how to use the application | I can better understand its functionalities | | -| `* * *` | First-time user | Save the changes I made | I won’t have to redo my work after reopening the application | | -| `* * *` | First-time user | See sample data with a predefined structure | I have a format to follow when inputting my own data | | -| `* * *` | First-time user | Delete all data in the application | I can start over when I make a mistake and remove sample data | | -| `* * *` | User | Add new Hall members to the application | I can track points for new Hall members | | -| `* * *` | User | Delete ex-Hall members from the application | I can stop tracking points for ex-Hall members | | -| `* * *` | User | Customize point allocation criteria between sessions | I can reward members based on different participation weightage criteria | E.g. different point weights for different activities | -| `* * *` | Frequent user | Adjust attendance records if there are any errors | I can fix mistakes and maintain accurate records | | -| `* * *` | User | Update member details (e.g. name, contact) | I can keep the member database up to date and fix any mistakes | | -| `* *` | Frequent user | Automatically track attendance at each session | I don't need to manually mark attendance for each session | Perhaps by QR code generation and integration | -| `* *` | Frequent user | See a breakdown of points for each member quickly | I can monitor attendance records without having to navigate through multiple screens or commands | | -| `* *` | Frequent user | Export attendance data | I can share participation reports with other stakeholders if needed | | -| `* *` | User | Bulk update attendance or points for multiple members | I can efficiently manage large groups | | -| `* *` | User | Set up custom attendance categories (e.g. Excused, Late) | I can categorize different types of attendance | | -| `*` | User | View analytics or visual reports of attendance and participation | I can see trends and member engagement at a glance | Through charts or graphs to visualize data | -| `*` | User | Sort members by name | I can locate a member easily | | -| `*` | Frequent user | Automatically save changes as changes are made | I don’t lose progress if I forget to click save | Auto-save feature | -| `*` | Expert user | Perform all actions using the CLI | I can interact with the application more efficiently than with just a GUI | Command Line Interface (CLI) | -| `*` | User | Add notes for each member | I can track special situations or reasons for absences | Member notes feature | -| `*` | First-time user | Import data from an existing Google Sheets document or CSV file | I can quickly upload my data without manual entry | Data import feature | +| Priority | As a …​ | I want to …​ | So that I can …​ | Remarks/Notes | +| -------- | --------------- | ---------------------------------------------------------------- |---------------------------------------------------------------------------|-------------------------------------------------------| +| `* * *` | First-time user | Explore the application using sample data | I can understand its features without manually entering data | | +| `* * *` | First-time user | See a guide on how to use the application | I can better understand its functionalities | | +| `* * *` | First-time user | Save the changes I made | I won’t have to redo my work after reopening the application | | +| `* * *` | First-time user | See sample data with a predefined structure | I have a format to follow when inputting my own data | | +| `* * *` | First-time user | Delete all data in the application | I can start over when I make a mistake and remove sample data | | +| `* * *` | User | Add new Hall members to the application | I can track points for new Hall members | | +| `* * *` | User | Delete ex-Hall members from the application | I can stop tracking points for ex-Hall members | | +| `* * *` | User | Customize point allocation criteria between sessions | I can reward members based on different participation weightage criteria | E.g. different point weights for different activities | +| `* * *` | Frequent user | Adjust attendance records if there are any errors | I can fix mistakes and maintain accurate records | | +| `* * *` | User | Update member details (e.g. name, contact) | I can keep the member database up to date and fix any mistakes | | +| `* *` | Frequent user | Automatically track attendance at each session | I don't need to manually mark attendance for each session | Can be done by QR code generation and integration | +| `* *` | Frequent user | See a breakdown of points for each member quickly | I can monitor attendance records without excessive hassle | | +| `* *` | Frequent user | Export attendance data | I can share participation reports with other stakeholders if needed | | +| `* *` | User | Bulk update attendance or points for multiple members | I can efficiently manage large groups | | +| `* *` | User | Set up custom attendance categories (e.g. Excused, Late) | I can categorize different types of attendance | | +| `*` | User | View analytics or visual reports of attendance and participation | I can see trends and member engagement at a glance | Through charts or graphs to visualize data | +| `*` | User | Sort members by name | I can locate a member easily | | +| `*` | Frequent user | Automatically save changes as changes are made | I don’t lose progress if I forget to click save | | +| `*` | Expert user | Perform all actions using the CLI | I can interact with the application more efficiently than with just a GUI | | +| `*` | User | Add notes for each member | I can track special situations or reasons for absences | | +| `*` | First-time user | Import data from an existing Google Sheets document or CSV file | I can quickly upload my previous data without manual entry | | ### Use cases @@ -237,7 +237,6 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli **Extensions**: - **2a. Hall Pointer detects an error in the entered data**. - - 2a1. Hall Pointer displays an error message with relevant details. - 2a2. CCA Leader re-enters corrected data. - Steps 2a1-2a2 are repeated until the input is valid. @@ -273,7 +272,6 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli **Extensions**: - **2a. Hall Pointer detects an error in the entered data**. - - 2a1. Hall Pointer displays an error message with relevant details. - 2a2. CCA Leader re-enters corrected data. - Steps 2a1-2a2 are repeated until all data is correct. @@ -389,7 +387,6 @@ None. **Extensions**: - **2a. Session does not exist for specified members**. - - 2a1. Hall Pointer displays an error message: - `Error: Session [session_name] does not exist in member [member_name].` - Use case ends. @@ -472,11 +469,11 @@ testers are expected to do more _exploratory_ testing. 1. Download the `.jar` file and copy it into an empty folder. 2. Open a terminal window and navigate to the directory where the `.jar` file is located. 3. Execute `java -jar hallpointer.jar`.
- **Expected:** Shows the GUI with a set of sample data. The window size may not be optimal. + **Expected:** Shows the GUI with a set of sample data. Do resize the window if it is not suited for your needs. 2. Saving Window Preferences - 1. Resize the window to an optimum size. Move the window to a different location. Close the window. + 1. Resize the window to your desired size. Move the window to a different location. Close the window. 2. Re-launch the application by double-clicking the `.jar` file.
**Expected:** The most recent window size and location is retained. @@ -484,15 +481,15 @@ testers are expected to do more _exploratory_ testing. 1. Adding a member - 1. Test case: `add_member n/John Doe r/4-3-301 t/johndoe123 tag/logistics`
- **Expected:** Adds a contact named "John Doe" with specified room number and tags. Details of the added member shown in the status message. + 1. Test case: `add_member n/May Doe r/4-3-301 t/maydoe123 tag/logistics`
+ **Expected:** Adds a contact named "May Doe" with specified room number and tags. Details of the added member shown in the status message. 2. Test case: `add_member n/John Doe`
**Expected:** Displays an error message. 2. Deleting a member - 1. Prerequisites: List all members using the `list_members` command. Multiple members in the list. + 1. Prerequisites: There is at least one displayed member in the list. 2. Test case: `delete_member 1`
**Expected:** First contact is deleted from the list. Details of the deleted contact are shown in the status message. @@ -500,27 +497,30 @@ testers are expected to do more _exploratory_ testing. 3. Test case: `delete_member 0`
**Expected:** No member is deleted. Error details shown in the status message. - 4. Other incorrect delete commands to try: `delete_member`, `delete_member z`, `...` (where `z` is an integer larger than the list size).
+ 4. Other incorrect delete commands to try: `delete_member`, `delete_member z`, `delete_member #`... (where `z` is an integer larger than the list size).
**Expected:** Similar to previous. 3. Updating a member - 1. Test case: `update_member 1 t/johndoe123_updated n/John Doe`
+ 1. Prerequisites: There is at least one displayed member in the list. + + 2. Test case: `update_member 1 t/johndoe123_updated n/John Doe`
**Expected:** Updates the telegram handle and name for the member at index 1. 2. Test case: `update_member 2 tag/`
- **Expected:** Clears all tags for the member at index 2. + **Expected:** Clears all tags for the member at index 2, other details remain unchanged. ### Managing Sessions 1. Adding a session - 1. Test case: `add_session s/Rehearsal d/24 Oct 2024 p/2 m/1 m/3`
+ 1. Prerequisites: There is at least one displayed member in the list. + 2. Test case: `add_session s/Rehearsal d/24 Oct 2024 p/2 m/1 m/3`
**Expected:** Adds a session named "Rehearsal" on 24 Oct 2024 worth 2 points, associated with members at indexes 1 and 3 in the displayed list. 2. Deleting a session - 1. Prerequisites: Ensure a session with the specified name exists for members. + 1. Prerequisites: There is at least one displayed member in the list. Ensure a session with the specified name exists for members. 2. Test case: `delete_session s/Rehearsal m/1 m/3`
**Expected:** Deletes the session "Rehearsal" for members at indexes 1 and 3 in the displayed list. @@ -560,7 +560,7 @@ testers are expected to do more _exploratory_ testing. Team Size: 5 1. **Support Non-Numeric Room Identifiers** - Currently, room identifiers must follow the format `block-floor-room number` (e.g. `10-3-100`), and only numeric values are supported for each component. We plan to enhance this feature by allowing non-numeric values for the `block`,`floor` and `room number`. + Currently, room identifiers must follow the format `block-floor-room number` (e.g. `10-3-100`), and only numeric values are supported for each component. We plan to enhance this feature by allowing non-numeric values for `block`,`floor` and `room number`. **Example Requirement**: