monitoring: improve user interface
authorJosé Bollo <jose.bollo@iot.bzh>
Fri, 25 Aug 2017 08:45:03 +0000 (10:45 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Fri, 25 Aug 2017 08:56:56 +0000 (10:56 +0200)
- fix buttons
- manage scrolling
- added separators

Change-Id: I327a74d004ec33c41bb5e0dbc913bb02d9848878
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
test/monitoring/monitor-base.css
test/monitoring/monitor-demo.css
test/monitoring/monitor-pastel.css
test/monitoring/monitor.html
test/monitoring/monitor.js

index a394a44..0cbbe15 100644 (file)
@@ -8,9 +8,7 @@ body {
        right: 0px;
 }
 
-body.on #params,
-body.off #controls,
-body.off #logmsg-box { display: none; }
+body.on #params, body.off #main { display: none; }
 
 /*******************************************************************/
 /* head */
@@ -69,11 +67,33 @@ body.off #logmsg-box { display: none; }
        right: 0px;
        top: 0px;
        bottom: 0px;
+/*
        font-size: smaller;
        overflow: auto;
        margin-bottom: 75px;
+*/
 }
 
+#logmsgs-inner-box {
+       position: relative;
+       left: 0px;
+       right: 0px;
+       top: 0px;
+       bottom: 0px;
+}
+
+#logmsgs {
+       position: absolute;
+       left: 0px;
+       right: 0px;
+       top: 0px;
+       bottom: 0px;
+       font-size: smaller;
+       overflow: auto;
+       margin-bottom: 380px;
+}
+
+
 #trace-events {
        overflow: auto;
        position: absolute;
@@ -152,6 +172,10 @@ body.off #logmsg-box { display: none; }
        position: absolute;
 }
 
+.traceevent .content {
+       clear: both;
+}
+
 .traceevent {
        -webkit-user-select: none;
        -moz-user-select: none;
index b14ac1a..e692eae 100644 (file)
@@ -2,7 +2,9 @@
 /* top */
 body {
        margin: 2px;
-       background: url(content-background-car-wide.png) center/cover;
+       background-image: url(content-background-car-wide.png);
+       background-position: center;
+       background-size: cover;
        color: cyan;
        font-family: "Lucida Console", Monaco, monospace;
 }
@@ -39,8 +41,8 @@ body {
 
 
 #params {
-       border: dashed 4px red;
-       padding: 10px;
+       border: dashed 4px #8f8;
+       padding: 30px;
        margin: 10px;
        border-radius: 0px 50px;
 }
@@ -192,7 +194,14 @@ body {
 /*******************************************************************/
 /* open / close */
 
-.opclo { width: 10; height: 10; background-size: contain; background-color: cyan; border-radius: 3px; padding: 2px; }
+.opclo {
+       width: 10px;
+       height: 10px;
+       background-size: contain;
+       background-color: cyan;
+       border-radius: 3px;
+       padding: 2px;
+}
 
 .closed > .opclo { background-image: url(down.png); } 
 .opened > .opclo { background-image: url(up.png); }
@@ -208,6 +217,17 @@ body {
        border-radius: 0px 5px 5px 5px;
 }
 
+.separator {
+       margin: 8px 100px;
+       padding: 0px;
+       height: 2px;
+       background-color: cyan;
+}
+
+.traceevent.opened {
+       background-color: rgba(0,0,0,0.6);
+}
+
 /*
 .traceevent.request, .trace-box.request { background: #ffd: }
 .traceevent.daemon, .trace-box.daemon { background: #fdf; }
@@ -236,6 +256,10 @@ body {
        font-weight: bolder;
 }
 
+.traceevent.closed:hover {
+       cursor: pointer;
+}
+
 .traceevent.closed:hover .content {
        margin: 5px;
        padding: 5px;
@@ -269,6 +293,10 @@ body {
        padding: 0px;
 }
 
+a:link { color: cyan; }
+a:link:hover, a:active { color: white; }
+a:visited { color: #4d4; }
+
 /*******************************************************************/
 /* json format */
 
index 4de3730..0d561f0 100644 (file)
@@ -178,8 +178,15 @@ body {
 /*******************************************************************/
 /* open / close */
 
-.opclo { width: 16; height: 16; background-size: contain; } 
-.api > .opclo { background: #feb; border: solid 1px black; border-radius: 4px; } 
+.opclo {
+       width: 16px;
+       height: 16px;
+       background-size: contain;
+       background-color: #eec;
+       border-radius: 3px;
+       padding: 1px;
+       border: solid 1px black;
+}
 
 .closed > .opclo { background-image: url(down.png); } 
 .opened > .opclo { background-image: url(up.png); }
@@ -195,6 +202,13 @@ body {
        border-radius: 0px 5px 5px 5px;
 }
 
+.separator {
+       margin: 8px 100px;
+       padding: 0px;
+       height: 2px;
+       background-color: black;
+}
+
 .traceevent.request, .trace-box.request { background: #ffd; }
 .traceevent.daemon, .trace-box.daemon { background: #fdf; }
 .traceevent.service, .trace-box.service { background: #ddf; }
index 763bef2..70088dd 100644 (file)
@@ -3,6 +3,7 @@
     <title>Monitoring</title>
     <link href="monitor-base.css" rel="stylesheet">
     <link href="monitor-demo.css" rel="stylesheet">
+    <!--link href="monitor-pastel.css" rel="stylesheet"-->
     <script type="text/javascript" src="underscore-min.js"></script>
     <script type="text/javascript" src="AFB.js"></script>
     <script type="text/javascript" src="monitor.js"></script>
@@ -44,6 +45,8 @@
       </div>
       <div id="logmsg-box">
         <div id="disconnect" class="x-button">Disconnect</div>
+        <div id="autoscroll" class="x-button">Stop scroll</div>
+        <div id="addsep" class="x-button">Add separator</div>
         <div id="droptracevts" class="x-button">Clear traces</div>
         <div id="expert-pane" class="closed">
           <div class="opclo"></div>
           <div class="closedoff">
             <div id="stopmsgs" class="x-button">Stop logs</div>
             <div id="dropmsgs" class="x-button">Clear logs</div>
-            <div id="logmsgs"></div>
+            <div id="logmsgs-inner-box">
+              <div class="fillfix"></div>
+              <div id="logmsgs"></div>
+            </div>
           </div>
         </div>
       </div>
     </div>
   </template>
 
+<!-- template for SEPARATOR -->
+  <template id="t-separator">
+    <div class="separator"></div>
+  </template>
+
 
index 6926260..db7bc49 100644 (file)
@@ -8,10 +8,13 @@ var t_logmsg;
 var t_traceevent;
 var t_verbosity;
 var t_trace;
+var t_separator;
+
 var apis = {};
 var events = [];
 var inhibit = false;
 var msgs = false;
+var autoscroll = false;
 
 var root_node;
 var connected_node;
@@ -66,6 +69,7 @@ function init() {
        t_traceevent = at("t-traceevent").content.firstElementChild;
        t_verbosity = at("t-verbosity").content.firstElementChild;
        t_trace = at("t-trace").content.firstElementChild;
+       t_separator = at("t-separator").content.firstElementChild;
 
        root_node = at("root");
        connected_node = at("connected");
@@ -90,6 +94,9 @@ function init() {
        at("stopmsgs").onclick = toggle_logmsgs;
        start_logmsgs(false);
        trace_events_node.onclick = on_toggle_traceevent;
+       at("autoscroll").onclick = toggle_autoscroll;
+       start_autoscroll(true);
+       at("addsep").onclick = add_separator;
 
        connect();
 }
@@ -127,6 +134,21 @@ function onabort() {
        connected_node.className = "error";
 }
 
+function start_autoscroll(val) {
+       at("autoscroll").textContent = (autoscroll = val) ? "Stop scroll" : "Start scroll";
+}
+
+function toggle_autoscroll() {
+       start_autoscroll(!autoscroll);
+}
+
+function add_separator() {
+       var x = document.importNode(t_separator, true);
+       trace_events_node.append(x);
+       if (autoscroll)
+               x.scrollIntoView();
+}
+
 function start_logmsgs(val) {
        at("stopmsgs").textContent = (msgs = val) ? "Stop logs" : "Get logs";
 }
@@ -151,7 +173,9 @@ function add_logmsg(tag, content, add) {
        get(".close", x).onclick = function(evt){x.remove();};
        if (add)
                x.className = x.className + " " + add;
-       logmsgs_node.prepend(x);
+       logmsgs_node.append(x);
+       if (autoscroll)
+               x.scrollIntoView();
 }
 
 function add_error(tag, obj) {
@@ -380,6 +404,8 @@ function gottraceevent(obj) {
                makeobjitem(tab, 2, "data", data.data);
        get(".content", x).append(tab);
        trace_events_node.append(x);
+       if (autoscroll)
+               x.scrollIntoView();
 }
 
 function toggle_opened_closed(node, defval) {