took out the old exclusion stuff from the component types, moved the excluded nodes to the component settings rather than preferences, commented out some deprecated stuff relating to the old measurements

This commit is contained in:
csawatzky 2025-07-24 15:44:00 -06:00
parent 885d308f3b
commit e586421ffa
39 changed files with 147 additions and 243 deletions

View file

@ -11,7 +11,7 @@ import {
FormControl,
FormControlLabel,
FormGroup,
FormLabel,
//FormLabel,
Grid2 as Grid,
Theme,
Typography
@ -20,21 +20,21 @@ import { lightGreen } from "@mui/material/colors";
import { ExpandMore } from "@mui/icons-material";
import MeasurementsChart from "charts/MeasurementsChart";
//import { GraphOrientation } from "common/Graph";
import RangeInput, { Range } from "common/RangeInput";
//import RangeInput, { Range } from "common/RangeInput";
import { GetDefaultDateRange } from "common/time/DateRange";
import DateSelect from "common/time/DateSelect";
import MeasurementSummary from "component/MeasurementSummary";
//import DateSelect from "common/time/DateSelect";
//import MeasurementSummary from "component/MeasurementSummary";
import { grainName } from "grain";
import { useMobile, usePrevious } from "hooks";
import { useMobile } from "hooks";
import { cloneDeep } from "lodash";
import { Component, Interaction } from "models";
import { UnitMeasurement } from "models/UnitMeasurement";
import moment from "moment";
import { deviceComponentID } from "pbHelpers/Component";
//import { deviceComponentID } from "pbHelpers/Component";
import {
extension,
//getComponentVisual,
GetNumNodes,
//GetNumNodes,
GetNumNodesFromUnitMeasurement,
GraphFilters
} from "pbHelpers/ComponentType";
@ -43,9 +43,9 @@ import { findInteractionsAsSource } from "pbHelpers/Interaction";
import { describeMeasurement } from "pbHelpers/MeasurementDescriber";
import { pond } from "protobuf-ts/pond";
import { quack } from "protobuf-ts/quack";
import { useGlobalState } from "providers";
import React, { useEffect, useState } from "react";
import { or } from "utils/types";
//import { useGlobalState } from "providers";
import React, { useState } from "react";
//import { or } from "utils/types";
import UnitMeasurementSummary from "./UnitMeasurementSummary";
import { makeStyles } from "@mui/styles";
@ -82,34 +82,34 @@ interface Props {
component: Component;
interactions: Interaction[];
sampling: boolean;
samples?: pond.Measurement[]; //deprecated: old measurement structure
//samples?: pond.Measurement[]; //deprecated: old measurement structure
unitMeasurements?: UnitMeasurement[];
sampleLimit?: number;
updateDate?: (startDate: any, endDate: any, live?: boolean) => void;
allowLive?: boolean;
recentMeasurement?: pond.Measurement;
//recentMeasurement?: pond.Measurement;
recentUnitMeasurement?: UnitMeasurement[];
deviceComponentPreferences?: pond.DeviceComponentPreferences;
}
function setComponentGraphRanges(device: number | string, component: string, ranges: Range[]) {
const key: string = "graphRanges-" + deviceComponentID(device, component);
localStorage.setItem(key, JSON.stringify(or(ranges, [])));
}
// function setComponentGraphRanges(device: number | string, component: string, ranges: Range[]) {
// const key: string = "graphRanges-" + deviceComponentID(device, component);
// localStorage.setItem(key, JSON.stringify(or(ranges, [])));
// }
function getComponentGraphRanges(device: number | string, component: string): Range[] {
const key: string = "graphRanges-" + deviceComponentID(device, component);
return JSON.parse(or(localStorage.getItem(key), "[]"));
}
// function getComponentGraphRanges(device: number | string, component: string): Range[] {
// const key: string = "graphRanges-" + deviceComponentID(device, component);
// return JSON.parse(or(localStorage.getItem(key), "[]"));
// }
export default function ComponentChart(props: Props) {
const { component, deviceComponentPreferences } = props;
//const { component, deviceComponentPreferences } = props;
const classes = useStyles();
const isMobile = useMobile();
const { deviceKey, componentKey } = props;
const prevDevice = usePrevious(props.deviceKey);
const prevComponentKey = usePrevious(props.componentKey);
const prevComponent = usePrevious(props.component);
// const { deviceKey, componentKey } = props;
// const prevDevice = usePrevious(props.deviceKey);
// const prevComponentKey = usePrevious(props.componentKey);
// const prevComponent = usePrevious(props.component);
const defaultDateRange = GetDefaultDateRange();
const [startDate, setStartDate] = useState(defaultDateRange.start);
const [endDate, setEndDate] = useState(defaultDateRange.end);
@ -127,45 +127,45 @@ export default function ComponentChart(props: Props) {
const [showOriginal, setShowOriginal] = useState(true);
const [showAveraged, setShowAveraged] = useState(false);
useEffect(() => {
if (prevComponent !== props.component) {
let updatedFilters = cloneDeep(graphFilters);
let filledTo = props.component.settings.grainFilledTo;
updatedFilters.grainFilledTo = filledTo > 0 ? filledTo : undefined;
updatedFilters.grainType = props.component.settings.grainType;
setGraphFilters(updatedFilters);
}
}, [prevComponent, graphFilters, props.component]);
// useEffect(() => {
// if (prevComponent !== props.component) {
// let updatedFilters = cloneDeep(graphFilters);
// let filledTo = props.component.settings.grainFilledTo;
// updatedFilters.grainFilledTo = filledTo > 0 ? filledTo : undefined;
// updatedFilters.grainType = props.component.settings.grainType;
// setGraphFilters(updatedFilters);
// }
// }, [prevComponent, graphFilters, props.component]);
useEffect(() => {
if (prevDevice !== deviceKey || prevComponentKey !== componentKey) {
const ranges = getComponentGraphRanges(deviceKey, componentKey);
let updatedFilters = cloneDeep(graphFilters);
updatedFilters.ranges = ranges;
setGraphFilters(updatedFilters);
}
}, [deviceKey, prevDevice, prevComponentKey, componentKey, graphFilters]);
// useEffect(() => {
// if (prevDevice !== deviceKey || prevComponentKey !== componentKey) {
// const ranges = getComponentGraphRanges(deviceKey, componentKey);
// let updatedFilters = cloneDeep(graphFilters);
// updatedFilters.ranges = ranges;
// setGraphFilters(updatedFilters);
// }
// }, [deviceKey, prevDevice, prevComponentKey, componentKey, graphFilters]);
//use the excluded nodes to set the default for the graph filters
useEffect(() => {
let excludedNodes = component.settings.excludedNodes;
if (excludedNodes === undefined || excludedNodes.length === 0) return;
let updatedFilters = cloneDeep(graphFilters);
if (excludedNodes && component.lastMeasurement[0]) {
let includedNodes: string[] = [];
let numNodes = GetNumNodesFromUnitMeasurement(
UnitMeasurement.any(component.lastMeasurement[0])
);
// useEffect(() => {
// let excludedNodes = component.settings.excludedNodes;
// if (excludedNodes === undefined || excludedNodes.length === 0) return;
// let updatedFilters = cloneDeep(graphFilters);
// if (excludedNodes && component.lastMeasurement[0]) {
// let includedNodes: string[] = [];
// let numNodes = GetNumNodesFromUnitMeasurement(
// UnitMeasurement.any(component.lastMeasurement[0])
// );
for (let i = 0; i < numNodes; i++) {
if (!excludedNodes.includes(i)) {
includedNodes.push(i.toString());
}
}
updatedFilters.selectedNodes = includedNodes;
}
setGraphFilters(updatedFilters);
}, [component]); //eslint-disable-line react-hooks/exhaustive-deps
// for (let i = 0; i < numNodes; i++) {
// if (!excludedNodes.includes(i)) {
// includedNodes.push(i.toString());
// }
// }
// updatedFilters.selectedNodes = includedNodes;
// }
// setGraphFilters(updatedFilters);
// }, [component]); //eslint-disable-line react-hooks/exhaustive-deps
const updateDateRange = (newStartDate: any, newEndDate: any, live: boolean) => {
setStartDate(newStartDate);
@ -176,14 +176,14 @@ export default function ComponentChart(props: Props) {
}
};
const changeRange = (index: number, range: Range) => {
let updatedFilters = cloneDeep(graphFilters);
let ranges = updatedFilters.ranges ? updatedFilters.ranges : [];
ranges[index] = range;
updatedFilters.ranges = ranges;
setComponentGraphRanges(deviceKey, componentKey, ranges);
setGraphFilters(updatedFilters);
};
// const changeRange = (index: number, range: Range) => {
// let updatedFilters = cloneDeep(graphFilters);
// let ranges = updatedFilters.ranges ? updatedFilters.ranges : [];
// ranges[index] = range;
// updatedFilters.ranges = ranges;
// setComponentGraphRanges(deviceKey, componentKey, ranges);
// setGraphFilters(updatedFilters);
// };
const handleGrainCableControlsChange = (name: string) => (event: any) => {
let updatedFilters = cloneDeep(graphFilters);
@ -211,24 +211,22 @@ export default function ComponentChart(props: Props) {
};
const cableControls = () => {
const { component, samples } = props;
const { recentUnitMeasurement } = props;
//const excludedNodes = component.settings.excludedNodes ?? [];
const selectedNodes = graphFilters.selectedNodes ? graphFilters.selectedNodes : ["all"];
const lastMeasurement = component.status.lastMeasurement;
const excludedNodes = component.settings.excludedNodes ?? [];
let numNodes = 0;
if (samples) {
numNodes = GetNumNodes(
component.settings.type,
lastMeasurement && lastMeasurement.measurement
);
} else {
if (component.lastMeasurement && component.lastMeasurement[0]) {
// if (samples) {
// numNodes = GetNumNodes(
// component.settings.type,
// recentUnitMeasurement
// );
// } else {
if (recentUnitMeasurement && recentUnitMeasurement.length > 0) {
numNodes = GetNumNodesFromUnitMeasurement(
UnitMeasurement.any(component.lastMeasurement[0])
recentUnitMeasurement[0]
);
}
}
//}
if (numNodes <= 1) {
return null;
@ -302,17 +300,17 @@ export default function ComponentChart(props: Props) {
}
//TODO-DRAGER: this mey not be necessary to do anymore with them being split up
if (component.type() === quack.ComponentType.COMPONENT_TYPE_DRAGER_GAS_DONGLE) {
let describer = describeMeasurement(
component.lastMeasurement[0].type,
component.type(),
component.subType()
);
let details = describer.nodeDetails();
if (details) {
nodeLabel = details.labels[i - 1];
}
}
// if (component.type() === quack.ComponentType.COMPONENT_TYPE_DRAGER_GAS_DONGLE) {
// let describer = describeMeasurement(
// component.lastMeasurement[0].type,
// component.type(),
// component.subType()
// );
// let details = describer.nodeDetails();
// if (details) {
// nodeLabel = details.labels[i - 1];
// }
// }
grainCableControls.push(
<Grid size={{ xs: 6 }} key={"node-" + (i - 1).toString()}>
@ -700,15 +698,14 @@ export default function ComponentChart(props: Props) {
const {
component,
sampling,
samples,
recentMeasurement,
recentUnitMeasurement,
deviceComponentPreferences
recentUnitMeasurement
} = props;
const ext = extension(component.settings.type, component.settings.subtype);
const ranges = graphFilters.ranges ? graphFilters.ranges : [];
//const ext = extension(component.settings.type, component.settings.subtype);
//const ranges = graphFilters.ranges ? graphFilters.ranges : [];
let convertedLastMeasurement;
//console.log(recentUnitMeasurement)
if (recentUnitMeasurement && recentUnitMeasurement.length > 0) {
let measurements = recentUnitMeasurement;
convertedLastMeasurement = UnitMeasurement.convertLastMeasurement(measurements);
@ -717,18 +714,17 @@ export default function ComponentChart(props: Props) {
<Grid container spacing={2} direction={isMobile ? "column" : "row-reverse"}>
{isMobile && (
<Grid className={classes.borderedContainer}>
{samples ? (
{/* {samples ? (
<MeasurementSummary component={component} reading={recentMeasurement} />
) : (
) : ( */}
<Card raised className={classes.container}>
<Typography style={{ fontWeight: 650 }}>Latest Measurements:</Typography>
<UnitMeasurementSummary
component={component}
reading={convertedLastMeasurement}
excludedNodes={component.settings.excludedNodes}
/>
</Card>
)}
{/* )} */}
</Grid>
)}
<Grid
@ -755,9 +751,9 @@ export default function ComponentChart(props: Props) {
</Grid>
{/* )} */}
<Grid size={{ xs: 12 }} className={classes.borderedContainer}>
{samples ? (
{/* {samples ? (
<MeasurementSummary component={component} reading={recentMeasurement} />
) : (
) : ( */}
<Card raised style={{ padding: 25, marginBottom: 20 }}>
<Typography style={{ fontWeight: 650 }}>Latest Measurements:</Typography>
<UnitMeasurementSummary
@ -765,10 +761,9 @@ export default function ComponentChart(props: Props) {
reading={convertedLastMeasurement}
largeText
boldMeasurements
excludedNodes={component.settings.excludedNodes}
/>
</Card>
)}
{/* )} */}
</Grid>
</React.Fragment>
)}
@ -793,7 +788,7 @@ export default function ComponentChart(props: Props) {
</Grid>
)}
{!sampling &&
{/* {!sampling &&
ext.measurements.map((m, i) => {
const range = ranges[i] ? ranges[i] : ({} as Range);
if (m.measurementType === quack.MeasurementType.MEASUREMENT_TYPE_BOOLEAN) {
@ -811,7 +806,7 @@ export default function ComponentChart(props: Props) {
);
}
return null;
})}
})} */}
</Grid>
</Grid>
);

View file

@ -21,7 +21,6 @@ interface Props {
onlyRecent?: boolean;
largeText?: boolean;
boldMeasurements?: boolean;
excludedNodes?: number[];
}
const useStyles = makeStyles((theme: Theme) => {
@ -61,8 +60,7 @@ export default function UnitMeasurementSummary(props: Props) {
dense,
onlyRecent,
largeText,
boldMeasurements,
excludedNodes
boldMeasurements
} = props;
const [summaries, setSummaries] = useState<Summary[]>([]);
const [timestamp, setTimestamp] = useState("");
@ -80,12 +78,11 @@ export default function UnitMeasurementSummary(props: Props) {
setTimestamp(reading.timestamp);
setSummaries(
extension(component.type(), component.subType()).unitMeasurementSummary(
reading,
excludedNodes
reading
)
);
}
}, [component, reading, excludedNodes]); // eslint-disable-line react-hooks/exhaustive-deps
}, [component, reading]); // eslint-disable-line react-hooks/exhaustive-deps
const noSummary = () => {
return (

View file

@ -247,8 +247,8 @@ export default function DeviceComponent() {
if (rComponent?.status.lastMeasurement) {
setRM(rComponent.status.lastMeasurement);
}
if (rComponent?.lastMeasurement) {
let measurements = rComponent.lastMeasurement.map(um =>
if (rComponent?.status.measurement) {
let measurements = rComponent.status.measurement.map(um =>
UnitMeasurement.any(um, user)
);
setRecentUnitMeasurement(measurements);
@ -487,7 +487,6 @@ export default function DeviceComponent() {
component={component}
reading={row}
tableCell={true}
excludedNodes={component.settings.excludedNodes}
/>
)
}

View file

@ -148,8 +148,7 @@ export interface ComponentTypeExtension {
measurements: Array<ComponentMeasurement>;
measurementSummary: Function; //Deprecated: this summary used the old measurement structure
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
) => Summary[];
minMeasurementPeriodMs: number;
minCycleTimeMs?: number;
@ -229,20 +228,11 @@ export function simpleSummaries(
export function unitMeasurementSummary(
convertedMeasurement: MeasurementsFor,
describer: MeasurementDescriber,
excludedNodes?: number[]
): Summary {
let vals: string[] = [];
convertedMeasurement.values.forEach(val => {
vals.push(val + describer.unit());
});
//if nodes are excluded splice them out of the val array so they are not displayed in the summary
if (excludedNodes) {
vals.forEach((_val, i) => {
if (excludedNodes.includes(i)) {
vals.splice(i, 1);
}
});
}
let v = vals.join(", ");
if (describer.enumerations().length > 0) {
v = describer.enumerations()[parseFloat(vals[0])];
@ -259,19 +249,12 @@ export function unitMeasurementSummary(
export function unitMeasurementSummaries(
measurements: convertedUnitMeasurement,
compType: quack.ComponentType,
subtype?: number,
excludedNodes?: number[]
subtype?: number
): Summary[] {
let summaries: Summary[] = [];
measurements.measurementsFor.forEach(measurement => {
let describer = describeMeasurement(measurement.type, compType, subtype);
//TODO: implement the summary for node splitting when we make a component that uses it, drager was changed to use subtypes rather than nodes
//let details = describer.nodeDetails()
// if(details !== undefined){
// } else {
summaries.push(unitMeasurementSummary(measurement, describer, excludedNodes));
//}
summaries.push(unitMeasurementSummary(measurement, describer));
});
return summaries;
}

View file

@ -49,13 +49,11 @@ export function AirQuality(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_AIR_QUALITY,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -42,13 +42,11 @@ export function Airflow(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_AIRFLOW,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -79,13 +79,11 @@ export function AnalogInput(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_ANALOG_INPUT,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -50,14 +50,12 @@ export function CO2(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, co2);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_CO2,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -37,14 +37,12 @@ export function Calcium(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, calcium);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_CALCIUM,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -52,14 +52,12 @@ export function Capacitance(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, capacitance);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_CAPACITANCE,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -148,14 +148,12 @@ export function CapacitorCable(subtype: number = 0): ComponentTypeExtension {
return Promise.resolve(summary);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_CAPACITOR_CABLE,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -37,14 +37,12 @@ export function Conductivity(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, conductivity);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_CONDUCTIVITY,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -77,14 +77,12 @@ export function DHT(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, temperature, humidity);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_DHT,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -108,8 +108,7 @@ export function dragerGasDongle(subtype: number = 0): ComponentTypeExtension {
//believe this is only used with the old deprecated measurements system, unit measurements builds the summary in the UnitMeasurementSummary component
measurementSummary: () => {},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
//if it is O2 display percentage rather than ppm
if (subtype === quack.DragerGasDongleSubtype.DRAGER_GAS_DONGLE_SUBTYPE_O2 || subtype === quack.DragerGasDongleSubtype.DRAGER_GAS_DONGLE_SUBTYPE_LEL) {
@ -137,7 +136,7 @@ export function dragerGasDongle(subtype: number = 0): ComponentTypeExtension {
});
} else {
//create the simple summary for the voltage
summaries.push(unitMeasurementSummary(measurement, describer, excludedNodes));
summaries.push(unitMeasurementSummary(measurement, describer));
}
});
@ -146,8 +145,7 @@ export function dragerGasDongle(subtype: number = 0): ComponentTypeExtension {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_DRAGER_GAS_DONGLE,
subtype,
excludedNodes
subtype
);
}
},

View file

@ -37,14 +37,12 @@ export function Ethylene(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, ethylene);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_ETHYLENE,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -74,13 +74,11 @@ export function GPS(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_GPS,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -374,13 +374,11 @@ export function GrainCable(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_GRAIN_CABLE,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -29,14 +29,12 @@ export function Invalid(subtype: number = 0): ComponentTypeExtension {
return Promise.reject();
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_INVALID,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -65,14 +65,12 @@ export function Lidar(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, distance);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_LIDAR,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -37,14 +37,12 @@ export function Light(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, light);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_LIGHT,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -45,14 +45,12 @@ export function Modem(subtype: number = 0): ComponentTypeExtension {
},
minMeasurementPeriodMs: 1000,
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_MODEM,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -37,14 +37,12 @@ export function Nitrate(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, nitrate);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_NITRATE,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -37,14 +37,12 @@ export function O2(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, o2);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_O2,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -38,13 +38,11 @@ export function ORP(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_ORP,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -37,14 +37,12 @@ export function OnOffInput(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, onOff);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_BOOLEAN_INPUT,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -93,14 +93,12 @@ export function OnOffOutput(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, onOff);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_BOOLEAN_OUTPUT,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -37,14 +37,12 @@ export function PH(subtype: number = 0): ComponentTypeExtension {
return simpleSummaries(measurement, ph);
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
measurements: convertedUnitMeasurement
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_PH,
subtype,
excludedNodes
subtype
);
},
areaChartData: (

View file

@ -38,13 +38,11 @@ export function Potassium(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_POTASSIUM,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -57,13 +57,11 @@ export function Power(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_POWER,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -67,13 +67,11 @@ export function Pressure(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_PRESSURE,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -147,13 +147,11 @@ export function PressureCable(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_PRESSURE_CABLE,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -94,13 +94,11 @@ export function Sen5x(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_SEN5X,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -41,13 +41,11 @@ export function StepperMotor(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_STEPPER_MOTOR,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -60,13 +60,11 @@ export function Temperature(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_TEMPERATURE,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -149,13 +149,11 @@ export function Trigger(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_EDGE_TRIGGERED,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -75,13 +75,11 @@ export function VPD(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_VAPOUR_PRESSURE_DEFICIT,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -121,13 +121,11 @@ export function VibrationCable(subtype: number = 0): ComponentTypeExtension {
measurementSummary: async function() {},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_VIBRATION_CHAIN,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -38,13 +38,11 @@ export function Voltage(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_VOLTAGE,
subtype,
excludedNodes
);
},
areaChartData: (

View file

@ -38,13 +38,11 @@ export function Weight(subtype: number = 0): ComponentTypeExtension {
},
unitMeasurementSummary: (
measurements: convertedUnitMeasurement,
excludedNodes?: number[]
): Summary[] => {
return unitMeasurementSummaries(
measurements,
quack.ComponentType.COMPONENT_TYPE_WEIGHT,
subtype,
excludedNodes
);
},
lineChartData: (