import React from 'react' import { Card, CardDeck } from 'react-bootstrap'; import { ActiveDeviceCollection, ConfiguredDevicesCollection, PlantTypesCollection, SensorDataCollection } from "../../client/main"; import {useTracker} from 'meteor/react-meteor-data'; export default function SensorCardDeck() { // Return the document of the currently active device in the activeDevice collection. const deviceId = useTracker(() => { return ActiveDeviceCollection.find().fetch()[0]; }); // If the deviceId is not null or undefined, return the most recent document in the sensorData collection of the currently active device. const sensorData = useTracker(() => { if (deviceId === null || deviceId === undefined) { return undefined; } else { return SensorDataCollection.find({device_id: deviceId.deviceId}, {sort: {timestamp: -1}, limit: 1}).fetch(); } }); // If the deviceId is not null or undefined, return the document in the configuredDevices collection of the currently active device. const configurationData = useTracker(() => { if (deviceId === null || deviceId === undefined) { return undefined; } else { return ConfiguredDevicesCollection.findOne({deviceId: deviceId.deviceId}); } }); // If the configurationData is not null or undefined, return the configured plant type of the currently active device. const plantTypeData = useTracker(() => { if (configurationData === null || configurationData === undefined) { return undefined; } else { return PlantTypesCollection.findOne({plantType: configurationData.type}); } }); //If the data that is loaded from the database has not been fetched yet, show a loading screen. Else load the application. if (sensorData.length <= 0 || configurationData === undefined || deviceId === undefined || plantTypeData === undefined) { return ( Loading! Please wait... ) } else { return ( {(sensorData[0].temperature < plantTypeData.data.temperature.minTemp) || (sensorData[0].temperature > plantTypeData.data.temperature.maxTemp) ? Temperature {sensorData[0].temperature} °C : Temperature {sensorData[0].temperature} °C } Humidity {sensorData[0].humidity} % Brightness {sensorData[0].brightness} lux {sensorData[0].moisture > plantTypeData.data.soilMoisture.sat ? Moisture {sensorData[0].moisture} % : Moisture {sensorData[0].moisture} % } ) } }