namespace frontShop { interface Products { [type: string]: string | number; } let serverUrl: string = "https://theoneandgis.herokuapp.com"; init(); async function init(): Promise { await getOrderList(); addListening(); fixCartCount(); } async function getOrderList(): Promise { let url: string = serverUrl + "/mongo/orders/findCollection" + "?"; let response: Response = await fetch(url); let jsonResponse: Products[] = await response.json(); let previousNr: number = -1; //(document.querySelector("#tableDiv")).innerHTML = JSON.stringify(jsonResponse); for (const iterator of jsonResponse) { if (iterator.orderCount != undefined) continue; let table: HTMLTableElement = document.createElement("table"); if (previousNr != iterator.Nr) { let button: HTMLButtonElement = document.createElement("button"); button.setAttribute("content", `${iterator.Nr}`); button.classList.add("removeButton"); button.innerHTML = `Bestellung Nr. ${iterator.Nr} entfernen`; (document.querySelector("#tableDiv")).append(button); previousNr = iterator.Nr; } if (!(iterator.vorname == undefined)) { table.innerHTML = ` Bestellung Nr. ${iterator.Nr} Preis ${iterator.orderPrice} € Name ${iterator.vorname} ${iterator.nachname} Straße ${iterator.straße} Wohnort ${iterator.postleitzahl} `; } else { table.innerHTML += ` Bestellung Nr. ${iterator.Nr} Preis ${iterator.productPrice}€ `; for (const key in iterator) { switch (key) { case ("container"): table.innerHTML += `${key}${iterator.container}`; break; case ("flavour1"): table.innerHTML += `${key}${iterator.flavour1}`; break; case ("flavour2"): table.innerHTML += `${key}${iterator.flavour2}`; break; case ("flavour3"): table.innerHTML += `${key}${iterator.flavour3}`; break; case ("flavour4"): table.innerHTML += `${key}${iterator.flavour4}`; break; case ("flavour5"): table.innerHTML += `${key}${iterator.flavour5}`; break; case ("flavour6"): table.innerHTML += `${key}${iterator.flavour6}`; break; case ("topping1"): table.innerHTML += `${key}${iterator.topping1}`; break; case ("topping2"): table.innerHTML += `${key}${iterator.topping2}`; break; case ("topping3"): table.innerHTML += `${key}${iterator.topping3}`; break; } } } (document.querySelector("#tableDiv")).append(table); let div: HTMLDivElement = document.createElement("div"); div.classList.add("buttonDiv"); div.innerHTML = ` `; (document.querySelector("#tableDiv")).append(div); } } function addListening(): void { let elementList: NodeListOf = document.querySelectorAll(".removeOne"); for (const iterator of elementList) iterator.addEventListener("click", removeDataID); let elementList2: NodeListOf = document.querySelectorAll(".removeButton"); for (const iterator of elementList2) iterator.addEventListener("click", removeDataNR); let elementList3: NodeListOf = document.querySelectorAll(".editOne"); for (const iterator of elementList3) iterator.addEventListener("click", editData); } async function removeDataID(_event: Event): Promise { await removeData(_event, "id"); } async function removeDataNR(_event: Event): Promise { await removeData(_event, "order"); } async function removeData(_event: Event, _parameter: string): Promise { let target: HTMLElement = (_event.target); let query: string = ""; if (_parameter == "id") query = `_id=${target.getAttribute("content")!}`; else if (_parameter == "order") query = `Nr=${target.getAttribute("content")!}`; console.log(query); let url: string = serverUrl + "/mongo/orders/removeEntry/?" + query; await fetch(url); location.reload(); } function editData(_event: Event): void { let target: HTMLElement = (_event.target); let obj: Products = JSON.parse(target.getAttribute("content")!); let div: HTMLDivElement = document.createElement("div"); div.setAttribute("id", "formDiv"); div.innerHTML = `
`; if ((document.querySelector("#myForm")) != null) (document.querySelector("#tableDiv")).removeChild(div); (document.querySelector("#tableDiv")).append(div); for (const iterator in obj) { let label: HTMLLabelElement = document.createElement("label"); label.setAttribute("for", iterator); label.innerHTML = `${iterator}`; let input: HTMLInputElement = document.createElement("input"); input.setAttribute("type", "text"); input.setAttribute("name", `${iterator}`); input.setAttribute("id", `${iterator}`); input.setAttribute("value", obj[iterator]); if (iterator == "_id") { input.setAttribute("readonly", ""); } else { input.setAttribute("onfocus", `if(this.value == "${obj[iterator]}") this.value=""`); input.setAttribute("onblur", `if(this.value == "") this.value="${obj[iterator]}"`); } (document.querySelector("#myForm")).append(label); (document.querySelector("#myForm")).append(input); } let button: HTMLButtonElement = document.createElement("button"); button.setAttribute("id", "setAttribute"); button.innerHTML = "Bestätigung"; button.addEventListener("click", confirmForm); (document.querySelector("#myForm")).append(button); } async function confirmForm(): Promise { let formData: FormData = new FormData(document.forms[0]); let url: string = ""; //tslint:disable-next-line: no-any let query: URLSearchParams = new URLSearchParams(formData); url = serverUrl + "/" + "mongo" + "/" + "orders" + "/" + "updateEntry" + "/" + "?" + query.toString(); await fetch(url); } function fixCartCount(): void { if (localStorage["CartCount"] != undefined) localStorage.removeItem("CartCount"); let count: number = 0; for (const key in localStorage) { if (key.includes("Combination")) { count++; } } localStorage.setItem("CartCount", `${count}`); (document.querySelector("#warenkorb span")).innerHTML = `${localStorage.CartCount}`; } }