import { useMessages } from '@/components/hooks'; import Icons from '@/components/icons'; import { formatNumber } from '@/lib/format'; import { useContext } from 'react'; import { Button, Flexbox, Form, FormButtons, FormRow, Icon, Popup, PopupTrigger, SubmitButton, } from 'react-basics'; import BaseParameters from '../[reportId]/BaseParameters'; import ParameterList from '../[reportId]/ParameterList'; import PopupForm from '../[reportId]/PopupForm'; import { ReportContext } from '../[reportId]/Report'; import GoalsAddForm from './GoalsAddForm'; import styles from './GoalsParameters.module.css'; export function GoalsParameters() { const { report, runReport, updateReport, isRunning } = useContext(ReportContext); const { formatMessage, labels } = useMessages(); const { id, parameters } = report || {}; const { websiteId, dateRange, goals } = parameters || {}; const queryDisabled = !websiteId || !dateRange || goals?.length < 1; const handleSubmit = (data: any, e: any) => { e.stopPropagation(); e.preventDefault(); if (!queryDisabled) { runReport(data); } }; const handleAddGoals = (goal: { type: string; value: string }) => { updateReport({ parameters: { goals: parameters.goals.concat(goal) } }); }; const handleUpdateGoals = ( close: () => void, index: number, goal: { type: string; value: string }, ) => { const goals = [...parameters.goals]; goals[index] = goal; updateReport({ parameters: { goals } }); close(); }; const handleRemoveGoals = (index: number) => { const goals = [...parameters.goals]; delete goals[index]; updateReport({ parameters: { goals: goals.filter(n => n) } }); }; const AddGoalsButton = () => { return ( ); }; return (
}> {goals.map( ( goal: { type: string; value: string; goal: number; operator?: string; property?: string; }, index: number, ) => { return ( : } onRemove={() => handleRemoveGoals(index)} >
{goal.value}
{goal.type === 'event-data' && (
{formatMessage(labels[goal.operator])}: {goal.property}
)}
{formatMessage(labels.goal)}: {formatNumber(goal.goal)}
{(close: () => void) => ( )}
); }, )}
{formatMessage(labels.runQuery)} ); } export default GoalsParameters;