Add 'Machine vs Free Weight' & 'Compound vs Isolation' breakdowns for workouts
This commit is contained in:
@@ -78,18 +78,19 @@ class Exercises:
|
||||
|
||||
return self.get_exercise(exercise_id)
|
||||
|
||||
def get_workout_muscle_group_distribution(self, workout_id):
|
||||
def get_workout_attribute_distribution(self, workout_id, category_name):
|
||||
query = """
|
||||
SELECT attr.name as muscle_group, COUNT(*) as count
|
||||
SELECT attr.name as attribute_name, COUNT(*) as count
|
||||
FROM topset t
|
||||
JOIN exercise_to_attribute eta ON t.exercise_id = eta.exercise_id
|
||||
JOIN exercise e ON t.exercise_id = e.exercise_id
|
||||
JOIN exercise_to_attribute eta ON e.exercise_id = eta.exercise_id
|
||||
JOIN exercise_attribute attr ON eta.attribute_id = attr.attribute_id
|
||||
JOIN exercise_attribute_category cat ON attr.category_id = cat.category_id
|
||||
WHERE t.workout_id = %s AND cat.name = 'Muscle Group'
|
||||
WHERE t.workout_id = %s AND cat.name = %s
|
||||
GROUP BY attr.name
|
||||
ORDER BY count DESC
|
||||
"""
|
||||
distribution = self.execute(query, [workout_id])
|
||||
distribution = self.execute(query, [workout_id, category_name])
|
||||
|
||||
# Calculate percentages and SVG parameters
|
||||
total_counts = sum(item['count'] for item in distribution)
|
||||
@@ -105,6 +106,8 @@ class Exercises:
|
||||
"#10b981", # emerald-500
|
||||
"#6366f1", # indigo-500
|
||||
"#f43f5e", # rose-500
|
||||
"#84cc16", # lime-500
|
||||
"#0ea5e9", # sky-500
|
||||
]
|
||||
|
||||
if total_counts > 0:
|
||||
|
||||
Reference in New Issue
Block a user