commit 3c076bf99f924796a82d729bafa3f3ec9db3e928
parent 82bace6521ac3be92388029f534b73434b185d90
Author: Asher Morgan <59518073+ashermorgan@users.noreply.github.com>
Date: Sat, 12 Jul 2025 12:28:13 -0700
Extract default calculator state
Default input and options defined in calculator utils, default target
sets defined in target utils.
Diffstat:
8 files changed, 186 insertions(+), 216 deletions(-)
diff --git a/src/components/AdvancedOptionsInput.vue b/src/components/AdvancedOptionsInput.vue
@@ -45,7 +45,7 @@
<script setup lang="ts">
import { Calculators } from '@/utils/calculators';
-import type { CalculatorOptions, RaceOptions, WorkoutOptions } from '@/utils/calculators';
+import type { StandardOptions, RaceOptions, WorkoutOptions } from '@/utils/calculators';
import type { TargetSets } from '@/utils/targets';
import { UnitSystems } from '@/utils/units';
@@ -54,6 +54,8 @@ import TargetSetSelector from '@/components/TargetSetSelector.vue';
import useObjectModel from '@/composables/useObjectModel';
+type CalculatorOptions = StandardOptions | RaceOptions | WorkoutOptions;
+
/*
* The default unit system
*/
diff --git a/src/utils/calculators.ts b/src/utils/calculators.ts
@@ -40,7 +40,11 @@ export interface RaceOptions extends StandardOptions {
export interface WorkoutOptions extends RaceOptions {
customTargetNames: boolean,
};
-export type CalculatorOptions = StandardOptions | RaceOptions | WorkoutOptions;
+export interface BatchOptions {
+ calculator: Calculators.Pace | Calculators.Race | Calculators.Workout,
+ increment: number,
+ rows: number,
+};
/*
* The two possible result fields of a target result: "key" and "value"
@@ -61,6 +65,36 @@ export interface TargetResult {
sort: number,
};
+/*
+ * The default input and options for each calculator
+ */
+export const defaultInput: DistanceTime = {
+ distanceValue: 5,
+ distanceUnit: DistanceUnits.Kilometers,
+ time: 1200,
+};
+export const defaultBatchOptions: BatchOptions = {
+ calculator: Calculators.Workout,
+ increment: 15,
+ rows: 20,
+};
+export const defaultPaceOptions: StandardOptions = {
+ selectedTargetSet: '_pace_targets',
+};
+export const defaultRaceOptions: RaceOptions = {
+ model: raceUtils.RacePredictionModel.AverageModel,
+ riegelExponent: 1.06,
+ selectedTargetSet: '_race_targets',
+};
+export const defaultSplitOptions: StandardOptions = {
+ selectedTargetSet: '_split_targets',
+};
+export const defaultWorkoutOptions: WorkoutOptions = {
+ customTargetNames: false,
+ ...defaultRaceOptions,
+ selectedTargetSet: '_workout_targets',
+};
+
/**
* Calculate results for a standard target
* @param {DistanceTime} input The input pace
diff --git a/src/utils/targets.ts b/src/utils/targets.ts
@@ -101,116 +101,107 @@ export function workoutTargetToString(target: WorkoutTarget): string {
}
/*
- * A set of common pace calculator targets
+ * The default target sets for each calculator
*/
-const common_pace_targets: StandardTargetSet = {
- name: 'Common Pace Targets',
- targets: sort([
- { type: TargetTypes.Distance, distanceValue: 100, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 200, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 300, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 400, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 600, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 800, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 1000, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 1200, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 1500, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 1600, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 3200, distanceUnit: DistanceUnits.Meters },
-
- { type: TargetTypes.Distance, distanceValue: 2, distanceUnit: DistanceUnits.Kilometers },
- { type: TargetTypes.Distance, distanceValue: 3, distanceUnit: DistanceUnits.Kilometers },
- { type: TargetTypes.Distance, distanceValue: 4, distanceUnit: DistanceUnits.Kilometers },
- { type: TargetTypes.Distance, distanceValue: 5, distanceUnit: DistanceUnits.Kilometers },
- { type: TargetTypes.Distance, distanceValue: 6, distanceUnit: DistanceUnits.Kilometers },
- { type: TargetTypes.Distance, distanceValue: 8, distanceUnit: DistanceUnits.Kilometers },
- { type: TargetTypes.Distance, distanceValue: 10, distanceUnit: DistanceUnits.Kilometers },
-
- { type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Miles },
- { type: TargetTypes.Distance, distanceValue: 2, distanceUnit: DistanceUnits.Miles },
- { type: TargetTypes.Distance, distanceValue: 3, distanceUnit: DistanceUnits.Miles },
- { type: TargetTypes.Distance, distanceValue: 5, distanceUnit: DistanceUnits.Miles },
- { type: TargetTypes.Distance, distanceValue: 6, distanceUnit: DistanceUnits.Miles },
- { type: TargetTypes.Distance, distanceValue: 8, distanceUnit: DistanceUnits.Miles },
- { type: TargetTypes.Distance, distanceValue: 10, distanceUnit: DistanceUnits.Miles },
-
- { type: TargetTypes.Distance, distanceValue: 0.5, distanceUnit: DistanceUnits.Marathons },
- { type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Marathons },
-
- { type: TargetTypes.Time, time: 600 },
- { type: TargetTypes.Time, time: 1800 },
- { type: TargetTypes.Time, time: 3600 },
- ]),
-};
-
-/*
- * A set of common race calculator targets
- */
-const common_race_targets: StandardTargetSet = {
- name: 'Common Race Targets',
- targets: sort([
- { type: TargetTypes.Distance, distanceValue: 400, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 800, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 1500, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 1600, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Miles },
- { type: TargetTypes.Distance, distanceValue: 3000, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 3200, distanceUnit: DistanceUnits.Meters },
- { type: TargetTypes.Distance, distanceValue: 2, distanceUnit: DistanceUnits.Miles },
-
- { type: TargetTypes.Distance, distanceValue: 3, distanceUnit: DistanceUnits.Miles },
- { type: TargetTypes.Distance, distanceValue: 5, distanceUnit: DistanceUnits.Kilometers },
- { type: TargetTypes.Distance, distanceValue: 6, distanceUnit: DistanceUnits.Kilometers },
- { type: TargetTypes.Distance, distanceValue: 8, distanceUnit: DistanceUnits.Kilometers },
- { type: TargetTypes.Distance, distanceValue: 10, distanceUnit: DistanceUnits.Kilometers },
- { type: TargetTypes.Distance, distanceValue: 15, distanceUnit: DistanceUnits.Kilometers },
-
- { type: TargetTypes.Distance, distanceValue: 0.5, distanceUnit: DistanceUnits.Marathons },
- { type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Marathons },
- ]),
-};
-
-
-/*
- * A set of targets for 5K mile splits
- */
-const five_k_mile_splits: SplitTargetSet = {
- name: '5K Mile Splits',
- targets: [
- { type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Miles },
- { type: TargetTypes.Distance, distanceValue: 2, distanceUnit: DistanceUnits.Miles },
- { type: TargetTypes.Distance, distanceValue: 5, distanceUnit: DistanceUnits.Kilometers },
- ],
-};
-
-/*
- * A set of common workout calculator targets
- */
-const common_workout_targets: WorkoutTargetSet = {
- name: 'Common Workout Targets',
- targets: [
- {
- splitValue: 400, splitUnit: DistanceUnits.Meters,
- type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Miles,
- },
- {
- splitValue: 800, splitUnit: DistanceUnits.Meters,
- type: TargetTypes.Distance, distanceValue: 5, distanceUnit: DistanceUnits.Kilometers,
- },
- {
- splitValue: 1600, splitUnit: DistanceUnits.Meters,
- type: TargetTypes.Time, time: 3600,
- },
- {
- splitValue: 1, splitUnit: DistanceUnits.Miles,
- type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Marathons,
- },
- ],
-};
-
export const defaultTargetSets: { [key: string]: TargetSet } = {
- '_pace_targets': common_pace_targets,
- '_race_targets': common_race_targets,
- '_split_targets': five_k_mile_splits,
- '_workout_targets': common_workout_targets,
+ '_pace_targets': {
+ name: 'Common Pace Targets',
+ targets: sort([
+ { type: TargetTypes.Distance, distanceValue: 100, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 200, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 300, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 400, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 600, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 800, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 1000, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 1200, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 1500, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 1600, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 3200, distanceUnit: DistanceUnits.Meters },
+
+ { type: TargetTypes.Distance, distanceValue: 2, distanceUnit: DistanceUnits.Kilometers },
+ { type: TargetTypes.Distance, distanceValue: 3, distanceUnit: DistanceUnits.Kilometers },
+ { type: TargetTypes.Distance, distanceValue: 4, distanceUnit: DistanceUnits.Kilometers },
+ { type: TargetTypes.Distance, distanceValue: 5, distanceUnit: DistanceUnits.Kilometers },
+ { type: TargetTypes.Distance, distanceValue: 6, distanceUnit: DistanceUnits.Kilometers },
+ { type: TargetTypes.Distance, distanceValue: 8, distanceUnit: DistanceUnits.Kilometers },
+ { type: TargetTypes.Distance, distanceValue: 10, distanceUnit: DistanceUnits.Kilometers },
+
+ { type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Miles },
+ { type: TargetTypes.Distance, distanceValue: 2, distanceUnit: DistanceUnits.Miles },
+ { type: TargetTypes.Distance, distanceValue: 3, distanceUnit: DistanceUnits.Miles },
+ { type: TargetTypes.Distance, distanceValue: 5, distanceUnit: DistanceUnits.Miles },
+ { type: TargetTypes.Distance, distanceValue: 6, distanceUnit: DistanceUnits.Miles },
+ { type: TargetTypes.Distance, distanceValue: 8, distanceUnit: DistanceUnits.Miles },
+ { type: TargetTypes.Distance, distanceValue: 10, distanceUnit: DistanceUnits.Miles },
+
+ { type: TargetTypes.Distance, distanceValue: 0.5, distanceUnit: DistanceUnits.Marathons },
+ { type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Marathons },
+
+ { type: TargetTypes.Time, time: 600 },
+ { type: TargetTypes.Time, time: 1800 },
+ { type: TargetTypes.Time, time: 3600 },
+ ]),
+ }, '_race_targets': {
+ name: 'Common Race Targets',
+ targets: sort([
+ { type: TargetTypes.Distance, distanceValue: 400, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 800, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 1500, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 1600, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Miles },
+ { type: TargetTypes.Distance, distanceValue: 3000, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 3200, distanceUnit: DistanceUnits.Meters },
+ { type: TargetTypes.Distance, distanceValue: 2, distanceUnit: DistanceUnits.Miles },
+
+ { type: TargetTypes.Distance, distanceValue: 3, distanceUnit: DistanceUnits.Miles },
+ { type: TargetTypes.Distance, distanceValue: 5, distanceUnit: DistanceUnits.Kilometers },
+ { type: TargetTypes.Distance, distanceValue: 6, distanceUnit: DistanceUnits.Kilometers },
+ { type: TargetTypes.Distance, distanceValue: 8, distanceUnit: DistanceUnits.Kilometers },
+ { type: TargetTypes.Distance, distanceValue: 10, distanceUnit: DistanceUnits.Kilometers },
+ { type: TargetTypes.Distance, distanceValue: 15, distanceUnit: DistanceUnits.Kilometers },
+
+ { type: TargetTypes.Distance, distanceValue: 0.5, distanceUnit: DistanceUnits.Marathons },
+ { type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Marathons },
+ ]),
+ }, '_split_targets': {
+ name: '5K Mile Splits',
+ targets: [
+ { type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Miles },
+ { type: TargetTypes.Distance, distanceValue: 2, distanceUnit: DistanceUnits.Miles },
+ { type: TargetTypes.Distance, distanceValue: 5, distanceUnit: DistanceUnits.Kilometers },
+ ],
+ }, '_workout_targets': {
+ name: 'Common Workout Targets',
+ targets: [
+ {
+ splitValue: 400, splitUnit: DistanceUnits.Meters,
+ type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Miles,
+ },
+ {
+ splitValue: 800, splitUnit: DistanceUnits.Meters,
+ type: TargetTypes.Distance, distanceValue: 5, distanceUnit: DistanceUnits.Kilometers,
+ },
+ {
+ splitValue: 1600, splitUnit: DistanceUnits.Meters,
+ type: TargetTypes.Time, time: 3600,
+ },
+ {
+ splitValue: 1, splitUnit: DistanceUnits.Miles,
+ type: TargetTypes.Distance, distanceValue: 1, distanceUnit: DistanceUnits.Marathons,
+ },
+ ],
+ },
+};
+export const defaultPaceTargetSets: StandardTargetSets = {
+ '_pace_targets': defaultTargetSets._pace_targets,
+};
+export const defaultRaceTargetSets: StandardTargetSets = {
+ '_race_targets': defaultTargetSets._race_targets,
+};
+export const defaultSplitTargetSets: SplitTargetSets = {
+ '_split_targets': defaultTargetSets._split_targets as SplitTargetSet,
+};
+export const defaultWorkoutTargetSets: WorkoutTargetSets = {
+ '_workout_targets': defaultTargetSets._workout_targets as WorkoutTargetSet,
};
diff --git a/src/views/BatchCalculator.vue b/src/views/BatchCalculator.vue
@@ -43,11 +43,10 @@
import { computed } from 'vue';
import * as calcUtils from '@/utils/calculators';
-import type { RaceOptions, StandardOptions, TargetResult,
+import type { BatchOptions, RaceOptions, StandardOptions, TargetResult,
WorkoutOptions } from '@/utils/calculators';
-import { RacePredictionModel } from '@/utils/races';
import * as targetUtils from '@/utils/targets';
-import { DistanceUnits, UnitSystems, detectDefaultUnitSystem } from '@/utils/units';
+import { UnitSystems, detectDefaultUnitSystem } from '@/utils/units';
import type { Distance, DistanceTime } from '@/utils/units';
import AdvancedOptionsInput from '@/components/AdvancedOptionsInput.vue';
@@ -59,31 +58,14 @@ import TimeInput from '@/components/TimeInput.vue';
import useStorage from '@/composables/useStorage';
/*
- * The type for options specific to the batch calculator
- */
-interface BatchCalculatorOptions {
- calculator: calcUtils.Calculators,
- increment: number,
- rows: number,
-};
-
-/*
* The input pace
*/
-const input = useStorage<DistanceTime>('batch-calculator-input', {
- distanceValue: 5,
- distanceUnit: DistanceUnits.Kilometers,
- time: 1200,
-});
+const input = useStorage<DistanceTime>('batch-calculator-input', calcUtils.defaultInput);
/*
* The batch input options
*/
-const options = useStorage<BatchCalculatorOptions>('batch-calculator-options', {
- calculator: calcUtils.Calculators.Workout,
- increment: 15,
- rows: 20,
-});
+const options = useStorage<BatchOptions>('batch-calculator-options', calcUtils.defaultBatchOptions);
/*
* The default unit system
@@ -93,33 +75,22 @@ const defaultUnitSystem = useStorage<UnitSystems>('default-unit-system', detectD
/*
* The target sets for each calculator
*/
-const paceTargetSets = useStorage<targetUtils.StandardTargetSets>('pace-calculator-target-sets', {
- _pace_targets: targetUtils.defaultTargetSets._pace_targets as targetUtils.StandardTargetSet
-});
-const raceTargetSets = useStorage<targetUtils.StandardTargetSets>('race-calculator-target-sets', {
- _race_targets: targetUtils.defaultTargetSets._race_targets as targetUtils.StandardTargetSet
-});
-const workoutTargetSets = useStorage<targetUtils.WorkoutTargetSets>('workout-calculator-target-sets', {
- _workout_targets: targetUtils.defaultTargetSets._workout_targets as targetUtils.WorkoutTargetSet
-});
+const paceTargetSets = useStorage<targetUtils.StandardTargetSets>('pace-calculator-target-sets',
+ targetUtils.defaultPaceTargetSets);
+const raceTargetSets = useStorage<targetUtils.StandardTargetSets>('race-calculator-target-sets',
+ targetUtils.defaultRaceTargetSets);
+const workoutTargetSets = useStorage<targetUtils.WorkoutTargetSets>('workout-calculator-target-sets',
+ targetUtils.defaultWorkoutTargetSets);
/*
* The options for each calculator
*/
-const paceOptions = useStorage<StandardOptions>('pace-calculator-options', {
- selectedTargetSet: '_pace_targets',
-});
-const raceOptions = useStorage<RaceOptions>('race-calculator-options', {
- model: RacePredictionModel.AverageModel,
- riegelExponent: 1.06,
- selectedTargetSet: '_race_targets',
-});
-const workoutOptions = useStorage<WorkoutOptions>('workout-calculator-options', {
- customTargetNames: false,
- model: RacePredictionModel.AverageModel,
- riegelExponent: 1.06,
- selectedTargetSet: '_workout_targets',
-});
+const paceOptions = useStorage<StandardOptions>('pace-calculator-options',
+ calcUtils.defaultPaceOptions);
+const raceOptions = useStorage<RaceOptions>('race-calculator-options',
+ calcUtils.defaultRaceOptions);
+const workoutOptions = useStorage<WorkoutOptions>('workout-calculator-options',
+ calcUtils.defaultWorkoutOptions);
/*
* The input distance
diff --git a/src/views/PaceCalculator.vue b/src/views/PaceCalculator.vue
@@ -22,11 +22,12 @@
</template>
<script setup lang="ts">
-import { Calculators, calculatePaceResults } from '@/utils/calculators';
+import { Calculators, calculatePaceResults, defaultInput,
+ defaultPaceOptions } from '@/utils/calculators';
import type { StandardOptions } from '@/utils/calculators';
-import { defaultTargetSets } from '@/utils/targets';
+import { defaultPaceTargetSets } from '@/utils/targets';
import type { StandardTargetSets } from '@/utils/targets';
-import { DistanceUnits, UnitSystems, detectDefaultUnitSystem } from '@/utils/units';
+import { UnitSystems, detectDefaultUnitSystem } from '@/utils/units';
import type { DistanceTime } from '@/utils/units';
import AdvancedOptionsInput from '@/components/AdvancedOptionsInput.vue';
@@ -38,11 +39,7 @@ import useStorage from '@/composables/useStorage';
/*
* The input pace
*/
-const input = useStorage<DistanceTime>('pace-calculator-input', {
- distanceValue: 5,
- distanceUnit: DistanceUnits.Kilometers,
- time: 1200,
-});
+const input = useStorage<DistanceTime>('pace-calculator-input', defaultInput);
/*
* The default unit system
@@ -52,16 +49,13 @@ const defaultUnitSystem = useStorage<UnitSystems>('default-unit-system', detectD
/*
* The current selected target set
*/
-const options = useStorage<StandardOptions>('pace-calculator-options', {
- selectedTargetSet: '_pace_targets',
-});
+const options = useStorage<StandardOptions>('pace-calculator-options', defaultPaceOptions);
/*
* The target sets
*/
-const targetSets = useStorage<StandardTargetSets>('pace-calculator-target-sets', {
- _pace_targets: defaultTargetSets._pace_targets
-});
+const targetSets = useStorage<StandardTargetSets>('pace-calculator-target-sets',
+ defaultPaceTargetSets);
</script>
<style scoped>
diff --git a/src/views/RaceCalculator.vue b/src/views/RaceCalculator.vue
@@ -41,12 +41,12 @@
<script setup lang="ts">
import { computed } from 'vue';
-import { Calculators, calculateRaceResults, calculateRaceStats } from '@/utils/calculators';
+import { Calculators, calculateRaceResults, calculateRaceStats, defaultInput,
+ defaultRaceOptions } from '@/utils/calculators';
import type { RaceOptions, RaceStats } from '@/utils/calculators';
-import { RacePredictionModel } from '@/utils/races';
-import { defaultTargetSets } from '@/utils/targets';
+import { defaultRaceTargetSets } from '@/utils/targets';
import type { StandardTargetSets } from '@/utils/targets';
-import { DistanceUnits, UnitSystems, detectDefaultUnitSystem, formatNumber } from '@/utils/units';
+import { UnitSystems, detectDefaultUnitSystem, formatNumber } from '@/utils/units';
import type { DistanceTime } from '@/utils/units';
import AdvancedOptionsInput from '@/components/AdvancedOptionsInput.vue';
@@ -58,11 +58,7 @@ import useStorage from '@/composables/useStorage';
/*
* The input race
*/
-const input = useStorage<DistanceTime>('race-calculator-input', {
- distanceValue: 5,
- distanceUnit: DistanceUnits.Kilometers,
- time: 1200,
-});
+const input = useStorage<DistanceTime>('race-calculator-input', defaultInput);
/*
* The default unit system
@@ -72,18 +68,13 @@ const defaultUnitSystem = useStorage<UnitSystems>('default-unit-system', detectD
/*
* The race calculator options
*/
-const options = useStorage<RaceOptions>('race-calculator-options', {
- model: RacePredictionModel.AverageModel,
- riegelExponent: 1.06,
- selectedTargetSet: '_race_targets',
-});
+const options = useStorage<RaceOptions>('race-calculator-options', defaultRaceOptions);
/*
* The target sets
*/
-const targetSets = useStorage<StandardTargetSets>('race-calculator-target-sets', {
- _race_targets: defaultTargetSets._race_targets
-});
+const targetSets = useStorage<StandardTargetSets>('race-calculator-target-sets',
+ defaultRaceTargetSets);
/*
* The statistics for the current input race
diff --git a/src/views/SplitCalculator.vue b/src/views/SplitCalculator.vue
@@ -14,10 +14,10 @@
<script setup lang="ts">
import { computed } from 'vue';
-import { Calculators } from '@/utils/calculators';
+import { Calculators, defaultSplitOptions } from '@/utils/calculators';
import type { StandardOptions } from '@/utils/calculators';
-import { defaultTargetSets } from '@/utils/targets';
-import type { SplitTargetSet, SplitTargetSets } from '@/utils/targets';
+import { defaultSplitTargetSets } from '@/utils/targets';
+import type { SplitTargetSets } from '@/utils/targets';
import { UnitSystems, detectDefaultUnitSystem } from '@/utils/units';
import AdvancedOptionsInput from '@/components/AdvancedOptionsInput.vue';
@@ -33,16 +33,13 @@ const defaultUnitSystem = useStorage<UnitSystems>('default-unit-system', detectD
/*
* The split calculator options
*/
-const options = useStorage<StandardOptions>('split-calculator-options', {
- selectedTargetSet: '_split_targets'
-});
+const options = useStorage<StandardOptions>('split-calculator-options', defaultSplitOptions);
/*
* The default output targets
*/
-const targetSets = useStorage<SplitTargetSets>('split-calculator-target-sets', {
- _split_targets: defaultTargetSets._split_targets as SplitTargetSet
-});
+const targetSets = useStorage<SplitTargetSets>('split-calculator-target-sets',
+ defaultSplitTargetSets);
/*
* The active target set
diff --git a/src/views/WorkoutCalculator.vue b/src/views/WorkoutCalculator.vue
@@ -22,12 +22,12 @@
</template>
<script setup lang="ts">
-import { Calculators, calculateWorkoutResults } from '@/utils/calculators';
+import { Calculators, calculateWorkoutResults, defaultInput,
+ defaultWorkoutOptions } from '@/utils/calculators';
import type { WorkoutOptions } from '@/utils/calculators';
-import { RacePredictionModel } from '@/utils/races';
-import { defaultTargetSets } from '@/utils/targets';
-import type { WorkoutTarget, WorkoutTargetSet, WorkoutTargetSets } from '@/utils/targets';
-import { DistanceUnits, UnitSystems, detectDefaultUnitSystem } from '@/utils/units';
+import { defaultWorkoutTargetSets } from '@/utils/targets';
+import type { WorkoutTarget, WorkoutTargetSets } from '@/utils/targets';
+import { UnitSystems, detectDefaultUnitSystem } from '@/utils/units';
import type { DistanceTime } from '@/utils/units';
import AdvancedOptionsInput from '@/components/AdvancedOptionsInput.vue';
@@ -39,11 +39,7 @@ import useStorage from '@/composables/useStorage';
/*
* The input race
*/
-const input = useStorage<DistanceTime>('workout-calculator-input', {
- distanceValue: 5,
- distanceUnit: DistanceUnits.Kilometers,
- time: 1200,
-});
+const input = useStorage<DistanceTime>('workout-calculator-input', defaultInput);
/*
* The default unit system
@@ -53,19 +49,13 @@ const defaultUnitSystem = useStorage<UnitSystems>('default-unit-system', detectD
/*
* The race prediction options
*/
-const options = useStorage<WorkoutOptions>('workout-calculator-options', {
- customTargetNames: false,
- model: RacePredictionModel.AverageModel,
- riegelExponent: 1.06,
- selectedTargetSet: '_workout_targets',
-});
+const options = useStorage<WorkoutOptions>('workout-calculator-options', defaultWorkoutOptions);
/*
* The target sets
*/
-const targetSets = useStorage<WorkoutTargetSets>('workout-calculator-target-sets', {
- _workout_targets: defaultTargetSets._workout_targets as WorkoutTargetSet
-});
+const targetSets = useStorage<WorkoutTargetSets>('workout-calculator-target-sets',
+ defaultWorkoutTargetSets);
</script>
<style scoped>