diff --git a/frontend/app/components/Dashboard/components/Funnels/FunnelIssueDetails/FunnelIssueDetails.tsx b/frontend/app/components/Dashboard/components/Funnels/FunnelIssueDetails/FunnelIssueDetails.tsx index 25ef7a0a0..16bd8abd0 100644 --- a/frontend/app/components/Dashboard/components/Funnels/FunnelIssueDetails/FunnelIssueDetails.tsx +++ b/frontend/app/components/Dashboard/components/Funnels/FunnelIssueDetails/FunnelIssueDetails.tsx @@ -27,7 +27,7 @@ function FunnelIssueDetails(props: Props) { filters: item.filter.filters.filter((filter: any, index: any) => { const stage = widget.data.funnel.stages[index]; return stage &&stage.isActive - }) + }).map((f: any) => f.toJson()) } } }) : [], }; diff --git a/frontend/app/components/Dashboard/components/Funnels/FunnelIssueModal/FunnelIssueModal.tsx b/frontend/app/components/Dashboard/components/Funnels/FunnelIssueModal/FunnelIssueModal.tsx index f1fa3469d..d5b6de307 100644 --- a/frontend/app/components/Dashboard/components/Funnels/FunnelIssueModal/FunnelIssueModal.tsx +++ b/frontend/app/components/Dashboard/components/Funnels/FunnelIssueModal/FunnelIssueModal.tsx @@ -7,13 +7,11 @@ interface Props { function FunnelIssueModal(props: Props) { const { issueId } = props; return ( -
-
- -
+
+
); } diff --git a/frontend/app/components/Dashboard/components/Funnels/FunnelIssuesList/FunnelIssuesList.tsx b/frontend/app/components/Dashboard/components/Funnels/FunnelIssuesList/FunnelIssuesList.tsx index 3894f4671..a59202043 100644 --- a/frontend/app/components/Dashboard/components/Funnels/FunnelIssuesList/FunnelIssuesList.tsx +++ b/frontend/app/components/Dashboard/components/Funnels/FunnelIssuesList/FunnelIssuesList.tsx @@ -29,7 +29,7 @@ function FunnelIssuesList(props: RouteComponentProps) { useEffect(() => { if (!issueId) return; - showModal(, { right: true, onClose: () => { + showModal(, { right: true, width: 1000, onClose: () => { if (props.history.location.pathname.includes("/metric")) { props.history.replace({search: ""}); } diff --git a/frontend/app/components/shared/Filters/FilterList/FilterList.tsx b/frontend/app/components/shared/Filters/FilterList/FilterList.tsx index 521a70eeb..6a115b502 100644 --- a/frontend/app/components/shared/Filters/FilterList/FilterList.tsx +++ b/frontend/app/components/shared/Filters/FilterList/FilterList.tsx @@ -18,6 +18,7 @@ interface Props { function FilterList(props: Props) { const { observeChanges = () => {}, filter, hideEventsOrder = false, saveRequestPayloads, supportsEmpty = true, excludeFilterKeys = [] } = props; const filters = List(filter.filters); + const eventsOrderSupport = filter.eventsOrderSupport; const hasEvents = filters.filter((i: any) => i.isEvent).size > 0; const hasFilters = filters.filter((i: any) => !i.isEvent).size > 0; let rowIndex = 0; @@ -55,9 +56,9 @@ function FilterList(props: Props) { onSelect={props.onChangeEventsOrder} value={{ value: filter.eventsOrder }} list={[ - { name: 'THEN', value: 'then' }, - { name: 'AND', value: 'and' }, - { name: 'OR', value: 'or' }, + { name: 'THEN', value: 'then', disabled: !eventsOrderSupport.includes('then') }, + { name: 'AND', value: 'and', disabled: !eventsOrderSupport.includes('and')}, + { name: 'OR', value: 'or', disabled: !eventsOrderSupport.includes('or')}, ]} />
diff --git a/frontend/app/mstore/metricStore.ts b/frontend/app/mstore/metricStore.ts index 63e8500bf..3ff0dbe97 100644 --- a/frontend/app/mstore/metricStore.ts +++ b/frontend/app/mstore/metricStore.ts @@ -103,6 +103,9 @@ export default class MetricStore { // handle metricType change if (obj.hasOwnProperty('metricType') && type !== this.instance.metricType) { + this.instance.series.forEach((s: any, i: number) => { + this.instance.series[i].filter.eventsOrderSupport = ['then', 'or', 'and'] + }) this.changeType(type); } @@ -141,6 +144,8 @@ export default class MetricStore { if (value === FUNNEL) { obj['metricOf'] = 'sessionCount'; + obj.series[0].filter.eventsOrder = 'then' + obj.series[0].filter.eventsOrderSupport = ['then'] } if (value === INSIGHTS) { diff --git a/frontend/app/mstore/types/filter.ts b/frontend/app/mstore/types/filter.ts index 549a0ad29..9b2874e9f 100644 --- a/frontend/app/mstore/types/filter.ts +++ b/frontend/app/mstore/types/filter.ts @@ -7,6 +7,7 @@ export default class Filter { name: string = '' filters: FilterItem[] = [] eventsOrder: string = 'then' + eventsOrderSupport: string[] = ['then', 'or', 'and'] startTimestamp: number = 0 endTimestamp: number = 0 diff --git a/frontend/app/mstore/types/widget.ts b/frontend/app/mstore/types/widget.ts index a39ba4ce2..5dee5d19d 100644 --- a/frontend/app/mstore/types/widget.ts +++ b/frontend/app/mstore/types/widget.ts @@ -139,6 +139,11 @@ export default class Widget { this.thumbnail = json.thumbnail; this.isPublic = json.isPublic; + if (this.metricType === FUNNEL) { + this.series[0].filter.eventsOrder = 'then'; + this.series[0].filter.eventsOrderSupport = ['then']; + } + if (period) { this.period = period; }