chiark / gitweb /
check-bkp-status.in: JavaScript to expand/contract the log reports.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 6 Mar 2014 11:12:50 +0000 (11:12 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 6 Mar 2014 11:12:50 +0000 (11:12 +0000)
Should work without JavaScript.

check-bkp-status.in

index 6dd3efc91fc307550a73ce77f60180c3da0aaa94..3e1f71471e83edd9037248829c101b488635646f 100644 (file)
@@ -224,6 +224,14 @@ html_header () {
          overflow-y: auto;
        }
 
+       .hide { display: none; }
+       a.expand-button {
+         float: right;
+         font-size: medium;
+         font-weight: initial;
+         padding-top: 1ex;
+       }
+
        div.logdump-info {
          margin: 3ex 2em;
          padding: 1ex;
@@ -231,6 +239,51 @@ html_header () {
          border: solid thin black;
        }
   --></style>
+  <script type='text/javascript'><!--
+       var LAST_EXPAND = null;
+       function elt(id) { return document.getElementById(id); }
+       function add_elt_class(elt, cls) {
+         if (!elt.className.match('\\\\b' + cls + '\\\\b'))
+           elt.className += ' ' + cls;
+       }
+       function rm_elt_class(elt, cls) {
+         elt.className = elt.className.replace(
+           new RegExp('\\\\s*\\\\b' + cls + '\\\\b\\\\s*'), ' ');
+       }
+       function toggle_expand(ev, tag) {
+         var d = elt('logdump-' + tag);
+         var b = elt('expand-' + tag);
+         if (d.className.match(/\bhide\b/)) do_show(d, b);
+         else do_hide(d, b);
+         ev.preventDefault();
+       }
+       function do_show(d, b) {
+         rm_elt_class(d, 'hide');
+         b.textContent = '[hide]';
+       }
+       function do_hide(d, b) {
+         add_elt_class(d, 'hide');
+         b.textContent = '[show]';
+       }
+       function expand_log(tag) {
+         if (LAST_EXPAND !== null)
+           do_hide(LAST_EXPAND[0], LAST_EXPAND[1]);
+         var d = elt('logdump-' + tag);
+         var b = elt('expand-' + tag);
+         LAST_EXPAND = [d, b];
+         do_show(d, b);
+       }
+       function make_toggle_button(tag) {
+         document.write(
+           "<a class=expand-button id='expand-" + tag + "' href='#' " +
+              "onclick='toggle_expand(event, \"" + tag + "\")'>" +
+           "[show]" +
+           "</a>");
+       }
+       function hide_logdump(tag) {
+         add_elt_class(elt('logdump-' + tag), 'hide');
+       }
+  --></script>
 </head>
 <body>
 
@@ -255,7 +308,10 @@ EOF
 html_hosttbl_fs () {
   case $3 in
     winning) link="" knil="" ;;
-    *) link="<a href='#log-$host:$fs'>" knil="</a>";;
+    *)
+      link="<a href='#log-$host:$fs' onclick='expand_log(\"$host:$fs\")'>"
+      knil="</a>"
+      ;;
   esac
   cat <<EOF
   <tr class=fs>
@@ -279,19 +335,27 @@ EOF
 html_logdump_begin () {
   cat <<EOF
 
-<h2><a name='log-$1:$2'>Log tail for <tt>$1:$2</tt></a></h2>
+<h2 id='log-$1:$2'><a name='log-$1:$2'>Log tail for <tt>$1:$2</tt></a>
+<script type='text/javascript'><!--
+       make_toggle_button('$1:$2');
+--></script></h2>
 EOF
 }
 
 html_logdump_info () {
   cat <<EOF
-<div class=logdump-info>$3</div>
+<div id='logdump-$1:$2' class=logdump-info><script type='text/javascript'><!--
+       hide_logdump('$1:$2');
+--></script>$3</div>
 EOF
 }
 
 html_logdump_file () {
   cat <<EOF
-<pre class=logdump>
+<pre id='logdump-$1:$2' class=logdump>
+<script type='text/javascript'><!--
+       hide_logdump('$1:$2');
+--></script>$3</div>
 EOF
   cat "$3"
   cat <<EOF