add pipeline exec config
This commit is contained in:
parent
b498b8b147
commit
dad695437a
|
@ -19,7 +19,7 @@ import {
|
||||||
Badge,
|
Badge,
|
||||||
Divider,
|
Divider,
|
||||||
Steps,
|
Steps,
|
||||||
Popconfirm
|
Drawer
|
||||||
} from 'antd';
|
} from 'antd';
|
||||||
import StandardTable from '@/components/StandardTable';
|
import StandardTable from '@/components/StandardTable';
|
||||||
import PageHeaderWrapper from '@/components/PageHeaderWrapper';
|
import PageHeaderWrapper from '@/components/PageHeaderWrapper';
|
||||||
|
@ -136,6 +136,8 @@ class IngestPipeline extends PureComponent {
|
||||||
selectedRows: [],
|
selectedRows: [],
|
||||||
formValues: {},
|
formValues: {},
|
||||||
updateFormValues: {},
|
updateFormValues: {},
|
||||||
|
drawerVisible: false,
|
||||||
|
btnSaveExtraLoading: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
columns = [
|
columns = [
|
||||||
|
@ -162,11 +164,27 @@ class IngestPipeline extends PureComponent {
|
||||||
this.state.selectedRows.push(record);
|
this.state.selectedRows.push(record);
|
||||||
this.handleDeleteClick();
|
this.handleDeleteClick();
|
||||||
}}>删除</a>
|
}}>删除</a>
|
||||||
|
<Divider type="vertical"/>
|
||||||
|
<a onClick={() => {
|
||||||
|
this.handlePipelineClick(record);
|
||||||
|
}}>管道参数配置</a>
|
||||||
</Fragment>
|
</Fragment>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
handlePipelineClick = (r)=>{
|
||||||
|
this.setState((prevState)=>{
|
||||||
|
let newState = {
|
||||||
|
drawerVisible: !prevState.drawerVisible,
|
||||||
|
};
|
||||||
|
if(r) {
|
||||||
|
newState["editingRecord"] = r;
|
||||||
|
}
|
||||||
|
return newState;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { dispatch } = this.props;
|
const { dispatch } = this.props;
|
||||||
dispatch({
|
dispatch({
|
||||||
|
@ -231,10 +249,12 @@ class IngestPipeline extends PureComponent {
|
||||||
payload: {
|
payload: {
|
||||||
key: selectedRows.map(row => row.name),
|
key: selectedRows.map(row => row.name),
|
||||||
},
|
},
|
||||||
callback: () => {
|
callback: (res) => {
|
||||||
this.setState({
|
if(res.message == "Ok"){
|
||||||
selectedRows: [],
|
this.setState({
|
||||||
});
|
selectedRows: [],
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -343,9 +363,36 @@ class IngestPipeline extends PureComponent {
|
||||||
return this.renderSimpleForm();
|
return this.renderSimpleForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleSaveExtra = (r)=>{
|
||||||
|
this.setState({btnSaveExtraLoading:true});
|
||||||
|
const {form, dispatch} = this.props;
|
||||||
|
form.validateFields((err, fieldsValue) => {
|
||||||
|
if (err) return;
|
||||||
|
console.log(fieldsValue);
|
||||||
|
for(let key in fieldsValue){
|
||||||
|
if(fieldsValue[key]){
|
||||||
|
r[key] = fieldsValue[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dispatch({
|
||||||
|
type: 'pipeline/update',
|
||||||
|
payload: r,
|
||||||
|
callback: (res) => {
|
||||||
|
if(res.message == "Ok"){
|
||||||
|
this.setState({
|
||||||
|
drawerVisible: false,
|
||||||
|
editingRecord: null,
|
||||||
|
btnSaveExtraLoading: false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let {pipeline, loading} = this.props;
|
let {pipeline, loading, form} = this.props;
|
||||||
const { selectedRows, modalVisible, updateModalVisible, updateFormValues } = this.state;
|
const { selectedRows, modalVisible, updateModalVisible, updateFormValues,drawerVisible, editingRecord} = this.state;
|
||||||
const parentMethods = {
|
const parentMethods = {
|
||||||
handleAdd: this.handleAdd,
|
handleAdd: this.handleAdd,
|
||||||
handleModalVisible: this.handleModalVisible,
|
handleModalVisible: this.handleModalVisible,
|
||||||
|
@ -355,7 +402,7 @@ class IngestPipeline extends PureComponent {
|
||||||
handleUpdate: this.handleUpdate,
|
handleUpdate: this.handleUpdate,
|
||||||
};
|
};
|
||||||
return (
|
return (
|
||||||
<PageHeaderWrapper>
|
<Fragment>
|
||||||
<Card bordered={false}>
|
<Card bordered={false}>
|
||||||
<div className={styles.tableList}>
|
<div className={styles.tableList}>
|
||||||
<div className={styles.tableListForm}>{this.renderForm()}</div>
|
<div className={styles.tableListForm}>{this.renderForm()}</div>
|
||||||
|
@ -387,7 +434,63 @@ class IngestPipeline extends PureComponent {
|
||||||
values={updateFormValues}
|
values={updateFormValues}
|
||||||
/>
|
/>
|
||||||
) : null}
|
) : null}
|
||||||
</PageHeaderWrapper>
|
{ editingRecord &&(
|
||||||
|
<Drawer title="管道参数配置"
|
||||||
|
width={640}
|
||||||
|
onClose={this.handlePipelineClick}
|
||||||
|
visible={drawerVisible}>
|
||||||
|
<Form name="edit_extra">
|
||||||
|
<FormItem labelCol={{ span: 6 }} wrapperCol={{ span: 15 }} label="工作线程数">
|
||||||
|
{form.getFieldDecorator('thread_num', {
|
||||||
|
initialValue: editingRecord.thread_num,
|
||||||
|
rules: [{ required: true }],
|
||||||
|
})(<Input placeholder="Number of cpu cores" />)}
|
||||||
|
</FormItem>
|
||||||
|
<FormItem labelCol={{ span: 6 }} wrapperCol={{ span: 15 }} label="管道批大小">
|
||||||
|
{form.getFieldDecorator('batch_size', {
|
||||||
|
initialValue: editingRecord.batch_size,
|
||||||
|
rules: [{ required: true }],
|
||||||
|
})(<Input placeholder="pipeline batch size" />)}
|
||||||
|
</FormItem>
|
||||||
|
<FormItem labelCol={{ span: 6 }} wrapperCol={{ span: 15 }} label="管道批延迟">
|
||||||
|
{form.getFieldDecorator('batch_delay', {
|
||||||
|
initialValue: editingRecord.batch_delay,
|
||||||
|
rules: [{ required: true }],
|
||||||
|
})(<Input placeholder="pipeline batch delay, eg: 50" />)}
|
||||||
|
</FormItem>
|
||||||
|
<FormItem labelCol={{ span: 6 }} wrapperCol={{ span: 15 }} label="队列类型">
|
||||||
|
{form.getFieldDecorator('queue_type', {
|
||||||
|
initialValue: editingRecord.queue_type,
|
||||||
|
rules: [{ required: true }],
|
||||||
|
})(
|
||||||
|
<Select>
|
||||||
|
<Select.Option value="memory">
|
||||||
|
Memory
|
||||||
|
</Select.Option>
|
||||||
|
</Select>
|
||||||
|
)}
|
||||||
|
</FormItem>
|
||||||
|
<FormItem labelCol={{ span: 6 }} wrapperCol={{ span: 15 }} label="队列最大字节数">
|
||||||
|
{form.getFieldDecorator('queue_max_bytes', {
|
||||||
|
initialValue: editingRecord.queue_max_bytes,
|
||||||
|
rules: [{ required: true }],
|
||||||
|
})(<Input placeholder="size of max queue bytes, eg: 1024" />)}
|
||||||
|
</FormItem>
|
||||||
|
<FormItem labelCol={{ span: 6 }} wrapperCol={{ span: 15 }} label="队列检查点写入数">
|
||||||
|
{form.getFieldDecorator('queue_checkpoint_num', {
|
||||||
|
initialValue: editingRecord.queue_checkpoint_num,
|
||||||
|
rules: [{ required: true }],
|
||||||
|
})(<Input placeholder="number of writing queue checkpoint, eg: 1024" />)}
|
||||||
|
</FormItem>
|
||||||
|
<div style={{position:"absolute", bottom:20, textAlign: 'center', width: '100%'}}>
|
||||||
|
<Button type="primary" loading={this.state.btnSaveExtraLoading} onClick={()=>this.handleSaveExtra(editingRecord)}>保存</Button>
|
||||||
|
<Button style={{marginLeft: '2em'}}>保存并部署</Button>
|
||||||
|
</div>
|
||||||
|
</Form>
|
||||||
|
|
||||||
|
</Drawer>
|
||||||
|
)}
|
||||||
|
</Fragment>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,18 +66,18 @@ class NewForm extends PureComponent {
|
||||||
<Form.Item label="策略名称" {...formLayout}>
|
<Form.Item label="策略名称" {...formLayout}>
|
||||||
{form.getFieldDecorator('name', {
|
{form.getFieldDecorator('name', {
|
||||||
rules: [{ required: true }],
|
rules: [{ required: true }],
|
||||||
})(<Input placeholder="请输入策略名称" style={{width:200}} />)}
|
})(<Input placeholder="请输入策略名称" />)}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label="快照名称" {...formLayout}>
|
<Form.Item label="快照名称" {...formLayout}>
|
||||||
{form.getFieldDecorator('snapshot', {
|
{form.getFieldDecorator('snapshot', {
|
||||||
rules: [{ required: true }],
|
rules: [{ required: true }],
|
||||||
})(<Input placeholder="请输入快照名称" style={{width:200}} />)}
|
})(<Input placeholder="请输入快照名称" />)}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
<Form.Item label="选择仓库" {...formLayout}>
|
<Form.Item label="选择仓库" {...formLayout}>
|
||||||
{form.getFieldDecorator('repo', {
|
{form.getFieldDecorator('repo', {
|
||||||
rules: [{ required: true }],
|
rules: [{ required: true }],
|
||||||
})(
|
})(
|
||||||
<Select style={{width:200}}>
|
<Select>
|
||||||
<Select.Option value="my_local_repo">
|
<Select.Option value="my_local_repo">
|
||||||
my_local_repo
|
my_local_repo
|
||||||
</Select.Option>
|
</Select.Option>
|
||||||
|
@ -91,7 +91,7 @@ class NewForm extends PureComponent {
|
||||||
{form.getFieldDecorator('frequency', {
|
{form.getFieldDecorator('frequency', {
|
||||||
rules: [{ required: true }],
|
rules: [{ required: true }],
|
||||||
})(
|
})(
|
||||||
<Select style={{width:200}}>
|
<Select>
|
||||||
<Select.Option value="day">
|
<Select.Option value="day">
|
||||||
每天
|
每天
|
||||||
</Select.Option>
|
</Select.Option>
|
||||||
|
@ -105,7 +105,7 @@ class NewForm extends PureComponent {
|
||||||
{form.getFieldDecorator('time', {
|
{form.getFieldDecorator('time', {
|
||||||
rules: [{ required: true }],
|
rules: [{ required: true }],
|
||||||
})(
|
})(
|
||||||
<TimePicker format={format} style={{width:200}} />
|
<TimePicker format={format} />
|
||||||
)}
|
)}
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
</Form>
|
</Form>
|
||||||
|
@ -485,7 +485,7 @@ class BakCycle extends PureComponent {
|
||||||
<Drawer
|
<Drawer
|
||||||
title="备份策略"
|
title="备份策略"
|
||||||
placement="right"
|
placement="right"
|
||||||
width={720}
|
width={640}
|
||||||
onClose={this.onCloseDrawer}
|
onClose={this.onCloseDrawer}
|
||||||
visible={this.state.drawerVisible}
|
visible={this.state.drawerVisible}
|
||||||
>
|
>
|
||||||
|
|
|
@ -29,7 +29,7 @@ export default {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
*update({payload}, {call, put}){
|
*update({payload,callback}, {call, put}){
|
||||||
const res = yield call(updatePipeline, payload);
|
const res = yield call(updatePipeline, payload);
|
||||||
if(res.message == "Ok") {
|
if(res.message == "Ok") {
|
||||||
yield put({
|
yield put({
|
||||||
|
@ -37,8 +37,11 @@ export default {
|
||||||
payload: payload,
|
payload: payload,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if(callback && typeof callback === "function"){
|
||||||
|
callback(res);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
*delete({payload}, {call, put}){
|
*delete({payload, callback}, {call, put}){
|
||||||
const res = yield call(deletePipeline, payload);
|
const res = yield call(deletePipeline, payload);
|
||||||
console.log(res);
|
console.log(res);
|
||||||
if(res.message == "Ok") {
|
if(res.message == "Ok") {
|
||||||
|
@ -47,6 +50,9 @@ export default {
|
||||||
payload: payload,
|
payload: payload,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
if(callback && typeof callback === "function"){
|
||||||
|
callback(res);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
reducers: {
|
reducers: {
|
||||||
|
|
Loading…
Reference in New Issue