0

バーをクリックしたときにバーのラベルを表示したい。私は

これがjsfコードです

<p:barChart id="endingContractsChart" value="#{portalContractLifeCycle.endingContractsChartModel}" 
        binding="#{portalContractLifeCycle.endingContractsBarChart}" extender="toInteger" 
        barMargin="3" min="0" max="5" yaxisFormat="%d" xaxisGrid="false" styleClass="kmstate mm-metergauge" animate="true"  >

</p:barChart> 

これは、onclick イベントに使用する javascript(jquery) です。

var plot =$(document.getElementById('rrrr:qcontractoverview:endingContractsChart'));

 plot.bind('jqplotDataClick',
        function (ev, seriesIndex, pointIndex, data) {
document.getElementById('rrrr:qcontractoverview:pointIndex').value=pointIndex;
    $('#info3').html('series: '+seriesIndex+', point: '+pointIndex+', data: '+data+'x : '+plot.series[seriesIndex].data[pointIndex][0]+' Y: '+plot.series[seriesIndex]["label"] );
        }
      ); 

info3 は、値を表示するスパンです ( http://www.jqplot.com/tests/bar-charts.phpの例のように)

plot.series[seriesIndex]["label"] で試してみましたが、問題はプロットが定義されていないことです。

私が見るインターネット上のすべての例は、チャートがjsfではなくjavascriptで定義されている場合です。そして、チャートの作成時にプロットが割り当てられます。(document.getElementById('rrrr:qcontractoverview:endingContractsChart') にプロットを割り当てようとしましたが、うまくいきませんでした。

どうすれば目標を達成できるかについての提案や解決策はありますか?

4

4 に答える 4

1

クリック イベントは既にプロットに関連付けられています。したがって、再び plot.series[seriesIndex]["label"] を使用する必要はありません。代わりに、series[seriesIndex]["label"] を使用してください。

これにより、探しているラベルの値が得られます。

于 2013-09-14T08:56:01.077 に答える
0

これが役立つかどうかはわかりませんが、折れ線グラフのポイントのドロップで同様の問題が発生し、軸のラベルを読みたかったのです。

$('#chartdiv').bind("jqplotClick", function(ev, seriesIndex, pointIndex, data, plot) {

    console.log('Plot Index: '+data.data[0]);
    console.log('Plot Value: '+data.data[1]);  
    console.log('Plot Label: '+plot.series[data.seriesIndex].label);
});

コールバックには、そこからプロット全体を参照する追加のパラメーターがあり、データで plotIndex を使用してシリーズ ラベルにアクセスできます。

于 2015-12-02T09:26:21.490 に答える