only send back changed entities, put in limit at 50 #444

This commit is contained in:
Proddy
2022-04-04 21:44:51 +02:00
parent 077c20fd34
commit 4fc5932899

View File

@@ -42,11 +42,6 @@ import { DeviceShort, Devices, DeviceEntity } from './types';
const StyledTableCell = styled(TableCell)(({ theme }) => ({ const StyledTableCell = styled(TableCell)(({ theme }) => ({
[`&.${tableCellClasses.head}`]: { [`&.${tableCellClasses.head}`]: {
backgroundColor: '#607d8b' backgroundColor: '#607d8b'
// color: theme.palette.common.white,
// fontSize: 12
},
[`&.${tableCellClasses.body}`]: {
// fontSize: 12
} }
})); }));
@@ -70,9 +65,14 @@ const SettingsCustomization: FC = () => {
} }
}, []); }, []);
const setInitialMask = (data: DeviceEntity[]) => {
setDeviceEntities(data.map((de) => ({ ...de, om: de.m })));
};
const fetchDeviceEntities = async (unique_id: number) => { const fetchDeviceEntities = async (unique_id: number) => {
try { try {
setDeviceEntities((await EMSESP.readDeviceEntities({ id: unique_id })).data); const data = (await EMSESP.readDeviceEntities({ id: unique_id })).data;
setInitialMask(data);
} catch (error: any) { } catch (error: any) {
setErrorMessage(extractErrorMessage(error, 'Problem fetching device entities')); setErrorMessage(extractErrorMessage(error, 'Problem fetching device entities'));
} }
@@ -161,8 +161,17 @@ const SettingsCustomization: FC = () => {
const saveCustomization = async () => { const saveCustomization = async () => {
if (deviceEntities && selectedDevice) { if (deviceEntities && selectedDevice) {
const masked_entities = deviceEntities const masked_entities = deviceEntities
// .filter((de) => de.m) .filter((de) => de.m !== de.om)
.map((new_de) => new_de.m.toString(16).padStart(2, '0') + new_de.s); .map((new_de) => new_de.m.toString(16).padStart(2, '0') + new_de.s);
if (masked_entities.length > 50) {
enqueueSnackbar(
'Too many selected entities (' + masked_entities.length + '). Limit is 50. Please Save in batches',
{ variant: 'warning' }
);
return;
}
try { try {
const response = await EMSESP.writeMaskedEntities({ const response = await EMSESP.writeMaskedEntities({
id: selectedDevice, id: selectedDevice,
@@ -176,6 +185,7 @@ const SettingsCustomization: FC = () => {
} catch (error: any) { } catch (error: any) {
enqueueSnackbar(extractErrorMessage(error, 'Problem sending entity list'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem sending entity list'), { variant: 'error' });
} }
setInitialMask(deviceEntities);
} }
}; };