mirror of
https://git.yoctoproject.org/poky
synced 2026-03-04 06:19:40 +01:00
When using MySQL, the project builds info delivered by MySQL differs from that delivered by SQLite: the former returns text values from the enumeration for Build outcomes, while the latter returns the integer value. This causes the progress bar JS to break, as it is expecting outcome strings. Modify the recent_build() method to include an outcomeText property for each Build object, then use this in the conditionals in the progress bar JS. [YOCTO #9498] (Bitbake rev: 7ac374adf1cc70173ff6cc492bc078bba1cf500b) Signed-off-by: Elliot Smith <elliot.smith@intel.com> Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
96 lines
2.8 KiB
JavaScript
96 lines
2.8 KiB
JavaScript
|
|
function mrbSectionInit(ctx){
|
|
|
|
var projectBuilds;
|
|
|
|
if (ctx.mrbType === 'project')
|
|
projectBuilds = true;
|
|
|
|
$(".cancel-build-btn").click(function(e){
|
|
e.preventDefault();
|
|
|
|
var url = $(this).data('request-url');
|
|
var buildReqIds = $(this).data('buildrequest-id');
|
|
var banner = $(this).parents(".alert");
|
|
|
|
banner.find(".progress-info").fadeOut().promise().done(function(){
|
|
$("#cancelling-msg-" + buildReqIds).show();
|
|
console.log("cancel build");
|
|
libtoaster.cancelABuild(url, buildReqIds, function(){
|
|
if (projectBuilds == false){
|
|
/* the all builds page is not 'self updating' like thei
|
|
* project Builds
|
|
*/
|
|
window.location.reload();
|
|
}
|
|
}, null);
|
|
});
|
|
});
|
|
|
|
$(".run-again-btn").click(function(e){
|
|
e.preventDefault();
|
|
|
|
var url = $(this).data('request-url');
|
|
var target = $(this).data('target');
|
|
|
|
libtoaster.startABuild(url, target, function(){
|
|
window.location.reload();
|
|
}, null);
|
|
});
|
|
|
|
|
|
var progressTimer;
|
|
|
|
if (projectBuilds === true){
|
|
progressTimer = window.setInterval(function() {
|
|
libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl,
|
|
function(prjInfo){
|
|
/* These two are needed because a build can be 100% and still
|
|
* in progress due to the fact that the % done is updated at the
|
|
* start of a task so it can be doing the last task at 100%
|
|
*/
|
|
var inProgress = 0;
|
|
var allPercentDone = 0;
|
|
if (prjInfo.builds.length === 0)
|
|
return
|
|
|
|
for (var i in prjInfo.builds){
|
|
var build = prjInfo.builds[i];
|
|
|
|
if (build.outcomeText === "In Progress" ||
|
|
$(".progress .bar").length > 0){
|
|
/* Update the build progress */
|
|
var percentDone;
|
|
|
|
if (build.outcomeText !== "In Progress"){
|
|
/* We have to ignore the value when it's Succeeded because it
|
|
* goes back to 0
|
|
*/
|
|
percentDone = 100;
|
|
} else {
|
|
percentDone = build.percentDone;
|
|
inProgress++;
|
|
}
|
|
|
|
$("#build-pc-done-" + build.id).text(percentDone);
|
|
$("#build-pc-done-title-" + build.id).attr("title", percentDone);
|
|
$("#build-pc-done-bar-" + build.id).css("width",
|
|
String(percentDone) + "%");
|
|
|
|
allPercentDone += percentDone;
|
|
}
|
|
}
|
|
|
|
if (allPercentDone === (100 * prjInfo.builds.length) && !inProgress)
|
|
window.location.reload();
|
|
|
|
/* Our progress bar is not still showing so shutdown the polling. */
|
|
if ($(".progress .bar").length === 0)
|
|
window.clearInterval(progressTimer);
|
|
|
|
});
|
|
}, 1500);
|
|
}
|
|
}
|
|
|