This commit is contained in:
Mateusz Gruszczyński
2026-09-16 11:09:38 +02:00
parent 0437ef7b6f
commit 0d73844f23
17 changed files with 147 additions and 54 deletions
+13 -1
View File
@@ -10,6 +10,18 @@ function logNotificationBadge(item) {
return `<span class="badge silent log-notification-badge" title="${esc(tr(reasonKey))}">${esc(tr('logs.silent'))}</span>`;
}
function logDisplayMessage(item) {
const message = String(item?.message || '');
if (!String(item?.kind || '').startsWith('ha.sensor_')) return message;
const metadata = item?.metadata || {};
const entityId = metadata.resolved_entity_id || metadata.configured_entity_id || '';
if (!entityId || message.includes(entityId)) return message;
const alias = haSensorLabel(entityId);
const sensor = alias && alias !== entityId ? `${alias} (${entityId})` : entityId;
const zoneName = metadata.zone_name || app.zones?.find(zone => zone.id === metadata.zone_id)?.name || '';
return `${message} · ${tr('history.haSensor')}: ${sensor}${zoneName ? ` · ${tr('common.zone')}: ${zoneName}` : ''}`;
}
async function loadLogs() {
renderLogRetention();
try {
@@ -17,7 +29,7 @@ async function loadLogs() {
const level = $('#logLevelFilter')?.value || 'all', category = $('#logCategoryFilter')?.value || 'all';
const logs = (data.events || []).filter(item => (level === 'all' || item.level === level) && (category === 'all' || logCategory(item.kind) === category));
$('#logList').innerHTML = logs.length
? logs.map(item => `<div class="log-row ${esc(item.level)} category-${esc(logCategory(item.kind))}"><time>${esc(new Date(item.timestamp).toLocaleTimeString(locale()))}</time><span class="log-category">${esc(logCategory(item.kind))}</span><span class="kind">${esc(item.kind)}${logNotificationBadge(item)}</span><span class="message">${esc(item.message)}</span></div>`).join('')
? logs.map(item => `<div class="log-row ${esc(item.level)} category-${esc(logCategory(item.kind))}"><time>${esc(new Date(item.timestamp).toLocaleTimeString(locale()))}</time><span class="log-category">${esc(logCategory(item.kind))}</span><span class="kind">${esc(item.kind)}${logNotificationBadge(item)}</span><span class="message">${esc(logDisplayMessage(item))}</span></div>`).join('')
: `<div class="empty"><strong>${esc(tr('logs.emptyTitle'))}</strong>${esc(tr('logs.emptyText'))}</div>`;
} catch (error) { toast(error.message, true); }
}