-
Notifications
You must be signed in to change notification settings - Fork 0
/
MyProgressBar.js
62 lines (44 loc) · 1.4 KB
/
MyProgressBar.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
(function () {
var bars = [];
// This is simple progress bar
function MyProgressBar(element) {
if (!(element instanceof HTMLElement)) {
throw new Error('element should be HTMLElement');
}
this._element = element;
this._line = element.querySelector('.line');
if(!this._line) {
this._line = document.createElement('div');
this._line.classList.add('line');
this._element.append(this._line);
}
if (element.hasAttribute("data-to")) {
this.setValue(element.getAttribute('data-to'));
}
else {
this.setValue(0);
}
}
// SetValue Method
MyProgressBar.prototype.setValue = function (value) {
var self = this;
value = parseInt(value, 10);
if (value > 100 || value < 0) {
throw new Error('value unexpected value');
}
setTimeout(function () {
self._line.style.width = value + '%';
}, 0)
};
if(!window.MyProgressBar) {
window.MyProgressBar = MyProgressBar;
}
if(!window.ProgressBarInstances) {
window.ProgressBarInstances = bars;
}
document.addEventListener( 'DOMContentLoaded', function () {
document.querySelectorAll('.my-bar').forEach((bar)=> {
bars.push(new MyProgressBar(bar));
});
});
})();