diff --git a/public/scripts/chart_loader.js b/public/scripts/chart_loader.js
index 9e8edac..41fc144 100644
--- a/public/scripts/chart_loader.js
+++ b/public/scripts/chart_loader.js
@@ -77,29 +77,29 @@ class ChartLoader {
}
getEffectObjects() {
-
+
}
- addListener(newChart) {
+ addListener(chart) {
//Click
document.addEventListener('mousemove', (e) => {
const pos = {
x: e.clientX,
y: e.clientY
}
-
+
let shapeIndex = this.selectedShapeIndex
if (shapeIndex === null)
shapeIndex = this.getShapeIndex(this.detectionCanvas, pos)
if (shapeIndex !== null) {
- let obj = newChart.objects[shapeIndex]
+ let obj = chart.objects[shapeIndex]
// Effect
let effectCtx = this.effectCanvas.getContext("2d")
effectCtx.clearRect(0, 0, effectCanvas.width, effectCanvas.height)
this.effectCanvas.style.opacity = 1
- newChart.drawEffect(effectCtx, [obj])
+ chart.drawEffect(effectCtx, [obj])
this.dataDiv.style.display = "block"
@@ -115,7 +115,7 @@ class ChartLoader {
this.dataDiv.style.top = pos.y - this.dataDiv.clientHeight + "px"
this.dataDiv.style.display = "block"
- let name = newChart.data[obj.colId.toString()].col_name
+ let name = chart.data[obj.colId.toString()].col_name
this.dataDiv.innerHTML = "" + name + "
" + obj.value + "
" } else { @@ -145,18 +145,30 @@ class ChartLoader { else this.selectedShapeIndex = this.clickedShapeIndex - console.log(this.clickedShapeIndex + " " + - this.getShapeIndex(this.detectionCanvas, pos) + " " + - this.shapeSelected) + /*console.log(this.clickedShapeIndex + " " + + this.getShapeIndex(this.detectionCanvas, pos) + " " + + this.shapeSelected)*/ }) window.addEventListener("resize", e => { - //newChart.updateLegend(graphSettings.displayLegend, data) - newChart.resizeCanvas(this.parent, this.legend.offsetHeight) - newChart.draw() + //chart.updateLegend(chartSettings.displayLegend, data) + chart.resizeCanvas(this.parent, this.legend.offsetHeight) + chart.draw() this.addInteractivity() }) + + if (chart.settings.horizontalZoom || chart.settings.verticalZoom) + window.addEventListener("wheel", e => { + e.stopImmediatePropagation() + e.stopPropagation() + e.preventDefault() + + chart.zoom.recalculate(e, true, true) + chart.updateBounds() + chart.draw() + this.addInteractivity() + }, { passive: false }) } async addInteractivity() { @@ -171,40 +183,41 @@ class ChartLoader { }, 0) } - drawChart(graphSettings, data) { + drawChart(chartSettings, data) { + let zoomManager = new ZoomManager(chartSettings.horizontalZoom, chartSettings.verticalZoom) //Choose the correct graph - switch (graphSettings.type) { + switch (chartSettings.type) { case "point": - this.chart = new PointChart(this.canvas, data, graphSettings) + this.chart = new PointChart(this.canvas, data, chartSettings, zoomManager) break case "line": - this.chart = new LineChart(this.canvas, data, graphSettings) + this.chart = new LineChart(this.canvas, data, chartSettings, zoomManager) break case "smoothline": - this.chart = new SmoothLineChart(this.canvas, data, graphSettings) + this.chart = new SmoothLineChart(this.canvas, data, chartSettings, zoomManager) break case "pie": - this.chart = new PieChart(this.canvas, data, graphSettings) + this.chart = new PieChart(this.canvas, data, chartSettings, zoomManager) break case "donut": - this.chart = new DonutChart(this.canvas, data, graphSettings) + this.chart = new DonutChart(this.canvas, data, chartSettings, zoomManager) break case "bar": - this.chart = new BarChart(this.canvas, data, graphSettings) + this.chart = new BarChart(this.canvas, data, chartSettings, zoomManager) break case "area": - this.chart = new AreaChart(this.canvas, data, graphSettings) + this.chart = new AreaChart(this.canvas, data, chartSettings, zoomManager) break case "smootharea": - this.chart = new SmoothAreaChart(this.canvas, data, graphSettings) + this.chart = new SmoothAreaChart(this.canvas, data, chartSettings, zoomManager) break case "stacked": - this.chart = new StackedChart(this.canvas, data, graphSettings) + this.chart = new StackedChart(this.canvas, data, chartSettings, zoomManager) break } - setTimeout(this.chart.updateLegend(graphSettings.displayLegend, this.legend, this), 0) + setTimeout(this.chart.updateLegend(chartSettings.displayLegend, this.legend, this), 0) this.chart.resizeCanvas(this.parent, this.legend.offsetHeight) this.chart.draw() diff --git a/public/scripts/charts/area_chart.js b/public/scripts/charts/area_chart.js index 7e81a35..8fa96cd 100644 --- a/public/scripts/charts/area_chart.js +++ b/public/scripts/charts/area_chart.js @@ -8,9 +8,11 @@ class AreaChart extends PointChart { * @param {HTMLCanvasElement} canvas - The canvas element to draw the chart on * @param {Array