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)
downloadast2050-yocto-poky-eeef93ad072cce86de9c59d51df2b8ccc4349b2e.zip
ast2050-yocto-poky-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 26e054d..0b6e012 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
layerAdd: selectedArray.join(","),
}
}).then(function () {
+ $scope.adjustMostBuiltItems(selectedArray.length);
$scope.layerAddName = undefined;
});
});
}
else {
+ $scope.adjustMostBuiltItems(1);
$scope._makeXHRCall({
method: "POST", url: $scope.urls.xhr_edit,
data: {
@@ -503,6 +505,7 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
};
$scope.layerDel = function(id) {
+ $scope.adjustMostBuiltItems(-1);
$scope._makeXHRCall({
method: "POST", url: $scope.urls.xhr_edit,
data: {
@@ -511,6 +514,14 @@ projectApp.controller('prjCtrl', function($scope, $modal, $http, $interval, $loc
});
};
+ $scope.adjustMostBuiltItems = function(listDelta) {
+ $scope.layerCount += listDelta;
+ $scope.mutedtargets = ($scope.layerCount == 0 ? "muted" : "");
+ };
+
+/*
+*/
+
/**
* 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
return keys.length === 0;
};
+ $scope.disableBuildCheckbox = function(t) {
+ if ( $scope.layerCount == 0 ) {
+ $scope.mostBuiltTargets[t] = 0;
+ return true;
+ };
+ return false;
+ }
+
$scope.buildSelectedTargets = function () {
var keys = Object.keys($scope.mostBuiltTargets);
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 40048c2..9d51a57 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
<h4 class="air">
Most built targets
</h4>
- <ul class="unstyled configuration-list">
+ <ul class="unstyled configuration-list {[mutedtargets]}">
<li ng-repeat="t in frequenttargets">
<label class="checkbox">
- <input type="checkbox" ng-model="mostBuiltTargets[t]">{[t]}
+ <input type="checkbox" ng-model="mostBuiltTargets[t]" ng-disabled="disableBuildCheckbox(t)" ng-checked="mostBuiltTargets[t] && !disableBuildCheckbox(t)">{[t]}
</label>
</li>
</ul>
@@ -443,7 +443,8 @@ angular.element(document).ready(function() {
scope.frequenttargets = {{freqtargets|json}};
scope.machine = {{machine|json}};
scope.releases = {{releases|json}};
-
+ scope.layerCount = scope.layers.length;
+ scope.mutedtargets = (scope.layerCount == 0 ? "muted" : "")
var now = (new Date()).getTime();
scope.todaydate = now - (now % 86400000);
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py
index d999959..fdd8022 100755
--- a/bitbake/lib/toaster/toastergui/views.py
+++ b/bitbake/lib/toaster/toastergui/views.py
@@ -2204,11 +2204,11 @@ if toastermain.settings.MANAGED:
freqtargets = []
try:
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))))
- 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))))
+ 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))))
except TypeError:
pass
freqtargets = Counter(freqtargets)
- freqtargets = sorted(freqtargets, key = lambda x: freqtargets[x])
+ freqtargets = sorted(freqtargets, key = lambda x: freqtargets[x], reverse=True)
context = {
"project" : prj,
@@ -2228,7 +2228,7 @@ if toastermain.settings.MANAGED:
"branch" : { "name" : x.layercommit.get_vcs_reference(), "layersource" : x.layercommit.up_branch.layer_source.name if x.layercommit.up_branch != None else None}},
prj.projectlayer_set.all().order_by("id")),
"targets" : map(lambda x: {"target" : x.target, "task" : x.task, "pk": x.pk}, prj.projecttarget_set.all()),
- "freqtargets": freqtargets,
+ "freqtargets": freqtargets[:5],
"releases": map(lambda x: {"id": x.pk, "name": x.name, "description":x.description}, Release.objects.all()),
"project_html": 1,
}
OpenPOWER on IntegriCloud