Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(151)

Side by Side Diff: Tools/GardeningServer/ui/ct-builder-grid.html

Issue 409063002: Simplify failing builder lists. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: make resultTypes private Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 <!-- 1 <!--
2 Copyright 2014 The Chromium Authors. All rights reserved. 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 3 Use of this source code is governed by a BSD-style license that can be
4 found in the LICENSE file. 4 found in the LICENSE file.
5 --> 5 -->
6 6
7 <link rel="import" href="ct-builder.html"> 7 <link rel="import" href="ct-builder.html">
8 8
9 <!-- Table of failure types, listing the failing builders for each type. --> 9 <!-- Table of failure types, listing the failing builders for each type. -->
10 <polymer-element name="ct-builder-grid" attributes="failures builderLatestRevisi ons"> 10 <polymer-element name="ct-builder-grid" attributes="failures">
11 <template> 11 <template>
12 <style> 12 <style>
13 table { 13 table {
14 border-collapse: collapse; 14 border-collapse: collapse;
15 font-size: 11px; 15 font-size: 11px;
16 table-layout: fixed; 16 table-layout: fixed;
17 width: 350px; 17 width: 350px;
18 } 18 }
19 19
20 tbody td:first-child { 20 tbody td:first-child {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 57
58 .MISSING span { 58 .MISSING span {
59 padding-left: 0px; 59 padding-left: 0px;
60 } 60 }
61 61
62 .BUILDING, .BUILDING ~ td { 62 .BUILDING, .BUILDING ~ td {
63 opacity: 0.5; 63 opacity: 0.5;
64 } 64 }
65 </style> 65 </style>
66 <table> 66 <table>
67 <thead>
68 <tr>
69 <td>type</td>
70 <td>release</td>
71 <td>debug</td>
72 </tr>
73 </thead>
74 <tbody> 67 <tbody>
75 <template repeat="{{ type in resultTypes|resultTypeKeys }}"> 68 <template repeat="{{ type in _resultTypes | _keys }}">
76 <tr> 69 <tr>
77 <td class="{{ type }}"> 70 <td class="{{ type }}">
78 <span>{{ type }}</span> 71 <span>{{ type }}</span>
79 </td> 72 </td>
80 <td> 73 <td>
81 <template repeat="{{ builder in resultTypes[type]|keys }}"> 74 <template repeat="{{ builder in _resultTypes[type] | _keys }}">
82 <template if="{{ !resultTypes[type][builder].debug }}"> 75 <ct-builder builder="{{ builder }}"></ct-builder>
83 <ct-builder builderName="{{ builder }}"></ct-builder>
84 </template>
85 </template>
86 </td>
87 <td>
88 <template repeat="{{ builder in resultTypes[type]|keys }}">
89 <template if="{{ resultTypes[type][builder].debug }}">
90 <ct-builder builderName="{{ builder }}"></ct-builder>
91 </template>
92 </template> 76 </template>
93 </td> 77 </td>
94 </tr> 78 </tr>
95 </template> 79 </template>
96 </tbody> 80 </tbody>
97 </table> 81 </table>
98 </template> 82 </template>
99 <script> 83 <script>
100 Polymer({ 84 Polymer({
101 failures: [], 85 failures: [],
102 builderLatestRevisions: {}, 86 _resultTypes: {},
103 resultTypes: {},
104 87
105 keys: function(obj) { 88 _keys: function(obj) {
106 return Object.keys(obj).sort(); 89 return Object.keys(obj).sort();
107 }, 90 },
108 91
109 resultTypeKeys: function(obj) {
110 // Get the keys, but the BUILDING type should be last.
111 var keys = this.keys(obj);
112 var index = keys.indexOf('BUILDING');
113 if (index != -1) {
114 var buildingResult = keys.splice(index, 1);
115 keys.push(buildingResult[0]);
116 }
117 return keys;
118 },
119
120 failuresChanged: function() { 92 failuresChanged: function() {
121 // Create a set of builders for each result type (e.g., text, crash). 93 // Create a set of builders for each result type (e.g., text, crash).
122 this.resultTypes = {}; 94 this._resultTypes = {};
123 var passingRevisions = [];
124 this.failures.forEach(function(failure) { 95 this.failures.forEach(function(failure) {
125 passingRevisions.push(failure.newestPassingRevision);
126 var results = failure.resultNodesByBuilder; 96 var results = failure.resultNodesByBuilder;
127 Object.keys(results, (function(builder) { 97 Object.keys(results, (function(builder) {
128 var result = results[builder].actual; 98 var result = results[builder].actual;
129 if (!Object.has(this.resultTypes, result)) 99 if (!this._resultTypes[result])
130 this.resultTypes[result] = {}; 100 this._resultTypes[result] = {};
131 this.resultTypes[result][builder] = 101 this._resultTypes[result][builder] = 1;
michaelpg 2014/07/22 05:58:23 So can we just make this an array, then, instead o
ojan 2014/07/22 06:08:50 We need to dedupe the builders, so we'd need to do
132 config.builders[builder];
133 }).bind(this)); 102 }).bind(this));
134 }, this); 103 }, this);
135
136 var buildingType = this._getBuilding(passingRevisions);
137 if (!Object.isEmpty(buildingType))
138 this.resultTypes['BUILDING'] = buildingType;
139 },
140
141 _buildersInFlightForRevision: function(revision) {
142 return Object.keys(this.builderLatestRevisions).filter(function(builder) {
143 // FIXME: This should look at all chromium/v8/etc revisions as well.
144 // Is this concept of "building" builders even useful as is?
145 return parseInt(this.builderLatestRevisions[builder].blink, 10) < revi sion;
146 }.bind(this));
147 },
148
149 _getBuilding: function(revisions) {
150 var building = {};
151 var builders = [];
152 revisions.unique().forEach(function(revision) {
153 builders.push.apply(builders, this._buildersInFlightForRevision(revisi on + 1));
154 }.bind(this));
155
156 builders.unique().forEach(function(builder) {
157 if (!config.builders[builder])
158 return;
159 building[builder] = {'debug': config.builders[builder].debug};
160 });
161
162 return building;
163 }, 104 },
164 }); 105 });
165 </script> 106 </script>
166 </polymer-element> 107 </polymer-element>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698