-
Notifications
You must be signed in to change notification settings - Fork 0
/
todolist.js
147 lines (138 loc) · 4.49 KB
/
todolist.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
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
//getting dom elemetns
let taskbar=document.querySelector(".taskbar")
//button to submit task entered
let taskbtn=document.querySelector(".taskbtn")
//To clear all list items and localsotrage
let clearbtn=document.querySelector(".clearbtn")
// buttons to show completed, remainging,total tasks
let total_tasks=document.querySelector(".btn1")//total tasks
let completed_tasks=document.querySelector(".btn2")//completed tasks
let remaining_tasks=document.querySelector(".btn3") //remaining tasks
//box in which our list will be displayed
let tasksbox=document.querySelector(".tasksbox")
//li for creating list tag
let ourtasks=document.querySelector(".ourtasks")
//input checkbox
let checkbox_item=document.querySelector(".checkbox_item")
let updatebtn=document.querySelector(".updatebtn")
let tasks=JSON.parse(localStorage.getItem('tasks'))||[]
if(!Array.isArray(tasks)){
tasks=[]
}
//To get value from input field entered by user on click
taskbtn.addEventListener('click',(e)=>{
e.preventDefault()
const formattedvalue=taskbar.value.trim();
const value=formattedvalue.charAt(0).toUpperCase()+formattedvalue.slice(1)
taskbar.focus()
taskbar.value=''
if(value==''){
alert('tasks cannot be empty')
return
}
const createtasks={
id:new Date().getTime(),
name:value,
iscompleted:false
}
tasks.push(createtasks)
localStorage.setItem('tasks',JSON.stringify(tasks));
showtasks(createtasks)
count_tasks(tasks)
})
//to crerate data from localstorage
const showtasks=(taskid)=>{
const create_li_element=document.createElement('li')
create_li_element.setAttribute('id',taskid.id)
const markup=`
<div class="taskitem flex">
<li class="ourtasks"><input type="checkbox" class="checkbox_item" value="${taskid}"
id="${taskid.id}">${taskid.name}</li>
<ion-icon name="close-outline"
class="cuttask"></ion-icon>
<button type="text" class="updatebtn">update Task</button>
</div>`
create_li_element.innerHTML=markup
tasksbox.appendChild(create_li_element)
}
//if data is present then we will show that
if(localStorage.getItem('tasks')){
tasks.map((item)=>
showtasks(item))
}
// capture id to remove
tasksbox.addEventListener('click', (e) => {
// from here i have captures all id of list tags given in creating objects...
if (e.target.classList.contains('cuttask')) {
const taskid=e.target.closest('li').id
// based on id we will remove tasks..from taskbar
removetask(taskid)
}
});
// function to remove also from localstorage..
const removetask = (taskid) => {
// Remove from the array
tasks = tasks.filter((item) => item.id != parseInt(taskid));
// Update localstorage
localStorage.setItem('tasks', JSON.stringify(tasks));
// Remove from the page
document.getElementById(taskid).remove();
count_tasks(tasks)
completedtasks(tasks)
};
tasksbox.addEventListener('click', (e) => {
if (e.target.classList.contains('updatebtn')) {
const taskid = e.target.closest('li').id;
updatetask(taskid);
}
});
//to update .. this is also updating data in our local storage
const updatetask = (taskid) => {
const taskdata = tasks.find((item) => item.id === parseInt(taskid));
if (taskdata) {
const taskname = taskdata.name;
taskbar.value = taskname;
removetask(taskid)
taskbar.focus()
console.log(taskname);
}
};
// to find completed tasks
tasksbox.addEventListener('click',(e)=>{
if(e.target.classList.contains('checkbox_item')){
const checkboxid = e.target
completedtasks(checkboxid);
}
})
function completedtasks(checkboxid){
if(checkboxid.checked){
alert('Task completed..')
tasks.forEach((item)=>{
if(item.id===parseInt(checkboxid.id)){
item.iscompleted=true;
}
})
localStorage.setItem('tasks',JSON.stringify(tasks))
}
else{
localStorage.setItem('tasks',JSON.stringify(tasks))
}
}
// to count tasks and update them on buttons
function count_tasks(task){
let totallenght=task.length;
total_tasks.textContent=totallenght
let donetasks=tasks.filter((item)=>item.iscompleted).length
completed_tasks.textContent=donetasks
let lefttask=totallenght-donetasks
remaining_tasks.textContent=lefttask
}
//to clear all list & localstroages
function clearit(){
localStorage.clear()
tasks=[]
tasksbox.textContent=" "
completed_tasks.textContent="0"
total_tasks.textContent="0"
remaining_tasks.textContent="0"
}