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; } }