Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CS2113T-T09-4] PulsePilot #63

Open
wants to merge 1,132 commits into
base: master
Choose a base branch
from

Conversation

JustinSoh
Copy link

PulsePilot is a desktop app for tracking health-related information, optimised for users via a Command Line Interface (CLI). If one can type fast, you can key in and track health-related information faster than traditional GUI applications installed on your phone or computer.

5. `GymSet` stores the weight and repetitions for a particular set.
6. `WorkoutList` is a class that stores an array list different `Workout` objects using ArrayList.

![Workout Package Class Diagram](img/workout_class_diagram.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe consider including labels and multiplicities for easier understanding.

Comment on lines 89 to 92
1. `initialiseBot()` is called, and it prompts the user to enter their name, which is used throughout the bot.
2. `initialiseScanner()` is used to create the singleton `Scanner` instance to read user input.
3. When the user enters input, it is passed to `processInput()`, which determines the type of command inputted.
4. Once the correct input has been determined, it is passed to the relevant handle function. For example, a `workout` command is passed to `handleWorkout()`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it better to include a sequence diagram?


## Non-Functional Requirements
![Run Sequence Diagram](img/run_sequence_diagram.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the diagram too long? Might affect readability.


##### Gym Sequence

![Gym Sequence Diagram](./img/gym_sequence_diagram.jpg)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2024-04-04 123049
Is there inconsistency in naming? The first four says <> and has colon before the name, while the last says <> and has no colon, resulting in some confusion

6. `HealthList.predictNextPeriodStartDate()` gets the predicted start date by calling `Period.nextCyclePrediction()`.
7. `Period.getLastThreeCycleLengths()` is called to find the sum of the latest three cycle lengths before returning to `Period.nextCyclePrediction()` for necessary calculation to obtain the predicted start date.
8. The `Parser` class calls `Period.printNextCyclePrediction()` with the predicted start date as a parameter. This method prints a string indicating the number of days until the predicted start date of the next period, or how many days late the period is if the current date is after the predicted start date.
![Sequence Diagram for Add Period](img/period_prediction.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2024-04-04 124035

Is it better to include the parenthesis and/or parameters behind the function name?

- `[time]` is in `HH:MM:SS` or `MM:SS` format with positive integers, representing the amount of time taken for the run.
- If the time taken is **25 minutes and 20 seconds**: Use `25:20`.
- If the time taken is **1 hour, 20 minutes and 30 seconds**: Use `01:20:30`.
- `[date]` is in `DD-MM-YYYY` format. **THIS IS AN OPTIONAL PARAMETER**.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe show sample output?

5. `GymSet` stores the weight and repetitions for a particular set.
6. `WorkoutList` is a class that stores an array list different `Workout` objects using ArrayList.

![Workout Package Class Diagram](img/workout_class_diagram.png)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

classes should be represented by text such as {abstract} instead of circled letters in the diagram

###### [Back to table of contents](#table-of-contents)

### Health Package
![Class Diagram for Health Package](img/health_package.png)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably not necessary to show obvious methods such as getWeight()


6. The `Appointment` object is passed to `Output.printAddAppointment()` and a message acknowledging the successful adding is printed to the screen.

![AddAppointment](img/appointment_sequence.png)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

parenthesis should be included in function names

Copy link

@TimothyLKM TimothyLKM left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall, very detail diagrams but you can omit some less important methods. Good job!

The application follows an Object-Oriented Design approach, with separate classes for handling different components of the application, such as user input, output, exercise logging, and health data management.


![ArchitectureDiagram](![img.png](img/architecture_diagram.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2024-04-04 at 1 20 52 PM

Alignment issue on the Architecture diagram.

Comment on lines 121 to 146
{Include `WorkoutList` description}

###### [Back to table of contents](#table-of-contents)

#### Gym

{Include `Gym` description}

###### [Back to table of contents](#table-of-contents)

##### Gym Station

{Include `GymStation` description}

###### [Back to table of contents](#table-of-contents)

##### Gym Set

{Include `GymSet` description}

###### [Back to table of contents](#table-of-contents)

#### Run

{Include `Run` description}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing description.

| 2.0 | runner | quickly view my most recent run details | see my latest run |
| 2.0 | gym enthusiast | quickly view my most recent gym session | see my latest gym session |
| 2.0 | gym enthusiast | accurately track my progress and strength gains | enter varying weights for sets |
| 2.0 | female user | plan ahead and better manage my health | p#D85D43ict my next period start date |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo on the "I want to" column

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Too many unnecessary commands on this Class diagram.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove extra headers at the bottom of all your diagrams

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Diagram may be too much and cluttered to read. Do consider omitting some commands.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could omit some less important methods.

Copy link

@jing-xiang jing-xiang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall good DG. Detailed sequence diagrams but some part seems missing and there are some formatting errors so remember to fix those!


The application follows an Object-Oriented Design approach, with separate classes for handling different components of the application, such as user input, output, exercise logging, and health data management.

![Architecture Diagram](img/architecture_diagram.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

formatting error on github pages

image


###### [Back to table of contents](#table-of-contents)

#### Parser

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

seems incomplete


##### Period Sequence

The sequence diagram below illustrates the process of period prediction.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sequence diagram seems accurate and detailed. Good job.


- Station name is `Bench Press`.
- User has done **2 sets of 3 repetitions**.
- The first set was done using 100kg, and the second using 200kg.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 for 200kg bench press 👍


###### [Back to table of contents](#table-of-contents)

### View History

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should these be empty?

image

| 2.0 | runner | quickly view my most recent run details | see my latest run |
| 2.0 | gym enthusiast | quickly view my most recent gym session | see my latest gym session |
| 2.0 | gym enthusiast | accurately track my progress and strength gains | enter varying weights for sets |
| 2.0 | female user | plan ahead and better manage my health | p#D85D43ict my next period start date |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems like a formatting/typo error on the female user row?

image

</code>

- `[distance]` is a 2 **decimal place positive number** representing the number of kilometers covered.
- `[time]` is in `HH:MM:SS` or `MM:SS` format with positive integers, representing the amount of time taken for the run.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry if i missed it but maybe clarify whats the type

image


#### Workout List

{Include `WorkoutList` description}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Description still empty for all these workouts


#### Filters

{Include `Filters` description}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These descriptions are also not filled in yet?

Comment on lines 473 to 477
- `[height]` is a 2 **decimal place positive number** representing the user's height.

- `[weight]`is a 2 **decimal place positive number** representing the user's weight.

- `[date]` is in `DD-MM-YYYY` format (i.e. `19-03-2024`).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

height, weight and date all have specific inputs that have been defined "decimal place positive number" which is good practice!

Comment on lines 700 to 702
1. **Q: How do I set up the development environment for the project?**
A: You can set up the development environment by first cloning the repository to your local system. Then, load the project into your chosen IDE (we recommend IntelliJ IDEA).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might want to specify which version of java to use etc?

=======

![ArchitectureDiagram](img/architecture_diagram.png)
>>>>>>> f712869cb298d4ac1f4d6178e7eaeed520cb1919

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe the image was accidentally repeated when resolving merge conflicts?
image


###### [Back to table of contents](#table-of-contents)

#### Health List

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

would class diagrams help to make the following classes clearer?

This is the sequence diagram for adding a run:

![Run Sequence Diagram](img/run_sequence_diagram.png)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should the handleWorkout() arrow be solid instead?
should addRun() be pointing to the top of the activation bar of :WorkoutList instead?
image

| 2.0 | gym enthusiast | accurately track my progress and strength gains | enter varying weights for sets |
| 2.0 | female user | plan ahead and better manage my health | p#D85D43ict my next period start date |
| 2.0 | injured user | remember the appointments I have | track my medical appointments |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should the "So that I can" and "I want to" columns be swapped?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.