@@ -14,7 +14,6 @@ type ContributorWithUserId struct { | |||
UserId int64 | |||
IsAdmin bool | |||
RelAvatarLink string | |||
Email string | |||
} | |||
func GetRepoKPIStats(repo *Repository) (*git.RepoKPIStats, error) { | |||
@@ -127,12 +126,12 @@ func getRepoKPIStats(repoPath string, wikiPath string) (*git.RepoKPIStats, error | |||
} | |||
func GetTop10Contributor(repoPath string) ([]ContributorWithUserId, error) { | |||
func GetTop10Contributor(repoPath string) ([]*ContributorWithUserId, error) { | |||
contributors, err := git.GetContributors(repoPath) | |||
if err != nil { | |||
return make([]ContributorWithUserId, 0), err | |||
return make([]*ContributorWithUserId, 0), err | |||
} | |||
contributorDistinctDict := make(map[string]ContributorWithUserId, 0) | |||
contributorDistinctDict := make(map[string]*ContributorWithUserId, 0) | |||
if contributors != nil { | |||
for _, contributor := range contributors { | |||
if strings.Compare(contributor.Email, "") == 0 { | |||
@@ -144,12 +143,15 @@ func GetTop10Contributor(repoPath string) ([]ContributorWithUserId, error) { | |||
value, ok := contributorDistinctDict[user.Email] | |||
if !ok { | |||
contributorDistinctDict[user.Email] = ContributorWithUserId{ | |||
contributor, | |||
contributorDistinctDict[user.Email] = &ContributorWithUserId{ | |||
git.Contributor{ | |||
contributor.CommitCnt, | |||
user.Name, | |||
user.Email, | |||
}, | |||
user.ID, | |||
user.IsAdmin, | |||
user.RelAvatarLink(), | |||
user.Email, | |||
} | |||
} else { | |||
@@ -159,12 +161,11 @@ func GetTop10Contributor(repoPath string) ([]ContributorWithUserId, error) { | |||
} else { | |||
value, ok := contributorDistinctDict[contributor.Email] | |||
if !ok { | |||
contributorDistinctDict[contributor.Email] = ContributorWithUserId{ | |||
contributorDistinctDict[contributor.Email] = &ContributorWithUserId{ | |||
contributor, | |||
-1, | |||
false, | |||
"", | |||
contributor.Email, | |||
} | |||
} else { | |||
value.CommitCnt += contributor.CommitCnt | |||
@@ -173,7 +174,7 @@ func GetTop10Contributor(repoPath string) ([]ContributorWithUserId, error) { | |||
} | |||
} | |||
v := make([]ContributorWithUserId, 0, len(contributorDistinctDict)) | |||
v := make([]*ContributorWithUserId, 0, len(contributorDistinctDict)) | |||
for _, value := range contributorDistinctDict { | |||
v = append(v, value) | |||
} | |||
@@ -188,7 +189,7 @@ func GetTop10Contributor(repoPath string) ([]ContributorWithUserId, error) { | |||
return v[0:10], nil | |||
} | |||
} | |||
return make([]ContributorWithUserId, 0), nil | |||
return make([]*ContributorWithUserId, 0), nil | |||
} | |||
func setKeyContributerDict(contributorDistinctDict map[string]int, email string, keyContributorsDict map[string]struct{}) { | |||
@@ -90,15 +90,7 @@ type UserBusinessAnalysisList []*UserBusinessAnalysis | |||
func (ulist UserBusinessAnalysisList) Swap(i, j int) { ulist[i], ulist[j] = ulist[j], ulist[i] } | |||
func (ulist UserBusinessAnalysisList) Len() int { return len(ulist) } | |||
func (ulist UserBusinessAnalysisList) Less(i, j int) bool { | |||
if ulist[i].CommitCount > ulist[j].CommitCount { | |||
return true | |||
} else { | |||
if ulist[i].CommitCount == ulist[j].CommitCount { | |||
return ulist[i].ID > ulist[j].ID | |||
} else { | |||
return false | |||
} | |||
} | |||
return ulist[i].ID > ulist[j].ID | |||
} | |||
func QueryUserStaticData(startTime int64, endTime int64) []*UserBusinessAnalysis { | |||
@@ -199,17 +191,16 @@ func QueryUserStaticDataPage(opts *UserBusinessAnalysisQueryOptions) ([]*UserBus | |||
} | |||
statictisSess.Limit(opts.PageSize, start) | |||
} | |||
statictisSess.OrderBy("count_date desc") | |||
userBusinessAnalysisList := make([]*UserBusinessAnalysis, 0) | |||
if err := statictisSess.Table("user_business_analysis").Where(cond). | |||
if err := statictisSess.Table("user_business_analysis").Where(cond).OrderBy("id desc"). | |||
Find(&userBusinessAnalysisList); err != nil { | |||
return nil, 0 | |||
} | |||
resultMap := make(map[int64]*UserBusinessAnalysis) | |||
if opts.Page >= 0 && opts.PageSize > 0 && len(userBusinessAnalysisList) > 0 { | |||
if len(userBusinessAnalysisList) > 0 { | |||
var newAndCond = builder.NewCond() | |||
var newOrCond = builder.NewCond() | |||
for _, userRecord := range userBusinessAnalysisList { | |||
@@ -228,9 +219,8 @@ func QueryUserStaticDataPage(opts *UserBusinessAnalysisQueryOptions) ([]*UserBus | |||
builder.Lte{"count_date": opts.EndTime}, | |||
) | |||
} | |||
userBusinessAnalysisList = make([]*UserBusinessAnalysis, 0) | |||
if err := statictisSess.Table("user_business_analysis").Where(newAndCond). | |||
if err := statictisSess.Table("user_business_analysis").Where(newAndCond).OrderBy("count_date desc"). | |||
Find(&userBusinessAnalysisList); err != nil { | |||
return nil, 0 | |||
} | |||
@@ -362,7 +362,7 @@ func generateRadarSql(beginTime time.Time, endTime time.Time, repoId int64) stri | |||
} | |||
func generateTargetSql(beginTime time.Time, endTime time.Time, repoId int64) string { | |||
sql := "SELECT date, num_visits,num_downloads,num_commits FROM repo_statistic" + | |||
sql := "SELECT date, num_visits,num_downloads_added as num_downloads,num_commits_added as num_commits FROM repo_statistic" + | |||
" where repo_id=" + strconv.FormatInt(repoId, 10) + " and created_unix >=" + strconv.FormatInt(beginTime.Unix(), 10) + | |||
" and created_unix<" + strconv.FormatInt(endTime.Unix(), 10) + " order by created_unix desc" | |||
@@ -217,7 +217,7 @@ | |||
> | |||
<el-table-column | |||
label="用户名" | |||
align="center" | |||
align="left" | |||
prop="user"> | |||
<template slot-scope="scope"> | |||
<a v-if="scope.row.mode!=-1" :href="AppSubUrl +'../../../'+ scope.row.user"><img class="ui avatar s16 image js-popover-card" :src="scope.row.relAvatarLink">{{scope.row.user}} </a> | |||
@@ -1144,6 +1144,11 @@ | |||
created() { | |||
// this.download_a=document.getElementById("download_file") | |||
}, | |||
updated(){ | |||
if(document.querySelectorAll('img[avatar]').length!==0){ | |||
window.LetterAvatar.transform() | |||
} | |||
} | |||
} | |||
</script> | |||
@@ -1201,7 +1206,7 @@ | |||
} | |||
.items{ | |||
text-align: center; | |||
border-right:2px solid rgba(219, 219, 219, 100); | |||
border-right:1px solid rgba(219, 219, 219, 100); | |||
} | |||
.item_l{ | |||
margin-right: 5px; | |||
@@ -1213,6 +1218,7 @@ | |||
margin-right:5px; | |||
border:1px solid rgba(219, 219, 219, 100); | |||
height: 370px; | |||
overflow:auto | |||
} | |||
.item_echart{ | |||
margin-top: 10px; | |||
@@ -1224,5 +1230,6 @@ | |||
.item_content{ | |||
color: #409eff; | |||
margin-top: 10px; | |||
font-weight:bold; | |||
} | |||
</style> |
@@ -149,7 +149,7 @@ | |||
@current-change="handleCurrentChange" | |||
:current-page="page" | |||
:page-size="pageSize" | |||
:page-sizes="[2,5,10,20]" | |||
:page-sizes="[5,10,20]" | |||
layout="total, sizes, prev, pager, next,jumper" | |||
:total="totalNum"> | |||
</el-pagination> | |||
@@ -423,6 +423,7 @@ | |||
mounted() { | |||
// document.getElementById("all_usr").style.outline="none" | |||
// document.getElementById("all_usr").focus() | |||
this.getUpdateTime() | |||
this.getUserList("all_usr",7) | |||
}, | |||
created() { | |||