fix: HA Light Target cards flickering on every poll cycle
Lint & Test / test (push) Has been cancelled
Lint & Test / test (push) Has been cancelled
Use stable placeholder values in card HTML for volatile metrics (fps, uptime, HA status, entity swatches) so CardSection.reconcile() skips unchanged cards. Actual values are patched in-place via patchHALightTargetMetrics() — same pattern LED target cards already use.
This commit is contained in:
@@ -546,20 +546,18 @@ export function createHALightTargetCard(target: any, haSourceMap: Record<string,
|
||||
<div class="metrics-grid target-metrics-expanded">
|
||||
<div class="metric">
|
||||
<div class="metric-label">${t('targets.fps')}</div>
|
||||
<div class="metric-value" data-tm="fps">${(state.fps_actual ?? target.update_rate ?? 2).toFixed(1)} Hz</div>
|
||||
<div class="metric-value" data-tm="fps">---</div>
|
||||
</div>
|
||||
<div class="metric">
|
||||
<div class="metric-label">${t('device.metrics.uptime')}</div>
|
||||
<div class="metric-value" data-tm="uptime">${metrics.uptime_seconds ? formatUptime(metrics.uptime_seconds) : '---'}</div>
|
||||
<div class="metric-value" data-tm="uptime">---</div>
|
||||
</div>
|
||||
<div class="metric">
|
||||
<div class="metric-label">HA</div>
|
||||
<div class="metric-value" data-tm="ha-status">${state.ha_connected ? ICON_OK : ICON_WARNING}</div>
|
||||
<div class="metric-value" data-tm="ha-status">---</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ha-light-swatches" data-ha-swatches="${target.id}">
|
||||
${_renderEntitySwatches(state.entity_colors || {}, target.ha_light_mappings || [])}
|
||||
</div>
|
||||
<div class="ha-light-swatches" data-ha-swatches="${target.id}"></div>
|
||||
` : ''}
|
||||
</div>`,
|
||||
actions: `
|
||||
@@ -587,6 +585,9 @@ export function patchHALightTargetMetrics(target: any): void {
|
||||
|
||||
const haEl = card.querySelector('[data-tm="ha-status"]') as HTMLElement | null;
|
||||
if (haEl) haEl.innerHTML = state.ha_connected ? ICON_OK : ICON_WARNING;
|
||||
|
||||
const swatchesEl = card.querySelector(`[data-ha-swatches="${target.id}"]`) as HTMLElement | null;
|
||||
if (swatchesEl) swatchesEl.innerHTML = _renderEntitySwatches(state.entity_colors || {}, target.ha_light_mappings || []);
|
||||
}
|
||||
|
||||
// ── Event delegation ──
|
||||
|
||||
Reference in New Issue
Block a user