diff --git a/src/forge/Information/Pages/homepage/component/specialProjects.jsx b/src/forge/Information/Pages/homepage/component/specialProjects.jsx index 41f59a0b7..1f1cec65c 100644 --- a/src/forge/Information/Pages/homepage/component/specialProjects.jsx +++ b/src/forge/Information/Pages/homepage/component/specialProjects.jsx @@ -1,5 +1,5 @@ import React , { useEffect, useState } from 'react'; -import { getSpecialProjectDetail, getSpecialProjectList, getSpecialProjectTypeList } from '../../../api'; +import { getSpecialProjectDetail, getSpecialProjectList, getSpecialProjectTypeList, getImage } from '../../../api'; import { Col, Divider, Row, Tag } from 'antd'; import Nodata from '../../../../Nodata'; import '../index.scss'; @@ -128,7 +128,7 @@ function SpecialProjects({data, subTitle}) { > {index+1}
{item.name}
-
摘要:{item.description}
+ { item.responsibleCompany &&
承担单位:{item.responsibleCompany}
}

{item.projectLeader}

); @@ -142,7 +142,7 @@ function SpecialProjects({data, subTitle}) { if (currentRow.some(item => item.key === selectedItem?.toString())) { const {detail, PAPER=[], PATENT=[], PROJECT=[]} = projectDetail; - const {name, projectLeader, awards, description} = detail || {}; + const {name, projectLeader, awards, introductionImageIdentifier} = detail || {}; rendered.push(
@@ -150,7 +150,7 @@ function SpecialProjects({data, subTitle}) { 项目{name}

项目负责人:{projectLeader}

{ awards &&

奖项:{awards}

} -

摘要:{description}

+ { introductionImageIdentifier &&

简介:

}
{list("论文", "论文标题", "作者", "单位", PAPER)} diff --git a/src/forge/Information/Pages/homepage/index.scss b/src/forge/Information/Pages/homepage/index.scss index 860cb2729..9423966bb 100644 --- a/src/forge/Information/Pages/homepage/index.scss +++ b/src/forge/Information/Pages/homepage/index.scss @@ -399,6 +399,9 @@ margin-bottom: 35px; cursor: pointer; transition: all 0.3s ease; + .breadk-all { + word-break: break-all; + } .s_p_d_order{ width: 36px; height: 30px; @@ -461,6 +464,12 @@ background: #FFFFFF; box-shadow: 0px 0px 10px 1px rgba(88,116,255,0.18); border-radius: 4px; + .intro { + display: flex; + } + .intro-img { + width: 200px; + } } .leftBox{ position: relative; diff --git a/src/forge/Information/api.js b/src/forge/Information/api.js index 63d577eb9..6d2105c28 100644 --- a/src/forge/Information/api.js +++ b/src/forge/Information/api.js @@ -1,5 +1,9 @@ -import fetch from './fetch'; +import fetch, { httpUrl } from './fetch'; + +export function getImage(identifier) { + return `${ httpUrl }/file/open/downloadByIdentifier/${ identifier }` +} /**入口页接口***/ export function getMainInfos(deptId, params) { diff --git a/src/forge/Server/measurement/componet/dataStack.jsx b/src/forge/Server/measurement/componet/dataStack.jsx index 24fc02366..709964e54 100644 --- a/src/forge/Server/measurement/componet/dataStack.jsx +++ b/src/forge/Server/measurement/componet/dataStack.jsx @@ -9,10 +9,10 @@ function DataStack({ data }){ const [ userDrop , setUserDrop ] = useState([]); const [ userValue , setUserValue ] = useState([]); - useEffect(()=>{ if(data){ let drop = Object.keys(data); + console.log("---",drop); setUserDrop(drop); setUserValue(drop[0]); } @@ -45,7 +45,7 @@ function DataStack({ data }){
} - +
) } diff --git a/src/forge/Server/measurement/componet/indicator.jsx b/src/forge/Server/measurement/componet/indicator.jsx index 4f44c144b..081f904fa 100644 --- a/src/forge/Server/measurement/componet/indicator.jsx +++ b/src/forge/Server/measurement/componet/indicator.jsx @@ -30,7 +30,7 @@ function Indicator({owner , projectsId , data , subCardIndex}){ dataIndex: "InitialScore", align:"center", render:(v)=>{ - return `${parseInt(v)}` + return `${Math.round(v)}` } }, { @@ -38,7 +38,7 @@ function Indicator({owner , projectsId , data , subCardIndex}){ align:"center", dataIndex: "Weight", render:(v)=>{ - return `${parseFloat(v*100).toFixed(1)}%` + return `${v ? parseFloat(v*100).toFixed(1) : 0}%` } }, ] diff --git a/src/forge/Server/measurement/componet/stack.jsx b/src/forge/Server/measurement/componet/stack.jsx index 79ff65780..67a650543 100644 --- a/src/forge/Server/measurement/componet/stack.jsx +++ b/src/forge/Server/measurement/componet/stack.jsx @@ -40,7 +40,7 @@ function Stack({name,data , type}){ if(list && list.length > 0){ let values = []; const monthList = list.map(obj => obj.month); - values = list.map(obj => obj[type] || obj["count"] || obj['commits_number'] || 0); + values = list.map(obj => Math.round(obj[type] || obj["count"] || obj['commits_number'] || 0)); Init(monthList,values); } },[list]) diff --git a/src/forge/Server/measurement/componet/stackImg.jsx b/src/forge/Server/measurement/componet/stackImg.jsx index 0a3b12d3f..892107186 100644 --- a/src/forge/Server/measurement/componet/stackImg.jsx +++ b/src/forge/Server/measurement/componet/stackImg.jsx @@ -3,12 +3,12 @@ import * as echarts from 'echarts'; function StackImg({x,values,title,id}){ useEffect(()=>{ - if(x && values && x.length>0 && values.length>0){ + if(x && values && x.length>0 && values.length>0 && id){ Init(x,values) } - },[x,values]) + },[x,values,id]) - function Init(){ + function Init(xData,data){ var huan_val = document.getElementById(id); var myEcharts = echarts.init(huan_val); let option = { @@ -42,12 +42,12 @@ function StackImg({x,values,title,id}){ xAxis: { type: 'category', boundaryGap: false, - data: x + data: xData }, yAxis: { type: 'value' }, - series: values + series: data }; myEcharts.setOption(option); } diff --git a/src/forge/Server/measurement/config.js b/src/forge/Server/measurement/config.js index 41d1f4729..dc264cca6 100644 --- a/src/forge/Server/measurement/config.js +++ b/src/forge/Server/measurement/config.js @@ -17,9 +17,9 @@ export const subField={ 项目影响:"influence" } export const thirdData = { - developmentEfficiency:["PRNum","PRTime","commitNum","issueTime"], + developmentEfficiency:["PRNum","PRTime","commitNum","issueTime","individualHistory"], developmentQuality:["commitMessageQuality","issueNum"], - individual:["individualHistory","individualLoss","individualNum","longTermIndividualNum"], + individual:["individualLoss","individualNum","longTermIndividualNum"], company:["companyLead","companyLoss","companyNum","longTermCompanyNum"], influence:["branchNum","browseNum","forkNum","praiseNum","storeNum"] } @@ -30,10 +30,10 @@ export const fieldData = { issueTime:"Issue处理间隔", commitMessageQuality:"Commit message质量", issueNum:"Issue数量", - individualHistory:"所有个体开发者贡献历史", - individualLoss:"个体贡献者流失预测", - individualNum:"个体贡献者数量", - longTermIndividualNum:"长期个体贡献者数量", + individualHistory:"项目活跃度", + individualLoss:"长期贡献者稳定性", + individualNum:"活跃开发者占比", + longTermIndividualNum:"长期贡献者占比", companyLead:"公司主导", companyLoss:"公司贡献者流失预测", companyNum:"公司贡献者数量", @@ -51,12 +51,12 @@ export const detailByName={ Issue数量:{desc:"通过分析项目每月提交的Issue数量对Issue数量指标进行度量"}, Commit数量:{desc:"通过分析项目每月提交的三种Commit数量对Commit数量指标进行度量"}, PR数量:{desc:"通过分析项目每月提交的PR数量对PR数量指标进行度量"}, - PR处理间隔:{desc:"通过分析每个月新增PR的平均处理间隔对PR处理间隔指标进行度量"}, - Issue处理间隔:{desc:"通过分析每个月新增Issue的平均处理间隔对Issue处理间隔指标进行度量"}, - 个体贡献者数量:{desc:"通过分析每个月活跃的个体贡献者数量对个体贡献者数量指标进行度量"}, - 所有个体开发者贡献历史:{desc:"不同类型的贡献者每月/周给master分支的贡献次数",month:true,user_login:true}, - 长期个体贡献者数量:{desc:"通过分析每个月活跃的长期个体贡献者数量对长期个体贡献者数量指标进行度量"}, - 个体贡献者流失预测:{desc:"通过分析具体的即将流失的长期贡献者流失概率对个体贡献者流失预测指标进行度量",bar:true}, + PR处理间隔:{desc:"通过分析每个月新增PR的平均处理间隔对PR处理间隔(小时)指标进行度量"}, + Issue处理间隔:{desc:"通过分析每个月新增Issue的平均处理间隔对Issue处理间隔(小时)指标进行度量"}, + 活跃开发者占比:{desc:"通过分析每个月活跃的活跃开发者占比数量对活跃开发者指标进行度量"}, + 项目活跃度:{desc:"不同类型的贡献者每月/周给master分支的贡献次数",month:true,user_login:true}, + 长期贡献者占比:{desc:"通过分析每个月活跃的长期个体贡献者数量对长期个体贡献者数量指标进行度量"}, + 长期贡献者稳定性:{desc:"通过分析具体的即将流失的长期贡献者流失概率对个体贡献者稳定性指标进行度量",bar:true}, 公司贡献者数量:{desc:"通过分析每月做出了贡献的公司贡献者数量对公司贡献者数量指标进行度量"}, 长期公司贡献者数量:{desc:"通过分析每月的长期对项目做出贡献的公司贡献者数量对长期公司贡献者数量指标进行度量"}, 公司主导:{desc:"从每月公司贡献占比、每月公司总贡献、每月公司贡献最高模块中总贡献、公司总提交数四个方面对公司主导指标进行度量",radar:true}, diff --git a/src/forge/Server/measurement/dimension.jsx b/src/forge/Server/measurement/dimension.jsx index 8a36d2495..4b24dea60 100644 --- a/src/forge/Server/measurement/dimension.jsx +++ b/src/forge/Server/measurement/dimension.jsx @@ -11,10 +11,10 @@ import Nodata from '../../Nodata'; const dimensionData = { 开发质量: ['Commit message质量', 'Issue数量'], - 开发效率: ['PR数量', 'PR处理间隔', 'Issue处理间隔', 'Commit数量'], - 个体开发者:['个体贡献者数量','所有个体开发者贡献历史','长期个体贡献者数量','个体贡献者流失预测'], - 商业公司:['公司贡献者数量','长期公司贡献者数量','公司主导','公司贡献者流失预测'], - 项目影响:['浏览次数','点赞次数','关注数量','分支数量','Fork次数'] + 开发效率: ['PR数量', 'PR处理间隔', 'Commit数量', 'Issue处理间隔','项目活跃度'], + 个体开发者:['活跃开发者占比','长期贡献者占比','长期贡献者稳定性'], + 商业公司:['公司主导','公司贡献者流失预测','公司贡献者数量','长期公司贡献者数量'], + 项目影响:['分支数量','浏览次数','Fork次数','点赞次数','关注数量'] }; function Dimension(props){ diff --git a/src/forge/Server/measurement/index.jsx b/src/forge/Server/measurement/index.jsx index 8cc3e0d41..e474af9c0 100644 --- a/src/forge/Server/measurement/index.jsx +++ b/src/forge/Server/measurement/index.jsx @@ -118,10 +118,12 @@ function Index(props){ for(var i =0;i{ - return {name:j,...l[j]}; - }) - listData = listData.concat(items); + if(d){ + let items = d.map(j=>{ + return {name:j,...l[j],InitialScore:l[j] ? Math.round(l[j].InitialScore) : 0}; + }) + listData = listData.concat(items); + } } setFieldDatas(listData); } @@ -138,7 +140,7 @@ function Index(props){ let sn = d.reduce((sum, item) => Math.round(sum + Math.round(item.WeightedScore)), 0); setScoreNum(sn); } - + console.log(subDatas); return( @@ -218,8 +220,8 @@ function Index(props){ subDatas &&

- {cardIndex}总分:{scoreComp(subDatas.InitialScore)} - {cardIndex}加权得分:{scoreComp(subDatas.WeightedScore)} + {cardIndex}总分:{scoreComp(subDatas.InitialScore)}/100 + {cardIndex}加权得分:{scoreComp(subDatas.WeightedScore)}/{subDatas.Weight*100}

    @@ -231,7 +233,7 @@ function Index(props){
  • setSubCardIndex(i)}>
    {i} - 效率总分:{scoreComp(detail ? detail.InitialScore : subDatas.InitialScore)} + {i}总分:{scoreComp(detail ? detail.InitialScore : subDatas.InitialScore)} 健康度权重比:{(detail ? detail.Weight : subDatas.Weight) *100}%
    diff --git a/src/forge/Server/measurement/index.scss b/src/forge/Server/measurement/index.scss index f63e9c0df..1b2cd9e2d 100644 --- a/src/forge/Server/measurement/index.scss +++ b/src/forge/Server/measurement/index.scss @@ -178,9 +178,6 @@ span{ font-weight: 400; font-size: 26px; - &:first-child{ - margin-right: 40px; - } } } .typeEchart{