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.
 
 
 
 

40 lines
1.2 KiB

export function diffString(diff) {
return diff < 0 ? `${diff}` : `+${diff}`
}
export default function calculateDiff({program, cooldownMin = null, minutes, seconds, calories}) {
const {warmupMin, warmupCpm, cpm, cooldownCpm} = program;
const actualWarmup = cooldownMin !== null && cooldownMin > 0
? Math.min(warmupMin, cooldownMin)
: warmupMin;
// Minutes in each section
const minWarmup = calculateMins(0, actualWarmup, minutes, seconds);
const minMain = calculateMins(actualWarmup, cooldownMin, minutes, seconds);
const minCooldown = calculateMins(cooldownMin, null, minutes, seconds);
// Expected calories in each section
const calWarmup = minWarmup * warmupCpm;
const calMain = minMain * cpm;
const calCooldown = minCooldown * cooldownCpm;
return Math.round(calories - (calWarmup + calMain + calCooldown));
}
function calculateMins(minMinutes, maxMinutes, minutes, seconds) {
const fraction = seconds / 60;
if (minMinutes === null || minMinutes < 0) {
return 0.0;
}
if (minutes >= minMinutes) {
if (maxMinutes !== null && minutes >= maxMinutes) {
return maxMinutes - minMinutes;
}
return (minutes - minMinutes) + fraction;
} else {
return 0.0;
}
}