import React, {Component} from 'react';
import {Input, Collapse, Button, Radio, Icon, Tooltip} from 'antd';
import {idGen} from "../../../../../func";
import {graphqlUrl, manageUsers} from "../../../../../config";
import {FormattedMessage} from 'react-intl';
import {ADD_APIGROUP, UPDATE_APIGROUP, UPDATE_PROJECT_GROUP, UPDATE_PROJECT_ONLY_STATUS} from "../../../../../gql";
import {request} from 'graphql-request'
import {removePrefix, shiftPrefix} from "../../../../../func";
const Panel = Collapse.Panel;
// 如需改变显示,请在此处 value 处更改
// 如需添加中文,请在此处 value 处添加
// eg: 'xxxx':
const valueToKey = {
'groupName': 'groupName',
'environmentName': 'environmentName',
'defaultDomain': 'defaultDomain',
'frontType': 'frontType',
'userDomain': 'userDomain',
'userStatus': 'userStatus',
'region': 'region',
};
const toolTipTitle = {
'groupName': 'its groupName',
'environmentName': 'its environmentName',
'defaultDomain': 'its defaultDomain',
'frontType': 'its frontType',
'userDomain': 'its userDomain',
'userStatus': 'its userStatus',
'region': 'its region',
};
const youMustFill = {
'groupName': true,
'environmentName': true,
'defaultDomain': true,
'frontType': true,
'userDomain': false,
'userStatus': true,
'region': true,
};
class APIGroupCardRender extends Component {
constructor(props) {
super(props);
if (props.group !== '' && props.group !== null) {
let {groupName, environmentName, defaultDomain, frontType, userDomain, userStatus, region} = props.group;
this.state = {
showOK: false,
groupName,
environmentName,
defaultDomain,
frontType,
userDomain,
userStatus,
groupRegion: region
}
} else {
this.state = {
showOK: false,
groupName: 'graphql_endpoint',
environmentName: 'test',
defaultDomain: '',
frontType: 'http&https',
userDomain: '',
userStatus: 'open',
groupRegion: props.region === '' ? 'ap-beijing' : props.region,
};
}
}
componentWillReceiveProps(next) {
if (next.group !== '' && next.group !== null) {
let {groupName, environmentName, defaultDomain, frontType, userDomain, userStatus, region} = next.group;
this.setState({
groupName,
environmentName,
defaultDomain,
frontType,
userDomain,
userStatus,
groupRegion: next.region === '' ? region : next.region
})
} else {
this.setState({
groupName: 'graphql_endpoint',
environmentName: 'test',
defaultDomain: '',
frontType: 'http&https',
userDomain: '',
userStatus: 'open',
groupRegion: next.region === '' ? 'ap-beijing' : next.region
});
}
};
switchConfig = (label) => {
return (e) => {
this.setState({
[label]: e.target.value
})
};
};
ok = (id, userID, projectID, cloudID, group) => {
let {userStatus, userDomain, groupName, groupRegion, frontType, environmentName} = this.state;
let region = shiftPrefix('ap-', groupRegion);
let varObj = {
id,
cloud_id: cloudID,
user_id: userID,
userStatus,
userDomain,
groupName,
frontType,
region,
environmentName,
defaultDomain: '',
status: '',
serviceId: '',
createdAt: new Date().getTime(),
updatedAt: ''
};
if (group === '' || group === null) {
request(graphqlUrl, ADD_APIGROUP, varObj).then(
data => {
if (data.create_apiGWGroup !== null) {
this.setState({
showOK: true
});
// 写回 project
request(graphqlUrl, UPDATE_PROJECT_GROUP, {
id: projectID,
updatedAt: new Date().getTime(),
apiGWGroup_id: id,
projectStatus: 'grouped'
}).then(data => {
if (data.update_project !== null)
this.props.stepByStep(2);
});
}
setTimeout(() => {
this.setState({
showOK: false
})
}, 1500)
}
)
} else {
let {userStatus, userDomain, groupName, groupRegion, frontType, environmentName} = this.state;
let region = shiftPrefix('ap-', groupRegion);
let varObj = {
id: group.id,
userStatus,
userDomain,
groupName,
frontType,
region,
environmentName,
updatedAt: new Date().getTime()
};
request(graphqlUrl, UPDATE_APIGROUP, varObj).then(
data => {
if (data.update_apiGWGroup !== null) {
this.setState({
showOK: true
});
request(graphqlUrl, UPDATE_PROJECT_ONLY_STATUS, {
id: projectID,
updatedAt: new Date().getTime(),
projectStatus: 'updated'
}).then(data => {
if(data.update_project !== null)
this.props.stepByStep(2);
})
}
setTimeout(() => {
this.setState({
showOK: false
})
}, 1500)
}
)
}
};
render() {
const customPanelStyle = {
background: '#f7f7f7',
borderRadius: 4,
marginBottom: 24,
border: 0,
overflow: 'hidden',
};
return (
{
youMustFill['groupName'] ?
*
:
''
}
{
youMustFill['region'] ?
*
:
''
}
{
// 如果不想一变所有都变,就将 onchange 改成
// onChange={this.switchConfig('groupRegion')}
this.props.switchRegion(e);
}} value={removePrefix('ap-', this.state.groupRegion)} buttonStyle="solid">
{
youMustFill['environmentName'] ?
*
:
''
}
{
youMustFill['frontType'] ?
*
:
''
}
http
https
http&https
}
style={customPanelStyle}>
{/**/}
{/*{valueToKey['defaultDomain']}*/}
{/* */}
{/**/}
{/**/}
{/**/}
{/**/}
{/**/}
{/*
*/}
{
youMustFill['userDomain'] ?
*
:
''
}
{/**/}
{/*{valueToKey['userStatus']}*/}
{/* */}
{/**/}
{/**/}
{/**/}
{/**/}
{/**/}
{/*open*/}
{/*close*/}
{/**/}
{/*
*/}
{
manageUsers.includes(this.props.userID) ?
{
this.props.stepAllShow ? '' :
}
{
this.state.showOK === true ?
:
''
}
:
this.props.trialcase ?
''
:
{
this.props.stepAllShow ? '' :
}
{
this.state.showOK === true ?
:
''
}
}
)
}
}
export default APIGroupCardRender;