3

我正在尝试在 PrimeFaces 3.4 的折线图上使用扩展器属性。我需要使用扩展器用日期/时间值格式化 x 轴。在没有扩展器的情况下执行此操作不是一个选项,因为数据点太多,如果我使用默认的 PF lineChart 属性,标签只会覆盖。当我设置如下所示的代码时,我得到一个没有显示值的 x 轴;我只能看到x轴。查看图片了解更多详情。如何进行设置,以便 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" />

豆码

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));
}
4

2 回答 2

1

要实现它,您必须使用.getTime()将日期值设置为 LONG ;

serie.set(registro.getDataAfericao().getTime(), registro.getValor());

欲了解更多信息: http: //forum.primefaces.org/viewtopic.php?f=3 &t=23891&start=10

于 2013-07-15T19:49:44.127 回答
0

将 min 属性添加到扩展器似乎可以解决显示问题。我在stackoverflow的另一个问题上看到了这一点(下面的链接)。有人知道这是否是解决方法吗?

jqPlot DateAxis tickInterval 不起作用

于 2012-09-28T17:08:19.160 回答