Reviewed-on: https://git.openi.org.cn/OpenI/aiforge/pulls/2504 Reviewed-by: chenshihai <chenshh@pcl.ac.cn>pull/2526/head
@@ -3,13 +3,12 @@ | |||||
{{$gpuQueue := 0}} | {{$gpuQueue := 0}} | ||||
{{range $k,$v :=.gpu_types}} | {{range $k,$v :=.gpu_types}} | ||||
{{if eq $k 0}} | {{if eq $k 0}} | ||||
{{ $queue := $v.Queue }} | |||||
{{ $queue = $v.Queue }} | |||||
{{ end }} | {{ end }} | ||||
{{ end }} | {{ end }} | ||||
{{ range $k,$v :=.QueuesDetail }} | {{ range $k,$v :=.QueuesDetail }} | ||||
{{if eq $k $queue}} | {{if eq $k $queue}} | ||||
{{$gpuQueue :=$v}} | |||||
{{$gpuQueue =$v}} | |||||
{{ end }} | {{ end }} | ||||
{{ end }} | {{ end }} | ||||
<i | <i | ||||
@@ -236,7 +236,7 @@ | |||||
</h4> | </h4> | ||||
{{range $k ,$v := .version_list_task}} | {{range $k ,$v := .version_list_task}} | ||||
<div class="ui accordion border-according" id="accordion{{.VersionName}}" | <div class="ui accordion border-according" id="accordion{{.VersionName}}" | ||||
data-repopath="{{$.RepoRelPath}}/modelarts/train-job" data-jobid="{{.JobID}}" | |||||
data-repopath="{{$.RepoRelPath}}/grampus/train-job" data-jobid="{{.JobID}}" | |||||
data-version="{{.VersionName}}"> | data-version="{{.VersionName}}"> | ||||
<div class="{{if eq $k 0}}active{{end}} title padding0"> | <div class="{{if eq $k 0}}active{{end}} title padding0"> | ||||
<div class="according-panel-heading"> | <div class="according-panel-heading"> | ||||
@@ -270,9 +270,9 @@ | |||||
class="cti-mgRight-sm">{{$.i18n.Tr "repo.modelarts.train_job.dura_time"}}:</span> | class="cti-mgRight-sm">{{$.i18n.Tr "repo.modelarts.train_job.dura_time"}}:</span> | ||||
<span class="cti-mgRight-sm uc-accordionTitle-black" | <span class="cti-mgRight-sm uc-accordionTitle-black" | ||||
id="{{.VersionName}}-duration-span">{{.TrainJobDuration}}</span> | id="{{.VersionName}}-duration-span">{{.TrainJobDuration}}</span> | ||||
<span data-tooltip="刷新" style="cursor: pointer;" data-inverted="" | |||||
onclick="refreshStatus({{.VersionName}})"><i | |||||
class="redo icon redo-color"></i></span> | |||||
<span id="refresh-status" data-tooltip="刷新" style="cursor: pointer;" data-inverted="" data-version="{{.VersionName}}"> | |||||
<i class="redo icon redo-color"></i> | |||||
</span> | |||||
</div> | </div> | ||||
<div style="float: right;"> | <div style="float: right;"> | ||||
@@ -871,64 +871,7 @@ | |||||
size = size.toFixed(0);//保留的小数位数 | size = size.toFixed(0);//保留的小数位数 | ||||
return size + unitArr[index]; | return size + unitArr[index]; | ||||
} | } | ||||
function refreshStatus(version_name) { | |||||
$.get(`/api/v1/repos/${userName}/${repoPath}/grampus/train-job/${jobID}?version_name=${version_name}`, (data) => { | |||||
// header status and duration | |||||
$(`#${version_name}-duration-span`).text(data.JobDuration) | |||||
$(`#${version_name}-status-span span`).text(data.JobStatus) | |||||
$(`#${version_name}-status-span i`).attr("class", data.JobStatus) | |||||
// detail status and duration | |||||
$('#' + version_name + '-duration').text(data.JobDuration) | |||||
$('#' + version_name + '-status').text(data.JobStatus) | |||||
$('#' + version_name + '-ai_center').text(data.AiCenter) | |||||
loadLog(version_name) | |||||
}).fail(function (err) { | |||||
console.log(err); | |||||
}); | |||||
stopBubbling(arguments.callee.caller.arguments[0]) | |||||
} | |||||
function deleteVersion(version_name) { | |||||
stopBubbling(arguments.callee.caller.arguments[0]) | |||||
let flag = 1; | |||||
$('.ui.basic.modal').modal({ | |||||
onDeny: function () { | |||||
flag = false | |||||
}, | |||||
onApprove: function () { | |||||
$.post(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/del_version`, { version_name: version_name }, (data) => { | |||||
if (data.VersionListCount === 0) { | |||||
location.href = `/${userName}/${repoPath}/modelarts/train-job` | |||||
} else { | |||||
$('#accordion' + version_name).remove() | |||||
} | |||||
}).fail(function (err) { | |||||
console.log(err); | |||||
}); | |||||
flag = true | |||||
}, | |||||
onHidden: function () { | |||||
if (flag == false) { | |||||
$('.alert').html('您已取消操作').removeClass('alert-success').addClass('alert-danger').show().delay(1500).fadeOut(); | |||||
} | |||||
} | |||||
}) | |||||
.modal('show') | |||||
} | |||||
function stopVersion(version_name) { | |||||
stopBubbling(arguments.callee.caller.arguments[0]) | |||||
$.post(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/stop_version`, { version_name: version_name }, (data) => { | |||||
if (data.StatusOK === 0) { | |||||
$('#' + version_name + '-stop').addClass('disabled') | |||||
refreshStatus(version_name) | |||||
} | |||||
}).fail(function (err) { | |||||
console.log(err); | |||||
}); | |||||
} | |||||
function loadLog(version_name) { | function loadLog(version_name) { | ||||
document.getElementById("mask").style.display = "block" | document.getElementById("mask").style.display = "block" | ||||
$.get(`/api/v1/repos/${userName}/${repoPath}/grampus/train-job/${jobID}/log?version_name=${version_name}&lines=50&order=asc`, (data) => { | $.get(`/api/v1/repos/${userName}/${repoPath}/grampus/train-job/${jobID}/log?version_name=${version_name}&lines=50&order=asc`, (data) => { | ||||
@@ -270,12 +270,14 @@ | |||||
{{end}} | {{end}} | ||||
{{if .CanDel}} | {{if .CanDel}} | ||||
<a class="ti-action-menu-item {{if eq .Status "KILLED" "FAILED" "START_FAILED" "KILLING" "COMPLETED"}}disabled {{end}}" | |||||
<a class="ti-action-menu-item stop-show-version {{if eq .Status "KILLED" "FAILED" "START_FAILED" "KILLING" "COMPLETED"}}disabled {{end}}" | |||||
id="{{.VersionName}}-stop" | id="{{.VersionName}}-stop" | ||||
onclick="stopVersion({{.VersionName}})">{{$.i18n.Tr "repo.stop"}}</a> | |||||
data-jobid="{{.JobID}}" | |||||
data-repopath="{{$.RepoRelPath}}/modelarts/train-job" | |||||
data-version = "{{.VersionName}}" | |||||
>{{$.i18n.Tr "repo.stop"}}</a> | |||||
{{else}} | {{else}} | ||||
<a class="ti-action-menu-item disabled" id="{{.VersionName}}-stop" | |||||
onclick="stopVersion({{.VersionName}})">{{$.i18n.Tr "repo.stop"}}</a> | |||||
<a class="ti-action-menu-item disabled" id="{{.VersionName}}-stop">{{$.i18n.Tr "repo.stop"}}</a> | |||||
{{end}} | {{end}} | ||||
@@ -308,10 +310,9 @@ | |||||
class="cti-mgRight-sm">{{$.i18n.Tr "repo.modelarts.train_job.dura_time"}}:</span> | class="cti-mgRight-sm">{{$.i18n.Tr "repo.modelarts.train_job.dura_time"}}:</span> | ||||
<span class="cti-mgRight-sm uc-accordionTitle-black" | <span class="cti-mgRight-sm uc-accordionTitle-black" | ||||
id="{{.VersionName}}-duration-span">{{.TrainJobDuration}}</span> | id="{{.VersionName}}-duration-span">{{.TrainJobDuration}}</span> | ||||
<span data-tooltip="刷新" style="cursor: pointer;" data-inverted="" | |||||
onclick="refreshStatus({{.VersionName}})"><i | |||||
class="redo icon redo-color"></i></span> | |||||
<span id="refresh-status" data-tooltip="刷新" style="cursor: pointer;" data-inverted="" data-version="{{.VersionName}}"> | |||||
<i class="redo icon redo-color"></i> | |||||
</span> | |||||
</div> | </div> | ||||
</span> | </span> | ||||
</span> | </span> | ||||
@@ -877,28 +878,6 @@ | |||||
$('#name').val(modelName) | $('#name').val(modelName) | ||||
$('#version').val("0.0.1") | $('#version').val("0.0.1") | ||||
} | } | ||||
function refreshStatus(version_name) { | |||||
$.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}?version_name=${version_name}`, (data) => { | |||||
// header status and duration | |||||
$(`#${version_name}-duration-span`).text(data.JobDuration) | |||||
$(`#${version_name}-status-span span`).text(data.JobStatus) | |||||
$(`#${version_name}-status-span i`).attr("class", data.JobStatus) | |||||
// detail status and duration | |||||
$('#' + version_name + '-duration').text(data.JobDuration) | |||||
$('#' + version_name + '-status').text(data.JobStatus) | |||||
console.log(data) | |||||
if (["KILLED", "FAILED", "START_FAILED", "STOPPED", "COMPLETED"].includes(data.JobStatus)) { | |||||
$('#' + version_name + '-stop').addClass('disabled') | |||||
} | |||||
loadLog(version_name) | |||||
}).fail(function (err) { | |||||
console.log(err); | |||||
}); | |||||
stopBubbling(arguments.callee.caller.arguments[0]) | |||||
} | |||||
function deleteVersion(version_name) { | function deleteVersion(version_name) { | ||||
stopBubbling(arguments.callee.caller.arguments[0]) | stopBubbling(arguments.callee.caller.arguments[0]) | ||||
let flag = 1; | let flag = 1; | ||||
@@ -928,17 +907,7 @@ | |||||
.modal('show') | .modal('show') | ||||
} | } | ||||
function stopVersion(version_name) { | |||||
stopBubbling(arguments.callee.caller.arguments[0]) | |||||
$.post(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/stop_version`, { version_name: version_name }, (data) => { | |||||
if (data.StatusOK === 0) { | |||||
$('#' + version_name + '-stop').addClass('disabled') | |||||
refreshStatus(version_name) | |||||
} | |||||
}).fail(function (err) { | |||||
console.log(err); | |||||
}); | |||||
} | |||||
function loadLog(version_name) { | function loadLog(version_name) { | ||||
$.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&lines=50&order=asc`, (data) => { | $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&lines=50&order=asc`, (data) => { | ||||
$('input[name=end_line]').val(data.EndLine) | $('input[name=end_line]').val(data.EndLine) | ||||
@@ -327,6 +327,23 @@ export default async function initCloudrain() { | |||||
}); | }); | ||||
} | } | ||||
$(".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(); | |||||
}); | |||||
$("#refresh-status").click(function (e) { | $("#refresh-status").click(function (e) { | ||||
let version_name = $(this).data("version"); | let version_name = $(this).data("version"); | ||||
let ID = $(`#accordion${version_name}`).data("jobid"); | let ID = $(`#accordion${version_name}`).data("jobid"); | ||||
@@ -339,11 +356,16 @@ export default async function initCloudrain() { | |||||
$.get( | $.get( | ||||
`/api/v1/repos/${repoPath}/${ID}?version_name=${version_name}`, | `/api/v1/repos/${repoPath}/${ID}?version_name=${version_name}`, | ||||
(data) => { | (data) => { | ||||
//accroding下的状态 | |||||
$(`#${version_name}-status-span span`).text(data.JobStatus); | $(`#${version_name}-status-span span`).text(data.JobStatus); | ||||
//accroding下的状态图标 | |||||
$(`#${version_name}-status-span i`).attr("class", data.JobStatus); | $(`#${version_name}-status-span i`).attr("class", data.JobStatus); | ||||
//accroding下的运行时长 | |||||
$(`#${version_name}-duration-span`).text(data.JobDuration); | $(`#${version_name}-duration-span`).text(data.JobDuration); | ||||
$("#" + versionname + "-duration").text(data.JobDuration); | |||||
$("#" + versionname + "-status").text(data.JobStatus); | |||||
//配置信息详情页的状态 | |||||
$(`#${version_name}-status`).text(data.JobStatus); | |||||
//配置信息详情页的状态 | |||||
$(`#${version_name}-duration`).text(data.JobDuration); | |||||
} | } | ||||
).fail(function (err) { | ).fail(function (err) { | ||||
console.log(err); | console.log(err); | ||||