fix: activity name undefined and source switch ignored
This commit is contained in:
parent
b021d2b04b
commit
4c32c320b2
3 changed files with 13 additions and 3 deletions
|
|
@ -115,7 +115,7 @@ export class ConfigManager {
|
||||||
|
|
||||||
// Add activities
|
// Add activities
|
||||||
const activitiesParam = Object.entries(this._config.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(',');
|
.join(',');
|
||||||
params.append('activities', activitiesParam);
|
params.append('activities', activitiesParam);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,9 @@ class MapBadgeCard extends HTMLElement {
|
||||||
const oldConfig = this._configManager.getConfig();
|
const oldConfig = this._configManager.getConfig();
|
||||||
const newConfig = this._configManager.setConfig(config);
|
const newConfig = this._configManager.setConfig(config);
|
||||||
|
|
||||||
|
// Check if activity_source changed
|
||||||
|
const activitySourceChanged = this._configManager.hasChanged(oldConfig, ['activity_source']);
|
||||||
|
|
||||||
// Configure modules
|
// Configure modules
|
||||||
this._dataFetcher.setDebugMode(newConfig.debug);
|
this._dataFetcher.setDebugMode(newConfig.debug);
|
||||||
this._dataFetcher.setEntities(newConfig.entities);
|
this._dataFetcher.setEntities(newConfig.entities);
|
||||||
|
|
@ -44,6 +47,11 @@ class MapBadgeCard extends HTMLElement {
|
||||||
} else {
|
} else {
|
||||||
this._render();
|
this._render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If activity_source changed, trigger data fetch immediately
|
||||||
|
if (activitySourceChanged && this._updateInterval) {
|
||||||
|
this._fetchEntities();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set hass(hass) {
|
set hass(hass) {
|
||||||
|
|
|
||||||
|
|
@ -309,11 +309,13 @@ const activitiesParam = urlParams.get('activities') || '';
|
||||||
const ACTIVITIES = {};
|
const ACTIVITIES = {};
|
||||||
if (activitiesParam) {
|
if (activitiesParam) {
|
||||||
activitiesParam.split(',').forEach(activity => {
|
activitiesParam.split(',').forEach(activity => {
|
||||||
const [state, icon, color] = activity.split(':');
|
const [state, icon, color, name] = activity.split(':');
|
||||||
if (state && icon && color) {
|
if (state && icon && color) {
|
||||||
// Convert icon from 'mdi:icon-name' to 'mdi-icon-name' format
|
// Convert icon from 'mdi:icon-name' to 'mdi-icon-name' format
|
||||||
const iconClass = icon.replace(':', '-');
|
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 };
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue