84 lines
2.3 KiB
JavaScript
84 lines
2.3 KiB
JavaScript
import React, { useEffect } from 'react';
|
||
import { Route, Switch } from 'react-router-dom';
|
||
import "./index.scss";
|
||
import Loadable from 'react-loadable';
|
||
import Loading from '../../Loading';
|
||
|
||
|
||
const List = Loadable({
|
||
loader: () => import('./List'),
|
||
loading: Loading,
|
||
})
|
||
const Data = Loadable({
|
||
loader: () => import('./data'),
|
||
loading: Loading,
|
||
})
|
||
// 跨平台代码同步服务
|
||
const Reposyncer = Loadable({
|
||
loader: () => import('./reposyncer'),
|
||
loading: Loading,
|
||
})
|
||
// 个人建站服务
|
||
const Pages = Loadable({
|
||
loader: () => import('./pages'),
|
||
loading: Loading,
|
||
})
|
||
// 开源度量工具
|
||
const Measurement = Loadable({
|
||
loader: () => import('./measurement'),
|
||
loading: Loading,
|
||
})
|
||
const MeasurementDetail = Loadable({
|
||
loader: () => import('./measurement/dimension'),
|
||
loading: Loading,
|
||
})
|
||
function ServerIndex(props){
|
||
const { projectDetail } = props;
|
||
const { owner , projectsId } = props.match.params;
|
||
|
||
useEffect(()=>{
|
||
// 非项目协作者不可进入服务tab (3397)
|
||
if(projectDetail && projectDetail.permission === ""){
|
||
props.history.push(`/${owner}/${projectsId}`);
|
||
}
|
||
}, [projectDetail])
|
||
|
||
return(
|
||
<div className="panels">
|
||
<Switch {...props}>
|
||
<Route path="/:owner/:projectsId/service/measurement/:type"
|
||
render={
|
||
(p) => (<MeasurementDetail {...props} {...p}/>)
|
||
}
|
||
></Route>
|
||
<Route path="/:owner/:projectsId/service/reposyncer"
|
||
render={
|
||
() => (<Reposyncer {...props}/>)
|
||
}
|
||
></Route>
|
||
<Route path="/:owner/:projectsId/service/measurement"
|
||
render={
|
||
(p) => (<Measurement {...props} {...p}/>)
|
||
}
|
||
></Route>
|
||
<Route path="/:owner/:projectsId/service/codeanalysis"
|
||
render={
|
||
() => (<Data {...props}/>)
|
||
}
|
||
></Route>
|
||
{/* 个人建站服务 */}
|
||
{projectDetail && projectDetail.web_site && projectDetail.author.type === "User" && <Route path="/:owner/:projectsId/service/pages"
|
||
render={
|
||
() => (<Pages {...props}/>)
|
||
}
|
||
></Route>}
|
||
<Route path="/:owner/:projectsId/service"
|
||
render={
|
||
() => (<List {...props}/>)
|
||
}
|
||
></Route>
|
||
</Switch>
|
||
</div>
|
||
)
|
||
}
|
||
export default ServerIndex; |