import { Button, FormContainer, Input, Notification, Select, Dialog, toast } from '@/components/ui' import { Field, FieldArray, Form, Formik, FieldProps } from 'formik' import { FaMinus, FaPlus } from 'react-icons/fa' import { SelectBoxOption } from '@/types/shared' import { chartSeriesTypeOptions, columnSummaryTypeListOptions, } from '../admin/listForm/edit/options' import { ChartSeriesDto } from '@/proxy/admin/charts/models' import { useLocalization } from '@/utils/hooks/useLocalization' import { useStoreState } from '@/store/store' import { object, array, string } from 'yup' import { SummaryTypeEnum } from '@/proxy/form/models' interface ChartSeriesDialogProps { open: boolean onClose: () => void initialSeries: ChartSeriesDto[] fieldList: SelectBoxOption[] onSave: (series: ChartSeriesDto[]) => void } const schema = object().shape({ series: array().of( object().shape({ name: string().required('Name Required'), argumentField: string().required('Argument Field Required'), valueField: string().required('Value Field Required'), summaryType: string().required('Summary Type Required'), }), ), }) const ChartSeriesDialog = ({ open, onClose, initialSeries, fieldList, onSave, }: ChartSeriesDialogProps) => { const { translate } = useLocalization() // State UserId güncellemesi için const { userName } = useStoreState((s) => s.auth.user) const newSeriesValue = () => { return { index: -1, type: 'line', name: '', argumentField: '', valueField: '', summaryType: SummaryTypeEnum.Sum, axis: '', barOverlapGroup: '', barPadding: 0, barWidth: 0, color: '', cornerRadius: 0, dashStyle: 'solid', ignoreEmptyPoints: false, pane: '', rangeValue1Field: '', rangeValue2Field: '', selectionMode: 'none', showInLegend: true, visible: true, width: 2, label: { visible: true, backgroundColor: '#f05b41', customizeText: '', format: 'decimal', font: { color: '#FFFFFF', family: '"Segoe UI", "Helvetica Neue", "Trebuchet MS", Verdana, sans-serif', size: 12, weight: 400, }, }, userId: userName ?? '', } } return (
0 ? initialSeries : [newSeriesValue()], }} validationSchema={schema} onSubmit={(values, { setSubmitting }) => { try { onSave(values.series) toast.push({'Chart güncellendi'}, { placement: 'top-end', }) onClose() } catch (error: any) { toast.push( Hata {error} , { placement: 'top-end' }, ) } finally { setSubmitting(false) } }} > {({ setFieldValue, values, isSubmitting }) => (
{/* Header */}
{/* Kaydırılabilir içerik */}
{({ remove }) => (
#
Type
Name
Argument Field
Value Field
Summary Type
#
{values.series.map((_, index) => (
{values.series[index].index}
{({ field, form }: FieldProps) => ( option.value === field.value, )} onChange={(option) => form.setFieldValue(field.name, option?.value) } menuPlacement="auto" maxMenuHeight={150} /> )}
{({ field, form }: FieldProps) => ( option.value === field.value, )} onChange={(option) => form.setFieldValue(field.name, option?.value) } /> )}
))}
)}
{/* Footer */}
)}
) } export default ChartSeriesDialog