import { useMemo } from "react"; import type { CaseStore } from "../../state/useCaseStore"; import { Fieldset } from "../common/Fieldset"; import { Row } from "../common/Row"; import { NumberField } from "../common/NumberField"; import { SelectField } from "../common/SelectField"; import { PUMP_PLUNGER_INCH_OPTIONS, formatPumpDiameterDual, pumpDiameterMmFromInches } from "../../state/unitsDisplay"; type Props = { store: CaseStore }; export function PumpTab({ store }: Props) { const { state, update } = store; const isMetric = state.unitsSelection === 1; const pumpOptions = useMemo(() => { const mmVals = PUMP_PLUNGER_INCH_OPTIONS.map((inchVal) => pumpDiameterMmFromInches(inchVal)); const opts = PUMP_PLUNGER_INCH_OPTIONS.map((inchVal, i) => ({ value: mmVals[i], label: formatPumpDiameterDual(mmVals[i], state.unitsSelection) })); const known = opts.some((o) => Math.abs(o.value - state.pumpDiameter) < 0.001); if (!known && state.pumpDiameter > 0) { opts.unshift({ value: state.pumpDiameter, label: formatPumpDiameterDual(state.pumpDiameter, state.unitsSelection) }); } return opts; }, [state.pumpDiameter, state.unitsSelection]); return (
update("pumpDiameter", v)} ariaLabel="Pump plunger diameter" /> update("pumpFriction", v)} /> update("pumpIntakePressure", v)} />
update("pumpFillageOption", v)} options={[ { value: 0, label: "0 — auto" }, { value: 1, label: "1 — specified" }, { value: 2, label: "2 — incomplete fillage" } ]} /> update("percentPumpFillage", v)} />
); }