superset-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From maximebeauche...@apache.org
Subject [incubator-superset] branch master updated: Minor improvements to Histogram viz (#6391)
Date Mon, 19 Nov 2018 22:01:30 GMT
This is an automated email from the ASF dual-hosted git repository.

maximebeauchemin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 4c4b6c4  Minor improvements to Histogram viz (#6391)
4c4b6c4 is described below

commit 4c4b6c41a1ee0c2f4172208389b616d666b0ea1d
Author: Maxime Beauchemin <maximebeauchemin@gmail.com>
AuthorDate: Mon Nov 19 14:01:20 2018 -0800

    Minor improvements to Histogram viz (#6391)
    
    * Minor improvements to Histogram viz
    
    * prevent legend overflow (spill) by simply hiding it
    * legend title only includes metric name when necessary
    * control validator asking forcing at least one numeric column to be
    selected
    
    * Removing print()
---
 .../assets/src/explore/controlPanels/Histogram.js    |  2 ++
 .../src/visualizations/Histogram/Histogram.css       |  3 +++
 .../src/visualizations/Histogram/Histogram.jsx       |  1 +
 superset/viz.py                                      | 20 +++++++++++++-------
 4 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/superset/assets/src/explore/controlPanels/Histogram.js b/superset/assets/src/explore/controlPanels/Histogram.js
index 5289614..186dda2 100644
--- a/superset/assets/src/explore/controlPanels/Histogram.js
+++ b/superset/assets/src/explore/controlPanels/Histogram.js
@@ -1,4 +1,5 @@
 import { t } from '@superset-ui/translation';
+import { nonEmpty } from '../validators';
 
 export default {
   controlPanelSections: [
@@ -29,6 +30,7 @@ export default {
       label: t('Numeric Columns'),
       description: t('Select the numeric columns to draw the histogram'),
       multi: true,
+      validators: [nonEmpty],
     },
     link_length: {
       label: t('No of Bins'),
diff --git a/superset/assets/src/visualizations/Histogram/Histogram.css b/superset/assets/src/visualizations/Histogram/Histogram.css
new file mode 100644
index 0000000..28b7d70
--- /dev/null
+++ b/superset/assets/src/visualizations/Histogram/Histogram.css
@@ -0,0 +1,3 @@
+.histogram {
+  overflow: hidden;
+}
diff --git a/superset/assets/src/visualizations/Histogram/Histogram.jsx b/superset/assets/src/visualizations/Histogram/Histogram.jsx
index 8414830..2b54519 100644
--- a/superset/assets/src/visualizations/Histogram/Histogram.jsx
+++ b/superset/assets/src/visualizations/Histogram/Histogram.jsx
@@ -6,6 +6,7 @@ import { LegendOrdinal } from '@vx/legend';
 import { scaleOrdinal } from '@vx/scale';
 import { CategoricalColorNamespace } from '@superset-ui/color';
 import WithLegend from '../WithLegend';
+import './Histogram.css';
 
 const propTypes = {
   className: PropTypes.string,
diff --git a/superset/viz.py b/superset/viz.py
index 068a70d..e3e891a 100644
--- a/superset/viz.py
+++ b/superset/viz.py
@@ -1467,6 +1467,16 @@ class HistogramViz(BaseViz):
         d['groupby'] = []
         return d
 
+    def labelify(self, keys, column):
+        if isinstance(keys, str):
+            keys = (keys,)
+        # removing undesirable characters
+        labels = [re.sub(r'\W+', r'_', k) for k in keys]
+        if len(self.columns) > 1 or not self.groupby:
+            # Only show numeric column in label if there are many
+            labels = [column] + labels
+        return '__'.join(labels)
+
     def get_data(self, df):
         """Returns the chart data"""
         chart_data = []
@@ -1475,14 +1485,10 @@ class HistogramViz(BaseViz):
         else:
             groups = [((), df)]
         for keys, data in groups:
-            if isinstance(keys, str):
-                keys = (keys,)
-            # removing undesirable characters
-            keys = [re.sub(r'\W+', r'_', k) for k in keys]
             chart_data.extend([{
-                'key': '__'.join([c] + keys),
-                'values': data[c].tolist()}
-                for c in self.columns])
+                'key': self.labelify(keys, column),
+                'values': data[column].tolist()}
+                for column in self.columns])
         return chart_data
 
 


Mime
View raw message