Skip to content

Instantly share code, notes, and snippets.

@trushang-ts
Created December 31, 2019 10:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trushang-ts/ca0ed5e0e13d2e8e022241bce96a24e8 to your computer and use it in GitHub Desktop.
Save trushang-ts/ca0ed5e0e13d2e8e022241bce96a24e8 to your computer and use it in GitHub Desktop.
highcharts scroll
H.addEvent(chart.container, document.onmousewheel === undefined ? 'DOMMouseScroll' : 'mousewheel', function (event) {
var delta, extr, step, newMin, newMax, axis = chart.xAxis[0];
var dataMax = chart.xAxis[0].dataMax,
dataMin = chart.xAxis[0].dataMin,
maxCategory = (chart.xAxis[0].categories.length < 26) ? 26 : chart.xAxis[0].categories.length,
currentViewMin = 0,
newExtrMin,
newExtrMax;
e = chart.pointer.normalize(event);
// Firefox uses e.detail, WebKit and IE uses wheelDelta
delta = e.detail || -(e.wheelDelta / 120);
delta = delta < 0 ? -1 : 1;
if (chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
extr = axis.getExtremes();
step = (extr.max - extr.min) / 5 * delta;
(extr.min <= 0 && step < 0) ? step = 0 : step = step;
/*if ((extr.min + step) <= dataMin) {
newExtrMin = dataMin;
newExtrMax = extr.max;
} else if ((extr.max + step) >= dataMax) {
newExtrMin = (extr.max === dataMax) ? extr.min : extr.min + step; //condition is if scrolling is at the end of X axis
newExtrMax = dataMax;
} else {*/
if(maxCategory <= 26) {
newExtrMin = extr.min;
newExtrMax = extr.max;
} else {
newExtrMin = extr.min + step;
newExtrMax = extr.max + step;
}
currentViewMin = Math.round(newExtrMax-newExtrMin) - 26;
// current min value is not 0 means current view is not having 26 cat
(currentViewMin !== 0) ? newExtrMin = newExtrMax - 26 : '';
(newExtrMin < currentViewMin) ? newExtrMin = extr.min : '';
(newExtrMax > maxCategory) ? newExtrMax = extr.max : '';
// }
axis.setExtremes(newExtrMin, newExtrMax, true, false); //setExtremes( [newMin] [, newMax] [, redraw] [, animation] [, eventArguments])
}
stopEvent(event); // Issue #5011, returning false from non-jQuery event does not prevent default
return false;
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment