diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index 306854af3..b0ff7e9b8 100755 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -882,6 +882,11 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/cloudbrain", func() { m.Get("/:id", repo.GetCloudbrainTask) m.Get("/:id/log", repo.CloudbrainGetLog) + m.Group("/train-job", func() { + m.Group("/:jobid", func() { + m.Get("/model_list", repo.CloudBrainModelList) + }) + }) }, reqRepoReader(models.UnitTypeCloudBrain)) m.Group("/modelarts", func() { m.Group("/notebook", func() { diff --git a/routers/api/v1/repo/cloudbrain.go b/routers/api/v1/repo/cloudbrain.go index f92259c3d..e0e229606 100755 --- a/routers/api/v1/repo/cloudbrain.go +++ b/routers/api/v1/repo/cloudbrain.go @@ -6,15 +6,18 @@ package repo import ( + "encoding/json" "net/http" "sort" + "strings" "time" - "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/cloudbrain" "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/storage" + routerRepo "code.gitea.io/gitea/routers/repo" ) // cloudbrain get job task by jobid @@ -152,3 +155,55 @@ func CloudbrainGetLog(ctx *context.Context) { return } + +func CloudBrainModelList(ctx *context.APIContext) { + var ( + err error + ) + + var jobID = ctx.Params(":jobid") + var versionName = ctx.Query("version_name") + parentDir := ctx.Query("parentDir") + dirArray := strings.Split(parentDir, "/") + + task, err := models.GetCloudbrainByJobIDAndVersionName(jobID, versionName) + if err != nil { + log.Error("GetCloudbrainByJobID(%s) failed:%v", task.JobName, err.Error()) + return + } + + //get dirs + dirs, err := routerRepo.GetModelDirs(task.JobName, parentDir) + if err != nil { + log.Error("GetModelDirs failed:%v", err.Error(), ctx.Data["msgID"]) + ctx.ServerError("GetModelDirs failed:", err) + return + } + + var fileInfos []storage.FileInfo + err = json.Unmarshal([]byte(dirs), &fileInfos) + if err != nil { + log.Error("json.Unmarshal failed:%v", err.Error(), ctx.Data["msgID"]) + ctx.ServerError("json.Unmarshal failed:", err) + return + } + + for i, fileInfo := range fileInfos { + temp, _ := time.Parse("2006-01-02 15:04:05", fileInfo.ModTime) + fileInfos[i].ModTime = temp.Local().Format("2006-01-02 15:04:05") + } + + sort.Slice(fileInfos, func(i, j int) bool { + return fileInfos[i].ModTime > fileInfos[j].ModTime + }) + + ctx.JSON(http.StatusOK, map[string]interface{}{ + "JobID": jobID, + "VersionName": versionName, + "StatusOK": 0, + "Path": dirArray, + "Dirs": fileInfos, + "task": task, + "PageIsCloudBrain": true, + }) +} diff --git a/routers/api/v1/repo/modelarts.go b/routers/api/v1/repo/modelarts.go index 25c28ae20..0f6f74827 100755 --- a/routers/api/v1/repo/modelarts.go +++ b/routers/api/v1/repo/modelarts.go @@ -6,18 +6,17 @@ package repo import ( - "code.gitea.io/gitea/modules/cloudbrain" "net/http" "strconv" "strings" - "code.gitea.io/gitea/modules/util" - "code.gitea.io/gitea/models" + "code.gitea.io/gitea/modules/cloudbrain" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/modelarts" "code.gitea.io/gitea/modules/storage" + "code.gitea.io/gitea/modules/util" routerRepo "code.gitea.io/gitea/routers/repo" ) diff --git a/templates/repo/cloudbrain/trainjob/show.tmpl b/templates/repo/cloudbrain/trainjob/show.tmpl index 660df28fb..b6a0eadc7 100755 --- a/templates/repo/cloudbrain/trainjob/show.tmpl +++ b/templates/repo/cloudbrain/trainjob/show.tmpl @@ -215,6 +215,7 @@ td, th {
@@ -355,6 +356,19 @@ td, th {
+ +
+ + + +
+ +
+
@@ -419,5 +433,120 @@ td, th { document.getElementById("mask").style.display = "none" }); } + function loadModelFile(version_name,parents,filename,init){ + parents = parents || '' + filename = filename || '' + init = init || '' + $.get(`/api/v1/repos/${userName}/${repoPath}/cloudbrain/train-job/${jobID}/model_list?version_name=${version_name}&parentDir=${parents}`, (data) => { + $(`#dir_list${version_name}`).empty() + renderDir(data,version_name) + if(init==="init"){ + $(`input[name=model${version_name}]`).val("") + $(`input[name=modelback${version_name}]`).val(version_name) + $(`#file_breadcrumb${version_name}`).empty() + let htmlBread = "" + htmlBread += `
${version_name}
` + htmlBread += "
/
" + $(`#file_breadcrumb${version_name}`).append(htmlBread) + }else{ + renderBrend(version_name,parents,filename,init) + } + }).fail(function(err) { + console.log(err,version_name); + }); + + } + function renderBrend(version_name,parents,filename,init){ + if(init=="folder"){ + let htmlBrend = "" + let sectionName=$(`#file_breadcrumb${version_name} .active.section`).text() + let parents1 = $(`input[name=model${version_name}]`).val() + let filename1 = $(`input[name=modelback${version_name}]`).val() + if(parents1===""){ + $(`#file_breadcrumb${version_name} .active.section`).replaceWith(`${sectionName}`) + }else{ + $(`#file_breadcrumb${version_name} .active.section`).replaceWith(`${sectionName}`) + } + + htmlBrend += `
${filename}
` + htmlBrend += "
/
" + $(`#file_breadcrumb${version_name}`).append(htmlBrend) + $(`input[name=model${version_name}]`).val(parents) + $(`input[name=modelback${version_name}]`).val(filename) + }else{ + $(`input[name=model${version_name}]`).val(parents) + $(`input[name=modelback${version_name}]`).val(filename) + $(`#file_breadcrumb${version_name} a.section:contains(${filename})`).nextAll().remove() + $(`#file_breadcrumb${version_name} a.section:contains(${filename})`).replaceWith(`
${filename}
`) + $(`#file_breadcrumb${version_name} div.section:contains(${filename})`).append("
/
") + } + + } + function renderDir(data,version_name){ + let html="" + html += "
" + html += "
" + html += "
" + html += "
" + html += "" + html += '' + // html += "" + for(let i=0;i` + html += "" + data.Dirs[i].FileName + "" + }else{ + if(downlaodFlag){ + html += `` + } + else{ + html += `` + } + html += "" + data.Dirs[i].FileName + "" + } + html += '' + html += "" + html += "" + html += "" + + html += "" + html += "" + + } + html += "" + html += "
" + if(data.Dirs[i].IsDir){ + html += "" + }else{ + html += ""+ `${dirs_size}` + "" + } + + html += "" + html += "" + data.Dirs[i].ModTime + "" + html += "
" + html += "
" + html += "
" + html += "
" + html += "
" + $(`#dir_list${version_name}`).append(html) + } + function renderSize(value){ + if(null==value||value==''){ + return "0 Bytes"; + } + var unitArr = new Array("Bytes","KB","MB","GB","TB","PB","EB","ZB","YB"); + var index=0; + var srcsize = parseFloat(value); + index=Math.floor(Math.log(srcsize)/Math.log(1024)); + var size =srcsize/Math.pow(1024,index); + size=size.toFixed(0);//保留的小数位数 + return size+unitArr[index]; + } \ No newline at end of file