@@ -11093,52 +11093,54 @@ class FastSearchCard extends HTMLElement {
1109311093 return stats;
1109411094 }
1109511095
11096-
1109711096 async toggleStarLabel(entityId) {
11098- console.log(`🌟 Toggle Label "star" für ${entityId}...`);
11097+ console.log(`🌟 Toggle Favorit für ${entityId}...`);
1109911098
1110011099 try {
11101- // Aktuelle Labels der Entity abrufen
11102- const entityRegistry = this._hass.entities[entityId ];
11103- const currentLabels = entityRegistry?.labels || [];
11100+ // Aktuelle Favoriten aus Helper lesen
11101+ const favoritesHelper = this._hass.states['input_text.fast_search_favorites' ];
11102+ let favorites = [];
1110411103
11105- console.log('Aktuelle Labels:', currentLabels);
11104+ if (favoritesHelper && favoritesHelper.state) {
11105+ try {
11106+ favorites = JSON.parse(favoritesHelper.state);
11107+ } catch (e) {
11108+ console.warn('Favoriten-Helper enthält ungültiges JSON, reset zu leerem Array');
11109+ favorites = [];
11110+ }
11111+ }
1110611112
11107- // Prüfen ob "star" bereits vorhanden ist
11108- const hasStarLabel = currentLabels.includes('star');
11113+ console.log('Aktuelle Favoriten:', favorites);
1110911114
11110- let updatedLabels;
11115+ // Toggle: Hinzufügen oder entfernen
11116+ const isFavorite = favorites.includes(entityId);
11117+ let updatedFavorites;
1111111118 let message;
1111211119
11113- if (hasStarLabel) {
11114- // "star" Label entfernen
11115- updatedLabels = currentLabels.filter(label => label !== 'star');
11116- message = 'Star Label entfernt!';
11117- console.log('Entferne star label');
11120+ if (isFavorite) {
11121+ updatedFavorites = favorites.filter(id => id !== entityId);
11122+ message = 'Favorit entfernt!';
1111811123 } else {
11119- // "star" Label hinzufügen
11120- updatedLabels = [...currentLabels, 'star'];
11121- message = 'Star Label hinzugefügt!';
11122- console.log('Füge star label hinzu');
11124+ updatedFavorites = [...favorites, entityId];
11125+ message = 'Favorit hinzugefügt!';
1112311126 }
1112411127
11125- console.log('Neue Labels :', updatedLabels );
11128+ console.log('Neue Favoriten :', updatedFavorites );
1112611129
11127- // WebSocket API Call
11128- const result = await this._hass.callWS({
11129- type: "config/entity_registry/update",
11130- entity_id: entityId,
11131- labels: updatedLabels
11130+ // Zurück in Helper speichern
11131+ await this._hass.callService('input_text', 'set_value', {
11132+ entity_id: 'input_text.fast_search_favorites',
11133+ value: JSON.stringify(updatedFavorites)
1113211134 });
1113311135
11134- console.log('✅ Label erfolgreich geändert:', result );
11136+ console.log('✅ Favoriten erfolgreich gespeichert' );
1113511137 alert(message);
1113611138
1113711139 // Button visuell aktualisieren
1113811140 this.updateStarButtonState(entityId);
1113911141
1114011142 } catch (error) {
11141- console.error('❌ Fehler beim Ändern des Labels :', error);
11143+ console.error('❌ Fehler beim Ändern der Favoriten :', error);
1114211144 alert('Fehler: ' + error.message);
1114311145 }
1114411146 }
@@ -11147,13 +11149,23 @@ class FastSearchCard extends HTMLElement {
1114711149 const labelButton = this.shadowRoot.querySelector('.label-test-button');
1114811150 if (!labelButton) return;
1114911151
11150- const entityRegistry = this._hass.entities[entityId];
11151- const currentLabels = entityRegistry?.labels || [];
11152- const hasStarLabel = currentLabels.includes('star');
11152+ // Favoriten aus Helper lesen
11153+ const favoritesHelper = this._hass.states['input_text.fast_search_favorites'];
11154+ let favorites = [];
11155+
11156+ if (favoritesHelper && favoritesHelper.state) {
11157+ try {
11158+ favorites = JSON.parse(favoritesHelper.state);
11159+ } catch (e) {
11160+ favorites = [];
11161+ }
11162+ }
11163+
11164+ const isFavorite = favorites.includes(entityId);
1115311165
1115411166 // Button Text und Style ändern
11155- labelButton.textContent = hasStarLabel ? '🌟' : '⭐';
11156- labelButton.title = hasStarLabel ? 'Star Label entfernen' : 'Star Label hinzufügen ';
11167+ labelButton.textContent = isFavorite ? '🌟' : '⭐';
11168+ labelButton.title = isFavorite ? 'Favorit entfernen' : 'Als Favorit markieren ';
1115711169 }
1115811170
1115911171
0 commit comments