mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 17:39:31 +00:00
bitbake: toaster: port all build analysis pages to bootstrap 3
Port all the pages in the build analysis area to bootstrap version 3. (Bitbake rev: f963b73f0bf32db2df39dd79d8d85184c280cda0) Signed-off-by: Belen Barros Pena <belen.barros.pena@linux.intel.com> Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
46271833be
commit
a7d498dfd3
@@ -260,10 +260,10 @@ class BuiltRecipesTable(BuildTablesMixin):
|
|||||||
{% with deps=data.r_dependencies_recipe.all %}
|
{% with deps=data.r_dependencies_recipe.all %}
|
||||||
{% with count=deps|length %}
|
{% with count=deps|length %}
|
||||||
{% if count %}
|
{% if count %}
|
||||||
<a class="btn" title="
|
<a class="btn btn-default" title="
|
||||||
<a href='{% url "recipe" extra.build.pk data.pk %}#dependencies'>
|
<a href='{% url "recipe" extra.build.pk data.pk %}#dependencies'>
|
||||||
{{data.name}}</a> dependencies"
|
{{data.name}}</a> dependencies"
|
||||||
data-content="<ul class='unstyled'>
|
data-content="<ul class='list-unstyled'>
|
||||||
{% for dep in deps|dictsort:"depends_on.name"%}
|
{% for dep in deps|dictsort:"depends_on.name"%}
|
||||||
<li><a href='{% url "recipe" extra.build.pk dep.depends_on.pk %}'>
|
<li><a href='{% url "recipe" extra.build.pk dep.depends_on.pk %}'>
|
||||||
{{dep.depends_on.name}}</a></li>
|
{{dep.depends_on.name}}</a></li>
|
||||||
@@ -278,11 +278,11 @@ class BuiltRecipesTable(BuildTablesMixin):
|
|||||||
{% with revs=data.r_dependencies_depends.all %}
|
{% with revs=data.r_dependencies_depends.all %}
|
||||||
{% with count=revs|length %}
|
{% with count=revs|length %}
|
||||||
{% if count %}
|
{% if count %}
|
||||||
<a class="btn"
|
<a class="btn btn-default"
|
||||||
title="
|
title="
|
||||||
<a href='{% url "recipe" extra.build.pk data.pk %}#brought-in-by'>
|
<a href='{% url "recipe" extra.build.pk data.pk %}#brought-in-by'>
|
||||||
{{data.name}}</a> reverse dependencies"
|
{{data.name}}</a> reverse dependencies"
|
||||||
data-content="<ul class='unstyled'>
|
data-content="<ul class='list-unstyled'>
|
||||||
{% for dep in revs|dictsort:"recipe.name" %}
|
{% for dep in revs|dictsort:"recipe.name" %}
|
||||||
<li>
|
<li>
|
||||||
<a href='{% url "recipe" extra.build.pk dep.recipe.pk %}'>
|
<a href='{% url "recipe" extra.build.pk dep.recipe.pk %}'>
|
||||||
|
|||||||
@@ -1,587 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Bootstrap v3.3.6 (http://getbootstrap.com)
|
|
||||||
* Copyright 2011-2015 Twitter, Inc.
|
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
|
||||||
*/
|
|
||||||
.btn-default,
|
|
||||||
.btn-primary,
|
|
||||||
.btn-success,
|
|
||||||
.btn-info,
|
|
||||||
.btn-warning,
|
|
||||||
.btn-danger {
|
|
||||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
|
|
||||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
|
||||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
|
||||||
}
|
|
||||||
.btn-default:active,
|
|
||||||
.btn-primary:active,
|
|
||||||
.btn-success:active,
|
|
||||||
.btn-info:active,
|
|
||||||
.btn-warning:active,
|
|
||||||
.btn-danger:active,
|
|
||||||
.btn-default.active,
|
|
||||||
.btn-primary.active,
|
|
||||||
.btn-success.active,
|
|
||||||
.btn-info.active,
|
|
||||||
.btn-warning.active,
|
|
||||||
.btn-danger.active {
|
|
||||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
|
||||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
|
||||||
}
|
|
||||||
.btn-default.disabled,
|
|
||||||
.btn-primary.disabled,
|
|
||||||
.btn-success.disabled,
|
|
||||||
.btn-info.disabled,
|
|
||||||
.btn-warning.disabled,
|
|
||||||
.btn-danger.disabled,
|
|
||||||
.btn-default[disabled],
|
|
||||||
.btn-primary[disabled],
|
|
||||||
.btn-success[disabled],
|
|
||||||
.btn-info[disabled],
|
|
||||||
.btn-warning[disabled],
|
|
||||||
.btn-danger[disabled],
|
|
||||||
fieldset[disabled] .btn-default,
|
|
||||||
fieldset[disabled] .btn-primary,
|
|
||||||
fieldset[disabled] .btn-success,
|
|
||||||
fieldset[disabled] .btn-info,
|
|
||||||
fieldset[disabled] .btn-warning,
|
|
||||||
fieldset[disabled] .btn-danger {
|
|
||||||
-webkit-box-shadow: none;
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
.btn-default .badge,
|
|
||||||
.btn-primary .badge,
|
|
||||||
.btn-success .badge,
|
|
||||||
.btn-info .badge,
|
|
||||||
.btn-warning .badge,
|
|
||||||
.btn-danger .badge {
|
|
||||||
text-shadow: none;
|
|
||||||
}
|
|
||||||
.btn:active,
|
|
||||||
.btn.active {
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
.btn-default {
|
|
||||||
text-shadow: 0 1px 0 #fff;
|
|
||||||
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
|
|
||||||
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #dbdbdb;
|
|
||||||
border-color: #ccc;
|
|
||||||
}
|
|
||||||
.btn-default:hover,
|
|
||||||
.btn-default:focus {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
background-position: 0 -15px;
|
|
||||||
}
|
|
||||||
.btn-default:active,
|
|
||||||
.btn-default.active {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
border-color: #dbdbdb;
|
|
||||||
}
|
|
||||||
.btn-default.disabled,
|
|
||||||
.btn-default[disabled],
|
|
||||||
fieldset[disabled] .btn-default,
|
|
||||||
.btn-default.disabled:hover,
|
|
||||||
.btn-default[disabled]:hover,
|
|
||||||
fieldset[disabled] .btn-default:hover,
|
|
||||||
.btn-default.disabled:focus,
|
|
||||||
.btn-default[disabled]:focus,
|
|
||||||
fieldset[disabled] .btn-default:focus,
|
|
||||||
.btn-default.disabled.focus,
|
|
||||||
.btn-default[disabled].focus,
|
|
||||||
fieldset[disabled] .btn-default.focus,
|
|
||||||
.btn-default.disabled:active,
|
|
||||||
.btn-default[disabled]:active,
|
|
||||||
fieldset[disabled] .btn-default:active,
|
|
||||||
.btn-default.disabled.active,
|
|
||||||
.btn-default[disabled].active,
|
|
||||||
fieldset[disabled] .btn-default.active {
|
|
||||||
background-color: #e0e0e0;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
.btn-primary {
|
|
||||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
|
|
||||||
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #245580;
|
|
||||||
}
|
|
||||||
.btn-primary:hover,
|
|
||||||
.btn-primary:focus {
|
|
||||||
background-color: #265a88;
|
|
||||||
background-position: 0 -15px;
|
|
||||||
}
|
|
||||||
.btn-primary:active,
|
|
||||||
.btn-primary.active {
|
|
||||||
background-color: #265a88;
|
|
||||||
border-color: #245580;
|
|
||||||
}
|
|
||||||
.btn-primary.disabled,
|
|
||||||
.btn-primary[disabled],
|
|
||||||
fieldset[disabled] .btn-primary,
|
|
||||||
.btn-primary.disabled:hover,
|
|
||||||
.btn-primary[disabled]:hover,
|
|
||||||
fieldset[disabled] .btn-primary:hover,
|
|
||||||
.btn-primary.disabled:focus,
|
|
||||||
.btn-primary[disabled]:focus,
|
|
||||||
fieldset[disabled] .btn-primary:focus,
|
|
||||||
.btn-primary.disabled.focus,
|
|
||||||
.btn-primary[disabled].focus,
|
|
||||||
fieldset[disabled] .btn-primary.focus,
|
|
||||||
.btn-primary.disabled:active,
|
|
||||||
.btn-primary[disabled]:active,
|
|
||||||
fieldset[disabled] .btn-primary:active,
|
|
||||||
.btn-primary.disabled.active,
|
|
||||||
.btn-primary[disabled].active,
|
|
||||||
fieldset[disabled] .btn-primary.active {
|
|
||||||
background-color: #265a88;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
.btn-success {
|
|
||||||
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
|
|
||||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #3e8f3e;
|
|
||||||
}
|
|
||||||
.btn-success:hover,
|
|
||||||
.btn-success:focus {
|
|
||||||
background-color: #419641;
|
|
||||||
background-position: 0 -15px;
|
|
||||||
}
|
|
||||||
.btn-success:active,
|
|
||||||
.btn-success.active {
|
|
||||||
background-color: #419641;
|
|
||||||
border-color: #3e8f3e;
|
|
||||||
}
|
|
||||||
.btn-success.disabled,
|
|
||||||
.btn-success[disabled],
|
|
||||||
fieldset[disabled] .btn-success,
|
|
||||||
.btn-success.disabled:hover,
|
|
||||||
.btn-success[disabled]:hover,
|
|
||||||
fieldset[disabled] .btn-success:hover,
|
|
||||||
.btn-success.disabled:focus,
|
|
||||||
.btn-success[disabled]:focus,
|
|
||||||
fieldset[disabled] .btn-success:focus,
|
|
||||||
.btn-success.disabled.focus,
|
|
||||||
.btn-success[disabled].focus,
|
|
||||||
fieldset[disabled] .btn-success.focus,
|
|
||||||
.btn-success.disabled:active,
|
|
||||||
.btn-success[disabled]:active,
|
|
||||||
fieldset[disabled] .btn-success:active,
|
|
||||||
.btn-success.disabled.active,
|
|
||||||
.btn-success[disabled].active,
|
|
||||||
fieldset[disabled] .btn-success.active {
|
|
||||||
background-color: #419641;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
.btn-info {
|
|
||||||
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
|
|
||||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #28a4c9;
|
|
||||||
}
|
|
||||||
.btn-info:hover,
|
|
||||||
.btn-info:focus {
|
|
||||||
background-color: #2aabd2;
|
|
||||||
background-position: 0 -15px;
|
|
||||||
}
|
|
||||||
.btn-info:active,
|
|
||||||
.btn-info.active {
|
|
||||||
background-color: #2aabd2;
|
|
||||||
border-color: #28a4c9;
|
|
||||||
}
|
|
||||||
.btn-info.disabled,
|
|
||||||
.btn-info[disabled],
|
|
||||||
fieldset[disabled] .btn-info,
|
|
||||||
.btn-info.disabled:hover,
|
|
||||||
.btn-info[disabled]:hover,
|
|
||||||
fieldset[disabled] .btn-info:hover,
|
|
||||||
.btn-info.disabled:focus,
|
|
||||||
.btn-info[disabled]:focus,
|
|
||||||
fieldset[disabled] .btn-info:focus,
|
|
||||||
.btn-info.disabled.focus,
|
|
||||||
.btn-info[disabled].focus,
|
|
||||||
fieldset[disabled] .btn-info.focus,
|
|
||||||
.btn-info.disabled:active,
|
|
||||||
.btn-info[disabled]:active,
|
|
||||||
fieldset[disabled] .btn-info:active,
|
|
||||||
.btn-info.disabled.active,
|
|
||||||
.btn-info[disabled].active,
|
|
||||||
fieldset[disabled] .btn-info.active {
|
|
||||||
background-color: #2aabd2;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
.btn-warning {
|
|
||||||
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
|
|
||||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #e38d13;
|
|
||||||
}
|
|
||||||
.btn-warning:hover,
|
|
||||||
.btn-warning:focus {
|
|
||||||
background-color: #eb9316;
|
|
||||||
background-position: 0 -15px;
|
|
||||||
}
|
|
||||||
.btn-warning:active,
|
|
||||||
.btn-warning.active {
|
|
||||||
background-color: #eb9316;
|
|
||||||
border-color: #e38d13;
|
|
||||||
}
|
|
||||||
.btn-warning.disabled,
|
|
||||||
.btn-warning[disabled],
|
|
||||||
fieldset[disabled] .btn-warning,
|
|
||||||
.btn-warning.disabled:hover,
|
|
||||||
.btn-warning[disabled]:hover,
|
|
||||||
fieldset[disabled] .btn-warning:hover,
|
|
||||||
.btn-warning.disabled:focus,
|
|
||||||
.btn-warning[disabled]:focus,
|
|
||||||
fieldset[disabled] .btn-warning:focus,
|
|
||||||
.btn-warning.disabled.focus,
|
|
||||||
.btn-warning[disabled].focus,
|
|
||||||
fieldset[disabled] .btn-warning.focus,
|
|
||||||
.btn-warning.disabled:active,
|
|
||||||
.btn-warning[disabled]:active,
|
|
||||||
fieldset[disabled] .btn-warning:active,
|
|
||||||
.btn-warning.disabled.active,
|
|
||||||
.btn-warning[disabled].active,
|
|
||||||
fieldset[disabled] .btn-warning.active {
|
|
||||||
background-color: #eb9316;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
.btn-danger {
|
|
||||||
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
|
|
||||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #b92c28;
|
|
||||||
}
|
|
||||||
.btn-danger:hover,
|
|
||||||
.btn-danger:focus {
|
|
||||||
background-color: #c12e2a;
|
|
||||||
background-position: 0 -15px;
|
|
||||||
}
|
|
||||||
.btn-danger:active,
|
|
||||||
.btn-danger.active {
|
|
||||||
background-color: #c12e2a;
|
|
||||||
border-color: #b92c28;
|
|
||||||
}
|
|
||||||
.btn-danger.disabled,
|
|
||||||
.btn-danger[disabled],
|
|
||||||
fieldset[disabled] .btn-danger,
|
|
||||||
.btn-danger.disabled:hover,
|
|
||||||
.btn-danger[disabled]:hover,
|
|
||||||
fieldset[disabled] .btn-danger:hover,
|
|
||||||
.btn-danger.disabled:focus,
|
|
||||||
.btn-danger[disabled]:focus,
|
|
||||||
fieldset[disabled] .btn-danger:focus,
|
|
||||||
.btn-danger.disabled.focus,
|
|
||||||
.btn-danger[disabled].focus,
|
|
||||||
fieldset[disabled] .btn-danger.focus,
|
|
||||||
.btn-danger.disabled:active,
|
|
||||||
.btn-danger[disabled]:active,
|
|
||||||
fieldset[disabled] .btn-danger:active,
|
|
||||||
.btn-danger.disabled.active,
|
|
||||||
.btn-danger[disabled].active,
|
|
||||||
fieldset[disabled] .btn-danger.active {
|
|
||||||
background-color: #c12e2a;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
.thumbnail,
|
|
||||||
.img-thumbnail {
|
|
||||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
|
||||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
|
||||||
}
|
|
||||||
.dropdown-menu > li > a:hover,
|
|
||||||
.dropdown-menu > li > a:focus {
|
|
||||||
background-color: #e8e8e8;
|
|
||||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
|
|
||||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.dropdown-menu > .active > a,
|
|
||||||
.dropdown-menu > .active > a:hover,
|
|
||||||
.dropdown-menu > .active > a:focus {
|
|
||||||
background-color: #2e6da4;
|
|
||||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
|
||||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.navbar-default {
|
|
||||||
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
|
|
||||||
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-radius: 4px;
|
|
||||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
|
|
||||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
|
|
||||||
}
|
|
||||||
.navbar-default .navbar-nav > .open > a,
|
|
||||||
.navbar-default .navbar-nav > .active > a {
|
|
||||||
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
|
|
||||||
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
|
|
||||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
|
|
||||||
}
|
|
||||||
.navbar-brand,
|
|
||||||
.navbar-nav > li > a {
|
|
||||||
text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
|
|
||||||
}
|
|
||||||
.navbar-inverse {
|
|
||||||
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
|
|
||||||
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
.navbar-inverse .navbar-nav > .open > a,
|
|
||||||
.navbar-inverse .navbar-nav > .active > a {
|
|
||||||
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
|
|
||||||
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
|
|
||||||
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
|
|
||||||
}
|
|
||||||
.navbar-inverse .navbar-brand,
|
|
||||||
.navbar-inverse .navbar-nav > li > a {
|
|
||||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
|
|
||||||
}
|
|
||||||
.navbar-static-top,
|
|
||||||
.navbar-fixed-top,
|
|
||||||
.navbar-fixed-bottom {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
@media (max-width: 767px) {
|
|
||||||
.navbar .navbar-nav .open .dropdown-menu > .active > a,
|
|
||||||
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
|
|
||||||
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
|
|
||||||
color: #fff;
|
|
||||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
|
||||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.alert {
|
|
||||||
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
|
|
||||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
|
|
||||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
|
|
||||||
}
|
|
||||||
.alert-success {
|
|
||||||
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
|
|
||||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #b2dba1;
|
|
||||||
}
|
|
||||||
.alert-info {
|
|
||||||
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
|
|
||||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #9acfea;
|
|
||||||
}
|
|
||||||
.alert-warning {
|
|
||||||
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
|
|
||||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #f5e79e;
|
|
||||||
}
|
|
||||||
.alert-danger {
|
|
||||||
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
|
|
||||||
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #dca7a7;
|
|
||||||
}
|
|
||||||
.progress {
|
|
||||||
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
|
|
||||||
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.progress-bar {
|
|
||||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
|
|
||||||
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.progress-bar-success {
|
|
||||||
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
|
|
||||||
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.progress-bar-info {
|
|
||||||
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
|
|
||||||
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.progress-bar-warning {
|
|
||||||
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
|
|
||||||
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.progress-bar-danger {
|
|
||||||
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
|
|
||||||
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.progress-bar-striped {
|
|
||||||
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
|
||||||
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
|
||||||
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
|
|
||||||
}
|
|
||||||
.list-group {
|
|
||||||
border-radius: 4px;
|
|
||||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
|
||||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
|
|
||||||
}
|
|
||||||
.list-group-item.active,
|
|
||||||
.list-group-item.active:hover,
|
|
||||||
.list-group-item.active:focus {
|
|
||||||
text-shadow: 0 -1px 0 #286090;
|
|
||||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
|
|
||||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #2b669a;
|
|
||||||
}
|
|
||||||
.list-group-item.active .badge,
|
|
||||||
.list-group-item.active:hover .badge,
|
|
||||||
.list-group-item.active:focus .badge {
|
|
||||||
text-shadow: none;
|
|
||||||
}
|
|
||||||
.panel {
|
|
||||||
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
|
|
||||||
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
|
|
||||||
}
|
|
||||||
.panel-default > .panel-heading {
|
|
||||||
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
|
|
||||||
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.panel-primary > .panel-heading {
|
|
||||||
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
|
|
||||||
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.panel-success > .panel-heading {
|
|
||||||
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
|
|
||||||
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.panel-info > .panel-heading {
|
|
||||||
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
|
|
||||||
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.panel-warning > .panel-heading {
|
|
||||||
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
|
|
||||||
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.panel-danger > .panel-heading {
|
|
||||||
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
|
|
||||||
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
}
|
|
||||||
.well {
|
|
||||||
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
|
||||||
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
|
|
||||||
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
|
|
||||||
background-repeat: repeat-x;
|
|
||||||
border-color: #dcdcdc;
|
|
||||||
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
|
|
||||||
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
|
|
||||||
}
|
|
||||||
/*# sourceMappingURL=bootstrap-theme.css.map */
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -22,11 +22,21 @@ img.logo { height: 30px; vertical-align: bottom; }
|
|||||||
/* Increase popovers width to fit commit SHAs */
|
/* Increase popovers width to fit commit SHAs */
|
||||||
.popover { max-width: 350px; }
|
.popover { max-width: 350px; }
|
||||||
|
|
||||||
|
/* Set a limit to popover height to handle long dependency lists */
|
||||||
|
.popover-content { max-height: 350px; overflow: scroll; }
|
||||||
|
|
||||||
|
/* Set a limit to modal dialogs height to handle long variable history */
|
||||||
|
[id^="variable-"] .modal-content { max-height: 550px; overflow-y: scroll; }
|
||||||
|
|
||||||
|
/* Make sure long values in variable history do not make the modal dialogs
|
||||||
|
* scroll horizontally */
|
||||||
|
[id^="variable-"] .modal-content p { word-break: break-all; }
|
||||||
|
|
||||||
/* Increase bottom margin of definition lists inside popovers for the Toaster version information in the top navbar, and also inside the right hand columns of our details pages */
|
/* Increase bottom margin of definition lists inside popovers for the Toaster version information in the top navbar, and also inside the right hand columns of our details pages */
|
||||||
.popover-content dd,
|
.popover-content dd,
|
||||||
.well dd { margin-bottom: 15px; }
|
.item-info dd { margin-bottom: 15px; }
|
||||||
|
|
||||||
/* Style the horizonal definition lists */
|
/* Style the horizontal definition lists */
|
||||||
.dl-horizontal dt { width: 200px; line-height: 25px; }
|
.dl-horizontal dt { width: 200px; line-height: 25px; }
|
||||||
.dl-horizontal dd { margin-left: 220px; line-height: 25px; }
|
.dl-horizontal dd { margin-left: 220px; line-height: 25px; }
|
||||||
|
|
||||||
@@ -48,21 +58,24 @@ img.logo { height: 30px; vertical-align: bottom; }
|
|||||||
|
|
||||||
/* Styles for our table controls */
|
/* Styles for our table controls */
|
||||||
.form-control[id^="search-input-"],
|
.form-control[id^="search-input-"],
|
||||||
.form-control[id^="new-search-input-"] { width: 30em; }
|
.form-control[id^="new-search-input-"],
|
||||||
|
#search{ width: 30em; }
|
||||||
#search-input-selectpackagestable,
|
#search-input-selectpackagestable,
|
||||||
#search-input-packagestable,
|
#search-input-packagestable,
|
||||||
.form-control[id^="no-results-search-input-"]{ width: 20em; }
|
.form-control[id^="no-results-search-input-"] { width: 20em; }
|
||||||
#edit-columns-button { margin-right: 30px; }
|
#edit-columns-button { margin-right: 30px; }
|
||||||
.navbar-default[id^="table-chrome-"] { background-color: transparent; }
|
.navbar-default[id^="table-chrome-"],
|
||||||
|
#variables .navbar-default { background-color: transparent; }
|
||||||
[id^="table-chrome-collapse-"] .navbar-form { margin-left: -15px; }
|
[id^="table-chrome-collapse-"] .navbar-form { margin-left: -15px; }
|
||||||
.dropdown-menu.editcol { padding-left: 10px; min-width: 180px; }
|
.dropdown-menu.editcol { padding-left: 10px; min-width: 200px; }
|
||||||
span[class^="remove-search-btn-"] { position: absolute; right: 5px; top: 0; bottom: 0; height: 14px; margin: auto; font-size: 14px; cursor: pointer; color: #777;}
|
span[class^="remove-search-btn-"] { position: absolute; right: 5px; top: 0; bottom: 0; height: 14px; margin: auto; font-size: 14px; cursor: pointer; color: #777;}
|
||||||
span[class^="remove-search-btn-"]:hover { color: #333; }
|
span[class^="remove-search-btn-"]:hover { color: #333; }
|
||||||
#no-results-special-selectpackagestable .form-inline { margin-top: 20px; }
|
#no-results-special-selectpackagestable .form-inline { margin-top: 20px; }
|
||||||
[id^="pagination-"] .pagination,
|
[id^="pagination-"] .pagination,
|
||||||
[id^="pagination-"] .navbar-form { margin-top: 0; }
|
[id^="pagination-"] .navbar-form { margin-top: 0; }
|
||||||
[id^="table-chrome-"] .navbar-form { margin-left: -15px; margin-right: -15px; }
|
[id^="table-chrome-"] .navbar-form { margin-left: -15px; margin-right: -15px; }
|
||||||
[id^="table-chrome-"] .detail-page-contols { padding-left: 0; padding-right: 0; }
|
[id^="table-chrome-"] .detail-page-contols,
|
||||||
|
#packages-built .detail-page-controls { padding-left: 0; padding-right: 0; }
|
||||||
|
|
||||||
/* Override the default font-weight for labels: it's a bit too much */
|
/* Override the default font-weight for labels: it's a bit too much */
|
||||||
label { font-weight: normal; }
|
label { font-weight: normal; }
|
||||||
@@ -86,7 +99,7 @@ dd > .glyphicon-ok-circle { color: #3c763d; }
|
|||||||
tbody > tr > td > .glyphicon-minus-sign { color: #a94442; }
|
tbody > tr > td > .glyphicon-minus-sign { color: #a94442; }
|
||||||
.glyphicon-download-alt,
|
.glyphicon-download-alt,
|
||||||
.glyphicon-edit { color: #337ab7; }
|
.glyphicon-edit { color: #337ab7; }
|
||||||
.failed_tasks .glyphicon-download-alt { margin-left: 5px; }
|
.failed_tasks .glyphicon-download-alt { margin-left: 5px; }
|
||||||
.glyphicon-download-alt:hover,
|
.glyphicon-download-alt:hover,
|
||||||
.glyphicon-edit:hover { color: #23527c; cursor: pointer; text-decoration: none; }
|
.glyphicon-edit:hover { color: #23527c; cursor: pointer; text-decoration: none; }
|
||||||
.glyphicon-trash { color: #a94442; }
|
.glyphicon-trash { color: #a94442; }
|
||||||
@@ -98,7 +111,8 @@ tbody > tr > td > .glyphicon-minus-sign { color: #a94442; }
|
|||||||
h1 > .glyphicon-edit,
|
h1 > .glyphicon-edit,
|
||||||
p.lead .glyphicon { font-size: 16px; }
|
p.lead .glyphicon { font-size: 16px; }
|
||||||
h2 > .glyphicon-question-sign,
|
h2 > .glyphicon-question-sign,
|
||||||
h3 > .glyphicon-question-sign { font-size: 14px; }
|
h3 > .glyphicon-question-sign,
|
||||||
|
.heading-help { font-size: 14px; }
|
||||||
|
|
||||||
/* Create a class for wells without background colour */
|
/* Create a class for wells without background colour */
|
||||||
.well-transparent { background-color: transparent; }
|
.well-transparent { background-color: transparent; }
|
||||||
@@ -205,6 +219,13 @@ td > .tooltip-inner,
|
|||||||
#recipestable .get_description_or_summary { width: 40%; }
|
#recipestable .get_description_or_summary { width: 40%; }
|
||||||
#machinestable .name { white-space: nowrap; }
|
#machinestable .name { white-space: nowrap; }
|
||||||
#machinestable .description { width: 45%; }
|
#machinestable .description { width: 45%; }
|
||||||
|
#otable .variable_value,
|
||||||
|
#otable .file { word-break: break-all; width: 25%; }
|
||||||
|
[id^="variable-"] .file { word-break: break-all; }
|
||||||
|
|
||||||
|
/* For the tables still not ported to ToasterTables, style the table headings
|
||||||
|
* that are not sortable */
|
||||||
|
th > span.text-muted { font-weight: normal; }
|
||||||
|
|
||||||
/* Override the rather ugly default code styles */
|
/* Override the rather ugly default code styles */
|
||||||
code { color: #333; background-color: transparent; }
|
code { color: #333; background-color: transparent; }
|
||||||
@@ -234,7 +255,7 @@ code { color: #333; background-color: transparent; }
|
|||||||
.date-filter-controls span { margin: 0 10px; }
|
.date-filter-controls span { margin: 0 10px; }
|
||||||
|
|
||||||
/* Style the fixed positioned notifications */
|
/* Style the fixed positioned notifications */
|
||||||
.loading-notification { position: fixed; z-index: 101; top: 3%; left: 40%; right: 40%; -webkit-box-shadow: 0 0 10px #c09853; -moz-box-shadow: 0 0 10px #c09853; box-shadow: 0 0 10px #c09853; }
|
#loading-notification { position: fixed; z-index: 1101; top: 3%; left: 40%; right: 40%; -webkit-box-shadow: 0 0 10px #c09853; -moz-box-shadow: 0 0 10px #c09853; box-shadow: 0 0 10px #c09853; }
|
||||||
|
|
||||||
.change-notification { position: fixed; z-index: 1101; top: 4%; left: 30%; right: 30%; -webkit-box-shadow: 0 0 10px #3a87ad; -moz-box-shadow: 0 0 10px #3a87ad; box-shadow: 0 0 10px #3a87ad; }
|
.change-notification { position: fixed; z-index: 1101; top: 4%; left: 30%; right: 30%; -webkit-box-shadow: 0 0 10px #3a87ad; -moz-box-shadow: 0 0 10px #3a87ad; box-shadow: 0 0 10px #3a87ad; }
|
||||||
|
|
||||||
@@ -246,3 +267,76 @@ code { color: #333; background-color: transparent; }
|
|||||||
|
|
||||||
/* Style the Toaster screenshot in the landing page */
|
/* Style the Toaster screenshot in the landing page */
|
||||||
.img-thumbnail { padding: 0; }
|
.img-thumbnail { padding: 0; }
|
||||||
|
|
||||||
|
/* Set the layout for the build information pages */
|
||||||
|
|
||||||
|
#nav { margin-top: 10px; }
|
||||||
|
.page-header.build-data { margin-top: 0px; }
|
||||||
|
.build-data > h1 { margin-top: 8px; }
|
||||||
|
|
||||||
|
/* Style the build outcome information in the build dashboard */
|
||||||
|
.log { margin-left: 30px; }
|
||||||
|
.show-warnings { font-weight: 700; color: #8a6d3b; }
|
||||||
|
.show-warnings:hover { color: #66512c; }
|
||||||
|
|
||||||
|
/* Style the errors and warnings information in the build dashboard */
|
||||||
|
#errors .panel-heading { background-color: transparent; color: #843534; }
|
||||||
|
#warnings .panel-heading { background-color: transparent; color: #8a6d3b; }
|
||||||
|
#warnings .panel-heading a:hover { color: #66512c; }
|
||||||
|
h2.panel-title { font-size: 30px; }
|
||||||
|
.alert-danger pre,
|
||||||
|
.alert-warning pre { background-color: transparent; border: none; }
|
||||||
|
.alert-danger pre { color: #a94442; }
|
||||||
|
#error-info pre,
|
||||||
|
#warning-info pre { white-space: pre-wrap; }
|
||||||
|
.alert-warning pre { color: #8a6d3b; }
|
||||||
|
|
||||||
|
/* Style the wells in the build dashboard */
|
||||||
|
.dashboard-section h3 { margin-top: 10px; margin-bottom: 20px; }
|
||||||
|
.col-md-4.dashboard-section dd { margin-bottom: 10px; }
|
||||||
|
|
||||||
|
/* Make the help in tables insivisble until you hover over the right cell */
|
||||||
|
.hover-help { visibility: hidden; }
|
||||||
|
|
||||||
|
/* Blue hightlight animation for tasks and directory structure tables */
|
||||||
|
.highlight { -webkit-animation: target-fade 15s 1; -moz-animation: target-fade 15s 1; animation: target-fade 15s 1; }
|
||||||
|
@-webkit-keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } }
|
||||||
|
@-moz-keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } }
|
||||||
|
@keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } }
|
||||||
|
|
||||||
|
/* Copied in from newer version of Font-Awesome 4.3.0 */
|
||||||
|
.fa-spin {
|
||||||
|
-webkit-animation: fa-spin 2s infinite linear;
|
||||||
|
animation: fa-spin 2s infinite linear;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.fa-pulse {
|
||||||
|
-webkit-animation: fa-spin 1s infinite steps(8);
|
||||||
|
animation: fa-spin 1s infinite steps(8);
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes fa-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(359deg);
|
||||||
|
transform: rotate(359deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fa-spin {
|
||||||
|
0% {
|
||||||
|
-webkit-transform: rotate(0deg);
|
||||||
|
-moz-transform: rotate(0deg);
|
||||||
|
transform: rotate(0deg);
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
-webkit-transform: rotate(359deg);
|
||||||
|
-moz-transform: rotate(359deg);
|
||||||
|
transform: rotate(359deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* End copied in from newer version of Font-Awesome 4.3.0 */
|
||||||
|
|||||||
@@ -541,9 +541,7 @@ $(document).ready(function() {
|
|||||||
delay: { show : 300 }
|
delay: { show : 300 }
|
||||||
});
|
});
|
||||||
|
|
||||||
// show help bubble only on hover inside tables
|
// show help bubble on hover inside tables
|
||||||
$(".hover-help").css("visibility","hidden");
|
|
||||||
|
|
||||||
$("table").on("mouseover", "th, td", function () {
|
$("table").on("mouseover", "th, td", function () {
|
||||||
$(this).find(".hover-help").css("visibility","visible");
|
$(this).find(".hover-help").css("visibility","visible");
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<body>
|
<body>
|
||||||
|
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<div id="loading-notification" class="alert lead text-center" style="display:none">
|
<div id="loading-notification" class="alert alert-warning lead text-center" style="display:none">
|
||||||
Loading <i class="fa-pulse icon-spinner"></i>
|
Loading <i class="fa-pulse icon-spinner"></i>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -5,21 +5,23 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- Breadcrumbs -->
|
<!-- Breadcrumbs -->
|
||||||
<ul class="breadcrumb" id="breadcrumb">
|
<div class="col-md-12">
|
||||||
<li><a href="{% project_url build.project %}">{{build.project.name}}</a></li>
|
<ul class="breadcrumb" id="breadcrumb">
|
||||||
{% if not build.project.is_default %}
|
<li><a href="{% project_url build.project %}">{{build.project.name}}</a></li>
|
||||||
<li><a href="{% url 'projectbuilds' build.project.id %}">Builds</a></li>
|
{% if not build.project.is_default %}
|
||||||
{% endif %}
|
<li><a href="{% url 'projectbuilds' build.project.id %}">Builds</a></li>
|
||||||
<li><a href="{%url 'builddashboard' build.pk%}">{{build.get_sorted_target_list.0.target}} {%if build.target_set.all.count > 1%}(+{{build.target_set.all.count|add:"-1"}}){%endif%} {{build.machine}} ({{build.completed_on|date:"d/m/y H:i"}})</a></li>
|
{% endif %}
|
||||||
{% block localbreadcrumb %}{% endblock %}
|
<li><a href="{%url 'builddashboard' build.pk%}">{{build.get_sorted_target_list.0.target}} {%if build.target_set.all.count > 1%}(+{{build.target_set.all.count|add:"-1"}}){%endif%} {{build.machine}} ({{build.completed_on|date:"d/m/y H:i"}})</a></li>
|
||||||
</ul>
|
{% block localbreadcrumb %}{% endblock %}
|
||||||
<script>
|
</ul>
|
||||||
|
<script>
|
||||||
$( function () {
|
$( function () {
|
||||||
$('#breadcrumb > li').append('<span class="divider">→</span>');
|
$('#breadcrumb > li').append('<span class="divider">→</span>');
|
||||||
$('#breadcrumb > li:last').addClass("active");
|
$('#breadcrumb > li:last').addClass("active");
|
||||||
$('#breadcrumb > li:last > span').remove();
|
$('#breadcrumb > li:last > span').remove();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Begin container -->
|
<!-- Begin container -->
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- breadcrumbs -->
|
<!-- breadcrumbs -->
|
||||||
<div class="section">
|
<div class="col-md-12">
|
||||||
<ul class="breadcrumb" id="breadcrumb">
|
<ul class="breadcrumb" id="breadcrumb">
|
||||||
<li><a href="{% project_url build.project %}">{{build.project.name}}</a></li>
|
<li><a href="{% project_url build.project %}">{{build.project.name}}</a></li>
|
||||||
{% if not build.project.is_default %}
|
{% if not build.project.is_default %}
|
||||||
@@ -44,12 +44,12 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- begin left sidebar container -->
|
<!-- begin left sidebar container -->
|
||||||
<div id="nav" class="col-md-2">
|
<div id="nav" class="col-md-2">
|
||||||
<ul class="nav nav-list well" id="build-menu">
|
<ul class="nav nav-pills nav-stacked" id="build-menu">
|
||||||
<li
|
<li
|
||||||
{% if request.resolver_match.url_name == 'builddashboard' %}
|
{% if request.resolver_match.url_name == 'builddashboard' %}
|
||||||
class="active"
|
class="active"
|
||||||
{% endif %} >
|
{% endif %} >
|
||||||
<a class="nav-parent" href="{% url 'builddashboard' build.pk %}">Build summary</a>
|
<a href="{% url 'builddashboard' build.pk %}">Build summary</a>
|
||||||
</li>
|
</li>
|
||||||
{% if build.target_set.all.0.is_image and build.outcome == 0 %}
|
{% if build.target_set.all.0.is_image and build.outcome == 0 %}
|
||||||
<li class="nav-header">Images</li>
|
<li class="nav-header">Images</li>
|
||||||
@@ -72,56 +72,42 @@
|
|||||||
<li><a href="{% url 'cputime' build.pk %}">CPU usage</a></li>
|
<li><a href="{% url 'cputime' build.pk %}">CPU usage</a></li>
|
||||||
<li><a href="{% url 'diskio' build.pk %}">Disk I/O</a></li>
|
<li><a href="{% url 'diskio' build.pk %}">Disk I/O</a></li>
|
||||||
|
|
||||||
<li class="divider"></li>
|
<li class="nav-header">Actions</li>
|
||||||
|
<a class="btn btn-default btn-block navbar-btn" href="{% url 'build_artifact' build.id 'cookerlog' build.id %}">Download build log</a>
|
||||||
<li>
|
|
||||||
<p class="navbar-btn">
|
|
||||||
<a class="btn btn-block" href="{% url 'build_artifact' build.id 'cookerlog' build.id %}">
|
|
||||||
Download build log
|
|
||||||
</a>
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
{% with build.get_custom_image_recipes as custom_image_recipes %}
|
{% with build.get_custom_image_recipes as custom_image_recipes %}
|
||||||
{% if custom_image_recipes.count > 0 %}
|
{% if custom_image_recipes.count > 0 %}
|
||||||
<!-- edit custom image built during this build -->
|
<!-- edit custom image built during this build -->
|
||||||
<li>
|
<button class="btn btn-default btn-block navbar-btn" data-role="edit-custom-image-trigger">Edit custom image</button>
|
||||||
<p class="navbar-btn" data-role="edit-custom-image-trigger">
|
{% include 'editcustomimage_modal.html' %}
|
||||||
<button class="btn btn-block">Edit custom image</button>
|
<script>
|
||||||
{% include 'editcustomimage_modal.html' %}
|
var editableCustomImageRecipes = {{ custom_image_recipes | objects_to_dictionaries:"id,name" | json }};
|
||||||
<script>
|
|
||||||
var editableCustomImageRecipes = {{ custom_image_recipes | objects_to_dictionaries:"id,name" | json }};
|
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
var editCustomImageTrigger = $('[data-role="edit-custom-image-trigger"]');
|
var editCustomImageTrigger = $('[data-role="edit-custom-image-trigger"]');
|
||||||
var editCustomImageModal = $('#edit-custom-image-modal');
|
var editCustomImageModal = $('#edit-custom-image-modal');
|
||||||
|
|
||||||
// edit custom image which was built during this build
|
// edit custom image which was built during this build
|
||||||
editCustomImageTrigger.click(function () {
|
editCustomImageTrigger.click(function () {
|
||||||
// single editable custom image: redirect to the edit page
|
// single editable custom image: redirect to the edit page
|
||||||
// for that image
|
// for that image
|
||||||
if (editableCustomImageRecipes.length === 1) {
|
if (editableCustomImageRecipes.length === 1) {
|
||||||
var url = '{% url "customrecipe" build.project.id custom_image_recipes.first.id %}';
|
var url = '{% url "customrecipe" build.project.id custom_image_recipes.first.id %}';
|
||||||
document.location.href = url;
|
document.location.href = url;
|
||||||
}
|
}
|
||||||
// multiple editable custom images: show modal to select
|
// multiple editable custom images: show modal to select
|
||||||
// one of them for editing
|
// one of them for editing
|
||||||
else {
|
else {
|
||||||
editCustomImageModal.modal('show');
|
editCustomImageModal.modal('show');
|
||||||
}
|
}
|
||||||
});
|
|
||||||
});
|
});
|
||||||
</script>
|
});
|
||||||
</p>
|
</script>
|
||||||
</li>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|
||||||
<li>
|
|
||||||
<!-- new custom image from image recipe in this build -->
|
<!-- new custom image from image recipe in this build -->
|
||||||
<p class="navbar-btn" data-role="new-custom-image-trigger">
|
<button class="btn btn-default btn-block navbar-btn" data-role="new-custom-image-trigger">New custom image</button>
|
||||||
<button class="btn btn-block">New custom image</button>
|
|
||||||
</p>
|
|
||||||
{% include 'newcustomimage_modal.html' %}
|
{% include 'newcustomimage_modal.html' %}
|
||||||
<script>
|
<script>
|
||||||
// imageRecipes includes both custom image recipes and built-in
|
// imageRecipes includes both custom image recipes and built-in
|
||||||
@@ -145,7 +131,6 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
</table>
|
</table>
|
||||||
|
|
||||||
<!-- Show pagination controls -->
|
<!-- Show pagination controls -->
|
||||||
<div>
|
<div id="pagination-basetable_bottom">
|
||||||
<!--span class="help-inline">Showing {{objects.start_index}} to {{objects.end_index}} out of {{objects.paginator.count}} entries.</span-->
|
<!--span class="help-inline">Showing {{objects.start_index}} to {{objects.end_index}} out of {{objects.paginator.count}} entries.</span-->
|
||||||
|
|
||||||
<ul class="pagination">
|
<ul class="pagination">
|
||||||
@@ -20,16 +20,18 @@
|
|||||||
<li class="disabled"><a href="#">»</a></li>
|
<li class="disabled"><a href="#">»</a></li>
|
||||||
{%endif%}
|
{%endif%}
|
||||||
</ul>
|
</ul>
|
||||||
<div class="pull-right">
|
<form class="navbar-form navbar-right">
|
||||||
<span class="help-inline">Show rows:</span>
|
<div class="form-group">
|
||||||
<select class="pagesize">
|
<label>Show rows:</label>
|
||||||
{% with "10 25 50 100 150" as list%}
|
<select class="form-control pagesize">
|
||||||
|
{% with "10 25 50 100 150" as list%}
|
||||||
{% for i in list.split %}
|
{% for i in list.split %}
|
||||||
<option value="{{i}}">{{i}}</option>
|
<option value="{{i}}">{{i}}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Update page display settings -->
|
<!-- Update page display settings -->
|
||||||
|
|||||||
@@ -159,68 +159,83 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- control header -->
|
<!-- control header -->
|
||||||
<div class="navbar">
|
<div class="navbar navbar-default">
|
||||||
<div class="navbar-inner">
|
<div class="container-fluid">
|
||||||
<form class="navbar-search" id="searchform">
|
<div class="navbar-header">
|
||||||
<div class="input-append">
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#table-chrome-collapse-variablehistory" aria-expanded="false">
|
||||||
<input id="search" name="search" type="text" placeholder="Search {%if object_search_display %}{{object_search_display}}{%else%}{{objectname}}{%endif%}" value="{%if request.GET.search %}{{request.GET.search}}{% endif %}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="input-append-addon btn" tabindex="-1"><i class="glyphicon glyphicon-remove"></i></a>{%endif%}
|
<span class="sr-only">Toggle table options</span>
|
||||||
<input type="hidden" name="orderby" value="{{request.GET.orderby}}">
|
<span class="icon-bar"></span>
|
||||||
<input type="hidden" name="page" value="1">
|
<span class="icon-bar"></span>
|
||||||
<button class="btn" id="search-button" type="submit" value="Search">Search</button>
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="collapse navbar-collapse" id="table-chrome-collapse-variablehistory">
|
||||||
|
<form class="navbar-form navbar-left" id="searchform">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="btn-group">
|
||||||
|
<input class="form-control" id="search" name="search" type="text" placeholder="Search {%if object_search_display %}{{object_search_display}}{%else%}{{objectname}}{%endif%}" value="{%if request.GET.search %}{{request.GET.search}}{% endif %}"/>
|
||||||
|
{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" tabindex="-1"><span class="remove-search-btn-variables glyphicon glyphicon-remove-circle"></span></a>{%endif%}
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</div>
|
||||||
<div class="pull-right">
|
<input type="hidden" name="orderby" value="{{request.GET.orderby}}">
|
||||||
{% if tablecols %}
|
<input type="hidden" name="page" value="1">
|
||||||
<div class="btn-group">
|
<button class="btn btn-default" id="search-button" type="submit" value="Search">Search</button>
|
||||||
<button id="edit-columns-button" class="btn dropdown-toggle" data-toggle="dropdown">Edit columns
|
</form>
|
||||||
<span class="caret"></span>
|
<form class="navbar-form navbar-right">
|
||||||
</button>
|
<div class="form-group">
|
||||||
|
<label>Show rows:</label>
|
||||||
|
<select class="pagesize form-control">
|
||||||
|
{% with "10 25 50 100 150" as list%}
|
||||||
|
{% for i in list.split %}
|
||||||
|
<option value="{{i}}">{{i}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
{% endwith %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<div class="btn-group navbar-right">
|
||||||
|
{% if tablecols %}
|
||||||
|
<button id="edit-columns-button" class="btn btn-default navbar-btn dropdown-toggle" data-toggle="dropdown">Edit columns
|
||||||
|
<span class="caret"></span>
|
||||||
|
</button>
|
||||||
<!--
|
<!--
|
||||||
{{tablecols|sortcols}}
|
{{tablecols|sortcols}}
|
||||||
-->
|
-->
|
||||||
<ul id='editcol' class="dropdown-menu">
|
<ul id="editcol" class="dropdown-menu editcol">
|
||||||
{% for i in tablecols|sortcols %}
|
{% for i in tablecols|sortcols %}
|
||||||
<li>
|
<li>
|
||||||
<label {% if not i.clclass %} class="checkbox muted" {%else%} class="checkbox" {%endif%}>
|
<div class="checkbox">
|
||||||
<input type="checkbox" class="chbxtoggle"
|
<label {% if not i.clclass %} class="muted" {%endif%}>
|
||||||
{% if i.clclass %}
|
<input type="checkbox" class="chbxtoggle"
|
||||||
|
{% if i.clclass %}
|
||||||
id="{{i.clclass}}"
|
id="{{i.clclass}}"
|
||||||
value="ct{{i.name}}"
|
value="ct{{i.name}}"
|
||||||
{% if not i.hidden %}
|
{% if not i.hidden %}
|
||||||
checked="checked"
|
checked="checked"
|
||||||
{%endif%}
|
{%endif%}
|
||||||
onclick="showhideTableColumn(
|
onclick="showhideTableColumn(
|
||||||
$(this).attr('id'),
|
$(this).attr('id'),
|
||||||
$(this).is(':checked'),
|
$(this).is(':checked'),
|
||||||
{% if i.ordericon %}
|
{% if i.ordericon %}
|
||||||
'{{i.orderkey}}'
|
'{{i.orderkey}}'
|
||||||
{% else %}
|
{% else %}
|
||||||
undefined
|
undefined
|
||||||
{% endif %}
|
{% endif %}
|
||||||
)"
|
)"
|
||||||
{%else%}
|
{%else%}
|
||||||
checked disabled
|
checked disabled
|
||||||
{% endif %}/> {{i.name}}
|
{% endif %}/>{{i.name}}
|
||||||
</label>
|
</label>
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
</li>
|
||||||
<div style="display:inline">
|
{% endfor %}
|
||||||
<span class="divider-vertical"></span>
|
</ul>
|
||||||
<span class="help-inline" style="padding-top:5px;">Show rows:</span>
|
{% endif %}
|
||||||
<select style="margin-top:5px;margin-bottom:0px;" class="pagesize">
|
</div>
|
||||||
{% with "10 25 50 100 150" as list%}
|
</div> <!-- navbar-collapse -->
|
||||||
{% for i in list.split %}
|
</div> <!-- container-fluid -->
|
||||||
<option value="{{i}}">{{i}}</option>
|
</div> <!-- navbar-default -->
|
||||||
{% endfor %}
|
|
||||||
{% endwith %}
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div> <!-- navbar-inner -->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- the actual rows of the table -->
|
<!-- the actual rows of the table -->
|
||||||
<table class="table table-bordered table-hover tablesorter" id="otable">
|
<table class="table table-bordered table-hover tablesorter" id="otable">
|
||||||
@@ -228,11 +243,11 @@
|
|||||||
<!-- Table header row; generated from "tablecols" entry in the context dict -->
|
<!-- Table header row; generated from "tablecols" entry in the context dict -->
|
||||||
<tr>
|
<tr>
|
||||||
{% for tc in tablecols %}<th class="{%if tc.dclass%}{{tc.dclass}}{%endif%} {% if tc.clclass %}{{tc.clclass}}{% endif %}">
|
{% for tc in tablecols %}<th class="{%if tc.dclass%}{{tc.dclass}}{%endif%} {% if tc.clclass %}{{tc.clclass}}{% endif %}">
|
||||||
{%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%}
|
{%if tc.qhelp%}<span class="glyphicon glyphicon-question-sign get-help" title="{{tc.qhelp}}"></span>{%endif%}
|
||||||
{%if tc.orderfield%}<a {%if tc.ordericon%} class="sorted" {%endif%}href="javascript:reload_params({'page': 1, 'orderby' : '{{tc.orderfield}}' })">{{tc.name}}</a>{%else%}<span class="muted">{{tc.name}}</span>{%endif%}
|
{%if tc.orderfield%}<a {%if tc.ordericon%} class="sorted" {%endif%}href="javascript:reload_params({'page': 1, 'orderby' : '{{tc.orderfield}}' })">{{tc.name}}</a>{%else%}<span class="text-muted">{{tc.name}}</span>{%endif%}
|
||||||
{%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%}
|
{%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%}
|
||||||
{%if tc.filter%}<div class="btn-group pull-right">
|
{%if tc.filter%}<div class="btn-group pull-right">
|
||||||
<a href="#filter_{{tc.filter.class}}" role="button" class="btn btn-mini {%if request.GET.filter%}{{tc.filter.options|filtered_icon:request.GET.filter}} {%endif%}" {%if request.GET.filter and tc.filter.options|filtered_tooltip:request.GET.filter %} title="<p>{{tc.filter.options|filtered_tooltip:request.GET.filter}}</p><p><a class='btn btn-sm btn-primary' href=javascript:reload_params({'filter':''})>Show all {% if filter_search_display %}{{filter_search_display}}{% else %}{{objectname}}{% endif %}</a></p>" {%endif%} data-toggle="modal"> <i class="glyphicon glyphicon-filter filtered"></i> </a>
|
<a href="#filter_{{tc.filter.class}}" role="button" class="btn btn-xs {%if request.GET.filter%}{{tc.filter.options|filtered_icon:request.GET.filter}} {%endif%}" {%if request.GET.filter and tc.filter.options|filtered_tooltip:request.GET.filter %} title="<p>{{tc.filter.options|filtered_tooltip:request.GET.filter}}</p><p><a class='btn btn-sm btn-primary' href=javascript:reload_params({'filter':''})>Show all {% if filter_search_display %}{{filter_search_display}}{% else %}{{objectname}}{% endif %}</a></p>" {%endif%} data-toggle="modal"> <span class="glyphicon glyphicon-filter filtered"></span> </a>
|
||||||
</div>{%endif%}
|
</div>{%endif%}
|
||||||
</th>{% endfor %}
|
</th>{% endfor %}
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -14,57 +14,49 @@
|
|||||||
{% block buildinfomain %}
|
{% block buildinfomain %}
|
||||||
<!-- page title -->
|
<!-- page title -->
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="page-header">
|
<div class="page-header build-data">
|
||||||
<h1>{{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}}</h1>
|
<h1>{{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}}</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- build result bar -->
|
<!-- build result bar -->
|
||||||
<div class="alert {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-error{%else%}alert-info{%endif%}">
|
<div class="alert {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-danger{%else%}alert-info{%endif%}">
|
||||||
<div class="lead">
|
<span><strong>{%if build.outcome == build.SUCCEEDED%}Completed{%elif build.outcome == build.FAILED%}Failed{%else%}{%endif%}</strong> on {{build.completed_on|date:"d/m/y H:i"}}</span>
|
||||||
<span><strong>
|
{% if build.warnings.count or build.errors.count %}
|
||||||
{%if build.outcome == build.SUCCEEDED%}Completed{%elif build.outcome == build.FAILED%}Failed{%else%}{%endif%}
|
<span>with</span>
|
||||||
</strong> on
|
{% endif %}
|
||||||
{{build.completed_on|date:"d/m/y H:i"}}
|
{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
|
||||||
</span>
|
{% if build.errors.count %}
|
||||||
{% if build.warnings.count or build.errors.count %}
|
<a href="#errors" class="alert-link show-errors"> {{build.errors.count}} error{{build.errors.count|pluralize}}</a>
|
||||||
with
|
{% endif %}
|
||||||
{% endif %}
|
{% if build.warnings.count %}
|
||||||
{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
|
{% if build.errors.count %}and{% endif %}
|
||||||
{% if build.errors.count %}
|
<a href="#warnings" class="show-warnings"> {{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a>
|
||||||
<span > <i class="icon-minus-sign red"></i><strong><a href="#errors" class="error show-errors"> {{build.errors.count}} error{{build.errors.count|pluralize}}</a></strong></span>
|
{% endif %}
|
||||||
{% endif %}
|
{% if build.cooker_log_path %}
|
||||||
{% if build.warnings.count %}
|
<a class="alert-link pull-right log" href="{% url 'build_artifact' build.id "cookerlog" build.id %}">Download build log</a>
|
||||||
{% if build.errors.count %}
|
{% endif %}
|
||||||
and
|
<span class="pull-right">
|
||||||
{% endif %}
|
Build time:
|
||||||
<span > <i class="icon-warning-sign yellow"></i><strong><a href="#warnings" class="warning show-warnings"> {{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a></strong></span>
|
<a class="alert-link" href="{% url 'buildtime' build.pk %}">{{ build.timespent_seconds|sectohms }}</a>
|
||||||
{% endif %}
|
</span>
|
||||||
<span class="pull-right">Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent_seconds|sectohms }}</a>
|
{%endif%}
|
||||||
{% if build.cooker_log_path %}
|
</div>
|
||||||
<a class="btn {%if build.outcome == build.SUCCEEDED%}btn-success{%else%}btn-danger{%endif%} pull-right log" href="{% url 'build_artifact' build.id "cookerlog" build.id %}">Download build log</a>
|
|
||||||
{% endif %}
|
|
||||||
</span>
|
|
||||||
|
|
||||||
{%endif%}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% if build.errors.count %}
|
{% if build.errors.count %}
|
||||||
<div class="panel-group" id="errors">
|
<div class="panel panel-default" id="errors">
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<a class="panel-title error toggle-errors" href="#">
|
<h2 class="panel-title">
|
||||||
<h2 id="error-toggle">
|
<span class="glyphicon glyphicon-minus-sign"></span>
|
||||||
<i class="icon-minus-sign"></i>
|
<a data-toggle="collapse" href="#error-info" id="error-toggle">
|
||||||
{{build.errors.count}} error{{build.errors.count|pluralize}}
|
{{build.errors.count}} error{{build.errors.count|pluralize}}
|
||||||
</h2>
|
</a>
|
||||||
</a>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-collapse collapse in" id="collapse-errors">
|
<div class="panel-collapse collapse in" id="error-info">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
{% for error in build.errors %}
|
{% for error in build.errors %}
|
||||||
<div class="alert alert-error" data-error="{{ error.id }}">
|
<div class="alert alert-danger" data-error="{{ error.id }}">
|
||||||
<pre>{{error.message}}</pre>
|
<pre>{{error.message}}</pre>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@@ -72,7 +64,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{%if build.outcome == build.SUCCEEDED%}
|
{%if build.outcome == build.SUCCEEDED%}
|
||||||
@@ -81,9 +72,8 @@
|
|||||||
<h2>Images</h2>
|
<h2>Images</h2>
|
||||||
{% for target in targets %}
|
{% for target in targets %}
|
||||||
{% if target.target.is_image %}
|
{% if target.target.is_image %}
|
||||||
<div class="well dashboard-section">
|
<div class="well well-transparent dashboard-section">
|
||||||
<h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target}}</a>
|
<h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target}}</a></h3>
|
||||||
</h3>
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>Packages included</dt>
|
<dt>Packages included</dt>
|
||||||
<dd><a href="{% url 'target' build.pk target.target.pk %}">{{target.npkg}}</a></dd>
|
<dd><a href="{% url 'target' build.pk target.target.pk %}">{{target.npkg}}</a></dd>
|
||||||
@@ -100,7 +90,7 @@
|
|||||||
<p>
|
<p>
|
||||||
This is probably because valid image and license manifest
|
This is probably because valid image and license manifest
|
||||||
files from a previous build already exist in your
|
files from a previous build already exist in your
|
||||||
<code>.../poky/build/tmp/deploy</code>
|
<code>build/tmp/deploy</code>
|
||||||
directory. You can
|
directory. You can
|
||||||
also <a href="{% url 'target' build.pk target.target.pk %}">view the
|
also <a href="{% url 'target' build.pk target.target.pk %}">view the
|
||||||
license manifest information</a> in Toaster.
|
license manifest information</a> in Toaster.
|
||||||
@@ -110,7 +100,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="The location in disk of the license manifest, a document listing all packages installed in your image and their licenses"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The location in disk of the license manifest, a document listing all packages installed in your image and their licenses"></span>
|
||||||
|
|
||||||
License manifest
|
License manifest
|
||||||
</dt>
|
</dt>
|
||||||
@@ -118,11 +108,11 @@
|
|||||||
<a href="{% url 'target' build.pk target.target.pk %}">View in Toaster</a> |
|
<a href="{% url 'target' build.pk target.target.pk %}">View in Toaster</a> |
|
||||||
<a href="{% url 'build_artifact' build.pk 'licensemanifest' target.target.pk %}">Download</a></dd>
|
<a href="{% url 'build_artifact' build.pk 'licensemanifest' target.target.pk %}">Download</a></dd>
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="Image files are stored in <code>/build/tmp/deploy/images/</code>"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Image files are stored in <code>build/tmp/deploy/images/</code>"></span>
|
||||||
Image files
|
Image files
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
<ul>
|
<ul class="list-unstyled">
|
||||||
{% for i in target.imageFiles %}
|
{% for i in target.imageFiles %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url 'build_artifact' build.pk 'imagefile' i.id %}">
|
<a href="{% url 'build_artifact' build.pk 'imagefile' i.id %}">
|
||||||
@@ -148,10 +138,10 @@
|
|||||||
{% if build.buildartifact_set.all.count > 0 %}
|
{% if build.buildartifact_set.all.count > 0 %}
|
||||||
<h2>Other artifacts</h2>
|
<h2>Other artifacts</h2>
|
||||||
|
|
||||||
<div class="well dashboard-section">
|
<div class="well well-transparent dashboard-section">
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="Build artifacts discovered in <i>tmp/deploy/images</i>. Usually kernel images and kernel modules."></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Build artifacts discovered in <i>tmp/deploy/images</i>. Usually kernel images and kernel modules."></span>
|
||||||
Other artifacts</dt>
|
Other artifacts</dt>
|
||||||
<dd><div>
|
<dd><div>
|
||||||
{% for ba in build.buildartifact_set.all|dictsort:"file_name" %}
|
{% for ba in build.buildartifact_set.all|dictsort:"file_name" %}
|
||||||
@@ -172,51 +162,51 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4 dashboard-section">
|
<div class="col-md-4 dashboard-section">
|
||||||
<div class="well well-transparent">
|
<div class="well well-transparent">
|
||||||
<h4><a href="{%url 'configuration' build.pk%}">Configuration</a></h4>
|
<h3><a href="{%url 'configuration' build.pk%}">Configuration</a></h3>
|
||||||
<dl>
|
<dl>
|
||||||
<dt>Machine</dt><dd>{{build.machine}}</dd>
|
<dt>Machine</dt><dd>{{build.machine}}</dd>
|
||||||
<dt>Distro</dt><dd>{{build.distro}}</dd>
|
<dt>Distro</dt><dd>{{build.distro}}</dd>
|
||||||
<dt>Layers</dt>{% for i in build.layer_version_build.all|dictsort:"layer.name" %}<dd>{{i.layer.name}}</dd>{%endfor%}
|
<dt>Layers</dt><dd><ul class="list-unstyled">{% for i in build.layer_version_build.all|dictsort:"layer.name" %}<li>{{i.layer.name}}</li>{%endfor%}</ul></dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4 dashboard-section">
|
<div class="col-md-4 dashboard-section">
|
||||||
<div class="well well-transparent">
|
<div class="well well-transparent">
|
||||||
<h4><a href="{%url 'tasks' build.pk%}">Tasks</a></h4>
|
<h3><a href="{%url 'tasks' build.pk%}">Tasks</a></h3>
|
||||||
<dl>
|
<dl>
|
||||||
{% query build.task_build outcome=4 order__gt=0 as exectask%}
|
{% query build.task_build outcome=4 order__gt=0 as exectask%}
|
||||||
{% if exectask.count > 0 %}
|
{% if exectask.count > 0 %}
|
||||||
<dt>Failed tasks</dt>
|
<dt>Failed tasks</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{% if exectask.count == 1 %}
|
{% if exectask.count == 1 %}
|
||||||
<a class="error" href="{% url "task" build.id exectask.0.id %}">
|
<a class="text-danger" href="{% url "task" build.id exectask.0.id %}">
|
||||||
{{exectask.0.recipe.name}}
|
{{exectask.0.recipe.name}}
|
||||||
<span class="task-name">{{exectask.0.task_name}}</span>
|
<span class="task-name">{{exectask.0.task_name}}</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<a href="{% url 'build_artifact' build.id "tasklogfile" exectask.0.id %}">
|
<a href="{% url 'build_artifact' build.id "tasklogfile" exectask.0.id %}">
|
||||||
<i class="icon-download-alt" title="" data-original-title="Download task log file"></i>
|
<span class="glyphicon glyphicon-download-alt get-help" title="Download task log file"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
{% elif exectask.count > 1%}
|
{% elif exectask.count > 1%}
|
||||||
<a class="error" href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}}</a>
|
<a class="text-danger" href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</dd>
|
</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<dt>Total number of tasks</dt><dd><a href="{% url 'tasks' build.pk %}">{% query build.task_build order__gt=0 as alltasks %}{{alltasks.count}}</a></dd>
|
<dt>Total number of tasks</dt><dd><a href="{% url 'tasks' build.pk %}">{% query build.task_build order__gt=0 as alltasks %}{{alltasks.count}}</a></dd>
|
||||||
<dt>
|
<dt>
|
||||||
Tasks executed
|
Tasks executed
|
||||||
<i class="icon-question-sign get-help" title="'Executed' tasks are those that need to be run in order to generate the task output"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="'Executed' tasks are those that need to be run in order to generate the task output"></span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A1&count=25&search=&page=1&orderby=order%3A%2B">{% query build.task_build task_executed=1 order__gt=0 as exectask%}{{exectask.count}}</a></dd>
|
<dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A1&count=25&search=&page=1&orderby=order%3A%2B">{% query build.task_build task_executed=1 order__gt=0 as exectask%}{{exectask.count}}</a></dd>
|
||||||
<dt>
|
<dt>
|
||||||
Tasks not executed
|
Tasks not executed
|
||||||
<i class="icon-question-sign get-help" title="'Not executed' tasks don't need to run because their outcome is provided by another task"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="'Not executed' tasks don't need to run because their outcome is provided by another task"></span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A0&count=25&search=&page=1&orderby=order%3A%2B">{% query build.task_build task_executed=0 order__gt=0 as noexectask%}{{noexectask.count}}</a></dd>
|
<dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A0&count=25&search=&page=1&orderby=order%3A%2B">{% query build.task_build task_executed=0 order__gt=0 as noexectask%}{{noexectask.count}}</a></dd>
|
||||||
<dt>
|
<dt>
|
||||||
Reuse
|
Reuse
|
||||||
<i class="icon-question-sign get-help" title="The percentage of 'not executed' tasks over the total number of tasks, which is a measure of the efficiency of your build"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The percentage of 'not executed' tasks over the total number of tasks, which is a measure of the efficiency of your build"></span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{% query build.task_build order__gt=0 as texec %}
|
{% query build.task_build order__gt=0 as texec %}
|
||||||
@@ -232,7 +222,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-4 dashboard-section">
|
<div class="col-md-4 dashboard-section">
|
||||||
<div class="well well-transparent">
|
<div class="well well-transparent">
|
||||||
<h4><a href="{% url 'recipes' build.pk %}">Recipes</a> & <a href="{% url 'packages' build.pk %}">Packages</a></h4>
|
<h3><a href="{% url 'recipes' build.pk %}">Recipes</a> & <a href="{% url 'packages' build.pk %}">Packages</a></h3>
|
||||||
<dl>
|
<dl>
|
||||||
<dt>Recipes built</dt><dd><a href="{% url 'recipes' build.pk %}">{{recipecount}}</a></dd>
|
<dt>Recipes built</dt><dd><a href="{% url 'recipes' build.pk %}">{{recipecount}}</a></dd>
|
||||||
<dt>Packages built</dt><dd><a href="{% url 'packages' build.pk %}">{{packagecount}}</a></dd>
|
<dt>Packages built</dt><dd><a href="{% url 'packages' build.pk %}">{{packagecount}}</a></dd>
|
||||||
@@ -242,17 +232,14 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if build.warnings.count %}
|
{% if build.warnings.count %}
|
||||||
<div class="panel-group" id="warnings">
|
<div class="panel panel-default" id="warnings">
|
||||||
<div class="panel panel-default">
|
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<a class="panel-title warning toggle-warnings" href="#">
|
<h2 class="panel-title">
|
||||||
<h2 id="warning-toggle">
|
<span class="glyphicon glyphicon-warning-sign"></span>
|
||||||
<i class="icon-warning-sign"></i>
|
<a id="warning-toggle" href="#warning-info" data-toggle="collapse">{{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a>
|
||||||
{{build.warnings.count}} warning{{build.warnings.count|pluralize}}
|
</h2>
|
||||||
</h2>
|
|
||||||
</a>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-collapse collapse" id="collapse-warnings">
|
<div class="panel-collapse collapse" id="warning-info">
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
{% for warning in logmessages %}{% if warning.level == 1 %}
|
{% for warning in logmessages %}{% if warning.level == 1 %}
|
||||||
@@ -264,7 +251,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
</div> <!-- end 10 column row -->
|
</div> <!-- end 10 column row -->
|
||||||
@@ -273,8 +259,13 @@
|
|||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
//show warnings section when requested from the previous page
|
//show warnings section when requested from the previous page
|
||||||
if (location.href.search('#warnings') > -1) {
|
if (location.href.search('#warnings') > -1) {
|
||||||
$('#collapse-warnings').addClass('in');
|
$('#warning-info').addClass('in');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//show warnings section when requested from the build outcome
|
||||||
|
$(".show-warnings").click(function() {
|
||||||
|
$('#warning-info').addClass('in');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -14,13 +14,13 @@
|
|||||||
<!-- page title -->
|
<!-- page title -->
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
|
|
||||||
<div class="page-header">
|
<div class="page-header build-data">
|
||||||
<h1>Configuration</h1>
|
<h1>Configuration</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- configuration table -->
|
<!-- configuration table -->
|
||||||
<div id="navTab">
|
<div id="navTab">
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-tabs">
|
||||||
<li class="active"><a href="#">Summary</a></li>
|
<li class="active"><a href="#">Summary</a></li>
|
||||||
<li class=""><a href="{% url 'configvars' build.id %}">BitBake variables</a></li>
|
<li class=""><a href="{% url 'configvars' build.id %}">BitBake variables</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -39,13 +39,13 @@
|
|||||||
{%if TUNE_FEATURES %}<dt>Tune features</dt><dd>{{TUNE_FEATURES}}</dd> {% endif %}
|
{%if TUNE_FEATURES %}<dt>Tune features</dt><dd>{{TUNE_FEATURES}}</dd> {% endif %}
|
||||||
{%if TARGET_FPU %}<dt>Target FPU</dt><dd>{{TARGET_FPU}}</dd> {% endif %}
|
{%if TARGET_FPU %}<dt>Target FPU</dt><dd>{{TARGET_FPU}}</dd> {% endif %}
|
||||||
{%if targets.all %}<dt>Target(s)</dt>
|
{%if targets.all %}<dt>Target(s)</dt>
|
||||||
<dd> <ul> {% for target in targets.all %}
|
<dd> <ul class="list-unstyled"> {% for target in targets.all %}
|
||||||
<li>{{target.target}}{%if forloop.counter > 1 %}<br>{% endif %}</li>
|
<li>{{target.target}}{%if forloop.counter > 1 %}<br>{% endif %}</li>
|
||||||
{% endfor %} </ul> </dd> {% endif %}
|
{% endfor %} </ul> </dd> {% endif %}
|
||||||
</dl>
|
</dl>
|
||||||
<h3>Layers</h3>
|
<h3>Layers</h3>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-9">
|
<div class="col-md-9 table-responsive">
|
||||||
<table class="table table-bordered table-hover">
|
<table class="table table-bordered table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -58,7 +58,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>{{lv.layer.name}}</td>
|
<td>{{lv.layer.name}}</td>
|
||||||
<td>{{lv.branch}}</td>
|
<td>{{lv.branch}}</td>
|
||||||
<td> <a class="btn" data-content="<ul class='list-unstyled'>
|
<td> <a class="btn btn-default" data-content="<ul class='list-unstyled'>
|
||||||
<li>{{lv.commit}}</li> </ul>">
|
<li>{{lv.commit}}</li> </ul>">
|
||||||
{{lv.commit|truncatechars:13}}
|
{{lv.commit|truncatechars:13}}
|
||||||
</a></td>
|
</a></td>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
{% block buildinfomain %}
|
{% block buildinfomain %}
|
||||||
<!-- page title -->
|
<!-- page title -->
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="page-header">
|
<div class="page-header build-data">
|
||||||
<h1>
|
<h1>
|
||||||
{% if request.GET.filter and objects.paginator.count > 0 or request.GET.search and objects.paginator.count > 0 %}
|
{% if request.GET.filter and objects.paginator.count > 0 or request.GET.search and objects.paginator.count > 0 %}
|
||||||
{{objects.paginator.count}} variable{{objects.paginator.count|pluralize}} found
|
{{objects.paginator.count}} variable{{objects.paginator.count|pluralize}} found
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
<!-- configuration table -->
|
<!-- configuration table -->
|
||||||
<div id="navTab">
|
<div id="navTab">
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-tabs">
|
||||||
<li class=""><a href="{% url 'configuration' build.id %}">Summary</a></li>
|
<li class=""><a href="{% url 'configuration' build.id %}">Summary</a></li>
|
||||||
<li class="active"><a href="#" >BitBake variables</a></li>
|
<li class="active"><a href="#" >BitBake variables</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -36,13 +36,22 @@
|
|||||||
<div id="variables" class="tab-pane">
|
<div id="variables" class="tab-pane">
|
||||||
|
|
||||||
{% if objects.paginator.count == 0 %}
|
{% if objects.paginator.count == 0 %}
|
||||||
<div class="alert">
|
<div class="alert alert-warning">
|
||||||
<form class="no-results input-append" id="searchform">
|
<form class="no-results form-inline" id="searchform">
|
||||||
<input id="search" name="search" class="input-xxlarge" type="text" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="input-append-addon btn" tabindex="-1"><i class="glyphicon glyphicon-remove"></i></a>{% endif %}
|
<div class="form-group">
|
||||||
<button class="btn" type="submit" value="Search">Search</button>
|
<div class="btn-group">
|
||||||
<button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all variables</button>
|
<input class="form-control" id="search" name="search" type="text" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"/>
|
||||||
</form>
|
{% if request.GET.search %}
|
||||||
</div>
|
<a href="javascript:$('#search').val('');searchform.submit()" tabindex="-1">
|
||||||
|
<span class="remove-search-btn-variables glyphicon glyphicon-remove-circle"></span>
|
||||||
|
</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-default" type="submit" value="Search">Search</button>
|
||||||
|
<button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all variables</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% else %}
|
{% else %}
|
||||||
{% include "basetable_top.html" %}
|
{% include "basetable_top.html" %}
|
||||||
@@ -50,83 +59,87 @@
|
|||||||
{% for variable in objects %}
|
{% for variable in objects %}
|
||||||
<tr class="data">
|
<tr class="data">
|
||||||
<td class="variable_name"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td>
|
<td class="variable_name"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td>
|
||||||
<td class="variable_value"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_value|truncatechars:153}}</a></td>
|
<td class="variable_value">{{variable.variable_value|truncatechars:153}}</td>
|
||||||
<td class="file"><a data-toggle="modal" href="#variable-{{variable.pk}}">
|
<td class="file">
|
||||||
{% if variable.vhistory.all %}
|
{% if variable.vhistory.all %}
|
||||||
{% for path in variable.vhistory.all|filter_setin_files:file_filter %}
|
{% for path in variable.vhistory.all|filter_setin_files:file_filter %}
|
||||||
{{path}}<br/>
|
{{path}}<br/>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</a></td>
|
</td>
|
||||||
<td class="description">
|
<td class="description">
|
||||||
{% if variable.description %}
|
{% if variable.description %}
|
||||||
{{variable.description}}
|
{{variable.description}}
|
||||||
<a href="http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-{{variable.variable_name|variable_parent_name}}" target="_blank">
|
<a href="http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-{{variable.variable_name|variable_parent_name}}" target="_blank">
|
||||||
<i class="glyphicon glyphicon-share get-info"></i></a>
|
<span class="glyphicon glyphicon-new-window get-info"></span></a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div> <!-- table-responsive -->
|
||||||
{% include "basetable_bottom.html" %}
|
{% include "basetable_bottom.html" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div> <!-- endvariables -->
|
</div> <!-- endvariables -->
|
||||||
|
|
||||||
<!-- file list popups -->
|
<!-- file list popups -->
|
||||||
{% for variable in objects %}
|
{% for variable in objects %}
|
||||||
{% if variable.vhistory.count %}
|
{% if variable.vhistory.count %}
|
||||||
<div id="variable-{{variable.pk}}" class="modal in fade" tabindex="-1" role="dialog">
|
<div id="variable-{{variable.pk}}" class="modal fade" tabindex="-1" role="dialog">
|
||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
|
||||||
<h3>History of {{variable.variable_name}}</h3>
|
<h3>History of {{variable.variable_name}}</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
{% if variable.variable_value %}
|
{% if variable.variable_value %}
|
||||||
{% if variable.variable_value|length < 570 %}
|
{% if variable.variable_value|length < 570 %}
|
||||||
<h4>{{variable.variable_name}} value is:</h4>
|
<h4>{{variable.variable_name}} value is:</h4>
|
||||||
<p>
|
<p>
|
||||||
{{variable.variable_value}}
|
{{variable.variable_value}}
|
||||||
</p>
|
</p>
|
||||||
{% else %}
|
{% else %}
|
||||||
<h4>{{variable.variable_name}} value is:</h4>
|
<h4>{{variable.variable_name}} value is:</h4>
|
||||||
<p>
|
<p>
|
||||||
<span>{{variable.variable_value|string_slice:':570'}}
|
<span>{{variable.variable_value|string_slice:':570'}}
|
||||||
<span class="full"> {{variable.variable_value|string_slice:'570:'}}
|
<span class="full"> {{variable.variable_value|string_slice:'570:'}}
|
||||||
</span>
|
</span>
|
||||||
<a class="btn btn-mini full-show">...</a>
|
<a href="#" class="full-show">...</a>
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<a class="btn btn-mini full-hide">Collapse variable value <i class="icon-caret-up"></i>
|
<a href="#" class="full-hide">Collapse variable value <i class="icon-caret-up"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="alert alert-info">The value of <strong>{{variable.variable_name}}</strong> is an empty string</div>
|
<div class="alert alert-info">The value of <strong>{{variable.variable_name}}</strong> is an empty string</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<h4>The value was set in the following configuration files:</h4>
|
<h4>The value was set in the following configuration files:</h4>
|
||||||
<table class="table table-bordered table-hover">
|
<div class="table-responsive">
|
||||||
<thead>
|
<table class="table table-bordered table-hover">
|
||||||
<tr>
|
<thead>
|
||||||
<th>Order</th>
|
<tr>
|
||||||
<th>Configuration file</th>
|
<th>Order</th>
|
||||||
<th>Operation</th>
|
<th>Configuration file</th>
|
||||||
<th>Line number</th>
|
<th>Operation</th>
|
||||||
</tr>
|
<th>Line</th>
|
||||||
</thead>
|
</tr>
|
||||||
<tbody>
|
</thead>
|
||||||
{% for vh in variable.vhistory.all %}
|
<tbody>
|
||||||
<tr>
|
{% for vh in variable.vhistory.all %}
|
||||||
<td>{{forloop.counter}}</td><td>{{vh.file_name}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
|
<tr>
|
||||||
</tr>
|
<td>{{forloop.counter}}</td><td class="file">{{vh.file_name}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
|
||||||
{%endfor%}
|
</tr>
|
||||||
</tbody>
|
{%endfor%}
|
||||||
</table>
|
</tbody>
|
||||||
</div>
|
</table>
|
||||||
</div><!-- /.modal-content -->
|
</div>
|
||||||
</div><!-- /.modal-dialog -->
|
</div>
|
||||||
</div><!-- /.modal -->
|
</div><!-- /.modal-content -->
|
||||||
{% endif %}
|
</div><!-- /.modal-dialog -->
|
||||||
|
</div><!-- /.modal -->
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
</div> <!-- buildinfomain -->
|
</div> <!-- buildinfomain -->
|
||||||
|
|||||||
@@ -158,7 +158,7 @@
|
|||||||
<div class="well">
|
<div class="well">
|
||||||
<h2>About {{recipe.name}}</h2>
|
<h2>About {{recipe.name}}</h2>
|
||||||
|
|
||||||
<dl>
|
<dl class="item-info">
|
||||||
<dt>
|
<dt>
|
||||||
Approx. packages included
|
Approx. packages included
|
||||||
<span class="glyphicon glyphicon-question-sign get-help" title="" data-original-title="The number of packages included is based on information from previous builds and from parsing layers, so we can never be sure it is 100% accurate"></span>
|
<span class="glyphicon glyphicon-question-sign get-help" title="" data-original-title="The number of packages included is based on information from previous builds and from parsing layers, so we can never be sure it is 100% accurate"></span>
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
{# only paginate if 10 or more rows unfiltered, all pages #}
|
{# only paginate if 10 or more rows unfiltered, all pages #}
|
||||||
{% if object_count >= 10 %}
|
{% if object_count >= 10 %}
|
||||||
<div>
|
<div id="pagination-detail">
|
||||||
<ul class="pagination">
|
<ul class="pagination">
|
||||||
{%if objects.has_previous %}
|
{%if objects.has_previous %}
|
||||||
<li><a href="javascript:reload_params({'page':{{objects.previous_page_number}}})">«</a></li>
|
<li><a href="javascript:reload_params({'page':{{objects.previous_page_number}}})">«</a></li>
|
||||||
@@ -23,16 +23,18 @@
|
|||||||
{%endif%}
|
{%endif%}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="pull-right">
|
<form class="navbar-form navbar-right">
|
||||||
<span class="help-inline">Show rows:</span>
|
<div class=form-group">
|
||||||
<select class="pagesize">
|
<label>Show rows:</label>
|
||||||
{% with "10 25 50 100 150" as list%}
|
<select class="pagesize form-control">
|
||||||
|
{% with "10 25 50 100 150" as list%}
|
||||||
{% for i in list.split %}
|
{% for i in list.split %}
|
||||||
<option value="{{i}}">{{i}}</option>
|
<option value="{{i}}">{{i}}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Update page display settings -->
|
<!-- Update page display settings -->
|
||||||
|
|||||||
@@ -21,48 +21,52 @@ $(document).ready(function() {
|
|||||||
|
|
||||||
{% if objects.paginator.count > 10 or request.GET.search %}
|
{% if objects.paginator.count > 10 or request.GET.search %}
|
||||||
{% if objects.paginator.count == 0 %}
|
{% if objects.paginator.count == 0 %}
|
||||||
<div class="alert">
|
<div class="alert alert-warning">
|
||||||
<h3>No {{search_what}} found</h3>
|
<h4>No {{search_what}} found</h4>
|
||||||
<form id="searchform" class="input-append">
|
<form id="searchform" class="form-inline">
|
||||||
{% else %}
|
{% else %}
|
||||||
<form id="searchform" class="navbar-search input-append pull-left">
|
<form id="searchform" class="navbar-form navbar-left detail-page-controls">
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<input id="search" class="input-xlarge" type="text" placeholder="Search {{search_what}}" name="search" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}">
|
|
||||||
<input type="hidden" value="name:+" name="orderby">
|
|
||||||
<input type="hidden" value="l" name="page">
|
|
||||||
{% if request.GET.search %}
|
|
||||||
<a class="input-append-addon btn search-clear">
|
|
||||||
<i class="glyphicon glyphicon-remove"></i>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
<button type="submit" class="btn">Search</button>
|
|
||||||
{% if objects.paginator.count == 0 %}
|
|
||||||
<button type="submit" class="btn btn-link search-clear">
|
|
||||||
Show all {{search_what}}
|
|
||||||
</button>
|
|
||||||
{% endif %}
|
|
||||||
</form>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if objects.paginator.count == 0 %}
|
|
||||||
</div> {# end alert #}
|
|
||||||
{% else %}
|
|
||||||
{% if object_count > 10 %}
|
|
||||||
<div class="pull-right">
|
|
||||||
<span class="help-inline" style="padding-top:5px;">Show rows:</span>
|
|
||||||
<select style="margin-top:5px;margin-bottom:0px;" class="pagesize">
|
|
||||||
{% with "10 25 50 100 150" as list%}
|
|
||||||
{% for i in list.split %}
|
|
||||||
{% if request.session.limit == i %}
|
|
||||||
<option value="{{i}}" selected>{{i}}</option>
|
|
||||||
{% else %}
|
|
||||||
<option value="{{i}}">{{i}}</option>
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
|
||||||
{% endwith %}
|
<div class="form-group">
|
||||||
</select>
|
<div class="btn-group">
|
||||||
</div>
|
<input id="search" class="form-control" type="text" placeholder="Search {{search_what}}" name="search" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}">
|
||||||
|
<input type="hidden" value="name:+" name="orderby">
|
||||||
|
<input type="hidden" value="l" name="page">
|
||||||
|
{% if request.GET.search %}
|
||||||
|
<span class="remove-search-btn-detail-search search-clear glyphicon glyphicon-remove-circle"></span>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-default">Search</button>
|
||||||
|
{% if objects.paginator.count == 0 %}
|
||||||
|
<button type="submit" class="btn btn-link search-clear">
|
||||||
|
Show all {{search_what}}
|
||||||
|
</button>
|
||||||
|
{% endif %}
|
||||||
|
</form>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% if objects.paginator.count == 0 %}
|
||||||
|
</div> {# end alert #}
|
||||||
|
{% else %}
|
||||||
|
{% if object_count > 10 %}
|
||||||
|
<form class="navbar-form navbar-right">
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Show rows:</label>
|
||||||
|
<select class="pagesize form-control">
|
||||||
|
{% with "10 25 50 100 150" as list%}
|
||||||
|
{% for i in list.split %}
|
||||||
|
{% if request.session.limit == i %}
|
||||||
|
<option value="{{i}}" selected>{{i}}</option>
|
||||||
|
{% else %}
|
||||||
|
<option value="{{i}}">{{i}}</option>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endwith %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|||||||
@@ -10,9 +10,9 @@
|
|||||||
<!-- Table header row; generated from "tablecols" entry in the context dict -->
|
<!-- Table header row; generated from "tablecols" entry in the context dict -->
|
||||||
<tr>
|
<tr>
|
||||||
{% for tc in tablecols %}<th class="{%if tc.dclass%}{{tc.dclass}}{% endif %} {%if tc.class %}{{tc.clclass}}{% endif %}">
|
{% for tc in tablecols %}<th class="{%if tc.dclass%}{{tc.dclass}}{% endif %} {%if tc.class %}{{tc.clclass}}{% endif %}">
|
||||||
{%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%}
|
{%if tc.qhelp%}<span class="glyphicon glyphicon-question-sign get-help" title="{{tc.qhelp}}"></span>{%endif%}
|
||||||
{%if tc.orderfield%}<a {%if tc.ordericon%} class="sorted" {%endif%}href="javascript:reload_params({'page': 1, 'orderby' : '{{tc.orderfield}}' })">{{tc.name}}</a>{%else%}<span class="muted">{{tc.name}}</span>{%endif%}
|
{%if tc.orderfield%}<a {%if tc.ordericon%} class="sorted" {%endif%}href="javascript:reload_params({'page': 1, 'orderby' : '{{tc.orderfield}}' })">{{tc.name}}</a>{%else%}<span class="text-muted">{{tc.name}}</span>{%endif%}
|
||||||
{%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%}
|
{%if tc.ordericon%} <span class="icon-caret-{{tc.ordericon}}"></span>{%endif%}
|
||||||
{% if request.GET.search and forloop.first %}
|
{% if request.GET.search and forloop.first %}
|
||||||
<span class="badge badge-info">{{objects.paginator.count}}</span>
|
<span class="badge badge-info">{{objects.paginator.count}}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -59,9 +59,6 @@
|
|||||||
function formatRow(o) {
|
function formatRow(o) {
|
||||||
/* setup tr-wide formatting */
|
/* setup tr-wide formatting */
|
||||||
var tr = '<tr class="';
|
var tr = '<tr class="';
|
||||||
if (o.link_to != null) {
|
|
||||||
tr += 'muted ';
|
|
||||||
}
|
|
||||||
if (o.isdir && o.childcount) {
|
if (o.isdir && o.childcount) {
|
||||||
tr += 'branch" data-tt-branch="true" ';
|
tr += 'branch" data-tt-branch="true" ';
|
||||||
}
|
}
|
||||||
@@ -75,7 +72,7 @@
|
|||||||
tr += '>';
|
tr += '>';
|
||||||
|
|
||||||
/* setup td specific formatting */
|
/* setup td specific formatting */
|
||||||
var link_to = td(o.link_to);
|
var link_to = '<td class="text-muted">' + o.link_to + '</td>';
|
||||||
var size = '<td class = "sizecol">' + o.size + '</td>'
|
var size = '<td class = "sizecol">' + o.size + '</td>'
|
||||||
var permission = td(o.permission);
|
var permission = td(o.permission);
|
||||||
var owner = td(o.owner);
|
var owner = td(o.owner);
|
||||||
@@ -96,7 +93,7 @@
|
|||||||
if (o.childcount) {
|
if (o.childcount) {
|
||||||
name += '<a href="">';
|
name += '<a href="">';
|
||||||
}
|
}
|
||||||
name += '<i class="icon-folder-close"></i>';
|
name += '<span class="glyphicon glyphicon-folder-close"></span>';
|
||||||
name += ' ' + o.name;
|
name += ' ' + o.name;
|
||||||
if (o.childcount) {
|
if (o.childcount) {
|
||||||
name += '</a>';
|
name += '</a>';
|
||||||
@@ -110,10 +107,10 @@
|
|||||||
namespan = 3;
|
namespan = 3;
|
||||||
}
|
}
|
||||||
var colspan = 'colspan="' + namespan + '"';
|
var colspan = 'colspan="' + namespan + '"';
|
||||||
name = '<td ' + colspan + '><i class="glyphicon glyphicon-file"></i>';
|
name = '<td ' + colspan + '><span class="glyphicon glyphicon-file"></span>';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
name = '<td><i class="icon-hand-right"></i>';
|
name = '<td class="text-muted"><span class="glyphicon glyphicon-hand-right"></span>';
|
||||||
}
|
}
|
||||||
name += ' ' + o.name;
|
name += ' ' + o.name;
|
||||||
name += '</td>';
|
name += '</td>';
|
||||||
@@ -134,10 +131,10 @@
|
|||||||
package += '</a>';
|
package += '</a>';
|
||||||
if (o.installed_package != o.package) {
|
if (o.installed_package != o.package) {
|
||||||
/* make class muted and add hover help */
|
/* make class muted and add hover help */
|
||||||
package += '<span class="muted"> as ' + o.installed_package + ' </span>';
|
package += '<span class="text-muted"> as ' + o.installed_package + ' </span>';
|
||||||
package += '<i class="icon-question-sign get-help hover-help" ';
|
package += '<span class="glyphicon glyphicon-question-sign get-help hover-help" ';
|
||||||
package += 'title="' + o.package + ' was renamed at packaging time and was installed in your image as ' + o.installed_package + '">';
|
package += 'title="' + o.package + ' was renamed at packaging time and was installed in your image as ' + o.installed_package + '">';
|
||||||
package += '</i>';
|
package += '</span>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
package = td(package);
|
package = td(package);
|
||||||
@@ -186,20 +183,20 @@
|
|||||||
|
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
|
|
||||||
<div class="page-header">
|
<div class="page-header build-data">
|
||||||
<h1> {{target.target}} </h1>
|
<h1> {{target.target}} </h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-tabs">
|
||||||
<li class="">
|
<li>
|
||||||
<a href="{% url 'target' build.id target.id %}">
|
<a href="{% url 'target' build.id target.id %}">
|
||||||
<i class="icon-question-sign get-help" title="Of all the packages built, the subset installed in the root file system of this image"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Of all the packages built, the subset installed in the root file system of this image"></span>
|
||||||
Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}})
|
Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<a href="{% url 'dirinfo' build.id target.id %}">
|
<a href="{% url 'dirinfo' build.id target.id %}">
|
||||||
<i class="icon-question-sign get-help" title="The directories and files in the root file system of this image"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The directories and files in the root file system of this image"></span>
|
||||||
Directory structure
|
Directory structure
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -6,59 +6,67 @@
|
|||||||
<div class="modal-dialog">
|
<div class="modal-dialog">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<form>
|
<form>
|
||||||
<input type="hidden" name="search" value="{%if request.GET.search %}{{request.GET.search}}{%endif%}"/>
|
<input type="hidden" name="search" value="{%if request.GET.search %}{{request.GET.search}}{%endif%}"/>
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
|
||||||
{% if search_term %}
|
{% if search_term %}
|
||||||
<h3>Filter {{total_count}} {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} matching '{{search_term}}' by '{{tc.name}}'</h3>
|
<h3>Filter {{total_count}} {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} matching '{{search_term}}' by '{{tc.name}}'</h3>
|
||||||
{% else %}
|
{% else %}
|
||||||
<h3>Filter {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} by '{{tc.name}}'</h3>
|
<h3>Filter {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} by '{{tc.name}}'</h3>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<p>{{f.label}}</p>
|
<p>{{f.label}}</p>
|
||||||
<label class="radio">
|
<div class="radio">
|
||||||
<input type="radio" name="filter" {%if request.GET.filter%}{{f.options|check_filter_status:request.GET.filter}} {%else%} checked {%endif%} value="" data-key="{{key}}"> All {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%}
|
<label>
|
||||||
</label>
|
<input type="radio" name="filter" {%if request.GET.filter%}{{f.options|check_filter_status:request.GET.filter}} {%else%} checked {%endif%} value="" data-key="{{key}}"> All {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%}
|
||||||
{% for option in f.options %}
|
</label>
|
||||||
{% if option.1 == 'daterange' %}
|
</div>
|
||||||
<div class="form-inline">
|
{% for option in f.options %}
|
||||||
<label class="radio">
|
<div class="radio">
|
||||||
<input type="radio" name="filter" id="filter_value_{{key}}" {%if key == daterange_selected %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
|
{% if option.1 == 'daterange' %}
|
||||||
{% else %}
|
<label>
|
||||||
{% if 1 %}
|
<input type="radio" name="filter" id="filter_value_{{key}}" {%if key == daterange_selected %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
|
||||||
<label class="radio">
|
{% else %}
|
||||||
<input type="radio" name="filter" {%if request.GET.filter == option.1 %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
|
{% if 1 %}
|
||||||
{% comment "do not disable radio selections by count for now" %}{% else %}
|
<label>
|
||||||
<label class="radio muted">
|
<input type="radio" name="filter" {%if request.GET.filter == option.1 %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
|
||||||
<input type="radio" name="filter" disabled {%if request.GET.filter == option.1 %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
|
{% comment "do not disable radio selections by count for now" %}{% else %}
|
||||||
{% endcomment %}{% endif %}
|
<label class="text-muted">
|
||||||
{% endif %}
|
<input type="radio" name="filter" disabled {%if request.GET.filter == option.1 %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
|
||||||
{% if option.3 %}<i class="icon-question-sign get-help" data-placement="right" title="{{option.3}}"></i>{% endif %}
|
{% endcomment %}{% endif %}
|
||||||
</label>
|
{% endif %}
|
||||||
{% if option.1 == 'daterange' %}
|
{% if option.3 %}<i class="icon-question-sign get-help" data-placement="right" title="{{option.3}}"></i>{% endif %}
|
||||||
<input type="text" id="date_from_{{key}}" name="date_from_{{key}}" disabled class="input-sm" /><label class="help-inline">to</label>
|
</label></div>
|
||||||
<input type="text" id="date_to_{{key}}" name="date_to_{{key}}" disabled class="input-sm" />
|
{% if option.1 == 'daterange' %}
|
||||||
<label class="help-inline get-help" >(dd/mm/yyyy)</label>
|
<input type="text" id="date_from_{{key}}" name="date_from_{{key}}" disabled class="input-sm" /><label class="help-inline">to</label>
|
||||||
</div>
|
<input type="text" id="date_to_{{key}}" name="date_to_{{key}}" disabled class="input-sm" />
|
||||||
{% endif %}
|
<label class="help-inline get-help" >(dd/mm/yyyy)</label>
|
||||||
{% endfor %}
|
</div>
|
||||||
<!-- daterange persistence -->
|
{% endif %}
|
||||||
{% if last_date_from and last_date_to %}
|
{% endfor %}
|
||||||
<input type="hidden" id="last_date_from_{{key}}" name="last_date_from" value="{{last_date_from}}"/>
|
<!-- daterange persistence -->
|
||||||
<input type="hidden" id="last_date_to_{{key}}" name="last_date_to" value="{{last_date_to}}"/>
|
{% if last_date_from and last_date_to %}
|
||||||
{% endif %}
|
<input type="hidden" id="last_date_from_{{key}}" name="last_date_from" value="{{last_date_from}}"/>
|
||||||
</div>
|
<input type="hidden" id="last_date_to_{{key}}" name="last_date_to" value="{{last_date_to}}"/>
|
||||||
<div class="modal-footer">
|
{% endif %}
|
||||||
<button type="submit" class="btn btn-primary" data-key="{{key}}">Apply</button>
|
</div>
|
||||||
{% if request.GET.filter %}
|
<div class="modal-footer">
|
||||||
{% if request.GET.filter|string_remove_regex:':.*' != f.options.0.1|string_remove_regex:':.*' %}
|
<div class="row">
|
||||||
<span class="help-inline pull-left">You can only apply one filter to the table. This filter will override the current filter.</span>
|
<div class="col-md-6">
|
||||||
{% endif %}
|
<button type="submit" class="btn btn-primary" data-key="{{key}}">Apply</button>
|
||||||
{% endif %}
|
</div>
|
||||||
</div>
|
<div class="col-md-6">
|
||||||
|
{% if request.GET.filter %}
|
||||||
|
{% if request.GET.filter|string_remove_regex:':.*' != f.options.0.1|string_remove_regex:':.*' %}
|
||||||
|
<p class="text-right text-muted">You can only apply one filter to the table. This filter will override the current filter.</p>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div><!-- /.modal-content -->
|
</div><!-- /.modal-content -->
|
||||||
</div><!-- /.modal-dialog -->
|
</div><!-- /.modal-dialog -->
|
||||||
</div> <!--/.modal -->
|
</div> <!--/.modal -->
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
|||||||
@@ -2,16 +2,16 @@
|
|||||||
{% load projecttags %}
|
{% load projecttags %}
|
||||||
|
|
||||||
{% block tabcontent %}
|
{% block tabcontent %}
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-tabs">
|
||||||
<li class="">
|
<li class="">
|
||||||
<a href="{% url 'package_built_detail' build.id package.id %}">
|
<a href="{% url 'package_built_detail' build.id package.id %}">
|
||||||
<i class="icon-question-sign get-help" title="Shows the files produced by this package."></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Shows the files produced by this package."></span>
|
||||||
Generated files ({{package.buildfilelist_package.count}})
|
Generated files ({{package.buildfilelist_package.count}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<a href="{% url 'package_built_dependencies' build.id package.id %}">
|
<a href="{% url 'package_built_dependencies' build.id package.id %}">
|
||||||
<i class="icon-question-sign get-help" title="Shows the runtime packages required by this package."></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Shows the runtime packages required by this package."></span>
|
||||||
Runtime dependencies ({{dependency_count}})
|
Runtime dependencies ({{dependency_count}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
<strong>{{package.fullpackagespec}}</strong> is <strong>not included</strong> in any image. This page shows you the projected runtime dependencies if you include <strong>{{package.fullpackagespec}}</strong> in future builds.
|
<strong>{{package.fullpackagespec}}</strong> is <strong>not included</strong> in any image. This page shows you the projected runtime dependencies if you were to include <strong>{{package.fullpackagespec}}</strong> in an image.
|
||||||
</div>
|
</div>
|
||||||
<table class="table table-bordered table-hover">
|
<table class="table table-bordered table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
<th>Version</th>
|
<th>Version</th>
|
||||||
<th class="sizecol col-md-2">Size</th>
|
<th class="sizecol col-md-2">Size</th>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></span>
|
||||||
Relationship type
|
Relationship type
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
<td class="sizecol">{{other_dep.size|filtered_filesizeformat}}</td>
|
<td class="sizecol">{{other_dep.size|filtered_filesizeformat}}</td>
|
||||||
<td>
|
<td>
|
||||||
{{other_dep.dep_type_display}}
|
{{other_dep.dep_type_display}}
|
||||||
<i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
|
<span class="glyphicon glyphicon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -6,13 +6,13 @@
|
|||||||
<!-- Generated Files -->
|
<!-- Generated Files -->
|
||||||
{% if package.buildtargetlist_package.count == 0 %}
|
{% if package.buildtargetlist_package.count == 0 %}
|
||||||
{# Not included case #}
|
{# Not included case #}
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-tabs">
|
||||||
<li class="active"> <a href="#">
|
<li class="active"> <a href="#">
|
||||||
<i class="icon-question-sign get-help" title="Files added to a root file system when you include {{package.name}} in an image"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Files added to a root file system when you include {{package.name}} in an image"></span>
|
||||||
Generated files ({{packageFileCount}})
|
Generated files ({{packageFileCount}})
|
||||||
</a></li>
|
</a></li>
|
||||||
<li class=""><a href="{% url 'package_built_dependencies' build.id package.id %}">
|
<li class=""><a href="{% url 'package_built_dependencies' build.id package.id %}">
|
||||||
<i class="icon-question-sign get-help" title="Projected runtime dependencies when you include {{package.name}} in an image"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Projected runtime dependencies when you include {{package.name}} in an image"></span>
|
||||||
Runtime dependencies ({{dependency_count}})
|
Runtime dependencies ({{dependency_count}})
|
||||||
</a></li>
|
</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<!-- Package file list or if empty, alert pane -->
|
<!-- Package file list or if empty, alert pane -->
|
||||||
{% if packageFileCount > 0 %}
|
{% if packageFileCount > 0 %}
|
||||||
<div class="alert alert-info">
|
<div class="alert alert-info">
|
||||||
<strong>{{package.fullpackagespec}}</strong> is <strong>not included</strong> in any image. This page shows you the files added to an image root file system if you include <strong>{{package.fullpackagespec}}</strong> in future builds.
|
<strong>{{package.fullpackagespec}}</strong> is <strong>not included</strong> in any image. This page shows you the files that would be added to an image root file system with <strong>{{package.fullpackagespec}}</strong> included in it.
|
||||||
</div>
|
</div>
|
||||||
{% include "tablesort.html" %}
|
{% include "tablesort.html" %}
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|||||||
@@ -14,8 +14,8 @@
|
|||||||
function fmtAliasHelp(package_name, alias, hover) {
|
function fmtAliasHelp(package_name, alias, hover) {
|
||||||
var r = null;
|
var r = null;
|
||||||
if (alias != null && alias != '') {
|
if (alias != null && alias != '') {
|
||||||
r = '<span class="muted"> as ' + alias + ' ';
|
r = '<span class="text-muted"> as ' + alias + ' ';
|
||||||
r += '<i class="icon-question-sign get-help';
|
r += '<span class="glyphicon glyphicon-question-sign get-help';
|
||||||
if (hover) {
|
if (hover) {
|
||||||
r+= ' hover-help';
|
r+= ' hover-help';
|
||||||
}
|
}
|
||||||
@@ -23,9 +23,9 @@
|
|||||||
r+= ' heading-help';
|
r+= ' heading-help';
|
||||||
}
|
}
|
||||||
r += '"';
|
r += '"';
|
||||||
title = package_name + ' was renamed at packaging time and was installed on your system as ' + alias;
|
title = '<code>' + package_name + '</code> was renamed at packaging time and was installed on your system as <code>' + alias + '</code>';
|
||||||
r += ' title="' + title + '">';
|
r += ' title="' + title + '">';
|
||||||
r += '</i>';
|
r += '</span>';
|
||||||
r += '</span>';
|
r += '</span>';
|
||||||
document.write(r);
|
document.write(r);
|
||||||
}
|
}
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
{% block pagedetailinfomain %}
|
{% block pagedetailinfomain %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="page-header">
|
<div class="page-header build-data">
|
||||||
{% block mainheading %}
|
{% block mainheading %}
|
||||||
<h1>{{package.fullpackagespec}}</h1>
|
<h1>{{package.fullpackagespec}}</h1>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
<dl class="item-info">
|
<dl class="item-info">
|
||||||
<dt>
|
<dt>
|
||||||
Size
|
Size
|
||||||
<i class="icon-question-sign get-help" title="The size of the package"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The size of the package"></span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{% comment %}
|
{% comment %}
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
|
|
||||||
<dt>
|
<dt>
|
||||||
License
|
License
|
||||||
<i class="icon-question-sign get-help" title="The license under which this package is distributed"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The license under which this package is distributed"></span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{package.license}}</dd>
|
<dd>{{package.license}}</dd>
|
||||||
|
|
||||||
@@ -101,7 +101,7 @@
|
|||||||
|
|
||||||
<dt>
|
<dt>
|
||||||
Recipe
|
Recipe
|
||||||
<i class="icon-question-sign get-help" title="The name of the recipe building this package"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The name of the recipe building this package"></span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{% if package.recipe_id > 0 %}
|
{% if package.recipe_id > 0 %}
|
||||||
@@ -113,13 +113,13 @@
|
|||||||
|
|
||||||
<dt>
|
<dt>
|
||||||
Recipe version
|
Recipe version
|
||||||
<i class="icon-question-sign get-help" title="The version of the recipe building this package"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The version of the recipe building this package"></span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{package.recipe.version}}</dd>
|
<dd>{{package.recipe.version}}</dd>
|
||||||
|
|
||||||
<dt>
|
<dt>
|
||||||
Layer
|
Layer
|
||||||
<i class="icon-question-sign get-help" title="The name of the layer providing the recipe that builds this package"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The name of the layer providing the recipe that builds this package"></span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{{package.recipe.layer_version.layer.name}}
|
{{package.recipe.layer_version.layer.name}}
|
||||||
@@ -136,13 +136,13 @@
|
|||||||
{% if package.recipe.layer_version.branch %}
|
{% if package.recipe.layer_version.branch %}
|
||||||
<dt>
|
<dt>
|
||||||
Layer branch
|
Layer branch
|
||||||
<i class="icon-question-sign get-help" title="The Git branch of the layer providing the recipe that builds this package"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The Git branch of the layer providing the recipe that builds this package"></span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{package.recipe.layer_version.branch}}</dd>
|
<dd>{{package.recipe.layer_version.branch}}</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<dt>
|
<dt>
|
||||||
Layer commit
|
Layer commit
|
||||||
<i class="icon-question-sign get-help" title="The Git commit of the layer providing the recipe that builds this package"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The Git commit of the layer providing the recipe that builds this package"></span>
|
||||||
</dt>
|
</dt>
|
||||||
|
|
||||||
<dd class="iscommit">{{package.recipe.layer_version.commit}}</dd>
|
<dd class="iscommit">{{package.recipe.layer_version.commit}}</dd>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for runtime_dep in runtime_deps %}
|
{% for runtime_dep in runtime_deps %}
|
||||||
<tr {{runtime_dep.size|format_vpackage_rowclass}} >
|
<tr {{runtime_dep.size|format_vpackage_rowclass}} >
|
||||||
{% if runtime_dep.size != -1 %}
|
{% if runtime_dep.size != -1 %}
|
||||||
<td>
|
<td>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<td>{{runtime_dep.version}} </td>
|
<td>{{runtime_dep.version}} </td>
|
||||||
<td class='sizecol'>{{runtime_dep.size|filtered_filesizeformat}} </td>
|
<td class='sizecol'>{{runtime_dep.size|filtered_filesizeformat}} </td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
{% else %}
|
{% else %}
|
||||||
@@ -59,13 +59,13 @@
|
|||||||
<th>Version</th>
|
<th>Version</th>
|
||||||
<th class='sizecol col-md-2'>Size</th>
|
<th class='sizecol col-md-2'>Size</th>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></span>
|
||||||
Relationship type
|
Relationship type
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{% for other_dep in other_deps %}
|
{% for other_dep in other_deps %}
|
||||||
{% if other_dep.installed %}
|
{% if other_dep.installed %}
|
||||||
<tr {{other_dep.size|format_vpackage_rowclass}}>
|
<tr {{other_dep.size|format_vpackage_rowclass}}>
|
||||||
{% if other_dep.size != -1 %}
|
{% if other_dep.size != -1 %}
|
||||||
@@ -86,21 +86,21 @@
|
|||||||
<td class='sizecol'>{{other_dep.size|filtered_filesizeformat}} </td>
|
<td class='sizecol'>{{other_dep.size|filtered_filesizeformat}} </td>
|
||||||
<td>
|
<td>
|
||||||
{{other_dep.dep_type_display}}
|
{{other_dep.dep_type_display}}
|
||||||
<i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
|
<span class="glyphicon glyphicon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% else %}
|
{% else %}
|
||||||
<tr class="muted">
|
<tr class="text-muted">
|
||||||
<td>{{other_dep.name}}</td>
|
<td>{{other_dep.name}}</td>
|
||||||
<td>{{other_dep.version}}</td>
|
<td>{{other_dep.version}}</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
<td>
|
<td>
|
||||||
{{other_dep.dep_type_display}}
|
{{other_dep.dep_type_display}}
|
||||||
<i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i>
|
<span class="glyphicon glyphicon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
{% endifnotequal %}
|
{% endifnotequal %}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
|
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-tabs">
|
||||||
{% if active_tab == "detail" %}
|
{% if active_tab == "detail" %}
|
||||||
<li class="active">
|
<li class="active">
|
||||||
{% else %}
|
{% else %}
|
||||||
<li class="">
|
<li class="">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url 'package_included_detail' build.id target.id package.id %}">
|
<a href="{% url 'package_included_detail' build.id target.id package.id %}">
|
||||||
<i class="icon-question-sign get-help" title="The files this package adds to the image root file system"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The files this package adds to the image root file system"></span>
|
||||||
Files in root file system ({{packageFileCount}})
|
Files in root file system ({{packageFileCount}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
<li class="">
|
<li class="">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url 'package_included_dependencies' build.id target.id package.id %}">
|
<a href="{% url 'package_included_dependencies' build.id target.id package.id %}">
|
||||||
<i class="icon-question-sign get-help" title="Package runtime dependencies"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Package runtime dependencies"></span>
|
||||||
Runtime dependencies ({{dependency_count}})
|
Runtime dependencies ({{dependency_count}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
<li class="">
|
<li class="">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url 'package_included_reverse_dependencies' build.id target.id package.id %}">
|
<a href="{% url 'package_included_reverse_dependencies' build.id target.id package.id %}">
|
||||||
<i class="icon-question-sign get-help" title="The package runtime reverse dependencies (i.e. the packages in this image that depend on this package). Reverse dependencies reflect only the 'depends' dependency type"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The package runtime reverse dependencies (i.e. the packages in this image that depend on this package). Reverse dependencies reflect only the 'depends' dependency type"></span>
|
||||||
Reverse runtime dependencies ({{reverse_count}})
|
Reverse runtime dependencies ({{reverse_count}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="page-header">
|
<div class="page-header build-data">
|
||||||
<h1>{{object.name}}_{{object.version}}</h1>
|
<h1>{{object.name}}_{{object.version}}</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -22,28 +22,33 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-8 tabbable">
|
<div class="col-md-8 tabbable">
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-tabs">
|
||||||
<li class="{{tab_states.1}}">
|
<li class="{{tab_states.1}}">
|
||||||
<a href="#information" data-toggle="tab">
|
<a href="#information" data-toggle="tab">
|
||||||
<i class="icon-question-sign get-help" title="Build-related information about the recipe"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Build-related
|
||||||
|
information about the recipe"></span>
|
||||||
Recipe details
|
Recipe details
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url "recipe_packages" build.pk object.id %}">
|
<a href="{% url "recipe_packages" build.pk object.id %}">
|
||||||
<i class="icon-question-sign get-help" title="The packaged output resulting from building the recipe"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The packaged
|
||||||
|
output resulting from building the recipe"></span>
|
||||||
Packages ({{package_count}})
|
Packages ({{package_count}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="{{tab_states.3}}">
|
<li class="{{tab_states.3}}">
|
||||||
<a href="#dependencies" data-toggle="tab">
|
<a href="#dependencies" data-toggle="tab">
|
||||||
<i class="icon-question-sign get-help" title="The recipe build-time dependencies (i.e. other recipes)"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The recipe
|
||||||
|
build-time dependencies (i.e. other recipes)"></span>
|
||||||
Build dependencies ({{object.r_dependencies_recipe.all.count}})
|
Build dependencies ({{object.r_dependencies_recipe.all.count}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="{{tab_states.4}}">
|
<li class="{{tab_states.4}}">
|
||||||
<a href="#brought-in-by" data-toggle="tab">
|
<a href="#brought-in-by" data-toggle="tab">
|
||||||
<i class="icon-question-sign get-help" title="The recipe build-time reverse dependencies (i.e. the recipes that depend on this recipe)"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The recipe
|
||||||
|
build-time reverse dependencies (i.e. the recipes that
|
||||||
|
depend on this recipe)"></span>
|
||||||
Reverse build dependencies ({{object.r_dependencies_depends.all.count}})
|
Reverse build dependencies ({{object.r_dependencies_depends.all.count}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -52,34 +57,39 @@
|
|||||||
<div class="tab-pane {{tab_states.1}}" id="information">
|
<div class="tab-pane {{tab_states.1}}" id="information">
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="The name of the layer providing the recipe"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The name of
|
||||||
|
the layer providing the recipe"></span>
|
||||||
Layer
|
Layer
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{layer.name}}</dd>
|
<dd>{{layer.name}}</dd>
|
||||||
|
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="Path to the recipe .bb file"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Path to the
|
||||||
|
recipe .bb file"></span>
|
||||||
Recipe file
|
Recipe file
|
||||||
</dt>
|
</dt>
|
||||||
<dd><code>{{object.file_path}} {% if object.pathflags %}<i>({{object.pathflags}})</i>{% endif %}</code></dd>
|
<dd><code>{{object.file_path}} {% if object.pathflags %}<i>({{object.pathflags}})</i>{% endif %}</code></dd>
|
||||||
{% if layer_version.branch %}
|
{% if layer_version.branch %}
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="The Git branch of the layer providing the recipe"></i>
|
<span class="glyphicon glyphicon-question-sign get-help"
|
||||||
|
title="The Git branch of the layer providing the
|
||||||
|
recipe"></span>
|
||||||
Layer branch
|
Layer branch
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{layer_version.branch}}</dd>
|
<dd>{{layer_version.branch}}</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="The Git commit of the layer providing the recipe"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The Git
|
||||||
|
commit of the layer providing the recipe"></span>
|
||||||
Layer commit
|
Layer commit
|
||||||
</dt>
|
</dt>
|
||||||
<dd class="iscommit">{{layer_version.commit}}</dd>
|
<dd class="iscommit">{{layer_version.commit}}</dd>
|
||||||
{% if object.provides_set.all %}
|
{% if object.provides_set.all %}
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help"
|
<span class="glyphicon glyphicon-question-sign get-help"
|
||||||
title="A list of aliases by which a particular recipe can be known. The additional aliases are
|
title="A list of aliases by which a particular recipe can be known. The additional aliases are
|
||||||
synonyms for the recipe and can be useful satisfying dependencies of other recipes during
|
synonyms for the recipe and can be useful satisfying dependencies of other recipes during
|
||||||
the build"></i>
|
the build"></span>
|
||||||
PROVIDES
|
PROVIDES
|
||||||
</dt>
|
</dt>
|
||||||
<dd><code>{% for provider in object.provides_set.all %}{{ provider.name }} {% endfor %}</code></dd>
|
<dd><code>{% for provider in object.provides_set.all %}{{ provider.name }} {% endfor %}</code></dd>
|
||||||
@@ -92,30 +102,45 @@
|
|||||||
<strong>{{object.name}}_{{object.version}}</strong> does not have any tasks in this build.
|
<strong>{{object.name}}_{{object.version}}</strong> does not have any tasks in this build.
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
<div class="table-responsive">
|
||||||
<table class="table table-bordered table-hover">
|
<table class="table table-bordered table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="The running sequence of each task in the build"></i>
|
<span class="glyphicon glyphicon-question-sign
|
||||||
|
get-help" title="The running sequence of each task
|
||||||
|
in the build"></span>
|
||||||
Order
|
Order
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="The name of the task"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The name
|
||||||
|
of the task"></span>
|
||||||
Task
|
Task
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="This value tells you if a task had to run (executed) in order to generate the task output, or if the output was provided by another task and therefore the task didn't need to run (not executed)"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="This
|
||||||
|
value tells you if a task had to run (executed) in
|
||||||
|
order to generate the task output, or if the output was
|
||||||
|
provided by another task and therefore the task didn't need
|
||||||
|
to run (not executed)"></span>
|
||||||
Executed
|
Executed
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="This column tells you if 'executed' tasks succeeded or failed. The column also tells you why 'not executed' tasks did not need to run"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="This
|
||||||
|
column tells you if 'executed' tasks succeeded or
|
||||||
|
failed. The column also tells you why 'not executed'
|
||||||
|
tasks did not need to run"></span>
|
||||||
Outcome
|
Outcome
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="This column tells you if a task tried to restore output from the <code>sstate-cache</code> directory or mirrors, and reports the result: Succeeded, Failed or File not in cache"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="This
|
||||||
|
column tells you if a task tried to restore output
|
||||||
|
from the <code>sstate-cache</code> directory or
|
||||||
|
mirrors, and reports the result: Succeeded, Failed or File
|
||||||
|
not in cache"></span>
|
||||||
Cache attempt
|
Cache attempt
|
||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|
||||||
@@ -123,26 +148,30 @@
|
|||||||
|
|
||||||
<tr {{ task|task_color }} >
|
<tr {{ task|task_color }} >
|
||||||
|
|
||||||
<td><a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.order}}</a></td>
|
<td>{{task.order}}</td>
|
||||||
<td>
|
<td>
|
||||||
<a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.task_name}}</a>
|
<a href="{% url "task" build.pk task.pk %}">{{task.task_name}}</a>
|
||||||
{% if task.get_description %}<i class="icon-question-sign get-help hover-help" title="" data-original-title="{{task.get_description}}"></i> {% endif %}
|
{% if task.get_description %}<span class="glyphicon
|
||||||
|
glyphicon-question-sign get-help hover-help"
|
||||||
|
title="{{task.get_description}}"></span>
|
||||||
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td><a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_executed_display}}</a></td>
|
<td>{{task.get_executed_display}}</td>
|
||||||
|
|
||||||
<td>
|
<td>{{task.get_outcome_display}}
|
||||||
<a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_outcome_display}} </a>
|
|
||||||
{% if task.outcome = task.OUTCOME_FAILED %}
|
{% if task.outcome = task.OUTCOME_FAILED %}
|
||||||
<a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}">
|
<a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}">
|
||||||
<i class="icon-download-alt" title="Download task log file"></i>
|
<span class="glyphicon glyphicon-download-alt
|
||||||
|
get-help" title="Download task log
|
||||||
|
file"></span>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<i class="icon-question-sign get-help hover-help" title="{{task.get_outcome_help}}"></i>
|
<i class="icon-question-sign get-help hover-help" title="{{task.get_outcome_help}}"></i>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{% ifnotequal task.sstate_result task.SSTATE_NA %}
|
{% ifnotequal task.sstate_result task.SSTATE_NA %}
|
||||||
<a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_sstate_result_display}}</a>
|
{{task.get_sstate_result_display}}
|
||||||
{% endifnotequal %}
|
{% endifnotequal %}
|
||||||
</td>
|
</td>
|
||||||
|
|
||||||
@@ -151,6 +180,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<div class="tab-pane {{tab_states.3}}" id="dependencies">
|
<div class="tab-pane {{tab_states.3}}" id="dependencies">
|
||||||
@@ -177,13 +207,13 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url "recipe" build.pk rr.depends_on.pk %}">{{rr.depends_on.name}}</a>
|
<td><a href="{% url "recipe" build.pk rr.depends_on.pk %}">{{rr.depends_on.name}}</a>
|
||||||
{% if rr.via %}
|
{% if rr.via %}
|
||||||
<span class="muted">satisfied via {{rr.via.name}}</span>
|
<span class="text-muted">satisfied via <code class="text-muted">{{rr.via.name}}</code></span>
|
||||||
<i class="icon-question-sign get-help hover-help"
|
<span class="glyphicon glyphicon-question-sign get-help hover-help"
|
||||||
title="This dependency is satisfied by the PROVIDES value
|
title="This dependency is satisfied by the PROVIDES value
|
||||||
{{rr.via.name}} in the {{rr.depends_on.name}} recipe"></i>
|
<code>{{rr.via.name}}</code> in the <code>{{rr.depends_on.name}}</code> recipe"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td><a href="{% url "recipe" build.pk rr.depends_on.pk %}">{{rr.depends_on.version}}</a></td>
|
<td>{{rr.depends_on.version}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
@@ -216,13 +246,13 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url "recipe" build.pk rr.recipe.pk %}">{{rr.recipe.name}}</a>
|
<td><a href="{% url "recipe" build.pk rr.recipe.pk %}">{{rr.recipe.name}}</a>
|
||||||
{% if rr.via %}
|
{% if rr.via %}
|
||||||
<span class="muted"> satisfied via {{rr.via.name}}</span>
|
<span class="text-muted"> satisfied via <code class="text-muted">{{rr.via.name}}</code></span>
|
||||||
<i class="icon-question-sign get-help hover-help"
|
<span class="glyphicon glyphicon-question-sign get-help hover-help"
|
||||||
title="This dependency is satisfied by the PROVIDES value
|
title="This dependency is satisfied by the PROVIDES value
|
||||||
{{rr.via.name}} in the {{rr.depends_on.name}} recipe"></i>
|
<code>{{rr.via.name}}</code> in the <code>{{rr.depends_on.name}}</code> recipe"></i>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td><a href="{% url "recipe" build.pk rr.recipe.pk %}">{{rr.recipe.version}}</a></td>
|
<td>{{rr.recipe.version}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
@@ -257,7 +287,7 @@
|
|||||||
{% if object.section %}
|
{% if object.section %}
|
||||||
<dt>
|
<dt>
|
||||||
Section
|
Section
|
||||||
<i class="icon-question-sign get-help" title="The section in which recipes should be categorized"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The section in which recipes should be categorized"></span>
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{object.section}}</dd>
|
<dd>{{object.section}}</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="page-header">
|
<div class="page-header build-data">
|
||||||
<h1>{{recipe.name}}_{{recipe.version}}</h1>
|
<h1>{{recipe.name}}_{{recipe.version}}</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -21,28 +21,33 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-8 tabbable">
|
<div class="col-md-8 tabbable">
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-tabs">
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url "recipe" build.pk recipe.id "1" %}">
|
<a href="{% url "recipe" build.pk recipe.id "1" %}">
|
||||||
<i class="icon-question-sign get-help" title="Build-related information about the recipe"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Build-related
|
||||||
|
information about the recipe"></span>
|
||||||
Recipe details
|
Recipe details
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<a href="#packages-built" data-toggle="tab">
|
<a href="#packages-built" data-toggle="tab">
|
||||||
<i class="icon-question-sign get-help" title="The packaged output resulting from building the recipe"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The packaged
|
||||||
|
output resulting from building the recipe"></span>
|
||||||
Packages ({{object_count}})
|
Packages ({{object_count}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url "recipe" build.pk recipe.id "3" %}">
|
<a href="{% url "recipe" build.pk recipe.id "3" %}">
|
||||||
<i class="icon-question-sign get-help" title="The recipe build-time dependencies (i.e. other recipes)"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The recipe
|
||||||
|
build-time dependencies (i.e. other recipes)"></span>
|
||||||
Build dependencies ({{recipe.r_dependencies_recipe.all.count}})
|
Build dependencies ({{recipe.r_dependencies_recipe.all.count}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url "recipe" build.pk recipe.id "4" %}">
|
<a href="{% url "recipe" build.pk recipe.id "4" %}">
|
||||||
<i class="icon-question-sign get-help" title="The recipe build-time reverse dependencies (i.e. the recipes that depend on this recipe)"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The recipe
|
||||||
|
build-time reverse dependencies (i.e. the recipes that
|
||||||
|
depend on this recipe)"></span>
|
||||||
Reverse build dependencies ({{recipe.r_dependencies_depends.all.count}})
|
Reverse build dependencies ({{recipe.r_dependencies_depends.all.count}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -75,8 +80,8 @@
|
|||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.name}}</a></td>
|
<td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.name}}</a></td>
|
||||||
<td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.version}}_{{package.revision}}</a></td>
|
<td>{{package.version}}_{{package.revision}}</td>
|
||||||
<td class="sizecol"><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.size|filtered_filesizeformat}}</a></td>
|
<td class="sizecol">{{package.size|filtered_filesizeformat}}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -118,7 +118,7 @@
|
|||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<div class="well">
|
<div class="well">
|
||||||
<h2>About {{recipe.name}}</h2>
|
<h2>About {{recipe.name}}</h2>
|
||||||
<dl>
|
<dl class="item-info">
|
||||||
<dt>
|
<dt>
|
||||||
Approx. packages included
|
Approx. packages included
|
||||||
<span class="glyphicon glyphicon-question-sign get-help" title="The number of packages included is based on information from previous builds and from parsing layers, so we can never be sure it is 100% accurate"></span>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The number of packages included is based on information from previous builds and from parsing layers, so we can never be sure it is 100% accurate"></span>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{% load projecttags %}
|
{% load projecttags %}
|
||||||
{% if vcs_ref|is_shaid %}
|
{% if vcs_ref|is_shaid %}
|
||||||
<a class="btn" data-content="<ul class='unstyled'> <li>{{vcs_ref}}</li> </ul>">
|
<a class="btn btn-default" data-content="{{vcs_ref}}">
|
||||||
{{vcs_ref|truncatechars:10}}
|
{{vcs_ref|truncatechars:10}}
|
||||||
</a>
|
</a>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{% with count_package=package_deps.packages|length %}
|
{% with count_package=package_deps.packages|length %}
|
||||||
|
|
||||||
{% if count_package > 0 %}
|
{% if count_package > 0 %}
|
||||||
<a data-content='<ul class="unstyled">
|
<a data-content='<ul class="list-unstyled">
|
||||||
{% for dep in package_deps.packages %}
|
{% for dep in package_deps.packages %}
|
||||||
<li>
|
<li>
|
||||||
{% if extra.add_links %}
|
{% if extra.add_links %}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{% with count_package=package_deps.packages|length %}
|
{% with count_package=package_deps.packages|length %}
|
||||||
|
|
||||||
{% if count_package > 0 %}
|
{% if count_package > 0 %}
|
||||||
<a data-content='<ul class="unstyled">
|
<a data-content='<ul class="list-unstyled">
|
||||||
{% for dep in package_deps.packages|dictsort:"package.name" %}
|
{% for dep in package_deps.packages|dictsort:"package.name" %}
|
||||||
<li>
|
<li>
|
||||||
{% if extra.add_links %}
|
{% if extra.add_links %}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
{% block buildinfomain %}
|
{% block buildinfomain %}
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
<div class="page-header">
|
<div class="page-header build-data">
|
||||||
<h1>
|
<h1>
|
||||||
{% if request.GET.search and objects.paginator.count > 0 %}
|
{% if request.GET.search and objects.paginator.count > 0 %}
|
||||||
{{objects.paginator.count}} package{{objects.paginator.count|pluralize}} found
|
{{objects.paginator.count}} package{{objects.paginator.count|pluralize}} found
|
||||||
@@ -30,16 +30,16 @@
|
|||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
<div id="navTab">
|
<div id="navTab">
|
||||||
<ul class="nav nav-pills">
|
<ul class="nav nav-tabs">
|
||||||
<li class="active">
|
<li class="active">
|
||||||
<a href="#target">
|
<a href="#target">
|
||||||
<i class="icon-question-sign get-help" title="Of all the packages built, the subset installed in the root file system of this image"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Of all the packages built, the subset installed in the root file system of this image"></span>
|
||||||
Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}})
|
Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}})
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="{% url 'dirinfo' build.id target.id %}">
|
<a href="{% url 'dirinfo' build.id target.id %}">
|
||||||
<i class="icon-question-sign get-help" title="The directories and files in the root file system of this image"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The directories and files in the root file system of this image"></span>
|
||||||
Directory structure
|
Directory structure
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -51,6 +51,6 @@
|
|||||||
{% include "toastertable.html" %}
|
{% include "toastertable.html" %}
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
</div> <!-- tabpane -->
|
</div> <!-- tabpane -->
|
||||||
</div> <!--navTab -->>
|
</div> <!--navTab -->
|
||||||
<!-- col-md-10 -->
|
<!-- col-md-10 -->
|
||||||
{% endblock buildinfomain %}
|
{% endblock buildinfomain %}
|
||||||
|
|||||||
@@ -13,19 +13,20 @@
|
|||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<div class="page-header">
|
<div class="page-header build-data">
|
||||||
<h1><a href="{%url 'recipe' build.pk task.recipe.pk %}">{{task.recipe.name}}_{{task.recipe.version}}</a> {{task.task_name}}</h1>
|
<h1><a href="{%url 'recipe' build.pk task.recipe.pk %}">{{task.recipe.name}}_{{task.recipe.version}}</a> {{task.task_name}}</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{# Outcome section #}
|
{# Outcome section #}
|
||||||
<h2 {{ task|task_color:True }}>
|
<h2 {{ task|task_color:True }}>
|
||||||
{{task.get_outcome_display}}
|
{{task.get_outcome_display}}
|
||||||
<i class="icon-question-sign get-help heading-help" title="{{task.get_outcome_help}}"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="{{task.get_outcome_help}}"></i>
|
||||||
</h2>
|
</h2>
|
||||||
{%if task.task_executed %}
|
{%if task.task_executed %}
|
||||||
{# executed tasks outcome #}
|
{# executed tasks outcome #}
|
||||||
{% if task.logfile %}
|
{% if task.logfile %}
|
||||||
<a class="btn btn-lg" href="{% url 'build_artifact' build.id "tasklogfile" task.pk %}" style="margin:15px;">Download task log</a>
|
<a class="btn btn-default btn-lg" href="{% url 'build_artifact' build.id
|
||||||
|
"tasklogfile" task.pk %}">Download task log</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{# show stack trace for failed task #}
|
{# show stack trace for failed task #}
|
||||||
{% if task.outcome == task.OUTCOME_FAILED and log_head %}
|
{% if task.outcome == task.OUTCOME_FAILED and log_head %}
|
||||||
@@ -41,31 +42,55 @@
|
|||||||
{# not executed tasks outcome #}
|
{# not executed tasks outcome #}
|
||||||
{% if task.outcome == task.OUTCOME_PREBUILT %}
|
{% if task.outcome == task.OUTCOME_PREBUILT %}
|
||||||
{% if not showing_matches %}
|
{% if not showing_matches %}
|
||||||
<a class="btn" href="javascript:reload_params({'show_matches' : 'true' })">Match to tasks in previous builds <i class="icon-question-sign get-help" style="margin-top:20px;" title="This shows you a list of tasks from previous builds with the same signature generated from the same inputs as used in the prebuilt task. Any of them could be the task that generated the output this prebuilt task is reusing"></i></a>
|
<a class="btn btn-default"
|
||||||
|
href="javascript:reload_params({'show_matches' : 'true'
|
||||||
|
})">Match to tasks in previous builds <span class="glyphicon
|
||||||
|
glyphicon-question-sign get-help" title="This shows you a list of tasks from
|
||||||
|
previous builds with the same signature generated from the same inputs as used
|
||||||
|
in the prebuilt task. Any of them could be the task that generated the output
|
||||||
|
this prebuilt task is reusing"></span></a>
|
||||||
{% elif matching_tasks %}
|
{% elif matching_tasks %}
|
||||||
<h3 class="details">Prebuilt task could be based on
|
<h3 class="details">Prebuilt task could be based on
|
||||||
<i class="icon-question-sign get-help heading-help" title="This table shows a list of tasks from previous builds with the same signature generated from the same inputs as used in the prebuilt task. Any of them could be the task that generated the output this prebuilt task is reusing"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="This
|
||||||
|
table shows a list of tasks from previous builds with the
|
||||||
|
same signature generated from the same inputs as used in the
|
||||||
|
prebuilt task. Any of them could be the task that generated the
|
||||||
|
output this prebuilt task is reusing"></span>
|
||||||
</h3>
|
</h3>
|
||||||
|
<div class="table-responsive">
|
||||||
<table class="table table-bordered table-hover">
|
<table class="table table-bordered table-hover">
|
||||||
<thead>
|
<thead>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="The name of the recipe to which each task applies"></i>
|
<span class="glyphicon glyphicon-question-sign
|
||||||
|
get-help" title="The name of the recipe to which
|
||||||
|
each task applies"></span>
|
||||||
Recipe
|
Recipe
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="The name of the task"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The name
|
||||||
|
of the task"></span>
|
||||||
Task
|
Task
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="This value tells you if a task had to run (executed) in order to generate the task output, or if the output was provided by another task and therefore the task didn't need to run (not executed)"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="This
|
||||||
|
value tells you if a task had to run (executed) in
|
||||||
|
order to generate the task output, or if the output was
|
||||||
|
provided by another task and therefore the task didn't need
|
||||||
|
to run (not executed)"></span>
|
||||||
Executed
|
Executed
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="This column tells you if 'executed' tasks succeeded or failed. The column also tells you why 'not executed' tasks did not need to run"></i>
|
<span class="glyphicon glyphicon-question-sign
|
||||||
|
get-help" title="This column tells you if
|
||||||
|
'executed' tasks succeeded or failed. The column also
|
||||||
|
tells you why 'not executed' tasks did not need to
|
||||||
|
run"></span>
|
||||||
Outcome
|
Outcome
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
<i class="icon-question-sign get-help" title="The date and time the build finished"></i>
|
<span class="glyphicon glyphicon-question-sign
|
||||||
|
get-help" title="The date and time the build
|
||||||
|
finished"></span>
|
||||||
Build completed on
|
Build completed on
|
||||||
</th>
|
</th>
|
||||||
</thead>
|
</thead>
|
||||||
@@ -73,27 +98,34 @@
|
|||||||
{% for match in matching_tasks %}
|
{% for match in matching_tasks %}
|
||||||
<tr {{ match|task_color }}>
|
<tr {{ match|task_color }}>
|
||||||
<td>
|
<td>
|
||||||
<a href="{%url "task" match.build.pk match.pk%}">{{match.recipe.name}}</a>
|
{{match.recipe.name}}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{%url "task" match.build.pk match.pk%}">{{match.task_name}}</a>
|
<a href="{%url "task" match.build.pk match.pk%}">{{match.task_name}}</a>
|
||||||
{% if task.get_description %}
|
{% if task.get_description %}
|
||||||
<i class="icon-question-sign get-help hover-help" title="{{task.get_description}}"></i>
|
<span class="glyphicon
|
||||||
|
glyphicon-question-sign get-help
|
||||||
|
hover-help"
|
||||||
|
title="{{task.get_description}}"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{%url "task" match.build.pk match.pk%}">{{match.get_executed_display}}</a>
|
{{match.get_executed_display}}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{%url "task" match.build.pk match.pk%}">{{match.get_outcome_display}} </a><i class="icon-question-sign get-help hover-help" title="{{match.get_outcome_help}}"></i>
|
{{match.get_outcome_display}}
|
||||||
|
<span class="glyphicon glyphicon-question-sign
|
||||||
|
get-help hover-help"
|
||||||
|
title="{{match.get_outcome_help}}"></span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="{%url "task" match.build.pk match.pk%}">{{match.build.completed_on|date:"d/m/y H:i"}}</a>
|
{{match.build.completed_on|date:"d/m/y H:i"}}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<p class="alert">
|
<p class="alert">
|
||||||
<strong> We have found no tasks matching this prebuilt task</strong><br/>
|
<strong> We have found no tasks matching this prebuilt task</strong><br/>
|
||||||
@@ -103,10 +135,11 @@
|
|||||||
{% elif task.outcome == task.OUTCOME_COVERED %}
|
{% elif task.outcome == task.OUTCOME_COVERED %}
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="The task(s) providing the outcome of this task"></i> Task covered by
|
<span class="glyphicon glyphicon-question-sign get-help" title="The task(s)
|
||||||
|
providing the outcome of this task"></span> Task covered by
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
<ul>
|
<ul class="list-unstyled">
|
||||||
{% for t in covered_by %}
|
{% for t in covered_by %}
|
||||||
<li>
|
<li>
|
||||||
<a href="{%url 'task' t.build.pk t.pk%}"
|
<a href="{%url 'task' t.build.pk t.pk%}"
|
||||||
@@ -123,7 +156,8 @@
|
|||||||
{%elif task.outcome == task.OUTCOME_CACHED%}
|
{%elif task.outcome == task.OUTCOME_CACHED%}
|
||||||
{% for t in task.get_related_setscene %}
|
{% for t in task.get_related_setscene %}
|
||||||
{% if forloop.last %}
|
{% if forloop.last %}
|
||||||
<a class="btn btn-lg" href="{% url 'build_artifact' build.id "tasklogfile" t.pk %}" style="margin:15px;">Download task log</a>
|
<a class="btn btn-default btn-lg" href="{% url
|
||||||
|
'build_artifact' build.id "tasklogfile" t.pk %}">Download task log</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
@@ -138,17 +172,25 @@
|
|||||||
{% if task.task_executed %}
|
{% if task.task_executed %}
|
||||||
<h2>
|
<h2>
|
||||||
Executed
|
Executed
|
||||||
<i class="icon-question-sign get-help heading-help" title="'Executed' tasks are those that need to run in order to generate the task output"></i>
|
<span class="glyphicon glyphicon-question-sign get-help"
|
||||||
|
title="'Executed' tasks are those that need to run in order to
|
||||||
|
generate the task output"></span>
|
||||||
{% else %}
|
{% else %}
|
||||||
<h2 class="muted">
|
<h2>
|
||||||
Not Executed
|
Not Executed
|
||||||
<i class="icon-question-sign get-help heading-help" title="'Not executed' tasks don't need to run because their outcome is provided by another task"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="'Not
|
||||||
|
executed' tasks don't need to run because their outcome is provided
|
||||||
|
by another task"></span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="To make builds more efficient, the build system detects changes in the 'inputs' to a given task by creating a 'task signature'. If the signature changes, the build system assumes the inputs have changed and the task needs to be rerun"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="To make builds more
|
||||||
|
efficient, the build system detects changes in the 'inputs' to a
|
||||||
|
given task by creating a 'task signature'. If the signature changes,
|
||||||
|
the build system assumes the inputs have changed and the task needs to be
|
||||||
|
rerun"></span>
|
||||||
Task inputs signature
|
Task inputs signature
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
@@ -157,19 +199,29 @@
|
|||||||
{% if task.sstate_result != task.SSTATE_NA %}
|
{% if task.sstate_result != task.SSTATE_NA %}
|
||||||
</dl>
|
</dl>
|
||||||
<div class="alert alert-info">Attempting to restore output from sstate cache
|
<div class="alert alert-info">Attempting to restore output from sstate cache
|
||||||
<i class="icon-question-sign get-help get-help-blue" title="The build system is searching for the task output in your <code>sstate-cache</code> directory and mirrors. If the build system finds the task output, it will reuse it instead of building it from scratch by running the real task. Reusing the task output makes the build faster"></i>
|
<span class="glyphicon glyphicon-question-sign get-help
|
||||||
|
get-help-blue" title="The build system is searching for the
|
||||||
|
task output in your <code>sstate-cache</code> directory and
|
||||||
|
mirrors. If the build system finds the task output, it will reuse it
|
||||||
|
instead of building it from scratch by running the real task. Reusing the
|
||||||
|
task output makes the build faster"></span>
|
||||||
</div>
|
</div>
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="The name of the file searched for in your <code>sstate-cache</code> directory and mirrors"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The name of the
|
||||||
|
file searched for in your <code>sstate-cache</code>
|
||||||
|
directory and mirrors"></span>
|
||||||
File searched for
|
File searched for
|
||||||
</dt>
|
</dt>
|
||||||
<dd><code>{{task.path_to_sstate_obj}}</code></dd>
|
<dd><code>{{task.path_to_sstate_obj}}</code></dd>
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="The locations searched for the above file (i.e. your <code>sstate-cache</code> directory and any mirrors you have set up)"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The locations
|
||||||
|
searched for the above file (i.e. your
|
||||||
|
<code>sstate-cache</code> directory and any mirrors you have
|
||||||
|
set up)"></span>
|
||||||
URI(s) searched
|
URI(s) searched
|
||||||
</dt>
|
</dt>
|
||||||
<dd><ul>{% for uri in uri_list %}<li><code>{{uri}}</code></li>{% endfor %}</ul></dd>
|
<dd><ul class="list-unstyled">{% for uri in uri_list %}<li><code>{{uri}}</code></li>{% endfor %}</ul></dd>
|
||||||
</dl>
|
</dl>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if task.sstate_result == task.SSTATE_MISS %}
|
{% if task.sstate_result == task.SSTATE_MISS %}
|
||||||
@@ -177,7 +229,7 @@
|
|||||||
<strong>File not in sstate cache.</strong> Running the real task instead.
|
<strong>File not in sstate cache.</strong> Running the real task instead.
|
||||||
</div>
|
</div>
|
||||||
{% elif task.sstate_result == task.SSTATE_FAILED%}
|
{% elif task.sstate_result == task.SSTATE_FAILED%}
|
||||||
<div class="alert">
|
<div class="alert alert-warning">
|
||||||
<strong>Failed</strong> to restore output from sstate cache. The file was found but could not be unpacked.
|
<strong>Failed</strong> to restore output from sstate cache. The file was found but could not be unpacked.
|
||||||
</div>
|
</div>
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
@@ -193,13 +245,16 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="The running sequence of each task in the build"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="The
|
||||||
|
running sequence of each task in the build"></span>
|
||||||
Task order
|
Task order
|
||||||
</dt>
|
</dt>
|
||||||
<dd><a href="{%url "tasks" build.pk %}?page={{task_in_tasks_table_pg}}&limit=25#task-{{task.order}}">{{task.order}}</a></dd>
|
<dd><a href="{%url "tasks" build.pk %}?page={{task_in_tasks_table_pg}}&limit=25#task-{{task.order}}">{{task.order}}</a></dd>
|
||||||
{% if task.task_executed %}
|
{% if task.task_executed %}
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="Indicates if this task executes a Python or Shell function(s)"></i>
|
<span class="glyphicon glyphicon-question-sign get-help"
|
||||||
|
title="Indicates if this task executes a Python or Shell
|
||||||
|
function(s)"></span>
|
||||||
Task script type
|
Task script type
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{task.get_script_type_display}}</dd>
|
<dd>{{task.get_script_type_display}}</dd>
|
||||||
@@ -212,29 +267,31 @@
|
|||||||
<dd><code>{{task.source_url}}</code></dd>
|
<dd><code>{{task.source_url}}</code></dd>
|
||||||
-->
|
-->
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="Task dependency chain (i.e. other tasks)"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Task dependency chain
|
||||||
|
(i.e. other tasks)"></span>
|
||||||
Dependencies
|
Dependencies
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
<ul>
|
<ul class="list-unstyled">
|
||||||
{% for dep in deps %}
|
{% for dep in deps %}
|
||||||
<li><a href="{%url 'task' dep.build.pk dep.pk%}" class="task-info" title="{{dep.get_executed_display}} | {{dep.get_outcome_display}}">{{dep.recipe.name}}_{{dep.recipe.version}} <span class="task-name">{{dep.task_name}}</span></a></li>
|
<li><a href="{%url 'task' dep.build.pk dep.pk%}" class="task-info" title="{{dep.get_executed_display}} | {{dep.get_outcome_display}}">{{dep.recipe.name}}_{{dep.recipe.version}} <span class="task-name">{{dep.task_name}}</span></a></li>
|
||||||
{% empty %}
|
{% empty %}
|
||||||
<li class="muted">This task has no dependencies</li>
|
<li class="text-muted" style="margin-bottom: -10px;">This task has no dependencies</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</dd>
|
</dd>
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="Tasks that depend on this task"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Tasks that depend on this
|
||||||
|
task"></span>
|
||||||
Reverse dependencies
|
Reverse dependencies
|
||||||
</dt>
|
</dt>
|
||||||
<dd>
|
<dd>
|
||||||
<ul>
|
<ul class="list-unstyled">
|
||||||
{% for dep in rdeps %}
|
{% for dep in rdeps %}
|
||||||
<li><a href="{%url 'task' dep.build.pk dep.pk%}" class="task-info" title="{{dep.get_executed_display}} | {{dep.get_outcome_display}}">{{dep.recipe.name}}_{{dep.recipe.version}} <span class="task-name">{{dep.task_name}}</span></a></li>
|
<li><a href="{%url 'task' dep.build.pk dep.pk%}" class="task-info" title="{{dep.get_executed_display}} | {{dep.get_outcome_display}}">{{dep.recipe.name}}_{{dep.recipe.version}} <span class="task-name">{{dep.task_name}}</span></a></li>
|
||||||
{% empty %}
|
{% empty %}
|
||||||
<li class="muted">This task has no reverse dependencies</li>
|
<li class="text-muted">This task has no reverse dependencies</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
@@ -245,28 +302,36 @@
|
|||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
{% if task.elapsed_time %}
|
{% if task.elapsed_time %}
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="How long it took the task to finish in seconds"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="How
|
||||||
|
long it took the task to finish in seconds"></span>
|
||||||
Time (secs)
|
Time (secs)
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{task.elapsed_time|format_none_and_zero|floatformat:2}}</dd>
|
<dd>{{task.elapsed_time|format_none_and_zero|floatformat:2}}</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if task.cpu_time_user > 0 %}
|
{% if task.cpu_time_user > 0 %}
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="Total amount of time spent executing in user mode, in seconds. Note that this time can be greater than the task time due to parallel execution."></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Total amount of time
|
||||||
|
spent executing in user mode, in seconds. Note that this time
|
||||||
|
can be greater than the task time due to parallel
|
||||||
|
execution."></span>
|
||||||
User CPU time (secs)
|
User CPU time (secs)
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{task.cpu_time_user|format_none_and_zero|floatformat:2}}</dd>
|
<dd>{{task.cpu_time_user|format_none_and_zero|floatformat:2}}</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if task.cpu_time_system > 0 %}
|
{% if task.cpu_time_system > 0 %}
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="Total amount of time spent executing in kernel mode, in seconds. Note that this time can be greater than the task time due to parallel execution."></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Total amount of time
|
||||||
|
spent executing in kernel mode, in seconds. Note that this time
|
||||||
|
can be greater than the task time due to parallel
|
||||||
|
execution."></span>
|
||||||
System CPU time (secs)
|
System CPU time (secs)
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{task.cpu_time_system|format_none_and_zero|floatformat:2}}</dd>
|
<dd>{{task.cpu_time_system|format_none_and_zero|floatformat:2}}</dd>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if task.disk_io > 0 %}
|
{% if task.disk_io > 0 %}
|
||||||
<dt>
|
<dt>
|
||||||
<i class="icon-question-sign get-help" title="Number of bytes written to and read from the disk during the task"></i>
|
<span class="glyphicon glyphicon-question-sign get-help" title="Number of bytes
|
||||||
|
written to and read from the disk during the task"></span>
|
||||||
Disk I/O (bytes)
|
Disk I/O (bytes)
|
||||||
</dt>
|
</dt>
|
||||||
<dd>{{task.disk_io|format_none_and_zero|intcomma}}</dd>
|
<dd>{{task.disk_io|format_none_and_zero|intcomma}}</dd>
|
||||||
|
|||||||
@@ -6,10 +6,12 @@
|
|||||||
{% block title %} Build artifact does not exist - Toaster {% endblock %}
|
{% block title %} Build artifact does not exist - Toaster {% endblock %}
|
||||||
|
|
||||||
{% block pagecontent %}
|
{% block pagecontent %}
|
||||||
<div class="row air">
|
<div class="row">
|
||||||
<div class="alert alert-info col-md-8 lead">
|
<div class="col-md-8">
|
||||||
<p>The build artifact you are trying to download does not exist.</p>
|
<div class="alert alert-info lead top-air">
|
||||||
<p><a href="javascript:window.history.back()">Back to previous page</a></p>
|
<p>The build artifact you are trying to download does not exist.</p>
|
||||||
|
<p><a href="javascript:window.history.back()">Back to previous page</a></p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -112,11 +112,11 @@ def task_color(task_object, show_green=False):
|
|||||||
show_green argument should be True to get green color.
|
show_green argument should be True to get green color.
|
||||||
"""
|
"""
|
||||||
if not task_object.task_executed:
|
if not task_object.task_executed:
|
||||||
return 'class=muted'
|
return 'class=text-muted'
|
||||||
elif task_object.outcome == task_object.OUTCOME_FAILED:
|
elif task_object.outcome == task_object.OUTCOME_FAILED:
|
||||||
return 'class=error'
|
return 'class=text-danger'
|
||||||
elif task_object.outcome == task_object.OUTCOME_SUCCESS and show_green:
|
elif task_object.outcome == task_object.OUTCOME_SUCCESS and show_green:
|
||||||
return 'class=green'
|
return 'class=text-success'
|
||||||
else:
|
else:
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
@@ -250,15 +250,15 @@ from django.utils.safestring import mark_safe
|
|||||||
@register.filter
|
@register.filter
|
||||||
def format_vpackage_rowclass(size):
|
def format_vpackage_rowclass(size):
|
||||||
if size == -1:
|
if size == -1:
|
||||||
return mark_safe('class="muted"')
|
return mark_safe('class="text-muted"')
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
def format_vpackage_namehelp(name):
|
def format_vpackage_namehelp(name):
|
||||||
r = name + ' '
|
r = name + ' '
|
||||||
r += '<i class="icon-question-sign get-help hover-help"'
|
r += '<span class="glyphicon glyphicon-question-sign get-help hover-help"'
|
||||||
r += ' title = "' + name + ' has not been built">'
|
r += ' title = "' + name + ' has not been built">'
|
||||||
r += '</i>'
|
r += '</span>'
|
||||||
return mark_safe(r)
|
return mark_safe(r)
|
||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
|
|||||||
@@ -898,7 +898,6 @@ def configvars(request, build_id):
|
|||||||
},
|
},
|
||||||
{'name': 'Value',
|
{'name': 'Value',
|
||||||
'qhelp': "The value assigned to the variable",
|
'qhelp': "The value assigned to the variable",
|
||||||
'dclass': "span4",
|
|
||||||
},
|
},
|
||||||
{'name': 'Set in file',
|
{'name': 'Set in file',
|
||||||
'qhelp': "The last configuration file that touched the variable value",
|
'qhelp': "The last configuration file that touched the variable value",
|
||||||
|
|||||||
Reference in New Issue
Block a user