Show monthly stats in calendar view
This commit is contained in:
@@ -212,6 +212,25 @@ def get_calendar(person_id):
|
|||||||
# Add view-specific data
|
# Add view-specific data
|
||||||
if selected_view == 'month':
|
if selected_view == 'month':
|
||||||
calendar_view_data['days'] = _process_workouts_for_month_view(grouped_workouts, start_date, end_date, selected_date)
|
calendar_view_data['days'] = _process_workouts_for_month_view(grouped_workouts, start_date, end_date, selected_date)
|
||||||
|
|
||||||
|
# Calculate summary stats for the selected month
|
||||||
|
total_workouts = 0
|
||||||
|
total_sets = 0
|
||||||
|
unique_exercises = set()
|
||||||
|
for workout_date, workouts in grouped_workouts.items():
|
||||||
|
if workout_date.month == selected_date.month and workout_date.year == selected_date.year:
|
||||||
|
total_workouts += len(workouts)
|
||||||
|
for workout in workouts.values():
|
||||||
|
total_sets += len(workout.get('sets', []))
|
||||||
|
for topset in workout.get('sets', []):
|
||||||
|
if topset.get('exercise_name'):
|
||||||
|
unique_exercises.add(topset.get('exercise_name'))
|
||||||
|
|
||||||
|
calendar_view_data['summary_stats'] = {
|
||||||
|
'total_workouts': total_workouts,
|
||||||
|
'total_sets': total_sets,
|
||||||
|
'total_exercises': len(unique_exercises)
|
||||||
|
}
|
||||||
elif selected_view == 'year':
|
elif selected_view == 'year':
|
||||||
calendar_view_data['months'] = _process_workouts_for_year_view(grouped_workouts, selected_date)
|
calendar_view_data['months'] = _process_workouts_for_year_view(grouped_workouts, selected_date)
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -39,7 +39,32 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mr-4">
|
<div class="flex items-center space-x-2 mr-4">
|
||||||
|
{% if view == 'month' %}
|
||||||
|
<div
|
||||||
|
class="hidden lg:flex items-center space-x-3 text-xs font-medium text-gray-500 border-l border-gray-200 pl-4 h-6">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<span class="text-blue-600 mr-1">{{ summary_stats.total_workouts }}</span>
|
||||||
|
<span class="uppercase tracking-wider">Workouts</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-center">
|
||||||
|
<span class="text-blue-600 mr-1">{{ summary_stats.total_sets }}</span>
|
||||||
|
<span class="uppercase tracking-wider">Sets</span>
|
||||||
|
</div>
|
||||||
|
{% if summary_stats.total_workouts > 0 %}
|
||||||
|
<div class="flex items-center">
|
||||||
|
<span class="text-blue-600 mr-1">{{ (summary_stats.total_sets / summary_stats.total_workouts) |
|
||||||
|
round(1) }}</span>
|
||||||
|
<span class="uppercase tracking-wider">Sets/Session</span>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="flex items-center">
|
||||||
|
<span class="text-blue-600 mr-1">{{ summary_stats.total_exercises }}</span>
|
||||||
|
<span class="uppercase tracking-wider">Exercises</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{{ render_partial('partials/custom_select.html',
|
{{ render_partial('partials/custom_select.html',
|
||||||
name='view',
|
name='view',
|
||||||
options=[
|
options=[
|
||||||
|
|||||||
Reference in New Issue
Block a user