<html>
    <head>
        <meta charset="utf-8"> 
        <title>Pixelserver Interface</title>
    </head>
    
    <body>
        <h1>Andreas <i>DEBUG</i> Interface</h1>

        <h2>Kommando:</h2>
        <div id='container' style="display: none;">
            <form id='in' onSubmit="return request()">
                <select id="list"></select>
                <input id="args" />
                <button id="execute">Ausführen</button>
            </form>
        </div>

        <h2>Gamma:</h2>
        <div id='container'>
            <form id='gammeform' onSubmit="return setgamma()">
                Rot: <input id="gammar" value=2.8 /><br/>
                Grün: <input id="gammag" value=2.65 /><br/>
                Blau: <input id="gammab" value=2.65 /><br/>
                <button id="sendgamma">Setzen</button>
            </form>
        </div>

        <h2>Log:</h2>
        <div id='log'>
            <textarea readonly id='logs' style="width: 500px; height: 500px;"></textarea>
        </div>
        <script>
            function getRaw(from, callback){
                var xhttp = new XMLHttpRequest();
                xhttp.onreadystatechange = function() {
                    if (this.readyState == 4 && this.status == 200) {
                        callback(xhttp.responseText);
                    }
                };
                xhttp.open("GET", from, true);
                xhttp.send();
            }

            function getJSON(from, callback){
                getRaw(from, function(text){
                    callback(JSON.parse(text));
                });
            }

            function post(from, data){
                var formdata = new FormData();
                for (var key in data) {
                    formdata.append(key, data[key]);
                }
                let xhttp = new XMLHttpRequest();
                xhttp.onreadystatechange = function() {
                    if (this.readyState == 4 && this.status == 200) {
                    }
                };
                xhttp.open("POST", from, true);
                xhttp.send(formdata);
            }

            function populateForm(parameters){
                let list = document.getElementById("list");
                  
                parameters.map ( e => {
                })
                for (var i in parameters) {
                    let app = parameters[i];
                    let name = app["name"];
                    let guiname = app["guiname"];
                    let persistent = app["persistent"];
                    let element = document.createElement("option");
                    element.value = name;
                    element.innerHTML = guiname;
                    element.dataset.persistent = persistent;
                    list.appendChild(element);
                }
                
                list.onchange = function(){
                    let app = document.getElementById('list');
                    let persistent = app.options[app.selectedIndex].dataset.persistent;
                    if (persistent == "true"){
                        document.getElementById("args").style.display = "none";
                    }else{
                        document.getElementById("args").style.display = "inline";
                    }
                }
                list.onchange();
                document.getElementById("container").style.display = "block";
            }

            function request(){
                let app = document.getElementById('list');
                let val = app.options[app.selectedIndex].value;
                let parameter = document.getElementById('args').value;
                let url = "/apps/start/" + val;
                post(url, {"param": parameter});
                return false;
            }

            function setgamma(){
                let r = document.getElementById('gammar').value;
                let g = document.getElementById('gammag').value;
                let b = document.getElementById('gammab').value;
                let url = "/setgamma/" + r+"/"+g+"/"+b;
                getRaw(url, function test(){});
                return false;
            }

            function updateLog(){
                getRaw("/apps/log", function(text){
                    document.getElementById('logs').innerText = text;
                });
            }
            updateLog();
            setInterval(updateLog, 1000);

            getJSON("/apps/list", populateForm);

        </script>
    </body>



</html>