allocator: pretty-print time (with toggle)

Change-Id: I1ddc8adeb5242431726272d227dcbd879dbef2ed
diff --git a/services/allocator/allocatord/assets/assets.go b/services/allocator/allocatord/assets/assets.go
index 433a5c5..839ffc2 100644
--- a/services/allocator/allocatord/assets/assets.go
+++ b/services/allocator/allocatord/assets/assets.go
@@ -204,7 +204,7 @@
 	return a, nil
 }
 
-var _homeTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\x9c\x56\x5d\x8f\xdb\x36\x10\x7c\xf7\xaf\xd8\x10\x01\x9c\x43\x4e\x12\xd2\xbc\xa5\x94\x80\x5e\x1b\xa0\x01\x72\xd7\x22\xb9\x14\xe8\x53\x41\x8b\x6b\x9b\x30\x4d\x1a\x24\x65\xc7\x15\xf4\xdf\xbb\x14\x25\x7f\xdc\xd9\x57\xb4\x4f\x3e\xda\xa3\xd9\x99\xd9\xe5\xea\xf8\x2b\x69\xeb\xb0\xdf\x20\x2c\xc3\x5a\x57\x13\x3e\x7e\xa0\x90\xd5\x04\x80\x07\x15\x34\x56\x7f\x08\x23\xa4\x6a\xd6\xd0\xb6\xfd\x17\x90\x7f\x45\xb7\x45\xf7\x20\xd6\xd8\x75\xf0\x93\xd6\xb6\x16\xc1\x3a\x5e\x24\x3c\x3d\x49\x48\x5c\x6f\xb4\x08\x08\x2c\xb2\x31\xc8\xbb\x6e\xc2\x8b\xc4\xcc\x5f\x65\x19\x3c\xfc\xf6\xf8\xf1\x03\xec\x10\xa6\x33\xeb\x9c\xdd\x4d\x41\x80\xb6\x01\xec\x1c\xc2\x12\xc1\x87\xbd\x56\x66\x11\x8f\x4a\xa2\x21\xe6\xbd\xbc\x85\x25\x9a\x1a\xe3\xef\x13\x8f\x75\xe3\xe8\xcb\xcc\x61\x2c\x23\x21\xa0\x5b\x2b\x63\xb5\x5d\xec\x41\x99\x03\x07\x02\x6a\x5c\x13\x81\xbf\x05\xad\x56\x78\x60\x03\x61\xe4\x64\xa6\xd1\x7b\x2a\x93\x43\x96\x91\xae\x99\x95\x7b\xa8\xb5\xf0\xbe\x64\x23\x6e\xe3\xec\x96\xfe\x76\x99\x16\x7b\xdb\x04\x76\xc9\x1e\xba\x64\x90\x22\xf3\xb5\x53\x9b\x10\x41\x00\xf3\xc6\xd4\x41\x59\x03\xf5\x52\x98\x05\xde\x05\xf3\x46\x91\x09\x83\xbb\x5f\x1f\xef\x3f\xdf\x40\xdb\xa3\x00\xa8\x0b\x4d\x94\x98\x2f\x30\x7c\x4c\x6a\xef\xf6\x9f\x24\x81\x6f\x72\x65\x0c\xba\x08\x87\x12\x18\x9f\x5b\x13\xa0\x26\x93\xae\x9c\x2e\x9c\xd8\x4f\x2b\xf6\x76\xa0\x7b\xcb\x78\x11\x7f\xae\xd8\x8f\x3d\x6d\xaf\xa6\x38\xca\xe1\x6b\xa1\x4c\xd2\xc5\x97\xef\x46\x97\x1b\xb1\xc0\xac\xef\x50\xf5\xb3\xc3\x68\x88\x62\x81\x7b\xea\xf8\x02\xe1\x93\xf1\x41\x50\xe0\x3e\x76\xe1\x62\xf3\xa9\xa3\xef\x06\x4e\xa9\xb6\x23\xe9\x98\xaa\xcf\xb4\xf2\x29\xb1\xeb\x90\x21\xbf\x11\xd4\xab\xab\xfe\xb4\x8d\xa3\x2e\x0e\xe5\x8f\x55\xa2\x25\x62\x49\x87\xb6\x75\x31\x56\x78\xad\x8c\xc4\xef\xb7\xf0\x7a\xe8\x34\x7c\x28\x21\x3f\x68\xef\xdb\x72\xbd\xbc\xa2\x4e\x9e\x16\xbf\x00\xca\x24\x06\xa1\xb4\x3f\x81\x45\x95\xef\xab\xb6\x5d\x35\x33\x8c\x49\x40\x7e\xc8\xe3\xfd\x19\x6a\xf3\x8c\xac\x16\x5b\xca\xd9\x43\x63\xd4\xf7\xa0\xd6\xc8\x40\x8a\x20\xb2\xf1\x58\xb6\x6d\xde\x77\x82\xe6\xe6\x91\xce\xf9\x37\xfa\xa1\xeb\x4e\x49\x89\x76\x56\x8d\x18\x88\x20\x5e\xcc\x2a\x3e\x73\xc5\x39\xea\x29\xd3\xd7\xe0\x48\xc0\x21\x8f\x94\xe6\xe6\x5c\xee\xb3\x3a\xf7\xb6\xa1\x44\xa3\xbb\xcb\x45\xb8\xa2\x18\x7a\xf7\x5f\xac\x0d\x5d\x57\xf0\x42\x55\x7c\x17\x71\xd4\x9f\x78\x37\xd5\xf6\x2c\xa2\x97\xaa\x5f\x0b\x8b\x3d\x93\x75\x37\x20\xe0\x77\x11\xe8\xe6\x1b\x7f\x2d\x82\x34\x22\xf9\x88\x1f\xe1\x67\x3a\x86\xb0\xa8\x7d\x17\x08\xd0\xc8\xeb\xa2\x4f\xa6\xb1\x3f\x5e\x9a\x1e\x87\x5b\xbb\x42\x79\x3e\x3d\x02\x96\x0e\xe7\x25\xa3\xb2\xbf\x08\xbf\x9c\x59\xe1\xe4\xb7\x2f\x9f\xbb\x8e\x1d\x9e\x6f\x42\xb0\x26\xdb\xd0\x81\x12\x64\x10\x84\xa3\xf5\x50\xb2\xbf\x66\x5a\x98\x15\xab\x0e\x8f\xf1\x42\xfc\x3f\x41\xb4\x0a\x4b\x26\xd1\x07\x67\xf7\xb4\x9b\xda\x36\x5d\x24\xd2\x70\x55\x6a\x02\xbf\x2c\xd4\x9a\x5a\xab\x7a\x55\xb2\xe3\xd6\x9b\x5e\xaa\x32\xbd\x85\xe9\x40\x18\x1b\xf9\x26\x88\x15\x6d\x1a\x01\x73\xdc\x01\x6d\x77\x6b\xa4\xbf\x81\x3c\xcf\xa7\x37\x64\x36\xe1\xae\x5b\x3d\x5b\x0b\xa8\xfd\x71\xd0\x1e\xac\x41\x98\xd3\x14\xcb\x7c\xf2\xb4\xa3\xc7\x79\xe7\x7e\x23\x4c\x1f\x48\xdd\xaf\x41\x52\xca\xaa\x53\xeb\x69\x3b\xfe\x77\xe7\x07\xba\x68\x37\x5d\xc7\x7f\x33\x3b\x2c\xe2\x07\xdc\x45\xbf\xb4\xc3\x49\xda\xb0\x64\xc7\xd9\x6b\xdb\x9d\x0a\x4b\xc8\xef\xa9\xa5\x71\x53\x67\xa3\xa1\xa5\xab\x9e\x3a\xeb\xdf\x19\x5e\xfd\x8d\x25\xfb\x81\x55\x69\xce\xd3\x9b\xe2\x29\xe7\x49\x30\x07\x00\x2f\xd2\x7b\x83\xee\x17\xbd\x1c\xe3\x67\xfa\x27\xe1\x9f\x00\x00\x00\xff\xff\x4f\x04\x96\x5e\x3c\x08\x00\x00")
+var _homeTmplHtml = []byte("\x1f\x8b\x08\x00\x00\x09\x6e\x88\x00\xff\xa4\x56\xdf\x93\x9b\x36\x10\x7e\xf7\x5f\xb1\xa1\x37\x35\xee\x9d\xe1\xd2\xbc\xdd\x61\x66\x92\x26\x33\xcd\x4c\x7c\xcd\x24\x97\xce\xe4\xa9\x23\x60\x6d\x94\x03\xc9\x95\x84\x1d\xca\xf0\xbf\x77\x85\x00\xdb\x77\x76\x9a\xb6\x7e\x00\x0b\x7d\xfa\xf4\xed\x0f\xed\x2a\x7a\x96\xc9\xd4\xd4\x1b\x84\xdc\x94\x45\x3c\x89\x86\x17\xb2\x2c\x9e\x00\x44\x86\x9b\x02\xe3\xdf\x99\x60\x19\xaf\x4a\x68\x9a\xee\x03\x04\x1f\x51\x6d\x51\xdd\xb1\x12\xdb\x16\x5e\x16\x85\x4c\x99\x91\x2a\x0a\x1d\x9e\x56\x12\x12\xcb\x4d\xc1\x0c\x82\x67\xd9\x3c\x08\xda\x76\x12\x85\x8e\x39\x7a\x36\x9f\xc3\xdd\x6f\xf7\x6f\x6e\x60\x87\x30\x4d\xa4\x52\x72\x37\x05\x06\x85\x34\x20\x57\x60\x72\x04\x6d\xea\x82\x8b\xb5\x1d\xf2\x0c\x05\x31\xd7\xd9\x15\xe4\x28\x52\xb4\xf3\x13\x8d\x69\xa5\xe8\xe3\x5c\xa1\xdd\x26\x03\x83\xaa\xe4\x42\x16\x72\x5d\x03\x17\x23\x07\x02\x16\x58\x12\x81\xbe\x82\x82\x3f\xe0\xc8\x06\x4c\x64\x93\xa4\x40\xad\x69\x9b\x00\xe6\x73\xd2\x95\xc8\xac\x86\xb4\x60\x5a\x2f\xbc\x01\xb7\x51\x72\x4b\xff\xd5\xbc\x60\xb5\xac\x8c\x77\xca\x3c\x54\xce\x40\x72\x99\x4e\x15\xdf\x18\x0b\x02\x58\x55\x22\x35\x5c\x0a\x48\x73\x26\xd6\xf8\xca\x08\x9f\x93\x11\x02\x77\xbf\xde\x2f\xdf\xcd\xa0\xe9\x50\x00\x14\x85\xca\x4a\x0c\xd6\x68\xde\x38\xb5\xaf\xea\xb7\x19\x81\x67\x01\x17\x02\x95\x85\xc3\x02\xbc\x68\x25\x85\x81\x94\x8c\x54\x8b\xe9\x5a\xb1\x7a\x1a\x7b\x97\x3d\xdd\xa5\x17\x85\x76\x3a\xf6\x6e\x3b\xda\x4e\x4d\xb8\x97\x13\x95\x8c\x0b\xa7\x2b\xca\x9f\x0f\x56\x6e\xd8\x1a\xe7\x5d\x84\xe2\x5f\x14\x5a\x83\xc8\x2d\xb0\xa4\x88\xaf\x11\xde\x0a\x6d\x18\x39\x5c\xdb\x28\x9c\x0c\x3e\x45\xf4\x79\xcf\x99\xf1\xed\x40\x3a\x78\x55\xcf\x0b\xae\x9d\xc7\xce\x43\x7a\xff\x0d\xa0\x4e\x5d\xfc\x59\x56\x8a\xa2\xd8\x6f\xbf\xdf\xc5\x9a\x44\x2c\x6e\xd0\x34\xca\xba\x15\x2e\xb8\xc8\xf0\xeb\x15\x5c\xf4\x91\x86\x9b\x05\x04\xa3\xf6\x2e\x2c\xe7\xb7\xe7\x14\xc9\xc3\xcd\x4f\x80\xe6\x19\x1a\xc6\x0b\x7d\x00\xb3\x2a\x5f\xc4\x4d\xf3\x50\x25\x68\x3d\x01\xc1\xe8\x8f\x17\x47\xa8\x4d\x1c\x25\xce\xb3\x36\x0f\xee\x79\x89\x37\x51\x98\xc4\x3f\x8a\x44\x6f\x6e\xdd\x33\xd2\x1b\x26\x86\x3d\x2b\xc1\xbf\x1a\x42\x79\x90\x31\xc3\xe6\xc3\x70\xd1\x34\xc1\xc0\x62\x49\x82\x4f\x34\xd1\xb6\xf1\xe3\xcf\x1f\x8d\x22\xc1\x56\x87\x25\x3d\x52\x12\x6e\x1e\x09\x3b\x18\xd1\x38\x89\x97\xb2\x22\xdf\x59\x3b\xac\xc2\x28\x51\xe1\x23\x08\xb7\xdb\xd9\xf9\x0f\x52\x9a\xb6\x0d\xa3\x90\xc7\xd1\xce\xe2\x28\x12\xf6\x14\xf2\xed\x91\x33\xbe\xb5\xfb\x13\x1f\xa7\x6c\x4b\x76\x1c\xfb\xb8\x93\xf5\xaa\x47\xc0\x7b\x66\xe8\x8c\x0b\x7d\x5a\xdd\x90\x0c\xc1\x80\x1f\xe0\x47\x3a\x1c\x92\x8e\xea\x29\x02\x14\xd9\x79\xd1\x07\x79\xd7\x0d\x4f\xe5\x89\xc2\xad\x7c\xc0\xec\x38\x4f\x18\xe4\x0a\x57\x0b\x8f\xb6\x7d\xcd\x74\x9e\x48\xa6\xb2\x4f\x1f\xde\xb5\xad\x37\xae\xaf\x8c\x91\x62\xbe\xa1\x01\x79\xd0\x03\xc3\x14\x15\x82\x85\xf7\x47\x52\x30\xf1\xe0\xc5\xe3\xb2\x28\x64\xff\x4d\x10\x15\xbd\x85\x97\xa1\x36\x4a\xd6\x54\x85\x9a\xc6\x1d\x19\xd2\x70\x56\xaa\x03\x7f\x5b\xa8\x14\x69\xc1\xd3\x87\x85\xb7\xaf\x6f\xd3\x53\xbb\x4c\xaf\x60\xda\x13\xda\x40\xfa\x86\x3d\x50\x4d\x61\xb0\xc2\x1d\x50\x1d\x97\x22\xd3\x33\x08\x82\x60\x3a\x23\x63\x1d\xee\xbc\xa9\x47\x05\x00\x0b\xbd\x4f\xb4\x3b\x29\x10\x56\x94\xc5\x59\x30\x79\x1c\xd1\x7d\xbe\xbb\xe3\x66\x1d\x92\x76\x05\x8f\x94\x7a\xf1\xa1\xe9\xae\x0e\xfe\x7b\xcb\x47\x3a\x6b\xae\x3b\x95\xff\x64\x6c\x5f\x72\xef\x70\x67\xed\x3d\x3c\xb4\x63\xee\x35\xcd\x8e\x9b\x1c\x82\x25\x85\xd4\xd6\xe4\xf9\x60\x50\xae\xe2\xc7\x96\x75\xdd\x41\xf3\xbf\x70\xe1\xfd\xec\xc5\x2e\xcf\x5d\x4f\x78\xcc\x79\xe0\x98\x11\x10\x85\x43\x87\xe8\x9b\x18\x68\x95\x76\x1e\x79\xa9\x35\x1a\xfd\x9e\x1c\x64\x8b\x4e\x38\x74\xc6\xb0\x94\x5d\xd7\xfa\x42\xa7\xf6\xa8\xd3\x7c\xe7\xf2\x2f\x7f\x56\xa8\xea\x73\xcb\xed\xdf\xb1\x81\x12\x81\xad\x6f\xf7\xf8\xd5\xf8\xb6\xca\x0f\xbd\x73\xcb\x14\xd8\xfa\x48\xb5\xbe\xdc\x50\x87\xb4\x73\x81\xad\x9c\xfe\xbe\x92\xce\x6e\x47\x68\x49\x10\x27\xda\x1f\x57\xfd\xf4\xfc\xfa\xfa\x3a\xb8\x3e\x40\xb9\x6b\xc3\x11\x59\xf7\x69\x60\xe2\x2b\xf0\x7b\xcc\x82\x9a\x32\x4b\xb4\x2c\x2a\x43\xd3\x63\x43\xef\x56\xda\xcb\x94\xef\x0d\x99\x35\xfd\x61\x3a\x66\xcd\x54\xa1\xa9\x94\x80\x15\xa3\xf4\xbd\xa5\x1e\x0e\x97\x50\x06\x2b\xa9\x4a\x66\x7c\x6f\xb9\x5c\xc2\xeb\xd7\x57\xf0\x99\x7e\x90\xdf\x94\xe5\x8d\xa6\xfc\x21\xf6\x4b\xba\x00\x50\x9a\x0c\x32\xe0\xa9\xc0\x2b\xf0\x56\x4a\x96\x77\x72\x37\x80\x5a\xb0\x47\xe4\x7f\x0a\x73\x94\xfe\x77\x2a\xd8\xfb\x63\x7f\x11\x69\x27\xf4\xb8\xf0\x87\x8b\xce\x2c\xa0\xc4\xcf\x6a\x7f\x88\xaf\x3f\xb8\xee\xc2\xf7\x82\x7d\xe0\x02\x64\x69\xfe\x14\x04\x10\x86\xd0\x09\xb6\x07\xcc\x5e\xf4\xf6\x29\xa0\x73\x59\x15\x74\x19\x94\xeb\x75\xd1\x5d\x14\x21\xe3\x9a\x6e\x6a\x35\x38\xf7\x06\x3d\xc3\x85\x6f\x72\xae\x67\x41\x47\x73\xb4\xc5\x51\xae\xf5\xb0\xd9\x2d\xb4\xa3\xcd\x27\xe7\x9d\xa5\xdd\xdb\x3d\xf7\x19\x4d\xfd\x8a\xae\x95\xf6\xed\xae\xd7\x7f\x07\x00\x00\xff\xff\x5f\x52\x1c\x23\x76\x0b\x00\x00")
 
 func homeTmplHtmlBytes() ([]byte, error) {
 	return bindataRead(
diff --git a/services/allocator/allocatord/assets/home.tmpl.html b/services/allocator/allocatord/assets/home.tmpl.html
index 1ae4eb2..b5efb86 100644
--- a/services/allocator/allocatord/assets/home.tmpl.html
+++ b/services/allocator/allocatord/assets/home.tmpl.html
@@ -24,9 +24,7 @@
       <div class="blessings-item">
         <div class="blessing-details">
           <h3>{{kubeName .Name}}</h3>
-          <p class="blessing-caveats unixtime" data-unixtime={{.CreationTime.Unix}}>
-            <b>Creation Time</b><br/>
-            {{.CreationTime.String}}
+          <p><b>Creation Time:</b>&nbsp;&nbsp;<span class="unixtime" data-unixtime={{.CreationTime.Unix}}>{{.CreationTime.String}}</span>
           </p>
           <p>
             <b>Mount Name</b><br/>
@@ -60,5 +58,29 @@
     {{end}}
     </font>
   </main>
+  <script src="{{.AssetsPrefix}}/identity/moment.js"></script>
+  <script src="{{.AssetsPrefix}}/identity/jquery.js"></script>
+  <script>
+  function setTimeText(elem) {
+    var timestamp = elem.data("unixtime");
+    var m = moment(timestamp*1000.0);
+    var style = elem.data("style");
+    if (style === "absolute") {
+      elem.html("<a href='#' onclick='return false;'>" + m.format("MMM DD, YYYY h:mm:ss a") + "</a>");
+      elem.data("style", "fromNow");
+    } else {
+      elem.html("<a href='#' onclick='return false;'>" + m.fromNow() + "</a>");
+      elem.data("style", "absolute");
+    }
+  }
+
+  $(document).ready(function() {
+    $(".unixtime").each(function() {
+      // clicking the timestamp should toggle the display format.
+      $(this).click(function() { setTimeText($(this)); });
+      setTimeText($(this));
+    });
+  });
+  </script>
 </body>
 </html>