import Page, {PageBody, PageFlexColumn, PageFlexRow} from "../primitives/page/Page";
import Header, {HeaderTitle} from "../primitives/header/Header";
import {TitleLine} from "../primitives/misc/Misc";
import {Size} from "../models/Shared";
import Blob, {BlobText, BlobTextLine} from "../primitives/blob/Blob";
import {Icon} from "../primitives/Shared";
import {faChevronDown, faPlay, faPlus} from "@fortawesome/free-solid-svg-icons";
import {useContext, useEffect, useMemo} from "react";
import ProgramContext from "../contexts/ProgramContext";
import LoadingPage from "./LoadingPage";
import {subTitleOfProgram} from "../models/Programs";
import {useNavigate} from "react-router";
import DeviceContext from "../contexts/DeviceContext";
import WorkoutContext from "../contexts/WorkoutContext";
import {formatDate, formatTime} from "../helpers/dates";
import {colorOf, WorkoutStatus} from "../models/Workouts";
import {faSpinner} from "@fortawesome/free-solid-svg-icons/faSpinner";
import {useKey} from "../hooks/keyboard";
import {Boi} from "../primitives/boi/Boi";
export default function IndexPage(): JSX.Element {
const {devices} = useContext(DeviceContext);
const {programs} = useContext(ProgramContext);
const {workouts, loadingWorkouts, expanded, showMoreWorkouts, refreshWorkouts} = useContext(WorkoutContext);
const navigate = useNavigate();
const isRunning = useMemo(() => workouts.some(w => w.status !== WorkoutStatus.Disconnected), [workouts]);
useEffect(() => {
refreshWorkouts();
}, [refreshWorkouts]);
useKey(["/", "*"], () => navigate("/play"), [navigate]);
if (programs === null) {
return
} else if (devices === null) {
return
}
return (
navigate("/play")} color={isRunning ? "yellow" : "green"}>
{isRunning ? "Fortsett" : "Start"}
Siste økter ({loadingWorkouts ? : workouts.length})
{workouts.map(w => (
navigate(`/workouts/${w.id}`)}>
{formatDate(w.createdAt)} {formatTime(w.createdAt)}
{w.program ? w.program.name : (w.device?.name || "Ukjent enhet")}
))}
{!expanded && (
showMoreWorkouts()}>
{loadingWorkouts && }
{!loadingWorkouts && <> Vis flere> }
)}
Programmer ({programs.length})
{programs.map(p => (
navigate(`/programs/${p.id}`)}>
{p.name}
{subTitleOfProgram(p)}
))}
navigate(`/programs/new`)}>
Legg til
Enheter ({devices.length})
{devices.map(d => (
navigate(`/devices/${d.id}`)}>
{d.name}
{d.connectionString}
))}
navigate("/devices/new")}>
Legg til
);
}