Browse Source

HUE-1765 [dbquery] Datatables breaking sometimes

Need to clear columns completely to refresh HTML correctly.
Change data tables width to parent node width to fix size.
Abraham Elmahrek 12 years ago
parent
commit
b1a1f9a1db
2 changed files with 3 additions and 7 deletions
  1. 2 7
      apps/rdbms/src/rdbms/templates/execute.mako
  2. 1 0
      apps/rdbms/static/js/rdbms.vm.js

+ 2 - 7
apps/rdbms/src/rdbms/templates/execute.mako

@@ -602,7 +602,6 @@ ${ commonheader(_('Query'), app_name, user) | n,unicode }
   });
   });
 
 
   var dataTable = null;
   var dataTable = null;
-  var dataTableWidth = 0;
   function cleanResultsTable() {
   function cleanResultsTable() {
     if (dataTable) {
     if (dataTable) {
       dataTable.fnDestroy();
       dataTable.fnDestroy();
@@ -613,7 +612,7 @@ ${ commonheader(_('Query'), app_name, user) | n,unicode }
   }
   }
 
 
   function resultsTable() {
   function resultsTable() {
-    if (!dataTable) {
+    if (dataTable) {
       dataTable = $(".resultTable").dataTable({
       dataTable = $(".resultTable").dataTable({
         "bPaginate": false,
         "bPaginate": false,
         "bLengthChange": false,
         "bLengthChange": false,
@@ -633,11 +632,7 @@ ${ commonheader(_('Query'), app_name, user) | n,unicode }
       $(".dataTables_filter").hide();
       $(".dataTables_filter").hide();
       $(".dataTables_wrapper").jHueTableScroller();
       $(".dataTables_wrapper").jHueTableScroller();
 
 
-      if (dataTableWidth > 0) {
-        $(".resultTable").width(dataTableWidth);
-      } else {
-        dataTableWidth = $(".resultTable").outerWidth();
-      }
+      $(".resultTable").width($(".resultTable").parent().width());
     }
     }
   }
   }
   $(document).on('execute.query', cleanResultsTable);
   $(document).on('execute.query', cleanResultsTable);

+ 1 - 0
apps/rdbms/static/js/rdbms.vm.js

@@ -77,6 +77,7 @@ function RdbmsViewModel() {
 
 
   self.updateResults = function(results) {
   self.updateResults = function(results) {
     var rows = [];
     var rows = [];
+    self.columns.removeAll();  // Needed for datatables to refresh properly.
     self.columns(results.columns);
     self.columns(results.columns);
     $.each(results.rows, function(i, result_row) {
     $.each(results.rows, function(i, result_row) {
       var row = [];
       var row = [];