Overview
-
UniLA is a desktop utilities application designed for NUS students who are typing oriented.
-
UniLA provides an efficient and convenient solution for managing contact list and event list, contact interactions, planning meetings, setting up reminders, etc.
-
The application is primarily concerned with CLI (Command Line Interface) Interaction, with a simple and intuitive GUI provided.
Summary of contributions
-
Major enhancement: added the ability to add reminder to event, pop up the reminder and delete reminder
-
What it does: reminds user a certain interval before specific event. And the reminder will be automatically deleted after 1 minutes showing up.
-
Justification: This feature improves the product significantly because event list’s information is too complicated for one to find the most important event. This automatic function can help in reminding the planned thing.
-
Highlights: This enhancement enlarge the functionality of UniLA and requires deep understanding of model and logic design. It also requires connecting with UI and storage parts.
-
-
Minor enhancement: add GUI of reminder function. add loading and saving reminder list.
-
Code contributed: [RepoSense Project Code Dashboard]
-
Other contributions:
-
Project management:
-
Managed releases
v1.2
-v1.3
on GitHub -
Check the developer guide to ensure basic information correctness. Updated User Guide, Developer Guide, About Us pages.
-
Prepare user guide screenshot at the beginning of project.
-
Added issues to issue tracker.
-
Helped teammates with their problems regarding github and the project.
-
-
Enhancements to existing features:
-
AddR command.
-
ListFr and ListR command.
-
DeleteR command.
-
-
Documentation:
-
Update User Guide, Developer Guide and About US page.
-
-
Community:
-
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. |
Reminder Features
Add reminder to certain event : addR
Format: addR EVENT_LIST_INDEX t/INTERVAL u/UNIT
The event with EVENT_LIST_INDEX will be reminded in pop up reminder list (please refer to Showing pop up reminder list : listR
for showing pop up reminder list ) before INTERVAL UNIT earlier than event beginning time
After reminder showing for 1 minute in pop up reminder list(please refer to Showing pop up reminder list : listR
for showing pop up reminder list )
Examples:
-
addR 1 t/3 u/MIN
Adds reminder to the 1st event in the UniLA.
The pop up time of reminder is 3 minutes before event’s beginning time. You can see the pop up reminder.
listR
Show the pop up reminder panel.
listFr
Show the full list of all reminders. You can always see the added reminder underlistFr
.
Deleteing a reminder : deleteR
Delete reminders related to specific event. Or delete specific reminder.
Format: deleteR e/EVENT_LIST_INDEX r/REMINDER_LIST_INDEX
Example1:
-
listE
Find the event index
listFr
Show the full reminder list
deleteR e/2
Delete the reminders related with 2nd event. You can see the full reminder list reduces.
Example2:
-
listFr
Show the full reminder list and find the reminder index
deleteR r/1
Delete the 1st reminder in reminder full list.
Showing pop up reminder list : listR
Show pop up reminder panel.
Examples:
-
listR
-
AddR :
addR EVENT_LIST_INDEX t/INTERVAL u/UNIT
e.g.addR 1 t/3 u/MIN
-
DeleteR :
deleteR e/EVENT_LIST_INDEX r/REMINDER_LIST_INDEX
e.g.deleteR e/2
-
ListFr :
listFr
e.g.listFr
-
ListR :
listR
e.g.listR
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. |
Reminder Component
The mechanism is supported by the reminder
and reminderList
class. It allows users to add reminders to event, which will pop in app certain interval before event start time. Please refer to this class diagram.
reminderList
will keep track of all reminder
.
reminder
class contains Unit
, Interval
to facilitate the constructor building. Please refer to the following class diagram.
Aspect: How to implement reminder
-
Alternative 1 (current choice): Create new model, named
reminder
to includereminder
andreminderList
class.-
Pros: Convenient for modifying because of the relatively loose connection with
event
. -
Cons: Require large change in model.
-
-
Alternative 2: Add another attribute named reminder to record the remind time and we can list the event by sorting remind time.
-
Pros: Easy to implement. Only need
event
andperson
model. -
Cons: Not easy to delete corresponding reminder after its reminding time as it is highly connected with event. Cannot be applied and modified anywhere.
-
Aspect: How to implement reminderList
-
Alternative 1 (current choice): Create only one reminder list for whole
UniLA
.-
Pros: Convenient for adding, deleting, and checking.
-
Cons: Required more connection between logic and model.
-
-
Alternative 2: Create one reminder list for each event for whole
UniLA
.-
Pros: Easy to implement.
-
Cons: Not centered. Need to loop through every event when add, delete and check.
-
Reminder Feature
Please take a look at use case diagram first.
Among these features, the addR
combined with reminderCheck
is the most useful one. The mechanism is supported by ReminderCheck
,AddR
and AddR parser
classes. It allows users to create a reminder in certain interval before event start time.
And the reminder will pop inside app at that reminding time. Also, it will disappear after showing up for one minute.
Given below is an example usage scenario and how the AddR
reminder behaves.
Step 1. The user lists events in address and select the event that the user wants UniLA to remind.
Step 2. User run command addR 2 t/4 u/min
, which will let UniLA add the one 4min-before-starttime reminder to the second event.
Step 3. When the time is up, the reminder pop up under listR
model.
Step 4. After showing up for 1 minute, the reminder will be automatically deleted from the reminder list.
How it works:
-
AddRCommandParser parses
addR
command. The AddRCommandParser will ensure the interval unit and to check possible exceptions. -
Interval and event will be passed to AddRCommand. AddRCommand touched model to create new reminder in reminder list.
-
Another thread named
reminderCheck
will be running at the same time. It will check when to pop up the reminder, and when to make it disappear by comparingthe starting time - interval
withcurrent time
. -
Reminder which satisfies the time requirement will pop up under
listR
model. -
Reminder will be deleted from reminder list after it shows up for 1 minute.
To achieve the reminder check function, another thread is created as the sequence diagram shown below.
PROJECT: PowerPointLabs
{Optionally, you may include other projects in your portfolio.}