v0.8.10
This commit is contained in:
+64
-32
@@ -16,6 +16,7 @@
|
||||
<div class="brand">
|
||||
<div class="brand-line"><strong>GREE Controller</strong><small id="connectionLabel" class="connection-dot connecting" role="status" aria-label="Connecting" title="Connecting"></small></div>
|
||||
</div>
|
||||
<div class="toolbar-runtime-status" id="toolbarRuntimeStatus" aria-live="polite">0/0</div>
|
||||
<div class="top-actions">
|
||||
<select class="toolbar-select" id="languageSelect" data-i18n-aria="controls.language" aria-label="Language">
|
||||
<option value="en">English</option>
|
||||
@@ -26,53 +27,70 @@
|
||||
<option value="dark" data-i18n="theme.dark">Dark</option>
|
||||
</select>
|
||||
<button class="icon-button" id="refreshButton" data-i18n-title="actions.refresh" data-i18n-aria="actions.refresh" title="Refresh" aria-label="Refresh">↻</button>
|
||||
<button class="primary compact" id="discoverButton" data-i18n="actions.discover">Discover</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="view active" data-view="dashboard">
|
||||
<div class="hero dashboard-summary-card">
|
||||
<div class="dashboard-summary-copy"><span class="eyebrow" data-i18n="dashboard.home">Home</span><h1 data-i18n="dashboard.title">Comfort under control</h1><p id="summaryText" data-i18n="dashboard.loading">Loading devices…</p></div>
|
||||
<div class="dashboard-summary-status"><div class="metrics" id="metrics"></div><div class="hero-temp" id="heroTemperature">--<small>°C</small></div></div>
|
||||
</div>
|
||||
<div class="panel dashboard-global-panel">
|
||||
<div class="dashboard-global-power">
|
||||
<div><span class="eyebrow" data-i18n="house.powerAllEyebrow">Global power</span><h3 data-i18n="house.powerAllTitle">All air conditioners</h3><p data-i18n="house.powerAllHint">Master power for thermostat zones. Turn all off also disables all groups; turn all on starts enabled zones only.</p></div>
|
||||
<div class="house-power-actions"><button id="housePowerOn" type="button" class="secondary" data-action="house-power" data-value="true" data-i18n="house.powerOnAll">Turn all on</button><button id="housePowerOff" type="button" class="secondary" data-action="house-power" data-value="false" data-i18n="house.powerOffAll">Turn all off</button></div>
|
||||
<nav class="dashboard-tabs" data-i18n-aria="dashboard.sections" aria-label="Dashboard sections">
|
||||
<button type="button" class="active" data-dashboard-tab="main" data-i18n="dashboard.tabMain">Main</button>
|
||||
<button type="button" data-dashboard-tab="thermostats" data-i18n="dashboard.tabThermostats">Thermostats</button>
|
||||
<button type="button" data-dashboard-tab="manual" data-i18n="dashboard.tabManual">Manual control</button>
|
||||
</nav>
|
||||
|
||||
<div class="dashboard-tab-panel active" data-dashboard-panel="main">
|
||||
<div class="hero dashboard-summary-card">
|
||||
<div class="dashboard-summary-copy"><span class="eyebrow" data-i18n="dashboard.home">Home</span><h1 data-i18n="dashboard.title">Comfort under control</h1><p id="summaryText" data-i18n="dashboard.loading">Loading devices…</p></div>
|
||||
<div class="dashboard-summary-status"><div class="metrics" id="metrics"></div><div class="hero-temp" id="heroTemperature">--<small>°C</small></div></div>
|
||||
</div>
|
||||
<div class="dashboard-global-divider"></div>
|
||||
<div class="house-climate dashboard-house-climate" id="houseClimate"></div>
|
||||
<div class="panel dashboard-global-panel">
|
||||
<div class="dashboard-global-power">
|
||||
<div><span class="eyebrow" data-i18n="house.powerAllEyebrow">Global power</span><h3 data-i18n="house.powerAllTitle">All air conditioners</h3><p data-i18n="house.powerAllHint">Master power for thermostat zones. Turn all off also disables all groups; turn all on starts enabled zones only.</p></div>
|
||||
<div class="house-power-actions"><button id="housePowerOn" type="button" class="secondary" data-action="house-power" data-value="true" data-i18n="house.powerOnAll">Turn all on</button><button id="housePowerOff" type="button" class="secondary" data-action="house-power" data-value="false" data-i18n="house.powerOffAll">Turn all off</button></div>
|
||||
</div>
|
||||
<div class="dashboard-global-divider"></div>
|
||||
<div class="house-climate dashboard-house-climate" id="houseClimate"></div>
|
||||
</div>
|
||||
<section class="panel dashboard-section-panel">
|
||||
<div class="dashboard-section-head compact-head">
|
||||
<div><span class="eyebrow" data-i18n="plan.eyebrow">Control plan</span><h2 data-i18n="plan.title">What happens next</h2></div>
|
||||
</div>
|
||||
<div class="automation-plan-grid" id="controlPlan"></div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<section class="dashboard-primary-section">
|
||||
<div class="dashboard-section-head">
|
||||
<div><span class="eyebrow" data-i18n="groups.eyebrow">Group control</span><h2 data-i18n="groups.dashboardTitle">Control selected air conditioners</h2><p data-i18n="groups.dashboardHint">Each group can use its own cooling/heating mode and Auto/Comfort/Sleep/Away profile.</p></div>
|
||||
<div class="dashboard-section-actions"><span class="badge" id="dashboardGroupCount">0</span><button type="button" class="secondary" data-go="groups" data-i18n="groups.manage">Manage groups</button></div>
|
||||
</div>
|
||||
<div class="group-quick-grid dashboard-group-strip" id="dashboardGroups"></div>
|
||||
</section>
|
||||
<div class="dashboard-tab-panel" data-dashboard-panel="thermostats" hidden>
|
||||
<section class="dashboard-primary-section">
|
||||
<div class="dashboard-section-head">
|
||||
<div><span class="eyebrow" data-i18n="groups.eyebrow">Group control</span><h2 data-i18n="groups.dashboardTitle">Control selected air conditioners</h2><p data-i18n="groups.dashboardHint">Each group can use its own cooling/heating mode and Auto/Comfort/Sleep/Away profile.</p></div>
|
||||
<div class="dashboard-section-actions"><span class="badge" id="dashboardGroupCount">0</span><button type="button" class="secondary" data-go="groups" data-i18n="groups.manage">Manage groups</button></div>
|
||||
</div>
|
||||
<div class="group-quick-grid dashboard-group-strip" id="dashboardGroups"></div>
|
||||
</section>
|
||||
<section class="panel dashboard-section-panel">
|
||||
<div class="dashboard-section-head compact-head">
|
||||
<div><span class="eyebrow" data-i18n="nav.zones">Zones</span><h2 data-i18n="dashboard.quickThermostats">Thermostats</h2></div>
|
||||
<span class="badge" id="dashboardZoneCount">0</span>
|
||||
</div>
|
||||
<div class="list-grid dashboard-zones" id="dashboardZones"></div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-secondary-stack">
|
||||
<details class="panel dashboard-disclosure">
|
||||
<summary><div><span class="eyebrow" data-i18n="plan.eyebrow">Control plan</span><h3 data-i18n="plan.title">What happens next</h3></div><span class="dashboard-disclosure-chevron" aria-hidden="true">⌄</span></summary>
|
||||
<div class="dashboard-disclosure-body"><div class="automation-plan-grid" id="controlPlan"></div></div>
|
||||
</details>
|
||||
<details class="panel dashboard-disclosure">
|
||||
<summary><div><span class="eyebrow" data-i18n="nav.zones">Zones</span><h3 data-i18n="dashboard.quickThermostats">Quick thermostats</h3></div><div class="dashboard-summary-side"><span class="badge" id="dashboardZoneCount">0</span><span class="dashboard-disclosure-chevron" aria-hidden="true">⌄</span></div></summary>
|
||||
<div class="dashboard-disclosure-body"><div class="list-grid dashboard-zones" id="dashboardZones"></div></div>
|
||||
</details>
|
||||
<details class="panel dashboard-disclosure">
|
||||
<summary><div><span class="eyebrow" data-i18n="nav.devices">Devices</span><h3 data-i18n="dashboard.quickControl">Direct device control</h3></div><div class="dashboard-summary-side"><span class="badge" id="dashboardDeviceCount">0</span><span class="dashboard-disclosure-chevron" aria-hidden="true">⌄</span></div></summary>
|
||||
<div class="dashboard-disclosure-body"><div class="device-grid" id="dashboardDevices"></div></div>
|
||||
</details>
|
||||
<div class="dashboard-tab-panel" data-dashboard-panel="manual" hidden>
|
||||
<section class="panel dashboard-section-panel">
|
||||
<div class="dashboard-section-head compact-head">
|
||||
<div><span class="eyebrow" data-i18n="nav.devices">Devices</span><h2 data-i18n="dashboard.quickControl">Manual control</h2></div>
|
||||
<span class="badge" id="dashboardDeviceCount">0</span>
|
||||
</div>
|
||||
<div class="device-grid" id="dashboardDevices"></div>
|
||||
</section>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="view" data-view="devices">
|
||||
<div class="section-heading">
|
||||
<div><span class="eyebrow" data-i18n="devices.lan">LAN network</span><h1 data-i18n="nav.devices">Devices</h1></div>
|
||||
<button class="secondary" data-open="deviceDialog" data-i18n="devices.addManual">Add manually</button>
|
||||
<div class="section-heading-actions"><button class="primary compact" id="discoverButton" data-i18n="actions.discover">Discover</button><button class="secondary" data-open="deviceDialog" data-i18n="devices.addManual">Add manually</button></div>
|
||||
</div>
|
||||
<div class="device-grid" id="deviceList"></div>
|
||||
</section>
|
||||
@@ -237,6 +255,20 @@
|
||||
<label><span data-i18n="notifications.cooldown">Cooldown (s)</span><input type="number" name="notification_cooldown_seconds" min="30" max="86400" value="300"></label>
|
||||
<label><span data-i18n="notifications.failureThreshold">Communication failures before alert</span><input type="number" name="notification_failure_threshold" min="2" max="100" value="3"></label>
|
||||
<label><span data-i18n="notifications.targetTimeout">Target not reached timeout (min)</span><input type="number" name="notification_target_timeout" min="5" max="1440" value="60"></label>
|
||||
<fieldset class="notification-alert-types wide">
|
||||
<legend data-i18n="notifications.alertTypes">Alert types</legend>
|
||||
<p class="field-note" data-i18n="notifications.alertTypesHint">Choose exactly which alerts may be delivered. Thresholds above still define when applicable alerts are raised.</p>
|
||||
<div class="notification-alert-grid">
|
||||
<label class="check"><input type="checkbox" name="notification_alert_stale_sensor"> <span data-i18n="notifications.alertStaleSensor">Stale Home Assistant sensor readings</span></label>
|
||||
<label class="check"><input type="checkbox" name="notification_alert_sensor_errors"> <span data-i18n="notifications.alertSensorErrors">Other Home Assistant sensor errors</span></label>
|
||||
<label class="check"><input type="checkbox" name="notification_alert_communication"> <span data-i18n="notifications.alertCommunication">Device communication problems</span></label>
|
||||
<label class="check"><input type="checkbox" name="notification_alert_target_timeout"> <span data-i18n="notifications.alertTargetTimeout">Target temperature timeout</span></label>
|
||||
<label class="check"><input type="checkbox" name="notification_alert_automation"> <span data-i18n="notifications.alertAutomation">Automation errors and conflicts</span></label>
|
||||
<label class="check"><input type="checkbox" name="notification_alert_control_errors"> <span data-i18n="notifications.alertControlErrors">Thermostat and group control errors</span></label>
|
||||
<label class="check"><input type="checkbox" name="notification_alert_important_events"> <span data-i18n="notifications.alertImportantEvents">Important state changes</span></label>
|
||||
<label class="check"><input type="checkbox" name="notification_alert_other"> <span data-i18n="notifications.alertOther">Other warnings and errors</span></label>
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="form-actions wide"><button type="button" class="secondary" id="testNotifications" data-i18n="notifications.test">Send test notification</button></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user