|
|
@@ -419,6 +419,24 @@ td, th { |
|
|
|
|
|
|
|
<div class="ui tab" data-tab="second"> |
|
|
|
<div> |
|
|
|
<a id="{{.VersionName}}-log-down" |
|
|
|
class='{{if and (.CanModify) (eq .Status "KILLED" "FAILED" "START_FAILED" "STOPPED" "COMPLETED") }}ti-download-file{{else}}disabled{{end}}' |
|
|
|
href="{{$.RepoLink}}/modelarts/train-job/{{.JobID}}/download_log_file?version_name={{.VersionName}}"> |
|
|
|
<i class="ri-download-cloud-2-line"></i> |
|
|
|
<span style="margin-left: 0.3rem;">{{$.i18n.Tr "repo.modelarts.download_log"}}</span> |
|
|
|
</a> |
|
|
|
|
|
|
|
</div> |
|
|
|
<div style="position: relative;border: 1px solid rgba(0,0,0,.2);padding: 0 10px;margin-top: 10px;"> |
|
|
|
<span> |
|
|
|
<a title="滚动到顶部" style="position: absolute; right: -32px;cursor: pointer;" |
|
|
|
class="log_top" data-version="{{.VersionName}}"><i class="icon-to-top"></i></a> |
|
|
|
</span> |
|
|
|
<span> |
|
|
|
<a title="滚动到底部" style="position: absolute; bottom: 10px;right: -32px;cursor: pointer;" |
|
|
|
class="log_bottom" data-version="{{.VersionName}}"><i |
|
|
|
class="icon-to-bottom"></i></a> |
|
|
|
</span> |
|
|
|
<div class="ui message message{{.VersionName}}" style="display: none;"> |
|
|
|
<div id="header"></div> |
|
|
|
</div> |
|
|
@@ -661,4 +679,78 @@ function renderDir(data,version_name){ |
|
|
|
html += "</div>" |
|
|
|
$(`#dir_list${version_name}`).append(html) |
|
|
|
} |
|
|
|
function scrollAnimation(dom, currentY, targetY, currentX) { |
|
|
|
let needScrollTop = targetY - currentY; |
|
|
|
let _currentY = currentY; |
|
|
|
setTimeout(() => { |
|
|
|
// 一次调用滑动帧数,每次调用会不一样 |
|
|
|
//取总距离的十分之一 |
|
|
|
const dist = Math.ceil(needScrollTop / 10); |
|
|
|
_currentY += dist; |
|
|
|
//移动一个十分之一 |
|
|
|
dom.scrollTo(currentX || 0, _currentY, 'smooth'); |
|
|
|
// 如果移动幅度小于十个像素,直接移动,否则递归调用,实现动画效果 |
|
|
|
if (needScrollTop > 10 || needScrollTop < -10) { |
|
|
|
scrollAnimation(dom, _currentY, targetY) |
|
|
|
} else { |
|
|
|
dom.scrollTo(0, targetY, 'smooth') |
|
|
|
} |
|
|
|
}, 1) |
|
|
|
} |
|
|
|
|
|
|
|
$('.log_top').click(function () { |
|
|
|
// let logContentDom = document.querySelector('.log') |
|
|
|
// if(!logContentDom) |
|
|
|
// return |
|
|
|
// let version_name = $('.log_top').data('version') |
|
|
|
let version_name = $(this).data('version') |
|
|
|
let logContentDom = document.querySelector(`#log${version_name}`) |
|
|
|
|
|
|
|
$(`#log_file${version_name}`).siblings('pre').remove() |
|
|
|
$.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&base_line=&lines=50&order=asc`, (data) => { |
|
|
|
|
|
|
|
$(`#log${version_name} input[name=end_line]`).val(data.EndLine) //如果变动就改变所对应的值 |
|
|
|
$(`#log${version_name} input[name=start_line]`).val(data.StartLine) |
|
|
|
$(`#log${version_name}`).prepend('<pre>' + data.Content) |
|
|
|
$(`.message${version_name} #header`).text('您已翻阅至日志顶部') |
|
|
|
$(`.message${version_name}`).css('display', 'block') |
|
|
|
setTimeout(function () { |
|
|
|
$(`.message${version_name}`).css('display', 'none') |
|
|
|
}, 1000) |
|
|
|
scrollAnimation(logContentDom, logContentDom.scrollTop, 0); |
|
|
|
}) |
|
|
|
|
|
|
|
}) |
|
|
|
$('.log_bottom').click(function (e) { |
|
|
|
let version_name = $(this).data('version') |
|
|
|
let logContentDom = document.querySelector(`#log${version_name}`) |
|
|
|
$(`#log_file${version_name}`).siblings('pre').remove() |
|
|
|
$.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&base_line=&lines=50&order=desc`, (data) => { |
|
|
|
|
|
|
|
$(`#log${version_name} input[name=end_line]`).val(data.EndLine) //如果变动就改变所对应的值 |
|
|
|
$(`#log${version_name} input[name=start_line]`).val(data.StartLine) |
|
|
|
$(`#log${version_name}`).append('<pre>' + data.Content) |
|
|
|
$.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&base_line=${data.EndLine}&lines=50&order=desc`, (data) => { |
|
|
|
if (data.Lines == 0) { |
|
|
|
$(`.message${version_name} #header`).text('您已翻阅至日志底部') |
|
|
|
$(`.message${version_name}`).css('display', 'block') |
|
|
|
setTimeout(function () { |
|
|
|
$(`.message${version_name}`).css('display', 'none') |
|
|
|
}, 1000) |
|
|
|
} else { |
|
|
|
if (end_line === data.EndLine) { |
|
|
|
return |
|
|
|
} |
|
|
|
else { |
|
|
|
$(`#log${version_name} input[name=end_line]`).val(data.EndLine) |
|
|
|
$(`#log${version_name}`).append('<pre>' + data.Content) |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
}).fail(function (err) { |
|
|
|
console.log(err); |
|
|
|
}); |
|
|
|
scrollAnimation(logContentDom, logContentDom.scrollTop + 1, logContentDom.scrollHeight - logContentDom.clientHeight); |
|
|
|
}) |
|
|
|
}) |
|
|
|
</script> |