whatif分析配置心得

3264
3

Shirley 小试身手Lv3

发表于2019-1-19 00:23

楼主
在官网上看到whatif分析的功能,正好符合的业务需要,下面分享下做法:

我需要实现的效果正好与官网中的效果相差不大,也是分为三层(从左往右依次是第1层-第3层)
所以进行简单的修改就可以实现效果。
1.制作报表,把组件按照上图设置好,这就不多说了。
2.在报表区属性中添加脚本:
function whatif(paramNames, expressions, widgetExpressions){
var params = g_rptpage.calcParam.params;
  var keys = params.keySet();
  var expVals = new Map();
  for ( var i = 0, len = keys.length; i < len; i++) {
    var param = params.get(keys);
    var paramName = param.attribute.name;
    if(paramNames.indexOf(paramName) > -1){
      if(param instanceof WidgetParamSlide){
        expVals.put(paramName, param.getValue());
      }
    }
  }
  for(var k = 0; k < widgetExpressions.length; k++){
    var wexp = widgetExpressions[k];
    var widgetName = wexp[0];
    var wexpStr = "";
    for(var l = 1; l < wexp.length; l++){
      var temp = wexp[l];
      var val = expVals.get(temp);
      if(val != null){
        wexpStr += val;
      }else{
        wexpStr += temp;
      }
    }
    var widgetObj = g_rptpage.getWidgetByName(widgetName);
    widgetObj.setText(eval(wexpStr) + "");//设置圆角矩形的文本值
    if('HHH29' == widgetName){//HHH29是第二层中的圆角矩形
      _zgn('HHH60',eval(wexpStr) + "",'','','','','');//设置钻取链接(联动式)刷新第2层仪表盘HHH60的指针值
    }else if('HHH186' == widgetName){//HHH186是第二层中的圆角矩形
      _zgn('HHH61',eval(wexpStr) + "",'','','','','');//设置钻取链接(联动式)刷新第2层仪表盘HHH61的指针值
    }

  }
  var expStr = "";
  for(var j = 0; j < expressions.length; j++){
    var exp = expressions[j];
    var val = expVals.get(exp);
    if(val != null){
      expStr += val;
    }else{
      expStr += exp;
    }
  }
  _zgn('HHH32',eval(expStr),'','','','','');//设置第1层仪表盘的指针值

}
//刷新第3层仪表盘指针值所需函数
function refreshchart(paramname, chartname){
  var params = g_rptpage.calcParam.params;
  var keys = params.keySet();
  for ( var i = 0, len = keys.length; i < len; i++) {
    var param = params.get(keys);
    var paramName = param.attribute.name;
    if(paramName == paramname){
          _zgn(chartname,param.getValue(),'','','','','');
    }
  }
}


3.在每个滑块组件中添加钻取设置-万能式脚本:
refreshchart('HHH161','HHH160');
whatif(
['HHH161','HHH130','HHH170','HHH174','HHH176','HHH20','HHH183','HHH141'],//参数1,列出所有参与运算的滑块组件
['(','1','-','HHH176','/','100',')','*','(','HHH161','+','HHH130','-','HHH170','+','HHH174',')','-','(','HHH20','/','100',')','*','HHH183'],//参数2,经济增加值仪表盘值的计算公式
//参数3,第二层仪表盘值的计算公式,需求中分为上下两个部分,所以需要写两组计算公式,用,隔开
[
        //HHH29为圆角矩形代号,后半部分为上半部分税后利润成本计算公式
        ['HHH29','(','1','-','HHH176','/','100',')','*','(','HHH161','+','HHH130','-','HHH170','+','HHH174',')'],
        //HHH186为圆角矩形代号,后半部分为下半部分资本成本计算公式
        ['HHH186','(','HHH20','/','100',')','*','HHH183']
]
);


如此就设置好了。

最近看过此主题的会员

esen_50U2PL1OSG1M

梧桐树2255

槐序

迷途小生

xinbaobiao

wxw

陈平安

张名

勇敢向前

@bert

3个回答

只看楼主

小亿 管理员

发表于2019-1-19 09:07

只看该作者

取消 关注该作者的回复

沙发

真是勤劳的小薏米,小亿来手动点赞啦~

小亿 管理员

发表于2019-1-19 09:12

只看该作者

取消 关注该作者的回复

板凳

然后小亿建议一下代码其实可以码到代码框里哟,如下图的标志就是代码框哟


提交后结果如下,这样代码规矩又好看哟!

Shirley 小试身手Lv3

发表于2019-1-22 10:59

只看该作者

取消 关注该作者的回复

地板

小亿 发表于 2019-1-19 09:12
然后小亿建议一下代码其实可以码到代码框里哟,如下图的标志就是代码框哟

提交后结果如下,这样代码规矩又 ...

登录后可回答问题,请登录注册

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流