|
|
@@ -149,7 +149,16 @@ td, th { |
|
|
|
pointer-events: none; |
|
|
|
color: rgba(0,0,0,.6) !important; |
|
|
|
opacity: .45 !important; |
|
|
|
} |
|
|
|
} |
|
|
|
.pad20{ |
|
|
|
|
|
|
|
border:0px !important; |
|
|
|
} |
|
|
|
.model_file_bread{ |
|
|
|
margin-bottom: -0.5rem !important; |
|
|
|
padding-left: 1rem; |
|
|
|
padding-top: 0.5rem ; |
|
|
|
} |
|
|
|
</style> |
|
|
|
<div class="repository"> |
|
|
|
{{template "repo/header" .}} |
|
|
@@ -195,7 +204,7 @@ td, th { |
|
|
|
<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}}" href="{{$.Link}}/models?version_name={{.VersionName}}" target="_blank">模型下载</a> --> |
|
|
|
<a class="item" data-tab="third{{$k}}" onclick="loadModelFile({{.VersionName}},'','true')" target="_blank">模型下载</a> |
|
|
|
</div> |
|
|
|
<div class="ui tab active" data-tab="first{{$k}}"> |
|
|
|
<div style="padding-top: 10px;"> |
|
|
@@ -300,7 +309,7 @@ td, th { |
|
|
|
</tr> |
|
|
|
<tr class="ti-no-ng-animate"> |
|
|
|
<td class="ti-no-ng-animate ti-text-form-label text-width80"> |
|
|
|
代码分支 |
|
|
|
{{$.i18n.Tr "repo.modelarts.code_version"}} |
|
|
|
</td> |
|
|
|
|
|
|
|
<td class="ti-text-form-content"> |
|
|
@@ -397,11 +406,15 @@ td, th { |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
<!-- <div class="ui tab" data-tab="third{{$k}}"> |
|
|
|
<div> |
|
|
|
<div class="ui tab" data-tab="third{{$k}}"> |
|
|
|
<div class='ui breadcrumb model_file_bread' id='file_breadcrumb'> |
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
<div id="dir_list"> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> --> |
|
|
|
</div> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
@@ -464,9 +477,12 @@ td, th { |
|
|
|
} |
|
|
|
// var timeid = window.setInterval(refreshStatus(version_name), 30000); |
|
|
|
// document.ready(refreshStatus(version_name)) |
|
|
|
var timeid = window.setInterval(loadJobStatus, 10000); |
|
|
|
$(document).ready(loadJobStatus); |
|
|
|
|
|
|
|
function loadJobStatus() { |
|
|
|
$(".ui.accordion.border-according").each((index, job) => { |
|
|
|
|
|
|
|
const jobID = job.dataset.jobid; |
|
|
|
const repoPath = job.dataset.repopath; |
|
|
|
const versionname = job.dataset.version |
|
|
@@ -477,9 +493,15 @@ td, th { |
|
|
|
} |
|
|
|
|
|
|
|
$.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 |
|
|
|
// const jobID = data.JobID |
|
|
|
// const status = data.JobStatus |
|
|
|
// const duration = data.JobDuration |
|
|
|
$(`#${versionname}-duration-span`).text(data.JobDuration) |
|
|
|
$(`#${versionname}-status-span span`).text(data.JobStatus) |
|
|
|
$(`#${versionname}-status-span i`).attr("class",data.JobStatus) |
|
|
|
// detail status and duration |
|
|
|
$('#'+versionname+'-duration').text(data.JobDuration) |
|
|
|
$('#'+versionname+'-status').text(data.JobStatus) |
|
|
|
// $('#duration-'+jobID).text(duration) |
|
|
|
// if (status != job.textContent.trim()) { |
|
|
|
// $('#' + jobID+'-icon').removeClass().addClass(status) |
|
|
@@ -553,13 +575,127 @@ td, th { |
|
|
|
console.log(err); |
|
|
|
}); |
|
|
|
} |
|
|
|
// function loadModelFile(version_name){ |
|
|
|
// $.get(`/api/v1/repos/${userName}/${repoPath}/modelarts/train-job/${jobID}/model_list?version_name=${version_name}&lines=20&order=asc`, (data) => { |
|
|
|
// console.log(data) |
|
|
|
// }).fail(function(err) { |
|
|
|
// console.log(err); |
|
|
|
// }); |
|
|
|
// } |
|
|
|
function loadModelFile(version_name,parents,filename){ |
|
|
|
console.log("") |
|
|
|
parents = parents || '' |
|
|
|
filename = filename || '' |
|
|
|
$.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) |
|
|
|
}else{ |
|
|
|
$("#dir_list").empty() |
|
|
|
renderDir(data,version_name) |
|
|
|
renderBrend(version_name,parents,filename,true) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
}).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) |
|
|
|
|
|
|
|
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>` |
|
|
|
|
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
htmlBrend += `<div class='active section'>${version_name}</div>` |
|
|
|
|
|
|
|
} |
|
|
|
console.log("parentsARR",parentsArr) |
|
|
|
|
|
|
|
htmlBrend += "<div class='divider'> / </div>" |
|
|
|
$('#file_breadcrumb').append(htmlBrend) |
|
|
|
|
|
|
|
}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>") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
function renderDir(data,version_name){ |
|
|
|
let html="" |
|
|
|
html += "<div class='ui grid' style='margin:0;'>" |
|
|
|
html += "<div class='row' style='padding: 0;'>" |
|
|
|
html += "<div class='ui sixteen wide column' style='padding:1rem;'>" |
|
|
|
html += "<div class='dir list'>" |
|
|
|
html += "<table id='repo-files-table' class='ui single line table pad20'>" |
|
|
|
html += '<tbody>' |
|
|
|
// html += "</tbody>" |
|
|
|
for(let i=0;i<data.Dirs.length;i++){ |
|
|
|
html += "<tr>" |
|
|
|
html += "<td class='name six wid'>" |
|
|
|
html += "<span class='truncate'>" |
|
|
|
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 += "<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}'>` |
|
|
|
html += "<span class='fitted'><i class='file icon' width='16' height='16' aria-hidden='true'></i>" + data.Dirs[i].FileName + "</span>" |
|
|
|
} |
|
|
|
html += '</a>' |
|
|
|
html += "</span>" |
|
|
|
html += "</td>" |
|
|
|
html += "<td class='message seven wide'>" |
|
|
|
html += "<span class='truncate has-emoji'>" + data.Dirs[i].Size + "</span>" |
|
|
|
html += "</td>" |
|
|
|
|
|
|
|
html += "<td class='text right age three wide'>" |
|
|
|
html += "<span class='truncate has-emoji'>" + data.Dirs[i].ModTime + "</span>" |
|
|
|
html += "</td>" |
|
|
|
html += "</tr>" |
|
|
|
|
|
|
|
} |
|
|
|
html += "</tbody>" |
|
|
|
html += "</table>" |
|
|
|
html += "</div>" |
|
|
|
html += "</div>" |
|
|
|
html += "</div>" |
|
|
|
html += "</div>" |
|
|
|
$("#dir_list").append(html) |
|
|
|
} |
|
|
|
$(".log").scroll(function () { |
|
|
|
var scrollTop = $(this)[0].scrollTop; // 滚动距离 |
|
|
|
var scrollHeight = $(this)[0].scrollHeight; // 文档高度 |
|
|
|