Merge branch 'dev_environment' into staging_environment
This commit is contained in:
commit
1c41157281
11 changed files with 486 additions and 364 deletions
|
|
@ -419,16 +419,12 @@ export default function BinCard(props: Props) {
|
|||
Math.round(current * 35.239).toLocaleString() +
|
||||
"/" +
|
||||
Math.round(capacity * 35.239).toLocaleString() +
|
||||
(lidarBushels ? "(" + Math.round(lidarBushels * 35.239).toLocaleString() + " est)" : "") +
|
||||
" L"
|
||||
);
|
||||
}
|
||||
if (getGrainUnit() === pond.GrainUnit.GRAIN_UNIT_WEIGHT && bin.bushelsPerTonne() > 1) {
|
||||
return (
|
||||
bin.grainTonnes().toLocaleString() +
|
||||
(lidarBushels
|
||||
? "(" + Math.round(lidarBushels / bin.bushelsPerTonne()).toLocaleString() + " est)"
|
||||
: "") +
|
||||
" mT " +
|
||||
bin.fillPercent() +
|
||||
"%"
|
||||
|
|
@ -438,7 +434,6 @@ export default function BinCard(props: Props) {
|
|||
current.toLocaleString() +
|
||||
"/" +
|
||||
capacity.toLocaleString() +
|
||||
(lidarBushels ? "(" + lidarBushels.toLocaleString() + " est)" : "") +
|
||||
" bu"
|
||||
);
|
||||
};
|
||||
|
|
@ -469,10 +464,10 @@ export default function BinCard(props: Props) {
|
|||
|
||||
const info = () => {
|
||||
const inv = bin.settings.inventory;
|
||||
let bushelAmount = inv?.grainBushels;
|
||||
let bushelAmount = bin.bushels();
|
||||
let bushelCapacity = bin.settings.specs?.bushelCapacity;
|
||||
const empty =
|
||||
!inv || inv.empty || !bushelCapacity || bushelCapacity <= 0 || inv.grainBushels <= 0;
|
||||
!inv || inv.empty || !bushelCapacity || bushelCapacity <= 0 || bushelAmount <= 0;
|
||||
return (
|
||||
<Box width={1} marginTop={0}>
|
||||
<Typography align="center" color="textSecondary" noWrap style={{ fontSize: "0.65rem" }}>
|
||||
|
|
|
|||
|
|
@ -362,95 +362,95 @@ export default function BinVisualizer(props: Props) {
|
|||
let trendCables = cables;
|
||||
if (bin.key() !== "" && !loadingTrend) {
|
||||
setLoadingTrend(true);
|
||||
// binAPI
|
||||
// .getBinsTrendData([bin.key()], 7)
|
||||
// .then(resp => {
|
||||
// let binTrend = resp.data.trendData[bin.key()];
|
||||
// //the variables to use to build the average conditions
|
||||
// let temps: number[] = [];
|
||||
// let humids: number[] = [];
|
||||
// let emcs: number[] = [];
|
||||
// let tempTrends: number[] = [];
|
||||
// let humidTrends: number[] = [];
|
||||
// let emcTrends: number[] = [];
|
||||
binAPI
|
||||
.getBinsTrendData([bin.key()], 7)
|
||||
.then(resp => {
|
||||
let binTrend = resp.data.trendData[bin.key()];
|
||||
//the variables to use to build the average conditions
|
||||
let temps: number[] = [];
|
||||
let humids: number[] = [];
|
||||
let emcs: number[] = [];
|
||||
let tempTrends: number[] = [];
|
||||
let humidTrends: number[] = [];
|
||||
let emcTrends: number[] = [];
|
||||
|
||||
// let lowNodeConditions: GrainConditions | undefined = undefined;
|
||||
// let highNodeConditions: GrainConditions | undefined = undefined;
|
||||
// let avgConditions: GrainConditions | undefined = undefined;
|
||||
// trendCables.forEach(cable => {
|
||||
// //only use the values below the top node
|
||||
// //because splice mutates the original array make a clone in the cables so the svg still has all of them for display
|
||||
// //also reverse it so that the node 1 (end of the cable) is in the first position
|
||||
// let tempClone = cloneDeep(cable.temperatures).reverse();
|
||||
// let humClone = cloneDeep(cable.humidities).reverse();
|
||||
// let emcClone = cloneDeep(cable.grainMoistures).reverse();
|
||||
// //add the cable data to the proper arrays
|
||||
// if (cable.topNode > 0) {
|
||||
// temps.push(...tempClone.splice(0, cable.topNode));
|
||||
// humids.push(...humClone.splice(0, cable.topNode));
|
||||
// emcs.push(...emcClone.splice(0, cable.topNode));
|
||||
// } else {
|
||||
// //if the cable has no fill set (top node) then use all of the nodes
|
||||
// temps = tempClone;
|
||||
// humids = humClone;
|
||||
// emcs = emcClone;
|
||||
// }
|
||||
// //add the trend data to the proper arrays if the top node is set
|
||||
// let cableTrendData = binTrend.cableTrend[cable.key()];
|
||||
// tempTrends.push(cableTrendData.grainCelciusTrend);
|
||||
// humidTrends.push(cableTrendData.grainHumidityTrend);
|
||||
// emcTrends.push(cableTrendData.grainEmcTrend);
|
||||
let lowNodeConditions: GrainConditions | undefined = undefined;
|
||||
let highNodeConditions: GrainConditions | undefined = undefined;
|
||||
let avgConditions: GrainConditions | undefined = undefined;
|
||||
trendCables.forEach(cable => {
|
||||
//only use the values below the top node
|
||||
//because splice mutates the original array make a clone in the cables so the svg still has all of them for display
|
||||
//also reverse it so that the node 1 (end of the cable) is in the first position
|
||||
let tempClone = cloneDeep(cable.temperatures).reverse();
|
||||
let humClone = cloneDeep(cable.humidities).reverse();
|
||||
let emcClone = cloneDeep(cable.grainMoistures).reverse();
|
||||
//add the cable data to the proper arrays
|
||||
if (cable.topNode > 0) {
|
||||
temps.push(...tempClone.splice(0, cable.topNode));
|
||||
humids.push(...humClone.splice(0, cable.topNode));
|
||||
emcs.push(...emcClone.splice(0, cable.topNode));
|
||||
} else {
|
||||
//if the cable has no fill set (top node) then use all of the nodes
|
||||
temps = tempClone;
|
||||
humids = humClone;
|
||||
emcs = emcClone;
|
||||
}
|
||||
//add the trend data to the proper arrays if the top node is set
|
||||
let cableTrendData = binTrend.cableTrend[cable.key()];
|
||||
tempTrends.push(cableTrendData.grainCelciusTrend);
|
||||
humidTrends.push(cableTrendData.grainHumidityTrend);
|
||||
emcTrends.push(cableTrendData.grainEmcTrend);
|
||||
|
||||
// //if the lowest temp for this cable is less than the temp in the low node conditions or the low node conditions are not set
|
||||
// //use this cables lowest node and trend data in the condition
|
||||
// if (!lowNodeConditions || Math.min(...temps) < lowNodeConditions.tempC) {
|
||||
// //determine which node is the coldest so that the data displayed is for the same node
|
||||
// let lowTempIndex =
|
||||
// temps.indexOf(Math.min(...temps)) === -1 ? 0 : temps.indexOf(Math.min(...temps));
|
||||
// lowNodeConditions = {
|
||||
// tempC: temps[lowTempIndex],
|
||||
// humidity: humids[lowTempIndex],
|
||||
// emc: emcs[lowTempIndex],
|
||||
// tempCTrend: cableTrendData.coldNodeTrend?.tempTrend ?? 0,
|
||||
// humidityTrend: cableTrendData.coldNodeTrend?.humidityTrend ?? 0,
|
||||
// emcTrend: cableTrendData.coldNodeTrend?.emcTrend ?? 0
|
||||
// };
|
||||
// }
|
||||
//if the lowest temp for this cable is less than the temp in the low node conditions or the low node conditions are not set
|
||||
//use this cables lowest node and trend data in the condition
|
||||
if (!lowNodeConditions || Math.min(...temps) < lowNodeConditions.tempC) {
|
||||
//determine which node is the coldest so that the data displayed is for the same node
|
||||
let lowTempIndex =
|
||||
temps.indexOf(Math.min(...temps)) === -1 ? 0 : temps.indexOf(Math.min(...temps));
|
||||
lowNodeConditions = {
|
||||
tempC: temps[lowTempIndex],
|
||||
humidity: humids[lowTempIndex],
|
||||
emc: emcs[lowTempIndex],
|
||||
tempCTrend: cableTrendData.coldNodeTrend?.tempTrend ?? 0,
|
||||
humidityTrend: cableTrendData.coldNodeTrend?.humidityTrend ?? 0,
|
||||
emcTrend: cableTrendData.coldNodeTrend?.emcTrend ?? 0
|
||||
};
|
||||
}
|
||||
|
||||
// //do the same for the high node
|
||||
// if (!highNodeConditions || cable.maxTemp() > highNodeConditions.tempC) {
|
||||
// let highTempIndex =
|
||||
// temps.indexOf(Math.max(...temps)) === -1 ? 0 : temps.indexOf(Math.max(...temps));
|
||||
// highNodeConditions = {
|
||||
// tempC: temps[highTempIndex],
|
||||
// humidity: humids[highTempIndex],
|
||||
// emc: emcs[highTempIndex],
|
||||
// tempCTrend: cableTrendData.hotNodeTrend?.tempTrend ?? 0,
|
||||
// humidityTrend: cableTrendData.hotNodeTrend?.humidityTrend ?? 0,
|
||||
// emcTrend: cableTrendData.hotNodeTrend?.emcTrend ?? 0
|
||||
// };
|
||||
// }
|
||||
// });
|
||||
// //set the average conditions
|
||||
// avgConditions = {
|
||||
// tempC: average(temps),
|
||||
// humidity: average(humids),
|
||||
// emc: average(emcs),
|
||||
// tempCTrend: average(tempTrends),
|
||||
// humidityTrend: average(humidTrends),
|
||||
// emcTrend: average(emcTrends)
|
||||
// };
|
||||
// setAverageConditions(avgConditions);
|
||||
// setLowNodeConditions(lowNodeConditions);
|
||||
// setHighNodeConditions(highNodeConditions);
|
||||
// })
|
||||
// .catch(err => {
|
||||
// console.log(err);
|
||||
// openSnack("Failed to retrieve trend data");
|
||||
// })
|
||||
// .finally(() => {
|
||||
// setLoadingTrend(false);
|
||||
// });
|
||||
//do the same for the high node
|
||||
if (!highNodeConditions || cable.maxTemp() > highNodeConditions.tempC) {
|
||||
let highTempIndex =
|
||||
temps.indexOf(Math.max(...temps)) === -1 ? 0 : temps.indexOf(Math.max(...temps));
|
||||
highNodeConditions = {
|
||||
tempC: temps[highTempIndex],
|
||||
humidity: humids[highTempIndex],
|
||||
emc: emcs[highTempIndex],
|
||||
tempCTrend: cableTrendData.hotNodeTrend?.tempTrend ?? 0,
|
||||
humidityTrend: cableTrendData.hotNodeTrend?.humidityTrend ?? 0,
|
||||
emcTrend: cableTrendData.hotNodeTrend?.emcTrend ?? 0
|
||||
};
|
||||
}
|
||||
});
|
||||
//set the average conditions
|
||||
avgConditions = {
|
||||
tempC: average(temps),
|
||||
humidity: average(humids),
|
||||
emc: average(emcs),
|
||||
tempCTrend: average(tempTrends),
|
||||
humidityTrend: average(humidTrends),
|
||||
emcTrend: average(emcTrends)
|
||||
};
|
||||
setAverageConditions(avgConditions);
|
||||
setLowNodeConditions(lowNodeConditions);
|
||||
setHighNodeConditions(highNodeConditions);
|
||||
})
|
||||
.catch(err => {
|
||||
console.log(err);
|
||||
openSnack("Failed to retrieve trend data");
|
||||
})
|
||||
.finally(() => {
|
||||
setLoadingTrend(false);
|
||||
});
|
||||
}
|
||||
}
|
||||
}, [binAPI, bin, cables, openSnack]); //eslint-disable-line react-hooks/exhaustive-deps
|
||||
|
|
@ -485,7 +485,7 @@ export default function BinVisualizer(props: Props) {
|
|||
if (bin.settings.inventory && bin.settings.specs) {
|
||||
const isEmpty = bin.settings.inventory?.empty === true;
|
||||
const capacity = bin.settings.specs.bushelCapacity;
|
||||
const grainBushels = bin.settings.inventory.grainBushels;
|
||||
const grainBushels = bin.bushels();
|
||||
setSliderCoulour("gold");
|
||||
if (!capacity) {
|
||||
setFillPercentage(null);
|
||||
|
|
@ -535,7 +535,7 @@ export default function BinVisualizer(props: Props) {
|
|||
|
||||
const inventoryOverview = () => {
|
||||
const capacity = bin.settings.specs?.bushelCapacity ?? 0;
|
||||
const grainBushels = bin.settings.inventory?.grainBushels ?? 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;
|
||||
|
|
@ -1481,9 +1481,7 @@ export default function BinVisualizer(props: Props) {
|
|||
onChange={(_, value) => {
|
||||
setFillPercentage(value as number);
|
||||
const capacity = bin.settings.specs ? bin.settings.specs.bushelCapacity : 0;
|
||||
const current = bin.settings.inventory
|
||||
? bin.settings.inventory.grainBushels
|
||||
: 0;
|
||||
const current = bin.bushels()
|
||||
let grainAmount = ((value as number) / 100) * capacity;
|
||||
|
||||
if (grainAmount < current) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue