2015-08-24 31 views
0

已經實現highchart的可拖動的插件,但我有其中允許用戶拖動和新添加的點限制Highchart拖動點

var x = e.xAxis[0].value, 
y = e.yAxis[0].value, 
series = this.series[seriesType]; 
//tried this to set only this point as draggable 
series.draggableX = true; 
series.draggableY = true ; 
series.addPoint([x, y]); 

刪除特定的要求,我可以設置draggableX,draggableY爲真只爲了這一點?

+0

您是要添加新的點,然後允許用戶只拖動新點?那麼,系列中的最後一個數據點應該是可拖動的,但是沒有其他數據點或者應該添加的點應該可拖動? –

+0

假設我在加載的圖上有2個點,那麼這兩個點不應該可拖動,那麼在此之後添加到圖中的任何其他點都應該是可拖動的 –

回答

0

我將此參數添加到代碼中,但您需要編輯源代碼。

function mouseDown(e) { 

     var options, 
      originalEvent = e.originalEvent || e, 
      pointDraggableX, 
      pointDraggableY, 
      hoverPoint, 
      series; 

     if ((originalEvent.target.getAttribute('class') || '').indexOf('highcharts-handle') !== -1) { 
      hoverPoint = originalEvent.target.point; 
     } 


     series = chart.hoverPoint && chart.hoverPoint.series; 
     if (!hoverPoint && chart.hoverPoint && (!series.useDragHandle || !series.useDragHandle())) { 
      hoverPoint = chart.hoverPoint; 
     } 

     if (hoverPoint) { 
      options = hoverPoint.series.options; 


      pointDraggableX = hoverPoint.draggableX !== UNDEFINED ? hoverPoint.draggableX : options.draggableX; 
      pointDraggableY = hoverPoint.draggableY !== UNDEFINED ? hoverPoint.draggableY : options.draggableY; 


      if (options.draggableX && pointDraggableX) { 
       dragPoint = hoverPoint; 
       dragX = originalEvent.changedTouches ? originalEvent.changedTouches[0].pageX : e.pageX; 
       dragPlotX = dragPoint.plotX; 
      } 

      if (options.draggableY && pointDraggableY) { 
       dragPoint = hoverPoint; 

       dragY = originalEvent.changedTouches ? originalEvent.changedTouches[0].pageY : e.pageY; 
       dragPlotY = dragPoint.plotY + (chart.plotHeight - (dragPoint.yBottom || chart.plotHeight)); 
      } 

      // Disable zooming when dragging 
      if (dragPoint) { 
       chart.mouseIsDown = false; 
      } 
     } 
    } 

例子:http://jsfiddle.net/AyUbx/2607/