Loading src/components/cooling/timeStepBar.tsx +15 −56 Original line number Diff line number Diff line import { useNavigate, useParams, useSearch } from "@tanstack/react-router"; import { Select } from "../shared/dropdown"; import { BaseSyntheticEvent, useCallback, useState } from "react"; import { NumberInput } from "../shared/number"; import { Route as SimulationCoolingRoute } from "../../routes/simulations.$simulationId.cooling"; import { debounce } from "lodash"; import { Input } from "../shared/input"; const defaultResolution = 10; const defaultGranularity = 1.0; export function TimeStepBar() { const navigate = useNavigate(); const { timestepType, resolution, granularity } = useSearch({ const { resolution, granularity } = useSearch({ from: SimulationCoolingRoute.fullPath, }); const { simulationId } = useParams({ from: SimulationCoolingRoute.fullPath }); Loading Loading @@ -43,45 +38,10 @@ export function TimeStepBar() { return ( <div className="my-4 flex items-center px-6"> <span className="mr-2 dark:text-neutral-200">Timestep Type:</span> <Select value={timestepType} choices={[ { label: "Resolution", value: "resolution" }, { label: "Granularity", value: "granularity" }, ]} onChange={(e) => { const value = e.target.value as "resolution" | "granularity"; const g = value === "granularity" ? defaultGranularity : undefined; const r = value === "resolution" ? defaultResolution : undefined; navigate({ from: SimulationCoolingRoute.fullPath, params: { simulationId }, search: (prev) => ({ ...prev, granularity: g, resolution: r, timestepType: value, }), }); setTimestepValue({ granularity: g, resolution: r }); }} /> <span className="mr-2 dark:text-neutral-200"> Timestep Type: Granularity (s) </span> <div className="ml-4"> {timestepType === "resolution" && ( <NumberInput label="Resolution:" labelAlignment="horizontal" inputProps={{ onChange: (e: BaseSyntheticEvent) => { onChange({ g: undefined, r: Number(e.target.value) }); }, value: timestepValue.resolution, min: 1, }} /> )} {timestepType === "granularity" && ( <Input label="Granularity:" labelAlignment="horizontal" Loading @@ -93,7 +53,6 @@ export function TimeStepBar() { } }} /> )} </div> </div> ); Loading src/routes/simulations.$simulationId.tsx +1 −1 Original line number Diff line number Diff line Loading @@ -261,7 +261,7 @@ function Simulation() { <TabLink to="/simulations/$simulationId/cooling" params={{ simulationId: simulationId }} search={{ ...search, resolution: 10 }} search={{ ...search, granularity: 900 }} > Plots </TabLink> Loading Loading
src/components/cooling/timeStepBar.tsx +15 −56 Original line number Diff line number Diff line import { useNavigate, useParams, useSearch } from "@tanstack/react-router"; import { Select } from "../shared/dropdown"; import { BaseSyntheticEvent, useCallback, useState } from "react"; import { NumberInput } from "../shared/number"; import { Route as SimulationCoolingRoute } from "../../routes/simulations.$simulationId.cooling"; import { debounce } from "lodash"; import { Input } from "../shared/input"; const defaultResolution = 10; const defaultGranularity = 1.0; export function TimeStepBar() { const navigate = useNavigate(); const { timestepType, resolution, granularity } = useSearch({ const { resolution, granularity } = useSearch({ from: SimulationCoolingRoute.fullPath, }); const { simulationId } = useParams({ from: SimulationCoolingRoute.fullPath }); Loading Loading @@ -43,45 +38,10 @@ export function TimeStepBar() { return ( <div className="my-4 flex items-center px-6"> <span className="mr-2 dark:text-neutral-200">Timestep Type:</span> <Select value={timestepType} choices={[ { label: "Resolution", value: "resolution" }, { label: "Granularity", value: "granularity" }, ]} onChange={(e) => { const value = e.target.value as "resolution" | "granularity"; const g = value === "granularity" ? defaultGranularity : undefined; const r = value === "resolution" ? defaultResolution : undefined; navigate({ from: SimulationCoolingRoute.fullPath, params: { simulationId }, search: (prev) => ({ ...prev, granularity: g, resolution: r, timestepType: value, }), }); setTimestepValue({ granularity: g, resolution: r }); }} /> <span className="mr-2 dark:text-neutral-200"> Timestep Type: Granularity (s) </span> <div className="ml-4"> {timestepType === "resolution" && ( <NumberInput label="Resolution:" labelAlignment="horizontal" inputProps={{ onChange: (e: BaseSyntheticEvent) => { onChange({ g: undefined, r: Number(e.target.value) }); }, value: timestepValue.resolution, min: 1, }} /> )} {timestepType === "granularity" && ( <Input label="Granularity:" labelAlignment="horizontal" Loading @@ -93,7 +53,6 @@ export function TimeStepBar() { } }} /> )} </div> </div> ); Loading
src/routes/simulations.$simulationId.tsx +1 −1 Original line number Diff line number Diff line Loading @@ -261,7 +261,7 @@ function Simulation() { <TabLink to="/simulations/$simulationId/cooling" params={{ simulationId: simulationId }} search={{ ...search, resolution: 10 }} search={{ ...search, granularity: 900 }} > Plots </TabLink> Loading