You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2020/04/02 16:27:27 UTC

[incubator-superset] branch master updated: migrating unique controls (#9446)

This is an automated email from the ASF dual-hosted git repository.

rusackas 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 c003189  migrating unique controls (#9446)
c003189 is described below

commit c003189d0dd6af9766af273f17174a1d3ca02f88
Author: Evan Rusackas <ev...@preset.io>
AuthorDate: Thu Apr 2 09:26:52 2020 -0700

    migrating unique controls (#9446)
---
 CONTRIBUTING.md                                    |   7 -
 .../src/explore/controlPanels/DeckGeojson.js       |  34 ++++-
 .../src/explore/controlPanels/DeckHex.js           |  35 ++++-
 .../src/explore/controlPanels/DeckMulti.js         |  31 ++++-
 .../src/explore/controlPanels/DeckPolygon.js       |  64 ++++++++-
 .../src/explore/controlPanels/DeckScatter.js       |  58 ++++++++-
 superset-frontend/src/explore/controls.jsx         | 145 ---------------------
 7 files changed, 213 insertions(+), 161 deletions(-)

diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d6a93a9..38c76ab 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1118,7 +1118,6 @@ Note the `y_axis_format` is defined under various section for some charts.
 | `contribution`                  | _N/A_ |       |
 | `country_fieldtype`             | _N/A_ |       |
 | `date_filter`                   | _N/A_ |       |
-| `deck_slices`                   | _N/A_ |       |
 | `default_filters`               | _N/A_ |       |
 | `dimension`                     | _N/A_ |       |
 | `end_spatial`                   | _N/A_ |       |
@@ -1141,7 +1140,6 @@ Note the `y_axis_format` is defined under various section for some charts.
 | `grid_size`                     | _N/A_ |       |
 | `import_time`                   | _N/A_ |       |
 | `instant_filtering`             | _N/A_ |       |
-| `js_agg_function`               | _N/A_ |       |
 | `js_columns`                    | _N/A_ |       |
 | `label`                         | _N/A_ |       |
 | `labels_outside`                | _N/A_ |       |
@@ -1160,14 +1158,11 @@ Note the `y_axis_format` is defined under various section for some charts.
 | `marker_lines`                  | _N/A_ |       |
 | `markers`                       | _N/A_ |       |
 | `markup_type`                   | _N/A_ |       |
-| `max_radius`                    | _N/A_ |       |
 | `min_periods`                   | _N/A_ |       |
-| `min_radius`                    | _N/A_ |       |
 | `multiplier`                    | _N/A_ |       |
 | `new_dashboard_name`            | _N/A_ |       |
 | `new_slice_name`                | _N/A_ |       |
 | `normalize_across`              | _N/A_ |       |
-| `num_buckets`                   | _N/A_ |       |
 | `num_period_compare`            | _N/A_ |       |
 | `order_bars`                    | _N/A_ |       |
 | `order_desc`                    | _N/A_ |       |
@@ -1175,7 +1170,6 @@ Note the `y_axis_format` is defined under various section for some charts.
 | `period_ratio_type`             | _N/A_ |       |
 | `perm`                          | _N/A_ |       |
 | `point_radius_fixed`            | _N/A_ |       |
-| `point_unit`                    | _N/A_ |       |
 | `prefix_metric_with_slice_name` | _N/A_ |       |
 | `range_labels`                  | _N/A_ |       |
 | `ranges`                        | _N/A_ |       |
@@ -1216,7 +1210,6 @@ Note the `y_axis_format` is defined under various section for some charts.
 | `table_filter`                  | _N/A_ |       |
 | `time_compare`                  | _N/A_ |       |
 | `timed_refresh_immune_slices`   | _N/A_ |       |
-| `toggle_polygons`               | _N/A_ |       |
 | `url`                           | _N/A_ |       |
 | `userid`                        | _N/A_ |       |
 | `viewport`                      | _N/A_ |       |
diff --git a/superset-frontend/src/explore/controlPanels/DeckGeojson.js b/superset-frontend/src/explore/controlPanels/DeckGeojson.js
index 63dd8e0..e41c3e3 100644
--- a/superset-frontend/src/explore/controlPanels/DeckGeojson.js
+++ b/superset-frontend/src/explore/controlPanels/DeckGeojson.js
@@ -17,6 +17,9 @@
  * under the License.
  */
 import { t } from '@superset-ui/translation';
+import { nonEmpty, integer } from '../validators';
+import { formatSelectOptions } from '../../modules/utils';
+import { columnChoices } from '../controls';
 
 export default {
   requiresTime: true,
@@ -25,7 +28,21 @@ export default {
       label: t('Query'),
       expanded: true,
       controlSetRows: [
-        ['geojson', null],
+        [
+          {
+            name: 'geojson',
+            config: {
+              type: 'SelectControl',
+              label: t('GeoJson Column'),
+              validators: [nonEmpty],
+              description: t('Select the geojson column'),
+              mapStateToProps: state => ({
+                choices: columnChoices(state.datasource),
+              }),
+            },
+          },
+          null,
+        ],
         ['row_limit', 'filter_nulls'],
         ['adhoc_filters'],
       ],
@@ -43,7 +60,20 @@ export default {
         ['fill_color_picker', 'stroke_color_picker'],
         ['filled', 'stroked'],
         ['extruded', null],
-        ['point_radius_scale', null],
+        [
+          {
+            name: 'point_radius_scale',
+            config: {
+              type: 'SelectControl',
+              freeForm: true,
+              label: t('Point Radius Scale'),
+              validators: [integer],
+              default: null,
+              choices: formatSelectOptions([0, 100, 200, 300, 500]),
+            },
+          },
+          null,
+        ],
       ],
     },
     {
diff --git a/superset-frontend/src/explore/controlPanels/DeckHex.js b/superset-frontend/src/explore/controlPanels/DeckHex.js
index 62daeb9..01e221b 100644
--- a/superset-frontend/src/explore/controlPanels/DeckHex.js
+++ b/superset-frontend/src/explore/controlPanels/DeckHex.js
@@ -17,6 +17,10 @@
  * under the License.
  */
 import { t } from '@superset-ui/translation';
+import {
+  formatSelectOptions,
+  formatSelectOptionsForRange,
+} from '../../modules/utils';
 
 export default {
   requiresTime: true,
@@ -36,7 +40,36 @@ export default {
         ['mapbox_style', 'viewport'],
         ['color_picker', 'autozoom'],
         ['grid_size', 'extruded'],
-        ['js_agg_function', null],
+        [
+          {
+            name: 'js_agg_function',
+            config: {
+              type: 'SelectControl',
+              label: t('Dynamic Aggregation Function'),
+              description: t(
+                'The function to use when aggregating points into groups',
+              ),
+              default: 'sum',
+              clearable: false,
+              renderTrigger: true,
+              choices: formatSelectOptions([
+                'sum',
+                'min',
+                'max',
+                'mean',
+                'median',
+                'count',
+                'variance',
+                'deviation',
+                'p1',
+                'p5',
+                'p95',
+                'p99',
+              ]),
+            },
+          },
+          null,
+        ],
       ],
     },
     {
diff --git a/superset-frontend/src/explore/controlPanels/DeckMulti.js b/superset-frontend/src/explore/controlPanels/DeckMulti.js
index d61b6db..f05e6f3 100644
--- a/superset-frontend/src/explore/controlPanels/DeckMulti.js
+++ b/superset-frontend/src/explore/controlPanels/DeckMulti.js
@@ -17,6 +17,7 @@
  * under the License.
  */
 import { t } from '@superset-ui/translation';
+import { nonEmpty } from '../validators';
 
 export default {
   requiresTime: true,
@@ -26,7 +27,35 @@ export default {
       expanded: true,
       controlSetRows: [
         ['mapbox_style', 'viewport'],
-        ['deck_slices', null],
+        [
+          {
+            name: 'deck_slices',
+            config: {
+              type: 'SelectAsyncControl',
+              multi: true,
+              label: t('deck.gl charts'),
+              validators: [nonEmpty],
+              default: [],
+              description: t(
+                'Pick a set of deck.gl charts to layer on top of one another',
+              ),
+              dataEndpoint:
+                '/sliceasync/api/read?_flt_0_viz_type=deck_&_flt_7_viz_type=deck_multi',
+              placeholder: t('Select charts'),
+              onAsyncErrorMessage: t('Error while fetching charts'),
+              mutator: data => {
+                if (!data || !data.result) {
+                  return [];
+                }
+                return data.result.map(o => ({
+                  value: o.id,
+                  label: o.slice_name,
+                }));
+              },
+            },
+          },
+          null,
+        ],
       ],
     },
     {
diff --git a/superset-frontend/src/explore/controlPanels/DeckPolygon.js b/superset-frontend/src/explore/controlPanels/DeckPolygon.js
index cc29b84..75439df 100644
--- a/superset-frontend/src/explore/controlPanels/DeckPolygon.js
+++ b/superset-frontend/src/explore/controlPanels/DeckPolygon.js
@@ -18,6 +18,7 @@
  */
 import { t } from '@superset-ui/translation';
 import timeGrainSqlaAnimationOverrides from './timeGrainSqlaAnimationOverrides';
+import { formatSelectOptions } from '../../modules/utils';
 
 export default {
   requiresTime: true,
@@ -49,9 +50,66 @@ export default {
         ['filled', 'stroked'],
         ['extruded', 'multiplier'],
         ['line_width', null],
-        ['linear_color_scheme', 'opacity'],
-        ['num_buckets', 'break_points'],
-        ['table_filter', 'toggle_polygons'],
+        [
+          'linear_color_scheme',
+          {
+            name: 'opacity',
+            config: {
+              type: 'SliderControl',
+              label: t('Opacity'),
+              default: 80,
+              step: 1,
+              min: 0,
+              max: 100,
+              renderTrigger: true,
+              description: t('Opacity, expects values between 0 and 100'),
+            },
+          },
+        ],
+        [
+          {
+            name: 'num_buckets',
+            config: {
+              type: 'SelectControl',
+              multi: false,
+              freeForm: true,
+              label: t('Number of buckets to group data'),
+              default: 5,
+              choices: formatSelectOptions([2, 3, 5, 10]),
+              description: t('How many buckets should the data be grouped in.'),
+              renderTrigger: true,
+            },
+          },
+          {
+            name: 'break_points',
+            config: {
+              type: 'SelectControl',
+              multi: true,
+              freeForm: true,
+              label: t('Bucket break points'),
+              choices: formatSelectOptions([]),
+              description: t(
+                'List of n+1 values for bucketing metric into n buckets.',
+              ),
+              renderTrigger: true,
+            },
+          },
+        ],
+        [
+          'table_filter',
+          {
+            name: 'toggle_polygons',
+            config: {
+              type: 'CheckboxControl',
+              label: t('Multiple filtering'),
+              renderTrigger: true,
+              default: true,
+              description: t(
+                'Allow sending multiple polygons as a filter event',
+              ),
+            },
+          },
+        ],
         ['legend_position', 'legend_format'],
       ],
     },
diff --git a/superset-frontend/src/explore/controlPanels/DeckScatter.js b/superset-frontend/src/explore/controlPanels/DeckScatter.js
index e00edc9..dcc5f19 100644
--- a/superset-frontend/src/explore/controlPanels/DeckScatter.js
+++ b/superset-frontend/src/explore/controlPanels/DeckScatter.js
@@ -18,6 +18,7 @@
  */
 import { t } from '@superset-ui/translation';
 import timeGrainSqlaAnimationOverrides from './timeGrainSqlaAnimationOverrides';
+import { nonEmpty } from '../validators';
 
 export default {
   requiresTime: true,
@@ -53,8 +54,61 @@ export default {
     {
       label: t('Point Size'),
       controlSetRows: [
-        ['point_radius_fixed', 'point_unit'],
-        ['min_radius', 'max_radius'],
+        [
+          'point_radius_fixed',
+          {
+            name: 'point_unit',
+            config: {
+              type: 'SelectControl',
+              label: t('Point Unit'),
+              default: 'square_m',
+              clearable: false,
+              choices: [
+                ['square_m', 'Square meters'],
+                ['square_km', 'Square kilometers'],
+                ['square_miles', 'Square miles'],
+                ['radius_m', 'Radius in meters'],
+                ['radius_km', 'Radius in kilometers'],
+                ['radius_miles', 'Radius in miles'],
+              ],
+              description: t(
+                'The unit of measure for the specified point radius',
+              ),
+            },
+          },
+        ],
+        [
+          {
+            name: 'min_radius',
+            config: {
+              type: 'TextControl',
+              label: t('Minimum Radius'),
+              isFloat: true,
+              validators: [nonEmpty],
+              renderTrigger: true,
+              default: 2,
+              description: t(
+                'Minimum radius size of the circle, in pixels. As the zoom level changes, this ' +
+                  'insures that the circle respects this minimum radius.',
+              ),
+            },
+          },
+          {
+            name: 'max_radius',
+            config: {
+              type: 'TextControl',
+              label: t('Maximum Radius'),
+              isFloat: true,
+              validators: [nonEmpty],
+              renderTrigger: true,
+              default: 250,
+              description: t(
+                'Maxium radius size of the circle, in pixels. As the zoom level changes, this ' +
+                  'insures that the circle respects this maximum radius.',
+              ),
+            },
+          },
+        ],
         ['multiplier', null],
       ],
     },
diff --git a/superset-frontend/src/explore/controls.jsx b/superset-frontend/src/explore/controls.jsx
index 0c14116..cb983cd 100644
--- a/superset-frontend/src/explore/controls.jsx
+++ b/superset-frontend/src/explore/controls.jsx
@@ -607,16 +607,6 @@ export const controls = {
     description: t('Whether to ignore locations that are null'),
   },
 
-  geojson: {
-    type: 'SelectControl',
-    label: t('GeoJson Column'),
-    validators: [v.nonEmpty],
-    description: t('Select the geojson column'),
-    mapStateToProps: state => ({
-      choices: columnChoices(state.datasource),
-    }),
-  },
-
   polygon: {
     type: 'SelectControl',
     label: t('Polygon Column'),
@@ -629,15 +619,6 @@ export const controls = {
     }),
   },
 
-  point_radius_scale: {
-    type: 'SelectControl',
-    freeForm: true,
-    label: t('Point Radius Scale'),
-    validators: [v.integer],
-    default: null,
-    choices: formatSelectOptions([0, 100, 200, 300, 500]),
-  },
-
   stroke_width: {
     type: 'SelectControl',
     freeForm: true,
@@ -1187,29 +1168,6 @@ export const controls = {
     ),
   },
 
-  js_agg_function: {
-    type: 'SelectControl',
-    label: t('Dynamic Aggregation Function'),
-    description: t('The function to use when aggregating points into groups'),
-    default: 'sum',
-    clearable: false,
-    renderTrigger: true,
-    choices: formatSelectOptions([
-      'sum',
-      'min',
-      'max',
-      'mean',
-      'median',
-      'count',
-      'variance',
-      'deviation',
-      'p1',
-      'p5',
-      'p95',
-      'p99',
-    ]),
-  },
-
   header_font_size: {
     type: 'SelectControl',
     label: t('Header Font Size'),
@@ -1363,35 +1321,6 @@ export const controls = {
     description: t('Send range filter events to other charts'),
   },
 
-  toggle_polygons: {
-    type: 'CheckboxControl',
-    label: t('Multiple filtering'),
-    renderTrigger: true,
-    default: true,
-    description: t('Allow sending multiple polygons as a filter event'),
-  },
-
-  num_buckets: {
-    type: 'SelectControl',
-    multi: false,
-    freeForm: true,
-    label: t('Number of buckets to group data'),
-    default: 5,
-    choices: formatSelectOptions([2, 3, 5, 10]),
-    description: t('How many buckets should the data be grouped in.'),
-    renderTrigger: true,
-  },
-
-  break_points: {
-    type: 'SelectControl',
-    multi: true,
-    freeForm: true,
-    label: t('Bucket break points'),
-    choices: formatSelectOptions([]),
-    description: t('List of n+1 values for bucketing metric into n buckets.'),
-    renderTrigger: true,
-  },
-
   show_labels: {
     type: 'CheckboxControl',
     label: t('Show Labels'),
@@ -1589,22 +1518,6 @@ export const controls = {
     }),
   },
 
-  point_unit: {
-    type: 'SelectControl',
-    label: t('Point Unit'),
-    default: 'square_m',
-    clearable: false,
-    choices: [
-      ['square_m', 'Square meters'],
-      ['square_km', 'Square kilometers'],
-      ['square_miles', 'Square miles'],
-      ['radius_m', 'Radius in meters'],
-      ['radius_km', 'Radius in kilometers'],
-      ['radius_miles', 'Radius in miles'],
-    ],
-    description: t('The unit of measure for the specified point radius'),
-  },
-
   global_opacity: {
     type: 'TextControl',
     label: t('Opacity'),
@@ -1615,17 +1528,6 @@ export const controls = {
     ),
   },
 
-  opacity: {
-    type: 'SliderControl',
-    label: t('Opacity'),
-    default: 80,
-    step: 1,
-    min: 0,
-    max: 100,
-    renderTrigger: true,
-    description: t('Opacity, expects values between 0 and 100'),
-  },
-
   viewport: {
     type: 'ViewportControl',
     label: t('Viewport'),
@@ -1778,32 +1680,6 @@ export const controls = {
     controlName: 'TimeSeriesColumnControl',
   },
 
-  min_radius: {
-    type: 'TextControl',
-    label: t('Minimum Radius'),
-    isFloat: true,
-    validators: [v.nonEmpty],
-    renderTrigger: true,
-    default: 2,
-    description: t(
-      'Minimum radius size of the circle, in pixels. As the zoom level changes, this ' +
-        'insures that the circle respects this minimum radius.',
-    ),
-  },
-
-  max_radius: {
-    type: 'TextControl',
-    label: t('Maximum Radius'),
-    isFloat: true,
-    validators: [v.nonEmpty],
-    renderTrigger: true,
-    default: 250,
-    description: t(
-      'Maxium radius size of the circle, in pixels. As the zoom level changes, this ' +
-        'insures that the circle respects this maximum radius.',
-    ),
-  },
-
   line_column: {
     type: 'SelectControl',
     label: t('Lines column'),
@@ -1887,27 +1763,6 @@ export const controls = {
     default: false,
   },
 
-  deck_slices: {
-    type: 'SelectAsyncControl',
-    multi: true,
-    label: t('deck.gl charts'),
-    validators: [v.nonEmpty],
-    default: [],
-    description: t(
-      'Pick a set of deck.gl charts to layer on top of one another',
-    ),
-    dataEndpoint:
-      '/sliceasync/api/read?_flt_0_viz_type=deck_&_flt_7_viz_type=deck_multi',
-    placeholder: t('Select charts'),
-    onAsyncErrorMessage: t('Error while fetching charts'),
-    mutator: data => {
-      if (!data || !data.result) {
-        return [];
-      }
-      return data.result.map(o => ({ value: o.id, label: o.slice_name }));
-    },
-  },
-
   js_data_mutator: jsFunctionControl(
     t('Javascript data interceptor'),
     t(