Comments (34)
In GitLab by @11775820 on Sep 21, 2021, 16:00
requested review from @11712616
from witness.
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.).
from witness.
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?
from witness.
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.
from witness.
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.
from witness.
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?
from witness.
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.).
from witness.
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.
from witness.
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
.
from witness.
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?
from witness.
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?
from witness.
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
from witness.
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
from witness.
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
from witness.
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
from witness.
In GitLab by @11775820 on Sep 23, 2021, 12:41
Commented on client/lib/widgets/workouts/workout_overview_screen.dart line 71
-> 90681fd7f3a428d1bad52312ad933e31161c74c0
from witness.
In GitLab by @11775820 on Sep 23, 2021, 12:41
Commented on client/lib/widgets/main_app_bar.dart line 46
-> f0c6a5632836fcf9ef6e800c5da0e7dda9af0f73
from witness.
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.
from witness.
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
from witness.
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) ;)
from witness.
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.
from witness.
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?
from witness.
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
from witness.
In GitLab by @11775820 on Sep 23, 2021, 14:01
added 2 commits
- 64073bc4 - Revert "33: Review: Separate WorkoutOverviewScreen"
- e0ed28e0 - 33: Review: ExerciseTag -> MuscleGroup
from witness.
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.
from witness.
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.
from witness.
In GitLab by @11775820 on Sep 23, 2021, 14:02
Commented on client/lib/models/exercises/exercise_tag.dart line 1
-> e0ed28e0f9c487ea54c20ede107219c0d7f75844
from witness.
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?
from witness.
In GitLab by @11775820 on Sep 23, 2021, 18:16
added 1 commit
- 4ee8c158 - 33: Review: Add Log Exercise
from witness.
In GitLab by @11775820 on Sep 23, 2021, 18:17
Commented on client/lib/widgets/workouts/workout_overview_screen.dart line 71
yes.
-> 4ee8c158034052e625790b97e388f6f55e6b6973
from witness.
In GitLab by @11712616 on Sep 23, 2021, 18:38
resolved all threads
from witness.
In GitLab by @11712616 on Sep 23, 2021, 18:38
approved this merge request
from witness.
In GitLab by @11775820 on Sep 23, 2021, 20:37
added 1 commit
- 279701f - 33: Incorporate Review Suggestions
from witness.
In GitLab by @11775820 on Sep 23, 2021, 20:53
mentioned in commit 4cbef75
from witness.
Related Issues (20)
- 40: Copy Previously Logged Workout - [merged] HOT 118
- 62: Controller Logging Using Aspects - [merged] HOT 11
- Remove Return Values from Providers
- Minimize Payload in Exercise History HOT 1
- 25: Exercise History - [merged] HOT 19
- Descriptive README Files HOT 2
- Controlled Handling of Disposed ChangeNotifier HOT 1
- 66: Controlled Handling of Disposed ChangeNotifier - [merged] HOT 5
- 65: Descriptive README Files - [merged] HOT 83
- Add Cache Layer To Avoid Redundant Network Calls
- 24: Statistics per Exercise - [merged] HOT 50
- Milestone 2 - [merged] HOT 3
- [PLACEHOLDER] - for issue #1
- Set Up GitHub Actions and Workflows HOT 2
- Speed Up CI Pipeline
- Replace Logback’s Deprecated SizeAndTimeBasedFNATP Policy
- Migrate to Flutter 3.0 and Dart 2.17 HOT 1
- Simplify MapStruct Subclass Mappings
- Upgrade to Spring Boot 3.0
- Update UI to Material 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from witness.