import React, { useEffect, useState } from "react"; import { Redirect, useParams } from "react-router"; import { Box, Button, Checkbox, FormControlLabel, FormGroup, FormLabel, Radio, RadioGroup, TextField, Accordion, AccordionSummary, AccordionDetails, Typography, } 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"; import { VehicleProvider } from "../../../../Contexts/VehicleContext"; import CarSelectionTable from "../../../../Controls/CarSelectionTable"; import SearchField from "../../../../Controls/SearchField"; const MainForm = () => { const { name } = useParams(); const { setMessage, setTitle, setSitePath } = useStatusContext(); const { addFleetVehicles, busy } = useFleetContext(); const { token: { idToken: { jwtToken: token }, }, } = useUserContext(); const classes = useStyles(); const [redirect, setRedirect] = useState(null); const [vins, setVins] = useState([]); const [search, setSearch] = useState(""); 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(() => { const title = "Add Vehicle"; setTitle(title); setSitePath([ { label: "Fleets", link: "/fleets", }, { label: `${name}`, link: `/fleet/${name}` }, { label: title } ]); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const handleSearch = (query) => { setVins([]); setSearch(query); }; const handleSelectAll = (cars) => { setVins(cars); }; const handleSelect = (event, key) => { try { let newVins; if (event.target.checked) { newVins = [...vins]; newVins.push(key); } else { newVins = vins.filter((vin) => vin !== key); } setVins(newVins); } catch (e) { logger.warn(e.stack); } }; 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) => { event.preventDefault(); try { const formData = { vins, 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 addFleetVehicles(name, formData, token); setMessage(`Added ${result.vins.join(", ")}`); setRedirect(`/fleet/${name}#vehicles`); } catch (e) { setMessage(e.message); logger.warn(e.stack); } }; if (redirect && redirect.length > 0) { return ; } return (
Additional Options 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 FleetAddVehicleForm = () => ( ); export default FleetAddVehicleForm;