import React, { Component } from 'react';
import PropTypes from 'prop-types';
import './index.scss';
import { Icon, Row, Col, Form, Input, Select, Button, AutoComplete, Tooltip } from 'antd';
const FormItem = Form.Item;
const Option = Select.Option;
import constants from 'client/constants/variable.js';
const initMap = {
header: [
{
name: '',
value: ''
}
],
cookie: [
{
name: '',
value: ''
}
],
global: [
{
name: '',
value: ''
}
]
};
class ProjectEnvContent extends Component {
static propTypes = {
projectMsg: PropTypes.object,
form: PropTypes.object,
onSubmit: PropTypes.func,
handleEnvInput: PropTypes.func
};
initState(curdata) {
let header = [
{
name: '',
value: ''
}
];
let cookie = [
{
name: '',
value: ''
}
];
let global = [
{
name: '',
value: ''
}
];
const curheader = curdata.header;
const curGlobal = curdata.global;
if (curheader && curheader.length !== 0) {
curheader.forEach(item => {
if (item.name === 'Cookie') {
let cookieStr = item.value;
if (cookieStr) {
cookieStr = cookieStr.split(';').forEach(c => {
if (c) {
c = c.split('=');
cookie.unshift({
name: c[0] ? c[0].trim() : '',
value: c[1] ? c[1].trim() : ''
});
}
});
}
} else {
header.unshift(item);
}
});
}
if (curGlobal && curGlobal.length !== 0) {
curGlobal.forEach(item => {
global.unshift(item);
});
}
return { header, cookie, global };
}
constructor(props) {
super(props);
this.state = Object.assign({}, initMap);
}
addHeader = (value, index, name) => {
let nextHeader = this.state[name][index + 1];
if (nextHeader && typeof nextHeader === 'object') {
return;
}
let newValue = {};
let data = { name: '', value: '' };
newValue[name] = [].concat(this.state[name], data);
this.setState(newValue);
};
delHeader = (key, name) => {
let curValue = this.props.form.getFieldValue(name);
let newValue = {};
newValue[name] = curValue.filter((val, index) => {
return index !== key;
});
this.props.form.setFieldsValue(newValue);
this.setState(newValue);
};
handleInit(data) {
this.props.form.resetFields();
let newValue = this.initState(data);
this.setState({ ...newValue });
}
UNSAFE_componentWillReceiveProps(nextProps) {
let curEnvName = this.props.projectMsg.name;
let nextEnvName = nextProps.projectMsg.name;
if (curEnvName !== nextEnvName) {
this.handleInit(nextProps.projectMsg);
}
}
handleOk = e => {
e.preventDefault();
const { form, onSubmit, projectMsg } = this.props;
form.validateFields((err, values) => {
if (!err) {
let header = values.header.filter(val => {
return val.name !== '';
});
let cookie = values.cookie.filter(val => {
return val.name !== '';
});
let global = values.global.filter(val => {
return val.name !== '';
});
if (cookie.length > 0) {
header.push({
name: 'Cookie',
value: cookie.map(item => item.name + '=' + item.value).join(';')
});
}
let assignValue = {};
assignValue.env = Object.assign(
{ _id: projectMsg._id },
{
name: values.env.name,
domain: values.env.protocol + values.env.domain,
header: header,
global
}
);
onSubmit(assignValue);
}
});
};
render() {
const { projectMsg } = this.props;
const { getFieldDecorator } = this.props.form;
const headerTpl = (item, index) => {
const headerLength = this.state.header.length - 1;
return (