2016-11-09 1 views
0

私はPrimefaces 5.3を使用しており、対応する凡例項目をクリックしてシリーズのオン/オフを切り替えることを許可しています。p:chartの円グラフを切り替えます

primeface 5.3にはjqplot.txtEnhancedPieLegendRendererが含まれていないため、リソース/ jsに手動で追加してプロジェクトにインポートしました。私のエクステンダのコードは、同じディレクトリにあるcharts.jsというファイルにあります。私のようなファイルに持ち込む私.xhtmlファイルに

基礎となるPieChartModelオブジェクトまたはバッキングBeanに関する特別なものは何もありません円グラフ自体のXHTMLは

<p:chart id="outboundLanChart" 
     type="pie" 
     model="#{foo.bar}"/> 

のように見えるので、

<ui:composition template="/templates/template.xhtml"> 
    <ui:define name="body"> 
    <h:outputScript name="js/jqplot.pieRenderer.js"/> 
    <h:outputScript name="js/extendedPieRenderer.js"/> 
    <h:outputScript name="js/jqplot.enhancedPieLegendRenderer.js"/> 
    <h:outputScript name="js/charts.js"/> 

すべてがうまくレンダリングされます。ユーザは、私はcharts.js内のオブジェクトの延長をbar.setExtender("extnd");

を設定するページに移動するとき、私は

function extnd() { 

    this.cfg.seriesDefaults = { 
    renderer: $.jqplot.PieRenderer 
    } 

    this.cfg.legend = { 
    renderer: $.jqplot.EnhancedPieLegendRenderer, 
    show: true, 
    rendererOptions: { 
     seriesToggle: 'normal', 
     seriesToggleReplot: true 
    } 
    } 

}

を有する呼び出されるinitメソッドでは、私は延長であることを知っています私が期待していたように正確に動作するようなハイライト設定をしているので(私はそのコードを含まないため、問題には関係ありません)、作業しています。 console.logの検査がthis.cfg.legendの場合、legend.rendererプロパティにはEnhancedPieLegendRendererが使用されていないことが示されています。これまでのところGoogle、StackOverflow、プライムフェイスフォーラム、あらゆる種類のドキュメントとソースコードを検索しても良い結果は得られていません。 PrimefaceにEnhancedPieLegendRendererを使用させることは可能ですか?または、ユーザーが円グラフの上または円グラフを切り替えることを可能にする、より適切なPrimefaceの方法がありますか?

UPDATE:Kukeltjeの提案で、私はpieRendererextendedPieRendererプラグインが含まれ、それに応じて私のjsのコードを更新しました。それは問題だったかもしれませんが、それは問題ではなく、問題は依然として続きます。

答えて

1

「EnhancedPieLegendRenderer」についての非常に簡単なGoogle検索では、「EnhancedLegendRenderer」がネイティブjqplotのどちらでも正しく動作しないことが判明しました。jqPlot EnhancedLegendRenderer plugin does not toggle series for Pie chartsあなたが使用していると思われるEnhancedPieLegendRendererを作成しましたが、extendedPieRendererと組み合わせて使用​​する必要があります。あなたは後者を使用しているようには見えないので、それが実際の問題です。

+0

回答をいただきありがとうございます。私はそれとパイのレンダラーと拡張されたパイのレンダラープラグインと私のjsコードを更新しましたが、問題は依然として続きます。 –

+0

それからプレーンjqplot – Kukeltje

+0

で動作するかどうかを確認してください。私の設定は、JFiddleでテストすると問題なく動作します。 http:// jsfiddle。net/19vzL5h2/79/ –

0

明らかに、とenhancedPieLegendRendererは、Primeface 5.3が使用しているバージョンのjqplotで動作しません。

最新バージョンをつかんで

<h:outputScript name="js/jqplot.1.0.9/jquery.jqplot.js"/> 
<h:outputScript name="js/jqplot.1.0.9/plugins/jqplot.pieRenderer.js"/> 
<h:outputScript name="js/jqplot.1.0.9/plugins/jqplot.enhancedPieLegendRenderer.js"/> 

に私のスクリプトを変更するには、問題を修正しました。

+0

'間違った'解析... githubのソースでPFが1.0.9を使用しています。 https://github.com/primefaces/primefaces/blob/master/src/main/resources/META-INF/resources/primefaces/charts/charts.js – Kukeltje

+0

私はそれが最新のバージョンのソースコードだとは確信していますPrimefaces(6.0)。私はバージョン5.3を使用しています –

+0

真実、申し訳ありません...私の悪い – Kukeltje

関連する問題