import React, { useEffect, useState } from 'react'; import { query, collection, onSnapshot, getDocs } from 'firebase/firestore'; import * as _ from 'lodash'; 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 styles = { menuList: (base) => ({ ...base, "::-webkit-scrollbar": { width: "4px", height: "0px", }, "::-webkit-scrollbar-track": { background: "#f1f1f1" }, "::-webkit-scrollbar-thumb": { background: "#888" }, "::-webkit-scrollbar-thumb:hover": { background: "#555" } }) }; 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 changeDevice = ({ value }) => { console.log(value); // console.log(event); setDevice(value); setDays([...new Set(allTests .filter((x) => { if (x.deviceSerialNumber === value) return x; }) .map(x => moment(x.testTime).format("YYYY-MM-DD")))] .sort() .reverse()); } const changeTestDate = ({ value }) => { setTestDate(value); setCurTest(null); setCurTestData(null); setShowGraph(false); setTests(allTests .filter((x) => { if (x.deviceSerialNumber === device && moment(x.testTime).isBetween(moment(value).startOf('day'), moment(value).endOf('day'))) return x; }) .map(x => x._id) .sort()); } const changeTest = ({ value }) => { setCurTest(null); setCurTestData(null); setShowGraph(false); if (curTest) alert('Click clear button first'); setCurTest(value); setCurTestData(allTests.find(x => x._id === value)); setShowGraph(true); } const menuPortalTarget = document.getElementById('root'); 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); // console.log(document.data()); }); const groups = [...testDevices]; // console.log(groups); setDevices(groups); setAllTests(hposTests); }); return () => unsub; } }, [curTestData, curTest, device, testDate]); return (
| key | value |
|---|---|
| device | {curTestData?.deviceId} |
| kit | {curTestData?.kitSerial} |
| test time | {curTestData?.testTime} |
| result | {curTestData?.result} |