Skip to content

Commit e287a9b

Browse files
committed
14 - grocer bud id added
1 parent 9e8abd9 commit e287a9b

File tree

1 file changed

+33
-12
lines changed

1 file changed

+33
-12
lines changed

14-todo/final/app.js

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ const clearBtn = document.querySelector(".clear-btn");
1111
let editElement;
1212
let editFlag = false;
1313
let editValue = "";
14+
let editID = "";
1415
// ****** event listeners **********
1516

1617
// submit form
@@ -26,8 +27,13 @@ window.addEventListener("DOMContentLoaded", setupItems);
2627
function addItem(e) {
2728
e.preventDefault();
2829
const value = grocery.value;
30+
const id = new Date().getTime().toString();
31+
2932
if (value !== "" && !editFlag) {
3033
const element = document.createElement("article");
34+
let attr = document.createAttribute("data-id");
35+
attr.value = id;
36+
element.setAttributeNode(attr);
3137
element.classList.add("grocery-item");
3238
element.innerHTML = `<p class="title">${value}</p>
3339
<div class="btn-container">
@@ -56,13 +62,13 @@ function addItem(e) {
5662
// show container
5763
container.classList.add("show-container");
5864
// set local storage
59-
addToLocalStorage(value);
65+
addToLocalStorage(id, value);
6066
} else if (value !== "" && editFlag) {
6167
editElement.innerHTML = value;
6268
displayAlert("value changed", "success");
6369

6470
// edit local storage
65-
editLocalStorage(editValue, value);
71+
editLocalStorage(editID, value);
6672
setBackToDefault();
6773
} else {
6874
displayAlert("please enter value", "danger");
@@ -97,24 +103,29 @@ function clearItems() {
97103

98104
function deleteItem(e) {
99105
const element = e.currentTarget.parentElement.parentElement;
106+
const id = element.dataset.id;
107+
100108
list.removeChild(element);
101-
if (!list.hasChildNodes()) {
109+
110+
if (list.children.length === 0) {
102111
container.classList.remove("show-container");
103112
}
104113
displayAlert("item removed", "danger");
105114

106115
setBackToDefault();
107116
// remove from local storage
108-
removeFromLocalStorage(element.firstElementChild.textContent);
117+
removeFromLocalStorage(id);
109118
}
110119
// edit item
111120
function editItem(e) {
121+
const element = e.currentTarget.parentElement.parentElement;
112122
// set edit item
113123
editElement = e.currentTarget.parentElement.previousElementSibling;
114124
// set form value
115125
grocery.value = editElement.innerHTML;
116126
editFlag = true;
117127
editValue = editElement.innerHTML;
128+
editID = element.dataset.id;
118129
//
119130
submitBtn.textContent = "edit";
120131
}
@@ -123,13 +134,15 @@ function setBackToDefault() {
123134
grocery.value = "";
124135
editFlag = false;
125136
editValue = "";
137+
editID = "";
126138
submitBtn.textContent = "submit";
127139
}
128140

129141
// ****** local storage **********
130142

131143
// add to local storage
132-
function addToLocalStorage(grocery) {
144+
function addToLocalStorage(id, value) {
145+
const grocery = { id, value };
133146
let items = getLocalStorage();
134147
items.push(grocery);
135148
localStorage.setItem("list", JSON.stringify(items));
@@ -141,19 +154,23 @@ function getLocalStorage() {
141154
: [];
142155
}
143156

144-
function removeFromLocalStorage(grocery) {
157+
function removeFromLocalStorage(id) {
145158
let items = getLocalStorage();
159+
146160
items = items.filter(function (item) {
147-
return item !== grocery;
161+
if (item.id !== id) {
162+
return item;
163+
}
148164
});
165+
149166
localStorage.setItem("list", JSON.stringify(items));
150167
}
151-
function editLocalStorage(oldValue, newValue) {
168+
function editLocalStorage(id, value) {
152169
let items = getLocalStorage();
153170

154171
items = items.map(function (item) {
155-
if (item === oldValue) {
156-
item = newValue;
172+
if (item.id === id) {
173+
item.value = value;
157174
}
158175
return item;
159176
});
@@ -166,16 +183,20 @@ function editLocalStorage(oldValue, newValue) {
166183

167184
function setupItems() {
168185
let items = getLocalStorage();
186+
169187
if (items.length > 0) {
170188
items.forEach(function (item) {
171-
createListItem(item);
189+
createListItem(item.id, item.value);
172190
});
173191
container.classList.add("show-container");
174192
}
175193
}
176194

177-
function createListItem(value) {
195+
function createListItem(id, value) {
178196
const element = document.createElement("article");
197+
let attr = document.createAttribute("data-id");
198+
attr.value = id;
199+
element.setAttributeNode(attr);
179200
element.classList.add("grocery-item");
180201
element.innerHTML = `<p class="title">${value}</p>
181202
<div class="btn-container">

0 commit comments

Comments
 (0)