From 53e8a4ff5b959442c5b3faeb03ac1ebcf525379a Mon Sep 17 00:00:00 2001 From: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com> Date: Tue, 19 May 2020 11:17:32 -0700 Subject: [PATCH] feat(legacy-plugin-chart-event-flow): control panel (#501) --- .../package.json | 2 + .../src/controlPanel.jsx | 128 ++++++++++++++++++ .../src/index.js | 2 + 3 files changed, 132 insertions(+) create mode 100644 superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/src/controlPanel.jsx diff --git a/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/package.json b/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/package.json index 4869b3d7f219..651b4058be79 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/package.json +++ b/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/package.json @@ -33,7 +33,9 @@ }, "peerDependencies": { "@superset-ui/chart": "^0.13.0", + "@superset-ui/control-utils": "^0.13.12", "@superset-ui/translation": "^0.13.0", + "@superset-ui/validator": "^0.13.3", "react": "^15 || ^16" } } diff --git a/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/src/controlPanel.jsx b/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/src/controlPanel.jsx new file mode 100644 index 000000000000..214f81425bb7 --- /dev/null +++ b/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/src/controlPanel.jsx @@ -0,0 +1,128 @@ +/** + * 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. + */ +import React from 'react'; +import { t } from '@superset-ui/translation'; +import { validateNonEmpty } from '@superset-ui/validator'; +import { + ColumnOption, + internalSharedControls, + formatSelectOptionsForRange, +} from '@superset-ui/control-utils'; + +const { columnChoices } = internalSharedControls; + +export default { + requiresTime: true, + controlPanelSections: [ + { + label: t('Event definition'), + controlSetRows: [ + ['entity'], + [ + { + name: 'all_columns_x', + config: { + type: 'SelectControl', + label: t('Column containing event names'), + default: control => + control.choices && control.choices.length > 0 ? control.choices[0][0] : null, + }, + description: t('Columns to display'), + mapStateToProps: state => ({ + choices: columnChoices(state.datasource), + }), + validators: [validateNonEmpty], + }, + ], + ['row_limit'], + [ + { + name: 'order_by_entity', + config: { + type: 'CheckboxControl', + label: t('Order by entity id'), + description: t( + 'Important! Select this if the table is not already sorted by entity id, ' + + 'else there is no guarantee that all events for each entity are returned.', + ), + default: true, + }, + }, + ], + [ + { + name: 'min_leaf_node_event_count', + config: { + type: 'SelectControl', + freeForm: false, + label: t('Minimum leaf node event count'), + default: 1, + choices: formatSelectOptionsForRange(1, 10), + description: t( + 'Leaf nodes that represent fewer than this number of events will be initially ' + + 'hidden in the visualization', + ), + }, + }, + ], + ], + }, + { + label: t('Query'), + expanded: true, + controlSetRows: [['adhoc_filters']], + }, + { + label: t('Additional metadata'), + controlSetRows: [ + [ + { + name: 'all_columns', + config: { + type: 'SelectControl', + multi: true, + label: t('Meta data'), + default: [], + description: t('Select any columns for metadata inspection'), + optionRenderer: c => , + valueRenderer: c => , + valueKey: 'column_name', + allowAll: true, + mapStateToProps: state => ({ + options: state.datasource ? state.datasource.columns : [], + }), + commaChoosesOption: false, + freeForm: true, + }, + }, + ], + ], + }, + ], + controlOverrides: { + entity: { + label: t('Column containing entity ids'), + description: t('e.g., a "user id" column'), + }, + row_limit: { + label: t('Event count limit'), + description: t('The maximum number of events to return, equivalent to the number of rows'), + }, + }, +}; diff --git a/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/src/index.js b/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/src/index.js index b88e29e6b79e..fef15f7d4ecb 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/src/index.js +++ b/superset-frontend/temporary_superset_ui/superset-ui/temporary-plugins/hold-potentially-deprecate/superset-ui-legacy-plugin-chart-event-flow/src/index.js @@ -19,6 +19,7 @@ import { t } from '@superset-ui/translation'; import { ChartMetadata, ChartPlugin } from '@superset-ui/chart'; import thumbnail from './images/thumbnail.png'; +import controlPanel from './controlPanel'; const metadata = new ChartMetadata({ credits: ['https://github.com/williaster/data-ui'], @@ -34,6 +35,7 @@ export default class EventFlowChartPlugin extends ChartPlugin { loadChart: () => import('./EventFlow'), loadTransformProps: () => import('./transformProps.js'), metadata, + controlPanel, }); } }