From 46176c1741b4edad1a1992d12e3ae758e8b1531e Mon Sep 17 00:00:00 2001 From: AIIrondev Date: Sun, 28 Jun 2026 16:45:53 +0200 Subject: [PATCH] slight fixes --- Web/templates/library_table.html | 122 +++++++++++++++---------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/Web/templates/library_table.html b/Web/templates/library_table.html index f89fb71..80dfd1d 100644 --- a/Web/templates/library_table.html +++ b/Web/templates/library_table.html @@ -1209,28 +1209,21 @@ document.getElementById('editLibraryLocation').value = item.Ort || ''; document.getElementById('editLibraryDescription').value = item.Beschreibung || ''; - // Gruppen-Logik für die Anzeige der gesamten Range + // Gruppen-Info-Box Logik const warningDiv = document.getElementById('editLibraryGroupWarning'); const codesContainer = document.getElementById('editLibraryAllCodes'); if (item.SeriesGroupId) { - // Alle Mitglieder der Gruppe finden (sortiert nach SeriesPosition) const groupMembers = libraryItems .filter(i => i.SeriesGroupId === item.SeriesGroupId) .sort((a, b) => a.SeriesPosition - b.SeriesPosition); - // Codes für die Anzeige formatieren - const codesHtml = groupMembers.map(member => { - const isCurrent = member._id === itemId; - return ` - ${member.Code_4 || 'n/a'} - `; - }).join(''); - document.getElementById('editLibraryGroupCount').textContent = groupMembers.length; - codesContainer.innerHTML = codesHtml; + + codesContainer.innerHTML = groupMembers.map(member => { + const isCurrent = member._id === itemId; + return `${member.Code_4 || 'n/a'}`; + }).join(''); warningDiv.style.display = 'block'; } else { @@ -1244,56 +1237,63 @@ document.getElementById('editLibraryModal').style.display = 'none'; } - document.getElementById('editLibraryForm').addEventListener('submit', async function(e) { - e.preventDefault(); - - const itemId = document.getElementById('editLibraryItemId').value; - - // Daten sammeln - const updateData = { - id: itemId, - name: document.getElementById('editLibraryName').value, - item_type: document.getElementById('editLibraryType').value, - isbn: document.getElementById('editLibraryIsbn').value, - code_4: document.getElementById('editLibraryCode4').value, - ort: document.getElementById('editLibraryLocation').value, - beschreibung: document.getElementById('editLibraryDescription').value - }; - - // Fetch zum Backend - const response = await fetch('/api/update-item', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(updateData) - }); - - if (response.ok) { - // Lokale Synchronisierung im Array (für sofortiges UI-Update) - const editedItem = libraryItems.find(i => i._id === itemId); - if (editedItem && editedItem.SeriesGroupId) { - libraryItems.forEach(item => { - if (item.SeriesGroupId === editedItem.SeriesGroupId) { - // Alle Felder synchronisieren - item.Name = updateData.name; - item.ItemType = updateData.item_type; - item.ISBN = updateData.isbn; - item.Ort = updateData.ort; - item.Beschreibung = updateData.beschreibung; - - // Code nur für das aktive Item setzen - if (item._id === itemId) { - item.Code_4 = updateData.code_4; + // --- Sicherer Event-Listener für das Formular --- + document.addEventListener('DOMContentLoaded', function() { + const editForm = document.getElementById('editLibraryForm'); + + if (editForm) { + editForm.addEventListener('submit', async function(e) { + e.preventDefault(); + + const itemId = document.getElementById('editLibraryItemId').value; + const updateData = { + id: itemId, + name: document.getElementById('editLibraryName').value, + item_type: document.getElementById('editLibraryType').value, + isbn: document.getElementById('editLibraryIsbn').value, + code_4: document.getElementById('editLibraryCode4').value, + ort: document.getElementById('editLibraryLocation').value, + beschreibung: document.getElementById('editLibraryDescription').value + }; + + try { + const response = await fetch('/api/update-item', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(updateData) + }); + + if (response.ok) { + const editedItem = libraryItems.find(i => i._id === itemId); + + // Lokale Daten im Array synchronisieren + if (editedItem && editedItem.SeriesGroupId) { + libraryItems.forEach(item => { + if (item.SeriesGroupId === editedItem.SeriesGroupId) { + item.Name = updateData.name; + item.ItemType = updateData.item_type; + item.ISBN = updateData.isbn; + item.Ort = updateData.ort; + item.Beschreibung = updateData.beschreibung; + + if (item._id === itemId) item.Code_4 = updateData.code_4; + } + }); + } else if (editedItem) { + Object.assign(editedItem, updateData); } + + closeEditLibraryModal(); + // Optional: renderLibraryTable(); + } else { + const err = await response.json(); + alert('Fehler beim Speichern: ' + (err.error || 'Unbekannter Fehler')); } - }); - } else if (editedItem) { - // Einzel-Update - Object.assign(editedItem, updateData); - } - - closeEditLibraryModal(); - // Hier ggf. deine Render-Funktion aufrufen, um die Tabelle zu aktualisieren - renderLibraryTable(); + } catch (error) { + console.error('Fetch error:', error); + alert('Netzwerkfehler.'); + } + }); } });