Skip to content

Commit 7de1051

Browse files
authored
Update fast-search-card.js
1 parent dffe445 commit 7de1051

File tree

1 file changed

+43
-31
lines changed

1 file changed

+43
-31
lines changed

dist/fast-search-card.js

Lines changed: 43 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)