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

33: Client Mockups - [merged] #72

Closed
raffaelfoidl opened this issue Sep 21, 2021 · 34 comments
Closed

33: Client Mockups - [merged] #72

raffaelfoidl opened this issue Sep 21, 2021 · 34 comments

Comments

@raffaelfoidl
Copy link
Member

In GitLab by @11775820 on Sep 21, 2021, 16:00

Merges 33-client-mockups -> develop

Closes #33


In the real implementation, we need to put a little more thought into what data we want to receive with each request and how they are organized (right now, for the purpose of creating mockups as quickly as possible, it is very naive and objects that should e.g. be "local per training program" are reused in multiple programs for the sake of quickness).

If you get error regarding the localization (something with AppLocalization and errors at package:flutter_gen/... imports), be sure to do a flutter clean, followed by a flutter pub get. Then, unfortunately, it might still be necessary to restart IntelliJ to get rid of the error messages (they are no real errors, building and running would still work fine, but popups and squiggly lines are annoying). This is a more or less known (or recurring) error in the Flutter IDE integration plugins.

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 21, 2021, 16:00

requested review from @11712616

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 22, 2021, 21:18

Commented on client/lib/models/exercises/exercise_attribute.dart line 1

I would rename this to ExerciseLogging or something like that (something that reflects the "purpose" of the object, which is to declare how an exercise can be logged) as ExerciseAttribute could refer to anything. Furthermore, I think it does not make much sense to have an enumeration like that and be able to assign a list of "attributes" to an exercise. In my opinion, it would either have to be an enumeration of tuples (band-reps, weight-reps, weight-time etc.) or two enumerations that can be combined to form tuples with one element being an object of one enumeration and the other element being an object of the other enumeration (the first enumeration contains band, weight, distance, the second time and reps). And they would most certainly have to be displayed as tuples (weight × reps etc.).

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 22, 2021, 21:18

Commented on client/lib/widgets/main_app_bar.dart line 27

Is it possible to turn this plain text title into a "link" (with the same text) to the start screen, i.e. the workout of today?

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 22, 2021, 21:18

Commented on client/lib/widgets/main_app_bar.dart line 46

I would restrict the display of the date picker to the start screen or screen when viewing a logged workout on a given day, respectively. As discussed privately, in combination with the comment about the Workout Overview, this would result in the workout overview being accessed by clicking on the respective list element in the hamburger menu: The screen when clicking on this element and the start screen of the app initially display the workout(s) logged today. Past workouts can be accessed by selecting the given date with the date picker. If a date is selected, the screen displays the workout(s) done on the selected date; the rest of the screen stays the same.

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 22, 2021, 21:18

Commented on client/lib/models/exercises/exercise_tag.dart line 1

As far as I understand, this class is used for distinguishing different muscle groups? If yes, I would rename it to MuscleGroup; the name ExerciseTag sounds rather general.

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 22, 2021, 21:18

Commented on client/lib/widgets/app_drawer.dart line 44

I would rename the Workout Overview tile/component to something like Log/Workout Log/Training Log (I am open to your ideas) and introduce another tile Workouts here (between Exercises and Programs) that leads to an overview of saved workouts where one can also create a new workout. What do you think?

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 22, 2021, 21:18

Commented on client/lib/widgets/workouts/workout_overview_screen.dart line 71

I know that the sketches I made are very confusing and I had not been quite sure about how this should look like myself; however, after some reconsideration, I would say that this SpeedDial should only contain Copy Exercise and Log Exercise. Adding a new exercise/training program/workout should be done in the respective overview (exercise overview etc.).

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 23, 2021, 09:00

Commented on client/lib/widgets/main_app_bar.dart line 27

As discussed privately, this is not a good idea since it is uncommon and counter-intuitive.

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 11:06

Commented on client/lib/models/exercises/exercise_tag.dart line 1

I started with MuslceGroup, but changed it to Tag because there are also exercises that are not explicitly targeting specific muscle groups, e.g. Cardio or - if we want to allow exercises without dedicated groups/tags, an Other or Miscellaneous group. That's why I made it more general. If that doesn't bother you, I can change it back to MuscleGroup.

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 11:06

Commented on client/lib/widgets/app_drawer.dart line 44

That would diverge even more from your sketches (you didn't even have the 'Workout Overview' in the drawer) require workouts to be able to exist independently from training programs such that programs just "consume" pre-existing workouts. That opens up the question if changes (e.g. adding an exercise to a workout that is in a training program) will propagate to the original one (which happens automatically if the program just referneces to the program) or if a workout to be incorporated in a program is just duplicated such that subsequent changes are not reflected in the source workouts.

The workout overview is okay, but how are workouts to be used in programs handled?

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 11:06

Commented on client/lib/widgets/workouts/workout_overview_screen.dart line 71

ok.
When logging an exercise, how is the connection to the workout or training program it potentially stems from made?

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 12:40

Commented on client/lib/widgets/main_app_bar.dart line 46

changed this line in version 2 of the diff

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 12:40

Commented on client/lib/widgets/app_drawer.dart line 44

changed this line in version 2 of the diff

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 12:40

Commented on client/lib/widgets/workouts/workout_overview_screen.dart line 71

changed this line in version 2 of the diff

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 12:40

added 4 commits

  • 90681fd7 - 33: Review: SpeedDial
  • f0c6a563 - 33: Review: MainAppBar
  • 6fc7a27e - 33: Review: Rename WorkoutOverview
  • 4d46e1c0 - 33: Review: Separate WorkoutOverviewScreen

Compare with previous version

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 12:41

Commented on client/lib/widgets/workouts/workout_overview_screen.dart line 71

-> 90681fd7f3a428d1bad52312ad933e31161c74c0

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 12:41

Commented on client/lib/widgets/main_app_bar.dart line 46

-> f0c6a5632836fcf9ef6e800c5da0e7dda9af0f73

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 12:41

Commented on client/lib/models/exercises/exercise_attribute.dart line 1

As discussed in private, this has to be specified by the domain model and/or server and goes beyond the scope of simple UI mockups.

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 12:41

Commented on client/lib/widgets/app_drawer.dart line 44

-> rename: 6fc7a27e27342f04cff88e147b950d7cddbbc5b6
-> workout overview screen: 4d46e1c03902c15bbef93673c0947c973315f565

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 23, 2021, 12:46

Commented on client/lib/models/exercises/exercise_tag.dart line 1

I would stick with MuscleGroup as cardio exercises also train a specific muscle - the heart (cardiovascular system) ;)

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 23, 2021, 12:46

Commented on client/lib/widgets/app_drawer.dart line 44

My bad - I somehow thought that we wanted to save workouts although we explicitly discussed this matter and agreed not to implement such functionality. Please forget the handling of workouts and the Workouts tile. A workout "scheme" (if you have a better idea on how to name this, please correct me; I would like to differentiate between "workouts" that are part of a training program and actually logged workouts since calling both of them "workout" is quite confusing) does not exist independently from a training program.

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 23, 2021, 12:46

Commented on client/lib/widgets/workouts/workout_overview_screen.dart line 71

I would like to revise my initial comment. The SpeedDial should contain (from bottom to top) Log Exercise, Copy (Previous) Workout and Log Workout (from Training Program) (which is currently New Workout as far as I understand).

Firstly, Log Exercise lets the user add an exercise to a logged workout. This is not related to a workout/training program the exercise "stems from". In my opinion, it does not make much sense to only log one exercise of a workout from a training program. If a user would like to do that, he/she can use the Log Workout button, log the desired workout and delete all exercises from it except for the one he/she would like to log. Since the use case is not very realistic/probable, this workaround is acceptable from my point of view. Hence, the logged exercise, in this case, simply "stems from" the exercise list, which in consequence means that there are no predefined sets or anything.
In general (this is not relevant for the mockups, but maybe useful in understanding the general workflow I have in mind): If there is no workout logged yet, a new workout is created and the exercise is added. If there is already at least one workout logged for the given day, the user has to select to which workout the exercise should be added.

Secondly, Copy (Previous) Workout (not sure if the "Previous" is necessary) lets the user copy a previously logged workout. What I have in mind here is that clicking this element results in a date picker popping up that lets the user choose the date of the workout he/she would like to copy. For example: Today, on September 23, I did the same exercises as last week, on my first workout on September 16 (let's assume that I am a freak who did two workouts that day). Therefore, instead of logging all the exercises again, I simply click Copy (Previous) Workout, select September 16, select the first workout from a list of logged workouts (if there is only one, then this list is obsolete, should probably be an if statement) et voilà, I have the workout logged for today and can edit the "log entry".

Lastly, Log Workout (from Training Program) (not sure if the "from Training Program" is necessary) lets the user log a workout that is predefined in a training program. For example: Today I am starting a new training program: "Beach Body 2022". Hence, I click Log Workout, select "Beach Body 2022", select the first week and select the first day (assuming that the first day only contains one workout; if this is not the case, then I would have to select the workout as well). In consequence, the workout (containing all corresponding exercises and sets) is now logged for today. When implementing this, it would probably make sense to add a "shortcut" that lets the user add the "next" planned workout. For example, if it's the second day I am doing the training program, choosing this option automatically logs the workout(s) on the first day of the first week of the program. But this is not relevant until we actually implement this feature.

Another possibility is to combine the Copy Workout and Log Workout (from Training Program) into one element Log Workout: When clicking this element, the user has to choose between those two options (copy previous logged workout or get workout from training program). The further behavior is as described above for the respective options.

This description and reasoning, respectively, probably goes in too much detail for the mockups. I just wanted to (try to) clarify my thoughts and explain what I have in mind so that for further work, we can possibly build upon this discussion. What are your thoughts?

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 14:01

Commented on client/lib/models/exercises/exercise_tag.dart line 1

changed this line in version 3 of the diff

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 14:01

added 2 commits

  • 64073bc4 - Revert "33: Review: Separate WorkoutOverviewScreen"
  • e0ed28e0 - 33: Review: ExerciseTag -> MuscleGroup

Compare with previous version

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 14:02

Commented on client/lib/widgets/app_drawer.dart line 44

-> 64073bc40f699e28f16f26e1f714738e6d3eddcd

As for the actually logged workouts, maybe something like LoggedWorkout or WorkoutLog. But that's not inherently important for this MR.

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 14:02

Commented on client/lib/widgets/workouts/workout_overview_screen.dart line 71

Sounds good. But what do you want now, the three buttons you mentioned in the beginning or the two buttons with a dialog? The latter option would help me because I have no idea what third icon I should use to distinguish the two "log" actions. However, it could be annoying to be asked the same thing over and over again when trying to log something. You decide.

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 14:02

Commented on client/lib/models/exercises/exercise_tag.dart line 1

-> e0ed28e0f9c487ea54c20ede107219c0d7f75844

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 23, 2021, 18:07

Commented on client/lib/widgets/workouts/workout_overview_screen.dart line 71

For now, I kind of have a slight tendency to the first option... I would suggest a dumbbell icon for Log Exercise, a copy icon for Copy Workout and if possible, a clipboard icon for Log Workout. Is that okay for you?

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 18:16

added 1 commit

  • 4ee8c158 - 33: Review: Add Log Exercise

Compare with previous version

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 18:17

Commented on client/lib/widgets/workouts/workout_overview_screen.dart line 71

yes.
-> 4ee8c158034052e625790b97e388f6f55e6b6973

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 23, 2021, 18:38

resolved all threads

@raffaelfoidl
Copy link
Member Author

In GitLab by @11712616 on Sep 23, 2021, 18:38

approved this merge request

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 20:37

added 1 commit

  • 279701f - 33: Incorporate Review Suggestions

Compare with previous version

@raffaelfoidl
Copy link
Member Author

In GitLab by @11775820 on Sep 23, 2021, 20:53

mentioned in commit 4cbef75

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

No branches or pull requests

1 participant