import { useContext, useRef } from 'react'; import { useMessages } from 'hooks'; import { Form, FormRow, FormButtons, SubmitButton, PopupTrigger, Icon, Popup } from 'react-basics'; import { ReportContext } from 'components/pages/reports/Report'; import { REPORT_PARAMETERS, WEBSITE_EVENT_FIELDS } from 'lib/constants'; import Icons from 'components/icons'; import BaseParameters from '../BaseParameters'; import FieldAddForm from '../FieldAddForm'; import ParameterList from '../ParameterList'; import styles from './InsightsParameters.module.css'; export function InsightsParameters() { const { report, runReport, updateReport, isRunning } = useContext(ReportContext); const { formatMessage, labels } = useMessages(); const ref = useRef(null); const { parameters } = report || {}; const { websiteId, dateRange, fields, filters, groups } = parameters || {}; const queryEnabled = websiteId && dateRange && fields?.length; const fieldOptions = Object.keys(WEBSITE_EVENT_FIELDS).map(key => WEBSITE_EVENT_FIELDS[key]); const parameterGroups = [ { label: formatMessage(labels.fields), group: REPORT_PARAMETERS.fields }, { label: formatMessage(labels.filters), group: REPORT_PARAMETERS.filters }, { label: formatMessage(labels.breakdown), group: REPORT_PARAMETERS.groups }, ]; const parameterData = { fields, filters, groups, }; const handleSubmit = values => { runReport(values); }; const handleAdd = (group, value) => { const data = parameterData[group]; if (!data.find(({ name }) => name === value.name)) { updateReport({ parameters: { [group]: data.concat(value) } }); } }; const handleRemove = (group, index) => { const data = [...parameterData[group]]; data.splice(index, 1); updateReport({ parameters: { [group]: data } }); }; const AddButton = ({ group }) => { return ( {(close, element) => { return ( ); }} ); }; return (
{parameterGroups.map(({ label, group }) => { return ( }> handleRemove(group, index)} > {({ name, value }) => { return (
{group === REPORT_PARAMETERS.fields && ( <>
{name}
{value}
)} {group === REPORT_PARAMETERS.filters && ( <>
{name}
{value[0]}
{value[1]}
)} {group === REPORT_PARAMETERS.groups && ( <>
{name}
)}
); }}
); })} {formatMessage(labels.runQuery)} ); } export default InsightsParameters;