import React, { useEffect, useRef, useState } from 'react'; import { Button, Modal } from 'antd'; import type { IDataSource } from '../data'; import ProTable from '@ant-design/pro-table'; import type { ActionType, ProColumns } from '@ant-design/pro-table'; import { connect } from 'umi'; import type { Dispatch } from 'umi'; import type { StateType } from '../model'; export type CreateFormProps = { measuresList: any[]; selectedMeasuresList: any[]; onCancel: () => void; onSubmit: (selectMeasuresList: any[]) => void; createModalVisible: boolean; projectManger: StateType; dispatch: Dispatch; }; const BindMeasuresTable: React.FC = ({ measuresList, selectedMeasuresList = [], onSubmit, onCancel, createModalVisible, projectManger, }) => { const { searchParams = {} } = projectManger || {}; const actionRef = useRef(); const [selectedMeasuresKeys, setSelectedMeasuresKeys] = useState(() => { return selectedMeasuresList.map((item: any) => { return item.bizName; }); }); const [selectMeasuresList, setSelectMeasuresList] = useState([]); const handleSubmit = async () => { onSubmit?.(selectMeasuresList); }; const findMeasureItemByName = (bizName: string) => { return measuresList.find((item) => { return item.bizName === bizName; }); }; useEffect(() => { const selectedMeasures: IDataSource.IMeasuresItem[] = selectedMeasuresKeys.map((bizName) => { const item = findMeasureItemByName(bizName); return item; }); setSelectMeasuresList([...selectedMeasures]); }, [selectedMeasuresKeys]); useEffect(() => {}, []); const columns: ProColumns[] = [ { dataIndex: 'bizName', title: '度量名称', }, { dataIndex: 'alias', title: '别名', }, { dataIndex: 'agg', title: '算子类型', }, { dataIndex: 'datasourceName', title: '所属数据源', }, ]; const renderFooter = () => { return ( <> ); }; const rowSelection = { selectedRowKeys: selectedMeasuresKeys, onChange: (_selectedRowKeys: any[]) => { setSelectedMeasuresKeys([..._selectedRowKeys]); }, }; return ( { onCancel(); }} > ); }; export default connect(({ projectManger }: { projectManger: StateType }) => ({ projectManger, }))(BindMeasuresTable);