User Guide
Table of Contents
- 1. Introduction
- 2. How to use this guide?
- 3. Getting Started
- 4. GUI Orientation
-
5. Commands
- 5.1. Adding an exercise:
:add
- 5.2. Deleting an exercise :
:del
- 5.3. Clearing all exercises :
:clear
- 5.4. Filtering exercises by keyword(s) :
:filter
- 5.5. Sorting exercises :
:sort
- 5.6. Viewing all exercises within a time period :
:range
- 5.7. Listing all exercises :
:list
- 5.8. Listing Personal Records (PR):
:pr
- 5.9. Generating a sample workout based on Personal Records:
:gen
- 5.10. Viewing help :
:help
- 5.11. Exiting the program :
:wq
- 5.1. Adding an exercise:
- 6. FAQ
- 7. Command Summary
- 8. Glossary of Terminologies
1. Introduction
1.1. What is Gim?
Gim is a desktop app for managing gym exercises. Gim allows you to keep track of your progress and craft personalised workout plans. Gim commands are inspired by those of Vim. Gim is optimised for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
1.2. Who is this guide for?
Are you a gym-goer looking to use Gim to track your exercises? This user guide will get you started in no time and help you navigate through Gim’s features. For a quick start guide, head over to Getting Started.
2. How to use this guide?
Gim uses a Command Line Interface (CLI), which may be new to some users. If you are a new user, we strongly recommend you to look through the user guide from start to end to fully understand how to use Gim. However, you may also choose to skip to the relevant sections described below:
- Refer to our Table of Contents to easily navigate between sections of the User Guide.
- Refer to our Getting Started guide to learn how to setup Gim.
- Refer to our GUI Orientation to better orientate yourself around the GUI.
- Refer to our Commands section to learn in detail the different features and commands available in Gim.
- Refer to our FAQ to read common queries that new users may have.
- Refer to our Command Summary to have a quick overview of the different commands and their respective formats.
- Refer to our Glossary of Terminologies to learn key terms that are used in this User Guide.
2.1 Useful Notations
While exploring Gim’s features with this user guide, do take note of these symbols used in the user guide and what they represent.
Symbol | Meaning |
---|---|
Important information | |
Warning or Caution | |
When should I use this? | |
Tips |
3. Getting Started
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
gim.jar
here. -
Copy the file to the folder you want to use as the home folder for your Gim.
-
Double-click the file to start the app. The GUI similar to the one shown below should appear in a few seconds. Note how the app contains some sample data.
-
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. -
Refer to the Commands Section below for details of each command.
4. GUI Orientation
4.1. Command Box
The Command Box
is where you can input your commands.
4.2. Exercise List
The Exercise List
displays exercise entries. When the application is first launched, the Exercise List
displays all exercise entries in the system, arranged by the order in which they were added. Whenever you issue commands that may truncate/reorder the Exercise List
, they will only act upon the entries that are currently displayed in the Exercise List
.
4.3. Result Display
The Result Display Window
displays feedback after executing a command. This includes feedback for both correctly and incorrectly entered commands.
4.4. Recognised Exercise Name List
The Recognised Exercise Name List Window
provides you a list of all unique exercise names that are currently registered in the system.
Notice that there are two counts.
- Count #1: Displays the number of exercise names registered in the system (i.e. does not include duplicates)
- Count #2: Displays the total number of exercise entries in the system (i.e. includes duplicates)
For illustrative purposes, let us refer to the image below. There are multiple Squat entries in the system registered under the same name Squat, which is reflected by Count #1. On the other hand, because Count #2 includes duplicates, it will count both “Squat” entries individually even if they are registered under the same name.
E.g. If you see an entry for Squatz in the green list when you normally name your exercise Squat, it means you may have an incorrectly spelled entry.
Exercise names are recognised as equal if, upon removing white spaces and setting the names to lowercase, the names are the same.
i.e. Bench Press, BENCH PRESS, BenchPress will be logged as the same exercise for your convenience in adding.
However, the first time you add an exercise with an unrecognised name, the Recognised Exercise Name List will save the form you have input. Choose wisely!
5. Commands
Notes about the command format:
-
Words in
UPPER_CASE
are the parameters to be supplied by you.
E.g. Inn/NAME w/WEIGHT
,NAME
andWEIGHT
are parameters which can be used asn/Squat w/100
. -
Items in square brackets are optional.
E.g.n/NAME [d/DATE]
can be used asn/Deadlift d/27-10-2022
or asn/Deadlift
. -
Items with
…
after them can be used multiple times including zero times.
E.g.[n/NAME]…
can be used as ` ` (i.e. 0 times),n/Squat
(i.e. 1 time),n/Squat n/Deadlift
(i.e. 2 times) etc. -
Parameters can be in any order.
E.g. If the command specifiesn/NAME w/WEIGHT
,w/WEIGHT n/NAME
is also acceptable. -
If a parameter is expected only once in the command but you specify it multiple times, only the last occurrence of the parameter will be taken.
E.g. If you specifyn/Squat n/Deadlift
, onlyn/Deadlift
will be taken. -
Redundant inputs for commands that do not take in additional parameters (such as
:list
,:sort
,:help
:wq
) will be ignored.
E.g. If you specify:help 123
, it will be interpreted as:help
.
5.1. Adding an exercise: :add
Adds an exercise that we have done for the day.
Note about add:
If an exercise (identified by their names) is added for the first time, it is automatically registered as a new unique exercise.
Format: :add n/NAME w/WEIGHT s/SETS r/REPS [d/DATE]
d/DATE
field is left empty, the system will store the exercise with the current date.
Parameter constraints:
- The name must only contain alphanumeric (alphabets & numbers) characters and spaces.
- Examples: Squat, Bench press, Deadlift…
- The weight must be a non-negative decimal number, up to 3 digits for the whole number and up to 2 digits for the decimal place.
- Examples: 0, 0.55, 35, 100.1, 200.00…
- The sets must be a positive integer, up to 3 digits, with no leading zeroes.
- Examples: 1, 2, 3, 10, 100…
- The reps must be a positive integer, up to 3 digits, with no leading zeroes.
- Examples: 1, 2, 3, 10, 100…
- The date must be a valid date.
- Accepted formats:
- day/month/year
- year/month/day
- day-month-year
- year-month-day
- day month year
- year month day
- The day must be a positive integer, up to 2 digits.
- The month must be a positive integer, up to 2 digits.
- The year must be a positive integer, with exactly 4 digits.
- Examples: 27/10/2022, 01-10-2022…
- Accepted formats:
Examples:
-
:add n/Squat w/30 s/3 r/5
Adds a Squat exercise of weight 30kg for 3 sets of 5 reps for today’s date. -
:add n/Deadlift w/60 s/1 r/1 d/27/01/2022
Adds a Deadlift exercise of weight 60kg for 1 set of 1 rep for 27th January 2022.
5.2. Deleting an exercise : :del
Deletes a particular exercise from our list.
Note about delete:
If the deleted exercise was the last exercise with the same name, then the exercise is automatically de-registered from the list of unique exercises.
Format: :del INDEX
Parameter constraints:
- The index must be a positive integer.
- Example: 1, 2, 3, …
Example:
-
:del 9
Deletes an exercise at index 9 of the list.
5.3. Clearing all exercises : :clear
Clears the saved exercises and resets the data in the system.
Format: :clear confirm/
Redundant inputs (before and after the
confirm/
flag) will be ignored. E.g. If the command specifies
:clear abc confirm/ 123
, it will be interpreted as :clear confirm/
.
Example:
-
:clear confirm/
Clears all saved exercises, resetting the data in the system.
5.4. Filtering exercises by keyword(s) : :filter
Filters exercises, in the current Exercise List, with names containing any of the given keywords.
Format: :filter KEYWORD [KEYWORD]...
Notes about filter:
- Only the exercise name is searched.
- The keyword is case-insensitive. e.g bench will match Bench.
- The order of the keywords does not matter. e.g. Deadlift Squat will match Squat Deadlift.
- Only full words will be matched e.g. Squat will not match Squats.
- Exercises matching at least one keyword will be returned e.g.
:filter Bench press
will return Bench press and Leg press.
When should I use this?
I should use this when I want to find the entries of a specific exercise.
Example:
-
:filter Deadlift Squat
Shows the list of Deadlift and Squat exercises.
5.5. Sorting exercises : :sort
Sorts the exercises, in the current Exercise List, according to their date of completion, with the latest exercise completed displayed at the top of the list.
Format: :sort
Example:
-
:sort
Shows the sorted list of exercises.
5.6. Viewing all exercises within a time period : :range
Shows all exercises, among exercises in the current Exercise List, within the specified date range; the latest exercise completed is displayed at the top of the list.
There are 2 formats supported for this command.
Format (1) : :range start/START_DATE end/END_DATE
Parameter constraints:
- The START_DATE and END_DATE must be a valid date.
- Accepted formats:
- day/month/year
- year/month/day
- day-month-year
- year-month-day
- day month year
- year month day
- The day must be a positive integer, up to 2 digits.
- The month must be a positive integer, up to 2 digits.
- The year must be a positive integer, with exactly 4 digits.
- Accepted formats:
- Start date should be before end date. Otherwise, no exercises will be displayed.
Example:
-
:range start/25/10/2022 end/26/10/2022
Shows the exercises done between October 25, 2022 and October 26, 2022 (both inclusive).
Format (2) : :range last/NUMBER_OF_DAYS
Parameter constraints:
- Number of days can only take non-negative integer values up to 5 digits, excluding leading zeroes.
Example:
-
:range last/3
Shows the exercises done today and the last 3 days.
5.7. Listing all exercises : :list
Shows a list of all exercises.
When should I use this?
I should use this when I want to reset my Exercise List back to the default state (before any sorting/filtering commands were used).
Format: :list
Example:
-
:list
Shows the list of exercises you have completed.
If you want to view your squat progression over the past week, here’s a nifty sequence of commands you can try!
1.
:list
Current exercise list now shows all exercises.2.
:filter Squat
Current exercise list now shows ‘Squat’ exercises.3.
:range last/7
Current exercise list now shows ‘Squat’ exercises in the past 7 days.
5.8. Listing Personal Records (PR): :pr
Finds the Personal Record of certain exercises in the exercise tracker.
There are 2 formats supported for this command.
Format (1): :pr n/NAME [n/NAME]...
Parameter constraints:
- Name must only contain alphanumeric (alphabets & numbers) characters and spaces.
- Examples: Squat, Bench press, Deadlift…
Examples:
-
:pr n/Squat
Lists the personal record for the Squat exercise (if found). -
:pr n/Deadlift n/Bench press n/Squat
Lists the personal records for the Deadlift, Bench press and Squat exercises (if found).
Format (2): :pr all/
Redundant inputs (before and after the
all/
flag) will be ignored. E.g. If the command specifies
:pr abc all/ 123
, it will be interpreted as :pr all/
.
Example:
-
:pr all/
Lists the personal records for all uniquely registered exercises in the exercise tracker.
5.9. Generating a sample workout based on Personal Records: :gen
Generates a sample workout suggestion based on existing personal records of the exercises, according to the difficulty level specified. Exercises are indicated either by their index or their exercise names.
When should I use this?
I should use this when I want to get a quick workout plan based on how I am feeling.
There are 2 formats supported for this command.
Format (1): :gen INDEX [, INDEX]... level/DIFFICULTY_LEVEL
Parameter constraints:
- The index must be a positive integer.
- Example: 1, 2, 3, …
- The difficulty level must be supported; currently supported are: easy, medium, hard.
Example:
-
:gen 4, 5 level/easy
Generates a sample workout for Squat; this command is equivalent to:gen 4 level/easy
since both index 4 and 5 in the displayed list are Squat exercises. -
:gen 1, 2 level/easy
Generates a sample workout for exercises at index 1 and 2 of the list, Deadlift and Incline Bench.
Format (2): :gen n/NAME [n/NAME]... level/DIFFICULTY_LEVEL
Parameter constraints:
- Name must only contain alphanumeric (alphabets & numbers) characters and spaces.
- The difficulty level must be one that is supported; currently supported are: easy, medium, hard.
Redundant inputs (before the first
n/
flag) will be ignored.E.g. if the command specifies
:gen 1,2,3 n/Squat level/easy
, it will be interpreted as :gen n/Squat level/easy
.
Example:
-
:gen n/Squat n/Squat level/easy
Generates a sample workout for Squat; this command is equivalent to:gen n/Squat level/easy
since both exercise names are the same. -
:gen n/Squat n/Deadlift level/easy
Generates a sample workout for exercises Squat and Deadlift (if found).
5.10. Viewing help : :help
Accesses the help menu. The help menu contains a brief summary of the commands supported and provides a link to the user guide.
Format: :help
5.11. Exiting the program : :wq
Exits the program.
Format: :wq
Gim data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
6. FAQ
Q: Do I have to update the Recognised Exercise Name List Window manually?
A: You do not have to update it manually as the Recognised Exercise Name List is already updated automatically whenever you add or delete an exercise entry from the system.
Q: Can I change the name of my uniquely registered exercise?
A: To change the way it is represented, you can find the exercise with the name, delete the entries and re-enter the exercises with your new name of choice.
The way you format the exercise name when you first add it will be the way it is displayed in the system. After that, all exercises added that have the same name will be categorised under the same exercise.
Q: Can I edit an exercise?
A: You can do so by deleting the entry and adding a new entry.
Q: Why is :filter
, :range
or :sort
not showing the “correct” list even though I have input valid parameters?
A: The three commands works on the exercises in the current Exercise List. If your current Exercise List has been altered by list-changing commands such as :range
or :filter
, the commands will act on the current Exercise List rather than the full list comprising all exercises in the system.
:list
to display the full list before running the commands again.
Q: How is data stored in Gim?
A: Gim data is stored in [JAR file location]/data/exercisetracker.json
. If you are comfortable working with JSON files, you are welcome to update Gim’s data by editing the data file directly.
7. Command Summary
Action | Format | Examples |
---|---|---|
Add exercise | :add n/NAME w/WEIGHT s/SETS r/REPS [d/DATE] | :add n/Deadlift w/60 s/1 r/1 d/27/10/2022 |
Delete exercise | :del INDEX | :del 3 |
Clear all exercises | :clear confirm/ | :clear confirm/ |
Filter exercise(s) | :filter KEYWORD [KEYWORD]… | :filter Deadlift Squat |
Sort exercises | :sort | :sort |
View range (1) | :range start/START_DATE end/END_DATE | :range start/25/10/2022 end/26/10/2022 |
View range (2) | :range last/NUMBER_OF_DAYS | :range last/3 |
List all exercises | :list | :list |
List Personal Record(s) (1) | :pr n/NAME [n/NAME]… | :pr n/Deadlift n/Squat |
List Personal Record(s) (2) | :pr all/ | :pr all/ |
Generate workout (1) | :gen INDEX [, INDEX]… level/DIFFICULTY_LEVEL | :gen 1, 2 level/easy |
Generate workout (2) | :gen n/NAME [n/NAME]… level/DIFFICULTY_LEVEL | :gen n/Deadlift level/easy |
Help menu | :help | :help |
Exit program | :wq | :wq |
8. Glossary of Terminologies
-
Command: An instruction to perform an action in Gim, preceded by a colon, i.e.
:instruction
- Command Line Interface (CLI): Interface that relies on keyboard inputs to interact with the system.
- Exercise: Physical activity done in a regular gym that is structured and repetitive, usually involving some weights.
- Graphical User Interface (GUI): Interface that relies on mouse inputs on visible components to interact with the system.
- Index: Number associated to an Exercise in the Exercise List.
- JavaScript Object Notation (JSON): Filetype used for storing the user’s data that can be edited using a text editor.
- Parameters: Inputs for commands that you come up with.
- Personal Record (PR): Heaviest weight recorded in the exercise tracker for a specific exercise.
- Reps: Number of times you perform a specific exercise.
- Sets: Number of cycles of reps that you complete.
- Vim: A text editor, known for being lightweight, fast and efficient. It can be controlled entirely with the keyboard with no need for menus or a mouse.
- Weight: Total weight of equipment (in kg).