import { fetchData, postData, putData, deleteData } from "./api.js"; const urlParams = new URLSearchParams(window.location.search); let accounts = []; let editAccount = null; function start() { fetchData("accounts").then((data) => { extractAccounts(data, ""); const selectElement = document.getElementById("account-select"); accounts.forEach(element => { const option = document.createElement("option"); option.text = `${element.id} - ${element.name}`; option.value = element.value; selectElement.append(option); }); // Prüft ob ein Paramter vorhanden ist, wenn ja dann wird das Konto geladen und die Daten zum bearbeiten befüllt if (urlParams.get('account')) { fetchData(`accounts/${urlParams.get('account')}`).then((data) => { document.getElementById("number").value = data.number; document.getElementById("name").value = data.name; document.getElementById("description").value = data.description ? data.description : ""; document.getElementById("type").value = data.type; document.getElementById("account-select").value = data.qualifiedName.replace(`:${data.name}`, ""); console.log(data.qualifiedName.replace(`:${data.name}`, "")) editAccount = data; document.getElementById("submit").value = "speichern"; document.getElementById("delete").style.display = "block"; }); } }); } /** * Extrahiert die Kontodetails/namen und erstellt dazu ein neues Array * @param {array} data * @param {string} parentName */ function extractAccounts(data, parentName) { data.forEach(element => { let parentAccount = element.name; if (parentName !== "") parentAccount = `${parentName}:${parentAccount}` accounts.push({ id: element.number, name: element.name, value: parentAccount }); if (element.subaccounts.length > 0) { extractAccounts(element.subaccounts, parentAccount); } }); } /** * Eventhandler um den Vorgang abzubrechen und zurück zu Startseite zu navigieren */ document.getElementById("cancel").addEventListener("click", () => { window.location.href = "../index.html"; }); /** * Eventhandler um ein Konto zu löschen */ document.getElementById("delete").addEventListener("click", () => { if (editAccount && editAccount.entries.length > 0) { alert("Löschen nur möglich, wenn keine Buchungen stattgefunden haben und keine Unterkonten existieren"); return; } deleteData(`accounts/${urlParams.get('account')}`).then((response) => { if (response) window.location.href = "../index.html"; }); }); /** * Eventhandler um ein neues Konto anzulegen bzw. das Konto zu bearbeiten */ document.getElementById("submit").addEventListener("click", () => { if (editAccount && editAccount.entries.length > 0) { alert("Accountbearbeitung nur möglich, wenn keine Buchungen stattgefunden haben"); return; } const number = document.getElementById("number").value; const name = document.getElementById("name").value; const description = document.getElementById("description").value; const type = document.getElementById("type").value; const parentAccount = document.getElementById("account-select").value; const data = { "number": Number.parseInt(number), "name": name, "description": description, "type": type, "parentAccount": parentAccount } if (editAccount) { putData(`accounts/${urlParams.get('account')}`, data).then((response) => { if (response) window.location.href = "../index.html"; }); } else { postData("accounts", data).then((response) => { if (response) window.location.href = "../index.html"; }); } }); start();