diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md
index 6bef44d0eac..78b407c1172 100644
--- a/docs/DeveloperGuide.md
+++ b/docs/DeveloperGuide.md
@@ -6,9 +6,6 @@
# WedLog Developer Guide
-
-
-
1. [Acknowledgements](#1-acknowledgements)
2. [Setting up, getting started](#2-setting-up-getting-started)
3. [Design](#3-design)
@@ -54,7 +51,7 @@
8.7. [Better duplicate detection for dietary requirements](#8-7-better-duplicate-detection-for-dietary-requirements)
8.8. [Allow resizing of all panels](#8-8-allow-resizing-of-all-panels)
8.9. [Remove full-screen support for help window (macOS)](#8-9-remove-full-screen-support-for-help-window-macos)
- 8.10. [Better colour scheme](#8-10-better-colour-scheme)
+ 8.10. [Better colour scheme](#8-10-better-colour-scheme)
9. [Appendix D: Effort](#9-appendix-d-effort)
9.1. [Augmenting `Person` with `Guest` and `Vendor` classes](#9-1-augmenting-person-with-guest-and-vendor-classes)
9.2. [Altering most fields to become Optional](#9-2-altering-most-fields-to-become-optional)
@@ -79,11 +76,13 @@ Refer to the guide [_Setting up and getting started_](SettingUp.md).
--------------------------------------------------------------------------------------------------------------------
+
+
## **3. Design**
### 3.1. Architecture
-
+
The ***Architecture Diagram*** given above explains the high-level design of the App.
@@ -117,7 +116,7 @@ Each of the four main components (also shown in the diagram above),
For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.
-
+
The sections below give more details of each component.
@@ -127,7 +126,7 @@ The sections below give more details of each component.
The **API** of this component is specified in [`Ui.java`](https://github.com/AY2324S1-CS2103T-F11-2/tp/tree/master/src/main/java/wedlog/address/ui/Ui.java)
-
+
The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `GuestListPanel`, `VendorListPanel`, `StatisticsPanel`, `StatusBarFooter` 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.
@@ -190,6 +189,8 @@ The `Model` component,
* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.
* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)
+
+
**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.
@@ -239,6 +240,8 @@ A `TableNumber` object stores a table number as an integer. It is wrapped in an
+
+
#### Design considerations
**Aspect: How to store guests and vendors**
@@ -269,6 +272,8 @@ Step 1. The user launches the application. The `VersionedAddressBook` will be in
Step 2. The user executes `xyz add n/Annette t/friend`, where `xyz` is either `guest` or `vendor`. This allows the user to add
a guest or vendor with the name `Annette` and tag `friend`.
+
+
Step 3. `AddressBookParser` parses the `xyz` keyword and creates the `XYZCommandParser`.
`XYZCommandParser` parses the `add` keyword and creates a `XYZAddCommandParser` object. It also calls `XYZAddCommandParser#parse` to parse the inputted fields.
@@ -280,6 +285,8 @@ user input and convert it into field objects (e.g. string representing a new nam
+
+
Step 5. Lastly, `XYZAddCommand#execute` adds a `XYZ` with the given values to the `UniqueXYZList`.
@@ -299,6 +306,8 @@ Step 2. The user executed `xyz filter r/no`, where `xyz` is either `guest` or `v
Step 3. The user executes `xyz delete 1`, to delete the first guest or vendor **in the currently displayed list**.
+
+
Step 4. `XYZDeleteCommandParser` parses the `Index` to create a `XYZDeleteCommand`. The following sequence diagram shows how the parsing of a delete command works:
@@ -312,6 +321,8 @@ The following sequence diagram shows how the execution of a delete command works
+
+
#### Design considerations
**Aspect: How to specify a guest or vendor using `Index`**
* **Alternative 1:** `Index` refers to the index on the full list.
@@ -350,6 +361,7 @@ Step 5. A list view of only the XYZ named John is returned.
**However, a XYZ with name "John doe" would be returned as his name contains the keyword "John".**
+
The filtering logic is done with predicate classes that implement Java's Predicate interface:
@@ -415,6 +427,8 @@ Step 2. The user executes `guest filter n/John` to show only guests with the nam
Step 3. The user executes `guest edit 2 p/` to edit the 2nd guest in **the current list** to have **no phone number**.
+
+
Step 4. `GuestEditCommandParser` parses the `Index` and the additional arguments to create an `GuestEditCommand`. The following sequence diagram shows how the parsing of an edit command works:
@@ -435,6 +449,8 @@ Step 5. The resulting `GuestEditCommand` object is then executed by the `LogicMa
+
+
#### Design considerations
**Aspect: How `EditXYZDescriptor` works:**
@@ -468,6 +484,8 @@ These operations are exposed in the `Model` interface as `Model#commitAddressBoo
Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.
+
+
Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.
@@ -524,6 +542,8 @@ Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Sinc
+
+
The following activity diagram summarizes what happens when a user executes a new command:
@@ -555,6 +575,8 @@ The following activity diagram summarizes what happens when a user executes a ne
--------------------------------------------------------------------------------------------------------------------
+
+
## **6. Appendix A: Requirements**
### 6.1. Product scope
@@ -617,6 +639,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
+
+
### 6.3. Use cases
(For all use cases below, the **System** is `WedLog` and the **Actor** is the `user`, unless specified otherwise)
@@ -748,6 +772,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
+
+
**Use case: UC8 - Filter vendors**
**MSS:**
@@ -793,6 +819,8 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
+
+
**Use case: UC10 - Edit a vendor**
**MSS:**
@@ -832,13 +860,14 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli
+
+
### 6.5. Glossary
* **Mainstream OS**: Windows, Linux, Unix, MacOS
* **CLI**: Command Line Interface
* **GUI**: Graphical User Interface
* **JSON**: [JavaScript Object Notation](https://www.json.org/json-en.html)
-* **Private contact detail**: A contact detail that is not meant to be shared with others
--------------------------------------------------------------------------------------------------------------------
@@ -978,6 +1007,8 @@ Prerequisites: List all vendors using the `vendor list` command. There should be
+
+
### 7.9. Editing vendors
Prerequisites: List all vendors using the `vendor list` command. There should be at least 3, but less than 10,000 vendors in the list.
@@ -1026,6 +1057,8 @@ Prerequisites: There should be at least one guest or vendor in the application.
--------------------------------------------------------------------------------------------------------------------
+
+
## **8. Appendix C: Planned enhancements**
Given below are the planned enhancements for WedLog, beyond v1.4. This list is not ranked in order of importance.
@@ -1160,6 +1193,8 @@ and 'Vegan', WedLog will treat them as different dietary requirements. This can
This enhancement will allow WedLog to detect duplicate dietary requirements, regardless of case. A dietary requirement will be stored in WedLog in lowercase, for standardisation.
+
+
#### Benefits
We understand that our users may assign dietary requirements with the same name but different case. This enhancement will enforce case-insensitivity for the input of
dietary requirements, to prevent duplicate dietary requirements from being added to WedLog.
@@ -1188,6 +1223,8 @@ This can be done by adding the `resizable="true"` attribute to the relevant `Pan
+
+
### 8.9. Remove full-screen support for help window (macOS)
#### Description
We are aware of the issue that some macOS users have with the help window. When the app is running in full-screen mode and the help window is launched, it is also launched in full-screen mode,
@@ -1234,6 +1271,8 @@ by changing the relevant style attributes in the `.css` files.
--------------------------------------------------------------------------------------------------------------------
+
+
## **9. Appendix D: Effort**
This section documents the effort required to evolve AB3 into WedLog.
@@ -1307,6 +1346,8 @@ This involved:
+
+
### 9.7. Introducing Rsvp Status pie chart and Dietary Requirements statistics panel
This involved creating a new UI design and logic that was not available in AB3.
diff --git a/docs/UserGuide.md b/docs/UserGuide.md
index 8d3f8f3d251..256a6e9fd28 100644
--- a/docs/UserGuide.md
+++ b/docs/UserGuide.md
@@ -6,9 +6,6 @@
# User Guide
-
-
-
## Welcome to WedLog
_**Wedding planning made simple**_
@@ -25,8 +22,8 @@ Here's a quick summary of what WedLog can do for you:
1. [How to Use This Guide](#1-how-to-use-this-guide)
1.1 [Notations Used in This Guide](#1-1-notations-used-in-this-guide)
1.2 [New Users](#1-2-new-users)
- 1.3 [Experienced Users](#1-3-experienced-users)
-2. [Getting Started](#2-getting-started)
+ 1.3 [Experienced Users](#1-3-experienced-users)
+2. [Getting Started](#2-getting-started)
3. [Understanding the WedLog Interface](#3-understanding-the-wedlog-interface)
3.1. [User Input and Feedback](#3-1-user-input-and-feedback)
3.1.1. [Command box](#3-1-1-command-box)
@@ -64,16 +61,16 @@ Here's a quick summary of what WedLog can do for you:
5.6.3. [Redoing last action: `redo`](#5-6-3-redoing-last-action-redo)
5.6.4. [Clearing guests and vendors: `clear`](#5-6-4-clearing-guests-and-vendors-clear)
5.6.5. [Exiting the program: `exit`](#5-6-5-exiting-the-program-exit)
-6. [FAQ](#6-faq)
-7. [Known Issues](#7-known-issues)
-8. [Future Implementations](#8-future-implementations)
+6. [FAQ](#6-faq)
+7. [Known Issues](#7-known-issues)
+8. [Future Implementations](#8-future-implementations)
9. [Command Summary](#9-command-summary)
10. [Appendix: Acceptable values for parameters](#10-appendix-acceptable-values-for-parameters)
-
-
--------------------------------------------------------------------------------------------------------------------
+
+
## 1. How to Use This Guide
### 1.1 Notations Used in This Guide
@@ -126,6 +123,8 @@ If you would like a detailed look into each of the features WedLog has to offer,
--------------------------------------------------------------------------------------------------------------------
+
+
## 2. Getting Started
1. Ensure you have Java version `11` or above installed in your Computer.
@@ -177,6 +176,8 @@ The command box is the gateway for you to interact with WedLog, allowing you to
--------------------------------------------------------------------------------------------------------------------
+
+
#### 3.1.2. Result display
Complementing the command box is the result display, where WedLog presents relevant responses based on the executed commands. When a command is successfully executed, a success message will be displayed. When an invalid command is entered, an error message will be displayed.
@@ -197,6 +198,8 @@ To navigate through your extensive lists, a user-friendly scroll bar is provided
![lists.png](images%2Funderstanding-interface%2Flists.png)
+
+
#### 3.2.1. Guest list
The guest list allows you to meticulously manage and track all information related to your guests.
@@ -219,11 +222,13 @@ Vendor cards encapsulate key information such as tags, phone numbers, addresses,
--------------------------------------------------------------------------------------------------------------------
+
+
### 3.3. Quick View Panel
The Quick View panel allows you to see an overview of your guests at a glance. It is located on the left side of the window.
-
+
The Quick View panel consists of 2 sections: the RSVP Status panel and the Dietary Requirements panel.
@@ -235,7 +240,7 @@ The RSVP Status panel is designed to help you keep track of the proportion of RS
represented using a pie chart, with labels indicating the number of guests with each RSVP status. The pie chart is updated automatically
whenever you add, delete or edit a guest.
-
+
The pie chart slices are colour-coded as follows:
- `Yes`: Green
@@ -271,6 +276,8 @@ To kick-start your wedding planning journey with WedLog, explore the tutorial in
--------------------------------------------------------------------------------------------------------------------
+
+
## 4. WedLog Tutorial
Welcome to the WedLog Tutorial! In this section, we'll guide you through the basic commands of WedLog to get you started on your wedding planning journey.
@@ -327,6 +334,8 @@ This ensures that the tallies on the dietary requirements panel reflect only gue
--------------------------------------------------------------------------------------------------------------------
+
+
### 4.3. Filtering guests
Let's narrow down the guest list based on specific criteria using the `guest filter` command.
@@ -349,6 +358,8 @@ Your app should now look like this:
Now that we have a few guests on our list, let's begin filtering.
+
+
First, let's filter for all guests who are friends. The following command will result in a list that contains only guests with the `TAG` `friends`.
`guest filter t/friends`
@@ -363,6 +374,8 @@ Notice that the number of guests stated at the top of the guest list has changed
+
+
Next, let's narrow down our search to filter for all guests who are friends from university. The following command will result in a list that contains only guests with the `TAG` `friends` and `university`.
`guest filter t/friends t/university`
@@ -377,6 +390,8 @@ Notice that Mary Fowl is no longer included on this list, since she does not hav
+
+
Finally, let's filter for all guests who have not been assigned to any table yet. We can use the empty `tn/` label to look for guests without any table numbers associated to them.
`guest filter tn/`
@@ -397,6 +412,8 @@ Notice that John Doe is not included on this list, since we have previously assi
--------------------------------------------------------------------------------------------------------------------
+
+
### 4.4. What's next?
Congratulations! You've completed the essential steps of the WedLog Tutorial, setting the stage for seamless and organized wedding planning. Armed with the knowledge of adding guests, editing details, and filtering, you're well-equipped to make the most of WedLog.
@@ -428,6 +445,8 @@ Let's breakdown an example parameter `x/ABC` below.
+
+
### Understanding the command format
Mastering the command format in WedLog is essential for efficient interaction. WedLog's commands allow for flexibility in parameter order and support optional and repeatable elements.
@@ -457,6 +476,8 @@ If you are using a PDF version of this document, be careful when copying and pas
--------------------------------------------------------------------------------------------------------------------
+
+
### 5.1 Add Command
#### 5.1.1. Adding a guest: `guest add`
@@ -500,6 +521,8 @@ Expected behaviour upon failure:
--------------------------------------------------------------------------------------------------------------------
+
+
#### 5.1.2. Adding a vendor: `vendor add`
Allows you to add a vendor to WedLog, so that you can streamline coordination with the people involved in making your dream wedding a reality.
@@ -545,6 +568,8 @@ Expected behaviour upon failure:
--------------------------------------------------------------------------------------------------------------------
+
+
### 5.2. Delete Command
#### 5.2.1. Deleting a guest: `guest delete`
@@ -647,6 +672,8 @@ If the edited name specified in `n/NAME` corresponds to the name of an existing
+
+
Examples:
- `guest list` followed by `guest edit 2 p/914624435` edits the phone number of the 2nd guest to be `91462435`.
- `guest filter n/Gina` followed by `guest edit 1 n/Ginette` edits the name of the 1st guest in the results of the `filter` command to be `Ginette`.
@@ -780,6 +807,8 @@ Format: `guest filter [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [r/RSVP_STATUS] [
+
+
**Note:**
@@ -915,6 +944,8 @@ The redo command can be triggered by pressing Control + Y (Windows) or Command +
+
+
Examples:
- `vendor delete 2`, followed by `undo`, followed by `redo` deletes, then restores, then re-deletes the 2nd vendor in WedLog.
@@ -961,6 +992,8 @@ Upon exit, the latest data is saved to your computer at `data/addressbook.json`.
--------------------------------------------------------------------------------------------------------------------
+
+
## 6. FAQ
@@ -991,8 +1024,6 @@ unable to help you recover your lost data.
**A**: We hope you had a good wedding planning journey with WedLog! If you placed WedLog inside a dedicated folder during the installation process,
simply delete the entire folder. Otherwise, you will have to find and delete the following files individually: `wedlog.jar`, `addressbook.log.0`, `preferences.json`, `config.json`, alongside the `data` folder.
-
-
> [Back to top](#user-guide)
--------------------------------------------------------------------------------------------------------------------
@@ -1001,8 +1032,6 @@ simply delete the entire folder. Otherwise, you will have to find and delete the
1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.
-
-
--------------------------------------------------------------------------------------------------------------------
## 8. Future Implementations