--- a/webcontrol/zml.html Thu May 18 13:38:45 2017 +0200
+++ b/webcontrol/zml.html Thu May 18 14:29:04 2017 +0200
@@ -21,17 +21,16 @@
</header>
<section id="status-box">
- <div id="main-status-box">
- </div>
- <div id="substatus-box">
-
- </div>
+ <div id="main-status-box"></div>
+ <div id="substatus-box"></div>
</section>
<section class="commands-box">
+ <h2>commandes :</h2>
+
<div id="mutable-cmd-box">
commande variable :
- <input id="mutable-cmd-txt">
+ <input id="mutable-cmd-input">
<button id="mutable-cmd-bt">
envoyer
</button>
--- a/webcontrol/zml.js Thu May 18 13:38:45 2017 +0200
+++ b/webcontrol/zml.js Thu May 18 14:29:04 2017 +0200
@@ -1,10 +1,10 @@
'use strict';
-var servers = [
+var gServers = [
{
name: 'bird',
- url: 'w:/192.168.0.10',
- websserver: null
+ url: 'ws:/192.168.0.10',
+ websocket: null,
},
//{
// name: "fox",
@@ -14,19 +14,106 @@
];
-var buttons = [
- {
- id: "bt_black",
- command: "black"
+//var gButtons = [
+// {
+// id: "bt_black",
+// command: "black"
+// }
+//];
+
+
+function $(expr) {
+ return document.querySelector(expr);
+}
+
+function $$(expr) {
+ return Array.from(document.querySelectorAll(expr));
+}
+
+function sendCommand(str) {
+ gServers.forEach(function(server) {
+ if (server.websocket && server.websocket.readyState == WebSocket.OPEN) {
+ server.websocket.send(str)
+ } else {
+ updateStatus();
+ }
+ });
+}
+
+function updateStatus() {
+ var nb_servers = gServers.length;
+ var nb_servers_ok = 0;
+
+ gServers.forEach(function(server) {
+ if (server.websocket && server.websocket.readyState == WebSocket.OPEN) {
+ nb_servers_ok++;
+ if (server.status_box) {
+ server.status_box.innerHTML =
+ '<span class="status-txt status-ok">OK</span>';
+ }
+ } else if (server.status_box) {
+ server.status_box.innerHTML =
+ '<span class="status-txt status-alert">KO</span>';
+ }
+ });
+
+ var main_status_box = $('#main-status-box');
+ if (!main_status_box)
+ return;
+
+ if (nb_servers_ok === 0) {
+ main_status_box.innerHTML =
+ '<big class="status-txt status-alert">! KO !</big>';
+ } else if (nb_servers === nb_servers_ok) {
+ main_status_box.innerHTML =
+ '<big class="status-txt status-ok">OK</big>';
+ } else if (nb_servers_ok < nb_servers) {
+ main_status_box.innerHTML =
+ '<big class="status-txt status-warning">warning !</big>';
}
-];
+}
function init() {
+ updateStatus();
+
+ var substatus_box = $('#substatus-box');
+ gServers.forEach(function(server) {
+ if (substatus_box) {
+ server.status_box = document.createElement('div');
+ server.status_box.className = 'substatus';
+ substatus_box.appendChild(server.status_box);
+ }
+ server.websocket = new WebSocket(server.url);
+ server.websocket.addEventListener('open', function (evt) {
+ updateStatus();
+ });
+ });
+
+ var mutable_bt = $('#mutable-cmd-bt');
+ var mutable_input = $('#mutable-cmd-input');
+ if (mutable_bt && mutable_input) {
+ mutable_bt.addEventListener('click', function(evt) {
+ cmd = mutable_input.value;
+
+ if (cmd)
+ sendCommand(cmd);
+ });
+ }
+
+ $$('.cmd-bt').forEach(function(elt) {
+ elt.addEventListener('click', function(evt) {
+ cmd = elt.getAttribute('data-cmd');
+ if (cmd)
+ sendCommand(cmd);
+ });
+ });
+
}
-document.addEventListener("DOMContentLoaded", function(e) {
+document.addEventListener('DOMContentLoaded', function(e) {
//console.log("DOM loaded");
+ init();
});