{"version":3,"sources":["Images/loading.gif","Images/img.svg","Images/models.svg","Images/events.svg","Images/reports.svg","Firebase/firebase.js","Functions/Auth/Auth.js","Componets/Login/Login.tsx","Componets/Modal/Modal.tsx","Componets/CreateModel/CreateModel.tsx","Componets/UpdateModel/UpdateModel.tsx","Componets/DeleteModal/DeleteModal.tsx","Componets/Models/Models.tsx","Componets/UpdateUnits/UpdateUnits.tsx","Componets/CreateUnit/CreateUnit.tsx","Componets/Units/Units.tsx","Componets/UpdateSensor/UpdateSensor.tsx","Componets/CreateSensor/CreateSensor.tsx","Componets/Sensors/Sensors.tsx","Componets/Dashboard/Dashboard.tsx","Componets/App/App.js","index.js","Images/logo.svg"],"names":["module","exports","firebase","initializeApp","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","AuthContext","React","createContext","AuthProvider","children","useState","currentUser","setCurrentUser","loading","setLoading","useEffect","auth","onAuthStateChanged","user","style","display","alignItems","justifyContent","height","src","loader","width","Provider","value","Login","history","useHistory","status","message","errorMessage","setErrorMessage","userEmail","userPassword","enteredUserData","setEnteredUserData","schema","yup","shape","email","required","min","useForm","resolver","yupResolver","shouldFocusError","handleSubmit","setValue","errors","formState","onSubmit","a","signInWithEmailAndPassword","then","console","log","push","catch","err","error","code","replace","slice","length","className","img","alt","id","logo","onClick","method","action","type","onChange","e","target","shouldValidate","Button","Modal","props","isCloseEnabled","onClose","modalScale","closeModal","top","transform","CreateModels","models","setIsCreateModelModelOpen","units","calculatedChannelEnables","modeIDErrorMessage","setModelIDErrorMessage","modelID","modelName","modelType","noOfChannels","noOfCalculatedChannels","calculatedChannelUnits","enabledCalculatedChannels","maxNoOfLogs","newModel","setNewModel","modelsCollection","firestore","collection","MenuProps","PaperProps","maxHeight","ITEM_HEIGHT","filter","model","Select","input","Input","map","option","MenuItem","key","isNaN","parseInt","channelUnitInputBox","index","event","localUnit","renderValue","selected","unit","unitID","unitSymbol","multiple","join","calculatedChannelEnable","toString","doc","set","indexOf","UpdateModel","setIsUpdateModelOpen","currentModel","localCurrentModel","setLocalCurrentModel","default","uid","update","DeleteModal","yesButtonAction","setModelOpen","Models","isModelUpdateModelOpen","setIsModelUpdateModelOpen","isCreateModelModelOpen","isDeleteModelOpen","setIsDeleteModelOpen","setCurrentModel","currentUserEmailID","setCurrentUserEmailID","searchValue","setSearchValue","fontSize","placeholder","toLowerCase","includes","trim","symbol","enabledCalculatedChannel","CreateModel","delete","UpdateUnits","setLocalUnit","unitsCollection","matches","unitName","parameter","CreateUnits","newUnitID","setIsCreateModelOpen","unitCollection","newUnit","setNewUnit","Units","isUpdateModelOpen","isCreateModelOpen","currentUnit","setCurrentUnit","userID","setUserID","textAlign","CreateUnit","Math","max","UpdateSensor","sensor","setIsSensorUpdateModelOpen","localSensor","setLocalSensor","sensorsCollection","sensorName","sensorGivenName","CreateSensors","setIsCreateSensorModelOpen","newSensorID","sensorID","isSensorNew","selectedPeferencesSensorType","setSelectedPeferencesSensorType","Sensors","sensors","isSensorUpdateModelOpen","isCreateSensorModelOpen","currentSensor","setCurrentSensor","CreateSensor","Dashboard","setUnits","setModels","setSensors","onSnapshot","querySnapshot","localUnits","forEach","data","localModals","localSensors","page","setPage","menuOptions","title","icon","Device","events","reports","Logo","viewBox","fill","xmlns","fill-rule","clip-rule","d","signOut","htmlFor","paddingTop","background","opacity","App","path","exact","to","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.deb25663.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/loading.b7eb187a.gif\";","module.exports = __webpack_public_path__ + \"static/media/img.190e4230.svg\";","module.exports = __webpack_public_path__ + \"static/media/models.38bb3467.svg\";","module.exports = __webpack_public_path__ + \"static/media/events.cf60aa00.svg\";","module.exports = __webpack_public_path__ + \"static/media/reports.fc1536a0.svg\";","import firebase from 'firebase/app'\r\nimport 'firebase/firestore'\r\nimport 'firebase/auth'\r\n\r\nconst firebaseConfig = {\r\n\tapiKey: 'AIzaSyA1hWYFVYF9NKaDA04McdALcxbX9jh2M8I',\r\n\tauthDomain: 'miig-cloud.firebaseapp.com',\r\n\tdatabaseURL: 'https://miig-cloud-default-rtdb.firebaseio.com',\r\n\tprojectId: 'miig-cloud',\r\n\tstorageBucket: 'miig-cloud.appspot.com',\r\n\tmessagingSenderId: '159248512646',\r\n\tappId: '1:159248512646:web:723f6a9fe3e6d8ac4a4307',\r\n\tmeasurementId: 'G-V8BRM3SFT7',\r\n}\r\n\r\nfirebase.initializeApp(firebaseConfig)\r\n\r\nexport default firebase\r\n","import React, { useEffect, useState } from 'react'\r\nimport firebase from '../../Firebase/firebase'\r\nimport loader from '../../Images/loading.gif'\r\n\r\nexport const AuthContext = React.createContext()\r\n\r\nexport const AuthProvider = ({ children }) => {\r\n\tconst [currentUser, setCurrentUser] = useState(null)\r\n\tconst [loading, setLoading] = useState(true)\r\n\r\n\tuseEffect(() => {\r\n\t\tfirebase.auth().onAuthStateChanged((user) => {\r\n\t\t\tsetCurrentUser(user)\r\n\t\t\tsetLoading(false)\r\n\t\t})\r\n\t}, [])\r\n\r\n\tif (loading) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t)\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{children}\r\n\t\t\r\n\t)\r\n}\r\n","import React, { useState } from 'react'\r\nimport firebase from '../../Firebase/firebase'\r\nimport './Login.css'\r\nimport '../Dashboard/Dashboard.css'\r\nimport img from '../../Images/img.svg'\r\nimport logo from '../../Images/logo.svg'\r\n\r\nimport { useHistory } from 'react-router-dom'\r\nimport { Button } from '@material-ui/core'\r\nimport * as yup from 'yup'\r\nimport { useForm } from 'react-hook-form'\r\nimport { yupResolver } from '@hookform/resolvers/yup'\r\n\r\nconst Login = () => {\r\n\tconst history = useHistory()\r\n\tconst [errorMessage, setErrorMessage] = useState({\r\n\t\tstatus: false,\r\n\t\tmessage: '',\r\n\t})\r\n\r\n\tconst [enteredUserData, setEnteredUserData] = useState({\r\n\t\tuserEmail: '',\r\n\t\tuserPassword: '',\r\n\t})\r\n\tconst schema = yup.object().shape({\r\n\t\tuserEmail: yup\r\n\t\t\t.string()\r\n\t\t\t.email('Please Enter Valid Email')\r\n\t\t\t.required('Email is required'),\r\n\t\tuserPassword: yup\r\n\t\t\t.string()\r\n\t\t\t.required('Password is required')\r\n\t\t\t.min(6, 'Password Length should be more than six characters'),\r\n\t})\r\n\r\n\tconst {\r\n\t\thandleSubmit,\r\n\t\tsetValue,\r\n\t\tformState: { errors },\r\n\t} = useForm({\r\n\t\tresolver: yupResolver(schema),\r\n\t\tshouldFocusError: true,\r\n\t})\r\n\r\n\tconst onSubmit = async () => {\r\n\t\tfirebase\r\n\t\t\t.auth()\r\n\t\t\t.signInWithEmailAndPassword(\r\n\t\t\t\tenteredUserData.userEmail,\r\n\t\t\t\tenteredUserData.userPassword\r\n\t\t\t)\r\n\t\t\t.then(() => {\r\n\t\t\t\tconsole.log('Login Success')\r\n\t\t\t\thistory.push('/dashboard')\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconsole.error(err.code)\r\n\t\t\t\tsetErrorMessage({\r\n\t\t\t\t\tstatus: true,\r\n\t\t\t\t\tmessage: err.code.replace(/[-]/g, ' ').slice(5, err.code.length),\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t}\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\tLoading\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\thistory.push('/login')\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\tLog In\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t{/*
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\tSignup\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
*/}\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tsetEnteredUserData({\r\n\t\t\t\t\t\t\t\t\t\t\t\t...enteredUserData,\r\n\t\t\t\t\t\t\t\t\t\t\t\tuserEmail: e.target.value,\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\tsetValue('userEmail', e.target.value, {\r\n\t\t\t\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t{errors?.userEmail ? (\r\n\t\t\t\t\t\t\t\t\t\t
{errors.userEmail.message}
\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\tsetEnteredUserData({\r\n\t\t\t\t\t\t\t\t\t\t\t\t...enteredUserData,\r\n\t\t\t\t\t\t\t\t\t\t\t\tuserPassword: e.target.value,\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\tsetValue('userPassword', e.target.value, {\r\n\t\t\t\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\t\t{errors?.userPassword ? (\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t{errors.userPassword.message}\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t
{errorMessage.message}
\r\n\t\t\t\t\t\t\t\t\t{/*
\r\n\t\t\t\t\t\t\t\t\t\tForgot Password?\r\n\t\t\t\t\t\t\t\t\t
*/}\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\tLogin\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Login\r\n","import React, { useEffect, useState } from 'react'\r\nimport CancelRoundedIcon from '@material-ui/icons/CancelRounded'\r\nimport './Modal.css'\r\ninterface Props {\r\n\tchildren?: React.ReactNode\r\n\theight?: number\r\n\tisCloseEnabled?: boolean\r\n\tonClose: () => void\r\n}\r\nconst Modal = (props: Props) => {\r\n\tconst { children, height = 510, isCloseEnabled = true, onClose } = props\r\n\tconst [modalScale, setModalScale] = useState(1)\r\n\r\n\tconst closeModal = () => {\r\n\t\tonClose()\r\n\t}\r\n\treturn (\r\n\t\t\r\n\t\t\t {\r\n\t\t\t\t\tif (isCloseEnabled) closeModal()\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\r\n\t\t\t\t{isCloseEnabled ? (\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tif (isCloseEnabled) closeModal()\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t) : (\r\n\t\t\t\t\t
\r\n\t\t\t\t)}\r\n\t\t\t\t
\r\n\t\t\t\t\t{children}\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\nexport default Modal\r\n","import React, { useEffect, useState } from 'react'\r\nimport firebase from '../../Firebase/firebase'\r\nimport Modal from '../Modal/Modal'\r\nimport { Input, MenuItem, Select } from '@material-ui/core'\r\nimport { ModelType } from '../../Interface/Interface'\r\nimport * as yup from 'yup'\r\nimport { useForm } from 'react-hook-form'\r\nimport { yupResolver } from '@hookform/resolvers/yup'\r\n\r\ninterface Props {\r\n\tmodels: any\r\n\tunits: any\r\n\tsetIsCreateModelModelOpen(isCreateModelOpen: boolean): void\r\n}\r\nconst CreateModels = (props: Props) => {\r\n\tconst { models, setIsCreateModelModelOpen, units } = props\r\n\tconst calculatedChannelEnables = ['CAL1', 'CAL2']\r\n\tconst [modeIDErrorMessage, setModelIDErrorMessage] = useState('')\r\n\tconst modelTypes: string[] = ['Reserved', 'Getway', 'Hygrometer', 'Logger']\r\n\tconst numberOfChannels: number[] = [0, 1, 2, 3, 4]\r\n\tconst numberOfCalculatedChannels: number[] = [0, 1, 2]\r\n\tconst [newModel, setNewModel] = useState({\r\n\t\tmodelID: '',\r\n\t\tmodelName: '',\r\n\t\tmodelType: '',\r\n\t\tnoOfChannels: -1,\r\n\t\tnoOfCalculatedChannels: -1,\r\n\t\tunits: [],\r\n\t\tcalculatedChannelUnits: [],\r\n\t\tenabledCalculatedChannels: [],\r\n\t\tmaxNoOfLogs: -1,\r\n\t})\r\n\r\n\tconst schema = yup.object().shape({\r\n\t\tmodelID: yup.string().required('Model ID is required'),\r\n\t\tmodelName: yup.string().required('Model Name is required'),\r\n\t\tmodelType: yup.string().required('Model Type is required'),\r\n\t\tnoOfChannels: yup.number().required('No Of Channels is required'),\r\n\t\tnoOfCalculatedChannels: yup\r\n\t\t\t.number()\r\n\t\t\t.required('No Of Calculated Channels is required'),\r\n\t\tmaxNoOfLogs: yup.number().required('Max No Of Logs is required'),\r\n\t})\r\n\r\n\tconst modelsCollection = firebase.firestore().collection('Models')\r\n\tconst ITEM_HEIGHT = 48\r\n\tconst ITEM_PADDING_TOP = 8\r\n\tconst MenuProps = {\r\n\t\tPaperProps: {\r\n\t\t\tstyle: {\r\n\t\t\t\tmaxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\r\n\t\t\t\twidth: 500,\r\n\t\t\t},\r\n\t\t},\r\n\t}\r\n\tconst {\r\n\t\thandleSubmit,\r\n\t\tsetValue,\r\n\t\tformState: { errors },\r\n\t} = useForm({\r\n\t\tresolver: yupResolver(schema),\r\n\t\tshouldFocusError: true,\r\n\t})\r\n\tconst createNewModel = () => {\r\n\t\tmodelsCollection\r\n\t\t\t.doc()\r\n\t\t\t.set({\r\n\t\t\t\t...newModel,\r\n\t\t\t\tenabledCalculatedChannels: [\r\n\t\t\t\t\tnewModel.enabledCalculatedChannels.indexOf('CAL1') !== -1,\r\n\t\t\t\t\tnewModel.enabledCalculatedChannels.indexOf('CAL2') !== -1,\r\n\t\t\t\t],\r\n\t\t\t\tcalculatedChannelUnits:\r\n\t\t\t\t\tnewModel.enabledCalculatedChannels.length === 2\r\n\t\t\t\t\t\t? [1, 1]\r\n\t\t\t\t\t\t: newModel.enabledCalculatedChannels.length === 1\r\n\t\t\t\t\t\t? newModel.enabledCalculatedChannels[0] === 'CAL1'\r\n\t\t\t\t\t\t\t? [1]\r\n\t\t\t\t\t\t\t: [1]\r\n\t\t\t\t\t\t: [],\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t\tsetIsCreateModelModelOpen(false)\r\n\t}\r\n\tuseEffect(() => {\r\n\t\tif (\r\n\t\t\tmodels.filter((model: any) => model.modelID === newModel.modelID).length >\r\n\t\t\t0\r\n\t\t) {\r\n\t\t\tsetModelIDErrorMessage('Model ID already used.')\r\n\t\t} else {\r\n\t\t\tsetModelIDErrorMessage('')\r\n\t\t}\r\n\t}, [newModel.modelID])\r\n\treturn (\r\n\t\t setIsCreateModelModelOpen(false)}>\r\n\t\t\t
\r\n\t\t\t\t

Create Model

\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetNewModel({ ...newModel, modelID: e.target.value })\r\n\t\t\t\t\t\t\t\tsetValue('modelID', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tclassName='gap-container small-24'\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.modelID ? (\r\n\t\t\t\t\t\t\t

{errors.modelID.message}

\r\n\t\t\t\t\t\t) : modeIDErrorMessage.length > 0 ? (\r\n\t\t\t\t\t\t\t

{modeIDErrorMessage}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetNewModel({ ...newModel, modelName: e.target.value })\r\n\t\t\t\t\t\t\t\tsetValue('modelName', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tclassName='gap-container small-24'\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.modelName ? (\r\n\t\t\t\t\t\t\t

{errors.modelName.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetNewModel({\r\n\t\t\t\t\t\t\t\t\t...newModel,\r\n\t\t\t\t\t\t\t\t\tmodelType: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('modelType', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{modelTypes.map((option: any) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{option}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{errors?.modelType ? (\r\n\t\t\t\t\t\t\t

{errors.modelType.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetNewModel({\r\n\t\t\t\t\t\t\t\t\t...newModel,\r\n\t\t\t\t\t\t\t\t\tnoOfChannels: parseInt(e.target.value),\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('noOfChannels', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{numberOfChannels.map((option: any) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{option}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{(() => {\r\n\t\t\t\t\t\t\tconst channelUnitInputBox: any = []\r\n\t\t\t\t\t\t\tfor (\r\n\t\t\t\t\t\t\t\tlet index = 0;\r\n\t\t\t\t\t\t\t\tnewModel.noOfChannels > 0 && index < newModel.noOfChannels;\r\n\t\t\t\t\t\t\t\tindex++\r\n\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\tchannelUnitInputBox.push(\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tlet localUnit: number[] = newModel.units\r\n\t\t\t\t\t\t\t\t\t\t\t\tlocalUnit[index] = event.target.value as number\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetNewModel({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...newModel,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tunits: localUnit,\r\n\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\t\t\t\t\trenderValue={(selected) => selected as number}\r\n\t\t\t\t\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{units.map((unit: any) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{unit.unitSymbol}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn channelUnitInputBox\r\n\t\t\t\t\t\t})()}\r\n\t\t\t\t\t\t{errors?.noOfChannels ? (\r\n\t\t\t\t\t\t\t

{errors.noOfChannels.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tif (parseInt(e.target.value) === 0) {\r\n\t\t\t\t\t\t\t\t\tsetNewModel({\r\n\t\t\t\t\t\t\t\t\t\t...newModel,\r\n\t\t\t\t\t\t\t\t\t\tnoOfCalculatedChannels: parseInt(e.target.value),\r\n\t\t\t\t\t\t\t\t\t\tenabledCalculatedChannels: [],\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tsetNewModel({\r\n\t\t\t\t\t\t\t\t\t\t...newModel,\r\n\t\t\t\t\t\t\t\t\t\tnoOfCalculatedChannels: parseInt(e.target.value),\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tsetValue('noOfCalculatedChannels', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{numberOfCalculatedChannels.map((option: any) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{option}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{errors?.noOfCalculatedChannels ? (\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{errors.noOfCalculatedChannels.message}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{newModel.noOfCalculatedChannels > 1 ? (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) => {\r\n\t\t\t\t\t\t\t\t\t\tsetNewModel({\r\n\t\t\t\t\t\t\t\t\t\t\t...newModel,\r\n\t\t\t\t\t\t\t\t\t\t\tenabledCalculatedChannels: event.target.value as string[],\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\t\t\trenderValue={(selected) => (selected as string[]).join(', ')}\r\n\t\t\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{calculatedChannelEnables.map(\r\n\t\t\t\t\t\t\t\t\t\t(calculatedChannelEnable: any, index: number) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{calculatedChannelEnable}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t) : newModel.noOfCalculatedChannels > 0 ? (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tsetNewModel({\r\n\t\t\t\t\t\t\t\t\t\t\t...newModel,\r\n\t\t\t\t\t\t\t\t\t\t\tenabledCalculatedChannels: [event.target.value],\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\t\t\trenderValue={(selected) => (selected as string[]).join(', ')}\r\n\t\t\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{calculatedChannelEnables.map(\r\n\t\t\t\t\t\t\t\t\t\t(calculatedChannelEnable: any, index: number) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{calculatedChannelEnable}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{/* {errors?.enabledCalculatedChannels ? (\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{errors.enabledCalculatedChannels.message}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)} */}\r\n\t\t\t\t\t\t{/* {\r\n\t\t\t\t\t\t\t\tsetNewModel({\r\n\t\t\t\t\t\t\t\t\t...newModel,\r\n\t\t\t\t\t\t\t\t\tenabledCalculatedChannels: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tclassName='gap-container small-24'\r\n\t\t\t\t\t\t/> */}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetNewModel({\r\n\t\t\t\t\t\t\t\t\t\t...newModel,\r\n\t\t\t\t\t\t\t\t\t\tmaxNoOfLogs: parseInt(e.target.value),\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\tsetValue('maxNoOfLogs', e.target.value, {\r\n\t\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tclassName='gap-container small-24'\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{errors?.maxNoOfLogs ? (\r\n\t\t\t\t\t\t\t\t

{errors.maxNoOfLogs.message}

\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tCreate Model\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t setIsCreateModelModelOpen(false)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default CreateModels\r\n","import React, { useState, useEffect } from 'react'\r\nimport firebase from '../../Firebase/firebase'\r\nimport Modal from '../Modal/Modal'\r\nimport { Input, MenuItem, Select } from '@material-ui/core'\r\nimport * as yup from 'yup'\r\nimport { useForm } from 'react-hook-form'\r\nimport { yupResolver } from '@hookform/resolvers/yup'\r\ninterface Props {\r\n\tunits: any\r\n\tmodels: any\r\n\tsetIsUpdateModelOpen(isEditUnitModelOpen: boolean): void\r\n\tcurrentModel: any\r\n}\r\nconst UpdateModel = (props: Props) => {\r\n\tconst { models, setIsUpdateModelOpen, units, currentModel } = props\r\n\tconst calculatedChannelEnables = ['CAL1', 'CAL2']\r\n\tconst modelTypes: string[] = ['Reserved', 'Getway', 'Hygrometer', 'Logger']\r\n\tconst numberOfChannels: number[] = [0, 1, 2, 3, 4]\r\n\tconst numberOfCalculatedChannels: number[] = [0, 1, 2]\r\n\tconst [localCurrentModel, setLocalCurrentModel] = useState({\r\n\t\t...currentModel,\r\n\t\tenabledCalculatedChannels:\r\n\t\t\tcurrentModel.enabledCalculatedChannels[0] === true &&\r\n\t\t\tcurrentModel.enabledCalculatedChannels[1] === true\r\n\t\t\t\t? ['CAL1', 'CAL2']\r\n\t\t\t\t: currentModel.enabledCalculatedChannels[0] === true &&\r\n\t\t\t\t currentModel.enabledCalculatedChannels[1] === false\r\n\t\t\t\t? ['CAL1']\r\n\t\t\t\t: currentModel.enabledCalculatedChannels[0] === false &&\r\n\t\t\t\t currentModel.enabledCalculatedChannels[1] === true\r\n\t\t\t\t? ['CAL2']\r\n\t\t\t\t: [],\r\n\t})\r\n\tconst [modeIDErrorMessage, setModelIDErrorMessage] = useState('')\r\n\tconst schema = yup.object().shape({\r\n\t\tmodelID: yup\r\n\t\t\t.string()\r\n\t\t\t.default(currentModel.modelID)\r\n\t\t\t.required('Model ID is required'),\r\n\t\tmodelName: yup\r\n\t\t\t.string()\r\n\t\t\t.default(currentModel.modelName)\r\n\t\t\t.required('Model Name is required'),\r\n\t\tmodelType: yup\r\n\t\t\t.string()\r\n\t\t\t.default(currentModel.modelType)\r\n\t\t\t.required('Model Type is required'),\r\n\t\tnoOfChannels: yup\r\n\t\t\t.number()\r\n\t\t\t.default(currentModel.noOfChannels)\r\n\t\t\t.required('No Of Channels is required'),\r\n\t\tnoOfCalculatedChannels: yup\r\n\t\t\t.number()\r\n\t\t\t.default(currentModel.noOfCalculatedChannels)\r\n\t\t\t.required('No Of Calculated Channels is required'),\r\n\t\tmaxNoOfLogs: yup\r\n\t\t\t.number()\r\n\t\t\t.default(currentModel.maxNoOfLogs)\r\n\t\t\t.required('Max No Of Logs is required'),\r\n\t})\r\n\tconst modelsCollection = firebase.firestore().collection('Models')\r\n\tconst ITEM_HEIGHT = 48\r\n\tconst ITEM_PADDING_TOP = 8\r\n\tconst MenuProps = {\r\n\t\tPaperProps: {\r\n\t\t\tstyle: {\r\n\t\t\t\tmaxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\r\n\t\t\t\twidth: 500,\r\n\t\t\t},\r\n\t\t},\r\n\t}\r\n\tconst {\r\n\t\thandleSubmit,\r\n\t\tsetValue,\r\n\t\tformState: { errors },\r\n\t} = useForm({\r\n\t\tresolver: yupResolver(schema),\r\n\t\tshouldFocusError: true,\r\n\t})\r\n\tconst updateModal = () => {\r\n\t\tmodelsCollection\r\n\t\t\t.doc(localCurrentModel.uid)\r\n\t\t\t.update({\r\n\t\t\t\tmodelName: localCurrentModel.modelName,\r\n\t\t\t\tmodelType: localCurrentModel.modelType,\r\n\t\t\t\tnoOfChannels: localCurrentModel.noOfChannels,\r\n\t\t\t\tnoOfCalculatedChannels: localCurrentModel.noOfCalculatedChannels,\r\n\t\t\t\tunits: localCurrentModel.units,\r\n\t\t\t\tmaxNoOfLogs: localCurrentModel.maxNoOfLogs,\r\n\t\t\t\tenabledCalculatedChannels: [\r\n\t\t\t\t\tlocalCurrentModel.enabledCalculatedChannels.indexOf('CAL1') !== -1,\r\n\t\t\t\t\tlocalCurrentModel.enabledCalculatedChannels.indexOf('CAL2') !== -1,\r\n\t\t\t\t],\r\n\t\t\t\tcalculatedChannelUnits:\r\n\t\t\t\t\tlocalCurrentModel.enabledCalculatedChannels.length === 2\r\n\t\t\t\t\t\t? [1, 1]\r\n\t\t\t\t\t\t: localCurrentModel.enabledCalculatedChannels.length === 1\r\n\t\t\t\t\t\t? localCurrentModel.enabledCalculatedChannels[0] === 'CAL1'\r\n\t\t\t\t\t\t\t? [1]\r\n\t\t\t\t\t\t\t: [1]\r\n\t\t\t\t\t\t: [],\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t\tsetIsUpdateModelOpen(false)\r\n\t}\r\n\tuseEffect(() => {\r\n\t\tif (\r\n\t\t\tmodels.filter(\r\n\t\t\t\t(model: any) =>\r\n\t\t\t\t\tmodel.uid !== localCurrentModel.uid &&\r\n\t\t\t\t\tmodel.modelID === localCurrentModel.modelID\r\n\t\t\t).length > 0\r\n\t\t) {\r\n\t\t\tsetModelIDErrorMessage('Model ID already used.')\r\n\t\t} else {\r\n\t\t\tsetModelIDErrorMessage('')\r\n\t\t}\r\n\t}, [localCurrentModel.modelID])\r\n\treturn (\r\n\t\t setIsUpdateModelOpen(false)}>\r\n\t\t\t
\r\n\t\t\t\t

Update Model

\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\tmodelID: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('modelID', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tclassName='gap-container small-24'\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.modelID ? (\r\n\t\t\t\t\t\t\t

{errors.modelID.message}

\r\n\t\t\t\t\t\t) : modeIDErrorMessage.length > 0 ? (\r\n\t\t\t\t\t\t\t

{modeIDErrorMessage}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\tmodelName: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('modelName', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tclassName='gap-container small-24'\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.modelName ? (\r\n\t\t\t\t\t\t\t

{errors.modelName.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\tmodelType: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('modelType', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{modelTypes.map((option: any) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{option}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{errors?.modelType ? (\r\n\t\t\t\t\t\t\t

{errors.modelType.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\tnoOfChannels: parseInt(e.target.value),\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('noOfChannels', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{numberOfChannels.map((option: any) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{option}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{(() => {\r\n\t\t\t\t\t\t\tconst channelUnitInputBox: any = []\r\n\t\t\t\t\t\t\tfor (\r\n\t\t\t\t\t\t\t\tlet index = 0;\r\n\t\t\t\t\t\t\t\tlocalCurrentModel.noOfChannels > 0 &&\r\n\t\t\t\t\t\t\t\tindex < localCurrentModel.noOfChannels;\r\n\t\t\t\t\t\t\t\tindex++\r\n\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\tchannelUnitInputBox.push(\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\tlet localUnit: number[] = localCurrentModel.units\r\n\t\t\t\t\t\t\t\t\t\t\t\tlocalUnit[index] = event.target.value as number\r\n\t\t\t\t\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tunits: localUnit,\r\n\t\t\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\t\t\t\t\trenderValue={(selected) => selected as number}\r\n\t\t\t\t\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t{units.map((unit: any) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{unit.unitSymbol}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn channelUnitInputBox\r\n\t\t\t\t\t\t})()}\r\n\t\t\t\t\t\t{errors?.noOfChannels ? (\r\n\t\t\t\t\t\t\t

{errors.noOfChannels.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tif (parseInt(e.target.value) === 0) {\r\n\t\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\t\tnoOfCalculatedChannels: parseInt(e.target.value),\r\n\t\t\t\t\t\t\t\t\t\tenabledCalculatedChannels: [],\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\t\tnoOfCalculatedChannels: parseInt(e.target.value),\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tsetValue('noOfCalculatedChannels', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{numberOfCalculatedChannels.map((option: any) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{option}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t{errors?.noOfCalculatedChannels ? (\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{errors.noOfCalculatedChannels.message}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{localCurrentModel.noOfCalculatedChannels > 1 ? (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) => {\r\n\t\t\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\t\t\tenabledCalculatedChannels: event.target.value as string[],\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\t\t\trenderValue={(selected) => (selected as string[]).join(', ')}\r\n\t\t\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{calculatedChannelEnables.map(\r\n\t\t\t\t\t\t\t\t\t\t(calculatedChannelEnable: any, index: number) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{calculatedChannelEnable}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t) : localCurrentModel.noOfCalculatedChannels > 0 ? (\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\t\t\tenabledCalculatedChannels: [event.target.value],\r\n\t\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\t\t\trenderValue={(selected) => (selected as string[]).join(', ')}\r\n\t\t\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t{calculatedChannelEnables.map(\r\n\t\t\t\t\t\t\t\t\t\t(calculatedChannelEnable: any, index: number) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t{calculatedChannelEnable}\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t<>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t{/* {errors?.enabledCalculatedChannels ? (\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{errors.enabledCalculatedChannels.message}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)} */}\r\n\t\t\t\t\t\t{/* {\r\n\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\tenabledCalculatedChannels: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tclassName='gap-container small-24'\r\n\t\t\t\t\t\t/> */}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\tsetLocalCurrentModel({\r\n\t\t\t\t\t\t\t\t\t\t...localCurrentModel,\r\n\t\t\t\t\t\t\t\t\t\tmaxNoOfLogs: parseInt(e.target.value),\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t\tsetValue('maxNoOfLogs', e.target.value, {\r\n\t\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tclassName='gap-container small-24'\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t{errors?.maxNoOfLogs ? (\r\n\t\t\t\t\t\t\t\t

{errors.maxNoOfLogs.message}

\r\n\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tUpdate Model\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t setIsUpdateModelOpen(false)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default UpdateModel\r\n","import React from 'react'\r\nimport CancelRoundedIcon from '@material-ui/icons/CancelRounded'\r\n\r\ninterface Props {\r\n\tsetModelOpen(modelOpen: boolean): void\r\n\tyesButtonAction(): void\r\n}\r\n\r\nconst DeleteModal = (props: Props) => {\r\n\tconst { yesButtonAction, setModelOpen } = props\r\n\treturn (\r\n\t\t
\r\n\t\t\t {\r\n\t\t\t\t\t// if (isCloseEnabled) closeModal()\r\n\t\t\t\t}}\r\n\t\t\t>
\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t setModelOpen(false)}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t

Delete

\r\n\t\t\t\t
\r\n\t\t\t\t
Are You Sure?
\r\n\t\t\t\t
\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tyesButtonAction()\r\n\t\t\t\t\t\t\tsetModelOpen(false)\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tYES\r\n\t\t\t\t\t\r\n\t\t\t\t\t setModelOpen(false)}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\tNO\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default DeleteModal\r\n","import React, { useState, useEffect, Component } from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\nimport firebase from '../../Firebase/firebase'\r\nimport CreateModels from '../CreateModel/CreateModel'\r\nimport UpdateModel from '../UpdateModel/UpdateModel'\r\nimport DeleteModal from '../DeleteModal/DeleteModal'\r\nimport { Button } from '@material-ui/core'\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nimport './Models.css'\r\n\r\ninterface Props {\r\n\tmodels: any\r\n\tunits: any\r\n}\r\nconst Models = (props: Props) => {\r\n\tconst { models, units } = props\r\n\tconst history = useHistory()\r\n\tconst [isModelUpdateModelOpen, setIsModelUpdateModelOpen] = useState(false)\r\n\tconst [isCreateModelModelOpen, setIsCreateModelModelOpen] = useState(false)\r\n\tconst [isDeleteModelOpen, setIsDeleteModelOpen] = useState(false)\r\n\tconst [currentModel, setCurrentModel]: any = useState()\r\n\tconst [currentUserEmailID, setCurrentUserEmailID] = useState('')\r\n\r\n\tconst modelsCollection = firebase.firestore().collection('Models')\r\n\tuseEffect(() => {\r\n\t\t;(async () => {\r\n\t\t\tconst auth = await firebase.auth().onAuthStateChanged((user: any) => {\r\n\t\t\t\tif (user) {\r\n\t\t\t\t\tsetCurrentUserEmailID(user.email)\r\n\t\t\t\t} else {\r\n\t\t\t\t\thistory.push('/login')\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})()\r\n\t}, [])\r\n\r\n\t//DELETE FUNCTION\r\n\tconst deleteModel = (model: any) => {\r\n\t\tmodelsCollection\r\n\t\t\t.doc(model.uid)\r\n\t\t\t.delete()\r\n\t\t\t.then(() => {})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t\tsetIsDeleteModelOpen(false)\r\n\t}\r\n\tconst [searchValue, setSearchValue] = useState('')\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{currentUserEmailID}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tModels List\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t setSearchValue(e.target.value)}\r\n\t\t\t\t\t\tclassName='search-bar small-24'\r\n\t\t\t\t\t\tplaceholder='Search Here'\r\n\t\t\t\t\t/>\r\n\t\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetIsCreateModelModelOpen(true)\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\tCreate Model\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{models.length !== 0\r\n\t\t\t\t\t\t? models\r\n\t\t\t\t\t\t\t\t.filter((model: any) => {\r\n\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\tmodel.modelID\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchValue.toLowerCase().trim()) ||\r\n\t\t\t\t\t\t\t\t\t\tmodel.modelName\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchValue.toLowerCase().trim()) ||\r\n\t\t\t\t\t\t\t\t\t\tmodel.modelType\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchValue.toLowerCase().trim())\r\n\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\treturn model\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t.map((model: any) => (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t: 'Models Not Found'}\r\n\t\t\t\t\r\n\t\t\t
IDNameTypeNo Of ChannelsNo Of Calculated ChannelsUnitsCalculated Channel UnitsEnabled Calculated ChannelsMax No Of LogsActions
{model.modelID}{model.modelName}{model.modelType}{model.noOfChannels}{model.noOfCalculatedChannels}\r\n\t\t\t\t\t\t\t\t\t\t\t{model.units.map((unit: any, index: number) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{units[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunits\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map((symbol: any) => symbol.unitID)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.indexOf(unit)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.unitSymbol &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(index !== 0 ? ', ' : '') +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunits[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunits\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map((symbol: any) => symbol.unitID)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.indexOf(unit)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.unitSymbol}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{model.calculatedChannelUnits.map(\r\n\t\t\t\t\t\t\t\t\t\t\t\t(unit: number, index: number) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{unit !== -1\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `${\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunits[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunits\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map((symbol: any) => symbol.unitID)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.indexOf(unit)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.unitSymbol\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t }${\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel.calculatedChannelUnits[index + 1] ===\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ', '\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t }`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ``}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{model.enabledCalculatedChannels.map(\r\n\t\t\t\t\t\t\t\t\t\t\t\t(enabledCalculatedChannel: any, index: number) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{enabledCalculatedChannel === true\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `CAL${index + 1}${\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmodel.enabledCalculatedChannels[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex + 1\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t] === true\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? ', '\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ''\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t }`\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: ``}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t\t{model.maxNoOfLogs}\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentModel(model)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsModelUpdateModelOpen(true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=' action-btn'\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentModel(model)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsDeleteModelOpen(true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tclassName='ml-xs action-btn'\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{isModelUpdateModelOpen && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{isCreateModelModelOpen && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{isDeleteModelOpen && (\r\n\t\t\t\t\t deleteModel(currentModel)}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Models\r\n","import React, { useState } from 'react'\r\nimport firebase from '../../Firebase/firebase'\r\nimport Modal from '../Modal/Modal'\r\nimport * as yup from 'yup'\r\nimport { useForm } from 'react-hook-form'\r\nimport { yupResolver } from '@hookform/resolvers/yup'\r\n\r\ninterface Props {\r\n\tunit: any\r\n\tsetIsUpdateModelOpen(isEditUnitModelOpen: boolean): void\r\n}\r\nconst UpdateUnits = (props: Props) => {\r\n\tconst { unit, setIsUpdateModelOpen } = props\r\n\tconst [localUnit, setLocalUnit] = useState(unit)\r\n\tconst unitsCollection = firebase.firestore().collection('Units')\r\n\r\n\tconst schema = yup.object().shape({\r\n\t\tunitSymbol: yup\r\n\t\t\t.string()\r\n\t\t\t.default(localUnit.unitSymbol)\r\n\t\t\t.required('Unit Symbol is required')\r\n\t\t\t.matches(/^[a-zA-Z\\s]+$/, 'Unit Symbol should contain alphabates only'),\r\n\t\tunitName: yup\r\n\t\t\t.string()\r\n\t\t\t.default(localUnit.unitName)\r\n\t\t\t.required('Unit Name is required')\r\n\t\t\t.matches(/^[a-zA-Z\\s]+$/, 'Unit Name should contain alphabates only'),\r\n\t\tparameter: yup\r\n\t\t\t.string()\r\n\t\t\t.default(localUnit.parameter)\r\n\t\t\t.required('Parameter is required')\r\n\t\t\t.matches(/^[a-zA-Z\\s]+$/, 'Parameter should contain alphabates only'),\r\n\t})\r\n\r\n\tconst {\r\n\t\thandleSubmit,\r\n\t\tsetValue,\r\n\t\tformState: { errors },\r\n\t} = useForm({\r\n\t\tresolver: yupResolver(schema),\r\n\t\tshouldFocusError: true,\r\n\t})\r\n\r\n\tconst onSubmit = () => {\r\n\t\tunitsCollection\r\n\t\t\t.doc(unit.uid)\r\n\t\t\t.update({\r\n\t\t\t\tunitSymbol: localUnit.unitSymbol,\r\n\t\t\t\tunitName: localUnit.unitName,\r\n\t\t\t\tparameter: localUnit.parameter,\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t\tsetIsUpdateModelOpen(false)\r\n\t\t//push to db\r\n\t}\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tsetIsUpdateModelOpen(false)\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t
\r\n\t\t\t\t

Update Unit

\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetLocalUnit({\r\n\t\t\t\t\t\t\t\t\t...localUnit,\r\n\t\t\t\t\t\t\t\t\tunitName: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('unitName', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.unitName ? (\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{errors.unitName.message}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetLocalUnit({\r\n\t\t\t\t\t\t\t\t\t...localUnit,\r\n\t\t\t\t\t\t\t\t\tunitSymbol: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('unitSymbol', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.unitSymbol ? (\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{errors.unitSymbol.message}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetLocalUnit({\r\n\t\t\t\t\t\t\t\t\t...localUnit,\r\n\t\t\t\t\t\t\t\t\tparameter: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('parameter', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.parameter ? (\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{errors.parameter.message}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tUpdate Unit\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t setIsUpdateModelOpen(false)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default UpdateUnits\r\n","import React, { useState } from 'react'\r\nimport firebase from '../../Firebase/firebase'\r\nimport Modal from '../Modal/Modal'\r\nimport * as yup from 'yup'\r\nimport { useForm } from 'react-hook-form'\r\nimport { yupResolver } from '@hookform/resolvers/yup'\r\ninterface Props {\r\n\tnewUnitID: number\r\n\tsetIsCreateModelOpen(createUnits: boolean): void\r\n}\r\nconst CreateUnits = (props: Props) => {\r\n\tconst { newUnitID, setIsCreateModelOpen } = props\r\n\tconst unitCollection = firebase.firestore().collection('Units')\r\n\tconst [newUnit, setNewUnit] = useState({\r\n\t\tunitID: newUnitID,\r\n\t\tunitSymbol: '',\r\n\t\tunitName: '',\r\n\t\tparameter: '',\r\n\t})\r\n\tconst schema = yup.object().shape({\r\n\t\tunitSymbol: yup\r\n\t\t\t.string()\r\n\t\t\t.required('Unit Symbol is required')\r\n\t\t\t.matches(/^[a-zA-Z\\s]+$/, 'Unit Symbol should contain alphabates only'),\r\n\t\tunitName: yup\r\n\t\t\t.string()\r\n\t\t\t.required('Unit Name is required')\r\n\t\t\t.matches(/^[a-zA-Z\\s]+$/, 'Unit Name should contain alphabates only'),\r\n\t\tparameter: yup\r\n\t\t\t.string()\r\n\t\t\t.required('Parameter is required')\r\n\t\t\t.matches(/^[a-zA-Z\\s]+$/, 'Parameter should contain alphabates only'),\r\n\t})\r\n\r\n\tconst {\r\n\t\thandleSubmit,\r\n\t\tsetValue,\r\n\t\tformState: { errors },\r\n\t} = useForm({\r\n\t\tresolver: yupResolver(schema),\r\n\t\tshouldFocusError: true,\r\n\t})\r\n\r\n\tconst onSubmit = () => {\r\n\t\tunitCollection\r\n\t\t\t.doc()\r\n\t\t\t.set(newUnit)\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t\tsetIsCreateModelOpen(false)\r\n\t\t//push to db\r\n\t}\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tsetIsCreateModelOpen(false)\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t
\r\n\t\t\t\t

Create Unit

\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetNewUnit({\r\n\t\t\t\t\t\t\t\t\t...newUnit,\r\n\t\t\t\t\t\t\t\t\tunitName: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('unitName', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.unitName ? (\r\n\t\t\t\t\t\t\t

{errors.unitName.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetNewUnit({\r\n\t\t\t\t\t\t\t\t\t...newUnit,\r\n\t\t\t\t\t\t\t\t\tunitSymbol: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('unitSymbol', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.unitSymbol ? (\r\n\t\t\t\t\t\t\t

{errors.unitSymbol.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetNewUnit({\r\n\t\t\t\t\t\t\t\t\t...newUnit,\r\n\t\t\t\t\t\t\t\t\tparameter: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('parameter', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.parameter ? (\r\n\t\t\t\t\t\t\t

{errors.parameter.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tCreate Unit\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetIsCreateModelOpen(false)\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default CreateUnits\r\n","import React, { useState, useEffect } from 'react'\r\nimport { useHistory } from 'react-router-dom'\r\nimport firebase from '../../Firebase/firebase'\r\nimport UpdateUnit from '../UpdateUnits/UpdateUnits'\r\nimport CreateUnits from '../CreateUnit/CreateUnit'\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nimport DeleteModal from '../DeleteModal/DeleteModal'\r\nimport { Unit } from '../../Interface/Interface'\r\nimport { Button } from '@material-ui/core'\r\nimport '../Models/Models.css'\r\n\r\ninterface Props {\r\n\tunits: Unit[]\r\n}\r\nconst Units = (props: Props) => {\r\n\tconst { units } = props\r\n\tconst unitsCollection = firebase.firestore().collection('Units')\r\n\tconst history = useHistory()\r\n\tconst [isUpdateModelOpen, setIsUpdateModelOpen] = useState(false)\r\n\tconst [isCreateModelOpen, setIsCreateModelOpen] = useState(false)\r\n\tconst [isDeleteModelOpen, setIsDeleteModelOpen] = useState(false)\r\n\tconst [currentUnit, setCurrentUnit]: any = useState()\r\n\tconst [userID, setUserID] = useState('')\r\n\r\n\tuseEffect(() => {\r\n\t\t;(async () => {\r\n\t\t\tconst auth = await firebase.auth().onAuthStateChanged((user: any) => {\r\n\t\t\t\tif (user) {\r\n\t\t\t\t\tsetUserID(user.email)\r\n\t\t\t\t} else {\r\n\t\t\t\t\thistory.push('/login')\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})()\r\n\t}, [])\r\n\r\n\t//DELETE FUNCTION\r\n\tconst deleteUnit = (unit: any) => {\r\n\t\tunitsCollection\r\n\t\t\t.doc(unit.uid)\r\n\t\t\t.delete()\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t}\r\n\tconst [searchValue, setSearchValue] = useState('')\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{userID}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tUnits List\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t setSearchValue(e.target.value)}\r\n\t\t\t\t\t\tclassName='search-bar small-24'\r\n\t\t\t\t\t\tplaceholder='Search Here'\r\n\t\t\t\t\t/>\r\n\t\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetIsCreateModelOpen(true)\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\tCreate Unit\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{units.length !== 0\r\n\t\t\t\t\t\t? units\r\n\t\t\t\t\t\t\t\t.filter((unit: any) => {\r\n\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\tunit.unitID\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchValue.toLowerCase().trim()) ||\r\n\t\t\t\t\t\t\t\t\t\tunit.unitName\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchValue.toLowerCase().trim()) ||\r\n\t\t\t\t\t\t\t\t\t\tunit.unitSymbol\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchValue.toLowerCase().trim()) ||\r\n\t\t\t\t\t\t\t\t\t\tunit.parameter\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchValue.toLowerCase().trim())\r\n\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\treturn unit\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t.map((unit: any) => (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t: 'Units Not Found'}\r\n\t\t\t\t\r\n\t\t\t
IDNameSymbolParametersActions
{unit.unitID}{unit.unitName}{unit.unitSymbol}{unit.parameter}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentUnit(unit)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsUpdateModelOpen(true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=' action-btn'\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentUnit(unit)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsDeleteModelOpen(true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tclassName='ml-xs action-btn'\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{isUpdateModelOpen && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{isCreateModelOpen && (\r\n\t\t\t\t\t 0\r\n\t\t\t\t\t\t\t\t? Math.max(...units.map((unit) => unit.unitID)) + 1\r\n\t\t\t\t\t\t\t\t: 0\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tsetIsCreateModelOpen={setIsCreateModelOpen}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{isDeleteModelOpen && (\r\n\t\t\t\t\t deleteUnit(currentUnit)}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\n\r\nexport default Units\r\n","import React, { useState, useEffect } from 'react'\r\nimport firebase from '../../Firebase/firebase'\r\nimport Modal from '../Modal/Modal'\r\nimport { Input, MenuItem, Select } from '@material-ui/core'\r\nimport * as yup from 'yup'\r\nimport { useForm } from 'react-hook-form'\r\nimport { yupResolver } from '@hookform/resolvers/yup'\r\n\r\ninterface Props {\r\n\tsetIsSensorUpdateModelOpen(isSensorUpdateModelOpen: boolean): void\r\n\tsensor: any\r\n\tunits: any[]\r\n}\r\nconst UpdateSensor = (props: Props) => {\r\n\tconst { sensor, setIsSensorUpdateModelOpen, units } = props\r\n\tconst [localSensor, setLocalSensor] = useState(sensor)\r\n\tconst sensorsCollection = firebase.firestore().collection('Sensors')\r\n\tconst ITEM_HEIGHT = 48\r\n\tconst ITEM_PADDING_TOP = 8\r\n\tconst MenuProps = {\r\n\t\tPaperProps: {\r\n\t\t\tstyle: {\r\n\t\t\t\tmaxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\r\n\t\t\t\twidth: 500,\r\n\t\t\t},\r\n\t\t},\r\n\t}\r\n\r\n\tconst schema = yup.object().shape({\r\n\t\tsensorName: yup\r\n\t\t\t.string()\r\n\t\t\t.required('Unit Symbol is required')\r\n\t\t\t.default(localSensor.sensorName),\r\n\t\tparameter: yup\r\n\t\t\t.string()\r\n\t\t\t.default(localSensor.parameter)\r\n\t\t\t.matches(/^[a-zA-Z\\s]+$/, 'Parameter should contain alphabates only'),\r\n\t\tunits: yup.array(\r\n\t\t\tyup\r\n\t\t\t\t.number()\r\n\t\t\t\t.default(localSensor.units[0])\r\n\t\t\t\t.required('Select atleast one unit')\r\n\t\t),\r\n\t})\r\n\r\n\tconst {\r\n\t\thandleSubmit,\r\n\t\tsetValue,\r\n\t\tformState: { errors },\r\n\t} = useForm({\r\n\t\tresolver: yupResolver(schema),\r\n\t\tshouldFocusError: true,\r\n\t})\r\n\r\n\tconst onSubmit = () => {\r\n\t\tsensorsCollection\r\n\t\t\t.doc(localSensor.uid)\r\n\t\t\t.update({\r\n\t\t\t\tsensorName: localSensor.sensorName,\r\n\t\t\t\tsensorGivenName: localSensor.sensorGivenName,\r\n\t\t\t\tunits: localSensor.units,\r\n\t\t\t\tparameter: localSensor.parameter,\r\n\t\t\t})\r\n\t\t\t.then(() => {\r\n\t\t\t\tsetIsSensorUpdateModelOpen(false)\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tsetIsSensorUpdateModelOpen(false)\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t\t//push to db\r\n\t}\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tsetIsSensorUpdateModelOpen(false)\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t
\r\n\t\t\t\t

Update Sensor

\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetLocalSensor({\r\n\t\t\t\t\t\t\t\t\t...localSensor,\r\n\t\t\t\t\t\t\t\t\tsensorName: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('sensorName', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.sensorName ? (\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{errors.sensorName.message}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t) => {\r\n\t\t\t\t\t\t\t\tsetLocalSensor({\r\n\t\t\t\t\t\t\t\t\t...localSensor,\r\n\t\t\t\t\t\t\t\t\tunits: event.target.value as number[],\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('units', event.target.value as number[], {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\trenderValue={(selected) => (selected as number[]).join(', ')}\r\n\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{units.map((unit: any) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{unit.unitSymbol}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t{errors?.units ? (\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{errors.units.message}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetLocalSensor({\r\n\t\t\t\t\t\t\t\t\t...localSensor,\r\n\t\t\t\t\t\t\t\t\tparameter: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('parameter', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.parameter ? (\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t\t\t{errors.parameter.message}\r\n\t\t\t\t\t\t\t

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tUpdate Sensor\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t setIsSensorUpdateModelOpen(false)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default UpdateSensor\r\n","import React, { useState } from 'react'\r\nimport firebase from '../../Firebase/firebase'\r\nimport Modal from '../Modal/Modal'\r\nimport Select from '@material-ui/core/Select'\r\nimport { Input, MenuItem } from '@material-ui/core'\r\nimport * as yup from 'yup'\r\nimport { useForm } from 'react-hook-form'\r\nimport { yupResolver } from '@hookform/resolvers/yup'\r\n\r\ninterface PeferencesSensorType {\r\n\tsensorID: number\r\n\tsensorName: string\r\n\tsensorGivenName: string\r\n\tunits: number[]\r\n\tisSensorNew: boolean\r\n\tparameter: string\r\n}\r\ninterface Props {\r\n\tsetIsCreateSensorModelOpen(isCreateSensorModelOpen: boolean): void\r\n\tnewSensorID: number\r\n\tunits: any\r\n}\r\nconst CreateSensors = (props: Props) => {\r\n\tconst { setIsCreateSensorModelOpen, newSensorID, units } = props\r\n\tconst ITEM_HEIGHT = 48\r\n\tconst ITEM_PADDING_TOP = 8\r\n\tconst MenuProps = {\r\n\t\tPaperProps: {\r\n\t\t\tstyle: {\r\n\t\t\t\tmaxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\r\n\t\t\t\twidth: 500,\r\n\t\t\t},\r\n\t\t},\r\n\t}\r\n\r\n\tconst sensorsCollection = firebase.firestore().collection('Sensors')\r\n\tconst [selectedPeferencesSensorType, setSelectedPeferencesSensorType] =\r\n\t\tuseState({\r\n\t\t\tsensorID: newSensorID,\r\n\t\t\tsensorName: '',\r\n\t\t\tsensorGivenName: '',\r\n\t\t\tunits: [],\r\n\t\t\tisSensorNew: false,\r\n\t\t\tparameter: '',\r\n\t\t})\r\n\tconst schema = yup.object().shape({\r\n\t\tsensorName: yup.string().required('Unit Symbol is required'),\r\n\t\tparameter: yup\r\n\t\t\t.string()\r\n\t\t\t.matches(/^[a-zA-Z\\s]+$/, 'Parameter should contain alphabates only'),\r\n\t\tunits: yup.array(yup.number().required('Select atleast one unit')),\r\n\t})\r\n\r\n\tconst {\r\n\t\thandleSubmit,\r\n\t\tsetValue,\r\n\t\tformState: { errors },\r\n\t} = useForm({\r\n\t\tresolver: yupResolver(schema),\r\n\t\tshouldFocusError: true,\r\n\t})\r\n\r\n\tconst onSubmit = () => {\r\n\t\tsensorsCollection\r\n\t\t\t.doc()\r\n\t\t\t.set(selectedPeferencesSensorType)\r\n\t\t\t.then(() => {\r\n\t\t\t\tsetIsCreateSensorModelOpen(false)\r\n\t\t\t})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t\t//push to db\r\n\t}\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tsetIsCreateSensorModelOpen(false)\r\n\t\t\t}}\r\n\t\t>\r\n\t\t\t
\r\n\t\t\t\t

Create Sensor

\r\n\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetSelectedPeferencesSensorType({\r\n\t\t\t\t\t\t\t\t\t...selectedPeferencesSensorType,\r\n\t\t\t\t\t\t\t\t\tsensorName: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('sensorName', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.sensorName ? (\r\n\t\t\t\t\t\t\t

{errors.sensorName.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t) => {\r\n\t\t\t\t\t\t\t\tsetSelectedPeferencesSensorType({\r\n\t\t\t\t\t\t\t\t\t...selectedPeferencesSensorType,\r\n\t\t\t\t\t\t\t\t\tunits: event.target.value as number[],\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('units', event.target.value as number[], {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tinput={}\r\n\t\t\t\t\t\t\trenderValue={(selected) => (selected as number[]).join(', ')}\r\n\t\t\t\t\t\t\tMenuProps={MenuProps}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{units.map((unit: any) => (\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t{unit.unitSymbol}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t{errors?.units ? (\r\n\t\t\t\t\t\t\t

{errors.units.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\tsetSelectedPeferencesSensorType({\r\n\t\t\t\t\t\t\t\t\t...selectedPeferencesSensorType,\r\n\t\t\t\t\t\t\t\t\tparameter: e.target.value,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\tsetValue('parameter', e.target.value, {\r\n\t\t\t\t\t\t\t\t\tshouldValidate: true,\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t{errors?.parameter ? (\r\n\t\t\t\t\t\t\t

{errors.parameter.message}

\r\n\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t''\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\tCreate Sensor\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t setIsCreateSensorModelOpen(false)}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\tCancel\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default CreateSensors\r\n","import React, { useState, useEffect } from 'react'\r\nimport '../Models/Models.css'\r\nimport { useHistory } from 'react-router-dom'\r\nimport firebase from '../../Firebase/firebase'\r\nimport UpdateSensor from '../UpdateSensor/UpdateSensor'\r\nimport CreateSensors from '../CreateSensor/CreateSensor'\r\nimport DeleteForeverIcon from '@material-ui/icons/DeleteForever'\r\nimport EditIcon from '@material-ui/icons/Edit'\r\nimport DeleteModal from '../DeleteModal/DeleteModal'\r\nimport { Button } from '@material-ui/core'\r\ninterface Props {\r\n\tsensors: any\r\n\tunits: any\r\n}\r\nconst Sensors = (props: Props) => {\r\n\tconst { sensors, units } = props\r\n\tconst history = useHistory()\r\n\tconst [isSensorUpdateModelOpen, setIsSensorUpdateModelOpen] = useState(false)\r\n\tconst [isCreateSensorModelOpen, setIsCreateSensorModelOpen] = useState(false)\r\n\tconst [isDeleteModelOpen, setIsDeleteModelOpen] = useState(false)\r\n\tconst [currentSensor, setCurrentSensor]: any = useState()\r\n\tconst [userID, setUserID] = useState('')\r\n\tconst sensorsCollection = firebase.firestore().collection('Sensors')\r\n\r\n\tuseEffect(() => {\r\n\t\t;(async () => {\r\n\t\t\tconst auth = await firebase.auth().onAuthStateChanged((user: any) => {\r\n\t\t\t\tif (user) {\r\n\t\t\t\t\tsetUserID(user.email)\r\n\t\t\t\t} else {\r\n\t\t\t\t\thistory.push('/login')\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})()\r\n\t}, [])\r\n\r\n\t//DELETE FUNCTION\r\n\tconst deleteSensor = (sensor: any) => {\r\n\t\tsensorsCollection\r\n\t\t\t.doc(sensor.uid)\r\n\t\t\t.delete()\r\n\t\t\t.then(() => {})\r\n\t\t\t.catch((err) => {\r\n\t\t\t\tconsole.error(err)\r\n\t\t\t})\r\n\t}\r\n\tconst [searchValue, setSearchValue] = useState('')\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t{userID}\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\tSensors List\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t setSearchValue(e.target.value)}\r\n\t\t\t\t\t\tclassName='search-bar small-24'\r\n\t\t\t\t\t\tplaceholder='Search Here'\r\n\t\t\t\t\t/>\r\n\t\t\t\t
\r\n\t\t\t\t {\r\n\t\t\t\t\t\tsetIsCreateSensorModelOpen(true)\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\tCreate Sensor\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{sensors.length !== 0\r\n\t\t\t\t\t\t? sensors\r\n\t\t\t\t\t\t\t\t.filter((sensor: any) => {\r\n\t\t\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t\t\tsensor.sensorID\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchValue.toLowerCase().trim()) ||\r\n\t\t\t\t\t\t\t\t\t\tsensor.sensorName\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchValue.toLowerCase().trim()) ||\r\n\t\t\t\t\t\t\t\t\t\tsensor.parameter\r\n\t\t\t\t\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t\t\t\t\t.includes(searchValue.toLowerCase().trim())\r\n\t\t\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\t\t\treturn sensor\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t\t.map((sensor: any) => (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t))\r\n\t\t\t\t\t\t: 'Sensors Not Found'}\r\n\t\t\t\t\r\n\t\t\t
IDNameUnitsParametersActions
{sensor.sensorID}{sensor.sensorName}\r\n\t\t\t\t\t\t\t\t\t\t\t{sensor.units.map((unit: any, index: number) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{units[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunits\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map((symbol: any) => symbol.unitID)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.indexOf(unit)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.unitSymbol &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(index !== 0 ? ', ' : '') +\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunits[\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tunits\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.map((symbol: any) => symbol.unitID)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.indexOf(unit)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]?.unitSymbol}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t\t\t\t{sensor.parameter}\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentSensor(sensor)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsSensorUpdateModelOpen(true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=' action-btn'\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetCurrentSensor(sensor)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsDeleteModelOpen(true)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t\t\t\tclassName='ml-xs action-btn'\r\n\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t{isSensorUpdateModelOpen && (\r\n\t\t\t\t\t\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{isCreateSensorModelOpen && (\r\n\t\t\t\t\t 0\r\n\t\t\t\t\t\t\t\t? Math.max(...sensors.map((sensor: any) => sensor.sensorID)) + 1\r\n\t\t\t\t\t\t\t\t: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tunits={units}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t{isDeleteModelOpen && (\r\n\t\t\t\t\t deleteSensor(currentSensor)}\r\n\t\t\t\t\t/>\r\n\t\t\t\t)}\r\n\t\t\t
\r\n\t\t
\r\n\t)\r\n}\r\nexport default Sensors\r\n","import React, { useEffect, useState } from 'react'\r\nimport './Dashboard.css'\r\nimport firebase from '../../Firebase/firebase'\r\n\r\nimport Logo from '../../Images/logo.svg'\r\nimport Device from '../../Images/models.svg'\r\nimport events from '../../Images/events.svg'\r\nimport reports from '../../Images/reports.svg'\r\n\r\nimport Models from '../Models/Models'\r\nimport Units from '../Units/Units'\r\nimport Sensors from '../Sensors/Sensors'\r\nimport { useHistory } from 'react-router-dom'\r\n\r\nconst Dashboard = () => {\r\n\tconst [units, setUnits]: any = useState([])\r\n\tconst [models, setModels]: any = useState([])\r\n\tconst [sensors, setSensors]: any = useState([])\r\n\tconst unitsCollection = firebase.firestore().collection('Units')\r\n\tconst modelsCollection = firebase.firestore().collection('Models')\r\n\tconst sensorsCollection = firebase.firestore().collection('Sensors')\r\n\r\n\tuseEffect(() => {\r\n\t\t;(async () => {\r\n\t\t\tawait firebase.auth().onAuthStateChanged(async (user: any) => {\r\n\t\t\t\tif (user) {\r\n\t\t\t\t\tconsole.log('Login success')\r\n\t\t\t\t\tawait unitsCollection.onSnapshot((querySnapshot) => {\r\n\t\t\t\t\t\tconst localUnits: any = []\r\n\t\t\t\t\t\tquerySnapshot.forEach((doc: any) => {\r\n\t\t\t\t\t\t\tlocalUnits.push({ ...doc.data(), uid: doc.id })\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tsetUnits(localUnits)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tawait modelsCollection.onSnapshot((querySnapshot) => {\r\n\t\t\t\t\t\tconst localModals: any = []\r\n\t\t\t\t\t\tquerySnapshot.forEach((doc: any) => {\r\n\t\t\t\t\t\t\tlocalModals.push({ ...doc.data(), uid: doc.id })\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tsetModels(localModals)\r\n\t\t\t\t\t})\r\n\t\t\t\t\tawait sensorsCollection.onSnapshot((querySnapshot) => {\r\n\t\t\t\t\t\tconst localSensors: any = []\r\n\t\t\t\t\t\tquerySnapshot.forEach((doc: any) => {\r\n\t\t\t\t\t\t\tlocalSensors.push({ ...doc.data(), uid: doc.id })\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\tsetSensors(localSensors)\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\thistory.push('/login')\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})()\r\n\t}, [])\r\n\r\n\tconst history = useHistory()\r\n\tconst logOut = () => {\r\n\t\tfirebase.auth().signOut()\r\n\t\thistory.push('/login')\r\n\t}\r\n\r\n\tconst [page, setPage] = useState(1)\r\n\r\n\tconst menuOptions = [\r\n\t\t{\r\n\t\t\ttitle: 'Models',\r\n\t\t\ticon: Device,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: 'Units',\r\n\t\t\ticon: events,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: 'Sensors',\r\n\t\t\ticon: reports,\r\n\t\t},\r\n\t]\r\n\treturn (\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t{/* {{!-- Dashboard MenuBar --}} */}\r\n\t\t\t\t
\r\n\t\t\t\t\t{/* {{!-- Main Section --}} */}\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{page === 1 && }\r\n\t\t\t\t\t\t\t{page === 2 && }\r\n\t\t\t\t\t\t\t{page === 3 && }\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default Dashboard\r\n","import React, { useEffect } from 'react'\r\nimport { AuthProvider } from '../../Functions/Auth/Auth'\r\nimport Login from '../Login/Login'\r\nimport Dashboard from '../Dashboard/Dashboard'\r\nimport './App.css'\r\nimport {\r\n\tBrowserRouter as Router,\r\n\tSwitch,\r\n\tRoute,\r\n\tRedirect,\r\n} from 'react-router-dom'\r\nconst App = () => {\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t)\r\n}\r\n\r\nexport default App\r\n\r\n//DOCS: https://firebase.google.com/docs/firestore/\r\n\r\n// {/* */}\r\n// // \r\n// {/* {get ? : } */}\r\n// {/* */}\r\n","import React from 'react'\r\nimport ReactDOM from 'react-dom'\r\nimport './index.css'\r\nimport './foundation.min.css'\r\nimport App from './Componets/App/App'\r\nReactDOM.render(\r\n\t\r\n\t\t\r\n\t,\r\n\tdocument.getElementById('root')\r\n)\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\n","module.exports = __webpack_public_path__ + \"static/media/logo.c3ea7e9a.svg\";"],"sourceRoot":""}