2017-12-04 33 views
1

Reactの高チャートに注釈を動的に追加しようとしています。私はaddAnnotation関数を使用して、私のアプリでホバーイベントが発生したときに新しいアノテーションを追加しますが、アノテーションはレンダリングされません。私は自分のコードにデバッガを落としました。chart.annotationsを呼び出すと、現在、注釈の配列がありますが、レンダリングされていません。私はこの関数でaddPlotLineを呼び出していても、プロットラインがグラフに表示されます。私の設定ファイルは、このハイチャートの注釈がレンダリングされない

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

を次のように注釈を追加するために、私のホバー上の関数であること、私は「linkedTo」機能は、にも関わらず、働いたことはない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

私のチャート上の点にはy値がありません。 – Jstuff

+0

なぜか分かりませんが、xAxisとyAxisの両方を0以外の整数に変更して何かをレンダリングする必要がありました。ラベルのハイチャートセクションには、これら2つのキーに関するドキュメントがありませんので、何が起こっているのか分かりません。 https://api.highcharts.com/highcharts/annotations.labels – Jstuff

関連する問題