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

79 lines
3.4 KiB
React
Raw Normal View History

2021-10-11 11:28:41 +08:00
import React ,{useEffect,useState } from 'react';
2020-11-05 11:31:26 +08:00
import { AlignCenter , FlexAJ } from '../Component/layout';
import { Tooltip , Progress } from 'antd';
2020-11-10 16:42:32 +08:00
import './merge.css';
2021-09-24 11:27:32 +08:00
import './Index.scss';
import FileDrop from './components/fileDrop';
2020-11-10 16:42:32 +08:00
function Files({ data , filesData , history,owner,projectsId , parentsSha , mergeId }){
const [ files , setFiles ] = useState(filesData);
const [ isOpen, setIsOpen] = useState(false);
2021-10-08 14:41:02 +08:00
2020-11-05 11:31:26 +08:00
useEffect(()=>{
if(filesData){
setFiles(filesData);
2020-11-05 11:31:26 +08:00
}
},[filesData]);
2020-11-05 11:31:26 +08:00
2021-10-11 11:28:41 +08:00
useEffect(()=>{
document.addEventListener('click',()=>{setIsOpen(false)})
2021-11-01 09:31:08 +08:00
},[])
2021-10-11 11:28:41 +08:00
2021-09-24 11:27:32 +08:00
const folderOpen = (
2021-09-27 10:08:52 +08:00
<div className="folders">
<div className="folderList">
{files && files.map((item, key) => {
2021-09-24 14:29:57 +08:00
return (
2021-09-27 10:08:52 +08:00
<a href={`#value${key}`}>
<FlexAJ className="filesInfo" key={key} onClick={() => {item.flag && showDown(item.flag, key, item.is_bin);setIsOpen(false);}}>
2021-09-24 14:29:57 +08:00
<AlignCenter>
<i className="iconfont icon-wenjianicon mr4"></i>
<span className="cursor-pointer" data-clipboard-text={item.filename}>{item.filename}</span>
2021-09-24 14:29:57 +08:00
</AlignCenter>
<div className="see-file">
<Tooltip placement="top" title={`${item.additions+item.deletions}处更改${item.additions + item.deletions > 0 ? "":""}${item.additions>0?item.additions+"处添加":""}${item.additions>0 && item.deletions>0 ?"和":""}${item.deletions>0?item.deletions+"处删除":""}`}>
<Progress showInfo = {false} strokeColor = "#2DB44D" size="small" percent={item.additions/(item.additions+item.deletions)*100} />
{item.additions >0 && <span className="color-green ml10">+{item.additions}</span>}
{item.deletions >0 && <span className="color-red ml10">-{item.deletions}</span>}
2021-09-24 14:29:57 +08:00
</Tooltip>
</div>
2021-09-27 10:08:52 +08:00
</FlexAJ>
</a>
2021-09-24 14:29:57 +08:00
)
})}
</div>
2021-09-27 10:08:52 +08:00
</div>
2021-09-24 11:27:32 +08:00
)
2023-05-17 11:44:51 +08:00
2020-11-05 11:31:26 +08:00
return(
2021-10-11 11:28:41 +08:00
<div onClick={(e)=>{e.nativeEvent.stopImmediatePropagation()}}>
<AlignCenter className="color-grey-9" style={{position:'relative'}} onClick={()=>{setIsOpen(!isOpen)}}>
<div style={{width:20}}><i className={`iconfont mr5 ${isOpen? "font-18 icon-sanjiaoxing-down":"font-16 icon-triangle"}`}></i></div>
<span className="color-grey-6 update-file-count">
共有<span className="color-grey-3"> {data && data.file_nums} 个文件 </span>被更改
{ data && data.total_addition ? <span>包括 <span className="color-green">{data && data.total_addition} 次插入</span></span>:"" }
{ data && data.total_addition && data.total_deletion ? " 和 ":""}
{ data && data.total_deletion ? <span className="color-red"> {data && data.total_deletion} 次删除</span>:""}
</span>
2021-09-27 10:08:52 +08:00
{isOpen && folderOpen}
2020-11-05 11:31:26 +08:00
</AlignCenter>
{
files && files.length>0 &&
2021-09-24 11:27:32 +08:00
<div className="fileList">
2020-11-05 11:31:26 +08:00
{
files.map((item,key)=>{
return(
2021-09-27 10:08:52 +08:00
<div className="files" key={key}>
<a id= {`value${key}`} className="anchorPoint"></a>
<FileDrop item={item} prekey={key} projectsId={projectsId} owner={owner} history={history} parentsSha={parentsSha} mergeId={mergeId}/>
2020-11-05 11:31:26 +08:00
</div>
)
})
}
</div>
}
</div>
)
}
export default Files;