balibabu
Feat: The Begin and IterationStart operators cannot be deleted using shortcut keys #4287 (#4288)
b1ea792
| import { EditableCell, EditableRow } from '@/components/editable-cell'; | |
| import { useTranslate } from '@/hooks/common-hooks'; | |
| import { DeleteOutlined } from '@ant-design/icons'; | |
| import { Button, Collapse, Flex, Input, Select, Table, TableProps } from 'antd'; | |
| import { trim } from 'lodash'; | |
| import { useBuildComponentIdSelectOptions } from '../../hooks/use-get-begin-query'; | |
| import { IInvokeVariable, RAGFlowNodeType } from '../../interface'; | |
| import { useHandleOperateParameters } from './hooks'; | |
| import styles from './index.less'; | |
| interface IProps { | |
| node?: RAGFlowNodeType; | |
| } | |
| const components = { | |
| body: { | |
| row: EditableRow, | |
| cell: EditableCell, | |
| }, | |
| }; | |
| const DynamicVariablesForm = ({ node }: IProps) => { | |
| const nodeId = node?.id; | |
| const { t } = useTranslate('flow'); | |
| const options = useBuildComponentIdSelectOptions(nodeId, node?.parentId); | |
| const { | |
| dataSource, | |
| handleAdd, | |
| handleRemove, | |
| handleSave, | |
| handleComponentIdChange, | |
| handleValueChange, | |
| } = useHandleOperateParameters(nodeId!); | |
| const columns: TableProps<IInvokeVariable>['columns'] = [ | |
| { | |
| title: t('key'), | |
| dataIndex: 'key', | |
| key: 'key', | |
| onCell: (record: IInvokeVariable) => ({ | |
| record, | |
| editable: true, | |
| dataIndex: 'key', | |
| title: 'key', | |
| handleSave, | |
| }), | |
| }, | |
| { | |
| title: t('componentId'), | |
| dataIndex: 'component_id', | |
| key: 'component_id', | |
| align: 'center', | |
| width: 140, | |
| render(text, record) { | |
| return ( | |
| <Select | |
| style={{ width: '100%' }} | |
| allowClear | |
| options={options} | |
| value={text} | |
| disabled={trim(record.value) !== ''} | |
| onChange={handleComponentIdChange(record)} | |
| /> | |
| ); | |
| }, | |
| }, | |
| { | |
| title: t('value'), | |
| dataIndex: 'value', | |
| key: 'value', | |
| align: 'center', | |
| width: 140, | |
| render(text, record) { | |
| return ( | |
| <Input | |
| value={text} | |
| disabled={!!record.component_id} | |
| onChange={handleValueChange(record)} | |
| /> | |
| ); | |
| }, | |
| }, | |
| { | |
| title: t('operation'), | |
| dataIndex: 'operation', | |
| width: 20, | |
| key: 'operation', | |
| align: 'center', | |
| fixed: 'right', | |
| render(_, record) { | |
| return <DeleteOutlined onClick={handleRemove(record.id)} />; | |
| }, | |
| }, | |
| ]; | |
| return ( | |
| <Collapse | |
| className={styles.dynamicParameterVariable} | |
| defaultActiveKey={['1']} | |
| items={[ | |
| { | |
| key: '1', | |
| label: ( | |
| <Flex justify={'space-between'}> | |
| <span className={styles.title}>{t('parameter')}</span> | |
| <Button size="small" onClick={handleAdd}> | |
| {t('add')} | |
| </Button> | |
| </Flex> | |
| ), | |
| children: ( | |
| <Table | |
| dataSource={dataSource} | |
| columns={columns} | |
| rowKey={'id'} | |
| components={components} | |
| rowClassName={() => styles.editableRow} | |
| scroll={{ x: true }} | |
| bordered | |
| /> | |
| ), | |
| }, | |
| ]} | |
| /> | |
| ); | |
| }; | |
| export default DynamicVariablesForm; | |