Patrick Williams | d8c66bc | 2016-06-20 12:57:21 -0500 | [diff] [blame] | 1 | |
| 2 | function mrbSectionInit(ctx){ |
| 3 | |
| 4 | var projectBuilds; |
| 5 | |
| 6 | if (ctx.mrbType === 'project') |
| 7 | projectBuilds = true; |
| 8 | |
| 9 | $(".cancel-build-btn").click(function(e){ |
| 10 | e.preventDefault(); |
| 11 | |
| 12 | var url = $(this).data('request-url'); |
| 13 | var buildReqIds = $(this).data('buildrequest-id'); |
| 14 | var banner = $(this).parents(".alert"); |
| 15 | |
| 16 | banner.find(".progress-info").fadeOut().promise().done(function(){ |
| 17 | $("#cancelling-msg-" + buildReqIds).show(); |
| 18 | console.log("cancel build"); |
| 19 | libtoaster.cancelABuild(url, buildReqIds, function(){ |
| 20 | if (projectBuilds == false){ |
| 21 | /* the all builds page is not 'self updating' like thei |
| 22 | * project Builds |
| 23 | */ |
| 24 | window.location.reload(); |
| 25 | } |
| 26 | }, null); |
| 27 | }); |
| 28 | }); |
| 29 | |
| 30 | $(".run-again-btn").click(function(e){ |
| 31 | e.preventDefault(); |
| 32 | |
| 33 | var url = $(this).data('request-url'); |
| 34 | var target = $(this).data('target'); |
| 35 | |
| 36 | libtoaster.startABuild(url, target, function(){ |
| 37 | window.location.reload(); |
| 38 | }, null); |
| 39 | }); |
| 40 | |
| 41 | |
| 42 | var progressTimer; |
| 43 | |
| 44 | if (projectBuilds === true){ |
| 45 | progressTimer = window.setInterval(function() { |
| 46 | libtoaster.getProjectInfo(libtoaster.ctx.projectPageUrl, |
| 47 | function(prjInfo){ |
| 48 | /* These two are needed because a build can be 100% and still |
| 49 | * in progress due to the fact that the % done is updated at the |
| 50 | * start of a task so it can be doing the last task at 100% |
| 51 | */ |
| 52 | var inProgress = 0; |
| 53 | var allPercentDone = 0; |
| 54 | if (prjInfo.builds.length === 0) |
| 55 | return |
| 56 | |
| 57 | for (var i in prjInfo.builds){ |
| 58 | var build = prjInfo.builds[i]; |
| 59 | |
| 60 | if (build.outcome === "In Progress" || |
| 61 | $(".progress .bar").length > 0){ |
| 62 | /* Update the build progress */ |
| 63 | var percentDone; |
| 64 | |
| 65 | if (build.outcome !== "In Progress"){ |
| 66 | /* We have to ignore the value when it's Succeeded because it |
| 67 | * goes back to 0 |
| 68 | */ |
| 69 | percentDone = 100; |
| 70 | } else { |
| 71 | percentDone = build.percentDone; |
| 72 | inProgress++; |
| 73 | } |
| 74 | |
| 75 | $("#build-pc-done-" + build.id).text(percentDone); |
| 76 | $("#build-pc-done-title-" + build.id).attr("title", percentDone); |
| 77 | $("#build-pc-done-bar-" + build.id).css("width", |
| 78 | String(percentDone) + "%"); |
| 79 | |
| 80 | allPercentDone += percentDone; |
| 81 | } |
| 82 | } |
| 83 | |
| 84 | if (allPercentDone === (100 * prjInfo.builds.length) && !inProgress) |
| 85 | window.location.reload(); |
| 86 | |
| 87 | /* Our progress bar is not still showing so shutdown the polling. */ |
| 88 | if ($(".progress .bar").length === 0) |
| 89 | window.clearInterval(progressTimer); |
| 90 | |
| 91 | }); |
| 92 | }, 1500); |
| 93 | } |
| 94 | } |
| 95 | |