mirror of
https://git.yoctoproject.org/poky
synced 2026-03-14 19:29:41 +01:00
This is a combined set of fixes for the project, layers and targets pages in the project section of toaster. The fixes correct behaviour and look in various parts of the page, including submitting XHR commands and updating the DOM with the correct info. (Bitbake rev: 96d7738f964784871c928c376cb9fbc9a275cf00) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
102 lines
4.6 KiB
HTML
102 lines
4.6 KiB
HTML
{% load static %}
|
|
{% load projecttags %}
|
|
{% load humanize %}
|
|
|
|
|
|
{%if mru.count > 0%}
|
|
|
|
<div class="page-header top-air">
|
|
<h1>
|
|
Latest Builds
|
|
</h1>
|
|
</div>
|
|
<div id="latest-builds">
|
|
{% for build in mru %}
|
|
<div class="alert {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-error{%else%}alert-info{%endif%}" style="padding-top: 0;">
|
|
{% if build.project %}
|
|
<span class="label {%if build.outcome == build.SUCCEEDED%}label-success{%elif build.outcome == build.FAILED%}label-danger{%else%}label-info{%endif%}" style="font-weight: normal; margin-bottom: 5px; margin-left:-15px; padding-top:5px;"> {{build.project.name}} </span>
|
|
{% endif %}
|
|
|
|
<div class="row-fluid">
|
|
<div class="span4 lead">
|
|
{%if build.outcome == build.SUCCEEDED%}<i class="icon-ok-sign success"></i>{%elif build.outcome == build.FAILED%}<i class="icon-minus-sign error"></i>{%else%}{%endif%}
|
|
{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
|
|
<a href="{%url 'builddashboard' build.pk%}" class="{%if build.outcome == build.SUCCEEDED %}success{%else%}error{%endif%}">
|
|
{% endif %}
|
|
<span data-toggle="tooltip" {%if build.target_set.all.count > 1%}title="Targets: {%for target in build.target_set.all%}{{target.target}} {%endfor%}"{%endif%}>{{build.target_set.all.0.target}} {%if build.target_set.all.count > 1%}(+ {{build.target_set.all.count|add:"-1"}}){%endif%} {{build.machine}} ({{build.completed_on|naturaltime}})</span>
|
|
{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
|
|
</a>
|
|
{% endif %}
|
|
</div>
|
|
{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
|
|
<div class="span2 lead">
|
|
{% if build.errors_no %}
|
|
<i class="icon-minus-sign red"></i> <a href="{%url 'builddashboard' build.pk%}#errors" class="error">{{build.errors_no}} error{{build.errors_no|pluralize}}</a>
|
|
{% endif %}
|
|
</div>
|
|
<div class="span2 lead">
|
|
{% if build.warnings_no %}
|
|
<i class="icon-warning-sign yellow"></i> <a href="{%url 'builddashboard' build.pk%}#warnings" class="warning">{{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a>
|
|
{% endif %}
|
|
</div>
|
|
<div class="lead ">
|
|
<span class="lead{%if not build.project%} pull-right{%endif%}">
|
|
Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent|sectohms }}</a>
|
|
</span>
|
|
{% if build.project %}
|
|
<a class="btn {%if build.outcome == build.SUCCEEDED%}btn-success{%elif build.outcome == build.FAILED%}btn-danger{%else%}btn-info{%endif%} pull-right" onclick="scheduleBuild({% url 'xhr_projectbuild' build.project.id as bpi%}{{bpi|json}}, {{build.project.name|json}}, {{build.get_sorted_target_list|mapselect:'target'|json}})">Run again</a>
|
|
{% endif %}
|
|
</div>
|
|
{%endif%}
|
|
{%if build.outcome == build.IN_PROGRESS %}
|
|
<div class="span4">
|
|
<div class="progress" style="margin-top:5px;" data-toggle="tooltip" title="{{build.completeper}}% of tasks complete">
|
|
<div style="width: {{build.completeper}}%;" class="bar"></div>
|
|
</div>
|
|
</div>
|
|
<div class="lead pull-right">ETA: in {{build.eta|naturaltime}}</div>
|
|
{%endif%}
|
|
</div>
|
|
</div>
|
|
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<script>
|
|
|
|
function _makeXHRBuildCall(url, data, onsuccess, onfail) {
|
|
$.ajax( {
|
|
type: "POST",
|
|
url: url,
|
|
data: data,
|
|
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
|
|
success: function (_data) {
|
|
if (_data.error != "ok") {
|
|
alert(_data.error);
|
|
} else {
|
|
if (onsuccess != undefined) onsuccess(_data);
|
|
}
|
|
},
|
|
error: function (_data) {
|
|
alert("Call failed");
|
|
console.log(_data);
|
|
if (onfail) onfail(data);
|
|
} });
|
|
}
|
|
|
|
|
|
function scheduleBuild(url, projectName, buildlist) {
|
|
console.log("scheduleBuild");
|
|
_makeXHRBuildCall(url, {targets: buildlist.join(" ")}, function (_data) {
|
|
|
|
$('#latest-builds').prepend('<div class="alert alert-info" style="padding-top:0px">' + '<span class="label label-info" style="font-weight: normal; margin-bottom: 5px; margin-left:-15px; padding-top:5px;">'+projectName+'</span><div class="row-fluid">' +
|
|
'<div class="span4 lead">' + buildlist.join(" ") +
|
|
'</div><div class="span4 lead pull-right">Build queued. Your build will start shortly.</div></div></div>');
|
|
});
|
|
}
|
|
|
|
</script>
|
|
|
|
{%endif%}
|
|
|