diff --git a/package-lock.json b/package-lock.json index f9470e8..ddc2cac 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10953,7 +10953,7 @@ }, "node_modules/protobuf-ts": { "version": "1.0.0", - "resolved": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#e476940999616206e9f2fa5cec3ac6807b18cd2d", + "resolved": "git+https://gitlab+deploy-token-50627:hv8mB4WkyvtjBpJKU1rN@gitlab.com/brandx/protobuf-ts.git#80ad2f8b81afe9e04f10f9b52a8250e6824d2b41", "dependencies": { "protobufjs": "^6.8.8" } diff --git a/src/bin/BinSettings.tsx b/src/bin/BinSettings.tsx index 413ac1f..92ced48 100644 --- a/src/bin/BinSettings.tsx +++ b/src/bin/BinSettings.tsx @@ -183,7 +183,8 @@ export default function BinSettings(props: Props) { const [inMoistureString, setInMoistureString] = useState("0"); const [tMoistureString, setTMoistureString] = useState("0"); const [moistureTargetDeviation, setMoistureTargetDeviation] = useState("0"); - const [autoFillThreshold, setAutoFillThreshold] = useState(0); + const [autoFillThreshold, setAutoFillThreshold] = useState(5); + const [lidarDropDistance, setLidarDropDistance] = useState(0); const [validInitial, setValidInitial] = useState(true); const [validTarget, setValidTarget] = useState(true); const [validDeviation, setValidDeviation] = useState(true); @@ -217,7 +218,7 @@ export default function BinSettings(props: Props) { : { ...{ specs: pond.BinSpecs.create({ shape: pond.BinShape.BIN_SHAPE_FLAT_BOTTOM }), - inventory: pond.BinInventory.create({ grainBushels: 0, targetTemperature: 15 }), + inventory: pond.BinInventory.create({ grainBushels: 0, targetTemperature: 15, autoThreshold: 5 }), highTemp: 20, lowTemp: 10 } @@ -315,7 +316,12 @@ export default function BinSettings(props: Props) { setInMoistureString(initForm.inventory?.initialMoisture.toString() ?? "0"); setTMoistureString(initForm.inventory?.targetMoisture.toString() ?? "0"); setMoistureTargetDeviation(initForm.inventory?.moistureTargetDeviation.toString() ?? "0"); - setAutoFillThreshold(initForm.inventory?.autoThreshold ?? 0) + setAutoFillThreshold(initForm.inventory?.autoThreshold ?? 5) + let dropDistance = initForm.inventory?.lidarDropCm ?? 0 + if(getDistanceUnit() === pond.DistanceUnit.DISTANCE_UNIT_FEET){ + dropDistance = Math.round((dropDistance/30.48)*100)/100 + } + setLidarDropDistance(dropDistance) setActiveStep(0); if (bin) { setAutoTopNode(bin.settings.autoGrainNode); @@ -437,6 +443,7 @@ export default function BinSettings(props: Props) { if (form.inventory) { form.inventory.inventoryControl = inventoryControl form.inventory.autoThreshold = autoFillThreshold + form.inventory.lidarDropCm = getDistanceUnit() === pond.DistanceUnit.DISTANCE_UNIT_FEET ? lidarDropDistance * 30.48 : lidarDropDistance } binAPI @@ -484,6 +491,8 @@ export default function BinSettings(props: Props) { if (form.inventory) { form.inventory.inventoryControl = inventoryControl 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 } console.log(form) binAPI @@ -947,6 +956,25 @@ export default function BinSettings(props: Props) { setAutoFillThreshold(+e.target.value) }} /> + + {getDistanceUnit() === pond.DistanceUnit.DISTANCE_UNIT_FEET ? "ft" : "cm"} + + ) + }} + value={lidarDropDistance} + onChange={e => { + setLidarDropDistance(+e.target.value) + }} + /> } {inventoryControl === pond.BinInventoryControl.BIN_INVENTORY_CONTROL_LIBRACART && diff --git a/src/grain/GrainDescriber.ts b/src/grain/GrainDescriber.ts index 3c5bceb..5698cb7 100644 --- a/src/grain/GrainDescriber.ts +++ b/src/grain/GrainDescriber.ts @@ -139,7 +139,7 @@ export const GrainExtensions: Map = new Map([ [ pond.Grain.GRAIN_CORN, { - name: "Corn", + name: "Corn (Henderson)", group: "Corn", equation: Equation.henderson, a: 0.000066612, @@ -153,6 +153,40 @@ export const GrainExtensions: Map = new Map([ bushelsPerTonne: 39.368 } ], + [ + pond.Grain.GRAIN_CORN_B, + { + name: "Corn (Chung-Pfost)", + group: "Corn", + equation: Equation.chungPfost, + a: 374.34, + b: 0.18662, + c: 31.696, + setTempC: 38.0, + targetMC: 15.6, + img: CornImg, + colour: "#ffef62", + weightConversionKg: 25.4014333665971, + bushelsPerTonne: 39.368 + } + ], + [ + pond.Grain.GRAIN_CORN_C, + { + name: "Corn (Oswin)", + group: "Corn", + equation: Equation.oswin, + a: 15.303, + b: -0.10164, + c: 3.0358, + setTempC: 38.0, + targetMC: 15.6, + img: CornImg, + colour: "#ffef62", + weightConversionKg: 25.4014333665971, + bushelsPerTonne: 39.368 + } + ], [ pond.Grain.GRAIN_MAIZE_WHITE, { @@ -190,7 +224,7 @@ export const GrainExtensions: Map = new Map([ [ pond.Grain.GRAIN_OATS, { - name: "Oats a", + name: "Oats (Henderson)", group: "Oats", equation: Equation.henderson, a: 0.000085511, @@ -207,7 +241,7 @@ export const GrainExtensions: Map = new Map([ [ pond.Grain.GRAIN_OATS_B, { - name: "Oats b", + name: "Oats (Chung-Pfost)", group: "Oats", equation: Equation.chungPfost, a: 442.85, @@ -224,7 +258,7 @@ export const GrainExtensions: Map = new Map([ [ pond.Grain.GRAIN_OATS_C, { - name: "Oats c", + name: "Oats (Oswin)", group: "Oats", equation: Equation.oswin, a: 12.412, @@ -543,7 +577,7 @@ export const GrainExtensions: Map = new Map([ ],[ pond.Grain.GRAIN_RYE_A, { - name: "Rye a", + name: "Rye (Henderson)", group: "Rye", equation: Equation.henderson, a: 0.00006343, @@ -558,7 +592,7 @@ export const GrainExtensions: Map = new Map([ ],[ pond.Grain.GRAIN_RYE_B, { - name: "Rye b", + name: "Rye (Chung-Pfost)", group: "Rye", equation: Equation.chungPfost, a: 461.0230, @@ -573,7 +607,7 @@ export const GrainExtensions: Map = new Map([ ],[ pond.Grain.GRAIN_RYE_C, { - name: "Rye c", + name: "Rye (Halsey)", group: "Rye", equation: Equation.halsey, a: 4.2970, @@ -588,7 +622,7 @@ export const GrainExtensions: Map = new Map([ ],[ pond.Grain.GRAIN_RYE_D, { - name: "Rye d", + name: "Rye (Oswin)", group: "Rye", equation: Equation.oswin, a: 11.8870, diff --git a/src/interactions/InteractionSettings.tsx b/src/interactions/InteractionSettings.tsx index 40b9132..2519669 100644 --- a/src/interactions/InteractionSettings.tsx +++ b/src/interactions/InteractionSettings.tsx @@ -957,29 +957,16 @@ export default function InteractionSettings(props: Props) { - {index === 0 ? ( - - 1 || !canEdit} - aria-label="Add another condition" - onClick={addCondition} - className={classNames(classes.greenButton, classes.noPadding)}> - - - - ) : ( - - removeCondition(index)} - className={classNames(classes.redButton, classes.noPadding)}> - - - - )} + + removeCondition(index)} + className={classNames(classes.redButton, classes.noPadding)}> + + + {multiNodeSource() && !sensor && ( @@ -1076,6 +1063,16 @@ export default function InteractionSettings(props: Props) { ) : ( You must select a source before adding conditions )} + + = device.maxConditions() || !canEdit} + aria-label="Add another condition" + onClick={addCondition} + className={classNames(classes.greenButton, classes.noPadding)}> + + + ); }; diff --git a/src/models/Device.ts b/src/models/Device.ts index 115f199..6ee074d 100644 --- a/src/models/Device.ts +++ b/src/models/Device.ts @@ -169,6 +169,18 @@ export class Device { } } + public maxConditions(): number { + let max = 2 + switch (this.settings.platform) { + case pond.DevicePlatform.DEVICE_PLATFORM_V2_CELLULAR_BLACK: + case pond.DevicePlatform.DEVICE_PLATFORM_V2_WIFI_BLUE: + case pond.DevicePlatform.DEVICE_PLATFORM_V2_CELLULAR_BLUE: + case pond.DevicePlatform.DEVICE_PLATFORM_V2_ETHERNET_BLUE: + max = this.status.firmwareVersion >= "2.1.9" ? 4 : 2; + } + return max + } + public featureSupported(feature: string): boolean { let versions = featureVersions.get(feature); if (!versions) {