1
0
Fork 0
mirror of https://github.com/betaflight/betaflight-configurator.git synced 2025-07-19 14:25:14 +03:00

Adding a progress bar for CLOUD BUILD progress (#3081)

* Adding simple progress bar for build request

* Adding language support.
This commit is contained in:
J Blackman 2022-11-15 07:48:12 +11:00 committed by GitHub
parent 30340c17bd
commit 717d7f6685
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 14 deletions

View file

@ -772,11 +772,12 @@ firmware_flasher.initialize = function (callback) {
i18n.localizePage();
}
function updateStatus(status, key) {
if (status === 'success' || status === 'fail') {
$('div.release_info #cloudTargetLog').text('Build Log').prop('href', `https://build.betaflight.com/api/builds/${key}/log`);
function updateStatus(status, key, val, showLog) {
if (showLog === true) {
$('div.release_info #cloudTargetLog').text(i18n.getMessage(`firmwareFlasherCloudBuildLogUrl`)).prop('href', `https://build.betaflight.com/api/builds/${key}/log`);
}
$('div.release_info #cloudTargetStatus').text(status);
$('div.release_info #cloudTargetStatus').text(i18n.getMessage(`firmwareFlasherCloudBuild${status}`));
$('.buildProgress').val(val);
}
function requestCloudBuild(summary) {
@ -817,14 +818,17 @@ firmware_flasher.initialize = function (callback) {
analytics.setFirmwareData(analytics.DATA.FIRMWARE_NAME, info.file);
let retries = 0;
updateStatus('Pending', info.key, 0, false);
let retries = 1;
self.releaseLoader.requestBuildStatus(info.key, (status) => {
if (status.status !== "queued") {
updateStatus(status.status, info.key);
// will be cached already, no need to wait.
if (status.status === 'success') {
updateStatus('SuccessCached', info.key, 100, true);
$('.buildProgress').val(100);
self.releaseLoader.loadTargetHex(info.url, (hex) => onLoadSuccess(hex, info.file), onLoadFailed);
} else {
updateStatus('Failed', info.key, 0, true);
onLoadFailed();
}
return;
@ -832,20 +836,26 @@ firmware_flasher.initialize = function (callback) {
const timer = setInterval(() => {
self.releaseLoader.requestBuildStatus(info.key, (status) => {
if (status.status !== 'queued' || retries > 8) {
updateStatus(status.status, info.key);
if (status.status !== 'queued' || retries > 10) {
clearInterval(timer);
if (status.status === 'success') {
updateStatus('Success', info.key, 100, true);
self.releaseLoader.loadTargetHex(info.url, (hex) => onLoadSuccess(hex, info.file), onLoadFailed);
} else {
if (retries > 10) {
updateStatus('TimedOut', info.key, 0, true);
} else {
updateStatus('Failed', info.key, 0, true);
}
onLoadFailed();
}
return;
}
updateStatus(`${status.status} (${retries})`, info.key);
updateStatus('Processing', info.key, retries * 10, false);
retries = retries + 1;
});
}, 5000);
}, 4000);
});
}, onLoadFailed);
}