我想在我的图表中绘制动态垂直标记线。标记的位置在列ml_data
中名为ml_position
的数据集中可用。这是一个只有一行和一列的数据集。有没有办法在javascript中获得ml_position
的价值?目前我有以下工作示例:
function beforeDrawMarkerLine(axis, markerLine, icsc)
{
importPackage(Packages.org.eclipse.birt.chart.model.data.impl);
importPackage(Packages.org.eclipse.birt.chart.model.component.impl);
var ml_value = 20;
markerLine.setValue(NumberDataElementImpl.create(ml_value)) ;
}
该值目前已修复(20)。我想将ml_position
的值分配给ml_value
。
答案 0 :(得分:7)
我的工作解决方案:
创建全局变量“mpos”并将图表放入简单表中,其中一行为一列。将具有ml_position
的数据集分配给表。这对于在渲染图表之前执行数据集onFetch脚本非常重要。最后设置以下脚本:
数据集onFetch脚本:
reportContext.setPersistentGlobalVariable("mpos",row["ml_position"].toString());
图表onRender脚本:
function beforeDrawMarkerLine(axis, markerLine, icsc)
{
importPackage(Packages.org.eclipse.birt.chart.model.data.impl);
importPackage(Packages.org.eclipse.birt.chart.model.component.impl);
var ci = icsc.getExternalContext().getScriptable().getPersistentGlobalVariable("mpos");
markerLine.setValue(NumberDataElementImpl.create(ci)) ;
}