mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
fix customizations Warn user in WebUI of unsaved changes #911
This commit is contained in:
@@ -148,14 +148,14 @@ const SettingsCustomization: FC = () => {
|
|||||||
}
|
}
|
||||||
}, [LL]);
|
}, [LL]);
|
||||||
|
|
||||||
const setInitialMask = (data: DeviceEntity[]) => {
|
const setOriginalSettings = (data: DeviceEntity[]) => {
|
||||||
setDeviceEntities(data.map((de) => ({ ...de, o_m: de.m, o_cn: de.cn, o_mi: de.mi, o_ma: de.ma })));
|
setDeviceEntities(data.map((de) => ({ ...de, o_m: de.m, o_cn: de.cn, o_mi: de.mi, o_ma: de.ma })));
|
||||||
};
|
};
|
||||||
|
|
||||||
const fetchDeviceEntities = async (unique_id: number) => {
|
const fetchDeviceEntities = async (unique_id: number) => {
|
||||||
try {
|
try {
|
||||||
const new_deviceEntities = (await EMSESP.readDeviceEntities({ id: unique_id })).data;
|
const new_deviceEntities = (await EMSESP.readDeviceEntities({ id: unique_id })).data;
|
||||||
setInitialMask(new_deviceEntities);
|
setOriginalSettings(new_deviceEntities);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setErrorMessage(extractErrorMessage(error, LL.PROBLEM_LOADING()));
|
setErrorMessage(extractErrorMessage(error, LL.PROBLEM_LOADING()));
|
||||||
}
|
}
|
||||||
@@ -249,13 +249,17 @@ const SettingsCustomization: FC = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function hasEntityChanged(de: DeviceEntity) {
|
||||||
|
return (de?.cn || '') !== (de?.o_cn || '') || de.m !== de.o_m || de.ma !== de.o_ma || de.mi !== de.o_mi;
|
||||||
|
}
|
||||||
|
|
||||||
const getChanges = () => {
|
const getChanges = () => {
|
||||||
if (!deviceEntities || selectedDevice === -1) {
|
if (!deviceEntities || selectedDevice === -1) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return deviceEntities
|
return deviceEntities
|
||||||
.filter((de) => de.m !== de.o_m || de.cn !== de.o_cn || de.ma !== de.o_ma || de.mi !== de.o_mi)
|
.filter((de) => hasEntityChanged(de))
|
||||||
.map(
|
.map(
|
||||||
(new_de) =>
|
(new_de) =>
|
||||||
new_de.m.toString(16).padStart(2, '0') +
|
new_de.m.toString(16).padStart(2, '0') +
|
||||||
@@ -291,7 +295,7 @@ const SettingsCustomization: FC = () => {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
enqueueSnackbar(extractErrorMessage(error, LL.PROBLEM_UPDATING()), { variant: 'error' });
|
enqueueSnackbar(extractErrorMessage(error, LL.PROBLEM_UPDATING()), { variant: 'error' });
|
||||||
}
|
}
|
||||||
setInitialMask(deviceEntities);
|
setOriginalSettings(deviceEntities);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -354,7 +354,7 @@ settings = {
|
|||||||
bool_format: 1,
|
bool_format: 1,
|
||||||
bool_dashboard: 1,
|
bool_dashboard: 1,
|
||||||
enum_format: 1,
|
enum_format: 1,
|
||||||
fahrenheit: false
|
fahrenheit: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
const emsesp_devices = {
|
const emsesp_devices = {
|
||||||
@@ -969,6 +969,7 @@ function updateMask(entity, de, dd) {
|
|||||||
|
|
||||||
// see if the custom name has changed
|
// see if the custom name has changed
|
||||||
const old_custom_name = dd.data[dd_objIndex].cn
|
const old_custom_name = dd.data[dd_objIndex].cn
|
||||||
|
console.log('comparing old ' + old_custom_name + ' with new ' + new_custom_name)
|
||||||
if (old_custom_name !== new_custom_name) {
|
if (old_custom_name !== new_custom_name) {
|
||||||
changed = true
|
changed = true
|
||||||
new_fullname = new_custom_name
|
new_fullname = new_custom_name
|
||||||
@@ -984,6 +985,7 @@ function updateMask(entity, de, dd) {
|
|||||||
de[de_objIndex].m = current_mask
|
de[de_objIndex].m = current_mask
|
||||||
de[de_objIndex].cn = new_fullname
|
de[de_objIndex].cn = new_fullname
|
||||||
dd.data[dd_objIndex].id = current_mask.toString(16).padStart(2, '0') + new_fullname
|
dd.data[dd_objIndex].id = current_mask.toString(16).padStart(2, '0') + new_fullname
|
||||||
|
dd.data[dd_objIndex].cn = new_fullname
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('new dd:')
|
console.log('new dd:')
|
||||||
|
|||||||
Reference in New Issue
Block a user