diff --git a/www/base/src/app/builders/builds/build.controller.coffee b/www/base/src/app/builders/builds/build.controller.coffee index a219c8f292c..8e6bff3e166 100644 --- a/www/base/src/app/builders/builds/build.controller.coffee +++ b/www/base/src/app/builders/builds/build.controller.coffee @@ -1,7 +1,8 @@ class Build extends Controller constructor: ($rootScope, $scope, $location, $stateParams, $state, dataService, dataUtilsService, recentStorage, publicFieldsFilter, - glBreadcrumbService, glTopbarContextualActionsService) -> + glBreadcrumbService, glTopbarContextualActionsService, resultsService) -> + _.mixin($scope, resultsService) builderid = _.parseInt($stateParams.builder) buildnumber = _.parseInt($stateParams.build) @@ -71,10 +72,23 @@ class Build extends Controller data = dataService.open($scope) data.getBuilders(builderid).then (builders) -> $scope.builder = builder = builders[0] - builder.getBuilds(buildnumber).then (builds) -> - $scope.build = build = builds[0] - if not build.number? and buildnumber > 1 - $state.go('build', builder:builderid, build:buildnumber - 1) + builder.getBuilds(number__lt: buildnumber + 2, limit: 3, order: '-number').then (builds) -> + $scope.prevbuild = null + $scope.nextbuild = null + build = null + for b in builds + if b.number == buildnumber - 1 + $scope.prevbuild = b + if b.number == buildnumber + $scope.build = build = b + if b.number == buildnumber + 1 + $scope.nextbuild = b + $scope.last_build = false + + if not build + $state.go('build', builder: builderid, build: builds[0].number) + return + breadcrumb = [ caption: "Builders" sref: "builders" @@ -97,18 +111,19 @@ class Build extends Controller link: "#/builders/#{$scope.builder.builderid}/builds/#{$scope.build.number}" caption: "#{$scope.builder.name} / #{$scope.build.number}" - data.getBuilds(build.buildid).then (builds) -> - build = builds[0] - $scope.properties = build.getProperties().getArray() - $scope.changes = build.getChanges().getArray() - $scope.$watch 'changes', (changes) -> - if changes? - responsibles = {} - for change in changes - change.author_email = dataUtilsService.emailInString(change.author) - responsibles[change.author] = change.author_email - $scope.responsibles = responsibles - , true + # HACK: we should definitively fix this in the data_module + # http://trac.buildbot.net/ticket/3380 + build._endpoint = "builds" + $scope.properties = build.getProperties().getArray() + $scope.changes = build.getChanges().getArray() + $scope.$watch 'changes', (changes) -> + if changes? + responsibles = {} + for change in changes + change.author_email = dataUtilsService.emailInString(change.author) + responsibles[change.author] = change.author_email + $scope.responsibles = responsibles + , true data.getBuildslaves(build.buildslaveid).then (buildslaves) -> $scope.buildslave = publicFieldsFilter(buildslaves[0]) @@ -117,6 +132,3 @@ class Build extends Controller $scope.buildrequest = buildrequest = buildrequests[0] data.getBuildsets(buildrequest.buildsetid).then (buildsets) -> $scope.buildset = buildsets[0] - - builder.getBuilds(buildnumber + 1).then (builds) -> - $scope.nextbuild = builds[0] diff --git a/www/base/src/app/builders/builds/build.tpl.jade b/www/base/src/app/builders/builds/build.tpl.jade index d25e7a14e7a..0663a987256 100644 --- a/www/base/src/app/builders/builds/build.tpl.jade +++ b/www/base/src/app/builders/builds/build.tpl.jade @@ -3,11 +3,14 @@ nav ul.pager li.previous(ng-class="{'disabled': build.number == 1}") - a(ng-if="build.number > 1 ", ui-sref="build({build:build.number - 1})") ← Previous + a(ng-if="build.number > 1 ", ui-sref="build({build:prevbuild.number})") + span.badge-status(ng-class="results2class(prevbuild, 'pulse')") ← + |  Previous span(ng-if="build.number == 1") ← Previous li(ng-if="build.complete" title="{{ build.complete_at | dateformat:'LLL' }}") Finished {{ build.complete_at | timeago }} li.next(ng-class="{'disabled': last_build}") - a(ng-if="!last_build", ui-sref="build({build:build.number + 1})") Next → + a(ng-if="!last_build", ui-sref="build({build:nextbuild.number})") Next  + span.badge-status(ng-class="results2class(nextbuild, 'pulse')") → span(ng-if="last_build") Next → .row .col-sm-5