diff --git a/www/grid_view/src/module/grid.controller.coffee b/www/grid_view/src/module/grid.controller.coffee index db10c594eae..d65a4973b83 100644 --- a/www/grid_view/src/module/grid.controller.coffee +++ b/www/grid_view/src/module/grid.controller.coffee @@ -112,9 +112,11 @@ class Grid extends Controller requestsByBSID = {} for req in @buildrequests (requestsByBSID[req.buildsetid] ?= []).push(req) - buildByReqID = {} + buildsByReqID = {} for build in @builds - buildByReqID[build.buildrequestid] = build + # There may be multiple builds for a given request + # (for example when a worker connection is lost). + (buildsByReqID[build.buildrequestid] ?= []).push(build) for builder in @builders builder.builds = {} @@ -127,17 +129,25 @@ class Grid extends Controller unless requests? continue for req in requests - build = buildByReqID[req.buildrequestid] - unless build? + builds = buildsByReqID[req.buildrequestid] ? [] + if !isNaN(@result) + i = 0 + while i < builds.length + if parseInt(builds[i].results) != parseInt(@result) + builds.splice(i, 1) + else + i += 1 + unless builds.length > 0 continue if @result? and @result != '' and !isNaN(@result) if build.results != parseInt(@result) continue builder = @builders.get(build.builderid) + unless @isBuilderDisplayed(builder) continue buildersById[builder.builderid] = builder - builder.builds[c.changeid] = build + builder.builds[c.changeid] = builds @$scope.builders = (builder for own i, builder of buildersById) diff --git a/www/grid_view/src/module/grid.tpl.jade b/www/grid_view/src/module/grid.tpl.jade index 51403e24d2e..32f46995fa4 100644 --- a/www/grid_view/src/module/grid.tpl.jade +++ b/www/grid_view/src/module/grid.tpl.jade @@ -45,6 +45,6 @@ span.builder-tag.label(ng-click="C.toggleTag(tag)", ng-class="C.isTagToggled(tag) ? 'label-success': 'label-default'") | {{ tag }} td(ng-repeat="ch in changes track by ch.changeid") - a(ng-if="b.builds[ch.changeid]", ui-sref="build({builder: b.builderid, build: b.builds[ch.changeid].number})") - span.badge-status(ng-class="results2class(b.builds[ch.changeid], 'pulse')") - | {{ b.builds[ch.changeid].number }} + a(ng-repeat="build in b.builds[ch.changeid] | orderBy: 'buildid'", ui-sref="build({builder: b.builderid, build: build.number})") + span.badge-status(ng-class="results2class(build, 'pulse')") + | {{ build.number }}