Migrating shared DeckGL controls (#9455)
* Missed a couple unique controls!
* new shared module, with filter_nulls export.
* autozoom
* dimension
* nixing unneeded import
* stroke_width
* js_columns
* remaining js_* controls
* cleaning up unused stuff
* legend_format
* exports for prior commit
* legend_position
* line_column
* fill_color_picker
* filled, stroked, stroke_color_picker
* grid_size, extruded
* ... more gridsize
* viewport
* point_radius_fixed, spatial
* multiplier, line_type, line_width
* reverse_long_lat
* lint ✨
This commit is contained in:
parent
dcb7b8350e
commit
b6bca9f137
|
|
@ -1093,7 +1093,6 @@ Note the `y_axis_format` is defined under various section for some charts.
|
|||
| `add_to_dash` | _N/A_ | |
|
||||
| `all_columns_y` | _N/A_ | |
|
||||
| `annotation_layers` | _N/A_ | |
|
||||
| `autozoom` | _N/A_ | |
|
||||
| `bar_stacked` | _N/A_ | |
|
||||
| `cache_timeout` | _N/A_ | |
|
||||
| `code` | _N/A_ | |
|
||||
|
|
@ -1104,17 +1103,11 @@ Note the `y_axis_format` is defined under various section for some charts.
|
|||
| `country_fieldtype` | _N/A_ | |
|
||||
| `date_filter` | _N/A_ | |
|
||||
| `default_filters` | _N/A_ | |
|
||||
| `dimension` | _N/A_ | |
|
||||
| `end_spatial` | _N/A_ | |
|
||||
| `entity` | _N/A_ | |
|
||||
| `expanded_slices` | _N/A_ | |
|
||||
| `extra_filters` | _N/A_ | |
|
||||
| `extruded` | _N/A_ | |
|
||||
| `fill_color_picker` | _N/A_ | |
|
||||
| `filled` | _N/A_ | |
|
||||
| `filter_immune_slice_fields` | _N/A_ | |
|
||||
| `filter_immune_slices` | _N/A_ | |
|
||||
| `filter_nulls` | _N/A_ | |
|
||||
| `flt_col_0` | _N/A_ | |
|
||||
| `flt_col_1` | _N/A_ | |
|
||||
| `flt_eq_0` | _N/A_ | |
|
||||
|
|
@ -1122,22 +1115,15 @@ Note the `y_axis_format` is defined under various section for some charts.
|
|||
| `flt_op_0` | _N/A_ | |
|
||||
| `flt_op_1` | _N/A_ | |
|
||||
| `goto_dash` | _N/A_ | |
|
||||
| `grid_size` | _N/A_ | |
|
||||
| `import_time` | _N/A_ | |
|
||||
| `instant_filtering` | _N/A_ | |
|
||||
| `js_columns` | _N/A_ | |
|
||||
| `label` | _N/A_ | |
|
||||
| `legend_position` | _N/A_ | |
|
||||
| `line_column` | _N/A_ | |
|
||||
| `line_type` | _N/A_ | |
|
||||
| `line_width` | _N/A_ | |
|
||||
| `linear_color_scheme` | _N/A_ | |
|
||||
| `log_scale` | _N/A_ | |
|
||||
| `mapbox_label` | _N/A_ | |
|
||||
| `mapbox_style` | _N/A_ | |
|
||||
| `markup_type` | _N/A_ | |
|
||||
| `min_periods` | _N/A_ | |
|
||||
| `multiplier` | _N/A_ | |
|
||||
| `new_dashboard_name` | _N/A_ | |
|
||||
| `new_slice_name` | _N/A_ | |
|
||||
| `normalize_across` | _N/A_ | |
|
||||
|
|
@ -1147,14 +1133,12 @@ Note the `y_axis_format` is defined under various section for some charts.
|
|||
| `pandas_aggfunc` | _N/A_ | |
|
||||
| `period_ratio_type` | _N/A_ | |
|
||||
| `perm` | _N/A_ | |
|
||||
| `point_radius_fixed` | _N/A_ | |
|
||||
| `rdo_save` | _N/A_ | |
|
||||
| `reduce_x_ticks` | _N/A_ | |
|
||||
| `refresh_frequency` | _N/A_ | |
|
||||
| `remote_id` | _N/A_ | |
|
||||
| `resample_fillmethod` | _N/A_ | |
|
||||
| `resample_how` | _N/A_ | |
|
||||
| `reverse_long_lat` | _N/A_ | |
|
||||
| `rolling_periods` | _N/A_ | |
|
||||
| `rolling_type` | _N/A_ | |
|
||||
| `rose_area_proportion` | _N/A_ | |
|
||||
|
|
@ -1173,14 +1157,8 @@ Note the `y_axis_format` is defined under various section for some charts.
|
|||
| `show_sqla_time_granularity` | _N/A_ | |
|
||||
| `show_values` | _N/A_ | |
|
||||
| `slice_name` | _N/A_ | |
|
||||
| `spatial` | _N/A_ | |
|
||||
| `start_spatial` | _N/A_ | |
|
||||
| `stroke_color_picker` | _N/A_ | |
|
||||
| `stroke_width` | _N/A_ | |
|
||||
| `stroked` | _N/A_ | |
|
||||
| `table_filter` | _N/A_ | |
|
||||
| `timed_refresh_immune_slices` | _N/A_ | |
|
||||
| `url` | _N/A_ | |
|
||||
| `userid` | _N/A_ | |
|
||||
| `viewport` | _N/A_ | |
|
||||
| `viewport_zoom` | _N/A_ | |
|
||||
|
|
|
|||
|
|
@ -18,6 +18,21 @@
|
|||
*/
|
||||
import { t } from '@superset-ui/translation';
|
||||
import timeGrainSqlaAnimationOverrides from './timeGrainSqlaAnimationOverrides';
|
||||
import { nonEmpty, integer } from '../validators';
|
||||
import { columnChoices, PRIMARY_COLOR } from '../controls';
|
||||
import { formatSelectOptions } from '../../modules/utils';
|
||||
import {
|
||||
filterNulls,
|
||||
autozoom,
|
||||
dimension,
|
||||
jsColumns,
|
||||
jsDataMutator,
|
||||
jsTooltip,
|
||||
jsOnclickHref,
|
||||
legendFormat,
|
||||
legendPosition,
|
||||
viewport,
|
||||
} from './Shared_DeckGL';
|
||||
|
||||
export default {
|
||||
requiresTime: true,
|
||||
|
|
@ -26,44 +41,99 @@ export default {
|
|||
label: t('Query'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['start_spatial', 'end_spatial'],
|
||||
['row_limit', 'filter_nulls'],
|
||||
[
|
||||
{
|
||||
name: 'start_spatial',
|
||||
config: {
|
||||
type: 'SpatialControl',
|
||||
label: t('Start Longitude & Latitude'),
|
||||
validators: [nonEmpty],
|
||||
description: t('Point to your spatial columns'),
|
||||
mapStateToProps: state => ({
|
||||
choices: columnChoices(state.datasource),
|
||||
}),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'end_spatial',
|
||||
config: {
|
||||
type: 'SpatialControl',
|
||||
label: t('End Longitude & Latitude'),
|
||||
validators: [nonEmpty],
|
||||
description: t('Point to your spatial columns'),
|
||||
mapStateToProps: state => ({
|
||||
choices: columnChoices(state.datasource),
|
||||
}),
|
||||
},
|
||||
},
|
||||
],
|
||||
['row_limit', filterNulls],
|
||||
['adhoc_filters'],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Map'),
|
||||
controlSetRows: [
|
||||
['mapbox_style', 'viewport'],
|
||||
['autozoom', null],
|
||||
['mapbox_style', viewport],
|
||||
[autozoom, null],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Arc'),
|
||||
controlSetRows: [
|
||||
['color_picker', 'target_color_picker'],
|
||||
['dimension', 'color_scheme', 'label_colors'],
|
||||
['stroke_width', 'legend_position'],
|
||||
['legend_format', null],
|
||||
[
|
||||
'color_picker',
|
||||
{
|
||||
name: 'target_color_picker',
|
||||
config: {
|
||||
label: t('Target Color'),
|
||||
description: t('Color of the target location'),
|
||||
type: 'ColorPickerControl',
|
||||
default: PRIMARY_COLOR,
|
||||
renderTrigger: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
...dimension,
|
||||
label: t('Categorical Color'),
|
||||
description: t(
|
||||
'Pick a dimension from which categorical colors are defined',
|
||||
),
|
||||
},
|
||||
'color_scheme',
|
||||
'label_colors',
|
||||
],
|
||||
[
|
||||
{
|
||||
name: 'stroke_width',
|
||||
color: {
|
||||
type: 'SelectControl',
|
||||
freeForm: true,
|
||||
label: t('Stroke Width'),
|
||||
validators: [integer],
|
||||
default: null,
|
||||
renderTrigger: true,
|
||||
choices: formatSelectOptions([1, 2, 3, 4, 5]),
|
||||
},
|
||||
},
|
||||
legendPosition,
|
||||
],
|
||||
[legendFormat, null],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Advanced'),
|
||||
controlSetRows: [
|
||||
['js_columns'],
|
||||
['js_data_mutator'],
|
||||
['js_tooltip'],
|
||||
['js_onclick_href'],
|
||||
[jsColumns],
|
||||
[jsDataMutator],
|
||||
[jsTooltip],
|
||||
[jsOnclickHref],
|
||||
],
|
||||
},
|
||||
],
|
||||
controlOverrides: {
|
||||
dimension: {
|
||||
label: t('Categorical Color'),
|
||||
description: t(
|
||||
'Pick a dimension from which categorical colors are defined',
|
||||
),
|
||||
},
|
||||
size: {
|
||||
validators: [],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -20,6 +20,19 @@ import { t } from '@superset-ui/translation';
|
|||
import { nonEmpty, integer } from '../validators';
|
||||
import { formatSelectOptions } from '../../modules/utils';
|
||||
import { columnChoices } from '../controls';
|
||||
import {
|
||||
filterNulls,
|
||||
jsColumns,
|
||||
jsDataMutator,
|
||||
jsTooltip,
|
||||
jsOnclickHref,
|
||||
fillColorPicker,
|
||||
strokeColorPicker,
|
||||
filled,
|
||||
stroked,
|
||||
extruded,
|
||||
viewport,
|
||||
} from './Shared_DeckGL';
|
||||
|
||||
export default {
|
||||
requiresTime: true,
|
||||
|
|
@ -43,23 +56,23 @@ export default {
|
|||
},
|
||||
null,
|
||||
],
|
||||
['row_limit', 'filter_nulls'],
|
||||
['row_limit', filterNulls],
|
||||
['adhoc_filters'],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Map'),
|
||||
controlSetRows: [
|
||||
['mapbox_style', 'viewport'],
|
||||
// TODO ['autozoom', null],
|
||||
['mapbox_style', viewport],
|
||||
// TODO [autozoom, null], // import { autozoom } from './Shared_DeckGL'
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('GeoJson Settings'),
|
||||
controlSetRows: [
|
||||
['fill_color_picker', 'stroke_color_picker'],
|
||||
['filled', 'stroked'],
|
||||
['extruded', null],
|
||||
[fillColorPicker, strokeColorPicker],
|
||||
[filled, stroked],
|
||||
[extruded, null],
|
||||
[
|
||||
{
|
||||
name: 'point_radius_scale',
|
||||
|
|
@ -79,10 +92,10 @@ export default {
|
|||
{
|
||||
label: t('Advanced'),
|
||||
controlSetRows: [
|
||||
['js_columns'],
|
||||
['js_data_mutator'],
|
||||
['js_tooltip'],
|
||||
['js_onclick_href'],
|
||||
[jsColumns],
|
||||
[jsDataMutator],
|
||||
[jsTooltip],
|
||||
[jsOnclickHref],
|
||||
],
|
||||
},
|
||||
],
|
||||
|
|
|
|||
|
|
@ -18,6 +18,18 @@
|
|||
*/
|
||||
import { t } from '@superset-ui/translation';
|
||||
import { nonEmpty } from '../validators';
|
||||
import {
|
||||
filterNulls,
|
||||
autozoom,
|
||||
jsColumns,
|
||||
jsDataMutator,
|
||||
jsTooltip,
|
||||
jsOnclickHref,
|
||||
extruded,
|
||||
gridSize,
|
||||
viewport,
|
||||
spatial,
|
||||
} from './Shared_DeckGL';
|
||||
|
||||
export default {
|
||||
requiresTime: true,
|
||||
|
|
@ -26,26 +38,26 @@ export default {
|
|||
label: t('Query'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['spatial', 'size'],
|
||||
['row_limit', 'filter_nulls'],
|
||||
[spatial, 'size'],
|
||||
['row_limit', filterNulls],
|
||||
['adhoc_filters'],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Map'),
|
||||
controlSetRows: [
|
||||
['mapbox_style', 'viewport'],
|
||||
['color_picker', 'autozoom'],
|
||||
['grid_size', 'extruded'],
|
||||
['mapbox_style', viewport],
|
||||
['color_picker', autozoom],
|
||||
[gridSize, extruded],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Advanced'),
|
||||
controlSetRows: [
|
||||
['js_columns'],
|
||||
['js_data_mutator'],
|
||||
['js_tooltip'],
|
||||
['js_onclick_href'],
|
||||
[jsColumns],
|
||||
[jsDataMutator],
|
||||
[jsTooltip],
|
||||
[jsOnclickHref],
|
||||
],
|
||||
},
|
||||
],
|
||||
|
|
|
|||
|
|
@ -21,6 +21,18 @@ import {
|
|||
formatSelectOptions,
|
||||
formatSelectOptionsForRange,
|
||||
} from '../../modules/utils';
|
||||
import {
|
||||
filterNulls,
|
||||
autozoom,
|
||||
jsColumns,
|
||||
jsDataMutator,
|
||||
jsTooltip,
|
||||
jsOnclickHref,
|
||||
extruded,
|
||||
gridSize,
|
||||
viewport,
|
||||
spatial,
|
||||
} from './Shared_DeckGL';
|
||||
|
||||
export default {
|
||||
requiresTime: true,
|
||||
|
|
@ -29,17 +41,17 @@ export default {
|
|||
label: t('Query'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['spatial', 'size'],
|
||||
['row_limit', 'filter_nulls'],
|
||||
[spatial, 'size'],
|
||||
['row_limit', filterNulls],
|
||||
['adhoc_filters'],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Map'),
|
||||
controlSetRows: [
|
||||
['mapbox_style', 'viewport'],
|
||||
['color_picker', 'autozoom'],
|
||||
['grid_size', 'extruded'],
|
||||
['mapbox_style', viewport],
|
||||
['color_picker', autozoom],
|
||||
[gridSize, extruded],
|
||||
[
|
||||
{
|
||||
name: 'js_agg_function',
|
||||
|
|
@ -75,10 +87,10 @@ export default {
|
|||
{
|
||||
label: t('Advanced'),
|
||||
controlSetRows: [
|
||||
['js_columns'],
|
||||
['js_data_mutator'],
|
||||
['js_tooltip'],
|
||||
['js_onclick_href'],
|
||||
[jsColumns],
|
||||
[jsDataMutator],
|
||||
[jsTooltip],
|
||||
[jsOnclickHref],
|
||||
],
|
||||
},
|
||||
],
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
*/
|
||||
import { t } from '@superset-ui/translation';
|
||||
import { nonEmpty } from '../validators';
|
||||
import { viewport } from './Shared_DeckGL';
|
||||
|
||||
export default {
|
||||
requiresTime: true,
|
||||
|
|
@ -26,7 +27,7 @@ export default {
|
|||
label: t('Map'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['mapbox_style', 'viewport'],
|
||||
['mapbox_style', viewport],
|
||||
[
|
||||
{
|
||||
name: 'deck_slices',
|
||||
|
|
|
|||
|
|
@ -17,6 +17,19 @@
|
|||
* under the License.
|
||||
*/
|
||||
import { t } from '@superset-ui/translation';
|
||||
import {
|
||||
filterNulls,
|
||||
autozoom,
|
||||
jsColumns,
|
||||
jsDataMutator,
|
||||
jsTooltip,
|
||||
jsOnclickHref,
|
||||
lineColumn,
|
||||
viewport,
|
||||
lineWidth,
|
||||
lineType,
|
||||
reverseLongLat,
|
||||
} from './Shared_DeckGL';
|
||||
|
||||
export default {
|
||||
requiresTime: true,
|
||||
|
|
@ -25,8 +38,17 @@ export default {
|
|||
label: t('Query'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['line_column', 'line_type'],
|
||||
['row_limit', 'filter_nulls'],
|
||||
[
|
||||
lineColumn,
|
||||
{
|
||||
...lineType,
|
||||
choices: [
|
||||
['polyline', 'Polyline'],
|
||||
['json', 'JSON'],
|
||||
],
|
||||
},
|
||||
],
|
||||
['row_limit', filterNulls],
|
||||
['adhoc_filters'],
|
||||
],
|
||||
},
|
||||
|
|
@ -34,27 +56,19 @@ export default {
|
|||
label: t('Map'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['mapbox_style', 'viewport'],
|
||||
['color_picker', 'line_width'],
|
||||
['reverse_long_lat', 'autozoom'],
|
||||
['mapbox_style', viewport],
|
||||
['color_picker', lineWidth],
|
||||
[reverseLongLat, autozoom],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Advanced'),
|
||||
controlSetRows: [
|
||||
['js_columns'],
|
||||
['js_data_mutator'],
|
||||
['js_tooltip'],
|
||||
['js_onclick_href'],
|
||||
[jsColumns],
|
||||
[jsDataMutator],
|
||||
[jsTooltip],
|
||||
[jsOnclickHref],
|
||||
],
|
||||
},
|
||||
],
|
||||
controlOverrides: {
|
||||
line_type: {
|
||||
choices: [
|
||||
['polyline', 'Polyline'],
|
||||
['json', 'JSON'],
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -19,6 +19,28 @@
|
|||
import { t } from '@superset-ui/translation';
|
||||
import timeGrainSqlaAnimationOverrides from './timeGrainSqlaAnimationOverrides';
|
||||
import { formatSelectOptions } from '../../modules/utils';
|
||||
import {
|
||||
filterNulls,
|
||||
autozoom,
|
||||
jsColumns,
|
||||
jsDataMutator,
|
||||
jsTooltip,
|
||||
jsOnclickHref,
|
||||
legendFormat,
|
||||
legendPosition,
|
||||
lineColumn,
|
||||
fillColorPicker,
|
||||
strokeColorPicker,
|
||||
filled,
|
||||
stroked,
|
||||
extruded,
|
||||
viewport,
|
||||
pointRadiusFixed,
|
||||
multiplier,
|
||||
lineWidth,
|
||||
lineType,
|
||||
reverseLongLat,
|
||||
} from './Shared_DeckGL';
|
||||
|
||||
export default {
|
||||
requiresTime: true,
|
||||
|
|
@ -27,29 +49,32 @@ export default {
|
|||
label: t('Query'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['line_column', 'line_type'],
|
||||
[
|
||||
{ ...lineColumn, label: t('Polygon Column') },
|
||||
{ ...lineType, label: t('Polygon Encoding') },
|
||||
],
|
||||
['adhoc_filters'],
|
||||
['metric', 'point_radius_fixed'],
|
||||
['metric', { ...pointRadiusFixed, label: t('Elevation') }],
|
||||
['row_limit', null],
|
||||
['reverse_long_lat', 'filter_nulls'],
|
||||
[reverseLongLat, filterNulls],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Map'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['mapbox_style', 'viewport'],
|
||||
['autozoom', null],
|
||||
['mapbox_style', viewport],
|
||||
[autozoom, null],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Polygon Settings'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['fill_color_picker', 'stroke_color_picker'],
|
||||
['filled', 'stroked'],
|
||||
['extruded', 'multiplier'],
|
||||
['line_width', null],
|
||||
[fillColorPicker, strokeColorPicker],
|
||||
[filled, stroked],
|
||||
[extruded, multiplier],
|
||||
[lineWidth, null],
|
||||
[
|
||||
'linear_color_scheme',
|
||||
{
|
||||
|
|
@ -110,16 +135,16 @@ export default {
|
|||
},
|
||||
},
|
||||
],
|
||||
['legend_position', 'legend_format'],
|
||||
[legendPosition, legendFormat],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Advanced'),
|
||||
controlSetRows: [
|
||||
['js_columns'],
|
||||
['js_data_mutator'],
|
||||
['js_tooltip'],
|
||||
['js_onclick_href'],
|
||||
[jsColumns],
|
||||
[jsDataMutator],
|
||||
[jsTooltip],
|
||||
[jsOnclickHref],
|
||||
],
|
||||
},
|
||||
],
|
||||
|
|
@ -127,15 +152,6 @@ export default {
|
|||
metric: {
|
||||
validators: [],
|
||||
},
|
||||
line_column: {
|
||||
label: t('Polygon Column'),
|
||||
},
|
||||
line_type: {
|
||||
label: t('Polygon Encoding'),
|
||||
},
|
||||
point_radius_fixed: {
|
||||
label: t('Elevation'),
|
||||
},
|
||||
time_grain_sqla: timeGrainSqlaAnimationOverrides,
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -19,6 +19,21 @@
|
|||
import { t } from '@superset-ui/translation';
|
||||
import timeGrainSqlaAnimationOverrides from './timeGrainSqlaAnimationOverrides';
|
||||
import { nonEmpty } from '../validators';
|
||||
import {
|
||||
filterNulls,
|
||||
autozoom,
|
||||
dimension,
|
||||
jsColumns,
|
||||
jsDataMutator,
|
||||
jsTooltip,
|
||||
jsOnclickHref,
|
||||
legendFormat,
|
||||
legendPosition,
|
||||
viewport,
|
||||
spatial,
|
||||
pointRadiusFixed,
|
||||
multiplier,
|
||||
} from './Shared_DeckGL';
|
||||
|
||||
export default {
|
||||
requiresTime: true,
|
||||
|
|
@ -38,8 +53,8 @@ export default {
|
|||
label: t('Query'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['spatial', null],
|
||||
['row_limit', 'filter_nulls'],
|
||||
[spatial, null],
|
||||
['row_limit', filterNulls],
|
||||
['adhoc_filters'],
|
||||
],
|
||||
},
|
||||
|
|
@ -47,15 +62,15 @@ export default {
|
|||
label: t('Map'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['mapbox_style', 'viewport'],
|
||||
['autozoom', null],
|
||||
['mapbox_style', viewport],
|
||||
[autozoom, null],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Point Size'),
|
||||
controlSetRows: [
|
||||
[
|
||||
'point_radius_fixed',
|
||||
pointRadiusFixed,
|
||||
{
|
||||
name: 'point_unit',
|
||||
config: {
|
||||
|
|
@ -109,34 +124,38 @@ export default {
|
|||
},
|
||||
},
|
||||
],
|
||||
['multiplier', null],
|
||||
[multiplier, null],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Point Color'),
|
||||
controlSetRows: [
|
||||
['color_picker', 'legend_position'],
|
||||
[null, 'legend_format'],
|
||||
['dimension', 'color_scheme', 'label_colors'],
|
||||
['color_picker', legendPosition],
|
||||
[null, legendFormat],
|
||||
[
|
||||
{
|
||||
...dimension,
|
||||
label: t('Categorical Color'),
|
||||
description: t(
|
||||
'Pick a dimension from which categorical colors are defined',
|
||||
),
|
||||
},
|
||||
'color_scheme',
|
||||
'label_colors',
|
||||
],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Advanced'),
|
||||
controlSetRows: [
|
||||
['js_columns'],
|
||||
['js_data_mutator'],
|
||||
['js_tooltip'],
|
||||
['js_onclick_href'],
|
||||
[jsColumns],
|
||||
[jsDataMutator],
|
||||
[jsTooltip],
|
||||
[jsOnclickHref],
|
||||
],
|
||||
},
|
||||
],
|
||||
controlOverrides: {
|
||||
dimension: {
|
||||
label: t('Categorical Color'),
|
||||
description: t(
|
||||
'Pick a dimension from which categorical colors are defined',
|
||||
),
|
||||
},
|
||||
size: {
|
||||
validators: [],
|
||||
},
|
||||
|
|
|
|||
|
|
@ -19,6 +19,17 @@
|
|||
import { t } from '@superset-ui/translation';
|
||||
import { nonEmpty } from '../validators';
|
||||
import timeGrainSqlaAnimationOverrides from './timeGrainSqlaAnimationOverrides';
|
||||
import {
|
||||
filterNulls,
|
||||
autozoom,
|
||||
jsColumns,
|
||||
jsDataMutator,
|
||||
jsTooltip,
|
||||
jsOnclickHref,
|
||||
gridSize,
|
||||
viewport,
|
||||
spatial,
|
||||
} from './Shared_DeckGL';
|
||||
|
||||
export default {
|
||||
requiresTime: true,
|
||||
|
|
@ -27,30 +38,30 @@ export default {
|
|||
label: t('Query'),
|
||||
expanded: true,
|
||||
controlSetRows: [
|
||||
['spatial', 'size'],
|
||||
['row_limit', 'filter_nulls'],
|
||||
[spatial, 'size'],
|
||||
['row_limit', filterNulls],
|
||||
['adhoc_filters'],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Map'),
|
||||
controlSetRows: [
|
||||
['mapbox_style', 'viewport'],
|
||||
['autozoom', null],
|
||||
['mapbox_style', viewport],
|
||||
[autozoom, null],
|
||||
],
|
||||
},
|
||||
{
|
||||
label: t('Grid'),
|
||||
expanded: true,
|
||||
controlSetRows: [['grid_size', 'color_picker']],
|
||||
controlSetRows: [[gridSize, 'color_picker']],
|
||||
},
|
||||
{
|
||||
label: t('Advanced'),
|
||||
controlSetRows: [
|
||||
['js_columns'],
|
||||
['js_data_mutator'],
|
||||
['js_tooltip'],
|
||||
['js_onclick_href'],
|
||||
[jsColumns],
|
||||
[jsDataMutator],
|
||||
[jsTooltip],
|
||||
[jsOnclickHref],
|
||||
],
|
||||
},
|
||||
],
|
||||
|
|
|
|||
|
|
@ -0,0 +1,383 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
// These are control configurations that are shared ONLY within the DeckGL viz plugin repo.
|
||||
|
||||
import React from 'react';
|
||||
import { t } from '@superset-ui/translation';
|
||||
import ColumnOption from '../../components/ColumnOption';
|
||||
import { D3_FORMAT_OPTIONS, columnChoices, PRIMARY_COLOR } from '../controls';
|
||||
import { DEFAULT_VIEWPORT } from '../../explore/components/controls/ViewportControl';
|
||||
|
||||
import { nonEmpty } from '../validators';
|
||||
|
||||
const timeColumnOption = {
|
||||
verbose_name: 'Time',
|
||||
column_name: '__timestamp',
|
||||
description: t(
|
||||
'A reference to the [Time] configuration, taking granularity into ' +
|
||||
'account',
|
||||
),
|
||||
};
|
||||
|
||||
const groupByControl = {
|
||||
type: 'SelectControl',
|
||||
multi: true,
|
||||
freeForm: true,
|
||||
label: t('Group by'),
|
||||
default: [],
|
||||
includeTime: false,
|
||||
description: t('One or many controls to group by'),
|
||||
optionRenderer: c => <ColumnOption column={c} showType />,
|
||||
valueRenderer: c => <ColumnOption column={c} />,
|
||||
valueKey: 'column_name',
|
||||
allowAll: true,
|
||||
filterOption: (opt, text) =>
|
||||
(opt.column_name &&
|
||||
opt.column_name.toLowerCase().indexOf(text.toLowerCase()) >= 0) ||
|
||||
(opt.verbose_name &&
|
||||
opt.verbose_name.toLowerCase().indexOf(text.toLowerCase()) >= 0),
|
||||
promptTextCreator: label => label,
|
||||
mapStateToProps: (state, control) => {
|
||||
const newState = {};
|
||||
if (state.datasource) {
|
||||
newState.options = state.datasource.columns.filter(c => c.groupby);
|
||||
if (control && control.includeTime) {
|
||||
newState.options.push(timeColumnOption);
|
||||
}
|
||||
}
|
||||
return newState;
|
||||
},
|
||||
commaChoosesOption: false,
|
||||
};
|
||||
|
||||
const sandboxUrl =
|
||||
'https://github.com/apache/incubator-superset/' +
|
||||
'blob/master/superset-frontend/src/modules/sandbox.js';
|
||||
const jsFunctionInfo = (
|
||||
<div>
|
||||
{t(
|
||||
'For more information about objects are in context in the scope of this function, refer to the',
|
||||
)}
|
||||
<a href={sandboxUrl}>{t(" source code of Superset's sandboxed parser")}.</a>
|
||||
.
|
||||
</div>
|
||||
);
|
||||
|
||||
function jsFunctionControl(
|
||||
label,
|
||||
description,
|
||||
extraDescr = null,
|
||||
height = 100,
|
||||
defaultText = '',
|
||||
) {
|
||||
return {
|
||||
type: 'TextAreaControl',
|
||||
language: 'javascript',
|
||||
label,
|
||||
description,
|
||||
height,
|
||||
default: defaultText,
|
||||
aboveEditorSection: (
|
||||
<div>
|
||||
<p>{description}</p>
|
||||
<p>{jsFunctionInfo}</p>
|
||||
{extraDescr}
|
||||
</div>
|
||||
),
|
||||
mapStateToProps: state => ({
|
||||
warning: !state.common.conf.ENABLE_JAVASCRIPT_CONTROLS
|
||||
? t(
|
||||
'This functionality is disabled in your environment for security reasons.',
|
||||
)
|
||||
: null,
|
||||
readOnly: !state.common.conf.ENABLE_JAVASCRIPT_CONTROLS,
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
export const filterNulls = {
|
||||
name: 'filter_nulls',
|
||||
config: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Ignore null locations'),
|
||||
default: true,
|
||||
description: t('Whether to ignore locations that are null'),
|
||||
},
|
||||
};
|
||||
|
||||
export const autozoom = {
|
||||
name: 'autozoom',
|
||||
config: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Auto Zoom'),
|
||||
default: true,
|
||||
renderTrigger: true,
|
||||
description: t(
|
||||
'When checked, the map will zoom to your data after each query',
|
||||
),
|
||||
},
|
||||
};
|
||||
|
||||
export const dimension = {
|
||||
name: 'dimension',
|
||||
config: {
|
||||
...groupByControl,
|
||||
label: t('Dimension'),
|
||||
description: t('Select a dimension'),
|
||||
multi: false,
|
||||
default: null,
|
||||
},
|
||||
};
|
||||
|
||||
export const jsColumns = {
|
||||
name: 'js_columns',
|
||||
config: {
|
||||
...groupByControl,
|
||||
label: t('Extra data for JS'),
|
||||
default: [],
|
||||
description: t(
|
||||
'List of extra columns made available in Javascript functions',
|
||||
),
|
||||
},
|
||||
};
|
||||
|
||||
export const jsDataMutator = {
|
||||
name: 'js_data_mutator',
|
||||
config: jsFunctionControl(
|
||||
t('Javascript data interceptor'),
|
||||
t(
|
||||
'Define a javascript function that receives the data array used in the visualization ' +
|
||||
'and is expected to return a modified version of that array. This can be used ' +
|
||||
'to alter properties of the data, filter, or enrich the array.',
|
||||
),
|
||||
),
|
||||
};
|
||||
|
||||
export const jsTooltip = {
|
||||
name: 'js_tooltip',
|
||||
config: jsFunctionControl(
|
||||
t('Javascript tooltip generator'),
|
||||
t(
|
||||
'Define a function that receives the input and outputs the content for a tooltip',
|
||||
),
|
||||
),
|
||||
};
|
||||
|
||||
export const jsOnclickHref = {
|
||||
name: 'js_onclick_href',
|
||||
config: jsFunctionControl(
|
||||
t('Javascript onClick href'),
|
||||
t('Define a function that returns a URL to navigate to when user clicks'),
|
||||
),
|
||||
};
|
||||
|
||||
export const legendFormat = {
|
||||
name: 'legend_format',
|
||||
config: {
|
||||
label: t('Legend Format'),
|
||||
description: t('Choose the format for legend values'),
|
||||
type: 'SelectControl',
|
||||
clearable: false,
|
||||
default: D3_FORMAT_OPTIONS[0],
|
||||
choices: D3_FORMAT_OPTIONS,
|
||||
renderTrigger: true,
|
||||
},
|
||||
};
|
||||
|
||||
export const legendPosition = {
|
||||
name: 'legend_position',
|
||||
config: {
|
||||
label: t('Legend Position'),
|
||||
description: t('Choose the position of the legend'),
|
||||
type: 'SelectControl',
|
||||
clearable: false,
|
||||
default: 'tr',
|
||||
choices: [
|
||||
[null, 'None'],
|
||||
['tl', 'Top left'],
|
||||
['tr', 'Top right'],
|
||||
['bl', 'Bottom left'],
|
||||
['br', 'Bottom right'],
|
||||
],
|
||||
renderTrigger: true,
|
||||
},
|
||||
};
|
||||
|
||||
export const lineColumn = {
|
||||
name: 'line_column',
|
||||
config: {
|
||||
type: 'SelectControl',
|
||||
label: t('Lines column'),
|
||||
default: null,
|
||||
description: t('The database columns that contains lines information'),
|
||||
mapStateToProps: state => ({
|
||||
choices: columnChoices(state.datasource),
|
||||
}),
|
||||
validators: [nonEmpty],
|
||||
},
|
||||
};
|
||||
|
||||
export const fillColorPicker = {
|
||||
name: 'fill_color_picker',
|
||||
config: {
|
||||
label: t('Fill Color'),
|
||||
description: t(
|
||||
' Set the opacity to 0 if you do not want to override the color specified in the GeoJSON',
|
||||
),
|
||||
type: 'ColorPickerControl',
|
||||
default: PRIMARY_COLOR,
|
||||
renderTrigger: true,
|
||||
},
|
||||
};
|
||||
|
||||
export const strokeColorPicker = {
|
||||
name: 'stroke_color_picker',
|
||||
config: {
|
||||
label: t('Stroke Color'),
|
||||
description: t(
|
||||
' Set the opacity to 0 if you do not want to override the color specified in the GeoJSON',
|
||||
),
|
||||
type: 'ColorPickerControl',
|
||||
default: PRIMARY_COLOR,
|
||||
renderTrigger: true,
|
||||
},
|
||||
};
|
||||
|
||||
export const filled = {
|
||||
name: 'filled',
|
||||
config: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Filled'),
|
||||
renderTrigger: true,
|
||||
description: t('Whether to fill the objects'),
|
||||
default: true,
|
||||
},
|
||||
};
|
||||
|
||||
export const stroked = {
|
||||
name: 'stroked',
|
||||
config: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Stroked'),
|
||||
renderTrigger: true,
|
||||
description: t('Whether to display the stroke'),
|
||||
default: false,
|
||||
},
|
||||
};
|
||||
|
||||
export const extruded = {
|
||||
name: 'extruded',
|
||||
config: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Extruded'),
|
||||
renderTrigger: true,
|
||||
default: true,
|
||||
description: 'Whether to make the grid 3D',
|
||||
},
|
||||
};
|
||||
|
||||
export const gridSize = {
|
||||
name: 'grid_size',
|
||||
config: {
|
||||
type: 'TextControl',
|
||||
label: t('Grid Size'),
|
||||
renderTrigger: true,
|
||||
default: 20,
|
||||
isInt: true,
|
||||
description: t('Defines the grid size in pixels'),
|
||||
},
|
||||
};
|
||||
|
||||
export const viewport = {
|
||||
name: 'viewport',
|
||||
config: {
|
||||
type: 'ViewportControl',
|
||||
label: t('Viewport'),
|
||||
renderTrigger: false,
|
||||
description: t('Parameters related to the view and perspective on the map'),
|
||||
// default is whole world mostly centered
|
||||
default: DEFAULT_VIEWPORT,
|
||||
// Viewport changes shouldn't prompt user to re-run query
|
||||
dontRefreshOnChange: true,
|
||||
},
|
||||
};
|
||||
|
||||
export const spatial = {
|
||||
name: 'spatial',
|
||||
config: {
|
||||
type: 'SpatialControl',
|
||||
label: t('Longitude & Latitude'),
|
||||
validators: [nonEmpty],
|
||||
description: t('Point to your spatial columns'),
|
||||
mapStateToProps: state => ({
|
||||
choices: columnChoices(state.datasource),
|
||||
}),
|
||||
},
|
||||
};
|
||||
|
||||
export const pointRadiusFixed = {
|
||||
name: 'point_radius_fixed',
|
||||
config: {
|
||||
type: 'FixedOrMetricControl',
|
||||
label: t('Point Size'),
|
||||
default: { type: 'fix', value: 1000 },
|
||||
description: t('Fixed point radius'),
|
||||
mapStateToProps: state => ({
|
||||
datasource: state.datasource,
|
||||
}),
|
||||
},
|
||||
};
|
||||
|
||||
export const multiplier = {
|
||||
name: 'multiplier',
|
||||
config: {
|
||||
type: 'TextControl',
|
||||
label: t('Multiplier'),
|
||||
isFloat: true,
|
||||
renderTrigger: true,
|
||||
default: 1,
|
||||
description: t('Factor to multiply the metric by'),
|
||||
},
|
||||
};
|
||||
|
||||
export const lineType = {
|
||||
name: 'line_type',
|
||||
config: {
|
||||
type: 'SelectControl',
|
||||
label: t('Lines encoding'),
|
||||
clearable: false,
|
||||
default: 'json',
|
||||
description: t('The encoding format of the lines'),
|
||||
choices: [
|
||||
['polyline', 'Polyline'],
|
||||
['json', 'JSON'],
|
||||
['geohash', 'geohash (square)'],
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
export const reverseLongLat = {
|
||||
name: 'reverse_long_lat',
|
||||
config: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Reverse Lat & Long'),
|
||||
default: false,
|
||||
},
|
||||
};
|
||||
|
|
@ -70,16 +70,15 @@ import {
|
|||
} from '../modules/utils';
|
||||
import * as v from './validators';
|
||||
import ColumnOption from '../components/ColumnOption';
|
||||
import { DEFAULT_VIEWPORT } from '../explore/components/controls/ViewportControl';
|
||||
import { TIME_FILTER_LABELS } from './constants';
|
||||
|
||||
const categoricalSchemeRegistry = getCategoricalSchemeRegistry();
|
||||
const sequentialSchemeRegistry = getSequentialSchemeRegistry();
|
||||
|
||||
const PRIMARY_COLOR = { r: 0, g: 122, b: 135, a: 1 };
|
||||
export const PRIMARY_COLOR = { r: 0, g: 122, b: 135, a: 1 };
|
||||
|
||||
// input choices & options
|
||||
const D3_FORMAT_OPTIONS = [
|
||||
export const D3_FORMAT_OPTIONS = [
|
||||
['SMART_NUMBER', 'Adaptative formating'],
|
||||
['.1s', '.1s (12345.432 => 10k)'],
|
||||
['.3s', '.3s (12345.432 => 12.3k)'],
|
||||
|
|
@ -177,19 +176,6 @@ const metric = {
|
|||
default: props => mainMetric(props.savedMetrics),
|
||||
};
|
||||
|
||||
const sandboxUrl =
|
||||
'https://github.com/apache/incubator-superset/' +
|
||||
'blob/master/superset-frontend/src/modules/sandbox.js';
|
||||
const jsFunctionInfo = (
|
||||
<div>
|
||||
{t(
|
||||
'For more information about objects are in context in the scope of this function, refer to the',
|
||||
)}
|
||||
<a href={sandboxUrl}>{t(" source code of Superset's sandboxed parser")}.</a>
|
||||
.
|
||||
</div>
|
||||
);
|
||||
|
||||
export function columnChoices(datasource) {
|
||||
if (datasource && datasource.columns) {
|
||||
return datasource.columns
|
||||
|
|
@ -201,38 +187,6 @@ export function columnChoices(datasource) {
|
|||
return [];
|
||||
}
|
||||
|
||||
function jsFunctionControl(
|
||||
label,
|
||||
description,
|
||||
extraDescr = null,
|
||||
height = 100,
|
||||
defaultText = '',
|
||||
) {
|
||||
return {
|
||||
type: 'TextAreaControl',
|
||||
language: 'javascript',
|
||||
label,
|
||||
description,
|
||||
height,
|
||||
default: defaultText,
|
||||
aboveEditorSection: (
|
||||
<div>
|
||||
<p>{description}</p>
|
||||
<p>{jsFunctionInfo}</p>
|
||||
{extraDescr}
|
||||
</div>
|
||||
),
|
||||
mapStateToProps: state => ({
|
||||
warning: !state.common.conf.ENABLE_JAVASCRIPT_CONTROLS
|
||||
? t(
|
||||
'This functionality is disabled in your environment for security reasons.',
|
||||
)
|
||||
: null,
|
||||
readOnly: !state.common.conf.ENABLE_JAVASCRIPT_CONTROLS,
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
export const controls = {
|
||||
metrics,
|
||||
|
||||
|
|
@ -277,60 +231,6 @@ export const controls = {
|
|||
renderTrigger: true,
|
||||
},
|
||||
|
||||
target_color_picker: {
|
||||
label: t('Target Color'),
|
||||
description: t('Color of the target location'),
|
||||
type: 'ColorPickerControl',
|
||||
default: PRIMARY_COLOR,
|
||||
renderTrigger: true,
|
||||
},
|
||||
|
||||
legend_position: {
|
||||
label: t('Legend Position'),
|
||||
description: t('Choose the position of the legend'),
|
||||
type: 'SelectControl',
|
||||
clearable: false,
|
||||
default: 'tr',
|
||||
choices: [
|
||||
[null, 'None'],
|
||||
['tl', 'Top left'],
|
||||
['tr', 'Top right'],
|
||||
['bl', 'Bottom left'],
|
||||
['br', 'Bottom right'],
|
||||
],
|
||||
renderTrigger: true,
|
||||
},
|
||||
|
||||
legend_format: {
|
||||
label: t('Legend Format'),
|
||||
description: t('Choose the format for legend values'),
|
||||
type: 'SelectControl',
|
||||
clearable: false,
|
||||
default: D3_FORMAT_OPTIONS[0],
|
||||
choices: D3_FORMAT_OPTIONS,
|
||||
renderTrigger: true,
|
||||
},
|
||||
|
||||
fill_color_picker: {
|
||||
label: t('Fill Color'),
|
||||
description: t(
|
||||
' Set the opacity to 0 if you do not want to override the color specified in the GeoJSON',
|
||||
),
|
||||
type: 'ColorPickerControl',
|
||||
default: PRIMARY_COLOR,
|
||||
renderTrigger: true,
|
||||
},
|
||||
|
||||
stroke_color_picker: {
|
||||
label: t('Stroke Color'),
|
||||
description: t(
|
||||
' Set the opacity to 0 if you do not want to override the color specified in the GeoJSON',
|
||||
),
|
||||
type: 'ColorPickerControl',
|
||||
default: PRIMARY_COLOR,
|
||||
renderTrigger: true,
|
||||
},
|
||||
|
||||
metric_2: {
|
||||
...metric,
|
||||
label: t('Right Axis Metric'),
|
||||
|
|
@ -367,16 +267,6 @@ export const controls = {
|
|||
),
|
||||
},
|
||||
|
||||
autozoom: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Auto Zoom'),
|
||||
default: true,
|
||||
renderTrigger: true,
|
||||
description: t(
|
||||
'When checked, the map will zoom to your data after each query',
|
||||
),
|
||||
},
|
||||
|
||||
bar_stacked: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Stacked Bars'),
|
||||
|
|
@ -505,13 +395,6 @@ export const controls = {
|
|||
},
|
||||
|
||||
groupby: groupByControl,
|
||||
dimension: {
|
||||
...groupByControl,
|
||||
label: t('Dimension'),
|
||||
description: t('Select a dimension'),
|
||||
multi: false,
|
||||
default: null,
|
||||
},
|
||||
|
||||
columns: {
|
||||
...groupByControl,
|
||||
|
|
@ -536,36 +419,6 @@ export const controls = {
|
|||
freeForm: true,
|
||||
},
|
||||
|
||||
spatial: {
|
||||
type: 'SpatialControl',
|
||||
label: t('Longitude & Latitude'),
|
||||
validators: [v.nonEmpty],
|
||||
description: t('Point to your spatial columns'),
|
||||
mapStateToProps: state => ({
|
||||
choices: columnChoices(state.datasource),
|
||||
}),
|
||||
},
|
||||
|
||||
start_spatial: {
|
||||
type: 'SpatialControl',
|
||||
label: t('Start Longitude & Latitude'),
|
||||
validators: [v.nonEmpty],
|
||||
description: t('Point to your spatial columns'),
|
||||
mapStateToProps: state => ({
|
||||
choices: columnChoices(state.datasource),
|
||||
}),
|
||||
},
|
||||
|
||||
end_spatial: {
|
||||
type: 'SpatialControl',
|
||||
label: t('End Longitude & Latitude'),
|
||||
validators: [v.nonEmpty],
|
||||
description: t('Point to your spatial columns'),
|
||||
mapStateToProps: state => ({
|
||||
choices: columnChoices(state.datasource),
|
||||
}),
|
||||
},
|
||||
|
||||
longitude: {
|
||||
type: 'SelectControl',
|
||||
label: t('Longitude'),
|
||||
|
|
@ -588,13 +441,6 @@ export const controls = {
|
|||
}),
|
||||
},
|
||||
|
||||
filter_nulls: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Ignore null locations'),
|
||||
default: true,
|
||||
description: t('Whether to ignore locations that are null'),
|
||||
},
|
||||
|
||||
polygon: {
|
||||
type: 'SelectControl',
|
||||
label: t('Polygon Column'),
|
||||
|
|
@ -607,16 +453,6 @@ export const controls = {
|
|||
}),
|
||||
},
|
||||
|
||||
stroke_width: {
|
||||
type: 'SelectControl',
|
||||
freeForm: true,
|
||||
label: t('Stroke Width'),
|
||||
validators: [v.integer],
|
||||
default: null,
|
||||
renderTrigger: true,
|
||||
choices: formatSelectOptions([1, 2, 3, 4, 5]),
|
||||
},
|
||||
|
||||
all_columns_x: {
|
||||
type: 'SelectControl',
|
||||
label: 'X',
|
||||
|
|
@ -890,15 +726,6 @@ export const controls = {
|
|||
),
|
||||
},
|
||||
|
||||
multiplier: {
|
||||
type: 'TextControl',
|
||||
label: t('Multiplier'),
|
||||
isFloat: true,
|
||||
renderTrigger: true,
|
||||
default: 1,
|
||||
description: t('Factor to multiply the metric by'),
|
||||
},
|
||||
|
||||
rolling_periods: {
|
||||
type: 'TextControl',
|
||||
label: t('Periods'),
|
||||
|
|
@ -909,15 +736,6 @@ export const controls = {
|
|||
),
|
||||
},
|
||||
|
||||
grid_size: {
|
||||
type: 'TextControl',
|
||||
label: t('Grid Size'),
|
||||
renderTrigger: true,
|
||||
default: 20,
|
||||
isInt: true,
|
||||
description: t('Defines the grid size in pixels'),
|
||||
},
|
||||
|
||||
min_periods: {
|
||||
type: 'TextControl',
|
||||
label: t('Min Periods'),
|
||||
|
|
@ -1111,14 +929,6 @@ export const controls = {
|
|||
'users to hit an [Apply] button',
|
||||
},
|
||||
|
||||
extruded: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Extruded'),
|
||||
renderTrigger: true,
|
||||
default: true,
|
||||
description: 'Whether to make the grid 3D',
|
||||
},
|
||||
|
||||
show_brush: {
|
||||
type: 'SelectControl',
|
||||
label: t('Show Range Filter'),
|
||||
|
|
@ -1310,16 +1120,6 @@ export const controls = {
|
|||
description: t('Base layer map style'),
|
||||
},
|
||||
|
||||
point_radius_fixed: {
|
||||
type: 'FixedOrMetricControl',
|
||||
label: t('Point Size'),
|
||||
default: { type: 'fix', value: 1000 },
|
||||
description: t('Fixed point radius'),
|
||||
mapStateToProps: state => ({
|
||||
datasource: state.datasource,
|
||||
}),
|
||||
},
|
||||
|
||||
global_opacity: {
|
||||
type: 'TextControl',
|
||||
label: t('Opacity'),
|
||||
|
|
@ -1330,17 +1130,6 @@ export const controls = {
|
|||
),
|
||||
},
|
||||
|
||||
viewport: {
|
||||
type: 'ViewportControl',
|
||||
label: t('Viewport'),
|
||||
renderTrigger: false,
|
||||
description: t('Parameters related to the view and perspective on the map'),
|
||||
// default is whole world mostly centered
|
||||
default: DEFAULT_VIEWPORT,
|
||||
// Viewport changes shouldn't prompt user to re-run query
|
||||
dontRefreshOnChange: true,
|
||||
},
|
||||
|
||||
viewport_zoom: {
|
||||
type: 'TextControl',
|
||||
label: t('Zoom'),
|
||||
|
|
@ -1440,97 +1229,6 @@ export const controls = {
|
|||
controlName: 'TimeSeriesColumnControl',
|
||||
},
|
||||
|
||||
line_column: {
|
||||
type: 'SelectControl',
|
||||
label: t('Lines column'),
|
||||
default: null,
|
||||
description: t('The database columns that contains lines information'),
|
||||
mapStateToProps: state => ({
|
||||
choices: columnChoices(state.datasource),
|
||||
}),
|
||||
validators: [v.nonEmpty],
|
||||
},
|
||||
line_type: {
|
||||
type: 'SelectControl',
|
||||
label: t('Lines encoding'),
|
||||
clearable: false,
|
||||
default: 'json',
|
||||
description: t('The encoding format of the lines'),
|
||||
choices: [
|
||||
['polyline', 'Polyline'],
|
||||
['json', 'JSON'],
|
||||
['geohash', 'geohash (square)'],
|
||||
],
|
||||
},
|
||||
|
||||
line_width: {
|
||||
type: 'TextControl',
|
||||
label: t('Line width'),
|
||||
renderTrigger: true,
|
||||
isInt: true,
|
||||
default: 10,
|
||||
description: t('The width of the lines'),
|
||||
},
|
||||
|
||||
reverse_long_lat: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Reverse Lat & Long'),
|
||||
default: false,
|
||||
},
|
||||
|
||||
js_data_mutator: jsFunctionControl(
|
||||
t('Javascript data interceptor'),
|
||||
t(
|
||||
'Define a javascript function that receives the data array used in the visualization ' +
|
||||
'and is expected to return a modified version of that array. This can be used ' +
|
||||
'to alter properties of the data, filter, or enrich the array.',
|
||||
),
|
||||
),
|
||||
|
||||
js_data: jsFunctionControl(
|
||||
t('Javascript data mutator'),
|
||||
t(
|
||||
'Define a function that receives intercepts the data objects and can mutate it',
|
||||
),
|
||||
),
|
||||
|
||||
js_tooltip: jsFunctionControl(
|
||||
t('Javascript tooltip generator'),
|
||||
t(
|
||||
'Define a function that receives the input and outputs the content for a tooltip',
|
||||
),
|
||||
),
|
||||
|
||||
js_onclick_href: jsFunctionControl(
|
||||
t('Javascript onClick href'),
|
||||
t('Define a function that returns a URL to navigate to when user clicks'),
|
||||
),
|
||||
|
||||
js_columns: {
|
||||
...groupByControl,
|
||||
label: t('Extra data for JS'),
|
||||
default: [],
|
||||
description: t(
|
||||
'List of extra columns made available in Javascript functions',
|
||||
),
|
||||
},
|
||||
|
||||
stroked: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Stroked'),
|
||||
renderTrigger: true,
|
||||
description: t('Whether to display the stroke'),
|
||||
default: false,
|
||||
},
|
||||
|
||||
filled: {
|
||||
type: 'CheckboxControl',
|
||||
label: t('Filled'),
|
||||
renderTrigger: true,
|
||||
description: t('Whether to fill the objects'),
|
||||
default: true,
|
||||
},
|
||||
|
||||
filter_configs: {
|
||||
type: 'CollectionControl',
|
||||
label: 'Filters',
|
||||
|
|
|
|||
Loading…
Reference in New Issue