refactor: improved dashboard & restore settings

This commit is contained in:
Yurii
2026-05-19 21:39:29 +03:00
parent ffcacb3d48
commit 07650b4878
2 changed files with 70 additions and 7 deletions
+31 -3
View File
@@ -351,9 +351,14 @@
value = -(step); value = -(step);
} }
newSettings[purpose].target = parseFloat(constrain(newSettings[purpose].target + value, minTemp, maxTemp).toFixed(2)); const newValue = parseFloat(constrain(newSettings[purpose].target + value, minTemp, maxTemp).toFixed(2));
if (newSettings[purpose].target != newValue) {
newSettings[purpose].target = newValue;
modifiedTime = Date.now(); modifiedTime = Date.now();
setValue('.targetTemp', newSettings[purpose].target, tContainer);
setValue('.targetTemp', newValue, tContainer);
tContainer.querySelector('.thermostat-header').setAttribute("aria-busy", "true");
}
} }
}); });
} }
@@ -383,27 +388,46 @@
value = -(bigStep); value = -(bigStep);
} }
newSettings[purpose].target = parseFloat(constrain(newSettings[purpose].target + value, minTemp, maxTemp).toFixed(2)); const newValue = parseFloat(constrain(newSettings[purpose].target + value, minTemp, maxTemp).toFixed(2));
if (newSettings[purpose].target != newValue) {
newSettings[purpose].target = newValue;
modifiedTime = Date.now(); modifiedTime = Date.now();
setValue('.targetTemp', newSettings[purpose].target, tContainer); setValue('.targetTemp', newSettings[purpose].target, tContainer);
tContainer.querySelector('.thermostat-header').setAttribute("aria-busy", "true");
}
}, 500); }, 500);
}); });
}); });
document.querySelector('#tHeatEnabled').addEventListener('change', (event) => { document.querySelector('#tHeatEnabled').addEventListener('change', (event) => {
if (newSettings.heating.enabled == event.currentTarget.checked) {
return;
}
modifiedTime = Date.now(); modifiedTime = Date.now();
newSettings.heating.enabled = event.currentTarget.checked; newSettings.heating.enabled = event.currentTarget.checked;
document.querySelector('.tHeat .thermostat-header').setAttribute("aria-busy", "true");
}); });
document.querySelector('#tHeatTurbo').addEventListener('change', (event) => { document.querySelector('#tHeatTurbo').addEventListener('change', (event) => {
if (newSettings.heating.turbo == event.currentTarget.checked) {
return;
}
modifiedTime = Date.now(); modifiedTime = Date.now();
newSettings.heating.turbo = event.currentTarget.checked; newSettings.heating.turbo = event.currentTarget.checked;
document.querySelector('.tHeat .thermostat-header').setAttribute("aria-busy", "true");
}); });
document.querySelector('#tDhwEnabled').addEventListener('change', (event) => { document.querySelector('#tDhwEnabled').addEventListener('change', (event) => {
if (newSettings.dhw.enabled == event.currentTarget.checked) {
return;
}
modifiedTime = Date.now(); modifiedTime = Date.now();
newSettings.dhw.enabled = event.currentTarget.checked; newSettings.dhw.enabled = event.currentTarget.checked;
document.querySelector('.tDhw .thermostat-header').setAttribute("aria-busy", "true");
}); });
document.querySelector('.notify-fault .reset').addEventListener('click', async (event) => { document.querySelector('.notify-fault .reset').addEventListener('click', async (event) => {
@@ -531,6 +555,10 @@
setValue('.pressureUnit', pressureUnit(unitSystem)); setValue('.pressureUnit', pressureUnit(unitSystem));
setValue('.volumeUnit', volumeUnit(unitSystem)); setValue('.volumeUnit', volumeUnit(unitSystem));
document.querySelectorAll('.thermostat-header').forEach((item) => {
item.setAttribute("aria-busy", "false");
});
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} }
+36 -1
View File
@@ -318,7 +318,7 @@ const setupRestoreBackupForm = (formSelector) => {
console.log("Backup: ", data); console.log("Backup: ", data);
if (data.settings != undefined) { if (data.settings != undefined) {
for (var key in data.settings) { for (const key in data.settings) {
let response = await fetch(url, { let response = await fetch(url, {
method: "POST", method: "POST",
cache: "no-cache", cache: "no-cache",
@@ -338,6 +338,41 @@ const setupRestoreBackupForm = (formSelector) => {
return; return;
} }
} }
let finalPayload = {};
if (data.settings.emergency?.target !== undefined) {
finalPayload.emergency ??= {};
finalPayload.emergency.target = data.settings.emergency.target;
}
if (data.settings.heating?.target !== undefined) {
finalPayload.heating ??= {};
finalPayload.heating.target = data.settings.heating.target;
}
if (data.settings.dhw?.target !== undefined) {
finalPayload.dhw ??= {};
finalPayload.dhw.target = data.settings.dhw.target;
}
if (Object.keys(finalPayload).length) {
let response = await fetch(url, {
method: "POST",
cache: "no-cache",
credentials: "include",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
"settings": finalPayload
})
});
if (!response.ok) {
onFailed();
return;
}
}
} }
if (data.sensors != undefined) { if (data.sensors != undefined) {