import * as React from "react"; import { Widget, WidgetHeader, WidgetBody, WidgetFooter } from "../../ui"; import { SensorReadingsProps, SensorReadingsState } from "./interfaces"; import { SensorReadingsTable } from "./table"; import { filterSensorReadings } from "./filter_readings"; import { TimePeriodSelection, DateDisplay, getEndDate } from "./time_period_selection"; import { LocationSelection, LocationDisplay } from "./location_selection"; import { SensorSelection } from "./sensor_selection"; import { ToolTips } from "../../constants"; import { TaggedSensor } from "farmbot"; import { AxisInputBoxGroupState } from "../interfaces"; import { SensorReadingsPlot } from "./graph"; import { t } from "../../i18next_wrapper"; export class SensorReadings extends React.Component { state: SensorReadingsState = { sensor: undefined, timePeriod: 3600 * 24, endDate: getEndDate(this.props.sensorReadings), xyzLocation: undefined, showPreviousPeriod: false, deviation: 0, hovered: undefined, }; /** Toggle display of previous time period. */ togglePrevious = () => this.setState({ showPreviousPeriod: !this.state.showPreviousPeriod }); setSensor = (sensor: TaggedSensor | undefined) => this.setState({ sensor }); setEndDate = (endDate: number) => this.setState({ endDate }); setTimePeriod = (timePeriod: number) => this.setState({ timePeriod }); setLocation = (xyzLocation: AxisInputBoxGroupState | undefined) => this.setState({ xyzLocation }); setDeviation = (deviation: number) => this.setState({ deviation }); hover = (hovered: string | undefined) => this.setState({ hovered }); clearFilters = () => this.setState({ sensor: undefined, timePeriod: 3600 * 24, endDate: getEndDate(this.props.sensorReadings), xyzLocation: undefined, showPreviousPeriod: false, deviation: 0, }); render() { /** Return filtered sensor readings for the specified period. * Must be in render() so that state updates. */ const readingsForPeriod = filterSensorReadings(this.props.sensorReadings, this.state); return
; } }