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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: go/src/infra/appengine/sheriff-o-matic/elements/som-rev-range.html
diff --git a/go/src/infra/appengine/sheriff-o-matic/elements/som-rev-range.html b/go/src/infra/appengine/sheriff-o-matic/elements/som-rev-range.html
new file mode 100644
index 0000000000000000000000000000000000000000..bcad7df5550e041776bb931caac242b14836c556
--- /dev/null
+++ b/go/src/infra/appengine/sheriff-o-matic/elements/som-rev-range.html
@@ -0,0 +1,131 @@
+<link rel="import" href="/bower_components/polymer/polymer.html">
+
+<link rel="import" href="/bower_components/iron-collapse/iron-collapse.html">
+
+<dom-module id="som-rev-range">
+ <template>
+ <style>
+ .commit {
+ font-family: monospace;
+ font-size: 9pt;
+ margin: 1em;
+ }
+ </style>
+ <div on-tap="_toggleCollapse">
+ [[range.repo]]: <a target="_blank" href$="[[_regressionRangeLink(range)]]">[[_regressionRange(range)]]</a>
+ </div>
+ <iron-collapse id="collapse">
+ <template is="dom-repeat" items="[[_revs]]" as="rev">
+ <div class="commit">
+ <a href$="https://chromium.googlesource.com/chromium/src/+/[[rev.commit]]" target="_blank">[[_shortHash(rev.commit)]]</a>
+ (<a href$="mailto:[[rev.author.email]]">[[rev.author.name]]</a>):
+ [[_firstLine(rev.message)]]
+ </div>
+ </template>
+ <div id="loadingMessage" hidden>Loading revisions...</div>
+ </iron-collapse>
+ </template>
+ <script>
+ (function() {
+ 'use strict';
+
+ Polymer({
+ is: 'som-rev-range',
+
+ properties: {
+ range: {
+ type: Object,
+ value: null
+ },
+ _revs: {
+ type: Array,
+ value: null
+ },
+ },
+
+ _toggleCollapse: function() {
+ if (!this._revs) {
+ let start = this._regressionStart(this.range);
+ let end = this._regressionEnd(this.range);
+ let url = `/api/v1/revrange/${start}/${end}`;
+ this.$.loadingMessage.hidden = false;
+ fetch(url).then((resp) => {
+ resp.text().then((bodyJson) => {
+ // remove the )]}' on the first line.
+ bodyJson = bodyJson.substr(')]}\'\n'.length);
+ let body = JSON.parse(bodyJson);
+ this._revs = body.log;
+ this.$.loadingMessage.hidden = true;
+ }, (reject) => {
+ console.error(reject);
+ });
+ }, (reject) => {
+ console.error(reject);
+ });
+ }
+
+ this.$.collapse.toggle();
+ },
+
+ _shortHash: function(hash) {
+ return hash.substring(0, 8);
+ },
+
+ _firstLine: function(message) {
+ return message.split('\n')[0];
+ },
+
+ _regressionStart: function(range) {
+ if (!range.positions || range.positions.length == 0) {
+ return '';
+ }
+
+ return this._parseCommitPosition(range.positions[0]);
+ },
+
+ _regressionEnd: function(range) {
+ if (!range.positions || range.positions.length == 0) {
+ return '';
+ }
+
+ return this._parseCommitPosition(
+ range.positions[range.positions.length - 1]);
+ },
+
+ _regressionRange: function(range) {
+ let start = this._regressionStart(range);
+ let end = this._regressionEnd(range);
+
+ if (start && end) {
+ return `${start} - ${end}`;
+ }
+
+ return start;
+ },
+
+ _regressionRangeLink: function(range) {
+ if (!range.positions) {
+ return '';
+ }
+ let end = this._parseCommitPosition(range.positions[0]);
+ let start = end;
+ if (range.positions.length > 1) {
+ end = this._parseCommitPosition(
+ range.positions[range.positions.length - 1]);
+ }
+ return 'http://test-results.appspot.com/revision_range?start=' +
+ `${start}&end=${end}`;
+ },
+
+ _parseCommitPosition: function(pos) {
+ let groups = /refs\/heads\/master@{#([0-9]+)}/.exec(pos);
+ if (groups && groups.length == 2) {
+ return groups[1];
+ }
+ },
+
+ });
+ })();
+
+ </script>
+</dom-module>

Powered by Google App Engine
This is Rietveld 408576698