我如何使用鼠标滚轮滚动我的 gnat highcharts

问题描述 投票:0回答:1

https://jsfiddle.net/cavrzkwg/1/

这里是甘特高图的链接。我想使用鼠标滚轮使其可滚动,而不是滚动主滚动条,而是滚动 highcharts 的内置滚动条 我尝试了 setextremes 事件,但没有成功。

Highcharts.ganttChart('container', {
  title: {
    text: 'Gantt Chart with Progress Indicators'
  },
  scrollbar: {
          enabled: true
      },
      yAxis: {
          min: 0,
          max: 3,
          scrollbar:{
              enabled : true,
              showFull: false
          }
          },
  xAxis: {
    min: Date.UTC(2014, 10, 17),
    max: Date.UTC(2014, 10, 30),
    grid: {
            enabled: true,
            borderColor: 'rgba(0,0,0,0.3)',
            borderWidth: 1
          }
  },
  legend: {
    enabled: true
  },
  series: [{
    name: 'Project 1',
    data: [{
      name: 'Start prototype',
      start: Date.UTC(2014, 10, 18),
      end: Date.UTC(2014, 10, 25),
      completed: 0.25
    },{
      name: 'Start',
      start: Date.UTC(2014, 9, 18),
      end: Date.UTC(2014, 10, 25),
      completed: 0.25
    }, {
      name: 'Test prototype',
      start: Date.UTC(2014, 10, 27),
      end: Date.UTC(2014, 10, 29)
    }, {
      name: 'Develop',
      start: Date.UTC(2014, 10, 20),
      end: Date.UTC(2014, 10, 25),
      completed: {
        amount: 0.12,
        fill: '#fa0'
      }
    }, {
      name: 'Run acceptance tests',
      start: Date.UTC(2014, 10, 23),
      end: Date.UTC(2014, 10, 26)
    }]
  },
  {
    name: 'Project 2',
    data: [{
      name: 'Start prototype2',
      start: Date.UTC(2014, 10, 18),
      end: Date.UTC(2014, 10, 25),
      completed: 0.25
    }, {
      name: 'Test prototype2',
      start: Date.UTC(2014, 10, 27),
      end: Date.UTC(2014, 10, 29)
    }]
  }]
});
highcharts scroll
1个回答
0
投票

尝试此自定义功能,它应该允许使用鼠标滚轮滚动图表。

(function(H) {

  //internal functions
  function stopEvent(e) {
    if (e) {
      if (e.preventDefault) {
        e.preventDefault();
      }
      if (e.stopPropagation) {
        e.stopPropagation();
      }
      e.cancelBubble = true;
    }
  }

  //the wrap
  H.wrap(H.Chart.prototype, 'render', function(proceed) {
    var chart = this,
      mapNavigation = chart.options.mapNavigation;

    proceed.call(chart);

    // Add the mousewheel event
    H.addEvent(chart.container, document.onmousewheel === undefined ? 'DOMMouseScroll' : 'mousewheel', function(event) {

      var delta, extr, step, newMin, newMax, axis = chart.yAxis[0];

      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) / 20 * delta;
        newMin = extr.min + step;
        newMax = extr.max + step;
        console.log('max', extr.max)
        console.log('min', extr.min)

        if (newMin > axis.dataMin && newMax < axis.dataMax) {
          axis.setExtremes(newMin, newMax, true, false);

        }

      }

      stopEvent(event); // Issue #5011, returning false from non-jQuery event does not prevent default
      return false;
    });
  });
}(Highcharts));

演示:https://jsfiddle.net/BlackLabel/9jL68mk4/

© www.soinside.com 2019 - 2024. All rights reserved.