Working ISBN scan

This commit is contained in:
BlipRanger
2024-08-25 00:36:41 -04:00
parent 78ca8f815a
commit 1870130b29
5 changed files with 174 additions and 18 deletions

View File

@@ -21,7 +21,10 @@
<div id="book-info"></div>
<div id="prompt">
<p id="prompt-message"></p>
<button id="confirm">Yes</button>
<p id="book-title"></p>
<p id="book-author"></p>
<p id="book-desc"></p>
<button id="confirm">Add to Database</button>
<button id="edit-title">No, I'll add a title</button>
</div>
<div id="title-input">

View File

@@ -89,6 +89,7 @@ async function fetchBookInfo(isbn) {
const bookData = await response.json();
if (bookData.title) {
bookData.isbn2 = isbn; // Add the ISBN to the book data
promptUserWithBook(bookData);
} else {
console.log("No book data found. Restarting scanner...");
@@ -101,12 +102,67 @@ async function fetchBookInfo(isbn) {
}
function promptUserWithBook(bookData) {
// Display book information or prompt the user for confirmation
document.getElementById('book-info').textContent = `Title: ${bookData.title}`;
document.getElementById('prompt').style.display = 'block';
// Additional logic for user confirmation can be added here
// Prepare the information to display in the confirm dialog
const title = bookData.title;
const authors = bookData.authors ? bookData.authors.join(', ') : 'Unknown Author';
const description = bookData.description || 'No description available';
// Combine the information into a single message
const message = `Title: ${title}\nAuthor(s): ${authors}\nDescription: ${description}\n\nDo you want to add this book to the database?`;
// Use the built-in confirm prompt to ask the user
const userConfirmed = confirm(message);
if (userConfirmed) {
console.log('User confirmed to add the book to the database.');
storeBookInDatabase(bookData);
} else {
console.log('User declined to add the book to the database.');
startScanner(); // Restart the scanner if the user declines
}
}
async function storeBookInDatabase(bookData) {
try {
const response = await fetch('/store-book', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
isbn: bookData.isbn || bookData.isbn2,
title: bookData.title,
authors: bookData.authors,
publishedDate: bookData.publishedDate,
description: bookData.description,
url: bookData.url,
number_of_pages: bookData.number_of_pages,
identifiers: bookData.identifiers,
publishers: bookData.publishers,
subjects: bookData.subjects,
notes: bookData.notes,
cover_small: bookData.cover_small,
cover_medium: bookData.cover_medium,
cover_large: bookData.cover_large
})
});
const result = await response.json();
if (result.success) {
alert('Book added to the database successfully!');
} else {
alert('Failed to add the book to the database.');
}
} catch (error) {
console.error('Error storing book in database:', error);
alert('An error occurred while storing the book.');
} finally {
startScanner(); // Restart the scanner after storing the book or handling errors
}
}
// Start the scanner when the start button is clicked
document.getElementById('start-scanner').addEventListener('click', startScanner);

View File

@@ -23,3 +23,12 @@ canvas.drawing, canvas.drawingBuffer {
#title-input {
display: none;
}
#prompt-message {
font-weight: bold;
}
#book-title, #book-author, #book-desc {
margin-top: 10px;
font-size: 16px;
}