From 676eca81bcd808e8635a9e070e264944b2d7d3c4 Mon Sep 17 00:00:00 2001 From: sarawone Date: Tue, 15 Apr 2025 23:09:59 +0100 Subject: [PATCH 01/11] changing read status --- debugging/book-library/script.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 75ce6c1d..996264a1 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -54,7 +54,7 @@ function render() { let table = document.getElementById("display"); let rowsNumber = table.rows.length; //delete old table - for (let n = rowsNumber - 1; n > 0; n-- { + for (let n = rowsNumber - 1; n > 0; n--) { table.deleteRow(n); } //insert updated row and cells @@ -77,9 +77,9 @@ function render() { wasReadCell.appendChild(changeBut); let readStatus = ""; if (myLibrary[i].check == false) { - readStatus = "Yes"; - } else { readStatus = "No"; + } else { + readStatus = "Yes"; } changeBut.innerText = readStatus; From 3e9e6d8d2bbe00934b1afa2fc73889e12fb67cd0 Mon Sep 17 00:00:00 2001 From: sarawone Date: Tue, 15 Apr 2025 23:23:29 +0100 Subject: [PATCH 02/11] put the book info into the correct array --- debugging/book-library/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 996264a1..1fd9d12f 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -38,7 +38,7 @@ function submit() { return false; } else { let book = new Book(title.value, title.value, pages.value, check.checked); - library.push(book); + myLibrary.push(book); render(); } } From 688045e575f82bd5cf78d2e4c6ceaa71ef4ba578 Mon Sep 17 00:00:00 2001 From: sarawone Date: Tue, 15 Apr 2025 23:27:06 +0100 Subject: [PATCH 03/11] adding correct author name --- debugging/book-library/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 1fd9d12f..349cdc1c 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -37,7 +37,7 @@ function submit() { alert("Please fill all fields!"); return false; } else { - let book = new Book(title.value, title.value, pages.value, check.checked); + let book = new Book(title.value, author.value, pages.value, check.checked); myLibrary.push(book); render(); } From cdab5cd6e7abe2e90fa8385843e8f9d5041940f4 Mon Sep 17 00:00:00 2001 From: sarawone Date: Tue, 15 Apr 2025 23:31:00 +0100 Subject: [PATCH 04/11] fixing delete button --- debugging/book-library/script.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 349cdc1c..4dfcf74c 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -90,11 +90,11 @@ function render() { //add delete button to every row and render again let delButton = document.createElement("button"); - delBut.id = i + 5; - deleteCell.appendChild(delBut); - delBut.className = "btn btn-warning"; - delBut.innerHTML = "Delete"; - delBut.addEventListener("clicks", function () { + delButton.id = i + 5; + deleteCell.appendChild(delButton); + delButton.className = "btn btn-warning"; + delButton.innerHTML = "Delete"; + delButton.addEventListener("clicks", function () { alert(`You've deleted title: ${myLibrary[i].title}`); myLibrary.splice(i, 1); render(); From d80f7a88a42cda6bb503487880d001a38068f4c2 Mon Sep 17 00:00:00 2001 From: sarawone Date: Tue, 15 Apr 2025 23:43:09 +0100 Subject: [PATCH 05/11] add filter for author --- debugging/book-library/script.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 4dfcf74c..7276ce7c 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -29,10 +29,9 @@ const check = document.getElementById("check"); //via Book function and start render function function submit() { if ( - title.value == null || - title.value == "" || - pages.value == null || - pages.value == "" + !title.value || + !pages.value || + !author.value ) { alert("Please fill all fields!"); return false; From b4b548c39563e61c05afc2a6fcfc93a65d31605e Mon Sep 17 00:00:00 2001 From: sarawone Date: Wed, 16 Apr 2025 00:05:55 +0100 Subject: [PATCH 06/11] fixing event listener --- debugging/book-library/script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 7276ce7c..cf42a4e1 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -93,7 +93,7 @@ function render() { deleteCell.appendChild(delButton); delButton.className = "btn btn-warning"; delButton.innerHTML = "Delete"; - delButton.addEventListener("clicks", function () { + delButton.addEventListener("click", function () { alert(`You've deleted title: ${myLibrary[i].title}`); myLibrary.splice(i, 1); render(); From e90057bd45650da4ef589e2920e413b6db34d791 Mon Sep 17 00:00:00 2001 From: sarawone Date: Fri, 18 Apr 2025 23:16:09 +0100 Subject: [PATCH 07/11] fixing HTML tags --- debugging/book-library/index.html | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/debugging/book-library/index.html b/debugging/book-library/index.html index 23acfa71..9e4f244f 100644 --- a/debugging/book-library/index.html +++ b/debugging/book-library/index.html @@ -1,19 +1,14 @@ - + + - - + The Library App + + - + @@ -31,7 +26,7 @@

Library

Library /> Date: Fri, 18 Apr 2025 23:51:23 +0100 Subject: [PATCH 08/11] fixing submit function --- debugging/book-library/script.js | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index cf42a4e1..0418479a 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -20,26 +20,28 @@ function populateStorage() { } } -const title = document.getElementById("title"); -const author = document.getElementById("author"); -const pages = document.getElementById("pages"); +const titleInput = document.getElementById("title"); +const authorInput = document.getElementById("author"); +const pagesInput = document.getElementById("pages"); const check = document.getElementById("check"); //check the right input from forms and if its ok -> add the new book (object in array) //via Book function and start render function function submit() { - if ( - !title.value || - !pages.value || - !author.value - ) { - alert("Please fill all fields!"); - return false; - } else { + + const title = titleInput.value.trim(); + const author = authorInput.value.trim(); + const pages = Number(pagesInput.value); + + if (!title || !author || !pagesInput.value || !Number.isInteger(pages) || pages <= 0) { + alert("Please fill all fields correctly. Pages must be a positive integer."); + return; + } let book = new Book(title.value, author.value, pages.value, check.checked); myLibrary.push(book); render(); - } + + } function Book(title, author, pages, check) { From 4b724dc59d3df400392a95ef666e17f3ac2a39fd Mon Sep 17 00:00:00 2001 From: sarawone Date: Sat, 19 Apr 2025 00:30:25 +0100 Subject: [PATCH 09/11] fixing delete button & submit function --- debugging/book-library/script.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 0418479a..df5a91af 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -37,7 +37,7 @@ function submit() { alert("Please fill all fields correctly. Pages must be a positive integer."); return; } - let book = new Book(title.value, author.value, pages.value, check.checked); + let book = new Book(title, author, pages, check.checked); myLibrary.push(book); render(); @@ -90,12 +90,12 @@ function render() { }); //add delete button to every row and render again - let delButton = document.createElement("button"); - delButton.id = i + 5; - deleteCell.appendChild(delButton); - delButton.className = "btn btn-warning"; - delButton.innerHTML = "Delete"; - delButton.addEventListener("click", function () { + const deleteBtn = document.createElement("button"); + deleteBtn.className = "btn btn-warning"; + deleteBtn.textContent = "Delete"; + deleteCell.appendChild(deleteBtn); + + deleteBtn.addEventListener("click", function () { alert(`You've deleted title: ${myLibrary[i].title}`); myLibrary.splice(i, 1); render(); From 750b36a6580336856ce61cbc9cbf55369abac77c Mon Sep 17 00:00:00 2001 From: sarawone Date: Sat, 19 Apr 2025 00:41:57 +0100 Subject: [PATCH 10/11] fixing change Button --- debugging/book-library/script.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index df5a91af..9ee40bb6 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -72,19 +72,18 @@ function render() { pagesCell.innerHTML = myLibrary[i].pages; //add and wait for action for read/unread button - let changeBut = document.createElement("button"); - changeBut.id = i; - changeBut.className = "btn btn-success"; - wasReadCell.appendChild(changeBut); + const changeBtn = document.createElement("button"); + changeBtn.className = "btn btn-success"; + wasReadCell.appendChild(changeBtn); let readStatus = ""; if (myLibrary[i].check == false) { readStatus = "No"; } else { readStatus = "Yes"; } - changeBut.innerText = readStatus; + changeBtn.innerText = readStatus; - changeBut.addEventListener("click", function () { + changeBtn.addEventListener("click", function () { myLibrary[i].check = !myLibrary[i].check; render(); }); From ad458a16f34a51bb6e66751a3378fd5979fd547c Mon Sep 17 00:00:00 2001 From: sarawone Date: Sat, 19 Apr 2025 01:04:24 +0100 Subject: [PATCH 11/11] fixing render function --- debugging/book-library/script.js | 45 ++++++++++++++++---------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/debugging/book-library/script.js b/debugging/book-library/script.js index 9ee40bb6..1341b349 100644 --- a/debugging/book-library/script.js +++ b/debugging/book-library/script.js @@ -53,30 +53,29 @@ function Book(title, author, pages, check) { function render() { let table = document.getElementById("display"); - let rowsNumber = table.rows.length; - //delete old table - for (let n = rowsNumber - 1; n > 0; n--) { - table.deleteRow(n); - } - //insert updated row and cells - let length = myLibrary.length; - for (let i = 0; i < length; i++) { - let row = table.insertRow(1); - let titleCell = row.insertCell(0); - let authorCell = row.insertCell(1); - let pagesCell = row.insertCell(2); - let wasReadCell = row.insertCell(3); - let deleteCell = row.insertCell(4); - titleCell.innerHTML = myLibrary[i].title; - authorCell.innerHTML = myLibrary[i].author; - pagesCell.innerHTML = myLibrary[i].pages; + const oldTbody = table.querySelector("tbody"); + const newTbody = document.createElement("tbody"); + table.replaceChild(newTbody, oldTbody); + + myLibrary.forEach((book, index) => { + const row = newTbody.insertRow(); + + const titleCell = row.insertCell(0); + const authorCell = row.insertCell(1); + const pagesCell = row.insertCell(2); + const readCell = row.insertCell(3); + const deleteCell = row.insertCell(4); + + titleCell.textContent = book.title; + authorCell.textContent = book.author; + pagesCell.textContent = book.pages; //add and wait for action for read/unread button const changeBtn = document.createElement("button"); changeBtn.className = "btn btn-success"; - wasReadCell.appendChild(changeBtn); + readCell.appendChild(changeBtn); let readStatus = ""; - if (myLibrary[i].check == false) { + if (book.check == false) { readStatus = "No"; } else { readStatus = "Yes"; @@ -84,7 +83,7 @@ function render() { changeBtn.innerText = readStatus; changeBtn.addEventListener("click", function () { - myLibrary[i].check = !myLibrary[i].check; + book.check = !book.check; render(); }); @@ -95,9 +94,9 @@ function render() { deleteCell.appendChild(deleteBtn); deleteBtn.addEventListener("click", function () { - alert(`You've deleted title: ${myLibrary[i].title}`); - myLibrary.splice(i, 1); + alert(`You've deleted title: ${book.title}`); + myLibrary.splice(index, 1); render(); }); - } + }); }