commit 4170dda0e2989405f780e3ca75d13f26adfa7a4c
parent b5ad7c6a08b2298e0e13beff4c48c0e7890ca366
Author: Asher Morgan <59518073+ashermorgan@users.noreply.github.com>
Date: Sat, 17 May 2025 15:05:39 -0700
Simplify description of some workout targets
E.g. "5 km" instead of "5 km @ 5 km".
Diffstat:
2 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/src/utils/calculators.js b/src/utils/calculators.js
@@ -151,19 +151,21 @@ export function calculateWorkoutResults(input, target, options, preciseDurations
let d2, t2, t3;
// Calculate pace
- let key = formatNumber(target.splitValue, 0, 2, false) + ' '
- + DISTANCE_UNITS[target.splitUnit].symbol + ' @ ';
+ let key = formatNumber(target.splitValue, 0, 2, false) + ' ' +
+ DISTANCE_UNITS[target.splitUnit].symbol;
if (target.type === 'distance') {
// Convert target distance into meters
d2 = convertDistance(target.distanceValue, target.distanceUnit, 'meters');
t2 = raceUtils.predictTime(d1, input.time, d2, options.model, options.riegelExponent);
- key += formatNumber(target.distanceValue, 0, 2, false) + ' '
- + DISTANCE_UNITS[target.distanceUnit].symbol;
+ if (target.distanceValue != target.splitValue || target.distanceUnit != target.splitUnit) {
+ key += ' @ ' + formatNumber(target.distanceValue, 0, 2, false) + ' ' +
+ DISTANCE_UNITS[target.distanceUnit].symbol;
+ }
} else {
t2 = target.time;
d2 = raceUtils.predictDistance(t1, d1, t2, options.model,
options.riegelExponent);
- key += formatDuration(target.time, 3, 2, false);
+ key += ' @ ' + formatDuration(target.time, 3, 2, false);
}
t3 = paceUtils.calculateTime(d2, t2, d3);
diff --git a/tests/e2e/workout-calculator.spec.js b/tests/e2e/workout-calculator.spec.js
@@ -59,13 +59,19 @@ test('Workout Calculator', async ({ page }) => {
await page.getByLabel('Split distance unit').last().selectOption('Meters');
await page.getByLabel('Target duration minutes').last().fill('19');
await page.getByLabel('Target duration seconds').last().fill('0');
+ await page.getByRole('button', { name: 'Add distance target' }).click();
+ await page.getByLabel('Split distance value').last().fill('2');
+ await page.getByLabel('Split distance unit').last().selectOption('Miles');
+ await page.getByLabel('Target distance value').last().fill('2');
+ await page.getByLabel('Target distance unit').last().selectOption('Miles');
await page.getByRole('button', { name: 'Close' }).click();
// Assert workout splits are correct
await expect(page.getByRole('row').nth(1)).toHaveText('401 m @ 2 mi' + '1:18.49');
await expect(page.getByRole('row').nth(2)).toHaveText('600 m @ 19:00' + '2:05.14');
await expect(page.getByRole('row').nth(4)).toHaveText('1 mi @ 10 km' + '6:00.90');
- await expect(page.getByRole('row')).toHaveCount(7);
+ await expect(page.getByRole('row').nth(7)).toHaveText('2 mi' + '10:30.00');
+ await expect(page.getByRole('row')).toHaveCount(8);
// Create custom target set
await page.getByLabel('Selected target set').selectOption('[ Create New Target Set ]');
@@ -109,7 +115,8 @@ test('Workout Calculator', async ({ page }) => {
await expect(page.getByRole('row').nth(1)).toHaveText('401 m @ 2 mi' + '1:18.49');
await expect(page.getByRole('row').nth(2)).toHaveText('600 m @ 19:00' + '2:05.14');
await expect(page.getByRole('row').nth(4)).toHaveText('1 mi @ 10 km' + '6:00.90');
- await expect(page.getByRole('row')).toHaveCount(7);
+ await expect(page.getByRole('row').nth(7)).toHaveText('2 mi' + '10:30.00');
+ await expect(page.getByRole('row')).toHaveCount(8);
// Delete custom target set
await page.getByLabel('Selected target set').selectOption('Workout Target Set #2');
@@ -124,7 +131,8 @@ test('Workout Calculator', async ({ page }) => {
await expect(page.getByRole('row').nth(1)).toHaveText('401 m @ 2 mi' + '1:18.49');
await expect(page.getByRole('row').nth(2)).toHaveText('600 m @ 19:00' + '2:05.14');
await expect(page.getByRole('row').nth(4)).toHaveText('1 mi @ 10 km' + '6:00.90');
- await expect(page.getByRole('row')).toHaveCount(7);
+ await expect(page.getByRole('row').nth(7)).toHaveText('2 mi' + '10:30.00');
+ await expect(page.getByRole('row')).toHaveCount(8);
// Revert target set
await page.getByRole('button', { name: 'Edit target set' }).click();