在 pentaho CDE 中为 select 组件设置默认值

Set default value for the select component in pentaho CDE

我在布局中有 1 个组合框、1 个 select 组件和 1 个数据源(基于 mondrianJndi 的 mdx)

这是我的 mdx 查询

with member [Measures].[Name] as '[Year].CurrentMember.UniqueName' select TopCount( filter({Descendants([Year].[All Years] ,[Year].[Year])}, not isempty(([Year].CurrentMember)) ) , 50) on ROWS, 
 {[Measures].[Name]} on Columns 
 from [Department Cube]

我的查询return年份列表有数据(包括当年)

此时,我必须等待数据加载,然后通过js资源将组合框的值设置为当前年份。 如何在不等待数据加载的情况下将当前年份设置为布局中的组合框的默认值?

作为动态查询,您不应依赖 "current" 年的计算。任何确定当前年份的 JS 函数,例如来自客户端时钟的值将受到时区异常的影响,并且可能会尝试将值设置为查询未返回的值。

只有在读取查询结果后才应该设置选择器的默认值,但是最好的地方是在组件的postFetch 方法中。

比如要设置参数值为查询结果的最后一个值,

function(data){
  var results = data.resultset
  // some logic here to set current_year to the adequate value. For example,
  current_year = results[results.length-1][0];
  dashboard.setParameter(this.parameter, current_year);
  return data;
}