summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorDave Lerner <dave.lerner@windriver.com>2015-03-14 09:00:15 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-03-25 12:39:58 +0000
commiteeef93ad072cce86de9c59d51df2b8ccc4349b2e (patch)
tree1e74f541d0d62dda71bc1f298ebd0e36a8a9f68c /bitbake
parent1a4c8a849ac14e6a7a90d5730758b010b68ffd9f (diff)
downloadpoky-eeef93ad072cce86de9c59d51df2b8ccc4349b2e.tar.gz
bitbake: toaster: most-build-targets bug fixes
Fixes for the following for the "Most built targets" section of the project page: 1) limit the number of most built targets to 5, 2) order the list of most built targets by build count, 3) select only those builds that had build status of 'fail', 'success', or a BuildRequest of 'failed', 4) if there are no layers in the project then (on refresh) all of the checkboxes in the 'Most built targets' list are disabled. Note that per agreement with UI designer, the only sort on the most target list is build count as described in (3) above; secondary sorting is random. [YOCTO #7177] (Bitbake rev: dda2f07193e740860f4497c3761d340d8c5c2b41) Signed-off-by: Dave Lerner <dave.lerner@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/toaster/toastergui/static/js/projectapp.js19
-rw-r--r--bitbake/lib/toaster/toastergui/templates/project.html7
-rwxr-xr-xbitbake/lib/toaster/toastergui/views.py6
3 files changed, 26 insertions, 6 deletions
diff --git a/bitbake/lib/toaster/toastergui/static/js/projectapp.js b/bitbake/lib/toaster/toastergui/static/js/projectapp.js
index 26e054dc23..0b6e0126dd 100644
--- a/bitbake/lib/toaster/toastergui/static/js/projectapp.js
+++ b/bitbake/lib/toaster/toastergui/static/js/projectapp.js
@@ -484,11 +484,13 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
484 layerAdd: selectedArray.join(","), 484 layerAdd: selectedArray.join(","),
485 } 485 }
486 }).then(function () { 486 }).then(function () {
487 $scope.adjustMostBuiltItems(selectedArray.length);
487 $scope.layerAddName = undefined; 488 $scope.layerAddName = undefined;
488 }); 489 });
489 }); 490 });
490 } 491 }
491 else { 492 else {
493 $scope.adjustMostBuiltItems(1);
492 $scope._makeXHRCall({ 494 $scope._makeXHRCall({
493 method: "POST", url: $scope.urls.xhr_edit, 495 method: "POST", url: $scope.urls.xhr_edit,
494 data: { 496 data: {
@@ -503,6 +505,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
503 }; 505 };
504 506
505 $scope.layerDel = function(id) { 507 $scope.layerDel = function(id) {
508 $scope.adjustMostBuiltItems(-1);
506 $scope._makeXHRCall({ 509 $scope._makeXHRCall({
507 method: "POST", url: $scope.urls.xhr_edit, 510 method: "POST", url: $scope.urls.xhr_edit,
508 data: { 511 data: {
@@ -511,6 +514,14 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
511 }); 514 });
512 }; 515 };
513 516
517 $scope.adjustMostBuiltItems = function(listDelta) {
518 $scope.layerCount += listDelta;
519 $scope.mutedtargets = ($scope.layerCount == 0 ? "muted" : "");
520 };
521
522/*
523*/
524
514 525
515 /** 526 /**
516 * Verifies if a project settings change would trigger layer updates. If user confirmation is needed, 527 * Verifies if a project settings change would trigger layer updates. If user confirmation is needed,
@@ -799,6 +810,14 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
799 return keys.length === 0; 810 return keys.length === 0;
800 }; 811 };
801 812
813 $scope.disableBuildCheckbox = function(t) {
814 if ( $scope.layerCount == 0 ) {
815 $scope.mostBuiltTargets[t] = 0;
816 return true;
817 };
818 return false;
819 }
820
802 $scope.buildSelectedTargets = function () { 821 $scope.buildSelectedTargets = function () {
803 var keys = Object.keys($scope.mostBuiltTargets); 822 var keys = Object.keys($scope.mostBuiltTargets);
804 keys = keys.filter(function (e) { if ($scope.mostBuiltTargets[e]) return e; }); 823 keys = keys.filter(function (e) { if ($scope.mostBuiltTargets[e]) return e; });
diff --git a/bitbake/lib/toaster/toastergui/templates/project.html b/bitbake/lib/toaster/toastergui/templates/project.html
index 40048c2f2c..9d51a57208 100644
--- a/bitbake/lib/toaster/toastergui/templates/project.html
+++ b/bitbake/lib/toaster/toastergui/templates/project.html
@@ -328,10 +328,10 @@ vim: expandtab tabstop=2
328 <h4 class="air"> 328 <h4 class="air">
329 Most built targets 329 Most built targets
330 </h4> 330 </h4>
331 <ul class="unstyled configuration-list"> 331 <ul class="unstyled configuration-list {[mutedtargets]}">
332 <li ng-repeat="t in frequenttargets"> 332 <li ng-repeat="t in frequenttargets">
333 <label class="checkbox"> 333 <label class="checkbox">
334 <input type="checkbox" ng-model="mostBuiltTargets[t]">{[t]} 334 <input type="checkbox" ng-model="mostBuiltTargets[t]" ng-disabled="disableBuildCheckbox(t)" ng-checked="mostBuiltTargets[t] && !disableBuildCheckbox(t)">{[t]}
335 </label> 335 </label>
336 </li> 336 </li>
337 </ul> 337 </ul>
@@ -443,7 +443,8 @@ angular.element(document).ready(function() {
443 scope.frequenttargets = {{freqtargets|json}}; 443 scope.frequenttargets = {{freqtargets|json}};
444 scope.machine = {{machine|json}}; 444 scope.machine = {{machine|json}};
445 scope.releases = {{releases|json}}; 445 scope.releases = {{releases|json}};
446 446 scope.layerCount = scope.layers.length;
447 scope.mutedtargets = (scope.layerCount == 0 ? "muted" : "")
447 var now = (new Date()).getTime(); 448 var now = (new Date()).getTime();
448 scope.todaydate = now - (now % 86400000); 449 scope.todaydate = now - (now % 86400000);
449 450
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index d999959446..fdd80222ab 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -2204,11 +2204,11 @@ if toastermain.settings.MANAGED:
2204 freqtargets = [] 2204 freqtargets = []
2205 try: 2205 try:
2206 freqtargets += map(lambda x: x.target, reduce(lambda x, y: x + y, map(lambda x: list(x.target_set.all()), Build.objects.filter(project = prj, outcome__lt = Build.IN_PROGRESS)))) 2206 freqtargets += map(lambda x: x.target, reduce(lambda x, y: x + y, map(lambda x: list(x.target_set.all()), Build.objects.filter(project = prj, outcome__lt = Build.IN_PROGRESS))))
2207 freqtargets += map(lambda x: x.target, reduce(lambda x, y: x + y, map(lambda x: list(x.brtarget_set.all()), BuildRequest.objects.filter(project = prj, state__lte = BuildRequest.REQ_QUEUED)))) 2207 freqtargets += map(lambda x: x.target, reduce(lambda x, y: x + y, map(lambda x: list(x.brtarget_set.all()), BuildRequest.objects.filter(project = prj, state = BuildRequest.REQ_FAILED))))
2208 except TypeError: 2208 except TypeError:
2209 pass 2209 pass
2210 freqtargets = Counter(freqtargets) 2210 freqtargets = Counter(freqtargets)
2211 freqtargets = sorted(freqtargets, key = lambda x: freqtargets[x]) 2211 freqtargets = sorted(freqtargets, key = lambda x: freqtargets[x], reverse=True)
2212 2212
2213 context = { 2213 context = {
2214 "project" : prj, 2214 "project" : prj,
@@ -2228,7 +2228,7 @@ if toastermain.settings.MANAGED:
2228 "branch" : { "name" : x.layercommit.get_vcs_reference(), "layersource" : x.layercommit.up_branch.layer_source.name if x.layercommit.up_branch != None else None}}, 2228 "branch" : { "name" : x.layercommit.get_vcs_reference(), "layersource" : x.layercommit.up_branch.layer_source.name if x.layercommit.up_branch != None else None}},
2229 prj.projectlayer_set.all().order_by("id")), 2229 prj.projectlayer_set.all().order_by("id")),
2230 "targets" : map(lambda x: {"target" : x.target, "task" : x.task, "pk": x.pk}, prj.projecttarget_set.all()), 2230 "targets" : map(lambda x: {"target" : x.target, "task" : x.task, "pk": x.pk}, prj.projecttarget_set.all()),
2231 "freqtargets": freqtargets, 2231 "freqtargets": freqtargets[:5],
2232 "releases": map(lambda x: {"id": x.pk, "name": x.name, "description":x.description}, Release.objects.all()), 2232 "releases": map(lambda x: {"id": x.pk, "name": x.name, "description":x.description}, Release.objects.all()),
2233 "project_html": 1, 2233 "project_html": 1,
2234 } 2234 }