PROJECT: UniLA


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:

      • PRs reviewed (with non-trivial review comments): #104

      • Reported bugs and suggestions for other teams in the class: #77, #74, #72,https://github.com/CS2103-AY1819S2-T12-2/main/issues/69[#69] {you can add/remove categories in the list above}

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 )

  • Reminder will pop up at INTERVAL UNIT before event’s beginning.

  • EVENT_LIST_INDEX refers to index number shown in the displayed Event List

  • EVENT_LIST_INDEX must be a positive integer 1,2,3,4,…​

  • INTERVAL refers to how long would user prefer to have the remind before the event beginning.

  • INTERVAL and REMINDTIME_AFTER must be a positive number 1,2,…​,15,16,…​,60,…​

  • UNIT refers to the INTERVAL unit.

  • UNIT needs to be MIN, HOUR, YEAR.

  • UNIT is case insensitive. Min, HouR, YeAr, …​ are accepted.

  • EVENT_LIST_INDEX, INTERVAL, UNIT should be all filled.

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 under listFr.

Deleteing a reminder : deleteR

Delete reminders related to specific event. Or delete specific reminder. Format: deleteR e/EVENT_LIST_INDEX r/REMINDER_LIST_INDEX

  • Can only use deleteR e/EVENT_LIST_INDEX or deleteR r/REMINDER_LIST_INDEX.

  • If users input deleteR e/EVENT_LIST_INDEX r/REMINDER_LIST_INDEX, UniLA only consider e/EVENT_LIST_INDEX.

  • EVENT_LIST_INDEX refers to index number shown in the displayed Event List

  • EVENT_LIST_INDEX must be a positive integer 1,2,3,4,…​

  • EVENT_LIST_INDEX refers to index number shown in the listFr Full Reminders List

  • EVENT_LIST_INDEX must be a positive integer 1,2,3,4,…​

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 full reminder list : listFr

Show all the reminders.

Examples:

  • listFr

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.

ReminderEventRelationship

reminderList will keep track of all reminder. reminder class contains Unit, Interval to facilitate the constructor building. Please refer to the following class diagram.

ReminderClassDiagram

Aspect: How to implement reminder

  • Alternative 1 (current choice): Create new model, named reminder to include reminder and reminderList 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 and person 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.

ReminderUseCase

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 comparing the starting time - interval with current 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.

reminderListSequenceDiagram

PROJECT: PowerPointLabs


{Optionally, you may include other projects in your portfolio.}