import React, { useEffect, useState, useRef } from 'react'; import { query, collection, onSnapshot } from 'firebase/firestore'; import Dropdown from 'react-dropdown'; import 'react-dropdown/style.css'; import moment from 'moment'; import Select from 'react-select'; import DeviceGraph from "./DeviceGraph"; import db from '../firebase'; import './Devices.css'; const Devices = () => { const [device, setDevice] = useState("Select a device"); const [testDate, setTestDate] = useState("Select a test date"); const [curTest, setCurTest] = useState("Select a test"); const [curTestData, setCurTestData] = useState(null); const [devices, setDevices] = useState([]); const [days, setDays] = useState([]); const [tests, setTests] = useState([]); const [allTests, setAllTests] = useState(null); const [showGraph, setShowGraph] = useState(false); const selectDateDropdownRef = useRef(); const selectTestDropdownRef = useRef(); const changeDevice = ({ value }) => { setDevice(value); setTestDate(null); setCurTest(null); selectDateDropdownRef.current?.setValue(""); selectTestDropdownRef.current?.setValue(""); setDays([...new Set(allTests .filter((x) => x.deviceSerialNumber === value) .map(x => moment(x.testTime).format("YYYY-MM-DD")))] .sort() .reverse()); } const changeTestDate = ({ value }) => { setTestDate(value); selectTestDropdownRef.current?.setValue(""); setCurTest(null); setCurTestData(null); setShowGraph(false); setTests(allTests .filter((x) => x.deviceSerialNumber === device && moment(x.testTime).isBetween(moment(value).startOf('day'), moment(value).endOf('day'))) .map(x => x._id) .sort()); } const changeTest = ({ value }) => { setCurTestData(null); setShowGraph(false); setCurTest(value); } const showTestGraph = () => { if (!curTest) alert('Select a test'); setCurTestData(allTests.find(x => x._id === curTest)); setShowGraph(true); } const toggleShowGraph = () => { if (!curTestData) { showTestGraph(); } else { setCurTest(null); setCurTestData(null); } } useEffect(() => { if (!allTests) { const q = query(collection(db, "testData")); const unsub = onSnapshot(q, (querySnapshot) => { const testDevices = new Set(); const hposTests = []; querySnapshot.forEach((document) => { const hposTestData = document.data(); hposTests.push(hposTestData); const { deviceSerialNumber } = hposTestData; testDevices.add(deviceSerialNumber); }); const groups = [...testDevices]; setDevices(groups); setAllTests(hposTests); }); return () => unsub; } }, [curTestData, curTest, device, testDate, allTests]); return (
| key | value |
|---|---|
| device | {curTestData?.deviceId} |
| kit | {curTestData?.kitSerial} |
| test time | {curTestData?.testTime} |
| ratio | {curTestData?.resultRatio} |
| result | {curTestData?.result} |
| calculatedRatio | {curTestData?.calculatedRatio} |
| deviceRatio | {curTestData?.deviceRatio} |
| green led Average | {curTestData?.led1Average} |
| blue led Average | {curTestData?.led2Average} |
| blue led Average | {curTestData?.led2Average} |