我创建了一个BIRT报告,其中包含一个从oracle数据库获取数据的图表。 我正确地完成了图表。现在我需要在图表中添加4-5个标记。 可以更改的标记值也存储在数据库中。
我尝试了本文中提到的脚本并进行了一些修改http://blogs.actuate.com/birt-chart-scripting-dynamic-markers/
function beforeGeneration(chart, icsc)
{
importPackage(Packages.org.eclipse.birt.chart.model.component.impl);
importPackage(Packages.org.eclipse.birt.chart.model.data.impl);
importPackage(Packages.org.eclipse.birt.chart.model.attribute);
importPackage(Packages.org.eclipse.birt.chart.model.attribute.impl);
var chart = icsc.getChartInstance();
var yAxis = chart.getBaseAxes()[0];
var min_value = icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("min_val");
var ok_value = icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("ok_val");
var great_value = icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("great_val");
min_ml = MarkerLineImpl.create(yAxis, NumberDataElementImpl.create(min_value));
min_ml.getLabel().getCaption().setValue("Minimum");
min_ml.getLineAttributes().getColor().set(255,0,0);
}
它会在错误的位置生成标记。 似乎它没有根据x轴值正确标记。
这个剧本可能出现什么问题?
答案 0 :(得分:0)
我发现了脚本的问题。
我尝试给min_value一个硬编码值然后它工作了。调试后我发现X轴的数据格式是小数,与数据库中的整数格式值不匹配。
在格式图表窗口中,我将轴数据格式更改为0小数的数字。然后它工作了:)