我正在尝试使用PrimeFaces 3.4中的折线图上的扩展器。 我需要使用扩展器来格式化带有日期/时间值的x轴。如果我使用默认的PF lineChart属性,那么在没有扩展器的情况下执行此操作不是一个选项,因为数据点太多而且标签只会覆盖。 当我设置如下所示的代码时,我得到一个没有显示值的x轴;我只能看到x轴。有关详细信息,请参见pic。如何设置它以便x轴以hh:mm格式显示时间?
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));
}
答案 0 :(得分:1)
要实现它,您必须使用 .getTime();
将日期值设置为LONGserie.set(registro.getDataAfericao().getTime(), registro.getValor());
有关详细信息:http://forum.primefaces.org/viewtopic.php?f=3&t=23891&start=10
答案 1 :(得分:0)
将min属性添加到扩展器似乎可以解决显示问题。我在stackoverflow上的另一个问题上看到了这一点(链接如下)。有人知道这是否是一种解决方法?