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.

24 lines
794 B

5 years ago
  1. export function diffString(diff) {
  2. return diff < 0 ? `${diff}` : `+${diff}`
  3. }
  4. export default function calculateDiff(program, minutes, seconds, calories) {
  5. const {warmupMin, warmupCpm, cpm} = program;
  6. let preWarmup = 0;
  7. if (warmupMin > 0) {
  8. // Pre-warmup
  9. const warmedUpMinutes = Math.min(minutes, warmupMin);
  10. const warmedUpSeconds = minutes >= warmupMin ? 0 : seconds;
  11. preWarmup = Math.round((warmupCpm * (warmedUpMinutes + (warmedUpSeconds / 60))));
  12. }
  13. // Post-warmup
  14. const trainedMinutes = Math.max(0, minutes - warmupMin);
  15. const trainedSeconds = minutes >= warmupMin ? seconds : 0;
  16. const postWarmup = Math.round((cpm * (trainedMinutes + (trainedSeconds / 60))));
  17. // Sum
  18. const target = Math.round(preWarmup + postWarmup);
  19. return calories - target;
  20. }