/**
* 新增数据源-选择数据链接
*/
import React from 'react'
import { Layout, Form, Row, Col, Input, Icon, Menu, Dropdown, Divider, Upload, message, Card } from 'antd'
import { connect } from 'dva'
import DataConnectBox from './dataConnectBox'
import EmptyContent from '../common/emptyContent/index'
import './dataConnectConfig.less'
const { Content } = Layout
const CardGrid = Card.Grid
const UploadDragger = Upload.Dragger
const Search = Input.Search
class DataConnectConfig extends React.Component {
constructor(props) {
super(props);
this.state = {
filterLabel: '',
}
}
componentDidMount() {
const { dispatch } = this.props;
dispatch({ type: 'dataConnect/fetchList' });
}
generateCard() {
const { dataConnect, dataSourceDetail, dispatch } = this.props;
const { filterLabel: stateFilterLabel } = this.state;
const reg = new RegExp('([+ \\- & | ! ( ) { } \\[ \\] ^ \" ~ * ? : ( ) \/])', 'g'); // 需要转义的字符
let filterLabel = stateFilterLabel ? (stateFilterLabel + '').replace(new RegExp('(\\\\)', 'g'), '\\$1').replace(reg, '\\$1') : ''; // 添加转义符号
let filterReg = new RegExp('(' + filterLabel + '){1}', 'ig');
let cards = dataConnect.list.map(l => {
let o = Object.assign({}, l);
return o.code === dataSourceDetail.connectCode || ((o['name'] + '').search(filterReg) > -1) ? o : null
}).filter(a => a!==null).map( (l, i) => (
{
// 选中项设置
dispatch({ type: 'dataConnect/setSelected', selected: l });
dispatch({ type: 'dataSourceDetail/setFields', fields: [
{ name: 'connectCode', value: l.code },
{ name: 'dbType', value: l.dbType },
{ name: 'address', value: l.address },
{ name: 'port', value: l.port },
{ name: 'dbName', value: l.dbName },
{ name: 'userName', value: l.userName },
{ name: 'password', value: l.password },
{ name: 'target', value: '' },
{ name: 'columns', value: [] },
{ name: 'notice', value: '' },
] });
}}
>
{ (filterLabel) ?
((l.name || '').split(new RegExp(`(${filterLabel})`, 'i')).map((fragment, i) => {
return (
fragment.toLowerCase().replace(new RegExp('(\\\\)', 'g'), '\\$1').replace(reg, '\\$1') === filterLabel.toLowerCase() ?
{fragment} :
fragment
)
}
)) : l.name
}
}
actions={[
{l.dbType === 'file' ?
:
{l.dbType[0].toUpperCase() + l.dbType.slice(1)}
}
,
]}
>
{
// 选中项设置
dispatch({ type: 'dataConnect/setSelected', selected: l });
dispatch({ type: 'dataSourceDetail/setFields', fields: [
{ name: 'connectCode', value: l.code },
{ name: 'connectName', value: l.name },
{ name: 'dbType', value: l.dbType },
{ name: 'address', value: l.address },
{ name: 'port', value: l.port },
{ name: 'dbName', value: l.dbName },
{ name: 'userName', value: l.userName },
{ name: 'password', value: l.password },
{ name: 'target', value: '' },
{ name: 'columns', value: [] },
{ name: 'notice', value: '' },
] });
}}
>
{ /** TODO 这里只考虑了数据库的展示情况,需要兼容展示文件类型的数据链接 */ }
{l.address}
{l.userName}
))
if(cards.length === 0) {
return
}
return cards;
}
generateOperationMenu = (item) => {
const { dataConnect, dispatch } = this.props;
return
}
render() {
const { dataSourceDetail, dispatch } = this.props;
const { filterLabel } = this.state;
return (
);
}
}
export default connect(({ present: { dataSourceDetail, dataConnect } }) => ({ dataSourceDetail, dataConnect }))(DataConnectConfig);