diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4275d1e0f2e..378cb350268 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -97,7 +97,7 @@ in [`Ui.java`](https://github.com/AY2324S1-CS2103T-T14-2/tp/blob/master/src/main The UI consists of a `MainWindow` that is made up of parts -e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `RecordPanel`, `StatusBarFooter` etc. All these, including +e.g.`CommandBox`, `ResultDisplay`, `PatientListPanel`, `RecordPanel`, `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. @@ -113,7 +113,7 @@ The `UI` component, * executes user commands using the `Logic` component. * listens for changes to `Model` data so that the UI can be updated with the modified data. * keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands. -* depends on some classes in the `Model` component, as it displays `Person` or `Record` object residing in the `Model`. +* depends on some classes in the `Model` component, as it displays `Patient` or `Record` object residing in the `Model`. ### Logic component @@ -165,9 +165,9 @@ How the parsing works: The `Model` component, -* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object). -* stores the currently 'selected' `Person` objects (e.g., results of a search query) as a separate _filtered_ list which - is exposed to outsiders as an unmodifiable `ObservableList` that can be 'observed' e.g. the UI can be bound to +* stores the address book data i.e., all `Patient` objects (which are contained in a `UniquePatientList` object). +* stores the currently 'selected' `Patient` objects (e.g., results of a search query) as a separate _filtered_ list which + is exposed to outsiders as an unmodifiable `ObservableList` that can be 'observed' e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change. * stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects. @@ -177,8 +177,8 @@ The `Model` component, **Note:** 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.
+which `Patient` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of +each `Patient` needing their own `Tag` objects.
@@ -406,14 +406,65 @@ to the user. The list of valid departments can be found in the appendix of the U #### Implementation of `assign` The assign department operation is facilitated by the `AssignCommand` and `AssignCommandParser` classes, similar -to `ViewCommand` as mentioned above. `AssignCommand` extends `Command` and overrides `Command#execute` to perform +to other commands mentioned above. `AssignCommand` extends `Command` and overrides `Command#execute` to perform its intended behavior, invoked by the `LogicManager` class. `AssignCommandParser` is responsible for parsing the -string of arguments containing an IC_NUMBER and department inputted by the user, to create an `AssignCommand` object. +string of arguments containing an `IC_NUMBER` and `Department` inputted by the user, to create an `AssignCommand` object. -The following sequence diagram summarizes what happens when `AssignCommand#execute` is invoked. +The following sequence diagrams summarize what happens when `AssignCommand#execute` is invoked. + + +### Sort feature +The sort operation is facilitated by the `SortCommand` and `SortCommandParser` classes, similar +to other commands mentioned above. `SortCommand` extends `Command` and overrides `Command#execute` to perform +its intended behavior, invoked by the `LogicManager` class. `SortCommandParser` is responsible for parsing the +argument string containing a property inputted by the user, to create a `SortCommand` object. + +Currently, the sort operation sorts the entire patient list, even if the command is executed when the displayed list +is filtered (e.g. using the `find` command). This choice will be further elaborated on in the "Design +considerations" section below. + +#### Design considerations: + +**Aspect: Behavior of sort operation:** + +* **Alternative 1 (current choice):** Sort the entire patient list. + * Pros: Easy and quick to implement as it only involves calling Java's `sort` method on the underlying + `UniquePatientList` stored in `AddressBook`. + * Cons: Behavior might be unintuitive as when the user runs this command, they might expect this command to only + affect the currently displayed list, which might be filtered. + +* **Alternative 2:** Only sort the currently displayed, or filtered, list. + * Pros: Allows the user to only alter the visible list, and keep the underlying patient list untouched. + Behavior is possibly more intuitive. + * Cons: Implementation is more complicated as the `FilteredList` that stores the currently displayed list and is + referenced by the UI to display its contents cannot be modified. + +#### Sort order +`SortOrder` is an enumeration within `SortCommand` representing the properties by which the user can sort the list. +As of now, the only `SortOrder`s available are the following: +1. Name (lexicographically ascending, case-insensitive) +2. IC Number (lexicographically ascending, case-insensitive) +3. Department (by ordinal of constant in `Department` enumeration) +4. Age (numerically ascending, with default age on top) +5. Priority (descending) + +Each `SortOrder` constant value stores a `Comparator` that is used by Java `List`'s build-in `sort` +method to compare two `Patient` objects during the execution of the `sort` command. These comparators make use of the +overridden `compareTo` methods in the related patient attribute classes (i.e. `Name`, `IcNumber`, `AssignedDepartment`, +`Age` and `Priority`). Each `SortCommand` object stores a `SortOrder` value, extracted from the input string by the +`SortCommandParser` object that created it. + +#### Sequence diagram of `SortCommand#execute()` +As the creation of the `SortCommand` object is very similar to that of `AssignCommand` as shown above, except that +it parses the property and uses `SortOrder#getSortOrder(String string)` to retrieve the `SortOrder` value, the sequence +diagram below will only show the execution of the `SortCommand#execute()` method to illustrate how the sort feature +works. + + + ### \[Proposed\] Undo/redo feature #### Proposed Implementation @@ -921,8 +972,8 @@ Testers are expected to do more *exploratory* testing. 1. Download the jar file and copy into an empty folder - 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be - optimum. + 2. Double-click the jar file.
+ Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum. 2. Saving window preferences @@ -1020,7 +1071,7 @@ Testers are expected to do more *exploratory* testing. 1. Editing a patient's record - 1. Prerequisite: Have our sample patient list loaded OR add a patient with IC number t7654321a. + 1. Prerequisite: Have our sample patient list loaded OR add a patient with IC number t7654321a. 2. Test case: `record i/T7654321A o/Broken Arm di/Hairline fracture tp/Cast for 2 days`
Expected: Record of the patient with IC number `T7654321A` is edited to have `Broken Arm` as initial observation , `Hairline fracture` as diagnosis, and `Cast for 2 days` as treatment plan. Details of the edited record is shown @@ -1032,7 +1083,7 @@ Testers are expected to do more *exploratory* testing. 4. Other incorrect delete commands to try: `record`, `record i/T7654321A o/Broken Pinky o/Dizziness`, `record i/T2736487A di/Asthma` (where patient with IC number `T2736487A` does not exist)
- Expected: Similar to previous. + Expected: Similar to previous. ### Assigning a patient to a department @@ -1077,7 +1128,7 @@ Testers are expected to do more *exploratory* testing. 1. Prerequisites: List all patients using the `list` command. Multiple patients in the list. At least 2 different assigned departments among all patients in the list. - + 2. Test case: `sort department`
Expected: Patient list is sorted according to `assigned department`, where patients with default departments are placed at the bottom. Details of success of command is shown in the system message. Order of patients in list is diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 0ebc30fd7f4..8f6abd92fc5 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -50,8 +50,10 @@ started! ## Table of Contents - [Table-of-contents](#table-of-contents) -- [Navigate](#navigating-the-user-guide) -- [Quick-start](#quick-start) +- [Using this Guide](#navigating-the-user-guide) +- [Quick Start](#quick-start) +- [Getting to know A&E](#getting-to-know-ae) + - [User Interface](#user-interface) - [Features](#features) - [Viewing help : `help`](#viewing-help--help) - [Listing all patients: `list`](#listing-all-patients--list) @@ -89,18 +91,21 @@ started! 1. Ensure you have Java 11 or above installed in your Computer. - __How to check?__ - 1. Open up the Terminal on your computer. - 1. For Windows users, locate it by typing in “Terminal” in the search bar. - 2. For Mac users, locate it by typing in “Terminal” in Spotlight. - 2. Type in java -version and press Enter. - 3. If you have Java installed, you should see your Java version as shown underlined in the picture below. - - 4. If you do not have Java or your Java version is below 11, install Java - 11 [here](https://www.oracle.com/java/technologies/downloads/#java11) + +***How to check?*** +1. Open up the Terminal on your computer. + 1. For Windows users, locate it by typing in “Terminal” in the search bar. + 2. For Mac users, locate it by typing in “Terminal” in Spotlight. +2. Type in `java -version` and press Enter. +3. If you have Java installed, you should see your Java version as shown underlined in the picture below. + +4. If you do not have Java or your Java version is below 11, install Java +11 [here](https://www.oracle.com/java/technologies/downloads/#java11) based on your Operating System. -2. Go to your Desktop and create a folder named “A&E”. + + +2. Go to your Desktop and create a folder named “AAndE”. 3. Download Advanced&Efficient [here](https://github.com/AY2324S1-CS2103T-T14-2/tp/releases/tag/v1.3.1) @@ -109,54 +114,174 @@ started! -4. After downloading the application, move it into the “A&E” folder created in step 2. +4. After downloading the application, move it into the “AAndE” folder created in step 2. + +5. Open Terminal (as mentioned in step 1 part 1) + 1. For Windows, type in `cd Desktop\AAndE` to navigate to the folder you’ve created, and press Enter. + 2. For Mac, type in `cd Desktop/AAndE` to navigate to the folder you’ve created, and press Enter. -5. Open Terminal, type in cd Desktop\A&E to navigate to the folder you’ve created, and press Enter. Then, type in `java - -jar AdvancedAndEfficient.jar` and press Enter again to run the application. + Then, type in `java -jar AdvancedAndEfficient.jar` and press Enter again to run the application. A GUI similar to the picture below should appear in a few seconds. Note how the app contains some sample data. - + + + + +We strongly recommend you to use A&E at a resolution of 1024x640 for the fullest experience. You may also click +on the fullscreen icon at the top right hand corner to enlarge the window. + + -6. Type the command in the command box and press Enter to execute it. e.g. typing `help` and pressing Enter will open the - help window. +6. Type the command in the command box and press Enter to execute it. e.g. typing `help` and pressing Enter will open + the help window. Some example commands you can try: - `list` : Lists all patients. - `add n/John Doe i/T0384762A p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a patient named - John Doe into the system. - `clear` : Deletes all patients. - `exit` : Exits the app. + - `list` : Lists all patients. + - `add n/John Doe i/T0384762A p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a patient + named + John Doe into the system. + - `clear` : Deletes all patients. + - `exit` : Exits the app. -------------------------------------------------------------------------------------------------------------------- +## Getting to know A&E + +### User Interface + +Here is an overview of A&E’s user interface and some of its noteworthy components. + + + +1. Command Bar +2. Console +3. Patient List Panel +4. Patient Record Panel + +### Command Bar + +This is where you type in commands for the program to run. Refer to the [Features](#features) or +[Command Summary](#command-summary) section for the command inputs accepted by the app. + +To begin typing, simply select the command bar by clicking the space that says “Enter command here…”. Then, type in +your command and hit Enter to execute the command! + + + +### Console + +This is where status messages are displayed. Status messages are displayed depending on the user input +in the command box. + +Status messages provide you with feedback such as: ++ What a command does and its format ++ Why a command input is invalid ++ Whether a command is successful + + + +### Patient List Panel + +This is where the list of patients is displayed. It displays either the complete list of all patients in the system +(after `list` command), a filtered list of patients (after `find` command), or a single patient card +(after `view` command). + +Patients are listed out vertically. You can scroll through the list using the scrollbar on the right side, your mouse’s +scroll wheel, or your trackpad. To select a patient in the list, simply click on their patient card. The selected +patient is indicated by the light blue border around their patient card. + + + +Each patient is represented by a patient card in the list. Here is an overview of the information displayed in a +patient card. + + + +1. Full Name +2. Age +3. Gender +4. Birthday +5. Phone Number +6. Assigned Department +7. Tag(s) +8. Priority Tag + + + +9. IC Number + +### Patient Record Panel + +This is where the details and record of the selected patient in the list is displayed. It displays all the details of a +patient and all their patient record information, except for their age. The labels below the patient’s name indicate the +patient’s priority level and tags respectively. + +If there is no selected patient in the list, the panel will be blank. (The selected patient is indicated by the light +blue border around their patient card in the patient list panel.) + + + +[Back to Table of Contents](#table-of-contents) + +-------------------------------------------------------------------------------------------------------------------- ## Features - + **Notes about the command format:**
-* Words in `UPPER_CASE` are the parameters to be supplied by the user.
+* Words in `UPPER_CASE` are the parameters to be supplied by the user. e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. -* Items in square brackets are optional.
- e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe` +* Items in square brackets are optional. + e.g `n/NAME [pr/PRIORITY]` can be used as `n/John Doe pr/HIGH` or as `n/John Doe` + +* Items with `...` after them can be used multiple times including zero times. + e.g. `[t/TAG]...` can be used as ` `(i.e. 0 times), `t/critical`, `t/critical t/bedrest` etc. -* Items with `...` after them can be used multiple times including zero times.
- e.g. `[t/TAG]...` can be used as ` `(i.e. 0 times), `t/friend`, `t/friend t/family` etc. +* Parameters can be in any order. + e.g. if the command specifies `n/NAME p/PHONE`, `p/PHONE n/NAME` is also acceptable. -* Parameters can be in any order.
- e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. +* Except for `n/NAME`, all parameters are case-insensitive. e.g. `n/john doe` is different from `n/John Doe`, but + `i/t1234567a` is the same as `i/T1234567A`. -* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be - ignored.
- e.g. if the command specifies `help 123`, it will be interpreted as `help`. +* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit`, `undo`, `redo`, and + `clear`) will be ignored. e.g. if the command specifies `help 123`, it will be interpreted as `help`. * If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application. -
+ +
+ +[Back to Table of Contents](#table-of-contents) + +### Prefix Summary + +For some commands in the subsequent sections, you might come across parameters specified with a prefix +(e.g. prefix `n/` with parameter `NAME` in `n/NAME`). These parameters refer to patient attributes or record fields that are +accepted by the command. Certain parameters have constraints and can only take on certain values. The table below +gives a summary of all parameters, their associated prefixes and their constraints. + +| Attribute | Prefix | Parameter | Constraints/Format | +|------------------------------------------------|--------|------------------|-----------------------------------------------------------------------------------------| +| Patient’s full name | `n/` | `NAME` | Only alphanumeric characters and spaces | +| Patient’s NRIC number | `i/` | `IC_NUMBER` | Must be an alphabet, followed by 7 numerical digits, then an alphabet
E.g. T0123456A | +| Patient’s gender | `g/` | `GENDER` | “Male”, “Female” or “Other” | +| Patient’s birthday | `b/` | `BIRTHDAY` | Date in the format, DD/MM/YYYY | +| Patient’s phone number | `p/` | `PHONE` | Only numbers, at least 3 digits long | +| Patient’s email address | `e/` | `EMAIL` | An email address in the format, username@domain.com | +| Patient’s home address | `a/` | `ADDRESS` | Any values | +| Patient’s priority level | `pr/` | `PRIORITY` | “High”, “Medium”, “Low” or “NIL” | +| Patient’s tags | `t/` | `TAG` | Alphanumeric characters, no spaces | +| Patient’s assigned department | `d/` | `DEPARTMENT` | Refer to the [appendix](#appendix-departments) for the list of accepted values | +| Patient’s initial observations in their record | `o/` | `OBSERVATION` | Any values | +| Patient’s diagnosis in their record | `di/` | `DIAGNOSIS` | Any values | +| Patient’s treatment plan in their record | `tp/` | `TREATMENT_PLAN` | Any values | + +[Back to Table of Contents](#table-of-contents) ### Viewing help: `help` @@ -176,24 +301,42 @@ Format: `list` ### Adding a patient: `add` -Adds a patient +Adds a patient into the system Format: `add n/NAME i/IC_NUMBER [g/GENDER] [b/BIRTHDAY] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [pr/PRIORITY]] [t/TAG]...` -+ Only `NAME` and `IC_NUMBER` fields are **compulsory**. -+ **All** input fields are **case-insensitive** e.g. `T1234567A` is the same as `t1234567a`. -+ The order of the input fields does not matter. -+ `PRIORITY` can take on values `NIL`,`LOW`,`MEDIUM` or `HIGH`. ++ IC number cannot be edited after the patient has been added. -Examples: + + +**Caution:** +Duplicate patients are not allowed. Duplicate patients refer to patients with the same name and/or IC +number. ++ Names are case-sensitive + + `Han Bo` is different from `han bo` ++ IC numbers are case-insensitive + + `T1234567A` is the same as `t1234567a` + + + + -+ To add a Patient with `NAME` = John Doe, `IC_Number` = T0123456A, `GENDER` = Male, `BIRTHDAY` = 01/01/1990, +**Note:** +Optional fields not specified while adding the patient will be filled with default values as shown below. + + + + + +Examples: -`add n/John Doe i/T0123456A g/Male b/01/01/1990 ` ++ To add a Patient with name "John Doe", IC number "T0123456A", gender "male", and birthday on 1 Jan 1990
+ `add n/John Doe i/T0123456A g/Male b/01/01/1990 ` -* To add a Patient with Name = Betsy Crowe, IC_Number = S0123456B, PHONE = 90909090, EMAIL = bc@gmail.com +* To add a patient with name "Betsy Crowe", IC number "S0123456B", phone number "90909090", and email "bc@gmail.com"
+ `add n/Betsy Crowe i/S0123456B p/90909090 e/bc@gmail.com` -`add n/Betsy Crowe i/S0123456B p/90909090 e/bc@gmail.com` +[Back to Table-of-contents](#table-of-contents) ### Viewing a patient: `view` @@ -201,14 +344,25 @@ Displays a specific patient’s information and medical record. Format: `view i/IC_NUMBER` -* `IC_NUMBER` field is **compulsory**. -* `IC_NUMBER` field is **case-insensitive** e.g. `T1234567A` is the same as `t1234567a`. - Examples: -+ To view patient with IC_Number = T0123456A ++ To view patient with IC number "T0123456A"
+ `view i/T0201234A` + +Expected output when command succeeds: + + -`view i/T0201234A` + + + +**Note:** +The command will not display the patient’s record card in the record panel immediately. To view the patient’s +details and record card, you have to click on their patient card in the list. + + + +[Back to Table-of-contents](#table-of-contents) ### Editing a patient: `edit` @@ -244,6 +398,7 @@ Examples: ### Undoing a command: `undo` Undoes the most recent state of the following commands: + + `delete` + `edit` + `clear` @@ -261,6 +416,7 @@ Examples: ### Redoing a command: `redo` Redoes the most recent state of the following commands: + + `delete` + `edit` + `clear` @@ -286,7 +442,8 @@ Format: `find KEYWORD [MORE_KEYWORDS]` + The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` + Only the name is searched. + Only full words will be matched e.g. `Han` will not match `Hans` -+ Persons matching at least one keyword will be returned (i.e. OR search). e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` ++ Persons matching at least one keyword will be returned (i.e. OR search). e.g. `Hans Bo` will + return `Hans Gruber`, `Bo Yang` Examples: @@ -299,31 +456,32 @@ Examples: Sorts the patient list based on the given property. + + +**Note:** +It sorts both the filtered and full patient list. For example, if you run `find John` followed by `sort age` on the +list of search results, it will also sort the complete list of patients (displayed using the `list` command). + + + Format: `sort PROPERTY` -+ The input field is **case-insensitive** e.g. `name` is the same as `NAME`. + `PROPERTY` can only be `name`, `ic`, `department`, `age`, or `priority`. Examples: -+ To sort the patient list according to name in lexicographical order
++ To sort the patient list according to name in alphanumeric order
`sort name` -+ To sort the patient list according to IC number in lexicographical order
++ To sort the patient list according to IC number in alphanumeric order
`sort ic` -+ To sort the patient list according to department
++ To sort the patient list according to department (with default departments at the bottom of the list)
`sort department` -+ To sort the patient list according to ascending age
++ To sort the patient list according to ascending age (with default age at the top of the list)
`sort age` + To sort the patient list according to descending priority
`sort priority` - - -**Note:** -It sorts both the filtered and full patient list. For example, if you run `find John` followed by `sort age` on the -list of search results, it will also sort the complete list of patients (displayed using the `list` command). - - +[Back to Table-of-contents](#table-of-contents) ### Editing a patient record: `record` @@ -348,16 +506,21 @@ Assigns a patient to a hospital department. Format: `assign i/IC_NUMBER d/DEPARTMENT` -* All input fields are compulsory. -* **All** input fields are **case-insensitive** e.g. `T1234567A` is the same as `t1234567a`. -* `DEPARTMENT` must adhere to British spelling conventions. -* Refer to the [appendix](#appendix--departments) below for the list of valid departments and their accepted inputs. + + +**Caution:** +`DEPARTMENT` must adhere to British spelling conventions. Refer to the [appendix](#appendix-departments) +below for the list of valid departments and their accepted inputs. + + Examples: -* To assign a patient with IC_NUMBER = T0201234A to the Cardiology department
+* To assign a patient with IC number "T0201234A" to the cardiology department
`assign i/T0201234A d/cardiology` +[Back to Table-of-contents](#table-of-contents) + ### Clearing all entries: `clear` Clears all entries from the system. @@ -382,21 +545,45 @@ Advanced&Efficient data are saved automatically as a JSON file `[JAR file locati users are welcome to update data directly by editing that data file. - + **Caution:** If your changes to the data file makes its format invalid, Advanced&Efficient will discard all data and start with an -empty -data file at the next run. Hence, it is recommended to take a backup of the file before editing it. +empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it. + -------------------------------------------------------------------------------------------------------------------- ## FAQ -Q: How do I transfer my data to another Computer? -A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the -data of your previous A&E home folder. +**Q**: I double-clicked the Jar file and it doesn't run, why?\ +**A**: Make sure that Java 11 is installed and do refer to step 5 of [Quick-start](#quick-start) for instructions to run +application. + +**Q**: I have a list of patients, how do I view their details?\ +**A**: Please click on the patient you are interested in viewing. The details will be on the right hand side in the +Patient Record Panel. + +**Q**: The Patient List Panel is cut off, I cant see some details for each patient\ +**A**: Please resize the application by dragging the border of the application window with your mouse. If the appplication is already in full screen mode, please drag the divider between the Patient List Panel and Patient +Record Panel to the right. + +**Q**: I entered a command and there is no response from the application, what do I do?\ +**A**: A critical error might have occured. Please ensure your command is as specified in [Features](#features). Please contact +the technical team in charge of your department to file a bug report on our [issues](tps://github.com/AY2324S1-CS2103T-T14-2/tp/issues) page. + +**Q**: I have accidentally cleared the whole patient record system, can I retrieve the lost details?\ +**A**: Yes, A&E has the [Undo](#undoing-a-command-undo) feature which allows you to retrieve all the lost details. + +**Q**: Will my data be saved immediately?\ +**A**: Yes, A&E saves your data after every command executed. + +**Q**: How do I transfer my data to another Computer?\ +**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains +the data of your previous AAndE home folder. + +[Back to Table-of-contents](#table-of-contents) -------------------------------------------------------------------------------------------------------------------- @@ -434,6 +621,8 @@ application before running the application again. The table below shows all the hospital departments available in the system and their accepted inputs. +Related commands: [Assign](#assigning-a-patient-to-a-department-assign) + | Department | Acceptable Input(s) | |----------------------|------------------------| | Default | `Default` | @@ -460,3 +649,5 @@ The table below shows all the hospital departments available in the system and t | Psychiatry | `Psychiatry` | | Radiology | `Radiology` | | Urology | `Urology` | + +[Back to Table-of-contents](#table-of-contents) diff --git a/docs/diagrams/AssignSequenceDiagram.puml b/docs/diagrams/AssignSequenceDiagram.puml index 46f3fa00e61..6ca6efb7b62 100644 --- a/docs/diagrams/AssignSequenceDiagram.puml +++ b/docs/diagrams/AssignSequenceDiagram.puml @@ -3,8 +3,14 @@ skinparam ArrowFontStyle plain skinparam sequenceReferenceBackgroundColor white + box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant ":AssignCommandParser" as AssignCommandParser LOGIC_COLOR participant "a:AssignCommand" as AssignCommand LOGIC_COLOR +participant "ParserUtil" as ParserUtil <> LOGIC_COLOR +participant ":CommandResult" as CommandResult LOGIC_COLOR end box box Model MODEL_COLOR_T1 @@ -12,10 +18,44 @@ participant ":Model" as Model MODEL_COLOR participant "assignedPatient:Patient" as Patient MODEL_COLOR end box -[-> AssignCommand : execute() +[-> LogicManager : execute("assign \ni/t0123456s d/cardiology") +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand("assign \ni/t0123456s d/cardiology") +activate AddressBookParser + +create AssignCommandParser +AddressBookParser -> AssignCommandParser +activate AssignCommandParser + +AssignCommandParser --> AddressBookParser +deactivate AssignCommandParser + +AddressBookParser -> AssignCommandParser : parse("i/t0123456s d/cardiology") +activate AssignCommandParser + +ref over AssignCommandParser, ParserUtil : Create IcNumber and AssignedDepartment objects from string input + +create AssignCommand +AssignCommandParser -> AssignCommand +activate AssignCommand + +AssignCommand --> AssignCommandParser : a +deactivate AssignCommand + +AssignCommandParser --> AddressBookParser : a +deactivate AssignCommandParser +'Hidden arrow to position the destroy marker below the end of the activation bar. +AssignCommandParser -[hidden]-> AddressBookParser +destroy AssignCommandParser + +AddressBookParser --> LogicManager : a +deactivate AddressBookParser + +LogicManager -> AssignCommand : execute() activate AssignCommand -ref over AssignCommand, Model : Get Patient with IC Number from list +AssignCommand -> Model : Get Patient with IC number from patient list AssignCommand -> AssignCommand :createAssignedPatient activate AssignCommand @@ -24,18 +64,28 @@ create Patient AssignCommand -> Patient activate Patient -Patient --> AssignCommand: assignedPatient +Patient --> AssignCommand deactivate Patient AssignCommand --> AssignCommand deactivate AssignCommand +AssignCommand -> Model : Replace existing patient with assignedPatient + AssignCommand -[hidden]-> Model -ref over AssignCommand, Model : Replace old patient with assignedPatient +create CommandResult +AssignCommand -> CommandResult +activate CommandResult -[<-- AssignCommand : result +CommandResult --> AssignCommand +deactivate CommandResult + +AssignCommand --> LogicManager: result deactivate AssignCommand <-[hidden]- AssignCommand destroy AssignCommand + +[<--LogicManager +deactivate LogicManager @enduml diff --git a/docs/diagrams/AssignSequenceDiagramParserUtil.puml b/docs/diagrams/AssignSequenceDiagramParserUtil.puml new file mode 100644 index 00000000000..3fb902ccf58 --- /dev/null +++ b/docs/diagrams/AssignSequenceDiagramParserUtil.puml @@ -0,0 +1,58 @@ +@startuml +!include style.puml +skinparam ArrowFontStyle plain +skinparam sequenceReferenceBackgroundColor white + +mainframe **sd** Create IcNumber and AssignedDepartment objects from string input + +box Logic LOGIC_COLOR_T1 +participant "AssignCommandParser" as AssignCommandParser LOGIC_COLOR +participant "ParserUtil" as ParserUtil <> LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant "icNumber:IcNumber" as IcNumber MODEL_COLOR +participant "AssignedDepartment" as AssignedDepartment <> MODEL_COLOR +participant "Department" as Department <> MODEL_COLOR +participant "department:AssignedDepartment" as assignedDepartment MODEL_COLOR +end box + +AssignCommandParser -> ParserUtil : parseIcNumber("t0123456s") +activate ParserUtil + +create IcNumber +ParserUtil -> IcNumber +activate IcNumber + +IcNumber --> ParserUtil +deactivate IcNumber + +ParserUtil --> AssignCommandParser : icNumber +deactivate ParserUtil + +AssignCommandParser -> ParserUtil : parseAssignedDepartment("cardiology") +activate ParserUtil + +ParserUtil -> AssignedDepartment : isValidDepartment("cardiology") +activate AssignedDepartment + +AssignedDepartment -> Department : isValidDepartment("cardiology") +activate Department + +Department --> AssignedDepartment +deactivate Department + +AssignedDepartment --> ParserUtil +deactivate AssignedDepartment + +create assignedDepartment +ParserUtil -> assignedDepartment +activate assignedDepartment + +assignedDepartment --> ParserUtil +deactivate assignedDepartment + +ParserUtil --> AssignCommandParser : department +deactivate ParserUtil + +@enduml diff --git a/docs/diagrams/BetterModelClassDiagram.puml b/docs/diagrams/BetterModelClassDiagram.puml index 598474a5c82..41278989c11 100644 --- a/docs/diagrams/BetterModelClassDiagram.puml +++ b/docs/diagrams/BetterModelClassDiagram.puml @@ -1,21 +1,30 @@ @startuml -!include style.puml +!include styleClass.puml skinparam arrowThickness 1.1 skinparam arrowColor MODEL_COLOR -skinparam classBackgroundColor MODEL_COLOR +skinparam ClassHeaderBackgroundColor MODEL_COLOR -AddressBook *-right-> "1" UniquePersonList +Class Patient { +name: Name +phone: Phone +email: Email +gender: Gender +icNumber: IcNumber +birthday: Birthday +age: Age +address: Address +priority: Priority +assignedDepartment: AssignedDepartment +record: Record +} + +AddressBook *-right-> "1" UniquePatientList AddressBook *-right-> "1" UniqueTagList -UniqueTagList -[hidden]down- UniquePersonList -UniqueTagList -[hidden]down- UniquePersonList +UniqueTagList -[hidden]down- UniquePatientList +UniqueTagList -[hidden]down- UniquePatientList UniqueTagList -right-> "*" Tag -UniquePersonList -right-> Person - -Person -up-> "*" Tag +UniquePatientList -right-> Patient -Person *--> Name -Person *--> Phone -Person *--> Email -Person *--> Address +Patient -up-> "*" Tag @enduml diff --git a/docs/diagrams/DeleteSequenceDiagram.puml b/docs/diagrams/DeleteSequenceDiagram.puml index 40ea6c9dc4c..a8b2e83bc6b 100644 --- a/docs/diagrams/DeleteSequenceDiagram.puml +++ b/docs/diagrams/DeleteSequenceDiagram.puml @@ -14,10 +14,11 @@ box Model MODEL_COLOR_T1 participant ":Model" as Model MODEL_COLOR end box -[-> LogicManager : execute("delete 1") +[-> LogicManager : execute("delete i/T0000000A") +'delete patient with Ic number T0000000A activate LogicManager -LogicManager -> AddressBookParser : parseCommand("delete 1") +LogicManager -> AddressBookParser : parseCommand("delete i/T0000000A") activate AddressBookParser create DeleteCommandParser @@ -27,7 +28,7 @@ activate DeleteCommandParser DeleteCommandParser --> AddressBookParser deactivate DeleteCommandParser -AddressBookParser -> DeleteCommandParser : parse("1") +AddressBookParser -> DeleteCommandParser : parse("i/T0000000A") activate DeleteCommandParser create DeleteCommand @@ -39,7 +40,7 @@ deactivate DeleteCommand DeleteCommandParser --> AddressBookParser : d deactivate DeleteCommandParser -'Hidden arrow to position the destroy marker below the end of the activation bar. +'Hidden arrow to position the destroy-marker below the end of the activation bar. DeleteCommandParser -[hidden]-> AddressBookParser destroy DeleteCommandParser @@ -49,7 +50,10 @@ deactivate AddressBookParser LogicManager -> DeleteCommand : execute() activate DeleteCommand -DeleteCommand -> Model : deletePerson(1) +DeleteCommand -> Model : getPatient(new IcNumber("T0000000A"), List patientList) +'obtain patient to be deleted using getPatient() method) + +Model -> Model : deletePatient(patient, deleteCommand) activate Model Model --> DeleteCommand diff --git a/docs/diagrams/EditSequenceDiagram.puml b/docs/diagrams/EditSequenceDiagram.puml new file mode 100644 index 00000000000..5ecdf0f4b9b --- /dev/null +++ b/docs/diagrams/EditSequenceDiagram.puml @@ -0,0 +1,73 @@ +@startuml +!include style.puml +skinparam ArrowFontStyle plain + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant ":EditCommandParser" as EditCommandParser LOGIC_COLOR +participant "e:EditCommand" as EditCommand LOGIC_COLOR +participant ":CommandResult" as CommandResult LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +end box + +[-> LogicManager : execute("edit i/T0000000A n/Jonathan Tan") +'edit the name from John Doe to Jonathan Tan +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand("edit i/T0000000A n/Jon Doe") +activate AddressBookParser + +create EditCommandParser +AddressBookParser -> EditCommandParser +activate EditCommandParser + +EditCommandParser --> AddressBookParser +deactivate EditCommandParser + +AddressBookParser -> EditCommandParser : parse("i/T0000000A n/Jon Doe") +activate EditCommandParser + +create EditCommand +EditCommandParser -> EditCommand +activate EditCommand + +EditCommand --> EditCommandParser : e +deactivate EditCommand + +EditCommandParser --> AddressBookParser : e +deactivate EditCommandParser +'Hidden arrow to position the destroy-marker below the end of the activation bar. +EditCommandParser -[hidden]-> AddressBookParser +destroy EditCommandParser + +AddressBookParser --> LogicManager : e +deactivate AddressBookParser + +LogicManager -> EditCommand : execute() +activate EditCommand + +EditCommand -> Model : getPatient(new IcNumber("T0000000A"), List patientList) +Model -> Model : setPatient(John Doe, Jonathan Tan, editCommand) +'setPatient contains target patient, edited patient, and command +activate Model + +Model --> EditCommand +deactivate Model + +create CommandResult +EditCommand -> CommandResult +activate CommandResult + +CommandResult --> EditCommand +deactivate CommandResult + +EditCommand --> LogicManager : result +deactivate EditCommand + +[<--LogicManager +deactivate LogicManager +@enduml diff --git a/docs/diagrams/ModelClassDiagram.puml b/docs/diagrams/ModelClassDiagram.puml index 0de5673070d..c4910c8e433 100644 --- a/docs/diagrams/ModelClassDiagram.puml +++ b/docs/diagrams/ModelClassDiagram.puml @@ -1,8 +1,8 @@ @startuml -!include style.puml +!include styleClass.puml skinparam arrowThickness 1.1 skinparam arrowColor MODEL_COLOR -skinparam classBackgroundColor MODEL_COLOR +skinparam ClassHeaderBackgroundColor MODEL_COLOR Package Model as ModelPackage <>{ Class "<>\nReadOnlyAddressBook" as ReadOnlyAddressBook @@ -12,13 +12,23 @@ Class AddressBook Class ModelManager Class UserPrefs -Class UniquePersonList -Class Person -Class Address -Class Email -Class Name -Class Phone +Class UniquePatientList +Class UniqueRecordList +Class Patient { +name: Name +phone: Phone +email: Email +gender: Gender +icNumber: IcNumber +birthday: Birthday +age: Age +address: Address +priority: Priority +assignedDepartment: AssignedDepartment +} + Class Tag +Class Record Class I #FFFFFF } @@ -35,20 +45,21 @@ ModelManager -left-> "1" AddressBook ModelManager -right-> "1" UserPrefs UserPrefs .up.|> ReadOnlyUserPrefs -AddressBook *--> "1" UniquePersonList -UniquePersonList --> "~* all" Person -Person *--> Name -Person *--> Phone -Person *--> Email -Person *--> Address -Person *--> "*" Tag +AddressBook *--> "1" UniqueRecordList +AddressBook *--> "1" UniquePatientList +UniqueRecordList -[hidden]right-> UniquePatientList +UniquePatientList --> "~* all" Patient + +Patient *--> "*" Tag +Patient *--> "1" Record + +UniqueRecordList --> "~* all" Record -Person -[hidden]up--> I -UniquePersonList -[hidden]right-> I +Tag -[hidden]left-> Record -Name -[hidden]right-> Phone -Phone -[hidden]right-> Address -Address -[hidden]right-> Email +Patient -[hidden]up--> I +UniquePatientList -[hidden]right-> I +Patient -[hidden]up--> UniquePatientList -ModelManager --> "~* filtered" Person +ModelManager --> "~* filtered" Patient @enduml diff --git a/docs/diagrams/RedoSequenceDiagram.puml b/docs/diagrams/RedoSequenceDiagram.puml new file mode 100644 index 00000000000..6d641cc3c52 --- /dev/null +++ b/docs/diagrams/RedoSequenceDiagram.puml @@ -0,0 +1,57 @@ +@startuml +!include style.puml +skinparam ArrowFontStyle plain + +box Logic LOGIC_COLOR_T1 +participant ":LogicManager" as LogicManager LOGIC_COLOR +participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR +participant "r:RedoCommand" as RedoCommand LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant ":Model" as Model MODEL_COLOR +participant ":AddressBook" as AddressBook MODEL_COLOR +participant ":VersionedAddressBook" as VersionedAddressBook MODEL_COLOR +end box +[-> LogicManager : execute(redo) +activate LogicManager + +LogicManager -> AddressBookParser : parseCommand(redo) +activate AddressBookParser + +create RedoCommand +AddressBookParser -> RedoCommand +activate RedoCommand + +RedoCommand --> AddressBookParser +deactivate RedoCommand + +AddressBookParser --> LogicManager : r +deactivate AddressBookParser + +LogicManager -> RedoCommand : execute() +activate RedoCommand + +RedoCommand -> Model : redoAddressBook() +activate Model + +Model -> AddressBook : resetData() +activate AddressBook +AddressBook -> Model +deactivate AddressBook + +Model -> VersionedAddressBook : getNextCommand() +activate VersionedAddressBook +VersionedAddressBook -> Model : nextCommand +Model -> RedoCommand : nextCommand +deactivate VersionedAddressBook +deactivate Model + +RedoCommand --> LogicManager : result +deactivate RedoCommand +RedoCommand -[hidden]-> LogicManager : result +destroy RedoCommand + +[<--LogicManager +deactivate LogicManager +@enduml diff --git a/docs/diagrams/SortSequenceDiagram.puml b/docs/diagrams/SortSequenceDiagram.puml new file mode 100644 index 00000000000..6224933ddd4 --- /dev/null +++ b/docs/diagrams/SortSequenceDiagram.puml @@ -0,0 +1,64 @@ +@startuml +!include style.puml +skinparam ArrowFontStyle plain +skinparam sequenceReferenceBackgroundColor white + +box Logic LOGIC_COLOR_T1 +participant "SortCommand" as SortCommand LOGIC_COLOR +participant "SortOrder" as SortOrder <> LOGIC_COLOR +participant ":CommandResult" as CommandResult LOGIC_COLOR +end box + +box Model MODEL_COLOR_T1 +participant "model:ModelManager" as ModelManager MODEL_COLOR +participant "addressBook:AddressBook" as AddressBook MODEL_COLOR +participant "patients:UniquePatientList" as UniquePatientList MODEL_COLOR +participant "internalList:ObservableList" as ObservableList MODEL_COLOR +end box + +[-> SortCommand : execute() +activate SortCommand + +SortCommand -> SortOrder : getComparator() +activate SortOrder + +SortOrder --> SortCommand : comparator +deactivate SortOrder + +SortCommand -> ModelManager : sortPatientList(comparator) +activate ModelManager + +ModelManager -> AddressBook : sortPatients(comparator) +activate AddressBook + +AddressBook -> UniquePatientList : sortPatients(comparator) +activate UniquePatientList + +UniquePatientList -> ObservableList : sort(comparator) +activate ObservableList + +ObservableList --> UniquePatientList +deactivate ObservableList + +UniquePatientList --> AddressBook +deactivate UniquePatientList + +AddressBook --> ModelManager +deactivate AddressBook + +ModelManager --> SortCommand +deactivate ModelManager + +create CommandResult +SortCommand -> CommandResult +activate CommandResult + +CommandResult --> SortCommand +deactivate CommandResult + +[<--SortCommand : result +deactivate SortCommand + +<-[hidden]- SortCommand +destroy SortCommand +@enduml diff --git a/docs/diagrams/UiClassDiagram.puml b/docs/diagrams/UiClassDiagram.puml index e87b31b16a1..db9328419a3 100644 --- a/docs/diagrams/UiClassDiagram.puml +++ b/docs/diagrams/UiClassDiagram.puml @@ -11,8 +11,8 @@ Class UiManager Class MainWindow Class HelpWindow Class ResultDisplay -Class PersonListPanel -Class PersonCard +Class PatientListPanel +Class PatientCard Class StatusBarFooter Class CommandBox Class RecordCard @@ -34,33 +34,33 @@ UiManager .left.|> Ui UiManager -down-> "1" MainWindow MainWindow *-down-> "1" CommandBox MainWindow *-down-> "1" ResultDisplay -MainWindow *-down-> "1" PersonListPanel +MainWindow *-down-> "1" PatientListPanel MainWindow *-down-> "1" RecordPanel MainWindow *-down-> "1" StatusBarFooter MainWindow --> "0..1" HelpWindow -PersonListPanel -down-> "*" PersonCard +PatientListPanel -down-> "*" PatientCard RecordPanel -down-> "0..1" RecordCard -RecordPanel -left-> "1" PersonListPanel +RecordPanel -left-> "1" PatientListPanel MainWindow -left-|> UiPart ResultDisplay --|> UiPart CommandBox --|> UiPart -PersonListPanel --|> UiPart -PersonCard --|> UiPart +PatientListPanel --|> UiPart +PatientCard --|> UiPart RecordPanel --|> UiPart RecordCard --|> UiPart StatusBarFooter --|> UiPart HelpWindow --|> UiPart -PersonCard ..> Model +PatientCard ..> Model RecordCard ..> Model UiManager -right-> Logic MainWindow -left-> Logic -PersonListPanel -[hidden]left- HelpWindow +PatientListPanel -[hidden]left- HelpWindow HelpWindow -[hidden]left- CommandBox CommandBox -[hidden]left- ResultDisplay ResultDisplay -[hidden]left- StatusBarFooter diff --git a/docs/diagrams/UndoRedoState0.puml b/docs/diagrams/UndoRedoState0.puml index 43a45903ac9..ff904ed8432 100644 --- a/docs/diagrams/UndoRedoState0.puml +++ b/docs/diagrams/UndoRedoState0.puml @@ -1,5 +1,6 @@ @startuml !include style.puml +!pragma layout smetana skinparam ClassFontColor #000000 skinparam ClassBorderColor #000000 skinparam ClassBackgroundColor #FFFFAA diff --git a/docs/diagrams/UndoRedoState1.puml b/docs/diagrams/UndoRedoState1.puml index 5a41e9e1651..c05f9e774a2 100644 --- a/docs/diagrams/UndoRedoState1.puml +++ b/docs/diagrams/UndoRedoState1.puml @@ -1,10 +1,11 @@ @startuml !include style.puml +!pragma layout smetana skinparam ClassFontColor #000000 skinparam ClassBorderColor #000000 skinparam ClassBackgroundColor #FFFFAA -title After command "delete 5" +title After command "delete i/S1234567A" package States <> { class State1 as "ab0:AddressBook" diff --git a/docs/diagrams/UndoRedoState2.puml b/docs/diagrams/UndoRedoState2.puml index ad32fce1b0b..1a609fd1100 100644 --- a/docs/diagrams/UndoRedoState2.puml +++ b/docs/diagrams/UndoRedoState2.puml @@ -1,10 +1,11 @@ @startuml !include style.puml +!pragma layout smetana skinparam ClassFontColor #000000 skinparam ClassBorderColor #000000 skinparam ClassBackgroundColor #FFFFAA -title After command "add n/David" +title After command "add n/John Doe i/T1234567A" package States <> { class State1 as "ab0:AddressBook" diff --git a/docs/diagrams/UndoRedoState3.puml b/docs/diagrams/UndoRedoState3.puml index 9187a690036..0916292786b 100644 --- a/docs/diagrams/UndoRedoState3.puml +++ b/docs/diagrams/UndoRedoState3.puml @@ -1,5 +1,6 @@ @startuml !include style.puml +!pragma layout smetana skinparam ClassFontColor #000000 skinparam ClassBorderColor #000000 skinparam ClassBackgroundColor #FFFFAA diff --git a/docs/diagrams/UndoRedoState4.puml b/docs/diagrams/UndoRedoState4.puml index 2bc631ffcd0..b68f6c0edcb 100644 --- a/docs/diagrams/UndoRedoState4.puml +++ b/docs/diagrams/UndoRedoState4.puml @@ -1,5 +1,6 @@ @startuml !include style.puml +!pragma layout smetana skinparam ClassFontColor #000000 skinparam ClassBorderColor #000000 skinparam ClassBackgroundColor #FFFFAA diff --git a/docs/diagrams/UndoRedoState5.puml b/docs/diagrams/UndoRedoState5.puml index e77b04104aa..12e7a819485 100644 --- a/docs/diagrams/UndoRedoState5.puml +++ b/docs/diagrams/UndoRedoState5.puml @@ -1,5 +1,6 @@ @startuml !include style.puml +!pragma layout smetana skinparam ClassFontColor #000000 skinparam ClassBorderColor #000000 skinparam ClassBackgroundColor #FFFFAA diff --git a/docs/diagrams/UndoSequenceDiagram.puml b/docs/diagrams/UndoSequenceDiagram.puml index 87ff3e9237e..365e86cf7a4 100644 --- a/docs/diagrams/UndoSequenceDiagram.puml +++ b/docs/diagrams/UndoSequenceDiagram.puml @@ -10,6 +10,7 @@ end box box Model MODEL_COLOR_T1 participant ":Model" as Model MODEL_COLOR +participant ":AddressBook" as AddressBook MODEL_COLOR participant ":VersionedAddressBook" as VersionedAddressBook MODEL_COLOR end box [-> LogicManager : execute(undo) @@ -34,14 +35,16 @@ activate UndoCommand UndoCommand -> Model : undoAddressBook() activate Model -Model -> VersionedAddressBook : undo() -activate VersionedAddressBook +Model -> AddressBook : resetData() +activate AddressBook +AddressBook -> Model +deactivate AddressBook -VersionedAddressBook -> VersionedAddressBook :resetData(ReadOnlyAddressBook) -VersionedAddressBook --> Model : +Model -> VersionedAddressBook : getNextCommand() +activate VersionedAddressBook +VersionedAddressBook -> Model : previousCommand +Model -> UndoCommand : previousCommand deactivate VersionedAddressBook - -Model --> UndoCommand deactivate Model UndoCommand --> LogicManager : result diff --git a/docs/diagrams/styleClass.puml b/docs/diagrams/styleClass.puml new file mode 100644 index 00000000000..04e856bff88 --- /dev/null +++ b/docs/diagrams/styleClass.puml @@ -0,0 +1,79 @@ +/' + 'Commonly used styles and colors across diagrams. + 'Refer to https://plantuml-documentation.readthedocs.io/en/latest for a more + 'comprehensive list of skinparams. + '/ + + +'T1 through T4 are shades of the original color from lightest to darkest + +!define UI_COLOR #1D8900 +!define UI_COLOR_T1 #83E769 +!define UI_COLOR_T2 #3FC71B +!define UI_COLOR_T3 #166800 +!define UI_COLOR_T4 #0E4100 + +!define LOGIC_COLOR #3333C4 +!define LOGIC_COLOR_T1 #C8C8FA +!define LOGIC_COLOR_T2 #6A6ADC +!define LOGIC_COLOR_T3 #1616B0 +!define LOGIC_COLOR_T4 #101086 + +!define MODEL_COLOR #9D0012 +!define MODEL_COLOR_T1 #F97181 +!define MODEL_COLOR_T2 #E41F36 +!define MODEL_COLOR_T3 #7B000E +!define MODEL_COLOR_T4 #51000A + +!define STORAGE_COLOR #A38300 +!define STORAGE_COLOR_T1 #FFE374 +!define STORAGE_COLOR_T2 #EDC520 +!define STORAGE_COLOR_T3 #806600 +!define STORAGE_COLOR_T2 #544400 + +!define USER_COLOR #000000 + +skinparam Package { + BackgroundColor #FFFFFF + BorderThickness 1 + FontSize 16 +} + +skinparam Class { + FontColor #FFFFFF + FontSize 15 + BorderThickness 1 + BorderColor #FFFFFF + StereotypeFontColor #FFFFFF + FontName Arial +} + +skinparam Actor { + BorderColor USER_COLOR + Color USER_COLOR + FontName Arial +} + +skinparam Sequence { + MessageAlign center + BoxFontSize 15 + BoxPadding 0 + BoxFontColor #FFFFFF + FontName Arial +} + +skinparam Participant { + FontColor #FFFFFFF + Padding 20 +} + +skinparam ArrowFontStyle bold +skinparam MinClassWidth 50 +skinparam ParticipantPadding 10 +skinparam Shadowing false +skinparam DefaultTextAlignment center +skinparam packageStyle Rectangle + +hide footbox +hide empty members +hide circle diff --git a/docs/images/ug/addPatients.png b/docs/images/ug/addPatients.png new file mode 100644 index 00000000000..d6ae1c47167 Binary files /dev/null and b/docs/images/ug/addPatients.png differ diff --git a/docs/images/ug/commandBar.png b/docs/images/ug/commandBar.png new file mode 100644 index 00000000000..caa6b5368d3 Binary files /dev/null and b/docs/images/ug/commandBar.png differ diff --git a/docs/images/ug/console.png b/docs/images/ug/console.png new file mode 100644 index 00000000000..4675ebecc79 Binary files /dev/null and b/docs/images/ug/console.png differ diff --git a/docs/images/ug/gettingStartedUi.png b/docs/images/ug/gettingStartedUi.png new file mode 100644 index 00000000000..c7e2dfc1f36 Binary files /dev/null and b/docs/images/ug/gettingStartedUi.png differ diff --git a/docs/images/ug/labelledUi.png b/docs/images/ug/labelledUi.png new file mode 100644 index 00000000000..737029cdd35 Binary files /dev/null and b/docs/images/ug/labelledUi.png differ diff --git a/docs/images/ug/patientList.png b/docs/images/ug/patientList.png new file mode 100644 index 00000000000..0db00bc44af Binary files /dev/null and b/docs/images/ug/patientList.png differ diff --git a/docs/images/ug/patientListCard.png b/docs/images/ug/patientListCard.png new file mode 100644 index 00000000000..2a33adb1937 Binary files /dev/null and b/docs/images/ug/patientListCard.png differ diff --git a/docs/images/ug/prHigh.png b/docs/images/ug/prHigh.png new file mode 100644 index 00000000000..ba53a954234 Binary files /dev/null and b/docs/images/ug/prHigh.png differ diff --git a/docs/images/ug/prLow.png b/docs/images/ug/prLow.png new file mode 100644 index 00000000000..d656a500975 Binary files /dev/null and b/docs/images/ug/prLow.png differ diff --git a/docs/images/ug/prMedium.png b/docs/images/ug/prMedium.png new file mode 100644 index 00000000000..21248eac459 Binary files /dev/null and b/docs/images/ug/prMedium.png differ diff --git a/docs/images/ug/recordPanel.png b/docs/images/ug/recordPanel.png new file mode 100644 index 00000000000..06a42747cf9 Binary files /dev/null and b/docs/images/ug/recordPanel.png differ diff --git a/docs/images/ug/viewPatient.png b/docs/images/ug/viewPatient.png new file mode 100644 index 00000000000..7ad76f88e3a Binary files /dev/null and b/docs/images/ug/viewPatient.png differ diff --git a/docs/team/aaronjt1.md b/docs/team/aaronjt1.md index 51b907578b9..52e4bc4e3e0 100644 --- a/docs/team/aaronjt1.md +++ b/docs/team/aaronjt1.md @@ -7,7 +7,7 @@ relevant departments. ---------------------------------------------------------------------- -## Contribution +### Contribution Here are my contributions to the project. @@ -16,64 +16,82 @@ Here are my contributions to the project. ---------------------------------------------------------------------- -## Features implemented +### Features implemented -### View Feature [#119](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/119) -**What it does** - Allows users to view the information of a specific patient with `Ic Number` +#### View Feature [#119](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/119) -**Justification** - Currently there is a find command which allows users to find patients by keywords in names. However if a user wants to search for a specific patient with Ic Number, there is no option for that. Since find returns a list of patients with names matching the keyword, the user would have to manually go through the list to find that specific patient. +**What it does** - Allows users to view the information of a specific patient with `Ic Number` +**Justification** - Currently there is a find command which allows users to find patients by keywords in names. However +if a user wants to search for a specific patient with Ic Number, there is no option for that. Since find returns a list +of patients with names matching the keyword, the user would have to manually go through the list to find that specific +patient. -**Highlights** - Since Add command is enhanced to prevent patients with duplicate `Ic Number` from being added, users can be assured that the displayed user is the one they desired. +**Highlights** - Since Add command is enhanced to prevent patients with duplicate `Ic Number` from being added, users +can be assured that the displayed user is the one they desired. ---------------------------------------------------------------------- -## Enhancement to existing features: - -### Enhanced Add Feature +### Enhancement to existing features: -1. Option to add patients with compulsory fields only [#78](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/78), - - Previously, users have to fill in all the patient fields for the patient to added. - - Currently, users only need to fill in `Name` and `Ic Number` to add a patient -2. Check for duplicate `Ic Number` before adding a patient [#128](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/128) - - Previously the users are able to add patients with `Ic Number` that already exists - in another patient in the patient record. - - Currently, user will not allowed to add another patient with existing `Ic Number` - and an error message will be shown. +#### Enhanced Add Feature +1. Option to add patients with required fields only [#78](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/78) +2. Prevent patient with `IC Number` that already exists in system from being + added. [#128](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/128) -### Enhanced exception / error messages for users +#### Enhanced exception / error messages for users -1. `PatientWithFieldNotFoundException` thrown when no patient with user-specified field found [#119](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/119) +1. `PatientWithFieldNotFoundException` thrown when no patient with user-specified field + found [#119](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/119) - Previously, when user input an `Ic Number` that does not exist in a patient record, - it does not show any helpful message but simply showed an empty list. + it does not show any helpful message but simply showed an empty list. - Currently, when user input an `Ic Number` that does not exist in a patient record, - an exception will be thrown and helpful message will be displayed to inform users about it. -2. Integrated `PatientWithFieldNotFoundException` into all relevant commands [#153](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/153) + an exception will be thrown and helpful message will be displayed to inform users about it. +2. Integrated `PatientWithFieldNotFoundException` into all relevant + commands [#153](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/153) - Assign, Delete, Edit, Record - Thrown when user entered an `Ic Number` that does not exist in any patient. - Find - Thrown when user entered keyword(s) that does not exist in any patient's name. +#### Enhanced `ModelManager` [#128](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/128) -### Enhanced `ModelManager` [#128](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/128) - -1. `isPatientWithIcNumberPresent` method to check if a patient with the `Ic Number` is present - - Useful for commands which uses `Ic Number` to find a patient like Find, View, etc. +1. `isPatientWithIcNumberPresent` method to check if a patient with the `Ic Number` is present 2. `getCurrentPatientList` method to get current patients in the patient record rather than filtered list - - Useful for commands which aims to perform commands on patients outside of the displayed list. 3. Testing utilities for the above mentioned methods. in `ModelManagerTest.java`. +#### Enhanced testing utilities + +1. Account for new Patient + attributes [#102](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/102), [#116](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/116) + - Refactored testing facilities which utilized patients like `CommandTestUtil`, `TypicalPatients` + and `PatientBuilder` +2. Significantly improved coverage for AddCommandParser & + EditCommandParser [#78](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/78), [#160](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/160) +3. Added testing for AssignCommand feature [#163](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/163) + +---------------------------------------------------------------------- +### Contributions to User Guide: -### Enhanced testing utilities +- Added documentation & screenshot for `add` and `view` commands +- Added `Quick-start` section +- Added `FAQ` section + +### Contributions to Developer Guide: + +- Added the `Overview` and `Acknowledgements` section +- Updated `Setting up, getting started` guide +- Updated links in `Design` section +- Added `Add Patient` and `View Patient` feature in `Implementation` section +- Added & updated + whole of `Appendix: Requirements` + section -- `Product scope`, `User stories`,`Use cases (UC01-UC09)`,`Non-Functional Requirements`, `Glossary` +- Added points 1&2 in `Appendix: Planned Enhancements` section -1. Account for new Patient attributes [#102](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/102), [#116](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/116) - - Refactored testing facilities which utilized patients like `CommandTestUtil`, `TypicalPatients` and `PatientBuilder` -2. Significantly improved coverage for AddCommandParser & EditCommandParser [#78](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/78), [#160](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/160) -3. Added testing for AssignCommand feature [#163](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/163) ---------------------------------------------------------------------- -## Contributions to team-based task: +### Contributions to team-based task: * tP Team organisation and Repo setup * Managed Team Google Docs for ease of use @@ -83,13 +101,15 @@ Here are my contributions to the project. * Managed product demo for v1.2 and v1.3 * Refactor Person instances to Patient in codebase [#68](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/68) -## Review / mentoring contributions: +### Review / mentoring contributions: + * Reviewed pull requests by other group members and provided insightful comments * Some non-trivial PRs i have reviewed [#77](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/77) [#89](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/89) [#96](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/96) [#107](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/107) [#120](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/120) [#145](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/145) [#155](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/155) [#167](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/167) * Reviewed, approved and merged a total of 33 PRs out of .. * Provided guidelines to aid group members in implementation - * Example : Aided group member in testing of Edit command [#145](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/145) + * Example : Aided group member in testing of Edit + command [#145](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/145) diff --git a/docs/team/longnguyentan.md b/docs/team/longnguyentan.md index 046c277fcd0..fee53b750eb 100644 --- a/docs/team/longnguyentan.md +++ b/docs/team/longnguyentan.md @@ -17,7 +17,7 @@ Given below are my contributions to the project. * Improved UI ([#129](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/129)) * **Contributions to the UG**: - * Wrote Introduction & resized images ([#165](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/165) + * Wrote Introduction & resized images ([#165](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/165) * Updated `list` and `delete` features ([#51](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/51) * **Contributions to the DG**: diff --git a/docs/team/riyamehta2211.md b/docs/team/riyamehta2211.md index 3a530980b5a..d6b0426f9a4 100644 --- a/docs/team/riyamehta2211.md +++ b/docs/team/riyamehta2211.md @@ -29,7 +29,7 @@ Given below are my contributions to the project. * **Contributions to team-based tasks**: * Maintaining the issue tracker * Updating user/developer docs - + * **Review/mentoring contributions**: * Reviewed and merged various PRs made by team members diff --git a/docs/team/wujy28.md b/docs/team/wujy28.md index ae98641939e..39e1605c74b 100644 --- a/docs/team/wujy28.md +++ b/docs/team/wujy28.md @@ -1,7 +1,8 @@ # Jingya's Project Portfolio Page ## Project: Advanced&Efficient (A&E) -Advanced&Efficient helps Emergency Department (ED) doctors in logging patient reports and connecting patients with relevant departments and doctors under time pressure during an emergency. +Advanced&Efficient helps Emergency Department (ED) doctors in logging patient reports and connecting patients with +relevant departments and doctors under time pressure during an emergency. Given below are my contributions to the project. @@ -20,7 +21,7 @@ Given below are my contributions to the project. + Both of these additions allow the program to store the information required for AssignCommand + Added testing for these classes -2. Added the AssignCommand for assigning Patients to Departments +2. Added the AssignCommand for assigning Patients to Departments ([#135](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/135)) + A crucial feature that allows the user to assign a Patient to a Department (i.e. edit the AssignedDepartment field of a Patient) @@ -39,20 +40,20 @@ Given below are my contributions to the project. ### Enhancements To Existing Features 1. Revamped the UI of the program - + Redesigned the UI and created the initial mockup on Figma + + Redesigned the UI and created the initial mockup on Figma ([Image](https://github.com/wujy28/tp/blob/28fc1b9cdd7e0bbc0e7b7548fa900aa404761059/docs/images/Ui.png)) - + Reformatted the UI to accommodate the viewing of patient list and patient record side-by-side, according to the - mockup ([#110](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/110), + + Reformatted the UI to accommodate the viewing of patient list and patient record side-by-side, according to the + mockup ([#110](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/110), [#166](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/166)) - + Added the UI components and controllers for patient record - ([#110](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/110), + + Added the UI components and controllers for patient record + ([#110](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/110), [#173](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/173)) + Added the functionality to view a patient's record by clicking on a patient in the patient list ([#110](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/110)) + Styled the UI using CSS ([#150](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/150)) 2. Added auto-computation behavior for the Age attribute from a Patient + Made modifications to the initially unutilized Age attribute so that it can automatically initialize with the - correct value given a patient's birthday ([#161](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/161), + correct value given a patient's birthday ([#161](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/161), [#162](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/162)) ---- @@ -62,8 +63,8 @@ Given below are my contributions to the project. ### Review/mentoring contributions -+ PRs reviewed (with non-trivial review comments): - [#102](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/102), ++ PRs reviewed (with non-trivial review comments): + [#102](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/102), [#119](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/119), [#145](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/145), [#227](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/227) @@ -71,12 +72,12 @@ Given below are my contributions to the project. ### Contributions to documentation + User Guide - + Added documentation for the features `find` and `sort` + + Added documentation for the features `find` and `sort` ([#171](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/171)) + Added the appendix for the list of available departments ([#171](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/171)) + Developer Guide - + Added implementation details for `assign` feature + + Added implementation details for `assign` feature ([#137](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/137)) + Updated the explanation and class diagram for UI Component section - ([#137](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/137)) \ No newline at end of file + ([#137](https://github.com/AY2324S1-CS2103T-T14-2/tp/pull/137)) diff --git a/src/main/resources/fonts/Doppio_One/OFL.txt b/src/main/resources/fonts/Doppio_One/OFL.txt index 30a5df3a80e..01c92c9a9c3 100644 --- a/src/main/resources/fonts/Doppio_One/OFL.txt +++ b/src/main/resources/fonts/Doppio_One/OFL.txt @@ -1,94 +1,94 @@ -Copyright (c) 2011 by Sorkin Type Co (www.sorkintype.com), -with Reserved Font Name "Doppio". - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. +Copyright (c) 2011 by Sorkin Type Co (www.sorkintype.com), +with Reserved Font Name "Doppio". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/main/resources/fonts/Inter/OFL.txt b/src/main/resources/fonts/Inter/OFL.txt index ad214842c4e..00287df15e3 100644 --- a/src/main/resources/fonts/Inter/OFL.txt +++ b/src/main/resources/fonts/Inter/OFL.txt @@ -1,93 +1,93 @@ -Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. +Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/main/resources/fonts/Space_Grotesk/OFL.txt b/src/main/resources/fonts/Space_Grotesk/OFL.txt index cb512b9af44..d5666d70873 100644 --- a/src/main/resources/fonts/Space_Grotesk/OFL.txt +++ b/src/main/resources/fonts/Space_Grotesk/OFL.txt @@ -1,93 +1,93 @@ -Copyright 2020 The Space Grotesk Project Authors (https://github.com/floriankarsten/space-grotesk) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. +Copyright 2020 The Space Grotesk Project Authors (https://github.com/floriankarsten/space-grotesk) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/main/resources/view/HelpWindow.css b/src/main/resources/view/HelpWindow.css index c848fbbd56d..af58e0c32d1 100644 --- a/src/main/resources/view/HelpWindow.css +++ b/src/main/resources/view/HelpWindow.css @@ -64,4 +64,4 @@ -fx-font-family: "Inter Medium"; -fx-font-size: 13px; -fx-opacity: 1; -} \ No newline at end of file +} diff --git a/src/main/resources/view/MainWindow.css b/src/main/resources/view/MainWindow.css index e565e958a8b..655235629c5 100644 --- a/src/main/resources/view/MainWindow.css +++ b/src/main/resources/view/MainWindow.css @@ -1,16 +1,3 @@ -/*!* MainWindow.css *!*/ - -/*#minimizeButton, #maximizeButton, #closeButton {*/ -/* -fx-background-color: transparent;*/ -/* -fx-text-fill: #B9CCFF;*/ -/* -fx-border-color: transparent;*/ -/* -fx-padding: 5px;*/ -/*}*/ - -/*#minimizeButton:hover, #maximizeButton:hover, #closeButton:hover {*/ -/* -fx-background-color: #888888;*/ -/*}*/ - @font-face { -fx-font-family: 'Inter Medium'; src: url('../fonts/Inter/static/Inter-Medium.ttf'); @@ -40,10 +27,6 @@ -fx-padding: 5px; } -/*#maximizeButton, #minimizeButton:hover {*/ -/* -fx-background-color: rgba(128, 128, 128, 0.34);*/ -/*}*/ - #closeButton { -fx-background-color: transparent; -fx-text-fill: white; @@ -60,4 +43,4 @@ .split-pane:horizontal > .split-pane-divider { -fx-background-color: #B9CCFF; -} \ No newline at end of file +} diff --git a/src/main/resources/view/PatientCard.css b/src/main/resources/view/PatientCard.css index 5b537238e85..1876b898e3f 100644 --- a/src/main/resources/view/PatientCard.css +++ b/src/main/resources/view/PatientCard.css @@ -91,4 +91,4 @@ -fx-border-width: 2px; -fx-border-color: #f57ea9; -fx-background-radius: 2; -} \ No newline at end of file +} diff --git a/src/main/resources/view/PatientListPanel.css b/src/main/resources/view/PatientListPanel.css index 2a7ea9caee0..a5c4f59020e 100644 --- a/src/main/resources/view/PatientListPanel.css +++ b/src/main/resources/view/PatientListPanel.css @@ -59,4 +59,4 @@ -fx-background-color : #7ecfff; -fx-background-insets : 0; -fx-background-radius : 0; -} \ No newline at end of file +} diff --git a/src/main/resources/view/RecordCard.css b/src/main/resources/view/RecordCard.css index 2cb24d7c3e5..159553731ff 100644 --- a/src/main/resources/view/RecordCard.css +++ b/src/main/resources/view/RecordCard.css @@ -161,4 +161,4 @@ -fx-background-color : #7ecfff; -fx-background-insets : 0; -fx-background-radius : 0; -} \ No newline at end of file +} diff --git a/src/main/resources/view/ResultDisplay.css b/src/main/resources/view/ResultDisplay.css index 5d3f579da08..742532cddb4 100644 --- a/src/main/resources/view/ResultDisplay.css +++ b/src/main/resources/view/ResultDisplay.css @@ -83,4 +83,4 @@ -fx-background-color : #7ecfff; -fx-background-insets : 0; -fx-background-radius : 0; -} \ No newline at end of file +} diff --git a/src/test/java/seedu/address/logic/commands/EditCommandTest.java b/src/test/java/seedu/address/logic/commands/EditCommandTest.java index c905214fb7a..8cc6216b91a 100644 --- a/src/test/java/seedu/address/logic/commands/EditCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/EditCommandTest.java @@ -119,18 +119,6 @@ public void execute_duplicatePatientUnfilteredList_failure() { assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PATIENT); } - @Test - public void execute_duplicatePatientFilteredList_failure() throws PatientWithFieldNotFoundException { - showPatientAtIC(model, ALICE.getIcNumber()); - - // edit patient in filtered list into a duplicate in address book - List lastShownList = model.getFilteredPatientList(); - Patient patientInList = model.getPatient(ALICE.getIcNumber(), lastShownList); - EditCommand editCommand = new EditCommand(ALICE.getIcNumber(), - new EditPatientDescriptorBuilder(patientInList).build()); - assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PATIENT); - } - @Test public void execute_invalidPatientIcList_failure() { String invalidIC = "";