Browse Source

Merge branch 'V20211115' into liuzx_trainjob

pull/958/head
zhoupzh 3 years ago
parent
commit
2941ce816f
6 changed files with 51 additions and 32 deletions
  1. +4
    -1
      models/repo_activity_custom.go
  2. +20
    -2
      models/user_business_analysis.go
  3. +1
    -0
      public/img/pro_new.svg
  4. +4
    -17
      routers/repo/user_data_analysis.go
  5. +1
    -1
      web_src/js/components/DataAnalysis.vue
  6. +21
    -11
      web_src/js/components/ProAnalysis.vue

+ 4
- 1
models/repo_activity_custom.go View File

@@ -6,6 +6,8 @@ import (
"strings" "strings"
"time" "time"


"code.gitea.io/gitea/modules/log"

"code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/git"
) )


@@ -213,7 +215,8 @@ func GetAllUserKPIStats() (map[string]*git.UserKPIStats, error) {
for _, repository := range repositorys { for _, repository := range repositorys {
authorsOneRepo, err1 := git.GetUserKPIStats(repository.RepoPath()) authorsOneRepo, err1 := git.GetUserKPIStats(repository.RepoPath())
if err1 != nil { if err1 != nil {
return nil, err
log.Warn("get user kpi status err:"+repository.RepoPath(), err1.Error())
continue
} }


for key, value := range authorsOneRepo { for key, value := range authorsOneRepo {


+ 20
- 2
models/user_business_analysis.go View File

@@ -89,7 +89,7 @@ type UserBusinessAnalysis struct {
//action :ActionCommitRepo // 5 //action :ActionCommitRepo // 5
CommitCount int `xorm:"NOT NULL DEFAULT 0"` CommitCount int `xorm:"NOT NULL DEFAULT 0"`


//action :ActionCreateIssue // 10
//action :ActionCreateIssue // 6
IssueCount int `xorm:"NOT NULL DEFAULT 0"` IssueCount int `xorm:"NOT NULL DEFAULT 0"`


//comment table current date //comment table current date
@@ -406,7 +406,7 @@ func CounDataByDateAndReCount(wikiCountMap map[string]int, startTime time.Time,


DataDate := startTime.Format("2006-01-02") DataDate := startTime.Format("2006-01-02")
CodeMergeCountMap := queryPullRequest(start_unix, end_unix) CodeMergeCountMap := queryPullRequest(start_unix, end_unix)
CommitCountMap := queryAction(start_unix, end_unix, 5)
CommitCountMap := queryCommitAction(start_unix, end_unix, 5)
IssueCountMap := queryAction(start_unix, end_unix, 6) IssueCountMap := queryAction(start_unix, end_unix, 6)


CommentCountMap := queryComment(start_unix, end_unix) CommentCountMap := queryComment(start_unix, end_unix)
@@ -674,6 +674,24 @@ func queryPullRequest(start_unix int64, end_unix int64) map[int64]int {
return resultMap return resultMap
} }


func queryCommitAction(start_unix int64, end_unix int64, actionType int64) map[int64]int {
sess := x.NewSession()
defer sess.Close()
sess.Select("id,user_id,op_type,act_user_id").Table("action").Where("user_id=act_user_id and op_type=" + fmt.Sprint(actionType) + " and created_unix>=" + fmt.Sprint(start_unix) + " and created_unix<=" + fmt.Sprint(end_unix))
actionList := make([]*Action, 0)
sess.Find(&actionList)
resultMap := make(map[int64]int)
log.Info("query action size=" + fmt.Sprint(len(actionList)))
for _, actionRecord := range actionList {
if _, ok := resultMap[actionRecord.UserID]; !ok {
resultMap[actionRecord.UserID] = 1
} else {
resultMap[actionRecord.UserID] += 1
}
}
return resultMap
}

func queryAction(start_unix int64, end_unix int64, actionType int64) map[int64]int { func queryAction(start_unix int64, end_unix int64, actionType int64) map[int64]int {
sess := x.NewSession() sess := x.NewSession()
defer sess.Close() defer sess.Close()


+ 1
- 0
public/img/pro_new.svg View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1637739132178" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1729" width="64" height="64" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"></style></defs><path d="M512 69.717333l383.018667 221.141334v442.282666L512 954.282667 128.981333 733.141333V290.858667L512 69.717333zM192.96 375.402667v320.768L480 861.888V541.141333l-287.04-165.76z m638.058667 0L544 541.162667V861.866667l287.018667-165.717334V375.424zM512 143.637333L215.722667 314.666667 512 485.717333l296.256-171.050666L512 143.616z" fill="#8a8a8a" p-id="1730"></path></svg>

+ 4
- 17
routers/repo/user_data_analysis.go View File

@@ -4,7 +4,6 @@ import (
"fmt" "fmt"
"net/http" "net/http"
"net/url" "net/url"
"strings"
"time" "time"


"code.gitea.io/gitea/models" "code.gitea.io/gitea/models"
@@ -39,6 +38,7 @@ func QueryUserStaticDataPage(ctx *context.Context) {
endTime = time.Now() endTime = time.Now()
} else { } else {
startTime, _ = time.ParseInLocation("2006-01-02", startDate, time.Local) startTime, _ = time.ParseInLocation("2006-01-02", startDate, time.Local)
startTime = time.Date(startTime.Year(), startTime.Month(), startTime.Day(), 12, 0, 0, 0, startTime.Location())
settingStartTime, _ := time.Parse("2006-01-02", setting.RadarMap.RecordBeginTime) settingStartTime, _ := time.Parse("2006-01-02", setting.RadarMap.RecordBeginTime)
if startTime.Unix() < settingStartTime.Unix() { if startTime.Unix() < settingStartTime.Unix() {
startTime = settingStartTime startTime = settingStartTime
@@ -46,6 +46,8 @@ func QueryUserStaticDataPage(ctx *context.Context) {
} }
endTime, _ = time.ParseInLocation("2006-01-02", endDate, time.Local) endTime, _ = time.ParseInLocation("2006-01-02", endDate, time.Local)
endTime = endTime.AddDate(0, 0, 1) endTime = endTime.AddDate(0, 0, 1)
endTime = time.Date(endTime.Year(), endTime.Month(), endTime.Day(), 23, 59, 59, 0, startTime.Location())

isAll = false isAll = false
log.Info("startTime=" + fmt.Sprint(startTime.Unix()) + " endDate=" + fmt.Sprint(endTime.Unix())) log.Info("startTime=" + fmt.Sprint(startTime.Unix()) + " endDate=" + fmt.Sprint(endTime.Unix()))
} }
@@ -126,23 +128,8 @@ func QueryUserStaticDataPage(ctx *context.Context) {


//设置默认打开的表单 //设置默认打开的表单
xlsx.SetActiveSheet(index) xlsx.SetActiveSheet(index)
var filename string

nowTime := time.Now()
nowZeroTime := time.Date(nowTime.Year(), nowTime.Month(), nowTime.Day(), 0, 0, 0, 0, nowTime.Location())
if endTime.Unix() >= nowZeroTime.Unix() {
endDate = nowZeroTime.AddDate(0, 0, -1).Format("2006-01-02")
}


if isAll {
filename = sheetName + "_" + ctx.Tr("user.static.all") + ".xlsx"
} else {
filename = sheetName + "_" + strings.ReplaceAll(startDate, "-", "") + "_" + strings.ReplaceAll(endDate, "-", "") + ".xlsx"
}

if len(userName) > 0 {
filename = sheetName + "_" + userName + "_" + strings.ReplaceAll(startDate, "-", "") + "_" + strings.ReplaceAll(endDate, "-", "") + ".xlsx"
}
filename := sheetName + "_" + ctx.Tr("user.static.all") + ".xlsx"


ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(filename)) ctx.Resp.Header().Set("Content-Disposition", "attachment; filename="+url.QueryEscape(filename))
ctx.Resp.Header().Set("Content-Type", "application/octet-stream") ctx.Resp.Header().Set("Content-Type", "application/octet-stream")


+ 1
- 1
web_src/js/components/DataAnalysis.vue View File

@@ -13,7 +13,7 @@
<el-tab-pane label="项目分析" name="second" id="second" > <el-tab-pane label="项目分析" name="second" id="second" >
<ProAnalysis ref='ProAnalysis'id="pro" v-if="isRouterAlive"></ProAnalysis> <ProAnalysis ref='ProAnalysis'id="pro" v-if="isRouterAlive"></ProAnalysis>
<span slot="label"> <span slot="label">
<el-image style="width: 13px; height: 13px" src="/img/pro.svg">
<el-image style="width: 13px; height: 13px" src="/img/pro_new.svg">
</el-image> </el-image>
项目分析 项目分析
</span> </span>


+ 21
- 11
web_src/js/components/ProAnalysis.vue View File

@@ -199,9 +199,9 @@
<div class="item_l" id="charts"> <div class="item_l" id="charts">
<div style="font-size:14px;color:#409eff;margin:20px 5px;">OpenI指数:{{tableDataIDTotal.openi | rounding}}</div> <div style="font-size:14px;color:#409eff;margin:20px 5px;">OpenI指数:{{tableDataIDTotal.openi | rounding}}</div>
<div > <div >
<el-col :span='8' id="radar_openi" :style="{width: '400px', height: '300px'}"></el-col>
<el-col :span='8' id="radar_openi" :style="{ height: '300px'}"></el-col>
<el-col :span='16' id="line_openi" :style="{width: '600px', height: '300px',float:'right'}"></el-col>
<el-col :span='16' id="line_openi" :style="{ height: '300px',float:'right'}"></el-col>
</div> </div>
</div> </div>
</el-col> </el-col>
@@ -292,7 +292,7 @@
<input type="checkbox" class="checkboxchart" name="checkboxchart" checked="checked" value="commit"/>commit <input type="checkbox" class="checkboxchart" name="checkboxchart" checked="checked" value="commit"/>commit
</label> </label>
</div> </div>
<div id ="selectData" style="width: 1280px;height: 300px;">
<div id ="selectData" style="height: 300px;">


</div> </div>
@@ -712,8 +712,9 @@
params:this.paramsID params:this.paramsID
}).then((res)=>{ }).then((res)=>{
if (bool_val){ if (bool_val){
this.tableDataIDOpenI = res.data
this.tableDataIDOpenI = res.data
this.drawOpenItrend() this.drawOpenItrend()
}else{ }else{
@@ -925,6 +926,11 @@
] ]
}; };
this.echartsOITd.setOption(option) this.echartsOITd.setOption(option)
// setTimeout(function (){
// window.onresize = function () {
// this.echartsOITd.resize();
// }
// },200)
}, },
drawSelectData(){ drawSelectData(){
@@ -1018,6 +1024,11 @@
] ]
}; };
this.echartsSelectData.setOption(this.option) this.echartsSelectData.setOption(this.option)
// setTimeout(function (){
// window.onresize = function () {
// this.echartsSelectData.resize;
// }
// },200)


// // 使用刚指定的选择项数据显示图表。 // // 使用刚指定的选择项数据显示图表。
// var selectArr = this.echartsSelectData.getOption().legend[0].data;//legend所有值 // var selectArr = this.echartsSelectData.getOption().legend[0].data;//legend所有值
@@ -1117,14 +1128,13 @@
mounted() { mounted() {
// document.getElementById("all").style.outline="none"
// document.getElementById("all").focus()

this.getAllProList("all",7) this.getAllProList("all",7)
console.log("id:"+this.pro_id); console.log("id:"+this.pro_id);
// document.getElementById('radar_openi').style.width = document.getElementById('charts').offsetWidth*0.4+'px'
// document.getElementById('line_openi').style.width = document.getElementById('charts').offsetWidth*0.6+'px'
// document.getElementById('selectData').style.width = document.getElementById('linecharts').offsetWidth+'px'
document.getElementById('radar_openi').style.width = document.getElementById('pro_main').offsetWidth*0.22+'px'
document.getElementById('line_openi').style.width = document.getElementById('pro_main').offsetWidth*0.33+'px'
document.getElementById('selectData').style.width = document.getElementById('pro_main').offsetWidth*0.8+'px'
this.radarOpenI = this.$echarts.init(document.getElementById('radar_openi')) this.radarOpenI = this.$echarts.init(document.getElementById('radar_openi'))
this.echartsOITd = this.$echarts.init(document.getElementById('line_openi')) this.echartsOITd = this.$echarts.init(document.getElementById('line_openi'))
this.echartsSelectData = this.$echarts.init(document.getElementById('selectData')) this.echartsSelectData = this.$echarts.init(document.getElementById('selectData'))
@@ -1266,4 +1276,4 @@
margin-top: 10px; margin-top: 10px;
font-weight:bold; font-weight:bold;
} }
</style>
</style>

Loading…
Cancel
Save