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.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
import {
|
import {
|
||||||
|
AdhocFilter,
|
||||||
ComparisonTimeRangeType,
|
ComparisonTimeRangeType,
|
||||||
|
SimpleAdhocFilter,
|
||||||
t,
|
t,
|
||||||
validateTimeComparisonRangeValues,
|
validateTimeComparisonRangeValues,
|
||||||
} from '@superset-ui/core';
|
} from '@superset-ui/core';
|
||||||
import {
|
import {
|
||||||
|
ColumnMeta,
|
||||||
ControlPanelConfig,
|
ControlPanelConfig,
|
||||||
ControlPanelState,
|
ControlPanelState,
|
||||||
ControlState,
|
ControlState,
|
||||||
|
@ -76,16 +79,29 @@ const config: ControlPanelConfig = {
|
||||||
mapStateToProps: (
|
mapStateToProps: (
|
||||||
state: ControlPanelState,
|
state: ControlPanelState,
|
||||||
controlState: ControlState,
|
controlState: ControlState,
|
||||||
) => ({
|
) => {
|
||||||
...(sharedControls.adhoc_filters.mapStateToProps?.(
|
const originalMapStateToPropsRes =
|
||||||
state,
|
sharedControls.adhoc_filters.mapStateToProps?.(
|
||||||
controlState,
|
state,
|
||||||
) || {}),
|
controlState,
|
||||||
externalValidationErrors: validateTimeComparisonRangeValues(
|
) || {};
|
||||||
state.controls?.time_comparison?.value,
|
const columns = originalMapStateToPropsRes.columns.filter(
|
||||||
controlState.value,
|
(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: {
|
y_axis_format: {
|
||||||
label: t('Number format'),
|
label: t('Number format'),
|
||||||
},
|
},
|
||||||
|
adhoc_filters: {
|
||||||
|
rerender: ['adhoc_custom'],
|
||||||
|
},
|
||||||
},
|
},
|
||||||
formDataOverrides: formData => ({
|
formDataOverrides: formData => ({
|
||||||
...formData,
|
...formData,
|
||||||
|
|
|
@ -382,7 +382,18 @@ const DndFilterSelect = (props: DndFilterSelectProps) => {
|
||||||
return new AdhocFilter(config);
|
return new AdhocFilter(config);
|
||||||
}, [droppedItem]);
|
}, [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(
|
const handleDrop = useCallback(
|
||||||
(item: DatasourcePanelDndItem) => {
|
(item: DatasourcePanelDndItem) => {
|
||||||
setDroppedItem(item.value);
|
setDroppedItem(item.value);
|
||||||
|
|
Loading…
Reference in New Issue