By: AY1920S2-CS2103-W15-4 Since: Feb 2020 Licence: MIT

1. Introduction

Pet Store Helper (PSH) is for owners of pet stores who prefer to use a desktop app for managing their store. More importantly, PSH is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, PSH can help you get your work done faster than traditional GUI apps.

It is based on 2 main systems, one that manages pets, and another one that organises showering schedules.

Interested? Jump to the Section 2, “Quick Start” to get started. Enjoy!

2. Quick Start

  1. Ensure you have Java 11 or above installed in your Computer.

  2. Download the latest petStoreHelper.jar here.

  3. Copy the file to the folder you want to use as the home folder for your Pet Shop Helper.

  4. Double-click the file to start the app. The GUI should appear in a few seconds.

    Ui
  5. Type the command in the command box and press Enter to execute it.
    e.g. typing help and pressing Enter will open the help window.

  6. Some example commands you can try:

    • display p : Displays the list of all pets.

    • addpet n/Teddy g/male b/01/01/2019 s/dog f/brand A:15 f/brand B:20 t/small t/lazy: Adds a new pet with name Teddy and other details as given.

    • display s : Displays the current schedule as a list of slots.

    • addslot n/Teddy t/16/11/2020 1300 d/90: Adds a new showering slot for Teddy with details as given.

    • exit : Exits the program.

  7. Refer to Section 4, “Commands” for details of each command.

3. Features

3.1. Pet Tracker System

Details about each pet kept track of are its name, gender, species, date of birth and dietary requirements. In addition, tags for each pet may also be added.

3.1.1. Pet Food Inventory

This shows the a list of all pet food (inventory) and the needed amount per week. Double-click on each food item to view the breakdown for each pet individually.

3.2. Schedule System

There are 2 ways of displaying the slots tracked by the schedule system: either sequentially as a list of slots, or in the form of a calendar view.

3.2.1. Slots list view

Slots displayed here are arranged in chronological order, with the earliest slot displayed first. In the case where multiple slots start at the same time, the slot with the shortest duration is shown first.

3.2.2. Calendar view

Slots that fall on the same day are displayed on the same row. They are then positioned horizontally according to the time they start. The width taken up by each slot in this view is proportional to its duration.

If there are conflicted slots, then the time period in which these conflicted slot lie in is simply rendered as single "conflicted" slot.

3.3. Statistics

The statistics of the pet store shown are:

  • The proportion of species of pets,

  • The planned schedule for the next 3 days, and

  • A breakdown of how many of each type of pet food is needed in a week.

4. Commands

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe.

  • Items in square brackets are optional e.g n/NAME [t/TAG] can be used as n/Some Pet t/lazy or as n/Some Pet.

  • Items with ​ after them can be used multiple times including zero times e.g. [t/TAG]…​ can be used as   (i.e. 0 times), t/cute, t/small t/white etc.

  • Parameters can be in any order e.g. if the command specifies n/NAME g/GENDER, G/GENDER n/NAME is also acceptable.

4.1. Common / general commands

4.1.1. Viewing help: help

Shows the help window.

Format: help

4.1.2. Exiting the program: exit

Exits the program.

Format: exit

4.1.3. Changing the display: display

Changes the display board to show the specified system.

Format: display SYSTEM

  • SYSTEM must be p (pets), s (slots list view), c (calendar view) or i (inventory). No other values are allowed.

Examples:

  • display p
    Displays all pets.

  • display s
    Displays all slots as a list.

  • display c
    Displays all slots in calendar view. Conflicted slots are shown in red color. Non-conflicted slots are in pink.

  • display i
    Displays a list of all pet food (inventory) and the needed amount per week.

4.1.4. Saving the data: backup

All data is saved to the hard disk automatically after any command that changes the data.
There is no need to save manually.
However, it is possible to save a separate backup file through the backup command.
The file name is a timestamp in the format "yyyyMMdd_HH_mm_ss".

4.1.5. Retrieving data: load

Loads the specified file from the hard disk.
Format: load FILE_NAME

  • Loads the file with the specified FILE_NAME.

  • The file name must be a valid file name under the OS.

Examples:

  • load 20200402_21_54_52
    Loads the file 20200402_21_54_52.json from the hard disk.

  • load pettracker
    Loads the file pettracker.json from the hard disk.

4.1.6. Statistics: stats

Provides statistics about the pet tracker, schedule system, and inventory.

  • There is a pie chart representing the ratio of different pet species.

  • A timetable that shows an overall schedule for recent 3 days.

  • A bar chart that shows the weekly consumption of different pet food.

4.2.1. Adding a pet: addpet

Adds a pet to the pet tracker system.

Format: addpet n/NAME g/GENDER b/DATE OF BIRTH s/SPECIES f/FOOD : AMOUNT [t/TAG]…​

  • The date of birth must be in the format of d/M/yyyy, e.g. 01/01/2019, 1/7/2018

  • The gender must be either female or male.

  • Food is specified as a type of food complied with quantity of weekly consumption in an arbitrary unit. The food name and amount should be separated by a colon ":". There can be more than 1 types of food for one pet.

  • A pet can have any number of tags (including 0). Each tag must be restricted to one word .

  • The application ignores letter case of user input. The name, species, gender of pets, and name of food will be displayed in the format of "Xxx Xxx …​".

Example:

  • addpet n/Garfield g/male b/01/01/2019 s/cat f/Brand A: 30 t/lazy t/lasagna

4.2.2. Finding pets by names: findpets

Finds pets whose name contains any of the given keywords. The application will automatically change to the pet display system.

Format: findpets PETNAME [MORE PETNAMES]…​

  • At least one argument must be supplied.

  • Pets matching at least 1 keyword will be returned (i.e. OR search).

Example:

  • findpets garfield odie
    Returns a list of pets, whose names either contain garfield or odie or both.

4.2.3. Editing a pet: editpet

Edits any field of an existing pet in the system.

Format: editpet INDEX [n/NAME] [g/GENDER] [t/TAG]…​

  • If the app is displaying pets, the index refers to the index number shown in the displayed pets list, and must be a positive integer, e.g. 1, 2, 3, …​ Otherwise, the index refers to the number in the whole pet list.

  • The existing field(s) of the pet will be removed, i.e adding of list of food and tags is not cumulative.

  • You can remove all tags of a pet by typing t/ without specifying any tags after it.

  • Similarly to addpet command, pet name, species, gender, and name of food will be displayed in the format of "Xxx Xxx…​".

Example:

  • display p
    editpet 2 n/Coco b/02/01/2020 t/cuddly t/grey
    Overwrites information of the 2nd pet in the system with name "Coco", date of birth "2 Jan 2020, and 2 tags of “cuddly”, “grey”.

  • findpets garfield
    editpet 2 n/Coco
    Overwrites the name of the 2nd pet in the results of findpets garfield to "Coco"

  • display s
    editpet 1 n/garfield Overwrites name of the 1st pet in the whole pet list to be "Garfield".

4.2.4. Deleting a pet: deletepet

Deletes the specified pet from the system.

Format: deletepet INDEX

  • If the app is displaying pets, the index refers to the index number shown in the displayed pets list, and must be a positive integer, e.g. 1, 2, 3, …​ Otherwise, the index refers to the number in the whole pet list.

Examples:

  • display p
    deletepet 2
    Deletes the 2nd pet in the system.

  • findpets n/garfield
    deletepet 2
    Deletes the 2nd pet in the results of the findpets garfield command.

  • display i
    deletepet 2 Deletes 2nd pet in the whole pet list.

4.3.1. Adding a slot: addslot

Adds a new occupied slot to the schedule.

Format: addslot n/PETNAME t/DATETIME d/DURATION

  • The pet must already exist in the pet tracker system.

  • The datetime must be in d/M/yyyy HHmm format.

    • The time must be in 24-hour format.

  • The duration is to be specified in minutes as a non-zero, positive integer.

  • The slot must start and end on the same day.

Examples:

  • addslot n/Coco t/16/11/2020 1300 d/90

  • addslot n/Brian Griffin t/17/11/2020 1500 d/45

4.3.2. Finding slots: findslots

Finds slots occupied by a pet matching the specified name, or slots occupied on the given date, or both. Slots that matched the query will be returned and displayed sequentially as a list.

Format: findslots [n/PETNAME] [t/DATE]

  • This command can take one pet name, one date, or one pet name and one date.

  • Slots with pets matching at least one keyword will be returned (i.e. OR search). e.g. Hans Bo will return Hans Gruber, Bo Yang.

  • The date must be in d/M/yyyy format.

Example:

  • findslots n/Brian Griffin
    Displays the slots occupied by Brian Griffin, Brian Griffin Jr, Griffin or Brian Smith.

  • findslots n/Coco t/16/11/2020
    Displays the slots occupied by Coco on 16/11/2020.

4.3.3. Edting a slot: editslot

Edits an existing occupied slot in the schedule.

Format: editslot INDEX [n/PETNAME] [t/DATETIME] [d/DURATION]

  • If the app is displaying slots (display s or display c), then the index refers to the index number shown in the current display. Otherwise, the index refers to the index number of the slot in the entire list of slots.

  • 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.

  • Specifications for the pet, datetime and/or duration passed in are the same as those specified in Section 4.3.1, “Adding a slot: addslot.

  • The new slot must start and end on the same day.

Examples:

  • display s
    editslot 1 t/16/11/2020 1300 d/120
    Edits the datetime and duration of the 1st slot to be 16/11/2020 1300, and 120 minutes respectively.

  • findslots t/1/1/2020
    editslot 3 d/45

    Edits the duration of the 3rd slot in the search results of findslots to be 45 minutes.

  • display p
    editslot 12 n/Brian Griffin
    Edits the pet occupying the 12th slot to be Brian Griffin.

4.3.4. Deleting a slot: deleteslot

Deletes the specified slot from the schedule.

Format: deleteslot INDEX

  • If the app is displaying slots (display s or display c), then the index refers to the index number shown in the current display. Otherwise, the index refers to the index number of the slot in the entire list of slots.

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • display s
    deleteslot 2
    Deletes the 2nd slot in the schedule.

  • findslots n/Coco
    deleteslot 2
    Deletes the 2nd slot in the search results of findslots.

  • display i
    deleteslot 2
    Deletes the 2nd slot in the schedule.

4.3.5. Showing all conflicts: conflicts

Displays the slots that have a conflict, i.e., an overlap in time with another occupied slot. The conflicted slots are displayed sequentially as a list.

Format: conflicts

5. Command Summary

  1. Common / general commands

    • Help: help

    • Exit: exit

    • Display: display SYSTEM
      e.g. display p
      e.g. display s
      e.g. display c
      e.g. display i

    • Statistics: stats

    • Back up: backup

    • Load backup: load FILE_NAME
      e.g. load 20200402_21_54_52

  2. Pet-related commands

    • Add pet: addpet n/NAME g/GENDER b/DATE OF BIRTH s/SPECIES f/FOOD NAME: AMOUNT [f/FOOD NAME: AMOUNT] [t/TAG]…​
      e.g. addpet n/Garfield g/male b/01/01/2019 s/cat tabby t/lazy f/Brand A: 30 t/lasagna

    • Find pet: findpets [n/NAME]…​ [t/TAG]…​
      e.g. findpets n/garfield n/odie t/jon

    • Edit pet: editpet INDEX [n/name] [b/DATE OF BIRTH] [t/TAG]…​
      e.g. editpet 2 n/garfield t/cuddly

    • Delete pet: deletepet INDEX
      e.g. deletepet 2

  3. Schedule-related commands

    • Add slot: addslot n/PETNAME t/DATETIME d/DURATION
      e.g. addslot n/Coco t/16/11/2020 1300 d/90
      e.g. addslot n/Brian Griffin t/17/11/2020 1500 d/45

    • Find slot: findslots [n/PETNAME] [t/DATE]
      e.g. findslots n/Brian Griffin
      e.g. findslots t/20/2/2020
      e.g. findslots n/Coco t/16/11/2020

    • Edit slot: editslot INDEX [n/PETNAME] [t/DATETIME] [d/DURATION]
      e.g. editslot 1 t/16/11/2020 1300 d/120
      e.g. editslot 3 d/45
      e.g. editslot 12 n/Brian Griffin

    • Delete slot: deleteslot INDEX
      e.g. deleteslot 2

    • Show conflicts: conflicts

6. FAQ

Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Pet Shop Helper folder.