summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/routes/basic.py20
-rw-r--r--app/templates/home.html75
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 %}