258 lines
9.1 KiB
JavaScript
258 lines
9.1 KiB
JavaScript
document.addEventListener("DOMContentLoaded", () => {
|
|
loadMitarbeiter();
|
|
});
|
|
|
|
function loadMitarbeiter() {
|
|
fetch("/Projekt_SE2/MitarbeiterDatenServlet")
|
|
.then(response => response.text())
|
|
.then(csv => {
|
|
const rows = csv.trim().split("\n").slice(1); // Überspringe die Kopfzeile
|
|
const tbody = document.querySelector("#mitarbeiterTabelle tbody");
|
|
tbody.innerHTML = "";
|
|
|
|
rows.forEach(row => {
|
|
const columns = row.split(",");
|
|
const tr = document.createElement("tr");
|
|
tr.innerHTML = `
|
|
<td>${columns[0]}</td> <!-- Mitarbeiter-Nr -->
|
|
<td>${columns[1]}</td> <!-- Vorname -->
|
|
<td>${columns[2]}</td> <!-- Nachname -->
|
|
<td>${columns[3]}</td> <!-- Telefon -->
|
|
<td>${columns[4]}</td> <!-- Email -->
|
|
<td>${columns[5]}</td> <!-- Straße -->
|
|
<td>${columns[6]}</td> <!-- Hausnummer -->
|
|
<td>${columns[7]}</td> <!-- Ort -->
|
|
<td>${columns[8]}</td> <!-- Passwort -->
|
|
<td>
|
|
<button onclick="bearbeitenMitarbeiter(${columns[0]})">Bearbeiten</button>
|
|
<button onclick="loeschenMitarbeiter(${columns[0]})">Löschen</button>
|
|
</td>
|
|
`;
|
|
tbody.appendChild(tr);
|
|
});
|
|
})
|
|
.catch(error => showPopup("Fehler beim Laden der Mitarbeiter: " + error.message));
|
|
}
|
|
|
|
function neuerMitarbeiter() {
|
|
document.getElementById("popupOverlay").style.display = "flex";
|
|
document.getElementById("popupMessage").innerText = "Neuen Mitarbeiter hinzufügen";
|
|
clearPopupFields();
|
|
|
|
document.getElementById("popupConfirmButton").onclick = () => {
|
|
const newMitarbeiter = {
|
|
vorname: document.getElementById("vorname").value.trim(),
|
|
nachname: document.getElementById("nachname").value.trim(),
|
|
telefonNr: document.getElementById("telefonNr").value.trim(),
|
|
email: document.getElementById("email").value.trim(),
|
|
strasse: document.getElementById("strasse").value.trim(),
|
|
hausnummer: document.getElementById("hausnummer").value.trim(),
|
|
ort: document.getElementById("ort").value.trim(),
|
|
password: document.getElementById("password").value.trim()
|
|
};
|
|
|
|
|
|
|
|
if (Object.values(newMitarbeiter).some(value => value === "")) {
|
|
showPopup("Fehler: Bitte alle Felder ausfüllen.");
|
|
return;
|
|
}
|
|
|
|
|
|
fetch("/Projekt_SE2/NeuerMitarbeiterServlet", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
},
|
|
body: new URLSearchParams(newMitarbeiter).toString()
|
|
})
|
|
.then(response => {
|
|
if (response.ok) {
|
|
loadMitarbeiter();
|
|
closePopup();
|
|
showPopup("Neuer Mitarbeiter erfolgreich hinzugefügt!");
|
|
} else {
|
|
showPopup("Fehler beim Hinzufügen des Mitarbeiters.");
|
|
}
|
|
})
|
|
.catch(error => showPopup("Fehler beim Hinzufügen: " + error.message));
|
|
};
|
|
}
|
|
|
|
|
|
function bearbeitenMitarbeiter(mitarbeiterNr) {
|
|
fetch(`/Projekt_SE2/AktualisiereDatenServlet?mitarbeiterNr=${mitarbeiterNr}`)
|
|
.then(response => response.text())
|
|
.then(csv => {
|
|
const rows = csv.trim().split("\n");
|
|
if (rows.length === 0 || rows[0] === "") {
|
|
throw new Error("Keine Mitarbeiterdaten gefunden.");
|
|
}
|
|
|
|
const mitarbeiterData = rows[0].split(",");
|
|
if (mitarbeiterData.length < 9) {
|
|
throw new Error("Ungültige CSV-Daten erhalten.");
|
|
}
|
|
|
|
// Felder mit den CSV-Daten füllen
|
|
document.getElementById("vorname").value = mitarbeiterData[1];
|
|
document.getElementById("nachname").value = mitarbeiterData[2];
|
|
document.getElementById("telefonNr").value = mitarbeiterData[3];
|
|
document.getElementById("email").value = mitarbeiterData[4];
|
|
document.getElementById("strasse").value = mitarbeiterData[5];
|
|
document.getElementById("hausnummer").value = mitarbeiterData[6];
|
|
document.getElementById("ort").value = mitarbeiterData[7];
|
|
document.getElementById("password").value = mitarbeiterData[8];
|
|
|
|
// Popup anzeigen
|
|
document.getElementById("popupOverlay").style.display = "flex";
|
|
document.getElementById("popupMessage").innerText = "Mitarbeiter bearbeiten";
|
|
|
|
// Speichern-Funktion setzen
|
|
document.getElementById("popupConfirmButton").onclick = () => {
|
|
saveMitarbeiter(mitarbeiterNr); // Erfolgsmeldung wird in saveMitarbeiter angezeigt
|
|
};
|
|
})
|
|
.catch(error => showPopup("Fehler beim Laden der Mitarbeiterdetails: " + error.message));
|
|
}
|
|
|
|
|
|
function saveMitarbeiter(mitarbeiterNr) {
|
|
// Debug-Ausgabe zur Verfolgung
|
|
// console.log("Speichern von Mitarbeiter:", mitarbeiterNr);
|
|
|
|
// Sammeln der Formulardaten
|
|
const formData = {
|
|
vorname: document.getElementById("vorname").value.trim(),
|
|
nachname: document.getElementById("nachname").value.trim(),
|
|
telefonNr: document.getElementById("telefonNr").value.trim(),
|
|
email: document.getElementById("email").value.trim(),
|
|
strasse: document.getElementById("strasse").value.trim(),
|
|
hausnummer: document.getElementById("hausnummer").value.trim(),
|
|
ort: document.getElementById("ort").value.trim(),
|
|
password: document.getElementById("password").value.trim()
|
|
};
|
|
|
|
// Validierung: Überprüfen, ob alle Felder ausgefüllt sind
|
|
const unfilledFields = Object.entries(formData).filter(([key, value]) => !value);
|
|
if (unfilledFields.length > 0) {
|
|
const fehlendeFelder = unfilledFields.map(([key]) => key).join(", ");
|
|
showPopup(`Fehler: Die folgenden Felder sind leer: ${fehlendeFelder}`);
|
|
return;
|
|
}
|
|
|
|
// URL je nach Kontext (Aktualisierung oder Neuerstellung)
|
|
const servletURL = mitarbeiterNr
|
|
? `/Projekt_SE2/AktualisiereDatenServlet`
|
|
: "/Projekt_SE2/NeuerMitarbeiterServlet";
|
|
|
|
// Bei Update wird die MitarbeiterNr angehängt
|
|
if (mitarbeiterNr) {
|
|
formData.mitarbeiterNr = mitarbeiterNr;
|
|
}
|
|
|
|
// Debug-Ausgabe der Daten
|
|
console.log("Gesendete Daten:", formData);
|
|
|
|
fetch(servletURL, {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
},
|
|
body: new URLSearchParams(formData).toString() // Daten in x-www-form-urlencoded-Format umwandeln
|
|
})
|
|
.then(response => {
|
|
if (!response.ok) {
|
|
// Fehlertext vom Server lesen
|
|
return response.text().then((text) => {
|
|
throw new Error(text);
|
|
});
|
|
}
|
|
const successMessage = mitarbeiterNr
|
|
? "Mitarbeiter erfolgreich aktualisiert!"
|
|
: "Neuer Mitarbeiter erfolgreich hinzugefügt!";
|
|
showPopup(successMessage);
|
|
closePopup();
|
|
loadMitarbeiter(); // Tabelle neu laden
|
|
})
|
|
.catch((error) => showPopup("Fehler beim Speichern: " + error.message));
|
|
}
|
|
|
|
|
|
// Mitarbeiter löschen
|
|
function loeschenMitarbeiter(mitarbeiterNr) {
|
|
const confirmation = confirm("Möchten Sie diesen Mitarbeiter wirklich löschen?");
|
|
if (confirmation) {
|
|
fetch(`/Projekt_SE2/LoeschenMitarbeiterServlet`, {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/x-www-form-urlencoded"
|
|
},
|
|
body: `mitarbeiterNr=${mitarbeiterNr}`
|
|
})
|
|
.then(response => {
|
|
if (response.ok) {
|
|
// Mitarbeiter erfolgreich gelöscht
|
|
alert("Mitarbeiter erfolgreich gelöscht!");
|
|
loadMitarbeiter(); // Aktualisiere die Tabelle
|
|
} else {
|
|
// Fehler vom Server lesen und anzeigen
|
|
return response.text().then((errorMessage) => {
|
|
showPopup("Fehler beim Löschen des Mitarbeiters: " + errorMessage);
|
|
});
|
|
}
|
|
})
|
|
.catch(error => {
|
|
// Netzwerk- oder andere Fehler anzeigen
|
|
showPopup("Fehler beim Löschen des Mitarbeiters: " + error.message);
|
|
});
|
|
}
|
|
}
|
|
|
|
// Neuer Mitarbeiter hinzufügen
|
|
|
|
// Popup schließen
|
|
function closePopup() {
|
|
document.getElementById("popupOverlay").style.display = "none";
|
|
clearPopupFields();
|
|
}
|
|
|
|
// Felder im Popup leeren
|
|
function clearPopupFields() {
|
|
document.getElementById("vorname").value = "";
|
|
document.getElementById("nachname").value = "";
|
|
document.getElementById("telefonNr").value = "";
|
|
document.getElementById("email").value = "";
|
|
document.getElementById("strasse").value = "";
|
|
document.getElementById("hausnummer").value = "";
|
|
document.getElementById("ort").value = "";
|
|
document.getElementById("password").value = "";
|
|
}
|
|
|
|
|
|
// Popup-Nachricht anzeigen
|
|
function showPopup(message) {
|
|
const popupOverlay = document.getElementById("popupOverlay");
|
|
const popupMessage = document.getElementById("popupMessage");
|
|
|
|
popupMessage.textContent = message;
|
|
popupOverlay.style.display = "flex";
|
|
}
|
|
|
|
// Popup-Nachricht mit Bestätigung anzeigen
|
|
function showPopupWithConfirmation(message, onConfirm) {
|
|
const popupOverlay = document.getElementById("popupOverlay");
|
|
const popupMessage = document.getElementById("popupMessage");
|
|
|
|
popupMessage.textContent = message;
|
|
|
|
const confirmButton = document.getElementById("popupConfirmButton");
|
|
confirmButton.style.display = "inline-block";
|
|
confirmButton.onclick = () => {
|
|
closePopup();
|
|
onConfirm();
|
|
};
|
|
|
|
popupOverlay.style.display = "flex";
|
|
}
|