开源度量-初版
This commit is contained in:
parent
36c7783109
commit
939dd0b59c
|
@ -80,7 +80,20 @@ module.exports = function(proxy, allowedHost) {
|
|||
disableDotRule: true,
|
||||
},
|
||||
public: allowedHost,
|
||||
proxy,
|
||||
proxy:{
|
||||
"/api/OSS_Health_Measuring":{
|
||||
target: 'http://60.205.224.11:8060',
|
||||
changeOrigin: true,
|
||||
},
|
||||
"/api/OHM_can_get":{
|
||||
target: 'http://60.205.224.11:8060',
|
||||
changeOrigin: true,
|
||||
},
|
||||
"/api":{
|
||||
target: "https://testforgeplus.trustie.net",
|
||||
changeOrigin: true,
|
||||
}
|
||||
},
|
||||
before(app) {
|
||||
// This lets us open files from the runtime error overlay.
|
||||
app.use(errorOverlayMiddleware());
|
||||
|
|
|
@ -200,7 +200,7 @@
|
|||
"eslintConfig": {
|
||||
"extends": "react-app"
|
||||
},
|
||||
"proxy": "http://60.205.224.11:8060",
|
||||
"proxy": "https://testforgeplus.trustie.net",
|
||||
"port": "3007",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.23.6",
|
||||
|
|
|
@ -46,11 +46,11 @@ function ServerIndex(props){
|
|||
return(
|
||||
<div className="panels">
|
||||
<Switch {...props}>
|
||||
<Route path="/:owner/:projectsId/service/measurement/:type"
|
||||
{/* <Route path="/:owner/:projectsId/service/measurement/:type"
|
||||
render={
|
||||
(p) => (<MeasurementDetail {...props} {...p}/>)
|
||||
}
|
||||
></Route>
|
||||
></Route> */}
|
||||
<Route path="/:owner/:projectsId/service/reposyncer"
|
||||
render={
|
||||
() => (<Reposyncer {...props}/>)
|
||||
|
|
|
@ -8,10 +8,9 @@ export function getMainScore(owner,repo) {
|
|||
});
|
||||
}
|
||||
|
||||
export function getCommit(params) {
|
||||
export function getChange(owner,repo) {
|
||||
return fetch({
|
||||
url: `/api/commits`,
|
||||
method: 'post',
|
||||
data:params
|
||||
url: `/api/OHM_can_get/${owner}/${repo}`,
|
||||
method: 'get'
|
||||
});
|
||||
}
|
||||
|
|
|
@ -20,7 +20,8 @@ function Radar({data , subCardIndex}){
|
|||
title: "指标名称",
|
||||
dataIndex: "name",
|
||||
render:(value)=>{
|
||||
return(<a className='color-blue'>{fieldData[value]}</a>)
|
||||
// return(<a className='color-blue'>{fieldData[value]}</a>)
|
||||
return fieldData[value]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
|
@ -17,6 +17,7 @@ function Stack(){
|
|||
tooltip: {
|
||||
trigger: 'axis'
|
||||
},
|
||||
color:['#5871FF',"#FFBE38"],
|
||||
// legend: {
|
||||
// data: ['Email', 'Union Ads']
|
||||
// },
|
||||
|
|
|
@ -46,7 +46,7 @@ export const fieldData = {
|
|||
}
|
||||
|
||||
export const scoreComp = (score)=>{
|
||||
let value = parseInt(score);
|
||||
let value = Math.round(score);
|
||||
return <span className="faYou" style={{color:value >= 80 ? "#466aff" : (value<80 && value>=60) ? "#E18419" :"#F70202"}}>{value}</span>
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,6 @@ import javaFetch from "./javaFetch";
|
|||
// let actionUrl = settings && settings.common.softbot;
|
||||
let actionUrl = 'http://60.205.224.11:8060';
|
||||
|
||||
const service = javaFetch(actionUrl);
|
||||
const service = javaFetch("");
|
||||
export const httpUrl = actionUrl;
|
||||
export default service;
|
|
@ -1,4 +1,4 @@
|
|||
import React, {useState, useEffect} from "react";
|
||||
import React, {useState, useEffect , useRef} from "react";
|
||||
import './index.scss';
|
||||
import Logo from '../img/logo4.png';
|
||||
import { Button , Spin } from 'antd';
|
||||
|
@ -10,14 +10,16 @@ import person from '../img/person.png';
|
|||
import Rader from './componet/radar';
|
||||
import Indicator from './componet/indicator';
|
||||
import { scoreComp , field , firstData , colorsField, secondData , subField , thirdData } from './config';
|
||||
import { getMainScore , getCommit } from './api';
|
||||
import res from './xiuos.json';
|
||||
import { getMainScore , getChange } from './api';
|
||||
// import res from './xiuos.json';
|
||||
|
||||
|
||||
function Index(props){
|
||||
const [cardIndex, setCardIndex] = useState(firstData[0]);
|
||||
const [ subCardIndex, setSubCardIndex] = useState(1);
|
||||
const { type , owner , projectsId } = props.match.params;
|
||||
const [ loading , setLoading ] = useState(false);
|
||||
|
||||
const { owner , projectsId } = props.match.params;
|
||||
const [ datas , setDatas ] = useState();
|
||||
const [ scoreNormal , setScoreNormal ] = useState();
|
||||
|
||||
|
@ -27,15 +29,56 @@ function Index(props){
|
|||
const [ subMenus , setSubMenus ] = useState([]);
|
||||
const [ subDatas , setSubDatas ] = useState([]);
|
||||
|
||||
const [ fieldDatas , setFieldDatas ] = useState([])
|
||||
|
||||
const [ fieldDatas , setFieldDatas ] = useState([]);
|
||||
let interval = undefined;
|
||||
const count = useRef();
|
||||
|
||||
useEffect(()=>{
|
||||
if(owner && projectsId){
|
||||
Init();
|
||||
checkData();
|
||||
}
|
||||
},[owner,projectsId])
|
||||
|
||||
// 根据接口判断是否已经生成数据报告
|
||||
async function checkData(){
|
||||
getChange(owner,projectsId).then(res=>{
|
||||
if(res && res.statue === "YES"){
|
||||
Init();
|
||||
clearInterval(interval);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 获取接口,整个页面数据都从此接口返回
|
||||
function Init(){
|
||||
getMainScore(owner,projectsId).then(res=>{
|
||||
if(res){
|
||||
setDatas(res);
|
||||
setScoreNormal(res && res.score);
|
||||
getlist(res && res.score);
|
||||
}
|
||||
})
|
||||
}
|
||||
// 开始体验,定时调用接口
|
||||
function getReportStart(){
|
||||
setLoading(true);
|
||||
count.current = 20;
|
||||
checkData();
|
||||
interval = setInterval(() => {
|
||||
if (count.current > 1) {
|
||||
let old = count.current;
|
||||
count.current = old - 1;
|
||||
console.log(count);
|
||||
checkData();
|
||||
} else {
|
||||
//倒计时结束,提示繁忙
|
||||
clearInterval(interval);
|
||||
setLoading(true);
|
||||
props.showNotification("当前服务繁忙,请稍后再试");
|
||||
}
|
||||
}, 30000)
|
||||
}
|
||||
|
||||
// 切换一级维度tab
|
||||
useEffect(()=>{
|
||||
if(score && cardIndex){
|
||||
|
@ -67,20 +110,6 @@ function Index(props){
|
|||
}
|
||||
},[cardIndex,score])
|
||||
|
||||
// 获取接口,整个页面数据都从此接口返回
|
||||
function Init(){
|
||||
getMainScore(owner,projectsId).then(res=>{
|
||||
if(res){
|
||||
}
|
||||
})
|
||||
// getCommit({owner,repo:projectsId}).then(res=>{
|
||||
|
||||
// })
|
||||
setDatas(res);
|
||||
console.log(res);
|
||||
setScoreNormal(res && res.score);
|
||||
getlist(res && res.score);
|
||||
}
|
||||
|
||||
// 将一级维度的值转为数组
|
||||
function getlist(values){
|
||||
|
@ -88,23 +117,24 @@ function Index(props){
|
|||
return {name:i,...values[field[i]],color:colorsField[i]};
|
||||
})
|
||||
setScore(d);
|
||||
let sn = d.reduce((sum, item) => parseInt(sum + parseInt(item.WeightedScore)), 0);
|
||||
let sn = d.reduce((sum, item) => Math.round(sum + Math.round(item.WeightedScore)), 0);
|
||||
setScoreNum(sn);
|
||||
}
|
||||
|
||||
|
||||
|
||||
return(
|
||||
<div>
|
||||
<div class="headBox font-16 pl15">开源软件健康度量服务</div>
|
||||
{
|
||||
false &&
|
||||
!datas &&
|
||||
<div class="nullStoreBox mt25">
|
||||
<img src={Logo} class="loBox mt50" />
|
||||
<p class="font-22 mt10">欢迎使用开源软件健康度量服务</p>
|
||||
<div class="introBox font-15">开源软件健康度量服务是一种代码库分析工具,旨在通过深入分析代码库的关键活动数据来评估开源项目的健康状况。该服务通过收集和分析代码库中的贡献者、提交(commit)、合并请求(pulrequest)、疑修(issue)等数据指标,为项目开发者、维护者提供了一个全面的项目健康报告</div>
|
||||
<div class="introBox font-15">开源软件健康度量服务是一种代码库分析工具,旨在通过深入分析代码库的关键活动数据来评估开源项目的健康状况。该服务通过收集和分析代码库中的贡献者、提交(commit)、合并请求(pullRequest)、疑修(issue)等数据指标,为项目开发者、维护者提供了一个全面的项目健康报告</div>
|
||||
<div class="borBox"></div>
|
||||
<Button type="primary" >开始体验</Button>
|
||||
<div><Spin /><span className="ml5 color-blue">服务报告生成中...</span></div>
|
||||
{!loading && <Button type="primary" onClick={()=>{getReportStart()}}>开始体验</Button> }
|
||||
{ loading && <div><Spin /><span className="ml5 color-blue">服务报告生成中...</span></div> }
|
||||
</div>
|
||||
}
|
||||
{
|
||||
|
@ -129,7 +159,7 @@ function Index(props){
|
|||
<ul className="scoreProgress">
|
||||
{
|
||||
<li>
|
||||
<span className="index">{parseInt(scoreNum)}</span>
|
||||
<span className="index">{Math.round(scoreNum)}</span>
|
||||
<span className="name">开源生态健康度</span>
|
||||
<div className="progress">
|
||||
{
|
||||
|
@ -138,17 +168,17 @@ function Index(props){
|
|||
})
|
||||
}
|
||||
</div>
|
||||
<span><span className="color-blue">{parseInt(scoreNum)}</span><span className="ml3 mr3">/</span>100</span>
|
||||
<span><span className="color-blue">{Math.round(scoreNum)}</span><span className="ml3 mr3">/</span>100</span>
|
||||
</li>
|
||||
}
|
||||
{
|
||||
score.map((i,k)=>{
|
||||
return(
|
||||
<li>
|
||||
<span className="index">{parseInt(i.WeightedScore)}</span>
|
||||
<span className="index">{Math.round(i.WeightedScore)}</span>
|
||||
<span className="name">{i.name}</span>
|
||||
<div className="progress"><span style={{width:`${i.WeightedScore}%`,backgroundColor:`${i.color}`}}></span></div>
|
||||
<span><span className="color-blue">{parseInt(i.WeightedScore)}</span><span className="ml3 mr3">/</span>{i.Weight*100}</span>
|
||||
<span><span className="color-blue">{Math.round(i.WeightedScore)}</span><span className="ml3 mr3">/</span>{i.Weight*100}</span>
|
||||
</li>
|
||||
)
|
||||
})
|
||||
|
|
|
@ -3,11 +3,11 @@ import { url, zoneUrl } from '../ssrUrl';
|
|||
|
||||
let baseUrl = `${url}/api`
|
||||
let baseZoneUrl = `${zoneUrl}/api`
|
||||
// if (__CLIENT__ ) {
|
||||
// let settings = localStorage.chromesetting && localStorage.chromesetting !== 'undefined' &&JSON.parse(localStorage.chromesetting);
|
||||
// baseUrl = settings && settings.common && settings.common.main_site_url ? `${settings.common.main_site_url}/api` : baseUrl;
|
||||
// baseZoneUrl = settings ? `${settings && settings.common.zone}/api` : `${zoneUrl}/api`;
|
||||
// }
|
||||
if (__CLIENT__ ) {
|
||||
let settings = localStorage.chromesetting && localStorage.chromesetting !== 'undefined' &&JSON.parse(localStorage.chromesetting);
|
||||
baseUrl = settings && settings.common && settings.common.main_site_url ? `${settings.common.main_site_url}/api` : baseUrl;
|
||||
baseZoneUrl = settings ? `${settings && settings.common.zone}/api` : `${zoneUrl}/api`;
|
||||
}
|
||||
console.log("__CLIENT__",__CLIENT__,baseUrl);
|
||||
|
||||
const axiosInstance = axios.create({
|
||||
|
|
Loading…
Reference in New Issue