Skip to content

Commit 49cdfe8

Browse files
ISSUE-24: Get rid of highest heart rates
1 parent d266fb0 commit 49cdfe8

File tree

26 files changed

+198
-605
lines changed

26 files changed

+198
-605
lines changed

src/Domain/Strava/Activity/Stream/ActivityHeartRateRepository.php

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,8 @@
99

1010
interface ActivityHeartRateRepository
1111
{
12-
public const TIME_INTERVAL_IN_SECONDS = [5, 10, 30, 60, 300, 480, 1200, 3600];
13-
1412
public function findTotalTimeInSecondsInHeartRateZone(HeartRateZone $heartRateZone): int;
1513

16-
/**
17-
* @return HeartRate[]
18-
*/
19-
public function findHighest(): array;
20-
2114
/**
2215
* @return array<int, int>
2316
*/

src/Domain/Strava/Activity/Stream/StreamBasedActivityHeartRateRepository.php

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
use App\Domain\Strava\Activity\ActivityRepository;
99
use App\Domain\Strava\Athlete\AthleteBirthday;
1010
use App\Domain\Strava\Athlete\HeartRateZone;
11-
use App\Infrastructure\Exception\EntityNotFound;
12-
use Carbon\CarbonInterval;
1311

1412
final class StreamBasedActivityHeartRateRepository implements ActivityHeartRateRepository
1513
{
@@ -30,37 +28,6 @@ public function findTotalTimeInSecondsInHeartRateZone(HeartRateZone $heartRateZo
3028
return array_sum(array_map(fn (array $heartRateZones) => $heartRateZones[$heartRateZone->value], $cachedHeartRateZones));
3129
}
3230

33-
/**
34-
* @return HeartRate[]
35-
*/
36-
public function findHighest(): array
37-
{
38-
/** @var HeartRate[] $best */
39-
$best = [];
40-
41-
foreach (self::TIME_INTERVAL_IN_SECONDS as $timeIntervalInSeconds) {
42-
try {
43-
$stream = $this->activityStreamRepository->findWithBestAverageFor(
44-
intervalInSeconds: $timeIntervalInSeconds,
45-
streamType: StreamType::HEART_RATE
46-
);
47-
} catch (EntityNotFound) {
48-
continue;
49-
}
50-
51-
$activity = $this->activityRepository->find($stream->getActivityId());
52-
$interval = CarbonInterval::seconds($timeIntervalInSeconds);
53-
54-
$best[$timeIntervalInSeconds] = HeartRate::fromState(
55-
time: (int) $interval->totalHours ? $interval->totalHours.' h' : ((int) $interval->totalMinutes ? $interval->totalMinutes.' m' : $interval->totalSeconds.' s'),
56-
rate: $stream->getBestAverages()[$timeIntervalInSeconds],
57-
activity: $activity,
58-
);
59-
}
60-
61-
return $best;
62-
}
63-
6431
/**
6532
* @return array<int, int>
6633
*/

src/Domain/Strava/BuildHtmlVersion/BuildHtmlVersionCommandHandler.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,6 @@ public function handle(Command $command): void
236236
timeInSecondsInHeartRateZoneFive: $this->activityHeartRateRepository->findTotalTimeInSecondsInHeartRateZone(HeartRateZone::FIVE),
237237
)->build(),
238238
),
239-
'heartRates' => $this->activityHeartRateRepository->findHighest(),
240239
'challengeConsistency' => ChallengeConsistency::create(
241240
months: $allMonths,
242241
monthlyStatistics: $monthlyStatistics,
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
{% set convertedMeasurement = measurement|convertMeasurement %}
22
{% autoescape false %}
3-
{{ convertedMeasurement.toFloat()|formatNumber(precision) }}
4-
<span class="text-xs">{{ convertedMeasurement.getSymbol() }}{{ symbolSuffix ? ' '~symbolSuffix : '' }}</span>
3+
{{ convertedMeasurement.toFloat()|formatNumber(precision) }}<span class="text-xs">{{ convertedMeasurement.getSymbol() }}{{ symbolSuffix ? ' '~symbolSuffix : '' }}</span>
54
{% endautoescape %}

templates/html/dashboard.html.twig

Lines changed: 7 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -180,47 +180,12 @@
180180
</table>
181181
</div>
182182
</div>
183-
<!-- HIGHEST HEART RATES -->
183+
<!-- HEART RATE ZONES -->
184184
<div class="p-4 mb-4 bg-white border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 sm:p-6 dark:bg-gray-800">
185185
<h3 class="mb-4 text-lg font-semibold">
186-
Highest heart rate over time
186+
Heart rate zones
187187
</h3>
188-
<div class="relative overflow-x-auto">
189-
<table class="w-full text-sm text-center text-gray-500 dark:text-gray-400">
190-
<thead class="text-xs text-gray-700 uppercase bg-gray-50 dark:bg-gray-700 dark:text-gray-400">
191-
<tr>
192-
<th scope="col" class="px-6 py-3 sticky left-0 bg-gray-50 dark:bg-gray-700">
193-
<div class="flex items-center justify-center">
194-
{{ renderSvg('time') }}
195-
</div>
196-
</th>
197-
<th scope="col" class="px-2 py-3">
198-
<div class="flex items-center justify-center">
199-
{{ renderSvg('heart-rate') }}
200-
</div>
201-
</th>
202-
<th>
203-
204-
</th>
205-
</tr>
206-
</thead>
207-
<tbody>
208-
{% for heartRate in heartRates %}
209-
<tr class="bg-white border-b dark:bg-gray-800 dark:border-gray-700">
210-
<td class="px-6 py-2 sticky left-0 bg-white dark:bg-gray-800 font-medium text-gray-900 whitespace-nowrap dark:text-white">
211-
{{ heartRate.getTime() }}
212-
</td>
213-
<td class="px-2 py-2">
214-
{{ heartRate.getRate() }}<span class="text-xs">bpm</span>
215-
</td>
216-
<td class="px-6 py-2 text-left truncate">
217-
{{ renderComponent('activity-title', {'activity': heartRate.getActivity()}) }}
218-
</td>
219-
</tr>
220-
{% endfor %}
221-
</tbody>
222-
</table>
223-
</div>
188+
<div class="h-80" data-echarts-options='{{ timeInHeartRateZoneChart }}'></div>
224189
</div>
225190
</div>
226191
<!-- ACTIVITY HEATMAP -->
@@ -656,13 +621,6 @@
656621
</div>
657622
</div>
658623
<div class="grid grid-cols-1 xl:grid-cols-2 gap-4 mb-4">
659-
<!-- HEART RATE ZONES -->
660-
<div class="p-4 mb-4 bg-white border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 sm:p-6 dark:bg-gray-800">
661-
<h3 class="mb-4 text-lg font-semibold">
662-
Heart rate zones
663-
</h3>
664-
<div class="h-80" data-echarts-options='{{ timeInHeartRateZoneChart }}'></div>
665-
</div>
666624
<!-- CHALLENGE CONSISTENCY -->
667625
<div class="p-4 mb-4 bg-white border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 sm:p-6 dark:bg-gray-800">
668626
<h3 class="mb-4 text-lg font-semibold">
@@ -704,17 +662,15 @@
704662
</table>
705663
</div>
706664
</div>
707-
</div>
708-
<!-- FTP HISTORY -->
709-
{% if ftpHistoryChart is not empty %}
710-
<div class="grid grid-cols-1 gap-4 mb-4">
665+
{% if ftpHistoryChart is not empty %}
666+
<!-- FTP HISTORY -->
711667
<div class="p-4 mb-4 bg-white border border-gray-200 rounded-lg shadow-sm dark:border-gray-700 sm:p-6 dark:bg-gray-800">
712668
<h3 class="mb-4 text-lg font-semibold">
713669
FTP history
714670
</h3>
715671
<div class="h-64" data-echarts-options='{{ ftpHistoryChart }}'></div>
716672
</div>
717-
</div>
718-
{% endif %}
673+
{% endif %}
674+
</div>
719675
{% endautoescape %}
720676
{% endblock %}

tests/Domain/Strava/BuildHtmlVersion/__snapshots__/BuildHtmlVersionCommandHandlerTest--testHandle--buildhtmlactivityactivity-8756441741.html.html

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
3131
<div class="flex flex-col items-center justify-center px-2 py-2 border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-600">
3232
<div class="text-center">
3333
<dd class="text-xs text-gray-500 dark:text-gray-400">Distance</dd>
34-
<dt class="font-extrabold">34
35-
<span class="text-xs">km</span>
34+
<dt class="font-extrabold">34<span class="text-xs">km</span>
3635
</dt>
3736
</div>
3837
</div>
@@ -45,8 +44,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
4544
<div class="flex flex-col items-center justify-center px-2 py-2 border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-600">
4645
<div class="text-center">
4746
<dd class="text-xs text-gray-500 dark:text-gray-400">Elevation</dd>
48-
<dt class="font-extrabold">278
49-
<span class="text-xs">m</span>
47+
<dt class="font-extrabold">278<span class="text-xs">m</span>
5048
</dt>
5149
</div>
5250
</div>
@@ -130,8 +128,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
130128
Avg
131129
</th>
132130
<td class="px-2 py-2 text-sm">
133-
31.9
134-
<span class="text-xs">km/h</span>
131+
31.9<span class="text-xs">km/h</span>
135132

136133
</td>
137134
<td class="px-2 py-2 text-sm">
@@ -149,8 +146,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
149146
Max
150147
</th>
151148
<td class="px-2 py-2 text-sm">
152-
76.8
153-
<span class="text-xs">km/h</span>
149+
76.8<span class="text-xs">km/h</span>
154150

155151
</td>
156152
<td class="px-2 py-2 text-sm">

tests/Domain/Strava/BuildHtmlVersion/__snapshots__/BuildHtmlVersionCommandHandlerTest--testHandle--buildhtmlactivityactivity-87726441741.html.html

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
3131
<div class="flex flex-col items-center justify-center px-2 py-2 border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-600">
3232
<div class="text-center">
3333
<dd class="text-xs text-gray-500 dark:text-gray-400">Distance</dd>
34-
<dt class="font-extrabold">0
35-
<span class="text-xs">km</span>
34+
<dt class="font-extrabold">0<span class="text-xs">km</span>
3635
</dt>
3736
</div>
3837
</div>
@@ -45,8 +44,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
4544
<div class="flex flex-col items-center justify-center px-2 py-2 border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-600">
4645
<div class="text-center">
4746
<dd class="text-xs text-gray-500 dark:text-gray-400">Elevation</dd>
48-
<dt class="font-extrabold">278
49-
<span class="text-xs">m</span>
47+
<dt class="font-extrabold">278<span class="text-xs">m</span>
5048
</dt>
5149
</div>
5250
</div>
@@ -130,8 +128,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
130128
Avg
131129
</th>
132130
<td class="px-2 py-2 text-sm">
133-
31.9
134-
<span class="text-xs">km/h</span>
131+
31.9<span class="text-xs">km/h</span>
135132

136133
</td>
137134
<td class="px-2 py-2 text-sm">
@@ -149,8 +146,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
149146
Max
150147
</th>
151148
<td class="px-2 py-2 text-sm">
152-
76.8
153-
<span class="text-xs">km/h</span>
149+
76.8<span class="text-xs">km/h</span>
154150

155151
</td>
156152
<td class="px-2 py-2 text-sm">

tests/Domain/Strava/BuildHtmlVersion/__snapshots__/BuildHtmlVersionCommandHandlerTest--testHandle--buildhtmlactivityactivity-87756441741.html.html

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
3131
<div class="flex flex-col items-center justify-center px-2 py-2 border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-600">
3232
<div class="text-center">
3333
<dd class="text-xs text-gray-500 dark:text-gray-400">Distance</dd>
34-
<dt class="font-extrabold">0
35-
<span class="text-xs">km</span>
34+
<dt class="font-extrabold">0<span class="text-xs">km</span>
3635
</dt>
3736
</div>
3837
</div>
@@ -45,8 +44,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
4544
<div class="flex flex-col items-center justify-center px-2 py-2 border border-gray-200 rounded-lg shadow dark:bg-gray-800 dark:border-gray-600">
4645
<div class="text-center">
4746
<dd class="text-xs text-gray-500 dark:text-gray-400">Elevation</dd>
48-
<dt class="font-extrabold">278
49-
<span class="text-xs">m</span>
47+
<dt class="font-extrabold">278<span class="text-xs">m</span>
5048
</dt>
5149
</div>
5250
</div>
@@ -130,8 +128,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
130128
Avg
131129
</th>
132130
<td class="px-2 py-2 text-sm">
133-
31.9
134-
<span class="text-xs">km/h</span>
131+
31.9<span class="text-xs">km/h</span>
135132

136133
</td>
137134
<td class="px-2 py-2 text-sm">
@@ -149,8 +146,7 @@ <h3 class="max-w-[30%] sm:max-w-[50%] md:max-w-[100%] truncate text-lg font-semi
149146
Max
150147
</th>
151148
<td class="px-2 py-2 text-sm">
152-
76.8
153-
<span class="text-xs">km/h</span>
149+
76.8<span class="text-xs">km/h</span>
154150

155151
</td>
156152
<td class="px-2 py-2 text-sm">

0 commit comments

Comments
 (0)