Device last pushed data{' '}
{isDateInPast(recentFeed.created_at) ? (
<>
elapseLimit ? classes.error : classes.root}>
+ className={elapsedDurationSeconds > elapseLimit ? classes.error : classes.root}
+ >
{getFirstNDurations(elapsedDurationMapper, 2)}
{' '}
ago.
@@ -230,7 +234,8 @@ const DeviceRecentFeedView = ({ recentFeed, runReport }) => {
alignItems: 'center',
margin: '10px 30px',
color: elapsedDurationSeconds > elapseLimit ? 'grey' : 'inherit'
- }}>
+ }}
+ >
{feedKeys.map((key, index) => (
{isValidSensorValue(
@@ -270,7 +275,8 @@ const DeviceRecentFeedView = ({ recentFeed, runReport }) => {
margin: '10px 30px',
height: '70%',
color: 'red'
- }}>
+ }}
+ >
Device test has failed, please cross check the
functionality of device
@@ -284,13 +290,83 @@ DeviceRecentFeedView.propTypes = {
runReport: PropTypes.object.isRequired
};
-export default function DeviceDeployStatus({ deviceData, siteOptions }) {
+export default function DeviceDeployStatus({ deviceData, handleRecall, siteOptions }) {
const dispatch = useDispatch();
const [height, setHeight] = useState((deviceData.height && String(deviceData.height)) || '');
const [power, setPower] = useState(capitalize(deviceData.powerType || ''));
const [installationType, setInstallationType] = useState(deviceData.mountType || '');
const [deploymentDate, setDeploymentDate] = useState(getDateString(deviceData.deployment_date));
const [primaryChecked, setPrimaryChecked] = useState(deviceData.isPrimaryInLocation || false);
+ const [isLoading, setIsLoading] = useState(false);
+ const RecallButton = ({ handleRecall, recallLoading }) => {
+ const [selectedRecallType, setSelectedRecallType] = useState('');
+ const [selectVisible, setSelectVisible] = useState(false);
+
+ const options = [
+ { value: 'errors', label: 'Errors' },
+ { value: 'disconnected', label: 'Disconnected' },
+ ];
+
+ const handleRecallChange = (selectedOption) => {
+ setSelectedRecallType(selectedOption);
+ };
+
+ const handleRecallClick = async () => {
+ setSelectVisible(true);
+ if (selectedRecallType) {
+ setSelectVisible(false);
+ setrecallLoading(true);
+ await handleRecall(selectedRecallType);
+ window.location.reload();
+ setrecallLoading(false);
+ setSelectedRecallType('');
+ }
+ };
+
+ return (
+
+
+ {selectVisible && ( // Only render the select when selectVisible is true
+
+ )}
+
+
+
+
+
+
+
+ );
+ };
+
+
+
const checkColocation = () => {
if (typeof deviceData.isPrimaryInLocation === 'boolean') {
@@ -306,7 +382,6 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
error: false
});
const [deviceTestLoading, setDeviceTestLoading] = useState(false);
- console.log('Device', deviceData.site);
const [site, setSite] = useState(filterSite(siteOptions, deviceData.site && deviceData.site._id));
const [deployLoading, setDeployLoading] = useState(false);
const [deployed, setDeployed] = useState(false);
@@ -382,6 +457,14 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
return;
}
+ const storedData = localStorage.getItem('currentUser');
+ if (!storedData) {
+ console.error('Error: No user data found in local storage');
+ return;
+ }
+
+ const parsedData = JSON.parse(storedData);
+
const deployData = {
mountType: installationType,
height: height,
@@ -389,17 +472,16 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
date: new Date(deploymentDate).toISOString(),
isPrimaryInLocation: primaryChecked,
isUsedForCollocation: collocationChecked,
- site_id: site.value
+ site_id: site.value,
+ userName: parsedData.email,
+ email: parsedData.email,
+ firstName: parsedData.firstName,
+ lastName: parsedData.lastName
};
await deployDeviceApi(deviceData.name, deployData)
.then((responseData) => {
const activeNetwork = JSON.parse(localStorage.getItem('activeNetwork'));
- if (!isEmpty(activeNetwork)) {
- dispatch(loadDevicesData(activeNetwork.net_name));
- dispatch(loadSitesData(activeNetwork.net_name));
- }
-
dispatch(
updateMainAlert({
message: responseData.message,
@@ -409,6 +491,10 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
);
setDeployed(true);
setInputErrors(false);
+
+ setTimeout(() => {
+ window.location.reload();
+ }, 2000);
})
.catch((err) => {
const errors = (err.response && err.response.data && err.response.data.errors) || {};
@@ -422,20 +508,31 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
);
});
setDeployLoading(false);
+ setIsLoading(false);
};
- const handleRecallSubmit = async () => {
- setRecallOpen(!recallOpen);
+
+ const handleRecallSubmit = async (selectedOption) => {
+ setRecallOpen(false);
setrecallLoading(true);
+ const storedData = localStorage.getItem('currentUser');
+ if (!storedData) {
+ console.error('Error: No user data found in local storage');
+ return;
+ }
- await recallDeviceApi(deviceData.name)
- .then((responseData) => {
- const activeNetwork = JSON.parse(localStorage.getItem('activeNetwork'));
- if (!isEmpty(activeNetwork)) {
- dispatch(loadDevicesData(activeNetwork.net_name));
- dispatch(loadSitesData(activeNetwork.net_name));
- }
+ const parsedData = JSON.parse(storedData);
+
+ const responseData = {
+ recallType: selectedOption.value,
+ userName: parsedData.email,
+ email: parsedData.email,
+ firstName: parsedData.firstName,
+ lastName: parsedData.lastName
+ };
+ await recallDeviceApi(deviceData.name, responseData)
+ .then((responseData) => {
dispatch(
updateMainAlert({
message: responseData.message,
@@ -443,6 +540,9 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
severity: 'success'
})
);
+ setTimeout(() => {
+ window.location.reload();
+ }, 2000);
})
.catch((err) => {
dispatch(
@@ -471,25 +571,28 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
style={{
display: 'flex',
flexWrap: 'wrap',
- maxWidth: '1500px',
+ // maxWidth: '2500px',
padding: '40px 0px 10px 0px',
margin: '0 auto',
alignItems: 'baseline',
justifyContent: 'flex-end'
- }}>
+ }}
+ >
+ }}
+ >
+ }}
+ >
+ }}
+ >
Deploy status
{' '}
+ }}
+ >
{deviceStatus}
-
-
-
-
-
+
+
- setRecallOpen(!recallOpen)}
- handleRecall={handleRecallSubmit}
- />
-
+ }}
+ >
@@ -561,7 +649,8 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
color: 'red',
textAlign: 'left',
fontSize: '0.7rem'
- }}>
+ }}
+ >
{errors.site_id}
)}
@@ -604,7 +693,8 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
native: true,
style: { width: '100%', height: '50px' }
}}
- variant="outlined">
+ variant="outlined"
+ >
@@ -632,7 +722,8 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
native: true,
style: { width: '100%', height: '50px' }
}}
- fullWidth>
+ fullWidth
+ >
@@ -699,7 +790,8 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
color="primary"
disabled={deviceTestLoading}
onClick={runDeviceTest}
- style={{ marginLeft: '10px 10px' }}>
+ style={{ marginLeft: '10px 10px' }}
+ >
Run device test
@@ -710,7 +802,8 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
color="primary"
disabled={deviceTestLoading}
onClick={runDeviceTest}
- style={{ marginLeft: '10px 10px' }}>
+ style={{ marginLeft: '10px 10px' }}
+ >
Run device test
@@ -729,7 +822,8 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
justifyContent: 'center',
height: '100%',
color: 'red'
- }}>
+ }}
+ >
Could not fetch device feeds
)}
@@ -751,14 +845,16 @@ export default function DeviceDeployStatus({ deviceData, siteOptions }) {
placement="top"
disableFocusListener={runReport.successfulTestRun && !deviceData.isActive}
disableHoverListener={runReport.successfulTestRun && !deviceData.isActive}
- disableTouchListener={runReport.successfulTestRun && !deviceData.isActive}>
+ disableTouchListener={runReport.successfulTestRun && !deviceData.isActive}
+ >
diff --git a/netmanager/src/views/components/DataDisplay/DeviceView/DeviceLogs.js b/netmanager/src/views/components/DataDisplay/DeviceView/DeviceLogs.js
index 2b2b86735a..a28c3fc787 100644
--- a/netmanager/src/views/components/DataDisplay/DeviceView/DeviceLogs.js
+++ b/netmanager/src/views/components/DataDisplay/DeviceView/DeviceLogs.js
@@ -246,10 +246,23 @@ const AddLogForm = ({ deviceName, deviceLocation, toggleShow, loading, setLoadin
evt.preventDefault();
const extracted_tags = [];
tags && tags.map((tag) => extracted_tags.push(tag.value));
+ const storedData = localStorage.getItem('currentUser');
+ if (!storedData) {
+ console.error("Error: No user data found in local storage");
+ return;
+ }
+
+ const parsedData = JSON.parse(storedData);
+
+
const logData = {
date: selectedDate.toISOString(),
tags: extracted_tags,
- description: description
+ description: description,
+ userName: parsedData.email,
+ email: parsedData.email,
+ firstName: parsedData.firstName,
+ lastName: parsedData.lastName,
};
setLoading(true);