From b8584eb2c50fd32db29fefee762f19c0b2d9475b Mon Sep 17 00:00:00 2001 From: renatodellosso Date: Thu, 20 Jun 2024 13:37:58 -0400 Subject: [PATCH] Enums in pit stats --- components/forms/Form.tsx | 26 +++++++--- components/forms/FormPages.tsx | 88 +--------------------------------- components/forms/Sliders.tsx | 28 +++++++---- 3 files changed, 40 insertions(+), 102 deletions(-) diff --git a/components/forms/Form.tsx b/components/forms/Form.tsx index f73e3d5c..ca6d3f9a 100644 --- a/components/forms/Form.tsx +++ b/components/forms/Form.tsx @@ -1,6 +1,6 @@ import { AllianceColor, Report, QuantitativeFormData, QuantitativeReportLayout, QuantitativeReportLayoutElement, QuantitativeReportLayoutElementHolder, IntakeTypes, Defense, Drivetrain } from "@/lib/Types"; import { useCallback, useState, useEffect } from "react"; -import FormPage, { AutoPage, EndPage, PrematchPage, TeleopPage } from "./FormPages"; +import FormPage from "./FormPages"; import { useCurrentSession } from "@/lib/client/useCurrentSession"; import { FaArrowLeft, FaArrowRight } from "react-icons/fa"; @@ -12,6 +12,7 @@ import { camelCaseToTitleCase } from "@/lib/client/ClientUtils"; import StartingPosition from "./StartingPosition"; import { CommentBox } from "./Comment"; import { IncrementButton } from "./Buttons"; +import Slider from "./Sliders"; const api = new ClientAPI("gearboxiscool"); @@ -95,10 +96,14 @@ export default function Form(props: { report: Report, layout: QuantitativeReport else { const enums = [IntakeTypes, Defense, Drivetrain]; - for (const e of enums) { - if (Object.values(e).includes(formData[element.key])) { - element.type = e; - break; + if (element.key === "Defense") + element.type = Defense; + else { + for (const e of enums) { + if (Object.values(e).includes(formData[element.key])) { + element.type = e; + break; + } } } @@ -150,6 +155,15 @@ export default function Form(props: { report: Report, layout: QuantitativeReport ); } + + // Enum + if (element.type) { + return ( + + ); + } } function blockToNode(block: QuantitativeReportLayoutElementHolder[][]) { @@ -213,8 +227,6 @@ export default function Form(props: { report: Report, layout: QuantitativeReport ); }); - console.log(formData); - return (
{pages[page]} diff --git a/components/forms/FormPages.tsx b/components/forms/FormPages.tsx index cba876d7..9928228b 100644 --- a/components/forms/FormPages.tsx +++ b/components/forms/FormPages.tsx @@ -1,7 +1,7 @@ import { ReactNode } from "react"; import StartingPosition from "./StartingPosition"; import { AutoButtons, TeleopButtons } from "./Buttons"; -import DefenseSlider from "./Sliders"; +import Slider from "./Sliders"; import Checkbox, { IntakeType } from "./Checkboxes"; import { AllianceColor, QuantitativeFormData } from "@/lib/Types"; import { CommentBox } from "./Comment"; @@ -36,88 +36,4 @@ export default function FormPage(props: {
); -} - -export function PrematchPage(props: PageProps) { - return - - - -} - -export function AutoPage(props: PageProps) { - return ( - - -

- -
- ); -} - -export function TeleopPage(props: PageProps) { - return ( - - - - - ); -} - -export function EndPage(props: EndPageProps) { - return ( - - - - - - - - -
- -
- ); -} +} \ No newline at end of file diff --git a/components/forms/Sliders.tsx b/components/forms/Sliders.tsx index 9d56dfdf..249f12cb 100644 --- a/components/forms/Sliders.tsx +++ b/components/forms/Sliders.tsx @@ -3,29 +3,39 @@ import { QuantitativeFormData, Defense } from "@/lib/Types"; export type SliderProps = { data: QuantitativeFormData; callback: (key: string, value: string | number | boolean) => void; + possibleValues: { [key: string]: any }; + title: string; + value: any; + key: keyof QuantitativeFormData; }; -export default function DefenseSlider(props: SliderProps) { - const keys = Object.keys(Defense); - const num = keys.indexOf(props.data.Defense); +export default function Slider(props: SliderProps) { + const keys = Object.keys(props.possibleValues); + const num = keys.indexOf(props.value); return (
-

Defense

+

{props.title}

{ - props.callback("Defense", keys[e.target.valueAsNumber]); + props.callback(props.key as string, keys[e.target.valueAsNumber]); }} type="range" min={0} - max="2" + max={keys.length - 1} value={num} className="range range-primary" step="1" />
- None - Partial - Full + { + keys.map((key, i) => { + return ( + + {key} + + ); + }) + }
);