import { Modal } from "@mantine/core"; import { Button, FormControl, IconButton, Input, InputLabel, MenuItem, Select, Switch, TextField, Tooltip, } from "@mui/material"; import { IconCirclePlus } from "@tabler/icons-react"; import axios from "axios"; import React, { useEffect, useReducer, useState } from "react"; import { toast } from "react-toastify"; import { addLineForStation, editLine, editStationInfo, enableLine, getAllLineOfStation, getAllStation, } from "../../api/DeviceAPI"; import "./NetworkSetting.css"; const NetworkSetting = () => { const [isloading, setIsLoading] = useReducer((x) => x + 1, 0); const [openedEdit, setOpenedEdit] = useState(false); const [editStation, setEditStation] = useState(true); const [allStation, setAllStation] = useState([]); const [allLine, setAllLine] = useState([]); const [station, setStation] = useState(0); const [infoStation, setInfoStation] = useState({}); const [line, setLine] = useState({}); const [selectStation, setSelectStation] = useState(2); const [infoLine, setInfoLine] = useState({ line: "", port: "", clear: "", ip: "", }); const getAllSta = async () => { try { const res = await axios.post(getAllStation); setAllStation( res.data.pData.sort(function (a, b) { if (a.sta_name < b.sta_name) { return -1; } if (a.sta_name > b.sta_name) { return 1; } return 0; }) ); setInfoStation(res.data.pData[station]); } catch (error) { console.log(error); } }; const getAllLineOfSta = async (id) => { try { const res = await axios.post(getAllLineOfStation, { id: id }); setAllLine(res.data.pData); } catch (error) { console.log(error); } }; const addLine = async (id) => { try { if(infoLine.line===""||infoLine.port===""||infoLine.clear===""||infoLine.ip===""){ toast.error("Error. Please check the infomation of the line") }else{ const res = await axios.post(addLineForStation, { number: infoLine.line, port: infoLine.port, clear: infoLine.clear, ip: infoLine.ip, station: selectStation, }); setAllLine(res.data); setIsLoading(); } } catch (error) { console.log(error); } }; const editInfoLine = async () => { try { const res = await axios.post(editLine, { id_line: line.id_line, line_number: line.line_number, line_port: line.line_port, line_clear: line.line_clear, line_ip: line.line_ip, }); setOpenedEdit(false); setIsLoading(); } catch (error) { console.log(error); } }; const editInfoStation = async () => { try { const res = await axios.post(editStationInfo, { id: infoStation.id_station, ip: infoStation.sta_ip, tftp: infoStation.sta_tftp, network: infoStation.sta_network, netmask: infoStation.sta_netmask, gateway: infoStation.sta_gateway, gateway_line: infoStation.gateway_line, netmask_line: infoStation.netmask_line, APC1: infoStation.sta_APC1, APC2: infoStation.sta_APC2, portTelnet: infoStation.sta_port_telnet, APC1_port: infoStation.APC1_port, APC2_port: infoStation.APC2_port, }); if (res.data.pCode === 1) { setEditStation(true); toast.success("Edit station success!"); setIsLoading(); } else { toast.error("Edit station fail"); } } catch (error) { console.log(error); } }; useEffect(() => { getAllSta(); if (selectStation !== undefined) { getAllLineOfSta(selectStation); } }, [isloading]); return (