couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cml...@apache.org
Subject svn commit: r737829 - in /couchdb/trunk/share/www: _sidebar.html script/jquery.couch.js status.html style/layout.css
Date Mon, 26 Jan 2009 20:38:53 GMT
Author: cmlenz
Date: Mon Jan 26 20:38:52 2009
New Revision: 737829

URL: http://svn.apache.org/viewvc?rev=737829&view=rev
Log:
Add a page to Futon that shows the currently active tasks (compaction, view indexing, etc).

Added:
    couchdb/trunk/share/www/status.html   (with props)
Modified:
    couchdb/trunk/share/www/_sidebar.html
    couchdb/trunk/share/www/script/jquery.couch.js
    couchdb/trunk/share/www/style/layout.css

Modified: couchdb/trunk/share/www/_sidebar.html
URL: http://svn.apache.org/viewvc/couchdb/trunk/share/www/_sidebar.html?rev=737829&r1=737828&r2=737829&view=diff
==============================================================================
--- couchdb/trunk/share/www/_sidebar.html (original)
+++ couchdb/trunk/share/www/_sidebar.html Mon Jan 26 20:38:52 2009
@@ -5,8 +5,9 @@
   <ul id="nav">
     <li><span>Tools</span><ul>
       <li><a href="index.html">Overview</a></li>
-      <li><a href="replicator.html">Replicator</a></li>
       <li><a href="config.html">Configuration</a></li>
+      <li><a href="replicator.html">Replicator</a></li>
+      <li><a href="status.html">Status</a></li>
       <li><a href="couch_tests.html?script/couch_tests.js">Test Suite</a></li>
     </ul></li>
     <li><span>Recent Databases</span>

Modified: couchdb/trunk/share/www/script/jquery.couch.js
URL: http://svn.apache.org/viewvc/couchdb/trunk/share/www/script/jquery.couch.js?rev=737829&r1=737828&r2=737829&view=diff
==============================================================================
--- couchdb/trunk/share/www/script/jquery.couch.js [utf-8] (original)
+++ couchdb/trunk/share/www/script/jquery.couch.js [utf-8] Mon Jan 26 20:38:52 2009
@@ -14,6 +14,24 @@
   $.couch = $.couch || {};
   $.extend($.couch, {
 
+    activeTasks: function(options) {
+      options = options || {};
+      $.ajax({
+        type: "GET", url: "/_active_tasks", dataType: "json",
+        complete: function(req) {
+          var resp = $.httpData(req, "json");
+          if (req.status == 200) {
+            if (options.success) options.success(resp);
+          } else  if (options.error) {
+            options.error(req.status, resp.error, resp.reason);
+          } else {
+            alert("Active task status could not be retrieved: " +
+              resp.reason);
+          }
+        }
+      });
+    },
+
     allDbs: function(options) {
       options = options || {};
       $.ajax({

Added: couchdb/trunk/share/www/status.html
URL: http://svn.apache.org/viewvc/couchdb/trunk/share/www/status.html?rev=737829&view=auto
==============================================================================
--- couchdb/trunk/share/www/status.html (added)
+++ couchdb/trunk/share/www/status.html Mon Jan 26 20:38:52 2009
@@ -0,0 +1,106 @@
+<!DOCTYPE html>
+<!--
+
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License.  You may obtain a copy of the
+License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+CONDITIONS OF ANY KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations under the License.
+
+-->
+<html lang="en">
+  <head>
+    <title>Status</title>
+    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+    <link rel="stylesheet" href="style/layout.css?0.9.0" type="text/css">
+    <script src="script/json2.js"></script>
+    <script src="script/jquery.js?1.3.1"></script>
+    <script src="script/jquery.cookies.js?0.9.0"></script>
+    <script src="script/jquery.couch.js?0.9.0"></script>
+    <script src="script/futon.js?0.9.0"></script>
+  </head>
+  <body><div id="wrap">
+    <h1>
+      <a href="index.html">Overview</a>
+      <strong>Status</strong>
+    </h1>
+    <div id="content">
+      <div id="interval">
+        <label>Poll interval:
+          <input type="range" min="1" max="30" value="5" size="3">
+          <span class="secs">5</span> second(s)
+        </label>
+      </div>
+      <table id="status" class="listing" cellspacing="0">
+        <caption>Active Tasks</caption>
+        <thead><tr>
+          <th>Type</th>
+          <th>Object</th>
+          <th>PID</th>
+          <th>Status</th>
+        </tr></thead>
+        <tbody class="content"></tbody>
+      </table>
+
+    </div>
+  </div></body>
+  <script>
+    var refreshTimeout = null;
+
+    function refresh() {
+      $.couch.activeTasks({
+        success: function(tasks) {
+          clearTimeout(refreshTimeout);
+          $("#status tbody.content").empty();
+          if (!tasks.length) {
+            $("<tr class='none'><th colspan='4'>No tasks running</th></tr>")
+              .appendTo("#status tbody.content");
+          } else {
+            $.each(tasks, function(idx, task) {
+              $("<tr><th></th><td class='object'></td><td
class='pid'></td><td class='status'></td></tr>")
+                .find("th").text(task.type).end()
+                .find("td.object").text(task.task).end()
+                .find("td.pid").text(task.pid).end()
+                .find("td.status").text(task.status).end()
+                .appendTo("#status tbody.content");
+            });
+          }
+          refreshTimeout = setTimeout(refresh,
+            parseInt($("#interval input").val(), 10) * 1000);
+        }
+      });
+    }
+
+    function updateInterval(value) {
+      if (isNaN(value)) {
+        value = 5;
+        $("#interval input").val(value);
+      }
+      $("#interval .secs").text(value);
+      refresh();
+      $.cookies.set("pollinterval", value);
+    }
+
+    $(function() {
+      var slider = $("#interval input");
+      slider.val(parseInt($.cookies.get("pollinterval", "5")) || 5);
+      if (slider[0].type == "range") {
+        slider.bind("input", function() {
+          updateInterval(this.value);
+        });
+        $("#interval .secs").text($("#interval input").val());
+      } else {
+        slider.bind("change", function() {
+          updateInterval(this.value);
+        });
+        $("#interval .secs").hide();
+      }
+      refresh();
+    });
+  </script>
+</html>

Propchange: couchdb/trunk/share/www/status.html
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: couchdb/trunk/share/www/style/layout.css
URL: http://svn.apache.org/viewvc/couchdb/trunk/share/www/style/layout.css?rev=737829&r1=737828&r2=737829&view=diff
==============================================================================
--- couchdb/trunk/share/www/style/layout.css (original)
+++ couchdb/trunk/share/www/style/layout.css Mon Jan 26 20:38:52 2009
@@ -517,3 +517,16 @@
 form#replicator p.actions { padding: 1px; clear: left; margin: 0;
   text-align: right;
 }
+
+/* Active tasks */
+
+#interval { color: #666; float: right; font-size: 90%; font-weight: bold;
+  line-height: 16px; padding: 5px;
+}
+#interval input { vertical-align: top; }
+#interval .secs { display: inline-block; width: 2em; text-align: right; }
+
+#status tr.none th { color: #666; font-weight: normal; }
+#status td.object, #status td.pid {
+  font-family: "DejaVu Sans Mono",Monaco,monospace; font-size: 11px;
+}



Mime
View raw message