User Guide
Table of Contents
- Introduction
- Feature List
- Public Parameters for Tasks and Events
- Common Arguments
- Quick start
- Features
- FAQ
- Command Summary
Note:
The name SOChedule is case-insensitive in the text and images in this User Guide.
i.e. SOChedule, SoChedule, Sochedule can be used interchangeably.
Introduction
SOChedule is a one-stop solution for NUS School of Computing (SoC) students to manage their tasks and events effectively. Targeted at users who can type fast and prefer typing to mouse input, SOChedule is optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
Feature List
General Commands
Task-Specific Commands
- Adding a task:
add_task
- Deleting a task:
delete_task
- Editing a task:
edit_task
- Listing all tasks:
list_task
- Marking one or more tasks as done :
done_task
- Marking a task as uncompleted :
undone_task
- Getting today’s tasks:
today_task
- Finding tasks by name:
find_task
- Sorting all tasks:
sort_task
- Pinning a task:
pin_task
- Unpinning a task:
unpin_task
- Clearing completed tasks:
clear_completed_task
- Clearing expired tasks:
clear_expired_task
Event-Specific Commands
- Adding an event:
add_event
- Deleting an event:
delete_event
- Editing an event:
edit_event
- Listing all events:
list_event
- Getting today’s events:
today_event
- Finding events by name:
find_event
- Clearing expired events:
clear_expired_event
- Finding free time slots:
free_time
Commands Related to Both Task and Event
- Finding schedule given a date:
find_schedule
- Summarising tasks and events completion status:
summary
- Clearing SOChedule:
clear
Public Parameters for Tasks and Events
As listed below are the attributes to be specified for Tasks and Events. All parameters are mandatory unless otherwise stated.
Common to both Task and Event
Attribute | Identifier | Restriction(s) |
---|---|---|
Name |
n/ |
|
Category |
c/ |
|
Tag |
t/ |
|
Task-Specific
Attribute | Identifier | Restriction(s) |
---|---|---|
Deadline |
d/ |
|
Priority |
p/ |
|
Event-Specific
Attribute | Identifier | Restriction(s) |
---|---|---|
Start Date |
sd/ |
|
End Date |
ed/ |
|
Start Time |
st/ |
|
End Time |
et/ |
|
Common Arguments
Below are a few arguments commonly found in SOChedule commands, and their corresponding restrictions, command-specific restrictions notwithstanding. Breaking any of the below restrictions will result in a invalid command format error.
Attribute | Restriction(s) | Used in | Examples |
---|---|---|---|
INDEX |
|
|
Valid:
|
Date-related arguments
|
|
|
Valid:
|
Time-related arguments
|
|
|
Valid:
|
Quick start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
SOChedule.jar
from here. -
Copy the file to the folder you want to use as the home folder for your SOChedule.
-
Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. A sample SOChedule is given below. There would not be pre-entered data on first launch so that users start using immediately.
-
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.
Some example commands you can try:-
list_task
: Lists all tasks. -
add_task
n/CS2103 assignment d/2022-04-07 p/1 c/schoolwork t/urgent
: Adds a task namedCS2103 assignment
to the SOChedule with its respective attributes. Please verify the validity of the date parameter. -
delete_task
3
: Deletes the 3rd task shown in the current list. -
exit
: Exits the app.
-
-
Refer to the Features below for details of each command.
Features
Notes about the command format:
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
e.g. inundone_task INDEX
,INDEX
is a parameter which can be used asundone_task 1
. -
Items in square brackets are optional.
e.gn/TASKNAME [t/TAG]
can be used asn/Quiz t/CS2103
or asn/Quiz
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/friend
,t/friend t/family
etc. -
If a parameter is expected only once in the command, but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specifyp/1 p/2
, onlyp/2
will be taken. -
Extraneous parameters for commands that do not take in parameters (such as
list_task
,list_event
) will be ignored.
e.g. if the command specifieslist_task 123
, it will be interpreted aslist_task
.
Viewing help: help
Shows a message explaining how to access the help page.
Exiting the program: exit
Exits the program.
Adding a task: add_task
Adds a task into the task list.
Format: add_task n/TASKNAME d/DEADLINE p/PRIORITY [c/CATEGORY]... [t/TAG]...
-
n/
is followed by the task name, it is case-sensitive. -
d/
is followed by the date of deadline, with the formatYYYY-MM-DD
.
Deadline cannot be a past date. -
p/
is followed by the priority, with 0 being highest and 9 being lowest.
Other inputs are not accepted. -
c/
is followed by the category. Different categories are separated by white space (e.g.c/c1 c/c2
).
It is optional. -
t/
is followed by the tag. Different tags are separated by white space (e.g.t/t1 t/t2
).
It is optional.
Note:
- Any valid prefixes and input arguments (e.g.
n/Homework 1
orp/1
) followed by invalid prefixes and input arguments (e.g.name/Name
,tag/Tag
orT&sk
) will lead to an error. - If the same prefix (excluding
c/
,t/
) appears multiple times in the input (e.g.n/n1 n/n2 n/n3
), only the last occurrence would be taken (i.e.n/n3
).
Examples:
-
add_task n/CS2103 assignment d/2022-02-27 p/1 c/schoolwork t/urgent
adds a new task named “CS2103 assignment” with the respective parameters. -
add_task n/CCA admin work d/2022-02-28 p/2 c/CCA
adds a new task “CCA admin work” with the respective parameters.
Deleting a task: delete_task
Deletes a task from the task list.
Format: delete_task INDEX
- Deletes the task at the specified INDEX.
- The
INDEX
refers to the index number shown in the currently displayed task list.
Examples:
-
list_task
followed bydelete_task 2
deletes the second task in the full task list. -
find_task homework
followed bydelete_task 1
deletes the first task in the result of thefind_task
command.
Editing a task: edit_task
Edits an existing and uncompleted task in the task list.
Format: edit_task INDEX [n/TASKNAME] [d/DEADLINE] [p/PRIORITY] [c/CATEGORY]... [t/TAG]...
- Edits the task at the specified
INDEX
. - Only an existing and uncompleted task can be edited.
(i.e. Completed tasks cannot be edited) - At least one of the optional fields must be provided.
-
DEADLINE
provided cannot be a past date. - When editing tags/categories, the existing tags/categories of the task will be removed.
(i.e. adding of tags/categories is not cumulative) - Edited task cannot be the same as the original task or equivalent to another existing task in the task list.
Same tasks means the name, priority, deadline, tags (if any) and categories (if any) of two tasks are equal. - When editing tags and categories, the order given in the input and the order as shown in the UI can be different.
For example, in inputedit_task 1 t/t2 t/t10
,t/t2
is beforet/t10
in the input, butt10
may appear in the UI beforet2
. Lexicographical order is followed.
Note:
-
Any valid prefixes and input arguments (e.g.
n/Homework 1
orp/1
) followed by invalid prefixes and input arguments (e.g.name/Name
,tag/Tag
orT&sk
) will lead to an error. -
You can remove all the task’s tags by typing
t/
without specifying any tags after it.
Similarly, you can remove all the task’s categories by typingc/
without specifying any categories after it -
If the same prefix (excluding
c/
,t/
) appears multiple times in the input (e.g.n/n1
n/n2
), the latter one would be taken (i.e.n/n2
).
Examples:
-
edit_task 1 n/t1
edits the name of the first task (if present in SOChedule) to beeditedTaskName
. -
edit_task 2 p/3 t/
edits the priority of the second task (if present in SOChedule) to be3
and clears all existing tags.
Illustration of usage of edit_task
:
Listing all tasks: list_task
Lists all tasks from the task list.
Format: list_task
Marking one or more tasks as done: done_task
Marks one or more task from the task list as completed.
Format: done_task INDEX1 [INDEX2] ...
- Marks the task(s) at the specified INDEX(es) as completed.
- Specified task(s) must not be completed.
- Multiple indices are to be separated by a whitespace, e.g.
1 2
. - All specified tasks must be uncompleted and existing before calling this command.
-
Duplicate indices are not allowed.
Otherwise, an error message indicating invalid command format will be returned.
Note:
- If indices provided include both an index for a task not existing in task list and an index for a completed task, the error message will only be about the non-existing task.
Examples:
-
done_task 1 2
marks the first and second task in the task list as completed.
Illustration of usage of done_task
:
Marking a task as uncompleted: undone_task
Marks a completed task from the task list as uncompleted.
Format: undone_task INDEX
- Marks the task at the specified INDEX as uncompleted.
- Specified task must be complete.
Examples:
-
undone_task 1
marks the first task in the task list as uncompleted.
Illustration of usage of undone_task
:
Getting today’s tasks: today_task
Lists all tasks that have deadline on today from the task list.
Format: today_task
Finding tasks by name: find_task
Finds tasks whose names contain any of the given keywords from the task list.
Format: find_task KEYWORD1 [KEYWORD2] ...
- The search is case-insensitive, e.g.
homework
will matchHomework
. - The search scope is the full task list.
- The order of the keywords does not matter.
E.g.Practice Problems
will matchProblems Practice
. - Only the name of the tasks is searched.
- Only full words will be matched. E.g.
CS
will not matchCS2103
. - Tasks matching at least one keyword will be returned (i.e.
OR
search).
E.g.CS2103 Homework
will returnST2131 Homework
,CS2103 Quiz
.
Examples:
-
find_task Homework
returnsst2131 homework
andHomework 1
-
find_task assignment homework
returnsAssignment 1
,Homework 2
Sorting all tasks: sort_task
Sorts the task list.
Format: sort_task ARGUMENT
- Sorts task list and updates UI based on supplied argument.
- Accepted arguments (case-sensitive):
-
name
: Sorts by task name, in increasing lexicographical order -
deadline
: Sorts by task deadline, in increasing date order -
completion
: Sorts by task completion status, with completed tasks at the bottom -
priority
: Sorts by task priority, in decreasing order, from priority 0 on top, to priority 9 at the bottom
-
- On subsequent boots, the following will happen:
- Relative order from previous launch will be preserved.
- However, if any order-altering command (
pin_task
,unpin_task
, andfind_task
) is issued, tasks will be sorted by name by default, unless otherwise stated by anothersort_task
command. - Marking a task as complete (
done_task
) or incomplete (undone_task
) or adding (add_task
) and editing (edit_task
) tasks does not constitute an order-altering command.
Examples:
-
sort_task completion
sorts the task list by completion status. -
sort_task name
sorts the task list by name.
Illustration of usage of sort_task
:
Pinning a task: pin_task
Pins a task from the task list.
Format: pin_task INDEX
- Pins the task at the specified INDEX.
- Already pinned tasks will be unable to be pinned a second time.
- The index refers to the index number shown in the displayed task list.
- After pinning, the Task List will be sorted either according to previously entered
sort_task
command, or name (by default). See here.- Should there be two or more pinned tasks, the pinned tasks will be sorted as well.
- Only the fact that pinned tasks will appear over the unpinned tasks is guaranteed.
Internal order of pinned tasks is not persistent oversort_task
.
- Pinned tasks are persistent over instances of SOChedule.
Examples:
-
pin_task 1
pins the first task in the task list
Illustration of usage of pin_task
:
Illustration of the interaction between pin_task
and sort_task
:
Unpinning a task: unpin_task
Unpins a task from the task list.
Format: unpin_task INDEX
- Unpins the task at the specified INDEX.
- Follows similar restrictions to
pin_task
.
Examples:
-
unpin_task 1
unpins the first task in the task list
Illustration of usage of unpin_task
:
Clearing completed tasks: clear_completed_task
Clears tasks marked as completed from the task list.
Format: clear_completed_task
Note:
- This command is still able to be executed on a task list without any completed tasks.
In this case, success messageCompleted tasks (if any) have been cleared!
will still be displayed.
However, no tasks will be cleared since there are no completed tasks.
Illustration of usage of clear_completed_task
:
Clearing expired tasks: clear_expired_task
Clear tasks with past deadlines from the task list.
Format: clear_expired_task
- For a task to be considered expired, the task’s
deadline
should be an earlier date as compared to the local date on the user’s computer.
Hence, changing of date on a computer could affect the judgement of expiration.
Note:
- This command is still able to be executed on a task list without any expired tasks.
In this case, success messageExpired tasks (if any) have been cleared!
will still be displayed.
However, no tasks will be cleared since there are no expired tasks.
Illustration of usage of clear_expired_task
:
Adding an event: add_event
Adds an event to the event list.
Format: add_event n/EVENTNAME sd/STARTDATE st/STARTTIME ed/ENDDATE et/ENDTIME [c/CATEGORY]... [t/TAG]...
-
n/
is followed by the event name, it is case-sensitive. -
sd/
is followed by the starting date, in the format of YYYY-MM-DD. -
st/
is followed by the starting time in the 24-hour format and in the format of hh:mm -
ed/
is followed by the ending date. -
et/
is followed by the ending time in the 24-hour format. - The
ENDDATE
andENDTIME
provided must be afterSTARTDATE
andSTARTTIME
. - The
ENDDATE
andENDTIME
provided cannot be a past date and time. -
c/
is followed by the category. Different categories are separated by white space (e.g.c/c1 c/c2
).
It is optional. -
t/
is followed by the tag. Different tags are separated by white space (e.g.t/t1 t/t2
).
It is optional.
Note:
-
The
STARTDATE
andSTARTTIME
provided can be in the past for ongoing events. -
Events that overlap in date and time are allowed.
-
Any valid prefixes and input arguments (e.g.
n/Meeting 1
orst/14:00
) followed by invalid prefixes and input arguments (e.g.name/Name
,tag/Tag
orE@ent
) will lead to an error. -
If the same prefix (excluding
c/
,t/
) appears multiple times in the input (e.g.n/n1 n/n2 n/n3
), only the last occurrence would be taken (i.e.n/n3
).
Examples:
-
add_event n/CS2103 meeting sd/2021-05-27 st/15:00 ed/2022-02-27 et/17:00
adds an event with nameCS2103
and its respective attributes to the event list.
Deleting an event: delete_event
Deletes an event from the event list.
Format: delete_event INDEX
- Deletes the event at the specified INDEX.
- Note that only one
INDEX
is accepted, multipleINDEX
will lead to input format error. - The
INDEX
refers to the index number shown in the displayed event list.
Examples:
-
delete_event 3
deletes the third event from the event list.
Editing an event: edit_event
Edits an existing and unexpired event in the event list.
Format: edit_event INDEX [n/EVENTNAME] [sd/STARTDATE] [st/STARTTIME] [ed/ENDDATE] [et/ENDTIME] [c/CATEGORY]... [t/TAG]...
- Edits the event at the specified
INDEX
. - An expired event could only be edited when users edit the past end date and time to an unexpired end date and time (i.e. to extend the event).
- Except the condition above, only unexpired event can be edited.
- At least one of the optional fields must be provided.
- The
ENDDATE
andENDTIME
provided must be afterSTARTDATE
andSTARTTIME
. - The
ENDDATE
andENDTIME
provided cannot be a past date and time. - When editing tags/categories, the existing tags/categories of the event will be removed.
(i.e. adding of tags/categories is not cumulative) - When editing tags and categories, the order given in the input and the order as shown in the UI can be different.
For example, in inputedit_event 1 t/tag1 t/tag2
,t/tag1
is beforet/tag2
, buttag2
may appear in the UI beforetag1
.
Note:
-
The
STARTDATE
andSTARTTIME
provided can be in the past for ongoing events. -
Events that overlap in date and time are allowed.
-
Any valid prefixes and input arguments (e.g.
n/Meeting
orst/00:00
) followed by invalid prefixes and input arguments (e.g.name/Name
,tag/Tag
orE@ent
) will lead to an error. -
You can remove all the event’s tags by typing
t/
without specifying any tags after it.
Similarly, you can remove all the event’s categories by typingc/
without specifying any categories after it -
If the same prefix (excluding
c/
,t/
) appears multiple times in the input (e.g.n/n1
n/n2
), the latter one would be taken (i.e.n/n2
).
Examples:
-
edit_event 1 n/editedEventName
edits the name of the first event (if present in the event list) to beeditedEventName
. -
edit_event 2 sd/2021-03-18 t/
edits the start date of the second event (if present in the event list) to be2021-03-18
and clears all existing tags.
Listing all events: list_event
Lists all events from the event list.
Format: list_event
Getting today’s events: today_event
Lists all events whose duration have overlap with today from the event list.
Format: today_event
Finding events by name: find_event
Finds events whose names contain any of the given keywords from the event list.
Format: find_event KEYWORD1 [KEYWORD2] ...
- The search is case-insensitive, e.g.
meeting
will matchMeeting
. - The search scope is the full task list.
- The order of the keywords does not matter.
E.g.Attending Lecture
will matchLecture Attending
. - Only the name of the events is searched.
- Only full words will be matched. E.g.
CS
will not matchCS2103
. - Events matching at least one keyword will be returned (i.e.
OR
search).
E.g.CS2103 Meeting
will returnProject Meeting
,CS2103 Lecture
.
Examples:
-
find_event Meeting
returnsproject meeting
andResearch Meeting
. -
find_event talk competition
returnsCareer Talk
,Coding Competition
Clearing expired events: clear_expired_event
Clears events with past end date time from the event list.
Format: clear_expired_event
- For an event to be considered expired, the event should have earlier end date and time as compared to the local time on the user’s computer.
Hence, changing of timing on a computer could affect the judgement of expiration.
Note:
- This command is still able to be executed on a event list without any expired event.
In this case, success messageExpired events (if any) have been cleared!
will still be displayed.
However, no event will be cleared since there are no expired event.
Illustration of usage of clear_expired_event
:
Finding free time slots: free_time
Finds all free time slots on the given date from the event list.
Format: free_time DATE
- Free time slots refer to all times in the given date without any ongoing event.
- Date entered must be a valid date and in the format of
YYYY-MM-DD
. - Date entered must be a date from current date onwards.
- Only one single date can be entered.
Examples:
-
free_time 2022-02-01
finds all free time slots on the given date2022-02-01
.
Illustration of usage of free_time
:
Finding schedule given a date: find_schedule
Given a specified date, finds uncompleted tasks that are due before or on the date and events that are ongoing on the date.
Format: find_schedule DATE
- Tasks found will be incomplete tasks with deadlines before or on the specified date.
- Events found will be events where specified date falls between start date (inclusive) and end date (inclusive).
(i.e. ongoing events) - Date entered must be in the format of
YYYY-MM-DD
.
It can be a date that is earlier than today. - Only one single date can be entered.
Note:
-
After running
find_schedule
,list_task
andlist_event
can be used to display the whole task list and event list respectively. -
This command is still able to be executed on an empty task list, and an empty event list. In this case, the success message will still be displayed.
Examples:
-
find_schedule 2021-04-10
finds:- All existing uncompleted tasks with deadlines before or on
2021-04-10
. - All existing events where
2021-04-10
falls between start date (inclusive) and end date (inclusive).
- All existing uncompleted tasks with deadlines before or on
Illustration of usage of find_schedule
:
Due to size constraint, this illustration is split into the before and after view for task list and that for event list.
For task list:
For event list:
Summarising tasks and events statistics: summary
Displays a summary of tasks completion status and events upcoming for the next 7 days.
Format: summary
- Completed tasks refer to tasks that are done regardless of when the deadline is.
- Overdue tasks refer to incomplete tasks, and current date has passed the deadline.
- Tasks to be completed before deadline refer to incomplete tasks, and current date now has not passed the deadline.
-
Events upcoming in the next 7 days refer to events that are going to happen in the next 7 days.
Events that are happening today are not included.
Illustration of usage of summary
:
Clearing SOChedule: clear
Clears all tasks and events in the SOChedule’s task list and event list.
Format: clear
Illustration of usage of clear
:
FAQ
Q: How do I transfer my data to another Computer?
A: Download the JAR file onto the other computer and overwrite the empty data file it creates with the file that contains the data of your previous SOChedule home folder (this is contained within the /data
folder in the same location as your SOChedule.jar.
Command summary
General commands
Action | Format, Examples |
---|---|
Help | help |
Exit | exit |
Task-related commands
Action | Format, Examples |
---|---|
Add |
add_task n/TASKNAME d/DEADLINE p/PRIORITY [c/CATEGORY]... [t/TAG]... e.g. add_task n/CS2103 assignment d/2022-02-27 p/1 c/schoolwork t/urgent
|
Delete |
delete_task INDEX e.g. delete_task 1
|
Edit |
edit_task INDEX [n/TASKNAME] [d/DEADLINE] [p/PRIORITY] [c/CATEGORY]... [t/TAG]... e.g. edit_task 1 n/editedTaskName
|
List | list_task |
Done |
done_task INDEX1 [INDEX2] ... e.g. done_task 1 2
|
Undone |
undone_task INDEX e.g. undone_task 1
|
Today | today_task |
Find |
find_task KEYWORD1 [KEYWORD2] ... e.g. find_task homework
|
Sort |
sort_task ARGUMENT e.g. sort_task name
|
Pin |
pin_task INDEX e.g. pin_task 1
|
Unpin |
unpin_task INDEX e.g. unpin_task 1
|
Clear Completed | clear_completed_task |
Clear Expired | clear_expired_task |
Event-related commands
Action | Format, Examples |
---|---|
Add |
add_event n/TASKNAME sd/STARTDATE st/STARTTIME ed/ENDDATE et/ENDTIME [c/CATEGORY]... [t/TAG]... e.g. add_event n/CS2103 meeting sd/2022-02-27 st/15:00 ed/2022-02-27 et/17:00
|
Delete |
delete_event INDEX e.g. delete_event 3
|
Edit |
edit_event INDEX [n/EVENTNAME] [sd/STARTDATE] [st/STARTTIME] [ed/ENDDATE] [et/ENDTIME] [c/CATEGORY]... [t/TAG]... e.g. edit_event 1 n/editedEventName
|
List | list_event |
Today | today_event |
Find |
find_event KEYWORD1 [KEYWORD2] ... e.g. find_event meeting
|
Clear Expired | clear_expired_event |
Find Free Time |
free_time DATE e.g. free_time 2022-01-01
|
Commands related to both task and event
Action | Format, Examples |
---|---|
Find Schedule |
find_schedule DATE e.g. find_schedule 2022-06-01
|
Clear Schedule | clear |
Summary | summary |