running-tools

A collection of tools for runners and their coaches
git clone https://git.ashermorgan.net/running-tools/
Log | Files | Refs | README

WorkoutCalculator.vue (1919B)


      1 <template>
      2   <div class="calculator">
      3     <h2>Input Race Result</h2>
      4     <div class="input">
      5       <pace-input v-model="workoutOptions.input" label="Input race"/>
      6     </div>
      7 
      8     <details>
      9       <summary>
     10         <h2>Advanced Options</h2>
     11       </summary>
     12       <advanced-options-input v-model:globalOptions="globalOptions"
     13         v-model:options="workoutOptions" v-model:targetSets="targetSets" :type="Calculators.Workout"/>
     14     </details>
     15 
     16     <h2>Workout Splits</h2>
     17     <single-output-table class="output" :calculate-result="x =>
     18       calculateWorkoutResults(workoutOptions.input, x as WorkoutTarget,
     19       globalOptions.racePredictionOptions, workoutOptions.customTargetNames, true)"
     20       :targets="targetSets[workoutOptions.selectedTargetSet] ?
     21       targetSets[workoutOptions.selectedTargetSet].targets : []"/>
     22   </div>
     23 </template>
     24 
     25 <script setup lang="ts">
     26 import { Calculators, calculateWorkoutResults, defaultGlobalOptions,
     27   defaultWorkoutOptions } from '@/core/calculators';
     28 import type { GlobalOptions, WorkoutOptions } from '@/core/calculators';
     29 import { defaultWorkoutTargetSets } from '@/core/targets';
     30 import type { WorkoutTarget, WorkoutTargetSets } from '@/core/targets';
     31 
     32 import AdvancedOptionsInput from '@/components/AdvancedOptionsInput.vue';
     33 import PaceInput from '@/components/PaceInput.vue';
     34 import SingleOutputTable from '@/components/SingleOutputTable.vue';
     35 
     36 import useStorage from '@/composables/useStorage';
     37 
     38 /*
     39  * The global options
     40  */
     41 const globalOptions = useStorage<GlobalOptions>('global-options', defaultGlobalOptions);
     42 
     43 /*
     44  * The race prediction options
     45  */
     46 const workoutOptions = useStorage<WorkoutOptions>('workout-calculator-options', defaultWorkoutOptions);
     47 
     48 /*
     49  * The target sets
     50  */
     51 const targetSets = useStorage<WorkoutTargetSets>('workout-calculator-target-sets',
     52   defaultWorkoutTargetSets);
     53 </script>
     54 
     55 <style scoped>
     56 @import '@/assets/target-calculator.css';
     57 </style>