@@ -112,7 +112,7 @@ type Cloudbrain struct { | |||
SubTaskName string | |||
ContainerID string | |||
ContainerIp string | |||
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` | |||
CreatedUnix timeutil.TimeStamp `xorm:"INDEX"` | |||
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"` | |||
Duration int64 `xorm:"DEFAULT 0"` //运行时长 单位秒 | |||
TrainJobDuration string `xorm:"DEFAULT '00:00:00'"` | |||
@@ -185,6 +185,12 @@ func (task *Cloudbrain) ComputeAndSetDuration() { | |||
task.TrainJobDuration = ConvertDurationToStr(d) | |||
} | |||
func (task *Cloudbrain) CorrectCreateUnix() { | |||
if task.StartTime > 0 && task.CreatedUnix > task.StartTime { | |||
task.CreatedUnix = task.StartTime | |||
} | |||
} | |||
func (task *Cloudbrain) IsTerminal() bool { | |||
status := task.Status | |||
return status == string(ModelArtsTrainJobCompleted) || status == string(ModelArtsTrainJobFailed) || status == string(ModelArtsTrainJobKilled) || status == string(ModelArtsStopped) || status == string(JobStopped) || status == string(JobFailed) || status == string(JobSucceeded) | |||
@@ -219,6 +225,7 @@ func ParseAndSetDurationFromCloudBrainOne(result JobResultPayload, task *Cloudbr | |||
task.EndTime = timeutil.TimeStamp(result.JobStatus.CompletedTime / 1000) | |||
} | |||
} | |||
task.CorrectCreateUnix() | |||
task.ComputeAndSetDuration() | |||
} | |||
@@ -1473,7 +1480,7 @@ func UpdateTrainJobVersion(job *Cloudbrain) error { | |||
func updateJobTrainVersion(e Engine, job *Cloudbrain) error { | |||
var sess *xorm.Session | |||
sess = e.Where("job_id = ? AND version_name=?", job.JobID, job.VersionName) | |||
_, err := sess.Cols("status", "train_job_duration", "duration", "start_time", "end_time").Update(job) | |||
_, err := sess.Cols("status", "train_job_duration", "duration", "start_time", "end_time", "created_unix").Update(job) | |||
return err | |||
} | |||
@@ -1562,7 +1569,7 @@ func UpdateInferenceJob(job *Cloudbrain) error { | |||
func updateInferenceJob(e Engine, job *Cloudbrain) error { | |||
var sess *xorm.Session | |||
sess = e.Where("job_id = ?", job.JobID) | |||
_, err := sess.Cols("status", "train_job_duration", "duration", "start_time", "end_time").Update(job) | |||
_, err := sess.Cols("status", "train_job_duration", "duration", "start_time", "end_time", "created_unix").Update(job) | |||
return err | |||
} | |||
func RestartCloudbrain(old *Cloudbrain, new *Cloudbrain) (err error) { | |||
@@ -246,7 +246,7 @@ func QueryUserStaticDataByTableName(start int, pageSize int, tableName string, q | |||
} | |||
log.Info("query return total:" + fmt.Sprint(allCount)) | |||
userBusinessAnalysisAllList := make([]*UserBusinessAnalysisAll, 0) | |||
if err := statictisSess.Table(tableName).Where(cond).OrderBy("commit_count desc,id desc").Limit(pageSize, start). | |||
if err := statictisSess.Table(tableName).Where(cond).OrderBy("user_index desc,id desc").Limit(pageSize, start). | |||
Find(&userBusinessAnalysisAllList); err != nil { | |||
return nil, 0 | |||
} | |||
@@ -448,6 +448,9 @@ func refreshUserStaticTable(wikiCountMap map[string]int, tableName string, pageS | |||
var indexTotal int64 | |||
indexTotal = 0 | |||
insertCount := 0 | |||
userIndexMap := make(map[int64]float64, 0) | |||
maxUserIndex := 0.0 | |||
minUserIndex := 100000000.0 | |||
dateRecordBatch := make([]UserBusinessAnalysisAll, 0) | |||
for { | |||
sess.Select("`user`.*").Table("user").Where(cond).OrderBy("id asc").Limit(PAGE_SIZE, int(indexTotal)) | |||
@@ -494,7 +497,13 @@ func refreshUserStaticTable(wikiCountMap map[string]int, tableName string, pageS | |||
dateRecordAll.GpuBenchMarkJob = getMapKeyStringValue(fmt.Sprint(dateRecordAll.ID)+"_GpuBenchMarkJob", CloudBrainTaskItemMap) | |||
dateRecordAll.CommitModelCount = getMapValue(dateRecordAll.ID, AiModelManageMap) | |||
dateRecordAll.UserIndex = getUserIndexFromAnalysisAll(dateRecordAll, ParaWeight) | |||
userIndexMap[dateRecordAll.ID] = dateRecordAll.UserIndex | |||
if maxUserIndex < dateRecordAll.UserIndex { | |||
maxUserIndex = dateRecordAll.UserIndex | |||
} | |||
if minUserIndex > dateRecordAll.UserIndex { | |||
minUserIndex = dateRecordAll.UserIndex | |||
} | |||
dateRecordBatch = append(dateRecordBatch, dateRecordAll) | |||
if len(dateRecordBatch) >= BATCH_INSERT_SIZE { | |||
insertTable(dateRecordBatch, tableName, statictisSess) | |||
@@ -523,9 +532,19 @@ func refreshUserStaticTable(wikiCountMap map[string]int, tableName string, pageS | |||
} | |||
} | |||
//normalization | |||
for k, v := range userIndexMap { | |||
tmpResult := (v - minUserIndex) / (maxUserIndex - minUserIndex) | |||
updateUserIndex(tableName, statictisSess, k, tmpResult) | |||
} | |||
log.Info("refresh data finished.tableName=" + tableName + " total record:" + fmt.Sprint(insertCount)) | |||
} | |||
func updateUserIndex(tableName string, statictisSess *xorm.Session, userId int64, userIndex float64) { | |||
updateSql := "UPDATE public." + tableName + " set user_index=" + fmt.Sprint(userIndex) + " where id=" + fmt.Sprint(userId) | |||
statictisSess.Exec(updateSql) | |||
} | |||
func insertTable(dateRecords []UserBusinessAnalysisAll, tableName string, statictisSess *xorm.Session) { | |||
insertBatchSql := "INSERT INTO public." + tableName + | |||
@@ -50,6 +50,7 @@ func SendDecompressAttachToLabelOBS(attach string) error { | |||
_, err := redisclient.Do("Publish", setting.DecompressOBSTaskName, attach) | |||
if err != nil { | |||
log.Critical("redis Publish failed.") | |||
return err | |||
} | |||
log.Info("LabelDecompressOBSQueue(%s) success", attach) | |||
@@ -438,6 +438,7 @@ var ( | |||
//home page | |||
RecommentRepoAddr string | |||
ESSearchURL string | |||
INDEXPOSTFIX string | |||
//notice config | |||
UserNameOfNoticeRepo string | |||
RepoNameOfNoticeRepo string | |||
@@ -1268,6 +1269,7 @@ func NewContext() { | |||
sec = Cfg.Section("homepage") | |||
RecommentRepoAddr = sec.Key("Address").MustString("https://git.openi.org.cn/OpenIOSSG/promote/raw/branch/master/") | |||
ESSearchURL = sec.Key("ESSearchURL").MustString("http://192.168.207.94:9200") | |||
INDEXPOSTFIX = sec.Key("INDEXPOSTFIX").MustString("") | |||
sec = Cfg.Section("notice") | |||
UserNameOfNoticeRepo = sec.Key("USER_NAME").MustString("OpenIOSSG") | |||
@@ -30,6 +30,8 @@ type FileInfo struct { | |||
} | |||
type FileInfoList []FileInfo | |||
const MAX_LIST_PARTS = 1000 | |||
func (ulist FileInfoList) Swap(i, j int) { ulist[i], ulist[j] = ulist[j], ulist[i] } | |||
func (ulist FileInfoList) Len() int { return len(ulist) } | |||
func (ulist FileInfoList) Less(i, j int) bool { | |||
@@ -97,29 +99,48 @@ func CompleteObsMultiPartUpload(uuid, uploadID, fileName string) error { | |||
input.Bucket = setting.Bucket | |||
input.Key = strings.TrimPrefix(path.Join(setting.BasePath, path.Join(uuid[0:1], uuid[1:2], uuid, fileName)), "/") | |||
input.UploadId = uploadID | |||
output, err := ObsCli.ListParts(&obs.ListPartsInput{ | |||
Bucket: setting.Bucket, | |||
Key: input.Key, | |||
UploadId: uploadID, | |||
}) | |||
if err != nil { | |||
log.Error("ListParts failed:", err.Error()) | |||
return err | |||
} | |||
for _, partInfo := range output.Parts { | |||
input.Parts = append(input.Parts, obs.Part{ | |||
PartNumber: partInfo.PartNumber, | |||
ETag: partInfo.ETag, | |||
partNumberMarker := 0 | |||
for { | |||
output, err := ObsCli.ListParts(&obs.ListPartsInput{ | |||
Bucket: setting.Bucket, | |||
Key: input.Key, | |||
UploadId: uploadID, | |||
MaxParts: MAX_LIST_PARTS, | |||
PartNumberMarker: partNumberMarker, | |||
}) | |||
if err != nil { | |||
log.Error("ListParts failed:", err.Error()) | |||
return err | |||
} | |||
partNumberMarker = output.NextPartNumberMarker | |||
log.Info("uuid:%s, MaxParts:%d, PartNumberMarker:%d, NextPartNumberMarker:%d, len:%d", uuid, output.MaxParts, output.PartNumberMarker, output.NextPartNumberMarker, len(output.Parts)) | |||
for _, partInfo := range output.Parts { | |||
input.Parts = append(input.Parts, obs.Part{ | |||
PartNumber: partInfo.PartNumber, | |||
ETag: partInfo.ETag, | |||
}) | |||
} | |||
if len(output.Parts) < output.MaxParts { | |||
break | |||
} else { | |||
continue | |||
} | |||
break | |||
} | |||
_, err = ObsCli.CompleteMultipartUpload(input) | |||
output, err := ObsCli.CompleteMultipartUpload(input) | |||
if err != nil { | |||
log.Error("CompleteMultipartUpload failed:", err.Error()) | |||
return err | |||
} | |||
log.Info("uuid:%s, RequestId:%s", uuid, output.RequestId) | |||
return nil | |||
} | |||
@@ -74,6 +74,7 @@ func GetModelArtsNotebook2(ctx *context.APIContext) { | |||
if job.EndTime == 0 && models.IsModelArtsDebugJobTerminal(job.Status) { | |||
job.EndTime = timeutil.TimeStampNow() | |||
} | |||
job.CorrectCreateUnix() | |||
job.ComputeAndSetDuration() | |||
err = models.UpdateJob(job) | |||
if err != nil { | |||
@@ -160,6 +161,7 @@ func GetModelArtsTrainJobVersion(ctx *context.APIContext) { | |||
} | |||
if result.JobStatus.State != string(models.JobWaiting) { | |||
models.ParseAndSetDurationFromCloudBrainOne(result, job) | |||
err = models.UpdateJob(job) | |||
if err != nil { | |||
log.Error("UpdateJob failed:", err) | |||
@@ -177,14 +179,12 @@ func GetModelArtsTrainJobVersion(ctx *context.APIContext) { | |||
} | |||
job.Status = modelarts.TransTrainJobStatus(result.IntStatus) | |||
job.Duration = result.Duration / 1000 | |||
job.TrainJobDuration = result.TrainJobDuration | |||
job.TrainJobDuration = models.ConvertDurationToStr(job.Duration) | |||
if job.EndTime == 0 && models.IsTrainJobTerminal(job.Status) && job.StartTime > 0 { | |||
job.EndTime = job.StartTime.Add(job.Duration) | |||
} | |||
job.CorrectCreateUnix() | |||
err = models.UpdateTrainJobVersion(job) | |||
if err != nil { | |||
log.Error("UpdateJob failed:", err) | |||
@@ -417,7 +417,7 @@ func GetModelArtsInferenceJob(ctx *context.APIContext) { | |||
if job.EndTime == 0 && models.IsTrainJobTerminal(job.Status) && job.StartTime > 0 { | |||
job.EndTime = job.StartTime.Add(job.Duration) | |||
} | |||
job.CorrectCreateUnix() | |||
err = models.UpdateInferenceJob(job) | |||
if err != nil { | |||
log.Error("UpdateJob failed:", err) | |||
@@ -78,7 +78,7 @@ func UploadAttachmentUI(ctx *context.Context) { | |||
} | |||
func EditAttachmentUI(ctx *context.Context) { | |||
id, _ := strconv.ParseInt(ctx.Params(":id"), 10, 64) | |||
ctx.Data["PageIsDataset"] = true | |||
attachment, _ := models.GetAttachmentByID(id) | |||
@@ -986,23 +986,29 @@ func HandleUnDecompressAttachment() { | |||
if attach.Type == models.TypeCloudBrainOne { | |||
err = worker.SendDecompressTask(contexExt.Background(), attach.UUID, attach.Name) | |||
if err != nil { | |||
log.Error("SendDecompressTask(%s) failed:%s", attach.UUID, err.Error()) | |||
log.Error("SendDecompressTask(%s) failed:%s", attach.UUID, err.Error()) | |||
} else { | |||
attach.DecompressState = models.DecompressStateIng | |||
err = models.UpdateAttachment(attach) | |||
if err != nil { | |||
log.Error("UpdateAttachment state(%s) failed:%s", attach.UUID, err.Error()) | |||
} | |||
updateAttachmentDecompressStateIng(attach) | |||
} | |||
} else if attach.Type == models.TypeCloudBrainTwo { | |||
attachjson, _ := json.Marshal(attach) | |||
labelmsg.SendDecompressAttachToLabelOBS(string(attachjson)) | |||
err = labelmsg.SendDecompressAttachToLabelOBS(string(attachjson)) | |||
if err != nil { | |||
log.Error("SendDecompressTask to labelsystem (%s) failed:%s", attach.UUID, err.Error()) | |||
} else { | |||
updateAttachmentDecompressStateIng(attach) | |||
} | |||
} | |||
} | |||
return | |||
} | |||
func updateAttachmentDecompressStateIng(attach *models.Attachment) { | |||
attach.DecompressState = models.DecompressStateIng | |||
err := models.UpdateAttachment(attach) | |||
if err != nil { | |||
log.Error("UpdateAttachment state(%s) failed:%s", attach.UUID, err.Error()) | |||
} | |||
} | |||
func QueryAllPublicDataset(ctx *context.Context) { | |||
attachs, err := models.GetAllPublicAttachments() | |||
@@ -1386,6 +1386,7 @@ func SyncCloudbrainStatus() { | |||
if task.EndTime == 0 && models.IsModelArtsDebugJobTerminal(task.Status) { | |||
task.EndTime = timeutil.TimeStampNow() | |||
} | |||
task.CorrectCreateUnix() | |||
task.ComputeAndSetDuration() | |||
err = models.UpdateJob(task) | |||
if err != nil { | |||
@@ -1412,7 +1413,7 @@ func SyncCloudbrainStatus() { | |||
if task.EndTime == 0 && models.IsTrainJobTerminal(task.Status) && task.StartTime > 0 { | |||
task.EndTime = task.StartTime.Add(task.Duration) | |||
} | |||
task.CorrectCreateUnix() | |||
err = models.UpdateJob(task) | |||
if err != nil { | |||
log.Error("UpdateJob(%s) failed:%v", task.JobName, err) | |||
@@ -1534,6 +1535,7 @@ func handleNoDurationTask(cloudBrains []*models.Cloudbrain) { | |||
task.StartTime = timeutil.TimeStamp(startTime / 1000) | |||
task.EndTime = task.StartTime.Add(duration) | |||
} | |||
task.CorrectCreateUnix() | |||
task.ComputeAndSetDuration() | |||
err = models.UpdateJob(task) | |||
if err != nil { | |||
@@ -41,24 +41,24 @@ func queryUserDataPage(ctx *context.Context, tableName string, queryObj interfac | |||
"A1": ctx.Tr("user.static.id"), | |||
"B1": ctx.Tr("user.static.name"), | |||
"C1": ctx.Tr("user.static.codemergecount"), | |||
"D1": ctx.Tr("user.static.commitcount"), | |||
"E1": ctx.Tr("user.static.issuecount"), | |||
"F1": ctx.Tr("user.static.commentcount"), | |||
"G1": ctx.Tr("user.static.focusrepocount"), | |||
"H1": ctx.Tr("user.static.starrepocount"), | |||
"I1": ctx.Tr("user.static.logincount"), | |||
"J1": ctx.Tr("user.static.watchedcount"), | |||
"K1": ctx.Tr("user.static.commitcodesize"), | |||
"L1": ctx.Tr("user.static.solveissuecount"), | |||
"M1": ctx.Tr("user.static.encyclopediascount"), | |||
"N1": ctx.Tr("user.static.createrepocount"), | |||
"O1": ctx.Tr("user.static.openiindex"), | |||
"P1": ctx.Tr("user.static.registdate"), | |||
"Q1": ctx.Tr("user.static.CloudBrainTaskNum"), | |||
"R1": ctx.Tr("user.static.CloudBrainRunTime"), | |||
"S1": ctx.Tr("user.static.CommitDatasetNum"), | |||
"T1": ctx.Tr("user.static.CommitModelCount"), | |||
"U1": ctx.Tr("user.static.UserIndex"), | |||
"D1": ctx.Tr("user.static.UserIndex"), | |||
"E1": ctx.Tr("user.static.commitcount"), | |||
"F1": ctx.Tr("user.static.issuecount"), | |||
"G1": ctx.Tr("user.static.commentcount"), | |||
"H1": ctx.Tr("user.static.focusrepocount"), | |||
"I1": ctx.Tr("user.static.starrepocount"), | |||
"J1": ctx.Tr("user.static.logincount"), | |||
"K1": ctx.Tr("user.static.watchedcount"), | |||
"L1": ctx.Tr("user.static.commitcodesize"), | |||
"M1": ctx.Tr("user.static.solveissuecount"), | |||
"N1": ctx.Tr("user.static.encyclopediascount"), | |||
"O1": ctx.Tr("user.static.createrepocount"), | |||
"P1": ctx.Tr("user.static.openiindex"), | |||
"Q1": ctx.Tr("user.static.registdate"), | |||
"R1": ctx.Tr("user.static.CloudBrainTaskNum"), | |||
"S1": ctx.Tr("user.static.CloudBrainRunTime"), | |||
"T1": ctx.Tr("user.static.CommitDatasetNum"), | |||
"U1": ctx.Tr("user.static.CommitModelCount"), | |||
"V1": ctx.Tr("user.static.countdate"), | |||
} | |||
for k, v := range dataHeader { | |||
@@ -78,28 +78,27 @@ func queryUserDataPage(ctx *context.Context, tableName string, queryObj interfac | |||
xlsx.SetCellValue(sheetName, "A"+rows, userRecord.ID) | |||
xlsx.SetCellValue(sheetName, "B"+rows, userRecord.Name) | |||
xlsx.SetCellValue(sheetName, "C"+rows, userRecord.CodeMergeCount) | |||
xlsx.SetCellValue(sheetName, "D"+rows, userRecord.CommitCount) | |||
xlsx.SetCellValue(sheetName, "E"+rows, userRecord.IssueCount) | |||
xlsx.SetCellValue(sheetName, "F"+rows, userRecord.CommentCount) | |||
xlsx.SetCellValue(sheetName, "G"+rows, userRecord.FocusRepoCount) | |||
xlsx.SetCellValue(sheetName, "H"+rows, userRecord.StarRepoCount) | |||
xlsx.SetCellValue(sheetName, "I"+rows, userRecord.LoginCount) | |||
xlsx.SetCellValue(sheetName, "J"+rows, userRecord.WatchedCount) | |||
xlsx.SetCellValue(sheetName, "K"+rows, userRecord.CommitCodeSize) | |||
xlsx.SetCellValue(sheetName, "L"+rows, userRecord.SolveIssueCount) | |||
xlsx.SetCellValue(sheetName, "M"+rows, userRecord.EncyclopediasCount) | |||
xlsx.SetCellValue(sheetName, "N"+rows, userRecord.CreateRepoCount) | |||
xlsx.SetCellValue(sheetName, "O"+rows, fmt.Sprintf("%.2f", userRecord.OpenIIndex)) | |||
xlsx.SetCellValue(sheetName, "D"+rows, fmt.Sprintf("%.2f", userRecord.UserIndex)) | |||
xlsx.SetCellValue(sheetName, "E"+rows, userRecord.CommitCount) | |||
xlsx.SetCellValue(sheetName, "F"+rows, userRecord.IssueCount) | |||
xlsx.SetCellValue(sheetName, "G"+rows, userRecord.CommentCount) | |||
xlsx.SetCellValue(sheetName, "H"+rows, userRecord.FocusRepoCount) | |||
xlsx.SetCellValue(sheetName, "I"+rows, userRecord.StarRepoCount) | |||
xlsx.SetCellValue(sheetName, "J"+rows, userRecord.LoginCount) | |||
xlsx.SetCellValue(sheetName, "K"+rows, userRecord.WatchedCount) | |||
xlsx.SetCellValue(sheetName, "L"+rows, userRecord.CommitCodeSize) | |||
xlsx.SetCellValue(sheetName, "M"+rows, userRecord.SolveIssueCount) | |||
xlsx.SetCellValue(sheetName, "N"+rows, userRecord.EncyclopediasCount) | |||
xlsx.SetCellValue(sheetName, "O"+rows, userRecord.CreateRepoCount) | |||
xlsx.SetCellValue(sheetName, "P"+rows, fmt.Sprintf("%.2f", userRecord.OpenIIndex)) | |||
formatTime := userRecord.RegistDate.Format("2006-01-02 15:04:05") | |||
xlsx.SetCellValue(sheetName, "P"+rows, formatTime[0:len(formatTime)-3]) | |||
xlsx.SetCellValue(sheetName, "Q"+rows, userRecord.CloudBrainTaskNum) | |||
xlsx.SetCellValue(sheetName, "R"+rows, fmt.Sprintf("%.2f", float64(userRecord.CloudBrainRunTime)/3600)) | |||
xlsx.SetCellValue(sheetName, "S"+rows, userRecord.CommitDatasetNum) | |||
xlsx.SetCellValue(sheetName, "T"+rows, userRecord.CommitModelCount) | |||
xlsx.SetCellValue(sheetName, "U"+rows, fmt.Sprintf("%.2f", userRecord.UserIndex)) | |||
xlsx.SetCellValue(sheetName, "Q"+rows, formatTime[0:len(formatTime)-3]) | |||
xlsx.SetCellValue(sheetName, "R"+rows, userRecord.CloudBrainTaskNum) | |||
xlsx.SetCellValue(sheetName, "S"+rows, fmt.Sprintf("%.2f", float64(userRecord.CloudBrainRunTime)/3600)) | |||
xlsx.SetCellValue(sheetName, "T"+rows, userRecord.CommitDatasetNum) | |||
xlsx.SetCellValue(sheetName, "U"+rows, userRecord.CommitModelCount) | |||
formatTime = userRecord.DataDate | |||
xlsx.SetCellValue(sheetName, "V"+rows, formatTime) | |||
} | |||
@@ -243,24 +242,24 @@ func QueryUserStaticDataPage(ctx *context.Context) { | |||
"A1": ctx.Tr("user.static.id"), | |||
"B1": ctx.Tr("user.static.name"), | |||
"C1": ctx.Tr("user.static.codemergecount"), | |||
"D1": ctx.Tr("user.static.commitcount"), | |||
"E1": ctx.Tr("user.static.issuecount"), | |||
"F1": ctx.Tr("user.static.commentcount"), | |||
"G1": ctx.Tr("user.static.focusrepocount"), | |||
"H1": ctx.Tr("user.static.starrepocount"), | |||
"I1": ctx.Tr("user.static.logincount"), | |||
"J1": ctx.Tr("user.static.watchedcount"), | |||
"K1": ctx.Tr("user.static.commitcodesize"), | |||
"L1": ctx.Tr("user.static.solveissuecount"), | |||
"M1": ctx.Tr("user.static.encyclopediascount"), | |||
"N1": ctx.Tr("user.static.createrepocount"), | |||
"O1": ctx.Tr("user.static.openiindex"), | |||
"P1": ctx.Tr("user.static.registdate"), | |||
"Q1": ctx.Tr("user.static.CloudBrainTaskNum"), | |||
"R1": ctx.Tr("user.static.CloudBrainRunTime"), | |||
"S1": ctx.Tr("user.static.CommitDatasetNum"), | |||
"T1": ctx.Tr("user.static.CommitModelCount"), | |||
"U1": ctx.Tr("user.static.UserIndex"), | |||
"D1": ctx.Tr("user.static.UserIndex"), | |||
"E1": ctx.Tr("user.static.commitcount"), | |||
"F1": ctx.Tr("user.static.issuecount"), | |||
"G1": ctx.Tr("user.static.commentcount"), | |||
"H1": ctx.Tr("user.static.focusrepocount"), | |||
"I1": ctx.Tr("user.static.starrepocount"), | |||
"J1": ctx.Tr("user.static.logincount"), | |||
"K1": ctx.Tr("user.static.watchedcount"), | |||
"L1": ctx.Tr("user.static.commitcodesize"), | |||
"M1": ctx.Tr("user.static.solveissuecount"), | |||
"N1": ctx.Tr("user.static.encyclopediascount"), | |||
"O1": ctx.Tr("user.static.createrepocount"), | |||
"P1": ctx.Tr("user.static.openiindex"), | |||
"Q1": ctx.Tr("user.static.registdate"), | |||
"R1": ctx.Tr("user.static.CloudBrainTaskNum"), | |||
"S1": ctx.Tr("user.static.CloudBrainRunTime"), | |||
"T1": ctx.Tr("user.static.CommitDatasetNum"), | |||
"U1": ctx.Tr("user.static.CommitModelCount"), | |||
"V1": ctx.Tr("user.static.countdate"), | |||
} | |||
for k, v := range dataHeader { | |||
@@ -274,26 +273,26 @@ func QueryUserStaticDataPage(ctx *context.Context) { | |||
xlsx.SetCellValue(sheetName, "A"+rows, userRecord.ID) | |||
xlsx.SetCellValue(sheetName, "B"+rows, userRecord.Name) | |||
xlsx.SetCellValue(sheetName, "C"+rows, userRecord.CodeMergeCount) | |||
xlsx.SetCellValue(sheetName, "D"+rows, userRecord.CommitCount) | |||
xlsx.SetCellValue(sheetName, "E"+rows, userRecord.IssueCount) | |||
xlsx.SetCellValue(sheetName, "F"+rows, userRecord.CommentCount) | |||
xlsx.SetCellValue(sheetName, "G"+rows, userRecord.FocusRepoCount) | |||
xlsx.SetCellValue(sheetName, "H"+rows, userRecord.StarRepoCount) | |||
xlsx.SetCellValue(sheetName, "I"+rows, userRecord.LoginCount) | |||
xlsx.SetCellValue(sheetName, "J"+rows, userRecord.WatchedCount) | |||
xlsx.SetCellValue(sheetName, "K"+rows, userRecord.CommitCodeSize) | |||
xlsx.SetCellValue(sheetName, "L"+rows, userRecord.SolveIssueCount) | |||
xlsx.SetCellValue(sheetName, "M"+rows, userRecord.EncyclopediasCount) | |||
xlsx.SetCellValue(sheetName, "N"+rows, userRecord.CreateRepoCount) | |||
xlsx.SetCellValue(sheetName, "O"+rows, fmt.Sprintf("%.2f", userRecord.OpenIIndex)) | |||
xlsx.SetCellValue(sheetName, "D"+rows, fmt.Sprintf("%.2f", userRecord.UserIndex)) | |||
xlsx.SetCellValue(sheetName, "E"+rows, userRecord.CommitCount) | |||
xlsx.SetCellValue(sheetName, "F"+rows, userRecord.IssueCount) | |||
xlsx.SetCellValue(sheetName, "G"+rows, userRecord.CommentCount) | |||
xlsx.SetCellValue(sheetName, "H"+rows, userRecord.FocusRepoCount) | |||
xlsx.SetCellValue(sheetName, "I"+rows, userRecord.StarRepoCount) | |||
xlsx.SetCellValue(sheetName, "J"+rows, userRecord.LoginCount) | |||
xlsx.SetCellValue(sheetName, "K"+rows, userRecord.WatchedCount) | |||
xlsx.SetCellValue(sheetName, "L"+rows, userRecord.CommitCodeSize) | |||
xlsx.SetCellValue(sheetName, "M"+rows, userRecord.SolveIssueCount) | |||
xlsx.SetCellValue(sheetName, "N"+rows, userRecord.EncyclopediasCount) | |||
xlsx.SetCellValue(sheetName, "O"+rows, userRecord.CreateRepoCount) | |||
xlsx.SetCellValue(sheetName, "P"+rows, fmt.Sprintf("%.2f", userRecord.OpenIIndex)) | |||
formatTime := userRecord.RegistDate.Format("2006-01-02 15:04:05") | |||
xlsx.SetCellValue(sheetName, "P"+rows, formatTime[0:len(formatTime)-3]) | |||
xlsx.SetCellValue(sheetName, "Q"+rows, userRecord.CloudBrainTaskNum) | |||
xlsx.SetCellValue(sheetName, "R"+rows, fmt.Sprintf("%.2f", float64(userRecord.CloudBrainRunTime)/3600)) | |||
xlsx.SetCellValue(sheetName, "S"+rows, userRecord.CommitDatasetNum) | |||
xlsx.SetCellValue(sheetName, "T"+rows, userRecord.CommitModelCount) | |||
xlsx.SetCellValue(sheetName, "U"+rows, fmt.Sprintf("%.2f", userRecord.UserIndex)) | |||
xlsx.SetCellValue(sheetName, "Q"+rows, formatTime[0:len(formatTime)-3]) | |||
xlsx.SetCellValue(sheetName, "R"+rows, userRecord.CloudBrainTaskNum) | |||
xlsx.SetCellValue(sheetName, "S"+rows, fmt.Sprintf("%.2f", float64(userRecord.CloudBrainRunTime)/3600)) | |||
xlsx.SetCellValue(sheetName, "T"+rows, userRecord.CommitDatasetNum) | |||
xlsx.SetCellValue(sheetName, "U"+rows, userRecord.CommitModelCount) | |||
formatTime = userRecord.DataDate | |||
xlsx.SetCellValue(sheetName, "V"+rows, formatTime) | |||
} | |||
@@ -68,23 +68,23 @@ func SearchApi(ctx *context.Context) { | |||
if OnlySearchLabel { | |||
searchRepoByLabel(ctx, Key, Page, PageSize) | |||
} else { | |||
searchRepo(ctx, "repository-es-index", Key, Page, PageSize, OnlyReturnNum) | |||
searchRepo(ctx, "repository-es-index"+setting.INDEXPOSTFIX, Key, Page, PageSize, OnlyReturnNum) | |||
} | |||
return | |||
} else if TableName == "issue" { | |||
searchIssueOrPr(ctx, "issue-es-index", Key, Page, PageSize, OnlyReturnNum, "f") | |||
searchIssueOrPr(ctx, "issue-es-index"+setting.INDEXPOSTFIX, Key, Page, PageSize, OnlyReturnNum, "f") | |||
return | |||
} else if TableName == "user" { | |||
searchUserOrOrg(ctx, "user-es-index", Key, Page, PageSize, true, OnlyReturnNum) | |||
searchUserOrOrg(ctx, "user-es-index"+setting.INDEXPOSTFIX, Key, Page, PageSize, true, OnlyReturnNum) | |||
return | |||
} else if TableName == "org" { | |||
searchUserOrOrg(ctx, "user-es-index", Key, Page, PageSize, false, OnlyReturnNum) | |||
searchUserOrOrg(ctx, "user-es-index"+setting.INDEXPOSTFIX, Key, Page, PageSize, false, OnlyReturnNum) | |||
return | |||
} else if TableName == "dataset" { | |||
searchDataSet(ctx, "dataset-es-index", Key, Page, PageSize, OnlyReturnNum) | |||
searchDataSet(ctx, "dataset-es-index"+setting.INDEXPOSTFIX, Key, Page, PageSize, OnlyReturnNum) | |||
return | |||
} else if TableName == "pr" { | |||
searchIssueOrPr(ctx, "issue-es-index", Key, Page, PageSize, OnlyReturnNum, "t") | |||
searchIssueOrPr(ctx, "issue-es-index"+setting.INDEXPOSTFIX, Key, Page, PageSize, OnlyReturnNum, "t") | |||
//searchPR(ctx, "issue-es-index", Key, Page, PageSize, OnlyReturnNum) | |||
return | |||
} | |||
@@ -91,19 +91,19 @@ | |||
{{if eq $i 0}} | |||
<li class="wi"> | |||
<div class="org_icon"> | |||
<svg width="20px" height="20px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><defs><path id="rank1_svg__a" d="M13.69 20V9.616h-1.598l-3.139 2.61 1.027 1.218 1.95-1.804V20z"></path></defs><g fill="none" fill-rule="evenodd"><path d="M0 0h32v32H0z"></path><g transform="translate(4 2.667)"><path fill="#D16C11" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#F7C049" cx="12" cy="14.667" r="12"></circle><circle fill="#FEE6AD" cx="12" cy="14.667" r="9.333"></circle><g fill-rule="nonzero"><use fill="#FFF" xlink:href="#rank1_svg__a"></use><use fill="#D74D03" xlink:href="#rank1_svg__a"></use></g></g></g></svg> | |||
<svg width="24px" height="24px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><defs><path id="rank1_svg__a" d="M13.69 20V9.616h-1.598l-3.139 2.61 1.027 1.218 1.95-1.804V20z"></path></defs><g fill="none" fill-rule="evenodd"><path d="M0 0h32v32H0z"></path><g transform="translate(4 2.667)"><path fill="#D16C11" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#F7C049" cx="12" cy="14.667" r="12"></circle><circle fill="#FEE6AD" cx="12" cy="14.667" r="9.333"></circle><g fill-rule="nonzero"><use fill="#FFF" xlink:href="#rank1_svg__a"></use><use fill="#D74D03" xlink:href="#rank1_svg__a"></use></g></g></g></svg> | |||
</div> | |||
</li> | |||
{{else if eq $i 1}} | |||
<li class="wi"> | |||
<div class="org_icon"> | |||
<svg width="20px" height="20px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#305269" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#BDD8F0" cx="12" cy="14.667" r="12"></circle><circle fill="#E1E9FC" cx="12" cy="14.667" r="9.333"></circle><path d="M15.817 20v-1.584h-4.81l3.212-2.977c.469-.43.853-.883 1.151-1.357.298-.474.447-1.039.447-1.694 0-.499-.088-.934-.264-1.305a2.525 2.525 0 00-.718-.917 3.169 3.169 0 00-1.064-.543 4.531 4.531 0 00-1.312-.183c-.47 0-.905.064-1.306.19-.4.128-.753.314-1.056.558-.303.244-.55.55-.74.917-.191.366-.306.79-.345 1.268l1.848.147c.059-.43.23-.772.513-1.027.284-.254.646-.381 1.086-.381.205 0 .398.032.579.095.18.064.34.154.477.272a1.262 1.262 0 01.455.997c0 .176-.035.345-.103.506a2.52 2.52 0 01-.257.462 3.476 3.476 0 01-.345.418c-.127.132-.249.257-.366.374l-4.034 3.901V20h6.952z" fill="#305269" fill-rule="nonzero"></path></g></svg> | |||
<svg width="24px" height="24px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#305269" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#BDD8F0" cx="12" cy="14.667" r="12"></circle><circle fill="#E1E9FC" cx="12" cy="14.667" r="9.333"></circle><path d="M15.817 20v-1.584h-4.81l3.212-2.977c.469-.43.853-.883 1.151-1.357.298-.474.447-1.039.447-1.694 0-.499-.088-.934-.264-1.305a2.525 2.525 0 00-.718-.917 3.169 3.169 0 00-1.064-.543 4.531 4.531 0 00-1.312-.183c-.47 0-.905.064-1.306.19-.4.128-.753.314-1.056.558-.303.244-.55.55-.74.917-.191.366-.306.79-.345 1.268l1.848.147c.059-.43.23-.772.513-1.027.284-.254.646-.381 1.086-.381.205 0 .398.032.579.095.18.064.34.154.477.272a1.262 1.262 0 01.455.997c0 .176-.035.345-.103.506a2.52 2.52 0 01-.257.462 3.476 3.476 0 01-.345.418c-.127.132-.249.257-.366.374l-4.034 3.901V20h6.952z" fill="#305269" fill-rule="nonzero"></path></g></svg> | |||
</div> | |||
</li> | |||
{{else if eq $i 2}} | |||
<li class="wi"> | |||
<div class="org_icon"> | |||
<svg width="20px" height="20px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#865B45" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#E7C5AC" cx="12" cy="14.667" r="12"></circle><circle fill="#FEDDC7" cx="12" cy="14.667" r="9.333"></circle><path d="M12.239 20.176c.46 0 .902-.066 1.327-.198.425-.132.8-.328 1.122-.587.323-.259.58-.579.77-.96.19-.382.286-.822.286-1.32 0-.646-.171-1.203-.513-1.672-.343-.47-.846-.753-1.511-.851v-.03c.557-.136.992-.422 1.305-.857.313-.435.47-.932.47-1.489 0-.46-.09-.863-.272-1.21a2.547 2.547 0 00-.726-.865 3.232 3.232 0 00-1.056-.521 4.521 4.521 0 00-1.276-.176 4.52 4.52 0 00-1.1.132 3.404 3.404 0 00-.968.403 2.79 2.79 0 00-.762.697 3.181 3.181 0 00-.499.997l1.863.499c.127-.362.33-.643.608-.843.279-.2.594-.301.946-.301.44 0 .797.127 1.071.381.274.255.41.582.41.983 0 .313-.058.562-.175.748a1.17 1.17 0 01-.462.425 1.903 1.903 0 01-.646.191 6.09 6.09 0 01-.74.044h-.455v1.584h.425c.264 0 .533.02.807.059.274.039.52.115.74.227.22.112.402.274.543.484.142.21.213.482.213.814a1.533 1.533 0 01-.52 1.18 1.772 1.772 0 01-.558.33 1.88 1.88 0 01-.667.118c-.47 0-.841-.117-1.115-.352s-.464-.567-.572-.997l-1.877.498c.117.43.288.8.513 1.108.225.308.491.56.8.755.307.196.652.34 1.033.433a5.13 5.13 0 001.218.139z" fill="#865B45" fill-rule="nonzero"></path></g></svg> | |||
<svg width="24px" height="24px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#865B45" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#E7C5AC" cx="12" cy="14.667" r="12"></circle><circle fill="#FEDDC7" cx="12" cy="14.667" r="9.333"></circle><path d="M12.239 20.176c.46 0 .902-.066 1.327-.198.425-.132.8-.328 1.122-.587.323-.259.58-.579.77-.96.19-.382.286-.822.286-1.32 0-.646-.171-1.203-.513-1.672-.343-.47-.846-.753-1.511-.851v-.03c.557-.136.992-.422 1.305-.857.313-.435.47-.932.47-1.489 0-.46-.09-.863-.272-1.21a2.547 2.547 0 00-.726-.865 3.232 3.232 0 00-1.056-.521 4.521 4.521 0 00-1.276-.176 4.52 4.52 0 00-1.1.132 3.404 3.404 0 00-.968.403 2.79 2.79 0 00-.762.697 3.181 3.181 0 00-.499.997l1.863.499c.127-.362.33-.643.608-.843.279-.2.594-.301.946-.301.44 0 .797.127 1.071.381.274.255.41.582.41.983 0 .313-.058.562-.175.748a1.17 1.17 0 01-.462.425 1.903 1.903 0 01-.646.191 6.09 6.09 0 01-.74.044h-.455v1.584h.425c.264 0 .533.02.807.059.274.039.52.115.74.227.22.112.402.274.543.484.142.21.213.482.213.814a1.533 1.533 0 01-.52 1.18 1.772 1.772 0 01-.558.33 1.88 1.88 0 01-.667.118c-.47 0-.841-.117-1.115-.352s-.464-.567-.572-.997l-1.877.498c.117.43.288.8.513 1.108.225.308.491.56.8.755.307.196.652.34 1.033.433a5.13 5.13 0 001.218.139z" fill="#865B45" fill-rule="nonzero"></path></g></svg> | |||
</div> | |||
</li> | |||
{{else }} | |||
@@ -139,19 +139,19 @@ | |||
{{if eq $i 0}} | |||
<li class="wi"> | |||
<div class="org_icon"> | |||
<svg width="20px" height="20px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><defs><path id="rank1_svg__a" d="M13.69 20V9.616h-1.598l-3.139 2.61 1.027 1.218 1.95-1.804V20z"></path></defs><g fill="none" fill-rule="evenodd"><path d="M0 0h32v32H0z"></path><g transform="translate(4 2.667)"><path fill="#D16C11" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#F7C049" cx="12" cy="14.667" r="12"></circle><circle fill="#FEE6AD" cx="12" cy="14.667" r="9.333"></circle><g fill-rule="nonzero"><use fill="#FFF" xlink:href="#rank1_svg__a"></use><use fill="#D74D03" xlink:href="#rank1_svg__a"></use></g></g></g></svg> | |||
<svg width="24px" height="24px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><defs><path id="rank1_svg__a" d="M13.69 20V9.616h-1.598l-3.139 2.61 1.027 1.218 1.95-1.804V20z"></path></defs><g fill="none" fill-rule="evenodd"><path d="M0 0h32v32H0z"></path><g transform="translate(4 2.667)"><path fill="#D16C11" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#F7C049" cx="12" cy="14.667" r="12"></circle><circle fill="#FEE6AD" cx="12" cy="14.667" r="9.333"></circle><g fill-rule="nonzero"><use fill="#FFF" xlink:href="#rank1_svg__a"></use><use fill="#D74D03" xlink:href="#rank1_svg__a"></use></g></g></g></svg> | |||
</div> | |||
</li> | |||
{{else if eq $i 1}} | |||
<li class="wi"> | |||
<div class="org_icon"> | |||
<svg width="20px" height="20px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#305269" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#BDD8F0" cx="12" cy="14.667" r="12"></circle><circle fill="#E1E9FC" cx="12" cy="14.667" r="9.333"></circle><path d="M15.817 20v-1.584h-4.81l3.212-2.977c.469-.43.853-.883 1.151-1.357.298-.474.447-1.039.447-1.694 0-.499-.088-.934-.264-1.305a2.525 2.525 0 00-.718-.917 3.169 3.169 0 00-1.064-.543 4.531 4.531 0 00-1.312-.183c-.47 0-.905.064-1.306.19-.4.128-.753.314-1.056.558-.303.244-.55.55-.74.917-.191.366-.306.79-.345 1.268l1.848.147c.059-.43.23-.772.513-1.027.284-.254.646-.381 1.086-.381.205 0 .398.032.579.095.18.064.34.154.477.272a1.262 1.262 0 01.455.997c0 .176-.035.345-.103.506a2.52 2.52 0 01-.257.462 3.476 3.476 0 01-.345.418c-.127.132-.249.257-.366.374l-4.034 3.901V20h6.952z" fill="#305269" fill-rule="nonzero"></path></g></svg> | |||
<svg width="24px" height="24px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#305269" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#BDD8F0" cx="12" cy="14.667" r="12"></circle><circle fill="#E1E9FC" cx="12" cy="14.667" r="9.333"></circle><path d="M15.817 20v-1.584h-4.81l3.212-2.977c.469-.43.853-.883 1.151-1.357.298-.474.447-1.039.447-1.694 0-.499-.088-.934-.264-1.305a2.525 2.525 0 00-.718-.917 3.169 3.169 0 00-1.064-.543 4.531 4.531 0 00-1.312-.183c-.47 0-.905.064-1.306.19-.4.128-.753.314-1.056.558-.303.244-.55.55-.74.917-.191.366-.306.79-.345 1.268l1.848.147c.059-.43.23-.772.513-1.027.284-.254.646-.381 1.086-.381.205 0 .398.032.579.095.18.064.34.154.477.272a1.262 1.262 0 01.455.997c0 .176-.035.345-.103.506a2.52 2.52 0 01-.257.462 3.476 3.476 0 01-.345.418c-.127.132-.249.257-.366.374l-4.034 3.901V20h6.952z" fill="#305269" fill-rule="nonzero"></path></g></svg> | |||
</div> | |||
</li> | |||
{{else if eq $i 2}} | |||
<li class="wi"> | |||
<div class="org_icon"> | |||
<svg width="20px" height="20px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#865B45" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#E7C5AC" cx="12" cy="14.667" r="12"></circle><circle fill="#FEDDC7" cx="12" cy="14.667" r="9.333"></circle><path d="M12.239 20.176c.46 0 .902-.066 1.327-.198.425-.132.8-.328 1.122-.587.323-.259.58-.579.77-.96.19-.382.286-.822.286-1.32 0-.646-.171-1.203-.513-1.672-.343-.47-.846-.753-1.511-.851v-.03c.557-.136.992-.422 1.305-.857.313-.435.47-.932.47-1.489 0-.46-.09-.863-.272-1.21a2.547 2.547 0 00-.726-.865 3.232 3.232 0 00-1.056-.521 4.521 4.521 0 00-1.276-.176 4.52 4.52 0 00-1.1.132 3.404 3.404 0 00-.968.403 2.79 2.79 0 00-.762.697 3.181 3.181 0 00-.499.997l1.863.499c.127-.362.33-.643.608-.843.279-.2.594-.301.946-.301.44 0 .797.127 1.071.381.274.255.41.582.41.983 0 .313-.058.562-.175.748a1.17 1.17 0 01-.462.425 1.903 1.903 0 01-.646.191 6.09 6.09 0 01-.74.044h-.455v1.584h.425c.264 0 .533.02.807.059.274.039.52.115.74.227.22.112.402.274.543.484.142.21.213.482.213.814a1.533 1.533 0 01-.52 1.18 1.772 1.772 0 01-.558.33 1.88 1.88 0 01-.667.118c-.47 0-.841-.117-1.115-.352s-.464-.567-.572-.997l-1.877.498c.117.43.288.8.513 1.108.225.308.491.56.8.755.307.196.652.34 1.033.433a5.13 5.13 0 001.218.139z" fill="#865B45" fill-rule="nonzero"></path></g></svg> | |||
<svg width="24px" height="24px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#865B45" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#E7C5AC" cx="12" cy="14.667" r="12"></circle><circle fill="#FEDDC7" cx="12" cy="14.667" r="9.333"></circle><path d="M12.239 20.176c.46 0 .902-.066 1.327-.198.425-.132.8-.328 1.122-.587.323-.259.58-.579.77-.96.19-.382.286-.822.286-1.32 0-.646-.171-1.203-.513-1.672-.343-.47-.846-.753-1.511-.851v-.03c.557-.136.992-.422 1.305-.857.313-.435.47-.932.47-1.489 0-.46-.09-.863-.272-1.21a2.547 2.547 0 00-.726-.865 3.232 3.232 0 00-1.056-.521 4.521 4.521 0 00-1.276-.176 4.52 4.52 0 00-1.1.132 3.404 3.404 0 00-.968.403 2.79 2.79 0 00-.762.697 3.181 3.181 0 00-.499.997l1.863.499c.127-.362.33-.643.608-.843.279-.2.594-.301.946-.301.44 0 .797.127 1.071.381.274.255.41.582.41.983 0 .313-.058.562-.175.748a1.17 1.17 0 01-.462.425 1.903 1.903 0 01-.646.191 6.09 6.09 0 01-.74.044h-.455v1.584h.425c.264 0 .533.02.807.059.274.039.52.115.74.227.22.112.402.274.543.484.142.21.213.482.213.814a1.533 1.533 0 01-.52 1.18 1.772 1.772 0 01-.558.33 1.88 1.88 0 01-.667.118c-.47 0-.841-.117-1.115-.352s-.464-.567-.572-.997l-1.877.498c.117.43.288.8.513 1.108.225.308.491.56.8.755.307.196.652.34 1.033.433a5.13 5.13 0 001.218.139z" fill="#865B45" fill-rule="nonzero"></path></g></svg> | |||
</div> | |||
</li> | |||
{{else }} | |||
@@ -187,19 +187,19 @@ | |||
{{if eq $i 0}} | |||
<li class="wi"> | |||
<div class="org_icon"> | |||
<svg width="20px" height="20px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><defs><path id="rank1_svg__a" d="M13.69 20V9.616h-1.598l-3.139 2.61 1.027 1.218 1.95-1.804V20z"></path></defs><g fill="none" fill-rule="evenodd"><path d="M0 0h32v32H0z"></path><g transform="translate(4 2.667)"><path fill="#D16C11" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#F7C049" cx="12" cy="14.667" r="12"></circle><circle fill="#FEE6AD" cx="12" cy="14.667" r="9.333"></circle><g fill-rule="nonzero"><use fill="#FFF" xlink:href="#rank1_svg__a"></use><use fill="#D74D03" xlink:href="#rank1_svg__a"></use></g></g></g></svg> | |||
<svg width="24px" height="24px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><defs><path id="rank1_svg__a" d="M13.69 20V9.616h-1.598l-3.139 2.61 1.027 1.218 1.95-1.804V20z"></path></defs><g fill="none" fill-rule="evenodd"><path d="M0 0h32v32H0z"></path><g transform="translate(4 2.667)"><path fill="#D16C11" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#F7C049" cx="12" cy="14.667" r="12"></circle><circle fill="#FEE6AD" cx="12" cy="14.667" r="9.333"></circle><g fill-rule="nonzero"><use fill="#FFF" xlink:href="#rank1_svg__a"></use><use fill="#D74D03" xlink:href="#rank1_svg__a"></use></g></g></g></svg> | |||
</div> | |||
</li> | |||
{{else if eq $i 1}} | |||
<li class="wi"> | |||
<div class="org_icon"> | |||
<svg width="20px" height="20px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#305269" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#BDD8F0" cx="12" cy="14.667" r="12"></circle><circle fill="#E1E9FC" cx="12" cy="14.667" r="9.333"></circle><path d="M15.817 20v-1.584h-4.81l3.212-2.977c.469-.43.853-.883 1.151-1.357.298-.474.447-1.039.447-1.694 0-.499-.088-.934-.264-1.305a2.525 2.525 0 00-.718-.917 3.169 3.169 0 00-1.064-.543 4.531 4.531 0 00-1.312-.183c-.47 0-.905.064-1.306.19-.4.128-.753.314-1.056.558-.303.244-.55.55-.74.917-.191.366-.306.79-.345 1.268l1.848.147c.059-.43.23-.772.513-1.027.284-.254.646-.381 1.086-.381.205 0 .398.032.579.095.18.064.34.154.477.272a1.262 1.262 0 01.455.997c0 .176-.035.345-.103.506a2.52 2.52 0 01-.257.462 3.476 3.476 0 01-.345.418c-.127.132-.249.257-.366.374l-4.034 3.901V20h6.952z" fill="#305269" fill-rule="nonzero"></path></g></svg> | |||
<svg width="24px" height="24px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#305269" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#BDD8F0" cx="12" cy="14.667" r="12"></circle><circle fill="#E1E9FC" cx="12" cy="14.667" r="9.333"></circle><path d="M15.817 20v-1.584h-4.81l3.212-2.977c.469-.43.853-.883 1.151-1.357.298-.474.447-1.039.447-1.694 0-.499-.088-.934-.264-1.305a2.525 2.525 0 00-.718-.917 3.169 3.169 0 00-1.064-.543 4.531 4.531 0 00-1.312-.183c-.47 0-.905.064-1.306.19-.4.128-.753.314-1.056.558-.303.244-.55.55-.74.917-.191.366-.306.79-.345 1.268l1.848.147c.059-.43.23-.772.513-1.027.284-.254.646-.381 1.086-.381.205 0 .398.032.579.095.18.064.34.154.477.272a1.262 1.262 0 01.455.997c0 .176-.035.345-.103.506a2.52 2.52 0 01-.257.462 3.476 3.476 0 01-.345.418c-.127.132-.249.257-.366.374l-4.034 3.901V20h6.952z" fill="#305269" fill-rule="nonzero"></path></g></svg> | |||
</div> | |||
</li> | |||
{{else if eq $i 2}} | |||
<li class="wi"> | |||
<div class="org_icon"> | |||
<svg width="20px" height="20px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#865B45" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#E7C5AC" cx="12" cy="14.667" r="12"></circle><circle fill="#FEDDC7" cx="12" cy="14.667" r="9.333"></circle><path d="M12.239 20.176c.46 0 .902-.066 1.327-.198.425-.132.8-.328 1.122-.587.323-.259.58-.579.77-.96.19-.382.286-.822.286-1.32 0-.646-.171-1.203-.513-1.672-.343-.47-.846-.753-1.511-.851v-.03c.557-.136.992-.422 1.305-.857.313-.435.47-.932.47-1.489 0-.46-.09-.863-.272-1.21a2.547 2.547 0 00-.726-.865 3.232 3.232 0 00-1.056-.521 4.521 4.521 0 00-1.276-.176 4.52 4.52 0 00-1.1.132 3.404 3.404 0 00-.968.403 2.79 2.79 0 00-.762.697 3.181 3.181 0 00-.499.997l1.863.499c.127-.362.33-.643.608-.843.279-.2.594-.301.946-.301.44 0 .797.127 1.071.381.274.255.41.582.41.983 0 .313-.058.562-.175.748a1.17 1.17 0 01-.462.425 1.903 1.903 0 01-.646.191 6.09 6.09 0 01-.74.044h-.455v1.584h.425c.264 0 .533.02.807.059.274.039.52.115.74.227.22.112.402.274.543.484.142.21.213.482.213.814a1.533 1.533 0 01-.52 1.18 1.772 1.772 0 01-.558.33 1.88 1.88 0 01-.667.118c-.47 0-.841-.117-1.115-.352s-.464-.567-.572-.997l-1.877.498c.117.43.288.8.513 1.108.225.308.491.56.8.755.307.196.652.34 1.033.433a5.13 5.13 0 001.218.139z" fill="#865B45" fill-rule="nonzero"></path></g></svg> | |||
<svg width="24px" height="24px" viewBox="0 0 32 32" class="contribution-item-img__2-fih"><g transform="translate(4 2.667)" fill="none" fill-rule="evenodd"><path fill="#865B45" d="M0 0h6.976l5.49 7.642L17.063 0H24L12 16z"></path><circle fill="#E7C5AC" cx="12" cy="14.667" r="12"></circle><circle fill="#FEDDC7" cx="12" cy="14.667" r="9.333"></circle><path d="M12.239 20.176c.46 0 .902-.066 1.327-.198.425-.132.8-.328 1.122-.587.323-.259.58-.579.77-.96.19-.382.286-.822.286-1.32 0-.646-.171-1.203-.513-1.672-.343-.47-.846-.753-1.511-.851v-.03c.557-.136.992-.422 1.305-.857.313-.435.47-.932.47-1.489 0-.46-.09-.863-.272-1.21a2.547 2.547 0 00-.726-.865 3.232 3.232 0 00-1.056-.521 4.521 4.521 0 00-1.276-.176 4.52 4.52 0 00-1.1.132 3.404 3.404 0 00-.968.403 2.79 2.79 0 00-.762.697 3.181 3.181 0 00-.499.997l1.863.499c.127-.362.33-.643.608-.843.279-.2.594-.301.946-.301.44 0 .797.127 1.071.381.274.255.41.582.41.983 0 .313-.058.562-.175.748a1.17 1.17 0 01-.462.425 1.903 1.903 0 01-.646.191 6.09 6.09 0 01-.74.044h-.455v1.584h.425c.264 0 .533.02.807.059.274.039.52.115.74.227.22.112.402.274.543.484.142.21.213.482.213.814a1.533 1.533 0 01-.52 1.18 1.772 1.772 0 01-.558.33 1.88 1.88 0 01-.667.118c-.47 0-.841-.117-1.115-.352s-.464-.567-.572-.997l-1.877.498c.117.43.288.8.513 1.108.225.308.491.56.8.755.307.196.652.34 1.033.433a5.13 5.13 0 001.218.139z" fill="#865B45" fill-rule="nonzero"></path></g></svg> | |||
</div> | |||
</li> | |||
{{else }} | |||
@@ -9,14 +9,14 @@ | |||
<div class="ui sixteen wide computer column list"> | |||
{{ range .Members}} | |||
<div class="item ui grid"> | |||
<div class="ui two wide column"> | |||
<div class="three wide mobile two wide tablet two wide computer column"> | |||
<img class="ui avatar" src="{{.SizedRelAvatarLink 48}}"> | |||
</div> | |||
<div class="ui three wide column"> | |||
<div class="seven wide mobile three wide tablet three wide computer column"> | |||
<div class="meta"><a href="{{.HomeLink}}">{{.Name}}</a></div> | |||
<div class="meta">{{.FullName}}</div> | |||
</div> | |||
<div class="ui four wide column center"> | |||
<div class="ui four wide column center tablet only computer only"> | |||
<div class="meta"> | |||
{{$.i18n.Tr "org.members.membership_visibility"}} | |||
</div> | |||
@@ -31,7 +31,7 @@ | |||
{{end}} | |||
</div> | |||
</div> | |||
<div class="ui three wide column center"> | |||
<div class="five wide mobile three wide tablet three wide computer column"> | |||
<div class="meta"> | |||
{{$.i18n.Tr "org.members.member_role"}} | |||
</div> | |||
@@ -39,7 +39,7 @@ | |||
<strong>{{if index $.MembersIsUserOrgOwner .ID}}{{svg "octicon-shield-lock" 16}} {{$.i18n.Tr "org.members.owner"}}{{else}}{{$.i18n.Tr "org.members.member"}}{{end}}</strong> | |||
</div> | |||
</div> | |||
<div class="ui one wide column center"> | |||
<div class="ui one wide column center tablet only computer only"> | |||
<div class="meta"> | |||
2FA | |||
</div> | |||
@@ -53,7 +53,7 @@ | |||
</strong> | |||
</div> | |||
</div> | |||
<div class="ui three wide column"> | |||
<div class="ui three wide column tablet only computer only"> | |||
<div class="text right"> | |||
{{if eq $.SignedUser.ID .ID}} | |||
<form method="post" action="{{$.OrgLink}}/members/action/leave"> | |||
@@ -9,7 +9,7 @@ | |||
<div class="ui sixteen wide computer column list"> | |||
<div class="ui two column grid"> | |||
<div class="ui stackable two column grid"> | |||
{{range .Teams}} | |||
<div class="column"> | |||
<div class="ui top attached header"> | |||
@@ -31,7 +31,7 @@ | |||
<span slot="label"> | |||
<el-image style="width: 13px; height: 13px" src="/img/pro_rgb.svg"> | |||
</el-image> | |||
云脑分析 | |||
云脑分析(建设中..) | |||
</span> | |||
</el-tab-pane> | |||
</el-tabs> | |||
@@ -26,7 +26,7 @@ import qs from 'qs'; | |||
import createDropzone from '../features/dropzone.js'; | |||
const {_AppSubUrl, _StaticUrlPrefix, csrf} = window.config; | |||
// const uploadtype = 0; | |||
const chunkSize = 1024 * 1024 * 64; | |||
export default { | |||
props:{ | |||
@@ -137,7 +137,6 @@ export default { | |||
resetStatus() { | |||
this.progress = 0; | |||
this.status = ''; | |||
console.log(this.uploadtype) | |||
}, | |||
updateProgress(file, progress) { | |||
console.log("progress---",progress) | |||
@@ -165,7 +164,6 @@ export default { | |||
.getElementById('datasetId') | |||
.getAttribute('datasetId'); | |||
this.resetStatus(); | |||
console.log(this.file,!this.file?.upload) | |||
if(!this.file?.upload){ | |||
this.btnFlag = false | |||
return | |||
@@ -186,7 +184,6 @@ export default { | |||
File.prototype.slice || | |||
File.prototype.mozSlice || | |||
File.prototype.webkitSlice, | |||
chunkSize = 1024 * 1024 * 64, | |||
chunks = Math.ceil(file.size / chunkSize), | |||
spark = new SparkMD5.ArrayBuffer(), | |||
fileReader = new FileReader(); | |||
@@ -327,7 +324,6 @@ export default { | |||
}, | |||
async newMultiUpload(file) { | |||
console.log(this.uploadtype,this) | |||
const res = await axios.get('/attachments/new_multipart', { | |||
params: { | |||
totalChunkCounts: file.totalChunkCounts, | |||
@@ -348,7 +344,6 @@ export default { | |||
File.prototype.slice || | |||
File.prototype.mozSlice || | |||
File.prototype.webkitSlice, | |||
chunkSize = 1024 * 1024 * 32, | |||
chunks = Math.ceil(file.size / chunkSize), | |||
fileReader = new FileReader(), | |||
time = new Date().getTime(); | |||
@@ -457,7 +452,6 @@ export default { | |||
} | |||
async function completeUpload() { | |||
console.log(_this.uploadtype) | |||
return await axios.post( | |||
'/attachments/complete_multipart', | |||
qs.stringify({ | |||
@@ -494,7 +488,6 @@ export default { | |||
1}/${chunks}个分片上传` | |||
); | |||
this.progress = Math.ceil((currentChunk / chunks) * 100); | |||
console.log("((currentChunk / chunks) * 100).toFixed(2)",((currentChunk / chunks) * 100).toFixed(2)) | |||
this.updateProgress(file, ((currentChunk / chunks) * 100).toFixed(2)); | |||
this.status = `${this.dropzoneParams.data('uploading')} ${( | |||
(currentChunk / chunks) * | |||
@@ -67,6 +67,15 @@ | |||
label="PR数" | |||
align="center"> | |||
</el-table-column> | |||
<el-table-column | |||
prop="UserIndex" | |||
label="用户指数" | |||
width="120px" | |||
align="center"> | |||
<template slot-scope="scope"> | |||
{{scope.row.UserIndex | rounding}} | |||
</template> | |||
</el-table-column> | |||
<el-table-column | |||
prop="CommitCount" | |||
label="commit数" | |||
@@ -161,15 +170,7 @@ | |||
width="120px" | |||
align="center"> | |||
</el-table-column> | |||
<el-table-column | |||
prop="UserIndex" | |||
label="用户指数" | |||
width="120px" | |||
align="center"> | |||
<template slot-scope="scope"> | |||
{{scope.row.UserIndex | rounding}} | |||
</template> | |||
</el-table-column> | |||
<el-table-column | |||
prop="DataDate" | |||
label="系统统计时间" | |||
@@ -761,7 +761,7 @@ display: block; | |||
padding-top: 0; | |||
padding-bottom: 0; | |||
} | |||
.ui.attached:not(.message)+.ui.attached.segment:not(.top){ | |||
.repository .ui.attached:not(.message)+.ui.attached.segment:not(.top){ | |||
border: none; | |||
} | |||
.markdown:not(code).file-view{ | |||