|
|
|
@@ -202,9 +202,10 @@ td, th { |
|
|
|
<div class="content accordion-border"> |
|
|
|
<div class="content-pad"> |
|
|
|
<div class="ui pointing secondary menu"> |
|
|
|
|
|
|
|
<a class="active item" data-tab="first{{$k}}">配置信息</a> |
|
|
|
<a class="item" data-tab="second{{$k}}" onclick="loadLog({{.VersionName}})">日志文件</a> |
|
|
|
<a class="item" data-tab="third{{$k}}" onclick="loadModelFile({{.VersionName}},'','true')" target="_blank">模型下载</a> |
|
|
|
<a class="item" data-tab="third{{$k}}" onclick="loadModelFile({{.VersionName}},'','','init')">模型下载</a> |
|
|
|
</div> |
|
|
|
<div class="ui tab active" data-tab="first{{$k}}"> |
|
|
|
<div style="padding-top: 10px;"> |
|
|
|
@@ -383,7 +384,7 @@ td, th { |
|
|
|
</div> |
|
|
|
<div class="ui tab" data-tab="second{{$k}}"> |
|
|
|
<div> |
|
|
|
<div class="ui message" style="display: none;"> |
|
|
|
<div class="ui message{{.VersionName}}" style="display: none;"> |
|
|
|
<div id="header"></div> |
|
|
|
</div> |
|
|
|
<div class="ui top attached segment" style="background: #f0f0f0;"> |
|
|
|
@@ -396,8 +397,8 @@ td, th { |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="ui attached segment log" style="height: 300px !important; overflow: auto;"> |
|
|
|
<input type="hidden" class="version_name" name="version_name" value={{.VersionName}}> |
|
|
|
<div class="ui attached segment log" onscroll="logScroll({{.VersionName}})" id="log{{.VersionName}}" style="height: 300px !important; overflow: auto;"> |
|
|
|
<!-- <input type="hidden" class="version_name" name="version_name" value={{.VersionName}}> --> |
|
|
|
<input type="hidden" name="end_line" value> |
|
|
|
<input type="hidden" name="start_line" value> |
|
|
|
<pre id="log_file{{.VersionName}}"></pre> |
|
|
|
@@ -407,11 +408,14 @@ td, th { |
|
|
|
|
|
|
|
</div> |
|
|
|
<div class="ui tab" data-tab="third{{$k}}"> |
|
|
|
<div class='ui breadcrumb model_file_bread' id='file_breadcrumb'> |
|
|
|
|
|
|
|
<input type="hidden" name="model{{.VersionName}}" value="-1"> |
|
|
|
<input type="hidden" name="modelback{{.VersionName}}" value="-1"> |
|
|
|
<div class='ui breadcrumb model_file_bread' id='file_breadcrumb{{.VersionName}}'> |
|
|
|
<div class="active section">{{.VersionName}}</div> |
|
|
|
<div class="divider"> / </div> |
|
|
|
|
|
|
|
</div> |
|
|
|
<div id="dir_list"> |
|
|
|
<div id="dir_list{{.VersionName}}"> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
@@ -477,7 +481,7 @@ td, th { |
|
|
|
} |
|
|
|
// var timeid = window.setInterval(refreshStatus(version_name), 30000); |
|
|
|
// document.ready(refreshStatus(version_name)) |
|
|
|
var timeid = window.setInterval(loadJobStatus, 10000); |
|
|
|
// var timeid = window.setInterval(loadJobStatus, 10000); |
|
|
|
$(document).ready(loadJobStatus); |
|
|
|
|
|
|
|
function loadJobStatus() { |
|
|
|
@@ -575,81 +579,52 @@ td, th { |
|
|
|
console.log(err); |
|
|
|
}); |
|
|
|
} |
|
|
|
function loadModelFile(version_name,parents,filename){ |
|
|
|
console.log("") |
|
|
|
function loadModelFile(version_name,parents,filename,init){ |
|
|
|
parents = parents || '' |
|
|
|
filename = filename || '' |
|
|
|
init = init || '' |
|
|
|
$.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/model_list?version_name=${version_name}&parentDir=${parents}`, (data) => { |
|
|
|
console.log("=====parents======",data,version_name,parents) |
|
|
|
if(!filename){ |
|
|
|
console.log("bread") |
|
|
|
$("#dir_list").empty() |
|
|
|
renderDir(data,version_name) |
|
|
|
renderBrend(version_name,parents,filename,false) |
|
|
|
$(`#dir_list${version_name}`).empty() |
|
|
|
renderDir(data,version_name) |
|
|
|
if(init==="init"){ |
|
|
|
$(`input[name=model${version_name}]`).val("") |
|
|
|
$(`input[name=modelback${version_name}]`).val(version_name) |
|
|
|
$(`#file_breadcrumb${version_name}`).empty() |
|
|
|
let htmlBread = "" |
|
|
|
htmlBread += `<div class='active section'>${version_name}</div>` |
|
|
|
htmlBread += "<div class='divider'> / </div>" |
|
|
|
$(`#file_breadcrumb${version_name}`).append(htmlBread) |
|
|
|
}else{ |
|
|
|
$("#dir_list").empty() |
|
|
|
renderDir(data,version_name) |
|
|
|
renderBrend(version_name,parents,filename,true) |
|
|
|
renderBrend(version_name,parents,filename,init) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
}).fail(function(err) { |
|
|
|
console.log(err,version_name); |
|
|
|
}); |
|
|
|
// if(!parents){ |
|
|
|
// $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/model_list?version_name=${version_name}`, (data) => { |
|
|
|
// console.log("===========",data,version_name) |
|
|
|
// $("#dir_list").empty() |
|
|
|
// renderDir(data,version_name) |
|
|
|
|
|
|
|
// }).fail(function(err) { |
|
|
|
// console.log(err); |
|
|
|
// }); |
|
|
|
// }else{ |
|
|
|
// console.log("-----else-----",version_name) |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
} |
|
|
|
let parentsArr=[] |
|
|
|
function renderBrend(version_name,parents,filename,flag){ |
|
|
|
if(flag){ |
|
|
|
parentsArr.push(parents) |
|
|
|
console.log("parents parentsARR",parents,parentsArr) |
|
|
|
|
|
|
|
function renderBrend(version_name,parents,filename,init){ |
|
|
|
if(init=="folder"){ |
|
|
|
let htmlBrend = "" |
|
|
|
if($('#file_breadcrumb .active').length>0){ |
|
|
|
let parents1 = parentsArr.shift() |
|
|
|
let sectionName=$('#file_breadcrumb .active.section').html() |
|
|
|
$('#file_breadcrumb .active.section').replaceWith(`<a class='section' onclick="loadModelFile('${version_name}','${parents1}')">${sectionName}</a>`) |
|
|
|
htmlBrend += `<div class='active section'>${filename}</div>` |
|
|
|
|
|
|
|
|
|
|
|
let sectionName=$(`#file_breadcrumb${version_name} .active.section`).text() |
|
|
|
let parents1 = $(`input[name=model${version_name}]`).val() |
|
|
|
let filename1 = $(`input[name=modelback${version_name}]`).val() |
|
|
|
if(parents1===""){ |
|
|
|
$(`#file_breadcrumb${version_name} .active.section`).replaceWith(`<a class='section' onclick="loadModelFile('${version_name}','${parents1}','','init')">${sectionName}</a>`) |
|
|
|
}else{ |
|
|
|
|
|
|
|
htmlBrend += `<div class='active section'>${version_name}</div>` |
|
|
|
|
|
|
|
$(`#file_breadcrumb${version_name} .active.section`).replaceWith(`<a class='section' onclick="loadModelFile('${version_name}','${parents1}','${filename1}')">${sectionName}</a>`) |
|
|
|
} |
|
|
|
console.log("parentsARR",parentsArr) |
|
|
|
|
|
|
|
htmlBrend += `<div class='active section'>${filename}</div>` |
|
|
|
htmlBrend += "<div class='divider'> / </div>" |
|
|
|
$('#file_breadcrumb').append(htmlBrend) |
|
|
|
|
|
|
|
$(`#file_breadcrumb${version_name}`).append(htmlBrend) |
|
|
|
$(`input[name=model${version_name}]`).val(parents) |
|
|
|
$(`input[name=modelback${version_name}]`).val(filename) |
|
|
|
}else{ |
|
|
|
if(!parents){ |
|
|
|
$('#file_breadcrumb').empty() |
|
|
|
let htmlBread = "" |
|
|
|
htmlBread += `<div class='active section'>${version_name}</div>` |
|
|
|
htmlBread += "<div class='divider'> / </div>" |
|
|
|
$('#file_breadcrumb').append(htmlBread) |
|
|
|
}else{ |
|
|
|
|
|
|
|
$(`a.section:contains(${parents})`).nextAll().remove() |
|
|
|
$(`a.section:contains(${parents})`).replaceWith(`<div class='active section'>${parents}</div>`) |
|
|
|
$(`a.section:contains(${parents})`).append("<div class='divider'> / </div>") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
$(`input[name=model${version_name}]`).val(parents) |
|
|
|
$(`input[name=modelback${version_name}]`).val(filename) |
|
|
|
$(`#file_breadcrumb${version_name} a.section:contains(${filename})`).nextAll().remove() |
|
|
|
$(`#file_breadcrumb${version_name} a.section:contains(${filename})`).replaceWith(`<div class='active section'>${filename}</div>`) |
|
|
|
$(`#file_breadcrumb${version_name} div.section:contains(${filename})`).append("<div class='divider'> / </div>") |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
@@ -669,7 +644,7 @@ td, th { |
|
|
|
html += "<span class='octicon octicon-file-directory'>" |
|
|
|
html += "</span>" |
|
|
|
if(data.Dirs[i].IsDir){ |
|
|
|
html += `<a onclick="loadModelFile('${version_name}','${data.Dirs[i].ParenDir}','${data.Dirs[i].FileName}')">` |
|
|
|
html += `<a onclick="loadModelFile('${version_name}','${data.Dirs[i].ParenDir}','${data.Dirs[i].FileName}','folder')">` |
|
|
|
html += "<span class='fitted'><i class='folder icon' width='16' height='16' aria-hidden='true'></i>" + data.Dirs[i].FileName + "</span>" |
|
|
|
}else{ |
|
|
|
html += `<a href='${location.href}/download_model?parentDir=&fileName=${data.Dirs[i].FileName}&jobName=${data.task.JobName}'>` |
|
|
|
@@ -694,46 +669,48 @@ td, th { |
|
|
|
html += "</div>" |
|
|
|
html += "</div>" |
|
|
|
html += "</div>" |
|
|
|
$("#dir_list").append(html) |
|
|
|
$(`#dir_list${version_name}`).append(html) |
|
|
|
} |
|
|
|
$(".log").scroll(function () { |
|
|
|
var scrollTop = $(this)[0].scrollTop; // 滚动距离 |
|
|
|
var scrollHeight = $(this)[0].scrollHeight; // 文档高度 |
|
|
|
var divHeight = $(this).height(); // 可视区高度 |
|
|
|
let version_name=$(this).find('input[name=version_name]').val() |
|
|
|
// $(`.log{}`).scroll() |
|
|
|
function logScroll(version_name) { |
|
|
|
var scrollTop = $(`#log${version_name}`)[0].scrollTop; // 滚动距离 |
|
|
|
var scrollHeight = $(`#log${version_name}`)[0].scrollHeight; // 文档高度 |
|
|
|
var divHeight = $(`#log${version_name}`).height(); // 可视区高度 |
|
|
|
// let version_name=$(this).find('input[name=version_name]').val() |
|
|
|
console.log("scrollTo,scrollHeight,divHeight",scrollTop,scrollHeight,divHeight) |
|
|
|
if(parseInt(scrollTop) + divHeight + 18 == scrollHeight){ |
|
|
|
var end_line = $('input[name=end_line]').val() |
|
|
|
var end_line = $(`#log${version_name} input[name=end_line]`).val() |
|
|
|
$.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&base_line=${end_line}&order=desc`, (data) => { |
|
|
|
if (data.Lines == 0){ |
|
|
|
$('#header').text('您已翻阅至日志底部') |
|
|
|
$('.message').css('display', 'block') |
|
|
|
$(`.message${version_name} #header`).text('您已翻阅至日志底部') |
|
|
|
$(`.message${version_name}`).css('display', 'block') |
|
|
|
setTimeout(function(){ |
|
|
|
$('.message').css('display', 'none') |
|
|
|
$(`.message${version_name}`).css('display', 'none') |
|
|
|
}, 1000) |
|
|
|
}else{ |
|
|
|
$('input[name=end_line]').val(data.EndLine) |
|
|
|
$('.log').append('<pre>' + data.Content) |
|
|
|
$(`#log${version_name} input[name=end_line]`).val(data.EndLine) |
|
|
|
$(`#log${version_name}`).append('<pre>' + data.Content) |
|
|
|
} |
|
|
|
}).fail(function(err) { |
|
|
|
console.log(err); |
|
|
|
}); |
|
|
|
} |
|
|
|
if(scrollTop == 0){ |
|
|
|
var start_line = $('input[name=start_line]').val() |
|
|
|
var start_line = $(`#log${version_name} input[name=start_line]`).val() |
|
|
|
$.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/log?version_name=${version_name}&base_line=${start_line}&order=asc`, (data) => { |
|
|
|
if (data.Lines == 0){ |
|
|
|
$('#header').text('您已翻阅至日志顶部') |
|
|
|
$('.message').css('display', 'block') |
|
|
|
$(`.message${version_name} #header`).text('您已翻阅至日志顶部') |
|
|
|
$(`.message${version_name}`).css('display', 'block') |
|
|
|
setTimeout(function(){ |
|
|
|
$('.message').css('display', 'none') |
|
|
|
$(`.message${version_name}`).css('display', 'none') |
|
|
|
}, 1000) |
|
|
|
}else{ |
|
|
|
$('input[name=start_line]').val(data.StartLine) //如果变动就改变所对应的值 |
|
|
|
$(".log").prepend('<pre>' + data.Content) |
|
|
|
$(`#log${version_name} input[name=start_line]`).val(data.StartLine) //如果变动就改变所对应的值 |
|
|
|
$(`#log${version_name}`).prepend('<pre>' + data.Content) |
|
|
|
} |
|
|
|
}).fail(function(err) { |
|
|
|
console.log(err); |
|
|
|
}); |
|
|
|
} |
|
|
|
}) |
|
|
|
} |
|
|
|
</script> |