PROJECT: NOVA

Overview

NOVA is a desktop application to help CS2103T with event planning and managing schedules.

Summary of contributions

  • Major enhancement: added planner feature

    • What it does: Tracks the progress of user study plan and assists in planning study events based on the tasks inside study plan.

    • Justification: This feature reminds the user of their study progress so that user are able to plan ahead their study events before being distracted by other things and lack behind on their study.

    • Highlights: There’s no need for user to think of the detail (e.g. start time, end time) of the event. User only needs to specify the task and the date, planner will generate a study event on that day based on the task. Due to time constraint of this module, the algorithm for choosing the free slot for generating event is first-fit algorithm for now. More suitable algorithm needs to be developed in the future in order to make it more human-friendly.

  • Major enhancement: added find free slot function

    • What it does: List the free slots in user’s schedule.

    • Justification: This feature is needed due to the fact that we don’t have a schedule GUI. User are unable to grasp when they are free especially when there is many events in their schedule.

  • Minor enhancement:

    • Make dialog window wrap text automatically whenever window is resized. reference: 22

  • Code contributed:

  • Other contributions:

  • Community:

    • Reported bugs and suggestions for other teams in the class: 12

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.

Daily Study Planner (Tan Wah Ken)

Learn how to work with the planner feature in NOVA. You can add daily/weeky tasks into your study plan and schedule it on any day you like hassle-free.

You need to be in planner mode. Enter the planner mode by entering the command nav planner.

planner

Fig 5.4: GUI of NOVA after user typed contact nav planner

Create Routine Task: routine

You can create routine tasks in your study plan. When being scheduled, the tasks will lasts for 30 minutes weekly if possible.

Format:
routine p\[task name] f\[daily/weekly] d\[event duration in minutes]

[event duration in minutes] must be between 0 and 1440

Example:
Suppose you want to create a weekly routine task "read cs2103 textbook",

enter the command: routine p\read cs2103 textbook f\weekly d\30

NOVA will create a new task “read cs2103 textbook”.

Create Flexible Day-Task: flexible

You can create flexible tasks in your study plan, which will create one event per day when being scheduled. When being scheduled, these tasks will create events with duration as long as possible, from 10 minutes to 60 minutes.

Format:
flexible p\[task name] t\[total minutes] mind\[maximum event duration in minutes] maxd\[maximum event duration in minutes]

  • [total minutes] must be greater than [minimum event duration in minutes]

  • [maximum event duration in minutes] must be greater or equal to [minimum event duration in minutes]

  • [minimum event duration in minutes] and [maximum event duration in minutes] must be between 0 and 1440

Example:
Suppose you want to create a flexible task "study vocabulary",

enter the command: flexible p\study vocabulary t\100 mind\10 maxd\60

NOVA will create a new task “study vocabulary”. When being scheduled, this task will create one event “study vocabulary” with duration as long as possible, from 10 minutes to 60 minutes. The total duration of all the event scheduled will not exceed 100 minutes.

Delete task: delete

You can delete a task, and all its related future events.

Format:
delete p\[task name]

Example:
Suppose you want to delete the task "study vocabulary",

enter the command: delete p\study vocabulary

NOVA will delete the task “study vocabulary” and all its related future events.

View Statistics: stats

You can view the statistics of every tasks currently in study plan. The statistics are as follows:

  • For weekly routine task, statistics consists of:

    • Number of weeks completed and incomplete since its creation

    • All the events related to the task

  • For daily routine task, statistics consists of:

    • Number of days done and not done since its creation

    • All the events related to the task

  • For flexible tasks, statistics consists of:

    • Percentage done (Total duration of every event created / Total minutes)

    • All the events related to the task

Format:
stats

NOVA will display the statistics of all the tasks currently in study plan.

Schedule Task: schedule

You can generate an event on a random spot on the specified day according to the requirements of the task if possible. The event is generated on a random slot, you will need to manually modify the event generated if you wish. If it is impossible to schedule an event for the task for that day, you will be notified.

Format:
schedule p\[task name] t\[YYYY-MM-DD]

Example:

  • Suppose you want to schedule the weekly routine task "read cs2103 textbook",

    enter the command: schedule p\read cs2103 textbook t\2020-03-20

    NOVA will finds a free slot bigger than 30 minutes as specified by the task, and creates an event “read cs2103 textbook” that lasts for 30 minutes on a random spot within the free slot.

  • Suppose you want to schedule the flexible task "study vocabulary",

    enter the command: schedule p\study vocabulary t\2020-03-20

    NOVA will finds a free slot bigger than 10 minutes as specified by the task, and creates an event “read cs2103 textbook” on a random spot within the free slot.

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.

View available free slot of a specific day (Tan Wah Ken)

The view free slots feature allows the user to view their available free slots on their schedule.

Implementation

Given below is an example usage scenario and how the view free slot mechanism behaves at each step.

  1. The user keys in 'freeslot t\2020-03-10' into the command box.

  2. The user executes 'freeslot t\2020-03-10' to view the free slots on their schedule on the 10th of March 2020.

  3. 'ScViewFreeSlotCommandParser' creates a new 'ScViewFreeSlotCommand'.

  4. 'LogicManager' executes the 'ScViewFreeSlotCommand'.

  5. 'ModelManger#viewFreeSlot()' is called and the free slots for the day is retrieved.

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

ScViewFreeSlotDiagram

Design Considerations

Aspect: Calculating free slots given a schedule
  • Alternative 1 (current choice): Embeds a free slot data structure to keep track of the free slots whenever events are added

    • Pros: no need to calculate free slots whenever user execute freeslot.

    • Cons: overhead to add event commands, making its execution slower.

  • Alternative 2: Calculates free slot based on the events whenever user executes freeslot

    • Pros: easier to implement.

    • Cons: slower freeslot execution.

Schedule events based on a task in plan (Tan Wah Ken)

The plan feature allows the user to create an event based on the task user created in the plan.

Implementation

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

  1. The user keys in 'schedule p\task name t\2020-03-10' into the command box.

  2. The user executes 'schedule p\task name t\2020-03-10' to create an event "task name" on their schedule on the 10th of March 2020.

  3. 'PlannerScheduleTaskCommandParser' creates a new 'PlannerScheduleTaskCommand'.

  4. 'LogicManager' executes the 'PlannerScheduleTaskCommand'.

  5. 'ModelManger#searchTask()' is called to search for the task user specified.

  6. 'ModelManger#generateTaskEvent()' is called and one event with time determined by algorithm is created on the day in schedule.

The following sequence diagram shows how the schedule task operation works:

PlannerScheduleTaskSequenceDiagram

The following activity diagram summarizes what happens when a user schedules a task:

PlannerScheduleTaskActivityDiagram

Design Considerations

Aspect: Calculating best fit time frame for a task
  • Alternative 1 (current choice): Plan gets free slot from schedule and generate event based on it.

    • Pros: Isolation of modules.

    • Cons: Redundant code.

  • Alternative 2: Schedule decides whether to schedule or discard an event generated from task.

    • Pros: more robust schedule.

    • Cons: more difficult to implement.

|* * * |Student | Add tasks to study plan | Can add study tasks to my study plan

|* * * |Student | Delete tasks on study plan | Can delete study tasks if I don’t need it anymore

|* * * |Student | Generate event from a task | If I feel like I want to do a study task today, I can generate an event on today’s schedule so that I can keep up with my study plan.

|* * |Student | View statistics of my task progress | Can see how much I’ve done for each task on my study plan.

Use case 23: User add a task into study plan.

MSS

  1. User enter command to create a task with name specified by user.

  2. Study Planner of NOVA adds the task into study plan.

    Use case ends.

Extensions

  • 1a. There is already a task with the same name.

  • 1a1. NOVA shows error message.

    Use case ends.

Use case 24: User add a task into study plan

MSS

  1. User enter command to delete a task with name specified by user.

  2. Study Planner of NOVA deletes the task.

    Use case ends.

Extensions

  • 1a. No task with the name specified exists in study plan.

  • 1a1. NOVA shows error message.

    Use case ends.

Use case 25: User view statistics of every tasks in study plan

MSS

  1. User enter command to view statistics of every tasks in study plan.

  2. NOVA calculates and shows all the statistics of every task.

    Use case ends.

Extensions

  • 1a. No task in study plan.

  • 1a1. NOVA shows error message.

    Use case ends.

Use case 26: User schedules a task into a particular day.

MSS

  1. User enter command to schedules a task into a particular day.

  2. NOVA generates and adds the event into schedule.

    Use case ends.

Extensions

  • 1a. Unable to generate event.

  • 1a1. NOVA shows error message.

    Use case ends.