Files
2017-11-07 09:23:57 +01:00

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;