11function 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}
1012function 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}
1820function 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}
4246function 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){
6368function 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+ }
79107let tasks = [ ] ;
80108let 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" ) ;
82115document . querySelector ( "#title" ) . innerHTML = title ;
83116document . querySelector ( "#plus-btn" ) . addEventListener ( "click" , uncollapseNewTaskSection ) ;
84117document . querySelector ( "#delete-btn" ) . addEventListener ( "click" , deleteTasks ) ;
85118document . querySelector ( "#change-title-btn" ) . addEventListener ( "click" , changeTitleForm ) ;
119+ createStoredTasks ( ) ;
86120countTasks ( ) ;
0 commit comments