@@ -18,11 +18,13 @@ function setUpPage() {
1818// Complete all Todo
1919
2020completeAllBtn . 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
6769function 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
7378function 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
7989function 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