znt/module/upgrade/js/upgradeprojectreports.ui.js

51 lines
1.6 KiB
JavaScript

/* 开始升级项目报告。*/
window.startUpgradeReports = function(event, reportList, upgradingReportsText, nextText)
{
const $btn = $('#upgradeReportsBtn');
if($btn.hasClass('is-finished')) return;
event.preventDefault();
const $progressBar = $('#upgradeReportsProgress').addClass('active').find('.progress-bar');
$btn.attr('disabled', 'disabled').addClass('disabled').removeClass('primary').find('.text').text(upgradingReportsText);
upgradeReports(reportList,
{
onProgress: (current, total) =>
{
$progressBar.css('width', (100 * current / total) + '%');
$btn.find('.text').text(`${upgradingReportsText} (${current}/${total})`);
}
}).then(() =>
{
$btn.removeAttr('disabled').removeClass('disabled').addClass('primary is-finished').find('.text').text(nextText);
$('#upgradeReportsProgress').removeClass('active')
});
};
/* 更新升级项目报告进度。*/
async function upgradeReports(reportList, options)
{
let current = 0;
const total = reportList.length;
const onProgress = options.onProgress;
for(const report of reportList)
{
onProgress(current, total);
await upgradeReport(report);
await zui.delay(50);
current ++;
}
onProgress(current, total);
return reportList;
}
/* 升级项目报告。*/
async function upgradeReport(report)
{
let result;
await $.post($.createLink('upgrade', 'ajaxUpgradeProjectReport'), {data: report}, (res) =>
{
result = res.result === 'success' ? true : res.message;
}, 'json');
return result;
}