Skip to content

Commit b8f95ce

Browse files
authored
Update project portfolio page (#119)
* Draft PPP skeleton * Add minor enhancement and reviewed PRs to PPP * Fix plan package diagram issue * Update PPP * Add more detail to PPP
1 parent dc615b8 commit b8f95ce

File tree

6 files changed

+90
-34
lines changed

6 files changed

+90
-34
lines changed

docs/DeveloperGuide.adoc

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ NOTE: The lifeline for `DeleteCommandParser` should end at the destroy marker (X
117117

118118
//@@author le0tan
119119
[[Design-Model]]
120+
121+
// tag::model[]
122+
120123
=== Model component
121124

122125
.Structure of the Model Component
@@ -150,6 +153,9 @@ image::design/model/ProblemSearchRulePackageDiagram.png[width="60%"]
150153

151154
.Structure of the PlanSearchRule Package
152155
image::design/model/PlanSearchRulePackageDiagram.png[width='60%']
156+
157+
// end::model[]
158+
153159
//@@author
154160

155161
//@@author jiayushe
@@ -441,7 +447,7 @@ This section will describe in detail the current implementation and design consi
441447
The following activity diagram summarizes what happens when a user executes `addfindrule` command:
442448

443449
.Activity Diagram for the Execution of `addfindrule` Command
444-
image::savefindrule/AddFindRuleActivityDiagram.png[width="70%"]
450+
image::savefindrule/AddFindRuleActivityDiagram.png[width="70%", scaledwidth=10cm]
445451

446452
==== Current Implementation
447453

@@ -470,17 +476,17 @@ Since these commands share similar implementations, we will only take `AddFindRu
470476
The `addfindrule` feature is facilitated by `AddFindRuleCommand` and `AddFindRuleCommandParser` class.
471477

472478
.Class Diagram for Add Find Rule Feature
473-
image::savefindrule/AddFindRuleClassDiagram.png[width="70%"]
479+
image::savefindrule/AddFindRuleClassDiagram.png[width="70%", scaledwidth=12cm]
474480

475481
The sequence diagram below shows the high-level abstraction of how AlgoBase processes the request when user types in `addfindrule rule1 n/Sequences`:
476482

477483
.High-level Sequence Diagram for the Execution of `addfindrule rule1 n/Sequences`
478-
image::savefindrule/HighLevelAddFindRuleSequenceDiagram.png[width="70%"]
484+
image::savefindrule/HighLevelAddFindRuleSequenceDiagram.png[width="70%", scaledwidth=12cm]
479485

480486
The sequence diagram below illustrates the interaction between the `Logic` and `Model` component when executing `AddFindRuleCommand`. Notice that the constructor for `AddFindRuleCommand` requires `Name` to be non-null and accepts null values for other predicates. Thus if the predicate is not present in the arguments, `AddFindRuleCommandParser` will pass null to the constructor of `AddFindRuleCommand`.
481487

482488
.Sequence Diagram for the Execution of `addfindrule` Command
483-
image::savefindrule/AddFindRuleSequenceDiagram.png[width="70%"]
489+
image::savefindrule/AddFindRuleSequenceDiagram.png[width="70%", scaledwidth=12cm]
484490

485491
==== Design Considerations
486492

docs/UserGuide.adoc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ Edits the name of the 2nd problem to be `permutations` and clears all existing t
121121
Displays a list of all existing problems. +
122122
Format: `listprob`
123123

124+
// tag::sort[]
124125
==== Sorting problems: `sortprob`
125126

126127
Sorts the current list of results by a specified order and direction. +
@@ -142,8 +143,11 @@ Sorts the current list of problems in descending order of author names.
142143
* `sortprob m/difficulty ord/ascend`
143144
Sorts the current list of problems from lowest to highest difficulty.
144145

146+
// end::sort[]
147+
145148
=== Searching Problems
146149

150+
// tag::find[]
147151
==== Locating problems: `findprob`
148152

149153
Finds problems fulfilling all provided constraints. +
@@ -185,6 +189,10 @@ Returns any problem with `algorithm` as one of its tags AND with a difficulty be
185189
* `findprob a/Hentin Marz src/Kattis` +
186190
Returns any problem from `Kattis` that's authored by `Hentin Marz`.
187191

192+
// end::find[]
193+
194+
// tag::findrule[]
195+
188196
==== Storing a problem-finding rule: `addfindrule`
189197

190198
Saves a problem-finding rule from provided constraints. +
@@ -241,6 +249,8 @@ Examples:
241249
* `deletefindrule 2` or `dfr 2` +
242250
Deletes the 2nd find rule in the displayed list.
243251

252+
// end::findrule[]
253+
244254
=== Tags
245255

246256
==== Creating new tags: `addtag`

docs/diagrams/design/model/PlanPackageDiagram.puml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ Package Plan {
1818
'Plan
1919
Plan *--> "1" PlanName
2020
Plan *--> "1" PlanDescription
21-
Plan *--> "1" LocalDate : startDate
22-
Plan *--> "1" LocalDate : endDate
23-
PlanList o--> "*" Task
21+
Plan *--> "1" LocalDateTime : startDate
22+
Plan *--> "1" LocalDateTime : endDate
23+
PlanList o--> "*" Plan
2424

2525
@enduml
-26.4 KB
Loading

docs/team/le0tan.adoc

Lines changed: 67 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,84 @@
22
:site-section: AboutUs
33
:imagesDir: ../images
44
:stylesDir: ../stylesheets
5+
:experimental:
56

67
== PROJECT: AlgoBase
78

8-
---
9-
109
== Overview
1110

1211
AlgoBase is a desktop address book application used for teaching Software Engineering principles. 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.
1312

13+
== About this portfolio
14+
15+
This project portfolio details my individual contributions to the *AlgoBase* project. It includes a summary of the enhancements and other contributions I made throughout the duration of the project. Additionally, portions of my contribution to the User Guide and Developer Guide have also been included.
16+
1417
== Summary of contributions
1518

16-
* *Major enhancement*: added *the ability to undo/redo previous commands*
17-
** 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.
18-
** 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.
19-
** 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.
20-
** 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}_
19+
* *Code contributed*:
20+
https://nus-cs2103-ay1920s1.github.io/tp-dashboard/#=undefined&search=le0tan[Code contributed]
21+
22+
* *Major enhancement*: Implemented the problem searching and sorting feature.
23+
24+
** What it does: allows the user to filter problems by combining search constraints on most fields (e.g. problem names, sources, descriptions, difficulty, etc.), allows user to save and reuse some typical search rules and allows user to sort the search result.
25+
26+
** Justification: To organize algorithmic questions, the first step is to find a proper subset of AlgoBase to either add to a training plan or solve the problems directly. Searching and sorting feature should be one of the most frequently used features in *AlgoBase*. Plus, by enabling the user to save certain frequently used find rules (e.g. medium difficulty), we essentially made it possible to create a problem list that's dynamically updated according to certain rules - the user no longer needs to manually add tags or create plans for problems with certain properties, they can just use the saved find rules to locate them.
27+
28+
** Highlights:
29+
*** This is a full-stack feature involving all the components of *AlgoBase* from `Logic` to `Model` to `Storage` to `UI`, consisting of roughly 3000 lines of functional code and more than 2000 lines of testing code.
30+
*** `find` can search on almost all fields of a problem while `sort` provides 10 combinations of sorting order.
31+
*** It requires an in-depth analysis of the overall architecture of *AlgoBase* because
32+
**** The original implementation of `find` in AddressBook accepts only one search constraint (i.e. the name), but in *AlgoBase* we need to support combination of arbitrary (non-zero) number of search constraints.
33+
**** The design of AB3 only considers "filtering" problems, thus it used `FilteredList` to support `find` command. However, *AlgoBase* needs to support both `find` and `sort`. We need to redesign the way AB3 exposes the processed observable list to the UI so that the list accepts both a predicate and a comparator.
2134

22-
* *Minor enhancement*: added a history command that allows the user to navigate to previous commands using up/down keys.
35+
** Relevant pull requests:
36+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/49[#49]
37+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/61[#61]
38+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/64[#64]
39+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/90[#90]
40+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/94[#94]
41+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/107[#107]
2342

24-
* *Code contributed*: [https://github.com[Functional code]] [https://github.com[Test code]] _{give links to collated code files}_
43+
* *Minor enhancement*: Implemented the command history feature.
44+
45+
** What it does: allows the user to navigate to previous commands using ↑ and ↓ keyboard shortcut.
46+
47+
** Justification: This feature makes `addfindrule` more useful - the user can first check if their problem find rule is working as expected by executing it using `find` command, then press ↑ to restore the command text, change the command word to `addfindrule` and assign a name to the added find rule.
48+
49+
** Relevant pull request
50+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/105[#105]
51+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/137[#137] (Adapted some code from AB4)
2552

2653
* *Other contributions*:
2754

2855
** Project management:
29-
*** Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub
56+
*** Managed releases `v1.3` (1 release) on GitHub
3057
** Enhancements to existing features:
31-
*** Updated the GUI color scheme (Pull requests https://github.com[#33], https://github.com[#34])
32-
*** Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests https://github.com[#36], https://github.com[#38])
58+
*** Re-implement the `help` command:
59+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/81[#81]
3360
** Documentation:
34-
*** Did cosmetic tweaks to existing contents of the User Guide: https://github.com[#14]
61+
*** Explains how reserved words should work in *AlgoBase* (used as a reference in the development) https://github.com/AY1920S1-CS2103T-W11-1/main/pull/35[#35]
3562
** Community:
36-
*** PRs reviewed (with non-trivial review comments): https://github.com[#12], https://github.com[#32], https://github.com[#19], https://github.com[#42]
37-
*** Contributed to forum discussions (examples: https://github.com[1], https://github.com[2], https://github.com[3], https://github.com[4])
38-
*** Reported bugs and suggestions for other teams in the class (examples: https://github.com[1], https://github.com[2], https://github.com[3])
39-
*** Some parts of the history feature I added was adopted by several other class mates (https://github.com[1], https://github.com[2])
40-
** Tools:
41-
*** Integrated a third party library (Natty) to the project (https://github.com[#42])
42-
*** Integrated a new Github plugin (CircleCI) to the team repo
43-
44-
_{you can add/remove categories in the list above}_
63+
*** As shown below, I participated in the review of most significant PRs in *AlgoBase* and provided some in-depth comments to make sure that the code quality of this project is consistent.
64+
*** PRs reviewed (with non-trivial review comments):
65+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/24[#24]
66+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/37[#37]
67+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/65[#65]
68+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/66[#66]
69+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/67[#67]
70+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/70[#70]
71+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/80[#80]
72+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/85[#85]
73+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/116[#116]
74+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/145[#145]
75+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/147[#147]
76+
https://github.com/AY1920S1-CS2103T-W11-1/main/pull/201[#201]
77+
*** Contributed to forum discussions
78+
**** Fixed the forum issue template https://github.com/nus-cs2103-AY1920S1/forum/pull/126[#126]
79+
**** Reported module website's inaccurate information on PPP https://github.com/nus-cs2103-AY1920S1/forum/issues/149[#149]
80+
81+
*** Reported bugs and suggestions for other teams in the class:
82+
https://github.com/le0tan/ped[Reported 19 bugs in PED]
4583

4684
== Contributions to the User Guide
4785

@@ -50,14 +88,16 @@ _{you can add/remove categories in the list above}_
5088
|_Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users._
5189
|===
5290

91+
include::../UserGuide.adoc[tag=sort]
92+
include::../UserGuide.adoc[tag=find]
93+
include::../UserGuide.adoc[tag=findrule]
94+
5395
== Contributions to the Developer Guide
5496

5597
|===
5698
|_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._
5799
|===
58100

59-
== PROJECT: PowerPointLabs
60-
61-
---
62-
63-
_{Optionally, you may include other projects in your portfolio.}_
101+
https://ay1920s1-cs2103t-w11-1.github.io/main/DeveloperGuide.html#Design-Model[Design - Model] +
102+
https://ay1920s1-cs2103t-w11-1.github.io/main/DeveloperGuide.html#find-problem-feature[Implementation - Find Feature]
103+
include::../DeveloperGuide.adoc[tag=savefindrule]

docs/team/le0tan.pdf

379 KB
Binary file not shown.

0 commit comments

Comments
 (0)