From 671cc7e4ea2a02178d90d22ccc64614f34d5ccfa Mon Sep 17 00:00:00 2001 From: rachx Date: Wed, 26 Oct 2016 22:13:58 +0800 Subject: [PATCH] Tag user and developer guide, update about us and collate --- collated/docs/A0003878Y.md | 127 +++++++++++ collated/docs/A0133367E.md | 429 +++++++++++++++++++++++++++++++++++++ collated/docs/A0148031R.md | 230 ++++++++++++++++++++ collated/docs/A0148095X.md | 353 ++++++++++++++++++++++++++++++ docs/AboutUs.md | 52 ++++- docs/DeveloperGuide.md | 13 ++ docs/UserGuide.md | 11 +- 7 files changed, 1201 insertions(+), 14 deletions(-) create mode 100644 collated/docs/A0003878Y.md create mode 100644 collated/docs/A0133367E.md create mode 100644 collated/docs/A0148031R.md create mode 100644 collated/docs/A0148095X.md diff --git a/collated/docs/A0003878Y.md b/collated/docs/A0003878Y.md new file mode 100644 index 000000000000..12ba89345d10 --- /dev/null +++ b/collated/docs/A0003878Y.md @@ -0,0 +1,127 @@ +# A0003878Y +###### \DeveloperGuide.md +``` md +### 3. Logic component + +
+ +**API** : [`Logic.java`](../src/main/java/seedu/agendum/logic/Logic.java) + +1. `Logic` uses the `Parser` class to parse the user command. +2. This results in a `Command` object which is executed by the `LogicManager`. +3. The command execution can affect the `Model` (e.g. adding a task) and/or raise events. +4. The result of the command execution is encapsulated as a `CommandResult` object which is passed back to the `Ui`. + +You can view the Sequence Diagram below for interactions within the `Logic` component for the `execute("delete 1")` API call.
+ +
+ + +``` +###### \DeveloperGuide.md +``` md +## 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 800 tasks in total (including completed tasks). +3. Should come with automated unit tests. +4. Should use a Continuous Integration server for real time status of master’s health. +5. Should be kept open source code. +6. Should favour DOS style commands over Unix-style commands. +7. Should adopt an object oriented design. +8. Should not violate any copyrights. +9. Should have a response time of less than 1 second, for every action performed. +10. Should work offline without an internet connection. +11. Should work as a standalone application. +12. Should not use relational databases to store data. +13. Should store data in an editable text file. +14. Should not require an installer. +15. Should not use paid libraries and frameworks. + + +  + + +``` +###### \UserGuide.md +``` md +## Quick Start + +0. Ensure you have Java version `1.8.0_60` or above installed in your Computer. + + > Take note that Agendum might not work with earlier versions of Java 8. + +1. Download the latest `Agendum.jar` from the [releases](../../../releases) tab. + +2. Copy Agendum.jar to the folder you want to use as the home. + +3. Double-click the file to start Agendum. The GUI should appear promptly. + +4. Type a command in the command box and press Enter to execute it. + + e.g. typing **`help`** and pressing Enter will list some information about commands. + +5. Go ahead and try some of the commands listed below! + * **`add`**` Go to shopping mall` : adds a task with description `Go to shopping mall` to Agendum. + * **`delete`**` 3` : deletes the 3rd task shown in the current list + * **`list`** : lists all uncompleted tasks + * **`exit`** : exits Agendum + +6. You can refer to the [Features](#features) section below for more details of each command. + + +  + + +## Features + +> **Command Format** +> * Words in `UPPER_CASE` are the parameters. +> * Parameters in `SQUARE_BRACKETS` are optional. +> * Parameters with `...` after them can have multiple instances (separated by whitespace). +> * The order of parameters is fixed. +> * Commands and parameters are not case-sensitive e.g `list` will match `List` + + +#### Viewing help : `help` + +If you need some reminder or more information about the features available, you can use the `help` command. + +Format: `help` +> Help is also shown if an incorrect command is entered e.g. `run` + + +#### Adding a task: `add` + +You can add a task without a specific time and date.
+Format: `add TASK_NAME` +> This will create a task without a start date/time or end date/time. + +Examples: + +* `add Workout` +* `add watch Star Wars` + +If you need a task to be done by a specific date, you can specify the deadline after the keyword `by`.
+Format: `add TASK_NAME [by DATE_TIME]` +> Date formats are not case-sensitive + +Examples: + +* `add watch Star Wars by Fri` +* `add watch Star Wars by 9pm` +* `add watch Star Wars by next Wed` +* `add watch Star Wars by 10 Oct, 9.30pm` + +If you need a task to be done within a specific date and time, you can specify the start and end time using `from` and `to`.
+Format: `add TASK_NAME [from START_DATE_TIME to END_DATE_TIME] ` +> If you specify the time but no day or date is given, the date of creation will be used. + +Examples: + +* `add movie marathon from today 12pm to friday 3pm` +* `add project meeting from 10 oct 12pm to 10 oct 2pm` + +The event “project meeting�? will start at 12pm on 10 October and end at 2pm on 10 October. + +``` diff --git a/collated/docs/A0133367E.md b/collated/docs/A0133367E.md new file mode 100644 index 000000000000..6618e3a2cfbd --- /dev/null +++ b/collated/docs/A0133367E.md @@ -0,0 +1,429 @@ +# A0133367E +###### \DeveloperGuide.md +``` md +### 1. Architecture + +
+ +The **_Architecture Diagram_** given above summarizes the high-level design of Agendum. +Here is a quick overview of the main components of Agendum and their main responsibilities. + +#### `Main` +The **`Main`** component has only one class called [`MainApp`](../src/main/java/seedu/agendum/MainApp.java). It is responsible for initializing all components in the correct sequence and connecting them up with each other at app launch. It is also responsible for shutting down the other components and invoking the necessary clean up methods when Agendum is shut down. + + +#### `Commons` +[**`Commons`**](#6-common-classes) represents a collection of classes used by multiple other components. +Two of those classes play important roles at the architecture level. + +* `EventsCentre` : This class (written using [Google's Event Bus library](https://github.com/google/guava/wiki/EventBusExplained)) + is used by components to communicate with other components using events (i.e. a form of _Event Driven_ design) +* `LogsCenter` : This class is used by many classes to write log messages to Agendum's log file to record noteworthy system information and events. + + +#### `UI` +The [**`UI`**](#2-ui-component) component is responsible for interacting with the user by accepting commands, displaying data and results such as updates to the task list. + + +#### `Logic` +The [**`Logic`**](#3-logic-component) component is responsible for processing and executing the user's commands. + + +#### `Model` +The [**`Model`**](#4-model-component) component is responsible for representing and holding Agendum's data. + + +#### `Storage` +The [**`Storage`**](#5-storage-component) component is responsible for reading data from and writing data to the hard disk. + + +Each of the `UI`, `Logic`, `Model` and `Storage` components: + +* Defines its _API_ in an `interface` with the same name as the Component +* Exposes its functionality using a `{Component Name}Manager` class. + +For example, the `Logic` component (see the class diagram given below) defines it's API in the `Logic.java` +interface and exposes its functionality using the `LogicManager.java` class.
+
+ + +#### Event Driven Approach +Agendum applies an Event-Driven approach to reduce direct coupling between components. For example, consider the scenario where the user inputs `delete 1` described in the _Sequence Diagram_ below. The `UI` component will invoke the `Logic` component’s _execute_ method to carry out the given command, `delete 1`. The `Logic` component will identify the corresponding task and will call the `Model` component _deleteTasks_ method to update Agendum’s data and raise a `ToDoListChangedEvent`. + +The _Sequence Diagram_ below illustrates how the components interact for the scenario where the user issues the +command `delete 1` to delete the first task in the displayed list. The `UI` component will invoke the `Logic` component's _execute_ method to carry out the given command. In this scenario, the `Logic` component will identify the corresponding task and invoke `Model`'s _deleteTask(task)_ method to update the in-app memory and raise a `ToDoListChangedEvent`. + + + +> Note: When Agendum's data is changed, the `Model` simply raises a `ToDoListChangedEvent`. + It does not directly request the `Storage` component to save the updates to the hard disk. + Hence, `Model` is not directly coupled to `Storage`. + +The diagram below shows what happens after a `ToDoListChangedEvent` is raised. `EventsCenter` will inform the subscribers (the `UI` and `Storage` components). Both components will then respond accordingly. `UI` will update the status bar to reflect the 'Last Updated' time while `Storage` will save the updates to the task data to hard disk.
+ + + +The following sections will then give more details of each individual component. + + +``` +###### \DeveloperGuide.md +``` md +### 4. Model component + +As mentioned above, the `Model` component stores and manage Agendum's task list data and user's preferences. It also exposes a `UnmodifiableObservableList` that can be 'observed' by other components e.g. the UI can be bound to this list and will automatically update when the data in the list change. It does not depend on other components such as `Logic` and `Storage`. + +The `Model` class is the interface of the `Model` component. It provides several APIs for the `Logic` and `UI` components to update and retrieve Agendum’s task list data. The **API** of the model component can be found at [`Model.java`](../src/main/java/seedu/agendum/model/Model.java). + +The structure and relationship of the various classes in the `Model` component is described in the diagram below. + +
+ +`ModelManager` implements the `Model` Interface. It stores a `UserPref` Object which represents the user’s preference. It stores multiple `ToDoList` objects, including the current and recent lists. + +Each `ToDoList` object has one `UniqueTaskList` object. A `UniqueTaskList` can contain multiple `Task` objects but does not allow duplicates. + +The `ReadOnlyToDoList` and `ReadOnlyTask` interfaces allow other classes and components, such as the `UI`, to access but not modify the list of tasks and their details. + +> * `ToDoList` can potentially be extended to have another `UniqueTagList` object to keep track of tags associated with each task and `ToDoList` will be responsible for syncing the tasks and tags. +> * `Name` is a class as it might be modified to have its own validation regex e.g. can only contain alphanumeric characters. + +Using the same example, if the `Logic` component requests `Model` to _deleteTasks(task)_, the subsequent interactions between objects can be described by the following sequence diagram. + + + +The identified task is removed from the `UniqueTaskList`. The `ModelManager` raises a `ToDoListChangedEvent` and back up the new to-do list to its history of saved lists. + +> `Model`’s _deleteTasks_ methods actually take in `ArrayList` instead of a single task. We use _deleteTasks(task)_ for simplicity in the sequence diagram. + + +``` +###### \DeveloperGuide.md +``` md +## Implementation + +### 1. Logging + +We are using `java.util.logging` package for logging. The `LogsCenter` class is used to manage the logging levels +and logging destinations. + +* The logging level can be controlled using the `logLevel` setting in the configuration file + (See [Configuration](#2-configuration)) +* The `Logger` for a class can be obtained using `LogsCenter.getLogger(Class)` which will log messages according to + the specified logging level +* Currently log messages are output through `Console` and to a `.log` file. + +**Logging Levels** + +Currently, Agendum has 4 logging levels: `SEVERE`, `WARNING`, `INFO` and `FINE`. They record information pertaining to: + +* `SEVERE` : A critical problem which may cause the termination of Agendum
+ e.g. fatal error during the initialization of Agendum's main window +* `WARNING` : A problem which requires attention and caution but allows Agendum to continue working
+ e.g. error reading from/saving to config file +* `INFO` : Noteworthy actions by Agendum
+ e.g. valid and invalid commands executed and their results +* `FINE` : Less significant details that may be useful in debugging
+ e.g. print the elements in actual list instead of just its size + +### 2. Configuration + +You can alter certain properties of our Agendum application (e.g. logging level) through the configuration file. +(default: `config.json`): + + +  + +## Testing + +You can find all the test files in the `./src/test/java` folder. + +### Types of Tests + +#### 1. GUI Tests + +These are _System Tests_ that test the entire App by simulating user actions on the GUI. +They are in the `guitests` package. + +#### 2. Non-GUI Tests + +These are tests that do not involve the GUI. They include, + * _Unit tests_ targeting the lowest level methods/classes.
+ e.g. `seedu.agendum.commons.StringUtilTest` tests the correctness of StringUtil methods e.g. if a source string contains a query string, ignoring letter cases. + * _Integration tests_ that are checking the integration of multiple code units + (individual code units are assumed to be working).
+ e.g. `seedu.agendum.storage.StorageManagerTest` tests if StorageManager is correctly connected to other storage components such as JsonUserPrefsStorage. + * Hybrids of _unit and integration tests_. These tests are checking multiple code units as well as + how the are connected together.
+ e.g. `seedu.agendum.logic.LogicManagerTest` will check various code units from the `Model` and `Logic` components. + +#### 3. Headless Mode GUI Tests + +Thanks to the [TestFX](https://github.com/TestFX/TestFX) library we use, +our GUI tests can be run in [headless mode](#headless-mode).
+See [UsingGradle.md](UsingGradle.md#running-tests) for instructions on how to run tests in headless mode. + +### How to Test + +#### 1. Using Eclipse + +* To run all tests, right-click on the `src/test/java` folder and choose `Run as` > `JUnit Test` +* To run a subset of tests, you can right-click on a test package, test class, or a test and choose to run as a JUnit test. + +#### 2. Using Gradle + +* Launch a terminal on Mac or command window in Windows. Navigate to Agendum’s project directory. We recommend cleaning the project before running all tests in headless mode with the following command `./gradlew clean headless allTests` on Mac and `gradlew clean headless allTests` on Windows. +* See [UsingGradle.md](UsingGradle.md) for more details on how to run tests using Gradle. + +>#### Troubleshooting tests +>**Problem: Tests fail because NullPointException when AssertionError is expected** + +>* Reason: Assertions are not enabled for JUnit tests. + This can happen if you are not using a recent Eclipse version (i.e. _Neon_ or later) +>* Solution: Enable assertions in JUnit tests as described + [here](http://stackoverflow.com/questions/2522897/eclipse-junit-ea-vm-option).
+ Delete run configurations created when you ran tests earlier. + + +  + + +## Dev Ops + +### 1. Build Automation + +We use Gradle to run tests and manage library dependencies. The Gradle configuration for this project is defined in _build.gradle_. + +### 2. Continuous Integration + +We use [Travis CI](https://travis-ci.org/) to perform _Continuous Integration_ on our project. When code is pushed to this repository, Travis CI will run the project tests automatically to ensure that existing functionality will not be negatively affected by the changes. + +### 3. Making a Release + +To contribute 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. `v1.1` + 2. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/) + and upload the JAR file you created. + +### 4. Managing Dependencies + +Agendum depends on third-party libraries, such as the +[Jackson library](http://wiki.fasterxml.com/JacksonHome) for XML parsing. Managing these dependencies have been automated using Gradle. Gradle can download the dependencies automatically hence the libraries are not included in this repo and you do not need to download these libraries manually. To add a new dependency, update _build.gradle_. + + +  + + +``` +###### \DeveloperGuide.md +``` md +## Appendix E : Product Survey + +We conducted a product survey on other task managers. Here is a summary of the strengths and weaknesses of each application. The criteria used for evaluation are own preferences and Jim's requirements. + +#### Wunderlist + +*Strengths:* + +* Clearly displays tasks that have not been completed +* Tasks can be categorized under different lists +* Tasks can have sub tasks +* Possible to highlight tasks by marking as important (starred) or pinning tasks +* Can set deadlines for tasks +* Can create recurring tasks +* Can associate files with tasks +* Can be used offline +* Keyboard friendly – keyboard shortcuts to mark tasks as completed and important +* Search and sort functionality makes finding and organizing tasks easier +* Possible to synchronize across devices +* Give notifications and reminders for tasks near deadline or overdue + +*Weaknesses:* + +* Wunderlist has a complex interface and might require multiple clicks to get specific tasks done. For example, it has separate field to add tasks, search for tasks and a sort button. There are various lists & sub-lists. Each list has a completed/uncompleted section and each task needs to be clicked to display the associated subtasks, notes, files and comment. +* New users might not know how to use the advanced features e.g. creating recurring tasks + +#### Google calendar + +*Strengths:* + +* Have a weekly/monthly/daily calendar view which will make it easy for users to visualize their schedules +* Can create recurring events +* Integrated with Gmail. A user can add events from emails easily and this is desirable since Jim's to do items arrive by emails +* Can be used offline +* Possible to synchronize across devices +* Calendar can be exported to CSV/iCal for other users +* CLI to quick add an event to a calendar instead of clicking through the screen +* Comprehensive search by name/details/people involved/location/time + + +*Weaknesses:* + +* Not possible to mark tasks as completed +* Not possible to add tasks without deadline or time +* CLI does not support updating of tasks/deleting etc. Still requires clicking. +* New users might not know of the keyboard shortcuts +``` +###### \UserGuide.md +``` md +#### Deleting a task : `delete` + +You can delete tasks that you no longer want to keep track of.
+Format: `delete INDEX...` + +> * Deletes the task at the specified `INDEX`. +> * The index refers to the index number shown in the most recent listing. +> * The index **must be a positive integer** 1, 2, 3, ... + +Examples: + +* `list`
+ `delete 2`
+ Deletes the 2nd task in the task list. + +* `find movie`
+ `delete 1`
+ Deletes the 1st task in the results of the `find` command. + +You can also delete multiple tasks in the task list with a single command. + +Examples: + +* `list`
+ `delete 2 3 4`
+ `delete 2,3,4`
+ `delete 2-4`
+ Each of the above command will delete the 2nd, 3rd and 4th task in the task list. + + +#### Renaming a task : `rename` + +If you find that the name of an existing task is not suitable, you can always rename it.
+Format: `rename INDEX NEW_TASK_NAME` + +> * Renames the task at the specified `INDEX`. +> * Index refers to the index number shown in the most recent listing. +> * The index **must be a positive integer** 1, 2, 3, ... + + +> * Note that it is not possible to rename a task name to its original name and it might not be possible for the task to have the same name as another existing task + +Examples: + +* `list`
+ `rename 2 Star Wars II`
+ Renames the 2nd task in the list to “Star Wars II�? + +* `find Star Trek`
+ `rename 1 Star Wars II`
+ Renames the 1st task in the results of the `find` command to “Star Wars II�? + + +#### Updating the date/time of a task : `schedule` + +Have the deadline of your task been reduced or extended? Have an event been rescheduled? To change the date or time of a task, you can use this command.
+Format: `schedule INDEX [NEW_DATE_TIME_RESTRICTIONS]` + +> * Schedule the task at the specified `INDEX`. +> * The index refers to the index number shown in the most recent listing. +> * The index **must be a positive integer** 1, 2, 3, ... +> * The time description must follow the format given in the add command examples + +Examples: + +* `list`
+ `schedule 4`
+ Removes the deadline and start and end date/time for task 4 on the list. + +* `list`
+ `schedule 2 by Fri`
+ Removes the deadline and start and end date/time for task 2 and resets the deadline to the coming Friday (If the current day is Friday, it would be the following Friday). + +* `list`
+ `schedule 3 from 1 Oct 7pm to 1 Oct 9.30pm`
+ Sets the start time of task 3 to 1 Oct 7pm and the end time to 1 Oct 9.30pm respectively + + +#### Marking a task as completed : `mark` + +If you have completed a task, you can mark it as completed by using the following command.
+Format: `mark INDEX...` + +> * Mark the task at the specified `INDEX`. +> * The index refers to the index number shown in the most recent listing. +> * The index **must be a positive integer** 1, 2, 3, ... +> * The index can be in any order. + +Examples: + +* `list`
+ `mark 5`
+ Marks the 5nd task in the list. Task 5 will then be moved to the **"Done"** panel as described below
+
+ + +* `find Homework`
+ `mark 1`
+ Marks the 1st task in the list of results of the `find` command. + +If you had a productive day, Agendum can save you the hassle of marking multiple tasks one by one. You can also mark multiple tasks as completed with a single command. + +Examples: + +* `list`
+ `mark 2 3 4`
+ `mark 2,3,4`
+ `mark 2-4`
+ Each of the above command will mark the 2nd, 3rd and 4th task as completed. + + +#### Unmarking a task as completed : `unmark` + +You might change your mind and want to continue working on a recently completed task. To reflect these changes in Agendum, follow this command:
+Format: `unmark INDEX...` +This works in the same way as the `mark` command. The tasks will then be moved to the **"Do It Soon"** or **"Do It Anytime"** panel accordingly.
+ + +#### Undo the last command : `undo` + +If you have accidentally made a mistake in the previous commands, you can use the 'undo' command to remedy it.
+Multiple undo actions are also supported.
+Format: `undo` + +Examples: + +* `add homework`
+ `undo`
+ The task "homework" which has been added previously, will be removed. + + +``` +###### \UserGuide.md +``` md +## Command Summary + +Command | Format +:-------:| :-------- +Add | `add TASK_NAME` or `add TASK_NAME by DATE_TIME` or `add TASK_NAME from START_DATE_TIME to END_DATE_TIME` +Alias | `alias ORIGINAL_COMMAND_NAME NEW_COMMAND_NAME` +Delete | `delete INDEX...` +Exit | `exit` +Find | `find KEYWORD...` +Help | `help` +List | `list` +Load | `load PATH_TO_FILE` +Mark | `mark INDEX...` +Rename | `rename INDEX NEW_NAME` +Schedule | `schedule INDEX` or `schedule INDEX by DATE_TIME` or `schedule INDEX from START_DATE_TIME to END_DATE_TIME` +Select | `select INDEX` +Store | `store PATH_TO_FILE` +Unalias | `unalias NEW_COMMAND_NAME` or `unalias ORIGINAL_COMMAND_NAME` +Undo | `undo` +Unmark | `unmark INDEX...` + +For a quick reference, +> * Words in `UPPER_CASE` are the parameters. +> * Parameters with `...` after them can have multiple instances (separated by whitespace). +``` diff --git a/collated/docs/A0148031R.md b/collated/docs/A0148031R.md new file mode 100644 index 000000000000..dec2101665e0 --- /dev/null +++ b/collated/docs/A0148031R.md @@ -0,0 +1,230 @@ +# A0148031R +###### \DeveloperGuide.md +``` md +### 5. Storage component + +
+ +**API** : [`Storage.java`](../src/main/java/seedu/agendum/storage/Storage.java) + +The `Storage` component has the following functions: + +* can save `UserPref` objects in json format and read it back. +* can save the Agendum data in xml format and read it back. + +The Object Diagram below shows what it looks like during runtime. + +
+ +The Sequence Diagram below shows how the storage class will interact with model when `Load` command is executed. + +
+ + +### 6. Common classes + +Classes used by multiple components are in the `seedu.agendum.commons` package. + +They are further separated into sub-packages - namely `core`, `events`, `exceptions` and `util`. + +* Core - This package consists of the essential classes that are required by multiple components. +* Events -This package consists of the different type of events that can occur; these are used mainly by EventManager and EventBus. +* Exceptions - This package consists of exceptions that may occur with the use of Agendum. +* Util - This package consists of additional utilities for the different components. + + + +  + + +``` +###### \DeveloperGuide.md +``` md +## Appendix A : User Stories + +>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 +`* * *` | User | Add a task | Keep track of tasks which I need to do +`* * *` | User | Delete a task/multiple tasks | Remove tasks that I no longer need to keep track of +`* * *` | User | Edit a task name | Update task details to reflect the latest changes +`* * *` | User | View all my tasks | Have a quick and clear reference of everything I need to do +`* * *` | User | Mark a task/multiple tasks as completed | Know that it is completed without deleting it, distinguish between completed and uncompleted tasks +`* * *` | User | Unmark a task from completed | Update the status of my task +`* * *` | User | Undo my last action(s) | Easily correct any accidental mistakes in the last command(s) +`* * *` | User | Search based on task name | Find a task without going through the entire list if I remember a few key words +`* * *` | User | Specify my data storage location | Easily locate the raw text file for editing and sync the file to a cloud storage service +`* * *` | User | Clear all existing tasks | Easily start afresh with a new task list +`* * *` | User | Exit the application by typing a command | Close the app easily +`* * *` | Busy user | Specify start and end time when creating tasks | Keep track of events with defined start and end dates +`* * *` | Busy User | Specify deadlines when creating tasks | Keep track of tasks which must be done by a certain and date and time +`* * *` | Busy User | Edit and remove start and end time of tasks | Update events with defined start and end dates +`* * *` | Busy User | Edit and remove deadlines of tasks | Update tasks which must be done by a certain and date and time +`* *` | User | Sort tasks by alphabetical order and date | Organise and easily locate tasks +`* *` | User | Filter overdue tasks and upcoming tasks (due within a week) | Decide on what needs to be done soon +`* *` | User | Filter tasks based on whether they are marked/unmarked | View my tasks grouped by their state of completion. Review my completed tasks and decide on what I should do next +`* *` | User | See the count/statistics for upcoming/ overdue and pending tasks | Know how many tasks I need to do +`*` | User | Clear the command I am typing with a key | Enter a new command without having to backspace the entire command line +`*` | Advanced user | Specify my own short-hand alias commands | Enter commands faster +`*` | Advanced user | Remove or edit the short-hand alias commands | Update to use more suitable command aliases +`*` | Advanced user | Scroll through my past few commands | Check what I have done and redo actions easily +`* Unlikely` | Google calendar user | Sync my tasks with Google calendar | Keep track of my tasks online +`* Unlikely` | User | Add multiple time slots for a task | “Block�? multiple time slots when the exact timing of a task is certain +`* Unlikely` | User | Add tags for my tasks | Group tasks together and organise my task list +`* Unlikely` | User | Search based on tags | Find all the tasks of a similar nature +`* Unlikely` | User | Add/Remove tags for existing tasks | Update the grouping of tasks +`* Unlikely` | User | Be notified of deadline/time clashes | Resolve these conflicts manually +`* Unlikely` | User | Key in emojis/symbols and characters from other languages e.g. Mandarin | Capture information in other languages +`* Unlikely` | Advanced User | Import tasks from an existing text file | Add multiple tasks efficiently without relying on multiple commands +`* Unlikely` | Advanced User | Save a backup of the application in a custom file | Restore it any time at a later date +`* Unlikely` | Busy user | Add recurring events or tasks | Keep the same tasks in my task list without adding them manually +`* Unlikely` | Busy User | Search for tasks by date (e.g. on/before a date) | Easily check my schedule and make plans accordingly +`* Unlikely` | Busy User | Search for a time when I am free | Find a suitable slot to schedule an item +`* Unlikely` | Busy user | Can specify a priority of a task | Keep track of what tasks are more important + + +  + + +``` +###### \DeveloperGuide.md +``` md +## Appendix D : Glossary + +##### Mainstream OS: + +Windows, Linux, Unix, OS-X + +##### Headless Mode: + +In the headless mode, GUI tests do not show up on the screen.
+This means you can do other things on the Computer while the tests are running. + + +  + + +``` +###### \UserGuide.md +``` md +## Introduction +Hi there! Do you have too many tasks and are unable to keep track of all of them? Are you looking for a hassle-free task maanger which works swiftly? + +Enter Agendum. + +This task manager will assist you in completing all your tasks on time. It will helpfully and automatically sort your tasks by date so you can always see the most urgent tasks standing out at the top of the list! + +With just one line of keyboard command, Agendum will carry out your wishes. You don't ever have to worry about having to click multiple buttons and links. Agendum is even capable of allowing you to create your own custom commands! This means that you can things done even faster, your way. + +As shown below, Agendum has 3 panels: **"Do It Soon"**, **"Do It Anytime"** and **"Done"**. These panels show tasks with time restrictions, tasks without any time restrictions and completed tasks respectively. Initially, the panels will be empty. Fill them up with tasks soon! + +
+ + +  + +``` +###### \UserGuide.md +``` md +#### Creating an alias for a command : `alias` + +If you are looking for alternatives or want to type a command faster, you can use the `alias` comand.
+You can use both new and old command aliases to carry out the same action.
+Format: `alias ORIGINAL_COMMAND_NAME NEW_COMMAND_NAME` + +> * NEW_COMMAND_NAME must be a single word. +> * ORIGINAL_COMMAND_NAME must be a command word that is specified in the Command Summary section +> * When creating an alias for a command with a pre-existing alias, the pre-existing alias will be overriden. + +Examples: + +* `alias mark m`
+ you can now use`m` or `mark` to mark a task as completed.
+ `alias mark mk`
+ Now you can only use `mk` or `mark` to mark a task; `m` has been overriden. + + +#### Removing an alias command : `unalias` + +If you no longer want to use the alternative alias command, you can remove it. +Format: `unalias NEW_COMMAND_NAME` or `unalias ORIGINAL_COMMAND_NAME` + +> * NEW_COMMAND_NAME must be a user-defined command word. +> * ORIGINAL_COMMAND_NAME must be a command word that is specified in the Command Summary section + +Examples: + +* `unalias m`
+ `m` can no longer be used to mark tasks.
+ `unalias mark`
+ The assigned alias for `mark` will be removed; Now you can only use the original command `mark` to mark a task as completed. + + +#### Specifying the data storage location : `store` + +If you want to store the task list data in a different location, you can specifiy it using this command. +The task list data will be moved to the specific directory, and future data will be saved in that location.
+Format: `store PATH_TO_FILE` + +> * PATH_TO_FILE must be a valid path to a file on the local computer. +> * If a file at PATH_TO_FILE exists, it will be overriden. +> * The previous data storage file will not be deleted. + +Examples: +* `store C:/Dropbox/ToDo/mytasklist.xml` + + +#### Loading from another data storage location : `load` + +If you have another data file with existing task data, you can load it into Agendum.

+Format: `load PATH_TO_FILE` + +> * PATH_TO_FILE must be a valid path to a file on the local computer. +> * Existing data will be saved and stored in the existing data storage location. +> * The task list in Agendum will be replaced by the loaded task list. +> * Future data will be stored in PATH_TO_FILE. + +Examples: +* `load data/mytasklist.xml` + +#### Exiting the program : `exit` + +If you have finished using the application, you can use this command to exit the program.
+Format: `exit` + + +#### Keyboard Shortcuts + +1. Use the UP ARROW and DOWN ARROW to scroll through earlier commands. +2. If you are entering a new command, use the DOWN ARROW to instantly clear the command line. + + +#### Saving the data + +Agendum saves its data into the specified data storage location, or by default it saves into `todolist.xml`. This saving automatically happens whenever the task list is changed; There is no need to save manually. + + +  + + +## FAQ + + +
+
Q: How do I transfer my data to another computer?
+
Firstly, take note of the data storage location that your current todo list is saved at. You can check this by looking at the bottom-right of Agendum. Navigate to this location and copy the data file to a portable USB device or hard disk. Then, ensure that you have installed Agendum in the other computer. Copy the data file from your device onto the other computer, preferrably in the same folder as Agendum. Use the load command to load it into Agendum.
+ +
Q: Why did Agendum complain about an invalid file directory?
+
Check if the directory you wish to relocate to exists, or if you have enough administrator privileges.
+ +
Q: Can Agendum remind me when my task is due soon?
+
Agendum will always show the tasks that are due soon at the top of list. However, Agendum will not show you a reminder.
+ +
+ + +  + +``` diff --git a/collated/docs/A0148095X.md b/collated/docs/A0148095X.md new file mode 100644 index 000000000000..93ff5183eeb9 --- /dev/null +++ b/collated/docs/A0148095X.md @@ -0,0 +1,353 @@ +# A0148095X +###### \DeveloperGuide.md +``` md +## Introduction + +Agendum is a task manager for busy users to manage their schedules and tasks via keyboard commands. It is a Java desktop application that has a **GUI** implemented with JavaFX. + +This guide describes the design and implementation of Agendum. It will help developers (like you) understand how Agendum works and how to further contribute to its development. We have organized this guide in a top-down manner so that you can understand the big picture before moving on to the more detailed sections. Each sub-section is mostly self-contained to provide ease of reference. + + +## Setting up + +### Prerequisites + +* **JDK `1.8.0_60`** or above
+ + > This application will not work with any earlier versions of Java 8. + +* **Eclipse** IDE + +* **e(fx)clipse** plugin for Eclipse (Do the steps 2 onwards given in + [this page](http://www.eclipse.org/efxclipse/install.html#for-the-ambitious)) + +* **Buildship Gradle Integration** plugin from the + [Eclipse Marketplace](https://marketplace.eclipse.org/content/buildship-gradle-integration) + + +### Importing the project into Eclipse + +1. Fork this repo, and clone the fork to your computer + +2. Open Eclipse (Note: Ensure you have installed the **e(fx)clipse** and **buildship** plugins as given in the prerequisites above) + +3. Click `File` > `Import` + +4. Click `Gradle` > `Gradle Project` > `Next` > `Next` + +5. Click `Browse`, then locate the project's directory + +6. Click `Finish` + + > * If you are asked whether to 'keep' or 'overwrite' config files, choose to 'keep'. + > * Depending on your connection speed and server load, it can even take up to 30 minutes for the set up to finish + (Gradle needs time to download library files from servers during the project set up process) + > * If Eclipse automatically changed any settings during the import process, you can discard those changes. + + > After you are done importing Agendum, it will be a good practice to enable assertions before developing. This will enable Agendum app to verify assumptions along the way. To enable assertions, follow the instructions [here](http://stackoverflow.com/questions/5509082/eclipse-enable-assertions) + +### Troubleshooting project setup + +* **Problem: Eclipse reports compile errors after new commits are pulled from Git** + * Reason: Eclipse fails to recognize new files that appeared due to the Git pull. + * Solution: Refresh the project in Eclipse:
+ +* **Problem: Eclipse reports some required libraries missing** + * Reason: Required libraries may not have been downloaded during the project import. + * Solution: [Run tests using Gardle](UsingGradle.md) once (to refresh the libraries). + + +  + + +## Design + + +``` +###### \DeveloperGuide.md +``` md +### 2. UI component + +
+ +**API** : [`Ui.java`](../src/main/java/seedu/agendum/ui/Ui.java) + +The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `TaskListPanel`, +`StatusBarFooter`, `BrowserPanel` etc. All these, including the `MainWindow`, inherit the abstract `UiPart` class. They can be loaded using `UiPartLoader`. + +The `UI` component uses JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files + that are in the `src/main/resources/view` folder.
+ For example, the layout of the [`MainWindow`](../src/main/java/seedu/agendum/ui/MainWindow.java) is specified in + [`MainWindow.fxml`](../src/main/resources/view/MainWindow.fxml) + +The `UI` component has the following functions: + +* Executes user commands using the `Logic` component. +* Binds itself to some data in the `Model` so that the UI can auto-update when data in the `Model` change. +* Responds to events raised from various parts of the App and updates the UI accordingly. + + +``` +###### \DeveloperGuide.md +``` md +## Appendix B : Use Cases + +>For all use cases below, the **System** is `Agendum` and the **Actor** is the `user`, unless specified otherwise + +### Use case 01 - Add a task + +**MSS** + +1. System prompts the Actor to enter a command +2. Actor enters an add command with the task name into the input box. +3. System adds the task. +4. System shows a feedback message ("Task `name` added") and displays the updated list +5. Use case ends. + +**Extensions** + +2a. No task description is provided + +> 2a1. System shows an error message (“Please provide a task name/description�?)
+> Use case resumes at step 1 + +2b. There is an existing task with the same description and details + +> 2b1. System shows an error message (“Please use a new task description�?)
+> Use case resumes at step 1 + +### Use case 02 - Delete a task + +**MSS** + +1. Actor requests to list tasks +2. System shows a list of tasks +3. Actor requests to delete a specific task in the list by its index +4. System deletes the task. +5. System shows a feedback message (“Task `index` deleted�?) and displays the updated list +6. Use case ends. + +**Extensions** + +2a. The list is empty + +> Use case ends + +3a. The given index is invalid + +> 3a1. System shows an error message (“Please select a task on the list with a valid index�?)
+> Use case resumes at step 2 + +### Use case 03 - Rename a task + +**MSS** + +1. Actor requests to list tasks +2. System shows a list of tasks +3. Actor requests to rename a specific task in the list by its index and also input the new task name +4. System updates the task +5. System shows a feedback message (“Task `index` updated�?) and displays the updated list +6. Use case ends. + +**Extensions** + +2a. The list is empty + +> Use case ends + +3a. The given index is invalid + +> 3a1. System shows an error message (“Please select a task on the list with a valid index�?)
+> Use case resumes at step 2 + +3b. No task description is provided + +> 3b1. System shows an error message (“Please include a new task name�?)
+> Use case resumes at step 2 + +3c. There is an existing task with the same description and details + +> 3c1. System shows an error message (“Please use a new task name�?)
+> Use case resumes at step 2 + +### Use case 04 - Schedule a task’s start and end time and deadlines + +**MSS** + +1. Actor requests to list tasks +2. System shows a list of tasks +3. Actor inputs index and the new start/end time or deadline of the task to be modified +4. System updates the task +5. System shows a feedback message (“Task `index`'s time/date has been updated�?) and displays the updated list +6. Use case ends. + +**Extensions** + +2a. The list is empty + +> Use case ends + +3a. The given index is invalid + +> 3a1. System shows an error message (“Please select a task on the list with a valid index�?)
+> Use case resumes at step 2 + +3b. The new input time format is invalid + +> 3b1. System shows an error message (“Please follow the given time format�?)
+> Use case resumes at step 2 + +### Use case 05 - Undo previous command that modified the task list + +**MSS** + +1. Actor enters the undo command +2. System finds the latest command that modified the task list +3. System undo the identified command +4. System shows a feedback message (“The command `last-command` has been undone�?) and displays the updated list. +5. Use case ends. + +**Extensions** + +2a. There are no previous commands that modify the list (since the launch of the application) + +> 2a1. System shows an error message (“No previous command to undo�?)
+> Use case ends + +### Use case 06 - Mark a task as completed + +**MSS**: + +1. Actor requests to list tasks +2. System show a list of tasks +3. Actor requests to mark a task specified by its index in the list as completed +4. System updates the task +5. System shows a feedback message (“Task `index` is marked as completed�?) and hides the marked task. +6. Use case ends + +**Extensions** + +2a. The list is empty + +> 2a1. Use case ends + +3a. The given index is invalid + +> 3a1. System shows an error message (“Please select a task on the list with a valid index�?)
+> Use case resumes at step 2 + +### Use case 07 - Add short hand commands + +**MSS** + +1. Actor enters a alias command and specify the name and new alias name of the command +2. System alias the command +3. System shows a feedback message (“The command `original-command` can now be keyed in as �?) +4. Use case ends. + +**Extensions** + +1a. There is no existing command with the original name specified + +> 1a1. System shows an error message (“There is no such existing command�?)
+> Use case ends + +1b. The new alias name is already reserved/used for other commands + +> 1b1. System shows an error message (“The name is already in use�?)
+> Use case ends + +*a. At any time, Actor choose to exit System + +> *a1. System displays a goodbye message
+> *a2. System closes the program + +*b. At any time, Actor enters a invalid command + +> *b1. System gives an error message (“We do not understand the command: `invalid-command`�?)
+> *b2. System displays a short list of valid commands + + +### Use case 08 - Specify data storage location + +**MSS** + +1. Actor enters store command followed by a path to file +2. System updates data storage location to the specified path to file +3. System shows a feedback message ("New save location: `path-to-file`") +4. Use case ends. + +**Extensions** + +1a. Path to file is input as 'default' + +> 1a1. System updates data storage location to default
+> 1a2. System shows a feedback message ("Save location set to default: `path-to-file`")
+> Use case ends + +1b. File exists +> 1b1. System shows an error message ("The specified file exists; would you like to use LOAD instead?")
+> Use case ends + +1c. Path to file is invalid + +> 1c1. System shows an error message ("The specified path to file is invalid.")
+> Use case ends + + + +### Use case 09 - Load from data file + +**MSS** + +1. Actor enters load command followed by a path to file +2. System saves current task list into existing data storage location +3. System loads task list from specified path to file +2. System updates data storage location to the specified path to file +3. System shows a feedback message ("Data successfully loaded from: `path-to-file`") +4. Use case ends. + +**Extensions** + +1a. Path to file is invalid + +> 1a1. System shows an error message ("The specified path to file is invalid.")
+> Use case ends + +3a. File is in the wrong format + +> 3a1. System shows an error message ("File is in the wrong format.")
+> Use case ends + + +  + + +``` +###### \UserGuide.md +``` md +#### Retrieving task list : `list` + +You might want to view the lists to all overdue, upcoming and completed tasks again.
+Format: `list` + +#### Finding tasks containing keywords: `find` + +If you have a long list of tasks and need to find only specific ones, you can use this command to search for tasks which contain any of the given keywords.
+Format: `find KEYWORD``...` + + > * The search is not case sensitive. e.g `assignment` will match `Assignment` + > * The order of the keywords does not matter. e.g. `2 essay` will match `essay 2` + > * Only the name is searched + > * Only full words will be matched e.g. `work` will not match `homework` + > * Tasks matching at least one keyword will be returned (i.e. `OR` search). e.g. `2103` will match `2101 and 2103 assignment` + +Examples: + +* `find Dory`
+ Returns `Shark & Dory` and `dory` + +* `find Nemo Dory`
+ Returns all tasks that contain `Dory` or `Nemo` + +``` diff --git a/docs/AboutUs.md b/docs/AboutUs.md index c9ef533eb952..2b48fd03edf3 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -12,29 +12,63 @@ We are a team based in the [School of Computing, National University of Singapor #### [Rachael Sim](https://github.com/rachx)
-Role: Team leader
-Responsibilities: Model, UI, Scheduling and tracking, Code quality - +* Role: Team leader
+* Components in charge of: Model
+* Aspects/tools in charge of: Scheduling and tracking, Code quality
+* Features implemented: + * [Delete multiple tasks](https://github.com/CS2103AUG2016-W11-C2/main/blob/master/docs/UserGuide.md#deleting-a-task--delete) + * [Mark multiple tasks](https://github.com/CS2103AUG2016-W11-C2/main/blob/master/docs/UserGuide.md#marking-a-task-as-completed--mark) + * [Unmark multiple tasks](https://github.com/CS2103AUG2016-W11-C2/main/blob/master/docs/UserGuide.md#unmarking-a-task-as-completed--unmark) + * [Rename an existing task](https://github.com/CS2103AUG2016-W11-C2/main/blob/master/docs/UserGuide.md#renaming-a-task--rename) + * [Re-schedule a task](https://github.com/CS2103AUG2016-W11-C2/main/blob/master/docs/UserGuide.md#renaming-a-task--rename) + * [Undo commands that change the task list](https://github.com/CS2103AUG2016-W11-C2/main/blob/master/docs/UserGuide.md#undo-the-last-command--undo) +* Code written: +* Other major contributions: + * Did most of the refactoring from AddressBook to ToDoList + * Update user/developer guide to match CS2101 ----- #### [Vishnu Prem](http://github.com/burnflare)
-Role: Developer
-Responsibilities: Logic, Integration, Git expert +* Role: Developer
+* Components in charge of: Logic
+* Aspects/tools in charge of: Integration, Git
+* Features implemented: + * [Adding a task (with time)](https://github.com/CS2103AUG2016-W11-C2/main/blob/master/docs/UserGuide.md#adding-a-task-add) + * [Smart command correction] +* Code written: +* Other major contributions: + * Set up Travis, Coveralls and Codacy ----- #### [Justin Tay](https://github.com/INCENDE)
-Role: Developer
-Responsibilities: Storage, Commons, Documentation, Deliverables and deadlines +* Role: Developer
+* Components in charge of: Storage, Commons
+* Aspects/tools in charge of: Documentation, Deliverables and deadlines
+* Features implemented: + * [Choose a custom storage location](https://github.com/CS2103AUG2016-W11-C2/main/blob/master/docs/UserGuide.md#specifying-the-data-storage-location--store) + * [Load from a specific storage location](https://github.com/CS2103AUG2016-W11-C2/main/blob/master/docs/UserGuide.md#loading-from-another-data-storage-location--load) +* Code written: +* Other major contributions: + * Actively update user/developer guide to match CS2101 + ----- #### [Fan Weiguang](https://github.com/fanwgwg)
-Role: Developer
-Responsibilities: UI, Main, Testing, Eclipse Expert +* Role: Developer
+* Components in charge of: UI, Main
+* Aspects/tools in charge of: Testing, Eclipse
+* Features implemented: + * [Scrolling through previous command history] + * [Help command] (https://github.com/CS2103AUG2016-W11-C2/main/blob/master/docs/UserGuide.md#viewing-help--help) +* Code written: +* Other major contributions: + * Responsible for most of the UI + ----- diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index b34788ae3c1e..9f79de446319 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -22,6 +22,7 @@   +[comment]: # (@@author A0148095X) ## Introduction Agendum is a task manager for busy users to manage their schedules and tasks via keyboard commands. It is a Java desktop application that has a **GUI** implemented with JavaFX. @@ -83,6 +84,8 @@ This guide describes the design and implementation of Agendum. It will help deve ## Design + +[comment]: # (@@author A0133367E) ### 1. Architecture
@@ -148,6 +151,7 @@ The diagram below shows what happens after a `ToDoListChangedEvent` is raised. ` The following sections will then give more details of each individual component. +[comment]: # (@@author A0148095X) ### 2. UI component
@@ -169,6 +173,7 @@ The `UI` component has the following functions: * Responds to events raised from various parts of the App and updates the UI accordingly. +[comment]: # (@@author A0003878Y) ### 3. Logic component
@@ -185,6 +190,7 @@ You can view the Sequence Diagram below for interactions within the `Logic` comp
+[comment]: # (@@author A0133367E) ### 4. Model component As mentioned above, the `Model` component stores and manage Agendum's task list data and user's preferences. It also exposes a `UnmodifiableObservableList` that can be 'observed' by other components e.g. the UI can be bound to this list and will automatically update when the data in the list change. It does not depend on other components such as `Logic` and `Storage`. @@ -213,6 +219,7 @@ The identified task is removed from the `UniqueTaskList`. The `ModelManager` rai > `Model`’s _deleteTasks_ methods actually take in `ArrayList` instead of a single task. We use _deleteTasks(task)_ for simplicity in the sequence diagram. +[comment]: # (@@author A0148031R) ### 5. Storage component
@@ -249,6 +256,7 @@ They are further separated into sub-packages - namely `core`, `events`, `excepti   +[comment]: # (@@author A0133367E) ## Implementation ### 1. Logging @@ -365,6 +373,7 @@ Agendum depends on third-party libraries, such as the   +[comment]: # (@@author A0148031R) ## Appendix A : User Stories >Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` @@ -413,6 +422,7 @@ Priority | As a ... | I want to ... | So that I can...   +[comment]: # (@@author A0148095X) ## Appendix B : Use Cases >For all use cases below, the **System** is `Agendum` and the **Actor** is the `user`, unless specified otherwise @@ -646,6 +656,7 @@ Priority | As a ... | I want to ... | So that I can...   +[comment]: # (@@author A0003878Y) ## 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. @@ -668,6 +679,7 @@ Priority | As a ... | I want to ... | So that I can...   +[comment]: # (@@author A0148031R) ## Appendix D : Glossary ##### Mainstream OS: @@ -683,6 +695,7 @@ This means you can do other things on the Computer while the tests are running.   +[comment]: # (@@author A0133367E) ## Appendix E : Product Survey We conducted a product survey on other task managers. Here is a summary of the strengths and weaknesses of each application. The criteria used for evaluation are own preferences and Jim's requirements. diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 2fcd20a8f611..d4559f22c511 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -7,6 +7,7 @@   +[comment]: # (@@author A0148031R) ## Introduction Hi there! Do you have too many tasks and are unable to keep track of all of them? Are you looking for a hassle-free task maanger which works swiftly? @@ -23,7 +24,7 @@ As shown below, Agendum has 3 panels: **"Do It Soon"**, **"Do It Anytime"** and   - +[comment]: # (@@author A0003878Y) ## Quick Start 0. Ensure you have Java version `1.8.0_60` or above installed in your Computer. @@ -103,7 +104,7 @@ Examples: The event “project meeting” will start at 12pm on 10 October and end at 2pm on 10 October. - +[comment]: # (@@author A0148095X) #### Retrieving task list : `list` You might want to view the lists to all overdue, upcoming and completed tasks again.
@@ -128,7 +129,7 @@ Examples: * `find Nemo Dory`
Returns all tasks that contain `Dory` or `Nemo` - +[comment]: # (@@author A0133367E) #### Deleting a task : `delete` You can delete tasks that you no longer want to keep track of.
@@ -260,6 +261,7 @@ Examples: The task "homework" which has been added previously, will be removed. +[comment]: # (@@author A0148031R) #### Creating an alias for a command : `alias` If you are looking for alternatives or want to type a command faster, you can use the `alias` comand.
@@ -331,7 +333,6 @@ Format: `exit` 1. Use the UP ARROW and DOWN ARROW to scroll through earlier commands. 2. If you are entering a new command, use the DOWN ARROW to instantly clear the command line. -3. Use TAB to switch between the various task lists e.g. uncompleted, overdue, upcoming #### Saving the data @@ -360,7 +361,7 @@ Agendum saves its data into the specified data storage location, or by default i   - +[comment]: # (@@author A0133367E) ## Command Summary Command | Format