Primefaces& jqplot-在轴上显示日期 [英] Primefaces & jqplot - Displaying dates on an axis
问题描述
我试图在PrimeFaces 3.4的折线图中使用扩展程序属性. 我需要使用扩展器来格式化带有日期/时间值的x轴.如果不使用扩展器,则无法执行此操作,因为数据点太多,如果使用默认的PF lineChart属性,则标签会被覆盖. 如下所示设置代码时,我得到一个x轴,不显示任何值.我只能看到x轴.请参阅图片以获取更多详细信息.我该如何设置以便X轴以hh:mm格式显示时间?
I am trying to use the extender atttribute on a line chart in PrimeFaces 3.4. I need to use extender to format the x-axis with date/time values. Doing this without extender is not an option as there are too many data points and the labels simply overwrite if I use the default PF lineChart attributes. When I setup the the code as shown below, I get an x-axis with no values displayed; all I can see is the x-axis. See pic for more details. How can I set this up so that the x-axis displays time in hh:mm format ?
XHTML代码
<script type="text/javascript" src="#{request.contextPath}/js/plugins/jqplot.dateAxisRenderer.min.js"></script>
<script type="text/javascript" src="#{request.contextPath}/js/plugins/jqplot.canvasAxisTickRenderer.min.js"></script>
<script type="text/javascript">
function loginRateChartExt() {
this.cfg.axes = {
yaxis: {
numberTicks: 10,
label: 'Logins per minute ->',
labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
labelOptions: { fontFamily: 'Verdana', fontSize: '8pt' },
},
xaxis: {
renderer: $.jqplot.DateAxisRenderer,
rendererOptions: { tickRenderer:$.jqplot.CanvasAxisTickRenderer },
tickOptions: { formatString:'%H:%M' },
label: 'Time of day ->',
labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
labelOptions: { fontFamily: 'Verdana', fontSize: '8pt' }
}
};
}
</script>
<p:lineChart id="loginRateChart" value="#{loginRateBean.chartModel}" extender="loginRateChartExt" />
Bean代码
for(int i = 0; i < workerBean.getSize(); i++) { // worker bean has the data
for (String key : workerBean.getValueKeys()) { // each key refers to a series
// chartSeriesMap is a map that contains all the series
// workerBean.getKeyAt(i) returns Date
// workerBean.getValueAt(i, key) returns a Number
chartSeriesMap.get(key).set(workerBean.getKeyAt(i), workerBean.getValueAt(i, key).floatValue());
}
}
for (String string : workerBean.getValueKeys()) {
chartModel.addSeries(chartSeriesMap.get(string));
}
推荐答案
要实现此目的,您必须使用 .getTime();
To achieve it you must set the date values as LONG, using .getTime();
serie.set(registro.getDataAfericao().getTime(), registro.getValor());
有关更多信息: http://论坛. primefaces.org/viewtopic.php?f=3&t=23891&start=10
这篇关于Primefaces& jqplot-在轴上显示日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!