Browse Source

HUE-1513 [hbase] Various bugs and improvements

Kevin Wang 12 years ago
parent
commit
ac7dd85

+ 5 - 2
apps/hbase/src/hbase/templates/app.mako

@@ -99,6 +99,9 @@ ${ commonheader(None, "hbase", user) | n,unicode }
   <!--[if !IE]><!--><i class="icon-spinner icon-spin loader-main"></i><!--<![endif]-->
   <!--[if IE]><img src="/hbase/static/art/loader.gif" /><![endif]-->
   </center>
+  <div class="alert" data-bind="visible: ${datasource}.items().length == 0 && !${datasource}.isLoading()">
+      ${_('No rows to display.')}
+  </div>
 </%def>
 
 <%def name="sortBtn(datasource)">
@@ -307,7 +310,7 @@ ${ commonheader(None, "hbase", user) | n,unicode }
     <script id="cell_edit_modal_template" type="text/html">
       <div class="modal-header">
         <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
-        <h3>Edit Cell - <span data-bind="text: content.name"></span> <code data-bind="text: mime"></code></h3>
+        <h3>Edit Cell - <span data-bind="text: content.name || formatTimestamp(content.timestamp)"></span> <code data-bind="text: mime"></code> <small><i class="icon-time"></i> <span data-bind="text: $data.content.timestamp"></span></small></h3>
       </div>
       <div class="modal-body container-fluid">
           <div class="row-fluid">
@@ -325,7 +328,7 @@ ${ commonheader(None, "hbase", user) | n,unicode }
               <ul class="nav nav-list well well-small">
                 <li class="nav-header">${_('Cell History:')}</li>
                 <!-- ko foreach: $data.content.history.items() -->
-                  <li><a data-bind="click: $parent.content.history.pickHistory.bind(null, $data), text: formatTimestamp($data.timestamp)"></a></li>
+                  <li data-bind="css: { 'active': $data.timestamp == $parent.content.timestamp }"><a data-bind="click: $parent.content.history.pickHistory.bind(null, $data), text: formatTimestamp($data.timestamp)"></a></li>
                 <!-- /ko -->
                 <li data-bind="visible: $data.content.history.loading()"><img src="/static/art/spinner.gif" /></li>
               </ul>

+ 3 - 2
apps/hbase/static/css/hbase.css

@@ -137,6 +137,7 @@ ul#hbase-breadcrumbs li a {
 
 .smartview ul.smartview-cells > li > div {
 	position: relative;
+	margin-bottom: 10px;
 	height: 100%;
 }
 
@@ -175,7 +176,7 @@ ul#hbase-breadcrumbs li a {
 
 .smartview ul.smartview-cells > li .timestamp {
 	position: absolute;
-	bottom:-2px;
+	bottom:-12px;
 	right:-2px;
 	display: none;
 }
@@ -506,7 +507,7 @@ ul#hbase-breadcrumbs li a {
 
 #cell_edit_modal {
 	width: 80%;
-	left: 10%;
+	left: 25%;
 	margin-left: 0px;
 	max-height:100%;
 	top: 10%;

+ 1 - 1
apps/hbase/static/js/app.js

@@ -66,7 +66,7 @@ var AppViewModel = function() {
                 callback: function(data){},
                 columns: getColumnFamilies()
               }, options);
-              API.queryTable("getRow", JSON.stringify(options.columns), self.row).done(function(data) {
+              API.queryTable("getRow", JSON.stringify(options.columns), prepForTransport(self.row)).done(function(data) {
                 self.setItems(data.columns);
                 callback(data);
                 self.isLoading(false);

+ 17 - 11
apps/hbase/static/js/controls.js

@@ -433,7 +433,7 @@ var SmartViewDataRow = function(options) {
       } else {
         self.displayRangeLength = self.items().length + displayRangeDelta;
         var validate = self.items().length;
-        API.queryTable('getRowPartial' , self.row, self.items().length, 100).done(function(data) {
+        API.queryTable('getRowPartial' , prepForTransport(self.row), self.items().length, 100).done(function(data) {
           if(self.items().length != validate) return false;
           var cols = data[0].columns;
           var keys = Object.keys(cols);
@@ -527,7 +527,7 @@ var ColumnRow = function(options) {
 
   self.reload = function(callback, skipPut) {
     self.isLoading(true);
-    API.queryTable('get', self.parent.row, self.name, 'null').done(function(data) {
+    API.queryTable('get', prepForTransport(self.parent.row), prepForTransport(self.name), 'null').done(function(data) {
       if(data.length > 0 && !skipPut)
         self.value(data[0].value);
       if(typeof callback !== "undefined" && callback != null)
@@ -539,7 +539,7 @@ var ColumnRow = function(options) {
   self.value.subscribe(function(value) {
     //change transport prep to object wrapper
     logGA('put_column');
-    API.queryTable('putColumn', self.parent.row, self.name, "hbase-post-key-" + JSON.stringify(value)).done(function(data) {
+    API.queryTable('putColumn', prepForTransport(self.parent.row), prepForTransport(self.name), "hbase-post-key-" + JSON.stringify(value)).done(function(data) {
       self.reload(function(){}, true);
     });
     self.editing(false);
@@ -831,9 +831,13 @@ var tagsearch = function() {
         self.replaceFocusNode(self.activeSuggestions()[self.activeSuggestion()]);
         self.activeSuggestion(-1);
         setTimeout(function() {
-          var s = self.cur_input();
-          var r = setCursor($('#search-tags')[0], s.lastIndexOf('(') + 1);
-          r.setEnd(r.endContainer, r.startOffset + (s.lastIndexOf(')') - s.lastIndexOf('(') - 1));
+          var s = self.cur_input(), r;
+          if(s.lastIndexOf('(') != -1 && s.lastIndexOf(')') != -1) {
+            r = setCursor($('#search-tags')[0], s.lastIndexOf('(') + 1);
+            r.setEnd(r.endContainer, r.startOffset + (s.lastIndexOf(')') - s.lastIndexOf('(') - 1));
+          } else {
+            r = setCursor($('#search-tags')[0], s.length);
+          }
           var sel = window.getSelection();
           sel.removeAllRanges();
           sel.addRange(r);
@@ -891,10 +895,12 @@ var tagsearch = function() {
         }
         function callback() {
           if(cancel()) return false;
-          API.queryTable('getAutocompleteRows', 10, prepForTransport(validate.trim())).done(function(data) {
-            if(cancel()) return false;
-            self.activeSuggestions(data);
-          });
+          if(validate.trim() != "") {
+            API.queryTable('getAutocompleteRows', 10, prepForTransport(validate.trim())).done(function(data) {
+              if(cancel()) return false;
+              self.activeSuggestions(data);
+            });
+          }
         }
         setTimeout(callback, 200);
         return;
@@ -940,7 +946,7 @@ var CellHistoryPage = function(options) {
   self.reload = function(timestamp, append) {
     if(!timestamp)
       timestamp = options.timestamp
-    API.queryTable("getVerTs", options.row, options.column, timestamp, 10, 'null').done(function(res) {
+    API.queryTable("getVerTs", prepForTransport(options.row), prepForTransport(options.column), timestamp, 10, 'null').done(function(res) {
       self.loading = ko.observable(true);
       if(!append)
         self.items(res);