Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions migrations/Version20260309114023.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?php

declare(strict_types=1);

namespace DoctrineMigrations;

use App\Infrastructure\Serialization\Json;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

final class Version20260309114023 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}

public function up(Schema $schema): void
{
$this->addSql('ALTER TABLE Segment ADD COLUMN averageGradient DOUBLE PRECISION DEFAULT NULL');
}

public function postUp(Schema $schema): void
{
$averageGrades = [];

$result = $this->connection->executeQuery(
"SELECT data FROM Activity WHERE data IS NOT NULL AND JSON_EXTRACT(data, '$.segment_efforts') IS NOT NULL"
);

while ($row = $result->fetchAssociative()) {
$data = Json::decode($row['data']);
foreach ($data['segment_efforts'] ?? [] as $effort) {
$segmentId = 'segment-'.$effort['segment']['id'];
if (isset($averageGrades[$segmentId])) {
continue;
}
if (!isset($effort['segment']['average_grade'])) {
continue;
}
$averageGrades[$segmentId] = $effort['segment']['average_grade'];
}
}

foreach ($averageGrades as $segmentId => $averageGrade) {
$this->connection->executeStatement(
'UPDATE Segment SET averageGradient = :averageGradient WHERE segmentId = :segmentId',
[
'averageGradient' => $averageGrade,
'segmentId' => $segmentId,
]
);
}
}

public function down(Schema $schema): void
{
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ public function process(OutputInterface $output): void
climbCategory: $activitySegment['climb_category'] ?? null,
deviceName: $activity->getDeviceName(),
countryCode: $countryCode,
averageGradient: $activitySegment['average_grade'] ?? null,
);
$this->segmentRepository->add($segment);
++$countSegmentsAdded;
Expand Down
6 changes: 4 additions & 2 deletions src/Domain/Segment/DbalSegmentRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ public function add(Segment $segment): void
{
$sql = 'INSERT INTO Segment (segmentId, name, sportType, distance, maxGradient, isFavourite,
deviceName, climbCategory, countryCode, detailsHaveBeenImported, polyline,
startingCoordinateLatitude, startingCoordinateLongitude)
startingCoordinateLatitude, startingCoordinateLongitude, averageGradient)
VALUES (:segmentId, :name, :sportType, :distance, :maxGradient, :isFavourite,
:deviceName, :climbCategory, :countryCode, :detailsHaveBeenImported, :polyline,
:startingCoordinateLatitude, :startingCoordinateLongitude)';
:startingCoordinateLatitude, :startingCoordinateLongitude, :averageGradient)';

$this->connection->executeStatement($sql, [
'segmentId' => $segment->getId(),
Expand All @@ -40,6 +40,7 @@ public function add(Segment $segment): void
'polyline' => null,
'startingCoordinateLatitude' => null,
'startingCoordinateLongitude' => null,
'averageGradient' => $segment->getAverageGradient(),
]);
}

Expand Down Expand Up @@ -134,6 +135,7 @@ private function hydrate(array $result): Segment
Latitude::fromOptionalString((string) $result['startingCoordinateLatitude']),
Longitude::fromOptionalString((string) $result['startingCoordinateLongitude'])
),
averageGradient: isset($result['averageGradient']) ? (float) $result['averageGradient'] : null,
);
}

Expand Down
13 changes: 12 additions & 1 deletion src/Domain/Segment/Segment.php
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ private function __construct(
private readonly ?EncodedPolyline $polyline,
#[ORM\Embedded(class: Coordinate::class)]
private readonly ?Coordinate $startingCoordinate,
#[ORM\Column(type: 'float', nullable: true)]
private readonly ?float $averageGradient,
) {
}

Expand All @@ -64,6 +66,7 @@ public static function create(
?int $climbCategory,
?string $deviceName,
?string $countryCode,
?float $averageGradient,
): self {
return new self(
segmentId: $segmentId,
Expand All @@ -78,6 +81,7 @@ public static function create(
detailsHaveBeenImported: false,
polyline: null,
startingCoordinate: null,
averageGradient: $averageGradient,
);
}

Expand All @@ -94,6 +98,7 @@ public static function fromState(
bool $detailsHaveBeenImported,
?EncodedPolyline $polyline,
?Coordinate $startingCoordinate,
?float $averageGradient,
): self {
return new self(
segmentId: $segmentId,
Expand All @@ -108,6 +113,7 @@ public static function fromState(
detailsHaveBeenImported: $detailsHaveBeenImported,
polyline: $polyline,
startingCoordinate: $startingCoordinate,
averageGradient: $averageGradient,
);
}

Expand Down Expand Up @@ -150,6 +156,11 @@ public function getMaxGradient(): float
return $this->maxGradient;
}

public function getAverageGradient(): ?float
{
return $this->averageGradient;
}

public function getSportType(): SportType
{
return $this->sportType;
Expand Down Expand Up @@ -309,7 +320,7 @@ public function getSortables(): array
return array_filter([
'name' => (string) $this->getName(),
'distance' => round($this->getDistance()->toFloat(), 2),
'max-gradient' => $this->getMaxGradient(),
'average-gradient' => $this->getAverageGradient(),
'ride-count' => $this->getNumberOfTimesRidden(),
'last-effort-date' => $this->getLastEffortDate()?->getTimestamp(),
]);
Expand Down
2 changes: 1 addition & 1 deletion templates/html/segment/segment-data-table-row.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
{{ segment.getDistance()|renderMeasurement(2) }}
</td>
<td class="px-2 py-2">
{{ segment.getMaxGradient() }}<span class="text-xs">%</span>
{{ segment.getAverageGradient() }}<span class="text-xs">%</span>
</td>
<td class="px-2 py-2">
{{ segment.getNumberOfTimesRidden() }}
Expand Down
7 changes: 6 additions & 1 deletion templates/html/segment/segment.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,12 @@
<div class="text-xs text-gray-500">{{ segment.getDistance().getSymbol() }}</div>
</li>
<li class="flex items-center gap-x-0.5 px-2" title="Max gradient">
{{ svg('max-gradient') }}
{{ svg('percentage') }}
<div>{{ segment.getAverageGradient() }}</div>
<div class="text-xs text-gray-500">{{ "average gradient"|trans }}</div>
</li>
<li class="flex items-center gap-x-0.5 px-2" title="Max gradient">
{{ svg('percentage') }}
<div>{{ segment.getMaxGradient() }}</div>
<div class="text-xs text-gray-500">{{ "max gradient"|trans }}</div>
</li>
Expand Down
4 changes: 2 additions & 2 deletions templates/html/segment/segments.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,9 @@
{{ svg('sorting-icon') }}
</div>
</th>
<th scope="col" data-dataTable-sort="max-gradient" class="px-2 py-3 cursor-pointer" title="{{ "Max gradient"|trans }}">
<th scope="col" data-dataTable-sort="average-gradient" class="px-2 py-3 cursor-pointer" title="{{ "Average gradient"|trans }}">
<div class="flex items-center justify-center">
{{ svg('max-gradient') }}
{{ svg('percentage') }}
{{ svg('sorting-icon') }}
</div>
</th>
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ <h3>
<div>0.10</div>
<div class="text-xs text-gray-500">km</div>
</li>
<li class="flex items-center gap-x-0.5 px-2" title="Max gradient">
<svg class="w-6 text-strava-orange" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill="currentColor" d="M7.75781,10.75781a3,3,0,1,0-3-3A3.00328,3.00328,0,0,0,7.75781,10.75781Zm0-4a1,1,0,1,1-1,1A1.00067,1.00067,0,0,1,7.75781,6.75781Zm8.48438,6.48438a3,3,0,1,0,3,3A3.00328,3.00328,0,0,0,16.24219,13.24219Zm0,4a1,1,0,1,1,1-1A1.00067,1.00067,0,0,1,16.24219,17.24219ZM19.707,4.293a.99962.99962,0,0,0-1.41406,0l-14,14A.99989.99989,0,1,0,5.707,19.707l14-14A.99962.99962,0,0,0,19.707,4.293Z"></path></svg>
<div>2.7</div>
<div class="text-xs text-gray-500">average gradient</div>
</li>
<li class="flex items-center gap-x-0.5 px-2" title="Max gradient">
<svg class="w-6 text-strava-orange" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill="currentColor" d="M7.75781,10.75781a3,3,0,1,0-3-3A3.00328,3.00328,0,0,0,7.75781,10.75781Zm0-4a1,1,0,1,1-1,1A1.00067,1.00067,0,0,1,7.75781,6.75781Zm8.48438,6.48438a3,3,0,1,0,3,3A3.00328,3.00328,0,0,0,16.24219,13.24219Zm0,4a1,1,0,1,1,1-1A1.00067,1.00067,0,0,1,16.24219,17.24219ZM19.707,4.293a.99962.99962,0,0,0-1.41406,0l-14,14A.99989.99989,0,1,0,5.707,19.707l14-14A.99962.99962,0,0,0,19.707,4.293Z"></path></svg>
<div>5.3</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ <h3>
<div>0.10</div>
<div class="text-xs text-gray-500">km</div>
</li>
<li class="flex items-center gap-x-0.5 px-2" title="Max gradient">
<svg class="w-6 text-strava-orange" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill="currentColor" d="M7.75781,10.75781a3,3,0,1,0-3-3A3.00328,3.00328,0,0,0,7.75781,10.75781Zm0-4a1,1,0,1,1-1,1A1.00067,1.00067,0,0,1,7.75781,6.75781Zm8.48438,6.48438a3,3,0,1,0,3,3A3.00328,3.00328,0,0,0,16.24219,13.24219Zm0,4a1,1,0,1,1,1-1A1.00067,1.00067,0,0,1,16.24219,17.24219ZM19.707,4.293a.99962.99962,0,0,0-1.41406,0l-14,14A.99989.99989,0,1,0,5.707,19.707l14-14A.99962.99962,0,0,0,19.707,4.293Z"></path></svg>
<div>2.7</div>
<div class="text-xs text-gray-500">average gradient</div>
</li>
<li class="flex items-center gap-x-0.5 px-2" title="Max gradient">
<svg class="w-6 text-strava-orange" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill="currentColor" d="M7.75781,10.75781a3,3,0,1,0-3-3A3.00328,3.00328,0,0,0,7.75781,10.75781Zm0-4a1,1,0,1,1-1,1A1.00067,1.00067,0,0,1,7.75781,6.75781Zm8.48438,6.48438a3,3,0,1,0,3,3A3.00328,3.00328,0,0,0,16.24219,13.24219Zm0,4a1,1,0,1,1,1-1A1.00067,1.00067,0,0,1,16.24219,17.24219ZM19.707,4.293a.99962.99962,0,0,0-1.41406,0l-14,14A.99989.99989,0,1,0,5.707,19.707l14-14A.99962.99962,0,0,0,19.707,4.293Z"></path></svg>
<div>5.3</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ <h3>
<div>0.10</div>
<div class="text-xs text-gray-500">km</div>
</li>
<li class="flex items-center gap-x-0.5 px-2" title="Max gradient">
<svg class="w-6 text-strava-orange" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill="currentColor" d="M7.75781,10.75781a3,3,0,1,0-3-3A3.00328,3.00328,0,0,0,7.75781,10.75781Zm0-4a1,1,0,1,1-1,1A1.00067,1.00067,0,0,1,7.75781,6.75781Zm8.48438,6.48438a3,3,0,1,0,3,3A3.00328,3.00328,0,0,0,16.24219,13.24219Zm0,4a1,1,0,1,1,1-1A1.00067,1.00067,0,0,1,16.24219,17.24219ZM19.707,4.293a.99962.99962,0,0,0-1.41406,0l-14,14A.99989.99989,0,1,0,5.707,19.707l14-14A.99962.99962,0,0,0,19.707,4.293Z"></path></svg>
<div>2.7</div>
<div class="text-xs text-gray-500">average gradient</div>
</li>
<li class="flex items-center gap-x-0.5 px-2" title="Max gradient">
<svg class="w-6 text-strava-orange" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill="currentColor" d="M7.75781,10.75781a3,3,0,1,0-3-3A3.00328,3.00328,0,0,0,7.75781,10.75781Zm0-4a1,1,0,1,1-1,1A1.00067,1.00067,0,0,1,7.75781,6.75781Zm8.48438,6.48438a3,3,0,1,0,3,3A3.00328,3.00328,0,0,0,16.24219,13.24219Zm0,4a1,1,0,1,1,1-1A1.00067,1.00067,0,0,1,16.24219,17.24219ZM19.707,4.293a.99962.99962,0,0,0-1.41406,0l-14,14A.99989.99989,0,1,0,5.707,19.707l14-14A.99962.99962,0,0,0,19.707,4.293Z"></path></svg>
<div>5.3</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ <h3>
<div>0.11</div>
<div class="text-xs text-gray-500">km</div>
</li>
<li class="flex items-center gap-x-0.5 px-2" title="Max gradient">
<svg class="w-6 text-strava-orange" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill="currentColor" d="M7.75781,10.75781a3,3,0,1,0-3-3A3.00328,3.00328,0,0,0,7.75781,10.75781Zm0-4a1,1,0,1,1-1,1A1.00067,1.00067,0,0,1,7.75781,6.75781Zm8.48438,6.48438a3,3,0,1,0,3,3A3.00328,3.00328,0,0,0,16.24219,13.24219Zm0,4a1,1,0,1,1,1-1A1.00067,1.00067,0,0,1,16.24219,17.24219ZM19.707,4.293a.99962.99962,0,0,0-1.41406,0l-14,14A.99989.99989,0,1,0,5.707,19.707l14-14A.99962.99962,0,0,0,19.707,4.293Z"></path></svg>
<div>2.7</div>
<div class="text-xs text-gray-500">average gradient</div>
</li>
<li class="flex items-center gap-x-0.5 px-2" title="Max gradient">
<svg class="w-6 text-strava-orange" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill="currentColor" d="M7.75781,10.75781a3,3,0,1,0-3-3A3.00328,3.00328,0,0,0,7.75781,10.75781Zm0-4a1,1,0,1,1-1,1A1.00067,1.00067,0,0,1,7.75781,6.75781Zm8.48438,6.48438a3,3,0,1,0,3,3A3.00328,3.00328,0,0,0,16.24219,13.24219Zm0,4a1,1,0,1,1,1-1A1.00067,1.00067,0,0,1,16.24219,17.24219ZM19.707,4.293a.99962.99962,0,0,0-1.41406,0l-14,14A.99989.99989,0,1,0,5.707,19.707l14-14A.99962.99962,0,0,0,19.707,4.293Z"></path></svg>
<div>1</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@
</div>
</div>
</th>
<th scope="col" data-datatable-sort="max-gradient" class="px-2 py-3 cursor-pointer" title="Max gradient">
<th scope="col" data-datatable-sort="average-gradient" class="px-2 py-3 cursor-pointer" title="Average gradient">
<div class="flex items-center justify-center">
<svg class="w-6 text-strava-orange" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path fill="currentColor" d="M7.75781,10.75781a3,3,0,1,0-3-3A3.00328,3.00328,0,0,0,7.75781,10.75781Zm0-4a1,1,0,1,1-1,1A1.00067,1.00067,0,0,1,7.75781,6.75781Zm8.48438,6.48438a3,3,0,1,0,3,3A3.00328,3.00328,0,0,0,16.24219,13.24219Zm0,4a1,1,0,1,1,1-1A1.00067,1.00067,0,0,1,16.24219,17.24219ZM19.707,4.293a.99962.99962,0,0,0-1.41406,0l-14,14A.99989.99989,0,1,0,5.707,19.707l14-14A.99962.99962,0,0,0,19.707,4.293Z"></path></svg>
<div class="ml-1.5 group sorting-icon" aria-sort="none">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"countryCode": "BE",
"detailsHaveBeenImported": 0,
"polyline": null,
"averageGradient": 2.7,
"startingCoordinateLatitude": null,
"startingCoordinateLongitude": null
},
Expand All @@ -26,6 +27,7 @@
"countryCode": null,
"detailsHaveBeenImported": 0,
"polyline": null,
"averageGradient": null,
"startingCoordinateLatitude": null,
"startingCoordinateLongitude": null
}
Expand Down
11 changes: 10 additions & 1 deletion tests/Domain/Segment/SegmentBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ final class SegmentBuilder
private bool $detailsHaveBeenImported = false;
private ?EncodedPolyline $polyline;
private readonly ?Coordinate $startingCoordinate;
private ?float $averageGradient = 2.7;

private function __construct()
{
Expand Down Expand Up @@ -57,7 +58,8 @@ public function build(): Segment
countryCode: $this->countryCode,
detailsHaveBeenImported: $this->detailsHaveBeenImported,
polyline: $this->polyline,
startingCoordinate: $this->startingCoordinate
startingCoordinate: $this->startingCoordinate,
averageGradient: $this->averageGradient,
);
}

Expand Down Expand Up @@ -123,4 +125,11 @@ public function withPolyline(EncodedPolyline $polyline): self

return $this;
}

public function withAverageGradient(?float $averageGradient): self
{
$this->averageGradient = $averageGradient;

return $this;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"countryCode": "BE",
"detailsHaveBeenImported": 1,
"polyline": "pr_fA{ybz^wA_DeAgE@sAr@mEyBkFLo@f@_@~CC\\qEZi@~@SnALnDlBJ~B|Bz@aAbDRn@j@ZfBHrEa@rAaAz@sABq@_AgBKeARm@hCwBTsAKgBiBmFoCqCkBkAOkAlA}EhEeBz@}AJ_BS_B]s@oCeCUs@xB_CI{CnI_T^_BHgCQiAc@k@iHyC{@aBQqBlGoNbAsDvCw@bCr@dAEv@i@bB{CxCGrBgAd@}A?cBcDoFd@gA`Ao@`AGz@d@lFvIdAl@h@E|@u@bAsD`@g@fBZ~@`ABhE`@h@pB`ARdAWp@eC`Aa@bAC`KiAvNEjDvDzE`@fBZRxFh@~L{C~Ah@x@jF\\bN_@|AgB|AK`B^tFt@nB~An@zBKzAn@lD`@jBxA`@pCfA`AdAc@vCaJnAmAfANtAbA`@pC~EVlCfDnCGhAq@`@{@LuAMq@yBaBgA@aA\\sBhCgEEm@WYgC_BgAeAKmAfAyCbJaAf@cAeAa@kCgBuAsDg@_Bo@_CH_Bq@o@{BSwGPs@nBoBP_Dq@gNc@aC_By@aM|CyFe@_@Qc@kBqCwCe@aArAsSBsKh@_AtBs@^_A_@qAiC}ACiEoAmAiBSa@j@}@nD{@t@e@DkAy@eFmIaAe@}@FqAx@a@~@Pt@pCdE@tAa@`BuBdAuCDkBbDk@`@iABuBs@kDz@uAvEyFdMDjB`ApBfA|@~E|Aj@v@NfAg@rEmI`TKt@X|A_ChCZfAdDpDRjBMvA_ArAaE~Ak@lAg@jCPxAvDpCxAlBpA~DJxBa@~AoBpA]p@FjAdA`CkAvBw@n@kE`@oBCo@[OcAbCwEpBiA~Ca@lCmAh@i@\\cBSoCoAiDwAmBwDqCMiA`@aCl@wAfEeBz@sANiBWgBmDuDQw@|BaCUaBH{@nIaTXmAJoCSiAe@m@cFaBiA}@_AuBC_BjG_NpAcEnCm@vBr@jAAz@m@tAsChDOpBeAb@yAEoB_D_F\\gAnAw@~@Ez@d@|E`ItA`Ah@Gz@w@|AuE|APhA|@Pv@E~ClCfBTjA[r@aCz@a@hA?lKwAdSn@tApCvCXzA\\VvFj@~L{Cx@Hj@f@l@lDh@rMMdCqBhBSv@PrFZtB^t@vAn@lCGvAl@rDf@~AhAd@pCjAhAhAq@rCuIfAiAnALnA|@j@zCdFVnBvCd@PxBK`Ag@h@}@NyAs@aBqB}@mBf@}A~BkAB",
"averageGradient": 2.7,
"startingCoordinateLatitude": -11.63577,
"startingCoordinateLongitude": 166.97262
}
Expand Down
3 changes: 2 additions & 1 deletion translations/messages+intl-icu.de_DE.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Apr: Apr
'Ask Mark something...': 'Frag Mark etwas...'
'Athlete profile': Sportlerprofil
Aug: Aug
'Average gradient': 'Average gradient'
Avg: Durchschn.
'Back Country Ski': Skitouren
Badges: Badges
Expand Down Expand Up @@ -191,7 +192,6 @@ Maintenance: Wartung
'Maintenance history': Wartungsverlauf
Mar: Mär
Max: Max
'Max gradient': 'Max. Steigung'
May: Mai
Medium: Mittel
Metric: Metrisch
Expand Down Expand Up @@ -507,6 +507,7 @@ Yoga: Yoga
'Zwift stats': 'Zwift Statistiken'
activities: Aktivitäten
and: und
'average gradient': 'average gradient'
avg: durchschn.
bpm: bpm
clear: löschen
Expand Down
3 changes: 2 additions & 1 deletion translations/messages+intl-icu.en_US.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Apr: Apr
'Ask Mark something...': 'Ask Mark something...'
'Athlete profile': 'Athlete profile'
Aug: Aug
'Average gradient': 'Average gradient'
Avg: Avg
'Back Country Ski': 'Back Country Ski'
Badges: Badges
Expand Down Expand Up @@ -191,7 +192,6 @@ Maintenance: Maintenance
'Maintenance history': 'Maintenance history'
Mar: Mar
Max: Max
'Max gradient': 'Max gradient'
May: May
Medium: Medium
Metric: Metric
Expand Down Expand Up @@ -507,6 +507,7 @@ Yoga: Yoga
'Zwift stats': 'Zwift stats'
activities: activities
and: and
'average gradient': 'average gradient'
avg: avg
bpm: bpm
clear: clear
Expand Down
3 changes: 2 additions & 1 deletion translations/messages+intl-icu.fr_FR.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ Apr: Avr
'Ask Mark something...': 'Demandez quelque chose à Mark...'
'Athlete profile': 'Athlete profile'
Aug: Aoû
'Average gradient': 'Average gradient'
Avg: Moy
'Back Country Ski': 'Ski de randonnée'
Badges: Badges
Expand Down Expand Up @@ -191,7 +192,6 @@ Maintenance: Maintenance
'Maintenance history': 'Historique de maintenance'
Mar: Mar
Max: Max
'Max gradient': 'Max gradient'
May: Mai
Medium: Moyen
Metric: Metric
Expand Down Expand Up @@ -507,6 +507,7 @@ Yoga: Yoga
'Zwift stats': 'Stats Zwift'
activities: activités
and: et
'average gradient': 'average gradient'
avg: moy
bpm: bpm
clear: effacer
Expand Down
Loading