Add 'Machine vs Free Weight' & 'Compound vs Isolation' breakdowns for workouts

This commit is contained in:
Peter Stockings
2026-01-31 13:11:21 +11:00
parent 8b276804b9
commit 9e20976591
5 changed files with 46 additions and 27 deletions

View File

@@ -124,8 +124,10 @@ def _get_workout_view_model(person_id, workout_id):
# Sort tags alphabetically by name for consistent display
workout_data["tags"].sort(key=lambda x: x.get('tag_name', ''))
# Add muscle group distribution
workout_data["muscle_distribution"] = db.exercises.get_workout_muscle_group_distribution(workout_id)
# Add multi-category breakdowns
workout_data["muscle_distribution"] = db.exercises.get_workout_attribute_distribution(workout_id, 'Muscle Group')
workout_data["equipment_distribution"] = db.exercises.get_workout_attribute_distribution(workout_id, 'Machine vs Free Weight')
workout_data["movement_distribution"] = db.exercises.get_workout_attribute_distribution(workout_id, 'Compound vs Isolation')
return workout_data
@@ -182,13 +184,15 @@ def get_workout_start_date(person_id, workout_id):
start_date = workout.get('start_date') if workout else None
return render_template('partials/start_date.html', person_id=person_id, workout_id=workout_id, start_date=start_date)
@workout_bp.route("/person/<int:person_id>/workout/<int:workout_id>/muscle_distribution", methods=['GET'])
def get_workout_muscle_distribution(person_id, workout_id):
distribution = db.exercises.get_workout_muscle_group_distribution(workout_id)
@workout_bp.route("/person/<int:person_id>/workout/<int:workout_id>/distribution", methods=['GET'])
def get_workout_distribution(person_id, workout_id):
category = request.args.get('category', 'Muscle Group')
distribution = db.exercises.get_workout_attribute_distribution(workout_id, category)
return render_template('partials/workout_breakdown.html',
person_id=person_id,
workout_id=workout_id,
muscle_distribution=distribution)
distribution=distribution,
category_name=category)
@workout_bp.route("/person/<int:person_id>/workout/<int:workout_id>/topset/<int:topset_id>/achievements", methods=['GET'])
@validate_topset