i. Student-developed procedure
function formatBooks(books) {
var output = "";
for (var i = 0; i < books.length; i++) {
output += books[i].Title + " by " + books[i].Author + " (" + books[i].Year + "), Genre: " + books[i].Genre + ", Dewey: " + books[i].Dewey + "\n";
}
return output;
}
ii. Procedure Call
onEvent("submitSearchBtn", "click", function() {
var searchTerm = getText("searchInput").trim().toLowerCase();
var results = bookList.filter(function(book) {
return book.Title.toLowerCase().includes(searchTerm) ||
book.Author.toLowerCase().includes(searchTerm) ||
book.Genre.toLowerCase().includes(searchTerm);
});
if (results.length > 0) {
setText("searchResults", formatBooks(results));
} else {
setText("searchResults", "No books found.");
}
});
i. List
var bookList = [];
onEvent("submitBookBtn", "click", function() {
var title = getText("titleInput").trim();
var author = getText("authorInput").trim();
var genre = getText("genreInput").trim();
var year = getText("yearInput").trim();
if (!title || !author || !genre || !year) {
setText("outputArea", "Error: All fields are required!");
return;
}
if (isNaN(year)) {
setText("outputArea", "Error: Year must be a number.");
return;
}
var deweyCode = assignDewey(genre);
var book = { Title: title, Author: author, Genre: genre, Year: parseInt(year), Dewey: deweyCode };
bookList.push(book);
setText("outputArea", "Book added successfully: " + title + " (Dewey: " + deweyCode + ")");
clearTextFields();
});
ii. List being used
onEvent("submitDisplayBtn", "click", function() {
var genreFilter = getText("filterGenreInput").trim().toLowerCase();
var yearFilter = getText("filterYearInput").trim();
var results = bookList;
if (genreFilter) {
results = results.filter(function(book) {
return book.Genre.toLowerCase() === genreFilter;
});
}
if (yearFilter && !isNaN(yearFilter)) {
results = results.filter(function(book) {
return book.Year === parseInt(yearFilter);
});
}
if (results.length > 0) {
setText("showBooks", formatBooks(results));
} else {
setText("showBooks", "No books found.");
}
});