You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by vi...@apache.org on 2021/09/14 15:02:18 UTC
[superset] branch master updated: fix(explore): make clicked dnd
filters unique (#16700)
This is an automated email from the ASF dual-hosted git repository.
villebro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 1d890f8 fix(explore): make clicked dnd filters unique (#16700)
1d890f8 is described below
commit 1d890f8913cfaf9e6688e42d2b2c6a68869a1b39
Author: Ville Brofeldt <33...@users.noreply.github.com>
AuthorDate: Tue Sep 14 18:01:21 2021 +0300
fix(explore): make clicked dnd filters unique (#16700)
---
.../src/explore/components/DatasourcePanel/types.ts | 4 ++++
.../controls/DndColumnSelectControl/DndFilterSelect.tsx | 10 +++++++---
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/superset-frontend/src/explore/components/DatasourcePanel/types.ts b/superset-frontend/src/explore/components/DatasourcePanel/types.ts
index 2290477..315eba9 100644
--- a/superset-frontend/src/explore/components/DatasourcePanel/types.ts
+++ b/superset-frontend/src/explore/components/DatasourcePanel/types.ts
@@ -31,3 +31,7 @@ export function isDatasourcePanelDndItem(
): item is DatasourcePanelDndItem {
return item?.value && item?.type;
}
+
+export function isSavedMetric(item: any): item is Metric {
+ return item?.metric_name;
+}
diff --git a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
index f9a142b..bb59b17 100644
--- a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
+++ b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndFilterSelect.tsx
@@ -45,10 +45,12 @@ import AdhocMetric from 'src/explore/components/controls/MetricControl/AdhocMetr
import {
DatasourcePanelDndItem,
DndItemValue,
+ isSavedMetric,
} from 'src/explore/components/DatasourcePanel/types';
import { DndItemType } from 'src/explore/components/DndItemType';
import { ControlComponentProps } from 'src/explore/components/Control';
+const EMPTY_OBJECT = {};
const DND_ACCEPTED_TYPES = [
DndItemType.Column,
DndItemType.Metric,
@@ -78,7 +80,9 @@ export const DndFilterSelect = (props: DndFilterSelectProps) => {
);
const [partitionColumn, setPartitionColumn] = useState(undefined);
const [newFilterPopoverVisible, setNewFilterPopoverVisible] = useState(false);
- const [droppedItem, setDroppedItem] = useState<DndItemValue | null>(null);
+ const [droppedItem, setDroppedItem] = useState<
+ DndItemValue | typeof EMPTY_OBJECT
+ >({});
const optionsForSelect = (
columns: ColumnMeta[],
@@ -342,12 +346,12 @@ export const DndFilterSelect = (props: DndFilterSelectProps) => {
);
const handleClickGhostButton = useCallback(() => {
- setDroppedItem(null);
+ setDroppedItem({});
togglePopover(true);
}, [togglePopover]);
const adhocFilter = useMemo(() => {
- if (droppedItem?.metric_name) {
+ if (isSavedMetric(droppedItem)) {
return new AdhocFilter({
expressionType: EXPRESSION_TYPES.SQL,
clause: CLAUSES.HAVING,