فهرست منبع

HUE-2823 [spark] Loading of a notebook with results generates a dataTable error

Introduced interval for waiting the DOM to be completely rendered by KO
Corrected error CSS class computed
Enrico Berti 10 سال پیش
والد
کامیت
14d5df7
2فایلهای تغییر یافته به همراه21 افزوده شده و 9 حذف شده
  1. 1 1
      apps/spark/src/spark/static/spark/js/spark.ko.js
  2. 20 8
      apps/spark/src/spark/templates/editor.mako

+ 1 - 1
apps/spark/src/spark/static/spark/js/spark.ko.js

@@ -222,7 +222,7 @@ var Snippet = function (vm, notebook, snippet) {
   });
 
   self.errorsKlass = ko.computed(function () {
-    return self.resultsKlass + " alert alert-error";
+    return self.resultsKlass() + " alert alert-error";
   });
 
   self.chartType = ko.observable(typeof snippet.chartType != "undefined" && snippet.chartType != null ? snippet.chartType : ko.HUE_CHARTS.TYPES.BARCHART);

+ 20 - 8
apps/spark/src/spark/templates/editor.mako

@@ -1848,18 +1848,30 @@ ${ commonheader(_('Query'), app_name, user, "68px") | n,unicode }
       }, 100);
     });
 
+    $(document).on("puma", function (e, snippet) {
+      forceChartDraws();
+    });
+
     function forceChartDraws() {
       viewModel.notebooks().forEach(function (notebook) {
         notebook.snippets().forEach(function (snippet) {
           if (snippet.result.data().length > 0) {
-            var _el = $("#snippet_" + snippet.id()).find(".resultTable");
-            window.setTimeout(function () {
-              var _dt = createDatatable(_el, snippet);
-              _dt.fnClearTable();
-              _dt.fnAddData(snippet.result.data());
-              resizeToggleLeftPanel(snippet);
-              $(document).trigger("forceChartDraw", snippet);
-            }, 200);
+            var _elCheckerInterval = -1;
+            _elCheckerInterval = window.setInterval(function () {
+              var _el = $("#snippet_" + snippet.id()).find(".resultTable");
+              if ($("#snippet_" + snippet.id()).find(".resultTable").length > 0) {
+                try {
+                  var _dt = createDatatable(_el, snippet);
+                  _dt.fnClearTable();
+                  _dt.fnAddData(snippet.result.data());
+                  resizeToggleLeftPanel(snippet);
+                  $(document).trigger("forceChartDraw", snippet);
+                  window.clearInterval(_elCheckerInterval);
+                }
+                catch (e) {
+                }
+              }
+            }, 200)
           }
         });
       });