Skip to content

Commit 76ef2db

Browse files
committed
Merge branch 'localStorage' into main
2 parents c1353c2 + 2c947ce commit 76ef2db

1 file changed

Lines changed: 42 additions & 8 deletions

File tree

src/script.js

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,26 @@
11
function countTasks(){
22
if (completedTasks.length > 0){
33
document.querySelector("#completed-task-number").innerHTML = completedTasks.length;
4+
localStorage.setItem("completedTasks", completedTasks.toString());
45
} else {document.querySelector("#completed-task-number").innerHTML = 0;}
56
if (tasks.length > 0){
67
document.querySelector("#task-number").innerHTML = tasks.length;
8+
localStorage.setItem("tasks", tasks.toString());
79
return tasks.length;
810
} else {document.querySelector("#task-number").innerHTML = 0;}
911
}
1012
function handleCompleted(event) {
1113
this.classList.add("checked");
1214
let number = this.id.replace(`check-`,'');
13-
let compleatedTask = document.querySelector(`#task-${number}`);
14-
completedTasks.push(compleatedTask);
15-
compleatedTask.classList.add("completed");
15+
let completedTask = document.querySelector(`#task-${number}-content`);
16+
completedTasks.push(`${number}`);
17+
completedTask.classList.add("completed");
1618
countTasks();
1719
}
1820
function createNewTask(content, number){
1921
let li = document.createElement("li");
2022
document.querySelector("#task-list").appendChild(li);
21-
li.innerHTML = `<button class="check" id="check-${number}"><i class="fas fa-check"></i></button>#${number}) ${content}<hr />`;
23+
li.innerHTML = `<button class="check" id="check-${number}"><i class="fas fa-check"></i></button><string id="task-${number}-content">${content}</string><hr />`;
2224
let identity = `task-${number}`;
2325
li.setAttribute(`id`, identity);
2426
document.querySelector(`#check-${number}`).addEventListener("click", handleCompleted);
@@ -27,7 +29,7 @@ function handleCreate(event){
2729
event.preventDefault();
2830
let newTask = document.querySelector("#new-task-input").value;
2931
if (newTask.length >= 1){
30-
tasks.push(newTask);
32+
tasks.push(`${newTask}`);
3133
let taskNumber = countTasks();
3234
createNewTask(newTask, taskNumber);
3335
}
@@ -36,7 +38,9 @@ function deleteTasks(event){
3638
event.preventDefault();
3739
document.querySelector("#task-list").innerHTML = null;
3840
tasks.length = 0;
41+
localStorage.removeItem("tasks");
3942
completedTasks.length = 0;
43+
localStorage.removeItem("completedTasks");
4044
countTasks();
4145
}
4246
function collapseNewTaskSection(event){
@@ -52,6 +56,7 @@ function uncollapseNewTaskSection(event){
5256
document.querySelector("#new-task-section").innerHTML =
5357
`<button class="plusBtn" id="plus-btn"><i class="fas fa-plus"></i></button>
5458
Create a new task
59+
To create multiple tasks at once seperate them with commas, click "Create new" button and refresh your page.<br />(This actually wasn't done on purpose.)<br />
5560
<button class="btn btn-danger" id="delete-btn" data-bs-toggle="tooltip" container="newTaskSection" title="This will delete ALL created tasks!">Delete All</button>
5661
<input type="text" id="new-task-input" class="form-control" autocomplete="off" placeholder="New Task">
5762
<button class="btn btn-primary" id="new-task-btn">Create New</button>`;
@@ -63,8 +68,12 @@ function uncollapseNewTaskSection(event){
6368
function changeTitle(event){
6469
let newTitle = document.querySelector("#change-title-input").value;
6570
if (newTitle.length > 0){
66-
title = newTitle;
67-
} else {title = "My To-Do List"}
71+
localStorage.setItem("title", `${newTitle}`);
72+
title = localStorage.getItem("title");
73+
} else {
74+
localStorage.setItem("title", "My To-Do List");
75+
title = localStorage.getItem("title");
76+
}
6877
document.querySelector("#title-section").innerHTML =
6978
`<h1 class="title" id="title">${title}</h1>
7079
<button class="changeTitle" id="change-title-btn" data-bs-toggle="tooltip" container="titleSection" title="Change your list title"><i class="fas fa-pencil-alt"></i></button>`;
@@ -76,11 +85,36 @@ function changeTitleForm(event){
7685
<button class="confirm" id="confirm-title"><i class="fas fa-check"></i></button>`;
7786
document.querySelector("#confirm-title").addEventListener("click", changeTitle);
7887
}
88+
function createStoredTasks(){
89+
if (storedTasks){
90+
tasks = storedTasks;
91+
for (let number = 0; number <= tasks.length-1; number++){
92+
let task = tasks[number];
93+
createNewTask(task, number+1);
94+
}
95+
if (storedCompletedTasks){
96+
completedTasks = storedCompletedTasks;
97+
completedTasks.forEach(function(completedTask){
98+
let idNumber = completedTask;
99+
let check = document.querySelector(`#check-${idNumber}`);
100+
let task = document.querySelector(`#task-${idNumber}-content`);
101+
check.classList.add("checked");
102+
task.classList.add("completed");
103+
});
104+
}
105+
}
106+
}
79107
let tasks = [];
80108
let completedTasks = [];
81-
let title = "My To-Do List";
109+
let storedTasks = localStorage.getItem("tasks");
110+
if (storedTasks){storedTasks = storedTasks.split(",");}
111+
let storedCompletedTasks = localStorage.getItem("completedTasks");
112+
if (storedCompletedTasks){storedCompletedTasks = storedCompletedTasks.split(",");}
113+
if (localStorage.getItem("title").value = 0){localStorage.setItem("title", "My To-Do List");}
114+
let title = localStorage.getItem("title");
82115
document.querySelector("#title").innerHTML = title;
83116
document.querySelector("#plus-btn").addEventListener("click", uncollapseNewTaskSection);
84117
document.querySelector("#delete-btn").addEventListener("click", deleteTasks);
85118
document.querySelector("#change-title-btn").addEventListener("click", changeTitleForm);
119+
createStoredTasks();
86120
countTasks();

0 commit comments

Comments
 (0)