Skip to content

Commit 2e38c94

Browse files
authored
Merge pull request #8 from lukeecart/save-task-state-to-local-storage
save task state to local storage
2 parents ad04d40 + ec38a93 commit 2e38c94

File tree

1 file changed

+25
-5
lines changed

1 file changed

+25
-5
lines changed

main.js

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@ function setUpPage() {
1818
// Complete all Todo
1919

2020
completeAllBtn.addEventListener('click', () => {
21-
let savedTasks = JSON.parse(localStorage.getItem('tasks'))
22-
21+
let savedTasks = JSON.parse(localStorage.getItem('tasks'));
22+
let taskTitles = document.querySelectorAll('.todo');
23+
2324
for (let i = 0, len = savedTasks.length; i < len; i++) {
2425
var check = document.getElementsByName("completed")[i];
2526
check.checked = "checked";
27+
updateTaskInStorage(taskTitles[i].innerHTML, true);
2628
}
2729
});
2830

@@ -65,21 +67,39 @@ function hidePage() {
6567
};
6668

6769
function createTodo(newTodo) {
70+
const isChecked = newTodo.isChecked ? 'checked' : '';
71+
const taskTitle = newTodo.title || newTodo;
6872
const demoTodo = document.createElement('LI');
69-
demoTodo.innerHTML = "<input type='checkbox' name='completed'> <p class='todo'>" + newTodo + "</p><i class='far fa-trash-alt delete'></i>";
73+
const createdElement = `<input type='checkbox' ${isChecked} name='completed' onchange='updateTaskInStorage("${taskTitle}")'> <p class='todo'>${taskTitle}</p><i class='far fa-trash-alt delete'></i>`;
74+
demoTodo.innerHTML = createdElement;
7075
todoContainer.appendChild(demoTodo);
7176
};
7277

7378
function saveTaskToStorage(addedTask) {
7479
let savedTasks = JSON.parse(localStorage.getItem('tasks')) || [];
75-
savedTasks.push(addedTask);
80+
const newTask = {
81+
id: Date.now(),
82+
title: addedTask,
83+
isChecked: false
84+
};
85+
savedTasks.push(newTask);
7686
localStorage.setItem('tasks', JSON.stringify(savedTasks));
7787
}
7888

7989
function deleteTaskFromStorage(removedTask) {
90+
console.log(removedTask);
8091
let savedTasks = JSON.parse(localStorage.getItem('tasks'));
8192
const newTaskList = savedTasks.filter(taskItem => {
82-
return taskItem !== removedTask;
93+
return taskItem.title !== removedTask;
8394
});
8495
localStorage.setItem('tasks', JSON.stringify(newTaskList));
8596
}
97+
98+
function updateTaskInStorage(completedTask, isCompleted) {
99+
let savedTasks = JSON.parse(localStorage.getItem('tasks'));
100+
const taskIndex = savedTasks.findIndex(taskItem => {
101+
return taskItem.title === completedTask;
102+
});
103+
savedTasks[taskIndex].isChecked = isCompleted || !savedTasks[taskIndex].isChecked;
104+
localStorage.setItem('tasks', JSON.stringify(savedTasks));
105+
}

0 commit comments

Comments
 (0)