| @@ -349,25 +349,24 @@ func searchRepo(ctx *context.Context, TableName string, Key string, Page int, Pa | |||||
| func setForkRepoOrder(esresult *SearchRes, SortBy string) { | func setForkRepoOrder(esresult *SearchRes, SortBy string) { | ||||
| if SortBy == "default" || SortBy == "" { | if SortBy == "default" || SortBy == "" { | ||||
| return | |||||
| } | |||||
| forkidMap := make(map[string]int, 0) | |||||
| for index, re := range esresult.Result { | |||||
| if re["fork_id"] != nil { | |||||
| fork_id := re["fork_id"].(string) | |||||
| if _, ok := forkidMap[fork_id]; !ok { | |||||
| forkidMap[fork_id] = index | |||||
| forkidMap := make(map[string]int, 0) | |||||
| for index, re := range esresult.Result { | |||||
| if re["fork_id"] != nil { | |||||
| fork_id := re["fork_id"].(string) | |||||
| if _, ok := forkidMap[fork_id]; !ok { | |||||
| forkidMap[fork_id] = index | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | |||||
| for key, value := range forkidMap { | |||||
| for index, re := range esresult.Result { | |||||
| if re["id"].(string) == key { | |||||
| if value < index { //swap | |||||
| tmp := esresult.Result[index] | |||||
| esresult.Result[index] = esresult.Result[value] | |||||
| esresult.Result[value] = tmp | |||||
| break | |||||
| for key, value := range forkidMap { | |||||
| for index, re := range esresult.Result { | |||||
| if re["id"].(string) == key { | |||||
| if value < index { //swap | |||||
| tmp := esresult.Result[index] | |||||
| esresult.Result[index] = esresult.Result[value] | |||||
| esresult.Result[value] = tmp | |||||
| break | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -413,7 +413,7 @@ | |||||
| <div class="text-span text-span-w" | <div class="text-span text-span-w" | ||||
| id="{{.VersionName}}-BenchmarkTypeName"> | id="{{.VersionName}}-BenchmarkTypeName"> | ||||
| {{range $m ,$n := $.datasetDownload}} | {{range $m ,$n := $.datasetDownload}} | ||||
| <a href="{{.RepositoryLink}}">{{.DatasetName}}</a> | |||||
| <a href="{{.RepositoryLink}}" target="_blank">{{.DatasetName}}</a> | |||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| </td> | </td> | ||||
| @@ -702,7 +702,7 @@ | |||||
| hideMenu(); | hideMenu(); | ||||
| } | } | ||||
| } | } | ||||
| let dirKey="isOnlyDir--:&"; | |||||
| function loadSelectedModelFile(trainJob){ | function loadSelectedModelFile(trainJob){ | ||||
| console.log("trainJob=" + trainJob); | console.log("trainJob=" + trainJob); | ||||
| $('#choice_file').dropdown('clear') | $('#choice_file').dropdown('clear') | ||||
| @@ -717,7 +717,7 @@ | |||||
| var zNodes=[]; | var zNodes=[]; | ||||
| var nodesMap={}; | var nodesMap={}; | ||||
| for (let i=0;i<n_length;i++){ | for (let i=0;i<n_length;i++){ | ||||
| parentNodeMap = nodesMap; | |||||
| var parentNodeMap = nodesMap; | |||||
| var fileSplits = data[i].FileName.split("/"); | var fileSplits = data[i].FileName.split("/"); | ||||
| for(let j=0;j < fileSplits.length;j++){ | for(let j=0;j < fileSplits.length;j++){ | ||||
| if(fileSplits[j] == ""){ | if(fileSplits[j] == ""){ | ||||
| @@ -726,7 +726,22 @@ | |||||
| if(parentNodeMap[fileSplits[j]] == null){ | if(parentNodeMap[fileSplits[j]] == null){ | ||||
| parentNodeMap[fileSplits[j]] = {}; | parentNodeMap[fileSplits[j]] = {}; | ||||
| } | } | ||||
| parentNodeMap = parentNodeMap[fileSplits[j]] | |||||
| parentNodeMap = parentNodeMap[fileSplits[j]]; | |||||
| } | |||||
| } | |||||
| for (let i=0;i<n_length;i++){ | |||||
| var parentNodeMap = nodesMap; | |||||
| var fileSplits = data[i].FileName.split("/"); | |||||
| for(let j=0;j < fileSplits.length;j++){ | |||||
| if(fileSplits[j] == ""){ | |||||
| if(data[i].FileName[data[i].FileName.length -1] =="/"){ | |||||
| if(Object.keys(parentNodeMap).length ==0){ | |||||
| parentNodeMap[dirKey]="true"; | |||||
| } | |||||
| } | |||||
| break; | |||||
| } | |||||
| parentNodeMap = parentNodeMap[fileSplits[j]]; | |||||
| } | } | ||||
| } | } | ||||
| convertToNode(zNodes,nodesMap); | convertToNode(zNodes,nodesMap); | ||||
| @@ -746,12 +761,17 @@ | |||||
| node["name"] = keyList[i]; | node["name"] = keyList[i]; | ||||
| nodeList.push(node); | nodeList.push(node); | ||||
| if(nodesMap[keyList[i]] != null && Object.keys(nodesMap[keyList[i]]).length >0){ | if(nodesMap[keyList[i]] != null && Object.keys(nodesMap[keyList[i]]).length >0){ | ||||
| node["children"]=[]; | |||||
| if(isFirst){ | |||||
| node["open"] = true; | |||||
| isFirst= false; | |||||
| if(nodesMap[keyList[i]][dirKey] != null){ | |||||
| node["open"] = false; | |||||
| node["isParent"] = true; | |||||
| }else{ | |||||
| node["children"]=[]; | |||||
| if(isFirst){ | |||||
| node["open"] = true; | |||||
| isFirst= false; | |||||
| } | |||||
| convertToNode(node["children"],nodesMap[keyList[i]]); | |||||
| } | } | ||||
| convertToNode(node["children"],nodesMap[keyList[i]]); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -691,7 +691,7 @@ | |||||
| hideMenu(); | hideMenu(); | ||||
| } | } | ||||
| } | } | ||||
| let dirKey="isOnlyDir--:&"; | |||||
| function loadSelectedModelFile(trainJob){ | function loadSelectedModelFile(trainJob){ | ||||
| console.log("trainJob=" + trainJob); | console.log("trainJob=" + trainJob); | ||||
| $('#choice_file').dropdown('clear') | $('#choice_file').dropdown('clear') | ||||
| @@ -714,7 +714,7 @@ | |||||
| var zNodes=[]; | var zNodes=[]; | ||||
| var nodesMap={}; | var nodesMap={}; | ||||
| for (let i=0;i<n_length;i++){ | for (let i=0;i<n_length;i++){ | ||||
| parentNodeMap = nodesMap; | |||||
| var parentNodeMap = nodesMap; | |||||
| var fileSplits = data[i].FileName.split("/"); | var fileSplits = data[i].FileName.split("/"); | ||||
| for(let j=0;j < fileSplits.length;j++){ | for(let j=0;j < fileSplits.length;j++){ | ||||
| if(fileSplits[j] == ""){ | if(fileSplits[j] == ""){ | ||||
| @@ -723,7 +723,22 @@ | |||||
| if(parentNodeMap[fileSplits[j]] == null){ | if(parentNodeMap[fileSplits[j]] == null){ | ||||
| parentNodeMap[fileSplits[j]] = {}; | parentNodeMap[fileSplits[j]] = {}; | ||||
| } | } | ||||
| parentNodeMap = parentNodeMap[fileSplits[j]] | |||||
| parentNodeMap = parentNodeMap[fileSplits[j]]; | |||||
| } | |||||
| } | |||||
| for (let i=0;i<n_length;i++){ | |||||
| var parentNodeMap = nodesMap; | |||||
| var fileSplits = data[i].FileName.split("/"); | |||||
| for(let j=0;j < fileSplits.length;j++){ | |||||
| if(fileSplits[j] == ""){ | |||||
| if(data[i].FileName[data[i].FileName.length -1] =="/"){ | |||||
| if(Object.keys(parentNodeMap).length ==0){ | |||||
| parentNodeMap[dirKey]="true"; | |||||
| } | |||||
| } | |||||
| break; | |||||
| } | |||||
| parentNodeMap = parentNodeMap[fileSplits[j]]; | |||||
| } | } | ||||
| } | } | ||||
| convertToNode(zNodes,nodesMap); | convertToNode(zNodes,nodesMap); | ||||
| @@ -743,12 +758,17 @@ | |||||
| node["name"] = keyList[i]; | node["name"] = keyList[i]; | ||||
| nodeList.push(node); | nodeList.push(node); | ||||
| if(nodesMap[keyList[i]] != null && Object.keys(nodesMap[keyList[i]]).length >0){ | if(nodesMap[keyList[i]] != null && Object.keys(nodesMap[keyList[i]]).length >0){ | ||||
| node["children"]=[]; | |||||
| if(isFirst){ | |||||
| node["open"] = true; | |||||
| isFirst= false; | |||||
| if(nodesMap[keyList[i]][dirKey] != null){ | |||||
| node["open"] = false; | |||||
| node["isParent"] = true; | |||||
| }else{ | |||||
| node["children"]=[]; | |||||
| if(isFirst){ | |||||
| node["open"] = true; | |||||
| isFirst= false; | |||||
| } | |||||
| convertToNode(node["children"],nodesMap[keyList[i]]); | |||||
| } | } | ||||
| convertToNode(node["children"],nodesMap[keyList[i]]); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -729,7 +729,7 @@ | |||||
| hideMenu(); | hideMenu(); | ||||
| } | } | ||||
| } | } | ||||
| let dirKey="isOnlyDir--:&"; | |||||
| function loadSelectedModelFile(trainJob){ | function loadSelectedModelFile(trainJob){ | ||||
| console.log("trainJob=" + trainJob); | console.log("trainJob=" + trainJob); | ||||
| $('#choice_file').dropdown('clear') | $('#choice_file').dropdown('clear') | ||||
| @@ -744,7 +744,7 @@ | |||||
| var zNodes=[]; | var zNodes=[]; | ||||
| var nodesMap={}; | var nodesMap={}; | ||||
| for (let i=0;i<n_length;i++){ | for (let i=0;i<n_length;i++){ | ||||
| parentNodeMap = nodesMap; | |||||
| var parentNodeMap = nodesMap; | |||||
| var fileSplits = data[i].FileName.split("/"); | var fileSplits = data[i].FileName.split("/"); | ||||
| for(let j=0;j < fileSplits.length;j++){ | for(let j=0;j < fileSplits.length;j++){ | ||||
| if(fileSplits[j] == ""){ | if(fileSplits[j] == ""){ | ||||
| @@ -753,7 +753,22 @@ | |||||
| if(parentNodeMap[fileSplits[j]] == null){ | if(parentNodeMap[fileSplits[j]] == null){ | ||||
| parentNodeMap[fileSplits[j]] = {}; | parentNodeMap[fileSplits[j]] = {}; | ||||
| } | } | ||||
| parentNodeMap = parentNodeMap[fileSplits[j]] | |||||
| parentNodeMap = parentNodeMap[fileSplits[j]]; | |||||
| } | |||||
| } | |||||
| for (let i=0;i<n_length;i++){ | |||||
| var parentNodeMap = nodesMap; | |||||
| var fileSplits = data[i].FileName.split("/"); | |||||
| for(let j=0;j < fileSplits.length;j++){ | |||||
| if(fileSplits[j] == ""){ | |||||
| if(data[i].FileName[data[i].FileName.length -1] =="/"){ | |||||
| if(Object.keys(parentNodeMap).length ==0){ | |||||
| parentNodeMap[dirKey]="true"; | |||||
| } | |||||
| } | |||||
| break; | |||||
| } | |||||
| parentNodeMap = parentNodeMap[fileSplits[j]]; | |||||
| } | } | ||||
| } | } | ||||
| convertToNode(zNodes,nodesMap); | convertToNode(zNodes,nodesMap); | ||||
| @@ -773,12 +788,17 @@ | |||||
| node["name"] = keyList[i]; | node["name"] = keyList[i]; | ||||
| nodeList.push(node); | nodeList.push(node); | ||||
| if(nodesMap[keyList[i]] != null && Object.keys(nodesMap[keyList[i]]).length >0){ | if(nodesMap[keyList[i]] != null && Object.keys(nodesMap[keyList[i]]).length >0){ | ||||
| node["children"]=[]; | |||||
| if(isFirst){ | |||||
| node["open"] = true; | |||||
| isFirst= false; | |||||
| if(nodesMap[keyList[i]][dirKey] != null){ | |||||
| node["open"] = false; | |||||
| node["isParent"] = true; | |||||
| }else{ | |||||
| node["children"]=[]; | |||||
| if(isFirst){ | |||||
| node["open"] = true; | |||||
| isFirst= false; | |||||
| } | |||||
| convertToNode(node["children"],nodesMap[keyList[i]]); | |||||
| } | } | ||||
| convertToNode(node["children"],nodesMap[keyList[i]]); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -127,7 +127,7 @@ | |||||
| <tr> | <tr> | ||||
| <td class="ti-text-form-label text-width80">训练任务</td> | <td class="ti-text-form-label text-width80">训练任务</td> | ||||
| <td class="ti-text-form-content word-elipsis"> | <td class="ti-text-form-content word-elipsis"> | ||||
| <a id="DisplayJobNameHref" class="title" style="font-size: 14px;"> | |||||
| <a id="DisplayJobNameHref" class="title" style="font-size: 14px;" target="_blank"> | |||||
| <span id="DisplayJobName" class="fitted" style="width: 90%;vertical-align: middle;"></span> | <span id="DisplayJobName" class="fitted" style="width: 90%;vertical-align: middle;"></span> | ||||
| </a> | </a> | ||||
| </td> | </td> | ||||
| @@ -720,7 +720,7 @@ export default { | |||||
| } | } | ||||
| .datast-upload-progress .dataset-name { | .datast-upload-progress .dataset-name { | ||||
| text-align: right; | text-align: right; | ||||
| width: 120px; | |||||
| width: 200px; | |||||
| margin-right: 1rem; | margin-right: 1rem; | ||||
| } | } | ||||
| .datast-upload-progress .dataset-progress { | .datast-upload-progress .dataset-progress { | ||||
| @@ -197,7 +197,22 @@ export default async function initCloudrainSow() { | |||||
| $(`.log-info-${version_name} .log_bottom`).trigger("click"); | $(`.log-info-${version_name} .log_bottom`).trigger("click"); | ||||
| e.stopPropagation(); | e.stopPropagation(); | ||||
| }); | }); | ||||
| $(".stop-show-version").click(function (e) { | |||||
| const ID = this.dataset.jobid; | |||||
| const repoPath = this.dataset.repopath; | |||||
| const version_name = this.dataset.version; | |||||
| const url = `/api/v1/repos/${repoPath}/${ID}/stop_version`; | |||||
| $.post(url, { version_name: version_name }, (data) => { | |||||
| if (data.StatusOK === 0) { | |||||
| $(`#${version_name}-stop`).removeClass("blue"); | |||||
| $(`#${version_name}-stop`).addClass("disabled"); | |||||
| refreshStatusShow(version_name, ID, repoPath); | |||||
| } | |||||
| }).fail(function (err) { | |||||
| console.log(err); | |||||
| }); | |||||
| e.stopPropagation(); | |||||
| }); | |||||
| function refreshStatusShow(version_name, ID, repoPath) { | function refreshStatusShow(version_name, ID, repoPath) { | ||||
| $.get( | $.get( | ||||
| `/api/v1/repos/${repoPath}/${ID}?version_name=${version_name}`, | `/api/v1/repos/${repoPath}/${ID}?version_name=${version_name}`, | ||||
| @@ -329,24 +329,6 @@ export default async function initCloudrain() { | |||||
| console.log(err); | console.log(err); | ||||
| }); | }); | ||||
| } | } | ||||
| $(".stop-show-version").click(function (e) { | |||||
| const ID = this.dataset.jobid; | |||||
| const repoPath = this.dataset.repopath; | |||||
| const version_name = this.dataset.version; | |||||
| const url = `/api/v1/repos/${repoPath}/${ID}/stop_version`; | |||||
| $.post(url, { version_name: version_name }, (data) => { | |||||
| if (data.StatusOK === 0) { | |||||
| $(`#${version_name}-stop`).removeClass("blue"); | |||||
| $(`#${version_name}-stop`).addClass("disabled"); | |||||
| refreshStatusShow(version_name, ID, repoPath); | |||||
| } | |||||
| }).fail(function (err) { | |||||
| console.log(err); | |||||
| }); | |||||
| e.stopPropagation(); | |||||
| }); | |||||
| function refreshStatus(version_name, ID, repoPath) { | function refreshStatus(version_name, ID, repoPath) { | ||||
| const url = `/api/v1/repos/${repoPath}/${ID}/?version_name${version_name}`; | const url = `/api/v1/repos/${repoPath}/${ID}/?version_name${version_name}`; | ||||
| $.get(url, (data) => { | $.get(url, (data) => { | ||||