自定义primefaces图表

时间:2014-05-24 15:03:51

标签: jsf primefaces charts jqplot

我在项目中使用了primefaces图表。

我知道是使用jqplot的曲面图。

在jqplot网站上有自定义jqplot图表的例子。

如何使用示例代码自定义primefaces图表?

自定义jqplot图表的示例代码如下:

$(document).ready(function () {
$.jqplot._noToImageButton = true;
var plot1 = $.jqplot("chart1", [prevYear, currYear], {
    seriesColors: ["rgba(78, 135, 194, 0.7)", "rgb(211, 235, 59)"],
    title: 'Monthly TurnKey Revenue',
    highlighter: {
        show: true,
        sizeAdjust: 1,
        tooltipOffset: 9
    },
    grid: {
        background: 'rgba(57,57,57,0.0)',
        drawBorder: false,
        shadow: false,
        gridLineColor: '#666666',
        gridLineWidth: 2
    },
    legend: {
        show: true,
        placement: 'outside'
    },
    seriesDefaults: {
        rendererOptions: {
            smooth: true,
            animation: {
                show: true
            }
        },
        showMarker: false
    },
    series: [
        {
            fill: true,
            label: '2010'
        },
        {
            label: '2011'
        }
    ],
    axesDefaults: {
        rendererOptions: {
            baselineWidth: 1.5,
            baselineColor: '#444444',
            drawBaseline: false
        }
    },
    axes: {
        xaxis: {
            renderer: $.jqplot.DateAxisRenderer,
            tickRenderer: $.jqplot.CanvasAxisTickRenderer,
            tickOptions: {
                formatString: "%b %e",
                angle: -30,
                textColor: '#dddddd'
            },
            min: "2011-08-01",
            max: "2011-09-30",
            tickInterval: "7 days",
            drawMajorGridlines: false
        },
        yaxis: {
            renderer: $.jqplot.LogAxisRenderer,
            pad: 0,
            rendererOptions: {
                minorTicks: 1
            },
            tickOptions: {
                formatString: "$%'d",
                showMark: false
            }
        }
    }
});

  $('.jqplot-highlighter-tooltip').addClass('ui-corner-all')
});

示例链接1

如何在primefaces图表上使用上面的代码?

3 个答案:

答案 0 :(得分:7)

当您使用扩展器时,您可以通过js更改所有内容。

这是一个例子

<p:lineChart ... extender="chartExtender"/>

在js文件或Tag:

下的页面中
function chartExtender() {        
 // this = chart widget instance        
 // this.cfg = options        
 this.cfg.grid = {             
        background: 'transparent',
         gridLineColor: '#303030',
         drawBorder: false,
    };
  }

这只是一个例子......这将帮助您完成剩下的工作。

希望有所帮助:)

答案 1 :(得分:2)

您升级到Primefaces 5.0吗? Primefaces实际上重新编写了它的图表api,以便您现在可以直接从bean中添加这些自定义,而无需处理jplot。此外,旧版本的图表将来会被弃用,因此切换是个好主意。

如果您仍然坚持使用旧版本的图表,那么您需要做的是使您的图表使用扩展程序选项扩展该功能

<p:lineChart ... extender="nameOfFunction"/>

答案 2 :(得分:0)

我没有费心去定制PrimeFaces图表。我选择在我的JSF应用程序中使用Google charts。它具有高度可定制性,并且可以呈现为SVG,因此您还可以使用CSS来设置图形样式。您可以查看GChart PrimeFaces extension或只是加载JavaScript customize所有内容(它很容易并且有详细记录)。