import { type FC, useRef, useState, useEffect } from 'react' import { useTranslation } from 'react-i18next' import { Space, Button, Switch } from 'antd' import variablesEmpty from '@/assets/images/application/variablesEmpty.svg' import Card from './Card' import Table from '@/components/Table'; import type { Variable, VariableEditModalRef } from '../types' import Empty from '@/components/Empty' import VariableEditModal from './VariableEditModal' interface VariableListProps { data?: Variable[]; onUpdate: (data: Variable[]) => void; } const VariableList: FC = ({data = [], onUpdate}) => { const { t } = useTranslation() const variableEditModalRef = useRef(null) const [variableList, setVariableList] = useState([]) const [maxIndex, setMaxIndex] = useState(0) useEffect(() => { if (!data || data.length === 0) return const list = data.map((item, index) => ({ ...item, index })) setVariableList(list) onUpdate(list) setMaxIndex(list.length) }, [data]) const handleAddVariable = () => { variableEditModalRef.current?.handleOpen() } const handleSaveVariable = (value: Variable) => { if (value.index !== undefined && value.index >= 0) { const index = variableList.findIndex(item => item.index === value.index) if (index !== -1) { const newData = [...variableList] newData[index] = value setVariableList([...newData]) onUpdate([...newData]) } } else { const list = [...variableList, { index: maxIndex + 1, ...value }] setVariableList(list) onUpdate([...list]) setMaxIndex(maxIndex + 1) } } const handleDeleteVariable = (index: number) => { const list = variableList.filter((_, i) => i !== index) setVariableList(list) onUpdate([...list]) } return (
{t('application.VariableManagement')} ({t('application.VariableManagementDesc')})
{/* List */} {variableList.length > 0 ? (
t(`application.${type}`) }, { title: t('application.variableKey'), dataIndex: 'name', key: 'name', }, { title: t('application.variableName'), dataIndex: 'display_name', key: 'display_name', }, { title: t('application.optional'), dataIndex: 'required', key: 'required', render: (required) => }, { title: t('common.operation'), key: 'action', render: (_, record, index: number) => ( ), }, ]} initialData={variableList as unknown as Record[]} emptySize={88} /> ) : } ) } export default VariableList