import React, {useContext, useEffect, useMemo, useState} from 'react';
import "./Bois.css";
import {StatusContext} from "./Contexts";
import {CalorieScore, CpmScore, DistanceScore, RpmScore, Timer} from "./Score";
import calculateDiff from "../helpers/diff";
import useKey from "../hooks/useKey";
import {COLOR_VERY_BAD} from "../helpers/color";
import {Milestones} from "./Milestones";
const Boi = ({type, children}) => {
return (
{children}
)
};
export const LeftBoi = () => {
const {prevLongDiff, workoutStatus, program} = useContext(StatusContext);
if (workoutStatus === null || program === null) {
return null;
}
const {minutes, seconds, calories, distance, rpm} = workoutStatus;
const diff = calculateDiff(program, minutes, seconds, calories);
const cpm = calories / (minutes + (seconds / 60));
return (
);
};
export const CentreBoi = () => {
const {
state, program, setProgram, bike, setBike, bikes, programs,
start, pause, stop, create, workoutStatus,
} = useContext(StatusContext);
const [options, setOptions] = useState(null);
const [current, setCurrent] = useState(0);
useEffect(() => {
if (bikes === null && programs === null) {
return;
}
setOptions(state === "bike" ? bikes : programs);
}, [state, bike, program, bikes, programs]);
useKey("-", () => {
if (options === null) {
return false;
}
if (current > 0) {
setCurrent(current - 1);
} else {
setCurrent(options.length - 1);
}
return true;
});
useKey("+", () => {
if (options === null) {
return false;
}
if (current < options.length - 1) {
setCurrent(current + 1);
} else {
setCurrent(0);
}
return true;
});
useKey("Enter", () => {
if (state === "bike") {
setBike(options[current]);
return true;
} else if (state === "program") {
setProgram(options[current]);
create(options[current]);
return true;
} else if (state === "connected") {
start();
return true;
} else if (state === "started") {
pause();
return true;
}
return false;
});
useKey("Escape", () => {
if (state === "connected") {
stop();
return true;
}
});
if (state === "started" && workoutStatus !== null) {
const {minutes, seconds, calories} = workoutStatus;
const diff = calculateDiff(program, minutes, seconds, calories);
if (diff < 0) {
return (
{diff}
);
} else {
return null;
}
}
if (bikes === null || programs === null) {
return Laster inn...;
}
return (
{state === "stopped" && (
Inaktiv
)}
{state === "bike" && (
Velg sykkel (+/-):
{options[current].name}
)}
{state === "program" && (
Velg program (+/-):
{options[current].name}
)}
{state === "connected" && (
Enter: |
Start |
Esc: |
Avslutt |
)}
{state === "unknown" && (
Noe gikk galt
)}
);
};
export const RightBoi = () => {
const {milestones} = useContext(StatusContext);
if ((milestones || []).length === 0) {
return null;
}
return (
j.minutes - i.minutes)}/>
);
};