-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathlevel_control.js
33 lines (30 loc) · 1.08 KB
/
level_control.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
export default class LevelControl {
constructor(indoorequal) {
this.indoorequal = indoorequal;
this._cbRefresh = () => this._refresh();
this.indoorequal.on('levelschange', this._cbRefresh);
this.indoorequal.on('levelchange', this._cbRefresh);
this.$el = document.createElement('div');
this.$el.classList.add('maplibregl-ctrl', 'maplibregl-ctrl-group', 'maplibregl-ctrl-indoorequal');
this._refresh();
}
destroy() {
this.$el.remove();
this.indoorequal.off('levelschange', this._cbRefresh);
this.indoorequal.off('levelchange', this._cbRefresh);
}
_refresh() {
this.$el.innerHTML = '';
this.indoorequal.levels.forEach((level) => {
const button = document.createElement('button');
const strong = document.createElement('strong');
strong.textContent = level;
button.appendChild(strong);
if (level == this.indoorequal.level) {
button.classList.add('maplibregl-ctrl-active');
}
button.addEventListener('click', () => { this.indoorequal.setLevel(level); })
this.$el.appendChild(button);
});
}
}