From e1b73f582a86868640743c8ed03f022c6a563845 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Mon, 31 May 2021 09:48:30 +0800 Subject: [PATCH] git cherry-pick a9285f37e709d9258971fcebf656a284e9387cbb --- src/forge/users/Echart/Calendar.jsx | 42 ++++----------- src/forge/users/Echart/Line.jsx | 22 ++++---- src/forge/users/GeneralView/Index.jsx | 76 ++++++++++++++++++++++----- 3 files changed, 84 insertions(+), 56 deletions(-) diff --git a/src/forge/users/Echart/Calendar.jsx b/src/forge/users/Echart/Calendar.jsx index 743a0a551..1fde52840 100644 --- a/src/forge/users/Echart/Calendar.jsx +++ b/src/forge/users/Echart/Calendar.jsx @@ -10,7 +10,7 @@ function Calendar({ userLogin , time , chooseTime }) { useEffect(()=>{ if(time){ let e,b = ""; - if(parseInt(time,0) === parseInt(moment().get('year'),0)){ + if(time === "0"){ let y = moment().get('year'); let m = moment().get('month'); let d = moment().get('date'); @@ -52,18 +52,9 @@ function Calendar({ userLogin , time , chooseTime }) { } function getVirtulData(data) { - var date = +echarts.number.parseDate(baginT); - var end = +echarts.number.parseDate(endT); - var dayTime = 3600 * 24 * 1000; var array = []; - for (var time = date; time <= end; time += dayTime) { - let stamp = timestampToTime(time); - let stampFilter = data.filter(i=>i.date === stamp); - if(stampFilter && stampFilter.length > 0){ - array.push([stampFilter[0].date,stampFilter[0].contributions]); - }else{ - array.push([stamp,0]); - } + for(var i=0;i +
) } export default Calendar; \ No newline at end of file diff --git a/src/forge/users/Echart/Line.jsx b/src/forge/users/Echart/Line.jsx index e8c9ac644..f7b515cd3 100644 --- a/src/forge/users/Echart/Line.jsx +++ b/src/forge/users/Echart/Line.jsx @@ -15,20 +15,22 @@ function Line({data}) { let option = { color: ["#f8e367", "#58c0f0", "#ff9e48"], title: { - show:false + text: '近期活动统计', + left: '3%', + top:"3%" }, tooltip: { trigger: 'axis' }, legend: { - data: ['提交数', '易修数', '合并请求数'], + data: ['commits', 'issues', 'pull_requests'], right: 'center', - bottom: '4%', + bottom: '0', }, grid: { left: '4%', - right: '5%', - bottom: '16%', + right: '4%', + bottom: '12%', containLabel: true }, toolbox: { @@ -51,23 +53,21 @@ function Line({data}) { }, axisTick:{ show:false - }, - minInterval:1, - splitNumber: 5, + } }, series: [ { - name: '提交数', + name: 'commits', type: 'line', data: d.commits_count }, { - name: '易修数', + name: 'issues', type: 'line', data: d.issues_count }, { - name: '合并请求数', + name: 'pull_requests', type: 'line', data: d.pull_requests_count } diff --git a/src/forge/users/GeneralView/Index.jsx b/src/forge/users/GeneralView/Index.jsx index ce1e43771..4d74fa5a1 100644 --- a/src/forge/users/GeneralView/Index.jsx +++ b/src/forge/users/GeneralView/Index.jsx @@ -13,12 +13,20 @@ import Calendar from '../Echart/Calendar'; import ConcentrateProject from './ConcentrateProject'; import Activity from './Activity'; import moment from 'moment'; +import Axios from 'axios'; +const { Option } = Select; const aLimit = 5; function Index(props) { const [ page , setPage ] = useState(1); const [ total , setTotal ] = useState(0); - const [ createYear , setCreateYear ] = useState(undefined); + const [ projectTrends , setProjectTrends ] = useState(undefined); + + const [ year , setYear ] = useState("0"); + const [ yearList , setYearList ] = useState(undefined); + const [ activityDate , setActivityDate ] = useState(undefined); + + const [ statisticData , setStatisticData ] = useState(undefined); const username = props.match.params.username; const current_user = props.current_user; @@ -27,21 +35,63 @@ function Index(props) { useEffect(()=>{ if(user){ let c = user.created_time && user.created_time.split("-")[0]; - setCreateYear(parseInt(c,0)); + let y = moment().get('year'); + let array = [] + for(var i = y ; i >= parseInt(c,0);i--){ + array.push(i); + } + setYearList(array); } },[user]) // 在贡献度日历表中选择一个时间 function chooseTime(data) { if(data){ - console.log(data); + setActivityDate(data[0]); } } - function renderYear(){ - let y = moment().get('year'); - for(var i = y ; i > createYear;i--){ - } + // 年份下拉框option + function renderYear(list){ + return list.map((i,k)=>{ + return( + + ) + }) + } + + useEffect(()=>{ + getActivity(); + },[activityDate,page]) + + // 获取动态列表 + function getActivity() { + const url = `/users/${username}/project_trends.json`; + Axios.get(url,{ + params:{ + date:activityDate, + limit:aLimit,page + } + }).then(result=>{ + if(result && result.data){ + setProjectTrends(result.data.project_trends); + setTotal(result.data.total_count); + } + }).catch(error=>{}) + } + + // 获取近期活动统计 + useEffect(()=>{ + getStatistics(); + },[]) + + function getStatistics() { + const url = `/users/${username}/statistics/activity.json`; + Axios.get(url).then(result=>{ + if(result && result.data){ + setStatisticData(result.data); + } + }).catch(error=>{}) } return( @@ -54,21 +104,21 @@ function Index(props) { />
- +
贡献度 - setYear(e)}> + + { yearList && renderYear(yearList) } - +
动态 - + { projectTrends && projectTrends.length > 0 && } { total > aLimit &&
setPage(p)}/>
}