| @@ -363,8 +363,8 @@ | |||||
| <!-- 调试 --> | <!-- 调试 --> | ||||
| {{$.CsrfTokenHtml}} | {{$.CsrfTokenHtml}} | ||||
| {{if .CanDebug}} | {{if .CanDebug}} | ||||
| <a id="model-debug-{{.JobID}}" class="ui basic blue button" href="{{$.Link}}/{{.JobID}}/debug" target="_blank"> | |||||
| {{.CanDebug}}{{$.i18n.Tr "repo.debug"}} | |||||
| <a id="model-debug-{{.JobID}}" class='ui basic {{if ne .Status "RUNNING"}} disabled {{else}}blue {{end}}button' href="{{$.Link}}/{{.JobID}}/debug" target="_blank"> | |||||
| {{$.i18n.Tr "repo.debug"}} | |||||
| </a> | </a> | ||||
| {{else}} | {{else}} | ||||
| <a class="ui basic disabled button"> | <a class="ui basic disabled button"> | ||||
| @@ -375,46 +375,58 @@ | |||||
| <form id="stopForm-{{.JobID}}" action="{{$.Link}}/{{.JobID}}/stop" method="post" style="margin-left:-1px;"> | <form id="stopForm-{{.JobID}}" action="{{$.Link}}/{{.JobID}}/stop" method="post" style="margin-left:-1px;"> | ||||
| {{$.CsrfTokenHtml}} | {{$.CsrfTokenHtml}} | ||||
| {{if .CanDel}} | {{if .CanDel}} | ||||
| <a id="stop-model-debug-{{.JobID}}" class="ui basic {{if or (eq .Status "STOPPED") (eq .Status "FAILED")}}disabled {{else}}blue {{end}}button" onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> | |||||
| <a id="stop-model-debug-{{.JobID}}" class='ui basic {{if or (eq .Status "STOPPED") (eq .Status "FAILED")}}disabled {{else}}blue {{end}}button' onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> | |||||
| {{$.i18n.Tr "repo.stop"}} | {{$.i18n.Tr "repo.stop"}} | ||||
| </a> | </a> | ||||
| {{else}} | {{else}} | ||||
| <a class="ui basic disabled button" onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> | |||||
| {{.CanDel}}{{$.i18n.Tr "repo.stop"}} | |||||
| <a class="ui basic disabled button"> | |||||
| {{.CanDel}}{{$.i18n.Tr "repo.stop"}} | |||||
| </a> | |||||
| {{end}} | |||||
| </form> | |||||
| <!-- 删除任务 --> | |||||
| <form class="ui compact buttons" id="delForm-{{.JobID}}" action="{{$.Link}}/{{.JobID}}/del" method="post"> | |||||
| {{$.CsrfTokenHtml}} | |||||
| {{if .CanDel}} | |||||
| <a id="model-delete-{{.JobID}}" class='ui basic button {{if eq .Status "STOPPED" "FAILED"}} blue {{else}} disabled {{end}}' onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| {{$.i18n.Tr "repo.delete"}} | |||||
| </a> | |||||
| {{else}} | |||||
| <a class="ui basic button disabled" onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| {{$.i18n.Tr "repo.delete"}} | |||||
| </a> | </a> | ||||
| {{end}} | {{end}} | ||||
| </form> | |||||
| </form> | |||||
| </div> | </div> | ||||
| <div class="ui compact buttons"> | <div class="ui compact buttons"> | ||||
| <!-- 模型下载 --> | |||||
| <!-- <a class="ui basic blue button" href="{{$.Link}}/{{.JobID}}/models" target="_blank"> | |||||
| {{$.i18n.Tr "repo.download"}} | |||||
| </a> --> | |||||
| <!-- 接收结果 --> | |||||
| <iframe src="" frameborder="0" name="iframeContent" style="display: none;"></iframe> | |||||
| {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} | |||||
| <a id="model-image-{{.JobID}}" class="imageBtn ui basic {{if not .CanDebug}}disabled {{else}}blue {{end}}button" value="{{.CanDebug}}">{{$.i18n.Tr "repo.submit_image"}}</a> | |||||
| {{else}} | |||||
| <a class="imageBtn ui basic disabled button" value="{{.CanDebug}}">{{$.i18n.Tr "repo.submit_image"}}</a> | |||||
| {{end}} | |||||
| <div class="ui dropdown" style="padding: .58928571em 1.125em .58928571em;"> | |||||
| <div class="text">更多</div> | |||||
| <i class="dropdown icon"></i> | |||||
| <div class="menu" style="right: auto;"> | |||||
| <div class="item" style="padding: 0 !important;"> | |||||
| <!-- 接收结果 --> | |||||
| <iframe src="" frameborder="0" name="iframeContent" style="display: none;"></iframe> | |||||
| {{if .CanDel}} | |||||
| <a id="model-image-{{.JobID}}" class='imageBtn ui basic {{if ne .Status "RUNNING"}}disabled {{else}}blue {{end}}button'>{{$.i18n.Tr "repo.submit_image"}}</a> | |||||
| {{else}} | |||||
| <a class="imageBtn ui basic disabled button">{{$.i18n.Tr "repo.submit_image"}}</a> | |||||
| {{end}} | |||||
| </div> | |||||
| <div class="item" style="padding: 0 !important;"> | |||||
| <!-- 模型下载 --> | |||||
| {{if .CanDel}} | |||||
| <a class="ui basic blue button" href="{{$.Link}}/{{.JobID}}/models" target="_blank">{{$.i18n.Tr "repo.download"}}</a> | |||||
| {{else}} | |||||
| <a class="ui basic disabled button">{{$.i18n.Tr "repo.download"}}</a> | |||||
| {{end}} | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <!-- 删除任务 --> | |||||
| <form class="ui compact buttons" id="delForm-{{.JobID}}" action="{{$.Link}}/{{.JobID}}/del" method="post"> | |||||
| {{$.CsrfTokenHtml}} | |||||
| {{if .CanDel}} | |||||
| <a id="model-delete-{{.JobID}}" class='ui basic button {{if eq .Status "STOPPED" "FAILED"}}blue{{else}}disabled{{end}}' onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| {{.CanDel}}{{$.i18n.Tr "repo.delete"}} | |||||
| </a> | |||||
| {{else}} | |||||
| <a class="ui basic button disabled" onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| {{$.i18n.Tr "repo.delete"}} | |||||
| </a> | |||||
| {{end}} | |||||
| </form> | |||||
| </div> | </div> | ||||
| <!-- 镜像列表弹窗 --> | <!-- 镜像列表弹窗 --> | ||||
| <div id="imageModal" class="modal" style="display: none;"> | <div id="imageModal" class="modal" style="display: none;"> | ||||
| <div class="modal-content"> | <div class="modal-content"> | ||||
| @@ -455,12 +467,9 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <!-- 确认模态框 --> | <!-- 确认模态框 --> | ||||
| @@ -496,7 +505,12 @@ | |||||
| return | return | ||||
| } | } | ||||
| } | } | ||||
| $(document).ready(function(){ | |||||
| $('.ui.dropdown') | |||||
| .dropdown({ | |||||
| action: 'hide', | |||||
| }) | |||||
| }) | |||||
| // 删除时用户确认 | // 删除时用户确认 | ||||
| function assertDelete(obj) { | function assertDelete(obj) { | ||||
| if (obj.style.color == "rgb(204, 204, 204)") { | if (obj.style.color == "rgb(204, 204, 204)") { | ||||
| @@ -539,16 +553,10 @@ | |||||
| const jobID = data.JobID | const jobID = data.JobID | ||||
| const status = data.JobStatus | const status = data.JobStatus | ||||
| if (status != job.textContent.trim()) { | if (status != job.textContent.trim()) { | ||||
| console.log("---------") | |||||
| $('#' + jobID+'-icon').removeClass().addClass(status) | $('#' + jobID+'-icon').removeClass().addClass(status) | ||||
| $('#' + jobID+ '-text').text(status) | $('#' + jobID+ '-text').text(status) | ||||
| //if (status == 'STOPPED') { | |||||
| // window.location.reload() | |||||
| //} | |||||
| } | } | ||||
| if(status==="RUNNING"){ | if(status==="RUNNING"){ | ||||
| console.log("----------",status,$('#model-debug-'+jobID)) | |||||
| $('#model-debug-'+jobID).removeClass('disabled') | $('#model-debug-'+jobID).removeClass('disabled') | ||||
| $('#model-debug-'+jobID).addClass('blue') | $('#model-debug-'+jobID).addClass('blue') | ||||
| $('#model-image-'+jobID).removeClass('disabled') | $('#model-image-'+jobID).removeClass('disabled') | ||||
| @@ -558,6 +566,8 @@ | |||||
| if(status==="STOPPED" || status==="FAILED"){ | if(status==="STOPPED" || status==="FAILED"){ | ||||
| $('#model-delete-'+jobID).removeClass('disabled') | $('#model-delete-'+jobID).removeClass('disabled') | ||||
| $('#model-delete-'+jobID).addClass('blue') | $('#model-delete-'+jobID).addClass('blue') | ||||
| $('#stop-model-debug-'+jobID).removeClass('blue') | |||||
| $('#stop-model-debug-'+jobID).addClass('disabled') | |||||
| } | } | ||||
| if(status!=="RUNNING"){ | if(status!=="RUNNING"){ | ||||
| $('#model-debug-'+jobID).removeClass('blue') | $('#model-debug-'+jobID).removeClass('blue') | ||||
| @@ -569,14 +579,6 @@ | |||||
| if(status!=="STOPPED" || status!=="FAILED"){ | if(status!=="STOPPED" || status!=="FAILED"){ | ||||
| $('#stop-model-debug-'+jobID).removeClass('disabled') | $('#stop-model-debug-'+jobID).removeClass('disabled') | ||||
| $('#stop-model-debug-'+jobID).addClass('blue') | $('#stop-model-debug-'+jobID).addClass('blue') | ||||
| // $('#model-delete-'+jobID).removeClass('red') | |||||
| // $('#model-delete-'+jobID).addClass('disabled') | |||||
| } | |||||
| if(status=="STOPPED" || status=="FAILED"){ | |||||
| $('#stop-model-debug-'+jobID).removeClass('blue') | |||||
| $('#stop-model-debug-'+jobID).addClass('disabled') | |||||
| // $('#model-delete-'+jobID).removeClass('disabled') | |||||
| // $('#model-delete-'+jobID).addClass('red') | |||||
| } | } | ||||
| }).fail(function(err) { | }).fail(function(err) { | ||||
| console.log(err); | console.log(err); | ||||
| @@ -312,9 +312,15 @@ | |||||
| <!-- 调试 --> | <!-- 调试 --> | ||||
| {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} | {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} | ||||
| {{if eq .ComputeResource "CPU/GPU"}} | {{if eq .ComputeResource "CPU/GPU"}} | ||||
| <a id="model-debug-{{.JobID}}" class="ui basic {{if not .CanDebug}}disabled {{else}}blue {{end}}button" href="{{$.RepoLink}}/cloudbrain/{{.JobID}}/debug" target="_blank"> | |||||
| {{$.i18n.Tr "repo.debug"}} | |||||
| </a> | |||||
| {{if .CanDebug}} | |||||
| <a id="model-debug-{{.JobID}}" class='ui basic {{if ne .Status "RUNNING"}} disabled {{else}}blue {{end}}button' href="{{$.RepoLink}}/cloudbrain/{{.JobID}}/debug" target="_blank"> | |||||
| {{$.i18n.Tr "repo.debug"}} | |||||
| </a> | |||||
| {{else}} | |||||
| <a id="model-debug-{{.JobID}}" class="ui basic disabled button" > | |||||
| {{$.i18n.Tr "repo.debug"}} | |||||
| </a> | |||||
| {{end}} | |||||
| {{else}} | {{else}} | ||||
| <a id="model-debug-{{.JobID}}" class="ui basic {{if not .CanDebug}}disabled {{else}}blue {{end}}button" href="{{$.RepoLink}}/modelarts/notebook/{{.JobID}}/debug" target="_blank"> | <a id="model-debug-{{.JobID}}" class="ui basic {{if not .CanDebug}}disabled {{else}}blue {{end}}button" href="{{$.RepoLink}}/modelarts/notebook/{{.JobID}}/debug" target="_blank"> | ||||
| {{$.i18n.Tr "repo.debug"}} | {{$.i18n.Tr "repo.debug"}} | ||||
| @@ -329,7 +335,7 @@ | |||||
| <form id="stopForm-{{.JobID}}" action="{{if eq .ComputeResource "CPU/GPU"}}{{$.RepoLink}}/cloudbrain{{else}}{{$.RepoLink}}/modelarts/notebook{{end}}/{{.JobID}}/stop" method="post" style="margin-left:-1px;"> | <form id="stopForm-{{.JobID}}" action="{{if eq .ComputeResource "CPU/GPU"}}{{$.RepoLink}}/cloudbrain{{else}}{{$.RepoLink}}/modelarts/notebook{{end}}/{{.JobID}}/stop" method="post" style="margin-left:-1px;"> | ||||
| {{$.CsrfTokenHtml}} | {{$.CsrfTokenHtml}} | ||||
| {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} | {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} | ||||
| <a id="stop-model-debug-{{.JobID}}" class="ui basic {{if or (eq .Status "STOPPED") (eq .Status "FAILED")}}disabled {{else}}blue {{end}}button" onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> | |||||
| <a id="stop-model-debug-{{.JobID}}" class='ui basic {{if eq .Status "STOPPED" "FAILED" "START_FAILED" "STOPPING" "CREATING" "STARTING"}}disabled {{else}}blue {{end}}button' onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> | |||||
| {{$.i18n.Tr "repo.stop"}} | {{$.i18n.Tr "repo.stop"}} | ||||
| </a> | </a> | ||||
| {{else}} | {{else}} | ||||
| @@ -338,39 +344,65 @@ | |||||
| </a> | </a> | ||||
| {{end}} | {{end}} | ||||
| <input type="hidden" name="debugListType" value="all"> | <input type="hidden" name="debugListType" value="all"> | ||||
| </form> | |||||
| <!-- 删除 --> | |||||
| <form id="delForm-{{.JobID}}" action="{{if eq .ComputeResource "CPU/GPU"}}{{$.RepoLink}}/cloudbrain{{else}}{{$.RepoLink}}/modelarts/notebook{{end}}/{{.JobID}}/del" method="post"> | |||||
| <input type="hidden" name="debugListType" value="all"> | |||||
| {{$.CsrfTokenHtml}} | |||||
| {{if .CanDel}} | |||||
| <a id="model-delete-{{.JobID}}" class='ui basic {{if eq .Status "STOPPED" "FAILED" "START_FAILED"}}blue {{else}}disabled {{end}}button' onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| {{$.i18n.Tr "repo.delete"}} | |||||
| </a> | |||||
| {{else}} | |||||
| <a class="ui basic button disabled" onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| {{$.i18n.Tr "repo.delete"}} | |||||
| </a> | |||||
| {{end}} | |||||
| </form> | </form> | ||||
| </div> | </div> | ||||
| <div class="ui compact buttons"> | |||||
| <!-- 模型下载 --> | |||||
| <!-- <a class="ui basic blue button" href="{{$.Link}}/{{.JobID}}/models" target="_blank"> | |||||
| <!-- <div class="ui compact buttons"> | |||||
| <a class="ui basic blue button" href="{{$.Link}}/{{.JobID}}/models" target="_blank"> | |||||
| {{$.i18n.Tr "repo.download"}} | {{$.i18n.Tr "repo.download"}} | ||||
| </a> --> | |||||
| </a> | |||||
| <!-- 接收结果 --> | |||||
| <iframe src="" frameborder="0" name="iframeContent" style="display: none;"></iframe> | <iframe src="" frameborder="0" name="iframeContent" style="display: none;"></iframe> | ||||
| {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} | {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} | ||||
| <a id="model-image-{{.JobID}}" style="{{if eq .ComputeResource "CPU/GPU"}} visibility: visible {{else}} visibility: hidden{{end}}" class="imageBtn ui basic {{if not .CanDebug}}disabled {{else}}blue {{end}}button" value="{{.CanDebug}}">{{$.i18n.Tr "repo.submit_image"}}</a> | <a id="model-image-{{.JobID}}" style="{{if eq .ComputeResource "CPU/GPU"}} visibility: visible {{else}} visibility: hidden{{end}}" class="imageBtn ui basic {{if not .CanDebug}}disabled {{else}}blue {{end}}button" value="{{.CanDebug}}">{{$.i18n.Tr "repo.submit_image"}}</a> | ||||
| {{else}} | {{else}} | ||||
| <a class="imageBtn ui basic disabled button" style="{{if eq .ComputeResource "CPU/GPU"}} visibility: visible {{else}} visibility: hidden{{end}}" value="{{.CanDebug}}">{{$.i18n.Tr "repo.submit_image"}}</a> | <a class="imageBtn ui basic disabled button" style="{{if eq .ComputeResource "CPU/GPU"}} visibility: visible {{else}} visibility: hidden{{end}}" value="{{.CanDebug}}">{{$.i18n.Tr "repo.submit_image"}}</a> | ||||
| {{end}} | {{end}} | ||||
| </div> | |||||
| </div> --> | |||||
| <!-- 删除任务 --> | <!-- 删除任务 --> | ||||
| <form class="ui compact buttons" id="delForm-{{.JobID}}" action="{{if eq .ComputeResource "CPU/GPU"}}{{$.RepoLink}}/cloudbrain{{else}}{{$.RepoLink}}/modelarts/notebook{{end}}/{{.JobID}}/del" method="post"> | |||||
| <input type="hidden" name="debugListType" value="all"> | |||||
| {{$.CsrfTokenHtml}} | |||||
| {{if .CanDel}} | |||||
| <!-- {{if not .CanDel}}disabled {{else}} blue {{end}} --> | |||||
| <a id="model-delete-{{.JobID}}" class="ui basic blue button " onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| {{$.i18n.Tr "repo.delete"}} | |||||
| </a> | |||||
| {{else}} | |||||
| <a class="ui basic button disabled" onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| {{$.i18n.Tr "repo.delete"}} | |||||
| </a> | |||||
| {{end}} | |||||
| </form> | |||||
| <div class="ui compact buttons" style="{{if eq .ComputeResource "CPU/GPU"}} visibility: visible {{else}} visibility: hidden{{end}}"> | |||||
| <div class="ui dropdown" style="padding: .58928571em 1.125em .58928571em;"> | |||||
| <div class="text">更多</div> | |||||
| <i class="dropdown icon"></i> | |||||
| <div class="menu" style="right: auto;"> | |||||
| <div class="item" style="padding: 0 !important;"> | |||||
| <!-- 接收结果 --> | |||||
| <iframe src="" frameborder="0" name="iframeContent" style="display: none;"></iframe> | |||||
| {{if .CanDel}} | |||||
| <a id="model-image-{{.JobID}}" class='imageBtn ui basic {{if ne .Status "RUNNING"}}disabled {{else}}blue {{end}}button'>{{$.i18n.Tr "repo.submit_image"}}</a> | |||||
| {{else}} | |||||
| <a class="imageBtn ui basic disabled button">{{$.i18n.Tr "repo.submit_image"}}</a> | |||||
| {{end}} | |||||
| </div> | |||||
| <div class="item" style="padding: 0 !important;"> | |||||
| <!-- 模型下载 --> | |||||
| {{if .CanDel}} | |||||
| <a class="ui basic blue button" href="{{$.Link}}/{{.JobID}}/models" target="_blank">{{$.i18n.Tr "repo.download"}}</a> | |||||
| {{else}} | |||||
| <a class="ui basic disabled button">{{$.i18n.Tr "repo.download"}}</a> | |||||
| {{end}} | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </div> | |||||
| </div> | </div> | ||||
| <!-- 镜像列表弹窗 --> | <!-- 镜像列表弹窗 --> | ||||
| <div id="imageModal" class="modal" style="display: none;"> | <div id="imageModal" class="modal" style="display: none;"> | ||||
| @@ -514,23 +546,33 @@ | |||||
| $('#model-image-'+jobID).addClass('disabled') | $('#model-image-'+jobID).addClass('disabled') | ||||
| } | } | ||||
| if(status!=="STOPPED" || status!=="FAILED"){ | |||||
| if(["RUNNING","WAITING"].includes(status)){ | |||||
| $('#stop-model-debug-'+jobID).removeClass('disabled') | $('#stop-model-debug-'+jobID).removeClass('disabled') | ||||
| $('#stop-model-debug-'+jobID).addClass('blue') | $('#stop-model-debug-'+jobID).addClass('blue') | ||||
| // $('#model-delete-'+jobID).removeClass('red') | |||||
| // $('#model-delete-'+jobID).addClass('disabled') | |||||
| } | } | ||||
| if(status=="STOPPED" || status=="FAILED" || status=="STOPPING"){ | |||||
| if(["CREATING","STOPPING","STARTING","STOPPED","FAILED","START_FAILED"].includes(status)){ | |||||
| $('#stop-model-debug-'+jobID).removeClass('blue') | $('#stop-model-debug-'+jobID).removeClass('blue') | ||||
| $('#stop-model-debug-'+jobID).addClass('disabled') | $('#stop-model-debug-'+jobID).addClass('disabled') | ||||
| // $('#model-delete-'+jobID).removeClass('disabled') | |||||
| // $('#model-delete-'+jobID).addClass('red') | |||||
| } | |||||
| if(status==="STOPPED" || status==="FAILED"|| status==="START_FAILED"){ | |||||
| $('#model-delete-'+jobID).removeClass('disabled') | |||||
| $('#model-delete-'+jobID).addClass('blue') | |||||
| }else{ | |||||
| $('#model-delete-'+jobID).removeClass('blue') | |||||
| $('#model-delete-'+jobID).addClass('disabled') | |||||
| } | } | ||||
| }).fail(function(err) { | }).fail(function(err) { | ||||
| console.log(err); | console.log(err); | ||||
| }); | }); | ||||
| }); | }); | ||||
| }; | }; | ||||
| $(document).ready(function(){ | |||||
| $('.ui.dropdown') | |||||
| .dropdown({ | |||||
| action: 'hide', | |||||
| }) | |||||
| }) | |||||
| // 获取弹窗 | // 获取弹窗 | ||||
| var modal = document.getElementById('imageModal'); | var modal = document.getElementById('imageModal'); | ||||
| @@ -63,25 +63,8 @@ | |||||
| <div class="ui grid"> | <div class="ui grid"> | ||||
| <div class="row"> | <div class="row"> | ||||
| <div class="ui sixteen wide column"> | <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="dataset list"> | ||||
| <!-- 表头 --> | <!-- 表头 --> | ||||
| <div class="ui grid stackable" style="background: #f0f0f0;;"> | <div class="ui grid stackable" style="background: #f0f0f0;;"> | ||||
| <div class="row"> | <div class="row"> | ||||
| @@ -104,9 +87,7 @@ | |||||
| <div class="five wide column text center"> | <div class="five wide column text center"> | ||||
| <span>{{$.i18n.Tr "repo.cloudbrain_operate"}}</span> | <span>{{$.i18n.Tr "repo.cloudbrain_operate"}}</span> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| {{range .Tasks}} | {{range .Tasks}} | ||||
| <div class="ui grid stackable item"> | <div class="ui grid stackable item"> | ||||
| @@ -124,16 +105,10 @@ | |||||
| <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><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> | ||||
| </div> | </div> | ||||
| <div class="two wide column text center"> | |||||
| <!--任务状态 --> | |||||
| <!-- <span class="ui compact button job-status" id="{{.JobID}}" data-repopath="{{$.RepoRelPath}}" data-jobid="{{.JobID}}"> | |||||
| {{.Status}} | |||||
| </span> --> | |||||
| <div class="two wide column text center"> | |||||
| <!-- 任务创建时间 --> | <!-- 任务创建时间 --> | ||||
| <span style="font-size: 12px;margin-left: 0.4rem;" class="">{{TimeSinceUnix .Cloudbrain.CreatedUnix $.Lang}}</span> | <span style="font-size: 12px;margin-left: 0.4rem;" class="">{{TimeSinceUnix .Cloudbrain.CreatedUnix $.Lang}}</span> | ||||
| </div> | </div> | ||||
| <div class="two wide column text center"> | <div class="two wide column text center"> | ||||
| <!-- 任务计算资源 --> | <!-- 任务计算资源 --> | ||||
| <span style="font-size: 12px;margin-left: 0.4rem;" class="">{{.ComputeResource}}</span> | <span style="font-size: 12px;margin-left: 0.4rem;" class="">{{.ComputeResource}}</span> | ||||
| @@ -147,54 +122,38 @@ | |||||
| </div> | </div> | ||||
| <div class="five wide column text center"> | <div class="five wide column text center"> | ||||
| <div class="ui compact buttons"> | <div class="ui compact buttons"> | ||||
| <!-- <a class="ui basic blue button" href="{{$.Link}}/{{.JobID}}"> | |||||
| 查看 | |||||
| </a> --> | |||||
| {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} | |||||
| <a id="model-debug-{{.JobID}}" style="margin-right: 2rem;" class="ui basic {{if not .CanDebug}}disabled {{else}}blue {{end}}button" href="{{$.Link}}/{{.JobID}}/debug" target="_blank"> | |||||
| {{if .CanDebug}} | |||||
| <a id="model-debug-{{.JobID}}" style="margin-right: 2rem;" class='ui basic {{if ne .Status "RUNNING"}}disabled {{else}}blue {{end}}button' href="{{$.Link}}/{{.JobID}}/debug" target="_blank"> | |||||
| {{$.i18n.Tr "repo.debug"}} | {{$.i18n.Tr "repo.debug"}} | ||||
| </a> | </a> | ||||
| {{else}} | {{else}} | ||||
| <a style="margin-right: 2rem;" class="ui basic disabled button" href="{{$.Link}}/{{.JobID}}/debug" target="_blank"> | |||||
| <a style="margin-right: 2rem;" class="ui basic disabled button"> | |||||
| {{$.i18n.Tr "repo.debug"}} | {{$.i18n.Tr "repo.debug"}} | ||||
| </a> | </a> | ||||
| {{end}} | {{end}} | ||||
| <form id="stopForm-{{.JobID}}" action="{{$.Link}}/{{.JobID}}/stop" method="post" style="margin-left:-1px;"> | <form id="stopForm-{{.JobID}}" action="{{$.Link}}/{{.JobID}}/stop" method="post" style="margin-left:-1px;"> | ||||
| {{$.CsrfTokenHtml}} | {{$.CsrfTokenHtml}} | ||||
| {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} | |||||
| <a id="stop-model-debug-{{.JobID}}" style="margin-right: 2rem;" class="ui basic {{if eq .Status "STOPPED" "FAILED" "START_FAILED" "STOPPING" "CREATING" "WAITING" "STARTING"}}disabled {{else}}blue {{end}}button" onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> | |||||
| {{if .CanDel}} | |||||
| <a id="stop-model-debug-{{.JobID}}" style="margin-right: 2rem;" class='ui basic {{if eq .Status "STOPPED" "FAILED" "START_FAILED" "STOPPING" "CREATING" "STARTING"}}disabled {{else}}blue {{end}}button' onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> | |||||
| {{$.i18n.Tr "repo.stop"}} | {{$.i18n.Tr "repo.stop"}} | ||||
| </a> | </a> | ||||
| {{else}} | {{else}} | ||||
| <a style="margin-right: 2rem;" class="ui basic disabled button" onclick="document.getElementById('stopForm-{{.JobID}}').submit();"> | |||||
| <a style="margin-right: 2rem;" class="ui basic disabled button"> | |||||
| {{$.i18n.Tr "repo.stop"}} | {{$.i18n.Tr "repo.stop"}} | ||||
| </a> | </a> | ||||
| {{end}} | {{end}} | ||||
| </form> | </form> | ||||
| </div> | </div> | ||||
| <!-- <div class="ui compact buttons" style="margin-right:10px;"> --> | |||||
| <!-- 模型下载 --> | |||||
| <!-- <a class="ui basic blue button" href="{{$.Link}}/{{.JobID}}/models" target="_blank"> | |||||
| 模型下载 | |||||
| </a> --> | |||||
| <!-- 接收结果 --> | |||||
| <!-- <iframe src="" frameborder="0" name="iframeContent" style="display: none;"></iframe> | |||||
| <a class="imageBtn ui basic {{if not .CanDebug}}disabled {{else}}blue {{end}}button" value="{{.CanDebug}}">提交镜像</a> --> | |||||
| <!-- </div> --> | |||||
| <!-- 删除任务 --> | <!-- 删除任务 --> | ||||
| <form class="ui compact buttons" id="delForm-{{.JobID}}" action="{{$.Link}}/{{.JobID}}/del" method="post"> | <form class="ui compact buttons" id="delForm-{{.JobID}}" action="{{$.Link}}/{{.JobID}}/del" method="post"> | ||||
| {{$.CsrfTokenHtml}} | {{$.CsrfTokenHtml}} | ||||
| {{if $.Permission.CanWrite $.UnitTypeCloudBrain}} | |||||
| <a id="model-delete-{{.JobID}}" class="ui basic button blue" onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| {{if .CanDel}} | |||||
| <a id="model-delete-{{.JobID}}" class='ui basic {{if eq .Status "STOPPED" "FAILED" "START_FAILED"}}blue {{else}}disabled {{end}}button' onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| {{$.i18n.Tr "repo.delete"}} | {{$.i18n.Tr "repo.delete"}} | ||||
| </a> | </a> | ||||
| {{else}} | {{else}} | ||||
| <a class="ui basic blue button disabled" onclick="assertDelete(this)" style="border-radius: .28571429rem;"> | |||||
| <a class="ui basic button disabled" style="border-radius: .28571429rem;"> | |||||
| {{$.i18n.Tr "repo.delete"}} | {{$.i18n.Tr "repo.delete"}} | ||||
| </a> | </a> | ||||
| {{end}} | {{end}} | ||||
| @@ -213,9 +172,7 @@ | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <!-- 确认模态框 --> | <!-- 确认模态框 --> | ||||
| <div id="deletemodel"> | <div id="deletemodel"> | ||||
| <div class="ui basic modal"> | <div class="ui basic modal"> | ||||
| @@ -249,7 +206,6 @@ | |||||
| return | return | ||||
| } | } | ||||
| } | } | ||||
| // 删除时用户确认 | // 删除时用户确认 | ||||
| function assertDelete(obj) { | function assertDelete(obj) { | ||||
| if (obj.style.color == "rgb(204, 204, 204)") { | if (obj.style.color == "rgb(204, 204, 204)") { | ||||
| @@ -275,7 +231,6 @@ | |||||
| .modal('show') | .modal('show') | ||||
| } | } | ||||
| } | } | ||||
| // 加载任务状态 | // 加载任务状态 | ||||
| var timeid = window.setInterval(loadJobStatus, 15000); | var timeid = window.setInterval(loadJobStatus, 15000); | ||||
| $(document).ready(loadJobStatus); | $(document).ready(loadJobStatus); | ||||
| @@ -286,51 +241,42 @@ | |||||
| if (job.textContent.trim() == 'STOPPED' || job.textContent.trim() == 'START_FAILED' || job.textContent.trim() == 'CREATE_FAILED') { | if (job.textContent.trim() == 'STOPPED' || job.textContent.trim() == 'START_FAILED' || job.textContent.trim() == 'CREATE_FAILED') { | ||||
| return | return | ||||
| } | } | ||||
| $.get(`/api/v1/repos/${repoPath}/modelarts/notebook/${jobID}`, (data) => { | $.get(`/api/v1/repos/${repoPath}/modelarts/notebook/${jobID}`, (data) => { | ||||
| const jobID = data.JobID | const jobID = data.JobID | ||||
| const status = data.JobStatus | const status = data.JobStatus | ||||
| if (status != job.textContent.trim()) { | if (status != job.textContent.trim()) { | ||||
| $('#' + jobID+'-icon').removeClass().addClass(status) | $('#' + jobID+'-icon').removeClass().addClass(status) | ||||
| $('#' + jobID+ '-text').text(status) | $('#' + jobID+ '-text').text(status) | ||||
| } | } | ||||
| if(status==="RUNNING"){ | if(status==="RUNNING"){ | ||||
| $('#model-debug-'+jobID).removeClass('disabled') | $('#model-debug-'+jobID).removeClass('disabled') | ||||
| $('#model-debug-'+jobID).addClass('blue') | |||||
| } | |||||
| if(["CREATING","STOPPING","STARTING"].includes(status)){ | |||||
| $('#model-delete-'+jobID).removeClass('blue') | |||||
| $('#model-delete-'+jobID).addClass('disabled') | |||||
| $('#model-debug-'+jobID).addClass('blue') | |||||
| } | } | ||||
| if(status!=="RUNNING"){ | if(status!=="RUNNING"){ | ||||
| $('#model-debug-'+jobID).removeClass('blue') | $('#model-debug-'+jobID).removeClass('blue') | ||||
| $('#model-debug-'+jobID).addClass('disabled') | $('#model-debug-'+jobID).addClass('disabled') | ||||
| } | |||||
| if(status!=="STOPPED" || 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=="STOPPED" || status=="FAILED" || status=="STOPPING"){ | |||||
| $('#stop-model-debug-'+jobID).removeClass('blue') | |||||
| $('#stop-model-debug-'+jobID).addClass('disabled') | |||||
| } | } | ||||
| if(status=="START_FAILED"){ | |||||
| if(["CREATING","STOPPING","STARTING","STOPPED","FAILED","START_FAILED"].includes(status)){ | |||||
| $('#stop-model-debug-'+jobID).removeClass('blue') | $('#stop-model-debug-'+jobID).removeClass('blue') | ||||
| $('#stop-model-debug-'+jobID).addClass('disabled') | $('#stop-model-debug-'+jobID).addClass('disabled') | ||||
| // $('#model-delete-'+jobID).removeClass('disabled') | |||||
| // $('#model-delete-'+jobID).addClass('red') | |||||
| } | } | ||||
| if(["RUNNING","WAITING"].includes(status)){ | |||||
| $('#stop-model-debug-'+jobID).removeClass('disabled') | |||||
| $('#stop-model-debug-'+jobID).addClass('blue') | |||||
| } | |||||
| if(status==="STOPPED" || status==="FAILED"|| status==="START_FAILED"){ | |||||
| $('#model-delete-'+jobID).removeClass('disabled') | |||||
| $('#model-delete-'+jobID).addClass('blue') | |||||
| }else{ | |||||
| $('#model-delete-'+jobID).removeClass('blue') | |||||
| $('#model-delete-'+jobID).addClass('disabled') | |||||
| } | |||||
| }).fail(function(err) { | }).fail(function(err) { | ||||
| console.log(err); | console.log(err); | ||||
| }); | }); | ||||
| }); | }); | ||||
| }; | }; | ||||
| // 获取弹窗 | // 获取弹窗 | ||||
| var modal = document.getElementById('imageModal'); | var modal = document.getElementById('imageModal'); | ||||
| @@ -353,19 +299,16 @@ | |||||
| modal.style.display = "none"; | modal.style.display = "none"; | ||||
| } | } | ||||
| } | } | ||||
| // 在用户点击其他地方时,关闭弹窗 | // 在用户点击其他地方时,关闭弹窗 | ||||
| window.onclick = function(event) { | window.onclick = function(event) { | ||||
| if (event.target == modal) { | if (event.target == modal) { | ||||
| modal.style.display = "none"; | modal.style.display = "none"; | ||||
| } | } | ||||
| } | } | ||||
| // 显示弹窗,弹出相应的信息 | // 显示弹窗,弹出相应的信息 | ||||
| function showmask() { | function showmask() { | ||||
| $('#imageModal').css('display', 'none') | $('#imageModal').css('display', 'none') | ||||
| $('#mask').css('display', 'block') | $('#mask').css('display', 'block') | ||||
| $("iframe[name=iframeContent]").on("load", function() { | $("iframe[name=iframeContent]").on("load", function() { | ||||
| var responseText = $("iframe")[0].contentDocument.body.getElementsByTagName("pre")[0].innerHTML; | var responseText = $("iframe")[0].contentDocument.body.getElementsByTagName("pre")[0].innerHTML; | ||||
| var json1 = JSON.parse(responseText) | var json1 = JSON.parse(responseText) | ||||