-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
144 lines (118 loc) · 5.31 KB
/
script.js
File metadata and controls
144 lines (118 loc) · 5.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// Global scope functions
function loadTasks() {
console.log("loadTasks called");
const todos = JSON.parse(localStorage.getItem("todos") || "[]");
const completed = JSON.parse(localStorage.getItem("completed") || "[]");
todos.forEach(task => addTodoToList(task, false));
completed.forEach(task => addCompletedToList(task));
updateCounts();
}
function saveTasks() {
console.log("saveTasks called");
const todos = Array.from(document.querySelectorAll("#todo-list li span"))
.map(span => span.textContent);
const completed = Array.from(document.querySelectorAll("#completed-list li span"))
.map(span => span.textContent);
localStorage.setItem("todos", JSON.stringify(todos));
localStorage.setItem("completed", JSON.stringify(completed));
}
function updateCounts() {
console.log("updateCounts called");
const todoCount = document.querySelectorAll("#todo-list li").length;
const completedCount = document.querySelectorAll("#completed-list li").length;
document.getElementById("todo-count").textContent = todoCount;
document.getElementById("completed-count").textContent = completedCount;
}
function addTodo() {
console.log("addTodo called");
const input = document.getElementById("todo-input");
const task = input.value.trim();
if (task === "") {
alert("Please enter a task!");
return;
}
addTodoToList(task, true);
input.value = "";
}
function addTodoToList(task, save = false) {
console.log("addTodoToList called with task:", task);
const li = document.createElement("li");
// Create task text element
const taskSpan = document.createElement("span");
taskSpan.textContent = task;
// Create button container
const buttonContainer = document.createElement("div");
buttonContainer.className = "button-container";
// Create Complete button
const completeBtn = document.createElement("button");
completeBtn.textContent = "✔️";
completeBtn.className = "complete-btn";
completeBtn.onclick = function () {
console.log("Complete button clicked for task:", task);
completeTask(li);
};
// Create Delete button
const removeBtn = document.createElement("button");
removeBtn.textContent = "❌";
removeBtn.className = "delete-btn";
removeBtn.onclick = function () {
console.log("Delete button clicked for task:", task);
li.remove();
saveTasks();
updateCounts();
};
// Append complete and delete buttons to button container
buttonContainer.appendChild(completeBtn);
buttonContainer.appendChild(removeBtn);
// Append task text (left) and button container (right) to li
li.appendChild(taskSpan);
li.appendChild(buttonContainer);
// Append li to todo list
document.getElementById("todo-list").appendChild(li);
if (save) {
saveTasks();
updateCounts();
}
}
function addCompletedToList(task) {
console.log("addCompletedToList called with task:", task);
const li = document.createElement("li");
li.className = "completed-item";
// Create task text element
const taskSpan = document.createElement("span");
taskSpan.textContent = task;
// Append task text to li (no buttons for completed tasks)
li.appendChild(taskSpan);
// Append to completed list
document.getElementById("completed-list").appendChild(li);
}
function completeTask(taskItem) {
console.log("completeTask called");
const taskText = taskItem.querySelector("span").textContent;
taskItem.remove();
addCompletedToList(taskText);
saveTasks();
updateCounts();
}
function clearCompleted() {
console.log("clearCompleted called");
const completedList = document.getElementById("completed-list");
completedList.innerHTML = "";
saveTasks();
updateCounts();
}
// Set up event listeners after DOM is loaded
document.addEventListener("DOMContentLoaded", function () {
// Add task on Enter key
document.getElementById("todo-input").addEventListener("keypress", function (e) {
if (e.key === "Enter") {
console.log("Enter key pressed");
addTodo();
}
});
// Load tasks on page load
loadTasks();
// Debug: Confirm functions are defined
console.log("addTodo defined:", typeof addTodo === "function");
console.log("clearCompleted defined:", typeof clearCompleted === "function");
});