From cd283a0ea15f6779cc96ef971732ee3779baa71b Mon Sep 17 00:00:00 2001 From: csawatzky Date: Wed, 31 Dec 2025 15:29:57 -0600 Subject: [PATCH] set up the table for supported grains --- src/grain/GrainDescriber.ts | 89 ++++++++++++++++++++----------------- src/pages/Grains.tsx | 57 +++++++++++++++++++++--- 2 files changed, 100 insertions(+), 46 deletions(-) diff --git a/src/grain/GrainDescriber.ts b/src/grain/GrainDescriber.ts index 46c5186..a462bdc 100644 --- a/src/grain/GrainDescriber.ts +++ b/src/grain/GrainDescriber.ts @@ -14,11 +14,12 @@ import WheatImg from "assets/grain/wheat.jpg"; import { Option } from "common/SearchSelect"; import { cloneDeep } from "lodash"; import { pond } from "protobuf-ts/pond"; +import { Equation } from "./GrainMoisture"; export interface GrainExtension { name: string; group: string; - equation: pond.MoistureEquation; + equation: Equation; a: number; b: number; c: number; @@ -36,7 +37,7 @@ const defaultSetTemp = 30.0; const defaultGrain: GrainExtension = { name: "None", group: "", - equation: pond.MoistureEquation.MOISTURE_EQUATION_NONE, + equation: Equation.none, a: 0, b: 0, c: 0, @@ -55,7 +56,7 @@ export const GrainExtensions: Map = new Map([ { name: "Custom Type", group: "", - equation: pond.MoistureEquation.MOISTURE_EQUATION_NONE, + equation: Equation.none, a: 0, b: 0, c: 0, @@ -71,7 +72,7 @@ export const GrainExtensions: Map = new Map([ { name: "Barley", group: "Barley", - equation: pond.MoistureEquation.MOISTURE_EQUATION_CHUNG_PFOST, + equation: Equation.chungPfost, a: 475.12, b: 0.14843, c: 71.996, @@ -88,7 +89,7 @@ export const GrainExtensions: Map = new Map([ { name: "Buckwheat", group: "Buckwheat", - equation: pond.MoistureEquation.MOISTURE_EQUATION_CHUNG_PFOST, + equation: Equation.chungPfost, a: 103540000, b: 0.1646, c: 15853000, @@ -105,7 +106,7 @@ export const GrainExtensions: Map = new Map([ { name: "Canola", group: "Canola", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HALSEY, + equation: Equation.halsey, a: 3.489, b: -0.010553, c: 1.86, @@ -123,7 +124,7 @@ export const GrainExtensions: Map = new Map([ { name: "Rapeseed", group: "Canola", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HALSEY, + equation: Equation.halsey, a: 3.0026, b: -0.0048967, c: 1.7607, @@ -140,7 +141,7 @@ export const GrainExtensions: Map = new Map([ { name: "Corn (Henderson)", group: "Corn", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HENDERSON, + equation: Equation.henderson, a: 0.000066612, b: 1.9677, c: 42.143, @@ -157,7 +158,7 @@ export const GrainExtensions: Map = new Map([ { name: "Corn (Chung-Pfost)", group: "Corn", - equation: pond.MoistureEquation.MOISTURE_EQUATION_CHUNG_PFOST, + equation: Equation.chungPfost, a: 374.34, b: 0.18662, c: 31.696, @@ -174,7 +175,7 @@ export const GrainExtensions: Map = new Map([ { name: "Corn (Oswin)", group: "Corn", - equation: pond.MoistureEquation.MOISTURE_EQUATION_OSWIN, + equation: Equation.oswin, a: 15.303, b: -0.10164, c: 3.0358, @@ -191,7 +192,7 @@ export const GrainExtensions: Map = new Map([ { name: "Maize White", group: "Corn", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HENDERSON, + equation: Equation.henderson, a: 0.000066612, b: 1.9677, c: 70.143, @@ -208,7 +209,7 @@ export const GrainExtensions: Map = new Map([ { name: "Maize Yellow", group: "Corn", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HENDERSON, + equation: Equation.henderson, a: 0.000066612, b: 1.9677, c: 65.143, @@ -225,7 +226,7 @@ export const GrainExtensions: Map = new Map([ { name: "Oats (Henderson)", group: "Oats", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HENDERSON, + equation: Equation.henderson, a: 0.000085511, b: 2.0087, c: 37.811, @@ -242,7 +243,7 @@ export const GrainExtensions: Map = new Map([ { name: "Oats (Chung-Pfost)", group: "Oats", - equation: pond.MoistureEquation.MOISTURE_EQUATION_CHUNG_PFOST, + equation: Equation.chungPfost, a: 442.85, b: 0.21228, c: 35.803, @@ -259,7 +260,7 @@ export const GrainExtensions: Map = new Map([ { name: "Oats (Oswin)", group: "Oats", - equation: pond.MoistureEquation.MOISTURE_EQUATION_OSWIN, + equation: Equation.oswin, a: 12.412, b: -0.060707, c: 2.9397, @@ -276,7 +277,7 @@ export const GrainExtensions: Map = new Map([ { name: "Peanuts", group: "Peanuts", - equation: pond.MoistureEquation.MOISTURE_EQUATION_OSWIN, + equation: Equation.oswin, a: 8.6588, b: -0.057904, c: 2.6204, @@ -293,7 +294,7 @@ export const GrainExtensions: Map = new Map([ { name: "Long Grain Rice", group: "Rice", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HENDERSON, + equation: Equation.henderson, a: 0.000041276, b: 2.1191, c: 49.828, @@ -310,7 +311,7 @@ export const GrainExtensions: Map = new Map([ { name: "Medium Grain Rice", group: "Rice", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HENDERSON, + equation: Equation.henderson, a: 0.000035502, b: 2.31, c: 27.396, @@ -327,7 +328,7 @@ export const GrainExtensions: Map = new Map([ { name: "Short Grain Rice", group: "Rice", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HENDERSON, + equation: Equation.henderson, a: 0.000048524, b: 2.0794, c: 45.646, @@ -344,7 +345,7 @@ export const GrainExtensions: Map = new Map([ { name: "Sorghum", group: "Sorghum", - equation: pond.MoistureEquation.MOISTURE_EQUATION_CHUNG_PFOST, + equation: Equation.chungPfost, a: 797.33, b: 0.18159, c: 52.238, @@ -361,8 +362,7 @@ export const GrainExtensions: Map = new Map([ { name: "Soybeans", group: "Soybeans", - //equation: Equation.chungPfost, - equation: pond.MoistureEquation.MOISTURE_EQUATION_CHUNG_PFOST, + equation: Equation.chungPfost, a: 228.2, b: 0.2072, c: 30, @@ -379,7 +379,7 @@ export const GrainExtensions: Map = new Map([ { name: "Sunflower", group: "Sunflower", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HENDERSON, + equation: Equation.henderson, a: 0.00031, b: 1.7459, c: 66.603, @@ -396,7 +396,7 @@ export const GrainExtensions: Map = new Map([ { name: "Durum Wheat", group: "Wheat", - equation: pond.MoistureEquation.MOISTURE_EQUATION_OSWIN, + equation: Equation.oswin, a: 13.101, b: -0.052626, c: 2.9987, @@ -413,8 +413,7 @@ export const GrainExtensions: Map = new Map([ { name: "Hard Red Wheat", group: "Wheat", - //equation: Equation.chungPfost, - equation: pond.MoistureEquation.MOISTURE_EQUATION_CHUNG_PFOST, + equation: Equation.chungPfost, a: 610.34, b: 0.15526, c: 93.213, @@ -431,8 +430,7 @@ export const GrainExtensions: Map = new Map([ { name: "Wheat SAWOS", group: "Wheat", - //equation: Equation.chungPfost, - equation: pond.MoistureEquation.MOISTURE_EQUATION_CHUNG_PFOST, + equation: Equation.chungPfost, a: 610.34, b: 0.15526, c: 93.213, @@ -449,7 +447,7 @@ export const GrainExtensions: Map = new Map([ { name: "Un-retted Flax", group: "Flax", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HALSEY, + equation: Equation.halsey, a: 5.11, b: Math.pow(-8.46 * 10, -3), c: 2.26, @@ -466,7 +464,7 @@ export const GrainExtensions: Map = new Map([ { name: "Dew-retted Flax", group: "Flax", - equation: pond.MoistureEquation.MOISTURE_EQUATION_OSWIN, + equation: Equation.oswin, a: 6.5, b: Math.pow(-1.68 * 10, -2), c: 3.2, @@ -483,7 +481,7 @@ export const GrainExtensions: Map = new Map([ { name: "Yellow Peas", group: "Peas", - equation: pond.MoistureEquation.MOISTURE_EQUATION_OSWIN, + equation: Equation.oswin, a: 14.81, b: -0.109, c: 3.019, @@ -500,7 +498,7 @@ export const GrainExtensions: Map = new Map([ { name: "Blaze Lentils", group: "Lentils", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HALSEY, + equation: Equation.halsey, a: 5.39, b: -0.015, c: 2.273, @@ -517,7 +515,7 @@ export const GrainExtensions: Map = new Map([ { name: "Redberry Lentils", group: "Lentils", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HALSEY, + equation: Equation.halsey, a: 4.749, b: -0.0116, c: 2.066, @@ -534,7 +532,7 @@ export const GrainExtensions: Map = new Map([ { name: "Robin Lentils", group: "Lentils", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HALSEY, + equation: Equation.halsey, a: 5.176, b: -0.0065, c: 2.337, @@ -551,7 +549,7 @@ export const GrainExtensions: Map = new Map([ { name: "Dry Beans Red", group: "Dry Beans", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HALSEY, + equation: Equation.halsey, a: 4.2669, b: -0.013382, c: 1.6933, @@ -566,7 +564,7 @@ export const GrainExtensions: Map = new Map([ { name: "Dry Beans Black", group: "Dry Beans", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HALSEY, + equation: Equation.halsey, a: 5.2003, b: -0.022685, c: 1.9656, @@ -581,7 +579,7 @@ export const GrainExtensions: Map = new Map([ { name: "Rye (Henderson)", group: "Rye", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HENDERSON, + equation: Equation.henderson, a: 0.00006343, b: 2.2060, c: 13.1810, @@ -596,8 +594,7 @@ export const GrainExtensions: Map = new Map([ { name: "Rye (Chung-Pfost)", group: "Rye", - //equation: Equation.chungPfost, - equation: pond.MoistureEquation.MOISTURE_EQUATION_CHUNG_PFOST, + equation: Equation.chungPfost, a: 461.0230, b: 0.1840, c: 36.7410, @@ -612,7 +609,7 @@ export const GrainExtensions: Map = new Map([ { name: "Rye (Halsey)", group: "Rye", - equation: pond.MoistureEquation.MOISTURE_EQUATION_HALSEY, + equation: Equation.halsey, a: 4.2970, b: 0.380, c: 2.2710, @@ -627,7 +624,7 @@ export const GrainExtensions: Map = new Map([ { name: "Rye (Oswin)", group: "Rye", - equation: pond.MoistureEquation.MOISTURE_EQUATION_OSWIN, + equation: Equation.oswin, a: 11.8870, b: 0.0210, c: 3.2620, @@ -644,6 +641,16 @@ export function GetGrainExtensionMap(): Map { return cloneDeep(GrainExtensions); } +export function GetValidGrainExtensions(): GrainExtension[] { + let validGrains: GrainExtension[] = [] + GrainExtensions.forEach((ext, key) => { + if(key !== pond.Grain.GRAIN_NONE && key !== pond.Grain.GRAIN_INVALID && key !== pond.Grain.GRAIN_CUSTOM){ + validGrains.push(ext) + } + }) + return validGrains +} + export default function GrainDescriber(type: pond.Grain): GrainExtension { let describer = GrainExtensions.get(type); //console.log(describer) diff --git a/src/pages/Grains.tsx b/src/pages/Grains.tsx index ae4b3ac..59fbead 100644 --- a/src/pages/Grains.tsx +++ b/src/pages/Grains.tsx @@ -7,7 +7,7 @@ import ButtonGroup from "common/ButtonGroup"; import { useMobile, useSnackbar, useUserAPI } from "hooks"; import { useGrainAPI } from "providers/pond/grainAPI"; import ResponsiveTable from "common/ResponsiveTable"; -import { GrainExtension } from "grain"; +import { GetGrainExtensionMap, GetValidGrainExtensions, GrainExtension } from "grain"; import ResponsiveDialog from "common/ResponsiveDialog"; import { useGlobalState } from "providers"; import { Scope } from "models"; @@ -42,16 +42,33 @@ export default function Grains() { },[tableSize, tablePage]) useEffect(() => { + //load the custom grains if(displayCustom){ loadCustomGrain() + }else{ + let displayedGrains: GrainExtension[] = [] + let offset = tablePage * tableSize + let limit = tableSize + let grainList = GetValidGrainExtensions() + let sortedGrain = grainList.sort((a, b) => (a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1)) + sortedGrain.forEach((ext, i) => { + if(i >= offset && displayedGrains.length < limit){ + displayedGrains.push(ext) + } + }) + setSupportedGrainTableData(displayedGrains) + setTableTotal(sortedGrain.length) } - //if the user is viewing as a team get their permissions to the team, if they are not then we will get their permission to the grain typ individually when a type is selected + },[loadCustomGrain, tableSize, tablePage, displayCustom, as]) + + useEffect(()=>{ + //if the user is viewing as a team get their permissions to the team, if they are not then we will get their permission to the grain type individually when a type is selected if(as){ userAPI.getUser(user.id(), { key: as, kind: "team" } as Scope).then(resp => { setPermissions(resp.permissions); }); } - },[loadCustomGrain, tableSize, tablePage, displayCustom, as]) + },[as, userAPI]) const equationName = (enumVal: number) => { switch(enumVal){ @@ -134,8 +151,38 @@ export default function Grains() { rows={supportedGrainTableData} page={tablePage} pageSize={tableSize} - handleRowsPerPageChange={() => {}} - setPage={() => {}} + columns={[ + { + title: "Name", + render: row => + + {row.name} + + + }, + { + title: "Group", + render: row => + + {row.group} + + + }, + { + title: "Equation", + render: row => + + {equationName(row.equation ?? 0)} + + + } + ]} + handleRowsPerPageChange={(e) => { + setTableSize(e.target.value) + }} + setPage={(page) => { + setTablePage(page) + }} total={tableTotal} /> )