-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
101 lines (81 loc) · 3.2 KB
/
index.js
File metadata and controls
101 lines (81 loc) · 3.2 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
document.addEventListener('DOMContentLoaded', function(){
const todoinput = document.getElementById('todo-input');
const addtaskbutton = document.getElementById('add-task-btn');
const todolist = document.getElementById('todo-list');
const removedlist = document.getElementById('removed-list');
let tasks = JSON.parse(localStorage.getItem('tasks')) || [];
let removedtasks = JSON.parse(localStorage.getItem('removed')) || [];
tasks.forEach(function(task){rendertask(task)});
removedtasks.forEach(function(remove){if (remove) renderremovedtask(remove)});
addtaskbutton.addEventListener('click',function(event){
event.preventDefault();
const tasktext = todoinput.value.trim();
if (tasktext == "") return;
const newtask = {
id: Date.now(),
text: tasktext,
completed: false
}
tasks.push(newtask);
savetasks();
todoinput.value = '';
rendertask(newtask);
})
function rendertask(task){
const li = document.createElement('li');
li.setAttribute('data-id', task.id);
if (task.completed) li.classList.add('completed');
li.innerHTML = `
<span>${task.text}</span>
<button id="remove">remove</button>
`;
li.addEventListener('click',function(event){
if (event.target.tagName === 'BUTTON') return;
task.completed = !task.completed;
li.classList.toggle('completed')
savetasks();
})
li.querySelector('#remove').addEventListener('click',function(event){
event.stopPropagation(); //prevent toggle from firing
for (let i = 0; i < tasks.length; i++){
if (tasks[i].id == task.id) removedtasks.push(task);
}
tasks = tasks.filter(t => t.id !== task.id);
li.remove();
savetasks();
saveremovedtasks();
renderremovedtask(task);
})
todolist.appendChild(li);
}
function renderremovedtask(removetask){
let li = document.createElement('li');
li.setAttribute('data-id', removetask.id);
li.innerHTML = `
<span>${removetask.text}</span>
<button id='restore'>restore</button>
<button id='delete'>delete</button>`;
li.querySelector('#restore').addEventListener('click', function(){
for (let i = 0; i < removedtasks.length; i++){
if (removetask.id == removedtasks[i].id) tasks.push(removetask);
}
removedtasks = removedtasks.filter((t) => t.id != removetask.id);
li.remove();
rendertask(removetask);
savetasks();
saveremovedtasks();
})
removedlist.appendChild(li);
li.querySelector('#delete').addEventListener('click', function(){
removedtasks = removedtasks.filter(t => t.id != removetask.id);
li.remove();
saveremovedtasks();
})
}
function savetasks(){
localStorage.setItem('tasks', JSON.stringify(tasks));
}
function saveremovedtasks(){
localStorage.setItem('removed', JSON.stringify(removedtasks));
}
})