diff options
Diffstat (limited to 'app')
| -rw-r--r-- | app/routes/basic.py | 20 | ||||
| -rw-r--r-- | app/templates/home.html | 75 |
2 files changed, 29 insertions, 66 deletions
diff --git a/app/routes/basic.py b/app/routes/basic.py index 0ef66f9..b211da7 100644 --- a/app/routes/basic.py +++ b/app/routes/basic.py @@ -1,7 +1,7 @@ from app import app, db from flask import render_template from flask_login import current_user, login_required -from tables import Workout, WorkoutRecord, SetRecord +from tables import Workout, Exercise, WorkoutRecord, SetRecord @app.route("/", methods=["GET"]) @@ -12,13 +12,14 @@ def index(): @app.route("/home", methods=["GET"]) @login_required def home(): - # Prepare so we don't have to do this in the template + # Workout records records = ( db.session.query(WorkoutRecord) .filter_by(user_id=current_user.id) .order_by(WorkoutRecord.finished.desc()) ) + # Set records length sets_completed = ( db.session.query(SetRecord, WorkoutRecord) .filter( @@ -28,4 +29,17 @@ def home(): .count() ) - return render_template("home.html", records=records, sets_completed=sets_completed) + # Top 3 exercises (by frequency) + top3 = ( + db.session.query(Exercise) + .join(SetRecord) + .filter(SetRecord.exercise_id == Exercise.id) + .group_by(Exercise.id) + .order_by(db.func.count(SetRecord.id).desc()) + .limit(3) + .all() + ) + + return render_template( + "home.html", records=records, sets_completed=sets_completed, top3=top3 + ) diff --git a/app/templates/home.html b/app/templates/home.html index 7bf951f..af365ad 100644 --- a/app/templates/home.html +++ b/app/templates/home.html @@ -125,79 +125,28 @@ </div> <div class="columns"> <div class="column is-4"> - <div class="card"> - <canvas id="chart-1"></canvas> - <footer class="card-footer"> - <p class="card-footer-item"> - <span> - Graph #1 - </span> - </p> - </footer> + <div class="box"> + <canvas id="chart-1"> </div> </div> <div class="column is-4"> - <div class="card"> - <div class="card-content"> - <p class="title"> - FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER - FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER - </p> - </div> - <footer class="card-footer"> - <p class="card-footer-item"> - <span> - Graph #2 - </span> - </p> - </footer> + <div class="box"> + <canvas id="chart-2"> </div> </div> <div class="column is-4"> - <div class="card"> - <div class="card-content"> - <p class="title"> - FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER - FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER FILLER - </p> - </div> - <footer class="card-footer"> - <p class="card-footer-item"> - <span> - Graph #3 - </span> - </p> - </footer> + <div class="box"> + <canvas id="chart-3"> </div> </div> </div> </div> -<script> - -const ctx = document.getElementById('chart-1'); -const myChart = new Chart(ctx, { - type: 'line', - data: { - labels: ['01/01/22', '01/02/22', '02/01/22', '03/01/22', '04/01/22', '05/01/22', '06/01/22', '07/01/22'], - datasets: [{ - label: 'Bench Press', - data: [125, 145, 185, 185, 200, 205, 205], - borderWidth: 1, - cubicInterpolationMode: 'monotone', - tension: 0.4, - pointStyle: 'circle', - pointRadius: 5, - pointHoverRadius: 10 - }] - }, - options: { - scales: { - y: { - beginAtZero: true - } - } - } -}); +<script type="text/javascript" src="/static/js/chart.js"></script> +<script> +// TODO top 3 + exercise_chart('chart-1', {{ top3[0].id }}, "{{ top3[0].name }}"); + exercise_chart('chart-2', {{ top3[1].id }}, "{{ top3[1].name }}"); + exercise_chart('chart-3', {{ top3[2].id }}, "{{ top3[2].name }}"); </script> {% endblock %} |
