49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
import $ from "jquery";
|
|
|
|
class ZoomControl {
|
|
constructor(arrayVisualization) {
|
|
this.visualization = arrayVisualization;
|
|
this.zooms = [1, 2, 3, 4, 5, 6, 7];
|
|
this.zoomLevel = 0;
|
|
}
|
|
|
|
init(zoomSelector) {
|
|
let self = this;
|
|
zoomSelector.find("#increase_zoom").click(function () {
|
|
if (self.zoomLevel != (self.zooms.length - 1)) {
|
|
self.setZoom(self.zoomLevel + 1, zoomSelector);
|
|
}
|
|
});
|
|
|
|
zoomSelector.find("#decrease_zoom").click(function () {
|
|
if (self.zoomLevel != 0) {
|
|
self.setZoom(self.zoomLevel - 1, zoomSelector);
|
|
}
|
|
});
|
|
|
|
for (let i = 0; i < self.zooms.length; i++) {
|
|
zoomSelector.find("#zoom_indicator_" + i).click(function () {
|
|
self.setZoom(i, zoomSelector);
|
|
});
|
|
}
|
|
|
|
self.setZoom(0, zoomSelector);
|
|
}
|
|
|
|
setZoom(zoomLevel, zoomSelector) {
|
|
const oldZoom = this.zoomLevel;
|
|
const totalZooms = this.zooms.length;
|
|
this.zoomLevel = zoomLevel % totalZooms;
|
|
|
|
const zoom = this.zooms[this.zoomLevel];
|
|
const zoom_percentage = Math.round((100 / (totalZooms - 1)) * this.zoomLevel);
|
|
this.visualization.setZoom(zoom);
|
|
|
|
zoomSelector.find("#zoom_indicator_" + oldZoom).removeClass("zoom_active");
|
|
zoomSelector.find("#zoom_indicator_" + this.zoomLevel).addClass("zoom_active");
|
|
zoomSelector.find("#zoom_level").text(zoom_percentage + "%");
|
|
}
|
|
}
|
|
|
|
export default ZoomControl;
|