Overview
This portfolio is a summary of my contributions to Project NOVA.
NOVA is a desktop application that acts as a one stop study aid platform, intended to help CS2103T students with event planning, managing schedules and tracking of their projects.
The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 17 kLoC.
Summary of contributions
This section shows a summary of my coding, documentation and other contributions to the project.
-
Major enhancement: I added the ability to add events, namely consultations, meetings, study sessions and lessons.
-
What it does: Allows user to add events to their schedule.
-
Justification: This enables the user to keep track of the various events they have to attend.
-
Highlights: It was necessary to ensure that the user did not add an event with the same date and time slot as an already existing event. Hence, implementation of the adding of events had to be done carefully. The events also had to be sorted in chronological order.
-
Credits: The parsing of the commands made use of the Address Book 3 code with some modifications.
-
-
Minor enhancement: I added the ability to delete events.
-
What it does: Allows user to delete events from their schedule.
-
Justification: This enables the user to remove any events that they no longer wish to have.
-
Credits: The parsing of the command made use of the Address Book 3 code with some modifications.
-
-
Minor enhancement: I added the ability to add notes to events.
-
What it does: Allows user to add notes to specific events in their schedule.
-
Justification: This enables the user to take down any important details e.g. significant points made in meetings so that they do not forget them.
-
Credits: The parsing of the command made use of the Address Book 3 code with some modifications.
-
-
Code contributed: Please click these links to see samples of my code: Code Dashboard
-
Other contributions:
-
Project management:
-
Acted as the secondary maintainer - helped to maintain the team repository and facilitated merging of Pull Requests from Week 11 to 13.
-
-
Enhancements to existing features:
-
Updated the GUI layout to make the panels aligned (#344)
-
-
Documentation:
-
Helped to enable auto-publishing of documentation on GitHub Pages via Travis.
-
Updated Contact Us page. (#8)
-
Updated Logic Component of Developer Guide, as mentioned below.
-
-
Community:
-
If Link 2 does not work: https://github.com/nus-cs2103-AY1920S2/addressbook-level3/pull/14#pullrequestreview-370050890
If Link 3 does not work: https://github.com/nus-cs2103-AY1920S2/addressbook-level3/pull/14#pullrequestreview-382543444
Contributions to the User Guide
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
Add a Meeting: meeting
(Chua Huixian)
You can add a meeting as one of your events. If there is already an event in the time slot, NOVA will inform you.
Format: meeting d\[description] v\[venue] t\[YYYY-MM-DD] [Start time (HH:MM)] [End time (HH:MM)]
|
Example:
Suppose you wish to add a project meeting into your schedule, which is from 2pm to 3pm on 20 Feb 2020,
enter the command: meeting d\CS2103T website set-up v\COM1 t\2020-02-20 14:00 15:00
NOVA will create an event for a team meeting at COM1 on 20 Feb 2020 to set up CS2103T website from 2pm to 3pm.
Fig 5.3.1: Display message after entering
meeting d\CS2103T website set-up v\COM1 t\2020-02-20 14:00 15:00
Add a Study Session: study
(Chua Huixian)
You can add a study session as one of your events. If there is already an event in the time slot, NOVA will inform you.
Format: study d\[description] v\[venue] t\[YYYY-MM-DD] [Start time (HH:MM)] [End time (HH:MM)]
|
Example:
Suppose you wish to add a group study session from 4pm to 5pm on 20 Feb 2020,
enter the command: study d\cool peeps revision v\COM1 t\2020-02-20 16:00 17:00
NOVA will create an event for study session at COM1 on 20 Feb 2020 from 4pm to 5pm.
Fig 5.3.2: Display message after entering
study d\cool peeps revision v\COM1 t\2020-02-20 16:00 17:00
Add a Consultation Session: consultation
(Chua Huixian)
You can add a consultation session as one of your events. If there is already an event in the time slot, NOVA will inform you.
Format: consultation d\[description] v\[venue] t\[YYYY-MM-DD] [Start time (HH:MM)] [End time (HH:MM)]
|
Example:
Suppose you wish to add a consultation session from 3pm to 4pm on 20 Feb 2020,
enter the command: consultation d\clarify UML v\COM1 t\2020-02-20 15:00 16:00
NOVA will create an event for consultation at COM1 on 20 Feb 2020 to clarify UML from 3pm to 4pm.
Fig 5.3.3: Display message after entering
consultation d\clarify UML v\COM1 t\2020-02-20 15:00 16:00
Add a Lesson: lesson
(Chua Huixian)
You can add weekly lessons as one of your events. If there is already an event in the time slot, NOVA will inform you.
Format: lesson d\[description] v\[venue] t\[day] [Start time (HH:MM)] [End time (HH:MM)]
|
Example:
Suppose you wish to add a weekly lesson from 3pm to 4pm on Friday,
enter the command: lesson d\CS2103T tutorial v\COM1-B103 t\Friday 15:00 16:00
NOVA will create weekly events for CS2103T tutorial at COM1-B103 on Friday from 3pm to 4pm for the entire semester.
Fig 5.3.4: Display message after entering
lesson d\CS2103T tutorial v\COM1-B103 t\Friday 15:00 16:00
Delete Event: delete
(Chua Huixian)
You can delete an event that you no longer want. If the event does not exist, NOVA will inform you.
Format: delete t\[YYYY-MM-DD] i\[index]
|
Example:
Suppose you wish to remove the second event from the list of events on 20 Feb 2020,
enter the command: delete t\2020-02-20 i\2
NOVA will delete the second event on 20 Feb 2020.
Fig 5.3.5: Display message after entering delete t\2020-02-20 i\2
Add Notes to Event: note
(Chua Huixian)
You can add additional notes about an event. If the event does not exist, NOVA will inform you.
Format: note d\[description] t\[YYYY-MM-DD] i\[index]
|
Example:
Suppose you wish to add a note that indicates the work allocation to a meeting event,
enter the command: note d\Alice - Contact Us page, Bob - Readme Page t\2020-02-20 i\1
NOVA will add a note with the description "note d\Alice - Contact Us page, Bob - Readme Page t\2020-02-20 i\1" to the first event on 20 Feb 2020.
Fig 5.3.6: Display message after entering
note d\Alice - Contact Us page, Bob - Readme Page t\2020-02-20 i\1
Contributions to the Developer Guide
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |
1. The Logic component section under Design. |
Logic component (Chua Huixian)
API :
Logic.java
-
Logic
uses theLogicParser
class to determine which mode the user is in when they input a command. -
After which, the relevant parser is called (e.g.
AddressBookParser
). -
This results in a
Command
object which is executed by theLogicManager
. -
The command execution can affect the
Model
(e.g. adding a person). -
The result of the command execution is encapsulated as a
CommandResult
object which is passed back to theUi
. -
In addition, the
CommandResult
object can also instruct theUi
to perform certain actions, such as displaying help to the user.
2. The Manage Events section under Implementation. |
Manage Events (Chua Huixian)
The manage events feature handles the events of the user, including meetings, consultations, study sessions and lessons. Users are able to:
-
add events
-
delete events
-
add notes to events
Implementation - Deleting an event
The delete feature allows users to remove events from the schedule.
This feature is facilitated by ScheduleParser
, EventDeleteCommandParser
and EventDeleteCommand
.
The operation is exposed in the Model
interface as Model#deleteEvent()
.
Given below is an example usage scenario and how the delete mechanism behaves at each step.
-
The user does
view t\2020-03-20
to view their events on 20th March 2020. -
The user executes
delete t\2020-03-20 i\2
command to delete the second event on 20th March 2020. -
EventDeleteCommandParser
creates a newEventDeleteCommand
. -
LogicManager
executes theEventDeleteCommand
. -
Model#deleteEvent()
is called, and theSchedule
object inModelManager
is updated.
The following sequence diagram shows how the delete operation works:
The following activity diagram shows what happens when a user inputs a delete command:
Design Considerations
Aspect: Syntax of Deleting an Event
-
Alternative 1 (current choice): choosing the event by its date and its index in the list of events on that date
-
Pros: relatively short to type, greater ease of implementation
-
Cons: users have to view the list of events on that date before determining which event to mark as done
-
-
Alternative 2: choosing the event by description
-
Pros: more recognisable for users
-
Cons: difficulty in implementing as certain events may have the exact same descriptions
-
3. The User Stories for events under Appendix B. |
Priority | As a … | I can … | So that I … |
---|---|---|---|
|
student |
create meeting events |
can keep track of my schedule |
|
student |
create study session events |
can keep track of my schedule |
|
student |
create consultation events |
can keep track of my schedule |
|
student |
create lesson events |
can keep track of my schedule |
|
student |
note down the location of the meeting |
know where to go |
|
student |
delete events |
can get rid of events that I do not need anymore |
|
student |
add notes to events |
can jot down additional details about the events |
|
student |
mark events as done |
know which events I have completed |
|
student |
find events |
can check if I have any specific events according to keyword(s) |
|
student |
repeat events |
can add multiple similar events at one go |
4. The Use Cases for events under Appendix C. |
Use case 10: Adding a consultation event (Chua Huixian)
MSS
-
Student enters consultation command with details of the consultation
-
NOVA adds consultation event to the schedule
Use case ends.
Extensions
-
1a. NOVA detects error in data inputted
-
1a1. NOVA informs student of the error
Use case ends.
-
Use case 11: Delete an event (Chua Huixian)
MSS
-
Student enters delete command with details of the event
-
NOVA deletes the event
Use case ends.
Extensions
-
1a. NOVA cannot find the event given
-
1a1. NOVA informs student that the event does not exist
Use case ends.
-
Use case 12: Adding a note to an event (Chua Huixian)
MSS
-
Student enters note command with details of the event
-
NOVA adds note to the event
Use case ends.
Extensions
-
1a. NOVA cannot find the event given
-
1a1. NOVA informs student that the event does not exist
-
4. The Manual Testing for events under Appendix F. |
Adding an event (Chua Huixian)
-
Enter schedule mode via
nav schedule
-
Adding an event
-
Test case:
meeting d\DG Meeting v\COM1 t\2020-03-13 13:00 14:00
Expected: A meeting event will be added to the schedule. The details of the meeting will be displayed. -
Test case:
meeting d\DG Meeting v\COM1 t\2020-03-13 14:00 12:00
Expected: Error message is shown. The end time must be later than start time. -
Other incorrect commands to try:
meeting
,meeting d\DG Meeting v\COM1 t\2020-03-13 14:00
.
Expected: Error messages will be shown as well.
-