| @@ -353,7 +353,7 @@ func GetMilestonesByRepoID(repoID int64, state api.StateType, listOptions ListOp | |||||
| } | } | ||||
| miles := make([]*Milestone, 0, listOptions.PageSize) | miles := make([]*Milestone, 0, listOptions.PageSize) | ||||
| return miles, sess.Asc("deadline_unix").Asc("id").Find(&miles) | |||||
| return miles, sess.Desc("id").Find(&miles) | |||||
| } | } | ||||
| // GetMilestones returns a list of milestones of given repository and status. | // GetMilestones returns a list of milestones of given repository and status. | ||||
| @@ -778,6 +778,10 @@ datasets = Datasets | |||||
| datasets.desc = Enable Dataset | datasets.desc = Enable Dataset | ||||
| cloudbrain_helper=Use GPU/NPU resources to open notebooks, model training tasks, etc. | cloudbrain_helper=Use GPU/NPU resources to open notebooks, model training tasks, etc. | ||||
| model_manager = Model | |||||
| model_noright=No right | |||||
| model_rename=Duplicate model name, please modify model name. | |||||
| debug=Debug | debug=Debug | ||||
| stop=Stop | stop=Stop | ||||
| delete=Delete | delete=Delete | ||||
| @@ -1127,6 +1131,7 @@ issues.filter_label_exclude = `Use <code>alt</code> + <code>click/enter</code> t | |||||
| issues.filter_label_no_select = All labels | issues.filter_label_no_select = All labels | ||||
| issues.filter_milestone = Milestone | issues.filter_milestone = Milestone | ||||
| issues.filter_milestone_no_select = All milestones | issues.filter_milestone_no_select = All milestones | ||||
| issues.filter_milestone_no_add = Not add milestones | |||||
| issues.filter_assignee = Assignee | issues.filter_assignee = Assignee | ||||
| issues.filter_assginee_no_select = All assignees | issues.filter_assginee_no_select = All assignees | ||||
| issues.filter_type = Type | issues.filter_type = Type | ||||
| @@ -784,6 +784,7 @@ cloudbrain_helper=使用GPU/NPU资源,开启Notebook、模型训练任务等 | |||||
| model_manager = 模型 | model_manager = 模型 | ||||
| model_noright=无权限操作 | model_noright=无权限操作 | ||||
| model_rename=模型名称重复,请修改模型名称 | |||||
| debug=调试 | debug=调试 | ||||
| stop=停止 | stop=停止 | ||||
| @@ -1140,6 +1141,7 @@ issues.filter_label_exclude=`使用 <code>alt</code> + <code>鼠标左键 / 回 | |||||
| issues.filter_label_no_select=所有标签 | issues.filter_label_no_select=所有标签 | ||||
| issues.filter_milestone=里程碑筛选 | issues.filter_milestone=里程碑筛选 | ||||
| issues.filter_milestone_no_select=所有里程碑 | issues.filter_milestone_no_select=所有里程碑 | ||||
| issues.filter_milestone_no_add=未添加里程碑 | |||||
| issues.filter_assignee=指派人筛选 | issues.filter_assignee=指派人筛选 | ||||
| issues.filter_assginee_no_select=所有指派成员 | issues.filter_assginee_no_select=所有指派成员 | ||||
| issues.filter_type=类型筛选 | issues.filter_type=类型筛选 | ||||
| @@ -105,6 +105,23 @@ func saveModelByParameters(jobId string, versionName string, name string, versio | |||||
| return nil | return nil | ||||
| } | } | ||||
| func SaveNewNameModel(ctx *context.Context) { | |||||
| name := ctx.Query("Name") | |||||
| if name == "" { | |||||
| ctx.Error(500, fmt.Sprintf("name or version is null.")) | |||||
| return | |||||
| } | |||||
| aimodels := models.QueryModelByName(name, ctx.Repo.Repository.ID) | |||||
| if len(aimodels) > 0 { | |||||
| ctx.Error(500, ctx.Tr("repo.model_rename")) | |||||
| return | |||||
| } | |||||
| SaveModel(ctx) | |||||
| log.Info("save model end.") | |||||
| } | |||||
| func SaveModel(ctx *context.Context) { | func SaveModel(ctx *context.Context) { | ||||
| log.Info("save model start.") | log.Info("save model start.") | ||||
| JobId := ctx.Query("JobId") | JobId := ctx.Query("JobId") | ||||
| @@ -357,7 +357,8 @@ func Issues(ctx *context.Context) { | |||||
| var err error | var err error | ||||
| // Get milestones. | // Get milestones. | ||||
| ctx.Data["Milestones"], err = models.GetMilestonesByRepoID(ctx.Repo.Repository.ID, api.StateAll, models.ListOptions{}) | |||||
| ctx.Data["OpenMilestones"], err = models.GetMilestonesByRepoID(ctx.Repo.Repository.ID, api.StateOpen, models.ListOptions{}) | |||||
| ctx.Data["ClosedMilestones"], err = models.GetMilestonesByRepoID(ctx.Repo.Repository.ID, api.StateClosed, models.ListOptions{}) | |||||
| if err != nil { | if err != nil { | ||||
| ctx.ServerError("GetAllRepoMilestones", err) | ctx.ServerError("GetAllRepoMilestones", err) | ||||
| return | return | ||||
| @@ -268,6 +268,7 @@ func MilestoneIssuesAndPulls(ctx *context.Context) { | |||||
| ctx.Data["CanWriteIssues"] = ctx.Repo.CanWriteIssuesOrPulls(false) | ctx.Data["CanWriteIssues"] = ctx.Repo.CanWriteIssuesOrPulls(false) | ||||
| ctx.Data["CanWritePulls"] = ctx.Repo.CanWriteIssuesOrPulls(true) | ctx.Data["CanWritePulls"] = ctx.Repo.CanWriteIssuesOrPulls(true) | ||||
| ctx.Data["PageIsIssueList"] = true | |||||
| ctx.HTML(200, tplMilestoneIssues) | ctx.HTML(200, tplMilestoneIssues) | ||||
| } | } | ||||
| @@ -274,7 +274,7 @@ func NotebookDel(ctx *context.Context) { | |||||
| return | return | ||||
| } | } | ||||
| if task.Status != string(models.JobStopped) { | |||||
| if task.Status != string(models.ModelArtsCreateFailed) && task.Status != string(models.ModelArtsStartFailed) && task.Status != string(models.ModelArtsStopped){ | |||||
| log.Error("the job(%s) has not been stopped", task.JobName) | log.Error("the job(%s) has not been stopped", task.JobName) | ||||
| ctx.ServerError("the job has not been stopped", errors.New("the job has not been stopped")) | ctx.ServerError("the job has not been stopped", errors.New("the job has not been stopped")) | ||||
| return | return | ||||
| @@ -977,6 +977,7 @@ func RegisterRoutes(m *macaron.Macaron) { | |||||
| }, context.RepoRef()) | }, context.RepoRef()) | ||||
| m.Group("/modelmanage", func() { | m.Group("/modelmanage", func() { | ||||
| m.Post("/create_model", reqRepoModelManageWriter, repo.SaveModel) | m.Post("/create_model", reqRepoModelManageWriter, repo.SaveModel) | ||||
| m.Post("/create_new_model", reqRepoModelManageWriter, repo.SaveNewNameModel) | |||||
| m.Delete("/delete_model", repo.DeleteModel) | m.Delete("/delete_model", repo.DeleteModel) | ||||
| m.Put("/modify_model", repo.ModifyModelInfo) | m.Put("/modify_model", repo.ModifyModelInfo) | ||||
| m.Get("/show_model", reqRepoModelManageReader, repo.ShowModelTemplate) | m.Get("/show_model", reqRepoModelManageReader, repo.ShowModelTemplate) | ||||
| @@ -337,7 +337,8 @@ | |||||
| {{end}} | {{end}} | ||||
| <div class="ui right"> | <div class="ui right"> | ||||
| <a class="membersmore text grey" href="{{.RepoLink}}/contributors">全部 {{svg "octicon-chevron-right" 16}}</a> | |||||
| <!-- <a class="membersmore text grey" href="{{.RepoLink}}/contributors">全部 {{svg "octicon-chevron-right" 16}}</a> --> | |||||
| <a class="membersmore text grey" href="{{.RepoLink}}/contributors?type={{if .IsViewBranch}}branch{{else}}tag{{end}}&name={{.BranchName}}">全部 {{svg "octicon-chevron-right" 16}}</a> | |||||
| </div> | </div> | ||||
| </h4> | </h4> | ||||
| <div class="ui members" id="contributorInfo"> | <div class="ui members" id="contributorInfo"> | ||||
| @@ -1,3 +1,11 @@ | |||||
| <style> | |||||
| .repository .filter.menu.labels .svg{ | |||||
| margin-right: 2px !important; | |||||
| } | |||||
| .ovfl{ | |||||
| overflow-y:hidden !important; | |||||
| } | |||||
| </style> | |||||
| {{template "base/head" .}} | {{template "base/head" .}} | ||||
| <div class="repository"> | <div class="repository"> | ||||
| {{template "repo/header" .}} | {{template "repo/header" .}} | ||||
| @@ -57,16 +65,41 @@ | |||||
| </div> | </div> | ||||
| <!-- Milestone --> | <!-- Milestone --> | ||||
| <div class="ui {{if not .Milestones}}disabled{{end}} dropdown jump item"> | |||||
| <div class="ui {{if and (not .OpenMilestones) (not .ClosedMilestones)}}disabled{{end}} dropdown jump item"> | |||||
| <span class="text"> | <span class="text"> | ||||
| {{.i18n.Tr "repo.issues.filter_milestone"}} | {{.i18n.Tr "repo.issues.filter_milestone"}} | ||||
| <i class="dropdown icon"></i> | <i class="dropdown icon"></i> | ||||
| </span> | </span> | ||||
| <div class="menu"> | <div class="menu"> | ||||
| <a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_milestone_no_select"}}</a> | <a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_milestone_no_select"}}</a> | ||||
| {{range .Milestones}} | |||||
| <a class="{{if eq $.MilestoneID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.ID}}&assignee={{$.AssigneeID}}">{{.Name}}</a> | |||||
| {{end}} | |||||
| <a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone=-1&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_milestone_no_add"}}</a> | |||||
| {{if .OpenMilestones}} | |||||
| <div class="divider" ></div> | |||||
| <div class="header ovfl" > | |||||
| {{svg "octicon-milestone" 12 }} | |||||
| {{.i18n.Tr "repo.issues.new.open_milestone"}} | |||||
| </div> | |||||
| {{range .OpenMilestones}} | |||||
| <a class="{{if eq $.MilestoneID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.ID}}&assignee={{$.AssigneeID}}"> | |||||
| {{.Name}} | |||||
| </a> | |||||
| {{end}} | |||||
| {{end}} | |||||
| {{if .ClosedMilestones}} | |||||
| <div class="divider"></div> | |||||
| <div class="header ovfl" > | |||||
| {{svg "octicon-milestone" 12}} | |||||
| {{.i18n.Tr "repo.issues.new.closed_milestone"}} | |||||
| </div> | |||||
| {{range .ClosedMilestones}} | |||||
| <a class="{{if eq $.MilestoneID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.ID}}&assignee={{$.AssigneeID}}"> | |||||
| {{.Name}} | |||||
| </a> | |||||
| {{end}} | |||||
| {{end}} | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -45,6 +45,8 @@ export default { | |||||
| data() { | data() { | ||||
| return { | return { | ||||
| url:'', | url:'', | ||||
| url_infor:'', | |||||
| href_:'', | |||||
| contributors_list:[], | contributors_list:[], | ||||
| contributors_list_page:[], | contributors_list_page:[], | ||||
| currentPage:1, | currentPage:1, | ||||
| @@ -56,7 +58,7 @@ export default { | |||||
| methods: { | methods: { | ||||
| getContributorsList(){ | getContributorsList(){ | ||||
| this.$axios.get(this.url+'/list').then((res)=>{ | |||||
| this.$axios.get(this.url+'/list?'+this.url_infor).then((res)=>{ | |||||
| this.contributors_list = res.data.contributor_info | this.contributors_list = res.data.contributor_info | ||||
| this.totalNum = this.contributors_list.length | this.totalNum = this.contributors_list.length | ||||
| this.contributors_list_page = this.contributors_list.slice(0,this.pageSize) | this.contributors_list_page = this.contributors_list.slice(0,this.pageSize) | ||||
| @@ -78,6 +80,10 @@ created(){ | |||||
| this.url = url; | this.url = url; | ||||
| let strIndex = this.url.indexOf("contributors") | let strIndex = this.url.indexOf("contributors") | ||||
| this.url_code = this.url.substr(0,strIndex) | this.url_code = this.url.substr(0,strIndex) | ||||
| this.href_ = window.location.href; | |||||
| let index = this.href_.indexOf("?") | |||||
| this.url_infor = this.href_.substring(index+1,this.href_.length) | |||||
| this.getContributorsList() | this.getContributorsList() | ||||
| }, | }, | ||||
| @@ -52,7 +52,7 @@ export default { | |||||
| previewTemplate += | previewTemplate += | ||||
| ' <span data-dz-name data-dz-thumbnail></span>'; | ' <span data-dz-name data-dz-thumbnail></span>'; | ||||
| previewTemplate += ' </div>\n '; | previewTemplate += ' </div>\n '; | ||||
| previewTemplate += ' <div class="dz-size" data-dz-size></div>\n '; | |||||
| previewTemplate += ' <div class="dz-size" data-dz-size style="white-space: nowrap"></div>\n '; | |||||
| previewTemplate += ' </div>\n '; | previewTemplate += ' </div>\n '; | ||||
| previewTemplate += ' <div class="dz-progress ui active progress">'; | previewTemplate += ' <div class="dz-progress ui active progress">'; | ||||
| previewTemplate += | previewTemplate += | ||||
| @@ -53,7 +53,7 @@ export default { | |||||
| previewTemplate += | previewTemplate += | ||||
| ' <span data-dz-name data-dz-thumbnail></span>'; | ' <span data-dz-name data-dz-thumbnail></span>'; | ||||
| previewTemplate += ' </div>\n '; | previewTemplate += ' </div>\n '; | ||||
| previewTemplate += ' <div class="dz-size" data-dz-size></div>\n '; | |||||
| previewTemplate += ' <div class="dz-size" data-dz-size style="white-space: nowrap"></div>\n '; | |||||
| previewTemplate += ' </div>\n '; | previewTemplate += ' </div>\n '; | ||||
| previewTemplate += ' <div class="dz-progress ui active progress">'; | previewTemplate += ' <div class="dz-progress ui active progress">'; | ||||
| previewTemplate += | previewTemplate += | ||||