From 769017e477caeb87db719d6b2760af36c930e45f Mon Sep 17 00:00:00 2001 From: Michael Wood Date: Wed, 16 Dec 2015 11:36:39 +0000 Subject: [PATCH] bitbake: toaster: project builds Poll the server to get latest progress for build Poll the server for the project build progress value. This is something that will need to be re-done once we have a proper API for this on the server side. [YOCTO 8328] (Bitbake rev: ec467e43c39eadf02412b89db10c09ed78a5a9f5) Signed-off-by: Michael Wood Signed-off-by: brian avery Signed-off-by: Richard Purdie --- .../toastergui/templates/mrb_section.html | 64 ++++++++++++++++++- 1 file changed, 61 insertions(+), 3 deletions(-) diff --git a/bitbake/lib/toaster/toastergui/templates/mrb_section.html b/bitbake/lib/toaster/toastergui/templates/mrb_section.html index 2f4820c3e7..2e5eb5050b 100644 --- a/bitbake/lib/toaster/toastergui/templates/mrb_section.html +++ b/bitbake/lib/toaster/toastergui/templates/mrb_section.html @@ -119,11 +119,11 @@ {%endif%} {%if build.outcome == build.IN_PROGRESS %}
-
-
+
+
-
{{build.completeper}}% of tasks complete
+
{{build.completeper}}% of tasks complete
{%endif%}
@@ -152,6 +152,64 @@ $(document).ready(function(){ btn.parents(".alert").fadeOut(); }, null); }); + + {%if mrb_type == 'project' %} + var projectBuilds = true; + {% else %} + var projectBuilds = false; + {% endif %} + + 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; + + for (var i in prjInfo.builds){ + var build = prjInfo.builds[i]; + + if (build.status === "In Progress" || + $(".progress .bar").length > 0){ + /* Update the build progress */ + var percentDone; + + if (build.status !== "In Progress"){ + /* We have to ignore the value when it's Succeeded because it + * goes back to 0 + */ + percentDone = 100; + } else { + percentDone = build.build[0].completeper; + 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); + } });