Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
sk2001git committed Jan 16, 2024
2 parents 6cad5df + 90b6d84 commit dfd7cfa
Show file tree
Hide file tree
Showing 54 changed files with 776 additions and 662 deletions.
2 changes: 1 addition & 1 deletion docs/AboutUs.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ You can reach us at the email `e0958427[at]comp.nus.edu.sg`
<img src="images/ketweeen.png" width="200px">

[[github](http://github.com/ketweeen)]
[[portfolio](team/ketween.md)]
[[portfolio](team/ketweeen.md)]

* Role: Developer
* Responsibilities: Scheduling and tracking
Expand Down
71 changes: 54 additions & 17 deletions docs/DeveloperGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@

This is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).

_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_

--------------------------------------------------------------------------------------------------------------------

Expand Down Expand Up @@ -71,7 +70,7 @@ The sections below give more details of each component.

The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)

<puml src="/diagrams/UiClassDiagram.puml" alt="Structure of the UI Component"/>
<puml src="diagrams/UiClassDiagram.puml" alt="Structure of the UI Component"> </puml>

The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `PersonInformationPanel`, `SummaryStatisticScreen` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.
The `UI` component uses the 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`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)
Expand All @@ -89,7 +88,7 @@ The `UI` component,

Here's a (partial) class diagram of the `Logic` component:

<puml src="diagrams/LogicClassDiagram." width="550"/>
<puml src="diagrams/LogicClassDiagram.puml" width="550"/>

The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute("delete st/interviewed t/developer")` API call as an example.

Expand Down Expand Up @@ -267,16 +266,22 @@ The following sequence diagram shows how the view operation works:

<puml src="diagrams/ViewSequenceDiagram.puml" alt="ViewSequenceDiagram"></puml>

<box type="info" seamless>

**Note:** The lifeline for `ViewCommand` and `ViewCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.

</box>
User should see the UI as shown below after entering `view 1` (The command shown in Command Box is re-inputted for the sake of clarity. After entering the command, command should be cleared)
![View](images/viewState.png)

Step 3. The user can then read or process the information stored for the viewed person.

<box type="info" seamless>

**Note:** The view command can be most effectively used with `search` and `list`. Since the view index is dependent on the Index on the filtered list shown, the user can view the profile after filtering for specific properties in a person using `search` and sorting them using `list`.

</box>

Alternatives considered

Alternative 1 (Chosen):
Expand Down Expand Up @@ -304,7 +309,7 @@ This is done by setting the `isView` property to true in the `CommandResult` obj

### Create feature

### Implementation
#### Implementation

The `create` feature is implemented using the `CreateTagCommand` class. It extends `Command` and overrides the `execute()` method
to create tags of specific categories.
Expand All @@ -315,6 +320,10 @@ Parsing of the create command's tag parameters is handled by the `parse` method

Finally, the `execute()` method of the `CreateTagCommand` creates a `Tag` object for each element in the array of tag category and name pairs. These newly created tags are then added to the model.

The following activity diagram summarize what happens when a user attempts to execute the `create` command.

<puml src="diagrams/CreateTagActivityDiagram.puml" alt="CreateTagActivityDiagram"/></puml>

### Search feature

#### Implementation
Expand Down Expand Up @@ -343,25 +352,35 @@ Step 1. The user launches the application.
Step 2. The user executes `search t/intern` command to filter candidates whose status are offered.

The following sequence diagram shows how the search operation works:
<box type="info" seamless>

**Note:** The lifeline for `FindCommand` and `FindCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
**Note:**
* The lifeline for `FindCommand` and `FindCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
* The `parse` method of `FindCommandParsers` also creates objects of the `NameContainsKeywordPredicate`, `StatusContainsKeywordPredicate` and `TagContainsKeywordPredicate` but these
were instantiations not included in the sequence diagram below for the sake of brevity. However, do note that the `n`, `s`, `t` arguments in `getPredicatesList(n, s, t)` in the sequence
diagram below refer to instances of `NameContainsKeywordPredicate`, `StatusContainstKeywordPredicate` and `TagContainsKeywordPredicate` respectively.
</box>

<puml src="diagrams/SearchSequenceDiagram.puml" width="550" />
<puml src="diagrams/SearchSequenceDiagram.puml" alt="SearchSequenceDiagram" width/>

Step 3. The user should see the UI below upon entering `search t/intern`.

![Search](images/search-dg.png)

The following activity diagram shows summarizes what happens when a user attempts to execute the `search` command.

<puml src="diagrams/SearchActivityDiagram.puml" width="550" />
<puml src="diagrams/SearchActivityDiagram.puml" />

<box type="info" seamless>

**Note:** The current implementation of search allows users to search by any of the categories individually or by different combinations of the categories e.g. `search n/alex bernice st/offered t/intern`
It also allows users to specify more than one search parameter for each category e.g. `search n/alex bernice`

## Delete feature
</box>

### Delete feature

### Implementation
#### Implementation

The delete feature is implemented using the `DeleteCommand` class. It extends `Command` and overrides the `execute()` method to
filter users by the specified parameters.
Expand Down Expand Up @@ -395,8 +414,12 @@ Step 2. The user executes `delete st/interviewed t/developer` command to delete

The following sequence diagram shows how the search operation works:

<box type="info" seamless>

**Note:** The lifeline for `DeleteCommand` and `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.

</box>

<puml src="diagrams/DeleteSequenceDiagram.puml" alt="DeleteSequenceDiagram" />

Step 3. Assuming Bernice is the applicant matching the requirements, the user should see the UI below upon entering `delete st/interviewed t/developer`.
Expand All @@ -405,10 +428,13 @@ Step 3. Assuming Bernice is the applicant matching the requirements, the user sh

The following activity diagram shows summarizes what happens when a user attempts to execute the `delete` command.

<puml src="diagrams/DeleteActivityDiagram.puml" width="550" />
<puml src="diagrams/DeleteActivityDiagram.puml" />

<box type="info" seamless>

**Note:** The current implementation of delete by tags & status allows users to search by any of the categories individually or by different combinations of the categories.
It also allows users to specify more than one delete parameter for each category e.g. `delete t/intern manager`
</box>

### Set feature

Expand Down Expand Up @@ -513,8 +539,7 @@ The following sequence diagram shows how the `Event` operation works:

User should see the UI as shown below after executing the aforementioned command [It is assumed that the first candidate in the list is Alex Yeoh].


![EventWindow](images/eventwin.png)
<img src="images/eventwin.png" alt="EventWindow" width="550"/>

The following activity diagram shows how the `event` and `schedule` command can be used together to schedule events:

Expand Down Expand Up @@ -917,13 +942,25 @@ Additionally, you can only use the summary statistic table for comparison after
Currently, the filter feature might be too flexible for the user. That is it works on the displayed list and not across the board. We would like to improve on this by implementing a filter feature that works across the database.
This makes it more intuitive and logical for the user to use since the user would expect the filter feature to work across the database and not just the displayed list.

### Disabling view when using `search` and `filter`
**Improve the search and filter feature**
Currently, the UI does not update and will remain unchanged from the previous command. This may be confusing or inaccurate and thus it should remain blank
### Error Message for `filter` feature
**Improve the error message for filter feature**
Currently if you were use the filter feature with an invalid tag, that is a tag which does not have a alphanumeric name or is an `assessment` tag, it shows the error message: `Invalid tag provided. Needs to be non-empty name`.
This is attained from a sample input like `filter t/Intern met/median` where `Intern` is a tag that is on applicant but does not have a `assessment` category. Error message should contain `Check that the tag contains an asssessment category, use create command if it does not`
Additionally inputs like `filter t/Int@/a met/median` will also show the same error message. The current error message is too vague in nature, and should contain `Check that the tag name is not empty and is alphanumeric (a valid tag name) and does not contain space`.
The error message should be split into two in order to not confuse the user about what is wrong with the tag.
Therefore, the final output should have 1 error message for invalid tag names that are not alphanumeric or contains space and another error message for when the tag does not have an assessment category in `listT`.
`

### Improve on `remark` feature
**Improve the remark feature**
Currently, if you use multiple prefix , it is allowed and only the last prefix will be used. We would like to improve on this by only allowing 1 prefix to be used. Thus we verify for duplicate `r/` prefix since it does not make sense to have multiple remarks for the same person.
Currently, if you use multiple prefix , it is allowed and only the last prefix will be used. We would like to improve on this by only allowing 1 prefix to be used. Thus, we verify for duplicate `r/` prefix since it does not make sense to have multiple remarks for the same person.

### Improve on `edit` feature
**Improve on the edit feature**
Currently, for tagging, once you add a tag to a person, it does not update when you add the tag categories to the same tag name using `create`.
This is a feature flaw since a user would expect the tag to be updated and would not need to be re-tag again. We would like to improve on this by updating the tag when the tag category is updated.
That is if you add an extra category to the tag name, the tag will be updated to include the tag category. Thus, a user would not need to re-tag the person again to update the tag category.


## **Appendix: Effort**

Expand Down Expand Up @@ -1004,7 +1041,7 @@ testers are expected to do more *exploratory* testing.
2. Re-launch the app by double-clicking the jar file.<br>
Expected: The most recent window size and location is retained.

## Adding a person while all persons are being shown
### Adding a person while all persons are being shown

1. Adding a person while all persons are being shown
1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.
Expand Down
Loading

0 comments on commit dfd7cfa

Please sign in to comment.