blob: e1c20d8f6d52ce9311852bff82d952a3ce0eb4e1 [file] [log] [blame]
<!-- The <json-source> custom element declaration.
Displays a load button that, when pressed, loads the
JSON file associated with the commit in the given trace.
If, after a file is loaded the values of cid or traceid
change then the displayed JSON is cleared.
Attributes:
cid - An object, a cid.CommitID.
traceid - A string, the id of a trace.
Events:
None.
Methods:
None.
-->
<link rel="import" href="/res/imp/bower_components/paper-spinner/paper-spinner.html">
<dom-module id="json-source">
<style>
button,
paper-spinner {
display: inline-block;
}
paper-spinner {
margin-top: 0.6em;
margin-bottom: -0.6em;
}
pre {
box-shadow: 2px 2px 5px gray;
margin: 0.6em;
padding: 1em;
}
</style>
<template>
<div>
<button on-click="_loadSource">View Source File</button>
<button on-click="_loadSourceSmall">View Source File Without Results</button>
<paper-spinner id=spinner></paper-spinner>
</div>
<pre id=display></pre>
</template>
</dom-module>
<script>
Polymer({
is: "json-source",
properties: {
cid: {
type: Object,
value: function() { return {}; },
reflectToAttribute: false,
observer: "_clear",
},
traceid: {
type: String,
value: "",
reflectToAttribute: false,
observer: "_clear",
},
},
_loadSource: function() {
this._loadSourceImpl(false);
},
_loadSourceSmall: function() {
this._loadSourceImpl(true);
},
_loadSourceImpl: function(isSmall) {
if (this.traceid == "") {
return
}
if (this.cid.offset == undefined) {
return
}
var body = {
cid: this.cid,
traceid: this.traceid,
};
this.$.spinner.active = true;
var url = "/_/details/";
if (isSmall) {
url += "?results=false";
}
sk.post(url, JSON.stringify(body)).then(function(text){
this.$.display.textContent = text;
this.$.spinner.active = false;
}.bind(this)).catch(function(e) {
this.$.spinner.active = false;
sk.errorMessage(e);
}.bind(this));
},
_clear: function() {
this.$.display.textContent = "";
},
});
</script>