154 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			154 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html>
 | 
						|
    <head>
 | 
						|
        <link rel="stylesheet" href="css/style.css">
 | 
						|
        <link rel="stylesheet" href="css/slider.css">
 | 
						|
        <title id="title">3D Drucker</title>
 | 
						|
        <script type="text/javaScript">
 | 
						|
            const POWER_STATE_URL = "/power/state";
 | 
						|
            const DATA_STATE_URL = "/data/state";
 | 
						|
            const CAMERA_STATE_URL = "/camera/state";
 | 
						|
            const PRINTER_STATE_URL = "/printer/state";
 | 
						|
            function init() {
 | 
						|
                get_state(PRINTER_STATE_URL, "printer_slider");
 | 
						|
                get_state(POWER_STATE_URL, "power_slider");
 | 
						|
                get_state(DATA_STATE_URL, "data_slider");
 | 
						|
                get_state(CAMERA_STATE_URL, "camera_slider");
 | 
						|
                setInterval(poll, 1000);
 | 
						|
            }
 | 
						|
            function poll() {
 | 
						|
                get_state(PRINTER_STATE_URL, "printer_slider");
 | 
						|
                get_state(POWER_STATE_URL, "power_slider");
 | 
						|
                get_state(DATA_STATE_URL, "data_slider");
 | 
						|
                get_state(CAMERA_STATE_URL, "camera_slider");
 | 
						|
            }
 | 
						|
            function get_state(url, target) {
 | 
						|
                const xhr = new XMLHttpRequest();
 | 
						|
                xhr.open("GET", url);
 | 
						|
                xhr.send();
 | 
						|
                xhr.responseType = "json";
 | 
						|
                xhr.onload = () => {
 | 
						|
                    if (xhr.readyState == 4 && xhr.status == 200) {
 | 
						|
                        let state = xhr.response
 | 
						|
                        let btn = document.getElementById(target);
 | 
						|
                        let chk = false;
 | 
						|
                        if(state.state === "on") {
 | 
						|
                            chk = true;
 | 
						|
                        }
 | 
						|
                        btn.checked = chk;
 | 
						|
                        if(target === "printer_slider") {
 | 
						|
                            let containerstate = state.octoprint_containerstate;
 | 
						|
                            let container_name = document.getElementById("container_name");
 | 
						|
                            container_name.innerHTML = containerstate.name;
 | 
						|
                            let container_status = document.getElementById("container_status");
 | 
						|
                            container_status.innerHTML = containerstate.status;
 | 
						|
 | 
						|
                            let div_container = document.getElementById("containerdiv");
 | 
						|
                            if(containerstate.status === "off") {
 | 
						|
                                div_container.style.visibility = "hidden";
 | 
						|
                            } else {
 | 
						|
                                div_container.style.visibility = "visible";
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    } else {
 | 
						|
                        console.log(`Error: ${xhr.status}`);
 | 
						|
                    }
 | 
						|
                };
 | 
						|
            }
 | 
						|
            function check(checkbox, name) {
 | 
						|
                var obj;
 | 
						|
                var url;
 | 
						|
                if(checkbox.checked) {
 | 
						|
                    obj = '{"state":"on"}'
 | 
						|
                } else {
 | 
						|
                    obj = '{"state":"off"}'
 | 
						|
                }
 | 
						|
                if(name === "power") {
 | 
						|
                    url = POWER_STATE_URL;
 | 
						|
                } else if(name === "data") {
 | 
						|
                    url = DATA_STATE_URL;
 | 
						|
                } else if(name === "camera") {
 | 
						|
                    url = CAMERA_STATE_URL;
 | 
						|
                }else if(name === "printer") {
 | 
						|
                    url = PRINTER_STATE_URL;
 | 
						|
                }
 | 
						|
                const xhr = new XMLHttpRequest();
 | 
						|
                xhr.open("PATCH", url);
 | 
						|
                xhr.setRequestHeader("Content-type", "application/json; charset=utf-8");
 | 
						|
                xhr.send(obj);
 | 
						|
            }
 | 
						|
        </script>
 | 
						|
    </head>
 | 
						|
 | 
						|
    <body onload=init()>
 | 
						|
        <div class="headercontainer">
 | 
						|
            <!-- <div class="meta">
 | 
						|
                <div class="left" style="line-height: 24px;font-weight: bold;" id="headline">Wasser</div>
 | 
						|
                <div class="middle"></div>
 | 
						|
                <div class="right"><span></span></div>
 | 
						|
            </div> -->
 | 
						|
 | 
						|
            <!-- <div class="header" id="header_cnt">
 | 
						|
                <div class="headerlogo"><img src="images/logo_perinet.png" width="258" height="94" alt="" /></div>
 | 
						|
            </div> -->
 | 
						|
        </div>
 | 
						|
        <div id="content">
 | 
						|
            <div>
 | 
						|
                <h1>3D Drucker</h1>
 | 
						|
                <label class="switch">
 | 
						|
                    <input id="printer_slider" type="checkbox" onchange="check(this, 'printer')">
 | 
						|
                    <span class="slider round"></span>
 | 
						|
                </label>
 | 
						|
            </div>
 | 
						|
            <div>
 | 
						|
                <h2>Schalter</h2>
 | 
						|
                <table>
 | 
						|
                    <tr>
 | 
						|
                        <td>Strom:</td>
 | 
						|
                        <td>
 | 
						|
                            <label class="switch">
 | 
						|
                                <input id="power_slider" type="checkbox" onchange="check(this, 'power')">
 | 
						|
                                <span class="slider round"></span>
 | 
						|
                            </label>
 | 
						|
                        </td>
 | 
						|
                    </tr>
 | 
						|
                    <tr>
 | 
						|
                        <td>Daten:</td>
 | 
						|
                        <td>
 | 
						|
                            <label class="switch">
 | 
						|
                                <input id="data_slider" type="checkbox" onchange="check(this, 'data')">
 | 
						|
                                <span class="slider round"></span>
 | 
						|
                            </label>
 | 
						|
                        </td>
 | 
						|
                    </tr>
 | 
						|
                    <tr>
 | 
						|
                        <td>Kamera:</td>
 | 
						|
                        <td>
 | 
						|
                            <label class="switch">
 | 
						|
                                <input id="camera_slider" type="checkbox" onchange="check(this, 'camera')">
 | 
						|
                                <span class="slider round"></span>
 | 
						|
                            </label>
 | 
						|
                        </td>
 | 
						|
                    </tr>
 | 
						|
                </table>
 | 
						|
            </div>
 | 
						|
            <div id="containerdiv">
 | 
						|
                <h2>Octoprint Docker Container</h2>
 | 
						|
                <table>
 | 
						|
                    <tr>
 | 
						|
                        <td>Name:</td>
 | 
						|
                        <td id="container_name"></td>
 | 
						|
                    </tr>
 | 
						|
                    <tr>
 | 
						|
                        <td>Status:</td>
 | 
						|
                        <td id="container_status"></td>
 | 
						|
                    </tr>
 | 
						|
                </table>
 | 
						|
                <a href="http://p4:8082" target="_blank">Octoprint</a>
 | 
						|
                <br>
 | 
						|
                <a href="http://p4:8080" target="_blank">Camera</a>
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
    </body>
 | 
						|
</html>
 |