import React, { useEffect, useRef, useState } from "react"; import { Redirect } from "react-router"; import { Button, Checkbox, FormControlLabel, FormGroup, FormLabel, Radio, RadioGroup, TextField } from "@material-ui/core"; import useStyles from "../../useStyles"; import { useFleetContext, FleetProvider } from "../../Contexts/FleetContext"; import { useStatusContext } from "../../Contexts/StatusContext"; import { useUserContext } from "../../Contexts/UserContext"; import { logger } from "../../../services/monitoring"; const MainForm = () => { const { setMessage, setTitle, setSitePath } = useStatusContext(); const { addFleet, busy } = useFleetContext(); const { token: { idToken: { jwtToken: token }, }, } = useUserContext(); const classes = useStyles(); const [redirect, setRedirect] = useState(null); const nameEl = useRef(null); const [selectedLogLevel, setSelectedLogLevel] = useState("info"); const [canbusEnabled, setCANBusEnabled] = useState(true); const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false); const [maxMemBufferSize, setMaxMemBufferSize] = useState(0); const [maxDiskBufferSize, setMaxDiskBufferSize] = useState(0); useEffect(() => { setTitle("Add Fleet"); setSitePath([ { label: "Fleets", link: "/fleets", }, { label: "Add Fleet", }, ]); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const onLogLevelChange = (event) => { setSelectedLogLevel(event.target.value); } const onCANBusChange = (event) => { setCANBusEnabled(event.target.checked); } const onDataLoggerChange = (event) => { setDataLoggerEnabled(event.target.checked); } const onMaxMemBufferSizeChange = (event) => { setMaxMemBufferSize(event.target.value); } const onMaxDiskBufferSizeChange = (event) => { setMaxDiskBufferSize(event.target.value); } const onSubmit = async (event) => { try { event.preventDefault(); const formData = { name: nameEl.current.value, log_level: selectedLogLevel, canbus: { enabled: canbusEnabled, data_logger_enabled: canbusEnabled ? dataLoggerEnabled : false, max_mem_buffer_size: canbusEnabled ? parseInt(maxMemBufferSize) : 0, max_disk_buffer_size: canbusEnabled && dataLoggerEnabled ? parseInt(maxDiskBufferSize) : 0 } }; const result = await addFleet(formData, token); if (!result || result.error) return; setMessage(`Added ${result.name}`); setRedirect(`/fleets`); } catch (e) { setMessage(e.message); logger.warn(e.stack); } }; if (redirect && redirect.length > 0) { return ; } return (
Log Level } label="Trace" /> } label="Debug" /> } label="Info" /> } label="Warning" /> } label="Error" /> } label="Critical" /> CAN Bus } label="CAN Bus Enabled" /> } label="Data Logger Enabled" />
); }; const FleetAddForm = () => ( ); export default FleetAddForm;