If a workout was tracked with a hear rate monitor heart rate graph will be selected by default, and average bpm will be rendered as well
This commit is contained in:
18
app.py
18
app.py
@@ -299,6 +299,7 @@ def get_workouts_for_user(user_id):
|
|||||||
for workout in workouts:
|
for workout in workouts:
|
||||||
cadence_readings = CadenceReading.query.filter_by(
|
cadence_readings = CadenceReading.query.filter_by(
|
||||||
workout_id=workout.id).all()
|
workout_id=workout.id).all()
|
||||||
|
|
||||||
if cadence_readings:
|
if cadence_readings:
|
||||||
start_time = min(
|
start_time = min(
|
||||||
reading.created_at for reading in cadence_readings)
|
reading.created_at for reading in cadence_readings)
|
||||||
@@ -309,6 +310,18 @@ def get_workouts_for_user(user_id):
|
|||||||
reading.rpm for reading in cadence_readings) / len(cadence_readings)
|
reading.rpm for reading in cadence_readings) / len(cadence_readings)
|
||||||
calories = cadence_readings[-1].calories
|
calories = cadence_readings[-1].calories
|
||||||
distance = cadence_readings[-1].distance
|
distance = cadence_readings[-1].distance
|
||||||
|
|
||||||
|
selected_graph_types = ['speed']
|
||||||
|
is_heart_rate_available = False
|
||||||
|
heart_rate_readings = HeartRateReading.query.filter_by(
|
||||||
|
workout_id=workout.id).all()
|
||||||
|
average_bpm = 0
|
||||||
|
if heart_rate_readings:
|
||||||
|
selected_graph_types.append('heart_rate')
|
||||||
|
is_heart_rate_available = True
|
||||||
|
average_bpm = sum(heartrate.bpm for heartrate in heart_rate_readings) / \
|
||||||
|
len(heart_rate_readings)
|
||||||
|
|
||||||
workouts_data.append({
|
workouts_data.append({
|
||||||
'id': workout.id,
|
'id': workout.id,
|
||||||
'user_id': user_id,
|
'user_id': user_id,
|
||||||
@@ -319,7 +332,10 @@ def get_workouts_for_user(user_id):
|
|||||||
'average_rpm': int(average_rpm),
|
'average_rpm': int(average_rpm),
|
||||||
'calories': int(calories),
|
'calories': int(calories),
|
||||||
'distance': int(distance),
|
'distance': int(distance),
|
||||||
'bike_display_name': workout.bike.display_name
|
'bike_display_name': workout.bike.display_name,
|
||||||
|
'selected_graph_types': selected_graph_types,
|
||||||
|
'is_heart_rate_available': is_heart_rate_available,
|
||||||
|
'average_bpm': int(average_bpm)
|
||||||
})
|
})
|
||||||
return workouts_data
|
return workouts_data
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,8 @@
|
|||||||
|
|
||||||
<p class="text-sm text-gray-500">Duration: {{ w.duration }} | Average RPM: {{ w.average_rpm
|
<p class="text-sm text-gray-500">Duration: {{ w.duration }} | Average RPM: {{ w.average_rpm
|
||||||
}} |
|
}} |
|
||||||
Calories: {{ w.calories }} | Distance: {{ w.distance }}</p>
|
Calories: {{ w.calories }} | Distance: {{ w.distance }} {% if w.is_heart_rate_available
|
||||||
|
%} | Average: BPM: {{w.average_bpm }} {% endif %}</p>
|
||||||
</div>
|
</div>
|
||||||
<span
|
<span
|
||||||
class="ml-auto h-5 w-5 shrink-0 rotate-[-180deg] fill-[#336dec] transition-transform duration-200 ease-in-out group-[[data-te-collapse-collapsed]]:rotate-0 group-[[data-te-collapse-collapsed]]:fill-[#212529] motion-reduce:transition-none dark:fill-blue-300 dark:group-[[data-te-collapse-collapsed]]:fill-white">
|
class="ml-auto h-5 w-5 shrink-0 rotate-[-180deg] fill-[#336dec] transition-transform duration-200 ease-in-out group-[[data-te-collapse-collapsed]]:rotate-0 group-[[data-te-collapse-collapsed]]:fill-[#212529] motion-reduce:transition-none dark:fill-blue-300 dark:group-[[data-te-collapse-collapsed]]:fill-white">
|
||||||
@@ -93,7 +94,7 @@
|
|||||||
</h2>
|
</h2>
|
||||||
<div class="!visible collapse {% if loop.index != 1 %}hidden{% endif %}">
|
<div class="!visible collapse {% if loop.index != 1 %}hidden{% endif %}">
|
||||||
<div id="workout_view-{{ w.id }}">
|
<div id="workout_view-{{ w.id }}">
|
||||||
{% with workout=w, graph_types=['speed'] %}
|
{% with workout=w, graph_types=w['selected_graph_types'] %}
|
||||||
{% include 'workout_view.html' %}
|
{% include 'workout_view.html' %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user