[Toaster] [PATCH 10/11] toaster: mrb_section template Add build cancel button
Michael Wood
michael.g.wood at intel.com
Thu Feb 25 10:26:57 PST 2016
Typo in this patch is fixed in branch michaelw/sujith/build-cancel
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=michaelw/sujith/build-cancel
- <i class="icon-question-sign get-help get-help-blue pull-right"
title="" data-original-title="Builds in this project cannot be cancelled
from Toaster: they can only be cancalled from the command line"></i>
+ <i class="icon-question-sign get-help get-help-blue pull-right"
title="" data-original-title="Builds in this project cannot be cancelled
from Toaster: they can only be cancelled from the command line"></i>
On 25/02/16 18:21, Michael Wood wrote:
> Add the cancel build button to the mrb section template and add the event
> handlers to cancelABuild.
> Also clean up the calls to startABuild to use the updated libtoaster methods
> and to make the code consistent with it's cancelABuild counterpart.
>
> Co-Author: Sujith H <sujith.h at gmail.com>
>
> Signed-off-by: Michael Wood <michael.g.wood at intel.com>
> ---
> .../toaster/toastergui/templates/mrb_section.html | 102 ++++++++++++++-------
> 1 file changed, 71 insertions(+), 31 deletions(-)
>
> diff --git a/bitbake/lib/toaster/toastergui/templates/mrb_section.html b/bitbake/lib/toaster/toastergui/templates/mrb_section.html
> index 551e341..647f49b 100644
> --- a/bitbake/lib/toaster/toastergui/templates/mrb_section.html
> +++ b/bitbake/lib/toaster/toastergui/templates/mrb_section.html
> @@ -99,7 +99,7 @@
> " title="Builds in this project cannot be started from Toaster: they are started from the command line">
> </i>
> {% else %}
> - <button class="btn
> + <button class="run-again-btn btn
> {% if build.outcome == build.SUCCEEDED %}
> btn-success
> {% elif build.outcome == build.FAILED %}
> @@ -108,10 +108,9 @@
> btn-info
> {%endif%}
> pull-right"
> - onclick='scheduleBuild({% url 'projectbuilds' build.project.id as bpi %}{{bpi|json}},
> - {{build.project.name|json}},
> - {% url 'project' build.project.id as purl %}{{purl|json}},
> - {{build.target_set.all|get_tasks|json}})'>
> + data-request-url="{% url 'xhr_buildrequest' build.project.pk %}"
> + data-target='{{build.target_set.all|get_tasks|json}}'>
> +
>
> Rebuild
> </button>
> @@ -119,46 +118,87 @@
> </div>
> {%endif%}
> {%if build.outcome == build.IN_PROGRESS %}
> - <div class="span4 offset1">
> - <div class="progress" id="build-pc-done-title-{{build.pk}}" style="margin-top:5px;" data-toggle="tooltip" title="{{build.completeper}}% of tasks complete">
> - <div id="build-pc-done-bar-{{build.pk}}" style="width: {{build.completeper}}%;" class="bar"></div>
> - </div>
> - </div>
> - <div class="lead pull-right"><span id="build-pc-done-{{build.pk}}">{{build.completeper}}</span>% of tasks complete</div>
> - {%endif%}
> - </div>
> + <div class="span4" style="display:none" id="cancelling-msg-{{build.buildrequest.pk}}">
> + <p class="lead">Cancelling the build ...</p>
> + </div>
> + <div class="span4 offset1 progress-info">
> + <div class="progress" id="build-pc-done-title-{{build.pk}}" style="margin-top:5px;" data-toggle="tooltip" title="{{build.completeper}}% of tasks complete">
> + <div id="build-pc-done-bar-{{build.pk}}" style="width: {{build.completeper}}%;" class="bar"></div>
> + </div>
> </div>
> + <div class="lead span3 progress-info"><span id="build-pc-done-{{build.pk}}">{{build.completeper}}</span>% of tasks complete</div>
> + {# No build cancel for command line builds project #}
> + {% if build.project.is_default %}
> + <i class="icon-question-sign get-help get-help-blue pull-right" title="" data-original-title="Builds in this project cannot be cancelled from Toaster: they can only be cancalled from the command line"></i>
> + {% else %}
> + <div class="lead pull-right progress-info">
> + <button class="cancel-build-btn btn btn-info pull-right"
> + data-buildrequest-id={{build.buildrequest.pk}}
> + data-request-url="{% url 'xhr_buildrequest' build.project.pk %}" >
> + Cancel
> + </button>
> + </div>
> + {% endif %}
> +
> + {%endif%} {# end if in progress #}
> +
> + {% if build.outcome == build.CANCELLED %}
> + <div class="span4">
> + <p class="lead">Build cancelled</p>
> + </div>
> + <button class="btn btn-info pull-right run-again-btn"
> + data-request-url="{% url 'xhr_buildrequest' build.project.pk %}"
> + data-target='{{build.target_set.all|get_tasks|json}}'>
> + Run again
> +
> + </button>
> + {% endif %}
> + </div>
> +</div>
>
> {% endfor %}
> </div>
>
> <script>
>
> -function scheduleBuild(url, projectName, projectUrl, buildlist) {
> - console.log("scheduleBuild");
> - libtoaster.startABuild(url, null, buildlist.join(" "), function(){
> - console.log("reloading page");
> - window.location.reload();
> - }, null);
> -}
> -
> $(document).ready(function(){
> + {%if mrb_type == 'project' %}
> + var projectBuilds = true;
> + {% else %}
> + var projectBuilds = false;
> + {% endif %}
> +
> + $(".cancel-build-btn").click(function(e){
> + e.preventDefault();
>
> - $(".cancel-build-btn").click(function (){
> var url = $(this).data('request-url');
> - var buildIds = $(this).data('build-id');
> - var btn = $(this);
> + var buildReqIds = $(this).data('buildrequest-id');
> + var banner = $(this).parents(".alert");
> +
> + banner.find(".progress-info").fadeOut(function(){
> + $("#cancelling-msg-" + buildReqIds).show();
> + 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();
>
> - libtoaster.cancelABuild(url, buildIds, function(){
> - btn.parents(".alert").fadeOut();
> + var url = $(this).data('request-url');
> + var target = $(this).data('target');
> +
> + libtoaster.startABuild(url, target, function(){
> + window.location.reload();
> }, null);
> });
>
> - {%if mrb_type == 'project' %}
> - var projectBuilds = true;
> - {% else %}
> - var projectBuilds = false;
> - {% endif %}
>
> var progressTimer;
>
More information about the toaster
mailing list