Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed UI and updated UGDG #199

Merged
merged 14 commits into from
Nov 7, 2019
4 changes: 2 additions & 2 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ Run the program then, try typing the following commands:
# Adds a Patient with details
$ add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01

# Adds a visitation report
$ addVisit n/Betsy Crowe t/12/12/12 e/Betsy@example.com
# Adds a visitation report for patient at position 1 on 12th December 2019
$ addvisit 1 v/12/12/2019

# Find all patients matched to the query 'Betsy'
$ find Betsy
Expand Down
46 changes: 27 additions & 19 deletions docs/DeveloperGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ The *_Architecture Diagram_* given above explains the high-level design of the A
The `.puml` files used to create diagrams in this document can be found in the link:{repoURL}/tree/master/docs/diagrams/[diagrams] folder.
Refer to the <<UsingPlantUml#, Using PlantUML guide>> to learn how to create and edit diagrams.

`Main` has two classes called link:{repoURL}/tree/master/src/main/java/seedu/address/Main.java[`Main`] and link:{repoURL}/tree/master/src/main/java/seedu/address/MainApp.java[`MainApp`]. It is responsible for,
`Main` has two classes called link:{repoURL}/tree/master/src/main/java/unrealunity/visit/Main.java[`Main`] and link:{repoURL}/tree/master/src/main/java/unrealunity/visit/MainApp.java[`MainApp`]. It is responsible for,

* At app launch: Initializes the components in the correct sequence, and connects them up with each other.
* At shut down: Shuts down the components and invokes cleanup method where necessary.
Expand Down Expand Up @@ -75,13 +75,15 @@ The sections below give more details of each component.
=== UI component

.Structure of the UI Component
image::UiClassDiagram.png[]
image::NewUiClassDiagram.png[]

*API* : link:{repoURL}/tree/master/src/main/java/seedu/address/ui/Ui.java[`Ui.java`]
*API* : link:{repoURL}/tree/master/src/main/java/unrealunity/visit/ui/Ui.java[`Ui.java`]

The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class.
The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `ReminderPanel`, etc.
All these, including the `MainWindow`, inherit from the abstract `UiPart` class.
Other UI parts such as HelpWindow, VisitRecordWindow, are not displayed as UI elements in the MainWindow but opens up through a command entered.

The `UI` component uses JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the link:{repoURL}/tree/master/src/main/java/seedu/address/ui/MainWindow.java[`MainWindow`] is specified in link:{repoURL}/tree/master/src/main/resources/view/MainWindow.fxml[`MainWindow.fxml`]
The `UI` component uses JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the link:{repoURL}/tree/master/src/main/java/unrealunity/visit/ui/MainWindow.java[`MainWindow`] is specified in link:{repoURL}/tree/master/src/main/resources/view/MainWindow.fxml[`MainWindow.fxml`]

The `UI` component,

Expand All @@ -96,7 +98,7 @@ The `UI` component,
image::LogicClassDiagram.png[]

*API* :
link:{repoURL}/tree/master/src/main/java/seedu/address/logic/Logic.java[`Logic.java`]
link:{repoURL}/tree/master/src/main/java/unrealunity/visit/logic/Logic.java[`Logic.java`]

. `Logic` uses the `AddressBookParser` class to parse the user command.
. This results in a `Command` object which is executed by the `LogicManager`.
Expand All @@ -115,13 +117,13 @@ NOTE: The lifeline for `DeleteCommandParser` should end at the destroy marker (X
=== Model component

.Structure of the Model Component
image::ModelClassDiagram.png[]
image::NewModelClassDiagram.png[]

*API* : link:{repoURL}/tree/master/src/main/java/seedu/address/model/Model.java[`Model.java`]
*API* : link:{repoURL}/tree/master/src/main/java/unrealunity/visit/model/Model.java[`Model.java`]

The `Model`,

* stores a `UserPref` object that represents the user's preferences.
* stores a `UserPref` object that represents the user's preferences, alias and appointments.
* stores the Address Book data.
* exposes an unmodifiable `ObservableList<Person>` and `ObservableList<Appointment>` 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 changes.
* does not depend on any of the other three components.
Expand All @@ -135,9 +137,9 @@ image:BetterModelClassDiagram.png[]
=== Storage component

.Structure of the Storage Component
image::StorageClassDiagram.png[]
image::NewStorageClassDiagram.png[]

*API* : link:{repoURL}/tree/master/src/main/java/seedu/address/storage/Storage.java[`Storage.java`]
*API* : link:{repoURL}/tree/master/src/main/java/unrealunity/visit/storage/Storage.java[`Storage.java`]

The `Storage` component,

Expand All @@ -147,7 +149,7 @@ The `Storage` component,
[[Design-Commons]]
=== Common classes

Classes used by multiple components are in the `seedu.addressbook.commons` package.
Classes used by multiple components are in the `unrealunity.visit.commons` package.

== Implementation

Expand Down Expand Up @@ -435,30 +437,36 @@ If the user executes `deletevisit 1` instead, the index value will be set to `-1

[[uiImplementation]]
//tag::guiredesign[]
=== [Proposed] GUI Redesign
=== GUI Redesign
The GUI Redesign is done to include the new features made for the VISIT application, as well as improve the overall
user experience with a easily readable interface that displays every important information in a glance.

==== Current Implementation
The current redesign of the GUI includes the addition of:

* the `ReminderPanel` to display upcoming appointments
* the `VisitRecordWindow` form for the user to enter the required information (as mentioned in Visitation Report feature)
* the `VisitListPanel` to display the visit reports stored in a patient's profile. (as mentioned in Visitation Report feature)
* the `VisitRecordWindow` form for the user to enter the required information. (as mentioned in Visitation Report feature)
* the `ProfileWindow` to display the full profile information of a patient.
* the `MotdWindow` to display the appointments in a new window. Motd stands for Message of the Day.

In addition to these, VISIT's CSS theme is updated to fit current standards of GUI design,
with a more pronounced color palette and a clearer font.

The following is the updated class diagram of the Ui Component from these changes:
The following is the snippet of the class diagram of the Ui Component with the new Classes:

image::UiRedesignClassDiagram.png[]

1. The MainWindow has been updated to include the ReminderPanel
2. Two new Windows, VisitRecordWindow and ProfileWindow, are in use in addition to the MainWindow
1. The `MainWindow` has been new panel which is the ReminderPanel.
2. Three new Windows, `VisitRecordWindow`, `ProfileWindow` and `MotdWindow`, are in use in addition to the MainWindow.
These windows are opened through their respective commands.
3. `ReminderCard` and `VisitCard` gets its data from Model, similar to PersonCard.

==== Future Implementation
==== Future implementation

<to be added>
For future GUI design considerations in v2.0 and above, the panels of each feature such as `PersonListPanel` and `ReminderPanel` can be
separated by tabs, through a dashboard interface. This allows more information to be displayed within each tab, allowing
users to work with more data.

//end::guiredesign[]

Expand Down
25 changes: 16 additions & 9 deletions docs/UserGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -77,17 +77,17 @@ Format: `exit`
=== *Viewing and Managing Patients*

====
VISIT can store all the patient information for doctors to have them easily accessible. The following commands enable doctors to be able to add patients and their relevant particulars to be tracked by VISIT, and also view a list of patients that have been entered.
VISIT can store all the patient information for doctors for easy access. The following commands enable doctors to be able to add patients and their relevant particulars to be tracked by VISIT, and also view a list of patients that have been entered.
====

==== Listing all patients : `list`

Shows a list of all patients in the address book. +
Shows a list of all patients in the Patients dashboard. Used after a search function to return back to the full list. +
Format: `list`

==== Adding a patient : `add`

Adds a patient to VISIT's address book. +
Adds a patient to the Patients list. +
Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...`

[TIP]
Expand All @@ -100,7 +100,7 @@ A patient can have any number of tags (including 0). Tags will be appear in lowe

==== Editing a patient's particulars : `edit`

Edits an existing patient in the address book. +
Edits an existing patient in the Patients list. +
Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]...`

****
Expand Down Expand Up @@ -162,7 +162,7 @@ Opens up a pop-up panel detailing the profile of the patient with the index of 2
// tag::delete[]
==== Deleting a patient : `delete`

Deletes the specified patient from the address book. +
Deletes the specified patient from the Patients list. +
Format: `delete INDEX`

****
Expand All @@ -175,15 +175,15 @@ Format: `delete INDEX`

* `list` +
`delete 2` +
Deletes the 2nd patient in the address book.
Deletes the 2nd patient in the list.
* `find Betsy` +
`delete 1` +
Deletes the 1st patient in the results of the `find` command.

// end::delete[]
==== Clearing all patient data : `clear`

Clears all entries from the address book. +
Clears all entries from the Patients list. +
Format: `clear`

[WARNING]
Expand Down Expand Up @@ -437,6 +437,13 @@ Microsoft Azure is a popular Cloud Computing platform that allows for data analy
authentication resources. We plan to leverage this power in VISIT v2.0 so that doctors may securely access
VISIT from any location, truly bringing VISIT on-the-go.

==== Improved UI `[Coming in v2.0]`

With more features being added in v2.0, the UI will be reworked to allow new and old features to have
great accessibility and usability. The new UI will utilise a dashboard system so that Doctors
are able to view more information as we scale up VISIT's functionality. Each tab in the dashboard
will represent a feature, i.e. The Appointment list will be a tab containing a Calendar view that
tracks reminders and followups by the date and time, with a pop up notification on launch and near deadlines.

== FAQ

Expand Down Expand Up @@ -472,9 +479,9 @@ e.g. `delete 2`

* *Adding a new visitation report for a patient* : `addvisit INDEX [v/DATE]` +
e.g. `addvisit 1 v/19/10/2019`
* *Editing the particulars of a visitation report* : `editvisit INDEX [i/REPORT INDEX]` +
* *Editing the particulars of a visitation report* : `editvisit INDEX [i/REPORT_INDEX]` +
e.g. `editvisit 1 i/1`
* *Deleting a visitation report* : `deletevisit INDEX [d/REPORT INDEX]` +
* *Deleting a visitation report* : `deletevisit INDEX [d/REPORT_INDEX]` +
e.g. `deletevisit 1 d/1`

=== *Appointment System*
Expand Down
73 changes: 73 additions & 0 deletions docs/diagrams/NewModelClassDiagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
@startuml
!include style.puml
skinparam arrowThickness 1.1
skinparam arrowColor MODEL_COLOR
skinparam classBackgroundColor MODEL_COLOR

Package Model <<Rectangle>>{
Interface ReadOnlyAddressBook <<Interface>>
Interface Model <<Interface>>
Interface ObservableList <<Interface>>
Class AddressBook
Class ReadOnlyAddressBook
Class Model
Class ModelManager
Class UserPrefs
Class ReadOnlyUserPrefs

Package Person {
Class Person
Class Address
Class Email
Class Name
Class Phone
Class UniquePersonList
Class VisitList
}

Package Appointment {
Class Appointment
Class AppointmentTable
}

Package Alias {
Class AliasTable
}

Package Tag {
Class Tag
}
}

Class HiddenOutside #FFFFFF
HiddenOutside ..> Model

AddressBook .up.|> ReadOnlyAddressBook

ModelManager .up.|> Model
Model .right.> ObservableList
ModelManager o--> "1" AddressBook
ModelManager o-right-> "1" UserPrefs
UserPrefs .up.|> ReadOnlyUserPrefs

UserPrefs *--> "1" AppointmentTable
UserPrefs *--> "1" AliasTable
AppointmentTable *--> "*" Appointment

AddressBook *--> "1" UniquePersonList
UniquePersonList o--> "*" Person
Person *--> Name
Person *--> Phone
Person *--> Email
Person *--> Address
Person *--> VisitList
Person *--> "*" Tag

Name -[hidden]right-> Phone
Phone -[hidden]right-> Address
Address -[hidden]right-> Email
Email -[hidden]right-> VisitList

ModelManager -->"1" Person : filtered list
ModelManager -->"1" Appointment : filtered list
@enduml
25 changes: 25 additions & 0 deletions docs/diagrams/NewStorageClassDiagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
@startuml
!include style.puml
skinparam arrowThickness 1.1
skinparam arrowColor STORAGE_COLOR
skinparam classBackgroundColor STORAGE_COLOR

Interface Storage <<Interface>>
Interface UserPrefsStorage <<Interface>>
Interface AddressBookStorage <<Interface>>

Class StorageManager
Class JsonUserPrefsStorage
Class JsonAddressBookStorage

StorageManager .left.|> Storage
StorageManager o-right-> UserPrefsStorage
StorageManager o--> AddressBookStorage

JsonUserPrefsStorage .left.|> UserPrefsStorage
JsonAddressBookStorage .left.|> AddressBookStorage
JsonAddressBookStorage .down.> JsonSerializableAddressBookStorage
JsonSerializableAddressBookStorage .right.> JsonSerializablePerson
JsonSerializablePerson .down.> JsonAdaptedTag
JsonSerializablePerson .down.> JsonAdaptedVisit
@enduml