Skip to content

Commit

Permalink
Update branch with upstream
Browse files Browse the repository at this point in the history
  • Loading branch information
cmHuang777 committed Nov 9, 2023
2 parents 3ad0124 + 2be2c0a commit 67a44cb
Show file tree
Hide file tree
Showing 12 changed files with 638 additions and 81 deletions.
35 changes: 34 additions & 1 deletion docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ Here's a (partial) class diagram of the `Logic` component:

<img src="images/LogicClassDiagram.png" width="550"/>

The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete 1")` API
The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete NRIC")` API
call as an example.

![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)
Expand Down Expand Up @@ -618,6 +618,39 @@ otherwise)

Use case resumes at step 2.

* 4b. The edited fields include invalid inputs.

* 4b1. Medilink Contacts shows an error message.

Use case resumes at step 2.

**Use case: UC5 - Undo a command**

**MSS**

1. User requests to delete a specific person in the list.
2. Medilink Contacts deletes the person.
3. User realises mistake, requests to undo previous action.
4. Medilink Contacts reverts to state before patient was deleted.

Use case ends.

**Extensions**

* 4a. User wants to redo the command.

* 4a1. User requests to redo last command.
* 4a2. MediLink Contacts reverts to state where patient was deleted.

Use case ends.

* 4b. User wants to perform another undo when there are no further actions to be undone.

* 4b1. User requests to undo again.
* 4b2. Medilink Contacts shows an error message.

Use case ends.

### Non-Functional Requirements

1. Should work on any _mainstream OS_ as long as it has Java `11` or above installed.
Expand Down
58 changes: 44 additions & 14 deletions docs/UserGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ Examples:

### Locating persons by name: `find`

Finds persons that match the query. Supports gender, NRIC and name.
Finds persons that match the query.

Format: `find KEYWORD [MORE_KEYWORDS]`

Expand All @@ -244,26 +244,56 @@ Format: `find KEYWORD [MORE_KEYWORDS]`
* When searching names, only full words will be matched e.g. `Han` will not match `Hans`
* When searching names, Persons matching at least one keyword will be returned (i.e. `OR` search).
e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`
* Other supported attributes like NRIC, Gender and Blood Type will only handle one query `KEYWORD`, anything afterward
is discarded.
* Below we have supported attributes and their example `KEYWORD`.
* Note that if the name coincides with other find commands, it will be interpreted as the other find command first and extraneous paremeters will be ignored. e.g. `find F Kennedy John` will search for all female persons.
* It is recommended to use `list` to restore the view of all data after a `find` command

| Attribute | Example keywords |
|-----------|-----------------|
| NRIC | T1125957G |
| Gender | M |
| Blood Type | Blood Type A+ |
| Name | Travis Kelce

Examples:

* `find John` returns `john` and `John Doe`
* `find alex david` returns `Alex Yeoh`, `David Li`<br>
![result for 'find alex david'](images/findAlexDavidResult.png)
* `find T1125726G` returns the person with the matching NRIC.
* `find kenny pickens` returns `Kenny Pickett`, `George Pickens`<br>
![result for 'find alex david'](images/findpickettpickensresult.png)


### Locating a person by NRIC : `find` ###

Finds person that matches the NRIC query

Format: `find NRIC`

* NRIC input must be capitalised!
* It is recommended to use `list` to restore the view of all data after a `find` command

Examples:

* `find T1125726G` returns the person with the matching NRIC

### Locating people by gender : `find M`, `find F` ###

Finds all persons with matching gender

Format: `find M` or `find F`

* M and F must be capitalised
* It is recommended to use `list` to restore the view of all data after a `find` command

Examples:

* `find M` returns all male persons.

### Locating people by blood types : `find Blood Type` ###

Finds all Patients with query blood type

Format: `find Blood Type QUERY`

* All blood type inputs must be capitalised
* Acceptable blood types are A, A+, B, B+, O, O+, AB and AB+
* It is recommended to use `list` to restore the view of all data after a `find` command

Examples:

* `find Blood Type A+` returns all Patients with blood type A+

### Deleting a person : `delete`

Deletes the specified person from the address book.
Expand Down
8 changes: 4 additions & 4 deletions docs/diagrams/DeleteSequenceDiagram.puml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ box Model MODEL_COLOR_T1
participant ":Model" as Model MODEL_COLOR
end box

[-> LogicManager : execute("delete 1")
[-> LogicManager : execute("delete NRIC")
activate LogicManager

LogicManager -> AddressBookParser : parseCommand("delete 1")
LogicManager -> AddressBookParser : parseCommand("delete NRIC")
activate AddressBookParser

create DeleteCommandParser
Expand All @@ -27,7 +27,7 @@ activate DeleteCommandParser
DeleteCommandParser --> AddressBookParser
deactivate DeleteCommandParser

AddressBookParser -> DeleteCommandParser : parse("1")
AddressBookParser -> DeleteCommandParser : parse("NRIC")
activate DeleteCommandParser

create DeleteCommand
Expand All @@ -49,7 +49,7 @@ deactivate AddressBookParser
LogicManager -> DeleteCommand : execute()
activate DeleteCommand

DeleteCommand -> Model : deletePerson(1)
DeleteCommand -> Model : deletePerson(NRIC)
activate Model

Model --> DeleteCommand
Expand Down
Binary file added docs/diagrams/tracing/DeleteSequenceDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/DeleteSequenceDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/findpickettpickensresult.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 15 additions & 12 deletions docs/team/chonguschonguschongus.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,36 @@ layout: page
title: Isaac's Project Portfolio Page
---

### Project: AddressBook Level 3
### Project: MediLink Contacts

AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.
MediLink Contacts aims to help medical staff including nurses/doctors/pharmacists navigate through patient details in
their high workload and time-pressured working environment. When medical emergencies arise, it becomes crucial to
provide rapid access to emergency contacts for patients and access other details of the patients to make decisions more
quickly. It is optimised for CLI so that users can quickly access the information. There is also a GUI created with
JavaFX.

Given below are my contributions to the project.

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

* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.
* **New Feature**: Enhanced the Find feature to function with NRIC, blood type, gender as well as name.
* What it does: Allows users to search for Patients/Doctors by their NRIC, blood type, gender or simply name
* Justification: Users can search by a specific attribute, increasing convenience

* **New Feature**: Added a Find Appointment function to locate a specific appointment by NRIC of people involved
* **New Feature** Added a Delete Appointment function to delete a specific appointment by NRIC of people involved

* **Code contributed**: [RepoSense link]()

* **Project management**:
* Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub

* **Enhancements to existing features**:
* Wrote an abstract UniqueObjectList that can be inherited to form UniqueLists of Patients, Doctors and Appointments
* Updated the GUI color scheme (Pull requests [\#33](), [\#34]())
* Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\#36](), [\#38]())
* Wrote additional tests for existing features (Pull requests [\#36](), [\#38]())

* **Documentation**:
* User Guide:
* Added documentation for the features `delete` and `find` [\#72]()
* Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\#74]()
* Added documentation for the features `find`, `delete-appt`, `find-appt` [\#72]()
* Developer Guide:
* Added implementation details of the `delete` feature.

Expand Down
41 changes: 21 additions & 20 deletions docs/team/kohkaijie.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,45 @@ layout: page
title: Kai Jie's Project Portfolio Page
---

### Project: AddressBook Level 3
### Project: MediLink Contacts

AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.
MediLink Contacts aims to help medical staff including nurses/doctors/pharmacists navigate through patient details in
their high workload and time-pressured working environment. When medical emergencies arise, it becomes crucial to
provide rapid access to emergency contacts for patients and access other details of the patients to make decisions more
quickly. It is optimised for CLI so that users can quickly access the information. There is also a GUI created with
JavaFX.

Given below are my contributions to the project.

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

* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.
* **New Feature**: Allowed only specific tags to be added for patients and doctors respectively.
* What it does: restricts the user to only enter specific tags for patients and doctors. Patients can only have up to one tag specifying their priority level. Doctors can have up to multiple tags specifying their specialisations.
* Justification: This feature ensures that tags have a clear purpose and users cannot enter tags that do not add value to the patient or doctor (e.g adding Engineer tag for a doctor).
* Highlights: While this enhancement itself did not affect much other commands, the implementation itself was challenging as it required choosing between different implementation methods, and choosing the most future-proof and OOP-friendly one.

* **Code contributed**: [RepoSense link]()
* **Code contributed**: [Link to TP code dashboard](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search=kohkaijie&breakdown=false&sort=groupTitle%20dsc&sortWithin=title&since=2023-09-22&timeframe=commit&mergegroup=&groupSelect=groupByRepos)

* **Project management**:
* Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub
* Managed releases `v1.1` - `v1.3` (3 releases) on GitHub
* Added issues on GitHub for various tasks.

* **Enhancements to existing features**:
* Updated the GUI color scheme (Pull requests [\#33](), [\#34]())
* Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\#36](), [\#38]())
* Created classes for new fields for Patient and Doctor classes.
* Wrote additional tests for existing features such as Patient fields, UndoCommand and Tags.

* **Documentation**:
* User Guide:
* Added documentation for the features `delete` and `find` [\#72]()
* Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\#74]()
* Added documentation for the features `delete` and usage of special tags.
* Developer Guide:
* Added implementation details of the `delete` feature.
* Modified UML diagram for DeleteSequenceDiagram.
* Added Use Case for UndoCommand and extensions for EditCommand.

* **Community**:
* PRs reviewed (with non-trivial review comments): [\#12](), [\#32](), [\#19](), [\#42]()
* Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())
* Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())
* Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())
* **Team-based tasks**:
* Reviewed PRs and approved when needed for merging.

* **Tools**:
* Integrated a third party library (Natty) to the project ([\#42]())
* Integrated a new Github plugin (CircleCI) to the team repo

* _{you can add/remove categories in the list above}_
57 changes: 27 additions & 30 deletions docs/team/mohammed-faizzzz.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,44 +3,41 @@ layout: page
title: Faiz's Project Portfolio Page
---

### Project: AddressBook Level 3
### Project: MediLink Contacts

AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.
MediLink Contacts aims to help medical staff including nurses/doctors navigate through patient details in
their high workload and time-pressured working environment. When medical emergencies arise, it becomes crucial to
provide rapid access to emergency contacts for patients and access other details of the patients to make decisions more
quickly. It is optimised for CLI so that users can quickly access the information. There is also a GUI created with
JavaFX.

Given below are my contributions to the project.

* **New Feature**: Added the ability to undo/redo previous commands.
* What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.
* Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.
* Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.
* Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*
* **Code contributed**:
[Link to TP code dashboard](https://nus-cs2103-ay2324s1.github.io/tp-dashboard/?search=Faiz&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code&since=2023-09-22)

* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.

* **Code contributed**: [RepoSense link]()
* **New Feature**: Created new Doctor class
* Adapted UI and Storage to store Doctors instead of Person
* Changed Person card to Doctor card so that it can get displayed on the UI
* Modified UI to also display Doctors as a List alongside the Patients
* **New Feature**: Modified current add person command to add new Doctor class
* **New Feature**: Created a new Class Appointment to represent an Appointment between a pre-existing Doctor and Patient
* Added `new-appt` command to add new Appointment
* **New Feature**: Updated part of the sample data to include the new features

* **Project management**:
* Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub
* Managed milestones and issues
* Did Peer Reviews on other teammates' Pull Requests
* Resolved Merge Conflicts where applicable

* **Enhancements to existing features**:
* Updated the GUI color scheme (Pull requests [\#33](), [\#34]())
* Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\#36](), [\#38]())
* (to be added soon)

* **Documentation**:
* User Guide:
* Added documentation for the features `delete` and `find` [\#72]()
* Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\#74]()
* Developer Guide:
* Added implementation details of the `delete` feature.

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

* **Tools**:
* Integrated a third party library (Natty) to the project ([\#42]())
* Integrated a new Github plugin (CircleCI) to the team repo

* _{you can add/remove categories in the list above}_
* User Guide:
* Updated existing content to our project
* Added the section on adding new doctors
* Added the section on adding new appointments
* Proofread other sections and added the commands/sample commands to a summary table.


Loading

0 comments on commit 67a44cb

Please sign in to comment.