import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import { Spin, Table, Popconfirm, Button, Input } from 'antd';
import { ButtonGroup } from '$components';
import moment from 'moment';
import FileSaver from 'file-saver';
import MetadataDatabaseModal from '../components/metadataDatabModal';
import { ModelTypes } from '../constants/index';
const DatabaseTable = (props) => {
const { user, dispatch, actions, clientHeight, resourceCatalogId, resourceCatalogKey,
resourceCatalogPath, isRequesting, metadataModels, setView } = props;
const { metadataManagement } = actions;
const SortValues = { 'ascend': 'asc', 'descend': 'desc' };
const [tableData, setTableData] = useState([]);
const [tableDataCount, setTableDataCount] = useState(0);//Table数据
const [createAtSort, setCreateAtSort] = useState('descend');
const [keywords, setKeywords] = useState('');
const [limit, setLimit] = useState(10);
const [currentPage, setCurrentPage] = useState(1);
const [selectedRowKeys, setSelectedRowKeys] = useState([]);
const [selectedRows, setSelectedRows] = useState([]);
const [modalVisible, setModalVisible] = useState(false);
const [editData, setEditData] = useState({});
useEffect(() => {
setCreateAtSort('descend');
initData({ limit, offset: currentPage - 1, orderDirection: SortValues[createAtSort] });
}, [resourceCatalogId]);
const initData = (query = {}) => {
dispatch(metadataManagement.getMetadataDatabases({ catalog: resourceCatalogId, keywords, orderBy: 'createAt', ...query })).then(res => {
if (res.success) {
setTableData(res.payload.data.rows);
setTableDataCount(res.payload.data.count);
}
})
}
const onView = (id) => {
setView(id);
}
const onEdit = (record) => {
dispatch(metadataManagement.getMetadataModels({ modelTypes: ModelTypes })).then(res => {
if (res.success) {
setEditData({ title: '修改库表元数据', record: { path: '/' + resourceCatalogPath.join('/'), ...record, ...record.attributesParam } });
setModalVisible(true);
}
})
}
const confirmDelete = (id) => { }
const marking = (id) => { }
const applyResources = (id) => { }
const onTableChange = (pagination, filters, sorter) => {
let limit = Number.parseInt(pagination.pageSize);
let offset = Number.parseInt(pagination.current) - 1;
setCurrentPage(pagination.current);
setLimit(limit);
let query = { offset, limit, orderDirection: SortValues[createAtSort] };
if (sorter.columnKey === 'createAt') {
query.orderDirection = SortValues[sorter.order];
setCreateAtSort(sorter.order);
}
setSelectedRowKeys([]);
setSelectedRows([]);
initData(query);
}
const columns = [
{
title: '名称',
dataIndex: 'name',
key: 'name',
width: '16%',
ellipsis: true
}, {
title: '代码',
dataIndex: 'code',
key: 'code',
width: '16%',
ellipsis: true
}, {
title: '元数据类型',
dataIndex: 'type',
key: 'type',
width: '10%'
}, {
title: '标签',
dataIndex: 'tags',
key: 'tags',
width: '18%',
ellipsis: true,
render: (text, record, index) => {
let tagName = record.tagDatabases.map(tagSet => tagSet.tag.name);
return tagName.join(',');
}
}, {
title: '创建者',
dataIndex: 'createBy',
key: 'createBy',
width: '14%',
render: (text, record, index) => {
return record.user.username
}
}, {
title: '创建时间',
dataIndex: 'createAt',
key: 'createAt',
width: '18%',
sortOrder: createAtSort,
sorter: (a, b) => moment(a.createAt).valueOf() - moment(b.createAt).valueOf(),
sortDirections: ['descend', 'ascend', 'descend'],
render: (text, record, index) => {
return moment(text).format('YYYY-MM-DD HH:mm:ss')
}
}, {
title: '操作',
dataIndex: 'action',
width: '8%',
render: (text, record) => {
return