export default async function initCloudrainSow() { function debounce(fn, delay) { let timer; return (...args) => { // 判断定时器是否存在,清除定时器 if (timer) { clearTimeout(timer); } // 重新调用setTimeout timer = setTimeout(() => { fn.apply(this, args); }, delay); }; } function paddingZeros(str, len) { str = str.toString(); if (str.length < len) { str = new Array(len - str.length).fill('0').join('') + str; } return str; } function timeFormat(date) { return `${date.getFullYear()}-${paddingZeros(date.getMonth() + 1, 2)}-${paddingZeros(date.getDate(), 2)} ${paddingZeros(date.getHours(), 2)}:${paddingZeros(date.getMinutes(), 2)}:${paddingZeros(date.getSeconds(), 2)}`; } function logScroll(version_name, repoPath, ID, max = "", lines = 60) { let container = document.querySelector(`#log${max}${version_name}`); let scrollTop = container.scrollTop; let scrollHeight = container.scrollHeight; let clientHeight = container.clientHeight; let scrollLeft = container.scrollLeft; if ( (parseInt(scrollTop) + clientHeight == scrollHeight || parseInt(scrollTop) + clientHeight + 1 == scrollHeight || parseInt(scrollTop) + clientHeight - 1 == scrollHeight) && scrollLeft === 0 ) { let end_line = $(`#log${version_name} input[name=end_line${max}]`).val(); $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css({ "background-color": "#fff", display: "block", }); $.get( `/api/v1/repos/${repoPath}/${ID}/log?version_name=${version_name}&base_line=${end_line}&lines=${lines}&order=desc`, (data) => { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); if (data.Lines == 0) { if (max) { $("body").toast({ class: "black", message: i18n.scrolled_logs_bottom_pls_retry, }); } else { $(`.message${version_name} #header`).text(i18n.scrolled_logs_bottom); $(`.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${max}]`).val( data.EndLine ); $(`#log${max}${version_name}`).append("
" + data.Content); } } } ).fail(function (err) { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); console.log(err); }); } if (scrollTop == 0 && scrollLeft == 0) { let start_line = $( `#log${version_name} input[name=start_line${max}]` ).val(); $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css({ "background-color": "#fff", display: "block", }); $.get( `/api/v1/repos/${repoPath}/${ID}/log?version_name=${version_name}&base_line=${start_line}&lines=${lines}&order=asc`, (data) => { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); if (data.Lines == 0) { if (max) { $("body").toast({ class: "black", message: i18n.scrolled_logs_top_pls_retry, }); } else { $(`.message${version_name} #header`).text(i18n.scrolled_logs_top); $(`.message${version_name}`).css("display", "block"); setTimeout(function () { $(`.message${version_name}`).css("display", "none"); }, 1000); } } else { $(`#log${version_name} input[name=start_line${max}]`).val( data.StartLine ); //如果变动就改变所对应的值 $(`#log${max}${version_name}`).prepend("" + data.Content); } } ).fail(function (err) { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); console.log(err); }); } } const fn = debounce(logScroll, 500); $(".log-scroll").scroll(function () { let version_name = $(this).data("version"); let ID = $(`#accordion${version_name}`).data("jobid"); let repoPath = $(`#accordion${version_name}`).data("repopath"); fn(version_name, repoPath, ID); }); 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); } function logTop(e) { let max = e.currentTarget.getAttribute("data-max") || ""; let lines = !!max ? 100 : 60; let version_name = $(this).data("version"); let logContentDom = document.querySelector(`#log${max}${version_name}`); let ID = $(`#accordion${version_name}`).data("jobid"); let repoPath = $(`#accordion${version_name}`).data("repopath"); let start_line = $(`#log${version_name} input[name=end_line${max}]`).val(); $(`#log_file${max}${version_name}`).siblings("pre").remove(); $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css({ "background-color": "#fff", display: "block", }); $.get( `/api/v1/repos/${repoPath}/${ID}/log?version_name=${version_name}&base_line=&lines=${lines}&order=asc`, (data) => { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); $(`#log${version_name} input[name=end_line${max}]`).val(data.EndLine); //如果变动就改变所对应的值 $(`#log${version_name} input[name=start_line${max}]`).val( data.StartLine ); $(`#log${max}${version_name}`).prepend("" + data.Content); if (data.Lines == 0) { if (max) { $("body").toast({ class: "black", message: i18n.scrolled_logs_top_pls_retry, }); } else { $(`.message${version_name} #header`).text(i18n.scrolled_logs_top); $(`.message${version_name}`).css("display", "block"); setTimeout(function () { $(`.message${version_name}`).css("display", "none"); }, 1000); } } $.get( `/api/v1/repos/${repoPath}/${ID}/log?version_name=${version_name}&base_line=${data.StartLine}&lines=${lines}&order=asc`, (data) => { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); if (data.Lines == 0) { if (max) { $("body").toast({ class: "black", message: i18n.scrolled_logs_top_pls_retry, }); } else { $(`.message${version_name} #header`).text(i18n.scrolled_logs_top); $(`.message${version_name}`).css("display", "block"); setTimeout(function () { $(`.message${version_name}`).css("display", "none"); }, 1000); } } else { if (start_line === data.StartLine || start_line === "") { return; } else { $(`#log${version_name} input[name=start_line${max}]`).val( data.StartLine ); $(`#log${max}${version_name}`).prepend("" + data.Content); } } } ).fail(function (err) { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); console.log(err); }); scrollAnimation(logContentDom, logContentDom.scrollTop, 10); } ).fail((err) => { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); throw err; }); } function logBottom(e) { let max = e.currentTarget.getAttribute("data-max") || ""; let lines = !!max ? 100 : 60; let version_name = $(this).data("version"); let logContentDom = document.querySelector(`#log${max}${version_name}`); let ID = $(`#accordion${version_name}`).data("jobid"); let repoPath = $(`#accordion${version_name}`).data("repopath"); $(`#log_file${max}${version_name}`).siblings("pre").remove(); let end_line = $(`#log${version_name} input[name=end_line${max}]`).val(); $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css({ "background-color": "#fff", display: "block", }); $.get( `/api/v1/repos/${repoPath}/${ID}/log?version_name=${version_name}&base_line=&lines=${lines}&order=desc`, (data) => { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); if (!data.CanLogDownload) { $(`#${version_name}-log-down`) .removeClass("ti-download-file") .addClass("disabled"); $(`.max-full-log${version_name} #${version_name}-log-down`) .removeClass("ti-download-file") .addClass("disabled"); } else { $(`#${version_name}-log-down`) .addClass("ti-download-file") .removeClass("disabled"); $(`.max-full-log${version_name} #${version_name}-log-down`) .addClass("ti-download-file") .removeClass("disabled"); } $(`#log${version_name} input[name=end_line${max}]`).val(data.EndLine); //如果变动就改变所对应的值 if ($(this)[0].hasAttribute("data-tab")) { $(`#log${version_name} input[name=end_line-max]`).val(data.EndLine); $(`#log${version_name} input[name=start_line-max]`).val( data.StartLine ); $(`#log${version_name} input[name=start_line-max-copy]`).val( data.StartLine ); } $(`#log${version_name} input[name=start_line${max}]`).val( data.StartLine ); $(`#log${max}${version_name}`).append("" + data.Content); $.get( `/api/v1/repos/${repoPath}/${ID}/log?version_name=${version_name}&base_line=${data.EndLine}&lines=${lines}&order=desc`, (data) => { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); if (data.Lines == 0) { if (max) { $("body").toast({ class: "black", message: i18n.scrolled_logs_bottom_pls_retry, }); } else { $(`.message${version_name} #header`).text(i18n.scrolled_logs_bottom); $(`.message${version_name}`).css("display", "block"); setTimeout(function () { $(`.message${version_name}`).css("display", "none"); }, 1000); } } else { if (end_line === data.EndLine || end_line === "") { return; } else { $(`#log${version_name} input[name=end_line${max}]`).val( data.EndLine ); if ($(this)[0].hasAttribute("data-tab")) { $(`#log${version_name} input[name=end_line-max]`).val( data.EndLine ); } $(`#log${max}${version_name}`).append("" + data.Content); } } } ).fail(function (err) { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); console.log(err); }); let test = $(`#log_file${version_name}`).nextAll(); test.length !== 0 && $(`#log${version_name} input[name=init_log]`).val(test[0].innerHTML); scrollAnimation( logContentDom, logContentDom.scrollTop + 1, logContentDom.scrollHeight - logContentDom.clientHeight - 10 ); } ).fail((err) => { $(`#log${max}${version_name} .ui.inverted.active.dimmer`).css( "display", "none" ); throw err; }); } $(".log_top").click(logTop); $(".log_bottom").click(logBottom); // $(".log-scroll-max").scroll(); $(".full-log-dialog").click(function () { let version_name = $(this).data("version"); let log_type = $(this).data("log-type") || ""; let logContentDom = document.querySelector(`#log-max${version_name}`); $(`.ui.modal.max-full-log${version_name}`) .modal({ closable: false, onShow: function () { $(".ui.dimmer.modals").css({ "background-color": "rgb(136, 136, 136,0.7)", }); $(".log-scroll-max .ui.inverted.active.dimmer").css( "display", "none" ); $(".file-info #log-file-title").text( $(".full-log-dialog").data("log") ); $(".file-info #log-file-exit").text( $(".full-log-dialog").data("exit") ); $(".file-info .log-file-down").text( $(".full-log-dialog").data("log-down") ); $(".file-info .log-file-down").text( $(".full-log-dialog").data("log-down") ); $(`.max-full-log${version_name} #${version_name}-log-down`).attr( "href", $(".full-log-dialog").data("href") ); $(`.max-full-log${version_name} .log_top-max`).attr( "title", $(".full-log-dialog").data("scroll-top") ); $(`.max-full-log${version_name} .log_bottom-max`).attr( "title", $(".full-log-dialog").data("scroll-bottom") ); }, onVisible: function () { $(`#log-max${version_name}`).append( "" + $(`#log${version_name} input[name=init_log]`).val() ); scrollAnimation( logContentDom, logContentDom.scrollTop + 1, logContentDom.scrollHeight - logContentDom.clientHeight ); if (log_type !== "c2Net") { $(".log-scroll-max").bind("scroll", function () { let version_name = $(this).data("version"); let ID = $(`#accordion${version_name}`).data("jobid"); let repoPath = $(`#accordion${version_name}`).data("repopath"); fn(version_name, repoPath, ID, "-max", 100); }); } $(".log_bottom-max").bind("click", logBottom); $(".log_top-max").bind("click", logTop); }, onHide: function () { let startLine = $( `#log${version_name} input[name=start_line-max-copy]` ).val(); $(`#log_file-max${version_name}`).siblings("pre").remove(); $(`#log${version_name} input[name=start_line-max]`).val(startLine); $(".log-scroll-max").unbind("scroll"); $(".log_bottom-max").unbind("click"); $(".log_top-max").unbind("click"); }, }) .modal("show"); }); function loadLog(version_name) { document.getElementById("mask").style.display = "block"; $.get( `/api/v1/repos/${userName}/${repoPath}/grampus/train-job/${jobID}/log?version_name=${version_name}&lines=50&order=asc`, (data) => { $("input[name=end_line]").val(data.EndLine); $("input[name=start_line]").val(data.StartLine); $(`#log_file${version_name}`).text(data.Content); document.getElementById("mask").style.display = "none"; } ).fail(function (err) { document.getElementById("mask").style.display = "none"; console.log(err); }); } $(".refresh-status").click(function (e) { let version_name = $(this).data("version"); let ID = $(`#accordion${version_name}`).data("jobid"); let repoPath = $(`#accordion${version_name}`).data("repopath"); refreshStatusShow(version_name, ID, repoPath); e.stopPropagation(); }); $(".stop-show-version").click(function (e) { const ID = this.dataset.jobid; const repoPath = this.dataset.repopath; const version_name = this.dataset.version; const url = `/api/v1/repos/${repoPath}/${ID}/stop_version`; $.post(url, { version_name: version_name }, (data) => { if (data.StatusOK === 0) { $(`#${version_name}-stop`).removeClass("blue"); $(`#${version_name}-stop`).addClass("disabled"); refreshStatusShow(version_name, ID, repoPath); } }).fail(function (err) { console.log(err); }); e.stopPropagation(); }); $(".delete-show-version").click(function (e) { const ID = this.dataset.jobid; const repoPath = this.dataset.repopath; const version_name = this.dataset.version; const url = `/api/v1/repos/${repoPath}/${ID}/del_version`; $(".ui.basic.modal") .modal({ onApprove: function () { $.post(url, { version_name: version_name }, (data) => { if (data.StatusOK === 0) { if (data.VersionListCount === 0) { location.href = `/${repoPath}`; } else { $("#accordion" + version_name).remove(); } refreshStatusShow(version_name, ID, repoPath); } else { return; } }).fail(function (err) { console.log(err); }); }, }) .modal("show"); e.stopPropagation(); }); $('.ui.pointing.secondary.menu .item:eq(0)').click(function(e) { const self = $(this); setTimeout(function() { self.closest('.accordion').find('.refresh-status').trigger('click'); }, 20); }); function refreshStatusShow(version_name, ID, repoPath) { $.get( `/api/v1/repos/${repoPath}/${ID}?version_name=${version_name}`, (data) => { //accroding下的状态 $(`#${version_name}-status-span span`).text(data.JobStatus); //accroding下的状态图标 $(`#${version_name}-status-span i`).attr("class", data.JobStatus); //accroding下的运行时长 $(`#${version_name}-duration-span`).text(data.JobDuration); //配置信息详情页的状态 data.StartTime !== undefined && data.StartTime > 0 && $(`#${version_name}-startTime`).text(timeFormat(new Date(data.StartTime * 1000))); //配置信息详情页的状态 $(`#${version_name}-status`).text(data.JobStatus); //配置信息详情页的状态 $(`#${version_name}-duration`).text(data.JobDuration); //配置信息详情页的状态 $(`#${version_name}-ai_center`).text(data.AiCenter); } ).fail(function (err) { console.log(err); }); const accordionEl = $(`#accordion${version_name}`); const activeTab = accordionEl.find('.ui.pointing.secondary.menu .item:not(:eq(0)).active'); activeTab.trigger('click'); } // $(".content-pad").on("click", ".load-model-file", function () { let downloadFlag = $(this).data("download-flag") || ""; let gpuFlag = $(this).data("gpu-flag") || ""; let version_name = $(this).data("version"); let parents = $(this).data("parents"); let filename = $(this).data("filename"); let init = $(this).data("init") || ""; let path = $(this).data("path"); $(`#dir_list${version_name}`).empty(); let url = `/api/v1/repos${path}?version_name=${version_name}&parentDir=${parents}`; $.get(url, (data) => { if (data.StatusOK == 0) { // 成功 0 if (data.Dirs) { data.Dirs.length !==0 && $(`#${version_name}-result-down`).show() renderDir(path, data, version_name, downloadFlag, gpuFlag); } if (init === "init") { $(`input[name=model${version_name}]`).val(""); $(`input[name=modelback${version_name}]`).val(version_name); $(`#file_breadcrumb${version_name}`).empty(); let htmlBread = ""; if (version_name) { htmlBread += `${version_name}`; } else { htmlBread += `result`; } htmlBread += "/"; $(`#file_breadcrumb${version_name}`).append(htmlBread); } else { renderBrend( path, version_name, parents, filename, init, downloadFlag, gpuFlag ); } } else if (data.StatusOK == 1) { // 处理中 1 $(`#file_breadcrumb${version_name}`).empty(); $(`#dir_list${version_name}`).html(``); } else if (data.StatusOK == 2) { // 失败 2 $(`#file_breadcrumb${version_name}`).empty(); $(`#dir_list${version_name}`).html(`${i18n['file_sync_ing']}`); } else if (data.StatusOK == 3) { // 无文件 3 $(`#file_breadcrumb${version_name}`).empty(); $(`#dir_list${version_name}`).html(`${i18n['file_sync_fail']}`); } else if (data.StatusOK == 4) { // 任务未结束 4 $(`#file_breadcrumb${version_name}`).empty(); $(`#dir_list${version_name}`).html(`${i18n['no_file_to_download']}`); } }).fail(function (err) { console.log(err, version_name); }); }); function renderSize(value) { if (null == value || value == "") { return "0 Bytes"; } var unitArr = new Array( "Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" ); var index = 0; var srcsize = parseFloat(value); index = Math.floor(Math.log(srcsize) / Math.log(1024)); var size = srcsize / Math.pow(1024, index); size = size.toFixed(0); //保留的小数位数 return size + unitArr[index]; } function renderBrend( path, version_name, parents, filename, init, downloadFlag, gpuFlag ) { if (init == "folder") { let htmlBrend = ""; 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( `${sectionName}` ); } else { $(`#file_breadcrumb${version_name} .active.section`).replaceWith( `${sectionName}` ); } htmlBrend += `${i18n['task_not_finished']}${filename}`; htmlBrend += "/"; $(`#file_breadcrumb${version_name}`).append(htmlBrend); $(`input[name=model${version_name}]`).val(parents); $(`input[name=modelback${version_name}]`).val(filename); } else { $(`input[name=model${version_name}]`).val(parents); $(`input[name=modelback${version_name}]`).val(filename); let selectEle = $(`#file_breadcrumb${version_name} a.section`).filter( (index, item) => { return item.text == filename; } ); selectEle.nextAll().remove(); selectEle.after("/"); selectEle.replaceWith(`${filename}`); } } function renderDir(path, data, version_name, downloadFlag, gpuFlag) { let html = ""; html += ""; html += ""; $(`#dir_list${version_name}`).append(html); } }"; html += ""; html += ""; html += ""; html += ""; html += ""; html += ""; html += ""; // html += "" for (let i = 0; i < data.Dirs.length; i++) { let dirs_size = renderSize(data.Dirs[i].Size); html += "
"; html += ""; html += " "; } html += ""; html += ""; html += ""; html += ""; html += ""; if (data.Dirs[i].IsDir) { html += ``; html += "" + data.Dirs[i].FileName + ""; } else { if (downloadFlag) { if (gpuFlag) { if (path.includes("model_list")) { html += ``; } else { html += ``; } } else { if (path.includes("model_list")) { html += ``; } else { html += ``; } } } else { html += ``; } html += "" + data.Dirs[i].FileName + ""; } html += ""; html += ""; html += " "; html += " "; html += ""; html += "" + data.Dirs[i].ModTime + ""; html += " "; html += "