Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
Kyomian committed Apr 4, 2018
2 parents 78160b9 + 8c98068 commit e09c976
Show file tree
Hide file tree
Showing 11 changed files with 139 additions and 245 deletions.
17 changes: 9 additions & 8 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,20 @@ https://www.codacy.com/app/damith/addressbook-level4?utm_source=github.com&utm_m
https://gitter.im/se-edu/Lobby[image:https://badges.gitter.im/se-edu/Lobby.svg[Gitter chat]]

ifdef::env-github[]
image::docs/images/App Interface.png[width="600"]

image::docs/images/Ui.png[width="600"]
endif::[]

ifndef::env-github[]
image::docs/images/App Interface.png[width="600"]
image::docs/images/Ui.png[width="600"]
endif::[]

* CLIndar is a desktop application that helps university computing students to *manage their tasks and events*.
* It is a *Command Line Interface (CLI)-based* app that has a *Graphic User Interface (GUI)* and *Linux-style commands*.
** The CLI system would allow fast input for users who can type fast, which most computing students are expected to do.
** The GUI is easy on the eye and makes the chores of managing commitments more enjoyable.
** The Linux-style commands are more familiar to computing students. Thus, they can use this application more conveniently.
* You would need to have *Java Runtime Environment (JRE)* installed to run this application.
* CLindar is a desktop application that intends to help university computing students to manage their tasks and events.
** Computing student may have a tight schedule hence required to keep track of various events and deadlines
** Computing student would be more familiar with the commands used in this application, hence would be easy to use.
* It is a GUI app but most of its user interaction is CLI (Command Line Interface)-based.
** This would allow fast input for users who can type fast, such as computing students.
* You would need to have *Java Runtime Environment* (JRE) installed to run this application.
== Site Map

Expand Down
8 changes: 4 additions & 4 deletions docs/AboutUs.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ We are a team based in the http://www.comp.nus.edu.sg[School of Computing, Natio
=== Jarrett Choo

image::kyomian.png[width="150", align="left"]
{empty}[https://github.com/Kyomian[github]]
{empty}[https://github.com/Kyomian[github]] [<<jarrett#, portfolio>>]

Role: Team Lead, Testing, Deliverables and deadlines +
Responsibilities: Logic
Expand All @@ -23,7 +23,7 @@ Responsibilities: Logic
=== Jasmund Toh

image::jasmoon.png[width="150", align="left"]
{empty}[http://github.com/jasmoon[github]]
{empty}[http://github.com/jasmoon[github]] [<<jasmond#, portfolio>>]

Role: Scheduling and tracking, JavaFX expert +
Responsibilities: UI
Expand All @@ -33,7 +33,7 @@ Responsibilities: UI
=== Karen Frilya

image::karenfrilya97.png[width="150", align="left"]
{empty}[http://github.com/karenfrilya97[github]]
{empty}[http://github.com/karenfrilya97[github]] [<<karen#, portfolio>>]

Role: Documentation +
Responsibilities: Storage
Expand All @@ -43,7 +43,7 @@ Responsibilities: Storage
=== Yuan Quan

image::yuanqller.png[width="150", align="left"]
{empty}[http://github.com/YuanQQLer[github]]
{empty}[http://github.com/YuanQQLer[github]] [<<yuanquan#, portfolio>>]

Role: Code Quality, Integration +
Responsibilities: Model
Expand Down
48 changes: 45 additions & 3 deletions docs/DeveloperGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ image::UiClassDiagram.png[width="800"]

*API* : link:{repoURL}/src/main/java/seedu/address/ui/Ui.java[`Ui.java`]

The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter`, `BrowserPanel` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class.
The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `TaskListPanel`, `EventListPanel`, `StatusBarFooter`, `BrowserPanel` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class.

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 link:{repoURL}/src/main/java/seedu/address/ui/MainWindow.java[`MainWindow`] is specified in link:{repoURL}/src/main/resources/view/MainWindow.fxml[`MainWindow.fxml`].

Expand All @@ -272,9 +272,14 @@ The `UI` component
[[Design-Logic]]
=== Logic component

*_Figure 6_* below shows the UML of the Logic component.
[[fig-LogicClassDiagram]]
.Structure of the Logic Component
image::LogicClassDiagram.png[width="800"]
{empty} +
{empty} +

*_Figure 7_* below shows finer details of the Logic component.

.Structure of Commands in the Logic Component. This diagram shows finer details concerning `XYZCommand` and `Command` in <<fig-LogicClassDiagram>>
image::LogicCommandClassDiagram.png[width="800"]
Expand Down Expand Up @@ -341,6 +346,7 @@ The undo/redo mechanism is facilitated by an `UndoRedoStack`, which resides insi

`UndoRedoStack` only deals with `UndoableCommands`. Commands that cannot be undone will inherit from `Command` instead. The following diagram shows the inheritance diagram for commands:

.Class Diagram of a Logic Command
image::LogicCommandClassDiagram.png[width="800"]

As you can see from the diagram, `UndoableCommand` adds an extra layer between the abstract `Command` class and concrete commands that can be undone, such as the `DeleteCommand`. Note that extra tasks need to be done when executing a command in an _undoable_ way, such as saving the state of the desk board before execution. `UndoableCommand` contains the high-level algorithm for those extra tasks while the child classes implements the details of how to execute the specific command. Note that this technique of putting the high-level algorithm in the parent class and lower-level steps of the algorithm in child classes is also known as the https://www.tutorialspoint.com/design_pattern/template_pattern.htm[template pattern].
Expand Down Expand Up @@ -393,13 +399,15 @@ The user now decides that adding the activity was a mistake, and decides to undo

We will pop the most recent command out of the `undoStack` and push it back to the `redoStack`. We will restore the desk board to the state before the `add` command executed.

.'Undo' stack pops into the 'Redo' Stack
image::UndoRedoExecuteUndoStackDiagram.png[width="800"]

[NOTE]
If the `undoStack` is empty, then there are no other commands left to be undone, and an `Exception` will be thrown when popping the `undoStack`.

The following sequence diagram shows how the undo operation works:

.'Undo' and 'Redo' Stack Sequence Diagram
image::UndoRedoSequenceDiagram.png[width="800"]

The redo does the exact opposite (pops from `redoStack`, push to `undoStack`, and restores the desk board to the state after the command is executed).
Expand All @@ -409,14 +417,17 @@ If the `redoStack` is empty, then there are no other commands left to be redone,

The user now decides to execute a new command, `clear`. As before, `clear` will be pushed into the `undoStack`. This time the `redoStack` is no longer empty. It will be purged as it no longer make sense to redo the `add n/David` command (this is the behavior that most modern desktop applications follow).

.Adding 'ClearCommand' to the 'Undo' Stack
image::UndoRedoNewCommand2StackDiagram.png[width="800"]

Commands that are not undoable are not added into the `undoStack`. For example, `list`, which inherits from `Command` rather than `UndoableCommand`, will not be added after execution:

.'ListCommand' does not affect the 'Undo' Stack
image::UndoRedoNewCommand3StackDiagram.png[width="800"]

The following activity diagram summarize what happens inside the `UndoRedoStack` when a user executes a new command:

.Activity Diagram for 'Undo' and 'Redo'
image::UndoRedoActivityDiagram.png[width="650"]

==== Design Considerations
Expand Down Expand Up @@ -483,7 +494,38 @@ We are using `java.util.logging` package for logging. The `LogsCenter` class is
* `INFO` : Information showing the noteworthy actions by the App
* `FINE` : Details that is not usually noteworthy but may be useful in debugging e.g. print the actual list instead of just its size

=== Overdue
=== Task
Task refer to a piece of work to be done that can be added by a student user using the application. After being added, tasks can be edited and deleted. When a task is not completed within the deadline
, it will be automatically be marked as overdue.

==== Current Implementation

*_Figure17_* below shows how `Task` is represented in the application.

.UML Diagram for Task
image::UML diagram for task.png[width="450"]

A brief description of each of the attributes of `Task`is given below:

* Name: Represents the name of the task
* DateTime: Represents the due date and time of the task.
* Remark: Represents a short description or reminder pertaining to the task.
* Tags: Groupings or representation for the task

Operation that manipulates the `task` object can been done using `task`, `complete`, `delete`, `edit` commands.
These commands are described in more detail below.

===== Task

===== Complete

===== Delete

===== Edit

===== Find

===== Overdue

The user is able to list down overdue tasks by using the `overdue` command. Note that overdue only lists down overdue tasks; overdue events are marked as
completed automatically.
Expand Down Expand Up @@ -984,7 +1026,7 @@ Our remark label in link:{repoURL}/src/main/java/seedu/address/ui/PersonCard.jav

**Tests:**

. Modify link:{repoURL}/src/test/java/seedu/address/ui/testutil/GuiTestAssert.java[`GuiTestAssert#assertCardDisplaysPerson(...)`] so that it will compare the now-functioning remark label.
. Modify link:{repoURL}/src/test/java/seedu/address/ui/testutil/GuiTestAssert.java[`GuiTestAssert#assertCardDisplaysTask(...)`] so that it will compare the now-functioning remark label.

===== [Step 8] Logic: Implement `RemarkCommand#execute()` logic
We now have everything set up... but we still can't modify the remarks. Let's finish it up by adding in actual logic for our `remark` command.
Expand Down
108 changes: 74 additions & 34 deletions docs/UserGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,14 @@ By: `CS2103JAN2018-W13-B3` Since: `Mar 2018` Licence: `MIT`

CLIndar is a desktop application that helps university computing students to manage their tasks and events.
CLIndar is *Common-Line Interface (CLI) based and uses Linux-style commands*, which computing students are familiar with.
Thus, compared to traditional Graphical User Interface (GUI) applications, CLIndar is faster and provides more convenience for its target audience.
Thus, compared to traditional Graphical User Interface (GUI) applications, CLIndar is faster and provides more convenience for computing students.

With CLIndar, you can:

* Keep track of your tasks and events and be reminded of their due dates
* Record all completed tasks and events, so that you know what you have done

The current version of CLIndar is 1.4 and is available on Windows and Linux Operating Systems.

== Get Started

Expand All @@ -37,7 +44,7 @@ This app will not work with earlier versions of Java 8.
. Double-click the file to start the app. The GUI should appear in a few seconds.
+

image::jasmund_ui.png[width="790"]
image::Ui.png[width="790"]

+
. Type the command in the command box and press kbd:[Enter] to execute it. +
Expand All @@ -46,7 +53,7 @@ e.g. typing *`help`* and pressing kbd:[Enter] will open the help window.

* *`task`* `n/Software Engineering Milestone 1 d/16/03/2018 17:00 r/Enhance major component`: Adds Software Engineering task to the desk board in CLIndar
* *`event`* `n/Software Project s/01/05/2018 8:00 e/01/08/2018 8:00 l/School of Computing`: Adds Software Project event to the desk board
* *`list task`* : list all uncompleted tasks
* *`ls task`* : list all uncompleted tasks
* *`exit`* : exits the app

. Refer to <<Features>> for details of each command.
Expand All @@ -68,8 +75,7 @@ For example, `n/NAME [r/REMARK]` can be used as `n/Software Engineering Milesto
For example, if the command specifies `n/NAME d/DATETIME`, `d/DATETIME n/NAME` is also acceptable.


=== Viewing help : `help` or `man`
*`As of v1.1`*
=== Viewing help : `help` or `man` `[As of v1.1]`

Shows the help menu for all of the commands or only the `COMMAND_WORD` requested.

Expand All @@ -78,12 +84,12 @@ Shows the help menu for all of the commands or only the `COMMAND_WORD` requested
*Examples:*

* `help`
* `help task`
* `man`
* `help task`
* `man task`
* `help man`

=== Adding a task: `task`
*`As of v1.2`*
=== Adding a task: `task` `[As of v1.2]`

Adds a task to the desk board.

Expand All @@ -95,8 +101,7 @@ Adds a task to the desk board.
* `task n/Software Engineering Milestone 1 d/16/03/2018 17:00 r/urgent`
* `task n/Programming Methodology Assignment 2 d/16/03/2018 23:59`

=== Adding an event: `event`
*`As of v1.3`*
=== Adding an event: `event` `[As of v1.3]`

Adds an event to the desk board. +

Expand All @@ -107,19 +112,17 @@ Adds an event to the desk board. +
* `event n/Software Project s/1/5/2018 8:00 e/01/08/2018 8:00 l/School of Computing r/remember to bring laptop charger`
* `event n/Blockchain Talk s/16/3/2018 16:00 e/16/03/2018 18:00`

=== Listing uncompleted tasks and upcoming events: `ls`
*`As of v1.5`*
=== Listing uncompleted tasks and upcoming events: `ls` `[As of v1.4]`

Shows one or two lists of tasks and events in the desk board as described below.

*Format:*

* `ls task`: shows only uncompleted tasks.
* `ls event`: shows only upcoming events.
* `ls`: shows both uncompleted tasks upcoming events in 2 separate lists.
* `ls`: shows both uncompleted tasks and upcoming events in 2 separate lists.

=== Removing a task or event: `rm`
*`As of v1.5`*
=== Removing a task or event: `rm` `[As of v1.4]`

Removes a task or event from the desk board according to the following conditions.

Expand All @@ -139,8 +142,7 @@ Removes a task or event from the desk board according to the following condition
`rm task 2` +
Removes the 2nd task in the desk board.

=== Completing a task: `complete task` or `com task`
*`As of v1.5`*
=== Completing a task: `complete task` or `com task` `[Coming Soon in v1.5]`

Completes the task at the specified `INDEX` based on the most recent listing.

Expand All @@ -156,22 +158,19 @@ Completes the 3rd task in the desk board.
`com task 2` +
Completes the 2nd task in the desk board.

=== Listing all completed tasks: `ls complete task` or `ls com task`
*`As of v1.5`*
=== Listing all completed tasks: `ls complete task` or `ls com task` `[Coming Soon in v1.5]`

Shows a list of all completed tasks in the desk board. +

*Format:* `ls complete task` or `ls com task`

=== Shows overdue tasks: `overdue`
*`As of v1.5`*
=== Shows overdue tasks: `overdue` `[Coming Soon in v1.5]`

Shows a list of tasks that remain uncompleted after their respective due dates.

*Format:* `overdue`

=== Listing entered commands : `history`
*`As of v1.5`*
=== Listing entered commands : `history` `[Coming Soon in v1.5]`

Lists all the commands that you have entered in reverse chronological order.

Expand Down Expand Up @@ -230,29 +229,23 @@ The `redo` command fails as there are no `undo` commands executed previously.
`r` (reapplies the `clear` command) +
// end::undoredo[]

=== Clearing all entries : `clear` or `c`
=== Clearing all entries : `clear` or `c` `[Coming Soon in v1.5]`

Clears all entries from the desk board.

*Format:* `clear` or `c`

=== Exiting the program : `exit`
=== Exiting the program : `exit` `[Coming Soon in v1.5]`

Exits the program.

*Format:* `exit`

=== Editing a person : `edit task`

*`Coming Soon in v2.0`*
=== Editing a task : `edit task` `[Coming Soon in v2.0]`

=== Locating task by name: `find task`
=== Locating task by name: `find task` `[Coming Soon in v2.0]`

*`Coming Soon in v2.0`*

=== Listing all past events: `ls past event`

*`Coming Soon in v2.0`*
=== Listing all past events: `ls past event` `[Coming Soon in v2.0]`

=== Saving the data

Expand All @@ -263,3 +256,50 @@ There is no need to save manually.

*Q*: How do I transfer my data to another Computer? +
*A*: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous CLIndar folder.

== Command Summary

* *Add task*: `task n/NAME d/DUE_DATE_TIME [r/REMARK] [t/TAGS]` +
eg. `task n/Software Engineering Milestone 1 d/16/03/2018 17:00 r/urgent`

* *Add event*: `event n/NAME s/START_TIME e/END_TIME [l/LOCATION] [r/REMARK]` +
eg. `event n/Software Project s/1/5/2018 8:00 e/01/08/2018 8:00 l/School of Computing r/remember to bring laptop charger`

* *List uncompleted tasks and upcoming events*: `ls` +
eg. `ls` or `ls task` or `ls event`

* *Remove task or event*: `rm` +
eg. `rm task 1` or `rm event 2`

* *Complete a task*: `complete task` or `com task` +
eg. `complete task 1` or `com task 2`

* *List completed tasks*: `ls complete task` or `ls com task` +
eg. `ls complete task` or `ls com task`

* *Show overdue tasks*: `overdue` +
eg. `overdue`

* *List entered commands*: `history` +
eg. `history`

* *Undo previous command*: `undo` or `u` +
eg. `undo` or `u`

* *Redo previously undone command*: `redo` or `r` +
eg. `redo` or `r`

* *Clear all entries*: `clear` or `c` +
eg. `clear` or `c`

* *Exit the program*: `exit` +
eg. `exit`

* *Edit a task*: `edit task` +
eg. `edit task 1`

* *Locate a task by name*: `find task` +
eg. `find task CS2106 Assignment`

* *List all past events*: `ls past event` +
eg. `ls past event`
Binary file modified docs/diagrams/UiComponentClassDiagram.pptx
Binary file not shown.
Binary file added docs/images/UML diagram for task.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/Ui.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/images/UiClassDiagram.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/images/Uiv1.4.png
Binary file not shown.
Loading

0 comments on commit e09c976

Please sign in to comment.