blob: 426101f2d0b08160541b42deb8746bd70fa0543b [file] [log] [blame]
<polymer-element name="viewer-progress-bar"
attributes="progress text numSegments">
<template>
<link rel="stylesheet" href="viewer-progress-bar.css">
<div class="scaler">
<ul id="segments"></ul>
<div class="center-circle"></div>
</div>
<div id="text">{{text}}</div>
</template>
<script>
Polymer('viewer-progress-bar', {
progress: 0,
text: 'Loading',
numSegments: 8,
segments: [],
ready: function() {
this.numSegmentsChanged();
},
progressChanged: function() {
var numVisible = this.progress * this.segments.length / 100.0;
for (var i = 0; i < this.segments.length; i++) {
this.segments[i].style.visibility =
i < numVisible ? 'visible' : 'hidden';
}
if (this.progress >= 100 || this.progress < 0)
this.style.opacity = 0;
},
numSegmentsChanged: function() {
// Clear the existing segments.
this.segments = [];
var segmentsElement = this.$.segments;
segmentsElement.innerHTML = '';
// Create the new segments.
var segment = document.createElement('li');
segment.classList.add('segment');
var angle = 360 / this.numSegments;
for (var i = 0; i < this.numSegments; ++i) {
var segmentCopy = segment.cloneNode(true);
segmentCopy.style.webkitTransform =
'rotate(' + (i * angle) + 'deg) skewY(' +
-1 * (90 - angle) + 'deg)';
segmentsElement.appendChild(segmentCopy);
this.segments.push(segmentCopy);
}
this.progressChanged();
}
});
</script>
</polymer-element>