By: Team CS2103T T09-1 Since: Sep 2019 License: MIT

1. Introduction

Plan2Travel is for those who prefer to use a desktop app for planning an overseas trip. More importantly, Plan2Travel 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, Plan2Travel can get your contact management tasks done faster than traditional GUI apps. Interested? Jump to the Section 2, “Quick Start” to get started. Enjoy!

2. Quick Start

  1. Ensure you have Java 11 or above installed in your Computer.

  2. Download the latest plan2travel.jar here.

  3. Copy the file to the folder you want to use as the home folder for your Plan2Travel.

  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:

    • help : a list of commands available on Plan2Travel

    • add activity n/Visit Gundam Museum a/Tokyo du/120 p/65543221 : adds an activity named Visit Gundam Museum at location Tokyo with a duration of 120 minutes and contact number 65543221 to the activity list.

    • exit : exits the app

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

3. Features

Command Format

  • All command words are CASE SENSITIVE.

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in add activity n/NAME, NAME is a parameter which can be used as add activity n/Eat lunch.

  • Items in square brackets are optional e.g n/NAME [t/TAG] can be used as n/Eat lunch t/Western or as n/Eat lunch.

  • Items with ​ after them can be used multiple times including zero times e.g. [t/TAG]…​ can be used as (i.e. 0 times), t/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.

  • Any two items enclosed within with () and has a || lying between them indicates that either one of the items has to be present. e.g. (t/Dining || n/DisneyLand) can be used as t/Dining or n/DisneyLand.

Callouts are rectangular boxes with an icon and words to explain certain information. Below are 3 callouts that are used for this user guide:

This represents a note. A note represents additional information. Do take a look as they might be relevant to you!
This represents a tip. A tip means something that is handy, and may aid you in getting through the application. Tips are usually less crucial, and you may decide to skip them.
This represents a warning. A warning denotes something of great significance, and you should pay close attention to the statement.

3.1. Help : help

Displays a help page
Format: help

3.2. View specific tab view

Displays the tab specified. The available tabs to view are itinerary, info and help.
Format: view TAB_NAME

Examples:

  • view itinerary

  • view info

  • view help

Each command will display the tab specified.

3.3. Set name/start date : set

Sets the trip’s name or start date
Format: set [n/NAME] [sd/START_DATE]

  • The name provided cannot exceed 30 characters long.

  • The start date provided needs to be in dd-mm-yyyy format.

Examples:

  • set n/India sd/11-11-2019

3.4. Adding an accommodation: add accommodation

Creates an accommodation and adds it to the accommodation list
Format: add accommodation n/NAME a/ADDRESS [p/PHONE_NUMBER] [t/TAGS]

  • Name must only contain alphanumeric characters and spaces (names with only white space would be treated as blank).

  • Address can take up any values (likewise, addresses with only white space would be treated as blank).

Examples:

  • add accommodation n/Hotel 81 a/Orchard p/67555312

Adds "Hotel 81" with an address, "Orchard", and phone number, "67555312", into the accommodation list.

  • add accommodation n/Mandarin Oriental a/Ang Mo Kio

Adds "Mandarin Oriental" with an address, "Ang Mo Kio" into the accommodation list.

3.5. Editing an accommodation: edit accommodation

Edits an accommodation
Format: edit accommodation INDEX [n/NAME] [a/ADDRESS] [p/PHONE_NUMBER] [t/TAGS]

  • Edits the accommodation with the specified INDEX.

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

    • The index provided must be a positive integer.

    • The index provided must not exceed the number of accommodations in the accommodation list.

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

  • Existing fields will be updated by the input fields.

Examples:

  • edit accommodation 1 n/MBS a/Marina Bay t/Atas

Edits the 1st accommodation in the accommodation list to have a name, "MBS", address, "Marina Bay", and tag, "Atas".

3.6. Deleting an accommodation: delete accommodation

Delete one or more accommodation from the accommodation list
Format: delete accommodation INDEX…​

  • Deletes the accommodation at the specified INDEX.

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

    • The index provided must be a positive integer.

    • The index provided must not exceed the number of accommodations in the accommodation list.

Examples:

  • delete accommodation 2

Deletes the 2nd accommodation in the accommodation list.

3.7. Listing all accommodation: list accommodation

Displays a list view of all the accommodation
Format: list accommodation

Example:

  • list accommodation

The tab of the accommodation list would drop down to show the accommodations.

3.8. Viewing a specific accommodation: view accommodation

Allows the user to view a specific accommodation in the list based on the index shown
Format view accommodation ACCOMMODATION_INDEX

  • Views the accommodation at the specified INDEX.

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

    • The index provided must be a positive integer.

    • The index provided must not exceed the number of accommodations in the accommodation list.

Examples :

  • view accommodation 3

Shows a detailed view of the 3rd accommodation in the accommodation list.

3.9. Adding an activity: add activity

Creates an activity and adds it to the activity list
Format: add activity n/NAME a/ADDRESS du/DURATION [p/PHONE_NUMBER] [c/COST] [pr/PRIORITY] [t/TAGS]

  • Name must only contain alphanumeric characters and spaces (names with only white space would be treated as blank).

  • Address can take up any values (likewise, addresses with only white space would be treated as blank).

  • Duration is in minutes and must be less than or equal to 1440 minutes.

  • Phone number should only contain numbers and must be at least 3 digits long.

  • Cost should only contain numbers and have at most 2 decimal places. (Maximum cost is 10^25)

  • Priority should only contain numbers and range from 1 to 7 inclusive. (1 being the highest priority, 7 being the lowest).

Examples:

  • add activity n/Visit Gundam Museum a/Tokyo du/90 p/67521312

Adds "Visit Gundam Museum" with an address, "Tokyo", duration, 90 minutes, and phone number, "67521312", to the activity list.

  • add activity n/Ski a/Mount Sinai du/120

Adds "Ski" with an address, "Mount Sinai", and duration, 120 minutes, to the activity list.

3.10. Editing an activity: edit activity

Edits an activity
Format: edit activity INDEX [n/NAME] [a/ADDRESS] [p/PHONE_NUMBER] [c/COST] [pr/PRIORITY] [t/TAGS]

  • Edits the activity with the specified INDEX.

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

    • The index provided must be a positive integer.

    • The index provided must not exceed the number of activities in the activity list.

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

  • Existing fields will be updated by the input fields.

Examples:

  • edit activity 1 n/Dinner a/Hotel t/Western

Edits the 1st activity in the activity list to have a name, "Dinner", address, "Hotel", and tag, "Western".

3.11. Deleting an activity: delete activity

Delete one or more activities from the activity list
Format: delete activity INDEX…​

  • Deletes the activity at the specified INDEX.

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

    • The index provided must be a positive integer.

    • The index provided must not exceed the number of activities in the activity list.

Examples:

  • delete activity 2

Deletes the 2nd activity in the activity list.

3.12. Listing all activities: list activity

Displays a list view of all the activities
Format: list activity

Example:

  • list activity

The tab of the activity list would drop down to show the activities.

3.13. Viewing a specific activity: view activity

Allows the user to view a specific activity in the list based on the index shown
Format view activity ACTIVITY_INDEX

  • Views the activity at the specified INDEX.

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

    • The index provided must be a positive integer.

    • The index provided must not exceed the number of activities in the activity list.

Examples :

  • view activity 3

Shows a detailed view of the 3rd activity in the activity list.

3.14. Adding a contact: add contact

Creates a contact and adds it the contact list
Format: add contact n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAGS]

  • Name must only contain alphanumeric characters and spaces (names with only white space would be treated as blank).

  • Phone number should only contain numbers and must be at least 3 digits long (numbers with only white space would be treated as blank).

  • Emails should be of the format local-part@domain

    • local-part should only contain alphanumerics and the following special characters: !#$%&'*+/=?`{|}~^.-

Examples:

  • add contact n/Bob p/91392506

A contact with name, "Bob" and phone number, "83747658", is added to the contact list.

  • add contact n/Sheryl p/85516629 a/Buangkok

A contact with name, "Sheryl", phone number, "96668710", and address, "Buangkok", is added to the contact list.

3.15. Editing a contact: edit contact

Edits an existing contact in the contact list
Format: edit contact INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAGS]

  • Edits the contact with the specified INDEX.

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

    • The index provided must be a positive integer.

    • The index provided must not exceed the number of contacts in the contact list.

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

  • Existing fields will be updated with the input fields.

  • Name must only contain alphanumeric characters and spaces (names with only white space would be treated as blank).

  • Phone number should only contain numbers and must be at least 3 digits long (numbers with only white space would be treated as blank).

  • Emails should be of the format local-part@domain

    • local-part should only contain alphanumerics and the following special characters: !#$%&'*+/=?`{|}~^.-

Examples:

  • edit contact 1 p/93746658

Edits the phone number of the 1st contact to be ,"93746658".

3.16. Deleting a contact: delete contact

Deletes a contact from the contact list
Format: delete contact INDEX

  • Deletes the contact at the specified INDEX.

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

    • The index provided must be a positive integer.

    • The index provided must not exceed the number of contacts in the contact list.

Examples:

  • delete contact 3

Deletes the 3rd contact in the contact list.

3.17. List the contacts in the planner: list contact

List the contacts in the planner
Format: list contact

3.18. Viewing a specific contact: view contact

Allows the user to view a specific contact in the list based on the index shown
Format view contact CONTACT_INDEX

  • Views the contact at the specified INDEX.

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

    • The index provided must be a positive integer.

    • The index provided must not exceed the number of contacts in the contact list.

Examples :

  • view contact 3

Views the 3rd contact in the contact list.

3.19. Adds days to the schedule: add days

Adds DAY_NUMBER amount of days to the itinerary
Format: add days DAY_NUMBER

  • The number of days provided must be a positive integer.

  • The total number of days in the itinerary cannot exceed 15 days.

Examples:

  • add days 7

Extends the itinerary by 7 days.

3.20. Deleting a day: delete day

Deletes day at DAY_INDEX from the itinerary.
Format: delete day DAY_INDEX

  • Deletes the day at the specified INDEX.

    • The index provided refers to the index of the day in the itinerary.

    • The index provided must be a positive integer.

    • The index provided must not exceed the number of days in the itinerary.

Examples:

  • delete day 2

Deletes day 2 from the itinerary.

3.21. List activities in a day: list day

Lists the activities within the day at DAY_INDEX in the itinerary.
Format: list day DAY_INDEX

Examples:

  • list day 3

Lists activities within day 3 in the itinerary.

Lists activities within day 3 of the itinerary.

3.22. Scheduling an activity to a day: schedule

Schedules an activity to a day
Format: schedule ACTIVITY_INDEX st/START_TIME d/DAY_INDEX

  • The indices provided refers to the index of an activity in the activity list and the index of a day in the itinerary.

  • The indices provided must be positive integers.

  • The indices provided must not exceed the number of activities in the activity list or the number of days in the itinerary.

  • The start time should follow a 24-HOUR format (i.e. 1400)

Examples:

  • schedule 2 st/1000 d/2

Schedules the second activity in the activity list under day 2 to start at 1000hrs.

3.23. Unscheduling activities from a day: unschedule

Unschedules an activity from a day
Format: unschedule ACTIVITY_INDEX d/DAY_INDEX

  • The ACTIVITY_INDEX provided refers to the index of an activity in the day list and the DAY_INDEX is the index of a day in the itinerary.

  • The indices provided refers to the index of an activity in the day and the index of a day in the itinerary.

  • The indices provided must be positive integers.

  • The indices provided must not exceed the number of activities in the day or the number of days in the itinerary.

Examples:

  • unschedule 5 d/2

This remove the 5th activity from scheduled in day 2.

You can use the list day command to find out the index of the activity you wish to unschedule.

3.24. Auto Schedule: autoschedule

Generates a list of activities for the specified days based on the activity’s priority and the number of times it has been scheduled in the timetable. Activity with the highest priority and the least number of times being scheduled in the timetable will be chosen.

If the end time of the activity chosen overlaps with the next activity’s start time, the activity with the next highest priority and second lowest number of counts in the timetable will be chosen. This process will repeat until a suitable activity to schedule is found.

  • Start time can be specified for activity to be scheduled at that timing.

  • A specific activity name can be specified using n/ instead of t/ if there is a desired activity to be scheduled.

  • Location for those activities can be specified as well.

  • The day to schedule for can be specified, otherwise it is assumed to be scheduled for all days.

  • Timing can be specified if there is an activity that is confirmed to do at that timing.

  • An activity name can be specified using n/ instead of t/ if there is an activity that has been confirmed to do.

  • Location for that day can be specified, otherwise it is assumed to be any location.

  • The Day to schedule for can be specified, otherwise it is assumed to be scheduled for all days.

The activity with the specified name or tag must be present in the activity list.
You may use n/ to denote a specific activity name and specify the start time if you have confirmed to do an activity at a specific time.
You may wish to input the location of the activities so that we schedule activities that are in the same location together for the specified day to reduce your travelling time.

Format: autoschedule (t/TAG [START_TIME]|| n/ACTIVITY_NAME [START_TIME])…​ [a/LOCATION_OF_ACTIVITIES] [d/DAY_INDEX…​]

Examples:

  • autoschedule t/Breakfast t/Sightseeing t/Dinner

  • autoschedule t/Breakfast t/Sightseeing t/Dinner a/Kyoto d/1

  • autoschedule t/Breakfast n/DisneyLand t/Dinner a/Kyoto d/1

  • autoschedule t/Breakfast 1000 n/DisneyLand t/Dinner a/Kyoto d/1 2 3 4

3.25. Optimising by budget: optimise

Optimises a day’s schedule by finding all possible combinations of activities. The resulting combination would have the lowest total cost. If there are multiple combinations with the same cost, the combination with the most activities would be chosen.

Format: optimise DAY_INDEX

  • Optimises the day at the specified DAY_INDEX.

    • The index provided refers to the index of a day in the itinerary.

    • The index provided must be positive integer.

    • The index provided must not exceed the number of days in the itinerary.

Examples:

BeforeOptimise
Figure 1. Day 2 has Overlapping Activities
  • optimise 2

AfterOptimise
Figure 2. Day 2 has been optimised.
The day to be optimised must not be empty.

3.26. Planning a new trip: new

Creates and loads a new empty trip with desired name.

Format: new n/NAME

  • Compulsory field, name, must be present.

  • Name cannot exceed 30 characters.

  • Name can only contain alphanumeric characters and spaces, and cannot be left empty.

  • Name of an existing saved trip cannot be used.

  • Name is reflected as itinerary name.

Examples:

  • new n/Iceland Trip

Creates a new, empty trip plan that has the name "Iceland Trip" and saves it.

3.27. Review an existing trip: load

Loads a saved trip with desired name.

Format: load n/NAME

  • Compulsory field, name, must be present.

  • Unsaved trip plans cannot be loaded.

  • The current trip plan cannot be reloaded.

  • Name is reflected as itinerary name.

Example:

  • load n/Greenland Trip

Loads an existing, saved trip plan that has the name "Greenland Trip".

3.28. Make a copy of an existing trip: copyto

Creates and loads a copy of current trip using desired name.

Format: copyto n/NAME

  • Compulsory field, name, must be present.

  • Name cannot exceed 30 characters.

  • Name can only contain alphanumeric characters and spaces, and cannot be left empty.

  • Name of an existing saved trip cannot be used.

  • Name is the only visible difference between the copy and the original trip plan.

  • Name is reflected as itinerary name.

Examples:

  • copyto n/London Trip

Creates a copy of the current viewable, saved trip plan. The trip plan copy will have the name "London Trip".

3.29. Clears existing trip: clear

Clears all current trip information except for name.

  • Name is reflected as itinerary name.

Format: clear

3.30. Undo: undo

Allows the user to undo by one action. Only Undoable commands executed previously can be undone. Refer to the list below for all possible undoable commands.

Format: undo

List of UndoableCommand:

add activity/ accommodation/ contact/ days

delete activity/ accommodation/ contact/ day

edit activity/ accommodation/ contact

schedule

unschedule

autoschedule

optimise

clear

3.31. Redo: redo

Redo by one action. This command is to revert the changes of the latest undo.

Format: redo

redo command can only be called after undo.

The 4 screenshots below demonstrates the Undo/Redo command when the user executes optimise budget command.

  • Before executing 'optimise'

BeforeOptimise
Figure 3. Day 2 contains overlapping activities
  • After executing 'optimise 2'

AfterOptimise
Figure 4. Day 2 has been optimised, no overlaps.
  • After executing 'undo'

AfterUndo
Figure 5. Optimise command successfully undone
  • After executing 'redo'

AfterOptimise
Figure 6. Optimise command successfully redone, no overlaps.

3.32. Autocomplete

While typing a command, suggestions from a dropdown menu will appear. The menu can be interacted with using the arrow keys, enter button or the mouse.

  • Autocomplete for commands

CommandAutoComplete
  • Autocomplete for prefix

PrefixAutoComplete

3.33. Look up history of inputs: history[Coming in v2.0]

Lists the inputs that have been entered
Format: history

3.34. Export trip plan: export[Coming in v2.0]

Exports the trip plan into a pdf
Format: export

3.35. Auto-correct[Coming in v2.0]

When there is an invalid command, the input command is checked against the known command list for similarity and the user will be prompted with the closest command match

Examples:

  • hitsory

User will be prompted with the “history” command as a suggestion.

3.36. Exiting the program : exit

Exits the program.
Format: exit

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 adds with the file that contains the data of your previous Plan2Travel folder.

5. Command Summary

5.1. Add Commands

Command

Example

add accommodation n/NAME a/ADDRESS [p/Phone_NUMBER] [e/EMAIL] [t/TAG]

add accommodation n/Paradise Hotel a/23 Amoy Quee Road p/22224444

add activity n/NAME a/ADDRESS du/DURATION [p/PHONE_NUMBER] [e/EMAIL] [pr/PRIORITY] [t/TAG]

add activity n/Skiing a/Mount Kurabaki du/120

add contact n/NAME p/PHONE_NUMBER [e/EMAIL] [a/ADDRESS] [t/TAG]

add contact n/James Ho a/123, Clementi Rd, 1234665 p/22224444 e/jamesho@example.com t/friend t/colleague

add days NUMBER

add days 10

5.2. Delete Commands

Command

delete accommodation INDEX

delete activity INDEX

delete contact INDEX

delete day INDEX

5.3. Edit Commands

Command

Example

edit accommodation INDEX [n/NAME] [a/ADDRESS] [p/PHONE_NUMBER] [e/EMAIL] [t/TAG]

edit accommodation 3 n/Kent Ridge Hotel a/Clementi

edit activity INDEX [n/NAME] [a/ADDRESS] [du/DURATION] [p/PHONE_NUMBER] [e/EMAIL] [pr/PRIORITY] [t/TAG]

edit activity 5 n/Go Disneyland

edit contact INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]

edit contact 2 n/James Lee e/jameslee@example.com

5.4. Schedule Commands

Command

Example

schedule ACTIVITY_INDEX st/START_TIME d/DAY_INDEX

schedule 2 st/1400 d/2

unschedule ACTIVITY_INDEX d/DAY_INDEX

unschedule ACTIVITY_INDEX d/DAY_INDEX

autoschedule [t/TAG START_TIME] n/ACTIVITY_NAME START_TIME a/LOCATION_OF_ACTIVITIES d/[DAY_INDEX]

autoschedule t/Dining 1000 t/Attraction 1200 n/Disneyland 1400 t/Dining a/Tokyo d/1 4 5

5.5. List Commands

Command

list accommodation

list activity

list contact

list day DAY_INDEX

5.6. View Commands

Command

view accommodation ACCOMMODATION_INDEX

view activity ACTIVITY_INDEX

view contact CONTACT_INDEX

view itinerary

view info

view help

5.7. Other Commands

Command

optimise DAY_INDEX

set [n/NAME] [sd/START_DATE]

new n/NAME

load n/NAME

copyto n/NAME

undo

redo

clear

help

exit