@@ -9641,6 +9641,14 @@ class FastSearchCard extends HTMLElement {
96419641 this.handleEditTimerClick(timerId, entityId);
96429642 });
96439643 });
9644+
9645+ // Event Listeners für Delete Buttons
9646+ container.querySelectorAll('.timer-delete').forEach(btn => {
9647+ btn.addEventListener('click', () => {
9648+ const timerId = btn.dataset.timerId;
9649+ this.deleteTimer(timerId, entityId);
9650+ });
9651+ });
96449652 }
96459653
96469654 getNextExecution(timer) {
@@ -9698,19 +9706,25 @@ class FastSearchCard extends HTMLElement {
96989706 }
96999707
97009708 async deleteTimer(timerId, entityId) {
9709+ console.log(`🗑️ Lösche Timer ${timerId}`);
9710+ if (!confirm('Diesen Timer wirklich löschen?')) {
9711+ return;
9712+ }
9713+
97019714 try {
9702- // KORRIGIERT: Verwende callApi statt callService
9703- await this._hass.callApi('POST ', 'scheduler/ remove', {
9715+ // Verwende den scheduler.remove Service
9716+ await this._hass.callService('scheduler ', 'remove', {
97049717 schedule_id: timerId
97059718 });
97069719
9707- console.log(`🗑️ Timer ${timerId} gelöscht`);
9720+ console.log(`✅ Timer ${timerId} erfolgreich gelöscht. `);
97089721
9709- // Timer Liste neu laden
9710- this.loadActiveTimers(entityId);
9722+ // UI aktualisieren durch Neuladen der Timer
9723+ setTimeout(() => this.loadActiveTimers(entityId), 300 );
97119724
97129725 } catch (error) {
9713- console.error('❌ Fehler beim Löschen:', error);
9726+ console.error('❌ Fehler beim Löschen des Timers:', error);
9727+ alert(`Fehler beim Löschen des Timers:\n\n${error.message}`);
97149728 }
97159729 }
97169730
@@ -13537,6 +13551,7 @@ class FastSearchCard extends HTMLElement {
1353713551 }
1353813552
1353913553
13554+
1354013555 async handleEditTimerClick(scheduleId, entityId) {
1354113556 console.log(`✏️ Bearbeitung für Timer ${scheduleId} angefordert.`);
1354213557
@@ -13545,12 +13560,21 @@ class FastSearchCard extends HTMLElement {
1354513560 const timerToEdit = allSchedules.find(s => s.schedule_id === scheduleId);
1354613561
1354713562 if (!timerToEdit) {
13548- alert("Dieser Timer wurde bereits ausgeführt oder gelöscht und kann nicht bearbeitet werden .");
13563+ alert("Dieser Timer wurde bereits ausgeführt oder gelöscht.");
1354913564 this.loadActiveTimers(entityId);
1355013565 return;
1355113566 }
1355213567
13553- const action = this.getActionNameFromService(timerToEdit.actions[0].service, timerToEdit.actions[0].service_data);
13568+ // ✅ KORREKTUR: Greife auf timeslots[0] zu, um actions zu finden.
13569+ const timeslot = timerToEdit.timeslots?.[0];
13570+ const actionData = timeslot?.actions?.[0];
13571+
13572+ if (!actionData) {
13573+ alert("Die Timer-Aktion konnte nicht gelesen werden. Der Timer ist möglicherweise fehlerhaft.");
13574+ return;
13575+ }
13576+
13577+ const action = this.getActionNameFromService(actionData.service, actionData.service_data);
1355413578 const nextExecution = new Date(timerToEdit.next_trigger);
1355513579 const durationMinutes = Math.round((nextExecution - new Date()) / 60000);
1355613580
@@ -13564,7 +13588,7 @@ class FastSearchCard extends HTMLElement {
1356413588 });
1356513589 } catch (error) {
1356613590 console.error('❌ Fehler beim Laden der Timer-Daten:', error);
13567- alert('Fehler beim Laden der Timer-Daten');
13591+ alert('Fehler beim Laden der Timer-Daten für die Bearbeitung. ');
1356813592 }
1356913593 }
1357013594
0 commit comments