2016-11-09 82 views
0

我使用Primefaces 5.3並試圖允許用戶通過單擊相應的圖例項目來打開和關閉系列。切換餅圖系列p:圖表

由於primefaces 5.3在jqplot.txt中不包含EnhancedPieLegendRenderer,我在resources/js中手動添加了它並將其導入到我的項目中。我的擴展程序的代碼位於同一目錄中的一個名爲charts.js的文件中。

在我.xhtml文件我帶來的文件,像這樣

<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"/> 

的XHTML的餅圖本身看起來像

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

沒有什麼特別之處底層PieChartModel對象或支持bean而且一切都很好。在init方法,該方法被調用,當用戶瀏覽到的頁面我設置的對象bar.setExtender("extnd");

的擴展在charts.js我

function extnd() { 

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

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

}

我知道,擴展器因爲我的熒光筆配置完全符合我的預期(我沒有包括那段代碼,因爲它與問題無關)。對this.cfg.legendconsole.log檢查表明它不使用EnhancedPieLegendRenderer作爲legend.renderer屬性。到目前爲止,谷歌,StackOverflow,primefaces論壇以及各種文檔和源代碼都沒有取得任何好的結果。 是否有可能讓primefaces使用EnhancedPieLegendRenderer或者是否有另一種更適當的Primefaces方式允許用戶在餅圖上或餅圖中切換系列?

更新:在Kukeltje的建議我包括pieRendererextendedPieRenderer插件,並相應地更新我的js代碼。這可能是一個問題,但它不是問題,問題仍然存在。

回答

1

對於'EnhancedPieLegendRenderer'的一些非常簡單的谷歌搜索,我發現'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

顯然extendedPieRendererenhancedPieLegendRenderer不適用於Primefaces 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

'錯誤'分析... PF正在使用1.0.9,因爲在github中可以很容易地看到它。 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