forgeplus-react/src/forge/Main/CoderRootBranch.js

83 lines
3.0 KiB
JavaScript
Raw Normal View History

2020-06-04 18:27:19 +08:00
import React , { useState, useEffect } from 'react';
2020-03-16 14:12:11 +08:00
import { Link } from "react-router-dom";
2020-06-05 18:07:34 +08:00
import { Dropdown , Menu , Icon , Tooltip , Spin } from 'antd';
2020-03-30 10:21:22 +08:00
import { truncateCommitId } from '../common/util';
2020-06-04 18:27:19 +08:00
import { getBranch } from '../GetData/getData';
2021-02-22 15:27:51 +08:00
import Nodata from '../Nodata';
2020-06-04 18:27:19 +08:00
import './list.css';
2020-03-16 14:12:11 +08:00
2020-06-04 18:27:19 +08:00
export default ((props)=>{
const [ data , setData ] =useState(undefined);
2020-06-05 18:07:34 +08:00
const [ isSpin , setIsSpin ] =useState(true);
2020-08-12 18:13:18 +08:00
const { projectsId , owner } = props.match.params;
2020-06-04 18:27:19 +08:00
useEffect(()=>{
2020-08-12 18:13:18 +08:00
getBranchs(projectsId, owner);
2020-06-04 18:27:19 +08:00
},[projectsId])
2020-08-12 18:13:18 +08:00
async function getBranchs(id,owner){
let result = await getBranch(id,owner);
2020-06-04 18:27:19 +08:00
setData(result);
2020-06-05 18:07:34 +08:00
setIsSpin(false);
2020-03-16 14:12:11 +08:00
}
2020-06-04 18:27:19 +08:00
const list =()=>{
if(data && data.length>0){
return(
<React.Fragment>
<ul className="branchUl">
{
data.map((item,key)=>{
return(
<li key={key}>
<div>
<Link to={`/projects/${owner}/${projectsId}/tree/${item.name.replaceAll("/","%2F")}`} className="color-blue font-15" style={{"maxWidth":"100px"}}>{item.name}</Link>
2020-06-04 18:27:19 +08:00
<p className="f-wrap-alignCenter mt15">
2020-11-10 18:09:38 +08:00
<Link to={`/projects/${owner}/${projectsId}/commits/${truncateCommitId(`${item.last_commit.sha}`)}`} className="mr5 commitKey" style={{marginLeft:0}}>{item.last_commit && truncateCommitId(item.last_commit.sha)}</Link>
2020-06-04 18:27:19 +08:00
<span className="color-grey-3 hide-1 messages leftPoint">{item.last_commit && item.last_commit.message}</span>
<span className="color-grey-8 ml30">最后更新于{item.last_commit && item.last_commit.time_from_now}</span>
</p>
</div>
<span>
2021-06-07 11:13:38 +08:00
<Link to={`/projects/${owner}/${projectsId}/pulls/new/${item.name}`} className="mr20 color-blue mr30">创建合并请求</Link>
2020-06-04 18:27:19 +08:00
<Dropdown overlay={menu(item.zip_url,item.tar_url)} trigger={['click']} placement="bottomRight" className="color-green-file">
<a className="ant-dropdown-link">
<Tooltip title={`下载分支${item.name}`}><Icon type="cloud-download" className="font-18"/></Tooltip>
</a>
</Dropdown>
</span>
</li>
)
})
}
</ul>
</React.Fragment>
)
2021-02-22 15:27:51 +08:00
}else if(data && data.length === 0){
return ( <Nodata _html="暂无数据"/>)
2020-03-16 14:12:11 +08:00
}
}
2020-06-04 18:27:19 +08:00
const menu =(zip_url,tar_url)=> (
<Menu>
<Menu.Item key={'0'}><a href={zip_url}>ZIP</a></Menu.Item>
<Menu.Item key={'1'}><a href={tar_url}>TAR.GZ</a></Menu.Item>
</Menu>
)
return(
<React.Fragment>
<div className="main">
2020-06-05 18:07:34 +08:00
<Spin spinning={isSpin}>
<div className="branchTable">
<p className="branchTitle bor-bottom-greyE">分支列表</p>
2021-02-22 15:27:51 +08:00
<div style={{minHeight:"400px"}}>{list()}</div>
2020-06-05 18:07:34 +08:00
</div>
</Spin>
2020-06-04 18:27:19 +08:00
</div>
</React.Fragment>
)
})
2020-03-16 14:12:11 +08:00
2020-06-04 18:27:19 +08:00