-
-
+
+
{user && user.user_identity && (
{user && user.user_identity}
@@ -185,7 +212,6 @@ class Infos extends Component {
{user && user.username}
-
{user && current_user && user.login === current_user.login && (
@@ -236,161 +262,169 @@ class Infos extends Component {
- {current_user && user && user.login === current_user.login ? (
-
-
-
- this.undo_link()}>
-
-
- 待办事项
-
-
- {undo_events}
-
-
-
-
+ {/*
+
+
+ this.undo_link()}>
+
+
+ 待办事项
+
+
+ {undo_events}
+
+
+
- ):""}
-
+
+
+
+
+ - this.change_project_type(undefined)}>
+
+ 项目类型
+
+
+ - this.change_project_type("common")}>
+
+ 开源托管项目
+
+ {user && user.common_projects_count}
+
+
+
+ - this.change_project_type("mirror")}>
+
+ 开源镜像项目
+
+ {user && user.mirror_projects_count}
+
+
+
+ - this.change_project_type("sync_mirror")}>
+
+ 镜像托管项目
+
+ {user && user.sync_mirror_projects_count}
+
+
+
+
+
+
- - this.change_project_type(undefined)}>
-
- 项目类型
+
-
+
+ DevOps工作流
- - this.change_project_type("common")}>
+
- this.change_devops_type("CIService")}>
- 开源托管项目
-
- {user && user.common_projects_count}
-
-
-
- - this.change_project_type("mirror")}>
-
- 开源镜像项目
-
- {user && user.mirror_projects_count}
-
-
-
- - this.change_project_type("sync_mirror")}>
-
- 镜像托管项目
-
- {user && user.sync_mirror_projects_count}
-
+ CI服务
- {
- current_user && current_user.login && current_user.login === username &&
-
- }
-
-
-
- this.organize_link()} >
-
-
- 组织
-
-
- {user && user.user_org_count}
-
-
-
-
+
+
+
+ this.organize_link()} >
+
+
+ 组织
+
+
+ {user && user.user_org_count}
+
+
+
+
*/}
+
{user && (
-
-
+
+ {
+ return ;
+ }}
+ >
{
- return ;
- }}
- >
- {
- return ;
- }}
- >
- {
- return ;
- }}
- >
- {
- return ;
- }}
- >
- {
- return ;
- }}
- >
- {
- return ;
- }}
- >
- {
- return ;
- }}
- >
- {
- return ;
- }}
- >
- {
- return ;
- }}
- >
-
-
+ path="/users/:username/notice"
+ render={() => {
+ return
;
+ }}
+ >
+ {
+ return ;
+ }}
+ >
+ {
+ return ;
+ }}
+ >
+ {
+ return ;
+ }}
+ >
+ {
+ return ;
+ }}
+ >
+ {
+ return ;
+ }}
+ >
+ {
+ return ;
+ }}
+ >
+ {
+ return ;
+ }}
+ >
+ {
+ return ;
+ }}
+ >
+
)}
-
+
);
diff --git a/src/forge/users/InfosUser.js b/src/forge/users/InfosUser.js
index 3a185a786..b37df4b75 100644
--- a/src/forge/users/InfosUser.js
+++ b/src/forge/users/InfosUser.js
@@ -100,9 +100,6 @@ class InfosUser extends Component {
const {is_public} = this.state
const new_is_public = is_public === check_is_public ? undefined : check_is_public
- // this.setState({
- // is_public: new_is_public
- // })
this.state.is_public = new_is_public
this.get_projects(new_is_public);
}
diff --git a/src/forge/users/Statistics/Index.jsx b/src/forge/users/Statistics/Index.jsx
new file mode 100644
index 000000000..3b20ea1ea
--- /dev/null
+++ b/src/forge/users/Statistics/Index.jsx
@@ -0,0 +1,21 @@
+import React from 'react';
+import './Index.scss';
+import 'echarts/lib/component/tooltip';
+import 'echarts/lib/component/title';
+import 'echarts/lib/component/legend'
+import 'echarts/lib/component/markPoint';
+
+import Pie from '../Echart/Pie';
+import Cloud from '../Echart/Cloud';
+import Radar from '../Echart/Radar';
+
+function Index() {
+ return(
+
+ )
+}
+export default Index;
\ No newline at end of file
diff --git a/src/forge/users/Statistics/Index.scss b/src/forge/users/Statistics/Index.scss
new file mode 100644
index 000000000..e69de29bb
From d41dce26b124f4fa506efb81dd11b476c7790e52 Mon Sep 17 00:00:00 2001
From: caishi <1149225589@qq.com>
Date: Fri, 28 May 2021 17:02:54 +0800
Subject: [PATCH 02/13] year
---
src/forge/users/GeneralView/Index.jsx | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/src/forge/users/GeneralView/Index.jsx b/src/forge/users/GeneralView/Index.jsx
index 5cf060322..600b97399 100644
--- a/src/forge/users/GeneralView/Index.jsx
+++ b/src/forge/users/GeneralView/Index.jsx
@@ -1,4 +1,4 @@
-import React, { useState } from 'react';
+import React, { useEffect, useState } from 'react';
import './Index.scss';
import 'echarts/lib/component/tooltip';
import 'echarts/lib/component/title';
@@ -12,13 +12,24 @@ import Line from '../Echart/Line';
import Calendar from '../Echart/Calendar';
import ConcentrateProject from './ConcentrateProject';
import Activity from './Activity';
+import moment from 'moment';
const aLimit = 5;
function Index(props) {
const [ page , setPage ] = useState(1);
const [ total , setTotal ] = useState(0);
+ const [ createYear , setCreateYear ] = useState(undefined);
+
const username = props.match.params.username;
const current_user = props.current_user;
+ const user = props.user;
+
+ useEffect(()=>{
+ if(user){
+ let c = user.created_time && user.created_time.split("-")[0];
+ setCreateYear(parseInt(c,0));
+ }
+ },[user])
// 在贡献度日历表中选择一个时间
function chooseTime(data) {
@@ -27,6 +38,12 @@ function Index(props) {
}
}
+ function renderYear(){
+ let y = moment().get('year');
+ for(var i = y ; i > createYear;i--){
+ }
+ }
+
return(
@@ -39,7 +56,8 @@ function Index(props) {
贡献度
From a9285f37e709d9258971fcebf656a284e9387cbb Mon Sep 17 00:00:00 2001
From: caishi <1149225589@qq.com>
Date: Mon, 31 May 2021 09:48:30 +0800
Subject: [PATCH 03/13] =?UTF-8?q?=E6=A6=82=E8=A7=88=E9=A1=B5=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE=E7=BB=91=E5=AE=9A=E5=AE=8C=E6=88=90=EF=BC=8C=E5=8F=AA?=
=?UTF-8?q?=E5=B7=AE=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1=E9=A1=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/forge/users/Echart/Calendar.jsx | 21 +++---
src/forge/users/Echart/Line.jsx | 88 ++++++++++--------------
src/forge/users/GeneralView/Activity.jsx | 32 +++++----
src/forge/users/GeneralView/Index.jsx | 76 ++++++++++++++++----
src/forge/users/GeneralView/Index.scss | 3 +
5 files changed, 131 insertions(+), 89 deletions(-)
diff --git a/src/forge/users/Echart/Calendar.jsx b/src/forge/users/Echart/Calendar.jsx
index 811a3ae45..8190d32e5 100644
--- a/src/forge/users/Echart/Calendar.jsx
+++ b/src/forge/users/Echart/Calendar.jsx
@@ -9,16 +9,17 @@ function Calendar({ userLogin , time , chooseTime }) {
useEffect(()=>{
if(time){
- let e = `${time}-12-31`;
- let b = `${time}-01-01`;
- setEndT(e);
- setBaginT(b);
- }else if(time === ""){
- let y = moment().get('year');
- let m = moment().get('month');
- let d = moment().get('date');
- let e = `${y}-${m+1}-${d}`;
- let b = `${y-1}-${m+1}-${d}`;
+ let e,b = "";
+ if(time === "0"){
+ let y = moment().get('year');
+ let m = moment().get('month');
+ let d = moment().get('date');
+ e = `${y}-${m+1}-${d}`;
+ b = `${y-1}-${m+1}-${d}`;
+ }else{
+ e = `${time}-12-31`;
+ b = `${time}-01-01`;
+ }
setEndT(e);
setBaginT(b);
}
diff --git a/src/forge/users/Echart/Line.jsx b/src/forge/users/Echart/Line.jsx
index 20ea7590e..f7b515cd3 100644
--- a/src/forge/users/Echart/Line.jsx
+++ b/src/forge/users/Echart/Line.jsx
@@ -2,21 +2,18 @@ import React ,{ useEffect } from 'react';
import * as echarts from 'echarts';
function Line({data}) {
- useEffect(()=>{
- Init();
- },[])
useEffect(()=>{
if(data){
- Init();
+ Init(data);
}
},[data])
- function Init() {
+ function Init(d) {
var huan_val = document.getElementById("Line");
var myEcharts = echarts.init(huan_val);
let option = {
- color: ["#f8e367", "#99dfff", "#58c0f0", "#5ea6ff", "#ff9e48", "#bcbcbc"],
+ color: ["#f8e367", "#58c0f0", "#ff9e48"],
title: {
text: '近期活动统计',
left: '3%',
@@ -26,7 +23,7 @@ function Line({data}) {
trigger: 'axis'
},
legend: {
- data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎'],
+ data: ['commits', 'issues', 'pull_requests'],
right: 'center',
bottom: '0',
},
@@ -37,58 +34,43 @@ function Line({data}) {
containLabel: true
},
toolbox: {
- feature: {
- // saveAsImage: {}
- }
+ feature: {
+ // saveAsImage: {}
+ }
},
xAxis: {
- type: 'category',
- boundaryGap: false,
- data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
- axisTick:{
- show:false
- }
+ type: 'category',
+ boundaryGap: false,
+ data: d.dates,
+ axisTick:{
+ show:false
+ }
},
yAxis: {
- type: 'value',
- axisLine:{
- show:false
- },
- axisTick:{
- show:false
- }
+ type: 'value',
+ axisLine:{
+ show:false
+ },
+ axisTick:{
+ show:false
+ }
},
series: [
- {
- name: '邮件营销',
- type: 'line',
- stack: '总量',
- data: [120, 132, 101, 134, 90, 230, 210]
- },
- {
- name: '联盟广告',
- type: 'line',
- stack: '总量',
- data: [220, 182, 191, 234, 290, 330, 310]
- },
- {
- name: '视频广告',
- type: 'line',
- stack: '总量',
- data: [150, 232, 201, 154, 190, 330, 410]
- },
- {
- name: '直接访问',
- type: 'line',
- stack: '总量',
- data: [320, 332, 301, 334, 390, 330, 320]
- },
- {
- name: '搜索引擎',
- type: 'line',
- stack: '总量',
- data: [820, 932, 901, 934, 1290, 1330, 1320]
- }
+ {
+ name: 'commits',
+ type: 'line',
+ data: d.commits_count
+ },
+ {
+ name: 'issues',
+ type: 'line',
+ data: d.issues_count
+ },
+ {
+ name: 'pull_requests',
+ type: 'line',
+ data: d.pull_requests_count
+ }
]
};
myEcharts.setOption(option);
diff --git a/src/forge/users/GeneralView/Activity.jsx b/src/forge/users/GeneralView/Activity.jsx
index 90c7e5243..ce09e885f 100644
--- a/src/forge/users/GeneralView/Activity.jsx
+++ b/src/forge/users/GeneralView/Activity.jsx
@@ -4,21 +4,27 @@ import { AlignCenter } from '../../Component/layout';
import { TagInfo } from '../../Utils/TagColor';
import { getImageUrl } from 'educoder';
-function Activity() {
+function Activity({list}) {
return(
- -
-
-
-
- 蔡世
- 1小时前
- {TagInfo("立刻","")}
- 已关闭
-
-
更新了问题状态:动态详情动态详情动态详情动态详情动态详情
-
-
+ {
+ list.map((i,k)=>{
+ return(
+ -
+
+
+
+ {i.user_name}
+ {i.action_time}
+ {i.priority && TagInfo(`${i.priority}`,"")}
+ {i.issue_status && {i.issue_status} }
+
+
{i.action_type}:{i.name}
+
+
+ )
+ })
+ }
)
}
diff --git a/src/forge/users/GeneralView/Index.jsx b/src/forge/users/GeneralView/Index.jsx
index 600b97399..c12f1510e 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(
@@ -50,21 +100,21 @@ function Index(props) {
-
+
贡献度
-
-
+
动态
-
+ { projectTrends && projectTrends.length > 0 &&
}
{ total > aLimit && }
diff --git a/src/forge/users/GeneralView/Index.scss b/src/forge/users/GeneralView/Index.scss
index 4a7659ee5..9a909f662 100644
--- a/src/forge/users/GeneralView/Index.scss
+++ b/src/forge/users/GeneralView/Index.scss
@@ -123,6 +123,9 @@
line-height: 20px;
}
}
+ &:last-child{
+ border-bottom:none;
+ }
}
}
}
\ No newline at end of file
From 1432afebfd1e2e8fc5df3cb9e0d2b808995b6a4a Mon Sep 17 00:00:00 2001
From: caishi <1149225589@qq.com>
Date: Mon, 31 May 2021 17:44:30 +0800
Subject: [PATCH 04/13] =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83?=
=?UTF-8?q?=E6=95=B4=E4=BD=93=E4=B8=8A=E7=BA=BF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package-lock.json | 5 +
package.json | 1 +
src/forge/Main/Index.scss | 2 -
src/forge/users/Echart/Cloud.jsx | 14 +-
src/forge/users/Echart/Pie.jsx | 24 ++--
src/forge/users/Echart/Radar.jsx | 39 +++---
src/forge/users/Echart/Round.jsx | 26 ++++
src/forge/users/Echart/style.scss | 69 ++++++++++
src/forge/users/Statistics/Index.jsx | 181 +++++++++++++++++++++++++-
src/forge/users/Statistics/Index.scss | 64 +++++++++
10 files changed, 376 insertions(+), 49 deletions(-)
create mode 100644 src/forge/users/Echart/Round.jsx
create mode 100644 src/forge/users/Echart/style.scss
diff --git a/package-lock.json b/package-lock.json
index 6f4ada7df..267c0020c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5075,6 +5075,11 @@
"zrender": "4.3.2"
}
},
+ "echarts-wordcloud": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/echarts-wordcloud/download/echarts-wordcloud-2.0.0.tgz?cache=0&sync_timestamp=1610779172014&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fecharts-wordcloud%2Fdownload%2Fecharts-wordcloud-2.0.0.tgz",
+ "integrity": "sha1-Uu+BeJWAH/6emd0brKt2hrLewEo="
+ },
"editor.md": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/editor.md/-/editor.md-1.5.0.tgz",
diff --git a/package.json b/package.json
index f69e3af90..2e61175be 100644
--- a/package.json
+++ b/package.json
@@ -31,6 +31,7 @@
"dotenv": "4.0.0",
"dotenv-expand": "4.2.0",
"echarts": "^4.9.0",
+ "echarts-wordcloud": "^2.0.0",
"editor.md": "^1.5.0",
"eslint": "4.10.0",
"eslint-config-react-app": "^2.1.0",
diff --git a/src/forge/Main/Index.scss b/src/forge/Main/Index.scss
index 2a207dfdd..ef3cbc0f5 100644
--- a/src/forge/Main/Index.scss
+++ b/src/forge/Main/Index.scss
@@ -161,9 +161,7 @@
height: 7px;
margin-top: 12px;
span{
- border-left: 1px solid #fff;
&:first-child{
- border-left: none;
border-radius: 10px 0px 0px 10px;
}
&:last-child{
diff --git a/src/forge/users/Echart/Cloud.jsx b/src/forge/users/Echart/Cloud.jsx
index 3b53108a1..778b30e74 100644
--- a/src/forge/users/Echart/Cloud.jsx
+++ b/src/forge/users/Echart/Cloud.jsx
@@ -4,12 +4,14 @@ import Js2WordCloud from 'js2wordcloud/dist/js2wordcloud.js'
function Cloud({data}) {
useEffect(()=>{
- optionChart1();
- },[])
+ if(data){
+ optionChart1(data);
+ }
+ },[data])
- function optionChart1(){
+ function optionChart1(d){
var div = new Js2WordCloud(document.getElementById('cloud'))
- let textList=['服务', '细致', '意识', '踏实','开发', '反馈']
+ let textList= d.categories;
let cyList=[]
for(let i=0;i
+
)
}
export default Cloud;
\ No newline at end of file
diff --git a/src/forge/users/Echart/Pie.jsx b/src/forge/users/Echart/Pie.jsx
index 460d7f001..d5489b981 100644
--- a/src/forge/users/Echart/Pie.jsx
+++ b/src/forge/users/Echart/Pie.jsx
@@ -3,32 +3,27 @@ import echarts from 'echarts/lib/echarts';
import 'echarts/lib/chart/pie';
function Pie({data}) {
- useEffect(()=>{
- Init();
- },[])
useEffect(()=>{
if(data){
- Init();
+ Init(data);
}
},[data])
- function Init() {
+ function Init(d) {
var huan_val = document.getElementById("Pie");
var chart = echarts.init(huan_val);
let option = {
- color: ["#f8e367", "#99dfff", "#58c0f0", "#5ea6ff", "#ff9e48", "#bcbcbc"],
+ color: ["#f8e367", "#5ea6ff", "#ff9e48", "#99dfff"],
title: {
- text: '角色定位',
- top:"5%",
- left:"3%"
+ show:false
},
tooltip: {
trigger: 'item'
},
legend: {
top: '5%',
- right: '3%'
+ right: 'center'
},
series: [
{
@@ -56,11 +51,10 @@ function Pie({data}) {
show: false
},
data: [
- {value: 1048, name: '搜索引擎'},
- {value: 735, name: '直接访问'},
- {value: 580, name: '邮件营销'},
- {value: 484, name: '联盟广告'},
- {value: 300, name: '视频广告'}
+ {value: d.developer && d.developer.count, name: '开发者'},
+ {value: d.manager && d.manager.count, name: '管理员'},
+ {value: d.owner && d.owner.count, name: '创建者'},
+ {value: d.reporter && d.reporter.count, name: '报告者'}
]
}
]
diff --git a/src/forge/users/Echart/Radar.jsx b/src/forge/users/Echart/Radar.jsx
index f427442ed..354309589 100644
--- a/src/forge/users/Echart/Radar.jsx
+++ b/src/forge/users/Echart/Radar.jsx
@@ -3,54 +3,51 @@ import echarts from 'echarts/lib/echarts'
import 'echarts/lib/chart/radar';
function Radar({data}) {
- useEffect(()=>{
- Init();
- },[])
useEffect(()=>{
if(data){
- Init();
+ Init(data);
}
},[data])
- function Init() {
+ function Init(d) {
var huan_val = document.getElementById("radar");
var myEcharts = echarts.init(huan_val);
let option = {
color: ["#f8e367", "#99dfff", "#58c0f0", "#5ea6ff", "#ff9e48", "#bcbcbc"],
title: {
- text: '开发能力',
- top:"0",
- left:"3%"
+ show:false
},
legend: {
- data: ['预算分配', '实际开销'],
- top:"0",
+ data: ['个人能力(personal)', '社区平均(average)'],
+ top:"3%",
right:"center"
},
+ tooltip: {
+ trigger: 'item'
+ },
radar: {
// shape: 'circle',
indicator: [
- { name: '销售', max: 6500},
- { name: '管理', max: 16000},
- { name: '信息技术', max: 30000},
- { name: '客服', max: 38000},
- { name: '研发', max: 52000},
- { name: '市场', max: 25000}
+ { name: '影响力', max: 100},
+ { name: '贡献度', max: 100},
+ { name: '活跃度', max: 100},
+ { name: '项目经验', max: 100},
+ { name: '语言能力', max: 100},
],
center:["50%","55%"]
},
series: [{
- name: '预算 vs 开销',
+ name: '',
type: 'radar',
data: [
{
- value: [4200, 3000, 20000, 35000, 50000, 18000],
- name: '预算分配'
+ value: d.user && [d.user.influence, d.user.contribution, d.user.activity, d.user.experience, d.user.language],
+ name: '个人能力(personal)'
},
{
- value: [5000, 14000, 28000, 26000, 42000, 21000],
- name: '实际开销'
+ value: d.platform && [d.platform.influence, d.platform.contribution, d.platform.activity, d.platform.experience, d.platform.language],
+ name: '社区平均(average)'
}
]
}]
diff --git a/src/forge/users/Echart/Round.jsx b/src/forge/users/Echart/Round.jsx
new file mode 100644
index 000000000..ebcb13671
--- /dev/null
+++ b/src/forge/users/Echart/Round.jsx
@@ -0,0 +1,26 @@
+import React from 'react';
+import './style.scss';
+
+
+function Round({num,color,name}) {
+ return(
+
+
+ {num}分
+ {name}
+
+
+ {num > 50 ?
+
+ :
+
+ }
+ {num < 50 ?
+
+ :
+
+ }
+
+ )
+}
+export default Round;
\ No newline at end of file
diff --git a/src/forge/users/Echart/style.scss b/src/forge/users/Echart/style.scss
new file mode 100644
index 000000000..5a2aae387
--- /dev/null
+++ b/src/forge/users/Echart/style.scss
@@ -0,0 +1,69 @@
+.annulusBasics {
+ width : 74px;
+ height : 74px;
+ position : relative;
+ overflow : hidden;
+ border-radius: 50%;
+ text-align : center;
+ z-index : 1;
+}
+//圆环中间的白色
+.centerCircle {
+ position : absolute;
+ z-index : 10;
+ border-radius: 50%;
+ width : 60px;
+ height : 60px;
+ background : #fff;
+ transform : translate(7px, 7px);
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ line-height: 20px;
+ font-size: 12px;
+ .score{
+ font-size: 18px;
+ }
+}
+ //圆环百分比时出现圆环边框的颜色
+.annulusOuter {
+ position : absolute;
+ top : 0;
+ left : 0;
+ width : 74px;
+ height : 74px;
+ border : 12px solid #FF7F69;
+ border-radius: 50%;
+}
+//左边遮住圆环颜色的长方形
+.leftRectangle {
+ position : absolute;
+ background : #EBEEF5;
+ width : 37px;
+ height : 74px;
+ transform-origin: right;
+}
+//右边遮住圆环颜色的长方形
+.rightRectangle {
+ position : absolute;
+ background : #EBEEF5;
+ transform-origin: left;
+ left : 37px;
+ width : 37px;
+ height : 74px;
+ transform : rotate(0deg);
+}
+//弥补hidde在移动端失效的圆环
+.repairAnnulus{
+ position : absolute;
+ width : 74px;
+ height : 74px;
+ z-index : 20;
+ border-radius: 50%;
+ box-sizing : content-box;
+//改外边框的时候,位置也要改下
+ border : 20px solid #ffffff;
+ top : -20px;
+ left : -20px;
+}
\ No newline at end of file
diff --git a/src/forge/users/Statistics/Index.jsx b/src/forge/users/Statistics/Index.jsx
index 3b20ea1ea..ee4e25e24 100644
--- a/src/forge/users/Statistics/Index.jsx
+++ b/src/forge/users/Statistics/Index.jsx
@@ -1,4 +1,4 @@
-import React from 'react';
+import React , {useEffect, useState} from 'react';
import './Index.scss';
import 'echarts/lib/component/tooltip';
import 'echarts/lib/component/title';
@@ -8,13 +8,184 @@ import 'echarts/lib/component/markPoint';
import Pie from '../Echart/Pie';
import Cloud from '../Echart/Cloud';
import Radar from '../Echart/Radar';
+import Round from '../Echart/Round';
+import { DatePicker } from 'antd';
+import moment from 'moment';
+
+import { FlexAJ } from '../../Component/layout';
+import Axios from 'axios';
+
+const { RangePicker } = DatePicker;
+ const dateFormat = 'YYYY-MM-DD';
+function Index(props) {
+ const username = props.match.params.username;
+ const [ dates, setDates] = useState(undefined);
+ const [ pieData, setPieData ] = useState([]);
+ const [ rDates, setRDates ] = useState(undefined);
+ const [ radarData, setRadarData ] = useState([]);
+
+ const [ topThree , setTopThree] = useState(undefined);
+ const [ percentData , setPercentData ] = useState(undefined);
+
+ const [ cData, setCData ] = useState(undefined);
+ const [ cloudData, setCloudData ] = useState(undefined);
+
+ const disabledDate = current => {
+ return current && current > moment().endOf('day');
+ };
+
+ // 获取角色定位接口数据
+ useEffect(()=>{
+ getRoleSta();
+ },[dates])
+
+ function getRoleSta() {
+ const url = `/users/${username}/statistics/role.json`;
+ Axios.get(url,{
+ params:{
+ start_time:dates && dates[0],
+ end_time:dates && dates[1]
+ }
+ }).then(result=>{
+ if(result && result.data){
+ setPieData(result.data.role);
+ }
+ }).catch(error=>{})
+ }
+
+
+ // 获取开发能力接口数据
+ useEffect(()=>{
+ getRadarSta();
+ },[rDates])
+
+ function getRadarSta() {
+ const url = `/users/${username}/statistics/develop.json`;
+ Axios.get(url,{
+ params:{
+ start_time:rDates && rDates[0],
+ end_time:rDates && rDates[1]
+ }
+ }).then(result=>{
+ if(result && result.data){
+ setRadarData(result.data);
+ let score = result.data.user && result.data.user.each_language_score;
+ var sortData = []
+ for (var item in score) {
+ sortData.push([item, score[item]])
+ }
+ sortData.sort(function(a, b) {
+ return b[1] - a[1];
+ });
+ setTopThree(sortData.slice(0,3));
+
+ let percent = result.data.user && result.data.user.languages_percent;
+ let arr = [];
+ Object.keys(percent).map((item,key)=>{
+ arr.push({name:item,p:percent[item]*100,color:getColor()});
+ })
+ setPercentData(arr);
+ }
+ }).catch(error=>{})
+ }
+ function getColor(){
+ let str = "#";
+ let arr = ["1","2","3","4","4","5","6","7","8","9","a","b","c","d","e","f"];
+ for(var i=0;i<6;i++){
+ let num = parseInt(Math.random() * 16,0);
+ str+=arr[num];
+ }
+ return str;
+ }
+
+ //用户专业定位
+ useEffect(()=>{
+ getCloudSta();
+ },[cData])
+
+ function getCloudSta() {
+ const url = `/users/${username}/statistics/major.json`;
+ Axios.get(url,{
+ params:{
+ start_time:rDates && rDates[0],
+ end_time:rDates && rDates[1]
+ }
+ }).then(result=>{
+ if(result && result.data){
+ setCloudData(result.data);
+ }
+ }).catch(error=>{})
+ }
-function Index() {
return(
-
-
-
+
+
+ 开发能力
+ {setRDates(dateString)}}
+ format={dateFormat}
+ />
+
+
+ {
+ topThree &&
+
+
+
+
+
+ }
+ {
+ percentData &&
+
+
+ {
+ percentData.map((i,k)=>{
+ return(
+
+ )
+ })
+ }
+
+
+ {
+ percentData.map((i,k)=>{
+ return(
+
+ {i.name}
+ {`${i.p}%`}
+
+ )
+ })
+ }
+
+
+ }
+
+
+
+ 角色定位
+ {setDates(dateString)}}
+ format={dateFormat}
+ />
+
+
+
+
+
+ 专业定位
+ {setCData(dateString)}}
+ format={dateFormat}
+ />
+
+
+
)
}
diff --git a/src/forge/users/Statistics/Index.scss b/src/forge/users/Statistics/Index.scss
index e69de29bb..a2f944b90 100644
--- a/src/forge/users/Statistics/Index.scss
+++ b/src/forge/users/Statistics/Index.scss
@@ -0,0 +1,64 @@
+.boxes{
+ padding:20px 30px;
+ .roundBox{
+ margin:20px auto;
+ display: flex;
+ justify-content: center;
+ & >div{
+ margin:0px 30px;
+ }
+ }
+ .pBox{
+ width: 400px;
+ margin:40px auto 20px;
+ .progress{
+ width: 360px;
+ margin:0px auto;
+ display: flex;
+ background-color: #fafafa;
+ border-radius: 10px;
+ height: 7px;
+ span:first-child {
+ border-radius: 10px 0px 0px 10px;
+ }
+ span:last-child {
+ border-radius: 0px 10px 10px 0px;
+ }
+ }
+ .progresstip {
+ margin-top: 15px;
+ flex-wrap: wrap;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: justify;
+ -webkit-justify-content: space-between;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ & > span {
+ padding-left: 15px;
+ position: relative;
+ min-width: 33%;
+ display: flex;
+ justify-content: flex-start;
+ i.zero {
+ display: block;
+ border-radius: 50%;
+ height: 8px;
+ width: 8px;
+ margin-top:10px;
+ margin-right: 5px;
+ }
+ span {
+ color: #666;
+ }
+ span:last-child {
+ color: #999;
+ margin-left: 5px;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
From 4b6592dfb395339834d9e79f3eb800a876e8b19d Mon Sep 17 00:00:00 2001
From: caishi <1149225589@qq.com>
Date: Mon, 31 May 2021 18:39:30 +0800
Subject: [PATCH 05/13] =?UTF-8?q?=E5=90=8C=E4=B8=8A-=E4=BF=AE=E6=94=B9?=
=?UTF-8?q?=E7=BB=86=E8=8A=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/forge/users/GeneralView/ConcentrateProject.jsx | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/src/forge/users/GeneralView/ConcentrateProject.jsx b/src/forge/users/GeneralView/ConcentrateProject.jsx
index bcd3249cb..8d6eaec78 100644
--- a/src/forge/users/GeneralView/ConcentrateProject.jsx
+++ b/src/forge/users/GeneralView/ConcentrateProject.jsx
@@ -1,7 +1,6 @@
import React, { useEffect, useState } from 'react';
import { AlignAJBottom , AlignCenter } from '../../Component/layout';
import { Link } from 'react-router-dom';
-import { Spin } from 'antd';
import axios from 'axios';
import Box from './ConcentrateBox';
@@ -9,11 +8,9 @@ import Box from './ConcentrateBox';
function ConcentrateProject({userLogin,current}) {
const [ list , setList ] = useState(undefined);
const [ visible , setVisible ] = useState(false);
- const [ isSpin , setIsSpin ] = useState(false);
const [ value , setValue ] = useState([]);
useEffect(()=>{
- setIsSpin(true);
getList();
},[])
@@ -23,7 +20,6 @@ function ConcentrateProject({userLogin,current}) {
if(result && result.data){
let p = result.data.projects;
setList(p);
- setIsSpin(false);
if(p && p.length > 0){
let array = p.map(i=>{
return i.id
@@ -41,13 +37,12 @@ function ConcentrateProject({userLogin,current}) {
}).then(result=>{
if(result && result.data){
setVisible(false);
- setIsSpin(true);
getList();
}
}).catch(error=>{})
}
return(
-
+
setVisible(false)} onSure={onSure} username={userLogin} choosed={value}/>
{
list && list.length>0 &&
@@ -80,7 +75,7 @@ function ConcentrateProject({userLogin,current}) {
{
list && list.length === 0 && current &&
}
-
+
)
}
export default ConcentrateProject;
\ No newline at end of file
From 975d49b80ba8e30661ff070c18d4eebdd66d2d69 Mon Sep 17 00:00:00 2001
From: caishi <1149225589@qq.com>
Date: Wed, 2 Jun 2021 18:22:29 +0800
Subject: [PATCH 06/13] =?UTF-8?q?=E5=90=8C=E4=B8=8A=3Dissue=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/css/iconfont.css | 60 +++++++-
public/css/iconfont.js | 2 +-
public/css/iconfont.json | 93 ++++++++++++-
public/css/iconfont.ttf | Bin 171228 -> 175720 bytes
public/css/iconfont.woff | Bin 106348 -> 108472 bytes
public/css/iconfont.woff2 | Bin 88580 -> 90488 bytes
src/forge/Main/list.css | 3 +
src/forge/Notice/UndoEvent.jsx | 2 +-
src/forge/UsersList/fork_users.js | 2 +-
src/forge/UsersList/user_list.js | 2 +-
src/forge/users/Echart/Calendar.jsx | 50 +++++--
src/forge/users/Echart/Line.jsx | 22 +--
src/forge/users/Echart/Radar.jsx | 2 +-
.../users/GeneralView/ConcentrateBox.jsx | 121 +++++++++++-----
.../users/GeneralView/ConcentrateProject.jsx | 10 +-
src/forge/users/GeneralView/Index.jsx | 16 ++-
src/forge/users/GeneralView/Index.scss | 31 +++--
src/forge/users/Index.scss | 24 +++-
src/forge/users/Infos.js | 129 ++++--------------
src/forge/users/Statistics/Index.jsx | 105 +++++++-------
src/forge/users/Statistics/Index.scss | 2 +-
src/forge/users/common_lists.js | 6 +-
src/forge/users/new_user.css | 4 +-
23 files changed, 440 insertions(+), 246 deletions(-)
diff --git a/public/css/iconfont.css b/public/css/iconfont.css
index 3d27dfda1..7035af055 100644
--- a/public/css/iconfont.css
+++ b/public/css/iconfont.css
@@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 2340181 */
- src: url('iconfont.woff2?t=1620900836917') format('woff2'),
- url('iconfont.woff?t=1620900836917') format('woff'),
- url('iconfont.ttf?t=1620900836917') format('truetype');
+ src: url('iconfont.woff2?t=1622517296245') format('woff2'),
+ url('iconfont.woff?t=1622517296245') format('woff'),
+ url('iconfont.ttf?t=1622517296245') format('truetype');
}
.iconfont {
@@ -13,6 +13,58 @@
-moz-osx-font-smoothing: grayscale;
}
+.icon-youxiang:before {
+ content: "\e8b2";
+}
+
+.icon-danwei:before {
+ content: "\e8a7";
+}
+
+.icon-daibanshixiang:before {
+ content: "\e8a8";
+}
+
+.icon-gailan:before {
+ content: "\e8ab";
+}
+
+.icon-nan:before {
+ content: "\e8ac";
+}
+
+.icon-nv:before {
+ content: "\e8ad";
+}
+
+.icon-gongzuoliu1:before {
+ content: "\e8ae";
+}
+
+.icon-shujutongji:before {
+ content: "\e8b1";
+}
+
+.icon-xiangmu:before {
+ content: "\e8b3";
+}
+
+.icon-zuzhi:before {
+ content: "\e8b4";
+}
+
+.icon-arrowRight:before {
+ content: "\e863";
+}
+
+.icon-jiantouloukong-zuo:before {
+ content: "\e861";
+}
+
+.icon-jiantouloukong-you:before {
+ content: "\e862";
+}
+
.icon-fenxiang1:before {
content: "\e89c";
}
@@ -2441,7 +2493,7 @@
content: "\e7f3";
}
-.icon-dianzan1:before {
+.icon-dianzaned:before {
content: "\e639";
}
diff --git a/public/css/iconfont.js b/public/css/iconfont.js
index bb4188cdf..068c8e0a5 100644
--- a/public/css/iconfont.js
+++ b/public/css/iconfont.js
@@ -1 +1 @@
-!function(c){var l,a,h,i,o,z,t='
',p=(p=document.getElementsByTagName("script"))[p.length-1].getAttribute("data-injectcss");if(p&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function s(){o||(o=!0,h())}l=function(){var c,l,a;(a=document.createElement("div")).innerHTML=t,t=null,(l=a.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",c=l,(a=document.body).firstChild?(l=a.firstChild).parentNode.insertBefore(c,l):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),l()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(h=l,i=c.document,o=!1,(z=function(){try{i.documentElement.doScroll("left")}catch(c){return void setTimeout(z,50)}s()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,s())})}(window);
\ No newline at end of file
+!function(c){var l,a,h,i,o,z,t='
',p=(p=document.getElementsByTagName("script"))[p.length-1].getAttribute("data-injectcss");if(p&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function v(){o||(o=!0,h())}l=function(){var c,l,a;(a=document.createElement("div")).innerHTML=t,t=null,(l=a.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",c=l,(a=document.body).firstChild?(l=a.firstChild).parentNode.insertBefore(c,l):a.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(a=function(){document.removeEventListener("DOMContentLoaded",a,!1),l()},document.addEventListener("DOMContentLoaded",a,!1)):document.attachEvent&&(h=l,i=c.document,o=!1,(z=function(){try{i.documentElement.doScroll("left")}catch(c){return void setTimeout(z,50)}v()})(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,v())})}(window);
\ No newline at end of file
diff --git a/public/css/iconfont.json b/public/css/iconfont.json
index ab6ae3253..877958d72 100644
--- a/public/css/iconfont.json
+++ b/public/css/iconfont.json
@@ -5,6 +5,97 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
+ {
+ "icon_id": "21936935",
+ "name": "邮箱",
+ "font_class": "youxiang",
+ "unicode": "e8b2",
+ "unicode_decimal": 59570
+ },
+ {
+ "icon_id": "21936924",
+ "name": "单位",
+ "font_class": "danwei",
+ "unicode": "e8a7",
+ "unicode_decimal": 59559
+ },
+ {
+ "icon_id": "21936925",
+ "name": "待办事项",
+ "font_class": "daibanshixiang",
+ "unicode": "e8a8",
+ "unicode_decimal": 59560
+ },
+ {
+ "icon_id": "21936928",
+ "name": "概览",
+ "font_class": "gailan",
+ "unicode": "e8ab",
+ "unicode_decimal": 59563
+ },
+ {
+ "icon_id": "21936929",
+ "name": "男",
+ "font_class": "nan",
+ "unicode": "e8ac",
+ "unicode_decimal": 59564
+ },
+ {
+ "icon_id": "21936930",
+ "name": "女",
+ "font_class": "nv",
+ "unicode": "e8ad",
+ "unicode_decimal": 59565
+ },
+ {
+ "icon_id": "21936931",
+ "name": "工作流",
+ "font_class": "gongzuoliu1",
+ "unicode": "e8ae",
+ "unicode_decimal": 59566
+ },
+ {
+ "icon_id": "21936934",
+ "name": "数据统计",
+ "font_class": "shujutongji",
+ "unicode": "e8b1",
+ "unicode_decimal": 59569
+ },
+ {
+ "icon_id": "21936936",
+ "name": "项目",
+ "font_class": "xiangmu",
+ "unicode": "e8b3",
+ "unicode_decimal": 59571
+ },
+ {
+ "icon_id": "21936937",
+ "name": "组织",
+ "font_class": "zuzhi",
+ "unicode": "e8b4",
+ "unicode_decimal": 59572
+ },
+ {
+ "icon_id": "14835599",
+ "name": "右箭头",
+ "font_class": "arrowRight",
+ "unicode": "e863",
+ "unicode_decimal": 59491
+ },
+ {
+ "icon_id": "21151489",
+ "name": "箭头镂空-左",
+ "font_class": "jiantouloukong-zuo",
+ "unicode": "e861",
+ "unicode_decimal": 59489
+ },
+ {
+ "icon_id": "21151557",
+ "name": "箭头镂空-右",
+ "font_class": "jiantouloukong-you",
+ "unicode": "e862",
+ "unicode_decimal": 59490
+ },
{
"icon_id": "21568989",
"name": "分享",
@@ -4257,7 +4348,7 @@
{
"icon_id": "1004630",
"name": "点赞2",
- "font_class": "dianzan1",
+ "font_class": "dianzaned",
"unicode": "e639",
"unicode_decimal": 58937
},
diff --git a/public/css/iconfont.ttf b/public/css/iconfont.ttf
index 23ebbd47dcb84a2cf31d1afa89f5999fc869bad3..9507b420eac16e744f807dd53ea52ff28dee4b90 100644
GIT binary patch
delta 25770
zcmbWf2YejG8UOt}v)AvW({)LAI@P
eoB9S3?hqR9(7L&SsCg@isg~tS7A`L6
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
G)BgiBGZG{K
delta 21959
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
M7Ze$ehsD(Y2d02{Q2+n{
diff --git a/public/css/iconfont.woff b/public/css/iconfont.woff
index 6b353baae5adca471503ed70ba70c83b9f232910..5bb7cb8055fe518171cd24c1e0a3711680e40202 100644
GIT binary patch
literal 108472
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
b%
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