合并tags/v1.21.12.1
| @@ -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() { | |||