fix: activity name undefined and source switch ignored

This commit is contained in:
Nicole 2025-11-19 21:01:24 +01:00
parent b021d2b04b
commit 4c32c320b2
3 changed files with 13 additions and 3 deletions

View file

@ -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);

View file

@ -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) {

View file

@ -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 };
}
});
}