|
|
|
@@ -1,187 +1,6 @@ |
|
|
|
<!-- 头部导航栏 --> |
|
|
|
{{template "base/head" .}} |
|
|
|
|
|
|
|
<style> |
|
|
|
.selectcloudbrain .active.item{ |
|
|
|
color: #0087f5 !important; |
|
|
|
border: 1px solid #0087f5; |
|
|
|
margin: -1px; |
|
|
|
background: #FFF !important; |
|
|
|
} |
|
|
|
#deletemodel { |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
} |
|
|
|
/* 弹窗 */ |
|
|
|
|
|
|
|
#mask { |
|
|
|
position: fixed; |
|
|
|
top: 0px; |
|
|
|
left: 0px; |
|
|
|
right: 0px; |
|
|
|
bottom: 0px; |
|
|
|
filter: alpha(opacity=60); |
|
|
|
background-color: #777; |
|
|
|
z-index: 1000; |
|
|
|
display: none; |
|
|
|
opacity: 0.8; |
|
|
|
-moz-opacity: 0.5; |
|
|
|
padding-top: 100px; |
|
|
|
color: #000000 |
|
|
|
} |
|
|
|
|
|
|
|
#loadingPage { |
|
|
|
margin: 200px auto; |
|
|
|
width: 50px; |
|
|
|
height: 40px; |
|
|
|
text-align: center; |
|
|
|
font-size: 10px; |
|
|
|
display: block; |
|
|
|
} |
|
|
|
|
|
|
|
#loadingPage>div { |
|
|
|
background-color: green; |
|
|
|
height: 100%; |
|
|
|
width: 6px; |
|
|
|
display: inline-block; |
|
|
|
-webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out; |
|
|
|
animation: sk-stretchdelay 1.2s infinite ease-in-out; |
|
|
|
} |
|
|
|
|
|
|
|
#loadingPage .rect2 { |
|
|
|
-webkit-animation-delay: -1.1s; |
|
|
|
animation-delay: -1.1s; |
|
|
|
} |
|
|
|
|
|
|
|
#loadingPage .rect3 { |
|
|
|
-webkit-animation-delay: -1.0s; |
|
|
|
animation-delay: -1.0s; |
|
|
|
} |
|
|
|
|
|
|
|
#loadingPage .rect4 { |
|
|
|
-webkit-animation-delay: -0.9s; |
|
|
|
animation-delay: -0.9s; |
|
|
|
} |
|
|
|
|
|
|
|
#loadingPage .rect5 { |
|
|
|
-webkit-animation-delay: -0.8s; |
|
|
|
animation-delay: -0.8s; |
|
|
|
} |
|
|
|
|
|
|
|
@-webkit-keyframes sk-stretchdelay { |
|
|
|
0%, |
|
|
|
40%, |
|
|
|
100% { |
|
|
|
-webkit-transform: scaleY(0.4) |
|
|
|
} |
|
|
|
20% { |
|
|
|
-webkit-transform: scaleY(1.0) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@keyframes sk-stretchdelay { |
|
|
|
0%, |
|
|
|
40%, |
|
|
|
100% { |
|
|
|
transform: scaleY(0.4); |
|
|
|
-webkit-transform: scaleY(0.4); |
|
|
|
} |
|
|
|
20% { |
|
|
|
transform: scaleY(1.0); |
|
|
|
-webkit-transform: scaleY(1.0); |
|
|
|
} |
|
|
|
} |
|
|
|
/* 消息框 */ |
|
|
|
|
|
|
|
.alert { |
|
|
|
display: none; |
|
|
|
position: fixed; |
|
|
|
width: 100%; |
|
|
|
z-index: 1001; |
|
|
|
padding: 15px; |
|
|
|
border: 1px solid transparent; |
|
|
|
border-radius: 4px; |
|
|
|
text-align: center; |
|
|
|
font-weight: bold; |
|
|
|
} |
|
|
|
|
|
|
|
.alert-success { |
|
|
|
color: #3c763d; |
|
|
|
background-color: #dff0d8; |
|
|
|
border-color: #d6e9c6; |
|
|
|
} |
|
|
|
|
|
|
|
.alert-info { |
|
|
|
color: #31708f; |
|
|
|
background-color: #d9edf7; |
|
|
|
border-color: #bce8f1; |
|
|
|
} |
|
|
|
|
|
|
|
.alert-warning { |
|
|
|
color: #8a6d3b; |
|
|
|
background-color: #fcf8e3; |
|
|
|
border-color: #faebcc; |
|
|
|
} |
|
|
|
|
|
|
|
.alert-danger { |
|
|
|
color: #a94442; |
|
|
|
background-color: #f2dede; |
|
|
|
border-color: #ebccd1; |
|
|
|
} |
|
|
|
|
|
|
|
.pusher { |
|
|
|
width: calc(100% - 260px); |
|
|
|
box-sizing: border-box; |
|
|
|
} |
|
|
|
/* 弹窗 (background) */ |
|
|
|
|
|
|
|
#imageModal { |
|
|
|
display: none; |
|
|
|
position: fixed; |
|
|
|
z-index: 1; |
|
|
|
left: 0; |
|
|
|
top: 0; |
|
|
|
width: 100%; |
|
|
|
height: 100%; |
|
|
|
overflow: auto; |
|
|
|
background-color: rgb(0, 0, 0); |
|
|
|
background-color: rgba(0, 0, 0, 0.4); |
|
|
|
} |
|
|
|
/* 弹窗内容 */ |
|
|
|
|
|
|
|
.modal-content { |
|
|
|
background-color: #fefefe; |
|
|
|
margin: 15% auto; |
|
|
|
padding: 20px; |
|
|
|
border: 1px solid #888; |
|
|
|
width: 30%; |
|
|
|
} |
|
|
|
/* 关闭按钮 */ |
|
|
|
|
|
|
|
.close { |
|
|
|
color: #aaa; |
|
|
|
float: right; |
|
|
|
font-size: 28px; |
|
|
|
font-weight: bold; |
|
|
|
} |
|
|
|
|
|
|
|
.close:hover, |
|
|
|
.close:focus { |
|
|
|
color: black; |
|
|
|
text-decoration: none; |
|
|
|
cursor: pointer; |
|
|
|
} |
|
|
|
|
|
|
|
.dis { |
|
|
|
margin-bottom: 20px; |
|
|
|
} |
|
|
|
|
|
|
|
.disabled { |
|
|
|
cursor: pointer; |
|
|
|
pointer-events: none; |
|
|
|
} |
|
|
|
</style> |
|
|
|
|
|
|
|
<!-- 弹窗 --> |
|
|
|
<div id="mask"> |
|
|
|
<div id="loadingPage"> |
|
|
|
@@ -201,72 +20,49 @@ |
|
|
|
<!-- 列表容器 --> |
|
|
|
<div class="ui container"> |
|
|
|
{{template "base/alert" .}} |
|
|
|
|
|
|
|
<div class="ui two column stackable grid "> |
|
|
|
<div class="column"> |
|
|
|
<div class="ui blue small menu compact selectcloudbrain"> |
|
|
|
<a class="active item" href="{{.RepoLink}}/modelarts/notebook">调试任务</a> |
|
|
|
<a class="item" href="{{.RepoLink}}/modelarts/train-job">训练任务</a> |
|
|
|
<a class="item" href="{{.RepoLink}}/modelmanage/">模型管理</a> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="column right aligned"> |
|
|
|
|
|
|
|
<div class="ui selection dropdown" style="min-width: 10em;min-height:2.6em;border-radius: .28571429rem;margin-right: 1em;padding: .67em 3.2em .7em 1em;"> |
|
|
|
{{svg "octicon-server" 16}} |
|
|
|
<div class="default text" style="color: rgba(0,0,0,.87);"> Ascend NPU</div> |
|
|
|
<i class="dropdown icon"></i> |
|
|
|
<div class="menu"> |
|
|
|
<a class="item" href="{{.RepoLink}}/cloudbrain" data-value="11">CPU / GPU</a> |
|
|
|
<a class="item" href="{{.RepoLink}}/modelarts" data-value="22">Ascend NPU</a> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<a class="ui green button" href="{{.RepoLink}}/modelarts/create">新建调试任务</a> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="column"></div> |
|
|
|
<div class="column right aligned"> |
|
|
|
{{if .Permission.CanWrite $.UnitTypeCloudBrain}} |
|
|
|
<a class="ui green button" href="{{.RepoLink}}/modelarts/train-job/create">{{$.i18n.Tr "repo.modelarts.train_job.new_train"}}</a>{{end}} |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 中下列表展示区 --> |
|
|
|
<div class="ui grid"> |
|
|
|
<div class="row"> |
|
|
|
<div class="ui sixteen wide column"> |
|
|
|
|
|
|
|
<!-- 排序区 --> |
|
|
|
<!-- <div class="ui sixteen wide column"> |
|
|
|
<div class="ui two column stackable grid"> |
|
|
|
<div class="column"> |
|
|
|
</div> |
|
|
|
<div class="column right aligned"> |
|
|
|
<div class="ui right dropdown type jump item"> |
|
|
|
<span class="text"> |
|
|
|
{{.i18n.Tr "repo.issues.filter_sort"}}<i class="dropdown icon"></i> |
|
|
|
</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> --> |
|
|
|
|
|
|
|
<!-- 任务展示 --> |
|
|
|
<div class="dataset list"> |
|
|
|
|
|
|
|
<!-- 表头 --> |
|
|
|
<!-- 表头 --> |
|
|
|
<div class="ui grid stackable" style="background: #f0f0f0;;"> |
|
|
|
<div class="row"> |
|
|
|
<div class="five wide column"> |
|
|
|
<div class="three wide column padding0"> |
|
|
|
<span style="margin:0 6px">{{$.i18n.Tr "repo.cloudbrain_task"}}</span> |
|
|
|
</div> |
|
|
|
<div class="three wide column"> |
|
|
|
<span>{{$.i18n.Tr "repo.cloudbrain_status_createtime"}}</span> |
|
|
|
<div class="one wide column text center padding0"> |
|
|
|
<span style="margin:0 6px">{{$.i18n.Tr "repo.modelarts.version_nums"}}</span> |
|
|
|
</div> |
|
|
|
<div class="one wide column text center padding0"> |
|
|
|
<span style="margin:0 6px">{{$.i18n.Tr "repo.modelarts.version_nums"}}</span> |
|
|
|
</div> |
|
|
|
<div class="two wide column text center padding0"> |
|
|
|
<span>{{$.i18n.Tr "repo.modelarts.createtime"}}</span> |
|
|
|
</div> |
|
|
|
<div class="two wide column"> |
|
|
|
<span>{{$.i18n.Tr "repo.cloudbrain_status_runtime"}}</span> |
|
|
|
<div class="two wide column text center padding0"> |
|
|
|
<span>{{$.i18n.Tr "repo.modelarts.createtime"}}</span> |
|
|
|
</div> |
|
|
|
<div class="one wide column text center"> |
|
|
|
<div class="two wide column text center padding0"> |
|
|
|
<span>{{$.i18n.Tr "repo.modelarts.computing_resources"}}</span> |
|
|
|
</div> |
|
|
|
<div class="two wide column text center padding0"> |
|
|
|
<span>{{$.i18n.Tr "repo.modelarts.createtime"}}</span> |
|
|
|
</div> |
|
|
|
<div class="one wide column text center padding0"> |
|
|
|
<span>{{$.i18n.Tr "repo.cloudbrain_creator"}}</span> |
|
|
|
</div> |
|
|
|
<div class="five wide column text center"> |
|
|
|
<span style="margin-left: 6rem;">{{$.i18n.Tr "repo.cloudbrain_operate"}}</span> |
|
|
|
<div class="three wide column text center padding0"> |
|
|
|
<span>{{$.i18n.Tr "repo.cloudbrain_operate"}}</span> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
@@ -280,57 +76,86 @@ |
|
|
|
<div class="row"> |
|
|
|
|
|
|
|
<!-- 任务名 --> |
|
|
|
<div class="five wide column"> |
|
|
|
<a class="title" href="{{$.Link}}/{{.ID}}" title="{{.Name}}" style="font-size: 15px;"> |
|
|
|
<div class="three wide column padding0"> |
|
|
|
<a class="title" href="{{$.Link}}/{{.JobID}}" title="{{.JobName}}" style="font-size: 12px;"> |
|
|
|
<span class="fitted" style="vertical-align: middle;">{{svg "octicon-tasklist" 16}}</span> |
|
|
|
<span class="fitted" style="width: 90%;vertical-align: middle;margin-left: 0.4rem;">{{.Name}}</span> |
|
|
|
<span class="fitted" style="width: 90%;vertical-align: middle;margin-left: 0.4rem;">{{.JobName}}</span> |
|
|
|
</a> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="three wide column"> |
|
|
|
<!--任务状态 --> |
|
|
|
|
|
|
|
<span class="job-status" id="{{.ID}}" data-jobid="{{.ID}}"> |
|
|
|
<span><i id="{{.ID}}-icon" style="vertical-align: middle;" class="{{.Status}}"></i><span id="{{.ID}}-text" style="margin-left: 0.4em;font-size: 12px;">{{.Status}}</span></span> |
|
|
|
<!-- 版本数量 --> |
|
|
|
<div class="one wide column text center padding0"> |
|
|
|
<span>{{.VersionCount}} </span> |
|
|
|
</div> |
|
|
|
<!-- 任务状态 --> |
|
|
|
<div class="two wide column padding0" style="padding-left: 2.2rem !important;"> |
|
|
|
<span class="job-status" id="{{.JobID}}" data-repopath="{{$.RepoRelPath}}" data-jobid="{{.JobID}}" data-version="{{.VersionName}}"> |
|
|
|
<span><i id="{{.JobID}}-icon" style="vertical-align: middle;" class="{{.Status}}"></i><span id="{{.JobID}}-text" style="margin-left: 0.4em;font-size: 12px;">{{.Status}}</span></span> |
|
|
|
</span> |
|
|
|
<!-- 任务创建时间 --> |
|
|
|
<span style="font-size: 12px;margin-left: 0.4rem;" class="">{{TimeSinceUnix .CreatedUnix $.Lang}}</span> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="two wide column"> |
|
|
|
|
|
|
|
<span id="duration-{{.ID}}"></span> |
|
|
|
|
|
|
|
<!-- 任务创建时间 --> |
|
|
|
<div class="two wide column text center padding0"> |
|
|
|
<span style="font-size: 12px;" class="">{{TimeSinceUnix .Cloudbrain.CreatedUnix $.Lang}}</span> |
|
|
|
</div> |
|
|
|
<!-- <div class="two wide column"> |
|
|
|
|
|
|
|
<span class="job-status" id="{{.JobID}}" data-repopath="{{$.RepoRelPath}}" data-jobid="{{.JobID}}"> |
|
|
|
<span><i id="{{.JobID}}-icon" style="vertical-align: middle;" class="{{.Status}}"></i><span id="{{.JobID}}-text" style="margin-left: 0.4em;font-size: 12px;">{{.Status}}</span></span> |
|
|
|
</span> |
|
|
|
|
|
|
|
<span style="font-size: 12px;margin-left: 0.4rem;" class="">{{TimeSinceUnix .Cloudbrain.CreatedUnix $.Lang}}</span> |
|
|
|
</div> --> |
|
|
|
<!-- 任务运行时间 --> |
|
|
|
<div class="two wide column text center padding0"> |
|
|
|
<span style="font-size: 12px;" id="duration-{{.JobID}}"></span> |
|
|
|
</div> |
|
|
|
<!-- 计算资源 --> |
|
|
|
<div class="two wide column text center padding0"> |
|
|
|
<span style="font-size: 12px;">{{.ComputeResource}}</span> |
|
|
|
</div> |
|
|
|
<!-- 创建者 --> |
|
|
|
<div class="one wide column text center padding0"> |
|
|
|
{{if .User.Name}} |
|
|
|
<a href="{{AppSubUrl}}/{{.User.Name}}" title="{{.User.Name}}"><img class="ui avatar image" src="{{.User.RelAvatarLink}}"></a> |
|
|
|
{{else}} |
|
|
|
<a title="Ghost"><img class="ui avatar image" src="{{AppSubUrl}}/user/avatar/Ghost/-1"></a> |
|
|
|
{{end}} |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="five wide column text right"> |
|
|
|
|
|
|
|
<div class="ui compact buttons" style="margin-right:10px;"> |
|
|
|
<!-- 模型下载 --> |
|
|
|
<a class="ui basic blue button" href="{{$.Link}}/{{.ID}}" target="_blank"> |
|
|
|
{{$.i18n.Tr "repo.model_download"}} |
|
|
|
<div class="three wide column text center padding0"> |
|
|
|
<div class="ui compact buttons"> |
|
|
|
<form id="stopForm-{{.JobID}}" action="{{$.Link}}/{{.JobID}}/stop" method="post"> |
|
|
|
{{$.CsrfTokenHtml}} |
|
|
|
{{if $.Permission.CanWrite $.UnitTypeCloudBrain}} |
|
|
|
<a style="padding: 0.5rem 1rem;" id="stop-model-debug-{{.JobID}}" class="ui basic {{if eq .Status "KILLED" "FAILED" "START_FAILED" "KILLING" "COMPLETED"}}disabled {{else}}blue {{end}}button" onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> |
|
|
|
{{$.i18n.Tr "repo.stop"}} |
|
|
|
</a> |
|
|
|
{{else}} |
|
|
|
<a style="padding: 0.5rem 1rem;" class="ui basic disabled button" onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> |
|
|
|
{{$.i18n.Tr "repo.stop"}} |
|
|
|
</a> |
|
|
|
|
|
|
|
{{end}} |
|
|
|
</form> |
|
|
|
</div> |
|
|
|
<!-- 模型下载 --> |
|
|
|
<!-- <div class="ui compact buttons"> |
|
|
|
<a style="padding: 0.5rem;" class="ui basic blue button" href="{{$.Link}}/{{.JobID}}/models" target="_blank"> |
|
|
|
{{$.i18n.Tr "repo.model_download"}} |
|
|
|
</a> |
|
|
|
</div> --> |
|
|
|
<!-- 删除任务 --> |
|
|
|
<form class="ui compact buttons" id="delForm-{{.ID}}" action="{{$.Link}}/{{.ID}}/del" method="post"> |
|
|
|
<form class="ui compact buttons" id="delForm-{{.JobID}}" action="{{$.Link}}/{{.JobID}}/del" method="post"> |
|
|
|
{{$.CsrfTokenHtml}} |
|
|
|
{{if $.Permission.CanWrite $.UnitTypeCloudBrain}} |
|
|
|
<a id="model-delete-{{.ID}}" onclick="assertDelete(this)" style="border-radius: .28571429rem;"> |
|
|
|
<a style="padding: 0.5rem 1rem;margin-left:0.2rem" id="model-delete-{{.JobID}}" class="ui compact {{if or (eq .Status "RUNNING") (eq .Status "INIT") (eq .Status "CREATING") (eq .Status "WAITING") }}disabled {{else}}red {{end}}button" onclick="assertDelete(this)" style="border-radius: .28571429rem;"> |
|
|
|
{{$.i18n.Tr "repo.delete"}} |
|
|
|
</a> |
|
|
|
{{else}} |
|
|
|
<a class="ui compact disabled button" onclick="assertDelete(this)" style="border-radius: .28571429rem;"> |
|
|
|
<a style="padding: 0.5rem 1rem;margin-left:0.2rem" class="ui compact disabled button" onclick="assertDelete(this)" style="border-radius: .28571429rem;"> |
|
|
|
{{$.i18n.Tr "repo.delete"}} |
|
|
|
</a> |
|
|
|
{{end}} |
|
|
|
</form> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
{{end}} {{template "base/paginate" .}} |
|
|
|
@@ -371,3 +196,173 @@ |
|
|
|
</div> |
|
|
|
{{template "base/footer" .}} |
|
|
|
|
|
|
|
<script> |
|
|
|
|
|
|
|
console.log({{.Tasks}}) |
|
|
|
// 调试和评分新开窗口 |
|
|
|
function stop(obj) { |
|
|
|
if (obj.style.color != "rgb(204, 204, 204)") { |
|
|
|
obj.target = '_blank' |
|
|
|
} else { |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 删除时用户确认 |
|
|
|
function assertDelete(obj) { |
|
|
|
if (obj.style.color == "rgb(204, 204, 204)") { |
|
|
|
return |
|
|
|
} else { |
|
|
|
var delId = obj.parentNode.id |
|
|
|
flag = 1; |
|
|
|
$('.ui.basic.modal') |
|
|
|
.modal({ |
|
|
|
onDeny: function() { |
|
|
|
flag = false |
|
|
|
}, |
|
|
|
onApprove: function() { |
|
|
|
document.getElementById(delId).submit() |
|
|
|
flag = true |
|
|
|
}, |
|
|
|
onHidden: function() { |
|
|
|
if (flag == false) { |
|
|
|
$('.alert').html('您已取消操作').removeClass('alert-success').addClass('alert-danger').show().delay(1500).fadeOut(); |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
.modal('show') |
|
|
|
} |
|
|
|
} |
|
|
|
function runtime(time){ |
|
|
|
if(time){ |
|
|
|
let hours = time/3600000<10 ? "0"+parseInt(time/3600000):parseInt(time/3600000) |
|
|
|
let miuns = time%3600000/60000<10 ? "0"+parseInt(time%3600000/60000):parseInt(time%3600000/60000) |
|
|
|
let seconds = time%60000/1000<10 ? "0"+parseInt(time%60000/1000):parseInt(time%60000/1000) |
|
|
|
return hours + ":" + miuns + ":" + seconds |
|
|
|
}else{ |
|
|
|
return "00:00:00" |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function loadJobDuration() { |
|
|
|
$(".job-status").each((index, job) => { |
|
|
|
const jobID = job.dataset.jobid; |
|
|
|
const repoPath = job.dataset.repopath; |
|
|
|
const versionname = job.dataset.version |
|
|
|
$.get(`/api/v1/repos/${repoPath}/modelarts/train-job/${jobID}?version_name=${versionname}`, (data) => { |
|
|
|
console.log(data) |
|
|
|
const duration = data.JobDuration |
|
|
|
const jobID = data.JobID |
|
|
|
$('#duration-'+jobID).text(duration) |
|
|
|
}) |
|
|
|
|
|
|
|
}) |
|
|
|
} |
|
|
|
$(document).ready(loadJobDuration); |
|
|
|
// 加载任务状态 |
|
|
|
var timeid = window.setInterval(loadJobStatus, 15000); |
|
|
|
$(document).ready(loadJobStatus); |
|
|
|
function loadJobStatus() { |
|
|
|
$(".job-status").each((index, job) => { |
|
|
|
const jobID = job.dataset.jobid; |
|
|
|
const repoPath = job.dataset.repopath; |
|
|
|
const versionname = job.dataset.version |
|
|
|
if (job.textContent.trim() == 'IMAGE_FAILED' || job.textContent.trim() == 'SUBMIT_FAILED' || job.textContent.trim() == 'DELETE_FAILED' |
|
|
|
|| job.textContent.trim() == 'KILLED' || job.textContent.trim() == 'COMPLETED' || job.textContent.trim() == 'FAILED' |
|
|
|
|| job.textContent.trim() == 'CANCELED' || job.textContent.trim() == 'LOST') { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
$.get(`/api/v1/repos/${repoPath}/modelarts/train-job/${jobID}?version_name=${versionname}`, (data) => { |
|
|
|
const jobID = data.JobID |
|
|
|
const status = data.JobStatus |
|
|
|
const duration = data.JobDuration |
|
|
|
$('#duration-'+jobID).text(duration) |
|
|
|
if (status != job.textContent.trim()) { |
|
|
|
$('#' + jobID+'-icon').removeClass().addClass(status) |
|
|
|
$('#' + jobID+ '-text').text(status) |
|
|
|
|
|
|
|
} |
|
|
|
if(status==="RUNNING"){ |
|
|
|
$('#model-debug-'+jobID).removeClass('disabled') |
|
|
|
$('#model-debug-'+jobID).addClass('blue') |
|
|
|
// $('#duration-'+jobID).text(duration) |
|
|
|
|
|
|
|
} |
|
|
|
if(status!=="RUNNING"){ |
|
|
|
$('#model-debug-'+jobID).removeClass('blue') |
|
|
|
$('#model-debug-'+jobID).addClass('disabled') |
|
|
|
|
|
|
|
} |
|
|
|
if(status!=="KILLED" || status!=="FAILED"){ |
|
|
|
$('#stop-model-debug-'+jobID).removeClass('disabled') |
|
|
|
$('#stop-model-debug-'+jobID).addClass('blue') |
|
|
|
$('#model-delete-'+jobID).removeClass('red') |
|
|
|
$('#model-delete-'+jobID).addClass('disabled') |
|
|
|
} |
|
|
|
if(status=="KILLED" || status=="FAILED" || status=="KILLING" || status=="COMPLETED"){ |
|
|
|
$('#stop-model-debug-'+jobID).removeClass('blue') |
|
|
|
$('#stop-model-debug-'+jobID).addClass('disabled') |
|
|
|
$('#model-delete-'+jobID).removeClass('disabled') |
|
|
|
$('#model-delete-'+jobID).addClass('red') |
|
|
|
} |
|
|
|
if(status=="START_FAILED"){ |
|
|
|
$('#stop-model-debug-'+jobID).removeClass('blue') |
|
|
|
$('#stop-model-debug-'+jobID).addClass('disabled') |
|
|
|
} |
|
|
|
}).fail(function(err) { |
|
|
|
console.log(err); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}; |
|
|
|
|
|
|
|
// 获取弹窗 |
|
|
|
var modal = document.getElementById('imageModal'); |
|
|
|
|
|
|
|
// 打开弹窗的按钮对象 |
|
|
|
var btns = document.getElementsByClassName("imageBtn"); |
|
|
|
|
|
|
|
// 获取 <span> 元素,用于关闭弹窗 |
|
|
|
var spans = document.getElementsByClassName('close'); |
|
|
|
|
|
|
|
// 点击按钮打开弹窗 |
|
|
|
for (i = 0; i < btns.length; i++) { |
|
|
|
btns[i].onclick = function() { |
|
|
|
modal.style.display = "block"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 点击 <span> (x), 关闭弹窗 |
|
|
|
for (i = 0; i < spans.length; i++) { |
|
|
|
spans[i].onclick = function() { |
|
|
|
modal.style.display = "none"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 在用户点击其他地方时,关闭弹窗 |
|
|
|
window.onclick = function(event) { |
|
|
|
if (event.target == modal) { |
|
|
|
modal.style.display = "none"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 显示弹窗,弹出相应的信息 |
|
|
|
function showmask() { |
|
|
|
$('#imageModal').css('display', 'none') |
|
|
|
$('#mask').css('display', 'block') |
|
|
|
|
|
|
|
$("iframe[name=iframeContent]").on("load", function() { |
|
|
|
var responseText = $("iframe")[0].contentDocument.body.getElementsByTagName("pre")[0].innerHTML; |
|
|
|
var json1 = JSON.parse(responseText) |
|
|
|
$('#mask').css('display', 'none') |
|
|
|
parent.location.href |
|
|
|
|
|
|
|
if (json1.result_code === "0") { |
|
|
|
$('.alert').html('操作成功!').removeClass('alert-danger').addClass('alert-success').show().delay(1500).fadeOut(); |
|
|
|
} else { |
|
|
|
$('.alert').html(json1.error_msg).removeClass('alert-success').addClass('alert-danger').show().delay(5000).fadeOut(); |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
</script> |
|
|
|
|