Ver código fonte

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 anos atrás
pai
commit
14d5df7

+ 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)
           }
         });
       });