Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master' into gui-tests
Browse files Browse the repository at this point in the history
  • Loading branch information
karen committed Nov 1, 2016
2 parents a9fbf79 + ce01549 commit 137ad05
Show file tree
Hide file tree
Showing 23 changed files with 2,402 additions and 345 deletions.
173 changes: 173 additions & 0 deletions collated/docs/A0116603R.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
# A0116603R
###### /DeveloperGuide.md
``` md
### Continuous Integration

We use [Travis CI](https://travis-ci.org/) to perform _Continuous Integration_ on our projects.
See [UsingTravis.md](UsingTravis.md) for more details.

### Making a Release

Here are the steps to create a new release.

1. Generate a JAR file [using Gradle](UsingGradle.md#creating-the-jar-file).
2. Tag the repo with the version number. e.g. `v0.1`
2. [Crete a new release using GitHub](https://help.github.com/articles/creating-releases/)
and upload the JAR file your created.

### Managing Dependencies

A project often depends on third-party libraries. For example, Address Book depends on the
[Jackson library](http://wiki.fasterxml.com/JacksonHome) for XML parsing. Managing these _dependencies_
can be automated using Gradle. For example, Gradle can download the dependencies automatically, which
is better than these alternatives.<br>
a. Include those libraries in the repo (this bloats the repo size)<br>
b. Require developers to download those libraries manually (this creates extra work for developers)<br>

## Appendix A : User Stories

| User Stories | Likely/Not Likely |
| ------ | ----------- |
|As a user I can add an entry by specifying a entry title only, so that I can record entrys that need to be done ‘some day’.|Likely
|As a user I can add entries that have a specific start and end time, so that I can record events with a specific duration.|Likely|
|As a user I can add descriptions to my entries, so that I can add detail to my tasks.|Likely|
|As a user I can edit an entry, so that I can make changes to entries as needed.|Likely|
|As a user I can delete an entry, so that I can get rid of entries that I no longer care to track.|Likely|
|As a user I can list all entries that are due, so that I can get an overview of all my entries.|Likely|
|As a user I can find upcoming entries, so that I can decide what needs to be done soon.|Likely|
|As a user, I can set a entry as completed, so that I can keep track of completed/uncompleted entries.|Likely|
|As a user, I can add tags to the entries so that I can categorize entries together|Likely|
|As a user I can search for an entry by different entry attributes, so that I can find specific entries.|Likely|
|As a user I can undo a certain number of actions so that I can correct any mistaken actions.|Likely|
|As a new user I can view more information about a particular command, so that I can learn how to use various commands.|Likely|
|As an advanced user I can use shorter versions of a command, so that type a command faster.|Likely|
|As a user, I can schedule a entry to be automatically added with a given frequency so that I don’t have to manually add entries every time.|Likely|
|As an advanced user, I can specify a specific folder as the data storage location, so that I can choose to store the data file in a local folder controlled by a cloud syncing service, allowing me to access entry data from multiple computers.|Likely|
|As a user, I can choose different views of all my tasks, e.g. “Due Today”, “Due This Week”, so that I can focus on what is important to me at that moment.|Likely|
|As a user, I can use autocompletion of entry description so that I can quickly add entries that are similar to what I have added before|Not Likely|
|As a user, I can personalize my app by changing the color scheme so that it fits my aesthetic requirements.|Not Likely|
|As an advanced user, I can rebind default commands into my own keyboard shortcuts, so that I can use shortcuts that I am comfortable with.|Not Likely|
|As a user, I can type in commands in a more ‘natural’ manner, so that I do not need to learn the command format.|Not Likely|

## Appendix B : Use Cases

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

#### Use case: Delete person

**Use case: Create a floating task**

Actors: User

MSS

1. User request to create a new entry without specifying the start and/or end date and deadline
2. TodoList add that particular floating task into Storage and save it

Use Case Ends

*Extensions*

1a. Entry is entered with invalid properties e.g. title
> 1a1. TodoList warns user that the entry is invalid and does not add it into Storage
>
> Use Case Ends

1b. Entry already exists
> 1b1. TodoList warns user that the entry already exists and does not add it into Storage
>
> Use Case Ends

**Use case: Create an event**

Actors: User

MSS

1. User request to create a new entry while specifying the start and/or end date but not deadline
2. TodoList add that particular event into Storage and save it

Use Case Ends

**Use Case: Create a deadline**

Actors: User

MSS

1. User request to create a new entry while specifying the deadline but no start and/or end date
2. TodoList add that particular deadline into Storage and save it

Use Case Ends

**Use Case: Delete an entry**

Actors: User

MSS

1. User requests to delete an entry with a specified id
2. TodoList deletes the entry

Use Case Ends

*Extensions*

1a. Entry with the specified id does not exist
> 1a1. TodoList warns the user that the entry with the specified id does not exist
>
> Use Case Ends

```
###### /UserGuide.md
``` md
<img src="images/pq_start.png" width="600"><br>

Our to-do application primarily takes in input using a command line interface. It supports the basic creation, reading, updating and deletion of entries. You may add entries with or without deadlines. These are known as tasks. Entries with a start and/or end time are known as events.

To start, try adding a new task:

```
add Buy groceries
```
<img src="images/add.png" width="600">
You can edit a task with the following command:
```
edit 0 end/tomorrow 5pm
```
Yep, natural language is parsed as well!
<img src="images/edit.png" width="600">
Undo is quite easily done:
```
$ undo

$ list
[ ] Get groceries
```
Finally, try deleting the task:
```
delete 1
```
<img src="images/delete.png" width="600">
```
###### /UserGuide.md
``` md
#### Help
```
help [<command>]
```
Show available commands and how to use them
Help is also shown if you enter an incorrect command e.g. abcd
```
162 changes: 162 additions & 0 deletions collated/docs/A0121501E.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
# A0121501E
###### /DeveloperGuide.md
``` md
**Use Case: List all entries**

Actors: User

MSS

1. User requests to list all entries
2. TodoList shows a list of entries, sorted by date (oldest first)

Use Case Ends

**Use Case: List entries with filters**

Actors: User

MSS

1. User requests to list entries with some filters
2. TodoList shows a list of entries that satisfies the filters, sorted by date (oldest first)

Use Case Ends

**Use Case: Add tags to a list of entries**

Actors: User

MSS

1. User requests to list a filtered list of entries
2. User requests to add tags to the listed entries

Use Case Ends

*Extensions*

2a. User attempts to add an invalid tag
>2a1. TodoList tells the user that the tag name is invalid
>
>Use Case Ends

## Appendix C : Non Functional Requirements

1. User should navigate the application primarily using the command line
2. Should be easy to navigate through large numbers of tasks and events
3. Should not have a response time more than 100ms
4. Should have minimal data loss after an unexpected crash
5. Should have consistent data
6. Should be able to accommodate more than 1000 tasks and events
7. Should be able to work offline
8. Should not exceed 100MB of RAM when in use
9. Should store data as files instead of in some relational database
10. Storage file should be human-editable and human-readable


## Appendix D : Glossary

##### Mainstream OS

> Windows, Linux, Unix, OS-X


## Appendix E : Product Survey

### Trello:

Strengths:

- Geared towards task management: focus on only 1 thing
- Covers various aspects of task management: deadline, assignees, descriptions, discussions
- Designed to be collaborative
- Unique UI, which gives a great overview of the tasks
- Cross-platform

Weaknesses:

- Missing ability to schedule recurring tasks
- Poor integration with calendar
- A bit cluttered for personal use, since it’s designed for collaborative work

### Evernote:

Strengths:

- All-in-one swiss army knife: Not only task management, can keep notes as well
- Good in capturing tasks that need to be done before a specific date/time, or after a specific date/time, and items without specific times.
- Can access tasks online and offline (if Jim is willing to pay for Evernote premium)

Weaknesses:

- Needs a few clicks/keyboard shortcuts to add a new task
- No way to “block” some time out except by explicitly writing it in a note.

### Google Keep:

Strengths:

- Compact UI that allows for many tasks to be viewed at once.
- Colored tasks as visual aid.
- Checkbox to indicate task completion. Alternatively, tasks can be archived to indicate completion.
- Supports dynamic content such as links, images and drawings.
- Sync through multiple gadget.

Weakness:

- No options for viewing the list of tasks in different orders (most recent, deadline etc)
- No calendar view.

```
###### /UserGuide.md
``` md
#### Tagging
```
tag <task_id> #<tag_name> [#<tag_name>...]
```
Add tag(s) to a particular entry with a specified id
Examples:
- `tag 123 #CS2103T #rocks`
Delete tag(s) from a particular entry with a specified id using `untag`
- `untag 123 #rocks`
Duplicated tags will only be added once
```
###### /UserGuide.md
``` md
#### Deleting
```
delete <entry_id>
```
Delete the task with a particular entry id
`list` should be executed before this command to obtain a entry id.
Examples:
- `Delete 42`
#### Marking
```
mark <entry_id>
```
Check (or uncheck, for `unmark`) a entry as completed.
`list` should be executed before this command to obtain a entry id.
Examples:
- `mark 42`
- `unmark 42`
```
Loading

0 comments on commit 137ad05

Please sign in to comment.