-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathapp.js
More file actions
191 lines (151 loc) Β· 5.08 KB
/
Copy pathapp.js
File metadata and controls
191 lines (151 loc) Β· 5.08 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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
const textBox = document.getElementById("userInputBox");
const addButton = document.getElementById("insertButton");
// * Add event listener to the button
addButton.addEventListener("click", () => {
if (!textBox.value) return;
const currentTime = new Date().toLocaleString();
user_input = textBox.value;
textBox.value = "";
addListItem(user_input, currentTime);
saveLocalTodos({ task: user_input, time: currentTime });
getTodos();
});
const deleteTodo = (e) => {
const item = e.target;
if (item.classList[0] === "deleteButton") {
const todo = item.parentElement;
todo.remove();
const todos = JSON.parse(localStorage.getItem("todos"));
const newTodos = todos.filter(
(todo) => todo.task !== item.parentElement.querySelector("p").textContent
);
localStorage.setItem("todos", JSON.stringify(newTodos));
getTodos();
}
};
const editTodo = (e) => {
const item = e.target;
if (item.classList[0] === "editButton") {
const todo = item.parentElement;
const task = todo.querySelector("p");
const taskText = task.textContent;
textBox.value = taskText;
todo.remove();
const todos = JSON.parse(localStorage.getItem("todos"));
const newTodos = todos.filter((todo) => todo.task !== taskText);
localStorage.setItem("todos", JSON.stringify(newTodos));
getTodos();
}
};
const completeTodo = (e) => {
const item = e.target;
if (item.classList[0] === "completeButton") {
const todo = item.parentElement;
const taskPara = todo.querySelector("p");
taskPara.style.color = "green";
taskPara.classList.add("completed");
}
}
const skipTodo = (e) => {
const item = e.target;
if (item.classList[0] === "skipButton") {
const todo = item.parentElement;
const taskPara = todo.querySelector("p");
if (!taskPara.classList.contains("completed")) {
taskPara.style.textDecoration = "line-through";
}
}
}
document.addEventListener("click", deleteTodo);
document.addEventListener("click", editTodo);
document.addEventListener("click", completeTodo);
document.addEventListener("click", skipTodo);
// * Value holders
let user_input = "";
// * Function to add the user input to the list
function addListItem(taskText, timeText) {
// Create new list item
let listItem = document.createElement("div");
listItem.className = "list";
// Create task div
let taskDiv = document.createElement("div");
listItem.appendChild(taskDiv);
// Create task paragraph
let taskPara = document.createElement("p");
taskPara.textContent = taskText;
taskDiv.appendChild(taskPara);
// Create time element
let timeElement = document.createElement("i");
timeElement.textContent = timeText;
taskDiv.appendChild(timeElement);
// Create delete button
let deleteButton = document.createElement("button");
deleteButton.className = "deleteButton";
deleteButton.textContent = "Delete";
listItem.appendChild(deleteButton);
// Create edit button
let editButton = document.createElement("button");
editButton.className = "editButton";
editButton.textContent = "Edit";
listItem.appendChild(editButton);
// Create complete button
let completeButton = document.createElement("button");
completeButton.className = "completeButton";
completeButton.textContent = "Complete";
listItem.appendChild(completeButton);
// Create skip button
let skipButton = document.createElement("button");
skipButton.className = "skipButton";
skipButton.textContent = "Skip";
listItem.appendChild(skipButton);
// Append new list item to the lists div
let listsDiv = document.querySelector(".lists");
listsDiv.appendChild(listItem);
}
const saveLocalTodos = (todo) => {
// Check if there is already a todo list
let todos;
if (localStorage.getItem("todos") === null) {
todos = [];
} else {
// If there is already a todo list, get it
todos = JSON.parse(localStorage.getItem("todos"));
}
// Add the new todo to the list
todos.push(todo);
localStorage.setItem("todos", JSON.stringify(todos));
};
const getTodos = () => {
// clear the list
let listsDiv = document.querySelector(".lists");
listsDiv.innerHTML = "";
// Check if there is already a todo list
let todos;
if (localStorage.getItem("todos") === null) {
todos = [];
} else {
// If there is already a todo list, get it
todos = JSON.parse(localStorage.getItem("todos"));
}
todos.forEach((todo) => {
addListItem(todo?.task, todo?.time);
});
};
// on enter press
document.addEventListener("keydown", function (event) {
if (event.key === "Enter") {
addButton.click();
}
});
document.addEventListener("DOMContentLoaded", getTodos);
Shery.mouseFollower({
//Parameters are optional.
skew: false,
ease : "cubic-bezier(0.23, 1, 0.320, 1)",
duration: 0,
});
Shery.makeMagnet(".magnet-target" /* Element to target.*/, {
//Parameters are optional.
ease: "cubic-bezier(0.23, 1, 0.320, 1)",
duration: 1,
});