forgeplus-react/src/forge/Merge/Files.jsx

89 lines
3.6 KiB
React
Raw Normal View History

2020-11-10 16:42:32 +08:00
import React ,{useEffect,useState } from 'react';
import { truncateCommitId } from '../common/util';
2020-11-05 11:31:26 +08:00
import { AlignCenter , FlexAJ } from '../Component/layout';
2020-11-06 16:30:01 +08:00
import { Button } from 'antd';
import Nodata from '../Nodata';
2020-11-10 16:42:32 +08:00
import './merge.css';
function Files({data,history,owner,projectsId}){
const [ files , setFiles ] = useState(data && data.files);
2020-11-05 11:31:26 +08:00
useEffect(()=>{
2020-11-06 16:30:01 +08:00
if(data){
setFiles(data.files);
2020-11-05 11:31:26 +08:00
}
2020-11-06 16:30:01 +08:00
},[data])
2020-11-05 11:31:26 +08:00
2020-11-10 16:42:32 +08:00
function showDown(flag,index,isBin){
if(!isBin){
var lists = files.concat();
lists[index].flag = !flag ? true : false;
lists.splice();
setFiles(lists);
}
}
2020-11-05 11:31:26 +08:00
return(
2020-11-06 16:30:01 +08:00
files ?
2020-11-05 11:31:26 +08:00
<div>
<AlignCenter className="color-grey-9 pb10" style={{borderBottom:"1px solid #eee"}}>
<i className="iconfont icon-sanjiaoxing-down mr5"></i>
<span>
共有<span className="color-grey-3"> {data && data.files_count} 个文件被更改</span>包括
{data && data.total_addition && <span className="color-green"> {data && data.total_addition} 次插入</span> }
2020-11-06 16:30:01 +08:00
{ data && data.total_deletion ? <span className="color-red"> {data && data.total_deletion} 次删除</span>:""}
2020-11-05 11:31:26 +08:00
</span>
</AlignCenter>
{
files && files.length>0 &&
<div>
{
files.map((item,key)=>{
return(
2020-11-11 16:09:57 +08:00
<div className="files" key={key}>
2020-11-06 16:30:01 +08:00
<FlexAJ className="filesInfo" style={{cursor:item.isBin ? "default":"pointer"}} onClick={()=>showDown(item.flag,key,item.isBin)}>
2020-11-05 11:31:26 +08:00
<AlignCenter>
2020-11-06 16:30:01 +08:00
{!item.isBin ? <i className={!item.flag?"iconfont icon-xiajiantou font-16 mr15 color-grey-9":"iconfont icon-youjiantou font-16 mr15 color-grey-9"}></i>:""}
2020-11-05 11:31:26 +08:00
<i className="iconfont icon-wenjia font-16 mr8 color-grey-9"></i>
<span>{item.name}</span>
</AlignCenter>
<span>
2020-11-10 16:42:32 +08:00
<Button className="mr20" onClick={()=>{history.push(`/projects/${owner}/${projectsId}?${item.sha ? `branch=${truncateCommitId(item.sha)}&`:""}url=${item.name}`)}}>查看文件</Button>
2020-11-05 11:31:26 +08:00
<span className="color-green">+{item.addition}</span>
<span className="color-red ml20">-{item.deletion}</span>
</span>
</FlexAJ>
2020-11-06 16:30:01 +08:00
{
item.sections && item.sections.length >= 1 && !item.flag &&
<div className="filesContent">
{
item.sections.map((i,k)=>{
return(
i.lines && i.lines.length>0 && i.lines.map((item,key)=>{
return(
2020-11-11 16:09:57 +08:00
<div key={k+key} className={(item.type === 2) ? "linesContent add" : item.type === 3 ? "linesContent reduce": item.type===4?"linesContent translate":"linesContent"}>
2020-11-06 16:30:01 +08:00
<span className="lines">
<span>{item.leftIdx && item.leftIdx !=="0" ? item.leftIdx :"" }</span>
<span>{item.rightIdx && item.rightIdx !=="0" ? item.rightIdx :"" }</span>
</span>
<p>{item.content}</p>
</div>
)
})
)
})
}
</div>
}
2020-11-05 11:31:26 +08:00
</div>
)
})
}
</div>
}
</div>
2020-11-06 16:30:01 +08:00
:
<Nodata _html="暂无文件提交~"/>
2020-11-05 11:31:26 +08:00
)
}
export default Files;