summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/toaster
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/toaster')
-rw-r--r--bitbake/lib/toaster/toastergui/buildtables.py8
-rw-r--r--bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.css587
-rw-r--r--bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.css.map1
-rw-r--r--bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.min.css6
-rw-r--r--bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.min.css.map1
-rw-r--r--bitbake/lib/toaster/toastergui/static/css/default.css114
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/libtoaster.js4
-rw-r--r--bitbake/lib/toaster/toastergui/templates/base.html2
-rw-r--r--bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html30
-rw-r--r--bitbake/lib/toaster/toastergui/templates/basebuildpage.html71
-rw-r--r--bitbake/lib/toaster/toastergui/templates/basetable_bottom.html20
-rw-r--r--bitbake/lib/toaster/toastergui/templates/basetable_top.html121
-rw-r--r--bitbake/lib/toaster/toastergui/templates/builddashboard.html131
-rw-r--r--bitbake/lib/toaster/toastergui/templates/configuration.html10
-rw-r--r--bitbake/lib/toaster/toastergui/templates/configvars.html147
-rw-r--r--bitbake/lib/toaster/toastergui/templates/customrecipe.html2
-rw-r--r--bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html20
-rw-r--r--bitbake/lib/toaster/toastergui/templates/detail_search_header.html74
-rw-r--r--bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html6
-rw-r--r--bitbake/lib/toaster/toastergui/templates/dirinfo.html27
-rw-r--r--bitbake/lib/toaster/toastergui/templates/filtersnippet.html114
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html12
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_built_detail.html8
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_detail_base.html24
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html16
-rw-r--r--bitbake/lib/toaster/toastergui/templates/package_included_tabs.html8
-rw-r--r--bitbake/lib/toaster/toastergui/templates/recipe.html102
-rw-r--r--bitbake/lib/toaster/toastergui/templates/recipe_packages.html23
-rw-r--r--bitbake/lib/toaster/toastergui/templates/recipedetails.html2
-rw-r--r--bitbake/lib/toaster/toastergui/templates/snippets/gitrev_popover.html2
-rw-r--r--bitbake/lib/toaster/toastergui/templates/snippets/pkg_dependencies_popover.html2
-rw-r--r--bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html2
-rw-r--r--bitbake/lib/toaster/toastergui/templates/target.html10
-rw-r--r--bitbake/lib/toaster/toastergui/templates/task.html159
-rw-r--r--bitbake/lib/toaster/toastergui/templates/unavailable_artifact.html10
-rw-r--r--bitbake/lib/toaster/toastergui/templatetags/projecttags.py12
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py1
37 files changed, 753 insertions, 1136 deletions
diff --git a/bitbake/lib/toaster/toastergui/buildtables.py b/bitbake/lib/toaster/toastergui/buildtables.py
index 00a053dfe2..8ef33fdfbd 100644
--- a/bitbake/lib/toaster/toastergui/buildtables.py
+++ b/bitbake/lib/toaster/toastergui/buildtables.py
@@ -260,10 +260,10 @@ class BuiltRecipesTable(BuildTablesMixin):
260 {% with deps=data.r_dependencies_recipe.all %} 260 {% with deps=data.r_dependencies_recipe.all %}
261 {% with count=deps|length %} 261 {% with count=deps|length %}
262 {% if count %} 262 {% if count %}
263 <a class="btn" title=" 263 <a class="btn btn-default" title="
264 <a href='{% url "recipe" extra.build.pk data.pk %}#dependencies'> 264 <a href='{% url "recipe" extra.build.pk data.pk %}#dependencies'>
265 {{data.name}}</a> dependencies" 265 {{data.name}}</a> dependencies"
266 data-content="<ul class='unstyled'> 266 data-content="<ul class='list-unstyled'>
267 {% for dep in deps|dictsort:"depends_on.name"%} 267 {% for dep in deps|dictsort:"depends_on.name"%}
268 <li><a href='{% url "recipe" extra.build.pk dep.depends_on.pk %}'> 268 <li><a href='{% url "recipe" extra.build.pk dep.depends_on.pk %}'>
269 {{dep.depends_on.name}}</a></li> 269 {{dep.depends_on.name}}</a></li>
@@ -278,11 +278,11 @@ class BuiltRecipesTable(BuildTablesMixin):
278 {% with revs=data.r_dependencies_depends.all %} 278 {% with revs=data.r_dependencies_depends.all %}
279 {% with count=revs|length %} 279 {% with count=revs|length %}
280 {% if count %} 280 {% if count %}
281 <a class="btn" 281 <a class="btn btn-default"
282 title=" 282 title="
283 <a href='{% url "recipe" extra.build.pk data.pk %}#brought-in-by'> 283 <a href='{% url "recipe" extra.build.pk data.pk %}#brought-in-by'>
284 {{data.name}}</a> reverse dependencies" 284 {{data.name}}</a> reverse dependencies"
285 data-content="<ul class='unstyled'> 285 data-content="<ul class='list-unstyled'>
286 {% for dep in revs|dictsort:"recipe.name" %} 286 {% for dep in revs|dictsort:"recipe.name" %}
287 <li> 287 <li>
288 <a href='{% url "recipe" extra.build.pk dep.recipe.pk %}'> 288 <a href='{% url "recipe" extra.build.pk dep.recipe.pk %}'>
diff --git a/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.css b/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.css
deleted file mode 100644
index ebe57fbf64..0000000000
--- a/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.css
+++ /dev/null
@@ -1,587 +0,0 @@
1/*!
2 * Bootstrap v3.3.6 (http://getbootstrap.com)
3 * Copyright 2011-2015 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */
6.btn-default,
7.btn-primary,
8.btn-success,
9.btn-info,
10.btn-warning,
11.btn-danger {
12 text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
13 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
14 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
15}
16.btn-default:active,
17.btn-primary:active,
18.btn-success:active,
19.btn-info:active,
20.btn-warning:active,
21.btn-danger:active,
22.btn-default.active,
23.btn-primary.active,
24.btn-success.active,
25.btn-info.active,
26.btn-warning.active,
27.btn-danger.active {
28 -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
29 box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
30}
31.btn-default.disabled,
32.btn-primary.disabled,
33.btn-success.disabled,
34.btn-info.disabled,
35.btn-warning.disabled,
36.btn-danger.disabled,
37.btn-default[disabled],
38.btn-primary[disabled],
39.btn-success[disabled],
40.btn-info[disabled],
41.btn-warning[disabled],
42.btn-danger[disabled],
43fieldset[disabled] .btn-default,
44fieldset[disabled] .btn-primary,
45fieldset[disabled] .btn-success,
46fieldset[disabled] .btn-info,
47fieldset[disabled] .btn-warning,
48fieldset[disabled] .btn-danger {
49 -webkit-box-shadow: none;
50 box-shadow: none;
51}
52.btn-default .badge,
53.btn-primary .badge,
54.btn-success .badge,
55.btn-info .badge,
56.btn-warning .badge,
57.btn-danger .badge {
58 text-shadow: none;
59}
60.btn:active,
61.btn.active {
62 background-image: none;
63}
64.btn-default {
65 text-shadow: 0 1px 0 #fff;
66 background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
67 background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
68 background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
69 background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
70 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
71 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
72 background-repeat: repeat-x;
73 border-color: #dbdbdb;
74 border-color: #ccc;
75}
76.btn-default:hover,
77.btn-default:focus {
78 background-color: #e0e0e0;
79 background-position: 0 -15px;
80}
81.btn-default:active,
82.btn-default.active {
83 background-color: #e0e0e0;
84 border-color: #dbdbdb;
85}
86.btn-default.disabled,
87.btn-default[disabled],
88fieldset[disabled] .btn-default,
89.btn-default.disabled:hover,
90.btn-default[disabled]:hover,
91fieldset[disabled] .btn-default:hover,
92.btn-default.disabled:focus,
93.btn-default[disabled]:focus,
94fieldset[disabled] .btn-default:focus,
95.btn-default.disabled.focus,
96.btn-default[disabled].focus,
97fieldset[disabled] .btn-default.focus,
98.btn-default.disabled:active,
99.btn-default[disabled]:active,
100fieldset[disabled] .btn-default:active,
101.btn-default.disabled.active,
102.btn-default[disabled].active,
103fieldset[disabled] .btn-default.active {
104 background-color: #e0e0e0;
105 background-image: none;
106}
107.btn-primary {
108 background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
109 background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
110 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
111 background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
112 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
113 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
114 background-repeat: repeat-x;
115 border-color: #245580;
116}
117.btn-primary:hover,
118.btn-primary:focus {
119 background-color: #265a88;
120 background-position: 0 -15px;
121}
122.btn-primary:active,
123.btn-primary.active {
124 background-color: #265a88;
125 border-color: #245580;
126}
127.btn-primary.disabled,
128.btn-primary[disabled],
129fieldset[disabled] .btn-primary,
130.btn-primary.disabled:hover,
131.btn-primary[disabled]:hover,
132fieldset[disabled] .btn-primary:hover,
133.btn-primary.disabled:focus,
134.btn-primary[disabled]:focus,
135fieldset[disabled] .btn-primary:focus,
136.btn-primary.disabled.focus,
137.btn-primary[disabled].focus,
138fieldset[disabled] .btn-primary.focus,
139.btn-primary.disabled:active,
140.btn-primary[disabled]:active,
141fieldset[disabled] .btn-primary:active,
142.btn-primary.disabled.active,
143.btn-primary[disabled].active,
144fieldset[disabled] .btn-primary.active {
145 background-color: #265a88;
146 background-image: none;
147}
148.btn-success {
149 background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
150 background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
151 background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
152 background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
153 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
154 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
155 background-repeat: repeat-x;
156 border-color: #3e8f3e;
157}
158.btn-success:hover,
159.btn-success:focus {
160 background-color: #419641;
161 background-position: 0 -15px;
162}
163.btn-success:active,
164.btn-success.active {
165 background-color: #419641;
166 border-color: #3e8f3e;
167}
168.btn-success.disabled,
169.btn-success[disabled],
170fieldset[disabled] .btn-success,
171.btn-success.disabled:hover,
172.btn-success[disabled]:hover,
173fieldset[disabled] .btn-success:hover,
174.btn-success.disabled:focus,
175.btn-success[disabled]:focus,
176fieldset[disabled] .btn-success:focus,
177.btn-success.disabled.focus,
178.btn-success[disabled].focus,
179fieldset[disabled] .btn-success.focus,
180.btn-success.disabled:active,
181.btn-success[disabled]:active,
182fieldset[disabled] .btn-success:active,
183.btn-success.disabled.active,
184.btn-success[disabled].active,
185fieldset[disabled] .btn-success.active {
186 background-color: #419641;
187 background-image: none;
188}
189.btn-info {
190 background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
191 background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
192 background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
193 background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
194 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
195 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
196 background-repeat: repeat-x;
197 border-color: #28a4c9;
198}
199.btn-info:hover,
200.btn-info:focus {
201 background-color: #2aabd2;
202 background-position: 0 -15px;
203}
204.btn-info:active,
205.btn-info.active {
206 background-color: #2aabd2;
207 border-color: #28a4c9;
208}
209.btn-info.disabled,
210.btn-info[disabled],
211fieldset[disabled] .btn-info,
212.btn-info.disabled:hover,
213.btn-info[disabled]:hover,
214fieldset[disabled] .btn-info:hover,
215.btn-info.disabled:focus,
216.btn-info[disabled]:focus,
217fieldset[disabled] .btn-info:focus,
218.btn-info.disabled.focus,
219.btn-info[disabled].focus,
220fieldset[disabled] .btn-info.focus,
221.btn-info.disabled:active,
222.btn-info[disabled]:active,
223fieldset[disabled] .btn-info:active,
224.btn-info.disabled.active,
225.btn-info[disabled].active,
226fieldset[disabled] .btn-info.active {
227 background-color: #2aabd2;
228 background-image: none;
229}
230.btn-warning {
231 background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
232 background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
233 background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
234 background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
235 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
236 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
237 background-repeat: repeat-x;
238 border-color: #e38d13;
239}
240.btn-warning:hover,
241.btn-warning:focus {
242 background-color: #eb9316;
243 background-position: 0 -15px;
244}
245.btn-warning:active,
246.btn-warning.active {
247 background-color: #eb9316;
248 border-color: #e38d13;
249}
250.btn-warning.disabled,
251.btn-warning[disabled],
252fieldset[disabled] .btn-warning,
253.btn-warning.disabled:hover,
254.btn-warning[disabled]:hover,
255fieldset[disabled] .btn-warning:hover,
256.btn-warning.disabled:focus,
257.btn-warning[disabled]:focus,
258fieldset[disabled] .btn-warning:focus,
259.btn-warning.disabled.focus,
260.btn-warning[disabled].focus,
261fieldset[disabled] .btn-warning.focus,
262.btn-warning.disabled:active,
263.btn-warning[disabled]:active,
264fieldset[disabled] .btn-warning:active,
265.btn-warning.disabled.active,
266.btn-warning[disabled].active,
267fieldset[disabled] .btn-warning.active {
268 background-color: #eb9316;
269 background-image: none;
270}
271.btn-danger {
272 background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
273 background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
274 background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
275 background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
276 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
277 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
278 background-repeat: repeat-x;
279 border-color: #b92c28;
280}
281.btn-danger:hover,
282.btn-danger:focus {
283 background-color: #c12e2a;
284 background-position: 0 -15px;
285}
286.btn-danger:active,
287.btn-danger.active {
288 background-color: #c12e2a;
289 border-color: #b92c28;
290}
291.btn-danger.disabled,
292.btn-danger[disabled],
293fieldset[disabled] .btn-danger,
294.btn-danger.disabled:hover,
295.btn-danger[disabled]:hover,
296fieldset[disabled] .btn-danger:hover,
297.btn-danger.disabled:focus,
298.btn-danger[disabled]:focus,
299fieldset[disabled] .btn-danger:focus,
300.btn-danger.disabled.focus,
301.btn-danger[disabled].focus,
302fieldset[disabled] .btn-danger.focus,
303.btn-danger.disabled:active,
304.btn-danger[disabled]:active,
305fieldset[disabled] .btn-danger:active,
306.btn-danger.disabled.active,
307.btn-danger[disabled].active,
308fieldset[disabled] .btn-danger.active {
309 background-color: #c12e2a;
310 background-image: none;
311}
312.thumbnail,
313.img-thumbnail {
314 -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
315 box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
316}
317.dropdown-menu > li > a:hover,
318.dropdown-menu > li > a:focus {
319 background-color: #e8e8e8;
320 background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
321 background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
322 background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
323 background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
324 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
325 background-repeat: repeat-x;
326}
327.dropdown-menu > .active > a,
328.dropdown-menu > .active > a:hover,
329.dropdown-menu > .active > a:focus {
330 background-color: #2e6da4;
331 background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
332 background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
333 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
334 background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
335 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
336 background-repeat: repeat-x;
337}
338.navbar-default {
339 background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
340 background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
341 background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
342 background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
343 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
344 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
345 background-repeat: repeat-x;
346 border-radius: 4px;
347 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
348 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
349}
350.navbar-default .navbar-nav > .open > a,
351.navbar-default .navbar-nav > .active > a {
352 background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
353 background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
354 background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
355 background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
356 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
357 background-repeat: repeat-x;
358 -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
359 box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
360}
361.navbar-brand,
362.navbar-nav > li > a {
363 text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
364}
365.navbar-inverse {
366 background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
367 background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
368 background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
369 background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
370 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
371 filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
372 background-repeat: repeat-x;
373 border-radius: 4px;
374}
375.navbar-inverse .navbar-nav > .open > a,
376.navbar-inverse .navbar-nav > .active > a {
377 background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
378 background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
379 background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
380 background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
381 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
382 background-repeat: repeat-x;
383 -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
384 box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
385}
386.navbar-inverse .navbar-brand,
387.navbar-inverse .navbar-nav > li > a {
388 text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
389}
390.navbar-static-top,
391.navbar-fixed-top,
392.navbar-fixed-bottom {
393 border-radius: 0;
394}
395@media (max-width: 767px) {
396 .navbar .navbar-nav .open .dropdown-menu > .active > a,
397 .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
398 .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
399 color: #fff;
400 background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
401 background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
402 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
403 background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
404 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
405 background-repeat: repeat-x;
406 }
407}
408.alert {
409 text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
410 -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
411 box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
412}
413.alert-success {
414 background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
415 background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
416 background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
417 background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
418 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
419 background-repeat: repeat-x;
420 border-color: #b2dba1;
421}
422.alert-info {
423 background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
424 background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
425 background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
426 background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
427 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
428 background-repeat: repeat-x;
429 border-color: #9acfea;
430}
431.alert-warning {
432 background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
433 background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
434 background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
435 background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
436 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
437 background-repeat: repeat-x;
438 border-color: #f5e79e;
439}
440.alert-danger {
441 background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
442 background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
443 background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
444 background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
445 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
446 background-repeat: repeat-x;
447 border-color: #dca7a7;
448}
449.progress {
450 background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
451 background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
452 background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
453 background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
454 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
455 background-repeat: repeat-x;
456}
457.progress-bar {
458 background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
459 background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
460 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
461 background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
462 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
463 background-repeat: repeat-x;
464}
465.progress-bar-success {
466 background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
467 background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
468 background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
469 background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
470 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
471 background-repeat: repeat-x;
472}
473.progress-bar-info {
474 background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
475 background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
476 background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
477 background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
478 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
479 background-repeat: repeat-x;
480}
481.progress-bar-warning {
482 background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
483 background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
484 background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
485 background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
486 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
487 background-repeat: repeat-x;
488}
489.progress-bar-danger {
490 background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
491 background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
492 background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
493 background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
494 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
495 background-repeat: repeat-x;
496}
497.progress-bar-striped {
498 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);
499 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);
500 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);
501}
502.list-group {
503 border-radius: 4px;
504 -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
505 box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
506}
507.list-group-item.active,
508.list-group-item.active:hover,
509.list-group-item.active:focus {
510 text-shadow: 0 -1px 0 #286090;
511 background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
512 background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
513 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
514 background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
515 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
516 background-repeat: repeat-x;
517 border-color: #2b669a;
518}
519.list-group-item.active .badge,
520.list-group-item.active:hover .badge,
521.list-group-item.active:focus .badge {
522 text-shadow: none;
523}
524.panel {
525 -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
526 box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
527}
528.panel-default > .panel-heading {
529 background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
530 background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
531 background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
532 background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
533 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
534 background-repeat: repeat-x;
535}
536.panel-primary > .panel-heading {
537 background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
538 background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
539 background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
540 background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
541 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
542 background-repeat: repeat-x;
543}
544.panel-success > .panel-heading {
545 background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
546 background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
547 background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
548 background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
549 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
550 background-repeat: repeat-x;
551}
552.panel-info > .panel-heading {
553 background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
554 background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
555 background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
556 background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
557 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
558 background-repeat: repeat-x;
559}
560.panel-warning > .panel-heading {
561 background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
562 background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
563 background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
564 background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
565 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
566 background-repeat: repeat-x;
567}
568.panel-danger > .panel-heading {
569 background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
570 background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
571 background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
572 background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
573 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
574 background-repeat: repeat-x;
575}
576.well {
577 background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
578 background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
579 background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
580 background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
581 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
582 background-repeat: repeat-x;
583 border-color: #dcdcdc;
584 -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
585 box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
586}
587/*# sourceMappingURL=bootstrap-theme.css.map */
diff --git a/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.css.map b/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.css.map
deleted file mode 100644
index 21e19101e1..0000000000
--- a/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.css.map
+++ /dev/null
@@ -1 +0,0 @@
1{"version":3,"sources":["bootstrap-theme.css","less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"AAAA;;;;GAIG;ACeH;;;;;;EAME,yCAAA;EC2CA,4FAAA;EACQ,oFAAA;CFvDT;ACgBC;;;;;;;;;;;;ECsCA,yDAAA;EACQ,iDAAA;CFxCT;ACMC;;;;;;;;;;;;;;;;;;ECiCA,yBAAA;EACQ,iBAAA;CFnBT;AC/BD;;;;;;EAuBI,kBAAA;CDgBH;ACyBC;;EAEE,uBAAA;CDvBH;AC4BD;EErEI,sEAAA;EACA,iEAAA;EACA,2FAAA;EAAA,oEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;EAuC2C,0BAAA;EAA2B,mBAAA;CDjBvE;ACpBC;;EAEE,0BAAA;EACA,6BAAA;CDsBH;ACnBC;;EAEE,0BAAA;EACA,sBAAA;CDqBH;ACfG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6BL;ACbD;EEtEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8DD;AC5DC;;EAEE,0BAAA;EACA,6BAAA;CD8DH;AC3DC;;EAEE,0BAAA;EACA,sBAAA;CD6DH;ACvDG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqEL;ACpDD;EEvEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CDsGD;ACpGC;;EAEE,0BAAA;EACA,6BAAA;CDsGH;ACnGC;;EAEE,0BAAA;EACA,sBAAA;CDqGH;AC/FG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6GL;AC3FD;EExEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8ID;AC5IC;;EAEE,0BAAA;EACA,6BAAA;CD8IH;AC3IC;;EAEE,0BAAA;EACA,sBAAA;CD6IH;ACvIG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqJL;AClID;EEzEI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CDsLD;ACpLC;;EAEE,0BAAA;EACA,6BAAA;CDsLH;ACnLC;;EAEE,0BAAA;EACA,sBAAA;CDqLH;AC/KG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CD6LL;ACzKD;EE1EI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EAEA,uHAAA;ECnBF,oEAAA;EH4CA,4BAAA;EACA,sBAAA;CD8ND;AC5NC;;EAEE,0BAAA;EACA,6BAAA;CD8NH;AC3NC;;EAEE,0BAAA;EACA,sBAAA;CD6NH;ACvNG;;;;;;;;;;;;;;;;;;EAME,0BAAA;EACA,uBAAA;CDqOL;AC1MD;;EClCE,mDAAA;EACQ,2CAAA;CFgPT;ACrMD;;EE3FI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF0FF,0BAAA;CD2MD;ACzMD;;;EEhGI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFgGF,0BAAA;CD+MD;ACtMD;EE7GI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ECnBF,oEAAA;EH+HA,mBAAA;ECjEA,4FAAA;EACQ,oFAAA;CF8QT;ACjND;;EE7GI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ED2CF,yDAAA;EACQ,iDAAA;CFwRT;AC9MD;;EAEE,+CAAA;CDgND;AC5MD;EEhII,sEAAA;EACA,iEAAA;EACA,2FAAA;EAAA,oEAAA;EACA,4BAAA;EACA,uHAAA;ECnBF,oEAAA;EHkJA,mBAAA;CDkND;ACrND;;EEhII,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;ED2CF,wDAAA;EACQ,gDAAA;CF+ST;AC/ND;;EAYI,0CAAA;CDuNH;AClND;;;EAGE,iBAAA;CDoND;AC/LD;EAfI;;;IAGE,YAAA;IE7JF,yEAAA;IACA,oEAAA;IACA,8FAAA;IAAA,uEAAA;IACA,4BAAA;IACA,uHAAA;GH+WD;CACF;AC3MD;EACE,8CAAA;EC3HA,2FAAA;EACQ,mFAAA;CFyUT;ACnMD;EEtLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CD+MD;AC1MD;EEvLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CDuND;ACjND;EExLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CD+ND;ACxND;EEzLI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EF8KF,sBAAA;CDuOD;ACxND;EEjMI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH4ZH;ACrND;EE3MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHmaH;AC3ND;EE5MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH0aH;ACjOD;EE7MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHibH;ACvOD;EE9MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHwbH;AC7OD;EE/MI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH+bH;AChPD;EElLI,8MAAA;EACA,yMAAA;EACA,sMAAA;CHqaH;AC5OD;EACE,mBAAA;EC9KA,mDAAA;EACQ,2CAAA;CF6ZT;AC7OD;;;EAGE,8BAAA;EEnOE,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFiOF,sBAAA;CDmPD;ACxPD;;;EAQI,kBAAA;CDqPH;AC3OD;ECnME,kDAAA;EACQ,0CAAA;CFibT;ACrOD;EE5PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHoeH;AC3OD;EE7PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CH2eH;ACjPD;EE9PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHkfH;ACvPD;EE/PI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHyfH;AC7PD;EEhQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHggBH;ACnQD;EEjQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;CHugBH;ACnQD;EExQI,yEAAA;EACA,oEAAA;EACA,8FAAA;EAAA,uEAAA;EACA,4BAAA;EACA,uHAAA;EFsQF,sBAAA;EC3NA,0FAAA;EACQ,kFAAA;CFqeT","file":"bootstrap-theme.css","sourcesContent":["/*!\n * Bootstrap v3.3.6 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default.disabled,\n.btn-primary.disabled,\n.btn-success.disabled,\n.btn-info.disabled,\n.btn-warning.disabled,\n.btn-danger.disabled,\n.btn-default[disabled],\n.btn-primary[disabled],\n.btn-success[disabled],\n.btn-info[disabled],\n.btn-warning[disabled],\n.btn-danger[disabled],\nfieldset[disabled] .btn-default,\nfieldset[disabled] .btn-primary,\nfieldset[disabled] .btn-success,\nfieldset[disabled] .btn-info,\nfieldset[disabled] .btn-warning,\nfieldset[disabled] .btn-danger {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n text-shadow: none;\n}\n.btn:active,\n.btn.active {\n background-image: none;\n}\n.btn-default {\n background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);\n background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #dbdbdb;\n text-shadow: 0 1px 0 #fff;\n border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n background-color: #e0e0e0;\n background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n background-color: #e0e0e0;\n border-color: #dbdbdb;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n background-color: #e0e0e0;\n background-image: none;\n}\n.btn-primary {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n background-color: #265a88;\n background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n background-color: #265a88;\n border-color: #245580;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n background-color: #265a88;\n background-image: none;\n}\n.btn-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n background-color: #419641;\n background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n background-color: #419641;\n border-color: #3e8f3e;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n background-color: #419641;\n background-image: none;\n}\n.btn-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn-info:focus {\n background-color: #2aabd2;\n background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n background-color: #2aabd2;\n border-color: #28a4c9;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n background-color: #2aabd2;\n background-image: none;\n}\n.btn-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n background-color: #eb9316;\n background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n background-color: #eb9316;\n border-color: #e38d13;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n background-color: #eb9316;\n background-image: none;\n}\n.btn-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n background-repeat: repeat-x;\n border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n background-color: #c12e2a;\n background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n background-color: #c12e2a;\n border-color: #b92c28;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n background-color: #c12e2a;\n background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n background-color: #2e6da4;\n}\n.navbar-default {\n background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);\n background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n border-radius: 4px;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n@media (max-width: 767px) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n color: #fff;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n }\n}\n.alert {\n text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n border-color: #b2dba1;\n}\n.alert-info {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n border-color: #9acfea;\n}\n.alert-warning {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n border-color: #f5e79e;\n}\n.alert-danger {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n border-color: #dca7a7;\n}\n.progress {\n background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n border-radius: 4px;\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 #286090;\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n border-color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n text-shadow: none;\n}\n.panel {\n -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);\n background-repeat: repeat-x;\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n border-color: #dcdcdc;\n -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","/*!\n * Bootstrap v3.3.6 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n // Reset the shadow\n &:active,\n &.active {\n .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n .box-shadow(none);\n }\n\n .badge {\n text-shadow: none;\n }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620\n background-repeat: repeat-x;\n border-color: darken(@btn-color, 14%);\n\n &:hover,\n &:focus {\n background-color: darken(@btn-color, 12%);\n background-position: 0 -15px;\n }\n\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n border-color: darken(@btn-color, 14%);\n }\n\n &.disabled,\n &[disabled],\n fieldset[disabled] & {\n &,\n &:hover,\n &:focus,\n &.focus,\n &:active,\n &.active {\n background-color: darken(@btn-color, 12%);\n background-image: none;\n }\n }\n}\n\n// Common styles\n.btn {\n // Remove the gradient for the pressed/active state\n &:active,\n &.active {\n background-image: none;\n }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n.btn-danger { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-color: @navbar-default-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n border-radius: @navbar-border-radius;\n @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n .box-shadow(@shadow);\n\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257\n border-radius: @navbar-border-radius;\n .navbar-nav > .open > a,\n .navbar-nav > .active > a {\n #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n }\n\n .navbar-brand,\n .navbar-nav > li > a {\n text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n .navbar .navbar-nav .open .dropdown-menu > .active > a {\n &,\n &:hover,\n &:focus {\n color: #fff;\n #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n }\n }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n text-shadow: 0 1px 0 rgba(255,255,255,.2);\n @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n .box-shadow(@shadow);\n}\n\n// Mixin for generating new styles\n.alert-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success { .alert-styles(@alert-success-bg); }\n.alert-info { .alert-styles(@alert-info-bg); }\n.alert-warning { .alert-styles(@alert-warning-bg); }\n.alert-danger { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }\n.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n border-radius: @border-radius-base;\n .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n border-color: darken(@list-group-active-border, 7.5%);\n\n .badge {\n text-shadow: none;\n }\n}\n\n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg);\n border-color: darken(@well-bg, 10%);\n @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They have been removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n -webkit-animation: @animation;\n -o-animation: @animation;\n animation: @animation;\n}\n.animation-name(@name) {\n -webkit-animation-name: @name;\n animation-name: @name;\n}\n.animation-duration(@duration) {\n -webkit-animation-duration: @duration;\n animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n -webkit-animation-timing-function: @timing-function;\n animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n -webkit-animation-delay: @delay;\n animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n -webkit-animation-iteration-count: @iteration-count;\n animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n -webkit-animation-direction: @direction;\n animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n -webkit-animation-fill-mode: @fill-mode;\n animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility) {\n -webkit-backface-visibility: @visibility;\n -moz-backface-visibility: @visibility;\n backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n -webkit-box-sizing: @boxmodel;\n -moz-box-sizing: @boxmodel;\n box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n -webkit-column-count: @column-count;\n -moz-column-count: @column-count;\n column-count: @column-count;\n -webkit-column-gap: @column-gap;\n -moz-column-gap: @column-gap;\n column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n word-wrap: break-word;\n -webkit-hyphens: @mode;\n -moz-hyphens: @mode;\n -ms-hyphens: @mode; // IE10+\n -o-hyphens: @mode;\n hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-placeholder) {\n // Firefox\n &::-moz-placeholder {\n color: @color;\n opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526\n }\n &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n &::-webkit-input-placeholder { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n -webkit-transform: scale(@ratio);\n -ms-transform: scale(@ratio); // IE9 only\n -o-transform: scale(@ratio);\n transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n -webkit-transform: scale(@ratioX, @ratioY);\n -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n -o-transform: scale(@ratioX, @ratioY);\n transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n -webkit-transform: scaleX(@ratio);\n -ms-transform: scaleX(@ratio); // IE9 only\n -o-transform: scaleX(@ratio);\n transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n -webkit-transform: scaleY(@ratio);\n -ms-transform: scaleY(@ratio); // IE9 only\n -o-transform: scaleY(@ratio);\n transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n -webkit-transform: skewX(@x) skewY(@y);\n -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n -o-transform: skewX(@x) skewY(@y);\n transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n -webkit-transform: translate(@x, @y);\n -ms-transform: translate(@x, @y); // IE9 only\n -o-transform: translate(@x, @y);\n transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n -webkit-transform: translate3d(@x, @y, @z);\n transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n -webkit-transform: rotate(@degrees);\n -ms-transform: rotate(@degrees); // IE9 only\n -o-transform: rotate(@degrees);\n transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n -webkit-transform: rotateX(@degrees);\n -ms-transform: rotateX(@degrees); // IE9 only\n -o-transform: rotateX(@degrees);\n transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n -webkit-transform: rotateY(@degrees);\n -ms-transform: rotateY(@degrees); // IE9 only\n -o-transform: rotateY(@degrees);\n transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n -webkit-perspective: @perspective;\n -moz-perspective: @perspective;\n perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n -webkit-perspective-origin: @perspective;\n -moz-perspective-origin: @perspective;\n perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n -webkit-transform-origin: @origin;\n -moz-transform-origin: @origin;\n -ms-transform-origin: @origin; // IE9 only\n transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n -webkit-transition: @transition;\n -o-transition: @transition;\n transition: @transition;\n}\n.transition-property(@transition-property) {\n -webkit-transition-property: @transition-property;\n transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n -webkit-transition-delay: @transition-delay;\n transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n -webkit-transition-duration: @transition-duration;\n transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n -webkit-transition-timing-function: @timing-function;\n transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n -webkit-transition: -webkit-transform @transition;\n -moz-transition: -moz-transform @transition;\n -o-transition: -o-transform @transition;\n transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n -webkit-user-select: @select;\n -moz-user-select: @select;\n -ms-user-select: @select; // IE10+\n user-select: @select;\n}\n","// Gradients\n\n#gradient {\n\n // Horizontal gradient, from left to right\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n // Vertical gradient, from top to bottom\n //\n // Creates two color stops, start and end, by specifying a color and position for each color stop.\n // Color stops are not available in IE9 and below.\n .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent); // Opera 12\n background-image: linear-gradient(to bottom, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n background-repeat: repeat-x;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n }\n\n .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n background-repeat: repeat-x;\n background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n }\n .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n background-repeat: no-repeat;\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n }\n .radial(@inner-color: #555; @outer-color: #333) {\n background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n background-image: radial-gradient(circle, @inner-color, @outer-color);\n background-repeat: no-repeat;\n }\n .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use this to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]} \ No newline at end of file
diff --git a/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.min.css b/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.min.css
deleted file mode 100644
index dc95d8e4e4..0000000000
--- a/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.min.css
+++ /dev/null
@@ -1,6 +0,0 @@
1/*!
2 * Bootstrap v3.3.6 (http://getbootstrap.com)
3 * Copyright 2011-2015 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
5 */.btn-danger,.btn-default,.btn-info,.btn-primary,.btn-success,.btn-warning{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-danger.active,.btn-danger:active,.btn-default.active,.btn-default:active,.btn-info.active,.btn-info:active,.btn-primary.active,.btn-primary:active,.btn-success.active,.btn-success:active,.btn-warning.active,.btn-warning: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-danger.disabled,.btn-danger[disabled],.btn-default.disabled,.btn-default[disabled],.btn-info.disabled,.btn-info[disabled],.btn-primary.disabled,.btn-primary[disabled],.btn-success.disabled,.btn-success[disabled],.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-danger,fieldset[disabled] .btn-default,fieldset[disabled] .btn-info,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-warning{-webkit-box-shadow:none;box-shadow:none}.btn-danger .badge,.btn-default .badge,.btn-info .badge,.btn-primary .badge,.btn-success .badge,.btn-warning .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:focus,.btn-default:hover{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.active,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{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:focus,.btn-primary:hover{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.active,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{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:focus,.btn-success:hover{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.active,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{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:focus,.btn-info:hover{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.active,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{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:focus,.btn-warning:hover{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.active,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{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:focus,.btn-danger:hover{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.active,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#c12e2a;background-image:none}.img-thumbnail,.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:focus,.dropdown-menu>li>a:hover{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:focus,.dropdown-menu>.active>a:hover{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>.active>a,.navbar-default .navbar-nav>.open>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>.active>a,.navbar-inverse .navbar-nav>.open>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-fixed-bottom,.navbar-fixed-top,.navbar-static-top{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover{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:focus,.list-group-item.active:hover{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:focus .badge,.list-group-item.active:hover .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)}
6/*# sourceMappingURL=bootstrap-theme.min.css.map */ \ No newline at end of file
diff --git a/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.min.css.map b/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.min.css.map
deleted file mode 100644
index 2c6b65afc0..0000000000
--- a/bitbake/lib/toaster/toastergui/static/css/bootstrap-theme.min.css.map
+++ /dev/null
@@ -1 +0,0 @@
1{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":";;;;AAmBA,YAAA,aAAA,UAAA,aAAA,aAAA,aAME,YAAA,EAAA,KAAA,EAAA,eC2CA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBDvCR,mBAAA,mBAAA,oBAAA,oBAAA,iBAAA,iBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBAAA,oBCsCA,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBDlCR,qBAAA,sBAAA,sBAAA,uBAAA,mBAAA,oBAAA,sBAAA,uBAAA,sBAAA,uBAAA,sBAAA,uBAAA,+BAAA,gCAAA,6BAAA,gCAAA,gCAAA,gCCiCA,mBAAA,KACQ,WAAA,KDlDV,mBAAA,oBAAA,iBAAA,oBAAA,oBAAA,oBAuBI,YAAA,KAyCF,YAAA,YAEE,iBAAA,KAKJ,aErEI,YAAA,EAAA,IAAA,EAAA,KACA,iBAAA,iDACA,iBAAA,4CAAA,iBAAA,qEAEA,iBAAA,+CCnBF,OAAA,+GH4CA,OAAA,0DACA,kBAAA,SAuC2C,aAAA,QAA2B,aAAA,KArCtE,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAgBN,aEtEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAiBN,aEvEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAkBN,UExEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,gBAAA,gBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,iBAAA,iBAEE,iBAAA,QACA,aAAA,QAMA,mBAAA,0BAAA,yBAAA,0BAAA,yBAAA,yBAAA,oBAAA,2BAAA,0BAAA,2BAAA,0BAAA,0BAAA,6BAAA,oCAAA,mCAAA,oCAAA,mCAAA,mCAME,iBAAA,QACA,iBAAA,KAmBN,aEzEI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,mBAAA,mBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,oBAAA,oBAEE,iBAAA,QACA,aAAA,QAMA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,uBAAA,8BAAA,6BAAA,8BAAA,6BAAA,6BAAA,gCAAA,uCAAA,sCAAA,uCAAA,sCAAA,sCAME,iBAAA,QACA,iBAAA,KAoBN,YE1EI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDAEA,OAAA,+GCnBF,OAAA,0DH4CA,kBAAA,SACA,aAAA,QAEA,kBAAA,kBAEE,iBAAA,QACA,oBAAA,EAAA,MAGF,mBAAA,mBAEE,iBAAA,QACA,aAAA,QAMA,qBAAA,4BAAA,2BAAA,4BAAA,2BAAA,2BAAA,sBAAA,6BAAA,4BAAA,6BAAA,4BAAA,4BAAA,+BAAA,sCAAA,qCAAA,sCAAA,qCAAA,qCAME,iBAAA,QACA,iBAAA,KA2BN,eAAA,WClCE,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBD2CV,0BAAA,0BE3FI,iBAAA,QACA,iBAAA,oDACA,iBAAA,+CAAA,iBAAA,wEACA,iBAAA,kDACA,OAAA,+GF0FF,kBAAA,SAEF,yBAAA,+BAAA,+BEhGI,iBAAA,QACA,iBAAA,oDACA,iBAAA,+CAAA,iBAAA,wEACA,iBAAA,kDACA,OAAA,+GFgGF,kBAAA,SASF,gBE7GI,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,OAAA,0DCnBF,kBAAA,SH+HA,cAAA,ICjEA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,iBD6DV,sCAAA,oCE7GI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD2CF,mBAAA,MAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,iBD0EV,cAAA,iBAEE,YAAA,EAAA,IAAA,EAAA,sBAIF,gBEhII,iBAAA,iDACA,iBAAA,4CACA,iBAAA,qEAAA,iBAAA,+CACA,OAAA,+GACA,OAAA,0DCnBF,kBAAA,SHkJA,cAAA,IAHF,sCAAA,oCEhII,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SD2CF,mBAAA,MAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBDgFV,8BAAA,iCAYI,YAAA,EAAA,KAAA,EAAA,gBAKJ,qBAAA,kBAAA,mBAGE,cAAA,EAqBF,yBAfI,mDAAA,yDAAA,yDAGE,MAAA,KE7JF,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,UFqKJ,OACE,YAAA,EAAA,IAAA,EAAA,qBC3HA,mBAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,MAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,IAAA,IAAA,gBDsIV,eEtLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAKF,YEvLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAMF,eExLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAOF,cEzLI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF8KF,aAAA,QAeF,UEjMI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFuMJ,cE3MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFwMJ,sBE5MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFyMJ,mBE7MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0MJ,sBE9MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF2MJ,qBE/MI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF+MJ,sBElLI,iBAAA,yKACA,iBAAA,oKACA,iBAAA,iKFyLJ,YACE,cAAA,IC9KA,mBAAA,EAAA,IAAA,IAAA,iBACQ,WAAA,EAAA,IAAA,IAAA,iBDgLV,wBAAA,8BAAA,8BAGE,YAAA,EAAA,KAAA,EAAA,QEnOE,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFiOF,aAAA,QALF,+BAAA,qCAAA,qCAQI,YAAA,KAUJ,OCnME,mBAAA,EAAA,IAAA,IAAA,gBACQ,WAAA,EAAA,IAAA,IAAA,gBD4MV,8BE5PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFyPJ,8BE7PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF0PJ,8BE9PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF2PJ,2BE/PI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF4PJ,8BEhQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SF6PJ,6BEjQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFoQJ,MExQI,iBAAA,oDACA,iBAAA,+CACA,iBAAA,wEAAA,iBAAA,kDACA,OAAA,+GACA,kBAAA,SFsQF,aAAA,QC3NA,mBAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,EAAA,IAAA,EAAA,qBACQ,WAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,EAAA,IAAA,EAAA"} \ No newline at end of file
diff --git a/bitbake/lib/toaster/toastergui/static/css/default.css b/bitbake/lib/toaster/toastergui/static/css/default.css
index 30328fd3b4..0d3570a21f 100644
--- a/bitbake/lib/toaster/toastergui/static/css/default.css
+++ b/bitbake/lib/toaster/toastergui/static/css/default.css
@@ -22,11 +22,21 @@ img.logo { height: 30px; vertical-align: bottom; }
22/* Increase popovers width to fit commit SHAs */ 22/* Increase popovers width to fit commit SHAs */
23.popover { max-width: 350px; } 23.popover { max-width: 350px; }
24 24
25/* Set a limit to popover height to handle long dependency lists */
26.popover-content { max-height: 350px; overflow: scroll; }
27
28/* Set a limit to modal dialogs height to handle long variable history */
29[id^="variable-"] .modal-content { max-height: 550px; overflow-y: scroll; }
30
31/* Make sure long values in variable history do not make the modal dialogs
32 * scroll horizontally */
33[id^="variable-"] .modal-content p { word-break: break-all; }
34
25/* 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 */ 35/* 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 */
26.popover-content dd, 36.popover-content dd,
27.well dd { margin-bottom: 15px; } 37.item-info dd { margin-bottom: 15px; }
28 38
29/* Style the horizonal definition lists */ 39/* Style the horizontal definition lists */
30.dl-horizontal dt { width: 200px; line-height: 25px; } 40.dl-horizontal dt { width: 200px; line-height: 25px; }
31.dl-horizontal dd { margin-left: 220px; line-height: 25px; } 41.dl-horizontal dd { margin-left: 220px; line-height: 25px; }
32 42
@@ -48,21 +58,24 @@ img.logo { height: 30px; vertical-align: bottom; }
48 58
49/* Styles for our table controls */ 59/* Styles for our table controls */
50.form-control[id^="search-input-"], 60.form-control[id^="search-input-"],
51.form-control[id^="new-search-input-"] { width: 30em; } 61.form-control[id^="new-search-input-"],
62#search{ width: 30em; }
52#search-input-selectpackagestable, 63#search-input-selectpackagestable,
53#search-input-packagestable, 64#search-input-packagestable,
54.form-control[id^="no-results-search-input-"]{ width: 20em; } 65.form-control[id^="no-results-search-input-"] { width: 20em; }
55#edit-columns-button { margin-right: 30px; } 66#edit-columns-button { margin-right: 30px; }
56.navbar-default[id^="table-chrome-"] { background-color: transparent; } 67.navbar-default[id^="table-chrome-"],
68#variables .navbar-default { background-color: transparent; }
57[id^="table-chrome-collapse-"] .navbar-form { margin-left: -15px; } 69[id^="table-chrome-collapse-"] .navbar-form { margin-left: -15px; }
58.dropdown-menu.editcol { padding-left: 10px; min-width: 180px; } 70.dropdown-menu.editcol { padding-left: 10px; min-width: 200px; }
59span[class^="remove-search-btn-"] { position: absolute; right: 5px; top: 0; bottom: 0; height: 14px; margin: auto; font-size: 14px; cursor: pointer; color: #777;} 71span[class^="remove-search-btn-"] { position: absolute; right: 5px; top: 0; bottom: 0; height: 14px; margin: auto; font-size: 14px; cursor: pointer; color: #777;}
60span[class^="remove-search-btn-"]:hover { color: #333; } 72span[class^="remove-search-btn-"]:hover { color: #333; }
61#no-results-special-selectpackagestable .form-inline { margin-top: 20px; } 73#no-results-special-selectpackagestable .form-inline { margin-top: 20px; }
62[id^="pagination-"] .pagination, 74[id^="pagination-"] .pagination,
63[id^="pagination-"] .navbar-form { margin-top: 0; } 75[id^="pagination-"] .navbar-form { margin-top: 0; }
64[id^="table-chrome-"] .navbar-form { margin-left: -15px; margin-right: -15px; } 76[id^="table-chrome-"] .navbar-form { margin-left: -15px; margin-right: -15px; }
65[id^="table-chrome-"] .detail-page-contols { padding-left: 0; padding-right: 0; } 77[id^="table-chrome-"] .detail-page-contols,
78#packages-built .detail-page-controls { padding-left: 0; padding-right: 0; }
66 79
67/* Override the default font-weight for labels: it's a bit too much */ 80/* Override the default font-weight for labels: it's a bit too much */
68label { font-weight: normal; } 81label { font-weight: normal; }
@@ -86,7 +99,7 @@ dd > .glyphicon-ok-circle { color: #3c763d; }
86tbody > tr > td > .glyphicon-minus-sign { color: #a94442; } 99tbody > tr > td > .glyphicon-minus-sign { color: #a94442; }
87.glyphicon-download-alt, 100.glyphicon-download-alt,
88.glyphicon-edit { color: #337ab7; } 101.glyphicon-edit { color: #337ab7; }
89.failed_tasks .glyphicon-download-alt { margin-left: 5px; } 102.failed_tasks .glyphicon-download-alt { margin-left: 5px; }
90.glyphicon-download-alt:hover, 103.glyphicon-download-alt:hover,
91.glyphicon-edit:hover { color: #23527c; cursor: pointer; text-decoration: none; } 104.glyphicon-edit:hover { color: #23527c; cursor: pointer; text-decoration: none; }
92.glyphicon-trash { color: #a94442; } 105.glyphicon-trash { color: #a94442; }
@@ -98,7 +111,8 @@ tbody > tr > td > .glyphicon-minus-sign { color: #a94442; }
98h1 > .glyphicon-edit, 111h1 > .glyphicon-edit,
99p.lead .glyphicon { font-size: 16px; } 112p.lead .glyphicon { font-size: 16px; }
100h2 > .glyphicon-question-sign, 113h2 > .glyphicon-question-sign,
101h3 > .glyphicon-question-sign { font-size: 14px; } 114h3 > .glyphicon-question-sign,
115.heading-help { font-size: 14px; }
102 116
103/* Create a class for wells without background colour */ 117/* Create a class for wells without background colour */
104.well-transparent { background-color: transparent; } 118.well-transparent { background-color: transparent; }
@@ -205,6 +219,13 @@ td > .tooltip-inner,
205#recipestable .get_description_or_summary { width: 40%; } 219#recipestable .get_description_or_summary { width: 40%; }
206#machinestable .name { white-space: nowrap; } 220#machinestable .name { white-space: nowrap; }
207#machinestable .description { width: 45%; } 221#machinestable .description { width: 45%; }
222#otable .variable_value,
223#otable .file { word-break: break-all; width: 25%; }
224[id^="variable-"] .file { word-break: break-all; }
225
226/* For the tables still not ported to ToasterTables, style the table headings
227 * that are not sortable */
228th > span.text-muted { font-weight: normal; }
208 229
209/* Override the rather ugly default code styles */ 230/* Override the rather ugly default code styles */
210code { color: #333; background-color: transparent; } 231code { color: #333; background-color: transparent; }
@@ -234,7 +255,7 @@ code { color: #333; background-color: transparent; }
234.date-filter-controls span { margin: 0 10px; } 255.date-filter-controls span { margin: 0 10px; }
235 256
236/* Style the fixed positioned notifications */ 257/* Style the fixed positioned notifications */
237.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; } 258#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; }
238 259
239.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; } 260.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; }
240 261
@@ -246,3 +267,76 @@ code { color: #333; background-color: transparent; }
246 267
247/* Style the Toaster screenshot in the landing page */ 268/* Style the Toaster screenshot in the landing page */
248.img-thumbnail { padding: 0; } 269.img-thumbnail { padding: 0; }
270
271/* Set the layout for the build information pages */
272
273#nav { margin-top: 10px; }
274.page-header.build-data { margin-top: 0px; }
275.build-data > h1 { margin-top: 8px; }
276
277/* Style the build outcome information in the build dashboard */
278.log { margin-left: 30px; }
279.show-warnings { font-weight: 700; color: #8a6d3b; }
280.show-warnings:hover { color: #66512c; }
281
282/* Style the errors and warnings information in the build dashboard */
283#errors .panel-heading { background-color: transparent; color: #843534; }
284#warnings .panel-heading { background-color: transparent; color: #8a6d3b; }
285#warnings .panel-heading a:hover { color: #66512c; }
286h2.panel-title { font-size: 30px; }
287.alert-danger pre,
288.alert-warning pre { background-color: transparent; border: none; }
289.alert-danger pre { color: #a94442; }
290#error-info pre,
291#warning-info pre { white-space: pre-wrap; }
292.alert-warning pre { color: #8a6d3b; }
293
294/* Style the wells in the build dashboard */
295.dashboard-section h3 { margin-top: 10px; margin-bottom: 20px; }
296.col-md-4.dashboard-section dd { margin-bottom: 10px; }
297
298/* Make the help in tables insivisble until you hover over the right cell */
299.hover-help { visibility: hidden; }
300
301/* Blue hightlight animation for tasks and directory structure tables */
302.highlight { -webkit-animation: target-fade 15s 1; -moz-animation: target-fade 15s 1; animation: target-fade 15s 1; }
303@-webkit-keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } }
304@-moz-keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } }
305@keyframes target-fade { 0% { background-color: #D9EDF7; } 25% { background-color: #D9EDF7; } 100% { background-color: white; } }
306
307/* Copied in from newer version of Font-Awesome 4.3.0 */
308.fa-spin {
309 -webkit-animation: fa-spin 2s infinite linear;
310 animation: fa-spin 2s infinite linear;
311 display: inline-block;
312}
313.fa-pulse {
314 -webkit-animation: fa-spin 1s infinite steps(8);
315 animation: fa-spin 1s infinite steps(8);
316 display: inline-block;
317}
318
319@-webkit-keyframes fa-spin {
320 0% {
321 -webkit-transform: rotate(0deg);
322 transform: rotate(0deg);
323 }
324 100% {
325 -webkit-transform: rotate(359deg);
326 transform: rotate(359deg);
327 }
328}
329
330@keyframes fa-spin {
331 0% {
332 -webkit-transform: rotate(0deg);
333 -moz-transform: rotate(0deg);
334 transform: rotate(0deg);
335 }
336 100% {
337 -webkit-transform: rotate(359deg);
338 -moz-transform: rotate(359deg);
339 transform: rotate(359deg);
340 }
341}
342/* End copied in from newer version of Font-Awesome 4.3.0 */
diff --git a/bitbake/lib/toaster/toastergui/static/js/libtoaster.js b/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
index e4e4f6cf56..eafe70ddee 100644
--- a/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
+++ b/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
@@ -541,9 +541,7 @@ $(document).ready(function() {
541 delay: { show : 300 } 541 delay: { show : 300 }
542 }); 542 });
543 543
544 // show help bubble only on hover inside tables 544 // show help bubble on hover inside tables
545 $(".hover-help").css("visibility","hidden");
546
547 $("table").on("mouseover", "th, td", function () { 545 $("table").on("mouseover", "th, td", function () {
548 $(this).find(".hover-help").css("visibility","visible"); 546 $(this).find(".hover-help").css("visibility","visible");
549 }); 547 });
diff --git a/bitbake/lib/toaster/toastergui/templates/base.html b/bitbake/lib/toaster/toastergui/templates/base.html
index 73e4cd81c4..8a9f690309 100644
--- a/bitbake/lib/toaster/toastergui/templates/base.html
+++ b/bitbake/lib/toaster/toastergui/templates/base.html
@@ -62,7 +62,7 @@
62 <body> 62 <body>
63 63
64 {% csrf_token %} 64 {% csrf_token %}
65 <div id="loading-notification" class="alert lead text-center" style="display:none"> 65 <div id="loading-notification" class="alert alert-warning lead text-center" style="display:none">
66 Loading <i class="fa-pulse icon-spinner"></i> 66 Loading <i class="fa-pulse icon-spinner"></i>
67 </div> 67 </div>
68 68
diff --git a/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html b/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html
index 3a4c38347d..4d50667322 100644
--- a/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html
+++ b/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html
@@ -5,21 +5,23 @@
5 5
6<div class="row"> 6<div class="row">
7 <!-- Breadcrumbs --> 7 <!-- Breadcrumbs -->
8 <ul class="breadcrumb" id="breadcrumb"> 8 <div class="col-md-12">
9 <li><a href="{% project_url build.project %}">{{build.project.name}}</a></li> 9 <ul class="breadcrumb" id="breadcrumb">
10 {% if not build.project.is_default %} 10 <li><a href="{% project_url build.project %}">{{build.project.name}}</a></li>
11 <li><a href="{% url 'projectbuilds' build.project.id %}">Builds</a></li> 11 {% if not build.project.is_default %}
12 {% endif %} 12 <li><a href="{% url 'projectbuilds' build.project.id %}">Builds</a></li>
13 <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> 13 {% endif %}
14 {% block localbreadcrumb %}{% endblock %} 14 <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>
15 </ul> 15 {% block localbreadcrumb %}{% endblock %}
16 <script> 16 </ul>
17 <script>
17$( function () { 18$( function () {
18 $('#breadcrumb > li').append('<span class="divider">&rarr;</span>'); 19 $('#breadcrumb > li').append('<span class="divider">&rarr;</span>');
19 $('#breadcrumb > li:last').addClass("active"); 20 $('#breadcrumb > li:last').addClass("active");
20 $('#breadcrumb > li:last > span').remove(); 21 $('#breadcrumb > li:last > span').remove();
21 }); 22 });
22 </script> 23 </script>
24 </div>
23</div> 25</div>
24 26
25<!-- Begin container --> 27<!-- Begin container -->
diff --git a/bitbake/lib/toaster/toastergui/templates/basebuildpage.html b/bitbake/lib/toaster/toastergui/templates/basebuildpage.html
index c002e42b7d..d9adcd77f8 100644
--- a/bitbake/lib/toaster/toastergui/templates/basebuildpage.html
+++ b/bitbake/lib/toaster/toastergui/templates/basebuildpage.html
@@ -7,7 +7,7 @@
7 7
8<div class="row"> 8<div class="row">
9 <!-- breadcrumbs --> 9 <!-- breadcrumbs -->
10 <div class="section"> 10 <div class="col-md-12">
11 <ul class="breadcrumb" id="breadcrumb"> 11 <ul class="breadcrumb" id="breadcrumb">
12 <li><a href="{% project_url build.project %}">{{build.project.name}}</a></li> 12 <li><a href="{% project_url build.project %}">{{build.project.name}}</a></li>
13 {% if not build.project.is_default %} 13 {% if not build.project.is_default %}
@@ -44,12 +44,12 @@
44 <div class="row"> 44 <div class="row">
45 <!-- begin left sidebar container --> 45 <!-- begin left sidebar container -->
46 <div id="nav" class="col-md-2"> 46 <div id="nav" class="col-md-2">
47 <ul class="nav nav-list well" id="build-menu"> 47 <ul class="nav nav-pills nav-stacked" id="build-menu">
48 <li 48 <li
49 {% if request.resolver_match.url_name == 'builddashboard' %} 49 {% if request.resolver_match.url_name == 'builddashboard' %}
50 class="active" 50 class="active"
51 {% endif %} > 51 {% endif %} >
52 <a class="nav-parent" href="{% url 'builddashboard' build.pk %}">Build summary</a> 52 <a href="{% url 'builddashboard' build.pk %}">Build summary</a>
53 </li> 53 </li>
54 {% if build.target_set.all.0.is_image and build.outcome == 0 %} 54 {% if build.target_set.all.0.is_image and build.outcome == 0 %}
55 <li class="nav-header">Images</li> 55 <li class="nav-header">Images</li>
@@ -72,56 +72,42 @@
72 <li><a href="{% url 'cputime' build.pk %}">CPU usage</a></li> 72 <li><a href="{% url 'cputime' build.pk %}">CPU usage</a></li>
73 <li><a href="{% url 'diskio' build.pk %}">Disk I/O</a></li> 73 <li><a href="{% url 'diskio' build.pk %}">Disk I/O</a></li>
74 74
75 <li class="divider"></li> 75 <li class="nav-header">Actions</li>
76 76 <a class="btn btn-default btn-block navbar-btn" href="{% url 'build_artifact' build.id 'cookerlog' build.id %}">Download build log</a>
77 <li>
78 <p class="navbar-btn">
79 <a class="btn btn-block" href="{% url 'build_artifact' build.id 'cookerlog' build.id %}">
80 Download build log
81 </a>
82 </p>
83 </li>
84 77
85 {% with build.get_custom_image_recipes as custom_image_recipes %} 78 {% with build.get_custom_image_recipes as custom_image_recipes %}
86 {% if custom_image_recipes.count > 0 %} 79 {% if custom_image_recipes.count > 0 %}
87 <!-- edit custom image built during this build --> 80 <!-- edit custom image built during this build -->
88 <li> 81 <button class="btn btn-default btn-block navbar-btn" data-role="edit-custom-image-trigger">Edit custom image</button>
89 <p class="navbar-btn" data-role="edit-custom-image-trigger"> 82 {% include 'editcustomimage_modal.html' %}
90 <button class="btn btn-block">Edit custom image</button> 83 <script>
91 {% include 'editcustomimage_modal.html' %} 84 var editableCustomImageRecipes = {{ custom_image_recipes | objects_to_dictionaries:"id,name" | json }};
92 <script>
93 var editableCustomImageRecipes = {{ custom_image_recipes | objects_to_dictionaries:"id,name" | json }};
94 85
95 $(document).ready(function () { 86 $(document).ready(function () {
96 var editCustomImageTrigger = $('[data-role="edit-custom-image-trigger"]'); 87 var editCustomImageTrigger = $('[data-role="edit-custom-image-trigger"]');
97 var editCustomImageModal = $('#edit-custom-image-modal'); 88 var editCustomImageModal = $('#edit-custom-image-modal');
98 89
99 // edit custom image which was built during this build 90 // edit custom image which was built during this build
100 editCustomImageTrigger.click(function () { 91 editCustomImageTrigger.click(function () {
101 // single editable custom image: redirect to the edit page 92 // single editable custom image: redirect to the edit page
102 // for that image 93 // for that image
103 if (editableCustomImageRecipes.length === 1) { 94 if (editableCustomImageRecipes.length === 1) {
104 var url = '{% url "customrecipe" build.project.id custom_image_recipes.first.id %}'; 95 var url = '{% url "customrecipe" build.project.id custom_image_recipes.first.id %}';
105 document.location.href = url; 96 document.location.href = url;
106 } 97 }
107 // multiple editable custom images: show modal to select 98 // multiple editable custom images: show modal to select
108 // one of them for editing 99 // one of them for editing
109 else { 100 else {
110 editCustomImageModal.modal('show'); 101 editCustomImageModal.modal('show');
111 } 102 }
112 });
113 }); 103 });
114 </script> 104 });
115 </p> 105 </script>
116 </li>
117 {% endif %} 106 {% endif %}
118 {% endwith %} 107 {% endwith %}
119 108
120 <li>
121 <!-- new custom image from image recipe in this build --> 109 <!-- new custom image from image recipe in this build -->
122 <p class="navbar-btn" data-role="new-custom-image-trigger"> 110 <button class="btn btn-default btn-block navbar-btn" data-role="new-custom-image-trigger">New custom image</button>
123 <button class="btn btn-block">New custom image</button>
124 </p>
125 {% include 'newcustomimage_modal.html' %} 111 {% include 'newcustomimage_modal.html' %}
126 <script> 112 <script>
127 // imageRecipes includes both custom image recipes and built-in 113 // imageRecipes includes both custom image recipes and built-in
@@ -145,7 +131,6 @@
145 }); 131 });
146 }); 132 });
147 </script> 133 </script>
148 </li>
149 </ul> 134 </ul>
150 135
151 </div> 136 </div>
diff --git a/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html b/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html
index 96f405c433..a2011fa902 100644
--- a/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html
+++ b/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html
@@ -2,7 +2,7 @@
2 </table> 2 </table>
3 3
4<!-- Show pagination controls --> 4<!-- Show pagination controls -->
5<div> 5<div id="pagination-basetable_bottom">
6 <!--span class="help-inline">Showing {{objects.start_index}} to {{objects.end_index}} out of {{objects.paginator.count}} entries.</span--> 6 <!--span class="help-inline">Showing {{objects.start_index}} to {{objects.end_index}} out of {{objects.paginator.count}} entries.</span-->
7 7
8 <ul class="pagination"> 8 <ul class="pagination">
@@ -20,16 +20,18 @@
20 <li class="disabled"><a href="#">&raquo;</a></li> 20 <li class="disabled"><a href="#">&raquo;</a></li>
21{%endif%} 21{%endif%}
22 </ul> 22 </ul>
23 <div class="pull-right"> 23 <form class="navbar-form navbar-right">
24 <span class="help-inline">Show rows:</span> 24 <div class="form-group">
25 <select class="pagesize"> 25 <label>Show rows:</label>
26 {% with "10 25 50 100 150" as list%} 26 <select class="form-control pagesize">
27 {% with "10 25 50 100 150" as list%}
27 {% for i in list.split %} 28 {% for i in list.split %}
28 <option value="{{i}}">{{i}}</option> 29 <option value="{{i}}">{{i}}</option>
29 {% endfor %} 30 {% endfor %}
30 {% endwith %} 31 {% endwith %}
31 </select> 32 </select>
32 </div> 33 </div>
34 </form>
33</div> 35</div>
34 36
35<!-- Update page display settings --> 37<!-- Update page display settings -->
diff --git a/bitbake/lib/toaster/toastergui/templates/basetable_top.html b/bitbake/lib/toaster/toastergui/templates/basetable_top.html
index 6731ff2b8d..5a9076d2aa 100644
--- a/bitbake/lib/toaster/toastergui/templates/basetable_top.html
+++ b/bitbake/lib/toaster/toastergui/templates/basetable_top.html
@@ -159,68 +159,83 @@
159 </script> 159 </script>
160 160
161<!-- control header --> 161<!-- control header -->
162<div class="navbar"> 162<div class="navbar navbar-default">
163 <div class="navbar-inner"> 163 <div class="container-fluid">
164 <form class="navbar-search" id="searchform"> 164 <div class="navbar-header">
165 <div class="input-append"> 165 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#table-chrome-collapse-variablehistory" aria-expanded="false">
166 <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%} 166 <span class="sr-only">Toggle table options</span>
167 <input type="hidden" name="orderby" value="{{request.GET.orderby}}"> 167 <span class="icon-bar"></span>
168 <input type="hidden" name="page" value="1"> 168 <span class="icon-bar"></span>
169 <button class="btn" id="search-button" type="submit" value="Search">Search</button> 169 <span class="icon-bar"></span>
170 </button>
171 </div>
172 <div class="collapse navbar-collapse" id="table-chrome-collapse-variablehistory">
173 <form class="navbar-form navbar-left" id="searchform">
174 <div class="form-group">
175 <div class="btn-group">
176 <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 %}"/>
177 {% 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%}
170 </div> 178 </div>
171 </form> 179 </div>
172 <div class="pull-right"> 180 <input type="hidden" name="orderby" value="{{request.GET.orderby}}">
173{% if tablecols %} 181 <input type="hidden" name="page" value="1">
174 <div class="btn-group"> 182 <button class="btn btn-default" id="search-button" type="submit" value="Search">Search</button>
175 <button id="edit-columns-button" class="btn dropdown-toggle" data-toggle="dropdown">Edit columns 183 </form>
176 <span class="caret"></span> 184 <form class="navbar-form navbar-right">
177 </button> 185 <div class="form-group">
186 <label>Show rows:</label>
187 <select class="pagesize form-control">
188 {% with "10 25 50 100 150" as list%}
189 {% for i in list.split %}
190 <option value="{{i}}">{{i}}</option>
191 {% endfor %}
192 {% endwith %}
193 </select>
194 </div>
195 </form>
196
197 <div class="btn-group navbar-right">
198 {% if tablecols %}
199 <button id="edit-columns-button" class="btn btn-default navbar-btn dropdown-toggle" data-toggle="dropdown">Edit columns
200 <span class="caret"></span>
201 </button>
178<!-- 202<!--
179 {{tablecols|sortcols}} 203 {{tablecols|sortcols}}
180--> 204-->
181 <ul id='editcol' class="dropdown-menu"> 205 <ul id="editcol" class="dropdown-menu editcol">
182 {% for i in tablecols|sortcols %} 206 {% for i in tablecols|sortcols %}
183 <li> 207 <li>
184 <label {% if not i.clclass %} class="checkbox muted" {%else%} class="checkbox" {%endif%}> 208 <div class="checkbox">
185 <input type="checkbox" class="chbxtoggle" 209 <label {% if not i.clclass %} class="muted" {%endif%}>
186 {% if i.clclass %} 210 <input type="checkbox" class="chbxtoggle"
211 {% if i.clclass %}
187 id="{{i.clclass}}" 212 id="{{i.clclass}}"
188 value="ct{{i.name}}" 213 value="ct{{i.name}}"
189 {% if not i.hidden %} 214 {% if not i.hidden %}
190 checked="checked" 215 checked="checked"
191 {%endif%} 216 {%endif%}
192 onclick="showhideTableColumn( 217 onclick="showhideTableColumn(
193 $(this).attr('id'), 218 $(this).attr('id'),
194 $(this).is(':checked'), 219 $(this).is(':checked'),
195 {% if i.ordericon %} 220 {% if i.ordericon %}
196 '{{i.orderkey}}' 221 '{{i.orderkey}}'
197 {% else %} 222 {% else %}
198 undefined 223 undefined
199 {% endif %} 224 {% endif %}
200 )" 225 )"
201 {%else%} 226 {%else%}
202 checked disabled 227 checked disabled
203 {% endif %}/> {{i.name}} 228 {% endif %}/>{{i.name}}
204 </label> 229 </label>
205 </li>
206 {% endfor %}
207 </ul>
208 </div> 230 </div>
209{% endif %} 231 </li>
210 <div style="display:inline"> 232 {% endfor %}
211 <span class="divider-vertical"></span> 233 </ul>
212 <span class="help-inline" style="padding-top:5px;">Show rows:</span> 234 {% endif %}
213 <select style="margin-top:5px;margin-bottom:0px;" class="pagesize"> 235 </div>
214 {% with "10 25 50 100 150" as list%} 236 </div> <!-- navbar-collapse -->
215 {% for i in list.split %} 237 </div> <!-- container-fluid -->
216 <option value="{{i}}">{{i}}</option> 238</div> <!-- navbar-default -->
217 {% endfor %}
218 {% endwith %}
219 </select>
220 </div>
221 </div>
222 </div> <!-- navbar-inner -->
223</div>
224 239
225<!-- the actual rows of the table --> 240<!-- the actual rows of the table -->
226 <table class="table table-bordered table-hover tablesorter" id="otable"> 241 <table class="table table-bordered table-hover tablesorter" id="otable">
@@ -228,11 +243,11 @@
228 <!-- Table header row; generated from "tablecols" entry in the context dict --> 243 <!-- Table header row; generated from "tablecols" entry in the context dict -->
229 <tr> 244 <tr>
230 {% for tc in tablecols %}<th class="{%if tc.dclass%}{{tc.dclass}}{%endif%} {% if tc.clclass %}{{tc.clclass}}{% endif %}"> 245 {% for tc in tablecols %}<th class="{%if tc.dclass%}{{tc.dclass}}{%endif%} {% if tc.clclass %}{{tc.clclass}}{% endif %}">
231 {%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%} 246 {%if tc.qhelp%}<span class="glyphicon glyphicon-question-sign get-help" title="{{tc.qhelp}}"></span>{%endif%}
232 {%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%} 247 {%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%}
233 {%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%} 248 {%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%}
234 {%if tc.filter%}<div class="btn-group pull-right"> 249 {%if tc.filter%}<div class="btn-group pull-right">
235 <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> 250 <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>
236 </div>{%endif%} 251 </div>{%endif%}
237 </th>{% endfor %} 252 </th>{% endfor %}
238 </tr> 253 </tr>
diff --git a/bitbake/lib/toaster/toastergui/templates/builddashboard.html b/bitbake/lib/toaster/toastergui/templates/builddashboard.html
index f33757eaca..04a57ef64f 100644
--- a/bitbake/lib/toaster/toastergui/templates/builddashboard.html
+++ b/bitbake/lib/toaster/toastergui/templates/builddashboard.html
@@ -14,57 +14,49 @@
14{% block buildinfomain %} 14{% block buildinfomain %}
15<!-- page title --> 15<!-- page title -->
16<div class="col-md-10"> 16<div class="col-md-10">
17 <div class="page-header"> 17 <div class="page-header build-data">
18 <h1>{{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}}</h1> 18 <h1>{{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}}</h1>
19 </div> 19 </div>
20 20
21<!-- build result bar --> 21<!-- build result bar -->
22 <div class="alert {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-error{%else%}alert-info{%endif%}"> 22 <div class="alert {%if build.outcome == build.SUCCEEDED%}alert-success{%elif build.outcome == build.FAILED%}alert-danger{%else%}alert-info{%endif%}">
23 <div class="lead"> 23 <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>
24 <span><strong> 24 {% if build.warnings.count or build.errors.count %}
25 {%if build.outcome == build.SUCCEEDED%}Completed{%elif build.outcome == build.FAILED%}Failed{%else%}{%endif%} 25 <span>with</span>
26 </strong> on 26 {% endif %}
27 {{build.completed_on|date:"d/m/y H:i"}} 27 {%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %}
28</span> 28 {% if build.errors.count %}
29{% if build.warnings.count or build.errors.count %} 29 <a href="#errors" class="alert-link show-errors"> {{build.errors.count}} error{{build.errors.count|pluralize}}</a>
30&nbsp;with 30 {% endif %}
31{% endif %} 31 {% if build.warnings.count %}
32{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %} 32 {% if build.errors.count %}and{% endif %}
33{% if build.errors.count %} 33 <a href="#warnings" class="show-warnings"> {{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a>
34 <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> 34 {% endif %}
35{% endif %} 35 {% if build.cooker_log_path %}
36{% if build.warnings.count %} 36 <a class="alert-link pull-right log" href="{% url 'build_artifact' build.id "cookerlog" build.id %}">Download build log</a>
37{% if build.errors.count %} 37 {% endif %}
38 and 38 <span class="pull-right">
39{% endif %} 39 Build time:
40 <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> 40 <a class="alert-link" href="{% url 'buildtime' build.pk %}">{{ build.timespent_seconds|sectohms }}</a>
41{% endif %} 41 </span>
42 <span class="pull-right">Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent_seconds|sectohms }}</a> 42 {%endif%}
43 {% if build.cooker_log_path %} 43</div>
44 <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>
45 {% endif %}
46 </span>
47
48{%endif%}
49 </div>
50 </div>
51 44
52{% if build.errors.count %} 45{% if build.errors.count %}
53<div class="panel-group" id="errors"> 46 <div class="panel panel-default" id="errors">
54 <div class="panel panel-default">
55 <div class="panel-heading"> 47 <div class="panel-heading">
56 <a class="panel-title error toggle-errors" href="#"> 48 <h2 class="panel-title">
57 <h2 id="error-toggle"> 49 <span class="glyphicon glyphicon-minus-sign"></span>
58 <i class="icon-minus-sign"></i> 50 <a data-toggle="collapse" href="#error-info" id="error-toggle">
59 {{build.errors.count}} error{{build.errors.count|pluralize}} 51 {{build.errors.count}} error{{build.errors.count|pluralize}}
60 </h2> 52 </a>
61 </a> 53 </h2>
62 </div> 54 </div>
63 <div class="panel-collapse collapse in" id="collapse-errors"> 55 <div class="panel-collapse collapse in" id="error-info">
64 <div class="panel-body"> 56 <div class="panel-body">
65 <div class="col-md-10"> 57 <div class="col-md-10">
66 {% for error in build.errors %} 58 {% for error in build.errors %}
67 <div class="alert alert-error" data-error="{{ error.id }}"> 59 <div class="alert alert-danger" data-error="{{ error.id }}">
68 <pre>{{error.message}}</pre> 60 <pre>{{error.message}}</pre>
69 </div> 61 </div>
70 {% endfor %} 62 {% endfor %}
@@ -72,7 +64,6 @@
72 </div> 64 </div>
73 </div> 65 </div>
74 </div> 66 </div>
75</div>
76{% endif %} 67{% endif %}
77 68
78{%if build.outcome == build.SUCCEEDED%} 69{%if build.outcome == build.SUCCEEDED%}
@@ -81,9 +72,8 @@
81 <h2>Images</h2> 72 <h2>Images</h2>
82 {% for target in targets %} 73 {% for target in targets %}
83 {% if target.target.is_image %} 74 {% if target.target.is_image %}
84 <div class="well dashboard-section"> 75 <div class="well well-transparent dashboard-section">
85 <h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target}}</a> 76 <h3><a href="{% url 'target' build.pk target.target.pk %}">{{target.target}}</a></h3>
86 </h3>
87 <dl class="dl-horizontal"> 77 <dl class="dl-horizontal">
88 <dt>Packages included</dt> 78 <dt>Packages included</dt>
89 <dd><a href="{% url 'target' build.pk target.target.pk %}">{{target.npkg}}</a></dd> 79 <dd><a href="{% url 'target' build.pk target.target.pk %}">{{target.npkg}}</a></dd>
@@ -100,7 +90,7 @@
100 <p> 90 <p>
101 This is probably because valid image and license manifest 91 This is probably because valid image and license manifest
102 files from a previous build already exist in your 92 files from a previous build already exist in your
103 <code>.../poky/build/tmp/deploy</code> 93 <code>build/tmp/deploy</code>
104 directory. You can 94 directory. You can
105 also <a href="{% url 'target' build.pk target.target.pk %}">view the 95 also <a href="{% url 'target' build.pk target.target.pk %}">view the
106 license manifest information</a> in Toaster. 96 license manifest information</a> in Toaster.
@@ -110,7 +100,7 @@
110 </div> 100 </div>
111 {% else %} 101 {% else %}
112 <dt> 102 <dt>
113 <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> 103 <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>
114 104
115 License manifest 105 License manifest
116 </dt> 106 </dt>
@@ -118,11 +108,11 @@
118 <a href="{% url 'target' build.pk target.target.pk %}">View in Toaster</a> | 108 <a href="{% url 'target' build.pk target.target.pk %}">View in Toaster</a> |
119 <a href="{% url 'build_artifact' build.pk 'licensemanifest' target.target.pk %}">Download</a></dd> 109 <a href="{% url 'build_artifact' build.pk 'licensemanifest' target.target.pk %}">Download</a></dd>
120 <dt> 110 <dt>
121 <i class="icon-question-sign get-help" title="Image files are stored in <code>/build/tmp/deploy/images/</code>"></i> 111 <span class="glyphicon glyphicon-question-sign get-help" title="Image files are stored in <code>build/tmp/deploy/images/</code>"></span>
122 Image files 112 Image files
123 </dt> 113 </dt>
124 <dd> 114 <dd>
125 <ul> 115 <ul class="list-unstyled">
126 {% for i in target.imageFiles %} 116 {% for i in target.imageFiles %}
127 <li> 117 <li>
128 <a href="{% url 'build_artifact' build.pk 'imagefile' i.id %}"> 118 <a href="{% url 'build_artifact' build.pk 'imagefile' i.id %}">
@@ -148,10 +138,10 @@
148{% if build.buildartifact_set.all.count > 0 %} 138{% if build.buildartifact_set.all.count > 0 %}
149<h2>Other artifacts</h2> 139<h2>Other artifacts</h2>
150 140
151 <div class="well dashboard-section"> 141 <div class="well well-transparent dashboard-section">
152 <dl class="dl-horizontal"> 142 <dl class="dl-horizontal">
153 <dt> 143 <dt>
154 <i class="icon-question-sign get-help" title="Build artifacts discovered in <i>tmp/deploy/images</i>. Usually kernel images and kernel modules."></i> 144 <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>
155 Other artifacts</dt> 145 Other artifacts</dt>
156 <dd><div> 146 <dd><div>
157 {% for ba in build.buildartifact_set.all|dictsort:"file_name" %} 147 {% for ba in build.buildartifact_set.all|dictsort:"file_name" %}
@@ -172,51 +162,51 @@
172 <div class="row"> 162 <div class="row">
173 <div class="col-md-4 dashboard-section"> 163 <div class="col-md-4 dashboard-section">
174 <div class="well well-transparent"> 164 <div class="well well-transparent">
175 <h4><a href="{%url 'configuration' build.pk%}">Configuration</a></h4> 165 <h3><a href="{%url 'configuration' build.pk%}">Configuration</a></h3>
176 <dl> 166 <dl>
177 <dt>Machine</dt><dd>{{build.machine}}</dd> 167 <dt>Machine</dt><dd>{{build.machine}}</dd>
178 <dt>Distro</dt><dd>{{build.distro}}</dd> 168 <dt>Distro</dt><dd>{{build.distro}}</dd>
179 <dt>Layers</dt>{% for i in build.layer_version_build.all|dictsort:"layer.name" %}<dd>{{i.layer.name}}</dd>{%endfor%} 169 <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>
180 </dl> 170 </dl>
181 </div> 171 </div>
182 </div> 172 </div>
183 <div class="col-md-4 dashboard-section"> 173 <div class="col-md-4 dashboard-section">
184 <div class="well well-transparent"> 174 <div class="well well-transparent">
185 <h4><a href="{%url 'tasks' build.pk%}">Tasks</a></h4> 175 <h3><a href="{%url 'tasks' build.pk%}">Tasks</a></h3>
186 <dl> 176 <dl>
187 {% query build.task_build outcome=4 order__gt=0 as exectask%} 177 {% query build.task_build outcome=4 order__gt=0 as exectask%}
188 {% if exectask.count > 0 %} 178 {% if exectask.count > 0 %}
189 <dt>Failed tasks</dt> 179 <dt>Failed tasks</dt>
190 <dd> 180 <dd>
191 {% if exectask.count == 1 %} 181 {% if exectask.count == 1 %}
192 <a class="error" href="{% url "task" build.id exectask.0.id %}"> 182 <a class="text-danger" href="{% url "task" build.id exectask.0.id %}">
193 {{exectask.0.recipe.name}} 183 {{exectask.0.recipe.name}}
194 <span class="task-name">{{exectask.0.task_name}}</span> 184 <span class="task-name">{{exectask.0.task_name}}</span>
195 </a> 185 </a>
196 186
197 <a href="{% url 'build_artifact' build.id "tasklogfile" exectask.0.id %}"> 187 <a href="{% url 'build_artifact' build.id "tasklogfile" exectask.0.id %}">
198 <i class="icon-download-alt" title="" data-original-title="Download task log file"></i> 188 <span class="glyphicon glyphicon-download-alt get-help" title="Download task log file"></i>
199 </a> 189 </a>
200 190
201 {% elif exectask.count > 1%} 191 {% elif exectask.count > 1%}
202 <a class="error" href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}}</a> 192 <a class="text-danger" href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}}</a>
203 {% endif %} 193 {% endif %}
204 </dd> 194 </dd>
205 {% endif %} 195 {% endif %}
206 <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> 196 <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>
207 <dt> 197 <dt>
208 Tasks executed 198 Tasks executed
209 <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> 199 <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>
210 </dt> 200 </dt>
211 <dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A1&amp;count=25&amp;search=&amp;page=1&amp;orderby=order%3A%2B">{% query build.task_build task_executed=1 order__gt=0 as exectask%}{{exectask.count}}</a></dd> 201 <dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A1&amp;count=25&amp;search=&amp;page=1&amp;orderby=order%3A%2B">{% query build.task_build task_executed=1 order__gt=0 as exectask%}{{exectask.count}}</a></dd>
212 <dt> 202 <dt>
213 Tasks not executed 203 Tasks not executed
214 <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> 204 <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>
215 </dt> 205 </dt>
216 <dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A0&amp;count=25&amp;search=&amp;page=1&amp;orderby=order%3A%2B">{% query build.task_build task_executed=0 order__gt=0 as noexectask%}{{noexectask.count}}</a></dd> 206 <dd><a href="{% url 'tasks' build.pk %}?filter=task_executed%3A0&amp;count=25&amp;search=&amp;page=1&amp;orderby=order%3A%2B">{% query build.task_build task_executed=0 order__gt=0 as noexectask%}{{noexectask.count}}</a></dd>
217 <dt> 207 <dt>
218 Reuse 208 Reuse
219 <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> 209 <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>
220 </dt> 210 </dt>
221 <dd> 211 <dd>
222{% query build.task_build order__gt=0 as texec %} 212{% query build.task_build order__gt=0 as texec %}
@@ -232,7 +222,7 @@
232 </div> 222 </div>
233 <div class="col-md-4 dashboard-section"> 223 <div class="col-md-4 dashboard-section">
234 <div class="well well-transparent"> 224 <div class="well well-transparent">
235 <h4><a href="{% url 'recipes' build.pk %}">Recipes</a> & <a href="{% url 'packages' build.pk %}">Packages</a></h4> 225 <h3><a href="{% url 'recipes' build.pk %}">Recipes</a> & <a href="{% url 'packages' build.pk %}">Packages</a></h3>
236 <dl> 226 <dl>
237 <dt>Recipes built</dt><dd><a href="{% url 'recipes' build.pk %}">{{recipecount}}</a></dd> 227 <dt>Recipes built</dt><dd><a href="{% url 'recipes' build.pk %}">{{recipecount}}</a></dd>
238 <dt>Packages built</dt><dd><a href="{% url 'packages' build.pk %}">{{packagecount}}</a></dd> 228 <dt>Packages built</dt><dd><a href="{% url 'packages' build.pk %}">{{packagecount}}</a></dd>
@@ -242,17 +232,14 @@
242</div> 232</div>
243 233
244{% if build.warnings.count %} 234{% if build.warnings.count %}
245<div class="panel-group" id="warnings"> 235 <div class="panel panel-default" id="warnings">
246 <div class="panel panel-default">
247 <div class="panel-heading"> 236 <div class="panel-heading">
248 <a class="panel-title warning toggle-warnings" href="#"> 237 <h2 class="panel-title">
249 <h2 id="warning-toggle"> 238 <span class="glyphicon glyphicon-warning-sign"></span>
250 <i class="icon-warning-sign"></i> 239 <a id="warning-toggle" href="#warning-info" data-toggle="collapse">{{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a>
251 {{build.warnings.count}} warning{{build.warnings.count|pluralize}} 240 </h2>
252 </h2>
253 </a>
254 </div> 241 </div>
255 <div class="panel-collapse collapse" id="collapse-warnings"> 242 <div class="panel-collapse collapse" id="warning-info">
256 <div class="panel-body"> 243 <div class="panel-body">
257 <div class="col-md-10"> 244 <div class="col-md-10">
258 {% for warning in logmessages %}{% if warning.level == 1 %} 245 {% for warning in logmessages %}{% if warning.level == 1 %}
@@ -264,7 +251,6 @@
264 </div> 251 </div>
265 </div> 252 </div>
266 </div> 253 </div>
267</div>
268{% endif %} 254{% endif %}
269 255
270</div> <!-- end 10 column row --> 256</div> <!-- end 10 column row -->
@@ -273,8 +259,13 @@
273 $(document).ready(function() { 259 $(document).ready(function() {
274 //show warnings section when requested from the previous page 260 //show warnings section when requested from the previous page
275 if (location.href.search('#warnings') > -1) { 261 if (location.href.search('#warnings') > -1) {
276 $('#collapse-warnings').addClass('in'); 262 $('#warning-info').addClass('in');
277 } 263 }
264
265 //show warnings section when requested from the build outcome
266 $(".show-warnings").click(function() {
267 $('#warning-info').addClass('in');
268 });
278 }); 269 });
279</script> 270</script>
280 271
diff --git a/bitbake/lib/toaster/toastergui/templates/configuration.html b/bitbake/lib/toaster/toastergui/templates/configuration.html
index 83bc5b21e0..1032ebe903 100644
--- a/bitbake/lib/toaster/toastergui/templates/configuration.html
+++ b/bitbake/lib/toaster/toastergui/templates/configuration.html
@@ -14,13 +14,13 @@
14<!-- page title --> 14<!-- page title -->
15<div class="col-md-10"> 15<div class="col-md-10">
16 16
17 <div class="page-header"> 17 <div class="page-header build-data">
18 <h1>Configuration</h1> 18 <h1>Configuration</h1>
19 </div> 19 </div>
20 20
21<!-- configuration table --> 21<!-- configuration table -->
22<div id="navTab"> 22<div id="navTab">
23<ul class="nav nav-pills"> 23<ul class="nav nav-tabs">
24 <li class="active"><a href="#">Summary</a></li> 24 <li class="active"><a href="#">Summary</a></li>
25 <li class=""><a href="{% url 'configvars' build.id %}">BitBake variables</a></li> 25 <li class=""><a href="{% url 'configvars' build.id %}">BitBake variables</a></li>
26</ul> 26</ul>
@@ -39,13 +39,13 @@
39 {%if TUNE_FEATURES %}<dt>Tune features</dt><dd>{{TUNE_FEATURES}}</dd> {% endif %} 39 {%if TUNE_FEATURES %}<dt>Tune features</dt><dd>{{TUNE_FEATURES}}</dd> {% endif %}
40 {%if TARGET_FPU %}<dt>Target FPU</dt><dd>{{TARGET_FPU}}</dd> {% endif %} 40 {%if TARGET_FPU %}<dt>Target FPU</dt><dd>{{TARGET_FPU}}</dd> {% endif %}
41 {%if targets.all %}<dt>Target(s)</dt> 41 {%if targets.all %}<dt>Target(s)</dt>
42 <dd> <ul> {% for target in targets.all %} 42 <dd> <ul class="list-unstyled"> {% for target in targets.all %}
43 <li>{{target.target}}{%if forloop.counter > 1 %}<br>{% endif %}</li> 43 <li>{{target.target}}{%if forloop.counter > 1 %}<br>{% endif %}</li>
44 {% endfor %} </ul> </dd> {% endif %} 44 {% endfor %} </ul> </dd> {% endif %}
45 </dl> 45 </dl>
46 <h3>Layers</h3> 46 <h3>Layers</h3>
47 <div class="row"> 47 <div class="row">
48 <div class="col-md-9"> 48 <div class="col-md-9 table-responsive">
49 <table class="table table-bordered table-hover"> 49 <table class="table table-bordered table-hover">
50 <thead> 50 <thead>
51 <tr> 51 <tr>
@@ -58,7 +58,7 @@
58 <tr> 58 <tr>
59 <td>{{lv.layer.name}}</td> 59 <td>{{lv.layer.name}}</td>
60 <td>{{lv.branch}}</td> 60 <td>{{lv.branch}}</td>
61 <td> <a class="btn" data-content="<ul class='list-unstyled'> 61 <td> <a class="btn btn-default" data-content="<ul class='list-unstyled'>
62 <li>{{lv.commit}}</li> </ul>"> 62 <li>{{lv.commit}}</li> </ul>">
63 {{lv.commit|truncatechars:13}} 63 {{lv.commit|truncatechars:13}}
64 </a></td> 64 </a></td>
diff --git a/bitbake/lib/toaster/toastergui/templates/configvars.html b/bitbake/lib/toaster/toastergui/templates/configvars.html
index f100b243ca..89d2fa446d 100644
--- a/bitbake/lib/toaster/toastergui/templates/configvars.html
+++ b/bitbake/lib/toaster/toastergui/templates/configvars.html
@@ -13,7 +13,7 @@
13{% block buildinfomain %} 13{% block buildinfomain %}
14<!-- page title --> 14<!-- page title -->
15<div class="col-md-10"> 15<div class="col-md-10">
16 <div class="page-header"> 16 <div class="page-header build-data">
17 <h1> 17 <h1>
18 {% if request.GET.filter and objects.paginator.count > 0 or request.GET.search and objects.paginator.count > 0 %} 18 {% if request.GET.filter and objects.paginator.count > 0 or request.GET.search and objects.paginator.count > 0 %}
19 {{objects.paginator.count}} variable{{objects.paginator.count|pluralize}} found 19 {{objects.paginator.count}} variable{{objects.paginator.count|pluralize}} found
@@ -27,7 +27,7 @@
27 27
28<!-- configuration table --> 28<!-- configuration table -->
29<div id="navTab"> 29<div id="navTab">
30 <ul class="nav nav-pills"> 30 <ul class="nav nav-tabs">
31 <li class=""><a href="{% url 'configuration' build.id %}">Summary</a></li> 31 <li class=""><a href="{% url 'configuration' build.id %}">Summary</a></li>
32 <li class="active"><a href="#" >BitBake variables</a></li> 32 <li class="active"><a href="#" >BitBake variables</a></li>
33 </ul> 33 </ul>
@@ -36,13 +36,22 @@
36 <div id="variables" class="tab-pane"> 36 <div id="variables" class="tab-pane">
37 37
38 {% if objects.paginator.count == 0 %} 38 {% if objects.paginator.count == 0 %}
39 <div class="alert"> 39 <div class="alert alert-warning">
40 <form class="no-results input-append" id="searchform"> 40 <form class="no-results form-inline" id="searchform">
41 <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 %} 41 <div class="form-group">
42 <button class="btn" type="submit" value="Search">Search</button> 42 <div class="btn-group">
43 <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all variables</button> 43 <input class="form-control" id="search" name="search" type="text" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"/>
44 </form> 44 {% if request.GET.search %}
45 </div> 45 <a href="javascript:$('#search').val('');searchform.submit()" tabindex="-1">
46 <span class="remove-search-btn-variables glyphicon glyphicon-remove-circle"></span>
47 </a>
48 {% endif %}
49 </div>
50 </div>
51 <button class="btn btn-default" type="submit" value="Search">Search</button>
52 <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all variables</button>
53 </form>
54 </div>
46 55
47 {% else %} 56 {% else %}
48 {% include "basetable_top.html" %} 57 {% include "basetable_top.html" %}
@@ -50,83 +59,87 @@
50 {% for variable in objects %} 59 {% for variable in objects %}
51 <tr class="data"> 60 <tr class="data">
52 <td class="variable_name"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td> 61 <td class="variable_name"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_name}}</a></td>
53 <td class="variable_value"><a data-toggle="modal" href="#variable-{{variable.pk}}">{{variable.variable_value|truncatechars:153}}</a></td> 62 <td class="variable_value">{{variable.variable_value|truncatechars:153}}</td>
54 <td class="file"><a data-toggle="modal" href="#variable-{{variable.pk}}"> 63 <td class="file">
55 {% if variable.vhistory.all %} 64 {% if variable.vhistory.all %}
56 {% for path in variable.vhistory.all|filter_setin_files:file_filter %} 65 {% for path in variable.vhistory.all|filter_setin_files:file_filter %}
57 {{path}}<br/> 66 {{path}}<br/>
58 {% endfor %} 67 {% endfor %}
59 {% endif %} 68 {% endif %}
60 </a></td> 69 </td>
61 <td class="description"> 70 <td class="description">
62 {% if variable.description %} 71 {% if variable.description %}
63 {{variable.description}} 72 {{variable.description}}
64 <a href="http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-{{variable.variable_name|variable_parent_name}}" target="_blank"> 73 <a href="http://www.yoctoproject.org/docs/current/ref-manual/ref-manual.html#var-{{variable.variable_name|variable_parent_name}}" target="_blank">
65 <i class="glyphicon glyphicon-share get-info"></i></a> 74 <span class="glyphicon glyphicon-new-window get-info"></span></a>
66 {% endif %} 75 {% endif %}
67 </td> 76 </td>
68 </tr> 77 </tr>
69{% endfor %} 78{% endfor %}
70 79</tbody>
80</table>
81</div> <!-- table-responsive -->
71{% include "basetable_bottom.html" %} 82{% include "basetable_bottom.html" %}
72{% endif %} 83{% endif %}
73</div> <!-- endvariables --> 84</div> <!-- endvariables -->
74 85
75<!-- file list popups --> 86<!-- file list popups -->
76{% for variable in objects %} 87{% for variable in objects %}
77 {% if variable.vhistory.count %} 88{% if variable.vhistory.count %}
78 <div id="variable-{{variable.pk}}" class="modal in fade" tabindex="-1" role="dialog"> 89<div id="variable-{{variable.pk}}" class="modal fade" tabindex="-1" role="dialog">
79 <div class="modal-dialog"> 90 <div class="modal-dialog">
80 <div class="modal-content"> 91 <div class="modal-content">
81 <div class="modal-header"> 92 <div class="modal-header">
82 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button> 93 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
83 <h3>History of {{variable.variable_name}}</h3> 94 <h3>History of {{variable.variable_name}}</h3>
84 </div> 95 </div>
85 <div class="modal-body"> 96 <div class="modal-body">
86 {% if variable.variable_value %} 97 {% if variable.variable_value %}
87 {% if variable.variable_value|length < 570 %} 98 {% if variable.variable_value|length < 570 %}
88 <h4>{{variable.variable_name}} value is:</h4> 99 <h4>{{variable.variable_name}} value is:</h4>
89 <p> 100 <p>
90 {{variable.variable_value}} 101 {{variable.variable_value}}
91 </p> 102 </p>
92 {% else %} 103 {% else %}
93 <h4>{{variable.variable_name}} value is:</h4> 104 <h4>{{variable.variable_name}} value is:</h4>
94 <p> 105 <p>
95 <span>{{variable.variable_value|string_slice:':570'}} 106 <span>{{variable.variable_value|string_slice:':570'}}
96 <span class="full"> {{variable.variable_value|string_slice:'570:'}} 107 <span class="full"> {{variable.variable_value|string_slice:'570:'}}
97 </span> 108 </span>
98 <a class="btn btn-mini full-show">...</a> 109 <a href="#" class="full-show">...</a>
99 </span> 110 </span>
100 </p> 111 </p>
101 <a class="btn btn-mini full-hide">Collapse variable value <i class="icon-caret-up"></i> 112 <a href="#" class="full-hide">Collapse variable value <i class="icon-caret-up"></i>
102 </a> 113 </a>
103 {% endif %} 114 {% endif %}
104 {% else %} 115 {% else %}
105 <div class="alert alert-info">The value of <strong>{{variable.variable_name}}</strong> is an empty string</div> 116 <div class="alert alert-info">The value of <strong>{{variable.variable_name}}</strong> is an empty string</div>
106 {% endif %} 117 {% endif %}
107 <h4>The value was set in the following configuration files:</h4> 118 <h4>The value was set in the following configuration files:</h4>
108 <table class="table table-bordered table-hover"> 119 <div class="table-responsive">
109 <thead> 120 <table class="table table-bordered table-hover">
110 <tr> 121 <thead>
111 <th>Order</th> 122 <tr>
112 <th>Configuration file</th> 123 <th>Order</th>
113 <th>Operation</th> 124 <th>Configuration file</th>
114 <th>Line number</th> 125 <th>Operation</th>
115 </tr> 126 <th>Line</th>
116 </thead> 127 </tr>
117 <tbody> 128 </thead>
118 {% for vh in variable.vhistory.all %} 129 <tbody>
119 <tr> 130 {% for vh in variable.vhistory.all %}
120 <td>{{forloop.counter}}</td><td>{{vh.file_name}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td> 131 <tr>
121 </tr> 132 <td>{{forloop.counter}}</td><td class="file">{{vh.file_name}}</td><td>{{vh.operation}}</td><td>{{vh.line_number}}</td>
122 {%endfor%} 133 </tr>
123 </tbody> 134 {%endfor%}
124 </table> 135 </tbody>
125 </div> 136 </table>
126 </div><!-- /.modal-content --> 137 </div>
127 </div><!-- /.modal-dialog --> 138 </div>
128 </div><!-- /.modal --> 139 </div><!-- /.modal-content -->
129 {% endif %} 140 </div><!-- /.modal-dialog -->
141</div><!-- /.modal -->
142{% endif %}
130{% endfor %} 143{% endfor %}
131 144
132</div> <!-- buildinfomain --> 145</div> <!-- buildinfomain -->
diff --git a/bitbake/lib/toaster/toastergui/templates/customrecipe.html b/bitbake/lib/toaster/toastergui/templates/customrecipe.html
index d9049614ab..f2a8fd2132 100644
--- a/bitbake/lib/toaster/toastergui/templates/customrecipe.html
+++ b/bitbake/lib/toaster/toastergui/templates/customrecipe.html
@@ -158,7 +158,7 @@
158 <div class="well"> 158 <div class="well">
159 <h2>About {{recipe.name}}</h2> 159 <h2>About {{recipe.name}}</h2>
160 160
161 <dl> 161 <dl class="item-info">
162 <dt> 162 <dt>
163 Approx. packages included 163 Approx. packages included
164 <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> 164 <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>
diff --git a/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html b/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html
index 211548b1ef..15adfbc914 100644
--- a/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html
+++ b/bitbake/lib/toaster/toastergui/templates/detail_pagination_bottom.html
@@ -6,7 +6,7 @@
6 6
7{# only paginate if 10 or more rows unfiltered, all pages #} 7{# only paginate if 10 or more rows unfiltered, all pages #}
8{% if object_count >= 10 %} 8{% if object_count >= 10 %}
9<div> 9<div id="pagination-detail">
10 <ul class="pagination"> 10 <ul class="pagination">
11{%if objects.has_previous %} 11{%if objects.has_previous %}
12 <li><a href="javascript:reload_params({'page':{{objects.previous_page_number}}})">&laquo;</a></li> 12 <li><a href="javascript:reload_params({'page':{{objects.previous_page_number}}})">&laquo;</a></li>
@@ -23,16 +23,18 @@
23{%endif%} 23{%endif%}
24 </ul> 24 </ul>
25 25
26 <div class="pull-right"> 26 <form class="navbar-form navbar-right">
27 <span class="help-inline">Show rows:</span> 27 <div class=form-group">
28 <select class="pagesize"> 28 <label>Show rows:</label>
29 {% with "10 25 50 100 150" as list%} 29 <select class="pagesize form-control">
30 {% with "10 25 50 100 150" as list%}
30 {% for i in list.split %} 31 {% for i in list.split %}
31 <option value="{{i}}">{{i}}</option> 32 <option value="{{i}}">{{i}}</option>
32 {% endfor %} 33 {% endfor %}
33 {% endwith %} 34 {% endwith %}
34 </select> 35 </select>
35 </div> 36 </div>
37 </form>
36</div> 38</div>
37 39
38<!-- Update page display settings --> 40<!-- Update page display settings -->
diff --git a/bitbake/lib/toaster/toastergui/templates/detail_search_header.html b/bitbake/lib/toaster/toastergui/templates/detail_search_header.html
index 996b617b76..7a9865908d 100644
--- a/bitbake/lib/toaster/toastergui/templates/detail_search_header.html
+++ b/bitbake/lib/toaster/toastergui/templates/detail_search_header.html
@@ -21,48 +21,52 @@ $(document).ready(function() {
21 21
22{% if objects.paginator.count > 10 or request.GET.search %} 22{% if objects.paginator.count > 10 or request.GET.search %}
23 {% if objects.paginator.count == 0 %} 23 {% if objects.paginator.count == 0 %}
24 <div class="alert"> 24 <div class="alert alert-warning">
25 <h3>No {{search_what}} found</h3> 25 <h4>No {{search_what}} found</h4>
26 <form id="searchform" class="input-append"> 26 <form id="searchform" class="form-inline">
27 {% else %} 27 {% else %}
28 <form id="searchform" class="navbar-search input-append pull-left"> 28 <form id="searchform" class="navbar-form navbar-left detail-page-controls">
29 {% endif %} 29 {% endif %}
30 30
31 <input id="search" class="input-xlarge" type="text" placeholder="Search {{search_what}}" name="search" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}"> 31 <div class="form-group">
32 <input type="hidden" value="name:+" name="orderby"> 32 <div class="btn-group">
33 <input type="hidden" value="l" name="page"> 33 <input id="search" class="form-control" type="text" placeholder="Search {{search_what}}" name="search" value="{% if request.GET.search %}{{request.GET.search}}{% endif %}">
34 {% if request.GET.search %} 34 <input type="hidden" value="name:+" name="orderby">
35 <a class="input-append-addon btn search-clear"> 35 <input type="hidden" value="l" name="page">
36 <i class="glyphicon glyphicon-remove"></i> 36 {% if request.GET.search %}
37 </a> 37 <span class="remove-search-btn-detail-search search-clear glyphicon glyphicon-remove-circle"></span>
38 {% endif %} 38 {% endif %}
39 <button type="submit" class="btn">Search</button> 39 </div>
40 {% if objects.paginator.count == 0 %} 40 </div>
41 <button type="submit" class="btn btn-link search-clear"> 41 <button type="submit" class="btn btn-default">Search</button>
42 Show all {{search_what}} 42 {% if objects.paginator.count == 0 %}
43 </button> 43 <button type="submit" class="btn btn-link search-clear">
44 {% endif %} 44 Show all {{search_what}}
45 </form> 45 </button>
46{% endif %} 46 {% endif %}
47 </form>
48 {% endif %}
47 49
48{% if objects.paginator.count == 0 %} 50 {% if objects.paginator.count == 0 %}
49 </div> {# end alert #} 51 </div> {# end alert #}
50{% else %} 52 {% else %}
51 {% if object_count > 10 %} 53 {% if object_count > 10 %}
52 <div class="pull-right"> 54 <form class="navbar-form navbar-right">
53 <span class="help-inline" style="padding-top:5px;">Show rows:</span> 55 <div class="form-group">
54 <select style="margin-top:5px;margin-bottom:0px;" class="pagesize"> 56 <label>Show rows:</label>
55 {% with "10 25 50 100 150" as list%} 57 <select class="pagesize form-control">
56 {% for i in list.split %} 58 {% with "10 25 50 100 150" as list%}
59 {% for i in list.split %}
57 {% if request.session.limit == i %} 60 {% if request.session.limit == i %}
58 <option value="{{i}}" selected>{{i}}</option> 61 <option value="{{i}}" selected>{{i}}</option>
59 {% else %} 62 {% else %}
60 <option value="{{i}}">{{i}}</option> 63 <option value="{{i}}">{{i}}</option>
61 {% endif %} 64 {% endif %}
62 {% endfor %} 65 {% endfor %}
63 {% endwith %} 66 {% endwith %}
64 </select> 67 </select>
65 </div> 68 </div>
69 </form>
66 {% endif %} 70 {% endif %}
67{% endif %} 71{% endif %}
68 72
diff --git a/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html b/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html
index 6589b0a2d3..4434df4394 100644
--- a/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html
+++ b/bitbake/lib/toaster/toastergui/templates/detail_sorted_header.html
@@ -10,9 +10,9 @@
10 <!-- Table header row; generated from "tablecols" entry in the context dict --> 10 <!-- Table header row; generated from "tablecols" entry in the context dict -->
11 <tr> 11 <tr>
12 {% for tc in tablecols %}<th class="{%if tc.dclass%}{{tc.dclass}}{% endif %} {%if tc.class %}{{tc.clclass}}{% endif %}"> 12 {% for tc in tablecols %}<th class="{%if tc.dclass%}{{tc.dclass}}{% endif %} {%if tc.class %}{{tc.clclass}}{% endif %}">
13 {%if tc.qhelp%}<i class="icon-question-sign get-help" title="{{tc.qhelp}}"></i>{%endif%} 13 {%if tc.qhelp%}<span class="glyphicon glyphicon-question-sign get-help" title="{{tc.qhelp}}"></span>{%endif%}
14 {%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%} 14 {%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%}
15 {%if tc.ordericon%} <i class="icon-caret-{{tc.ordericon}}"></i>{%endif%} 15 {%if tc.ordericon%} <span class="icon-caret-{{tc.ordericon}}"></span>{%endif%}
16 {% if request.GET.search and forloop.first %} 16 {% if request.GET.search and forloop.first %}
17 <span class="badge badge-info">{{objects.paginator.count}}</span> 17 <span class="badge badge-info">{{objects.paginator.count}}</span>
18 {% endif %} 18 {% endif %}
diff --git a/bitbake/lib/toaster/toastergui/templates/dirinfo.html b/bitbake/lib/toaster/toastergui/templates/dirinfo.html
index df06a94359..458e933685 100644
--- a/bitbake/lib/toaster/toastergui/templates/dirinfo.html
+++ b/bitbake/lib/toaster/toastergui/templates/dirinfo.html
@@ -59,9 +59,6 @@
59 function formatRow(o) { 59 function formatRow(o) {
60 /* setup tr-wide formatting */ 60 /* setup tr-wide formatting */
61 var tr = '<tr class="'; 61 var tr = '<tr class="';
62 if (o.link_to != null) {
63 tr += 'muted ';
64 }
65 if (o.isdir && o.childcount) { 62 if (o.isdir && o.childcount) {
66 tr += 'branch" data-tt-branch="true" '; 63 tr += 'branch" data-tt-branch="true" ';
67 } 64 }
@@ -75,7 +72,7 @@
75 tr += '>'; 72 tr += '>';
76 73
77 /* setup td specific formatting */ 74 /* setup td specific formatting */
78 var link_to = td(o.link_to); 75 var link_to = '<td class="text-muted">' + o.link_to + '</td>';
79 var size = '<td class = "sizecol">' + o.size + '</td>' 76 var size = '<td class = "sizecol">' + o.size + '</td>'
80 var permission = td(o.permission); 77 var permission = td(o.permission);
81 var owner = td(o.owner); 78 var owner = td(o.owner);
@@ -96,7 +93,7 @@
96 if (o.childcount) { 93 if (o.childcount) {
97 name += '<a href="">'; 94 name += '<a href="">';
98 } 95 }
99 name += '<i class="icon-folder-close"></i>'; 96 name += '<span class="glyphicon glyphicon-folder-close"></span>';
100 name += '&nbsp;' + o.name; 97 name += '&nbsp;' + o.name;
101 if (o.childcount) { 98 if (o.childcount) {
102 name += '</a>'; 99 name += '</a>';
@@ -110,10 +107,10 @@
110 namespan = 3; 107 namespan = 3;
111 } 108 }
112 var colspan = 'colspan="' + namespan + '"'; 109 var colspan = 'colspan="' + namespan + '"';
113 name = '<td ' + colspan + '><i class="glyphicon glyphicon-file"></i>'; 110 name = '<td ' + colspan + '><span class="glyphicon glyphicon-file"></span>';
114 } 111 }
115 else { 112 else {
116 name = '<td><i class="icon-hand-right"></i>'; 113 name = '<td class="text-muted"><span class="glyphicon glyphicon-hand-right"></span>';
117 } 114 }
118 name += '&nbsp;' + o.name; 115 name += '&nbsp;' + o.name;
119 name += '</td>'; 116 name += '</td>';
@@ -134,10 +131,10 @@
134 package += '</a>'; 131 package += '</a>';
135 if (o.installed_package != o.package) { 132 if (o.installed_package != o.package) {
136 /* make class muted and add hover help */ 133 /* make class muted and add hover help */
137 package += '<span class="muted"> as ' + o.installed_package + ' </span>'; 134 package += '<span class="text-muted"> as ' + o.installed_package + ' </span>';
138 package += '<i class="icon-question-sign get-help hover-help" '; 135 package += '<span class="glyphicon glyphicon-question-sign get-help hover-help" ';
139 package += 'title="' + o.package + ' was renamed at packaging time and was installed in your image as ' + o.installed_package + '">'; 136 package += 'title="' + o.package + ' was renamed at packaging time and was installed in your image as ' + o.installed_package + '">';
140 package += '</i>'; 137 package += '</span>';
141 } 138 }
142 } 139 }
143 package = td(package); 140 package = td(package);
@@ -186,20 +183,20 @@
186 183
187<div class="col-md-10"> 184<div class="col-md-10">
188 185
189 <div class="page-header"> 186 <div class="page-header build-data">
190 <h1> {{target.target}} </h1> 187 <h1> {{target.target}} </h1>
191 </div> 188 </div>
192 189
193 <ul class="nav nav-pills"> 190 <ul class="nav nav-tabs">
194 <li class=""> 191 <li>
195 <a href="{% url 'target' build.id target.id %}"> 192 <a href="{% url 'target' build.id target.id %}">
196 <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> 193 <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>
197 Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}}) 194 Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}})
198 </a> 195 </a>
199 </li> 196 </li>
200 <li class="active"> 197 <li class="active">
201 <a href="{% url 'dirinfo' build.id target.id %}"> 198 <a href="{% url 'dirinfo' build.id target.id %}">
202 <i class="icon-question-sign get-help" title="The directories and files in the root file system of this image"></i> 199 <span class="glyphicon glyphicon-question-sign get-help" title="The directories and files in the root file system of this image"></span>
203 Directory structure 200 Directory structure
204 </a> 201 </a>
205 </li> 202 </li>
diff --git a/bitbake/lib/toaster/toastergui/templates/filtersnippet.html b/bitbake/lib/toaster/toastergui/templates/filtersnippet.html
index 4c2c53e586..1286ca315f 100644
--- a/bitbake/lib/toaster/toastergui/templates/filtersnippet.html
+++ b/bitbake/lib/toaster/toastergui/templates/filtersnippet.html
@@ -6,59 +6,67 @@
6 <div class="modal-dialog"> 6 <div class="modal-dialog">
7 <div class="modal-content"> 7 <div class="modal-content">
8 <form> 8 <form>
9 <input type="hidden" name="search" value="{%if request.GET.search %}{{request.GET.search}}{%endif%}"/> 9 <input type="hidden" name="search" value="{%if request.GET.search %}{{request.GET.search}}{%endif%}"/>
10 <div class="modal-header"> 10 <div class="modal-header">
11 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button> 11 <button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
12 {% if search_term %} 12 {% if search_term %}
13 <h3>Filter {{total_count}} {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} matching '{{search_term}}' by '{{tc.name}}'</h3> 13 <h3>Filter {{total_count}} {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} matching '{{search_term}}' by '{{tc.name}}'</h3>
14 {% else %} 14 {% else %}
15 <h3>Filter {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} by '{{tc.name}}'</h3> 15 <h3>Filter {%if filter_search_display%}{{filter_search_display|title}}{%else%}{{objectname|title}}{%endif%} by '{{tc.name}}'</h3>
16 {% endif %} 16 {% endif %}
17 </div> 17 </div>
18 <div class="modal-body"> 18 <div class="modal-body">
19 <p>{{f.label}}</p> 19 <p>{{f.label}}</p>
20 <label class="radio"> 20 <div class="radio">
21 <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%} 21 <label>
22 </label> 22 <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%}
23 {% for option in f.options %} 23 </label>
24 {% if option.1 == 'daterange' %} 24 </div>
25 <div class="form-inline"> 25 {% for option in f.options %}
26 <label class="radio"> 26 <div class="radio">
27 <input type="radio" name="filter" id="filter_value_{{key}}" {%if key == daterange_selected %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}} 27 {% if option.1 == 'daterange' %}
28 {% else %} 28 <label>
29 {% if 1 %} 29 <input type="radio" name="filter" id="filter_value_{{key}}" {%if key == daterange_selected %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
30 <label class="radio"> 30 {% else %}
31 <input type="radio" name="filter" {%if request.GET.filter == option.1 %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}} 31 {% if 1 %}
32 {% comment "do not disable radio selections by count for now" %}{% else %} 32 <label>
33 <label class="radio muted"> 33 <input type="radio" name="filter" {%if request.GET.filter == option.1 %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
34 <input type="radio" name="filter" disabled {%if request.GET.filter == option.1 %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}} 34 {% comment "do not disable radio selections by count for now" %}{% else %}
35 {% endcomment %}{% endif %} 35 <label class="text-muted">
36 {% endif %} 36 <input type="radio" name="filter" disabled {%if request.GET.filter == option.1 %}checked{%endif%} value="{{option.1}}" data-key="{{key}}"> {{option.0}}
37 {% if option.3 %}<i class="icon-question-sign get-help" data-placement="right" title="{{option.3}}"></i>{% endif %} 37 {% endcomment %}{% endif %}
38 </label> 38 {% endif %}
39 {% if option.1 == 'daterange' %} 39 {% if option.3 %}<i class="icon-question-sign get-help" data-placement="right" title="{{option.3}}"></i>{% endif %}
40 <input type="text" id="date_from_{{key}}" name="date_from_{{key}}" disabled class="input-sm" /><label class="help-inline">to</label> 40 </label></div>
41 <input type="text" id="date_to_{{key}}" name="date_to_{{key}}" disabled class="input-sm" /> 41 {% if option.1 == 'daterange' %}
42 <label class="help-inline get-help" >(dd/mm/yyyy)</label> 42 <input type="text" id="date_from_{{key}}" name="date_from_{{key}}" disabled class="input-sm" /><label class="help-inline">to</label>
43 </div> 43 <input type="text" id="date_to_{{key}}" name="date_to_{{key}}" disabled class="input-sm" />
44 {% endif %} 44 <label class="help-inline get-help" >(dd/mm/yyyy)</label>
45 {% endfor %} 45 </div>
46 <!-- daterange persistence --> 46 {% endif %}
47 {% if last_date_from and last_date_to %} 47 {% endfor %}
48 <input type="hidden" id="last_date_from_{{key}}" name="last_date_from" value="{{last_date_from}}"/> 48 <!-- daterange persistence -->
49 <input type="hidden" id="last_date_to_{{key}}" name="last_date_to" value="{{last_date_to}}"/> 49 {% if last_date_from and last_date_to %}
50 {% endif %} 50 <input type="hidden" id="last_date_from_{{key}}" name="last_date_from" value="{{last_date_from}}"/>
51 </div> 51 <input type="hidden" id="last_date_to_{{key}}" name="last_date_to" value="{{last_date_to}}"/>
52 <div class="modal-footer"> 52 {% endif %}
53 <button type="submit" class="btn btn-primary" data-key="{{key}}">Apply</button> 53 </div>
54 {% if request.GET.filter %} 54 <div class="modal-footer">
55 {% if request.GET.filter|string_remove_regex:':.*' != f.options.0.1|string_remove_regex:':.*' %} 55 <div class="row">
56 <span class="help-inline pull-left">You can only apply one filter to the table. This filter will override the current filter.</span> 56 <div class="col-md-6">
57 {% endif %} 57 <button type="submit" class="btn btn-primary" data-key="{{key}}">Apply</button>
58 {% endif %} 58 </div>
59 </div> 59 <div class="col-md-6">
60 {% if request.GET.filter %}
61 {% if request.GET.filter|string_remove_regex:':.*' != f.options.0.1|string_remove_regex:':.*' %}
62 <p class="text-right text-muted">You can only apply one filter to the table. This filter will override the current filter.</p>
63 {% endif %}
64 {% endif %}
65 </div>
66 </div>
67 </div>
60 </form> 68 </form>
61 </div><!-- /.modal-content --> 69 </div><!-- /.modal-content -->
62 </div><!-- /.modal-dialog --> 70</div><!-- /.modal-dialog -->
63</div> <!--/.modal --> 71</div> <!--/.modal -->
64{% endwith %} 72{% endwith %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
index e53eb9dd1c..a5d5893571 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html
@@ -2,16 +2,16 @@
2{% load projecttags %} 2{% load projecttags %}
3 3
4{% block tabcontent %} 4{% block tabcontent %}
5 <ul class="nav nav-pills"> 5 <ul class="nav nav-tabs">
6 <li class=""> 6 <li class="">
7 <a href="{% url 'package_built_detail' build.id package.id %}"> 7 <a href="{% url 'package_built_detail' build.id package.id %}">
8 <i class="icon-question-sign get-help" title="Shows the files produced by this package."></i> 8 <span class="glyphicon glyphicon-question-sign get-help" title="Shows the files produced by this package."></span>
9 Generated files ({{package.buildfilelist_package.count}}) 9 Generated files ({{package.buildfilelist_package.count}})
10 </a> 10 </a>
11 </li> 11 </li>
12 <li class="active"> 12 <li class="active">
13 <a href="{% url 'package_built_dependencies' build.id package.id %}"> 13 <a href="{% url 'package_built_dependencies' build.id package.id %}">
14 <i class="icon-question-sign get-help" title="Shows the runtime packages required by this package."></i> 14 <span class="glyphicon glyphicon-question-sign get-help" title="Shows the runtime packages required by this package."></span>
15 Runtime dependencies ({{dependency_count}}) 15 Runtime dependencies ({{dependency_count}})
16 </a> 16 </a>
17 </li> 17 </li>
@@ -24,7 +24,7 @@
24 </div> 24 </div>
25 {% else %} 25 {% else %}
26 <div class="alert alert-info"> 26 <div class="alert alert-info">
27 <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. 27 <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.
28 </div> 28 </div>
29 <table class="table table-bordered table-hover"> 29 <table class="table table-bordered table-hover">
30 <thead> 30 <thead>
@@ -64,7 +64,7 @@
64 <th>Version</th> 64 <th>Version</th>
65 <th class="sizecol col-md-2">Size</th> 65 <th class="sizecol col-md-2">Size</th>
66 <th> 66 <th>
67 <i class="icon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></i> 67 <span class="glyphicon glyphicon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></span>
68 Relationship type 68 Relationship type
69 </th> 69 </th>
70 </tr> 70 </tr>
@@ -87,7 +87,7 @@
87 <td class="sizecol">{{other_dep.size|filtered_filesizeformat}}</td> 87 <td class="sizecol">{{other_dep.size|filtered_filesizeformat}}</td>
88 <td> 88 <td>
89 {{other_dep.dep_type_display}} 89 {{other_dep.dep_type_display}}
90 <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i> 90 <span class="glyphicon glyphicon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></span>
91 </td> 91 </td>
92 </tr> 92 </tr>
93 {% endfor %} 93 {% endfor %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_built_detail.html b/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
index 9be8ccb85c..0bdbc2a416 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_built_detail.html
@@ -6,13 +6,13 @@
6 <!-- Generated Files --> 6 <!-- Generated Files -->
7 {% if package.buildtargetlist_package.count == 0 %} 7 {% if package.buildtargetlist_package.count == 0 %}
8 {# Not included case #} 8 {# Not included case #}
9 <ul class="nav nav-pills"> 9 <ul class="nav nav-tabs">
10 <li class="active"> <a href="#"> 10 <li class="active"> <a href="#">
11 <i class="icon-question-sign get-help" title="Files added to a root file system when you include {{package.name}} in an image"></i> 11 <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>
12 Generated files ({{packageFileCount}}) 12 Generated files ({{packageFileCount}})
13 </a></li> 13 </a></li>
14 <li class=""><a href="{% url 'package_built_dependencies' build.id package.id %}"> 14 <li class=""><a href="{% url 'package_built_dependencies' build.id package.id %}">
15 <i class="icon-question-sign get-help" title="Projected runtime dependencies when you include {{package.name}} in an image"></i> 15 <span class="glyphicon glyphicon-question-sign get-help" title="Projected runtime dependencies when you include {{package.name}} in an image"></span>
16 Runtime dependencies ({{dependency_count}}) 16 Runtime dependencies ({{dependency_count}})
17 </a></li> 17 </a></li>
18 </ul> 18 </ul>
@@ -21,7 +21,7 @@
21 <!-- Package file list or if empty, alert pane --> 21 <!-- Package file list or if empty, alert pane -->
22 {% if packageFileCount > 0 %} 22 {% if packageFileCount > 0 %}
23 <div class="alert alert-info"> 23 <div class="alert alert-info">
24 <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. 24 <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.
25 </div> 25 </div>
26 {% include "tablesort.html" %} 26 {% include "tablesort.html" %}
27 <tbody> 27 <tbody>
diff --git a/bitbake/lib/toaster/toastergui/templates/package_detail_base.html b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
index 17562a8845..bce7fb2fa6 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html
@@ -14,8 +14,8 @@
14 function fmtAliasHelp(package_name, alias, hover) { 14 function fmtAliasHelp(package_name, alias, hover) {
15 var r = null; 15 var r = null;
16 if (alias != null && alias != '') { 16 if (alias != null && alias != '') {
17 r = '<span class="muted"> as ' + alias + '&nbsp'; 17 r = '<span class="text-muted"> as ' + alias + '&nbsp';
18 r += '<i class="icon-question-sign get-help'; 18 r += '<span class="glyphicon glyphicon-question-sign get-help';
19 if (hover) { 19 if (hover) {
20 r+= ' hover-help'; 20 r+= ' hover-help';
21 } 21 }
@@ -23,9 +23,9 @@
23 r+= ' heading-help'; 23 r+= ' heading-help';
24 } 24 }
25 r += '"'; 25 r += '"';
26 title = package_name + ' was renamed at packaging time and was installed on your system as ' + alias; 26 title = '<code>' + package_name + '</code> was renamed at packaging time and was installed on your system as <code>' + alias + '</code>';
27 r += ' title="' + title + '">'; 27 r += ' title="' + title + '">';
28 r += '</i>'; 28 r += '</span>';
29 r += '</span>'; 29 r += '</span>';
30 document.write(r); 30 document.write(r);
31 } 31 }
@@ -45,7 +45,7 @@
45{% block pagedetailinfomain %} 45{% block pagedetailinfomain %}
46 <div class="row"> 46 <div class="row">
47 <div class="col-md-12"> 47 <div class="col-md-12">
48 <div class="page-header"> 48 <div class="page-header build-data">
49 {% block mainheading %} 49 {% block mainheading %}
50 <h1>{{package.fullpackagespec}}</h1> 50 <h1>{{package.fullpackagespec}}</h1>
51 {% endblock %} 51 {% endblock %}
@@ -68,7 +68,7 @@
68 <dl class="item-info"> 68 <dl class="item-info">
69 <dt> 69 <dt>
70 Size 70 Size
71 <i class="icon-question-sign get-help" title="The size of the package"></i> 71 <span class="glyphicon glyphicon-question-sign get-help" title="The size of the package"></span>
72 </dt> 72 </dt>
73 <dd> 73 <dd>
74 {% comment %} 74 {% comment %}
@@ -85,7 +85,7 @@
85 85
86 <dt> 86 <dt>
87 License 87 License
88 <i class="icon-question-sign get-help" title="The license under which this package is distributed"></i> 88 <span class="glyphicon glyphicon-question-sign get-help" title="The license under which this package is distributed"></span>
89 </dt> 89 </dt>
90 <dd>{{package.license}}</dd> 90 <dd>{{package.license}}</dd>
91 91
@@ -101,7 +101,7 @@
101 101
102 <dt> 102 <dt>
103 Recipe 103 Recipe
104 <i class="icon-question-sign get-help" title="The name of the recipe building this package"></i> 104 <span class="glyphicon glyphicon-question-sign get-help" title="The name of the recipe building this package"></span>
105 </dt> 105 </dt>
106 <dd> 106 <dd>
107 {% if package.recipe_id > 0 %} 107 {% if package.recipe_id > 0 %}
@@ -113,13 +113,13 @@
113 113
114 <dt> 114 <dt>
115 Recipe version 115 Recipe version
116 <i class="icon-question-sign get-help" title="The version of the recipe building this package"></i> 116 <span class="glyphicon glyphicon-question-sign get-help" title="The version of the recipe building this package"></span>
117 </dt> 117 </dt>
118 <dd>{{package.recipe.version}}</dd> 118 <dd>{{package.recipe.version}}</dd>
119 119
120 <dt> 120 <dt>
121 Layer 121 Layer
122 <i class="icon-question-sign get-help" title="The name of the layer providing the recipe that builds this package"></i> 122 <span class="glyphicon glyphicon-question-sign get-help" title="The name of the layer providing the recipe that builds this package"></span>
123 </dt> 123 </dt>
124 <dd> 124 <dd>
125 {{package.recipe.layer_version.layer.name}} 125 {{package.recipe.layer_version.layer.name}}
@@ -136,13 +136,13 @@
136 {% if package.recipe.layer_version.branch %} 136 {% if package.recipe.layer_version.branch %}
137 <dt> 137 <dt>
138 Layer branch 138 Layer branch
139 <i class="icon-question-sign get-help" title="The Git branch of the layer providing the recipe that builds this package"></i> 139 <span class="glyphicon glyphicon-question-sign get-help" title="The Git branch of the layer providing the recipe that builds this package"></span>
140 </dt> 140 </dt>
141 <dd>{{package.recipe.layer_version.branch}}</dd> 141 <dd>{{package.recipe.layer_version.branch}}</dd>
142 {% endif %} 142 {% endif %}
143 <dt> 143 <dt>
144 Layer commit 144 Layer commit
145 <i class="icon-question-sign get-help" title="The Git commit of the layer providing the recipe that builds this package"></i> 145 <span class="glyphicon glyphicon-question-sign get-help" title="The Git commit of the layer providing the recipe that builds this package"></span>
146 </dt> 146 </dt>
147 147
148 <dd class="iscommit">{{package.recipe.layer_version.commit}}</dd> 148 <dd class="iscommit">{{package.recipe.layer_version.commit}}</dd>
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
index 0672ba345e..95e56ded26 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html
@@ -24,7 +24,7 @@
24 </tr> 24 </tr>
25 </thead> 25 </thead>
26 <tbody> 26 <tbody>
27 {% for runtime_dep in runtime_deps %} 27 {% for runtime_dep in runtime_deps %}
28 <tr {{runtime_dep.size|format_vpackage_rowclass}} > 28 <tr {{runtime_dep.size|format_vpackage_rowclass}} >
29 {% if runtime_dep.size != -1 %} 29 {% if runtime_dep.size != -1 %}
30 <td> 30 <td>
@@ -41,7 +41,7 @@
41 <td>{{runtime_dep.version}}&nbsp;</td> 41 <td>{{runtime_dep.version}}&nbsp;</td>
42 <td class='sizecol'>{{runtime_dep.size|filtered_filesizeformat}}&nbsp;</td> 42 <td class='sizecol'>{{runtime_dep.size|filtered_filesizeformat}}&nbsp;</td>
43 </tr> 43 </tr>
44 {% endfor %} 44 {% endfor %}
45 </tbody> 45 </tbody>
46 </table> 46 </table>
47 {% else %} 47 {% else %}
@@ -59,13 +59,13 @@
59 <th>Version</th> 59 <th>Version</th>
60 <th class='sizecol col-md-2'>Size</th> 60 <th class='sizecol col-md-2'>Size</th>
61 <th> 61 <th>
62 <i class="icon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></i> 62 <span class="glyphicon glyphicon-question-sign get-help" title="Five relationship types exist: recommends, suggests, provides, replaces and conflicts"></span>
63 Relationship type 63 Relationship type
64 </th> 64 </th>
65 </tr> 65 </tr>
66 </thead> 66 </thead>
67 <tbody> 67 <tbody>
68 {% for other_dep in other_deps %} 68 {% for other_dep in other_deps %}
69 {% if other_dep.installed %} 69 {% if other_dep.installed %}
70 <tr {{other_dep.size|format_vpackage_rowclass}}> 70 <tr {{other_dep.size|format_vpackage_rowclass}}>
71 {% if other_dep.size != -1 %} 71 {% if other_dep.size != -1 %}
@@ -86,21 +86,21 @@
86 <td class='sizecol'>{{other_dep.size|filtered_filesizeformat}}&nbsp;</td> 86 <td class='sizecol'>{{other_dep.size|filtered_filesizeformat}}&nbsp;</td>
87 <td> 87 <td>
88 {{other_dep.dep_type_display}} 88 {{other_dep.dep_type_display}}
89 <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i> 89 <span class="glyphicon glyphicon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></span>
90 </td> 90 </td>
91 </tr> 91 </tr>
92 {% else %} 92 {% else %}
93 <tr class="muted"> 93 <tr class="text-muted">
94 <td>{{other_dep.name}}</td> 94 <td>{{other_dep.name}}</td>
95 <td>{{other_dep.version}}</td> 95 <td>{{other_dep.version}}</td>
96 <td></td> 96 <td></td>
97 <td> 97 <td>
98 {{other_dep.dep_type_display}} 98 {{other_dep.dep_type_display}}
99 <i class="icon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></i> 99 <span class="glyphicon glyphicon-question-sign get-help hover-help" title="{{other_dep.dep_type_help}}" ></span>
100 </td> 100 </td>
101 </tr> 101 </tr>
102 {% endif %} 102 {% endif %}
103 {% endfor %} 103 {% endfor %}
104 </tbody> 104 </tbody>
105 </table> 105 </table>
106 {% endifnotequal %} 106 {% endifnotequal %}
diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html b/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html
index 958aa8827b..e89fa211c8 100644
--- a/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html
+++ b/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html
@@ -1,12 +1,12 @@
1 1
2 <ul class="nav nav-pills"> 2 <ul class="nav nav-tabs">
3 {% if active_tab == "detail" %} 3 {% if active_tab == "detail" %}
4 <li class="active"> 4 <li class="active">
5 {% else %} 5 {% else %}
6 <li class=""> 6 <li class="">
7 {% endif %} 7 {% endif %}
8 <a href="{% url 'package_included_detail' build.id target.id package.id %}"> 8 <a href="{% url 'package_included_detail' build.id target.id package.id %}">
9 <i class="icon-question-sign get-help" title="The files this package adds to the image root file system"></i> 9 <span class="glyphicon glyphicon-question-sign get-help" title="The files this package adds to the image root file system"></span>
10 Files in root file system ({{packageFileCount}}) 10 Files in root file system ({{packageFileCount}})
11 </a> 11 </a>
12 </li> 12 </li>
@@ -16,7 +16,7 @@
16 <li class=""> 16 <li class="">
17 {% endif %} 17 {% endif %}
18 <a href="{% url 'package_included_dependencies' build.id target.id package.id %}"> 18 <a href="{% url 'package_included_dependencies' build.id target.id package.id %}">
19 <i class="icon-question-sign get-help" title="Package runtime dependencies"></i> 19 <span class="glyphicon glyphicon-question-sign get-help" title="Package runtime dependencies"></span>
20 Runtime dependencies ({{dependency_count}}) 20 Runtime dependencies ({{dependency_count}})
21 </a> 21 </a>
22 </li> 22 </li>
@@ -26,7 +26,7 @@
26 <li class=""> 26 <li class="">
27 {% endif %} 27 {% endif %}
28 <a href="{% url 'package_included_reverse_dependencies' build.id target.id package.id %}"> 28 <a href="{% url 'package_included_reverse_dependencies' build.id target.id package.id %}">
29 <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> 29 <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>
30 Reverse runtime dependencies ({{reverse_count}}) 30 Reverse runtime dependencies ({{reverse_count}})
31 </a> 31 </a>
32 </li> 32 </li>
diff --git a/bitbake/lib/toaster/toastergui/templates/recipe.html b/bitbake/lib/toaster/toastergui/templates/recipe.html
index 2aaff6b6bc..97e7b99842 100644
--- a/bitbake/lib/toaster/toastergui/templates/recipe.html
+++ b/bitbake/lib/toaster/toastergui/templates/recipe.html
@@ -14,7 +14,7 @@
14 14
15<div class="row"> 15<div class="row">
16 <div class="col-md-12"> 16 <div class="col-md-12">
17 <div class="page-header"> 17 <div class="page-header build-data">
18 <h1>{{object.name}}_{{object.version}}</h1> 18 <h1>{{object.name}}_{{object.version}}</h1>
19 </div> 19 </div>
20 </div> 20 </div>
@@ -22,28 +22,33 @@
22 22
23<div class="row"> 23<div class="row">
24 <div class="col-md-8 tabbable"> 24 <div class="col-md-8 tabbable">
25 <ul class="nav nav-pills"> 25 <ul class="nav nav-tabs">
26 <li class="{{tab_states.1}}"> 26 <li class="{{tab_states.1}}">
27 <a href="#information" data-toggle="tab"> 27 <a href="#information" data-toggle="tab">
28 <i class="icon-question-sign get-help" title="Build-related information about the recipe"></i> 28 <span class="glyphicon glyphicon-question-sign get-help" title="Build-related
29 information about the recipe"></span>
29 Recipe details 30 Recipe details
30 </a> 31 </a>
31 </li> 32 </li>
32 <li> 33 <li>
33 <a href="{% url "recipe_packages" build.pk object.id %}"> 34 <a href="{% url "recipe_packages" build.pk object.id %}">
34 <i class="icon-question-sign get-help" title="The packaged output resulting from building the recipe"></i> 35 <span class="glyphicon glyphicon-question-sign get-help" title="The packaged
36 output resulting from building the recipe"></span>
35 Packages ({{package_count}}) 37 Packages ({{package_count}})
36 </a> 38 </a>
37 </li> 39 </li>
38 <li class="{{tab_states.3}}"> 40 <li class="{{tab_states.3}}">
39 <a href="#dependencies" data-toggle="tab"> 41 <a href="#dependencies" data-toggle="tab">
40 <i class="icon-question-sign get-help" title="The recipe build-time dependencies (i.e. other recipes)"></i> 42 <span class="glyphicon glyphicon-question-sign get-help" title="The recipe
43 build-time dependencies (i.e. other recipes)"></span>
41 Build dependencies ({{object.r_dependencies_recipe.all.count}}) 44 Build dependencies ({{object.r_dependencies_recipe.all.count}})
42 </a> 45 </a>
43 </li> 46 </li>
44 <li class="{{tab_states.4}}"> 47 <li class="{{tab_states.4}}">
45 <a href="#brought-in-by" data-toggle="tab"> 48 <a href="#brought-in-by" data-toggle="tab">
46 <i class="icon-question-sign get-help" title="The recipe build-time reverse dependencies (i.e. the recipes that depend on this recipe)"></i> 49 <span class="glyphicon glyphicon-question-sign get-help" title="The recipe
50 build-time reverse dependencies (i.e. the recipes that
51 depend on this recipe)"></span>
47 Reverse build dependencies ({{object.r_dependencies_depends.all.count}}) 52 Reverse build dependencies ({{object.r_dependencies_depends.all.count}})
48 </a> 53 </a>
49 </li> 54 </li>
@@ -52,34 +57,39 @@
52 <div class="tab-pane {{tab_states.1}}" id="information"> 57 <div class="tab-pane {{tab_states.1}}" id="information">
53 <dl class="dl-horizontal"> 58 <dl class="dl-horizontal">
54 <dt> 59 <dt>
55 <i class="icon-question-sign get-help" title="The name of the layer providing the recipe"></i> 60 <span class="glyphicon glyphicon-question-sign get-help" title="The name of
61 the layer providing the recipe"></span>
56 Layer 62 Layer
57 </dt> 63 </dt>
58 <dd>{{layer.name}}</dd> 64 <dd>{{layer.name}}</dd>
59 65
60 <dt> 66 <dt>
61 <i class="icon-question-sign get-help" title="Path to the recipe .bb file"></i> 67 <span class="glyphicon glyphicon-question-sign get-help" title="Path to the
68 recipe .bb file"></span>
62 Recipe file 69 Recipe file
63 </dt> 70 </dt>
64 <dd><code>{{object.file_path}} {% if object.pathflags %}<i>({{object.pathflags}})</i>{% endif %}</code></dd> 71 <dd><code>{{object.file_path}} {% if object.pathflags %}<i>({{object.pathflags}})</i>{% endif %}</code></dd>
65 {% if layer_version.branch %} 72 {% if layer_version.branch %}
66 <dt> 73 <dt>
67 <i class="icon-question-sign get-help" title="The Git branch of the layer providing the recipe"></i> 74 <span class="glyphicon glyphicon-question-sign get-help"
75 title="The Git branch of the layer providing the
76 recipe"></span>
68 Layer branch 77 Layer branch
69 </dt> 78 </dt>
70 <dd>{{layer_version.branch}}</dd> 79 <dd>{{layer_version.branch}}</dd>
71 {% endif %} 80 {% endif %}
72 <dt> 81 <dt>
73 <i class="icon-question-sign get-help" title="The Git commit of the layer providing the recipe"></i> 82 <span class="glyphicon glyphicon-question-sign get-help" title="The Git
83 commit of the layer providing the recipe"></span>
74 Layer commit 84 Layer commit
75 </dt> 85 </dt>
76 <dd class="iscommit">{{layer_version.commit}}</dd> 86 <dd class="iscommit">{{layer_version.commit}}</dd>
77 {% if object.provides_set.all %} 87 {% if object.provides_set.all %}
78 <dt> 88 <dt>
79 <i class="icon-question-sign get-help" 89 <span class="glyphicon glyphicon-question-sign get-help"
80 title="A list of aliases by which a particular recipe can be known. The additional aliases are 90 title="A list of aliases by which a particular recipe can be known. The additional aliases are
81 synonyms for the recipe and can be useful satisfying dependencies of other recipes during 91 synonyms for the recipe and can be useful satisfying dependencies of other recipes during
82 the build"></i> 92 the build"></span>
83 PROVIDES 93 PROVIDES
84 </dt> 94 </dt>
85 <dd><code>{% for provider in object.provides_set.all %}{{ provider.name }}&nbsp;{% endfor %}</code></dd> 95 <dd><code>{% for provider in object.provides_set.all %}{{ provider.name }}&nbsp;{% endfor %}</code></dd>
@@ -92,30 +102,45 @@
92 <strong>{{object.name}}_{{object.version}}</strong> does not have any tasks in this build. 102 <strong>{{object.name}}_{{object.version}}</strong> does not have any tasks in this build.
93 </div> 103 </div>
94 {% else %} 104 {% else %}
105 <div class="table-responsive">
95 <table class="table table-bordered table-hover"> 106 <table class="table table-bordered table-hover">
96 <thead> 107 <thead>
97 <tr> 108 <tr>
98 <th> 109 <th>
99 <i class="icon-question-sign get-help" title="The running sequence of each task in the build"></i> 110 <span class="glyphicon glyphicon-question-sign
111 get-help" title="The running sequence of each task
112 in the build"></span>
100 Order 113 Order
101 </th> 114 </th>
102 <th> 115 <th>
103 <i class="icon-question-sign get-help" title="The name of the task"></i> 116 <span class="glyphicon glyphicon-question-sign get-help" title="The name
117 of the task"></span>
104 Task 118 Task
105 </th> 119 </th>
106 <th> 120 <th>
107 <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> 121 <span class="glyphicon glyphicon-question-sign get-help" title="This
122 value tells you if a task had to run (executed) in
123 order to generate the task output, or if the output was
124 provided by another task and therefore the task didn't need
125 to run (not executed)"></span>
108 Executed 126 Executed
109 </th> 127 </th>
110 <th> 128 <th>
111 <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> 129 <span class="glyphicon glyphicon-question-sign get-help" title="This
130 column tells you if 'executed' tasks succeeded or
131 failed. The column also tells you why 'not executed'
132 tasks did not need to run"></span>
112 Outcome 133 Outcome
113 </th> 134 </th>
114 <th> 135 <th>
115 <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> 136 <span class="glyphicon glyphicon-question-sign get-help" title="This
137 column tells you if a task tried to restore output
138 from the <code>sstate-cache</code> directory or
139 mirrors, and reports the result: Succeeded, Failed or File
140 not in cache"></span>
116 Cache attempt 141 Cache attempt
117 </th> 142 </th>
118 </tr> 143 </tr>
119 </thead> 144 </thead>
120 <tbody> 145 <tbody>
121 146
@@ -123,26 +148,30 @@
123 148
124 <tr {{ task|task_color }} > 149 <tr {{ task|task_color }} >
125 150
126 <td><a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.order}}</a></td> 151 <td>{{task.order}}</td>
127 <td> 152 <td>
128 <a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.task_name}}</a> 153 <a href="{% url "task" build.pk task.pk %}">{{task.task_name}}</a>
129 {% if task.get_description %}<i class="icon-question-sign get-help hover-help" title="" data-original-title="{{task.get_description}}"></i> {% endif %} 154 {% if task.get_description %}<span class="glyphicon
155 glyphicon-question-sign get-help hover-help"
156 title="{{task.get_description}}"></span>
157 {% endif %}
130 </td> 158 </td>
131 159
132 <td><a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_executed_display}}</a></td> 160 <td>{{task.get_executed_display}}</td>
133 161
134 <td> 162 <td>{{task.get_outcome_display}}
135 <a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_outcome_display}} </a>
136 {% if task.outcome = task.OUTCOME_FAILED %} 163 {% if task.outcome = task.OUTCOME_FAILED %}
137 <a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}"> 164 <a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}">
138 <i class="icon-download-alt" title="Download task log file"></i> 165 <span class="glyphicon glyphicon-download-alt
166 get-help" title="Download task log
167 file"></span>
139 </a> 168 </a>
140 {% endif %} 169 {% endif %}
141 <i class="icon-question-sign get-help hover-help" title="{{task.get_outcome_help}}"></i> 170 <i class="icon-question-sign get-help hover-help" title="{{task.get_outcome_help}}"></i>
142 </td> 171 </td>
143 <td> 172 <td>
144 {% ifnotequal task.sstate_result task.SSTATE_NA %} 173 {% ifnotequal task.sstate_result task.SSTATE_NA %}
145 <a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_sstate_result_display}}</a> 174 {{task.get_sstate_result_display}}
146 {% endifnotequal %} 175 {% endifnotequal %}
147 </td> 176 </td>
148 177
@@ -151,6 +180,7 @@
151 {% endfor %} 180 {% endfor %}
152 </tbody> 181 </tbody>
153 </table> 182 </table>
183 </div>
154 {% endif %} 184 {% endif %}
155 </div> 185 </div>
156 <div class="tab-pane {{tab_states.3}}" id="dependencies"> 186 <div class="tab-pane {{tab_states.3}}" id="dependencies">
@@ -177,13 +207,13 @@
177 <tr> 207 <tr>
178 <td><a href="{% url "recipe" build.pk rr.depends_on.pk %}">{{rr.depends_on.name}}</a> 208 <td><a href="{% url "recipe" build.pk rr.depends_on.pk %}">{{rr.depends_on.name}}</a>
179 {% if rr.via %} 209 {% if rr.via %}
180 <span class="muted">satisfied via {{rr.via.name}}</span> 210 <span class="text-muted">satisfied via <code class="text-muted">{{rr.via.name}}</code></span>
181 <i class="icon-question-sign get-help hover-help" 211 <span class="glyphicon glyphicon-question-sign get-help hover-help"
182 title="This dependency is satisfied by the PROVIDES value 212 title="This dependency is satisfied by the PROVIDES value
183 {{rr.via.name}} in the {{rr.depends_on.name}} recipe"></i> 213 <code>{{rr.via.name}}</code> in the <code>{{rr.depends_on.name}}</code> recipe"></span>
184 {% endif %} 214 {% endif %}
185 </td> 215 </td>
186 <td><a href="{% url "recipe" build.pk rr.depends_on.pk %}">{{rr.depends_on.version}}</a></td> 216 <td>{{rr.depends_on.version}}</td>
187 </tr> 217 </tr>
188 {% endfor %} 218 {% endfor %}
189 219
@@ -216,13 +246,13 @@
216 <tr> 246 <tr>
217 <td><a href="{% url "recipe" build.pk rr.recipe.pk %}">{{rr.recipe.name}}</a> 247 <td><a href="{% url "recipe" build.pk rr.recipe.pk %}">{{rr.recipe.name}}</a>
218 {% if rr.via %} 248 {% if rr.via %}
219 <span class="muted"> satisfied via {{rr.via.name}}</span> 249 <span class="text-muted"> satisfied via <code class="text-muted">{{rr.via.name}}</code></span>
220 <i class="icon-question-sign get-help hover-help" 250 <span class="glyphicon glyphicon-question-sign get-help hover-help"
221 title="This dependency is satisfied by the PROVIDES value 251 title="This dependency is satisfied by the PROVIDES value
222 {{rr.via.name}} in the {{rr.depends_on.name}} recipe"></i> 252 <code>{{rr.via.name}}</code> in the <code>{{rr.depends_on.name}}</code> recipe"></i>
223 {% endif %} 253 {% endif %}
224 </td> 254 </td>
225 <td><a href="{% url "recipe" build.pk rr.recipe.pk %}">{{rr.recipe.version}}</a></td> 255 <td>{{rr.recipe.version}}</td>
226 </tr> 256 </tr>
227 {% endfor %} 257 {% endfor %}
228 258
@@ -257,7 +287,7 @@
257 {% if object.section %} 287 {% if object.section %}
258 <dt> 288 <dt>
259 Section 289 Section
260 <i class="icon-question-sign get-help" title="The section in which recipes should be categorized"></i> 290 <span class="glyphicon glyphicon-question-sign get-help" title="The section in which recipes should be categorized"></span>
261 </dt> 291 </dt>
262 <dd>{{object.section}}</dd> 292 <dd>{{object.section}}</dd>
263 {% endif %} 293 {% endif %}
diff --git a/bitbake/lib/toaster/toastergui/templates/recipe_packages.html b/bitbake/lib/toaster/toastergui/templates/recipe_packages.html
index 2c2efd8c17..37a586f389 100644
--- a/bitbake/lib/toaster/toastergui/templates/recipe_packages.html
+++ b/bitbake/lib/toaster/toastergui/templates/recipe_packages.html
@@ -13,7 +13,7 @@
13 13
14<div class="row"> 14<div class="row">
15 <div class="col-md-12"> 15 <div class="col-md-12">
16 <div class="page-header"> 16 <div class="page-header build-data">
17 <h1>{{recipe.name}}_{{recipe.version}}</h1> 17 <h1>{{recipe.name}}_{{recipe.version}}</h1>
18 </div> 18 </div>
19 </div> 19 </div>
@@ -21,28 +21,33 @@
21 21
22<div class="row"> 22<div class="row">
23 <div class="col-md-8 tabbable"> 23 <div class="col-md-8 tabbable">
24 <ul class="nav nav-pills"> 24 <ul class="nav nav-tabs">
25 <li> 25 <li>
26 <a href="{% url "recipe" build.pk recipe.id "1" %}"> 26 <a href="{% url "recipe" build.pk recipe.id "1" %}">
27 <i class="icon-question-sign get-help" title="Build-related information about the recipe"></i> 27 <span class="glyphicon glyphicon-question-sign get-help" title="Build-related
28 information about the recipe"></span>
28 Recipe details 29 Recipe details
29 </a> 30 </a>
30 </li> 31 </li>
31 <li class="active"> 32 <li class="active">
32 <a href="#packages-built" data-toggle="tab"> 33 <a href="#packages-built" data-toggle="tab">
33 <i class="icon-question-sign get-help" title="The packaged output resulting from building the recipe"></i> 34 <span class="glyphicon glyphicon-question-sign get-help" title="The packaged
35 output resulting from building the recipe"></span>
34 Packages ({{object_count}}) 36 Packages ({{object_count}})
35 </a> 37 </a>
36 </li> 38 </li>
37 <li> 39 <li>
38 <a href="{% url "recipe" build.pk recipe.id "3" %}"> 40 <a href="{% url "recipe" build.pk recipe.id "3" %}">
39 <i class="icon-question-sign get-help" title="The recipe build-time dependencies (i.e. other recipes)"></i> 41 <span class="glyphicon glyphicon-question-sign get-help" title="The recipe
42 build-time dependencies (i.e. other recipes)"></span>
40 Build dependencies ({{recipe.r_dependencies_recipe.all.count}}) 43 Build dependencies ({{recipe.r_dependencies_recipe.all.count}})
41 </a> 44 </a>
42 </li> 45 </li>
43 <li> 46 <li>
44 <a href="{% url "recipe" build.pk recipe.id "4" %}"> 47 <a href="{% url "recipe" build.pk recipe.id "4" %}">
45 <i class="icon-question-sign get-help" title="The recipe build-time reverse dependencies (i.e. the recipes that depend on this recipe)"></i> 48 <span class="glyphicon glyphicon-question-sign get-help" title="The recipe
49 build-time reverse dependencies (i.e. the recipes that
50 depend on this recipe)"></span>
46 Reverse build dependencies ({{recipe.r_dependencies_depends.all.count}}) 51 Reverse build dependencies ({{recipe.r_dependencies_depends.all.count}})
47 </a> 52 </a>
48 </li> 53 </li>
@@ -75,8 +80,8 @@
75 80
76 <tr> 81 <tr>
77 <td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.name}}</a></td> 82 <td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.name}}</a></td>
78 <td><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.version}}_{{package.revision}}</a></td> 83 <td>{{package.version}}_{{package.revision}}</td>
79 <td class="sizecol"><a href="{% url "package_built_detail" build.pk package.pk %}">{{package.size|filtered_filesizeformat}}</a></td> 84 <td class="sizecol">{{package.size|filtered_filesizeformat}}</td>
80 </tr> 85 </tr>
81 86
82 {% endfor %} 87 {% endfor %}
diff --git a/bitbake/lib/toaster/toastergui/templates/recipedetails.html b/bitbake/lib/toaster/toastergui/templates/recipedetails.html
index 19b18ffcda..66c1f7bcd0 100644
--- a/bitbake/lib/toaster/toastergui/templates/recipedetails.html
+++ b/bitbake/lib/toaster/toastergui/templates/recipedetails.html
@@ -118,7 +118,7 @@
118 <div class="col-md-4"> 118 <div class="col-md-4">
119 <div class="well"> 119 <div class="well">
120 <h2>About {{recipe.name}}</h2> 120 <h2>About {{recipe.name}}</h2>
121 <dl> 121 <dl class="item-info">
122 <dt> 122 <dt>
123 Approx. packages included 123 Approx. packages included
124 <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> 124 <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>
diff --git a/bitbake/lib/toaster/toastergui/templates/snippets/gitrev_popover.html b/bitbake/lib/toaster/toastergui/templates/snippets/gitrev_popover.html
index 281a3bd765..c1e3dabfbf 100644
--- a/bitbake/lib/toaster/toastergui/templates/snippets/gitrev_popover.html
+++ b/bitbake/lib/toaster/toastergui/templates/snippets/gitrev_popover.html
@@ -1,6 +1,6 @@
1{% load projecttags %} 1{% load projecttags %}
2{% if vcs_ref|is_shaid %} 2{% if vcs_ref|is_shaid %}
3<a class="btn" data-content="<ul class='unstyled'> <li>{{vcs_ref}}</li> </ul>"> 3<a class="btn btn-default" data-content="{{vcs_ref}}">
4 {{vcs_ref|truncatechars:10}} 4 {{vcs_ref|truncatechars:10}}
5</a> 5</a>
6{% else %} 6{% else %}
diff --git a/bitbake/lib/toaster/toastergui/templates/snippets/pkg_dependencies_popover.html b/bitbake/lib/toaster/toastergui/templates/snippets/pkg_dependencies_popover.html
index 5be409ca44..273437e380 100644
--- a/bitbake/lib/toaster/toastergui/templates/snippets/pkg_dependencies_popover.html
+++ b/bitbake/lib/toaster/toastergui/templates/snippets/pkg_dependencies_popover.html
@@ -5,7 +5,7 @@
5{% with count_package=package_deps.packages|length %} 5{% with count_package=package_deps.packages|length %}
6 6
7{% if count_package > 0 %} 7{% if count_package > 0 %}
8 <a data-content='<ul class="unstyled"> 8 <a data-content='<ul class="list-unstyled">
9 {% for dep in package_deps.packages %} 9 {% for dep in package_deps.packages %}
10 <li> 10 <li>
11 {% if extra.add_links %} 11 {% if extra.add_links %}
diff --git a/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html b/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html
index 65c2b29d0b..e6ef816e7c 100644
--- a/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html
+++ b/bitbake/lib/toaster/toastergui/templates/snippets/pkg_revdependencies_popover.html
@@ -5,7 +5,7 @@
5{% with count_package=package_deps.packages|length %} 5{% with count_package=package_deps.packages|length %}
6 6
7{% if count_package > 0 %} 7{% if count_package > 0 %}
8 <a data-content='<ul class="unstyled"> 8 <a data-content='<ul class="list-unstyled">
9 {% for dep in package_deps.packages|dictsort:"package.name" %} 9 {% for dep in package_deps.packages|dictsort:"package.name" %}
10 <li> 10 <li>
11 {% if extra.add_links %} 11 {% if extra.add_links %}
diff --git a/bitbake/lib/toaster/toastergui/templates/target.html b/bitbake/lib/toaster/toastergui/templates/target.html
index 0b2fe99577..1924a0dad7 100644
--- a/bitbake/lib/toaster/toastergui/templates/target.html
+++ b/bitbake/lib/toaster/toastergui/templates/target.html
@@ -18,7 +18,7 @@
18 18
19{% block buildinfomain %} 19{% block buildinfomain %}
20<div class="col-md-10"> 20<div class="col-md-10">
21 <div class="page-header"> 21 <div class="page-header build-data">
22 <h1> 22 <h1>
23 {% if request.GET.search and objects.paginator.count > 0 %} 23 {% if request.GET.search and objects.paginator.count > 0 %}
24 {{objects.paginator.count}} package{{objects.paginator.count|pluralize}} found 24 {{objects.paginator.count}} package{{objects.paginator.count|pluralize}} found
@@ -30,16 +30,16 @@
30 </h1> 30 </h1>
31 </div> 31 </div>
32<div id="navTab"> 32<div id="navTab">
33 <ul class="nav nav-pills"> 33 <ul class="nav nav-tabs">
34 <li class="active"> 34 <li class="active">
35 <a href="#target"> 35 <a href="#target">
36 <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> 36 <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>
37 Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}}) 37 Packages included ({{target.package_count}} - {{packages_sum|filtered_filesizeformat}})
38 </a> 38 </a>
39 </li> 39 </li>
40 <li> 40 <li>
41 <a href="{% url 'dirinfo' build.id target.id %}"> 41 <a href="{% url 'dirinfo' build.id target.id %}">
42 <i class="icon-question-sign get-help" title="The directories and files in the root file system of this image"></i> 42 <span class="glyphicon glyphicon-question-sign get-help" title="The directories and files in the root file system of this image"></span>
43 Directory structure 43 Directory structure
44 </a> 44 </a>
45 </li> 45 </li>
@@ -51,6 +51,6 @@
51 {% include "toastertable.html" %} 51 {% include "toastertable.html" %}
52 {% endwith %} 52 {% endwith %}
53 </div> <!-- tabpane --> 53 </div> <!-- tabpane -->
54 </div> <!--navTab -->> 54 </div> <!--navTab -->
55<!-- col-md-10 --> 55<!-- col-md-10 -->
56{% endblock buildinfomain %} 56{% endblock buildinfomain %}
diff --git a/bitbake/lib/toaster/toastergui/templates/task.html b/bitbake/lib/toaster/toastergui/templates/task.html
index 77391b4e35..86789bd0b1 100644
--- a/bitbake/lib/toaster/toastergui/templates/task.html
+++ b/bitbake/lib/toaster/toastergui/templates/task.html
@@ -13,19 +13,20 @@
13 13
14<div class="row"> 14<div class="row">
15 <div class="col-md-12"> 15 <div class="col-md-12">
16 <div class="page-header"> 16 <div class="page-header build-data">
17 <h1><a href="{%url 'recipe' build.pk task.recipe.pk %}">{{task.recipe.name}}_{{task.recipe.version}}</a> {{task.task_name}}</h1> 17 <h1><a href="{%url 'recipe' build.pk task.recipe.pk %}">{{task.recipe.name}}_{{task.recipe.version}}</a> {{task.task_name}}</h1>
18 </div> 18 </div>
19 19
20{# Outcome section #} 20{# Outcome section #}
21<h2 {{ task|task_color:True }}> 21<h2 {{ task|task_color:True }}>
22 {{task.get_outcome_display}} 22 {{task.get_outcome_display}}
23 <i class="icon-question-sign get-help heading-help" title="{{task.get_outcome_help}}"></i> 23 <span class="glyphicon glyphicon-question-sign get-help" title="{{task.get_outcome_help}}"></i>
24</h2> 24</h2>
25{%if task.task_executed %} 25{%if task.task_executed %}
26 {# executed tasks outcome #} 26 {# executed tasks outcome #}
27 {% if task.logfile %} 27 {% if task.logfile %}
28 <a class="btn btn-lg" href="{% url 'build_artifact' build.id "tasklogfile" task.pk %}" style="margin:15px;">Download task log</a> 28 <a class="btn btn-default btn-lg" href="{% url 'build_artifact' build.id
29 "tasklogfile" task.pk %}">Download task log</a>
29 {% endif %} 30 {% endif %}
30 {# show stack trace for failed task #} 31 {# show stack trace for failed task #}
31 {% if task.outcome == task.OUTCOME_FAILED and log_head %} 32 {% if task.outcome == task.OUTCOME_FAILED and log_head %}
@@ -41,31 +42,55 @@
41{# not executed tasks outcome #} 42{# not executed tasks outcome #}
42 {% if task.outcome == task.OUTCOME_PREBUILT %} 43 {% if task.outcome == task.OUTCOME_PREBUILT %}
43 {% if not showing_matches %} 44 {% if not showing_matches %}
44 <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> 45 <a class="btn btn-default"
46 href="javascript:reload_params({'show_matches' : 'true'
47 })">Match to tasks in previous builds <span class="glyphicon
48glyphicon-question-sign get-help" title="This shows you a list of tasks from
49previous builds with the same signature generated from the same inputs as used
50in the prebuilt task. Any of them could be the task that generated the output
51this prebuilt task is reusing"></span></a>
45 {% elif matching_tasks %} 52 {% elif matching_tasks %}
46 <h3 class="details">Prebuilt task could be based on 53 <h3 class="details">Prebuilt task could be based on
47 <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> 54 <span class="glyphicon glyphicon-question-sign get-help" title="This
55 table shows a list of tasks from previous builds with the
56 same signature generated from the same inputs as used in the
57 prebuilt task. Any of them could be the task that generated the
58 output this prebuilt task is reusing"></span>
48 </h3> 59 </h3>
60 <div class="table-responsive">
49 <table class="table table-bordered table-hover"> 61 <table class="table table-bordered table-hover">
50 <thead> 62 <thead>
51 <th> 63 <th>
52 <i class="icon-question-sign get-help" title="The name of the recipe to which each task applies"></i> 64 <span class="glyphicon glyphicon-question-sign
65 get-help" title="The name of the recipe to which
66 each task applies"></span>
53 Recipe 67 Recipe
54 </th> 68 </th>
55 <th> 69 <th>
56 <i class="icon-question-sign get-help" title="The name of the task"></i> 70 <span class="glyphicon glyphicon-question-sign get-help" title="The name
71 of the task"></span>
57 Task 72 Task
58 </th> 73 </th>
59 <th> 74 <th>
60 <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> 75 <span class="glyphicon glyphicon-question-sign get-help" title="This
76 value tells you if a task had to run (executed) in
77 order to generate the task output, or if the output was
78 provided by another task and therefore the task didn't need
79 to run (not executed)"></span>
61 Executed 80 Executed
62 </th> 81 </th>
63 <th> 82 <th>
64 <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> 83 <span class="glyphicon glyphicon-question-sign
84 get-help" title="This column tells you if
85 'executed' tasks succeeded or failed. The column also
86 tells you why 'not executed' tasks did not need to
87 run"></span>
65 Outcome 88 Outcome
66 </th> 89 </th>
67 <th> 90 <th>
68 <i class="icon-question-sign get-help" title="The date and time the build finished"></i> 91 <span class="glyphicon glyphicon-question-sign
92 get-help" title="The date and time the build
93 finished"></span>
69 Build completed on 94 Build completed on
70 </th> 95 </th>
71 </thead> 96 </thead>
@@ -73,27 +98,34 @@
73 {% for match in matching_tasks %} 98 {% for match in matching_tasks %}
74 <tr {{ match|task_color }}> 99 <tr {{ match|task_color }}>
75 <td> 100 <td>
76 <a href="{%url "task" match.build.pk match.pk%}">{{match.recipe.name}}</a> 101 {{match.recipe.name}}
77 </td> 102 </td>
78 <td> 103 <td>
79 <a href="{%url "task" match.build.pk match.pk%}">{{match.task_name}}</a> 104 <a href="{%url "task" match.build.pk match.pk%}">{{match.task_name}}</a>
80 {% if task.get_description %} 105 {% if task.get_description %}
81 <i class="icon-question-sign get-help hover-help" title="{{task.get_description}}"></i> 106 <span class="glyphicon
107 glyphicon-question-sign get-help
108 hover-help"
109 title="{{task.get_description}}"></span>
82 {% endif %} 110 {% endif %}
83 </td> 111 </td>
84 <td> 112 <td>
85 <a href="{%url "task" match.build.pk match.pk%}">{{match.get_executed_display}}</a> 113 {{match.get_executed_display}}
86 </td> 114 </td>
87 <td> 115 <td>
88 <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> 116 {{match.get_outcome_display}}
117 <span class="glyphicon glyphicon-question-sign
118 get-help hover-help"
119 title="{{match.get_outcome_help}}"></span>
89 </td> 120 </td>
90 <td> 121 <td>
91 <a href="{%url "task" match.build.pk match.pk%}">{{match.build.completed_on|date:"d/m/y H:i"}}</a> 122 {{match.build.completed_on|date:"d/m/y H:i"}}
92 </td> 123 </td>
93 </tr> 124 </tr>
94 {% endfor %} 125 {% endfor %}
95 </tbody> 126 </tbody>
96 </table> 127 </table>
128 </div>
97 {% else %} 129 {% else %}
98 <p class="alert"> 130 <p class="alert">
99 <strong> We have found no tasks matching this prebuilt task</strong><br/> 131 <strong> We have found no tasks matching this prebuilt task</strong><br/>
@@ -103,10 +135,11 @@
103 {% elif task.outcome == task.OUTCOME_COVERED %} 135 {% elif task.outcome == task.OUTCOME_COVERED %}
104 <dl class="dl-horizontal"> 136 <dl class="dl-horizontal">
105 <dt> 137 <dt>
106 <i class="icon-question-sign get-help" title="The task(s) providing the outcome of this task"></i> Task covered by 138 <span class="glyphicon glyphicon-question-sign get-help" title="The task(s)
139 providing the outcome of this task"></span> Task covered by
107 </dt> 140 </dt>
108 <dd> 141 <dd>
109 <ul> 142 <ul class="list-unstyled">
110 {% for t in covered_by %} 143 {% for t in covered_by %}
111 <li> 144 <li>
112 <a href="{%url 'task' t.build.pk t.pk%}" 145 <a href="{%url 'task' t.build.pk t.pk%}"
@@ -123,7 +156,8 @@
123 {%elif task.outcome == task.OUTCOME_CACHED%} 156 {%elif task.outcome == task.OUTCOME_CACHED%}
124 {% for t in task.get_related_setscene %} 157 {% for t in task.get_related_setscene %}
125 {% if forloop.last %} 158 {% if forloop.last %}
126 <a class="btn btn-lg" href="{% url 'build_artifact' build.id "tasklogfile" t.pk %}" style="margin:15px;">Download task log</a> 159 <a class="btn btn-default btn-lg" href="{% url
160 'build_artifact' build.id "tasklogfile" t.pk %}">Download task log</a>
127 {% endif %} 161 {% endif %}
128 {% endfor %} 162 {% endfor %}
129 163
@@ -138,17 +172,25 @@
138 {% if task.task_executed %} 172 {% if task.task_executed %}
139 <h2> 173 <h2>
140 Executed 174 Executed
141 <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> 175 <span class="glyphicon glyphicon-question-sign get-help"
176 title="'Executed' tasks are those that need to run in order to
177 generate the task output"></span>
142 {% else %} 178 {% else %}
143 <h2 class="muted"> 179 <h2>
144 Not Executed 180 Not Executed
145 <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> 181 <span class="glyphicon glyphicon-question-sign get-help" title="'Not
182 executed' tasks don't need to run because their outcome is provided
183 by another task"></span>
146 {% endif %} 184 {% endif %}
147 </h2> 185 </h2>
148 186
149<dl class="dl-horizontal"> 187<dl class="dl-horizontal">
150 <dt> 188 <dt>
151 <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> 189 <span class="glyphicon glyphicon-question-sign get-help" title="To make builds more
190 efficient, the build system detects changes in the 'inputs' to a
191 given task by creating a 'task signature'. If the signature changes,
192 the build system assumes the inputs have changed and the task needs to be
193rerun"></span>
152 Task inputs signature 194 Task inputs signature
153 </dt> 195 </dt>
154 <dd> 196 <dd>
@@ -157,19 +199,29 @@
157 {% if task.sstate_result != task.SSTATE_NA %} 199 {% if task.sstate_result != task.SSTATE_NA %}
158 </dl> 200 </dl>
159 <div class="alert alert-info">Attempting to restore output from sstate cache 201 <div class="alert alert-info">Attempting to restore output from sstate cache
160 <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> 202 <span class="glyphicon glyphicon-question-sign get-help
203 get-help-blue" title="The build system is searching for the
204 task output in your <code>sstate-cache</code> directory and
205 mirrors. If the build system finds the task output, it will reuse it
206 instead of building it from scratch by running the real task. Reusing the
207 task output makes the build faster"></span>
161 </div> 208 </div>
162 <dl class="dl-horizontal"> 209 <dl class="dl-horizontal">
163 <dt> 210 <dt>
164 <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> 211 <span class="glyphicon glyphicon-question-sign get-help" title="The name of the
212 file searched for in your <code>sstate-cache</code>
213 directory and mirrors"></span>
165 File searched for 214 File searched for
166 </dt> 215 </dt>
167 <dd><code>{{task.path_to_sstate_obj}}</code></dd> 216 <dd><code>{{task.path_to_sstate_obj}}</code></dd>
168 <dt> 217 <dt>
169 <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> 218 <span class="glyphicon glyphicon-question-sign get-help" title="The locations
219 searched for the above file (i.e. your
220 <code>sstate-cache</code> directory and any mirrors you have
221 set up)"></span>
170 URI(s) searched 222 URI(s) searched
171 </dt> 223 </dt>
172 <dd><ul>{% for uri in uri_list %}<li><code>{{uri}}</code></li>{% endfor %}</ul></dd> 224 <dd><ul class="list-unstyled">{% for uri in uri_list %}<li><code>{{uri}}</code></li>{% endfor %}</ul></dd>
173 </dl> 225 </dl>
174 {% endif %} 226 {% endif %}
175 {% if task.sstate_result == task.SSTATE_MISS %} 227 {% if task.sstate_result == task.SSTATE_MISS %}
@@ -177,7 +229,7 @@
177 <strong>File not in sstate cache.</strong> Running the real task instead. 229 <strong>File not in sstate cache.</strong> Running the real task instead.
178 </div> 230 </div>
179 {% elif task.sstate_result == task.SSTATE_FAILED%} 231 {% elif task.sstate_result == task.SSTATE_FAILED%}
180 <div class="alert"> 232 <div class="alert alert-warning">
181 <strong>Failed</strong> to restore output from sstate cache. The file was found but could not be unpacked. 233 <strong>Failed</strong> to restore output from sstate cache. The file was found but could not be unpacked.
182 </div> 234 </div>
183 <dl class="dl-horizontal"> 235 <dl class="dl-horizontal">
@@ -193,13 +245,16 @@
193 {% endif %} 245 {% endif %}
194 <dl class="dl-horizontal"> 246 <dl class="dl-horizontal">
195 <dt> 247 <dt>
196 <i class="icon-question-sign get-help" title="The running sequence of each task in the build"></i> 248 <span class="glyphicon glyphicon-question-sign get-help" title="The
249 running sequence of each task in the build"></span>
197 Task order 250 Task order
198 </dt> 251 </dt>
199 <dd><a href="{%url "tasks" build.pk %}?page={{task_in_tasks_table_pg}}&limit=25#task-{{task.order}}">{{task.order}}</a></dd> 252 <dd><a href="{%url "tasks" build.pk %}?page={{task_in_tasks_table_pg}}&limit=25#task-{{task.order}}">{{task.order}}</a></dd>
200 {% if task.task_executed %} 253 {% if task.task_executed %}
201 <dt> 254 <dt>
202 <i class="icon-question-sign get-help" title="Indicates if this task executes a Python or Shell function(s)"></i> 255 <span class="glyphicon glyphicon-question-sign get-help"
256 title="Indicates if this task executes a Python or Shell
257 function(s)"></span>
203 Task script type 258 Task script type
204 </dt> 259 </dt>
205 <dd>{{task.get_script_type_display}}</dd> 260 <dd>{{task.get_script_type_display}}</dd>
@@ -212,29 +267,31 @@
212 <dd><code>{{task.source_url}}</code></dd> 267 <dd><code>{{task.source_url}}</code></dd>
213--> 268-->
214 <dt> 269 <dt>
215 <i class="icon-question-sign get-help" title="Task dependency chain (i.e. other tasks)"></i> 270 <span class="glyphicon glyphicon-question-sign get-help" title="Task dependency chain
271 (i.e. other tasks)"></span>
216 Dependencies 272 Dependencies
217 </dt> 273 </dt>
218 <dd> 274 <dd>
219 <ul> 275 <ul class="list-unstyled">
220 {% for dep in deps %} 276 {% for dep in deps %}
221 <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> 277 <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>
222 {% empty %} 278 {% empty %}
223 <li class="muted">This task has no dependencies</li> 279 <li class="text-muted" style="margin-bottom: -10px;">This task has no dependencies</li>
224 {% endfor %} 280 {% endfor %}
225 </ul> 281 </ul>
226 </dd> 282 </dd>
227 <dt> 283 <dt>
228 <i class="icon-question-sign get-help" title="Tasks that depend on this task"></i> 284 <span class="glyphicon glyphicon-question-sign get-help" title="Tasks that depend on this
285 task"></span>
229 Reverse dependencies 286 Reverse dependencies
230 </dt> 287 </dt>
231 <dd> 288 <dd>
232 <ul> 289 <ul class="list-unstyled">
233 {% for dep in rdeps %} 290 {% for dep in rdeps %}
234 <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> 291 <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>
235 {% empty %} 292 {% empty %}
236 <li class="muted">This task has no reverse dependencies</li> 293 <li class="text-muted">This task has no reverse dependencies</li>
237 {% endfor %} 294 {% endfor %}
238 </ul> 295 </ul>
239</dl> 296</dl>
240 297
@@ -245,28 +302,36 @@
245 <dl class="dl-horizontal"> 302 <dl class="dl-horizontal">
246 {% if task.elapsed_time %} 303 {% if task.elapsed_time %}
247 <dt> 304 <dt>
248 <i class="icon-question-sign get-help" title="How long it took the task to finish in seconds"></i> 305 <span class="glyphicon glyphicon-question-sign get-help" title="How
306 long it took the task to finish in seconds"></span>
249 Time (secs) 307 Time (secs)
250 </dt> 308 </dt>
251 <dd>{{task.elapsed_time|format_none_and_zero|floatformat:2}}</dd> 309 <dd>{{task.elapsed_time|format_none_and_zero|floatformat:2}}</dd>
252 {% endif %} 310 {% endif %}
253 {% if task.cpu_time_user > 0 %} 311 {% if task.cpu_time_user > 0 %}
254 <dt> 312 <dt>
255 <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> 313 <span class="glyphicon glyphicon-question-sign get-help" title="Total amount of time
314 spent executing in user mode, in seconds. Note that this time
315 can be greater than the task time due to parallel
316 execution."></span>
256 User CPU time (secs) 317 User CPU time (secs)
257 </dt> 318 </dt>
258 <dd>{{task.cpu_time_user|format_none_and_zero|floatformat:2}}</dd> 319 <dd>{{task.cpu_time_user|format_none_and_zero|floatformat:2}}</dd>
259 {% endif %} 320 {% endif %}
260 {% if task.cpu_time_system > 0 %} 321 {% if task.cpu_time_system > 0 %}
261 <dt> 322 <dt>
262 <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> 323 <span class="glyphicon glyphicon-question-sign get-help" title="Total amount of time
324 spent executing in kernel mode, in seconds. Note that this time
325 can be greater than the task time due to parallel
326 execution."></span>
263 System CPU time (secs) 327 System CPU time (secs)
264 </dt> 328 </dt>
265 <dd>{{task.cpu_time_system|format_none_and_zero|floatformat:2}}</dd> 329 <dd>{{task.cpu_time_system|format_none_and_zero|floatformat:2}}</dd>
266 {% endif %} 330 {% endif %}
267 {% if task.disk_io > 0 %} 331 {% if task.disk_io > 0 %}
268 <dt> 332 <dt>
269 <i class="icon-question-sign get-help" title="Number of bytes written to and read from the disk during the task"></i> 333 <span class="glyphicon glyphicon-question-sign get-help" title="Number of bytes
334 written to and read from the disk during the task"></span>
270 Disk I/O (bytes) 335 Disk I/O (bytes)
271 </dt> 336 </dt>
272 <dd>{{task.disk_io|format_none_and_zero|intcomma}}</dd> 337 <dd>{{task.disk_io|format_none_and_zero|intcomma}}</dd>
diff --git a/bitbake/lib/toaster/toastergui/templates/unavailable_artifact.html b/bitbake/lib/toaster/toastergui/templates/unavailable_artifact.html
index 331a4845ab..fc77e405f7 100644
--- a/bitbake/lib/toaster/toastergui/templates/unavailable_artifact.html
+++ b/bitbake/lib/toaster/toastergui/templates/unavailable_artifact.html
@@ -6,10 +6,12 @@
6{% block title %} Build artifact does not exist - Toaster {% endblock %} 6{% block title %} Build artifact does not exist - Toaster {% endblock %}
7 7
8{% block pagecontent %} 8{% block pagecontent %}
9 <div class="row air"> 9 <div class="row">
10 <div class="alert alert-info col-md-8 lead"> 10 <div class="col-md-8">
11 <p>The build artifact you are trying to download does not exist.</p> 11 <div class="alert alert-info lead top-air">
12 <p><a href="javascript:window.history.back()">Back to previous page</a></p> 12 <p>The build artifact you are trying to download does not exist.</p>
13 <p><a href="javascript:window.history.back()">Back to previous page</a></p>
14 </div>
13 </div> 15 </div>
14 </div> 16 </div>
15{% endblock %} 17{% endblock %}
diff --git a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
index 119311db93..dc75f229bb 100644
--- a/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
+++ b/bitbake/lib/toaster/toastergui/templatetags/projecttags.py
@@ -112,11 +112,11 @@ def task_color(task_object, show_green=False):
112 show_green argument should be True to get green color. 112 show_green argument should be True to get green color.
113 """ 113 """
114 if not task_object.task_executed: 114 if not task_object.task_executed:
115 return 'class=muted' 115 return 'class=text-muted'
116 elif task_object.outcome == task_object.OUTCOME_FAILED: 116 elif task_object.outcome == task_object.OUTCOME_FAILED:
117 return 'class=error' 117 return 'class=text-danger'
118 elif task_object.outcome == task_object.OUTCOME_SUCCESS and show_green: 118 elif task_object.outcome == task_object.OUTCOME_SUCCESS and show_green:
119 return 'class=green' 119 return 'class=text-success'
120 else: 120 else:
121 return '' 121 return ''
122 122
@@ -250,15 +250,15 @@ from django.utils.safestring import mark_safe
250@register.filter 250@register.filter
251def format_vpackage_rowclass(size): 251def format_vpackage_rowclass(size):
252 if size == -1: 252 if size == -1:
253 return mark_safe('class="muted"') 253 return mark_safe('class="text-muted"')
254 return '' 254 return ''
255 255
256@register.filter 256@register.filter
257def format_vpackage_namehelp(name): 257def format_vpackage_namehelp(name):
258 r = name + '&nbsp;' 258 r = name + '&nbsp;'
259 r += '<i class="icon-question-sign get-help hover-help"' 259 r += '<span class="glyphicon glyphicon-question-sign get-help hover-help"'
260 r += ' title = "' + name + ' has not been built">' 260 r += ' title = "' + name + ' has not been built">'
261 r += '</i>' 261 r += '</span>'
262 return mark_safe(r) 262 return mark_safe(r)
263 263
264@register.filter 264@register.filter
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index d58aff0a1b..9121ea90fd 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -898,7 +898,6 @@ def configvars(request, build_id):
898 }, 898 },
899 {'name': 'Value', 899 {'name': 'Value',
900 'qhelp': "The value assigned to the variable", 900 'qhelp': "The value assigned to the variable",
901 'dclass': "span4",
902 }, 901 },
903 {'name': 'Set in file', 902 {'name': 'Set in file',
904 'qhelp': "The last configuration file that touched the variable value", 903 'qhelp': "The last configuration file that touched the variable value",