This commit is contained in:
@@ -1523,12 +1523,18 @@
|
||||
document.getElementById('new-location-input').value = '';
|
||||
}
|
||||
|
||||
// Function to fetch book information from ISBN
|
||||
function fetchBookInfo(formType) {
|
||||
if (!libraryModuleEnabled) {
|
||||
// Globale Variablen definieren
|
||||
let currentFetchedIsbn = null;
|
||||
let currentBookData = null;
|
||||
|
||||
// Function to fetch book information from ISBN (an window gebunden)
|
||||
window.fetchBookInfo = function(formType) {
|
||||
// Sicherheitsprüfung, falls die Variable in manchen Ladezuständen nicht existiert
|
||||
if (typeof libraryModuleEnabled !== 'undefined' && !libraryModuleEnabled) {
|
||||
alert('Bibliotheks-Modul ist deaktiviert.');
|
||||
return;
|
||||
}
|
||||
|
||||
const isbnField = document.getElementById('isbn');
|
||||
const infoContainer = document.getElementById('book-info-container');
|
||||
|
||||
@@ -1537,13 +1543,25 @@
|
||||
return;
|
||||
}
|
||||
|
||||
const isbn = normalizeIsbnClient(isbnField.value);
|
||||
// Fallback, falls normalizeIsbnClient nicht geladen wurde
|
||||
const isbn = typeof normalizeIsbnClient === 'function' ? normalizeIsbnClient(isbnField.value) : isbnField.value.trim();
|
||||
|
||||
if (!isbn) {
|
||||
infoContainer.innerHTML = '<div class="error-message">Bitte geben Sie eine ISBN oder einen Barcode ein.</div>';
|
||||
currentFetchedIsbn = null;
|
||||
return;
|
||||
}
|
||||
|
||||
// FIX FÜR DAS DOPPELKLICK-PROBLEM:
|
||||
// Wenn die gleiche ISBN bereits geladen wurde, brechen wir hier ab,
|
||||
// um den Import-Button nicht durch das DOM-Refresh zu überschreiben.
|
||||
if (currentFetchedIsbn === isbn && currentBookData !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Setze aktuelle ISBN, um neue Anfragen während des Ladens zu blockieren
|
||||
currentFetchedIsbn = isbn;
|
||||
|
||||
// Show loading indicator
|
||||
infoContainer.innerHTML = '<div class="loading-spinner">Informationen werden abgerufen...</div>';
|
||||
|
||||
@@ -1562,6 +1580,7 @@
|
||||
.then(data => {
|
||||
if (data.error) {
|
||||
infoContainer.innerHTML = `<div class="error-message">${data.error}</div>`;
|
||||
currentFetchedIsbn = null; // Bei Fehler zurücksetzen
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1569,35 +1588,37 @@
|
||||
currentBookData = data;
|
||||
|
||||
// Display book information with import button
|
||||
// WICHTIG: onclick ruft jetzt explizit window.importBookInfo auf
|
||||
infoContainer.innerHTML = `
|
||||
<div class="book-info">
|
||||
<h4>${data.title}</h4>
|
||||
${data.authors ? `<p><strong>Autor(en):</strong> ${data.authors}</p>` : ''}
|
||||
${data.publisher ? `<p><strong>Verlag:</strong> ${data.publisher}</p>` : ''}
|
||||
${data.publishedDate ? `<p><strong>Erscheinungsdatum:</strong> ${data.publishedDate}</p>` : ''}
|
||||
${data.pageCount ? `<p><strong>Seitenanzahl:</strong> ${data.pageCount}</p>` : ''}
|
||||
${data.price ? `<p><strong>Preis:</strong> ${data.price}</p>` : ''}
|
||||
${data.thumbnail ? `<img src="${data.thumbnail}" alt="Buchcover" class="book-thumbnail">` : ''}
|
||||
${data.description ? `
|
||||
<div class="book-description">
|
||||
<h5>Beschreibung:</h5>
|
||||
<p>${data.description}</p>
|
||||
</div>
|
||||
` : ''}
|
||||
<button type="button" class="import-book-button" onclick="importBookInfo('${formType}')">
|
||||
Buchdaten in Formular übernehmen
|
||||
</button>
|
||||
</div>
|
||||
`;
|
||||
<div class="book-info">
|
||||
<h4>${data.title}</h4>
|
||||
${data.authors ? `<p><strong>Autor(en):</strong> ${data.authors}</p>` : ''}
|
||||
${data.publisher ? `<p><strong>Verlag:</strong> ${data.publisher}</p>` : ''}
|
||||
${data.publishedDate ? `<p><strong>Erscheinungsdatum:</strong> ${data.publishedDate}</p>` : ''}
|
||||
${data.pageCount ? `<p><strong>Seitenanzahl:</strong> ${data.pageCount}</p>` : ''}
|
||||
${data.price ? `<p><strong>Preis:</strong> ${data.price}</p>` : ''}
|
||||
${data.thumbnail ? `<img src="${data.thumbnail}" alt="Buchcover" class="book-thumbnail">` : ''}
|
||||
${data.description ? `
|
||||
<div class="book-description">
|
||||
<h5>Beschreibung:</h5>
|
||||
<p>${data.description}</p>
|
||||
</div>
|
||||
` : ''}
|
||||
<button type="button" class="import-book-button" onclick="window.importBookInfo('${formType}')">
|
||||
Buchdaten in Formular übernehmen
|
||||
</button>
|
||||
</div>
|
||||
`;
|
||||
})
|
||||
.catch(error => {
|
||||
infoContainer.innerHTML = `<div class="error-message">${error.message}</div>`;
|
||||
currentBookData = null;
|
||||
currentFetchedIsbn = null; // Bei Fehler zurücksetzen
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Function to import book information into form
|
||||
function importBookInfo(formType) {
|
||||
// Function to import book information into form (an window gebunden)
|
||||
window.importBookInfo = function(formType) {
|
||||
if (!currentBookData) {
|
||||
alert('Keine Buchdaten verfügbar zum Import.');
|
||||
return;
|
||||
@@ -1606,7 +1627,7 @@
|
||||
// Get form fields
|
||||
const nameField = document.getElementById('name');
|
||||
const descriptionField = document.getElementById('beschreibung');
|
||||
const priceField = document.getElementById('anschaffungskosten'); // <-- NEU
|
||||
const priceField = document.getElementById('anschaffungskosten');
|
||||
|
||||
if (!nameField || !descriptionField) {
|
||||
alert('Fehler: Formularfelder nicht gefunden.');
|
||||
@@ -1652,12 +1673,24 @@
|
||||
}
|
||||
|
||||
// Download and import book cover image if available
|
||||
// Sicherstellen, dass die Funktion nicht crasht, falls sie auf der Seite fehlt
|
||||
if (currentBookData.thumbnail) {
|
||||
downloadBookCover(currentBookData.thumbnail);
|
||||
if (typeof downloadBookCover === 'function') {
|
||||
try {
|
||||
downloadBookCover(currentBookData.thumbnail);
|
||||
} catch(e) {
|
||||
console.warn('Cover konnte nicht geladen werden:', e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Show success message
|
||||
const infoContainer = document.getElementById('book-info-container');
|
||||
|
||||
// Alte Erfolgsmeldung entfernen, um Doppelungen zu vermeiden
|
||||
const oldMessage = infoContainer.querySelector('.import-success-message');
|
||||
if (oldMessage) oldMessage.remove();
|
||||
|
||||
const successMessage = document.createElement('div');
|
||||
successMessage.className = 'import-success-message';
|
||||
successMessage.textContent = 'Buchdaten erfolgreich in das Formular übernommen!';
|
||||
@@ -1669,7 +1702,7 @@
|
||||
successMessage.parentNode.removeChild(successMessage);
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
};
|
||||
|
||||
function downloadBookCover(imageUrl) {
|
||||
if (!imageUrl) {
|
||||
|
||||
Reference in New Issue
Block a user