You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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`.
481
487
482
488
.Sequence Diagram for the Execution of `addfindrule` Command
Copy file name to clipboardExpand all lines: docs/team/le0tan.adoc
+67-27Lines changed: 67 additions & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,46 +2,84 @@
2
2
:site-section: AboutUs
3
3
:imagesDir: ../images
4
4
:stylesDir: ../stylesheets
5
+
:experimental:
5
6
6
7
== PROJECT: AlgoBase
7
8
8
-
---
9
-
10
9
== Overview
11
10
12
11
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.
13
12
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
+
14
17
== Summary of contributions
15
18
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}_
* *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.
21
34
22
-
* *Minor enhancement*: added a history command that allows the user to navigate to previous commands using up/down keys.
* *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.
*** 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]
*** 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.
**** 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]
45
83
46
84
== Contributions to the User Guide
47
85
@@ -50,14 +88,16 @@ _{you can add/remove categories in the list above}_
50
88
|_Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users._
51
89
|===
52
90
91
+
include::../UserGuide.adoc[tag=sort]
92
+
include::../UserGuide.adoc[tag=find]
93
+
include::../UserGuide.adoc[tag=findrule]
94
+
53
95
== Contributions to the Developer Guide
54
96
55
97
|===
56
98
|_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._
57
99
|===
58
100
59
-
== PROJECT: PowerPointLabs
60
-
61
-
---
62
-
63
-
_{Optionally, you may include other projects in your portfolio.}_
0 commit comments