import { useMessages } from '@/components/hooks'; import { Eye, Bolt, Plus } from '@/components/icons'; import { useContext, useState } from 'react'; import { Button, Select, Form, FormButtons, FormField, Icon, ListItem, Popover, DialogTrigger, Toggle, FormSubmitButton, } from '@umami/react-zen'; import { BaseParameters } from '../[reportId]/BaseParameters'; import { ParameterList } from '../[reportId]/ParameterList'; import { ReportContext } from '../[reportId]/Report'; import { FunnelStepAddForm } from '../funnel/FunnelStepAddForm'; import { AttributionStepAddForm } from './AttributionStepAddForm'; import { useRevenueValuesQuery } from '@/components/hooks/queries/useRevenueValuesQuery'; export function AttributionParameters() { const { report, runReport, updateReport, isRunning } = useContext(ReportContext); const { formatMessage, labels } = useMessages(); const { id, parameters } = report || {}; const { websiteId, dateRange, steps } = parameters || {}; const queryEnabled = websiteId && dateRange && steps.length > 0; const [model, setModel] = useState(''); const [revenueMode, setRevenueMode] = useState(false); const { data: currencyValues = [] } = useRevenueValuesQuery( websiteId, dateRange?.startDate, dateRange?.endDate, ); const handleSubmit = (data: any, e: any) => { if (revenueMode === false) { delete data.currency; } e.stopPropagation(); e.preventDefault(); runReport(data); }; const handleCheck = () => { setRevenueMode(!revenueMode); }; const handleAddStep = (step: { type: string; value: string }) => { if (step.type === 'url') { setRevenueMode(false); } updateReport({ parameters: { steps: parameters.steps.concat(step) } }); }; const handleUpdateStep = ( close: () => void, index: number, step: { type: string; value: string }, ) => { if (step.type === 'url') { setRevenueMode(false); } const steps = [...parameters.steps]; steps[index] = step; updateReport({ parameters: { steps } }); close(); }; const handleRemoveStep = (index: number) => { const steps = [...parameters.steps]; delete steps[index]; updateReport({ parameters: { steps: steps.filter(n => n) } }); }; const AddStepButton = () => { return ( ); }; const items = [ { id: 'first-click', label: 'First-Click', value: 'firstClick' }, { id: 'last-click', label: 'Last-Click', value: 'lastClick' }, ]; const onModelChange = (value: any) => { setModel(value); updateReport({ parameters: { model } }); }; return (
{steps.map((step: { type: string; value: string }, index: number) => { return ( : } onRemove={() => handleRemoveStep(index)} >
{step.value}
); })}
Revenue Mode {revenueMode && ( )} {formatMessage(labels.runQuery)} ); }