in console-ui/src/pages/ConfigurationManagement/ConfigurationManagement/ConfigurationManagement.js [712:958]
success(data) {
self.closeLoading();
if (!data || data.code !== 0 || !data.data) {
Dialog.alert({
title: locale.getNamespaceFailed,
content: locale.getNamespaceFailed,
});
}
let namespaces = data.data;
let namespaceSelectData = [];
let namespaceSelecItemRender = item => {
if (item.isCurrent) {
return (
<span
style={{
color: '#00AA00',
'font-weight': 'bold',
}}
>
{item.label}
</span>
);
} else {
return <span>{item.label}</span>;
}
};
namespaces.forEach(item => {
let dataItem = {};
dataItem.isCurrent = false;
if (self.state.nownamespace_id === item.namespace) {
dataItem.isCurrent = true;
}
if (item.namespaceShowName === 'public') {
dataItem.label = 'public | public';
dataItem.value = 'public';
} else {
dataItem.label = `${item.namespaceShowName} | ${item.namespace}`;
dataItem.value = item.namespace;
}
namespaceSelectData.push(dataItem);
});
let editableTableData = [];
let configsTableSelectedDeepCopyed = new Map();
configsTableSelected.forEach((value, key, map) => {
let dataItem = {};
dataItem.id = key;
dataItem.dataId = value.dataId;
dataItem.groupName = value.groupName;
editableTableData.push(dataItem);
configsTableSelectedDeepCopyed.set(key, JSON.parse(JSON.stringify(value)));
});
let editableTableOnBlur = (record, type, e) => {
if (type === 1) {
configsTableSelectedDeepCopyed.get(record.id).dataId = e.target.value;
} else {
configsTableSelectedDeepCopyed.get(record.id).groupName = e.target.value;
}
};
let renderEditableTableCellDataId = (value, index, record) => (
<Input defaultValue={value} onBlur={editableTableOnBlur.bind(this, record, 1)} />
);
let renderEditableTableCellGroup = (value, index, record) => (
<Input defaultValue={value} onBlur={editableTableOnBlur.bind(this, record, 2)} />
);
const cloneConfirm = Dialog.confirm({
title: locale.cloningConfiguration,
footer: false,
content: (
<>
<div style={{ marginBottom: 10 }}>
<span
style={{
color: '#999',
marginRight: 5,
}}
>
{locale.source}
</span>
<span style={{ color: '#49D2E7' }}>{self.state.nownamespace_name} </span>|{' '}
{self.state.nownamespace_id}
</div>
<div style={{ marginBottom: 10 }}>
<span
style={{
color: '#999',
marginRight: 5,
}}
>
{locale.configurationNumber}
</span>
<span style={{ color: '#49D2E7' }}>{configsTableSelected.size} </span>
{locale.selectedEntry}
</div>
<div style={{ marginBottom: 10 }}>
<span
style={{
color: 'red',
marginRight: 2,
marginLeft: -10,
}}
>
{'*'}
</span>
<span
style={{
color: '#999',
marginRight: 5,
}}
>
{locale.target}
</span>
<Select
style={{ width: 450 }}
placeholder={locale.selectNamespace}
size={'medium'}
hasArrow
showSearch
hasClear={false}
mode="single"
itemRender={namespaceSelecItemRender}
dataSource={namespaceSelectData}
onChange={(value, actionType, item) => {
if (value) {
document.getElementById('cloneTargetSpaceSelectErr').style.display = 'none';
self.field.setValue('cloneTargetSpace', value);
}
}}
/>
<br />
<span id={'cloneTargetSpaceSelectErr'} style={{ color: 'red', display: 'none' }}>
{locale.selectNamespace}
</span>
</div>
<div style={{ marginBottom: 10 }}>
<span
style={{
color: '#999',
marginRight: 5,
}}
>
{locale.samePreparation}:
</span>
<Select
style={{ width: 130 }}
size={'medium'}
hasArrow
mode="single"
filterLocal={false}
defaultValue={'ABORT'}
dataSource={[
{
label: locale.abortImport,
value: 'ABORT',
},
{
label: locale.skipImport,
value: 'SKIP',
},
{
label: locale.overwriteImport,
value: 'OVERWRITE',
},
]}
hasClear={false}
onChange={(value, actionType, item) => {
if (value) {
self.field.setValue('sameConfigPolicy', value);
}
}}
/>
</div>
<div style={{ marginBottom: 10 }}>
<Button
type={'primary'}
style={{ marginRight: 10 }}
onClick={() => {
if (!self.field.getValue('cloneTargetSpace')) {
document.getElementById('cloneTargetSpaceSelectErr').style.display = 'inline';
return;
} else {
document.getElementById('cloneTargetSpaceSelectErr').style.display = 'none';
}
let idsStr = '';
let clonePostData = [];
configsTableSelectedDeepCopyed.forEach((value, key, map) => {
let postDataItem = {};
postDataItem.cfgId = key;
postDataItem.dataId = value.dataId;
postDataItem.group = value.groupName;
clonePostData.push(postDataItem);
});
let cloneTargetSpace = self.field.getValue('cloneTargetSpace');
let sameConfigPolicy = self.field.getValue('sameConfigPolicy');
request({
url: `v3/console/cs/config/clone?targetNamespaceId=${cloneTargetSpace}&policy=${sameConfigPolicy}&namespaceId=`,
method: 'post',
data: JSON.stringify(clonePostData),
contentType: 'application/json',
beforeSend() {
self.openLoading();
},
success(ret) {
self.closeLoading();
self.processImportAndCloneResult(ret, locale, cloneConfirm, false);
},
error(data) {
self.closeLoading();
self.setState({
dataSource: [],
total: 0,
currentPage: 0,
});
},
complete() {
self.closeLoading();
},
});
}}
data-spm-click={'gostr=/aliyun;locaid=doClone'}
>
{locale.startCloning}
</Button>
</div>
<div style={{ marginBottom: 10 }}>
<span style={{ color: '#00AA00', fontWeight: 'bold' }}>
{locale.cloneEditableTitle}
</span>
</div>
<Table dataSource={editableTableData}>
<Table.Column
title="Data Id"
dataIndex="dataId"
cell={renderEditableTableCellDataId}
/>
<Table.Column
title="Group"
dataIndex="groupName"
cell={renderEditableTableCellGroup}
/>
</Table>
</>
),
});
},