diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/index.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/index.tsx index 9b06bb3b9b075..9577cd9656c34 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/index.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/index.tsx @@ -45,6 +45,7 @@ import { ComparisionType, isAdhocColumn, isPhysicalColumn, + ensureIsArray, } from '@superset-ui/core'; import { @@ -57,7 +58,13 @@ import { DEFAULT_NUMBER_FORMAT, } from '../utils'; import { TIME_FILTER_LABELS } from '../constants'; -import { SharedControlConfig, Dataset, ColumnMeta } from '../types'; +import { + SharedControlConfig, + Dataset, + ColumnMeta, + ControlState, + ControlPanelState, +} from '../types'; import { dndAdhocFilterControl, @@ -340,6 +347,16 @@ const show_empty_columns: SharedControlConfig<'CheckboxControl'> = { description: t('Show empty columns'), }; +const datetime_columns_lookup: SharedControlConfig<'HiddenControl'> = { + type: 'HiddenControl', + initialValue: (control: ControlState, state: ControlPanelState) => + Object.fromEntries( + ensureIsArray>(state?.datasource?.columns) + .filter(option => option.is_dttm) + .map(option => [option.column_name ?? option.name, option.is_dttm]), + ), +}; + export default { metrics: dndAdhocMetricsControl, metric: dndAdhocMetricControl, @@ -376,4 +393,5 @@ export default { truncate_metric, x_axis: dndXAxisControl, show_empty_columns, + datetime_columns_lookup, }; diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/buildQuery.ts b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/buildQuery.ts index 7cf3cd11bef3c..8068ace2fdd74 100644 --- a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/buildQuery.ts +++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/buildQuery.ts @@ -43,7 +43,7 @@ export default function buildQuery(formData: PivotTableQueryFormData) { isPhysicalColumn(col) && formData.time_grain_sqla && isFeatureEnabled(FeatureFlag.GENERIC_CHART_AXES) && - formData?.datetimeColumnLookup?.[col] + formData?.datetime_columns_lookup?.[col] ) { return { timeGrain: formData.time_grain_sqla, diff --git a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx index 77c57ff2b2b82..fe69188b253ba 100644 --- a/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx +++ b/superset-frontend/plugins/plugin-chart-pivot-table/src/plugin/controlPanel.tsx @@ -37,8 +37,6 @@ import { emitFilterControl, Dataset, getStandardizedControls, - ControlState, - ControlPanelState, } from '@superset-ui/chart-controls'; import { MetricsLayoutEnum } from '../types'; @@ -81,11 +79,11 @@ const config: ControlPanelConfig = { option => [option.column_name, option.is_dttm], ), ); - const selections = [ + + return [ ...ensureIsArray(controls?.groupbyColumns.value), ...ensureIsArray(controls?.groupbyRows.value), - ]; - return selections + ] .map(selection => { if (isAdhocColumn(selection)) { return true; @@ -101,23 +99,7 @@ const config: ControlPanelConfig = { } : null, isFeatureEnabled(FeatureFlag.GENERIC_CHART_AXES) - ? { - name: 'datetimeColumnLookup', - config: { - type: 'HiddenControl', - default: (control: ControlState, state: ControlPanelState) => - Object.fromEntries( - ensureIsArray>( - state?.datasource?.columns, - ) - .filter(option => option.is_dttm) - .map(option => [ - option.column_name ?? option.name, - option.is_dttm, - ]), - ), - }, - } + ? 'datetime_columns_lookup' : null, ], [