diff --git a/src/config-manager.js b/src/config-manager.js index ea3a083..92ff44f 100644 --- a/src/config-manager.js +++ b/src/config-manager.js @@ -115,7 +115,7 @@ export class ConfigManager { // Add activities const activitiesParam = Object.entries(this._config.activities) - .map(([state, config]) => `${state}:${config.icon}:${encodeURIComponent(config.color)}`) + .map(([state, config]) => `${state}:${config.icon}:${encodeURIComponent(config.color)}:${encodeURIComponent(config.name)}`) .join(','); params.append('activities', activitiesParam); diff --git a/src/map-badge-card.js b/src/map-badge-card.js index b0b2570..5720056 100644 --- a/src/map-badge-card.js +++ b/src/map-badge-card.js @@ -25,6 +25,9 @@ class MapBadgeCard extends HTMLElement { const oldConfig = this._configManager.getConfig(); const newConfig = this._configManager.setConfig(config); + // Check if activity_source changed + const activitySourceChanged = this._configManager.hasChanged(oldConfig, ['activity_source']); + // Configure modules this._dataFetcher.setDebugMode(newConfig.debug); this._dataFetcher.setEntities(newConfig.entities); @@ -44,6 +47,11 @@ class MapBadgeCard extends HTMLElement { } else { this._render(); } + + // If activity_source changed, trigger data fetch immediately + if (activitySourceChanged && this._updateInterval) { + this._fetchEntities(); + } } set hass(hass) { diff --git a/src/map-badge-v2.html b/src/map-badge-v2.html index 1efd597..124abac 100644 --- a/src/map-badge-v2.html +++ b/src/map-badge-v2.html @@ -309,11 +309,13 @@ const activitiesParam = urlParams.get('activities') || ''; const ACTIVITIES = {}; if (activitiesParam) { activitiesParam.split(',').forEach(activity => { - const [state, icon, color] = activity.split(':'); + const [state, icon, color, name] = activity.split(':'); if (state && icon && color) { // Convert icon from 'mdi:icon-name' to 'mdi-icon-name' format const iconClass = icon.replace(':', '-'); - ACTIVITIES[state] = { icon: iconClass, color: decodeURIComponent(color) }; + // If name is missing, default to state (capitalized/formatted) + const activityName = name ? decodeURIComponent(name) : state.charAt(0).toUpperCase() + state.slice(1).replace(/_/g, ' '); + ACTIVITIES[state] = { icon: iconClass, color: decodeURIComponent(color), name: activityName }; } }); }