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

Side by Side Diff: Tools/GardeningServer/model/ct-failure-group.html

Issue 476903004: [sheriff-o-matic]: Basic trooper display for sheriff-o-matic. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 3 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
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-commit-list.html"> 7 <link rel="import" href="ct-commit-list.html">
8 8
9 <script> 9 <script>
10 function CTFailureGroup(failures, commitList) { 10 function CTFailureGroup(data) {
11 this.failures = failures; 11 this.data = data;
12 this.commitList = commitList; 12 this._annotation = CTFailureGroup._mergeAnnotations(data.getAnnotations());
13 this._annotation = CTFailureGroup._mergeAnnotations(failures.map(function(fail ure) {
14 return failure.annotations();
15 }).flatten());
16 this._computeProperties(); 13 this._computeProperties();
17 } 14 }
18 15
16 CTFailureGroup.prototype.dataToExamine = function() {
17 return this.data.dataToExamine();
18 }
19
19 CTFailureGroup.prototype.snoozeUntil = function(time) { 20 CTFailureGroup.prototype.snoozeUntil = function(time) {
20 return this._annotate({ 21 return this._annotate({
21 snoozeTime: time, 22 snoozeTime: time,
22 }); 23 });
23 }; 24 };
24 25
25 CTFailureGroup.prototype.unsnooze = function() { 26 CTFailureGroup.prototype.unsnooze = function() {
26 return this._annotate({ 27 return this._annotate({
27 snoozeTime: undefined, 28 snoozeTime: undefined,
28 }); 29 });
(...skipping 23 matching lines...) Expand all
52 } 53 }
53 54
54 this.bug = this._annotation.bug; 55 this.bug = this._annotation.bug;
55 // FIXME: Bug labels would be simpler to implement as a filter in the UI. 56 // FIXME: Bug labels would be simpler to implement as a filter in the UI.
56 if (this.bug != null) 57 if (this.bug != null)
57 this.bugLabel = 'Bug ' + /([0-9]{3,})/.exec(this.bug)[0]; 58 this.bugLabel = 'Bug ' + /([0-9]{3,})/.exec(this.bug)[0];
58 else 59 else
59 this.bugLabel = undefined; 60 this.bugLabel = undefined;
60 }; 61 };
61 62
62 CTFailureGroup.prototype.failureKeys = function() {
63 return this.failures.map(function(failure) {
64 return failure.keys();
65 }).flatten();
66 };
67
68 CTFailureGroup._mergeAnnotations = function(failureAnnotations) { 63 CTFailureGroup._mergeAnnotations = function(failureAnnotations) {
69 // FIXME: This should be a union of all bugs. 64 // FIXME: This should be a union of all bugs.
70 var bug = failureAnnotations.map('bug').compact().first(); 65 var bug = failureAnnotations.map('bug').compact().first();
71 66
72 // The group is only snoozed if all the failures specify a snooze-time, and on ly 67 // The group is only snoozed if all the failures specify a snooze-time, and on ly
73 // until the first has elapsed. 68 // until the first has elapsed.
74 var snoozeTimes = failureAnnotations.map('snoozeTime').compact(); 69 var snoozeTimes = failureAnnotations.map('snoozeTime').compact();
75 var snoozeTime = snoozeTimes.length < failureAnnotations.length ? undefined : snoozeTimes.min(); 70 var snoozeTime = snoozeTimes.length < failureAnnotations.length ? undefined : snoozeTimes.min();
76 71
77 var annotation = {}; 72 var annotation = {};
78 if (bug != null) { 73 if (bug != null) {
79 annotation.bug = bug; 74 annotation.bug = bug;
80 } 75 }
81 if (snoozeTime != null) { 76 if (snoozeTime != null) {
82 annotation.snoozeTime = snoozeTime; 77 annotation.snoozeTime = snoozeTime;
83 } 78 }
84 return annotation; 79 return annotation;
85 }; 80 };
86 81
87 CTFailureGroup.prototype._annotate = function(newAnnotation) { 82 CTFailureGroup.prototype._annotate = function(newAnnotation) {
88 var failureAnnotations = []; 83 var failureAnnotations = [];
89 // FIXME: Post the new annotation to frontend rather than storing locally. 84 // FIXME: Post the new annotation to frontend rather than storing locally.
90 return CTFailureGroup.fetchAnnotations().then(function(annotations) { 85 return CTFailureGroup.fetchAnnotations().then(function(annotations) {
91 this.failureKeys().forEach(function(failureKey) { 86 this.data.failureKeys().forEach(function(failureKey) {
92 var annotation = annotations[failureKey] || {}; 87 var annotation = annotations[failureKey] || {};
93 88
94 Object.keys(newAnnotation, function(key, value) { 89 Object.keys(newAnnotation, function(key, value) {
95 if (value === undefined) { 90 if (value === undefined) {
96 delete annotation[key]; 91 delete annotation[key];
97 } else { 92 } else {
98 annotation[key] = value; 93 annotation[key] = value;
99 } 94 }
100 }); 95 });
101 96
(...skipping 11 matching lines...) Expand all
113 }.bind(this)); 108 }.bind(this));
114 }; 109 };
115 110
116 CTFailureGroup.fetchAnnotations = function() { 111 CTFailureGroup.fetchAnnotations = function() {
117 // FIXME: Fetch annotations from frontend. 112 // FIXME: Fetch annotations from frontend.
118 var stored = localStorage.CTFailureGroupAnnotations; 113 var stored = localStorage.CTFailureGroupAnnotations;
119 var annotations = stored ? JSON.parse(stored) : {}; 114 var annotations = stored ? JSON.parse(stored) : {};
120 return Promise.resolve(annotations); 115 return Promise.resolve(annotations);
121 }; 116 };
122 </script> 117 </script>
OLDNEW
« no previous file with comments | « no previous file | Tools/GardeningServer/model/ct-failures.html » ('j') | Tools/GardeningServer/model/ct-failures.html » ('J')

Powered by Google App Engine
This is Rietveld 408576698