diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9044c39cc3d..8e73e6a61aa 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -121,7 +121,7 @@ How the parsing works: **API** : [`Model.java`](https://github.com/AY2324S2-CS2103-F08-3/tp/blob/master/src/main/java/staffconnect/model/Model.java) - + The `Model` component, @@ -132,7 +132,7 @@ The `Model` component, * stores the meeting book data i.e., all `Meeting` objects (which are contained in a `UniqueMeetingList` object) in each `Person` object.
:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `StaffBook`, which `Person` references. This allows `StaffBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.
- +
@@ -140,7 +140,7 @@ The `Model` component, **API** : [`Storage.java`](https://github.com/AY2324S2-CS2103-F08-3/tp/blob/master/src/main/java/staffconnect/storage/Storage.java) - + The `Storage` component, * can save both staff book data and user preference data in JSON format, and read them back into corresponding objects. @@ -294,7 +294,7 @@ Given below is an example usage scenario and how the sort mechanism behaves at e The sequence diagram for executing a **"sort n/"** is shown below: - + The following activity diagram summarizes what happens when a user executes a new sort command: diff --git a/docs/UserGuide.md b/docs/UserGuide.md index c05cca6cf51..625c8aa72ea 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -5,10 +5,12 @@ title: User Guide StaffConnect (SC) is a **desktop app for managing Professors' and Tutors' contact information and associated meetings, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, SC can get your contact management tasks done faster than traditional GUI apps. +
+ * Table of Contents {:toc} --------------------------------------------------------------------------------------------------------------------- +
## Quick start @@ -39,11 +41,15 @@ StaffConnect (SC) is a **desktop app for managing Professors' and Tutors' contac -------------------------------------------------------------------------------------------------------------------- +
+ ## Navigability ### Overall UI layout
![UI Annotations Layout](images/UiAnnotationsLayout.png) +
+ #### [UI] Persons Info
![UI Annotations Attribute](images/UiAnnotationsAttributes.png) *Note that the availability will not be displayed in sequential order. @@ -51,14 +57,20 @@ StaffConnect (SC) is a **desktop app for managing Professors' and Tutors' contac * The values of [`Faculty`](#valid-faculty-values) will be stored to their full names. * The values of `day` part of `Availability` will be stored as their full form such as `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, `SUNDAY`. +
+ #### [UI] Meeting List
![UI Annotations MeetingList](images/UiAnnotationsMeetingList.png) +
+ #### [UI] Scrollbars and Menu
![UI Annotations ScrollBars](images/UiAnnotationsScrollbarsAndMenu.png) *Note that Persons List Scrollbar will open appear when the number of Persons in the list exceed the amount to be displayed by the view. *Note that the `Exit` button is in the dropdown of the `File` button. +
+ ### Mouse and Keyboard controls Before we get started StaffConnect offers a unique suite of UI controls for users to customise their own unique experience! @@ -89,6 +101,7 @@ Before we get started StaffConnect offers a unique suite of UI controls for user 5. Command Line Interface:
The input can only be scrolled by __[Holding Left Click + Drag Mouse]__ to the edge in the direction to scroll. This is to allow making adjustments on very long commands. +


### Alternative UI arrangements @@ -105,6 +118,7 @@ Before we get started StaffConnect offers a unique suite of UI controls for user -------------------------------------------------------------------------------------------------------------------- +
## Features @@ -138,6 +152,7 @@ Shows a message explaining how to access the help page. Format: `help` +
### Adding a person: `add` @@ -156,10 +171,14 @@ A person can have any number of tags and availabilities (including 0) Examples: * `add n/John Doe p/98765432 e/johnd@example.com f/Computing v/John street, block 123, #01-01 m/CS2103` * `add n/Chihiro Ogino m/GEC1024 e/spirited@example.com f/FASS v/The Spirit Realm p/20122001 a/tues 21:00 22:00 a/wednesday 00:00 23:59` + +
* `add n/Betsy Crowe t/friend m/CS2103T e/betsycrowe@example.com f/Computing v/Newgate Prison p/1234567 t/criminal a/monday 11:00 12:00 a/wednesday 14:00 16:00` ![Effects of an add command](images/AfterAddCommand.png) +
+ ### Listing all persons : `list` Shows a list of all persons in the staff book. @@ -192,6 +211,7 @@ Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [m/MODULE] [f/FACULTY] [v/VENUE * `PHONE_NUMBER`, `EMAIL`, `MODULE`, `FACULTY`, `VENUE` do not need to be unique and can be duplicated among persons in staff book. * `TAG` and `AVAILABILITY` have to be unique for a person but can be duplicated among persons in staff book. +
Examples: * `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively. * `edit 3 m/GEA1000` Edits the module of the 3rd person to be `GEA1000`. @@ -202,6 +222,8 @@ Examples:
**After editing the second person:**
![After editing the second person](images/AfterEditCommand.png) +
+ ### Locating persons by name: `find` Finds persons whose names contain any of the given keywords. @@ -221,6 +243,8 @@ Examples: * `find alex david` returns `Alex Yeoh`, `David Li`
![result for 'find alex david'](images/findAlexDavidResult.png) +
+ ### Filtering persons: `filter` Filters persons whose module, faculty, tags or availabilities match the given filtering criteria. @@ -252,6 +276,7 @@ Examples:
![Roy Balakrishnan not having other tags](images/BeforeFilterCommand2.png)
`filter f/soc t/professor t/friend t/youtuber a/mon 12:00 13:00 a/thurs 12:00 13:00` returns `Alex Yeoh`, `Charlotte Oliveiro` and `Irfan Ibrahim`.
![result of the command](images/AfterFilterCommand4.png) +
### Sorting persons: `sort` @@ -270,9 +295,12 @@ Format: `sort [n/] [p/] [m/] [f/] [v/] [s/] [meet/]` Examples: * `sort m/ p/` returns person by ascending module codes followed by ascending phone numbers `CS2000 80000000`, `CS2000 90000000`, `CS3000 80000000`followed by `CS3000 90000000` * `sort n/` returns person by ascending names `Alex`, `Bernice` followed by `Charlotte` +
* `sort p/` returns person by ascending phone numbers `87438807`, `91031282` followed by `92492021`
![result for 'sort p/'](images/sortByPhoneNumberResult.png) +
+ ### Adding a meeting to a person: `meeting-add` Add a meeting to a person based on specified description and date. @@ -317,6 +345,8 @@ Examples:
**Result for add meeting:**
`meeting-add 1 d/Meet for finals preparation s/12/04/2024 18:00`
![result for 'meeting-add 1 d/Meet for finals preparation s/12/04/2024 18:00'](images/addMeetingResult.png) +
+ ### Deleting a meeting from a person: `meeting-delete`
:warning: **Caution:** @@ -344,6 +374,7 @@ Examples:
**Results for delete meeting:**
The following command was applied: `find Bernice Yu` followed by `meeting-delete 1 i/2`.
__(Disclaimer: The content shown in the examples may not match what you have added to your own meetings within the staff book).__ +


**After `find Bernice Yu`:**
![result for before `find Bernice Yu` followed by `meeting-delete 1 i/2`](images/meetingDeleteResultBefore.png)

**After `meeting-delete 1 i/2`:**
@@ -351,6 +382,8 @@ The following command was applied: `find Bernice Yu` followed by `meeting-delet

**After `meeting-delete 1 i/1`:**
![result for after `find Bernice Yu` followed by `meeting-delete 1 i/2`](images/meetingDeleteResultAfter2.png) +
+ ### Deleting a person : `delete`
:warning: **Caution:** @@ -369,15 +402,21 @@ Examples: * `list` followed by `delete 2` deletes the 2nd person in the list. * `sort p/` followed by `delete 1` deletes the 1st person in the list in the results of the `sort` command, which should be the person with the smallest phone number. * `find Bernice Yu` followed by `delete 1` deletes the 1st person in the results of the `find` command. +

**Before deletion:**
![All persons listed](images/BeforeDeleteCommand1.png) +

**First find Bernice:**
![Result of finding Bernice](images/BeforeDeleteCommand2.png) +

**Then delete Bernice:**
![Result of deletion](images/AfterDeleteCommand1.png) +

**List all persons and Bernice is deleted:**
![Result of deletion](images/AfterDeleteCommand2.png) +
+ ### Setting a person as favourite: `fav` Sets the specified person from the list as favourite. @@ -395,10 +434,14 @@ Format: `fav INDEX` Examples: * `list` followed by `fav 2` sets the 2nd person as favourite in the staff book. * `sort p/` followed by `fav 1` sets the 1st person as favourite in the staff book in the results of the `sort` command, which should be the person with the smallest phone number. + +
* `find Betsy` followed by `fav 1` sets the 1st person as favourite in the results of the `find` command. ![Result of fav command](images/AfterFavCommand.png) +
+ ### Removing a person as favourite: `unfav` Removes the specified person from the staff book as favourite. @@ -418,6 +461,8 @@ Examples: * `sort p/` followed by `fav 1` removes the 1st person as favourite in the staff book in the results of the `sort` command, which should be the person with the smallest phone number. * `find Betsy` followed by `unfav 1` removes the 1st person as favourite in the results of the `find` command. +
+ ### Refreshing and clearing all outdated meetings: `refresh`
:warning: **Caution:** @@ -437,15 +482,18 @@ Examples: * If there is a meeting `Avengers Assemble` that happened in `31/08/1939 12:00`, when the user types in `refresh`, it will be deleted. * If there is a meeting `French Revolution` that happened in `14/07/1789 12:00`, when the user types in `refresh`, it will be deleted. * If there is a meeting `Future Meeting` that will happen in `31/12/2999 12:00`, when the user types in `refresh`, it will not be deleted. -
**Before:**
- ![Before refreshing](images/BeforeRefreshCommand.png) -
**After:**
- ![After refreshing](images/AfterRefreshCommand.png) +
+
**Before:**
+![Before refreshing](images/BeforeRefreshCommand.png) +
**After:**
+![After refreshing](images/AfterRefreshCommand.png) **Known limitations:** Refresh is only used when the user decides to remove clutter in the staff book, and wants to remove outdated meetings. This process is not done automatically as sometimes the user would like to retain old meetings for bookkeeping purposes. +
+ ### Selecting the person to display: `select` Selects the person identified by their current displayed index number to display their attributes and meeting list. @@ -461,6 +509,8 @@ Examples: * `filter t/tutor` followed by `select 1`
Selects the 1st person in the results of the `filter` command. * `sort p/` followed by `select 1`
Selects the 1st person in the results of the `sort` command, which should be the person with the smallest phone number. +
+ ### Clearing all entries : `clear`
:warning: **Caution:** @@ -473,6 +523,8 @@ Format: `clear` ![Effects of clear command](images/AfterClearCommand.png) +
+ ### Exiting the program : `exit` Exits the program. @@ -496,6 +548,8 @@ The application will not prompt the user if the format of the data file is incor
+
+ #### Valid Data Values for `Person` in JSON file All attributes' restrictions except **Favourite** can be found in the [Attribute Summary](#attribute-summary) table. @@ -513,6 +567,8 @@ Availabilitity | `availabilities` | `TUESDAY 12:00 13:00`, `WEDNESDAY 12:00 13:0 Meeting | `meetings` | Refer to the [Valid Data Values in meetings](#valid-data-values-for-meetings-for-each-person-in-json-file) table. Favourite | `favourite` | `Favourite` or `Not favourite` +
+ #### Valid Data Values for `Meetings` (for each `Person`) in JSON file Attribute | Meeting Data Fields | Valid Values @@ -534,6 +590,8 @@ Meeting Start Time | `date` | `30/1/2024 12:12`, `2002-11-15 19:00`, `1-12-2022
+
+ #### Sample Data File Content ```json @@ -572,6 +630,8 @@ Meeting Start Time | `date` | `30/1/2024 12:12`, `2002-11-15 19:00`, `1-12-2022 -------------------------------------------------------------------------------------------------------------------- +
+ ## FAQ **Q**: How do I transfer my data to another Computer?
@@ -583,6 +643,8 @@ Meeting Start Time | `date` | `30/1/2024 12:12`, `2002-11-15 19:00`, `1-12-2022 -------------------------------------------------------------------------------------------------------------------- +
+ ## Known issues 1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again. @@ -595,6 +657,8 @@ Meeting Start Time | `date` | `30/1/2024 12:12`, `2002-11-15 19:00`, `1-12-2022 -------------------------------------------------------------------------------------------------------------------- +
+ ## Attribute summary Attribute | Prefix | Restrictions | Examples @@ -612,6 +676,8 @@ Meeting Start Time | s/ | Valid date and time format.
1. Valid date formats: [^1]: These are mandatory attributes when adding a person into the staff book, as these are important information for students to know when/where to consult their professors/TAs. +
+ ### Valid `Faculty` Values Faculty | Other names @@ -635,6 +701,8 @@ Yale-NUS College | Yale-NUS -------------------------------------------------------------------------------------------------------------------- +
+ ## Command summary Action | Format, Examples diff --git a/docs/_sass/minima/_base.scss b/docs/_sass/minima/_base.scss index 23c118ec27d..ed4ceda5e0c 100644 --- a/docs/_sass/minima/_base.scss +++ b/docs/_sass/minima/_base.scss @@ -68,6 +68,12 @@ img { vertical-align: middle; } +img:not([class]) { + margin-left: auto; + margin-right: auto; + display: block; +} + /** diff --git a/docs/diagrams/FavActivityDiagram.puml b/docs/diagrams/FavActivityDiagram.puml index 6639206ecc6..6038a62ba30 100644 --- a/docs/diagrams/FavActivityDiagram.puml +++ b/docs/diagrams/FavActivityDiagram.puml @@ -2,6 +2,8 @@ skin rose skinparam ActivityFontSize 15 skinparam ArrowFontSize 12 +skinparam DefaultTextAlignment center + start :User executes fav command; @@ -10,14 +12,14 @@ start if () then ([index is valid]) if () then ([Person is favourite]) - :Create new Person with same values but is a favourite; - :Replace the original Person with the new one; + :Create new Person with same\n values but is a favourite; + :Replace the original Person\n with the new one; :Refresh the list of Persons; else ([else]) - :Show error message to user that person is already a favourite; + :Show error message to user\n that person is already a favourite; endif else ([else]) - :Show error message to user that index is invalid; + :Show error message to user\n that index is invalid; endif stop @enduml diff --git a/docs/diagrams/UnfavActivityDiagram.puml b/docs/diagrams/UnfavActivityDiagram.puml index 5ea7049ad97..8ccfd7c3f07 100644 --- a/docs/diagrams/UnfavActivityDiagram.puml +++ b/docs/diagrams/UnfavActivityDiagram.puml @@ -2,6 +2,8 @@ skin rose skinparam ActivityFontSize 15 skinparam ArrowFontSize 12 +skinparam DefaultTextAlignment center + start :User executes unfav command; @@ -10,14 +12,14 @@ start if () then ([index is valid]) if () then ([Person is favourite]) - :Create new Person with same values but is not a favourite; - :Replace the original Person with the new one; + :Create new Person with same\n values but is not a favourite; + :Replace the original Person\n with the new one; :Refresh the list of Persons; else ([else]) - :Show error message to user that person is already not a favourite; + :Show error message to user\n that person is already not a favourite; endif else ([else]) - :Show error message to user that index is invalid; + :Show error message to user\n that index is invalid; endif stop @enduml diff --git a/docs/images/FavActivityDiagram.png b/docs/images/FavActivityDiagram.png index 0e31b079903..b55487b8fe4 100644 Binary files a/docs/images/FavActivityDiagram.png and b/docs/images/FavActivityDiagram.png differ diff --git a/docs/images/UnfavActivityDiagram.png b/docs/images/UnfavActivityDiagram.png index cf546759ff8..50529106e46 100644 Binary files a/docs/images/UnfavActivityDiagram.png and b/docs/images/UnfavActivityDiagram.png differ