murmel-biblio-test / index.html
jgrivolla's picture
typo
a407bd4
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ page_title }}</title>
<style>
body { font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; }
select, input, button { margin: 10px 0; padding: 5px; }
#message { margin-top: 20px; font-weight: bold; }
</style>
</head>
<body>
<h1>{{ page_title }}</h1>
<h2>Buch zurückgeben</h2>
<input type="number" id="returnBookId" placeholder="Buchnummer eingeben">
<button onclick="returnBook()">Buch zurückgeben</button>
<h2>Buch ausleihen</h2>
<select id="groupSelect" onchange="loadStudents()">
<option value="">Gruppe auswählen</option>
</select>
<select id="studentSelect" onchange="loadOutstandingBooks()">
<option value="">Schüler auswählen</option>
</select>
<input type="number" id="borrowBookId" placeholder="Buchnummer eingeben">
<button onclick="borrowBook()">Buch ausleihen</button>
<div id="message"></div>
<div id="outstandingBooks"></div>
<script>
// Load groups when the page loads
window.onload = function() {
loadGroups();
document.getElementById('returnBookId').addEventListener('keyup', function(event) {
if (event.key === 'Enter') {
returnBook();
}
});
document.getElementById('borrowBookId').addEventListener('keyup', function(event) {
if (event.key === 'Enter') {
borrowBook();
}
});
};
function loadGroups() {
fetch('/groups')
.then(response => response.json())
.then(groups => {
const select = document.getElementById('groupSelect');
// Add "Alle Gruppen" option
const allGroupsOption = document.createElement('option');
allGroupsOption.value = "all";
allGroupsOption.textContent = "Alle Gruppen";
select.appendChild(allGroupsOption);
// Add other groups
groups.forEach(group => {
const option = document.createElement('option');
option.value = group.idGruppe;
option.textContent = group.Gruppe;
select.appendChild(option);
});
});
}
function loadStudents() {
const groupId = document.getElementById('groupSelect').value;
if (!groupId) return;
let url = groupId === 'all' ? '/students/all' : `/students/${groupId}`;
fetch(url)
.then(response => response.json())
.then(students => {
const select = document.getElementById('studentSelect');
select.innerHTML = '<option value="">Schüler auswählen</option>';
students.forEach(student => {
const option = document.createElement('option');
option.value = student.idKind;
option.textContent = student.Kind;
select.appendChild(option);
});
// Clear outstanding books when changing students
document.getElementById('outstandingBooks').innerHTML = '';
});
}
function loadOutstandingBooks() {
const studentId = document.getElementById('studentSelect').value;
if (!studentId) {
document.getElementById('outstandingBooks').innerHTML = '';
return;
}
fetch(`/borrowed/${studentId}`)
.then(response => response.json())
.then(books => {
const outstandingBooksDiv = document.getElementById('outstandingBooks');
if (books.length === 0) {
outstandingBooksDiv.innerHTML = '<p>Keine ausstehenden Bücher</p>';
} else {
let html = '<h3>Ausstehende Bücher:</h3><ul>';
books.forEach(book => {
const borrowDate = new Date(book.ausleihe).toLocaleDateString('de-DE');
html += `<li>Buch ID: ${book.idBuch}, Ausgeliehen am: ${borrowDate}</li>`;
});
html += '</ul>';
outstandingBooksDiv.innerHTML = html;
}
});
}
function returnBook() {
const bookId = document.getElementById('returnBookId').value;
if (!bookId) {
setMessage('Bitte geben Sie eine Buchnummer ein');
return;
}
fetch(`/return/${bookId}`)
.then(response => response.json())
.then(result => {
if (result.success) {
let message = `Buch (Nummer: ${bookId}) erfolgreich zurückgegeben.`;
if (result.student_names.length === 1) {
message += ` Ausgeliehen von: ${result.student_names[0]}`;
} else if (result.student_names.length > 1) {
message += ` Ausgeliehen von: ${result.student_names.join(', ')}`;
}
setMessage(message);
document.getElementById('returnBookId').value = ''; // Clear input field
} else {
setMessage(`Buch (Nummer: ${bookId}) nicht zurückgegeben. ` + result.message);
}
});
}
function borrowBook() {
const studentId = document.getElementById('studentSelect').value;
const bookId = document.getElementById('borrowBookId').value;
if (!studentId || !bookId) {
setMessage('Bitte wählen Sie einen Schüler aus und geben Sie eine Buchnummer ein');
return;
}
fetch(`/borrow/${bookId}/${studentId}`)
.then(response => response.json())
.then(result => {
if (result.success) {
setMessage(`Buch (Nummer: ${bookId}) erfolgreich ausgeliehen`);
document.getElementById('borrowBookId').value = ''; // Clear input field
} else {
setMessage('Fehler beim Ausleihen des Buches: ' + result.message);
}
// Refresh the outstanding books list
loadOutstandingBooks();
});
}
function setMessage(msg) {
document.getElementById('message').textContent = msg;
}
</script>
</body>
</html>