在primefaces barchartseries上工具提示的标签

时间:2017-04-07 12:02:33

标签: primefaces jqplot

我试图广泛搜索论坛和Google,但我在理解如何使其工作方面遇到了问题:

PrimeFaces6

我有一个基于ShowCase教程的BarchartModel: 代码:全选 private BarChartModel initStatusBarChart(){         BarChartModel model = new BarChartModel();

    ChartSeries statusMessages = new ChartSeries();
    statusMessages.setLabel("Label"));
    statusMessages.set("Some String 1", list1.size());
    statusMessages.set("Some String 2", list2.size());


    model.addSeries(statusMessages);
    return model;
}

问题是在渲染时,我得到工具提示的格式为

" 1,515"和" 2,432",其中515和432分别是list1和list2的大小。

如何将值1和2替换为#34; Some String" 1和2?尝试过延长荧光笔并使用dataTipFormat,但没有成功。

1 个答案:

答案 0 :(得分:5)

我使用图表模型的数据提示编辑器解决了这个问题(顺便说一下,使用Primefaces 6.1)。我用它来堆积条形图。 我需要在两个地方应用此解决方案:支持bean和JSF页面。

在支持bean中,我必须以这种方式设置JavaScript函数名称:

barModel.setDatatipEditor("chartDatatipEditor");

我尝试使用JSF页面中的相应标记属性设置它,但没有效果。

在JSF中我插入了这个JavaScript代码:

<script type="text/javascript">
function chartDatatipEditor(str, seriesIndex, pointIndex, plot) {
  //console.log('chartDatatipEditor: '+str+" - "+seriesIndex+" - "+pointIndex);
  var point = seriesIndex+','+pointIndex;
  #{bean.datatipsJs}
}
</script>

此JS函数将图表坐标作为参数。我将它们连接起来,以便以下JS代码变得更容易。 seriesIndex 是图表系列的索引。 pointIndex 是图表X刻度的索引。

要找出图表的正确值,您可以取消注释上面的 console.log 行。

插入的JS代码以这种方式在辅助bean中构建:

private Map<String, String> chartDatatips;

public String getDatatipsJs() {
    StringBuilder sb = new StringBuilder("switch ( point ) {\n");
    for (String point : chartDatatips.keySet()) {
        sb.append("case '").append(point).append("': return '").append(chartDatatips.get(point)).append("'; break;\n");
    }
    sb.append("default: return 'Unknown point'; break; }");
    return sb.toString();
}

地图 chartDatatips 将坐标点作为键(例如“2,1”),将工具提示作为值。

在图表设置过程中,您显然必须使用有用的详细信息填充此地图; - )

像这样:

chartDatatips.put("2,5", "Label ...");
...

希望这有帮助,如果你还没有解决这个问题。

〜亚历