From c0c8b8c5e612c9ac530770e8f7fc2c4e3c214232 Mon Sep 17 00:00:00 2001 From: Belinda Marion Kobusingye <46527380+Codebmk@users.noreply.github.com> Date: Tue, 4 Feb 2025 08:29:26 +0300 Subject: [PATCH] added serial number field, fix network bug --- .../views/components/DataDisplay/Devices.js | 113 ++++++++++++++---- netmanager/src/views/layouts/Main.js | 7 +- 2 files changed, 93 insertions(+), 27 deletions(-) diff --git a/netmanager/src/views/components/DataDisplay/Devices.js b/netmanager/src/views/components/DataDisplay/Devices.js index 104dd8f0e2..ddb02775aa 100644 --- a/netmanager/src/views/components/DataDisplay/Devices.js +++ b/netmanager/src/views/components/DataDisplay/Devices.js @@ -277,15 +277,17 @@ const CreateDevice = ({ open, setOpen, network }) => { const newDeviceInitState = { long_name: '', category: CATEGORIES[0].value, - network: network, - description: '' + network: network.net_name, + description: '', + serial_number: '' }; const initialErrors = { long_name: '', category: '', network: '', - description: '' + description: '', + serial_number: '' }; const [newDevice, setNewDevice] = useState(newDeviceInitState); @@ -303,6 +305,13 @@ const CreateDevice = ({ open, setOpen, network }) => { long_name: newValue.trim() === '' ? 'Device name is required' : '' }); } + + if (key === 'serial_number') { + setErrors({ + ...errors, + serial_number: newValue.trim() === '' ? 'Serial number is required' : '' + }); + } }; const handleDropdownChange = (event, { name }) => { @@ -322,14 +331,19 @@ const CreateDevice = ({ open, setOpen, network }) => { setNewDevice({ long_name: '', category: CATEGORIES[0].value, - network: network, - description: '' + network: network.net_name, + description: '', + serial_number: '' }); - setErrors({ long_name: '', category: '', network: '', description: '' }); + setErrors({ long_name: '', category: '', network: '', description: '', serial_number: '' }); }; const isFormValid = () => { - return newDevice.long_name.trim() !== '' && newDevice.category !== ''; + return ( + newDevice.long_name.trim() !== '' && + newDevice.category !== '' && + newDevice.serial_number.trim() !== '' + ); }; const handleRegisterSubmit = (e) => { @@ -350,16 +364,26 @@ const CreateDevice = ({ open, setOpen, network }) => { return; } + // Create a copy of newDevice + const deviceDataToSend = { ...newDevice }; + + // Remove fields with empty values + Object.keys(deviceDataToSend).forEach((key) => { + if (!deviceDataToSend[key]) { + delete deviceDataToSend[key]; + } + }); + createAxiosInstance() - .post(REGISTER_DEVICE_URI, newDevice, { + .post(REGISTER_DEVICE_URI, deviceDataToSend, { headers: { 'Content-Type': 'application/json' } }) .then((res) => res.data) .then((resData) => { handleRegisterClose(); dispatch(loadStatus(false)); - if (!isEmpty(network)) { - dispatch(loadDevicesData(network)); + if (!isEmpty(network.net_name)) { + dispatch(loadDevicesData(network.net_name)); } dispatch( updateMainAlert({ @@ -440,6 +464,18 @@ const CreateDevice = ({ open, setOpen, network }) => { required /> + + { device_number: '', writeKey: '', readKey: '', - description: '' + description: '', + serial_number: '' }; const initialErrors = { @@ -510,7 +547,8 @@ const SoftCreateDevice = ({ open, setOpen, network }) => { device_number: '', writeKey: '', readKey: '', - description: '' + description: '', + serial_number: '' }; const [newDevice, setNewDevice] = useState(newDeviceInitState); @@ -529,6 +567,13 @@ const SoftCreateDevice = ({ open, setOpen, network }) => { long_name: newValue.trim() === '' ? 'Device name is required' : '' }); } + + if (key === 'serial_number') { + setErrors({ + ...errors, + serial_number: newValue.trim() === '' ? 'Serial number is required' : '' + }); + } }; const handleDropdownChange = (event, { name }) => { @@ -553,7 +598,8 @@ const SoftCreateDevice = ({ open, setOpen, network }) => { device_number: '', writeKey: '', readKey: '', - description: '' + description: '', + serial_number: '' }); setErrors({ long_name: '', @@ -562,12 +608,17 @@ const SoftCreateDevice = ({ open, setOpen, network }) => { device_number: '', writeKey: '', readKey: '', - description: '' + description: '', + serial_number: '' }); }; const isFormValid = () => { - return newDevice.long_name.trim() !== '' && newDevice.category !== ''; + return ( + newDevice.long_name.trim() !== '' && + newDevice.category !== '' && + newDevice.serial_number.trim() !== '' + ); }; const handleRegisterSubmit = async (e) => { @@ -590,16 +641,12 @@ const SoftCreateDevice = ({ open, setOpen, network }) => { // Create a copy of newDevice const deviceDataToSend = { ...newDevice }; - // Remove device_number, writeKey, and readKey if they're empty - if (!deviceDataToSend.device_number) { - delete deviceDataToSend.device_number; - } - if (!deviceDataToSend.writeKey) { - delete deviceDataToSend.writeKey; - } - if (!deviceDataToSend.readKey) { - delete deviceDataToSend.readKey; - } + // Remove fields with empty values + Object.keys(deviceDataToSend).forEach((key) => { + if (!deviceDataToSend[key]) { + delete deviceDataToSend[key]; + } + }); const resData = await softCreateDeviceApi(deviceDataToSend, { headers: { 'Content-Type': 'application/json' } @@ -612,7 +659,7 @@ const SoftCreateDevice = ({ open, setOpen, network }) => { dispatch( updateMainAlert({ message: `${resData.message}. ${ - newDevice.network !== network + newDevice.network !== network.net_name ? `Switch to the ${newDevice.network} organisation to see the new device.` : '' }`, @@ -671,6 +718,7 @@ const SoftCreateDevice = ({ open, setOpen, network }) => { error={!!errors.long_name} helperText={errors.long_name} /> +