如何强制重绘仪表板中的所有Vaadin图表以打开或关闭dataLabels?

时间:2014-05-13 23:34:51

标签: charts vaadin

如何在仪表板中强制重绘所有Vaadin图表以打开或关闭dataLabels? 我想允许我的应用用户在其信息中心上为所有图表添加/删除图表dataLabels;迫使重绘类似于改变主题时从VaadinTheme到GridTheme 我怎么能实现这个目标? 更改主题如何在幕后工作,这是什么源代码? 例如。; 我知道我可以通过重置其绘图选项然后重绘它来单独重绘单个图表: 。 。

PlotOptionsColumnRange columnRange = new PlotOptionsColumnRange();
columnRange.setDataLabels(new Labels(true));      
columnRange.setDataLabels.setFormatter(/* some javascript about this.y */);
conf.setPlotOptions(columnRange);
chart.drawChart(conf);

但我想在仪表板上为所有图表做这件事;比如有一个监听器

ChartOptions.get().setTheme(new VaadinTheme())

然后

ChartOptions.get().setTheme(new GridTheme())

反之亦然

也许我可以重置plotOption dataLabels然后重置主题以强制重新绘制新的dataLabel状态? 请指教......

P.S。 我不想在我的数据库中更改用户保存的数据,即我不希望此标签切换为持久性。我想像切换主题一样切换dataLabels。 请看: http://demo.vaadin.com/charts/#ColumnRange 看看我的意思。

1 个答案:

答案 0 :(得分:0)

好的,两个解决方案:  我的一位同事在仪表板上工作,帮助我得到了这个问题的第一个答案。 基本上,你必须清除所有图表,然后通过ea迭代。特定仪表板中的图表(存储在数据库中),并重建ea。图表w /您决定是否拥有dataLabel,将其放回该仪表板中;但我想避免这种情况,因为它可能会受到性能影响。

此后我得到了Vadding团队Pekka的回复,如下:

'您可以使用基本css轻松隐藏dataLabels。例如,如果您可以应用样式名称" dataLabelsHidden"对于UI,您可以在样式表中写入足够的规则来隐藏标签。我用这个快速测试了演示:

.v-ui.dataLabelsHidden g.highcharts-data-labels {
    display: none;
}

这样,当触发标签开启/关闭时,您不必更新所有图表。'