v0.15.16
This commit is contained in:
@@ -49,20 +49,27 @@ function renderHouseClimate() {
|
||||
const powerOn = $('#housePowerOn'), powerOff = $('#housePowerOff');
|
||||
const emergencyButton = $('#houseEmergencyStop');
|
||||
const emergencyActive = !!(app.house?.emergency_stop_enabled || app.controlPlan?.emergency_stop_active);
|
||||
const hasAutomaticControl = (app.zones || []).some(zone => zone.enabled)
|
||||
|| (app.schedules || []).some(item => item.enabled)
|
||||
|| (app.automations || []).some(item => item.enabled);
|
||||
const planZones = app.controlPlan?.zones || [];
|
||||
const unitsWorking = (app.devices || []).some(device => device.power === true);
|
||||
const automationTriggered = planZones.some(zone => zone.desired_power === true || zone.demand === true);
|
||||
const hasAutomaticControl = (app.schedules || []).some(item => item.enabled)
|
||||
|| (app.automations || []).some(item => item.enabled)
|
||||
|| (app.flows || []).some(item => item.enabled && !item.draft)
|
||||
|| planZones.some(zone => zone.local_thermostat_power === true || !!zone.current_schedule_id || zone.desired_power === true);
|
||||
const emergencyVisible = emergencyActive || unitsWorking || hasAutomaticControl;
|
||||
const emergencyIdle = !emergencyActive && !unitsWorking && !automationTriggered && hasAutomaticControl;
|
||||
|
||||
if (powerOn) { powerOn.classList.remove('active'); powerOn.removeAttribute('aria-pressed'); }
|
||||
if (powerOff) { powerOff.classList.remove('active'); powerOff.removeAttribute('aria-pressed'); }
|
||||
if (emergencyButton) {
|
||||
emergencyButton.hidden = !emergencyActive && !hasAutomaticControl;
|
||||
emergencyButton.hidden = !emergencyVisible;
|
||||
emergencyButton.dataset.value = emergencyActive ? 'false' : 'true';
|
||||
emergencyButton.classList.toggle('resume', emergencyActive);
|
||||
emergencyButton.classList.toggle('active', emergencyActive);
|
||||
emergencyButton.classList.toggle('idle', emergencyIdle);
|
||||
emergencyButton.setAttribute('aria-pressed', String(emergencyActive));
|
||||
emergencyButton.textContent = tr(emergencyActive ? 'house.emergencyResume' : 'house.emergencyStop');
|
||||
emergencyButton.title = tr(emergencyActive ? 'house.emergencyResumeHint' : 'house.emergencyStopHint');
|
||||
emergencyButton.title = tr(emergencyActive ? 'house.emergencyResumeHint' : emergencyIdle ? 'house.emergencyStopIdleHint' : 'house.emergencyStopHint');
|
||||
}
|
||||
node.innerHTML = `<div class="house-climate-head"><div><span class="eyebrow">${esc(tr('house.seasonMode'))}</span><h3>${esc(tr('house.smartThermostat'))}</h3><p>${esc(tr('house.setpointStrategy'))}</p></div><button type="button" class="outside-pill" data-action="open-outdoor-history" title="${esc(tr('house.outdoorHistoryOpen'))}" aria-label="${esc(tr('house.outdoorHistoryOpen'))}"><small>${esc(tr('house.outdoor'))}</small><strong>${esc(outdoor)}</strong></button></div>
|
||||
<div class="house-mode-row">
|
||||
@@ -221,6 +228,7 @@ function applyControlPlan(plan, revision = null) {
|
||||
app.controlPlan = plan;
|
||||
if (Number.isFinite(nextRevision)) app.controlPlanRevision = nextRevision;
|
||||
renderControlPlan();
|
||||
renderHouseClimate();
|
||||
renderSimulationPage();
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user