By: Team T10-1

1. Introduction

U-Schedule is for university students who prefer to use a desktop app for managing their schedule. More importantly, U-Schedule is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). It features a calendar to manage regular events such as lectures and tutorials, as well as a todo list for upcoming deadlines. If you can type fast, you can manage both of these more efficiently with U-Schedule than traditional GUI apps. Interested? Jump to the Section 2, “Quick Start” to get started. Enjoy!

2. Quick Start

  1. Ensure you have Java version 9 or later installed in your Computer.

  2. Download the latest u-schedule.jar here.

  3. Copy the file to the folder you want to use as the home folder for this application.

  4. Double-click the file to start the app. The GUI should appear in a few seconds.

    Ui
  5. Type the command in the command box and press Enter to execute it.
    e.g. typing help and pressing Enter will open the help window.

  6. Some example commands you can try:

    • list event : lists all calendar events

    • list todo : lists all todo items

    • add eventt/CS2103 Lecture d/Abstraction, IntelliJ, Gradle s/16 nov 4pm e/16 nov 6pm v/i3 Auditorium tag/lecture : adds a calendar event titled CS2103 Lecture to the calendar.

    • add todot/CS2103 Assignment d/Version Control p/H : adds a todo item titled CS2103 Assignment to the todo list.

    • **find event cs2103 : shows all events with title, description or venue matching cs2103

    • delete event3 : deletes the calendar event marked 3.

    • delete todo3 : deletes the todo item marked 3.

    • show todo3 : show the description of todo item marked 3.

    • exit : exits the app

  7. Refer to Section 3, “Features” for details of each command.

3. Features

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in add event t/TITLE, TITLE is a parameter which can be used as add event t/CS2103 Lecture.

  • Items in curly brackets denote the choices of words that can be used. e.g. add {event/todo}

  • Items in square brackets are optional e.g t/TITLE [tag/TAG] can be used as t/CS2103 Lecture tag/lecture or as t/CS2103 Lecture.

  • Items with ​ after them can be used multiple times including zero times e.g. [tag/TAG]…​ can be used as   (i.e. 0 times), tag/lecture, tag/cs2103 etc.

  • Parameters can be in any order e.g. if the command specifies t/TITLE d/DESCRIPTION, d/DESCRIPTION t/TITLE is also acceptable.

  • The second word specifies whether the command will operate on the todo list or the calendar. For example add event adds an event to the calendar and add todo will add an item to the todo list.

  • Priorities on the todo list are either H, M or L for high, medium or low respectively, in upper case.

3.1. Viewing help : help

Opens the User Guide in a new window.

Format: help

3.2. Adding: add

Adds a calendar event to the calendar
Format: add event t/TITLE d/DESCRIPTION s/START_DATETIME e/END_DATETIME v/VENUE [tag/TAG]…​
Adds an item to the todo list
Format: add todo t/TITLE d/DESCRIPTION p/{H/M/L}

  • Adds the specified item to the calendar or todo list

  • Since it is difficult to type a rigidly formatted date and time, a natural language date parser will try to parse the input for calendar events.

  • The start and end datetimes can be word descriptions, such as 'the day after tomorrow', or '1 week from now'.

  • If only a time is specified, the application will assume you mean today.

  • For todo items, the priority can be H, M or L for high, medium or low respectively, in upper case.

A calendar event can have any number of tags. (including 0)

Examples:

  • add event t/CS2103 Lecture d/Abstraction, IntelliJ, Gradle s/16 oct 2pm e/16 oct 4pm v/i3 Auditorium tag/lecture

  • add todo t/CS2103 Assignment d/Version Control p/L

3.3. Listing: list

Shows the list of all calendar events / todo items in the calendar / todo list.
Format: list {event/todo}

3.4. Editing: edit

Edits an existing calendar event in the calendar.
Format: edit event INDEX [t/TITLE] [d/DESCRIPTION] [s/START_DATETIME] [e/END_DATETIME] [v/VENUE] [tags/TAG]…​

  • Edits the calendar event / todo list item at the specified INDEX. The index refers to the index number shown in the displayed list. The index must be a positive integer 1, 2, 3, …​

  • At least one of the optional fields must be provided.

  • Existing values will be updated to the input values.

  • When editing tags, the existing tags of the calendar event will be removed i.e adding of tags is not cumulative.

  • You can remove all the calendar event’s tags by typing tag/ without specifying any tags after it.

Examples:

  • edit event 1 d/Abstraction v/i3 Auditorium
    Edits the description and venue of the calendar event to be Abstraction ` and `i3 Auditorium respectively.

  • edit event 2 t/CS2103 Project Meetup
    Edits the name of the 2nd calendar event to be CS2103 Project Meetup.

3.5. Searching for events: find event

Finds calendar events whose title, venue or description match any of the given keywords. Also optionally filters the search by the specified date & time interval as well as the specified tags.
Format: find event [KEYWORD MORE_KEYWORDS…​] [from/DATE & TIME] [to/DATE & TIME] [tag/TAG] [tag/MORE_TAGS]…​

  • Shows list of events that match the keywords and fulfil the filter rules.

  • The most relevant results are shown at the top.

  • At least one of the optional fields must be provided.

  • Fuzzy Keyword Search

    • The search is case insensitive for both keywords. e.g lecture will match Lecture

    • The order of the keywords does not matter. e.g. CS2103 Lecture will match Lecture CS2103

    • The fuzzy search allows for partial matches for keywords. e.g. 2103 lec will match CS2103 Lecture.

      • Slight differences and typos will also usually be matched. e.g. s2130 Lecutre will match 'CS2103 Lecture'

  • Filter by Date & Time

    • Shows events that occur in the interval from the from date & time, to the to date & time.

      • i.e. the event must be ongoing at some point in the time interval starting at the from date and ending at the to date

    • You can choose to include only one of the 2 (from or to) date & times

    • Date & time are parsed using natural language parsing, thus they can be input in most human-readable formats, e.g. 16 nov 8am

      • Note: sometimes date & time inputs may be parsed in an unexpected manner - see Question 3 in the FAQ

  • Filter by Tags

    • In order for an event to be shown, it must have a tag that is exactly matching (although case-insensitive) with the input tag.

    • If multiple tags are input, the filter will only show the events with ALL the input tags.

Examples:

  • find event lecture
    Returns list of events whose title, venue or description matches the keyword lecture.

  • find event cs2103 assignment tag/Project
    Returns list of events matching the keywords cs2103 and assignment, and having the tag Project

  • find event exam from/29 nov 8am to/7 dec 5pm Returns list of events matching the keyword exam, that is ongoing at some point between 8am on 29th November and 5pm on 7th December.

  • find event project tag/CS2103 from/15 nov 10am ` Returns list of events matching the keyword `project, having the tag CS2103, that is ongoing at some point after 10am on 15th November.

  • find event tag/cs2103 tag/lecture Returns list of events having both the tags 'CS2103' and 'Lecture' (i.e. events with only the CS2103 tag but not the Lecture tag would be excluded).

3.6. Deleting: delete

Deletes the specified calendar event / todo item from the calendar / todo list.
Format: delete {event/todo} INDEX

  • Deletes the calendar event at the specified INDEX.

  • The index refers to the index number shown in the displayed calendar event list / todo list.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • list event
    delete event 2
    Deletes the 2nd calendar event in the calendar.

  • find event assignment
    delete event 1
    Deletes the 1st calendar event in the results of the find event command.

  • list todo
    delete todo 1
    Deletes the 1st todo item in the todo list.

3.7. Selecting event: select event

Selects the calendar event identified by the index number used in the displayed list.
Format: select event INDEX

  • Selects the calendar event at the specified index on the list, and jumps to the event in the calendar display..

  • The index refers to the index number shown in the displayed calendar event list.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • list event
    select event 2
    Selects the 2nd calendar event in the calendar.

  • find event lecture
    select event 1
    Selects the 1st calendar event in the results of the find event command.

3.8. Showing description: show todo

Shows description of the specified todo item from the todo list.
Format: show todo INDEX

  • Shows description of the todo item at the specified INDEX.

  • The index refers to the index number shown in the displayed todo list.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • list todo
    show todo 1
    Shows description of the 1st todo item in the todo list.

3.9. Listing entered commands : history

Lists all the commands that you have entered in reverse chronological order.
Format: history

Pressing the and arrows will display the previous and next input respectively in the command box.

3.10. Undoing previous command : undo

Restores the calendar to the state before the previous undoable command was executed.
Format: undo

Undoable commands: those commands that modify the calendar’s /todo list’s content (add event, delete event, edit event and clear).

Examples:

  • delete event 1
    list event
    undo (reverses the delete event 1 command)

  • select 1
    list event
    undo
    The undo command fails as there are no undoable commands executed previously.

  • delete event 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete event 1 command)

3.11. Redoing the previously undone command : redo

Reverses the most recent undo command.
Format: redo

Examples:

  • delete event 1
    undo (reverses the delete event 1 command)
    redo (reapplies the delete event 1 command)

  • delete event 1
    redo
    The redo command fails as there are no undo commands executed previously.

  • delete event 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete event 1 command)
    redo (reapplies the delete event 1 command)
    redo (reapplies the clear command)

3.12. Clearing all entries : clear

Clears all entries from the calendar.
Format: clear calendar

3.13. Using the Calendar Display

3.13.1. Manual navigation:

Navigating the calendar to viewing the events:

  • : Display previous week

  • : Display next week

  • : Scroll up to events earlier in the day

  • : Scroll down to events later in the day

Scrolling with the mouse wheel is also possible.

The calendar display must be in focus in order to navigate with the arrow keys.

3.13.2. Automatic Navigation:

When selecting an event, either by the select command or clicking in the list of calendar events, the calendar display will navigate to that event and attempt to centralize it in the calendar.

3.13.3. Viewing Event Details

The compact display of the calendar does not allow all the information of the event to be displayed. To view full details of an event, double click on it to open a dialog box containing the details of the event.

3.14. Exiting the program : exit

Exits the program.
Format: exit

3.15. Saving the data

Application data is saved in the hard disk automatically after any command that changes the data.
There is no need to save manually.

3.16. Encrypting data files [coming in v2.0]

{explain how the user can enable/disable data encryption}

4. FAQ

Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous U-Schedule folder.

Q: Why is the calendar display not responding to the arrow keys?
A: The calendar display must be in focus in order for it to receive the arrow key events. Try clicking on the calendar display. If a blue highlight is present around the edges, the calendar display is in focus and will now receive the key presses.

Q: The date time parser is parsing dates unexpectedly!
A: The Natural Language Parser we used tries its best to parse a datetime out of any input. Hence, there are some inputs which even humans would not consider a valid date, but the parser would still try to find a best fit. Most of the time, if a human can understand the input, the parser will parse the input correctly.

5. Command Summary

  • Add add event t/TITLE d/DESCRIPTION s/START_DATETIME e/END_DATETIME v/VENUE [tag/TAG]…​
    e.g. add event t/CS2103 Lecture d/Abstraction, IntelliJ, Gradle s/2018-10-16 14:00 e/2018-10-16 16:00 v/i3 Auditorium tag/lecture

  • Add add todo t/TITLE d/DESCRIPTION p/{H/M/L}
    e.g. add todo t/CS2103 Assignment d/Version Control p/L

  • Clear : clear calendar

  • Delete : delete {event/todo} INDEX
    e.g. delete event 3

  • Edit : edit event INDEX [t/TITLE] [d/DESCRIPTION] [s/START_DATETIME] [e/END_DATETIME] [v/VENUE] [tag/TAG]…​
    e.g. edit event 1 d/Abstraction v/i3 Auditorium

  • Find : find event [KEYWORD MORE_KEYWORDS…​] [from/DATE & TIME] [to/DATE & TIME] [tag/TAG] [tag/MORE_TAGS]
    e.g. find event CS2103 Lecture from/16 Nov 8am tag/PE

  • List : list {event/todo}

  • Help : help

  • Select : select event INDEX
    e.g.select event 2

  • Show Description : show todo INDEX
    e.g.show todo 2

  • History : history

  • Undo : undo

  • Redo : redo

  • Calendar navigation :