Skip to content

Commit

Permalink
Merge pull request #94 from CS2103AUG2016-T14-C2/master-update-docs
Browse files Browse the repository at this point in the history
Merge Master-Update-Docs
  • Loading branch information
qhng authored Oct 28, 2016
2 parents 29e6901 + a5e2404 commit e41dde8
Show file tree
Hide file tree
Showing 9 changed files with 759 additions and 19 deletions.
377 changes: 377 additions & 0 deletions collated/docs/A0097627N.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,377 @@
# A0097627N
###### \DeveloperGuide.md
``` md

Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`


Priority | As a ... | I want to ... | So that I can...
-------- | :-------- | :--------- | :-----------
`* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App
`* * *` | new user | view more information about a particular command | learn how to use various commands
`* * *` | user | add a new task | record tasks that need to be done some day
`* * *` | user | update a task description/due date/priority level | make modifications to tasks without having delete and re-add it
`* * *` | user | mark completed tasks as done | remind myself that I have completed a task
`* * *` | user | unmark marked tasks | list a resurfaced task without having to key in the same information again
`* * *` | user | delete a task | get rid of tasks that I no longer care to track
`* * *` | user | sort ongoing tasks by due date or priority | decide what needs to be done soon
`* * *` | user | view the list of ongoing tasks | decide what needs to be done
`* * *` | user | view the list of archived tasks | see what has been done
`* *` | user | find tasks by partial or full task name or date | locate a tasks / similar tasks in case I forget the exact task name I typed
`*` | user | sort tasks by priority level | see the most important tasks and prioritize accordingly
`*` | user | undo most recent command | undo the most recent operation
`*` | user | redo most recent undo command | redo the operation done by the most recent undo action
`*` | advanced user | alias keywords with shorter versions | type a command faster
`*` | advanced user | remove alias of keywords with shorter versions | get rid of shorter version of certain keywords
{More to be added}

## Appendix B : Use Cases

```
###### \DeveloperGuide.md
``` md

(For all use cases below, the **System** is the `Savvy Tasker` and the **Actor** is the `user`, unless specified otherwise)

#### Use case: Add task

**MSS**

1. Savvy Tasker waits for user command
2. User enters command to add a task according to some parameters <br>
3. Savvy Tasker adds the task to a list of tasks <br>
Use case ends.

**Extensions**

2a. At least one parameter entered by user is invalid
> 2a1. Savvy Tasker shows an error message and display the expected format.<br>
> Use case resumes at step 1


2b. START_DATE and END_DATE are different, the RECURRING_TYPE has to be larger than the duration between START_DATE and END_DATE. (e.g. A 3d2n camp cannot be recurring daily but it can be recurring weekly)
> 2b1. Savvy Tasker shows an error message <br>
> Use case resumes at step 1


2c. START_DATE and END_DATE are different, END_DATE is before START_DATE
> 2c1. Savvy Tasker shows an error message <br>
> Use case resumes at step 1


2d. START_DATE and END_DATE are the same, END_TIME is before START_TIME
> 2d1. Savvy Tasker shows an error message <br>
> Use case resumes at step 1

#### Use case: List tasks

**MSS**

1. Savvy Tasker waits for user command
2. User requests to list tasks
3. Savvy Tasker shows a list of tasks <br>
Use case ends.

**Extensions**

3a. The list is empty

> 3a1. Savvy Tasker shows an error message <br>
Use case ends

#### Use case: Find task

**MSS**

1. Savvy Tasker waits for user command
2. User requests to find tasks by keyword
3. Savvy Tasker displays the list of tasks that contains the keyword in the name<br>
Use case ends.

**Extensions**

2a. No parameter entered after command word
> Savvy Tasker shows a 'no parameter entered' error message.<br>
> Use case resumes at step 1


3a. The list is empty
> 2a1. Savvy Tasker shows a 'no task found' error message.<br>
> Use case ends


#### Use case: Modify task

**MSS**

1. Savvy Tasker waits for user command
2. User requests to modify a certain attribute of a specific task
3. Savvy Tasker modifies the task and saves it in memory <br>
Use case ends.

**Extensions**

1a. The list is empty

> 1a1. Use case ends

2a. The given index is invalid

> 2a1. Savvy Tasker shows an error message <br>
Use case resumes at step 3

2b. At least one parameter entered by user is invalid

> 2b1. Savvy Tasker shows an error message and display the expected format <br>
Use case resumes at step 3

#### Use case: Mark task as done

**MSS**

1. Savvy Tasker waits for user command
2. User request to mark specific tasks in the list based on task’s index
3. Savvy Tasker marks the tasks, removes it from the task list, and adds it to the Archived list<br>
Use case ends.

**Extensions**

1a. The list is empty
> 2a1. Savvy Tasker shows a 'no task found' error message.<br>
> Use case ends

2a. The given index is invalid
> 3a1. Savvy Tasker shows a 'invalid index' error message <br>
> Use case resumes at step 1

2b. The task is already marked as done
> 3b1. Savvy Tasker shows a 'task already marked' error message.<br>
> Use case resumes at step 1

###Use case: Unmark marked task

**MSS**

1. Savvy Tasker waits for user command
2. User requests to list archived tasks
3. Savvy Tasker displays a list of archived tasks, sorted by time and date the task has been marked
4. User requests to unmark the specific task in the list based on task’s index
5. Savvy Tasker removes the marked status of the specific task, removes it from the Archived list, and adds it back to the task list <br>
Use case ends.

**Extensions**

2a. The list is empty
> Use case ends

3a. The given index is invalid
> 3a1. Savvy Tasker shows a 'invalid index' error message <br>
> Use case resumes at step 1


#### Use case: Delete task

**MSS**

1. Savvy Tasker waits for user command
2. User requests to list tasks
3. Savvy Tasker shows a list of tasks
4. User requests to delete a specific task in the list
5. Savvy Tasker deletes the task <br>
Use case ends.

**Extensions**

3a. The list is empty

> Use case ends

4a. The given index is invalid

> 4a1. Savvy Tasker shows an error message
> Use case resumes at step 3 <br>

###Use case: Alias keyword and use shorten keyword

**MSS**

1. Savvy Tasker waits for user command
2. User requests to alias a keyword (can be a command or any other frequently used word), with a shorten keyword
3. Savvy Tasker store the shorten keyword associated with the keyword in its database
4. User request a command
4. Savvy Tasker check if the command contain any shorten keyword, if it does, replace the shorten keyword with the associated keyword from its database
5. Savvy Tasker carry out the command <br>
Use case ends.

**Extensions**

2a. The shorten keyword contains only 1 character
> 2a1. Savvy Tasker shows a error message
> Use case resumes at step 1 <br>

2b. The shorten keyword has already been associated with other keywords
> 2b1. Savvy Tasker shows a error message and the shorten keyword's original associated keyword
> Use case resumes at step 1 <br>

###Use case: Unalias keyword

**MSS**

1. Savvy Tasker waits for user command
2. User requests to unalias a shorten keyword
3. Savvy Tasker remove the shorten keyword associated with the keyword in its database <br>
Use case ends.

**Extensions**

2a. The shorten keyword could not be found in Savvy Tasker database
> 2a1. Savvy Tasker shows a 'not found' error message
> Use case resumes at step 1 <br>

###Use case: Undo previous command

**MSS**

1. Savvy Tasker waits for user command
2. User requests to undo last executed command
3. Savvy Tasker undos the last executed command to return to the state before that command was executed <br>
Use case ends.

**Extensions**

2a. There is no previously executed command to undo
> 2a1. Savvy Tasker shows a 'cannot undo' error message <br>
> Use case ends

###Use case: Redo most recently undone command

**MSS**

1. Savvy Tasker waits for user command
2. User requests to redo last undone command
3. Savvy Tasker re executes the executed command that was last undone <br>
Use case ends.

**Extensions**

2a. There are no executed undo commands to redo
> 2a1. Savvy Tasker shows a 'cannot redo' error message <br>
> Use case ends

## Appendix C : Non Functional Requirements

1. Should work on any [mainstream OS](#mainstream-os) as long as it has Java `1.8.0_60` or higher installed.
2. Should be able to hold up to 1000 tasks.
3. Should come with automated unit tests and open source code.
4. Should favor DOS style commands over Unix-style commands.
6. Should work stand-alone and should not be a plug-in to another software.
7. Should work without internet connection.
8. Should store data in text file.
9. Should work without requiring an installer.

{More to be added}

## Appendix D : Glossary

##### Mainstream OS

> Windows, Linux, Unix, OS-X

##### Private contact detail

> A contact detail that is not meant to be shared with others

## Appendix E : Product Survey

```
###### \DeveloperGuide.md
``` md

#### Competing product: Google Calendar

**Pros:**

1. Able to color-code different events
2. Able to set reminders and task/events on repeat
3. Able to add description such as location, remarks and people
4. Able to sync on different devices
5. Able to share calendar
6. Able to undo previous action
7. Able to drag and drop task/events to another date/timing <br>

**Cons:**

1. Unable to check(tick) completed event
2. Do not have a list of archived task
3. Does not cater for floating task <br>

#### Competing product: Todo

**Pros:**

1. Auto prioritization
2. Unlimited contexts
3. Reminders
4. Auto sync with iCal, Toodledo, Outlook, Todo Online <br>

#### Competing product: Remember The Milk

**Pros:**

1. Unlimited contexts
2. Reminders
3. Calendar tasks
4. Auto sync with Gmail (Firefox plugin), Google Calendar, Twitter (direct integration), Atom/RSS, IM (feed)
5. Email notifications, autoprocess
6. API <br>

```
###### \UserGuide.md
``` md

#### Mark a task as done : `mark`
Marks the task as completed identified by the index number used in the last task listing. Completed task will be remove from the normal list and placed under archived list<br>
Format: `mark INDEX [MORE_INDEX]`

> Selects the task and marks the task as done at the specified `INDEX`.
The index refers to the index number shown in the most recent listing.<br>
The index **must be a positive integer** 1, 2, 3, ...

Examples:
* `list`<br>
`mark 2`<br>
Marks the 2nd task in the task book as completed.
* `find CS2103` <br>
`mark 1`<br>
Marks the 1st task in the results of the `find` command as completed.

#### Unmark a task as done : `unmark`
Unmarks the task identified by the index number used in the last task listing.<br>
Format: `Unmark INDEX [MORE_INDEX]`

> Selects the task and marks the task as done at the specified `INDEX`.
The index refers to the index number shown in the most recent listing.<br>
The index **must be a positive integer** 1, 2, 3, ...

Examples:
* `list`<br>
`unmark 2`<br>
Unmarks the 2nd task in the task book as done.
* `find CS2103` <br>
`unmark 1`<br>
Unmarks the 1st task in the results of the `find` command as done.

#### Undo the most recent operation : `undo`
Undo the most recent command that was executed.<br>
Format: `undo`

#### Redo the most recent undo operation : `redo`
Redo the most recent command that was executed by the undo.<br>
Format: `redo`
>Redo is unavailable if the most recent command is not undo

#### Clearing all entries : `clear`
Clears all entries from the Savvy Task.<br>
Format: `clear`

```
Loading

0 comments on commit e41dde8

Please sign in to comment.