blob: a747d63d6b834e8849b2f10b5a3e1414ddcdeece [file] [log] [blame]
<!-- The <perf-commit-sk> custom element declaration.
Displays a single commit in a uniform manner.
Attributes:
cid - The commit id, either the Git commit hash or trybot patch.
source - The Git branch or trybot issue id.
commit - The serialized perftracedb.CommitIDLong that corresponds to the given commit id and source.
Events:
None.
Methods:
asString - Returns a text description of the commit.
Mailbox:
commits - Listens on the sk.Mailbox name of 'commits' to listen for the
data to populate the element. The mailbox data needs to be a serialized
slice of []*types.Commit.
[
{
ts: 14070203,
id: "123abc",
source: "master",
author: "name@example.org",
desc: "Adds short commits."
},
]
-->
<dom-module id="perf-commit-sk">
<style type="text/css" media="screen">
pre,
span {
margin: 0;
}
a {
color: #FF7F00;
font-weight: bold;
}
</style>
<template>
<pre><span>[[_trimPad(commit.author)]]</span> <span>[[_humanize(commit.ts)]]</span> <span><a href$="[[_commitHref(commit)]]">[[_name(commit.id, commit.source)]]</a></span> <span>[[_trimNewline(commit.desc)]]</span></pre>
</template>
</dom-module>
<script>
Polymer({
is: "perf-commit-sk",
properties: {
commit: {
type: Object,
value: null,
}
},
asString: function() {
if (!this.commit) {
return "Commit not found.";
}
return this._trimPad(this.commit.author) + " " +
this._humanize(this.commit.ts) + " " +
this.commit.id + " " +
this.commit.source + " " +
this._trimNewline(this.commit.desc);
},
_trimPad: function(s) {
if (!this.commit) {
return "Unknown commit."
}
s = s.slice(0, 30);
while (s.length < 30) {
s = s + " ";
}
return s;
},
_trimNewline: function(s) {
if (!s) {
return "";
}
return this._trimPad(s.split("\n")[0]);
},
_humanize: function (s) {
if (!this.commit) {
return "";
}
return sk.human.diffDate(s * 1000);
},
_commitHref: function (c) {
if (!c) {
return "";
}
if (c.source.indexOf("https://codereview.chromium.org") == -1) {
return 'https://skia.googlesource.com/skia/+/' + c.id;
} else {
return c.source;
}
},
_trunc: function (s) {
if (!this.commit) {
return "";
}
return s.slice(0, 7);
},
_name: function (id, source) {
if (!this.commit) {
return "";
}
if (source.indexOf("https://codereview.chromium.org") == -1) {
return this._trunc(id) + " (" + source + ")";
} else {
return source + " Patch: " + this._trunc(id);
}
},
});
</script>