forgeplus-react/src/forge/Settings/BranchRule.jsx

112 lines
3.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React, { forwardRef, useCallback, useState, useEffect } from "react";
import { Form, Input, Select, Button } from "antd";
import Title from "../Component/Title";
import { WhiteBack, Cancel } from "../Component/layout";
import styled from "styled-components";
import axios from "axios";
const { Option } = Select;
const Div = styled.div`
{
padding: 20px 30px;
}
`;
export default Form.create()(
forwardRef(({ form, match, history }) => {
const [list, setList] = useState(undefined);
const { projectsId, owner } = match.params;
const { getFieldDecorator, validateFields } = form;
useEffect(() => {
const url = `/${owner}/${projectsId}/collaborators.json`;
axios.get(url).then((result) => {
setList(result.data.members);
})
.catch((error) => {});
}, []);
function getMember(list) {
return (
list &&
list.length > 0 &&
list.map((item, key) => {
return (
item.role !== "Manager" && (
<Option value={item.id}>{item.name}</Option>
)
);
})
);
}
function saveBranchRule() {
validateFields((error, values) => {
if (!error) {
}
});
}
const helper = useCallback(
(label, name, rules, widget, className, isRequired) => (
<div className={className}>
<span className={isRequired ? "required" : ""}>{label}</span>
<Form.Item>
{getFieldDecorator(name, { rules, validateFirst: true })(widget)}
</Form.Item>
</div>
),
[]
);
return (
<WhiteBack>
<Title>新建保护分支规则</Title>
<Div>
{helper(
"设置分支/通配符",
"sign",
[{ required: true, message: "请输入分支/通配符" }],
<Input placeholder="请输入分支名称或通配符规则" />,
"setStyleRule"
)}
<p className="color-grey-8 mb20">
例如设置为master则对名称为master的分支生效设置为*-stable
release*则对名称符合此通配符的所有保护分支生效
</p>
{helper(
"可推送代码成员",
"psuhmember",
[{ required: true, message: "请选择可推送代码成员" }],
<Select placeholder="请选择仓库成员">
<Option value="0">请选择仓库成员</Option>
{getMember(list)}
</Select>,
"setSelectWidth"
)}
{helper(
"可合并Pull Request成员",
"pullmember",
[{ required: true, message: "请选择可合并Pull Request成员" }],
<Select placeholder="请选择仓库成员">
<Option value="0">请选择仓库成员</Option>
{getMember(list)}
</Select>,
"setSelectWidth"
)}
<div className="df pb30">
<Button type="primary" onClick={saveBranchRule}>
保存
</Button>
<Cancel
className="ml30"
onClick={() => {
history.push(`/projects/${owner}/${projectsId}/setting/branch`);
}}
>
取消
</Cancel>
</div>
</Div>
</WhiteBack>
);
})
);