2017-12-04 23 views
1

React에서 상위 차트에 주석을 동적으로 추가하려고합니다. 내 앱에서 호버 이벤트가 발생했지만 주석이 렌더링되지 않을 때마다 addAnnotation 함수를 사용하여 새 주석을 추가합니다. 디버거를 코드에 추가했는데 chart.annotations을 호출하면 현재 주석 배열이 있음을 알 수 있지만 렌더링되지 않습니다. 심지어이 함수에서 addPlotLine에 전화를 걸었고 plotline이 차트에 렌더링되었습니다. 내 설정 파일이하이 차트 주석이 렌더링되지 않습니다.

chart: { 
     annotations: [{ 
     labelOptions: { 
      backgroundColor: 'rgba(0, 0, 0, 0.5)', 
      verticalAlign: 'top', 
      align: 'right', 
     } 
     }], 
     annotationsOptions: { 
     }, 
    .... some lots more config options 
} 

모양과 내가 찾은

if(isNumber(value)) 
    //this renders a plotline 
    chart.xAxis[0].addPlotLine(baseChartHandle.generateInteractivePlotLine(value)); 
    // this doesn't render my annotation however 
    chart.addAnnotation({ 
     linkedTo: value, 
     title: { 
     text: "It works!" 
     } 
    }); 
} 
+0

주석 라이브러리 ('modules/annotations.js')를 포함 시켰습니까? – wergeld

+0

파일에'require ('highcharts/modules/annotations') (ReactHighcharts.Highcharts);가 포함되어 있습니다. – Jstuff

+0

다른 아이디어가 있습니까? 왜 작동하지 않는지 잘 모르겠다. – Jstuff

답변

0

을 다음과 같이 주석을 추가 할 수있는 내 마우스 오버 기능입니다 나는 "로 연결이"기능에도 불구하고 일한 적이 Highcharts를 사용하여 주석을 추가 할 때 내 시련.

내 지점에 GUID를 추가 했음에도 불구하고 적용 할 수 없었습니다. 나는 당신의 경우 x와 y 값으로 그것을 더하고, 그런 식으로 그 점을 찾는 것이 좋습니다. 여기에 내가 성공적으로 과거에 주석을 추가 한 방법입니다 최대 머리로, 주석을 제거 사용하는 경우

series.data.forEach(function (point) { 

       var annotationObject = 
        { 
         id: point.id, 
         labelOptions: { 
          y: 15, 
          verticalAlign: 'bottom', 
          distance: 25 
         }, 
         labels: [] 
        }; 

       } 

       var text = <get text you want to push>; 

       annotationObject.labels.push(
        { 
         point: { 
          xAxis: 0, 
          yAxis: 0, 
          x: point.x, 
          y: point.y 
         }, 
         text: text 
        } 

       ); 

       _chart.addAnnotation(annotationObject); 
      }); 

가 나는 또한 HighCharts에서 버그를 발견. 각 점은이 선으로 위와 같이 ID를해야합니다,하지만 호출해야합니다

  _chart.removeAnnotation(id); 

그것은 주석을 제거합니다, 당신이 후 아무것도하려고하면 그러나 당신이 highcharts에서 많은 불만의를 얻을 것이다, 그리고 그것은 깨질 것이다. 나는 annotations.js에서, 여기에 답을 발견

enter image description here

빨간색 상자가 내가 추가 한 코드입니다. removeAnnotation (ann.id)을 수행하고 rerenders하면 labels 객체가 null이므로 실패합니다. 이 검사를 추가하면 labelCollectors가 실패하지 않고 검사 할 수 있습니다.

해피 차트.

+0

응답을 주셔서 감사합니다, 그러나, 그것은 작동하지 않는 것 같습니다. 나는 이전과 같은 결과를 얻는다. 주석 객체를 차트 주석 배열로 푸시하지만 아무 것도 렌더링되지 않습니다. – Jstuff

+0

내 차트의 포인트에는 차이가있는 경우 x 값만 y 값이 없습니다. – Jstuff

+0

왜 그런지는 모르겠지만'xAxis'와'yAxis' 둘 다 0 이외의 정수로 변경해야만 아무것도 렌더링됩니다. 레이블에 대한 하이 차트 섹션에는이 두 키에 대한 문서가 없으므로 무슨 일이 일어나고 있는지 잘 모르겠습니다. https://api.highcharts.com/highcharts/annotations.labels – Jstuff