From be8dc1d11f1ed330b83854b8d78a5e61155a2761 Mon Sep 17 00:00:00 2001 From: csawatzky Date: Wed, 17 Dec 2025 14:04:37 -0600 Subject: [PATCH] various display updates to use the custom grain name and colors --- src/bin/BinCardV2.tsx | 36 +++++++++++++----------- src/bin/BinSettings.tsx | 11 +++++++- src/bin/BinVisualizerV2.tsx | 25 ++++++++-------- src/bin/graphs/BinGraphs.tsx | 26 ++++++++--------- src/component/ComponentForm.tsx | 1 - src/component/UnitMeasurementSummary.tsx | 3 +- src/grain/CustomGrainForm.tsx | 2 +- src/models/Bin.ts | 6 +++- 8 files changed, 64 insertions(+), 46 deletions(-) diff --git a/src/bin/BinCardV2.tsx b/src/bin/BinCardV2.tsx index 3084edc..b4b465c 100644 --- a/src/bin/BinCardV2.tsx +++ b/src/bin/BinCardV2.tsx @@ -200,25 +200,27 @@ export default function BinCard(props: Props) { const typeDisplay = () => { let grainType = bin.settings.inventory?.grainType ?? pond.Grain.GRAIN_NONE; - if (bin.storage() === pond.BinStorage.BIN_STORAGE_SUPPORTED_GRAIN) { - return ( - - - {GrainDescriber(grainType).name} - - - {bin.settings.inventory?.grainSubtype} - - + switch (bin.storage()){ + case pond.BinStorage.BIN_STORAGE_SUPPORTED_GRAIN: + return ( + + + {GrainDescriber(grainType).name} + + + {bin.settings.inventory?.grainSubtype} + + + ) + default: + return ( + + + {bin.grainName()} + + ); } - return ( - - - {bin.settings.inventory?.customTypeName} - - - ); }; const tempDisplay = () => { diff --git a/src/bin/BinSettings.tsx b/src/bin/BinSettings.tsx index 3cb4bf7..69e0510 100644 --- a/src/bin/BinSettings.tsx +++ b/src/bin/BinSettings.tsx @@ -449,6 +449,11 @@ export default function BinSettings(props: Props) { form.inventory.inventoryControl = inventoryControl form.inventory.autoThreshold = autoFillThreshold form.inventory.lidarDropCm = getDistanceUnit() === pond.DistanceUnit.DISTANCE_UNIT_FEET ? lidarDropDistance * 30.48 : lidarDropDistance + if(form.inventory.grainType !== pond.Grain.GRAIN_CUSTOM){ + form.inventory.customGrain = undefined + }else{ + form.inventory.customGrain = customGrain + } } binAPI @@ -498,7 +503,11 @@ export default function BinSettings(props: Props) { form.inventory.autoThreshold = autoFillThreshold //if the users preferences are in feet convert the distance to cm otherwise it was entered as cm so use that form.inventory.lidarDropCm = getDistanceUnit() === pond.DistanceUnit.DISTANCE_UNIT_FEET ? lidarDropDistance * 30.48 : lidarDropDistance - form.inventory.customGrain = customGrain + if(form.inventory.grainType !== pond.Grain.GRAIN_CUSTOM){ + form.inventory.customGrain = undefined + }else{ + form.inventory.customGrain = customGrain + } } binAPI .updateBin(bin.key(), form, as) diff --git a/src/bin/BinVisualizerV2.tsx b/src/bin/BinVisualizerV2.tsx index 77c930d..3895a13 100644 --- a/src/bin/BinVisualizerV2.tsx +++ b/src/bin/BinVisualizerV2.tsx @@ -70,6 +70,7 @@ import Edit from "@mui/icons-material/Edit"; import { makeStyles } from "@mui/styles"; import ButtonGroup from "common/ButtonGroup"; import ModeChangeDialog from "./conditioning/modeChangeDialog"; +import CustomGrainForm from "grain/CustomGrainForm"; const useStyles = makeStyles((theme: Theme) => { return ({ @@ -286,6 +287,7 @@ export default function BinVisualizer(props: Props) { const [openModeChange, setOpenModeChange] = useState(false) const [modeChangeInProgress, setModeChangeInProgress] = useState(false) + const [newGrainSettings, setNewGrainSettings] = useState() useEffect(() => { setModeTime(moment(bin.status.lastModeChange)); @@ -327,6 +329,7 @@ export default function BinVisualizer(props: Props) { setBushPerTonne(bin.settings.inventory.bushelsPerTonne.toFixed(2)); setGrainSubtype(bin.subtype()); setNewBinMode(bin.settings.mode); + setNewGrainSettings(bin.customGrain()); } if (bin.settings) { let t = bin.settings.outdoorTemp; @@ -515,18 +518,13 @@ export default function BinVisualizer(props: Props) { const capacity = bin.settings.specs?.bushelCapacity ?? 0; const grainBushels = bin.bushels(); const isEmpty = bin.settings.inventory?.empty === true || !grainBushels || grainBushels <= 0; - const grainType = bin.settings.inventory?.grainType; - const grainTypeName = isEmpty || !grainType ? "" : GrainDescriber(grainType).name; - const customTypeName = bin.settings.inventory?.customTypeName; const grainSubtype = bin.settings.inventory?.grainSubtype; return ( {/* grain display */} - {bin.storage() === pond.BinStorage.BIN_STORAGE_SUPPORTED_GRAIN - ? grainTypeName - : customTypeName} + {isEmpty ? "" : bin.grainName()} {grainSubtype !== "" ? " - " + grainSubtype : ""} - - )} + )} */} + {setNewGrainSettings(settings)}}/> ) : ( { - let col = "yellow"; - let binInv = bin.settings.inventory; - if (binInv) { - if (binInv.grainType === pond.Grain.GRAIN_CUSTOM) { - col = stringToMaterialColour(binInv.customTypeName); - } else if (binInv.grainType !== pond.Grain.GRAIN_NONE) { - col = GrainDescriber(binInv.grainType).colour; - } - } - return col; - }; + // const determineGrainColour = () => { + // let col = "yellow"; + // let binInv = bin.settings.inventory; + // if (binInv) { + // if (binInv.grainType === pond.Grain.GRAIN_CUSTOM) { + // col = stringToMaterialColour(binInv.customTypeName); + // } else if (binInv.grainType !== pond.Grain.GRAIN_NONE) { + // col = GrainDescriber(binInv.grainType).colour; + // } + // } + // return col; + // }; const inventoryGraph = () => { return ( @@ -193,7 +193,7 @@ export default function BinGraphs(props: Props) { endDate={endDate} binLoading={binLoading} bin={bin} - colour={determineGrainColour()} + colour={bin.grainColour()} fertilizerBin={bin.settings.storage === pond.BinStorage.BIN_STORAGE_FERTILIZER} /> diff --git a/src/component/ComponentForm.tsx b/src/component/ComponentForm.tsx index 354094c..3334b83 100644 --- a/src/component/ComponentForm.tsx +++ b/src/component/ComponentForm.tsx @@ -391,7 +391,6 @@ export default function ComponentForm(props: Props) { }; const updateCustomGrain = (grainSettings?: pond.GrainSettings) => { - console.log("update custom grain") let f = cloneDeep(form) f.component.settings.customGrain = grainSettings f.component.settings.grainType = pond.Grain.GRAIN_CUSTOM diff --git a/src/component/UnitMeasurementSummary.tsx b/src/component/UnitMeasurementSummary.tsx index d276136..ca2dcf0 100644 --- a/src/component/UnitMeasurementSummary.tsx +++ b/src/component/UnitMeasurementSummary.tsx @@ -10,6 +10,7 @@ import { Pressure } from "models/Pressure"; import { GrainCable } from "models/GrainCable"; import { extension, Summary } from "pbHelpers/ComponentType"; import { makeStyles } from "@mui/styles"; +import { stringToMaterialColour } from "utils"; interface Props { component: Component | Plenum | Pressure | GrainCable; @@ -109,7 +110,7 @@ export default function UnitMeasurementSummary(props: Props) { const grainColor = () => { if(component.settings.grainType === pond.Grain.GRAIN_CUSTOM && component.settings.customGrain?.name){ - return + return stringToMaterialColour(component.settings.customGrain.name) } return GrainDescriber(component.settings.grainType).colour } diff --git a/src/grain/CustomGrainForm.tsx b/src/grain/CustomGrainForm.tsx index 1020ce2..ae20d93 100644 --- a/src/grain/CustomGrainForm.tsx +++ b/src/grain/CustomGrainForm.tsx @@ -65,7 +65,7 @@ export default function CustomGrainForm(props: Props) { }) }) } - setGrainOptions(options) + setGrainOptions([...options]) setGrainMap(map) }) },[grainAPI]) diff --git a/src/models/Bin.ts b/src/models/Bin.ts index 095f151..b208c1e 100644 --- a/src/models/Bin.ts +++ b/src/models/Bin.ts @@ -90,7 +90,11 @@ export class Bin { public customType(): string { let c = ""; if (this.settings.inventory) { - c = this.settings.inventory.customTypeName; + if (this.settings.inventory.customGrain){ + c = this.settings.inventory.customGrain.name + }else{ + c = this.settings.inventory.customTypeName; + } } return c; }