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

Side by Side Diff: go/src/infra/appengine/sheriff-o-matic/elements/som-rev-range.html

Issue 2058173003: [som] Add revision range exapansion. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: no-message:) Created 4 years, 6 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
(Empty)
1 <link rel="import" href="/bower_components/polymer/polymer.html">
2
3 <link rel="import" href="/bower_components/iron-collapse/iron-collapse.html">
4
5 <dom-module id="som-rev-range">
6 <template>
7 <style>
8 .commit {
9 font-family: monospace;
10 font-size: 9pt;
11 margin: 1em;
12 }
13 </style>
14 <div on-tap="_toggleCollapse">
15 [[range.repo]]: <a target="_blank" href$="[[_regressionRangeLink(range)]]" >[[_regressionRange(range)]]</a>
16 </div>
17 <iron-collapse id="collapse">
18 <template is="dom-repeat" items="[[_revs]]" as="rev">
19 <div class="commit">
20 <a href$="https://chromium.googlesource.com/chromium/src/+/[[rev.commi t]]" target="_blank">[[_shortHash(rev.commit)]]</a>
21 (<a href$="mailto:[[rev.author.email]]">[[rev.author.name]]</a>):
22 [[_firstLine(rev.message)]]
23 </div>
24 </template>
25 <div id="loadingMessage" hidden>Loading revisions...</div>
26 </iron-collapse>
27 </template>
28 <script>
29 (function() {
30 'use strict';
31
32 Polymer({
33 is: 'som-rev-range',
34
35 properties: {
36 range: {
37 type: Object,
38 value: null
39 },
40 _revs: {
41 type: Array,
42 value: null
43 },
44 },
45
46 _toggleCollapse: function() {
47 if (!this._revs) {
48 let start = this._regressionStart(this.range);
49 let end = this._regressionEnd(this.range);
50 let url = `/api/v1/revrange/${start}/${end}`;
51 this.$.loadingMessage.hidden = false;
52 fetch(url).then((resp) => {
53 resp.text().then((bodyJson) => {
54 // remove the )]}' on the first line.
55 bodyJson = bodyJson.substr(')]}\'\n'.length);
56 let body = JSON.parse(bodyJson);
57 this._revs = body.log;
58 this.$.loadingMessage.hidden = true;
59 }, (reject) => {
60 console.error(reject);
61 });
62 }, (reject) => {
63 console.error(reject);
64 });
65 }
66
67 this.$.collapse.toggle();
68 },
69
70 _shortHash: function(hash) {
71 return hash.substring(0, 8);
72 },
73
74 _firstLine: function(message) {
75 return message.split('\n')[0];
76 },
77
78 _regressionStart: function(range) {
79 if (!range.positions || range.positions.length == 0) {
80 return '';
81 }
82
83 return this._parseCommitPosition(range.positions[0]);
84 },
85
86 _regressionEnd: function(range) {
87 if (!range.positions || range.positions.length == 0) {
88 return '';
89 }
90
91 return this._parseCommitPosition(
92 range.positions[range.positions.length - 1]);
93 },
94
95 _regressionRange: function(range) {
96 let start = this._regressionStart(range);
97 let end = this._regressionEnd(range);
98
99 if (start && end) {
100 return `${start} - ${end}`;
101 }
102
103 return start;
104 },
105
106 _regressionRangeLink: function(range) {
107 if (!range.positions) {
108 return '';
109 }
110 let end = this._parseCommitPosition(range.positions[0]);
111 let start = end;
112 if (range.positions.length > 1) {
113 end = this._parseCommitPosition(
114 range.positions[range.positions.length - 1]);
115 }
116 return 'http://test-results.appspot.com/revision_range?start=' +
117 `${start}&end=${end}`;
118 },
119
120 _parseCommitPosition: function(pos) {
121 let groups = /refs\/heads\/master@{#([0-9]+)}/.exec(pos);
122 if (groups && groups.length == 2) {
123 return groups[1];
124 }
125 },
126
127 });
128 })();
129
130 </script>
131 </dom-module>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698