Skip to content
Snippets Groups Projects
Kunde.js 3.94 KiB
Newer Older
Omar Ibrahim Arfa's avatar
Omar Ibrahim Arfa committed
function loadData() {
    "use strict";
    var url = "./Kundenstatus.php";
    var request = new XMLHttpRequest();

    request.open("GET", url, true);

    request.onload = function () {

        if (request.readyState === 4 &&
            request.status >= 200 &&
            request.status < 300) {

            if (request.responseText != null) {

                var responseData = JSON.parse(request.responseText);
                console.log(responseData);
                process(responseData);
            } else {
                console.error ("Dokument ist leer");
            }
        } else {
            console.error("Statuscode: " + request.status);
        }
    };

    request.onerror = function () {
        "use strict";
        console.error("Netzwerkfehler");
    };

    //request.onreadystatechange = processData;

    request.send();
}

const newScript = document.createElement("script");
newScript.src = "./JS/OrderData.js";
newScript.type = "module";
document.getElementsByTagName("body")[0].prepend(newScript);


function process(data) {

    "use strict";

    const orderForm = document.getElementById("orderForm");
    if (orderForm != null) {

        while (orderForm.lastElementChild) {
            orderForm.removeChild(orderForm.lastElementChild);
        }


        for (let [orderingID, order] of Object.entries(data)) {

            let pizzaObj = {
                pizzaList: []
            };

            //orderForm.append(testBuildOrder(orderingID));

            let orderList = order["OrderList"]
            for (let [orderedArticleID, pizza] of Object.entries(orderList)) {

                let name = pizza["Name"];
                let price = parseFloat(pizza["Price"]);
                let status = parseInt(pizza["Status"]);

                let newPizza = {
                    orderedArticleID: orderedArticleID,
                    name: name,
                    price: price,
                    status: status
                };
                pizzaObj.pizzaList.push(newPizza);
            }
            buildOrder(orderForm, orderingID, pizzaObj);
        }

    }
}


window.onload = function () {

    "use strict";
    loadData();
}

window.setInterval (loadData, 2000);



function buildOrder(parentNode, id, pizzaObj) {
    "use strict";
    let orderMainNode = document.createElement("fieldset");
    orderMainNode.id = id;

    let orderLegend = document.createElement("legend");
    orderLegend.id = id + ".legend";
    orderLegend.innerText = "Bestellung " + id;

    orderMainNode.append(orderLegend);
    buildPizza(orderMainNode, pizzaObj);

    parentNode.append(orderMainNode);
}

function buildPizza(orderMainNode, pizzaObj) {
    "use strict";
    let pizzaList = pizzaObj.pizzaList;
    for (let pizza of pizzaList) {

        let pizzaName = pizza.name;
        let orderedArticleID = pizza.orderedArticleID;
        let pizzaStatus = pizza.status;

        let pizzaNode = document.createElement("fieldset");
        let pizzaLegend = document.createElement("legend");
        pizzaNode.id = "pizzaNode." + orderedArticleID;
        pizzaLegend.innerText = "Pizza " + pizzaName;
        pizzaNode.append(pizzaLegend);
        buildInputs(pizzaNode, orderedArticleID, pizzaStatus);
        orderMainNode.append(pizzaNode);
    }
}

function buildInputs(pizzaNode, orderedArticleID, status) {
    "use strict";
    let statusArray = [
        "Bestellt", "Im Ofen", "Fertig",
        "Unterwegs", "Geliefert"
    ];
    for (let value = 0; value < 5; value++) {
        let inputLabel = document.createElement("label");
        pizzaNode.append(inputLabel);
        inputLabel.innerText = statusArray[value];
        let inputRadio = document.createElement("input");
        inputLabel.append(inputRadio);
        inputRadio.type = "radio";
        inputRadio.name = orderedArticleID;
        inputRadio.value = value.toString();
        inputRadio.disabled = true;
        if (value === status) {
            inputRadio.checked = true;
        }
    }
}