| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import { EditableCell, EditableRow } from '@/components/editable-cell';
- import { useTranslate } from '@/hooks/common-hooks';
- import { DeleteOutlined } from '@ant-design/icons';
- import { Button, Flex, Select, Table, TableProps } from 'antd';
- import { Node } from 'reactflow';
- import { useBuildComponentIdSelectOptions } from '../../hooks/use-get-begin-query';
- import { IGenerateParameter, NodeData } from '../../interface';
- import { useHandleOperateParameters } from './hooks';
-
- import styles from './index.less';
- interface IProps {
- node?: Node<NodeData>;
- }
-
- const components = {
- body: {
- row: EditableRow,
- cell: EditableCell,
- },
- };
-
- const DynamicParameters = ({ node }: IProps) => {
- const nodeId = node?.id;
- const { t } = useTranslate('flow');
-
- const options = useBuildComponentIdSelectOptions(nodeId, node?.parentId);
- const {
- dataSource,
- handleAdd,
- handleRemove,
- handleSave,
- handleComponentIdChange,
- } = useHandleOperateParameters(nodeId!);
-
- const columns: TableProps<IGenerateParameter>['columns'] = [
- {
- title: t('key'),
- dataIndex: 'key',
- key: 'key',
- width: '40%',
- onCell: (record: IGenerateParameter) => ({
- record,
- editable: true,
- dataIndex: 'key',
- title: 'key',
- handleSave,
- }),
- },
- {
- title: t('componentId'),
- dataIndex: 'component_id',
- key: 'component_id',
- align: 'center',
- width: '40%',
- render(text, record) {
- return (
- <Select
- style={{ width: '100%' }}
- allowClear
- options={options}
- value={text}
- onChange={handleComponentIdChange(record)}
- />
- );
- },
- },
- {
- title: t('operation'),
- dataIndex: 'operation',
- width: 20,
- key: 'operation',
- align: 'center',
- fixed: 'right',
- render(_, record) {
- return <DeleteOutlined onClick={handleRemove(record.id)} />;
- },
- },
- ];
-
- return (
- <section>
- <Flex justify="end">
- <Button size="small" onClick={handleAdd}>
- {t('add')}
- </Button>
- </Flex>
- <Table
- dataSource={dataSource}
- columns={columns}
- rowKey={'id'}
- className={styles.variableTable}
- components={components}
- rowClassName={() => styles.editableRow}
- scroll={{ x: true }}
- bordered
- />
- </section>
- );
- };
-
- export default DynamicParameters;
|