forked from AY2425S1-CS2103T-F15-4/tp
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into edit-default-tags
- Loading branch information
Showing
185 changed files
with
9,728 additions
and
394 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,7 +6,7 @@ | |
|
||
# WedLinker User Guide | ||
|
||
AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. | ||
WedLinker is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps. | ||
|
||
<!-- * Table of Contents --> | ||
<page-nav-print /> | ||
|
@@ -42,7 +42,8 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo | |
|
||
-------------------------------------------------------------------------------------------------------------------- | ||
|
||
## Features | ||
# Features | ||
## General Features | ||
|
||
<box type="info" seamless> | ||
|
||
|
@@ -70,16 +71,85 @@ AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized fo | |
|
||
Shows a message explaning how to access the help page. | ||
|
||
//Reminder to update the link of help | ||
![help message](images/helpMessage.png) | ||
|
||
Format: `help` | ||
|
||
### Listing all Persons : `list` | ||
|
||
Shows a list of all saved [Persons](#adding-a-person-add) in the WedLinker. | ||
|
||
Format: `list` | ||
|
||
### Listing all Weddings : `list-weddings` | ||
|
||
Shows a list of all [Weddings](#adding-a-wedding--create-wedding) in the WedLinker. | ||
|
||
### Listing all Tasks : `list-tasks` | ||
|
||
Shows a list of all [Tasks](#creating-a-task--create-task) in the WedLinker | ||
|
||
### Locating contacts by any field, similar to a search function: `find` | ||
|
||
Finds all persons based on the specified keywords (case-insensitive) after the prefix representing the field, and displays them as a list with index numbers. | ||
|
||
Format: `find PREFIX KEYWORD [KEYWORD]…` | ||
|
||
* The search is case-insensitive. e.g `hans` will match `Hans` | ||
* The search will return partial matches and full matches | ||
* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` | ||
|
||
Examples of Prefixes: | ||
* n/ Name | ||
* a/ Address | ||
* p/ Phone Number | ||
* e/ Email | ||
* t/ Tag | ||
* w/ Wedding | ||
* tk/ Task | ||
|
||
Examples: | ||
* `find n/John` returns `john` and `John Doe` | ||
* `find n/alex david` returns `Alex Yeoh`, `David Li`<br> | ||
![result for 'find alex david'](images/findAlexDavidResult.png) | ||
* `find t/Friends` returns all Contacts tagged with Friends | ||
* `find w/Amy's Wedding` returns all Contacts involved with Amy's Wedding | ||
|
||
### Clearing all entries : `clear` | ||
|
||
Clears all entries from the address book. | ||
|
||
Format: `clear` | ||
|
||
### Exiting the program : `exit` | ||
|
||
Exits the program. | ||
|
||
Format: `exit` | ||
|
||
### Saving the data | ||
|
||
AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. | ||
|
||
### Editing the data file | ||
|
||
AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file. | ||
|
||
<box type="warning" seamless> | ||
|
||
**Caution:** | ||
If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.<br> | ||
Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly. | ||
</box> | ||
|
||
## Person Features | ||
|
||
### Adding a person: `add` | ||
|
||
Adds a person to the address book. | ||
|
||
Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…` | ||
Format: `add n/NAME [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]… [w/WEDDING]…` | ||
|
||
<box type="tip" seamless> | ||
|
||
|
@@ -90,50 +160,23 @@ Examples: | |
* `add n/John Doe p/98765432 e/[email protected] a/John street, block 123, #01-01` | ||
* `add n/Betsy Crowe t/friend e/[email protected] a/Newgate Prison p/1234567 t/criminal` | ||
|
||
### Listing all persons : `list` | ||
|
||
Shows a list of all persons in the address book. | ||
|
||
Format: `list` | ||
|
||
### Editing a person : `edit` | ||
|
||
Edits an existing person in the address book. | ||
|
||
Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…` | ||
Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS]` | ||
|
||
* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, … | ||
* At least one of the optional fields must be provided. | ||
* Existing values will be updated to the input values. | ||
* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. | ||
* You can remove all the person’s tags by typing `t/` without | ||
specifying any tags after it. | ||
|
||
Examples: | ||
* `edit 1 p/91234567 e/[email protected]` Edits the phone number and email address of the 1st person to be `91234567` and `[email protected]` respectively. | ||
* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. | ||
|
||
### Locating persons by name: `find` | ||
|
||
Finds persons whose names contain any of the given keywords. | ||
|
||
Format: `find KEYWORD [MORE_KEYWORDS]` | ||
|
||
* The search is case-insensitive. e.g `hans` will match `Hans` | ||
* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` | ||
* Only the name is searched. | ||
* Only full words will be matched e.g. `Han` will not match `Hans` | ||
* Persons matching at least one keyword will be returned (i.e. `OR` search). | ||
e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` | ||
|
||
Examples: | ||
* `find John` returns `john` and `John Doe` | ||
* `find alex david` returns `Alex Yeoh`, `David Li`<br> | ||
![result for 'find alex david'](images/findAlexDavidResult.png) | ||
* `edit 2 n/Betsy Crower` Edits the name of the 2nd person to be `Betsy Crower` | ||
|
||
### Deleting a person : `delete` | ||
|
||
Deletes the specified person from the address book. | ||
Deletes the specified person from WedLiker. | ||
|
||
Format: `delete INDEX` | ||
|
||
|
@@ -145,36 +188,123 @@ Examples: | |
* `list` followed by `delete 2` deletes the 2nd person in the address book. | ||
* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command. | ||
|
||
### Clearing all entries : `clear` | ||
### Tag Features | ||
|
||
Clears all entries from the address book. | ||
### Adding a tag : `create-tag` | ||
|
||
Format: `clear` | ||
Creates a `Tag` within WedLinker to be used on contacts. | ||
|
||
### Exiting the program : `exit` | ||
Format: `create-tag t/TAGNAME` | ||
|
||
Exits the program. | ||
* The `TAGNAME` is alphanumeric and can contain whitespaces. | ||
* Tags are unique in WedLinker, there would not be any duplicated Tags. | ||
* Contacts can share Tags. | ||
|
||
Format: `exit` | ||
### Assign tag to contact : `tag` | ||
|
||
### Saving the data | ||
Assigns a `Tag` to the specified person in WedLinker | ||
|
||
AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually. | ||
Format: `tag INDEX t/TAGNAME [f/]` | ||
|
||
### Editing the data file | ||
* Tag a specified contact based on the `INDEX` with a `Tag`. | ||
* The index refers to the index number shown in the displayed person list. | ||
* The index **must be a positive integer** 1, 2, 3, …. | ||
* The `Tag` must exists in WedLinker before it can be assigned. | ||
* If the `Tag` does not exist, you can use `f/` to force the creation and assignment of the `Tag`. | ||
|
||
AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file. | ||
### Unassign tag to contacts : `untag` | ||
|
||
<box type="warning" seamless> | ||
Untags a `Tag` from a specified person in WedLinker | ||
|
||
Format: `untag INDEX t/TAGNAME` | ||
|
||
* Untag a specified contact based on their `INDEX` with a `Tag`. | ||
* The index refers to the index number shown in the displayed person list. | ||
* The index **must be a positive integer** 1, 2, 3, …. | ||
|
||
### Deleting a tag : `delete-tag` | ||
|
||
Deletes a `Tag` from WedLinker. | ||
|
||
Format: `delete-tag t/TAGNAME [f/]` | ||
|
||
* Deletes a `Tag` from WedLinker. | ||
* The `Tag` must exists in WedLinker. | ||
* The `Tag` cannot be assigned to any contacts. | ||
* If the `Tag` is in used, you can use `f/` to force the deletion of the `Tag` and unassign this tag from all contacts. | ||
|
||
### Wedding Features | ||
|
||
### Adding a Wedding : `create-wedding` | ||
|
||
Creates a `Wedding` within WedLinker to be with contacts. | ||
|
||
Format: `create-wedding w/WEDDINGNAME` | ||
|
||
* The `WEDDINGNAME` is alphanumeric and can contain whitespaces. | ||
* Weddings are unique in WedLinker, there would not be any duplicated Weddings. | ||
* Contacts can be assigned to the Wedding using the [assign-wedding](#assign-contact-to-a-wedding--assign-wedding) command. | ||
|
||
### Assign contact to a Wedding : `assign-wedding` | ||
|
||
Assigns a contact to a `Wedding`. | ||
|
||
Format: `assign-wedding INDEX w/WEDDINGNAME` | ||
|
||
* Assigns a specified contact to the `Wedding` based on their `INDEX`. | ||
* The index refers to the index number shown in the displayed person list. | ||
* The index **must be a positive integer** 1, 2, 3, …. | ||
* The `Wedding` must exists in WedLinker before it can be assigned. | ||
* If the `Wedding` does not exist, you can use `f/` to force the creation and assignment of the `Wedding`. | ||
|
||
### Edit Wedding details : `edit-wedding` | ||
|
||
Edits the details of a `Wedding`. | ||
|
||
Format: `edit-wedding INDEX [w/WEDDINGNAME] [a/ADDRESS]` | ||
|
||
* Edits the specific `Wedding` at the INDEX when in [list-wedding](#listing-all-weddings-list-weddings) view. | ||
* The index **must be a positive integer** 1, 2, 3, …. | ||
* Existing values in the specified fields will be overwritten with the specified values. | ||
|
||
### Unassign contacts from a Wedding : `unassign-wedding` | ||
|
||
Unassigns a contact from a `Wedding` in WedLinker. | ||
|
||
Format: `unassign-wedding INDEX w/WEDDINGNAME` | ||
|
||
* Unassign a contact that is assigned in a `Wedding`. | ||
* The index refers to the index number shown in the displayed person list. | ||
* The index **must be a positive integer** 1, 2, 3, …. | ||
|
||
### Deleting a Wedding : `delete-wedding` | ||
|
||
Deletes a `Wedding` from WedLinker. | ||
|
||
Format: `delete-wedding w/WEDDINGNAME [f/]` | ||
|
||
* Deletes a `Wedding ` from WedLinker. | ||
* The no contacts should be assigned to the `Wedding` before it is deleted. | ||
* If there are still contacts assigned, you can use `f/` to force the deletion of the `Wedding` and unassign all contacts. | ||
|
||
### Task Features | ||
|
||
### Creating a Task : `create-task` | ||
|
||
Creates a `Task` in WedLinker | ||
|
||
Format: `create-task tk/TASKTYPE TASKDESCRIPTION [REMARKS]` | ||
|
||
### Delete a Task : `delete-task` | ||
|
||
Deletes a `Task` from WedLinker | ||
|
||
Format: `delete-task INDEX` | ||
|
||
**Caution:** | ||
If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.<br> | ||
Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly. | ||
</box> | ||
|
||
### Archiving data files `[coming in v2.0]` | ||
### Assigning a Task to a contact : `assign-task` **(WIP)** | ||
|
||
_Details coming soon ..._ | ||
### Unassigning a Task from a contact : `unassign-task` **(WIP)** | ||
|
||
-------------------------------------------------------------------------------------------------------------------- | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
@startuml | ||
|
||
hide circle | ||
skinparam classAttributeIconSize 0 | ||
skinparam classMethodAttributeIconSize 0 | ||
hide empty methods | ||
|
||
|
||
Class "<<interface>>\nModel" as Model | ||
Class "{abstract}\nCommand" as Command | ||
Class "{abstract}\nFindCommand" as FindCommand | ||
Command : CommandResult execute(Model model) {abstract} | ||
|
||
|
||
Model <.left. FindCommand | ||
Class FindXYZCommand extends FindCommand | ||
Class FindCommand extends Command | ||
Class "{abstract}\nPredicate<T>" as Predicate { | ||
+ boolean test(T t) {abstract} | ||
} | ||
Class "{abstract}\nTraitContainsKeywordPredicate<T>" as TraitContainsKeywordPredicate | ||
Class "XYZContainsKeywordsPredicate" as XYZContainsKeywordPredicate | ||
Class TraitContainsKeywordPredicate implements Predicate | ||
Class XYZContainsKeywordPredicate extends TraitContainsKeywordPredicate | ||
|
||
TraitContainsKeywordPredicate.up.>Predicate | ||
FindXYZCommand -right-> XYZContainsKeywordPredicate | ||
|
||
hide FindCommand fields | ||
hide Model fields | ||
hide TraitContainsKeywordPredicate fields | ||
hide FindXYZCommand fields | ||
hide XYZContainsKeywordPredicate fields | ||
|
||
|
||
|
||
@enduml |
Oops, something went wrong.