number scale on primefaces charts

2019-07-29 00:21发布

When we create a primefaces chart then it shows number scale in decimal points. I want to show without decimal places like simple munbers.Is there a way?
Thanks

1条回答
太酷不给撩
2楼-- · 2019-07-29 01:11

Update:

While the workaround posted below still works I found a more proper solution to do this. Number scale can be formatted trough extender function:

<p:barChart value="#{testClazz.categoryModel}" legendPosition="ne"
            widgetVar="barChartObj1" extender="ext1"/>

place the following function between the <head></head> tags on your page:

<script type="text/javascript">
    function ext1() {
        this.cfg.axes.yaxis.tickOptions = {
            formatString : '%d'
        };
    }
</script>

After experimenting a bit with jqPlot I found out that if you reset the axes after the plotting has finished the decimals after the decimal point are cleared. If your barChart is definied like this:

<p:barChart id="basicPlot" value="#{testClazz.categoryModel}" 
    legendPosition="ne" widgetVar="barChartObj"
    title="Basic Bar Chart" min="0" max="270"/>

call the following function after the page load is finished:

<script type="text/javascript">
    $(document).ready( function() {
        setTimeout(formatAxisNumbers, 500);
    });
    function formatAxisNumbers() {
        window.barChartObj.plot.resetAxesScale();
        window.barChartObj.plot.replot();
    }
</script>

Note that instead of resetting both axes with resetAxesScale you can reset x or y separately by doing:

window.barChartObj.plot.axes.xaxis.resetScale();

or

window.barChartObj.plot.axes.yaxis.resetScale();

You can also expriment with decreasing the timeout to smaller numbers to achieve smoother replot. For other options see the jqPlot documentation.

Tested in Google Chrome 22.0.1229.94 (Official Build 161065).

查看更多
登录 后发表回答