| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- (function() {
- let orders = null;
- const appLoadingEle = document.getElementById("app-loading-display");
- const orderWrapperEle = document.getElementById("order-display");
- const orderEmptyTextEle = document.getElementById("order-empty-text");
- const orderTableEle = document.getElementById("order-table");
- const orderTableBodyEle = document.querySelector("#order-table tbody");
- const addOrderEle = document.getElementById("add-order-wrapper");
- const addOrderForm = document.getElementById("add-order-form");
- const orderIdField = document.getElementById("order-id");
- const productIdField = document.getElementById("product-id");
- const quantityField = document.getElementById("quantity");
- const amountField = document.getElementById("amount");
- const taxField = document.getElementById("tax");
- const shippingField = document.getElementById("shippingAmount");
- const shippingAddressField = document.getElementById("shippingAddress");
- function fetchOrders() {
- fetch("http://localhost:8080/orders")
- .then(r => r.json())
- .then(r => orders = r)
- .then(renderOrders)
- .catch((e) => {
- init();
- });
- }
- function init() {
- fetch("http://localhost:8080/init")
- .then(() => fetchOrders())
- .catch((e) => displayError(e));
- }
- function renderOrders() {
- appLoadingEle.classList.add("d-none");
- orderWrapperEle.classList.remove("d-none");
- addOrderEle.classList.remove("d-none");
- if (orders.length === 0) {
- orderEmptyTextEle.classList.remove("d-none");
- orderTableEle.classList.add("d-none");
- return;
- }
- orderEmptyTextEle.classList.add("d-none");
- orderTableEle.classList.remove("d-none");
- while (orderTableBodyEle.firstChild) {
- orderTableBodyEle.removeChild(orderTableBodyEle.firstChild);
- }
- orders.forEach((order) => {
- const orderId = order.order_id;
- const row = document.createElement("tr");
- row.appendChild(createCell(order.order_id));
- row.appendChild(createCell(order.product_id));
- row.appendChild(createCell(order.quantity));
- row.appendChild(createCell(order.amount));
- row.appendChild(createCell(order.shipping));
- row.appendChild(createCell(order.tax));
- row.appendChild(createCell(order.shipping_address));
- const actionCell = document.createElement("td");
- const deleteButton = document.createElement("button");
- deleteButton.classList.add(...["btn","btn-sm","btn-danger"]);
- deleteButton.innerText = "Delete";
- deleteButton.addEventListener("click", (e) => {
- e.preventDefault();
- deleteOrder(orderId);
- });
- actionCell.appendChild(deleteButton);
- row.appendChild(actionCell);
- orderTableBodyEle.appendChild(row);
- });
- }
- function createCell(contents) {
- const cell = document.createElement("td");
- cell.innerText = contents;
- return cell;
- }
- function deleteOrder(orderId) {
- fetch(`http://localhost:8080/delete_order?id=${orderId}`)
- .then(() => fetchOrders());
- }
- function displayError(err) {
- alert("Error:" + err);
- }
- function onAddFormSubmit(e) {
- e.preventDefault();
- const data = {
- order_id : parseFloat(orderIdField.value),
- product_id : parseFloat(productIdField.value),
- quantity : parseFloat(quantityField.value),
- amount : parseFloat(amountField.value),
- shipping : parseFloat(shippingField.value),
- tax : parseFloat(taxField.value),
- shipping_address : shippingAddressField.value,
- };
- fetch("http://localhost:8080/create_order", {
- method: "POST",
- body: JSON.stringify(data),
- headers: { "Content-type": "application/json" },
- }).then(() => fetchOrders())
- .then(() => resetAddOrderForm());
- alert("Order added");
- }
- function resetAddOrderForm() {
- orderIdField.value = "";
- productIdField.value = "";
- quantityField.value = "";
- amountField.value = "";
- shippingField.value = "";
- taxField.value = "";
- shippingAddressField.value = "";
- }
- fetchOrders();
- addOrderForm.addEventListener("submit", onAddFormSubmit);
- })();
|