mirror of https://github.com/apache/superset.git
fix: Allow only dttm columns in comparison filter in Period over Period chart (#27209)
This commit is contained in:
parent
a3d2e0bf44
commit
a4c771e013
|
@ -17,11 +17,14 @@
|
|||
* under the License.
|
||||
*/
|
||||
import {
|
||||
AdhocFilter,
|
||||
ComparisonTimeRangeType,
|
||||
SimpleAdhocFilter,
|
||||
t,
|
||||
validateTimeComparisonRangeValues,
|
||||
} from '@superset-ui/core';
|
||||
import {
|
||||
ColumnMeta,
|
||||
ControlPanelConfig,
|
||||
ControlPanelState,
|
||||
ControlState,
|
||||
|
@ -76,16 +79,29 @@ const config: ControlPanelConfig = {
|
|||
mapStateToProps: (
|
||||
state: ControlPanelState,
|
||||
controlState: ControlState,
|
||||
) => ({
|
||||
...(sharedControls.adhoc_filters.mapStateToProps?.(
|
||||
state,
|
||||
controlState,
|
||||
) || {}),
|
||||
externalValidationErrors: validateTimeComparisonRangeValues(
|
||||
state.controls?.time_comparison?.value,
|
||||
controlState.value,
|
||||
),
|
||||
}),
|
||||
) => {
|
||||
const originalMapStateToPropsRes =
|
||||
sharedControls.adhoc_filters.mapStateToProps?.(
|
||||
state,
|
||||
controlState,
|
||||
) || {};
|
||||
const columns = originalMapStateToPropsRes.columns.filter(
|
||||
(col: ColumnMeta) =>
|
||||
col.is_dttm &&
|
||||
(state.controls.adhoc_filters.value as AdhocFilter[]).some(
|
||||
(val: SimpleAdhocFilter) =>
|
||||
val.subject === col.column_name,
|
||||
),
|
||||
);
|
||||
return {
|
||||
...originalMapStateToPropsRes,
|
||||
columns,
|
||||
externalValidationErrors: validateTimeComparisonRangeValues(
|
||||
state.controls?.time_comparison?.value,
|
||||
controlState.value,
|
||||
),
|
||||
};
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
|
@ -138,6 +154,9 @@ const config: ControlPanelConfig = {
|
|||
y_axis_format: {
|
||||
label: t('Number format'),
|
||||
},
|
||||
adhoc_filters: {
|
||||
rerender: ['adhoc_custom'],
|
||||
},
|
||||
},
|
||||
formDataOverrides: formData => ({
|
||||
...formData,
|
||||
|
|
|
@ -382,7 +382,18 @@ const DndFilterSelect = (props: DndFilterSelectProps) => {
|
|||
return new AdhocFilter(config);
|
||||
}, [droppedItem]);
|
||||
|
||||
const canDrop = useCallback(() => true, []);
|
||||
const canDrop = useCallback(
|
||||
(item: DatasourcePanelDndItem) => {
|
||||
if (item.type === DndItemType.Column) {
|
||||
return props.columns.some(
|
||||
col => col.column_name === (item.value as ColumnMeta).column_name,
|
||||
);
|
||||
}
|
||||
return true;
|
||||
},
|
||||
[props.columns],
|
||||
);
|
||||
|
||||
const handleDrop = useCallback(
|
||||
(item: DatasourcePanelDndItem) => {
|
||||
setDroppedItem(item.value);
|
||||
|
|
Loading…
Reference in New Issue