2015-03-18 1 views
0

, пожалуйста, см на это: http://jsfiddle.net/zb443xj9/hightcharts: изменить стандартное положение подсказки и тень (парение)

Пузырь нарисовал выше радиус. Поэтому метод «drawPoints» изменяются, как следует (так как это «изменение функции» не реализуются в рамках):

(function (H) { 
    H.wrap(H.seriesTypes.bubble.prototype, 'drawPoints', function (p) { 
     var series = this; 
     H.each(series.points, function (point, i) { 
      point.shapeArgs.y -= point.shapeArgs.r; //moved up by radius 
     }); 

     p.call(this); 
    }); 
})(Highcharts); 

При наведении курсора на пузырь вы видите, что тень и подсказка еще ориентироваться на «старый» центр. Кто-нибудь знает, как называется метод рисования тени и всплывающей подсказки?

Я хотел бы переписать эти два метода. Я надеялся, что их называют «drawShadow» и «drawTooltip», но, к сожалению, нет.

Спасибо!

+0

Эта тень (гало) в объекте серии, визуализируется как путь динамически поэтому необходимо, чтобы обернуть функцию гало, а также (haloPath). –

+0

безупречный! Я просто копирую и вставляю функцию обертки и заменяю «drawPoints» на «halo»! Как насчет всплывающей подсказки? Вы также знаете это имя функции? – Fourii

+0

Что вы имеете в виду с ** "haloPath" ** @SebastianBochan? '... H.wrap (H.seriesTypes.bubble.prototype, 'haloPath', function (p) {...' не влияет. – Fourii

ответ

0

Вы должны обернуть метод haloPath в пункте option. Затем перезапишите «этот» объект внутри точки.

H.wrap(H.Point.prototype, 'haloPath', function (proceed) { 

       if(this.oldY === UNDEFINED) { 
        this.oldY = this.plotY; 
        this.plotY -= (this.shapeArgs.r); 
       } 

       return proceed.apply(this, 

Array.prototype.slice.call(arguments, 1)); 
}); 

H.wrap(H.Tooltip.prototype, 'getAnchor', function (proceed, points, mouseEvent) { 
     var ret, 
     chart = this.chart, 
      inverted = chart.inverted, 
      plotTop = chart.plotTop, 
      plotLeft = chart.plotLeft, 
      plotX = 0, 
      plotY = 0, 
      yAxis, 
      xAxis; 

     points = splat(points); 

     // Pie uses a special tooltipPos 
     ret = points[0].tooltipPos; 

     // When tooltip follows mouse, relate the position to the mouse 
     if (this.followPointer && mouseEvent) { 
      if (mouseEvent.chartX === UNDEFINED) { 
       mouseEvent = chart.pointer.normalize(mouseEvent); 
      } 
      ret = [ 
      mouseEvent.chartX - chart.plotLeft, 
      mouseEvent.chartY - plotTop]; 
     } 
     // When shared, use the average position 
     if (!ret) { 
      each(points, function (point) { 
       yAxis = point.series.yAxis; 
       xAxis = point.series.xAxis; 
       plotX += point.plotX + (!inverted && xAxis ? xAxis.left - plotLeft : 0); 
       plotY += (point.plotLow ? (point.plotLow + point.plotHigh)/2 : point.plotY) + (!inverted && yAxis ? yAxis.top - plotTop : 0); // #1151 
      }); 

      plotX /= points.length; 
      plotY /= points.length; 

      ret = [ 
      inverted ? chart.plotWidth - plotY : plotX, 
      this.shared && !inverted && points.length > 1 && mouseEvent ? mouseEvent.chartY - plotTop : // place shared tooltip next to the mouse (#424) 
      inverted ? chart.plotHeight - plotX : plotY]; 
     } 

     if(points[0].oldY === UNDEFINED) { 
      ret[1] -= points[0].shapeArgs.r; 
     } 

     return map(ret, mathRound); 
    }); 

РЕДАКТИРОВАТЬ: Пример: http://jsfiddle.net/zb443xj9/6/

+0

Но это работает, только если я навешиваю 2 раза над пузырем. Я курю, подсказка находится на исходном сосредоточенном посту. После того, как я переместил мышь в другой пузырь и вернусь к этому пузырю, THEN всплывающая подсказка будет сдвинута на радиус. Вы видите, что @SebastianBochan? Возможно, нам нужно каким-то образом изменить ветвь if? – Fourii

+0

Но где вы хотели бы иметь всплывающую подсказку, внутри центра «новый перемещенный пузырь»? –

+0

Если вы наведете первый раз, это слишком «глубоко». Если подсказка ориентирована на центр «нового перемещенного пузыря», это было бы прекрасно! Положение второго наведения также велико. Важно то, что он не должен отображаться в другой позиции при первом и втором зависании. – Fourii