From ac0463db9a00b8d5fcd570d18e86c9ba62851365 Mon Sep 17 00:00:00 2001 From: stilbruch Date: Wed, 4 May 2022 19:09:29 -0500 Subject: Progress on progress api endpoint --- app/routes/api.py | 33 ++++++++++++++++++++++++++------- app/routes/progress.py | 8 +++----- app/routes/workout.py | 1 + app/static/js/chart.js | 9 +++++---- app/templates/progress/exercise.html | 22 +++------------------- app/templates/workout/record.html | 1 + 6 files changed, 39 insertions(+), 35 deletions(-) diff --git a/app/routes/api.py b/app/routes/api.py index 6a95ca2..77ebdcf 100644 --- a/app/routes/api.py +++ b/app/routes/api.py @@ -1,7 +1,7 @@ from app import app, db from flask import redirect, request, jsonify from flask_login import current_user, login_required -from tables import Workout +from tables import Exercise, SetRecord, Workout, WorkoutRecord @app.route("/api/workout/delete", methods=["GET"]) @@ -20,11 +20,30 @@ def api_workout_delete(): return redirect("/home") -@app.route("/api/progress/exercise", methods=["GET"]) +@app.route("/api/progress/exercise/", methods=["GET"]) @login_required -def api_progress_exercise(): - if "id" not in request.args: - return redirect("/home") +def api_progress_exercise(exercise_id=None): + # Get exercise from database NOTE: consider adding userid to exercise + exercise = ( + db.session.query(Exercise) + .filter_by(id=exercise_id) + .join(Workout, Workout.user_id == current_user.id) + .first() + ) + if not exercise: + return redirect(url_for("home")) + + results = ( + db.session.query(WorkoutRecord.id, db.func.max(SetRecord.lbs)) + # .join(SetRecord.workout_record_id == WorkoutRecord.id) + .filter( + SetRecord.exercise_id == exercise_id, + WorkoutRecord.user_id == current_user.id, + SetRecord.workout_record_id == WorkoutRecord.id, + ).group_by(WorkoutRecord.id) + ).all() + + print(results) - # FIXME - return jsonify() + # TODO doesnt work + return jsonify(results) diff --git a/app/routes/progress.py b/app/routes/progress.py index 8040fdc..7b451ed 100644 --- a/app/routes/progress.py +++ b/app/routes/progress.py @@ -7,12 +7,10 @@ from tables import Exercise, Workout @app.route("/progress/exercise/") @login_required def progress_exercise(exercise_id=None): - # FIXME - exercise = ( - db.session.query(Workout, Exercise) - .filter(Exercise.id == exercise_id) - .filter(Workout.user_id == current_user.id) + db.session.query(Exercise) + .filter_by(id=exercise_id) + .join(Workout, Workout.user_id == current_user.id) .first() ) if not exercise: diff --git a/app/routes/workout.py b/app/routes/workout.py index 5eb18d9..8f58aa3 100644 --- a/app/routes/workout.py +++ b/app/routes/workout.py @@ -131,6 +131,7 @@ def workout_record(workout_id=None): return redirect(url_for("home")) else: + print(form.errors) # Populate form with data for exercise in workout.exercises: form.exercises.append_entry( diff --git a/app/static/js/chart.js b/app/static/js/chart.js index d72d415..06edc4d 100644 --- a/app/static/js/chart.js +++ b/app/static/js/chart.js @@ -1,7 +1,6 @@ - -function fillChart(id) { - const ctx = document.getElementById(id) - new Chart(document.getElementById('exercise_chart'), { +function exercise_chart(elem_id, exercise_id) { + // Create initial chart + let chart = new Chart(document.getElementById(elem_id), { type: 'line', data: { cubicInterpolationMode: 'monotone', @@ -18,4 +17,6 @@ function fillChart(id) { } } }); + + // Load chart data for exercise } diff --git a/app/templates/progress/exercise.html b/app/templates/progress/exercise.html index 51149fc..e66618f 100644 --- a/app/templates/progress/exercise.html +++ b/app/templates/progress/exercise.html @@ -1,11 +1,10 @@ {% extends 'base/layout.html' %} -{% block title %}{{ exercise.name }} Progress{% endblock %} - {% block content %}
+

{{ exercise.name }}

@@ -13,24 +12,9 @@
+ {% endblock %} diff --git a/app/templates/workout/record.html b/app/templates/workout/record.html index 9e93805..9b10f2d 100644 --- a/app/templates/workout/record.html +++ b/app/templates/workout/record.html @@ -5,6 +5,7 @@ {% block form %}
{% for exercise in workout.exercises %} + {{ form.exercises.entries[loop.index0]['id'] }}

{{ exercise.name }}

-- cgit v1.2.3