@@ -23,18 +23,22 @@ func GetRepoKPIStats(repo *Repository) (*git.RepoKPIStats, error) { | |||||
if repo.HasWiki() { | if repo.HasWiki() { | ||||
wikiPath = repo.WikiPath() | wikiPath = repo.WikiPath() | ||||
} | } | ||||
return getRepoKPIStats(repo.RepoPath(), wikiPath) | |||||
repoCreated := time.Unix(int64(repo.CreatedUnix), 0) | |||||
return getRepoKPIStats(repo.RepoPath(), repoCreated, wikiPath) | |||||
} | } | ||||
func getRepoKPIStats(repoPath string, wikiPath string) (*git.RepoKPIStats, error) { | |||||
func getRepoKPIStats(repoPath string, repoCreated time.Time, wikiPath string) (*git.RepoKPIStats, error) { | |||||
stats := &git.RepoKPIStats{} | stats := &git.RepoKPIStats{} | ||||
contributors, err := git.GetContributors(repoPath) | |||||
contributors, err := git.GetContributorsDetail(repoPath, repoCreated) | |||||
if err != nil { | if err != nil { | ||||
return nil, err | return nil, err | ||||
} | } | ||||
timeUntil := time.Now() | timeUntil := time.Now() | ||||
fourMonthAgo := timeUntil.AddDate(0, -4, 0) | fourMonthAgo := timeUntil.AddDate(0, -4, 0) | ||||
if fourMonthAgo.Before(repoCreated) { | |||||
fourMonthAgo = repoCreated | |||||
} | |||||
recentlyContributors, err := git.GetContributorsDetail(repoPath, fourMonthAgo) | recentlyContributors, err := git.GetContributorsDetail(repoPath, fourMonthAgo) | ||||
newContributersDict := make(map[string]struct{}) | newContributersDict := make(map[string]struct{}) | ||||
if err != nil { | if err != nil { | ||||
@@ -44,7 +48,7 @@ func getRepoKPIStats(repoPath string, wikiPath string) (*git.RepoKPIStats, error | |||||
if contributors != nil { | if contributors != nil { | ||||
contributorDistinctDict := make(map[string]int, 0) | contributorDistinctDict := make(map[string]int, 0) | ||||
keyContributorsDict := make(map[string]struct{}, 0) | keyContributorsDict := make(map[string]struct{}, 0) | ||||
var commitsCount int64 | |||||
for _, contributor := range contributors { | for _, contributor := range contributors { | ||||
if strings.Compare(contributor.Email, "") == 0 { | if strings.Compare(contributor.Email, "") == 0 { | ||||
continue | continue | ||||
@@ -70,6 +74,8 @@ func getRepoKPIStats(repoPath string, wikiPath string) (*git.RepoKPIStats, error | |||||
setKeyContributerDict(contributorDistinctDict, contributor.Email, keyContributorsDict) | setKeyContributerDict(contributorDistinctDict, contributor.Email, keyContributorsDict) | ||||
} | } | ||||
commitsCount += int64(contributor.CommitCnt) | |||||
} | } | ||||
if recentlyContributors != nil { | if recentlyContributors != nil { | ||||
@@ -110,10 +116,10 @@ func getRepoKPIStats(repoPath string, wikiPath string) (*git.RepoKPIStats, error | |||||
stats.Contributors = int64(len(contributorDistinctDict)) | stats.Contributors = int64(len(contributorDistinctDict)) | ||||
stats.KeyContributors = int64(len(keyContributorsDict)) | stats.KeyContributors = int64(len(keyContributorsDict)) | ||||
stats.Commits = int64(commitsCount) | |||||
} | } | ||||
err = git.SetDevelopAge(repoPath, stats) | |||||
err = git.SetDevelopAge(repoPath, stats, repoCreated) | |||||
if err != nil { | if err != nil { | ||||
return nil, fmt.Errorf("FillFromGit: %v", err) | return nil, fmt.Errorf("FillFromGit: %v", err) | ||||
} | } | ||||
@@ -14,6 +14,7 @@ type RepoStatistic struct { | |||||
Name string `xorm:"INDEX" json:"name"` | Name string `xorm:"INDEX" json:"name"` | ||||
OwnerName string `json:"ownerName"` | OwnerName string `json:"ownerName"` | ||||
IsPrivate bool `json:"isPrivate"` | IsPrivate bool `json:"isPrivate"` | ||||
IsMirror bool `json:"isMirror"` | |||||
Date string `xorm:"unique(s) NOT NULL" json:"date"` | Date string `xorm:"unique(s) NOT NULL" json:"date"` | ||||
NumWatches int64 `xorm:"NOT NULL DEFAULT 0" json:"watch"` | NumWatches int64 `xorm:"NOT NULL DEFAULT 0" json:"watch"` | ||||
NumWatchesAdded int64 `xorm:"NOT NULL DEFAULT 0" json:"-"` | NumWatchesAdded int64 `xorm:"NOT NULL DEFAULT 0" json:"-"` | ||||
@@ -18,6 +18,7 @@ type RepoKPIStats struct { | |||||
KeyContributors int64 | KeyContributors int64 | ||||
DevelopAge int64 | DevelopAge int64 | ||||
ContributorsAdded int64 | ContributorsAdded int64 | ||||
Commits int64 | |||||
CommitsAdded int64 | CommitsAdded int64 | ||||
CommitLinesModified int64 | CommitLinesModified int64 | ||||
WikiPages int64 | WikiPages int64 | ||||
@@ -35,8 +36,9 @@ type UserKPITypeStats struct { | |||||
isNewContributor bool //是否是4个月内的新增贡献者 | isNewContributor bool //是否是4个月内的新增贡献者 | ||||
} | } | ||||
func SetDevelopAge(repoPath string, stats *RepoKPIStats) error { | |||||
args := []string{"log", "--no-merges", "--branches=*", "--format=%cd", "--date=short"} | |||||
func SetDevelopAge(repoPath string, stats *RepoKPIStats, fromTime time.Time) error { | |||||
since := fromTime.Format(time.RFC3339) | |||||
args := []string{"log", "--no-merges", "--branches=*", "--format=%cd", "--date=short", fmt.Sprintf("--since='%s'", since)} | |||||
stdout, err := NewCommand(args...).RunInDirBytes(repoPath) | stdout, err := NewCommand(args...).RunInDirBytes(repoPath) | ||||
if err != nil { | if err != nil { | ||||
return err | return err | ||||
@@ -547,6 +547,7 @@ var ( | |||||
GrowthCommit float64 | GrowthCommit float64 | ||||
GrowthComments float64 | GrowthComments float64 | ||||
RecordBeginTime string | RecordBeginTime string | ||||
IgnoreMirrorRepo bool | |||||
}{} | }{} | ||||
Warn_Notify_Mails []string | Warn_Notify_Mails []string | ||||
@@ -1333,6 +1334,7 @@ func SetRadarMapConfig() { | |||||
RadarMap.GrowthCommit = sec.Key("growth_commit").MustFloat64(0.2) | RadarMap.GrowthCommit = sec.Key("growth_commit").MustFloat64(0.2) | ||||
RadarMap.GrowthComments = sec.Key("growth_comments").MustFloat64(0.2) | RadarMap.GrowthComments = sec.Key("growth_comments").MustFloat64(0.2) | ||||
RadarMap.RecordBeginTime = sec.Key("record_beigin_time").MustString("2021-11-05") | RadarMap.RecordBeginTime = sec.Key("record_beigin_time").MustString("2021-11-05") | ||||
RadarMap.IgnoreMirrorRepo = sec.Key("ignore_mirror_repo").MustBool(true) | |||||
} | } | ||||
@@ -229,7 +229,7 @@ organizations=组织 | |||||
images = 云脑镜像 | images = 云脑镜像 | ||||
search=搜索 | search=搜索 | ||||
code=代码 | code=代码 | ||||
data_analysis=数字看板 | |||||
data_analysis=数字看板(内测) | |||||
repo_no_results=未找到匹配的项目。 | repo_no_results=未找到匹配的项目。 | ||||
dataset_no_results = 未找到匹配的数据集。 | dataset_no_results = 未找到匹配的数据集。 | ||||
user_no_results=未找到匹配的用户。 | user_no_results=未找到匹配的用户。 | ||||
@@ -49,9 +49,11 @@ func RepoStatisticDaily(date string) { | |||||
var minRepoRadar models.RepoStatistic | var minRepoRadar models.RepoStatistic | ||||
var maxRepoRadar models.RepoStatistic | var maxRepoRadar models.RepoStatistic | ||||
for i, repo := range repos { | |||||
isInitMinMaxRadar := false | |||||
for _, repo := range repos { | |||||
log.Info("start statistic: %s", getDistinctProjectName(repo)) | log.Info("start statistic: %s", getDistinctProjectName(repo)) | ||||
var numDevMonths, numWikiViews, numContributor, numKeyContributor, numCommitsGrowth, numCommitLinesGrowth, numContributorsGrowth int64 | |||||
var numDevMonths, numWikiViews, numContributor, numKeyContributor, numCommitsGrowth, numCommitLinesGrowth, numContributorsGrowth, numCommits int64 | |||||
repoGitStat, err := models.GetRepoKPIStats(repo) | repoGitStat, err := models.GetRepoKPIStats(repo) | ||||
if err != nil { | if err != nil { | ||||
log.Error("GetRepoKPIStats failed: %s", getDistinctProjectName(repo)) | log.Error("GetRepoKPIStats failed: %s", getDistinctProjectName(repo)) | ||||
@@ -63,6 +65,8 @@ func RepoStatisticDaily(date string) { | |||||
numCommitsGrowth = repoGitStat.CommitsAdded | numCommitsGrowth = repoGitStat.CommitsAdded | ||||
numCommitLinesGrowth = repoGitStat.CommitLinesModified | numCommitLinesGrowth = repoGitStat.CommitLinesModified | ||||
numContributorsGrowth = repoGitStat.ContributorsAdded | numContributorsGrowth = repoGitStat.ContributorsAdded | ||||
numCommits = repoGitStat.Commits | |||||
} | } | ||||
var issueFixedRate float32 | var issueFixedRate float32 | ||||
@@ -98,15 +102,15 @@ func RepoStatisticDaily(date string) { | |||||
} | } | ||||
repoStat := models.RepoStatistic{ | repoStat := models.RepoStatistic{ | ||||
RepoID: repo.ID, | |||||
Date: date, | |||||
Name: repo.Name, | |||||
IsPrivate: repo.IsPrivate, | |||||
OwnerName: repo.OwnerName, | |||||
NumWatches: int64(repo.NumWatches), | |||||
NumStars: int64(repo.NumStars), | |||||
NumForks: int64(repo.NumForks), | |||||
RepoID: repo.ID, | |||||
Date: date, | |||||
Name: repo.Name, | |||||
IsPrivate: repo.IsPrivate, | |||||
IsMirror: repo.IsMirror, | |||||
OwnerName: repo.OwnerName, | |||||
NumWatches: int64(repo.NumWatches), | |||||
NumStars: int64(repo.NumStars), | |||||
NumForks: int64(repo.NumForks), | |||||
NumDownloads: repo.CloneCnt, | NumDownloads: repo.CloneCnt, | ||||
NumComments: numComments, | NumComments: numComments, | ||||
NumVisits: int64(numVisits), | NumVisits: int64(numVisits), | ||||
@@ -117,7 +121,7 @@ func RepoStatisticDaily(date string) { | |||||
DatasetSize: datasetSize, | DatasetSize: datasetSize, | ||||
NumModels: 0, | NumModels: 0, | ||||
NumWikiViews: numWikiViews, | NumWikiViews: numWikiViews, | ||||
NumCommits: repo.NumCommit, | |||||
NumCommits: numCommits, | |||||
NumIssues: int64(repo.NumIssues), | NumIssues: int64(repo.NumIssues), | ||||
NumPulls: int64(repo.NumPulls), | NumPulls: int64(repo.NumPulls), | ||||
IssueFixedRate: issueFixedRate, | IssueFixedRate: issueFixedRate, | ||||
@@ -167,6 +171,7 @@ func RepoStatisticDaily(date string) { | |||||
tempRepoStat := models.RepoStatistic{ | tempRepoStat := models.RepoStatistic{ | ||||
RepoID: repoStat.RepoID, | RepoID: repoStat.RepoID, | ||||
Date: repoStat.Date, | Date: repoStat.Date, | ||||
IsMirror: repoStat.IsMirror, | |||||
Impact: normalization.GetImpactInitValue(repoStat.NumWatches, repoStat.NumStars, repoStat.NumForks, repoStat.NumDownloads, repoStat.NumComments, repoStat.NumVisits), | Impact: normalization.GetImpactInitValue(repoStat.NumWatches, repoStat.NumStars, repoStat.NumForks, repoStat.NumDownloads, repoStat.NumComments, repoStat.NumVisits), | ||||
Completeness: normalization.GetCompleteInitValue(repoStat.NumClosedIssues, repoStat.NumVersions, repoStat.NumDevMonths, repoStat.DatasetSize, repoStat.NumModels, repoStat.NumWikiViews), | Completeness: normalization.GetCompleteInitValue(repoStat.NumClosedIssues, repoStat.NumVersions, repoStat.NumDevMonths, repoStat.DatasetSize, repoStat.NumModels, repoStat.NumWikiViews), | ||||
Liveness: normalization.GetLivenessInitValue(repoStat.NumCommits, repoStat.NumIssues, repoStat.NumPulls, repoStat.NumVisits), | Liveness: normalization.GetLivenessInitValue(repoStat.NumCommits, repoStat.NumIssues, repoStat.NumPulls, repoStat.NumVisits), | ||||
@@ -177,57 +182,64 @@ func RepoStatisticDaily(date string) { | |||||
reposRadar = append(reposRadar, &tempRepoStat) | reposRadar = append(reposRadar, &tempRepoStat) | ||||
if i == 0 { | |||||
minRepoRadar = tempRepoStat | |||||
maxRepoRadar = tempRepoStat | |||||
} else { | |||||
if !isInitMinMaxRadar { | |||||
if tempRepoStat.Impact < minRepoRadar.Impact { | |||||
minRepoRadar.Impact = tempRepoStat.Impact | |||||
if !setting.RadarMap.IgnoreMirrorRepo || (setting.RadarMap.IgnoreMirrorRepo && !tempRepoStat.IsMirror) { | |||||
minRepoRadar = tempRepoStat | |||||
maxRepoRadar = tempRepoStat | |||||
isInitMinMaxRadar = true | |||||
} | } | ||||
if tempRepoStat.Impact > maxRepoRadar.Impact { | |||||
maxRepoRadar.Impact = tempRepoStat.Impact | |||||
} | |||||
} else { | |||||
if !setting.RadarMap.IgnoreMirrorRepo || (setting.RadarMap.IgnoreMirrorRepo && !tempRepoStat.IsMirror) { | |||||
if tempRepoStat.Impact < minRepoRadar.Impact { | |||||
minRepoRadar.Impact = tempRepoStat.Impact | |||||
} | |||||
if tempRepoStat.Completeness < minRepoRadar.Completeness { | |||||
minRepoRadar.Completeness = tempRepoStat.Completeness | |||||
} | |||||
if tempRepoStat.Impact > maxRepoRadar.Impact { | |||||
maxRepoRadar.Impact = tempRepoStat.Impact | |||||
} | |||||
if tempRepoStat.Completeness > maxRepoRadar.Completeness { | |||||
maxRepoRadar.Completeness = tempRepoStat.Completeness | |||||
} | |||||
if tempRepoStat.Completeness < minRepoRadar.Completeness { | |||||
minRepoRadar.Completeness = tempRepoStat.Completeness | |||||
} | |||||
if tempRepoStat.Liveness < minRepoRadar.Completeness { | |||||
minRepoRadar.Liveness = tempRepoStat.Liveness | |||||
} | |||||
if tempRepoStat.Completeness > maxRepoRadar.Completeness { | |||||
maxRepoRadar.Completeness = tempRepoStat.Completeness | |||||
} | |||||
if tempRepoStat.Liveness > maxRepoRadar.Liveness { | |||||
maxRepoRadar.Liveness = tempRepoStat.Liveness | |||||
} | |||||
if tempRepoStat.Liveness < minRepoRadar.Completeness { | |||||
minRepoRadar.Liveness = tempRepoStat.Liveness | |||||
} | |||||
if tempRepoStat.ProjectHealth < minRepoRadar.ProjectHealth { | |||||
minRepoRadar.ProjectHealth = tempRepoStat.ProjectHealth | |||||
} | |||||
if tempRepoStat.Liveness > maxRepoRadar.Liveness { | |||||
maxRepoRadar.Liveness = tempRepoStat.Liveness | |||||
} | |||||
if tempRepoStat.ProjectHealth > maxRepoRadar.ProjectHealth { | |||||
maxRepoRadar.ProjectHealth = tempRepoStat.ProjectHealth | |||||
} | |||||
if tempRepoStat.ProjectHealth < minRepoRadar.ProjectHealth { | |||||
minRepoRadar.ProjectHealth = tempRepoStat.ProjectHealth | |||||
} | |||||
if tempRepoStat.TeamHealth < minRepoRadar.TeamHealth { | |||||
minRepoRadar.TeamHealth = tempRepoStat.TeamHealth | |||||
} | |||||
if tempRepoStat.ProjectHealth > maxRepoRadar.ProjectHealth { | |||||
maxRepoRadar.ProjectHealth = tempRepoStat.ProjectHealth | |||||
} | |||||
if tempRepoStat.TeamHealth > maxRepoRadar.TeamHealth { | |||||
maxRepoRadar.TeamHealth = tempRepoStat.TeamHealth | |||||
} | |||||
if tempRepoStat.TeamHealth < minRepoRadar.TeamHealth { | |||||
minRepoRadar.TeamHealth = tempRepoStat.TeamHealth | |||||
} | |||||
if tempRepoStat.Growth < minRepoRadar.Growth { | |||||
minRepoRadar.Growth = tempRepoStat.Growth | |||||
} | |||||
if tempRepoStat.TeamHealth > maxRepoRadar.TeamHealth { | |||||
maxRepoRadar.TeamHealth = tempRepoStat.TeamHealth | |||||
} | |||||
if tempRepoStat.Growth < minRepoRadar.Growth { | |||||
minRepoRadar.Growth = tempRepoStat.Growth | |||||
} | |||||
if tempRepoStat.Growth > maxRepoRadar.Growth { | |||||
maxRepoRadar.Growth = tempRepoStat.Growth | |||||
} | |||||
if tempRepoStat.Growth > maxRepoRadar.Growth { | |||||
maxRepoRadar.Growth = tempRepoStat.Growth | |||||
} | } | ||||
} | } | ||||
@@ -238,13 +250,23 @@ func RepoStatisticDaily(date string) { | |||||
//radar map | //radar map | ||||
log.Info("begin statistic radar") | log.Info("begin statistic radar") | ||||
for _, radarInit := range reposRadar { | for _, radarInit := range reposRadar { | ||||
radarInit.Impact = normalization.Normalization(radarInit.Impact, minRepoRadar.Impact, maxRepoRadar.Impact) | |||||
radarInit.Completeness = normalization.Normalization(radarInit.Completeness, minRepoRadar.Completeness, maxRepoRadar.Completeness) | |||||
radarInit.Liveness = normalization.Normalization(radarInit.Liveness, minRepoRadar.Liveness, maxRepoRadar.Liveness) | |||||
radarInit.ProjectHealth = normalization.Normalization(radarInit.ProjectHealth, minRepoRadar.ProjectHealth, maxRepoRadar.ProjectHealth) | |||||
radarInit.TeamHealth = normalization.Normalization(radarInit.TeamHealth, minRepoRadar.TeamHealth, maxRepoRadar.TeamHealth) | |||||
radarInit.Growth = normalization.Normalization(radarInit.Growth, minRepoRadar.Growth, maxRepoRadar.Growth) | |||||
radarInit.RadarTotal = normalization.GetRadarValue(radarInit.Impact, radarInit.Completeness, radarInit.Liveness, radarInit.ProjectHealth, radarInit.TeamHealth, radarInit.Growth) | |||||
if radarInit.IsMirror && setting.RadarMap.IgnoreMirrorRepo { | |||||
radarInit.Impact = 0 | |||||
radarInit.Completeness = 0 | |||||
radarInit.Liveness = 0 | |||||
radarInit.ProjectHealth = 0 | |||||
radarInit.TeamHealth = 0 | |||||
radarInit.Growth = 0 | |||||
radarInit.RadarTotal = 0 | |||||
} else { | |||||
radarInit.Impact = normalization.Normalization(radarInit.Impact, minRepoRadar.Impact, maxRepoRadar.Impact) | |||||
radarInit.Completeness = normalization.Normalization(radarInit.Completeness, minRepoRadar.Completeness, maxRepoRadar.Completeness) | |||||
radarInit.Liveness = normalization.Normalization(radarInit.Liveness, minRepoRadar.Liveness, maxRepoRadar.Liveness) | |||||
radarInit.ProjectHealth = normalization.Normalization(radarInit.ProjectHealth, minRepoRadar.ProjectHealth, maxRepoRadar.ProjectHealth) | |||||
radarInit.TeamHealth = normalization.Normalization(radarInit.TeamHealth, minRepoRadar.TeamHealth, maxRepoRadar.TeamHealth) | |||||
radarInit.Growth = normalization.Normalization(radarInit.Growth, minRepoRadar.Growth, maxRepoRadar.Growth) | |||||
radarInit.RadarTotal = normalization.GetRadarValue(radarInit.Impact, radarInit.Completeness, radarInit.Liveness, radarInit.ProjectHealth, radarInit.TeamHealth, radarInit.Growth) | |||||
} | |||||
models.UpdateRepoStat(radarInit) | models.UpdateRepoStat(radarInit) | ||||
} | } | ||||
@@ -53,7 +53,7 @@ | |||||
:cell-style='cellStyle'> | :cell-style='cellStyle'> | ||||
<el-table-column | <el-table-column | ||||
label="ID" | label="ID" | ||||
align="center" | |||||
align="left" | |||||
prop="repo_id" | prop="repo_id" | ||||
stripe | stripe | ||||
> | > | ||||
@@ -61,9 +61,9 @@ | |||||
<el-table-column | <el-table-column | ||||
label="项目名称" | label="项目名称" | ||||
width="125px" | width="125px" | ||||
align="center" | |||||
align="left" | |||||
prop="name" | prop="name" | ||||
style="color:#0366D6 100%;" | |||||
style="color:#0366D6;font-family: Roboto" | |||||
> | > | ||||
<template slot-scope="scope"> | <template slot-scope="scope"> | ||||
<a @click=goToDetailPage(scope.row.repo_id,scope.row.name,scope.row.ownerName)>{{scope.row.name}} </a> | <a @click=goToDetailPage(scope.row.repo_id,scope.row.name,scope.row.ownerName)>{{scope.row.name}} </a> | ||||
@@ -197,7 +197,7 @@ | |||||
<el-row :gutter="20"> | <el-row :gutter="20"> | ||||
<el-col :span=18 > | <el-col :span=18 > | ||||
<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:#0366D6;margin:20px 5px;">OpenI指数:{{tableDataIDTotal.openi | rounding}}</div> | |||||
<div > | <div > | ||||
<el-col :span='8' id="radar_openi" :style="{ height: '300px'}"></el-col> | <el-col :span='8' id="radar_openi" :style="{ height: '300px'}"></el-col> | ||||
@@ -208,7 +208,7 @@ | |||||
<el-col :span=6 > | <el-col :span=6 > | ||||
<div class="item_r"> | <div class="item_r"> | ||||
<div style="margin:0 5px;"> | <div style="margin:0 5px;"> | ||||
<div style="font-size:14px;color:rgb(0,0,0);margin:10px 0px">贡献者TOP10</div> | |||||
<div style="font-size:14px;color:rgb(0,0,0);margin:10px 5px">贡献者TOP10</div> | |||||
<div> | <div> | ||||
<el-table | <el-table | ||||
:data="tableDataContTop10" | :data="tableDataContTop10" | ||||
@@ -237,6 +237,7 @@ | |||||
<el-table-column | <el-table-column | ||||
prop="pr" | prop="pr" | ||||
label="PR" | label="PR" | ||||
width="50px" | |||||
align="center"> | align="center"> | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column | <el-table-column | ||||
@@ -825,14 +826,14 @@ | |||||
type: 'radar', | type: 'radar', | ||||
lineStyle:{ | lineStyle:{ | ||||
width:2, | width:2, | ||||
color: '#409effd6', | |||||
color: '#0366D6', | |||||
normal:{ | normal:{ | ||||
color:'#409effd6 ' | |||||
color:'#0366D6 ' | |||||
} | } | ||||
}, | }, | ||||
itemStyle : { | itemStyle : { | ||||
normal : { | normal : { | ||||
color:'#409effd6' | |||||
color:'#0366D6' | |||||
} | } | ||||
}, | }, | ||||
data: [{ | data: [{ | ||||
@@ -914,12 +915,12 @@ | |||||
lineStyle:{ | lineStyle:{ | ||||
width:1, | width:1, | ||||
normal:{ | normal:{ | ||||
color:'#409effd6' | |||||
color:'#0366D6' | |||||
} | } | ||||
}, | }, | ||||
itemStyle : { | itemStyle : { | ||||
normal : { | normal : { | ||||
color:'#409effd6' | |||||
color:'#0366D6' | |||||
} | } | ||||
}, | }, | ||||
} | } | ||||
@@ -1023,6 +1024,7 @@ | |||||
] | ] | ||||
}; | }; | ||||
// this.echartsSelectData.resize() | |||||
this.echartsSelectData.setOption(this.option) | this.echartsSelectData.setOption(this.option) | ||||
// setTimeout(function (){ | // setTimeout(function (){ | ||||
// window.onresize = function () { | // window.onresize = function () { | ||||
@@ -1189,10 +1191,10 @@ | |||||
.btnFirst{ | .btnFirst{ | ||||
line-height: 1.5; | line-height: 1.5; | ||||
margin: -3.5px; | margin: -3.5px; | ||||
border: 1px solid #409eff; | |||||
border: 1px solid rgba(22, 132, 252, 100); | |||||
border-right: none; | border-right: none; | ||||
background: #FFFF; | background: #FFFF; | ||||
color: #409eff; | |||||
color: #1684FC; | |||||
width: 60px; | width: 60px; | ||||
height: 30px; | height: 30px; | ||||
border-radius:4px 0px 0px 4px; | border-radius:4px 0px 0px 4px; | ||||
@@ -1200,20 +1202,20 @@ | |||||
.btn{ | .btn{ | ||||
line-height: 1.5; | line-height: 1.5; | ||||
margin: -3.5px; | margin: -3.5px; | ||||
border: 1px solid #409eff; | |||||
border: 1px solid rgba(22, 132, 252, 100); | |||||
border-right: none; | border-right: none; | ||||
background: #FFFF; | background: #FFFF; | ||||
color: #409eff; | |||||
color: #1684FC; | |||||
width: 60px; | width: 60px; | ||||
height: 30px; | height: 30px; | ||||
} | } | ||||
.btnLast{ | .btnLast{ | ||||
line-height: 1.5; | line-height: 1.5; | ||||
margin: -3.5px; | margin: -3.5px; | ||||
border: 1px solid #409eff; | |||||
border: 1px solid rgba(22, 132, 252, 100); | |||||
/* border-right: none; */ | /* border-right: none; */ | ||||
background: #FFFF; | background: #FFFF; | ||||
color: #409eff; | |||||
color: #1684FC; | |||||
width: 60px; | width: 60px; | ||||
height: 30px; | height: 30px; | ||||
border-radius:0px 4px 4px 0px; | border-radius:0px 4px 4px 0px; | ||||
@@ -1244,7 +1246,7 @@ | |||||
} | } | ||||
.colorChange { | .colorChange { | ||||
background-color: #409effd6; | |||||
background-color: #1684FC; | |||||
color: #FFFF; | color: #FFFF; | ||||
cursor: default; | cursor: default; | ||||
} | } | ||||
@@ -1272,7 +1274,7 @@ | |||||
width: 100%; | width: 100%; | ||||
} | } | ||||
.item_content{ | .item_content{ | ||||
color: #409eff; | |||||
color:#0366D6; | |||||
margin-top: 10px; | margin-top: 10px; | ||||
font-weight:bold; | font-weight:bold; | ||||
} | } | ||||
@@ -49,15 +49,18 @@ | |||||
<el-table-column | <el-table-column | ||||
label="ID" | label="ID" | ||||
prop="ID" | prop="ID" | ||||
align="center" | |||||
align="left" | |||||
stripe | stripe | ||||
> | > | ||||
</el-table-column> | </el-table-column> | ||||
<el-table-column | <el-table-column | ||||
label="用户名" | label="用户名" | ||||
align="center" | |||||
align="left" | |||||
prop="Name" | prop="Name" | ||||
width="100px"> | width="100px"> | ||||
<template slot-scope="scope"> | |||||
<a :href="AppSubUrl +'../../../'+ scope.row.Name">{{scope.row.Name}} </a> | |||||
</template> | |||||
</el-table-column> | </el-table-column> | ||||
<el-table-column | <el-table-column | ||||
prop="CodeMergeCount" | prop="CodeMergeCount" | ||||
@@ -475,10 +478,10 @@ | |||||
.btnFirst{ | .btnFirst{ | ||||
line-height: 1.5; | line-height: 1.5; | ||||
margin: -3.5px; | margin: -3.5px; | ||||
border: 1px solid #409eff; | |||||
border: 1px solid rgba(22, 132, 252, 100); | |||||
border-right: none; | border-right: none; | ||||
background: #FFFF; | background: #FFFF; | ||||
color: #409eff; | |||||
color: #1684FC; | |||||
width: 60px; | width: 60px; | ||||
height: 30px; | height: 30px; | ||||
border-radius:4px 0px 0px 4px; | border-radius:4px 0px 0px 4px; | ||||
@@ -486,20 +489,20 @@ | |||||
.btn{ | .btn{ | ||||
line-height: 1.5; | line-height: 1.5; | ||||
margin: -3.5px; | margin: -3.5px; | ||||
border: 1px solid #409eff; | |||||
border: 1px solid rgba(22, 132, 252, 100); | |||||
border-right: none; | border-right: none; | ||||
background: #FFFF; | background: #FFFF; | ||||
color: #409eff; | |||||
color: #1684FC; | |||||
width: 60px; | width: 60px; | ||||
height: 30px; | height: 30px; | ||||
} | } | ||||
.btnLast{ | .btnLast{ | ||||
line-height: 1.5; | line-height: 1.5; | ||||
margin: -3.5px; | margin: -3.5px; | ||||
border: 1px solid #409eff; | |||||
border: 1px solid rgba(22, 132, 252, 100); | |||||
/* border-right: none; */ | /* border-right: none; */ | ||||
background: #FFFF; | background: #FFFF; | ||||
color: #409eff; | |||||
color: #1684FC; | |||||
width: 60px; | width: 60px; | ||||
height: 30px; | height: 30px; | ||||
border-radius:0px 4px 4px 0px; | border-radius:0px 4px 4px 0px; | ||||
@@ -528,7 +531,7 @@ | |||||
} | } | ||||
.colorChange { | .colorChange { | ||||
background-color: #409effd6; | |||||
background-color: #1684FC; | |||||
color: #FFFF; | color: #FFFF; | ||||
cursor: default; | cursor: default; | ||||
} | } | ||||