Преглед на файлове

HUE-7916 [frontend] Avoid breaking of scatterplot chart for some grouping values

Enrico Berti преди 7 години
родител
ревизия
93abf9c
променени са 2 файла, в които са добавени 52 реда и са изтрити 53 реда
  1. 2 1
      desktop/core/src/desktop/static/desktop/js/ko.charts.js
  2. 50 52
      desktop/libs/notebook/src/notebook/templates/editor_components.mako

+ 2 - 1
desktop/core/src/desktop/static/desktop/js/ko.charts.js

@@ -668,7 +668,8 @@
           nv.addGraph(function () {
             var _chart = nv.models.scatterChart()
                 .transitionDuration(350)
-                .color(d3v3.scale.category10().range());
+                .color(d3v3.scale.category10().range())
+                .useVoronoi(false);
 
             _chart.tooltipContent(function (key, x, y, obj) {
               return '<h3>' + key + '</h3><div class="center">' + obj.point.size + '</div>';

+ 50 - 52
desktop/libs/notebook/src/notebook/templates/editor_components.mako

@@ -2668,72 +2668,70 @@ function togglePresentation(value) {};
   }
 
   function editorScatterChartDataTransformer(rawDatum) {
-    var _datum = [];
+    var datum = {};
 
     if (rawDatum.snippet.chartX() != null && rawDatum.snippet.chartYSingle() != null) {
-      function addToDatum(col) {
-        var _idxX = -1;
-        var _idxY = -1;
-        var _idxSize = -1;
-        var _idxGroup = -1;
-        rawDatum.snippet.result.meta().forEach(function (icol, idx) {
-          if (icol.name == rawDatum.snippet.chartX()) {
-            _idxX = idx;
-          }
-          if (icol.name == rawDatum.snippet.chartYSingle()) {
-            _idxY = idx;
-          }
-          if (icol.name == rawDatum.snippet.chartScatterSize()) {
-            _idxSize = idx;
+      var idxX = -1;
+      var idxY = -1;
+      var idxSize = -1;
+      var idxGroup = -1;
+      rawDatum.snippet.result.meta().forEach(function (icol, idx) {
+        if (icol.name == rawDatum.snippet.chartX()) {
+          idxX = idx;
+        }
+        if (icol.name == rawDatum.snippet.chartYSingle()) {
+          idxY = idx;
+        }
+        if (icol.name == rawDatum.snippet.chartScatterSize()) {
+          idxSize = idx;
+        }
+        if (icol.name == rawDatum.snippet.chartScatterGroup()) {
+          idxGroup = idx;
+        }
+      });
+
+      if (idxX > -1 && idxY > -1) {
+
+        function createAndAddToArray(key, item) {
+          if (!datum[key]) {
+            datum[key] = [];
           }
-          if (icol.name == rawDatum.snippet.chartScatterGroup()) {
-            _idxGroup = idx;
+          if (isNotNullForCharts(item[idxX]) && isNotNullForCharts(item[idxY])) {
+            datum[key].push({
+              x: item[idxX],
+              y: item[idxY],
+              shape: 'circle',
+              size: idxSize > -1 ? item[idxSize] : 100,
+              obj: item
+            });
           }
-        });
+        }
 
-        if (_idxX > -1 && _idxY > -1) {
-          var _data = [];
+        if (idxGroup > -1) {
           $(rawDatum.counts()).each(function (cnt, item) {
-            if (_idxGroup == -1 || item[_idxGroup] == col) {
-              if (isNotNullForCharts(item[_idxX]) && isNotNullForCharts(item[_idxY])) {
-                _data.push({
-                  x: item[_idxX],
-                  y: item[_idxY],
-                  shape: 'circle',
-                  size: _idxSize > -1 ? item[_idxSize] : 100,
-                  obj: item
-                });
-              }
-            }
-          });
-          if (rawDatum.snippet.chartLimit()) {
-            _data = _data.slice(0, rawDatum.snippet.chartLimit());
-          }
-          _datum.push({
-            key: col,
-            values: _data
+            createAndAddToArray(item[idxGroup], item)
           });
         }
-      }
-
-      if (rawDatum.snippet.chartScatterGroup() != null) {
-        var _idxGroup = -1;
-        rawDatum.snippet.result.meta().forEach(function (icol, idx) {
-          if (icol.name == rawDatum.snippet.chartScatterGroup()) {
-            _idxGroup = idx;
-          }
-        });
-        if (_idxGroup > -1) {
+        else {
           $(rawDatum.counts()).each(function (cnt, item) {
-            addToDatum(hueUtils.html2text(item[_idxGroup]));
+            createAndAddToArray('distro', item)
           });
         }
-      } else {
-        addToDatum('${ _('Distribution') }');
       }
 
+
     }
-    return _datum;
+
+    var returndDatum = [];
+    Object.keys(datum).forEach(function (key) {
+      returndDatum.push({
+        key: key,
+        values: rawDatum.snippet.chartLimit() ? datum[key].slice(0, rawDatum.snippet.chartLimit()) : datum[key]
+      });
+    });
+
+
+    return returndDatum;
   }
 
   (function () {