1 <!-- 2 Copyright 2014 The Chromium Authors. All rights reserved. 3 Use of this source code is governed by a BSD-style license that can be 4 found in the LICENSE file. 5 --> 6 7 <link rel='import' href='ct-builder.html'> 8 9 <script> 10 // .builders[i] will have the CTBuilder objects 11 function CTBuilderList(failures) { 12 this.builders = []; 13 14 if (!Array.isArray(failures)) 15 failures = [failures]; 16 17 var builderMap = {}; 18 failures.forEach(function(failure) { 19 var results = failure.resultNodesByBuilder; 20 Object.keys(results, (function(builder, result) { 21 if (!builderMap[builder]) 22 builderMap[builder] = {}; 23 // This assumes that duplicate builder/master pairs all have the same 24 // earliestFailingBuild. 25 builderMap[builder][result.masterUrl] = { 26 earliestFailingBuild: result.earliestFailingBuild, 27 failingBuildCount: result.failingBuildCount, 28 }; 29 }).bind(this)); 30 }, this); 31 32 Object.keys(builderMap).sort().forEach(function(builder) { 33 Object.keys(builderMap[builder]).sort().forEach(function(masterUrl) { 34 var result = builderMap[builder][masterUrl]; 35 this.builders.push(new CTBuilder(masterUrl, builder, 36 result.earliestFailingBuild, result.failingBuildCount)); 37 }, this); 38 }, this); 39 } 40 </script> 41