51 lines
1.6 KiB
JavaScript
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;
|
|
}
|