You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ss...@apache.org on 2014/01/10 19:27:55 UTC

git commit: Enabled toggling between relative and absolute timestamps by clicking on them.

Updated Branches:
  refs/heads/master 0e8da16ef -> 15c0ab2db


Enabled toggling between relative and absolute timestamps by clicking on them.

Note that your preference for which type you'd like is remembered
between sessions.

Issue: https://issues.apache.org/jira/browse/MESOS-789

Review: http://reviews.apache.org/r/16712

From: Thomas Rampelberg <th...@saunter.org>
Review: https://reviews.apache.org/r/16712


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/15c0ab2d
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/15c0ab2d
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/15c0ab2d

Branch: refs/heads/master
Commit: 15c0ab2db2b5596812d879a42d79b887c9a84bce
Parents: 0e8da16
Author: Ross Allen <ro...@gmail.com>
Authored: Fri Jan 10 10:01:36 2014 -0800
Committer: Ross Allen <ro...@gmail.com>
Committed: Fri Jan 10 10:01:36 2014 -0800

----------------------------------------------------------------------
 src/Makefile.am                                 |  3 +-
 src/webui/master/static/css/mesos.css           |  8 +++
 .../master/static/directives/timestamp.html     |  5 ++
 src/webui/master/static/framework.html          | 50 ++----------------
 src/webui/master/static/frameworks.html         | 40 ++-------------
 src/webui/master/static/home.html               | 53 +++-----------------
 src/webui/master/static/index.html              |  1 -
 src/webui/master/static/js/app.js               | 31 +++++++++++-
 src/webui/master/static/slave.html              | 21 +-------
 src/webui/master/static/slaves.html             | 23 ++-------
 10 files changed, 65 insertions(+), 170 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/15c0ab2d/src/Makefile.am
----------------------------------------------------------------------
diff --git a/src/Makefile.am b/src/Makefile.am
index 054ba2e..ef70770 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -448,7 +448,8 @@ nobase_dist_pkgdata_DATA +=						\
   webui/master/static/slave.html					\
   webui/master/static/slave_executor.html				\
   webui/master/static/slave_framework.html				\
-  webui/master/static/slaves.html
+  webui/master/static/slaves.html					\
+  webui/master/static/directives/timestamp.html
 
 # Need to distribute/install webui images.
 nobase_dist_pkgdata_DATA +=						\

http://git-wip-us.apache.org/repos/asf/mesos/blob/15c0ab2d/src/webui/master/static/css/mesos.css
----------------------------------------------------------------------
diff --git a/src/webui/master/static/css/mesos.css b/src/webui/master/static/css/mesos.css
index 083b596..0a2daec 100644
--- a/src/webui/master/static/css/mesos.css
+++ b/src/webui/master/static/css/mesos.css
@@ -57,6 +57,14 @@ th.unselected:after {
   content: " ";
 }
 
+time {
+  border-bottom: 1px #999 dashed;
+}
+
+time:hover {
+  cursor: pointer;
+}
+
 .inline .btn-toggle,
 .table-condensed .btn-toggle {
   margin-bottom: -2px;

http://git-wip-us.apache.org/repos/asf/mesos/blob/15c0ab2d/src/webui/master/static/directives/timestamp.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/directives/timestamp.html b/src/webui/master/static/directives/timestamp.html
new file mode 100644
index 0000000..5e422b9
--- /dev/null
+++ b/src/webui/master/static/directives/timestamp.html
@@ -0,0 +1,5 @@
+<time datetime="{{value | isoDate}}" ng-click="toggle()" ng-show="longDate">
+  {{value | isoDate}}</time>
+<time datetime="{{value | isoDate}}" ng-click="toggle()" ng-hide="longDate">
+  {{value | relativeDate:pollTime}}</time>
+<span ng-transclude></span>

http://git-wip-us.apache.org/repos/asf/mesos/blob/15c0ab2d/src/webui/master/static/framework.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/framework.html b/src/webui/master/static/framework.html
index 7dc6205..72e14df 100644
--- a/src/webui/master/static/framework.html
+++ b/src/webui/master/static/framework.html
@@ -24,28 +24,12 @@
         <dd>{{framework.user}}</dd>
         <dt>Registered:</dt>
         <dd>
-          <abbr title="{{framework.registered_time * 1000 | isoDate}}">
-            {{framework.registered_time * 1000 | relativeDate:pollTime}}</abbr>
-          <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{framework.registered_time * 1000 | isoDate}}"
-              tooltip="Copy timestamp"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-          </button>
+          <m-timestamp value="{{framework.registered_time * 1000}}"></m-timestamp>
         </dd>
         <dt>Re-registered:</dt>
         <dd ng-show="!framework.reregistered_time">-</dd>
         <dd ng-show="framework.reregistered_time">
-          <abbr title="{{framework.reregistered_time * 1000 | isoDate}}">
-            {{framework.reregistered_time * 1000 | relativeDate:pollTime}}</abbr>
-          <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{framework.reregistered_time * 1000 | isoDate}}"
-              tooltip="Copy timestamp"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-          </button>
+          <m-timestamp value="{{framework.reregistered_time * 1000}}"></m-timestamp>
         </dd>
         <dt>Active tasks:</dt>
         <dd>{{framework.tasks.length | number}}</dd>
@@ -95,15 +79,7 @@
           <td>{{task.name}}</td>
           <td>{{task.state | truncateMesosState}}</td>
           <td>
-            <abbr title="{{task.start_time | isoDate}}">
-              {{task.start_time | relativeDate:pollTime}}</abbr>
-            <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{task.start_time | isoDate}}"
-              tooltip="Copy start time"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-            </button>
+            <m-timestamp value="{{task.start_time}}"></m-timestamp>
           </td>
           <td>
             <span data-ng-show="slaves[task.slave_id]">
@@ -168,26 +144,10 @@
           <td>{{task.name}}</td>
           <td>{{task.state | truncateMesosState}}</td>
           <td>
-            <abbr title="{{task.start_time | isoDate}}">
-              {{task.start_time | relativeDate:pollTime}}</abbr>
-            <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{task.start_time | isoDate}}"
-              tooltip="Copy start time"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-            </button>
+            <m-timestamp value="{{task.start_time}}"></m-timestamp>
           </td>
           <td>
-            <abbr title="{{task.finish_time | isoDate}}">
-              {{task.finish_time | relativeDate:pollTime}}</abbr>
-            <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{task.finish_time | isoDate}}"
-              tooltip="Copy finish time"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-            </button>
+            <m-timestamp value="{{task.finish_time}}"></m-timestamp>
           </td>
           <td>
             <a data-ng-show="slaves[task.slave_id]"

http://git-wip-us.apache.org/repos/asf/mesos/blob/15c0ab2d/src/webui/master/static/frameworks.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/frameworks.html b/src/webui/master/static/frameworks.html
index f83cffe..39e7883 100644
--- a/src/webui/master/static/frameworks.html
+++ b/src/webui/master/static/frameworks.html
@@ -70,27 +70,11 @@
       <td>{{framework.resources.mem * (1024 * 1024) | dataSize}}</td>
       <td>{{framework.max_share * 100 | number}}%</td>
       <td>
-        <abbr title="{{framework.registered_time * 1000 | isoDate}}">
-          {{framework.registered_time * 1000 | relativeDate:pollTime}}</abbr>
-        <button class="btn btn-mini btn-toggle"
-          clipboard
-          data-clipboard-text="{{framework.registered_time * 1000 | isoDate}}"
-          tooltip="Copy timestamp"
-          tooltip-placement="right"
-          tooltip-trigger="clipboardhover">
-        </button>
+        <m-timestamp value="{{framework.registered_time * 1000}}"></m-timestamp>
       </td>
       <td ng-show="!framework.reregistered_time">-</td>
       <td ng-show="framework.reregistered_time">
-        <abbr title="{{framework.reregistered_time * 1000 | isoDate}}">
-          {{framework.reregistered_time * 1000 | relativeDate:pollTime}}</abbr>
-        <button class="btn btn-mini btn-toggle"
-          clipboard
-          data-clipboard-text="{{framework.registered_time * 1000 | isoDate}}"
-          tooltip="Copy timestamp"
-          tooltip-placement="right"
-          tooltip-trigger="clipboardhover">
-        </button>
+        <m-timestamp value="{{framework.reregistered_time * 1000}}"></m-timestamp>
       </td>
     </tr>
   </tbody>
@@ -138,26 +122,10 @@
       <td>{{framework.user}}</td>
       <td>{{framework.name}}</td>
       <td>
-        <abbr title="{{framework.registered_time * 1000 | isoDate}}">
-          {{framework.registered_time * 1000 | relativeDate:pollTime}}</abbr>
-        <button class="btn btn-mini btn-toggle"
-          clipboard
-          data-clipboard-text="{{framework.reregistered_time * 1000 | isoDate}}"
-          tooltip="Copy timestamp"
-          tooltip-placement="right"
-          tooltip-trigger="clipboardhover">
-        </button>
+        <m-timestamp value="{{framework.registered_time * 1000}}"></m-timestamp>
       </td>
       <td>
-        <abbr title="{{framework.unregistered_time * 1000 | isoDate}}">
-          {{framework.unregistered_time * 1000 | relativeDate:pollTime}}</abbr>
-        <button class="btn btn-mini btn-toggle"
-          clipboard
-          data-clipboard-text="{{framework.unregistered_time * 1000 | isoDate}}"
-          tooltip="Copy timestamp"
-          tooltip-placement="right"
-          tooltip-trigger="clipboardhover">
-        </button>
+        <m-timestamp value="{{framework.unregistered_time * 1000}}"></m-timestamp>
       </td>
     </tr>
   </tbody>

http://git-wip-us.apache.org/repos/asf/mesos/blob/15c0ab2d/src/webui/master/static/home.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/home.html b/src/webui/master/static/home.html
index cd2ec75..fb3a38e 100644
--- a/src/webui/master/static/home.html
+++ b/src/webui/master/static/home.html
@@ -23,28 +23,13 @@
         <dd>{{state.pid.split("@")[1]}}</dd>
         <dt>Built:</dt>
         <dd>
-          <abbr title="{{state.build_time * 1000 | isoDate}}">
-            {{state.build_time * 1000 | relativeDate:pollTime}}</abbr>
-          by <i>{{state.build_user}}</i>
-          <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{state.build_time * 1000 | isoDate}}"
-              tooltip="Copy timestamp"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-          </button>
+          <m-timestamp value="{{state.build_time * 1000}}">
+            by <i>{{state.build_user}}</i>
+          </m-timestamp>
         </dd>
         <dt>Started:</dt>
         <dd>
-          <abbr title="{{state.start_time * 1000 | isoDate}}">
-            {{state.start_time * 1000 | relativeDate:pollTime}}</abbr>
-          <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{state.start_time * 1000 | isoDate}}"
-              tooltip="Copy timestamp"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-          </button>
+          <m-timestamp value="{{state.start_time * 1000}}"></m-timestamp>
         </dd>
       </dl>
 
@@ -173,15 +158,7 @@
           <td>{{task.name}}</td>
           <td>{{task.state | truncateMesosState}}</td>
           <td>
-            <abbr title="{{task.start_time | isoDate}}">
-              {{task.start_time | relativeDate:pollTime}}</abbr>
-            <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{task.start_time | isoDate}}"
-              tooltip="Copy start time"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-            </button>
+            <m-timestamp value="{{task.start_time}}"></m-timestamp>
           </td>
           <td>
             <span data-ng-show="slaves[task.slave_id]">
@@ -249,26 +226,10 @@
           <td>{{task.name}}</td>
           <td>{{task.state | truncateMesosState}}</td>
           <td>
-            <abbr title="{{task.start_time | isoDate}}">
-              {{task.start_time | relativeDate:pollTime}}</abbr>
-            <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{task.start_time | isoDate}}"
-              tooltip="Copy start time"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-            </button>
+            <m-timestamp value="{{task.start_time}}"></m-timestamp>
           </td>
           <td>
-            <abbr title="{{task.finish_time | isoDate}}">
-              {{task.finish_time | relativeDate:pollTime}}</abbr>
-            <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{task.finish_time | isoDate}}"
-              tooltip="Copy finish time"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-            </button>
+            <m-timestamp value="{{task.finish_time}}"></m-timestamp>
           </td>
           <td>
             <a data-ng-show="slaves[task.slave_id]"

http://git-wip-us.apache.org/repos/asf/mesos/blob/15c0ab2d/src/webui/master/static/index.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/index.html b/src/webui/master/static/index.html
index a5833f6..7133ecd 100644
--- a/src/webui/master/static/index.html
+++ b/src/webui/master/static/index.html
@@ -20,7 +20,6 @@
     </div>
 
     <div ng-controller="MainCntl">
-
       <div class="navbar navbar-inverse navbar-fixed-top" id="navbar">
         <div class="navbar-inner">
           <div class="container">

http://git-wip-us.apache.org/repos/asf/mesos/blob/15c0ab2d/src/webui/master/static/js/app.js
----------------------------------------------------------------------
diff --git a/src/webui/master/static/js/app.js b/src/webui/master/static/js/app.js
index 7977850..5569d11 100644
--- a/src/webui/master/static/js/app.js
+++ b/src/webui/master/static/js/app.js
@@ -73,12 +73,16 @@
     })
     .filter('isoDate', function($filter) {
       return function(date) {
-        return $filter('date')(date, 'yyyy-MM-ddTH:mm:ssZ');
+        var i = parseInt(date, 10);
+        if (_.isNaN(i)) { return '' };
+        return $filter('date')(i, 'yyyy-MM-ddTH:mm:ssZ');
       };
     })
     .filter('relativeDate', function() {
       return function(date, refDate) {
-        return relativeDate(date, refDate);
+        var i = parseInt(date, 10);
+        if (_.isNaN(i)) { return '' };
+        return relativeDate(i, refDate);
       };
     })
     .filter('slice', function() {
@@ -191,5 +195,28 @@
           });
         }
       };
+    }])
+    .directive('mTimestamp', [ '$rootScope', function($rootScope) {
+      return {
+        restrict: 'E',
+        transclude: true,
+        scope: {
+          value: '@'
+        },
+        link: function($scope, element, attrs) {
+          $scope.longDate = JSON.parse(
+            localStorage.getItem('longDate') || false);
+
+          $scope.$on('mTimestamp.toggle', function() {
+            $scope.longDate = !$scope.longDate;
+          });
+
+          $scope.toggle = function() {
+            localStorage.setItem('longDate', !$scope.longDate);
+            $rootScope.$broadcast('mTimestamp.toggle');
+          };
+        },
+        templateUrl: 'static/directives/timestamp.html'
+      }
     }]);
 })();

http://git-wip-us.apache.org/repos/asf/mesos/blob/15c0ab2d/src/webui/master/static/slave.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/slave.html b/src/webui/master/static/slave.html
index 24e855b..f30d914 100644
--- a/src/webui/master/static/slave.html
+++ b/src/webui/master/static/slave.html
@@ -32,28 +32,11 @@
         <dd>{{state.master_hostname}}</dd>
         <dt>Started:</dt>
         <dd>
-          <abbr title="{{state.start_time * 1000 | isoDate}}">
-            {{state.start_time * 1000 | relativeDate:pollTime}}</abbr>
-          <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{state.start_time * 1000 | isoDate}}"
-              tooltip="Copy timestamp"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-          </button>
+          <m-timestamp value="{{state.start_time * 1000}}"></m-timestamp>
         </dd>
         <dt>Built:</dt>
         <dd>
-          <abbr title="{{state.build_time * 1000 | isoDate}}">
-            {{state.build_time * 1000 | relativeDate:pollTime}}</abbr>
-          by <i>{{state.build_user}}</i>
-          <button class="btn btn-mini btn-toggle"
-              clipboard
-              data-clipboard-text="{{state.build_time * 1000 | isoDate}}"
-              tooltip="Copy timestamp"
-              tooltip-placement="right"
-              tooltip-trigger="clipboardhover">
-          </button>
+          <m-timestamp value="{{state.build_time * 1000}}"></m-timestamp>
         </dd>
         <dt>Host:</dt>
         <dd>

http://git-wip-us.apache.org/repos/asf/mesos/blob/15c0ab2d/src/webui/master/static/slaves.html
----------------------------------------------------------------------
diff --git a/src/webui/master/static/slaves.html b/src/webui/master/static/slaves.html
index ee41b26..ef5b662 100644
--- a/src/webui/master/static/slaves.html
+++ b/src/webui/master/static/slaves.html
@@ -59,28 +59,11 @@
     <td>{{slave.resources.mem * (1024 * 1024) | dataSize}}</td>
     <td>{{slave.resources.disk * (1024 * 1024) | dataSize}}</td>
     <td>
-      <abbr title="{{slave.registered_time * 1000 | isoDate}}">
-        {{slave.registered_time * 1000 | relativeDate:pollTime}}</abbr>
-      <button class="btn btn-mini btn-toggle"
-          clipboard
-          data-clipboard-text="{{slave.registered_time * 1000 | isoDate}}"
-          tooltip="Copy timestamp"
-          tooltip-placement="right"
-          tooltip-trigger="clipboardhover">
-        <i class="icon-file"></i>
-      </button>
+
+      <m-timestamp value="{{slave.registered_time * 1000}}"></m-timestamp>
     </td>
     <td>
-      <abbr title="{{slave.reregistered_time * 1000 | isoDate}}">
-        {{slave.reregistered_time * 1000 | relativeDate:pollTime}}</abbr>
-      <button class="btn btn-mini btn-toggle"
-          clipboard
-          data-clipboard-text="{{slave.reregistered_time * 1000 | isoDate}}"
-          tooltip="Copy timestamp"
-          tooltip-placement="right"
-          tooltip-trigger="clipboardhover">
-        <i class="icon-file"></i>
-      </button>
+      <m-timestamp value="{{slave.reregistered_time * 1000}}"></m-timestamp>
     </td>
   </tr>
 </table>