import { durationFormatted } from 'App/date'; import React from 'react'; import FunnelStepText from './FunnelStepText'; import { Icon } from 'UI'; import { Space } from 'antd'; import { Styles } from 'Components/Dashboard/Widgets/common'; interface Props { filter: any; index?: number; focusStage?: (index: number, isFocused: boolean) => void; focusedFilter?: number | null; metricLabel?: string; } function FunnelBar(props: Props) { const { filter, index, focusStage, focusedFilter, metricLabel = 'Sessions' } = props; const isFocused = focusedFilter && index ? focusedFilter === index - 1 : false; return (
{filter.completedPercentageTotal}%
focusStage?.(index! - 1, filter.isActive)} className={'hover:opacity-75'} />
{/* @ts-ignore */}
{filter.count} {metricLabel} ({filter.completedPercentage}%) Completed
{index && index > 1 && ( 0 ? 'red' : 'gray-light'} size={16} /> 0 ? 'color-red' : 'disabled')}>{filter.droppedCount} {metricLabel} 0 ? 'color-red' : 'disabled')}>({filter.droppedPercentage}%) Dropped )}
); } export function UxTFunnelBar(props: Props) { const { filter } = props; return (
{filter.title}
{((filter.completed / (filter.completed + filter.skipped)) * 100).toFixed(1)}%
{/* @ts-ignore */}
{filter.completed}completed this step
{durationFormatted(filter.avgCompletionTime)} avg. completion time
{/* @ts-ignore */}
{filter.skipped} skipped
); } export default FunnelBar; const calculatePercentage = (completed: number, dropped: number) => { const total = completed + dropped; if (dropped === 0) return 100; if (total === 0) return 0; return Math.round((completed / dropped) * 100); };