Fadikkop commited on
Commit
bbb6721
·
verified ·
1 Parent(s): 4e9dea2

Jetzt funktioniert kein einziger Knopf mehr, egal, wo ich drauf drücke, es passiert nichts

Browse files
Files changed (3) hide show
  1. components/task-item.js +16 -3
  2. index.html +5 -5
  3. script.js +24 -12
components/task-item.js CHANGED
@@ -270,7 +270,6 @@ class TaskItem extends HTMLElement {
270
  icon.outerHTML = feather.icons[iconName].toSvg({ width: 16, height: 16 });
271
  });
272
  }
273
-
274
  setupEventListeners() {
275
  this.shadowRoot.addEventListener('click', (e) => {
276
  const target = e.target.closest('button');
@@ -291,9 +290,23 @@ class TaskItem extends HTMLElement {
291
  this.handleToggleComplete(e);
292
  }
293
  });
294
- }
295
 
296
- handleToggleComplete(e) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
297
  const completed = e.target.checked;
298
  this.dispatchEvent(new CustomEvent('toggle-complete', {
299
  detail: { taskId: this.getAttribute('task-id'), completed },
 
270
  icon.outerHTML = feather.icons[iconName].toSvg({ width: 16, height: 16 });
271
  });
272
  }
 
273
  setupEventListeners() {
274
  this.shadowRoot.addEventListener('click', (e) => {
275
  const target = e.target.closest('button');
 
290
  this.handleToggleComplete(e);
291
  }
292
  });
 
293
 
294
+ // Direct event listeners for buttons
295
+ const focusBtn = this.shadowRoot.querySelector('.focus-btn');
296
+ const editBtn = this.shadowRoot.querySelector('.task-action[title="Bearbeiten"]');
297
+ const deleteBtn = this.shadowRoot.querySelector('.task-action[title="Löschen"]');
298
+
299
+ if (focusBtn) {
300
+ focusBtn.addEventListener('click', (e) => this.handleFocus(e));
301
+ }
302
+ if (editBtn) {
303
+ editBtn.addEventListener('click', (e) => this.handleEdit(e));
304
+ }
305
+ if (deleteBtn) {
306
+ deleteBtn.addEventListener('click', (e) => this.handleDelete(e));
307
+ }
308
+ }
309
+ handleToggleComplete(e) {
310
  const completed = e.target.checked;
311
  this.dispatchEvent(new CustomEvent('toggle-complete', {
312
  detail: { taskId: this.getAttribute('task-id'), completed },
index.html CHANGED
@@ -16,14 +16,14 @@
16
  <div class="flex items-center justify-between">
17
  <h1 class="text-2xl font-bold text-orange-500">TaskForge Pro</h1>
18
  <nav class="flex items-center space-x-4">
19
- <button id="view-home" class="nav-btn active" data-view="home">
20
  <i data-feather="home"></i> Übersicht
21
- </button>
22
- <button id="view-settings" class="nav-btn" data-view="settings">
23
  <i data-feather="settings"></i> Einstellungen
24
- </button>
25
  </nav>
26
- </div>
27
  </div>
28
  </header>
29
  <!-- Main Content -->
 
16
  <div class="flex items-center justify-between">
17
  <h1 class="text-2xl font-bold text-orange-500">TaskForge Pro</h1>
18
  <nav class="flex items-center space-x-4">
19
+ <a href="#" id="view-home" class="nav-btn active" data-view="home">
20
  <i data-feather="home"></i> Übersicht
21
+ </a>
22
+ <a href="#" id="view-settings" class="nav-btn" data-view="settings">
23
  <i data-feather="settings"></i> Einstellungen
24
+ </a>
25
  </nav>
26
+ </div>
27
  </div>
28
  </header>
29
  <!-- Main Content -->
script.js CHANGED
@@ -82,22 +82,20 @@ function updateCurrentTime() {
82
  document.getElementById('current-time').textContent = timeString;
83
  }
84
  function setupEventListeners() {
85
- // Navigation
86
  document.querySelectorAll('.nav-btn').forEach(btn => {
87
  btn.addEventListener('click', (e) => {
 
88
  const view = e.currentTarget.dataset.view;
89
  switchView(view);
90
  });
91
  });
92
-
93
- // FAB buttons
94
  document.getElementById('add-task-fab').addEventListener('click', openAddTaskModal);
95
  document.getElementById('focus-fab').addEventListener('click', enterFocusMode);
96
-
97
  // Add task modal
98
  document.getElementById('add-task-form').addEventListener('submit', handleAddTask);
99
  document.getElementById('cancel-task').addEventListener('click', closeAddTaskModal);
100
-
101
  // Settings
102
  document.getElementById('import-btn').addEventListener('click', handleImport);
103
  document.getElementById('export-btn').addEventListener('click', handleExport);
@@ -105,13 +103,11 @@ function setupEventListeners() {
105
 
106
  document.getElementById('pomodoro-work').addEventListener('change', savePomodoroSettings);
107
  document.getElementById('pomodoro-break').addEventListener('change', savePomodoroSettings);
108
-
109
  // Focus mode
110
  document.getElementById('focus-pause').addEventListener('click', pausePomodoro);
111
  document.getElementById('focus-play').addEventListener('click', resumePomodoro);
112
  document.getElementById('focus-stop').addEventListener('click', stopPomodoro);
113
-
114
- // Event delegation for task item events
115
  document.addEventListener('delete-task', (e) => {
116
  deleteTask(e.detail.taskId);
117
  });
@@ -127,8 +123,7 @@ function setupEventListeners() {
127
  document.addEventListener('add-time', (e) => {
128
  addTimeToTask(e.detail.taskId, e.detail.minutes);
129
  });
130
-
131
- // Timeline sidebar events
132
  const timelineSidebar = document.getElementById('timeline-sidebar');
133
  if (timelineSidebar) {
134
  timelineSidebar.addEventListener('task-dropped', (e) => {
@@ -394,12 +389,14 @@ function renderTasks() {
394
 
395
  document.getElementById('open-count').textContent = openTasks.length;
396
  document.getElementById('completed-count').textContent = completedTasks.length;
397
-
398
  // Setup drag and drop for task items
399
  setupTaskDragAndDrop();
400
 
401
  // Replace feather icons
402
  feather.replace();
 
 
 
403
  }
404
  function renderProgressBars() {
405
  // Overall progress
@@ -729,7 +726,6 @@ function addTimeToTask(taskId, minutes) {
729
  render();
730
  }
731
  }
732
-
733
  function setupTaskDragAndDrop() {
734
  const openContainer = document.getElementById('open-tasks');
735
  const completedContainer = document.getElementById('completed-tasks');
@@ -752,6 +748,22 @@ function setupTaskDragAndDrop() {
752
  });
753
  }
754
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
755
  function getDragAfterElement(container, y) {
756
  const draggableElements = [...container.querySelectorAll('task-item:not(.dragging)'));
757
 
 
82
  document.getElementById('current-time').textContent = timeString;
83
  }
84
  function setupEventListeners() {
85
+ // Navigation
86
  document.querySelectorAll('.nav-btn').forEach(btn => {
87
  btn.addEventListener('click', (e) => {
88
+ e.preventDefault();
89
  const view = e.currentTarget.dataset.view;
90
  switchView(view);
91
  });
92
  });
93
+ // FAB buttons
 
94
  document.getElementById('add-task-fab').addEventListener('click', openAddTaskModal);
95
  document.getElementById('focus-fab').addEventListener('click', enterFocusMode);
 
96
  // Add task modal
97
  document.getElementById('add-task-form').addEventListener('submit', handleAddTask);
98
  document.getElementById('cancel-task').addEventListener('click', closeAddTaskModal);
 
99
  // Settings
100
  document.getElementById('import-btn').addEventListener('click', handleImport);
101
  document.getElementById('export-btn').addEventListener('click', handleExport);
 
103
 
104
  document.getElementById('pomodoro-work').addEventListener('change', savePomodoroSettings);
105
  document.getElementById('pomodoro-break').addEventListener('change', savePomodoroSettings);
 
106
  // Focus mode
107
  document.getElementById('focus-pause').addEventListener('click', pausePomodoro);
108
  document.getElementById('focus-play').addEventListener('click', resumePomodoro);
109
  document.getElementById('focus-stop').addEventListener('click', stopPomodoro);
110
+ // Event delegation for task item events
 
111
  document.addEventListener('delete-task', (e) => {
112
  deleteTask(e.detail.taskId);
113
  });
 
123
  document.addEventListener('add-time', (e) => {
124
  addTimeToTask(e.detail.taskId, e.detail.minutes);
125
  });
126
+ // Timeline sidebar events
 
127
  const timelineSidebar = document.getElementById('timeline-sidebar');
128
  if (timelineSidebar) {
129
  timelineSidebar.addEventListener('task-dropped', (e) => {
 
389
 
390
  document.getElementById('open-count').textContent = openTasks.length;
391
  document.getElementById('completed-count').textContent = completedTasks.length;
 
392
  // Setup drag and drop for task items
393
  setupTaskDragAndDrop();
394
 
395
  // Replace feather icons
396
  feather.replace();
397
+
398
+ // Re-attach event listeners to task items after render
399
+ reattachTaskEventListeners();
400
  }
401
  function renderProgressBars() {
402
  // Overall progress
 
726
  render();
727
  }
728
  }
 
729
  function setupTaskDragAndDrop() {
730
  const openContainer = document.getElementById('open-tasks');
731
  const completedContainer = document.getElementById('completed-tasks');
 
748
  });
749
  }
750
 
751
+ function reattachTaskEventListeners() {
752
+ document.querySelectorAll('task-item').forEach(taskEl => {
753
+ // Remove existing listeners and re-add
754
+ const taskId = taskEl.getAttribute('task-id');
755
+
756
+ // Add event listeners for checkbox toggle
757
+ const checkbox = taskEl.shadowRoot?.querySelector('.task-checkbox');
758
+ if (checkbox) {
759
+ checkbox.addEventListener('change', (e) => {
760
+ const completed = e.target.checked;
761
+ toggleTaskComplete(taskId, completed);
762
+ });
763
+
764
+ }
765
+ });
766
+ }
767
  function getDragAfterElement(container, y) {
768
  const draggableElements = [...container.querySelectorAll('task-item:not(.dragging)'));
769