diff --git a/.markdownlint.json b/.markdownlint.json index 735709daec8..58c36c73602 100644 --- a/.markdownlint.json +++ b/.markdownlint.json @@ -16,7 +16,7 @@ "style": "---" }, "MD044": { // Proper names should have the correct capitalization - "names": ["FoodRem", "User Guide", "Developer Guide"], + "names": ["FoodRem", "User Guide", "Developer Guide", "Command Input Box", "Command Output Box", "Item List Box"], "code_blocks": false }, "MD046": { // Code block style @@ -30,5 +30,6 @@ }, "MD050": { // Strong style should be consistent "style": "asterisk" - } + }, + "MD051": false // Link fragments should be valid } diff --git a/README.md b/README.md index d4ac24dce0b..c5fd8ba1f72 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ [![CI Status](https://github.com/AY2223S1-CS2103T-W16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2223S1-CS2103T-W16-2/tp/actions) -[![codecov](https://codecov.io/gh/AY2223S1-CS2103T-W16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2223S1-CS2103T-W16-2/tp) + [![CI Status](https://github.com/AY2223S1-CS2103T-W16-2/tp/workflows/Build/badge.svg)](https://github.com/AY2223S1-CS2103T-W16-2/tp/actions) + [![codecov](https://codecov.io/gh/AY2223S1-CS2103T-W16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2223S1-CS2103T-W16-2/tp) ![Ui](docs/images/Ui.png) @@ -11,4 +12,4 @@ FoodRem is an Inventory Management System that empowers small food and beverage ## Acknowledgements -FoodRem is a brownfield software project based off [AddressBook3](https://se-education.org/addressbook-level3/), taken under the [CS2103T Software Engineering module](https://nus-cs2103-ay2223s1.github.io/website/index.html) held by the School of Computing at the National University of Singapore. +FoodRem is a brownfield software project based off [AddressBook Level-3](https://se-education.org/addressbook-level3/), taken under the [CS2103T Software Engineering module](https://nus-cs2103-ay2223s1.github.io/website/index.html) held by the School of Computing at the National University of Singapore. diff --git a/docs/AboutUs.md b/docs/AboutUs.md index bee4ba12c69..2d1b3d1ad8a 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -5,7 +5,7 @@ title: About Us -We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg). +We are a team based in the [School of Computing, National University of Singapore](https://comp.nus.edu.sg). You can reach us at the email `seer[at]comp.nus.edu.sg` @@ -16,7 +16,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](https://github.com/ferusel)] -[[portfolio](team/ferusel.md)] +[[portfolio](team/ferusel)] * Role: Team Lead @@ -25,7 +25,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](https://github.com/bryanljx)] -[[portfolio](team/bryanljx.md)] +[[portfolio](team/bryanljx)] * Role: Tech Lead @@ -34,7 +34,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](https://github.com/RichDom2185)] -[[portfolio](team/richdom2185.md)] +[[portfolio](team/richdom2185)] * Role: Tech Lead @@ -43,7 +43,7 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](https://github.com/eugenetanwl3881)] -[[portfolio](team/eugenetanwl3881.md)] +[[portfolio](team/eugenetanwl3881)] * Role: Documentation @@ -52,6 +52,6 @@ You can reach us at the email `seer[at]comp.nus.edu.sg` [[github](https://github.com/yixiann)] -[[portfolio](team/yixiann.md)] +[[portfolio](team/yixiann)] * Role: Secretary diff --git a/docs/Configuration.md b/docs/Configuration.md index edb48b41c91..0ec15e24bd0 100644 --- a/docs/Configuration.md +++ b/docs/Configuration.md @@ -1,8 +1,9 @@ --- layout: page -title: Configuration guide +title: Configuration Guide --- {% include toc.md header=true ordered=true %} ## Configuration + Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: `config.json`). diff --git a/docs/DevOps.md b/docs/DevOps.md index f638651971f..c875ddcc612 100644 --- a/docs/DevOps.md +++ b/docs/DevOps.md @@ -1,6 +1,6 @@ --- layout: page -title: DevOps guide +title: DevOps Guide --- {% include toc.md header=true ordered=true %} @@ -56,8 +56,6 @@ Any warnings or errors will be printed out to the console. * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error. * Check scripts must exit with a non-zero exit code if any errors occur. ---- - ## Making a release Here are the steps to create a new release. diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index e7a42cb6d5d..7863c011af8 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -34,6 +34,7 @@ Refer to the guide [_Setting up and getting started_](SettingUp.md). ## Documentation, Configuration, and Other Guides Here are some links to other documentations you might find useful: + * [Documentation guide](Documentation.md) * [Testing guide](Testing.md) * [Logging guide](Logging.md) diff --git a/docs/Documentation.md b/docs/Documentation.md index be1b2125801..8aa3e3cb0c6 100644 --- a/docs/Documentation.md +++ b/docs/Documentation.md @@ -1,6 +1,6 @@ --- layout: page -title: Documentation guide +title: Documentation Guide --- {% include toc.md header=true ordered=true %} @@ -14,7 +14,7 @@ title: Documentation guide * :bulb: In addition to updating content files, you might have to update the config files `docs\_config.yml` and `docs\_sass\minima\_base.scss` (which contains a reference to `AB-3` that comes into play when converting documentation pages to PDF format). * If you are using Intellij for editing documentation files, you can consider enabling 'soft wrapping' for `*.md` files, as explained in [_[se-edu/guides] **Intellij IDEA: Useful settings**_](https://se-education.org/guides/tutorials/intellijUsefulSettings.html#enabling-soft-wrapping) -## Style guidance +## Style Guide * Follow the [**_Google developer documentation style guide_**](https://developers.google.com/style) diff --git a/docs/Logging.md b/docs/Logging.md index 8e726a1ca54..205c29beca1 100644 --- a/docs/Logging.md +++ b/docs/Logging.md @@ -1,10 +1,11 @@ --- layout: page -title: Logging guide +title: Logging Guide --- {% include toc.md header=true ordered=true %} ## Logging + * We are using `java.util.logging` package for logging. * The `LogsCenter` class is used to manage the logging levels and logging destinations. * The `Logger` for a class can be obtained using `LogsCenter.getLogger(Class)` which will log messages according to the specified logging level. diff --git a/docs/SettingUp.md b/docs/SettingUp.md index 3d5bddb9132..ec57d293cb9 100644 --- a/docs/SettingUp.md +++ b/docs/SettingUp.md @@ -1,6 +1,6 @@ --- layout: page -title: Setting up and getting started +title: Setting Up and Getting Started --- {% include toc.md header=true ordered=true %} diff --git a/docs/Testing.md b/docs/Testing.md index 7a015b6d1d9..21bfa39fe76 100644 --- a/docs/Testing.md +++ b/docs/Testing.md @@ -1,6 +1,6 @@ --- layout: page -title: Testing guide +title: Testing Guide --- {% include toc.md header=true ordered=true %} diff --git a/docs/UserGuide.md b/docs/UserGuide.md index acee38feba5..de53ba8b6ef 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -21,7 +21,7 @@ show-toc: true {% include_relative _ug/Installation.md %} -## Quickstart Guide +## Quick Reference Guide {% include_relative _ug/QuickstartGuide.md %} diff --git a/docs/_data/constraints.yml b/docs/_data/constraints.yml new file mode 100644 index 00000000000..24d531e3c54 --- /dev/null +++ b/docs/_data/constraints.yml @@ -0,0 +1,18 @@ +boughtNotAfterExpiry: >- + The `BOUGHT_DATE` should not be after the `EXPIRY_DATE`. + +dateFormat: + summary: >- + The format for `BOUGHT_DATE` and `EXPIRY_DATE` should follow: "dd-mm-yyyy". + day: >- + "dd": Day of the month. For example, "10" would represent the 10th day of the month. + month: >- + "mm": Month of the year, ranging from 1 to 12 for January to December respectively. For example, "05" would represent May. + year: >- + "yyyy": A 4-digit year. For example, "2019" would represent the year 2019. + +lastValueOfDuplicates: >- + If two or more values of the same parameter are provided, only the last value for that parameter will be taken. + +priceIsWithoutSymbol: >- + `PRICE` do not require you to include the currency. Only include the value. diff --git a/docs/_data/foodrem.yml b/docs/_data/foodrem.yml index f7b0302d5ba..7770c34d29a 100644 --- a/docs/_data/foodrem.yml +++ b/docs/_data/foodrem.yml @@ -1,13 +1,8 @@ acknowledgements: >- - FoodRem is a brownfield software project based off [AddressBook3](https://se-education.org/addressbook-level3/), - taken under the [CS2103T Software Engineering module](https://nus-cs2103-ay2223s1.github.io/website/index.html) - held by the School of Computing at the National University of Singapore. + FoodRem is a brownfield software project based off [AddressBook Level-3](https://se-education.org/addressbook-level3/), taken under the [CS2103T Software Engineering module](https://nus-cs2103-ay2223s1.github.io/website/index.html) held by the School of Computing at the National University of Singapore. about: summary: >- - FoodRem is an **Inventory Management System** that empowers small food and beverage (F&B) restaurant managers - to manage inventory and obtain insights from inventory data. As a restaurant manager, leverage upon FoodRem's - own **Inventory Management System**, where you can manage your inventory during your daily operations. Utilize - FoodRem's flexible **tagging system** to help you organize your inventory according to your business needs. - Finally, streamline your business decisions by deriving insights from your inventory usage through FoodRem's - **statistics**, keeping track of vital data such as food wastage. + FoodRem is an **Inventory Management System** that empowers small food and beverage (F&B) restaurant managers to manage inventory and obtain insights from inventory data. As a restaurant manager, you can manage your inventory during your daily operations. Utilize FoodRem's flexible **tagging system** to help you organize your inventory according to your business needs. Finally, streamline your business decisions by deriving insights from your inventory usage through FoodRem's **statistics**, keeping track of vital data such as food wastage. + summary_dg: >- + FoodRem is an **Inventory Management System** that empowers small food and beverage (F&B) restaurant managers to manage inventory and obtain insights from inventory data. Users can leverage upon FoodRem's **Inventory Management System** during their daily operations. FoodRem's **tagging system** to helps users organize their inventory according to their business needs. FoodRem also derives insights from inventory usage through FoodRem's **statistics**. diff --git a/docs/_dg/AboutDG.md b/docs/_dg/AboutDG.md index b1c71d38e63..dfeaf1f7a2c 100644 --- a/docs/_dg/AboutDG.md +++ b/docs/_dg/AboutDG.md @@ -1,7 +1,8 @@ -FoodRem is an **Inventory Management System** that empowers small food and beverage (F&B) restaurant managers to manage inventory and obtain insights from inventory data. Users can leverage upon FoodRem's **Inventory Management System** during their daily operations. FoodRem's **tagging system** to helps users organize their inventory according to their business needs. FoodRem also derives insights from inventory usage through FoodRem's **statistics**. + +{{ site.data.foodrem.about.summary_dg }} -This Developer Guide provides an in-depth documentation on how FoodRem is designed and implemented. It covers the architecture of FoodRem, detailed specifications on smaller pieces of the design, and an outline of all parts of the software and how they will work. +This Developer Guide provides an in-depth documentation on how FoodRem is designed and implemented. It covers the architecture of FoodRem, detailed specifications on smaller pieces of the design, and an outline of all parts of the software and how they will work. You can use this guide to maintain, upgrade, and evolve FoodRem. diff --git a/docs/_dg/Architecture.md b/docs/_dg/Architecture.md index 345a8b46cf6..2b27098451b 100644 --- a/docs/_dg/Architecture.md +++ b/docs/_dg/Architecture.md @@ -25,7 +25,7 @@ The rest of the App consists of four components. #### How the architecture components interact with each other -The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `del 1`. This deletes the first item from the Item List Box. +The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `del 1`. This deletes the first item from the [[ item-list-box:Item List Box ]]. ![](images/ArchitectureSequenceDiagram.png) diff --git a/docs/_dg/Design.md b/docs/_dg/Design.md index 169c075d188..fc530dd0c32 100644 --- a/docs/_dg/Design.md +++ b/docs/_dg/Design.md @@ -2,10 +2,11 @@ This section gives you a high-level overview of how the application is structured and what the key components are in FoodRem. -The [Architecture](#architecture) section gives an overview of how the main components in FoodRem interact with one another. +The [Architecture](#architecture) section gives an overview of how the main components in FoodRem interact with one another. FoodRem has four main components and each section describe smaller subcomponents within them. The main conponents are namely: + 1. [Ui Component](#ui-component) 1. [Logic Component](#logic-component) 1. [Model Component](#model-component) diff --git a/docs/_dg/Effort.md b/docs/_dg/Effort.md index 374f6e5c2f7..61b581eaa04 100644 --- a/docs/_dg/Effort.md +++ b/docs/_dg/Effort.md @@ -1,5 +1,4 @@ - Implementing FoodRem was not a straightforward task. Given below is a summary of the effort our team has put into to develop FoodRem as well as some challenges faced. ### Morphing of AB3 to FoodRem @@ -8,7 +7,6 @@ As we wanted to morph AB3 to fit into our idea of FoodRem, we had to refactor a One challenge we ran into during the project was implementing a batch feature for our items. We wanted to be able to create same items but of different batches (i.e. same name but different bought date and expiry date). However, this would require another major refactoring of the classes we have, as well as the commands that we have implemented thus far in the project. Given the tight timeline of the team project, we eventually decided to drop this feature since we will not be able to deliver the full functionality (along with updating every other command we have implemented thus far) in time. If given more time, this would have been a feature which we would have implemented as it is a relevant feature that will be used in the real world which brings value to our target users. - ### Revamping of UI -We wanted a simple yet appelaing user interface for our application users. As such we decided to change the original UI of AB3 into our own new FoodRem UI. As our team is not familiar with JavaFX initially, it took us considerable time and effort to produce an eventual satisfactory and working UI that we were proud to adopt and incorporate into our application. +We wanted a simple yet appealing user interface for our application users. As such we decided to change the original UI of AB3 into our own new FoodRem UI. As our team is not familiar with JavaFX initially, it took us considerable time and effort to produce an eventual satisfactory and working UI that we were proud to adopt and incorporate into our application. diff --git a/docs/_dg/HowToUseDeveloperGuide.md b/docs/_dg/HowToUseDeveloperGuide.md index ef33ca6da30..e4378bcc7db 100644 --- a/docs/_dg/HowToUseDeveloperGuide.md +++ b/docs/_dg/HowToUseDeveloperGuide.md @@ -8,7 +8,7 @@ You do not need to read the Developer Guide in a sequential order. However, we r The Developer Guide has six main components: 1. [Design](#design) -1. [Implementation](#implementation) +1. [Implementation](#implementation) 1. [Documentation, Configuration and Other Guides](#documentation-configuration-and-other-guides) 1. [Requirements](#requirements) 1. [Instructions for manual testing](#instructions-for-manual-testing) diff --git a/docs/_dg/Implementation.md b/docs/_dg/Implementation.md index 9cd1c6cd8f5..978862944db 100644 --- a/docs/_dg/Implementation.md +++ b/docs/_dg/Implementation.md @@ -3,6 +3,7 @@ This section shares with you some noteworthy details on how certain features are implemented. There are four main groups of features that are implemented: + 1. [Item-related Features](#item-related-features) 1. [Tag-related Features](#tag-related-features) 1. [Statistics Features](#statistics-features) diff --git a/docs/_dg/InstructionsForManualTesting.md b/docs/_dg/InstructionsForManualTesting.md index f5e0f506ae8..7840034969d 100644 --- a/docs/_dg/InstructionsForManualTesting.md +++ b/docs/_dg/InstructionsForManualTesting.md @@ -16,48 +16,57 @@ These instructions only provide a starting point for testers to work on; testers #### Create a new Item -1. Test case: `new n/Potato qty/2 u/kg bgt/10-10-2022 exp/11-11-2022 p/4 r/favourite`
Expected Output in Item List Box: New item added into the list.
Expected Output in Command Output Box: New item added message and its details. -1. Test case: `new qty/2`
Expected Output in Command Box: Error message for invalid command format. +1. Test case: `new n/Potato qty/2 u/kg bgt/10-10-2022 exp/11-11-2022 p/4 r/favourite`
Expected Output in [[ item-list-box:Item List Box ]]: New item added into the list.
Expected Output in [[ command-output-box:Command Output Box ]]: New item added message and its details. +1. Test case: `new qty/2`
Expected Output in Command Output Box: Error message for invalid command format. -#### List all items +#### List all items Prerequisite: There is at least 1 item stored in FoodRem. + 1. Test case: `list`
Expected Output in Item List Box: All items stored in FoodRem displayed.
Expected Output in Command Output Box: Listed all items message. #### Search for an Item Prerequisite: Suppose there is only one item named `Potato` stored in FoodRem. -1. Test case: `find Potato`
Expected Output in Item List Box: `Potato` item displayed.
Expected Output in Command Output Box: 1 item listed message. -2. Test case: `find strawberry`
Expected Output in Item List Box: No items displayed.
Expected Output in Command Output Box: 0 item listed message. + +1. Test case: `find Potato`
Expected Output in Item List Box: `Potato` item displayed.
Expected Output in Command Output Box: 1 item listed message. +1. Test case: `find strawberry`
Expected Output in Item List Box: No items displayed.
Expected Output in Command Output Box: 0 item listed message. #### Sort all items by an attribute Prerequisite: Suppose there are a few items stored in FoodRem and shown in Item List Box with different names. + 1. Test case: `sort n/`
Expected Output in Item List Box: Items sorted in ascending alphabetical order based on name.
Expected Output in Command Output Box: Items sorted message. #### View the information of an Item -Prerequisite: Suppose there is at least 1 item shown in the Item List Box. +Prerequisite: Suppose there is at least 1 item shown in the Item List Box. + 1. Test case: `view 1`
Expected Output in Item List Box: Still showing the same list as before.
Expected Output in Command Output Box: Details of first item in Item List Box shown. Displayed information includes the name, quantity, unit, bought date, expiry date, price, remarks and tags of items. #### Increment the quantity of an item Prerequisite: Suppose the first item in the Item List Box has a quantity of 1. + 1. Test case: `inc 1 qty/2`
Expected Output in Item List Box: Still showing the same list as before but with first item quantity increased by 2
Expected Output in Command Output Box: Incremented item quantity message with details of first item in Item List shown. #### Decrement the quantity of an item Prerequisite: Suppose the first item in the Item List Box has a quantity of 3. + 1. Test case: `dec 1 qty/2`
Expected Output in Item List Box: Still showing the same list as before but with first item quantity decreased by 2
Expected Output in Command Output Box: Decremented item quantity message with details of first item in Item List shown. ` + #### Edit the information of an item Prerequisite: Suppose the first item in the Item List Box has a name of `Potato`. -1. Test case: `edit 1 n/Tomato`
Expected Output in Item List Box: The `Potato`item has been renamed to `Tomato` and this is now reflected in item List Box
Expected Output in Command Output Box: Item edited message with details of the edited item shown. + +1. Test case: `edit 1 n/Tomato`
Expected Output in Item List Box: The `Potato`item has been renamed to `Tomato` and this is now reflected in Item List Box
Expected Output in Command Output Box: Item edited message with details of the edited item shown. #### Add a remark to an item Prerequisite: Suppose the first item in the Item List Box has no remarks. + 1. Test case: `rmk 1 r/For Party`
Expected Output in Item List Box: Same list as shown before
Expected Output in Command Output Box: Remark updated message with details of the item that has remark updated shown. #### Deleting an Item diff --git a/docs/_dg/UserStories.md b/docs/_dg/UserStories.md index d4097ab7e5f..691415bcdd2 100644 --- a/docs/_dg/UserStories.md +++ b/docs/_dg/UserStories.md @@ -27,5 +27,3 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | `* * *` | purchasing manager | delete a tag | I can remove tags that will not be used anymore | | `* * *` | purchasing manager | add a tag to an item | I can classify an item via this certain tag | | `* * *` | purchasing manager | remove a tag from an item | I can choose not to classify an item via this certain tag | - - diff --git a/docs/_dg/implementations/ItemFeatures.md b/docs/_dg/implementations/ItemFeatures.md index 6a48f805a7f..2785e0ec7bc 100644 --- a/docs/_dg/implementations/ItemFeatures.md +++ b/docs/_dg/implementations/ItemFeatures.md @@ -36,8 +36,8 @@ The `sort` feature sorts the list of items currently displayed to the user by specified flag(s). It is possible to sort by one or more criteria. A list of available criteria for sorting includes: * Name -* Unit * Quantity +* Unit * Bought Date * Expiry Date diff --git a/docs/_glossary/Admonitions.md b/docs/_glossary/Admonitions.md new file mode 100644 index 00000000000..2d980a9db8a --- /dev/null +++ b/docs/_glossary/Admonitions.md @@ -0,0 +1,8 @@ +--- +name: Admonitions +show-in: [ug, dg] +--- + +Admonition boxes (or simply "admonitions") are coloured boxes containing highlighted pieces of text. + +For details on the various types of various types of admonitions used in FoodRem, see the section on [Admonition Boxes](#admonition-boxes). diff --git a/docs/_glossary/BOUGHT_DATE.md b/docs/_glossary/BOUGHT_DATE.md index 58868fcc68a..e850292ec18 100644 --- a/docs/_glossary/BOUGHT_DATE.md +++ b/docs/_glossary/BOUGHT_DATE.md @@ -5,4 +5,4 @@ show-in: [ug] The BOUGHT_DATE is the date indicating when an item was bought. -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_glossary/COMMAND_WORD.md b/docs/_glossary/COMMAND_WORD.md index 3f733cb8ee6..05c603e3de3 100644 --- a/docs/_glossary/COMMAND_WORD.md +++ b/docs/_glossary/COMMAND_WORD.md @@ -5,4 +5,4 @@ show-in: [ug] The COMMAND_WORD is a text indicating a command word of a command -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_glossary/CommandInputBox.md b/docs/_glossary/CommandInputBox.md new file mode 100644 index 00000000000..12e21e422ce --- /dev/null +++ b/docs/_glossary/CommandInputBox.md @@ -0,0 +1,8 @@ +--- +name: Command Input Box +show-in: [ug, dg] +--- + +The region located at the top-left of FoodRem's main window. + +To view more information, refer to the [Layout](/UserGuide.html#layout) section of the User Guide. diff --git a/docs/_glossary/CommandOutputBox.md b/docs/_glossary/CommandOutputBox.md new file mode 100644 index 00000000000..df2bfdabe1c --- /dev/null +++ b/docs/_glossary/CommandOutputBox.md @@ -0,0 +1,8 @@ +--- +name: Command Output Box +show-in: [ug, dg] +--- + +The region located at the right half of FoodRem's main window. + +To view more information, refer to the [Layout](/UserGuide.html#layout) section of the User Guide. diff --git a/docs/_glossary/EXPIRY_DATE.md b/docs/_glossary/EXPIRY_DATE.md index 2182c657d92..ddd4185b63a 100644 --- a/docs/_glossary/EXPIRY_DATE.md +++ b/docs/_glossary/EXPIRY_DATE.md @@ -5,4 +5,4 @@ show-in: [ug] The EXPIRY_DATE is the date indicating when an item will expire. -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_glossary/INDEX.md b/docs/_glossary/INDEX.md index 7f9d00f8b53..ec873a40869 100644 --- a/docs/_glossary/INDEX.md +++ b/docs/_glossary/INDEX.md @@ -5,4 +5,4 @@ show-in: [ug] The INDEX of an item is the number to the left of the item name in the List Component. -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_glossary/ITEM_NAME.md b/docs/_glossary/ITEM_NAME.md index 0b49f7fc98d..11c7120b2c4 100644 --- a/docs/_glossary/ITEM_NAME.md +++ b/docs/_glossary/ITEM_NAME.md @@ -5,4 +5,4 @@ show-in: [ug] The ITEM_NAME is the name we use to identify an item. -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_glossary/ItemListBox.md b/docs/_glossary/ItemListBox.md new file mode 100644 index 00000000000..9ea6b3c08f7 --- /dev/null +++ b/docs/_glossary/ItemListBox.md @@ -0,0 +1,8 @@ +--- +name: Item List Box +show-in: [ug, dg] +--- + +The region located at the bottom-left of FoodRem's main window. + +To view more information, refer to the [Layout](/UserGuide.html#layout) section of the User Guide. diff --git a/docs/_glossary/KEYWORD.md b/docs/_glossary/KEYWORD.md index 09c4c724db0..8421acacd87 100644 --- a/docs/_glossary/KEYWORD.md +++ b/docs/_glossary/KEYWORD.md @@ -5,4 +5,4 @@ show-in: [ug] The KEYWORD is the text we use search for an item. -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_glossary/PRICE.md b/docs/_glossary/PRICE.md index a4e2f5ba60e..afdae4a7704 100644 --- a/docs/_glossary/PRICE.md +++ b/docs/_glossary/PRICE.md @@ -5,4 +5,4 @@ show-in: [ug] The PRICE is the number representing the cost of one unit of an item. -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_glossary/QUANTITY2.md b/docs/_glossary/QUANTITY2.md index ff9cf824156..c90073098cf 100644 --- a/docs/_glossary/QUANTITY2.md +++ b/docs/_glossary/QUANTITY2.md @@ -5,4 +5,4 @@ show-in: [ug] The QUANTITY is the number representing the amount of an item. -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_glossary/REMARKS.md b/docs/_glossary/REMARKS.md index 89c3d2792d3..b81fd145c67 100644 --- a/docs/_glossary/REMARKS.md +++ b/docs/_glossary/REMARKS.md @@ -5,4 +5,4 @@ show-in: [ug] The REMARKS of an item is a note that you can add to an item. -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_glossary/Substring.md b/docs/_glossary/Substring.md new file mode 100644 index 00000000000..a209f50fbae --- /dev/null +++ b/docs/_glossary/Substring.md @@ -0,0 +1,9 @@ +--- +name: Substring +show-in: [ug, dg] +--- + +A contiguous sequence of characters (letters) that form a part (or a whole) string of text. + +Example: +"ca" is a substring of "ca", "cat" and "thecat", but not "ac". diff --git a/docs/_glossary/TAG_NAME.md b/docs/_glossary/TAG_NAME.md index 77d0e2d1fd2..b83a188a5c5 100644 --- a/docs/_glossary/TAG_NAME.md +++ b/docs/_glossary/TAG_NAME.md @@ -5,4 +5,4 @@ show-in: [ug] The TAG_NAME is the term we use to identify an item. -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_glossary/UNIT.md b/docs/_glossary/UNIT.md index e3ce9bd86f3..79157aa640d 100644 --- a/docs/_glossary/UNIT.md +++ b/docs/_glossary/UNIT.md @@ -5,4 +5,4 @@ show-in: [ug] The UNIT is a text indicating the unit of an item. -_To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table._ +To view more information (constraints, examples, etc.), refer to the [Placeholders](#placeholders) table. diff --git a/docs/_includes/command-format.md b/docs/_includes/command-format.md new file mode 100644 index 00000000000..a71044f705a --- /dev/null +++ b/docs/_includes/command-format.md @@ -0,0 +1,28 @@ + + +
+{% if include.input %} + + +
+**Command Input Box:** + +```text +{{ include.input }} +``` + +--- + +{{ include.notes }} + +
+{% endif %} +{% if include.commandOutputBox %} +![]({{ include.commandOutputBox }}) +{: .output-image data-type="Command Output Box:" } +{% endif %} +{% if include.itemListBox %} +![]({{ include.itemListBox }}) +{: .output-image data-type="Item List Box:" } +{% endif %} +
diff --git a/docs/_sass/foodrem.scss b/docs/_sass/foodrem.scss index 56e7784cdcd..1343090c50c 100644 --- a/docs/_sass/foodrem.scss +++ b/docs/_sass/foodrem.scss @@ -327,6 +327,78 @@ article.post { code { border-color: #ccc; } + + pre { + margin-top: 0.5rem; + } + + .command-container { + display: flex; + column-gap: 1rem; + margin: 1rem auto; + } + + .input-container, + .output-image { + margin: 0 auto; + flex: 1 1 0; + padding: 10px 16px 16px; + + background-color: #f8f8f8; + border: 1px solid #ccc; + + $border-radius: 3px; + border-radius: $border-radius; + } + + .input-container { + p { + margin-bottom: 0; + padding-bottom: 6px; + } + + pre { + margin-top: 0; + border: 1px solid black; + white-space: break-spaces; + + &, + & code { + background-color: white; + } + } + + :last-child { + margin-bottom: 0; + } + + hr { + margin-bottom: 1rem; + } + } + + .output-image { + display: flex; + flex-direction: column; + align-items: center; + + &::before { + content: attr(data-type); + font-weight: bold; + width: 100%; + padding-bottom: 6px; + box-sizing: border-box; + } + + img { + width: 100%; + border-radius: $border-radius; + border: 1px solid black; + + object-fit: cover; + object-position: top center; + } + } } .glossary { diff --git a/docs/_sass/pdf.scss b/docs/_sass/pdf.scss index beb753a8feb..945b7bbfa40 100644 --- a/docs/_sass/pdf.scss +++ b/docs/_sass/pdf.scss @@ -46,11 +46,14 @@ } pre, - hr, + hr { + page-break-before: avoid; + page-break-after: avoid; + } + ul, ol { page-break-before: avoid; - page-break-after: avoid; } p, @@ -110,4 +113,35 @@ } } } + + article.post { + .command-container { + page-break-before: avoid; + + * + * { + // Use old-style spacing due to unsupported + // column-gap for flex items + margin-left: 1rem; + } + } + + .command-container, + .input-container, + .output-image { + page-break-inside: avoid; + } + + .input-container, + .output-image { + box-sizing: border-box; + } + + .input-container { + pre, + code { + // PrinceXML does not support break-spaces + white-space: pre-line; + } + } + } } diff --git a/docs/_ug/AboutUG.md b/docs/_ug/AboutUG.md index e2699dec2cf..1d3d4413145 100644 --- a/docs/_ug/AboutUG.md +++ b/docs/_ug/AboutUG.md @@ -2,6 +2,6 @@ {{ site.data.foodrem.about.summary }} -Simply by typing, efficiently interact with FoodRem without ever needing to touch your mouse! With a focus on user-friendliness, FoodRem is easy to learn! +With a focus on efficiency, you can interact with FoodRem without ever reaching for your mouse or moving away from your keyboard! With a focus on user-friendliness, FoodRem is easy to learn! This User Guide provides an in-depth documentation to help integrate FoodRem into your operational workflows. It covers how to launch FoodRem, core FoodRem features and commands, common terms and definitions used in FoodRem, and some troubleshooting recommendations. Head over to [How to use the User Guide](#how-to-use-the-user-guide) to get started! diff --git a/docs/_ug/AdmonitionBoxes.md b/docs/_ug/AdmonitionBoxes.md index ce74d2f61f8..f4b3d6de943 100644 --- a/docs/_ug/AdmonitionBoxes.md +++ b/docs/_ug/AdmonitionBoxes.md @@ -1,7 +1,7 @@ -### FoodRem Admonition Boxes +### Admonition Boxes -Throughout this guide, you may find coloured boxes containing highlighted pieces of text. Please take note of the content within. +Throughout this guide, you may find coloured boxes containing highlighted pieces of text. These are known as admonition boxes, or simply, [[ admonitions ]]. Please take note of the content within. | Icon | Meaning | |--------------------------------------------------|-------------------------------------------------------------| @@ -15,5 +15,7 @@ Throughout this guide, you may find coloured boxes containing highlighted pieces Besides icons, there are also some special notations that are used in this guide: + * Links in blue point to other sections in this document, or places on the internet. -* Words with a dotted underline represent terms, which when clicked, take you to the corresponding entry in the glossary section below. +* Words with a dotted underlineA summary of the glossary entry will appear here. represent terms, which when clicked, take you to the corresponding entry in the glossary section at the end of this guide. + diff --git a/docs/_ug/Commands.md b/docs/_ug/Commands.md index a05aa0a51dc..71df2856db2 100644 --- a/docs/_ug/Commands.md +++ b/docs/_ug/Commands.md @@ -16,10 +16,6 @@ What you should expect to find: * In most commands, if the same parameter is repeated and only one is required, we take the last value provided. ``` -### General Commands - -{% include_relative _ug/commands/GeneralCommands.md %} - ### Item Commands {% include_relative _ug/commands/ItemCommands.md %} @@ -31,3 +27,7 @@ What you should expect to find: ### Statistics Command {% include_relative _ug/commands/StatisticsCommands.md %} + +### General Commands + +{% include_relative _ug/commands/GeneralCommands.md %} diff --git a/docs/_ug/HowToUseUserGuide.md b/docs/_ug/HowToUseUserGuide.md index 07ca1135a99..3635a173e8e 100644 --- a/docs/_ug/HowToUseUserGuide.md +++ b/docs/_ug/HowToUseUserGuide.md @@ -1,13 +1,17 @@ Thank you for choosing FoodRem! We are delighted to have you as a user and we aim to serve you and your business well! +```info +We **highly recommend** that you read through the User Guide in a **sequential order**. Please note the importance of the [Quick Reference Guide](#quick-reference-guide) section, which covers how to use FoodRem! +``` + ```tip -We **highly recommend** that you read through the User Guide in a **sequential order**. Please note the importance of the [Quickstart Guide](#quickstart-guide) section, which covers how to use FoodRem! +This User Guide is highly navigable; simply click on any item in the [Table of Contents](#toc-heading) and be directed to it! Clicking on the respective headings will bring you back to the Table of Contents, so it's easy to jump across sections! ``` If you have not installed FoodRem head over to the [Installation](#installation) section. -Once FoodRem is installed, you can head over to the section [Quickstart Guide](#quickstart-guide) which covers the basics of using FoodRem. This includes: +Once FoodRem is installed, you can head over to the section [Quick Reference Guide](#quick-reference-guide) which covers the basics of using FoodRem. This includes: * FoodRem's [Layout](#layout) * What [Items and Tags](#key-definitions) are in FoodRem diff --git a/docs/_ug/Installation.md b/docs/_ug/Installation.md index e2e82e736bd..1d11be26810 100644 --- a/docs/_ug/Installation.md +++ b/docs/_ug/Installation.md @@ -1,11 +1,9 @@ -### Installation - If you haven't installed FoodRem, simply follow these steps to set it up: -1. Ensure you have [Java 11](https://docs.oracle.com/en/java/javase/11/install/overview-jdk-installation.html) installed on your computer -1. Download the latest `foodrem.jar` file from our [release page](https://github.com/AY2223S1-CS2103T-W16-2/tp/releases/) +1. Download and install [Java 11](https://docs.oracle.com/en/java/javase/11/install/overview-jdk-installation.html) on your computer +1. Download the latest `foodrem.jar` file from our [releases page](https://github.com/AY2223S1-CS2103T-W16-2/tp/releases/latest) 1. Copy the jar file to an empty folder. This will be your home folder for FoodRem 1. Double-click on the jar file to launch FoodRem @@ -16,5 +14,5 @@ Remember to add `foodrem.jar` into an empty folder as additional data and config Congratulations! You now have FoodRem set up. ```danger -When you launch FoodRem, notice that you will have a folder called "data" that is created in the same folder as `foodrem.jar`. Editing the file might corrupt your data, avoid doing this! +When you launch FoodRem, notice that you will have a folder called "data" that is created in the same folder as `foodrem.jar`. Editing the file might corrupt your data, avoid doing this unless you know what you are doing! ``` diff --git a/docs/_ug/KeyDefinitions.md b/docs/_ug/KeyDefinitions.md index 45534514906..0cd904f5dc5 100644 --- a/docs/_ug/KeyDefinitions.md +++ b/docs/_ug/KeyDefinitions.md @@ -36,7 +36,7 @@ FoodRem Tags are unique by name and case-sensitive. This means you cannot add tw #### Flags -Flags are delimiters that enable FoodRem to distinguish different parameters without ambiguity. +Flags are [[ delimiter:delimiters ]] that enable FoodRem to distinguish different parameters without ambiguity. You would put in the corresponding [Placeholder](#placeholders) immediately after each flag. diff --git a/docs/_ug/TryingFirstCommand.md b/docs/_ug/TryingFirstCommand.md index e92f551b571..d67aa95c21f 100644 --- a/docs/_ug/TryingFirstCommand.md +++ b/docs/_ug/TryingFirstCommand.md @@ -52,7 +52,7 @@ However, note that the following executions are invalid: _Find out more about restrictions in the sections [Flags](#flags), [Placeholders](#placeholders) and [Commands](#commands)._ --- -Let's try out another command - the `inc` command! `inc` lets you increment the quantity of an item. +Let's try out another command -- the `inc` command! `inc` lets you increment the quantity of an item. ```warning The format for different commands are not always identical. For example, executing the `new` command and the `inc` command will have different formats! diff --git a/docs/_ug/commands/ItemCommands.md b/docs/_ug/commands/ItemCommands.md index 173b2b6abc4..50dea30d412 100644 --- a/docs/_ug/commands/ItemCommands.md +++ b/docs/_ug/commands/ItemCommands.md @@ -11,106 +11,105 @@ Example of an [Item](#item): ```info * All fields apart from `ITEM_NAME` are optional. -* The `BOUGHT_DATE` should not be after the `EXPIRY_DATE`. -* The format for `BOUGHT_DATE` and `EXPIRY_DATE` should follow: "dd-mm-yyyy". - * dd: Day of the month. For example, "10" would represent the 10th day of the month. - * mm: Month of the year, ranging from 1 to 12. This represents the months from January to December. For example, "01" would represent January. - * yyyy: The current year. For example, "2019" would represent the year 2019. +* {{ site.data.constraints.boughtNotAfterExpiry }} +* {{ site.data.constraints.dateFormat.summary }} + * {{ site.data.constraints.dateFormat.day }} + * {{ site.data.constraints.dateFormat.month }} + * {{ site.data.constraints.dateFormat.year }} * The value of `BOUGHT_DATE`, `EXPIRY_DATE` will be `Not Set` if it is not provided. -* The default values for `QUANTITY` and `PRICE` is `0`. -* The default values for `UNIT` is blank. +* The default value for `QUANTITY` and `PRICE` is `0`. +* The default value for `UNIT` is blank. * The value of `REMARKS` will be `-` if is it not provided. -* `PRICE` do not require you to include the currency. Only include the value. -* You cannot create an item with a tag immediately. -* If two or more of the same parameters are provided, the last parameter will be taken. +* {{ site.data.constraints.priceIsWithoutSymbol }} ``` -**Example Input:** - -```text -new n/Potato qty/70 u/kg bgt/22-02-2022 exp/22-03-2022 +```note +* You cannot create an item and tag it at the same time. +* {{ site.data.constraints.lastValueOfDuplicates }} ``` -**Expected Output:**
Command Output Box: - -```text -New item added: -Name: Potato -Quantity: 70 kg -Bought Date: 22-02-2022 -Expiry Date: 22-03-2022 -Price: $0 -Remarks: - -Tags: {} -``` +**Example:** + +{% capture notes %} +**Assumption:** + +FoodRem does not already contain an item with the name "Potato". +{% endcapture %} +{% + include command-format.md + notes=notes + input="new n/Potato qty/70 u/kg bgt/22-02-2022 exp/22-03-2022" + commandOutputBox="images/itemCommands/commandOutputBox/new.png" +%} --- -#### List all items: `list` +#### Search for an item: `find` -**Format**: `list` +**Format:** `find KEYWORD [KEYWORDS]...` -> List all items in FoodRem +> Finds all items in FoodRem whose names contain [[ substring:substrings]] of the KEYWORDS + ```info -* This command is useful to view all items again after using the [Find Command](#Find) +* The notation `[KEYWORDS]...` means that we can take in multiple keywords. In this case, at least one `KEYWORD` is required. +* The `KEYWORDS` are case-insensitive. (e.g. "apples" will match "Apples"). +* The result will be items where each of the `KEYWORDS` are present in the `ITEM_NAME` as a [[ substring ]]. (e.g. "c e" will match "Carrot Cake", "cereal", "Cold Escargo" and "eclairs") ``` -**Example Input:** - -```text -list +```tip +* You can use the [List Command](#list-all-items-list) in the next section to display all items again! ``` -**Expected Output:**
Command Output Box: +**Example:** -```text -Listed all items -``` +{% capture notes %} +**Assumption:** -Item List Box: +Initially, FoodRem only contains the following items: -```text -1. Onions 8 kg $1 (Bought Date: 10-10-2022) (Expiry Date: 10-11-2022) -2. Chicken 30 kg $4.20 (Bought Date: 10-10-2022) (Expiry Date: 15-10-2022) -3. Carrots 11 kg $0.60 (Bought Date: 10-10-2022) (Expiry Date: 26-10-2022) -``` +1. Sugarcane Juice Box +1. Brown Sugar +1. Tomato +1. Carrot +{% endcapture %} +{% + include command-format.md + notes=notes + input="find b sug" + itemListBox="images/itemCommands/itemListBox/find.png" +%} --- -#### Search for an item: `find` +#### List all items: `list` -**Format:** `find KEYWORD [KEYWORDS]...` +**Format**: `list` -> Finds all items in FoodRem whose names contain substrings of the KEYWORDS +> List all items in FoodRem ```info -* The notation `[KEYWORDS]...` means that we can take in multiple keywords. In this case, at least one `KEYWORD` is required. -* The `KEYWORDS` are case-insensitive. (e.g. "apples" will match "Apples"). -* The result will be items in which any of the words in `ITEM_NAME` contains a substring of the `KEYWORDS`. (e.g. "c e" will match "Carrot Cake", "cereal", "Cold Escargo" and "eclairs") +* This command is useful to view all items again after using the [Find Command](#search-for-an-item-find). ``` -```tip -* You can use the [List Command](#list-all-items-list) to display all items again! -``` +**Example:** -**Example Input:** +{% capture notes %} +**Assumption:** -```text -find potato carrot cucumbers -``` +FoodRem contains the following items, each with their own attributes: -**Expected Output:**
Command Output Box: - -```text -1 item listed! -``` - -Item List Box: - -```text -1. Potato 6 kg $2.40 (Bought Date: 10-10-2022) (Expiry Date: 10-11-2022) -``` +1. Sugarcane Juice Box +1. Brown Sugar +1. Tomato +1. Carrot +{% endcapture %} +{% + include command-format.md + notes=notes + input="list" + itemListBox="images/itemCommands/itemListBox/list.png" +%} --- @@ -132,28 +131,27 @@ Item List Box: ```warning * You should only provide one sorting criteria. -* The sort can only be done in an ascending order. +* The sort can only be done in ascending order. ``` -**Example Input:** +**Example:** -```text -sort n/ -``` +{% capture notes %} +**Assumption:** -**Expected Output:**
Command Output Box: +FoodRem contains the following items: -```text -3 items sorted! -``` - -Item List Box: - -```text -1. Onions 8 kg $1 (Bought Date: 10-10-2022) (Expiry Date: 10-11-2022) -2. Chicken 30 kg $4.20 (Bought Date: 10-10-2022) (Expiry Date: 15-10-2022) -3. Carrots 11 kg $0.60 (Bought Date: 10-10-2022) (Expiry Date: 26-10-2022) -``` +1. Sugarcane Juice Box +1. Brown Sugar +1. Tomato +1. Carrot +{% endcapture %} +{% + include command-format.md + notes=notes + input="sort n/" + itemListBox="images/itemCommands/itemListBox/sort.png" +%} --- @@ -167,23 +165,21 @@ Item List Box: * Displayed information includes the name, quantity, unit, bought date, expiry date, price, remarks and tags of items. ``` -**Example Input:** +**Example:** -```text -view 1 -``` +{% capture notes %} +**Assumption:** -**Expected Output:**
Command Output Box: +The currently displayed [[ item-list-box:Item List Box ]] in FoodRem shows the item named "Onion" at INDEX value 1. -```text -Name: Onions -Quantity: 8 kg -Bought Date: 10-10-2022 -Expiry Date: 10-11-2022 -Price: $6 -Remarks: - -Tags: {vegetables} -``` +The command will produce a detailed view of this item. +{% endcapture %} +{% + include command-format.md + notes=notes + input="view 1" + commandOutputBox="images/itemCommands/commandOutputBox/view.png" +%} --- @@ -195,27 +191,23 @@ Tags: {vegetables} ```info * If a quantity is not provided, the item quantity will be incremented by 1. -* If two or more `QUANTITY` are provided, the last `QUANTITY` will be taken. +* If two or more `QUANTITY` values are provided, only the last `QUANTITY` will be taken. ``` -**Example Input:** +**Example:** -```text -inc 1 qty/3 -``` +{% capture notes %} +**Assumptions:** -**Expected Output:**
Command Output Box: - -```text -Incremented Item: -Name: Onions -Quantity: 11 kg -Bought Date: 10-10-2022 -Expiry Date: 10-11-2022 -Price: $6 -Remarks: - -Tags: {vegetables} -``` +* The currently displayed [[ item-list-box:Item List Box ]] in FoodRem shows the item named "Onion" at INDEX value 1. +* Initially, the "Onion" item has a "Quantity" of 8. +{% endcapture %} +{% + include command-format.md + notes=notes + input="inc 1 qty/3" + commandOutputBox="images/itemCommands/commandOutputBox/inc.png" +%} --- @@ -226,27 +218,23 @@ Tags: {vegetables} ```info * If a quantity is not provided, the item quantity will be decremented by 1. -* If two or more `QUANTITY` are provided, the last `QUANTITY` will be taken. +* If two or more `QUANTITY` values are provided, only the last `QUANTITY` will be taken. ``` -**Example Input:** +**Example:** -```text -dec 1 qty/4 -``` +{% capture notes %} +**Assumptions:** -**Expected Output:**
Command Output Box: - -```text -Decremented Item: -Name: Onions -Quantity: 7 kg -Bought Date: 10-10-2022 -Expiry Date: 10-11-2022 -Price: $6 -Remarks: - -Tags: {vegetables} -``` +* The currently displayed [[ item-list-box:Item List Box ]] in FoodRem shows the item named "Onion" at INDEX value 1. +* Initially, the "Onion" item has a "Quantity" of 11. +{% endcapture %} +{% + include command-format.md + notes=notes + input="dec 1 qty/4" + commandOutputBox="images/itemCommands/commandOutputBox/dec.png" +%} --- @@ -258,33 +246,38 @@ Tags: {vegetables} ```info * All fields are optional. However, you need to include at least one parameter. -* The `BOUGHT_DATE` should not be after the `EXPIRY_DATE`. -* The format for `BOUGHT_DATE` and `EXPIRY_DATE` should follow: "dd-mm-yyyy". - * dd: Day of the month. For example, "10" would represent the 10th day of the month. - * mm: Month of the year, ranging from 1 to 12. This represents the months from January to December. For example, "01" would represent January. - * yyyy: The current year. For example, "2019" would represent the year 2019. -* `PRICE` do not require you to include the currency. Only include the value. -* If two or more of the same parameters are provided, the last parameter will be taken. -``` - -**Example Input:** - -```text -edit 1 qty/100 n/Potatoes +* {{ site.data.constraints.boughtNotAfterExpiry }} +* {{ site.data.constraints.dateFormat.summary }} + * {{ site.data.constraints.dateFormat.day }} + * {{ site.data.constraints.dateFormat.month }} + * {{ site.data.constraints.dateFormat.year }} +* {{ site.data.constraints.priceIsWithoutSymbol }} ``` -**Expected Output:**
Command Output Box: - -```text -Edited Item: -Name: Onions -Quantity: 100 kg -Bought Date: 10-10-2022 -Expiry Date: 10-11-2022 -Price: $6 -Remarks: - -Tags: {vegetables} -``` +```note +* {{ site.data.constraints.lastValueOfDuplicates }} +``` + +**Example:** + +{% capture notes %} +**Assumptions:** + +* The currently displayed [[ item-list-box:Item List Box ]] in FoodRem shows the item named "Onion" at INDEX value 1. +* Initially, the "Onion" item has the following values: + * Unit: kg + * Bought Date: 10-10-2022 + * Expiry Date: 10-11-2022 + * Price: 6.00 + * Remarks: - + * Tags: Vegetables +{% endcapture %} +{% + include command-format.md + notes=notes + input="edit 1 qty/100 n/Spring Onion" + commandOutputBox="images/itemCommands/commandOutputBox/edit.png" +%} --- @@ -296,27 +289,22 @@ Tags: {vegetables} ```info * If no remark is provided, the current remark will be cleared. -* If two or more `REMARKS` are provided, the last `REMARKS` will be taken. +* If two or more `REMARKS` values are provided, only the last `REMARKS` will be taken. ``` -**Example Input:** +**Example:** -```text -rmk 1 r/For Party -``` +{% capture notes %} +**Assumption:** -**Expected Output:**
Command Output Box: - -```text -Remark Added: -Name: Onions -Quantity: 100 kg -Bought Date: 10-10-2022 -Expiry Date: 10-11-2022 -Price: $6 -Remarks: For Party -Tags: {vegetables} -``` +The currently displayed [[ item-list-box:Item List Box ]] in FoodRem shows the item named "Onion" at INDEX value 1. +{% endcapture %} +{% + include command-format.md + notes=notes + input="rmk 1 r/For party!" + commandOutputBox="images/itemCommands/commandOutputBox/rmk.png" +%} --- @@ -326,23 +314,18 @@ Tags: {vegetables} > Deletes the item at the specified index -**Example Input:** +**Example:** -```text -del 1 -``` +{% capture notes %} +**Assumption:** -**Expected Output:**
Command Output Box: - -```text -Deleted Item: -Name: Onions -Quantity: 100 kg -Bought Date: 10-10-2022 -Expiry Date: 10-11-2022 -Price: $6 -Remarks: - -Tags: {vegetables} -``` +The currently displayed [[ item-list-box:Item List Box ]] in FoodRem shows the item named "Onion" at INDEX value 1. +{% endcapture %} +{% + include command-format.md + notes=notes + input="del 1" + commandOutputBox="images/itemCommands/commandOutputBox/del.png" +%} --- diff --git a/docs/_ug/commands/StatisticsCommands.md b/docs/_ug/commands/StatisticsCommands.md index e6f885a098b..7621df138b1 100644 --- a/docs/_ug/commands/StatisticsCommands.md +++ b/docs/_ug/commands/StatisticsCommands.md @@ -14,25 +14,25 @@ These statistics include: The cost of an item is the price of the item multiplied by the quantity of the item in your inventory. ``` -**Example Input:** - -```text -stats -``` - -**Example Output:**
Command Output Box: - -```text -Statistics -Total cost of wasted items: -$120 - -Top 3 common tags: -Drinks Fridge Fruits - -Your top 3 items with highest value are as follows: - -1. Onions 8 kg $1 (Bought Date: 10-10-2022) (Expiry Date: 10-11-2022) -2. Chicken 30 kg $4.20 (Bought Date: 10-10-2022) (Expiry Date: 15-10-2022) -3. Carrots 11 kg $0.60 (Bought Date: 10-10-2022) (Expiry Date: 26-10-2022) +**Example:** + +{% capture notes %} +**Assumptions:** + +* Initially, FoodRem has a few items, one of which is: + * Tomato +* Initially, FoodRem has a few tags, three of which are: + * Fruits + * Meat + * Vegetables +{% endcapture %} +{% + include command-format.md + notes=notes + input="stats" + commandOutputBox="images/statisticsCommands/commandOutputBox/stats.png" +%} + +```info +The above picture only shows a partial view of the Command Output Box. On FoodRem, you can simply scroll down to see the full output! This is unfortunately the one instance where you need to use a mouse to interact with FoodRem. ``` diff --git a/docs/_ug/commands/TagCommands.md b/docs/_ug/commands/TagCommands.md index 3f2b32afcf3..84507f47ca5 100644 --- a/docs/_ug/commands/TagCommands.md +++ b/docs/_ug/commands/TagCommands.md @@ -9,17 +9,19 @@ Example of a [Tag](#tag): > Creates a new tag with the provided tag name -**Example Input:** +**Example:** -```text -newtag n/Vegetables -``` - -**Example Output:**
Command Output Box: +{% capture notes %} +**Assumption:** -```text -New tag added: Vegetables -``` +FoodRem does not already contain a tag called "Vegetables". +{% endcapture %} +{% + include command-format.md + notes=notes + input="newtag n/Vegetables" + commandOutputBox="images/tagCommands/commandOutputBox/newtag.png" +%} --- @@ -29,19 +31,23 @@ New tag added: Vegetables > List all tags in FoodRem -**Example Input:** +**Example:** -```text -listtag -``` +{% capture notes %} +**Assumption:** -**Example Output:**
Command Output Box: +Initially, FoodRem contains only the following three tags: -```text -Listed all tags: -Vegetables -Carrots -``` +* Fruits +* Meat +* Vegetables +{% endcapture %} +{% + include command-format.md + notes=notes + input="listtag" + commandOutputBox="images/tagCommands/commandOutputBox/listtag.png" +%} --- @@ -51,24 +57,21 @@ Carrots > Tags the item at the specified index -**Example Input:** +**Example:** -```text -tag 1 n/Vegetables -``` +{% capture notes %} +**Assumptions:** -**Example Output:**
Command Output Box: - -```text -Item tagged successfully. -Name: Onions -Quantity: 8 kg -Bought Date: 10-10-2022 -Expiry Date: 10-11-2022 -Price: $6 -Remarks: No Remarks -Tags: {Vegetables} -``` +* The currently displayed [[ item-list-box:Item List Box ]] in FoodRem shows the item named "Carrot" at INDEX value 1. +* There exists a tag called "Vegetables". +* The "Carrot" item has not already been tagged under "Vegetables". +{% endcapture %} +{% + include command-format.md + notes=notes + input="tag 1 n/Vegetables" + commandOutputBox="images/tagCommands/commandOutputBox/tag.png" +%} --- @@ -78,24 +81,20 @@ Tags: {Vegetables} > Untags the item at the specified index -**Example Input:** +**Example:** -```text -untag 1 n/Vegetables -``` +{% capture notes %} +**Assumptions:** -**Example Output:**
Command Output Box: - -```text -Item untagged successfully -Name: Onions -Quantity: 8 kg -Bought Date: 10-10-2022 -Expiry Date: 10-11-2022 -Price: $6 -Remarks: No Remarks -Tags: {} -``` +* The currently displayed [[ item-list-box:Item List Box ]] in FoodRem shows the item named "Carrot" at INDEX value 1. +* The "Carrot" item is currently tagged under "Vegetables". +{% endcapture %} +{% + include command-format.md + notes=notes + input="untag 1 n/Vegetables" + commandOutputBox="images/tagCommands/commandOutputBox/untag.png" +%} --- @@ -109,63 +108,79 @@ Tags: {} The first `TAG_NAME` in the command refers to the current tag you wish to rename while the second `TAG_NAME` refers to the new name you wish to rename the current tag to. ``` -**Example Input:** - -```text -renametag n/Vegetables n/Veggies +```note +If you encounter an error message saying "This tag name already exists in FoodRem," it means that the new name you wish to rename the current tag to is already taken by another tag in FoodRem. ``` -**Example Output:**
Command Output Box: +**Example:** -```text -Original tag: Vegetables -Renamed tag: Veggies -``` +{% capture notes %} +**Assumptions:** + +* Initially, there exists a tag called "Vegetables". +* FoodRem does not already contain a tag called "Veggies". +{% endcapture %} +{% + include command-format.md + notes=notes + input="renametag n/Vegetables n/Veggies" + commandOutputBox="images/tagCommands/commandOutputBox/renametag.png" +%} --- -#### Delete a tag: `deletetag` +#### Filter by a tag: `filtertag` -**Format**: `deletetag n/TAG_NAME` +**Format**: `filtertag n/TAG_NAME` -> Deletes a tag that exists in FoodRem +> Filters and shows items that contain a specific tag -**Example Input:** +**Example:** -```text -deletetag n/Veggies -``` +{% capture notes %} +**Assumption:** -**Example Output:**
Command Output Box: +Initially, FoodRem only contains the following items: -```text -Tag deleted: Veggies -``` +1. Banana (tagged as "Fruits") +1. Carrot (tagged as "Vegetables") +1. Papaya (tagged as "Fruits") +1. Tomato (tagged as "Vegetables") +{% endcapture %} +{% + include command-format.md + notes=notes + input="filtertag n/Fruits" + itemListBox="images/tagCommands/itemListBox/filtertag.png" +%} --- -#### Filter by a tag: `filtertag` - -**Format**: `filtertag n/TAG_NAME` +#### Delete a tag: `deletetag` -> Filters and shows items that contain a specific tag +**Format**: `deletetag n/TAG_NAME` -**Example Input:** +> Deletes a tag that exists in FoodRem -```text -filtertag n/fruits +```warning +* There is **no** additional confirmation for deleting a tag that is in use +* Deleting a tag that is already in use will also untag the items under that tag ``` -**Example Output:**
Command Output Box: - -```text -Filtered by tag: fruits -2 items left after filtering! +```tip +You might find the abovementioned [Filtertag Command](#filter-by-a-tag-filtertag) useful to check that a tag is not in use before deleting it. ``` -Item List Box: +**Example:** -```text -1. Apples 8 kg (Bought Date: 10-10-2022) (Expiry Date: 10-11-2022) -2. Onions 8 kg $1 (Bought Date: 10-10-2022) (Expiry Date: 10-11-2022) -``` +{% capture notes %} +**Assumption:** + +Initially, there already exists a tag called "Veggies". +{% endcapture %} +{% + include command-format.md + notes=notes + input="deletetag n/Veggies" + commandOutputBox="images/tagCommands/commandOutputBox/deletetag.png" +%} diff --git a/docs/images/itemCommands/commandOutputBox/dec.png b/docs/images/itemCommands/commandOutputBox/dec.png new file mode 100644 index 00000000000..643cc8f5ad4 Binary files /dev/null and b/docs/images/itemCommands/commandOutputBox/dec.png differ diff --git a/docs/images/itemCommands/commandOutputBox/del.png b/docs/images/itemCommands/commandOutputBox/del.png new file mode 100644 index 00000000000..c199801ba7b Binary files /dev/null and b/docs/images/itemCommands/commandOutputBox/del.png differ diff --git a/docs/images/itemCommands/commandOutputBox/edit.png b/docs/images/itemCommands/commandOutputBox/edit.png new file mode 100644 index 00000000000..e9ab7ff462d Binary files /dev/null and b/docs/images/itemCommands/commandOutputBox/edit.png differ diff --git a/docs/images/itemCommands/commandOutputBox/inc.png b/docs/images/itemCommands/commandOutputBox/inc.png new file mode 100644 index 00000000000..f9bf9ce1d23 Binary files /dev/null and b/docs/images/itemCommands/commandOutputBox/inc.png differ diff --git a/docs/images/itemCommands/commandOutputBox/new.png b/docs/images/itemCommands/commandOutputBox/new.png new file mode 100644 index 00000000000..13ba43b3e64 Binary files /dev/null and b/docs/images/itemCommands/commandOutputBox/new.png differ diff --git a/docs/images/itemCommands/commandOutputBox/rmk.png b/docs/images/itemCommands/commandOutputBox/rmk.png new file mode 100644 index 00000000000..5873dcce7d4 Binary files /dev/null and b/docs/images/itemCommands/commandOutputBox/rmk.png differ diff --git a/docs/images/itemCommands/commandOutputBox/view.png b/docs/images/itemCommands/commandOutputBox/view.png new file mode 100644 index 00000000000..401b17d188c Binary files /dev/null and b/docs/images/itemCommands/commandOutputBox/view.png differ diff --git a/docs/images/itemCommands/itemListBox/find.png b/docs/images/itemCommands/itemListBox/find.png new file mode 100644 index 00000000000..05e1fc72787 Binary files /dev/null and b/docs/images/itemCommands/itemListBox/find.png differ diff --git a/docs/images/itemCommands/itemListBox/list.png b/docs/images/itemCommands/itemListBox/list.png new file mode 100644 index 00000000000..3ba486725f4 Binary files /dev/null and b/docs/images/itemCommands/itemListBox/list.png differ diff --git a/docs/images/itemCommands/itemListBox/sort.png b/docs/images/itemCommands/itemListBox/sort.png new file mode 100644 index 00000000000..2c9cc071d5f Binary files /dev/null and b/docs/images/itemCommands/itemListBox/sort.png differ diff --git a/docs/images/statisticsCommands/commandOutputBox/stats.png b/docs/images/statisticsCommands/commandOutputBox/stats.png new file mode 100644 index 00000000000..4a4f8728f4c Binary files /dev/null and b/docs/images/statisticsCommands/commandOutputBox/stats.png differ diff --git a/docs/images/tagCommands/commandOutputBox/deletetag.png b/docs/images/tagCommands/commandOutputBox/deletetag.png new file mode 100644 index 00000000000..0cfe9c181f3 Binary files /dev/null and b/docs/images/tagCommands/commandOutputBox/deletetag.png differ diff --git a/docs/images/tagCommands/commandOutputBox/listtag.png b/docs/images/tagCommands/commandOutputBox/listtag.png new file mode 100644 index 00000000000..829f4ab2b46 Binary files /dev/null and b/docs/images/tagCommands/commandOutputBox/listtag.png differ diff --git a/docs/images/tagCommands/commandOutputBox/newtag.png b/docs/images/tagCommands/commandOutputBox/newtag.png new file mode 100644 index 00000000000..82ec4e3342c Binary files /dev/null and b/docs/images/tagCommands/commandOutputBox/newtag.png differ diff --git a/docs/images/tagCommands/commandOutputBox/renametag.png b/docs/images/tagCommands/commandOutputBox/renametag.png new file mode 100644 index 00000000000..03993045009 Binary files /dev/null and b/docs/images/tagCommands/commandOutputBox/renametag.png differ diff --git a/docs/images/tagCommands/commandOutputBox/tag.png b/docs/images/tagCommands/commandOutputBox/tag.png new file mode 100644 index 00000000000..744b59e9cbb Binary files /dev/null and b/docs/images/tagCommands/commandOutputBox/tag.png differ diff --git a/docs/images/tagCommands/commandOutputBox/untag.png b/docs/images/tagCommands/commandOutputBox/untag.png new file mode 100644 index 00000000000..9f776b44cb1 Binary files /dev/null and b/docs/images/tagCommands/commandOutputBox/untag.png differ diff --git a/docs/images/tagCommands/itemListBox/filtertag.png b/docs/images/tagCommands/itemListBox/filtertag.png new file mode 100644 index 00000000000..bc44f88ad99 Binary files /dev/null and b/docs/images/tagCommands/itemListBox/filtertag.png differ diff --git a/docs/index.md b/docs/index.md index 2a65d0b62ca..e1e05426bc9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,14 +3,15 @@ layout: page title: FoodRem --- -[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions) -[![codecov](https://codecov.io/gh/AY2223S1-CS2103T-W16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2223S1-CS2103T-W16-2/tp) +[![CI Status](https://github.com/AY2223S1-CS2103T-W16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2223S1-CS2103T-W16-2/tp/actions) + [![CI Status](https://github.com/AY2223S1-CS2103T-W16-2/tp/workflows/Build/badge.svg)](https://github.com/AY2223S1-CS2103T-W16-2/tp/actions) + [![codecov](https://codecov.io/gh/AY2223S1-CS2103T-W16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2223S1-CS2103T-W16-2/tp) ![Ui](images/Ui.png) **FoodRem is a desktop application for F&B businesses to manage their inventory.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface). -* If you are interested in using FoodRem, head over to the [Quickstart Guide](UserGuide.html#quickstart-guide). +* If you are interested in using FoodRem, head over to the [Installation Guide](UserGuide.html#installation). * If you are interested about developing FoodRem, the [**Developer Guide**](DeveloperGuide.html) is a good place to start. ###### Acknowledgements diff --git a/docs/team/bryanljx.md b/docs/team/bryanljx.md index 6d9ee7d6d83..deafa438e9b 100644 --- a/docs/team/bryanljx.md +++ b/docs/team/bryanljx.md @@ -14,22 +14,22 @@ Given below are my contributions to the project. **Refactoring**: -* **Refactored Feature**: Refactored `tag` model ([[PR#140]]) +* **Refactored Feature**: Refactored `tag` model [[PR#140]] * What it does: encapsulates the idea of `tag` so that users can create and add `tag` to `item`. * Justification: This feature allows `item` to be classified into different categories. The refactoring allows for creating of any tags as well as updating of the restrictions we would like to place on names for `tag`. * Highlights: This refactoring allows users to create any `tag` they want. Through the use of regex, it also updates the restrictions we would like to place on names for `tag`, such as character limit or disallowed characters. -* **Refactored Feature**: Added storage for `tag` model ([[PR#223]]) +* **Refactored Feature**: Added storage for `tag` model [[PR#223]] * What it does: Adds storage functionality for the refactored `tag` model. * Justification: This feature is needed as we needed to store a separate list for `tag` besides the `item` list. **New feature**: -* **New Feature**: Added `renametag` command ([[PR#179]]) +* **New Feature**: Added `renametag` command [[PR#179]] * What it does: Allows for renaming of existing `tag`. * Justification: Users might make errors in creating `tag` so we want to allow them to rename `tag`. -* **New Feature**: Added `deletetag` command ([[PR#199]]) +* **New Feature**: Added `deletetag` command [[PR#199]] * What it does: Allows for deletion of existing `tag`. * Justification: To allow users to delete `tag` no longer used. diff --git a/docs/team/eugenetanwl3881.md b/docs/team/eugenetanwl3881.md index babe65ad10b..d12d4bec71a 100644 --- a/docs/team/eugenetanwl3881.md +++ b/docs/team/eugenetanwl3881.md @@ -42,18 +42,18 @@ Given below are my contributions to the project. * **Documentation**: * User Guide: - * Added documentation for the commands `list`, `find`, `exit` ([[PR#77]]) - * Add FAQ into UG ([[PR#178]]) - * Add Command Summary Table ([[PR#152]]) + * Added documentation for the commands `list`, `find`, `exit` [[PR#77]] + * Add FAQ into UG [[PR#178]] + * Add Command Summary Table [[PR#152]] * Updating sections and fixing bugs for UG ([[PR#261]], [[PR#292]], [[PR#306]], [[PR#420]] ) * Developer Guide: * Added User Stories and Use Cases in DG ([[PR#79]], [[PR#142]]) - * Added NFRs in DG ([[PR#57]]) + * Added NFRs in DG [[PR#57]] * Added implementation details of the `newtag` and `tag` feature. ([[PR#230]], [[PR#464]]) - * DG User Stories Table ([[PR#419]]) - * Added Instructions for Manual testing ([[PR#505]]) - * Added Effort Section ([[PR#503]]) + * DG User Stories Table [[PR#419]] + * Added Instructions for Manual testing [[PR#505]] + * Added Effort Section [[PR#503]] * Updating and fixing bugs in DG ([[PR#36]],[[PR#278]], [[PR#281]], [[PR#287]], [[PR#319]], [[PR#334]], [[PR#419]], [[PR#521]]) * **Community**: diff --git a/docs/team/ferusel.md b/docs/team/ferusel.md index 41ba5735e43..7720575e5f1 100644 --- a/docs/team/ferusel.md +++ b/docs/team/ferusel.md @@ -53,31 +53,31 @@ Given below are my contributions to the project. * \_{you can add/remove categories in the list above} * **PRs**: - * Add PPP skeleton ([[PR#64]]) - * Add profile picture ([[PR#67]]) - * Add User Guide section ([[PR#82]]) - * Rename ferusel.jpg to ferusel.png ([[PR#85]]) - * Add Glossary, UC3, UC4 to Developer Guide ([[PR#87]]) - * Add Ting Kai information to AboutUs ([[PR#98]]) - * Add Item model ([[PR#143]]) - * Add Item Unit Tests ([[PR#155]]) - * Add Sort Command ([[PR#158]]) - * Add Increment and Decrement Command ([[PR#161]]) - * Add Acknowledgements section to User Guide ([[PR#162]]) - * Add Glossary section to User Guide ([[PR#163]]) - * Add Glossary section to Developer Guide ([[PR#164]]) - * Add View command ([[PR#209]]) - * Add Sorting user stories to DG ([[PR#210]]) - * Add Sort Command UML ([[PR#232]]) - * Update UG with v1.3 Features ([[PR#258]]) - * Consolidate UG v1.3 ([[PR#264]]) - * Update Developer Guide with v1.3 ([[PR#295]]) - * Update README with v1.3 items ([[PR#311]]) - * Update UG after Refactoring ([[PR#318]]) - * Fix find command description in Command Summary ([[PR#324]]) - * Improve UG for v1.3 ([[PR#335]]) - * Fix UG after Peer Review ([[PR#351]]) - * Add Statistics Command ([[PR#360]]) - * Update find command ([[PR#367]]) - * Website Hot Fix ([[PR#369]]) - * Fix stats command ([[PR#372]]) + * Add PPP skeleton [[PR#64]] + * Add profile picture [[PR#67]] + * Add User Guide section [[PR#82]] + * Rename ferusel.jpg to ferusel.png [[PR#85]] + * Add Glossary, UC3, UC4 to Developer Guide [[PR#87]] + * Add Ting Kai information to AboutUs [[PR#98]] + * Add Item model [[PR#143]] + * Add Item Unit Tests [[PR#155]] + * Add Sort Command [[PR#158]] + * Add Increment and Decrement Command [[PR#161]] + * Add Acknowledgements section to User Guide [[PR#162]] + * Add Glossary section to User Guide [[PR#163]] + * Add Glossary section to Developer Guide [[PR#164]] + * Add View command [[PR#209]] + * Add Sorting user stories to DG [[PR#210]] + * Add Sort Command UML [[PR#232]] + * Update UG with v1.3 Features [[PR#258]] + * Consolidate UG v1.3 [[PR#264]] + * Update Developer Guide with v1.3 [[PR#295]] + * Update README with v1.3 items [[PR#311]] + * Update UG after Refactoring [[PR#318]] + * Fix find command description in Command Summary [[PR#324]] + * Improve UG for v1.3 [[PR#335]] + * Fix UG after Peer Review [[PR#351]] + * Add Statistics Command [[PR#360]] + * Update find command [[PR#367]] + * Website Hot Fix [[PR#369]] + * Fix stats command [[PR#372]] diff --git a/docs/team/richdom2185.md b/docs/team/richdom2185.md index 71b40f2312e..0c17fcb22b4 100644 --- a/docs/team/richdom2185.md +++ b/docs/team/richdom2185.md @@ -63,6 +63,8 @@ Given below are my contributions to the project. * Support autoglossary syntax [[PR#424]] * Add bidirectional header linking [[PR#426]] * Optimise styles for PDF layout [[PR#428]] + * Add PPP checking workflow [[PR#439]] + * Always check against PR creator for PPP [[PR#457]]