diff --git a/frontend/app/components/Dashboard/components/WidgetForm/WidgetFormNew.tsx b/frontend/app/components/Dashboard/components/WidgetForm/WidgetFormNew.tsx index 7b4e959e9..ceab4346d 100644 --- a/frontend/app/components/Dashboard/components/WidgetForm/WidgetFormNew.tsx +++ b/frontend/app/components/Dashboard/components/WidgetForm/WidgetFormNew.tsx @@ -1,176 +1,172 @@ import React from 'react'; -import {Card, Space, Typography, Button, Alert} from "antd"; -import {useStore} from "App/mstore"; -import {eventKeys} from "Types/filter/newFilter"; +import { Card, Space, Typography, Button, Alert } from 'antd'; +import { useStore } from 'App/mstore'; +import { eventKeys } from 'Types/filter/newFilter'; import { - CLICKMAP, - ERRORS, - FUNNEL, - INSIGHTS, - PERFORMANCE, - RESOURCE_MONITORING, - RETENTION, - TABLE, - USER_PATH, WEB_VITALS -} from "App/constants/card"; -import FilterSeries from "Components/Dashboard/components/FilterSeries/FilterSeries"; -import {metricOf} from "App/constants/filterOptions"; -import {AudioWaveform, ChevronDown, ChevronUp, PlusIcon} from "lucide-react"; -import {observer} from "mobx-react-lite"; -import AddStepButton from "Components/Dashboard/components/FilterSeries/AddStepButton"; -import {Icon} from "UI"; -import FilterItem from "Shared/Filters/FilterItem"; -import {FilterKey} from "Types/filter/filterType"; + CLICKMAP, + ERRORS, + FUNNEL, + INSIGHTS, + PERFORMANCE, + RESOURCE_MONITORING, + RETENTION, + TABLE, + USER_PATH, WEB_VITALS +} from 'App/constants/card'; +import FilterSeries from 'Components/Dashboard/components/FilterSeries/FilterSeries'; +import { metricOf } from 'App/constants/filterOptions'; +import { AudioWaveform, ChevronDown, ChevronUp, PlusIcon } from 'lucide-react'; +import { observer } from 'mobx-react-lite'; +import AddStepButton from 'Components/Dashboard/components/FilterSeries/AddStepButton'; +import { Icon } from 'UI'; +import FilterItem from 'Shared/Filters/FilterItem'; +import { FilterKey } from 'Types/filter/filterType'; function WidgetFormNew() { - const {metricStore, dashboardStore, aiFiltersStore} = useStore(); - const metric: any = metricStore.instance; + const { metricStore, dashboardStore, aiFiltersStore } = useStore(); + const metric: any = metricStore.instance; - const eventsLength = metric.series[0].filter.filters.filter((i: any) => i && i.isEvent).length; - const filtersLength = metric.series[0].filter.filters.filter((i: any) => i && !i.isEvent).length; - const isClickMap = metric.metricType === CLICKMAP; - const isPathAnalysis = metric.metricType === USER_PATH; - const excludeFilterKeys = isClickMap || isPathAnalysis ? eventKeys : []; - const hasFilters = filtersLength > 0 || eventsLength > 0; - const isPredefined = [ERRORS, PERFORMANCE, RESOURCE_MONITORING, WEB_VITALS].includes(metric.metricType); + const eventsLength = metric.series[0].filter.filters.filter((i: any) => i && i.isEvent).length; + const filtersLength = metric.series[0].filter.filters.filter((i: any) => i && !i.isEvent).length; + const isClickMap = metric.metricType === CLICKMAP; + const isPathAnalysis = metric.metricType === USER_PATH; + const excludeFilterKeys = isClickMap || isPathAnalysis ? eventKeys : []; + const hasFilters = filtersLength > 0 || eventsLength > 0; + const isPredefined = [ERRORS, PERFORMANCE, RESOURCE_MONITORING, WEB_VITALS].includes(metric.metricType); - return isPredefined ? : ( - - - - {!hasFilters && ( - - )} - - - {hasFilters && ( - - )} - - ); + return isPredefined ? : ( + + + {!hasFilters && ()} + {hasFilters && ()} + + ); } export default observer(WidgetFormNew); -function DefineSteps({metric, excludeFilterKeys}: any) { - return ( -
- Filter - -
- ); +function DefineSteps({ metric, excludeFilterKeys }: any) { + return ( + +
+ Filter + +
+
+ ); } -const FilterSection = observer(({metric, excludeFilterKeys}: any) => { - // const timeseriesOptions = metricOf.filter((i) => i.type === 'timeseries'); - // const tableOptions = metricOf.filter((i) => i.type === 'table'); - const isTable = metric.metricType === TABLE; - const isClickMap = metric.metricType === CLICKMAP; - const isFunnel = metric.metricType === FUNNEL; - const isInsights = metric.metricType === INSIGHTS; - const isPathAnalysis = metric.metricType === USER_PATH; - const isRetention = metric.metricType === RETENTION; - const canAddSeries = metric.series.length < 3; - const eventsLength = metric.series[0].filter.filters.filter((i: any) => i && i.isEvent).length; - // const cannotSaveFunnel = isFunnel && (!metric.series[0] || eventsLength <= 1); +const FilterSection = observer(({ metric, excludeFilterKeys }: any) => { + // const timeseriesOptions = metricOf.filter((i) => i.type === 'timeseries'); + // const tableOptions = metricOf.filter((i) => i.type === 'table'); + const isTable = metric.metricType === TABLE; + const isClickMap = metric.metricType === CLICKMAP; + const isFunnel = metric.metricType === FUNNEL; + const isInsights = metric.metricType === INSIGHTS; + const isPathAnalysis = metric.metricType === USER_PATH; + const isRetention = metric.metricType === RETENTION; + const canAddSeries = metric.series.length < 3; + const eventsLength = metric.series[0].filter.filters.filter((i: any) => i && i.isEvent).length; + // const cannotSaveFunnel = isFunnel && (!metric.series[0] || eventsLength <= 1); - const isSingleSeries = isTable || isFunnel || isClickMap || isInsights || isRetention + const isSingleSeries = isTable || isFunnel || isClickMap || isInsights || isRetention; - // const onAddFilter = (filter: any) => { - // metric.series[0].filter.addFilter(filter); - // metric.updateKey('hasChanged', true) - // } + // const onAddFilter = (filter: any) => { + // metric.series[0].filter.addFilter(filter); + // metric.updateKey('hasChanged', true) + // } - return ( - <> - { - metric.series.length > 0 && metric.series - .slice(0, isSingleSeries ? 1 : metric.series.length) - .map((series: any, index: number) => ( -
- metric.updateKey('hasChanged', true)} - hideHeader={isTable || isClickMap || isInsights || isPathAnalysis || isFunnel} - seriesIndex={index} - series={series} - onRemoveSeries={() => metric.removeSeries(index)} - canDelete={metric.series.length > 1} - emptyMessage={ - isTable - ? 'Filter data using any event or attribute. Use Add Step button below to do so.' - : 'Add user event or filter to define the series by clicking Add Step.' - } - expandable={isSingleSeries} - /> -
- )) - } + return ( + <> + { + metric.series.length > 0 && metric.series + .slice(0, isSingleSeries ? 1 : metric.series.length) + .map((series: any, index: number) => ( +
+ metric.updateKey('hasChanged', true)} + hideHeader={isTable || isClickMap || isInsights || isPathAnalysis || isFunnel} + seriesIndex={index} + series={series} + onRemoveSeries={() => metric.removeSeries(index)} + canDelete={metric.series.length > 1} + emptyMessage={ + isTable + ? 'Filter data using any event or attribute. Use Add Step button below to do so.' + : 'Add user event or filter to define the series by clicking Add Step.' + } + expandable={isSingleSeries} + /> +
+ )) + } - {!isSingleSeries && canAddSeries && ( - - - - )} - - ); -}) + }} + disabled={!canAddSeries} + size="small" + > + + + New Chart Series + + + + )} + + ); +}); -const PathAnalysisFilter = observer(({metric}: any) => ( - -
- metric.updateStartPoint(val)} - onRemoveFilter={() => { - }} - /> -
-
+const PathAnalysisFilter = observer(({ metric }: any) => ( + +
+ metric.updateStartPoint(val)} + onRemoveFilter={() => { + }} + /> +
+
)); const AdditionalFilters = observer(() => { - const {metricStore, dashboardStore, aiFiltersStore} = useStore(); - const metric: any = metricStore.instance; + const { metricStore, dashboardStore, aiFiltersStore } = useStore(); + const metric: any = metricStore.instance; - return ( - - {metric.metricType === USER_PATH && } - - ) + return ( + // + metric.metricType === USER_PATH && + // + ); }); const PredefinedMessage = () => ( - + );