我试图广泛搜索论坛和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,但没有成功。
答案 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 ...");
...
希望这有帮助,如果你还没有解决这个问题。
〜亚历