Refactor exercise progress

This commit is contained in:
Peter Stockings
2023-12-07 21:58:13 +11:00
parent 28b76e306f
commit 2bdbda3a05
2 changed files with 46 additions and 48 deletions

37
app.py
View File

@@ -1,7 +1,7 @@
from datetime import datetime, date, timedelta
from dateutil.relativedelta import relativedelta
import os
from flask import Flask, render_template, redirect, request, url_for
from flask import Flask, abort, render_template, redirect, request, url_for
from jinja2 import Environment, FileSystemLoader, select_autoescape
import jinja_partials
from jinja2_fragments import render_block
@@ -432,37 +432,12 @@ def calculate_relative_positions(start_dates):
@ app.route("/person/<int:person_id>/exercise/<int:exercise_id>/sparkline", methods=['GET'])
def get_exercise_progress_for_user(person_id, exercise_id):
width = request.args.get('width', 300, type=int)
height = request.args.get('height', 100, type=int)
(estimated_1rm, start_dates, messages) = db.get_exercise_progress_for_user(person_id, exercise_id)
exercise_progress = db.get_exercise_progress_for_user(person_id, exercise_id)
# Calculate vb_width
min_date = min(start_dates)
max_date = max(start_dates)
date_range = (max_date - min_date).days # e.g., 30 days
vb_width = date_range # This can be scaled if needed
# Calculate vb_height
min_value = min(estimated_1rm)
max_value = max(estimated_1rm)
value_range = max_value - min_value # e.g., 100
vb_height = value_range # This can be scaled if needed
# Scaling factors (optional, for design)
width_scaling_factor = 200 / vb_width # e.g., if you want 200px width
height_scaling_factor = 75 / vb_height # e.g., if you want 100px height
# Apply scaling
vb_width *= width_scaling_factor
vb_height *= height_scaling_factor
# Scale estimated_1rm between 0 and vb_height
estimated_1rm = [((value - min_value) / value_range) * vb_height for value in estimated_1rm]
relative_positions = calculate_relative_positions(start_dates)
data_points = list(zip(estimated_1rm, relative_positions, messages))
return render_template('partials/sparkline.html', title="GHR", vb_width=vb_width, vb_height=vb_height, data_points=data_points)
if not exercise_progress:
abort(404)
return render_template('partials/sparkline.html', **exercise_progress)
@app.teardown_appcontext