如果我想根据图表中未使用的字段更改散点图中圆圈的颜色,那么如何在脚本中使用该列。我的意思是如何获得该数据...例如
if(row [v_count])> 2 填补红色......
确切代码如下
function beforeDrawDataPoint(dph, fill, icsc)
{
//Fill implements Fill interface
//ImageImpl
//ColorDefinitionImpl
//GradientImpl
//MultipleFillImpl
//EmbeddedImageImpl
//PatternImageImpl
importPackage( Packages.org.eclipse.birt.chart.model.attribute.impl );
val = dph.getOrthogonalValue();
if( fill.getClass().isAssignableFrom(ColorDefinitionImpl)){
if (row[v_count]>2){
fill.set(255, 0, 0);
}
}
}
但我不知道我是否在脚本中获得了v_count列。是否有一些函数来获取该列?
我的意思是,如果我们根据数据绑定列中的列进行一些计算...没有在x或y轴上使用,那么我们如何在脚本中访问该列...是否有某种函数用于那..我试过了行[“v_count”],但它没有用。
阿里夫
答案 0 :(得分:1)
您可以使用"持久性全局变量"。在报表的任何位置,您都可以编写以下内容来存储和加载全局变量。请注意,您不能存储整数但只能存储字符串(但在加载后,您可以将字符串转换回其他类型)。您可以将列的值存储在图表上方不可见数据字段的脚本中,因此在图表中可以读取值。
//store a value
reportContext.setPersistentGlobalVariable("varName", "value");
//load the value
var load = reportContext.getPersistentGlobalVariable("varName");
答案 1 :(得分:0)
我花了一天的样子,但我没有找到解决方案,这是我的同事谁给我:) 所以我分享。
在我的例子中,我必须为每个新年创建一个垂直标记
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];
//get date series for my case
series = yAxis.getRuntimeSeries();
// but if you have multiple series ... (for exemple xaxis)
for (i = 0; i < series.length; i++){
var values = series[i].getDataSet().getValues();
for (j = 0; j < values.length; j++){
if(j > 1){
var date1 = values[j-1];
var date2 = values[j];
if(date1.getYear() < date2.getYear()){
min_ml = MarkerLineImpl.create(yAxis, NumberDataElementImpl.create(j));
min_ml.getLabel().getCaption().setValue("Nouveau boitier");
min_ml.getLineAttributes().getColor().set(255,0,0);
}
}
}
}
}