mirror of https://github.com/apache/superset.git
Collapsible Control sections (#3354)
The left panel of the explore view has become crowded and overwhelming overtime. This PR adds functionality to collapse the control sections, and sets most sections to be collapse by default as the explore view opens up. * breakdown `Query` section for most viz * bring filters to the top, under Query section * collapse most sections by default * removed confusing outdated description for Filter section
This commit is contained in:
parent
64c91ec9e3
commit
670ba5d32e
|
@ -6,25 +6,38 @@ import InfoTooltipWithTrigger from '../../components/InfoTooltipWithTrigger';
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
label: PropTypes.string,
|
label: PropTypes.string,
|
||||||
description: PropTypes.string,
|
description: PropTypes.string,
|
||||||
tooltip: PropTypes.string,
|
|
||||||
children: PropTypes.node.isRequired,
|
children: PropTypes.node.isRequired,
|
||||||
|
startExpanded: PropTypes.bool,
|
||||||
};
|
};
|
||||||
|
|
||||||
const defaultProps = {
|
const defaultProps = {
|
||||||
label: null,
|
label: null,
|
||||||
description: null,
|
description: null,
|
||||||
tooltip: null,
|
startExpanded: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default class ControlPanelSection extends React.Component {
|
export default class ControlPanelSection extends React.Component {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = { expanded: this.props.startExpanded };
|
||||||
|
}
|
||||||
|
toggleExpand() {
|
||||||
|
this.setState({ expanded: !this.state.expanded });
|
||||||
|
}
|
||||||
renderHeader() {
|
renderHeader() {
|
||||||
const { label, tooltip } = this.props;
|
const { label, description } = this.props;
|
||||||
let header;
|
let header;
|
||||||
if (label) {
|
if (label) {
|
||||||
header = (
|
header = (
|
||||||
<div>
|
<div>
|
||||||
{label}
|
<i
|
||||||
{tooltip && <InfoTooltipWithTrigger label={label} tooltip={tooltip} />}
|
className={`text-primary expander fa fa-caret-${this.state.expanded ? 'down' : 'right'}`}
|
||||||
|
onClick={this.toggleExpand.bind(this)}
|
||||||
|
/>
|
||||||
|
{' '}
|
||||||
|
<span onClick={this.toggleExpand.bind(this)}>{label}</span>
|
||||||
|
{' '}
|
||||||
|
{description && <InfoTooltipWithTrigger label={label} tooltip={description} />}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -35,6 +48,8 @@ export default class ControlPanelSection extends React.Component {
|
||||||
return (
|
return (
|
||||||
<Panel
|
<Panel
|
||||||
className="control-panel-section"
|
className="control-panel-section"
|
||||||
|
collapsible
|
||||||
|
expanded={this.state.expanded}
|
||||||
header={this.renderHeader()}
|
header={this.renderHeader()}
|
||||||
>
|
>
|
||||||
{this.props.children}
|
{this.props.children}
|
||||||
|
|
|
@ -67,11 +67,13 @@ class ControlPanelsContainer extends React.Component {
|
||||||
<ControlPanelSection
|
<ControlPanelSection
|
||||||
key={section.label}
|
key={section.label}
|
||||||
label={section.label}
|
label={section.label}
|
||||||
tooltip={section.description}
|
startExpanded={section.expanded}
|
||||||
|
description={section.description}
|
||||||
>
|
>
|
||||||
{section.controlSetRows.map((controlSets, i) => (
|
{section.controlSetRows.map((controlSets, i) => (
|
||||||
<ControlRow
|
<ControlRow
|
||||||
key={`controlsetrow-${i}`}
|
key={`controlsetrow-${i}`}
|
||||||
|
className="control-row"
|
||||||
controls={controlSets.map(controlName => (
|
controls={controlSets.map(controlName => (
|
||||||
controlName &&
|
controlName &&
|
||||||
this.props.controls[controlName] &&
|
this.props.controls[controlName] &&
|
||||||
|
|
|
@ -73,3 +73,16 @@
|
||||||
height: 10px;
|
height: 10px;
|
||||||
margin: 9px 1px;
|
margin: 9px 1px;
|
||||||
}
|
}
|
||||||
|
.control-panel-section .panel-body {
|
||||||
|
margin-left: 15px;
|
||||||
|
padding-bottom: 0px;
|
||||||
|
}
|
||||||
|
.control-panel-section .control-label {
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
.fa.expander {
|
||||||
|
width: 15px;
|
||||||
|
}
|
||||||
|
.control-panel-section span.label {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import * as v from '../validators';
|
||||||
export const sections = {
|
export const sections = {
|
||||||
druidTimeSeries: {
|
druidTimeSeries: {
|
||||||
label: 'Time',
|
label: 'Time',
|
||||||
|
expanded: true,
|
||||||
description: 'Time related form attributes',
|
description: 'Time related form attributes',
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['granularity', 'druid_time_origin'],
|
['granularity', 'druid_time_origin'],
|
||||||
|
@ -12,6 +13,7 @@ export const sections = {
|
||||||
},
|
},
|
||||||
datasourceAndVizType: {
|
datasourceAndVizType: {
|
||||||
label: 'Datasource & Chart Type',
|
label: 'Datasource & Chart Type',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['datasource'],
|
['datasource'],
|
||||||
['viz_type'],
|
['viz_type'],
|
||||||
|
@ -27,6 +29,7 @@ export const sections = {
|
||||||
sqlaTimeSeries: {
|
sqlaTimeSeries: {
|
||||||
label: 'Time',
|
label: 'Time',
|
||||||
description: 'Time related form attributes',
|
description: 'Time related form attributes',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['granularity_sqla', 'time_grain_sqla'],
|
['granularity_sqla', 'time_grain_sqla'],
|
||||||
['since', 'until'],
|
['since', 'until'],
|
||||||
|
@ -42,7 +45,8 @@ export const sections = {
|
||||||
},
|
},
|
||||||
NVD3TimeSeries: [
|
NVD3TimeSeries: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['metrics'],
|
['metrics'],
|
||||||
['groupby'],
|
['groupby'],
|
||||||
|
@ -66,14 +70,12 @@ export const sections = {
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
label: 'Filters',
|
label: 'Filters',
|
||||||
description: 'Filters are defined using comma delimited strings as in <US,FR,Other>' +
|
expanded: true,
|
||||||
'Leave the value control empty to filter empty strings or nulls' +
|
|
||||||
'For filters with comma in values, wrap them in single quotes' +
|
|
||||||
"as in <NY, 'Tahoe, CA', DC>",
|
|
||||||
controlSetRows: [['filters']],
|
controlSetRows: [['filters']],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Result Filters',
|
label: 'Result Filters',
|
||||||
|
expanded: true,
|
||||||
description: 'The filters to apply after post-aggregation.' +
|
description: 'The filters to apply after post-aggregation.' +
|
||||||
'Leave the value control empty to filter empty strings or nulls',
|
'Leave the value control empty to filter empty strings or nulls',
|
||||||
controlSetRows: [['having_filters']],
|
controlSetRows: [['having_filters']],
|
||||||
|
@ -119,10 +121,16 @@ export const visTypes = {
|
||||||
showOnExplore: true,
|
showOnExplore: true,
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['metrics', 'groupby'],
|
['metrics', 'groupby'],
|
||||||
['limit'],
|
['limit'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Chart Options',
|
||||||
|
controlSetRows: [
|
||||||
['pie_label_type'],
|
['pie_label_type'],
|
||||||
['donut', 'show_legend'],
|
['donut', 'show_legend'],
|
||||||
['labels_outside'],
|
['labels_outside'],
|
||||||
|
@ -346,7 +354,7 @@ export const visTypes = {
|
||||||
label: 'Markup',
|
label: 'Markup',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Code',
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['markup_type'],
|
['markup_type'],
|
||||||
['code'],
|
['code'],
|
||||||
|
@ -359,12 +367,18 @@ export const visTypes = {
|
||||||
label: 'Pivot Table',
|
label: 'Pivot Table',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['groupby', 'columns'],
|
['groupby', 'columns'],
|
||||||
['metrics', 'pandas_aggfunc'],
|
['metrics'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Pivot Options',
|
||||||
|
controlSetRows: [
|
||||||
|
['pandas_aggfunc', 'pivot_margins'],
|
||||||
['number_format', 'combine_metric'],
|
['number_format', 'combine_metric'],
|
||||||
['pivot_margins'],
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -378,7 +392,7 @@ export const visTypes = {
|
||||||
label: 'Separator',
|
label: 'Separator',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Code',
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['markup_type'],
|
['markup_type'],
|
||||||
['code'],
|
['code'],
|
||||||
|
@ -400,9 +414,15 @@ export const visTypes = {
|
||||||
label: 'Word Cloud',
|
label: 'Word Cloud',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['series', 'metric', 'limit'],
|
['series', 'metric', 'limit'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Options',
|
||||||
|
controlSetRows: [
|
||||||
['size_from', 'size_to'],
|
['size_from', 'size_to'],
|
||||||
['rotation'],
|
['rotation'],
|
||||||
['color_scheme'],
|
['color_scheme'],
|
||||||
|
@ -415,7 +435,8 @@ export const visTypes = {
|
||||||
label: 'Treemap',
|
label: 'Treemap',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['metrics'],
|
['metrics'],
|
||||||
['groupby'],
|
['groupby'],
|
||||||
|
@ -442,9 +463,15 @@ export const visTypes = {
|
||||||
requiresTime: true,
|
requiresTime: true,
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['metric'],
|
['metric'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Options',
|
||||||
|
controlSetRows: [
|
||||||
['domain_granularity'],
|
['domain_granularity'],
|
||||||
['subdomain_granularity'],
|
['subdomain_granularity'],
|
||||||
],
|
],
|
||||||
|
@ -456,7 +483,8 @@ export const visTypes = {
|
||||||
label: 'Box Plot',
|
label: 'Box Plot',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['metrics'],
|
['metrics'],
|
||||||
['groupby', 'limit'],
|
['groupby', 'limit'],
|
||||||
|
@ -476,7 +504,8 @@ export const visTypes = {
|
||||||
label: 'Bubble Chart',
|
label: 'Bubble Chart',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['series', 'entity'],
|
['series', 'entity'],
|
||||||
['size', 'limit'],
|
['size', 'limit'],
|
||||||
|
@ -527,7 +556,14 @@ export const visTypes = {
|
||||||
requiresTime: false,
|
requiresTime: false,
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
|
controlSetRows: [
|
||||||
|
['metric'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Chart Options',
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['metric'],
|
['metric'],
|
||||||
['ranges', 'range_labels'],
|
['ranges', 'range_labels'],
|
||||||
|
@ -542,9 +578,15 @@ export const visTypes = {
|
||||||
label: 'Big Number with Trendline',
|
label: 'Big Number with Trendline',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['metric'],
|
['metric'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Chart Options',
|
||||||
|
controlSetRows: [
|
||||||
['compare_lag', 'compare_suffix'],
|
['compare_lag', 'compare_suffix'],
|
||||||
['y_axis_format', null],
|
['y_axis_format', null],
|
||||||
],
|
],
|
||||||
|
@ -561,9 +603,15 @@ export const visTypes = {
|
||||||
label: 'Big Number',
|
label: 'Big Number',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['metric'],
|
['metric'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Chart Options',
|
||||||
|
controlSetRows: [
|
||||||
['subheader'],
|
['subheader'],
|
||||||
['y_axis_format'],
|
['y_axis_format'],
|
||||||
],
|
],
|
||||||
|
@ -580,14 +628,15 @@ export const visTypes = {
|
||||||
label: 'Histogram',
|
label: 'Histogram',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['all_columns_x'],
|
['all_columns_x'],
|
||||||
['row_limit'],
|
['row_limit'],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Histogram Options',
|
label: 'Chart Options',
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['color_scheme'],
|
['color_scheme'],
|
||||||
['link_length'],
|
['link_length'],
|
||||||
|
@ -611,11 +660,17 @@ export const visTypes = {
|
||||||
label: 'Sunburst',
|
label: 'Sunburst',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['groupby'],
|
['groupby'],
|
||||||
['metric', 'secondary_metric'],
|
['metric', 'secondary_metric'],
|
||||||
['row_limit'],
|
['row_limit'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Chart Options',
|
||||||
|
controlSetRows: [
|
||||||
['color_scheme'],
|
['color_scheme'],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -642,11 +697,17 @@ export const visTypes = {
|
||||||
label: 'Sankey',
|
label: 'Sankey',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['groupby'],
|
['groupby'],
|
||||||
['metric'],
|
['metric'],
|
||||||
['row_limit'],
|
['row_limit'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Chart Options',
|
||||||
|
controlSetRows: [
|
||||||
['color_scheme'],
|
['color_scheme'],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -663,7 +724,8 @@ export const visTypes = {
|
||||||
label: 'Directed Force Layout',
|
label: 'Directed Force Layout',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['groupby'],
|
['groupby'],
|
||||||
['metric'],
|
['metric'],
|
||||||
|
@ -671,7 +733,7 @@ export const visTypes = {
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Force Layout',
|
label: 'Options',
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['link_length'],
|
['link_length'],
|
||||||
['charge'],
|
['charge'],
|
||||||
|
@ -689,11 +751,17 @@ export const visTypes = {
|
||||||
label: 'Chord Diagram',
|
label: 'Chord Diagram',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['groupby', 'columns'],
|
['groupby', 'columns'],
|
||||||
['metric'],
|
['metric', 'row_limit'],
|
||||||
['row_limit', 'y_axis_format'],
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Chart Options',
|
||||||
|
controlSetRows: [
|
||||||
|
['y_axis_format', null],
|
||||||
['color_scheme'],
|
['color_scheme'],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -721,11 +789,17 @@ export const visTypes = {
|
||||||
label: 'Country Map',
|
label: 'Country Map',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['select_country'],
|
|
||||||
['entity'],
|
['entity'],
|
||||||
['metric'],
|
['metric'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Options',
|
||||||
|
controlSetRows: [
|
||||||
|
['select_country'],
|
||||||
['linear_color_scheme'],
|
['linear_color_scheme'],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -748,7 +822,8 @@ export const visTypes = {
|
||||||
label: 'World Map',
|
label: 'World Map',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['entity'],
|
['entity'],
|
||||||
['country_fieldtype'],
|
['country_fieldtype'],
|
||||||
|
@ -784,13 +859,19 @@ export const visTypes = {
|
||||||
label: 'Filter Box',
|
label: 'Filter Box',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['date_filter', 'instant_filtering'],
|
|
||||||
['groupby'],
|
['groupby'],
|
||||||
['metric'],
|
['metric'],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: 'Options',
|
||||||
|
controlSetRows: [
|
||||||
|
['date_filter', 'instant_filtering'],
|
||||||
|
],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
controlOverrides: {
|
controlOverrides: {
|
||||||
groupby: {
|
groupby: {
|
||||||
|
@ -810,7 +891,7 @@ export const visTypes = {
|
||||||
label: 'iFrame',
|
label: 'iFrame',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Options',
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['url'],
|
['url'],
|
||||||
],
|
],
|
||||||
|
@ -822,12 +903,18 @@ export const visTypes = {
|
||||||
label: 'Parallel Coordinates',
|
label: 'Parallel Coordinates',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['series'],
|
['series'],
|
||||||
['metrics'],
|
['metrics'],
|
||||||
['secondary_metric'],
|
['secondary_metric'],
|
||||||
['limit'],
|
['limit'],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Options',
|
||||||
|
controlSetRows: [
|
||||||
['show_datatable', 'include_series'],
|
['show_datatable', 'include_series'],
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -882,13 +969,13 @@ export const visTypes = {
|
||||||
label: 'Mapbox',
|
label: 'Mapbox',
|
||||||
controlPanelSections: [
|
controlPanelSections: [
|
||||||
{
|
{
|
||||||
label: null,
|
label: 'Query',
|
||||||
|
expanded: true,
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
['all_columns_x', 'all_columns_y'],
|
['all_columns_x', 'all_columns_y'],
|
||||||
['clustering_radius'],
|
['clustering_radius'],
|
||||||
['row_limit'],
|
['row_limit'],
|
||||||
['groupby'],
|
['groupby'],
|
||||||
['render_while_dragging'],
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -908,6 +995,7 @@ export const visTypes = {
|
||||||
{
|
{
|
||||||
label: 'Visual Tweaks',
|
label: 'Visual Tweaks',
|
||||||
controlSetRows: [
|
controlSetRows: [
|
||||||
|
['render_while_dragging'],
|
||||||
['mapbox_style'],
|
['mapbox_style'],
|
||||||
['global_opacity'],
|
['global_opacity'],
|
||||||
['mapbox_color'],
|
['mapbox_color'],
|
||||||
|
|
Loading…
Reference in New Issue