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