-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
111 lines (104 loc) · 3.12 KB
/
app.js
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
//defining variables
const form_add=document.querySelector('#task-form');
const form_add_input=document.querySelector('#task');
const form_add_submit=document.querySelector('#add-task');
const collection_ul=document.querySelector('.collection');
const body=document.querySelector('body');
const clearTask=document.querySelector('.clear-tasks');
const filter=document.querySelector('#filter');
// console.log(form_add);
// console.log(form_add_input);
// console.log(form_add_submit);
form_add.addEventListener("submit",addTask);
collection_ul.addEventListener("click",removeTask);
clearTask.addEventListener('click',removeAll);
filter.addEventListener('keyup',filterTask);
getTask();
//addtask
function addTask(e) {
if (form_add_input.value===''){
alert('Please add a task');
return;
}
let li=document.createElement('li');
li.className='collection-item';
li.innerText=form_add_input.value;
let link=document.createElement('a');
link.className="delete-item secondary-content";
link.innerHTML='<i class="fa fa-remove" style="cursor:pointer"></i>';
li.appendChild(link);
taskLocalStorage(form_add_input.value);
collection_ul.appendChild(li);
form_add_input.value='';
e.preventDefault();
}
//removeTask
function removeTask(e) {
if(e.target.parentElement.classList.contains('delete-item')) {
if(confirm('Are You Sure?')) {
e.target.parentElement.parentElement.remove();
// Remove from LS
removeTaskFromLocalStorage(e.target.parentElement.parentElement);
}
}
}
function removeTaskFromLocalStorage(taskItem) {
let tasks;
if(localStorage.getItem('tasks') === null){
tasks = [];
} else {
tasks = JSON.parse(localStorage.getItem('tasks'));
}
tasks.forEach(function(task, index){
if(taskItem.textContent === task){
tasks.splice(index, 1);
}
});
localStorage.setItem('tasks', JSON.stringify(tasks));
}
function removeAll(e) {
if(e.target.classList.contains('clear-tasks')){
if (confirm('Do you want to delete all the tasks list ?')) {
while(collection_ul.firstChild){
collection_ul.removeChild(collection_ul.firstChild);
}
}
}
}
function filterTask(e){
const text=e.target.value.toLowerCase();
document.querySelectorAll('.collection-item').forEach(function(task){
const item=task.firstChild.textContent;
if(item.toLowerCase().indexOf(text)!=-1){
task.style.display='block';
}
else{
task.style.display='none';
}
});
}
//store task in local storage
function taskLocalStorage(task) {
let tasks;
if(localStorage.getItem('tasks')===null){
tasks=[];
}
else {
tasks=JSON.parse(localStorage.getItem('tasks'));
}
tasks.push(task);
localStorage.setItem('tasks',JSON.stringify(tasks));
}
function getTask(e){
let tasklist=JSON.parse(localStorage.getItem('tasks'));
for (i=0;i<tasklist.length;i++){
let li=document.createElement('li');
li.className='collection-item';
li.innerText=tasklist[i];
let link=document.createElement('a');
link.className="delete-item secondary-content";
link.innerHTML='<i class="fa fa-remove" style="cursor:pointer"></i>';
li.appendChild(link);
collection_ul.appendChild(li);
}
}