PROJECT: NOVA

Overview

NOVA is a desktop application to help CS2103T with event planning, managing schedules and keeping track of their project tasks.

Summary of contributions

I am in charge of the Progress Tracker and its features and is a maintainer for the team repo.

  • Major enhancement: I added the ability to add project tasks into individual and team project.

    • What it does: Allows users to add tasks into specific weeks of projects.

    • Justification: This enables users to keep track of the tasks that they need to complete each week for the projects.

    • Highlights: The implementation required thinking of design restrictions such as having only 13 weeks since there are only 13 weeks in a semester before project submission as well as having only two projects in the module.

    • Credits: The parsers used for the commands were modified versions of the parsers from AddressBook 3.

  • Major enhancement: I added the ability to navigate between the different features.

    • What it does: Allows users to navigate to the different features of the application.

    • Justification: This enables the team to reuse command keywords since the parsers and commands can be separate now. This also enables users to receive feature specific information such as specific error messages and helpbox at the side.

    • Highlights: This enhancement affects the parsers and command keywords that is available to the team to use. This also helped reduce the dependency of the different features and helped to link the different customisation and parsers together.

  • Minor enhancement: I added the ability to list tasks from a specific week of the projects. This allows the user to view the tasks that they have added.

  • Minor enhancement: I added the ability to delete tasks. This allows the user to delete the tasks that they have added so that they can fix errors they made.

  • Minor enhancement: I added the ability to edit tasks. This allows the user to edit the tasks that they have added so that they can fix minor errors they made without having to delete and re-add tasks.

  • Minor enhancement: I added the ability to add a note to tasks. This allows users to add additional information to a task.

  • Minor enhancement: I added the ability to delete note to tasks. This allows user to delete note that have been wrongly added.

  • Minor enhancement: I added the ability to edit note added to tasks. This allows user to make corrections to errors in notes without having to delete and re-add a note.

  • Code contributed: (Link to RepoSense) (Link only works on windows pdf viewers. Will not work on safari or preview)

  • Other contributions:

    • Project management:

      • Acted as the main maintainer for team repository and ensured that code quality was up to standard before merging.

    • Enhancements to existing features:

      • Formatted GUI (added help box and the formatting of the components) and changed colour scheme of GUI (#112)

      • Changed the team’s website. Removed unnecessary links and headers (#57)

      • Refactored AB3 storage to better fit the team features (#238).

      • Added Home page and Help message for Home page (#190, #401)

      • Implemented LogicParser class to integrate the different features' parsers (#118)

    • Documentation:

      • Updated the UI class diagram and description in the developer guide.

    • Community:

      • PRs reviewed (with non-trivial review comments): #150, #235

      • Reported bugs and gave suggestions for other teams in the class (examples: 1, 2, 3) (Link 1 and 2 only works on windows pdf viewers. Will not work on safari or preview).

    • Tools:

      • Integrated travis CI into the project (#1).

      • Integrated Netlify into the project.

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.

Progress Tracker (Yap Wen Jun Bryan)

Learn how to work with the progress tracker feature in NOVA. You can track important project tasks by adding them into the progress tracker and manage them easily.

You need to be in Progress Tracker mode. Enter the Progress Tracker mode by entering the command nav progresstracker. Your NOVA should look something like Figure 5.5 below.

progressTracker

Fig 5.5: GUI of NOVA after typing command nav progresstracker

Add Project Task: add

You can add tasks under projects in the progress tracker.

Format:
add p\[ip/tp] w\[week number] d\[task description]

  • Only ip and tp projects are available and are not case-sensitive

  • There are only weeks 1 to 13 in each project

  • When multiple same tags are keyed, the last tag will be taken as the input

  • add is case-sensitive

  • [week number] must be a positive integer (E.g. 1, 2, 3, …)

  • [task description] cannot be empty

Example:
Suppose you want to add a task to week 3 of IP project to remind yourself to do up javaFx,

enter the command: add p\ip w\3 d\Do up javaFx

NOVA will add a task “Do up javaFx” to week 3 of IP in progress tracker.

addPtTaskResult

Fig 5.5.1: Display message after entering add p\ip w\3 d\Do up javaFx

View Project Task: list

You can view tasks under a certain week for projects in the progress tracker.

Format:
list p\[ip/tp] w\[week number]

  • Only ip and tp projects are available and are not case-sensitive

  • There are only weeks 1 to 13 in each project

  • When multiple same tags are keyed, the last tag will be taken as the input

  • list is case-sensitive

  • [week number] must be a positive integer (E.g. 1, 2, 3, …)

Example:
Suppose you would like to view the tasks you have added to week 3 of IP project,

enter the command: list p\ip w\3

NOVA will list the tasks in week 3 of IP project.

listPtTask

Fig 5.5.2: Display message after entering list p\ip w\3

Delete Project Task: delete

You can remove tasks under projects in the progress tracker.

Format: delete p\[ip/tp] w\[week number] t\[task number]

  • Only ip and tp projects are available and are not case-sensitive

  • There are only weeks 1 to 13 in each project

  • When multiple same tags are keyed, the last tag will be taken as the input

  • delete is case-sensitive

  • [week number] must be a positive integer (E.g. 1, 2, 3, …)

  • [task number] must be a positive integer (E.g. 1, 2, 3, …)

Example:
Suppose you wish to delete task number 1 in week 3 of IP project,

enter the command: delete p\ip w\3 t\1

NOVA will delete task 1 in week 3 of IP in progress tracker.

deletePtTaskResult

Fig 5.5.3: Display message after entering delete p\ip w\3 t\1

Complete Tasks: done

You can mark tasks in the progress tracker as done/ not done.

Format:
done p\[ip/tp] w\[week number] t\[task number]

  • Only ip and tp projects are available and are not case-sensitive

  • There are only weeks 1 to 13 in each project

  • When multiple same tags are keyed, the last tag will be taken as the input

  • Calling done on a done task will set it to not done and vice versa

  • done is case-sensitive

  • [week number] must be a positive integer (E.g. 1, 2, 3, …)

  • [task number] must be a positive integer (E.g. 1, 2, 3, …)

Example:
Suppose you wish to set task number 1 in week 3 of IP project as done or undone,

enter the command: done p\ip w\3 t\1

NOVA will set task 1 in week 3 of IP in progress tracker as done/undone depending on it’s status originally.

setDonePtTaskResult

Fig 5.5.4: Display message after entering done p\ip w\3 t\1

Add Notes: addNote

You can add notes to project tasks in the progress tracker.

Format:
addNote p\[ip/tp] w\[week number] t\[task number] d\[note]

  • Only ip and tp projects are available and are not case-sensitive

  • There are only weeks 1 to 13 in each project

  • When multiple same tags are keyed, the last tag will be taken as the input

  • addNote is case-sensitive

  • [week number] must be a positive integer (E.g. 1, 2, 3, …)

  • [task number] must be a positive integer (E.g. 1, 2, 3, …)

  • [note] cannot be empty

Example:
Suppose you wish to add a note to remind yourself to create a branch and tag for task number 2 in week 3 of IP project,

enter the command: addNote p\ip w\3 t\1 d\Need create branch and tag

NOVA will add a note “Need create branch and tag” to task 1 in week 3 of IP.

addPtNote

Fig 5.5.5: Display message after entering addNote p\ip w\3 t\1 d\Need create branch and tag

Edit Note: editNote

You can edit the note that you have added to tasks in projects in the progress tracker.

Format:
editNote p\[ip/tp] w\[week number] t\[task number] d\[new note]

  • Only ip and tp projects are available and are not case-sensitive

  • There are only weeks 1 to 13 in each project

  • When multiple same tags are keyed, the last tag will be taken as the input.

  • editNote is case-sensitive

  • [week number] must be a positive integer (E.g. 1, 2, 3, …)

  • [task number] must be a positive integer (E.g. 1, 2, 3, …)

  • [new note] cannot be empty

Example:
Suppose you wish to edit the note added in task 1 of week 3 in IP project,

enter the command: editNote p\ip w\3 t\1 d\consult tutor

NOVA will edit the note under task 1 of week 3 of IP.

editPtNote

Fig 5.5.6: Display message after entering editNote p\ip w\3 t\1 d\consult tutor

Delete Note: deleteNote

You can delete the note that you have added to tasks in projects in the progress tracker.

Format:
deleteNote p\[ip/tp] w\[week number] t\[task number]

  • Only ip and tp projects are available and are not case-sensitive

  • There are only weeks 1 to 13 in each project

  • When multiple same tags are keyed, the last tag will be taken as the input.

  • deleteNote is case-sensitive

  • [week number] must be a positive integer (E.g. 1, 2, 3, …)

  • [task number] must be a positive integer (E.g. 1, 2, 3, …)

Example:
Suppose you wish to delete the note added in task 1 of week 3 in IP project,

enter the command: deleteNote p\ip w\3 t\1

NOVA will delete the note under task 1 of week 3 of IP.

deletePtNote

Fig 5.5.7: Display message after entering deleteNote p\ip w\3 t\1

Mode Command Description

Progress Tracker

add p\[ip/tp] w\[week number] d\[task description]

Adds a task to the specified week and project

list p\[ip/tp] w\[week number]

Lists the tasks that have been added to the specified week and project

delete p\ip w\3 t\3

Deletes the specified task

done p\[ip/tp] w\[week number] t\[task number]

Sets the status of the specified task to done/undone

addNote p\[ip/tp] w\[week number] t\[task number] d\note

Adds a note to the specified task

editNote p\[ip/tp] w\[week number] t\[task number] d\[new note]

Overwrites the existing note with the new note

deleteNote p\[ip/tp] w\[week number] t\[task number]

Deletes the note in the specified task

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.

UI component (Yap Wen Jun Bryan)

UiClassDiagram
Figure 1. Structure of the UI Component

API : Ui.java

The UI consists of a MainWindow that is made up of parts e.g.CommandBox, ResultDisplay and HelpBox. All these, including the MainWindow, inherit from the abstract UiPart class.

The UI component uses JavaFx UI framework. The layout of these UI parts are defined in matching .fxml files (HelpBox does not have a .fxml file) that are in the src/main/resources/view folder. For example, the layout of the MainWindow is specified in MainWindow.fxml

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.

List tasks under IP project (Yap Wen Jun Bryan)

The list tasks feature for the IP project allows the user to view a list of tasks that were added.

Implementation

Given below is an example usage scenario and how the list tasks mechanism behaves at each step.

  1. The user keys in list p\ip w\2 into the command box.

  2. The user executes list p\ip w\2 to view the list of tasks in week 2 of the IP project.

  3. PtListCommandParser creates a new PtListCommand.

  4. LogicManager executes the PtListCommand.

  5. Model#listTasks() is called and the list of tasks is retrieved.

The following sequence diagram shows how the list tasks operation works:

PtSeqDiagram

The following activity diagram shows what happens when a user inputs a list command:

ListPtActivityDiagram

Design Considerations

Aspect: Adding choice of week to view tasks

  • Alternative 1 (current choice): adding in choice of week to view tasks

    • Pros: more freedom to choose what to see as a user

    • Cons: longer command to type

  • Alternative 2: listing out the whole project tasks rather than letting user choose based on week

    • Pros: shorter command to type and user can see all their tasks at once

    • Cons: if user wants to see tasks only for a specific week will be harder to scroll and find

Priority As a …​ I can …​ So that I …​

* * *

forgetful student

keep track of my project tasks

make sure all my project tasks are completed on time

* * *

student

mark tasks as done

track how many tasks I have finished

* * *

student

view tasks added

see the tasks I have to finish

* * *

student

add notes to project tasks

keep track of details regarding the tasks

* * *

student

delete project tasks

remove unwanted project tasks from the tracker

* * *

student

add project tasks

keep track of those project tasks

* * *

student

delete notes

remove unwanted notes from tasks

* *

lazy student

edit project tasks

can correct mistakes made to task descriptions with little effort

* *

lazy student

edit notes to project tasks

can correct mistakes made to notes with little effort

Use case 13: Add task to a project of progress tracker (Yap Wen Jun Bryan)

MSS

  1. User enter command to add task to a project.

  2. Progress tracker adds task to the project.

    Use case ends.

Extensions

  • 1a. No such project exist.

  • 1a1. NOVA shows an error message.

    Use case ends.

Use case 14: Edit a task (Yap Wen Jun Bryan)

MSS

  1. User enter command to edit task.

  2. Progress tracker replaces old task description with new description.

    Use case ends.

Extensions

  • 1a. No such task exist.

  • 1a1. NOVA shows an error message.

    Use case ends.

Use case 15: Delete a task (Yap Wen Jun Bryan)

MSS

  1. User enter command to delete task.

  2. Progress tracker deletes task.

    Use case ends.

Extensions

  • 1a. Task to be deleted does not exist.

  • 1a1. NOVA shows error message.

    Use case ends.

Use case 16: List tasks in a week of a project (Yap Wen Jun Bryan)

MSS

  1. User enter command to list tasks.

  2. Progress tracker lists task.

    Use case ends.

Extensions

  • 1a. No such tasks exists in the week specified.

  • 1a1. NOVA shows error message.

    Use case ends.

Use case 17: Set an added task as done (Yap Wen Jun Bryan)

MSS

  1. User enter command to set task as done.

  2. Progress tracker sets task as done.

    Use case ends.

Extensions

  • 1a. No such tasks exists.

  • 1a1. NOVA shows error message.

    Use case ends.

Use case 18: Add notes to a task in progress tracker (Yap Wen Jun Bryan)

MSS

  1. User enter command to add notes to the project task.

  2. Progress tracker adds notes to the project task.

    Use case ends.

Extensions

  • 1a. No such project task exist.

  • 1a1. NOVA shows an error message.

    Use case ends.

Use case 19: Edit a note (Yap Wen Jun Bryan)

MSS

  1. User enter command to edit note.

  2. Progress tracker replace old note with new note.

    Use case ends.

Extensions

  • 1a. No prior note was added.

  • 1a1. NOVA shows an error message.

    Use case ends.

Use case 20: Delete a note (Yap Wen Jun Bryan)

MSS

  1. User enter command to delete note.

  2. Progress tracker deletes note.

    Use case ends.

Extensions

  • 1a. Note to be deleted does not exist.

  • 1a1. NOVA shows error message.

    Use case ends.

Shutdown (Yap Wen Jun Bryan)

  1. Exiting the application

    1. Enter exit in the command line.

Adding a project task in Progress Tracker (Yap Wen Jun Bryan)

  1. Enter progress tracker mode via nav progresstracker

  2. Adding a project task

    1. Test case: add p\ip w\1 d\new task
      Expected: New project task with description "new task" is added to IP project week 1. Message showing successful execution is shown.

    2. Test case: add p\ip w\14 d\new task
      Expected: No new project task is added. Error details shown in the status message.

    3. Other incorrect add commands to try: add, add p\ppp w\1 d\new task.
      Expected: Similar to previous.

Saving data (Yap Wen Jun Bryan)

  1. Dealing with corrupted data file

    1. Edit the Nova data file to contain invalid data.
      Example: Adding a @ to a week in a ptTask.

    2. Run the application. The application should start with an empty Nova data file.

  2. Dealing with missing data file

    1. Delete the current Nova data file.

    2. Run the application. The application should start with a sample Nova data file with pre-included data.