Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary of Changes Made Today
File: analytics-dashboard.js
Change: Added a dashed cyan line to the analytics dashboard chart to plot average total load values
Details:
Modified ensureChart() to add a 4th data series with label "Avg Total Load (${unit})" using a dashed line style (dash: [6, 6])
Updated buildChartData() to compute and return per-day averages
Modified chart initialization to support 4 data arrays instead of 3
File: analytics-dashboard.js
Change: Implemented per-day average load calculations for each exercise
Details:
buildSeriesForExercise() now accumulates per-workout averages by day
For each day, computes the mean of all per-workout averages (rather than a global average)
Tracks separate sums and counts for total, left, and right averages independently
Prefers stored JSON fields (averageLoad, averageLoadLeft, averageLoadRight) when available; falls back to rep-derived calculations when absent
Files: index.html, app.js
Changes: Added new UI button and backend logic to backfill missing average fields in Dropbox workout files
Details:
Added "Update Avgs to Old Workouts" button in the Connection panel (below "Rebuild PRs to Dropbox")
requestUpdateAveragesOldWorkouts(): User-facing method with confirmation prompt
updateAveragesOldWorkouts(): Main logic that:
Loads all workouts from Dropbox
Checks for missing averageLoad, averageLoadLeft, averageLoadRight fields
Calculates missing averages using calculateAverageLoadForWorkout()
Uploads updated workouts back to Dropbox with status messages
Files: dropbox.js, app.js
Changes: Added method to overwrite existing Dropbox files instead of creating duplicates
Details:
Added overwriteWorkout() method in dropbox.js that:
Uses _dropboxMetadata.path to identify original file location
Uses mode: { ".tag": "overwrite" } to replace the existing file
Preserves original filenames and Dropbox paths
Updated updateAveragesOldWorkouts() to call overwriteWorkout() instead of saveWorkout() when updating old workouts
File: app.js (existing completeWorkout())
Note: Already computes and stores averageLoad, averageLoadLeft, averageLoadRight in new workouts via calculateAverageLoadForWorkout() between warmup end time and workout end time (excluding warmup 3 reps)