From f45f205b933001245697c62b65a9dbdd2590a964 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Wed, 3 Jun 2020 14:42:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=BA=93=EF=BC=9A=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E6=8F=90=E4=BA=A4=E4=BF=A1=E6=81=AF=E6=95=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.js | 2 - src/AppConfig.js | 2 +- src/forge/Branch/SelectBranch.js | 49 ++++++------ src/forge/Main/CoderRootCommit.js | 3 - src/forge/Main/CoderRootDirectory.js | 114 ++++++++++++++------------- src/forge/Main/Detail.js | 7 +- src/forge/users/Infos.js | 12 ++- src/forge/users/Team.jsx | 8 ++ src/modules/tpm/NewHeader.js | 2 +- 9 files changed, 113 insertions(+), 86 deletions(-) create mode 100644 src/forge/users/Team.jsx diff --git a/src/App.js b/src/App.js index beaa0a36..33913208 100644 --- a/src/App.js +++ b/src/App.js @@ -220,8 +220,6 @@ class App extends Component { render() { let { mygetHelmetapi } = this.state; - // console.log("appappapp"); - // console.log(mygetHelmetapi); return ( diff --git a/src/AppConfig.js b/src/AppConfig.js index b74dd678..d94d50e6 100644 --- a/src/AppConfig.js +++ b/src/AppConfig.js @@ -100,7 +100,7 @@ export function initAxiosInterceptors(props) { // TODO 读取到package.json中的配置? var proxy = "http://localhost:3000" // proxy = "https://pre-newweb.educoder.net" - // var proxy = "https://testforgeplus.trustie.net/" + proxy = "https://testforgeplus.trustie.net/" // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; // 如果需要支持重复的请求,考虑config里面自定义一个allowRepeat参考来控制 diff --git a/src/forge/Branch/SelectBranch.js b/src/forge/Branch/SelectBranch.js index b66a47e7..afc4e949 100644 --- a/src/forge/Branch/SelectBranch.js +++ b/src/forge/Branch/SelectBranch.js @@ -15,44 +15,49 @@ class SelectBranch extends Component{ } } componentDidMount() { + this.getTagList(); + document.body.addEventListener('click', e => { let v= this.state.visible; - let other = e.target && (e.target.matches('#m-btn') || e.target.matches("#navUl-btn") || e.target.matches("#input-btn")|| e.target.matches("#ul-btn")); - let classF = e.target.className === "navs" || e.target.className === "navs active"; - if(e.target && e.target.matches("#down-btn")){ + if(e.target.className && e.target.className.animVal!=undefined) return; + + let s = e.target && e.target.className && e.target.className.indexOf('showtag')> -1; + let classF =e.target && e.target.className && e.target.className.indexOf("downobject") > -1 || e.target.className==="ant-input OptionsInput"; + if(e.target && e.target.className === "ant-dropdown-trigger" || s){ this.setState({ visible:!v, value:undefined }) return; - }else if (other || classF) { + }else if (classF) { return; } else{ this.setState({ visible:false, value:undefined }) - } + } }); } componentDidUpdate=(prevProps)=>{ - if(this.props.repo_id && prevProps.repo_id != this.props.repo_id){ + if(this.props.repo_id && this.props.repo_id!=prevProps.repo_id){ this.getTagList(); } } - getTagList=()=>{ const { repo_id } = this.props; - const url = `/repositories/${repo_id}/tags.json`; - axios.get(url).then((result)=>{ - if(result){ - this.setState({ - tags:result.data - }) - } - }).catch(error=>{ - console.log(error); - }) + if(repo_id){ + const url = `/repositories/${repo_id}/tags.json`; + axios.get(url).then((result)=>{ + if(result){ + this.setState({ + tags:result.data + }) + } + }).catch(error=>{ + console.log(error); + }) + } } InputClick=(e)=>{ @@ -93,18 +98,18 @@ class SelectBranch extends Component{ const { branchs , branch } = this.props; let array = branchs; - if(search === "tag"){ + if(search === "tag" && tags.length>0){ array = tags; } let branchsFilter = value ? (array && array.length>0 && array.filter(item=>item.name.indexOf(value)>-1)) : array; const menu = (
-
+
    @@ -128,7 +133,7 @@ class SelectBranch extends Component{ {branch} - +
diff --git a/src/forge/Main/CoderRootCommit.js b/src/forge/Main/CoderRootCommit.js index adb67367..4ddeccb5 100644 --- a/src/forge/Main/CoderRootCommit.js +++ b/src/forge/Main/CoderRootCommit.js @@ -61,9 +61,6 @@ class CoderRootCommit extends Component{ // 切换分支 search:tag为根据标签搜索 changeBranch=(value)=>{ - const { branchList } = this.props; - // let branchLastCommit = branchList && branchList.filter(item=>item.name === value)[0]; - const { page , limit } = this.state; this.setState({ isSpin:true, diff --git a/src/forge/Main/CoderRootDirectory.js b/src/forge/Main/CoderRootDirectory.js index 72bf8202..5757d229 100644 --- a/src/forge/Main/CoderRootDirectory.js +++ b/src/forge/Main/CoderRootDirectory.js @@ -36,9 +36,12 @@ class CoderRootDirectory extends Component{ branchList:undefined, fileDetail:undefined, branchLastCommit:undefined, + lastCommitAuthor:undefined, rootList:undefined, - readOnly: true + readOnly: true, + zip_url:undefined, + tar_url:undefined } } changeAddress=(address)=>{ @@ -101,16 +104,22 @@ class CoderRootDirectory extends Component{ } }).then((result)=>{ if(result){ - if(result && result.data && result.data.length > 0){ - this.setState({ - filePath:undefined, - fileDetail:undefined, - isSpin: false - }) - this.renderData(result.data); + let last_commit = result.data && result.data.last_commit; + let entries = result.data && result.data.entries; + this.setState({ + filePath:undefined, + fileDetail:undefined, + isSpin: false, + branchLastCommit:last_commit && last_commit.commit, + lastCommitAuthor:last_commit && (last_commit.author || (last_commit.commit && last_commit.commit.author)), + zip_url:result.data.zip_url, + tar_url:result.data.tar_url + }) + if(entries && entries.length > 0){ + this.renderData(entries); } this.setState({ - rootList:result.data, + rootList:entries, subFileType:true }) } @@ -169,11 +178,12 @@ class CoderRootDirectory extends Component{ ref:ref || branch } }).then((result)=>{ - if(result && result.data && result.data.length > 0){ + let entries = result.data && result.data.entries + if(entries && entries.length > 0){ // 当前返回的子目录只有一条数据,且这条数据返回的是文件类型 - if(result.data.length === 1 && result.data[0].type === "file"){ + if(entries.length === 1 && entries[0].type === "file"){ this.setState({ - fileDetail:result.data, + fileDetail:entries, rootList:undefined, isSpin:false, subFileType:false @@ -181,10 +191,12 @@ class CoderRootDirectory extends Component{ }else{ this.setState({ fileDetail:undefined, - rootList:result.data, - isSpin:false + rootList:entries, + isSpin:false, + branchLastCommit:result.data.last_commit && result.data.last_commit.commit, + lastCommitAuthor:result.data.last_commit && (result.data.last_commit.author || (result.data.last_commit.commit && result.data.last_commit.commit.author)) }) - this.renderData(result.data) + this.renderData(entries); } } }).catch((error)=>{ @@ -251,29 +263,24 @@ class CoderRootDirectory extends Component{ // 选择分支 changeBranch=(value)=>{ - const { branchList } = this.props; - // let branchLastCommit = branchList && branchList.length >0 && branchList.filter(item=>item.name === value)[0]; - // if(branchLastCommit){ + this.setState({ + branch:value, + isSpin: true + }) + let { search } = this.props.history.location; + if(search && search.indexOf("?url=")>-1){ + let url =search.split("?url=")[1]; this.setState({ - branch:value, - // branchLastCommit, - isSpin: true + filePath:url }) - let { search } = this.props.history.location; - if(search && search.indexOf("?url=")>-1){ - let url =search.split("?url=")[1]; - this.setState({ - filePath:url - }) - this.getFileDetail(url, value); - }else{ - this.getProjectRoot( value ); - } - // } + this.getFileDetail(url, value); + }else{ + this.getProjectRoot( value ); + } } render(){ - const { rootList , branch ,filePath , fileDetail , subFileType , readMeContent, isSpin } = this.state; - const { branchLastCommit , isManager , isDeveloper , projectDetail } = this.props; + const { branchLastCommit , lastCommitAuthor , rootList , branch ,filePath , fileDetail , subFileType , readMeContent, isSpin , zip_url , tar_url} = this.state; + const { isManager , isDeveloper , projectDetail } = this.props; const { projectsId } = this.props.match.params; const columns = [ @@ -302,23 +309,26 @@ class CoderRootDirectory extends Component{ } ]; const title = () =>{ - if(branchLastCommit && branchLastCommit.last_commit){ + if(branchLastCommit){ return(
{ - branchLastCommit.author ? + lastCommitAuthor ? - - - {branchLastCommit.author.login} - - + { + lastCommitAuthor.login ? + + + {lastCommitAuthor.name} + : + {lastCommitAuthor.name} + } :"" } - {branchLastCommit.last_commit.message} - {branchLastCommit.last_commit.time_from_now} - {truncateCommitId(branchLastCommit.last_commit.id)} + {branchLastCommit.message} + {branchLastCommit.time_from_now} + {truncateCommitId(branchLastCommit.sha)}
) }else{ @@ -326,16 +336,12 @@ class CoderRootDirectory extends Component{ } } - const downloadUrl = ()=>{ - if(branchLastCommit && branchLastCommit.zip_url){ - return( - - ZIP - TAR.GZ - - ) - } - } + const downloadUrl = ()=>( + + {zip_url && ZIP } + {tar_url && TAR.GZ } + + ) const urlRoot = filePath === undefined ? '':`/${filePath}`; let array = filePath && filePath.split("/"); diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js index ccbf10ca..812f86e8 100644 --- a/src/forge/Main/Detail.js +++ b/src/forge/Main/Detail.js @@ -136,7 +136,6 @@ class Detail extends Component { author: undefined, branchs: undefined, branchList: undefined, - branchLastCommit: undefined, } } @@ -279,7 +278,6 @@ class Detail extends Component { this.setState({ branchList: result.data, branchs, - branchLastCommit: result.data[0], }) } }).catch((error) => { }) @@ -576,6 +574,11 @@ class Detail extends Component { (props) => () } > + () + } + > () diff --git a/src/forge/users/Infos.js b/src/forge/users/Infos.js index 00070b84..47342544 100644 --- a/src/forge/users/Infos.js +++ b/src/forge/users/Infos.js @@ -1,6 +1,6 @@ import React, { Component } from "react"; import { Link } from "react-router-dom"; -import { Avatar, Tag, Button, Pagination, Spin, Dropdown, Menu } from "antd"; +import { Avatar, Tag, Button } from "antd"; import FocusButton from "../UsersList/focus_button"; import axios from "axios"; @@ -22,6 +22,10 @@ const InfosIndex = Loadable({ loader: () => import("./InfosUser"), loading: Loading, }); +const Organize = Loadable({ + loader: () => import("./Team"), + loading: Loading, +}); class Infos extends Component { constructor(props) { @@ -170,6 +174,12 @@ class Infos extends Component {
+ { + return ; + }} + > { diff --git a/src/forge/users/Team.jsx b/src/forge/users/Team.jsx new file mode 100644 index 00000000..1a9c5ed9 --- /dev/null +++ b/src/forge/users/Team.jsx @@ -0,0 +1,8 @@ + +import React from 'react'; + +export default (()=>{ + return( +
cccc
+ ) +}) \ No newline at end of file diff --git a/src/modules/tpm/NewHeader.js b/src/modules/tpm/NewHeader.js index 4d89f6a9..f8649217 100644 --- a/src/modules/tpm/NewHeader.js +++ b/src/modules/tpm/NewHeader.js @@ -940,7 +940,7 @@ class NewHeader extends Component { { mygetHelmetapi2 && mygetHelmetapi2.new_course && mygetHelmetapi2.new_course.my_organ && -
  • 我的组织
  • +
  • 我的组织
  • }
  • this.educoderloginysl()}>退出