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

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

Issue 728023004: Remove GardeningServer. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month 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
(Empty)
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-commit-list.html">
8
9 <script>
10 function CTFailureGroup(tree, data, category) {
11 this.key = data.key;
12 this.tree = tree;
13 this.examineUrl = this.tree + '/failure/' + encodeURIComponent(this.key);
14 this.data = data;
15
16 this._annotation = CTFailureGroup._mergeAnnotations(data.getAnnotations());
17 this._originalCategory = category || 'default';
18 this._computeProperties();
19 }
20
21 CTFailureGroup.prototype.snoozeUntil = function(time) {
22 return this._annotate({
23 snoozeTime: time,
24 });
25 };
26
27 CTFailureGroup.prototype.unsnooze = function() {
28 return this._annotate({
29 snoozeTime: undefined,
30 });
31 };
32
33 CTFailureGroup.prototype.setBug = function(bug) {
34 if (/^[0-9]+$/.test(bug))
35 bug = 'https://crbug.com/' + bug;
36 return this._annotate({
37 bug: bug,
38 });
39 };
40
41 CTFailureGroup.prototype.clearBug = function(bug) {
42 return this._annotate({
43 bug: undefined,
44 });
45 };
46
47 CTFailureGroup.prototype._isTreeCloser = function() {
48 return this.data.isTreeCloser && this.data.isTreeCloser();
49 }
50
51 CTFailureGroup.prototype._failedOnce = function() {
52 return this.data.failedOnce && this.data.failedOnce();
53 }
54
55 CTFailureGroup.prototype._computeProperties = function() {
56 this.isSnoozed = Date.now() < this._annotation.snoozeTime;
57 if (this.isSnoozed) {
58 this.category = 'snoozed';
59 } else if (this._isTreeCloser()) {
60 this.category = 'treeCloser';
61 } else if (this._failedOnce()) {
62 this.category = 'failedOnce';
63 } else {
64 this.category = this._originalCategory;
65 }
66
67 this.bug = this._annotation.bug;
68 // FIXME: Bug labels would be simpler to implement as a filter in the UI.
69 if (this.bug != null)
70 this.bugLabel = 'Bug ' + /([0-9]{3,})/.exec(this.bug)[0];
71 else
72 this.bugLabel = undefined;
73 };
74
75 CTFailureGroup._mergeAnnotations = function(failureAnnotations) {
76 // FIXME: This should be a union of all bugs.
77 var bug = failureAnnotations.map('bug').compact().first();
78
79 // The group is only snoozed if all the failures specify a snooze-time, and on ly
80 // until the first has elapsed.
81 var snoozeTimes = failureAnnotations.map('snoozeTime').compact();
82 var snoozeTime = snoozeTimes.length < failureAnnotations.length ? undefined : snoozeTimes.min();
83
84 var annotation = {};
85 if (bug != null) {
86 annotation.bug = bug;
87 }
88 if (snoozeTime != null) {
89 annotation.snoozeTime = snoozeTime;
90 }
91 return annotation;
92 };
93
94 CTFailureGroup.prototype._annotate = function(newAnnotation) {
95 var failureAnnotations = [];
96 // FIXME: Post the new annotation to frontend rather than storing locally.
97 return CTFailureGroup.fetchAnnotations().then(function(annotations) {
98 this.data.failureKeys().forEach(function(failureKey) {
99 var annotation = annotations[failureKey] || {};
100
101 Object.keys(newAnnotation, function(key, value) {
102 if (value === undefined) {
103 delete annotation[key];
104 } else {
105 annotation[key] = value;
106 }
107 });
108
109 if (Object.size(annotation) == 0) {
110 delete annotations[failureKey];
111 } else {
112 annotations[failureKey] = annotation;
113 failureAnnotations.push(annotation);
114 }
115 });
116
117 localStorage.CTFailureGroupAnnotations = JSON.stringify(annotations);
118 this._annotation = CTFailureGroup._mergeAnnotations(failureAnnotations);
119 this._computeProperties();
120 }.bind(this));
121 };
122
123 CTFailureGroup.fetchAnnotations = function() {
124 // FIXME: Fetch annotations from frontend.
125 var stored = localStorage.CTFailureGroupAnnotations;
126 var annotations = stored ? JSON.parse(stored) : {};
127 return Promise.resolve(annotations);
128 };
129 </script>
OLDNEW
« no previous file with comments | « Tools/GardeningServer/model/ct-commit-mock.html ('k') | Tools/GardeningServer/model/ct-failures.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698