dev_forge
caicai8 5 years ago
parent 2a40b5a959
commit bb2691767b

@ -0,0 +1,31 @@
import React , { Component } from 'react';
import { Dropdown , Icon , Menu } from 'antd';
class SelectBranch extends Component{
render(){
const { branchs , branch , changeBranch } = this.props;
const menu = (
<Menu>
{
branchs && branchs.map((item,key)=>{
return(
<Menu.Item key={item.index} onClick={(value)=>changeBranch(value)}>{item.name}</Menu.Item>
)
})
}
</Menu>
);
return(
<div className="branchDropdown">
<span className="color-grey-9 mr3"><i className="iconfont icon-fenzhi font-20 color-grey-6 mr3"></i>:</span>
<Dropdown overlay={menu} trigger={['click']} placement="bottomRight">
<a className="ant-dropdown-link">
{branch} <Icon type="down" />
</a>
</Dropdown>
</div>
)
}
}
export default SelectBranch;

@ -5,6 +5,8 @@ import {Link} from 'react-router-dom';
import { getImageUrl } from 'educoder'; import { getImageUrl } from 'educoder';
import axios from 'axios'; import axios from 'axios';
import SelectBranch from '../Branch/SelectBranch'
// 点击按钮复制功能 // 点击按钮复制功能
function jsCopy(){ function jsCopy(){
var e = document.getElementById("copy_rep_content"); var e = document.getElementById("copy_rep_content");
@ -16,7 +18,8 @@ class CoderRootDirectory extends Component{
super(props); super(props);
this.state={ this.state={
address:"http", address:"http",
ref:"master", branch:"master",
http_url:undefined,
rootList:undefined, rootList:undefined,
branchList:undefined, branchList:undefined,
@ -54,21 +57,22 @@ class CoderRootDirectory extends Component{
this.setState({ this.setState({
branchList:result.data, branchList:result.data,
branchs, branchs,
branchLastCommit:result.data[0] branchLastCommit:result.data[0],
http_url:result.data[0].http_url
}) })
} }
}).catch((error)=>{}) }).catch((error)=>{})
} }
// 获取分支文件 // 获取分支文件
getProjectRoot=(ref)=>{ getProjectRoot=(branch)=>{
const { login } = this.props.current_user; const { login } = this.props.current_user;
const { projectsId } = this.props.match.params; const { projectsId } = this.props.match.params;
const url = `/${login}/${projectsId}/entries.json`; const url = `/${login}/${projectsId}/entries.json`;
axios.get((url),{ axios.get((url),{
params:{ params:{
ref branch
} }
}).then((result)=>{ }).then((result)=>{
if(result && result.data && result.data.length > 0){ if(result && result.data && result.data.length > 0){
@ -96,8 +100,9 @@ class CoderRootDirectory extends Component{
let branchLastCommit = branchList[parseInt(value.key)]; let branchLastCommit = branchList[parseInt(value.key)];
this.setState({ this.setState({
ref:branchLastCommit.name, branch:branchLastCommit.name,
branchLastCommit branchLastCommit,
http_url:branchLastCommit.http_url
}) })
} }
@ -114,18 +119,8 @@ class CoderRootDirectory extends Component{
} }
]; ];
const { address , ref , rootList , branchList , branchs, branchLastCommit } = this.state; const { branch , rootList , branchs, branchLastCommit , http_url } = this.state;
const menu = (
<Menu>
{
branchs && branchs.map((item,key)=>{
return(
<Menu.Item key={item.index} onClick={this.changeBranch}>{item.name}</Menu.Item>
)
})
}
</Menu>
);
const title = () =>{ const title = () =>{
if(branchLastCommit && branchLastCommit.last_commit){ if(branchLastCommit && branchLastCommit.last_commit){
@ -134,7 +129,7 @@ class CoderRootDirectory extends Component{
{ {
branchLastCommit.author ? branchLastCommit.author ?
<React.Fragment> <React.Fragment>
<img src={getImageUrl(`/images${branchLastCommit.author.image_url}`)} alt=""/> <img src={getImageUrl(`images/${branchLastCommit.author.image_url}`)} alt=""/>
<span className="mr15">{branchLastCommit.author.login}</span> <span className="mr15">{branchLastCommit.author.login}</span>
</React.Fragment> </React.Fragment>
:"" :""
@ -148,6 +143,17 @@ class CoderRootDirectory extends Component{
return undefined; return undefined;
} }
} }
const downloadUrl = ()=>{
if(branchLastCommit && branchLastCommit.zip_url){
return(
<Menu>
<Menu.Item><a href={branchLastCommit.zip_url}>ZIP</a></Menu.Item>
<Menu.Item><a href={branchLastCommit.tar_url}>TAR.GZ</a></Menu.Item>
</Menu>
)
}
}
return( return(
<div className="main"> <div className="main">
<p className="branch-wrapper"> <p className="branch-wrapper">
@ -156,21 +162,14 @@ class CoderRootDirectory extends Component{
</p> </p>
<div className="f-wrap-between mt20"> <div className="f-wrap-between mt20">
<div className="branchDropdown"> <SelectBranch branch={branch} branchs={branchs} changeBranch={this.changeBranch}></SelectBranch>
<span className="color-grey-9 mr3"><i className="iconfont icon-fenzhi font-20 color-grey-6 mr3"></i>:</span>
<Dropdown overlay={menu} trigger={['click']} placement="bottomRight">
<a className="ant-dropdown-link">
{ref} <Icon type="down" />
</a>
</Dropdown>
</div>
<div className="gitAddressClone"> <div className="gitAddressClone">
<span className={address ==="http" ? "addressType active":"addressType"} onClick={()=>this.changeAddress("http")}>HTTP</span> <span className={"addressType active"} onClick={()=>this.changeAddress("http")}>HTTP</span>
<span className={address ==="ssh" ? "addressType active":"addressType"} onClick={()=>this.changeAddress("ssh")}>SSH</span> {/* <span className={address ==="ssh" ? "addressType active":"addressType"} onClick={()=>this.changeAddress("ssh")}>SSH</span> */}
<input type="text" id="copy_rep_content" value={"git@testgitea.trustie.net:sylor/test11.git"}/> <input type="text" id="copy_rep_content" value={ http_url }/>
<span onClick={()=>jsCopy()}><i className="iconfont icon-fuzhi"></i></span> <span onClick={()=>jsCopy()}><i className="iconfont icon-fuzhi"></i></span>
<span> <span>
<Dropdown overlay={menu} trigger={['click']} placement="bottomRight"> <Dropdown overlay={downloadUrl} trigger={['click']} placement="bottomRight">
<a className="ant-dropdown-link"> <a className="ant-dropdown-link">
<Icon type="cloud-download" className="font-18 fl"/> <Icon type="cloud-download" className="font-18 fl"/>
</a> </a>

@ -24,6 +24,7 @@ class Detail extends Component{
} }
render(){ render(){
const { currentKey } = this.state; const { currentKey } = this.state;
const { projectsId } = this.props.match.params;
return( return(
<div> <div>
<div className="detailHeader-wrapper"> <div className="detailHeader-wrapper">
@ -38,11 +39,11 @@ class Detail extends Component{
</div> </div>
<div className="normal f-wrap-between"> <div className="normal f-wrap-between">
<ul className="headerMenu-wrapper"> <ul className="headerMenu-wrapper">
<li className={currentKey === "coder" ? "active" : ""}><Link to={''}>代码</Link></li> <li className={currentKey === "coder" ? "active" : ""}><Link to={`/projects/${projectsId}`}>代码</Link></li>
<li className={currentKey === "orders" ? "active" : ""}><Link to={''}>工单</Link></li> <li className={currentKey === "orders" ? "active" : ""}><Link to={`/projects/${projectsId}/orders`}>工单</Link></li>
<li className={currentKey === "merge" ? "active" : ""}><Link to={''}>合并请求</Link></li> <li className={currentKey === "merge" ? "active" : ""}><Link to={`/projects/${projectsId}/merge`}>合并请求</Link></li>
<li className={currentKey === "edition" ? "active" : ""}><Link to={''}>版本发布</Link></li> <li className={currentKey === "edition" ? "active" : ""}><Link to={`/projects/${projectsId}/edition`}>版本发布</Link></li>
<li className={currentKey === "trends" ? "active" : ""}><Link to={''}>动态</Link></li> <li className={currentKey === "trends" ? "active" : ""}><Link to={`/projects/${projectsId}/trends`}>动态</Link></li>
</ul> </ul>
</div> </div>
</div> </div>

@ -107,6 +107,7 @@ class Index extends Component{
if(result){ if(result){
if(result.data.id){ if(result.data.id){
this.props.showNotification(`${projectsType === "deposit" ? "托管" :"镜像"}项目创建成功!`); this.props.showNotification(`${projectsType === "deposit" ? "托管" :"镜像"}项目创建成功!`);
this.history.push('/projects');
} }
} }
}).catch((error)=>{ }).catch((error)=>{

Loading…
Cancel
Save