You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

55 lines
1.3 KiB

import {Values} from "./Shared";
export interface Program {
id: string
name: string
steps: ProgramStep[]
}
export interface ProgramStep {
index?: number
values: Values,
duration?: Values,
}
export function weighting(step: ProgramStep) {
if (step.duration) {
if (step.duration.time) {
return 8 * step.duration.time;
} else if (step.duration.calories) {
return 4 * step.duration.calories;
} else if (step.duration.distance) {
return step.duration.distance;
}
}
return 0;
}
export function subTitleOfProgram(program: Program): string {
let minSum = 0;
let secSum = 0;
let kcalSum = 0;
let mSum = 0;
let hasCustom = false;
for (const step of program.steps) {
if (step.duration?.time) secSum += step.duration.time;
if (step.duration?.calories) kcalSum += step.duration.calories;
if (step.duration?.distance) mSum += step.duration.distance;
hasCustom = hasCustom || (!(step.duration?.time) && !(step.duration?.calories) && !(step.duration?.distance));
}
minSum = Math.floor(secSum / 60);
secSum = secSum % 60;
const parts = [];
if (minSum > 0) parts.push(`${minSum} min`);
if (secSum > 0) parts.push(`${secSum} sek`);
if (kcalSum > 0) parts.push(`${kcalSum} kcal`);
if (mSum > 0) parts.push(`${mSum / 1000} km`);
if (hasCustom) parts.push("Custom");
return parts.join(" + ");
}