blob: 5505f9b458448b9c9a879172616c250d3bde7220 [file] [log] [blame]
<link rel="import" href="../../../third-party/polymer/polymer.html">
<link rel="import" href="../../../third-party/paper-checkbox/paper-checkbox.html">
<polymer-element name="p2b-plugin-console">
<template>
<link rel="stylesheet" href="component.css">
<link rel="stylesheet" href="../../../libs/css/common-style.css">
<div title="Auto Scroll" class="auto-scroll {{ {hidden : !scrolling} | tokenList}}">
<paper-checkbox checked="{{autoScroll}}" label="Auto Scroll" id="autoscroll"></paper-checkbox>
</div>
<pre id="console"></pre>
</template>
<script>
Polymer('p2b-plugin-console', {
ready: function() {
this.textBuffer = [];
this.autoScroll = true;
},
attached: function() {
this.renderLoop();
},
detached: function() {
this.isDetached = true;
},
renderLoop: function() {
var self = this;
if (!this.isDetached) {
requestAnimationFrame(function() {
self.render();
self.renderLoop();
});
}
},
render: function() {
if (this.textBuffer.length === 0) {
return;
}
var textNode = document.createTextNode(this.textBuffer.join(''));
this.textBuffer = [];
this.$.console.appendChild(textNode);
var scrollTop = this.scrollTop;
this.scrolling = scrollTop > 0;
if (this.autoScroll) {
this.scrollTop = this.scrollHeight;
}
},
/*
* Appends text to the console
* @param {string} text Text to add
*/
addText: function(text) {
this.textBuffer.push(text);
}
});
</script>
</polymer-element>