By: Naggy Joel
Since: Jan 2020
Licence: MIT
1. Introduction
Does the name Naggy Joel sound like a very boring application? Fret not, it is actually the exact opposite! It helps you maximise your time to get as much fun as you can amidst your hectic work schedule. In fact, it aims to help you be the best friend and best student that you can ever be!
Naggy Joel is for those who prefer to use a desktop app for managing their social life. It is an application that allows you to manage all aspects of your social life, ranging from your different social circles and contacts, to your events all without compromising on your academic life. More importantly, Naggy Joel 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). If you can type fast, Naggy Joel can get social life managed faster than traditional GUI apps. Interested? Jump to Section 2, “Quick Start” to get started. Enjoy!
2. Quick Start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
naggyJoel.jar
here. -
Copy the file to the folder you want to use as the home folder for Naggy Joel.
-
Double-click the file to start the app. The GUI should appear in a few seconds.
-
Type the command in the command box and press Enter to execute it.
e.g. typinghelp
and pressing Enter will open the help window. -
Some example commands you can try:
-
(ab)list
: Lists all contacts -
(ab)add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
: Adds a contact namedJohn Doe
with phone98765432
, email addressjohnd@example.com
and addressJohn street, block 123, #01-01
to the Address Book. -
(ab)delete 3
: Deletes the 3rd contact shown in the current persons list. -
(st)list
: Lists all assignments. -
(st)add t/CS2103 tP d/2020-11-11 23:59 e/10
: Adds an assignment titledCS2103 tP
with deadline on11 November 2020 11:59 PM
and an estimated completion time of10 hours
. -
(rt)list
: Lists all restaurants -
(rt)add n/McDonalds l/NUS o/0900:2300 p/$ v/Yes
: Adds a new visited restaurant namedMcDonalds
located inNUS
with operating hours9:00 AM to 11:00 PM
with thelowest price point
. -
exit
: exits the app
-
-
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(ab)add n/NAME
,NAME
is a parameter which can be used as(ab)add n/John Doe
. -
Items in square brackets are optional e.g
n/NAME [t/TAG]
can be used asn/John Doe t/friend
or asn/John Doe
. -
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. -
Parameters can be in any order e.g. if the command specifies
n/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
For dates, supplying dates up to 31st will succeed regardless of month. However, for months without these dates, it will be auto-converted to the last date of the month.
3.1. General Commands
3.1.1. Viewing help : help
Show program usage instructions
Format: help
Show command usage in detail
Format: help h/INDEX
tag::clear[]
3.1.2. Undo and redo commands: undo/redo
Undoes and redoes the last command.
Format: undo/redo
3.1.3. Clearing all entries : clear
Clears all entries from the address book, schoolwork tracker, events book and restaurant book.
Format: clear
end::clear[]
3.1.4. Exiting the program : exit
Exits the program.
Format: exit
3.2. Address Book Commands
3.2.1. Adding a person : (ab)add
Adds a person to the address book
Format: (ab)add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG] [o/ORGANIZATION] [b/BIRTHDAY]
A person can have any number of tags (including 0) |
Examples:
-
(ab)add n/Akshay o/NUS p/56789012
Adds a contact named Akshay with phone number 56789012 and organization NUS. -
(ab)add n/Joel HH e/joel@yahoo.com.sg p/12345678 o/NUS a/Pasir Ris St. 71, Blk 123, #01-79
Adds a contact named Joel HH with email address joel@yahoo.com.sg, phone number 12345678, address Pasir Ris St. 71, Blk 123, #01-79 and organization NUS. -
(ab)add n/Aisyle Nat e/aisyle@gmail.com p/87654321 o/NUS b/02-12
Adds a contact named Aisyle Nat with email address aisyle@gmail.com, phone number 87654321, birthday 12 February and organization NUS.
tag::editPerson[]
3.2.2. Editing a person : (ab)edit
Edits an existing person in the address book.
Format: (ab)edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [o/ORGANIZATION] [t/TAG_TO_BE_ADDED]… [-t/TAG_TO_BE_DELETED]…
Multiple TO_BE_ADDED tags can be specified and all will be added, if it is not a duplicate.
|
Multiple TO_BE_DELETED tags can be specified and all will be deleted, if they exist.
|
To delete all tags, specify the tag-deletion prefix -t/ without any parameters.
|
Examples:
-
(ab)edit 37 a/2 Cactus Road, S903281
Changes the 37th person’s address to 2 Cactus Road, S903281. -
(ab)edit 2 n/Elysia Tan o/Comp Club
Changes the 2nd person’s name to Elysia Tan, and organization to Comp Club. -
(ab)edit 2 t/best friend -t/good friend
Removes the tag good friend from the 2nd person and adds the tag best friend to him/her. -
(ab)edit 3 e/ a/
Deletes the email and address of the 3rd person.
end::editPerson[]
3.2.3. Deleting a person : (ab)delete
Deletes the contact at index INDEX
Format: (ab)delete INDEX
Examples:
-
(ab)delete 2
Deletes the 2nd person in the address book
tag::notetaker[]
3.2.4. Store additional information about contacts using the Note Taker: (ab)addnote
Store additional information about contacts using the Note Taker
Format: (ab)addnote INDEX i/INFO…
Example:
-
(ab)addnote 1 i/Like to swim i/Likes cheese
Adds the notes 'Like to swim' and 'Likes cheese' to the first person in the displayed person list.
3.2.5. Edit additional information about contacts : (ab)editnote
Edit additional information about contacts using the Note Taker
Format: (ab)editnote INDEX l/LINE_NUMBER i/INFO
Example:
-
(ab)editnote 1 l/5 i/Likes having fun
Replaces the 5th note of the 1st person to 'Likes having fun'.
3.2.6. Delete additional information about contacts : (ab)deletenote
Delete additional information about contacts using the Note Taker
Format: (ab)deletenote INDEX l/LINE_NUMBER…
Example:
-
(ab)deletenote 1 l/4 l/5
Deletes the 4th and 5th note from the first person.
end::notetaker[]
3.2.7. Lists all contacts: (ab)list
Lists all contacts stored in the address book, only displaying the name, phone number and tags (if any)
Format: (ab)list
If you want to search for a particular contact, see (ab)find
|
If you want more information about a particular contact, see (ab)get
|
tag::findCommand[]
3.2.8. Finding contacts : (ab)find
Lists out all your contacts in the address book which match a certain criteria. Each contact will have a displayed index. Only the contact’s name, phone number and tags (if present) will be listed
Format: (ab)find [o/ORGANIZATION] [n/NAME] [t/TAG]
Examples:
-
(ab)find o/NUS n/Lim
Finds and lists all contacts that is in organization “NUS” and have the word “Lim” in his name
end::findCommand[]
3.2.9. List everything about a contact in field : (ab)get
Displays all information about the queried contact
Format: (ab)get INDEX
Example:
-
(ab)get 1
Displays all information about the 1st person.
3.2.10. List contacts with upcoming birthdays : (ab)birthday
Lists all contacts with birthdays in the next 5 days (current day included)
Format: (ab)birthday
3.3. Restaurant Book commands
tag::res[]
3.3.1. Adds a new restaurant : (rt)add
Adds a new restaurant
Format: (rt)add n/NAME l/LOCATION v/VISITED [o/OPERATING_HOURS] [p/PRICE_POINT] [c/CUISINE]
Examples:
-
(rt)add n/rubbish l/bedok o/0900:2300 p/$$ v/No
Adds a new restaurant called rubbish at bedok with 2 dollar signs price point and opens from 9am to 11pm, and has yet to be visited.
3.3.2. Edits a restaurant: (rt)edit
Edits a restaurant from the list
Format: (rt)edit INDEX [n/RESTAURANT] [l/LOCATION] [v/VISITED] [o/OPERATING_HOURS] [p/PRICE] [c/CUISINE]
Example:
-
(rt)edit 1 o/0700:2200
Edits the 1st restaurant’s operating hours to "0700:2200" in the restaurant book. -
`(rt)edit 3 p/ `
Removes the 3rd restaurant’s price point.
3.3.3. Deletes a restaurant: (rt)delete
Deletes a restaurant from the list
Format: (rt)delete INDEX
Example:
-
(rt)delete 1
Deletes the 1st restaurant in the restaurant book.
end::res[]
tag::rtnotetaker[]
3.3.4. Add notes to a restaurant : (rt)addnote
Adds a new note to a restaurant
Format: (rt)addnote INDEX [r/RECOMMENDED_FOOD]… [g/GOOD_FOOD]… [b/BAD_FOOD] …
Examples:
-
(rt)addnote 5 r/chicken chop g/truffle fries b/risotto
Add notes to the restaurant at index 5 with recommended food Chicken Chop, good food Truffle Fries, and bad food Risotto. -
(rt)addnote 2 g/Cheese baked rice
Adds a note to the restaurant at index 2 with good food Cheese baked rice. -
(rt)addnote 1 b/Fried rice b/Latte
Add notes to the restaurant at index 1 with bad food Fried rice and Latte.
3.3.5. Edit notes to a restaurant : (rt)editnote
Edits a note to a restaurant
Format: (rt)editnote INDEX [rl/LINE_NUMBER] [r/RECOMMENDED_FOOD] [gl/LINE_NUMBER] [g/GOOD_FOOD] [bl/BAD_FOOD] [b/BAD_FOOD]
Examples:
-
(rt)editnote 1 rl/2 r/Lobster pasta gl/1 g/Mushroom soup bl/3 b/Salad
Edit notes to the restaurant at index 1 with recommend food Lobster pasta at line number 2, good food Mushroom soup at line number 1, and bad food Salad at line number 3. -
(rt)editnote 2 gl/2 g/Chicken chop
Edits note to the restaurant at index 2 with good food Chicken chop.
3.3.6. Delete notes to a restaurant : (rt)deletenote
Deletes a note to a restaurant
Format: (rt)deletenote INDEX [rl/LINE_NUMBER1]… [gl/LINE_NUMBER]… [bl/BAD_FOOD]…
Examples:
-
(rt)deletenote 1 rl/2 gl/1 bl/3
Delete notes to the restaurant at index 1, at line number 2 of recommended food notes, at line number 1 of good food notes, at line number 3 of bad food notes. -
(rt)deletenote 2 gl/1 gl/2
Deletes a note to the restaurant at index 2, at line numbers 1 and 2 of good food notes.
end::rtnotetaker[]
3.3.7. List all restaurants : (rt)list
Lists all restaurants
Format: (rt)list
Examples:
-
(rt)list
Lists all restaurants.
tag::findRestaurantCommand[]
3.3.8. Find restaurants : (rt)find
Finds restaurants based on a number of criteria.
Format: (rt)find [n/RESTAURANT_NAME] [l/LOCATION]
Examples:
-
(rt)find n/no signboard
Finds restaurants with the keywordno signboard
. -
(rt)find l/bedok
Finds restaurants in theBedok
area. -
[COMING SOON] Ability to search by price point and operating hours.
end::findRestaurantCommand[]
tag::schoolworkTracker[]
3.4. Schoolwork Tracker commands
3.4.1. Adding an assignment : (st)add
Adds a new assignment to your list of assignments.
Format: (st)add t/TITLE d/DEADLINE e/ESTIMATED_COMPLETION_TIME
Example:
-
(st)add t/CS2103 post lecture quiz d/2020-11-11 23:59 e/1
Adds an assignment titled CS2103 post lecture quiz to the Schoolwork Tracker, due 11 November 2020 23:59 PM and which takes an estimated one hour to complete. Status of this assignment is 'Uncompleted' by default.
3.4.2. Editing an assignment: (st)edit
Edits an assignment in the Schoolwork Tracker.
Format: (st)edit INDEX [t/TITLE] [e/ESTIMATED_COMPLETION_TIME] [d/DEADLINE] [s/STATUS]
Examples:
-
(st)edit 1 t/CS2103 Quiz e/1
Changes the title of the first assignment to 'CS2103 Quiz' and estimated completion time to 1 hour. -
(st)edit 2 d/2020-11-09 23:59
Changes the deadline of the second assignment to 9 November 2020 11:59 PM.
3.4.3. Deleting an assignment : (st)delete
Deletes an assignment.
Format: (st)delete INDEX
Example:
-
(st)delete 1
Deletes the 1st assignment in the Schoolwork Tracker.
end::schoolworkTracker[]
3.4.4. Listing assignments : (st)list
Sorts the user’s list of assignments and displays them. This helps the user choose which assignment to do first.
Format: (st)list [-d] [-e]
Examples:
-
(st)list -d
Assignments will be shown in chronological order, with respect to the deadline, with all completed assignments at the bottom of the list. -
(st)list -e
Assignments will be sorted in order of decreasing estimated work hours, with all completed assignments shown at the bottom of the list.
tag::schedule[]
3.4.5. Generate upcoming schedule : (st)schedule
Looks through the list of saved assignments to generate your upcoming schedule.
The schedule is generated by distributing the estimated work hours of uncompleted and not overdue assignments across several days, ranging from
query time to time that it is due. The schedule generated is based on the assumption that there is 24 hours each day to work with for days between
query date and deadline (both exclusive) and remaining time available on query date.
Format: (st)schedule n/NUM_DAYS
Example:
-
(st)schedule n/5
Displays 5 days of your generated schedule.
end::schedule[]
tag::eventSchedule[]
3.5. Event Schedule commands
3.5.1. Create a new social event : (ev)add
Creates a social event.
Format: (ev)add t/EVENT_TITLE d/EVENT_DATE h/DURATION p/PLACE
Examples:
-
(ev)add t/Facebook job interview d/2020-10-18 10:00 h/3 p/Facebook APAC HQ
Adds a new social event with title "Facebook job interview", event date 2020-10-18, duration of 3 hours and place of event at "Facebook APAC HQ".
3.5.2. Edit a social event : (ev)edit
Allows editing of a social event.
Format: (ev)edit INDEX [t/EVENT_TITLE] [d/EVENT_DATE] [h/DURATION] [p/LOCATION]
Examples:
-
(ev)edit 2 d/2020-10-09 22:00 h/2
Edits the 2nd event in the Event Schedule by changing the timing to 10PM on the 9th of October and the estimated duration to be 2 hours.
3.5.3. Deletes a social event : (ev)delete
Deletes a social event.
Format: (ev)delete INDEX
Examples:
-
(ev)delete 1
Deletes the 1st Event in the Event Schedule.
3.5.4. Listing all events : (ev)list
Lists all social events in your Event Schedule.
Format: (ev)list
end::eventSchedule[]
3.6. Saving the data
Address book, Schoolwork Tracker, Event Book and Restaurant Book data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
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 Address Book folder.
5. Command Summary
-
Add :
-
(ab)add n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [o/ORGANIZATION] [t/TAG]…
-
(rt)add n/NAME l/LOCATION v/VISITED [o/OPERATING_HOURS] [p/PRICE_POINT] [c/CUISINE]
-
(st)add t/TITLE d/DEADLINE e/ESTIMATED_COMPLETION_TIME
-
(ev)add t/EVENT_TITLE d/EVENT_DATE h/DURATION p/PLACE
-
-
Delete :
-
(ab)delete INDEX
-
(rt)delete INDEX
-
(st)delete INDEX
-
(ev)delete INDEX
-
-
Edit :
-
(ab)edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [o/ORGANIZATION] [t/TAG_TO_BE_ADDED]… [-t/TAG_TO_BE_DELETED]…
-
(rt)edit INDEX [n/RESTAURANT] [l/LOCATION] [v/VISITED] [o/OPERATING_HOURS] [p/PRICE] [c/CUISINE]
-
(st)edit INDEX [t/TITLE] [d/DEADLINE] [e/ESTIMATED_COMPLETION_TIME] [s/STATUS]
-
(ev)edit INDEX [t/EVENT_TITLE] [d/EVENT_DATE] [h/DURATION] [p/PLACE]
-
-
Find :
-
(ab)find [o/ORGANIZATION] [n/NAME] [t/TAG]
-
(rt)find [n/RESTAURANT_NAME] [l/LOCATION]
-
-
List :
-
(ab)list
-
(rt)list
-
(st)list [-d] [-e]
-
(ev)list
-
-
Add notes :
-
(ab)addnote INDEX i/INFO…
-
(rt)addnote INDEX [r/RECOMMENDED_FOOD]… [g/GOOD_FOOD]… [b/BAD_FOOD]…
-
-
Delete notes :
-
(ab)deletenote INDEX l/LINE_NUMBER…
-
(rt)deletenote INDEX [rl/RECOMMENDED_FOOD_LINE_NUMBER]… [gl/GOOD_FOOD_LINE_NUMBER]… [bl/BAD_FOOD_LINE_NUMBER]…
-
-
Edit notes :
-
(ab)editnote INDEX l/LINE_NUMBER i/INFO
-
(rt)editnote INDEX [rl/LINE_NUMBER_RECOMMENDED] [r/RECOMMENDED_FOOD] [gl/LINE_NUMBER_GOOD] [g/GOOD_FOOD] [bl/LINE_NUMBER_BAD] [b/BAD_FOOD]
-
-
Get all information about a contact :
(ab)get INDEX
-
Show contacts with birthdays in the next 5 days :
(ab)birthday
-
Shows the user’s upcoming schedule :
(st)schedule n/NUM_DAYS
-
Undo command :
undo
-
Redo command :
redo
-
Clear :
clear
-
Help :
help
-
exit :
exit