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}
/>
+