v0.14.0
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
function renderHistorySummary() {
|
||||
const host = $('#historySummary'); if (!host) return;
|
||||
if (app.historyTab === 'energy') { renderEnergyHistorySummary(); return; }
|
||||
const deviceRows = app.historyData.devices, zoneRows = app.historyData.zones, sensorRows = app.historyData.sensors;
|
||||
const cards = [
|
||||
[tr('history.deviceSamples'), app.historyCounts.devices ?? deviceRows.length, tr('history.greeHistory')],
|
||||
@@ -155,6 +156,7 @@ function renderHistoryPage() {
|
||||
if (app.historyTab === 'overview') renderOverviewHistory();
|
||||
else if (app.historyTab === 'zones') renderZoneHistory();
|
||||
else if (app.historyTab === 'devices') renderDeviceHistory();
|
||||
else if (app.historyTab === 'energy') renderEnergyHistory();
|
||||
else if (app.historyTab === 'sensors') renderSensorHistory();
|
||||
else renderCustomHistory();
|
||||
}
|
||||
@@ -196,3 +198,42 @@ async function handleHistoryAction(button) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async function loadEnergyHistory() {
|
||||
const energyDevices = app.devices.filter(device => device.capabilities?.energy_meter === true || !!device.ha_energy_entity_id);
|
||||
if (!energyDevices.length) {
|
||||
app.historyEnergy = null;
|
||||
return;
|
||||
}
|
||||
if (!energyDevices.some(device => device.id === app.historyEnergyDevice)) app.historyEnergyDevice = energyDevices[0].id;
|
||||
const hours = Number($('#historyHours')?.value || 24);
|
||||
const days = Math.max(1, Math.ceil(hours / 24));
|
||||
app.historyEnergy = await api(`/api/history/energy?device_id=${encodeURIComponent(app.historyEnergyDevice)}&interval=${encodeURIComponent(app.historyEnergyInterval)}&days=${days}&limit=100000`);
|
||||
}
|
||||
|
||||
function renderEnergyHistorySummary() {
|
||||
const host = $('#historySummary'); if (!host) return;
|
||||
const data = app.historyEnergy;
|
||||
if (!data || data.source === 'none') { host.innerHTML = ''; return; }
|
||||
const summary = data.summary || {};
|
||||
const rows = [
|
||||
[tr('energy.today'), summary.today],
|
||||
[tr('energy.yesterday'), summary.yesterday],
|
||||
[tr('energy.currentMonth'), summary.current_month],
|
||||
[tr('energy.previousMonth'), summary.previous_month],
|
||||
[tr('energy.periodTotal'), summary.period_total],
|
||||
];
|
||||
host.innerHTML = rows.map(([label, value]) => `<div class="history-stat"><small>${esc(label)}</small><strong>${Number(value || 0).toLocaleString(locale(), { maximumFractionDigits: 3 })} kWh</strong><span>${esc(data.source === 'gree_cloud' ? 'GREE Cloud' : 'Home Assistant')}</span></div>`).join('');
|
||||
}
|
||||
|
||||
function renderEnergyHistory() {
|
||||
const host = $('#historyCharts'); if (!host) return;
|
||||
const data = app.historyEnergy;
|
||||
renderEnergyHistorySummary();
|
||||
if (!data || data.source === 'none') {
|
||||
host.innerHTML = `<div class="empty"><strong>${esc(tr('energy.noData'))}</strong></div>`;
|
||||
return;
|
||||
}
|
||||
host.innerHTML = historyChartMarkup('energyConsumptionChart', tr('energy.title'), tr('energy.chartHint'));
|
||||
drawEnergyBarChart($('#energyConsumptionChart'), data.buckets || [], { height: 360 });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user