Skip to content

Commit

Permalink
Merge pull request #268 from tswuxia/branch-v1.2
Browse files Browse the repository at this point in the history
Branch v1.2
  • Loading branch information
tswuxia committed Nov 11, 2019
2 parents 0e38a6f + 29a8844 commit b9bc415
Show file tree
Hide file tree
Showing 14 changed files with 187 additions and 70 deletions.
21 changes: 11 additions & 10 deletions docs/DeveloperGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ image::WatchSequenceDiagram.png[]
// end::markaswatched[]

// tag::statistics[]
=== [Proposed] Statistics Feature
=== Statistics Feature
==== Proposed Implementation

The statistics feature is facilitated by `Statistics` object. It extends `EzWatchlist` with a summary of the users' personal
Expand All @@ -255,19 +255,19 @@ Step 2. The user clicks on the statistic button and sees the content.

This is the sequence diagram of `getFavouriteGenre()`.

image::getFavouriteGenre.png[]
image::GetFavouriteSequenceDiagram.png[]

This is the sequence diagram of `getForgotten()`.

image::getForgotten.png[]
image::GetForgottenSequenceDiagram.png[]

This is the sequence diagram of `getRecommendation()`.

image::getRecommendation.png[]
image::GetRecommendationSequenceDiagram.png[]

The following activity diagram summarizes the workflow of Statistics:

image::activityDiagram.png[]
image::StatisticsActivityDiagram.png[]

==== Design Considerations

Expand All @@ -282,12 +282,13 @@ image::activityDiagram.png[]

===== Aspect: When the results are calculated

* **Alternative 1 (current choice):** Calculate when the application starts and update when there are changes.
* **Alternative 1 (current choice):** Calculate when the user navigate to Statistics panel and the user has made changes
to the watchlist.
** Pros: Statistics results is more up to date.
** Cons: Appear less responsive as the API needs to retrieve information during calculation.
* **Alternative 2 :** Calculate when the application starts and update when there are changes.
** Pros: It appears more responsive in terms of navigating around the application.
** Cons: Need to constantly recalculate and update the results.
* **Alternative 2:** Calculate when the user navigate to Statistics panel.
** Pros: Less calculation needed.
** Cons: Appear less responsive.
** Cons: The statistics information will not be updated realtime if the user has changed the watchlist.
// end::statistics[]

=== Logging
Expand Down
46 changes: 31 additions & 15 deletions docs/UserGuide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -112,15 +112,28 @@ e.g. typing *`help`* and pressing kbd:[Enter] will open the help window.


== Features

// tag::UI[]
=== User-Interface

The UI consists of three parts: sidebar, command bar and various pages that could appear in the main panel.
The following sections introduce these UI parts in details.

==== Sidebar

EzWatchlist gives users the ability to navigate easily through the **Watchlist, Watchedlist, Search page and Statistics pages** through the use of the side bar at the left of the main page of the graphical user interface. Moreover, keyboard shortcuts kbd:[1], kbd:[2], kbd:[3], kbd:[4] bring you to each page respectively.
====
Note: If user has selected the command box, type kbd:[1], kbd:[2], kbd:[3], kbd:[4] and enter to bring you to each page respectively.
====

==== Command bar

Users input commands in the command bar and any feedback will be displayed below the text area of command bar.

==== Watchlist Page

The watchlist is the default page that is opened upon start-up of `EzWatchlist`.
The watchlist page is the default page that is opened upon start-up of `EzWatchlist`.
It shows the user’s unwatched movies and television series.
The watchlist page also contains a command bar to allow the user to input commands.
The user can navigate to this list by clicking the “Watched” tab on the side bar or by using the keyboard short-cut `1`.
The user can navigate to this list by clicking the “Watchlist” tab on the side bar or by using the keyboard short-cut `1`.

**Characteristics of the watchlist page:**

Expand All @@ -143,38 +156,41 @@ The user has the option to view the list of shows that have been marked as watch

==== Search Page

The user can navigate to the search page to find a specific movie or television by searching for its name. The user can navigate to this list by clicking the “Watched” tab on the side bar or by using the keyboard short-cut `3`.
The user can navigate to the search page to find a specific movie or television by searching for its name. The user can navigate to this list by clicking the “Search” tab on the side bar or by using the keyboard short-cut `3`.
[NOTE]
The search function may require some time to load the data from the API.

.Main page of the UI: search page
image::search_page.png[width="790"]


==== Statistics Page

The user can navigate to the statistics page to find a summary of his watching habits,
preferences and history according to what is present in his lists.
Examples include: movies he added but might have forgotten to watch,
up to 3 most favourite genres of the user and recommendations etc.
Examples include:

* Movies added but might have forgotten to watch
* Up to 3 most favourite genres
* Recommendations

The user can navigate to this list by clicking the “Statistics” tab on the side bar or by using the keyboard short-cut `4`.
[NOTE]
The statistics function may require some time to load the data from the API.
The statistics function may require some time to load the data from the API the first time you start the application,
or after you have made changes to your watchlist.


The user can navigate to the statistics page to find a summary of his watching habits, preferences and history according to what is present in his lists. Examples include: Ten most recent movies he watched, ten favourite movies of the user etc. The user can navigate to this list by clicking the “Watched” tab on the side bar or by using the keyboard short-cut `4`.

.Main page of the UI: statistics page
image::statistics_page.png[width="790"]

==== Sidebar

EzWatchlist gives users the ability to navigate easily through the **Watchlist page**, **Watchedlist page**, **Search page** and **Statistics pages** through the use of the graphical user interface at the left of the main page. Moreover, keyboard shortcuts kbd:[1], kbd:[2], kbd:[3], kbd:[4] bring you to each page respectively.
====
Note: If user has selected the command box, type kbd:[1], kbd:[2], kbd:[3], kbd:[4] and enter to bring you to each page respectively.
====

==== Details Page (Coming in v2.0)

Upon clicking a movie or tv show title, a pop-up window will emerge, with a detailed view of the movie or tv show. This page provides the user with more information about the show, like the year, cast and ratings. The user also has the ability to edit the details here.

// end::UI[]

// tag::advancedfeatures[]
=== Advanced Features

Expand Down
25 changes: 25 additions & 0 deletions docs/diagrams/GetFavouriteSequenceDiagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
@startuml
!include style.puml

box Statistics LOGIC_COLOR_T1
participant ":Statistics" as Statistics LOGIC_COLOR
end box


box Model MODEL_COLOR_T1
participant ":ModelManager" as ModelManager LOGIC_COLOR
end box

[-> Statistics : getFavouriteGenre()
activate Statistics

Statistics -> ModelManager: getWatchedShowList()
activate ModelManager

Statistics <-- ModelManager: watchedlist
deactivate ModelManager

[<--Statistics: favouriteGenres
deactivate Statistics

@enduml
25 changes: 25 additions & 0 deletions docs/diagrams/GetForgottenSequenceDiagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
@startuml
!include style.puml

box Statistics LOGIC_COLOR_T1
participant ":Statistics" as Statistics LOGIC_COLOR
end box


box Model MODEL_COLOR_T1
participant ":ModelManager" as ModelManager LOGIC_COLOR
end box

[-> Statistics : getForgotten()
activate Statistics

Statistics -> ModelManager: getWatchlist()
activate ModelManager

Statistics <-- ModelManager: watchlist
deactivate ModelManager

[<--Statistics: forgotten
deactivate Statistics

@enduml
25 changes: 25 additions & 0 deletions docs/diagrams/GetRecommendationSequenceDiagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
@startuml
!include style.puml

box Statistics LOGIC_COLOR_T1
participant ":Statistics" as Statistics LOGIC_COLOR
end box


box Model MODEL_COLOR_T1
participant ":ModelManager" as ModelManager LOGIC_COLOR
end box

[-> Statistics : getRecommendation()
activate Statistics

Statistics -> ModelManager: getWatchedShowList()
activate ModelManager

Statistics <-- ModelManager: watchlist
deactivate ModelManager

[<--Statistics: recommendations
deactivate Statistics

@enduml
13 changes: 13 additions & 0 deletions docs/diagrams/StatisticsActivityDiagram.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
@startuml
start
:User launches app;

'Since the beta syntax does not support placing the condition outside the
'diamond we place it as the true branch instead.

:Statistics calculates
the 3 results and
populate the panel;

stop
@enduml
Binary file added docs/images/GetFavouriteSequenceDiagram.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/GetForgottenSequenceDiagram.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/GetRecommendationSequenceDiagram.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/StatisticsActivityDiagram.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
78 changes: 41 additions & 37 deletions docs/team/tswuxia.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -12,62 +12,66 @@ This document is to document my contributions to the desktop application `EzWatc
== Overview

EzWatchlist is a desktop application where the user can systematically record down what movie/TV series he/she wants to
watch or has watched. It is developed based on the Addressbook level 3 provided in the software engineering course.
The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.
watch or has watched. It is developed by a group of 5 NUS Computer Science students for the software engineering course
based on the Addressbook level 3 codebase provided. One specification is that the user prefers command line interface
(CLI), hence the CLI in the application. However, we also implemented a graphical user interface (GUI) created with
JavaFX. The project is written in Java.

== Summary of contributions

* *Major enhancement*: added *the ability to undo/redo previous commands*
** What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.
** Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.
** Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.
** Credits: _{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}_
=== *Major enhancement*:

* *Minor enhancement*: added a history command that allows the user to navigate to previous commands using up/down keys.
Changed the *GUI* to better suit EzWatchlist

* *Code contributed*: [https://github.com[Functional code]] [https://github.com[Test code]] _{give links to collated code files}_
* *What it does:*
** Structures the features into 4 tabs and links them together with the main logic which allows the user to easily
navigate around the tabs and execute commands.
** Ensures that each visible component is displayed with an appropriate size, appearance, space and position.
** Enhances user experience through user-friendly layout and placeholder text and loading signs to keep the user informed.
** Enhances user experience through a creative theme.

* *Other contributions*:
* *Justification:*
** This feature improves the product significantly because a user would like to use an application that is user friendly
and has an appealing appearance.

** Project management:
*** Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub
** Enhancements to existing features:
*** Updated the GUI color scheme (Pull requests https://github.com[#33], https://github.com[#34])
*** Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests https://github.com[#36], https://github.com[#38])
** Documentation:
*** Did cosmetic tweaks to existing contents of the User Guide: https://github.com[#14]
** Community:
*** PRs reviewed (with non-trivial review comments): https://github.com[#12], https://github.com[#32], https://github.com[#19], https://github.com[#42]
*** Contributed to forum discussions (examples: https://github.com[1], https://github.com[2], https://github.com[3], https://github.com[4])
*** Reported bugs and suggestions for other teams in the class (examples: https://github.com[1], https://github.com[2], https://github.com[3])
*** Some parts of the history feature I added was adopted by several other class mates (https://github.com[1], https://github.com[2])
** Tools:
*** Integrated a third party library (Natty) to the project (https://github.com[#42])
*** Integrated a new Github plugin (CircleCI) to the team repo

_{you can add/remove categories in the list above}_
* *Highlights:*
** This enhancement requires deep understanding of both the implementation of the application itself and also how to use
javafx flexibly in order to effectively communicate between the user and the application and present the message in a
desirable manner. It also requires repetitive adjustments and testing of the appearance of the elements to produce a
final result.

== Contributions to the User Guide

=== *Minor enhancement*:

|===
|_Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users._
|===
Added a `Statistics` feature that reflects the user's personal preferences.

include::../UserGuide.adoc[tag=delete]
=== *Code contributed*:
Code contributed can be found here: [https://nus-cs2103-ay1920s1.github.io/tp-dashboard/#search=tswuxia&sort=groupTitle&sortWithin=title&since=2019-09-06&timeframe=commit&mergegroup=false&groupSelect=groupByRepos&breakdown=false&tabOpen=true&tabType=authorship&tabAuthor=tswuxia&tabRepo=AY1920S1-CS2103T-F13-4%2Fmain%5Bmaster%5D[My Code Contribution]]

include::../UserGuide.adoc[tag=dataencryption]
=== *Other contributions*:

== Contributions to the Developer Guide
** Enhancements to existing features:
*** Updated the GUI color scheme (Pull request https://github.com/AY1920S1-CS2103T-F13-4/main/pull/123[#123])
*** Reported bugs and suggestions for other teams in the class (examples: https://github.com/tswuxia/ped/issues/7[1],
https://github.com/tswuxia/ped/issues/6[2], https://github.com/tswuxia/ped/issues/5[3], https://github.com/tswuxia/ped/issues/4[4],
https://github.com/tswuxia/ped/issues/3[5], https://github.com/tswuxia/ped/issues/2[6], https://github.com/tswuxia/ped/issues/1[7])

== Contributions to the User Guide
|===
|_Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project._
|_Given below are sections I contributed to the User Guide. They showcase my ability to write user documentation targeting normal
application users in a clear and understandable manner._
|===

include::../DeveloperGuide.adoc[tag=undoredo]
include::../UserGuide.adoc[tag=UI]

== Contributions to the Developer Guide

include::../DeveloperGuide.adoc[tag=dataencryption]
|===
|_Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation
and the technical depth of my contributions to the project._
|===

include::../DeveloperGuide.adoc[tag=statistics]

== PROJECT: PowerPointLabs

Expand Down
Binary file added docs/team/tswuxia.pdf
Binary file not shown.
14 changes: 9 additions & 5 deletions src/main/resources/view/SearchShowListCard.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,14 @@
<HBox id="cardPane" fx:id="cardPane" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<HBox HBox.hgrow="ALWAYS">
<children>
<ImageView fx:id="poster" fitHeight="160.0" fitWidth="120.0" pickOnBounds="true" preserveRatio="true">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin></ImageView>
<HBox alignment="CENTER" minWidth="115.0">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin>
<children>
<ImageView fx:id="poster" fitHeight="160.0" fitWidth="115.0" pickOnBounds="true" preserveRatio="true" />
</children>
</HBox>
<VBox fx:id="information" prefWidth="600.0" spacing="3.0">
<padding>
<Insets left="15.0" />
Expand Down Expand Up @@ -56,7 +60,7 @@
<Label fx:id="lastWatched" styleClass="cell_small_label" text="\$lastWatched" wrapText="true" />
</children>
<HBox.margin>
<Insets right="10.0" />
<Insets right="15.0" />
</HBox.margin>
</GridPane>
<padding>
Expand Down
10 changes: 7 additions & 3 deletions src/main/resources/view/ShowListCard.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,14 @@
<HBox id="cardPane" fx:id="cardPane" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<HBox HBox.hgrow="ALWAYS">
<children>
<ImageView fx:id="poster" fitHeight="160.0" fitWidth="120.0" pickOnBounds="true" preserveRatio="true">
<HBox alignment="CENTER" minWidth="115.0">
<HBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</HBox.margin></ImageView>
</HBox.margin>
<children>
<ImageView fx:id="poster" fitHeight="160.0" fitWidth="115.0" pickOnBounds="true" preserveRatio="true" />
</children>
</HBox>
<VBox fx:id="information" prefWidth="600.0" spacing="3.0">
<padding>
<Insets left="15.0" />
Expand Down Expand Up @@ -62,7 +66,7 @@
<Label fx:id="lastWatched" styleClass="cell_small_label" text="\$lastWatched" wrapText="true" />
</children>
<HBox.margin>
<Insets right="10.0" />
<Insets right="15.0" />
</HBox.margin>
</GridPane>
<padding>
Expand Down

0 comments on commit b9bc415

Please sign in to comment.