找文章 / 找答案
精选问答 更多内容

[数据处理] 树形过滤传参

飞扬如梦青铜一 显示全部楼层 发表于 2024-3-1 18:35:14 |阅读模式 打印 上一主题 下一主题
1
未解决

【数据处理】 树形过滤传参

1987 9
需求:通过树形筛选组件传递参数到其他组件。
如下图,两个组件绑定的不同数据集。

JS代码如下:
function general_param(level){
    var str = "";        //用于初始化变量
    var arr = [];      //创建数组
    //将树状过滤中第三级被选中的值赋值,用逗号分割
    for (i in 树状参数.getSelectedObjects()){
        str = str + 树状参数.getSelectedObjects()[i][level + ",";
    }
    str = str.split(",");
    for(i = 0; i < str.length-1; i++){
        arr.push(str[i);
    }
    param["指标" + level = arr;
    return arr;
}
function b(arrstr, tempa, tempc){
    var zba = [];
    var zbb = [];
    for(i=0; i < arrstr.length; ++i){
        if(arrstr[i == "undefined")
            zba.push(tempa[i);
        else if(tempc[i == "undefined")
            zbb.push(arrstr[i);
    }

    param["指标0" = zba;
    param["指标1" = zbb;
}

b(general_param(1), general_param(0), general_param(2))


问题:该代码选到第四级的时候左侧饼图计数为三级的总和。


如下图,专家门诊为三级,共5个门诊,每个门诊1人,选中其中一个,左侧饼图显示三级的总和 5。
1709288850489.png
下图为编辑过滤添加的条件,参数 [指标2] 是在参数-编辑参数 新增的。
1709288988482.png
请问如何调整js代码才能实现选中四级其中一个时,饼图显示计数为1。

回复

使用道具 举报

精彩评论9

飞扬如梦青铜一 显示全部楼层 发表于 2024-3-1 18:36:22
图少了一个。
1709288299989.png
回复

使用道具 举报

飞扬如梦青铜一 显示全部楼层 发表于 2024-3-4 21:11:07
树状过滤,现在三层可以,四层怎么实现?
回复

使用道具 举报

yhdata_yzm 来自手机 显示全部楼层 发表于 2024-3-4 21:55:38
脚本重新贴一下,get 出来的值是用二维数组存储的。例如第一层第一个数据为a[0][0],改变数组下表就可以得到对应的值。
回复

使用道具 举报

飞扬如梦青铜一 显示全部楼层 发表于 2024-3-6 10:53:26
yhdata_yzm 发表于 2024-3-4 21:55
脚本重新贴一下,get 出来的值是用二维数组存储的。例如第一层第一个数据为a[0][0],改变数组下表就可以得 ...

function general_param(level){
    var str = "";        //用于初始化变量
    var arr = [];      //创建数组
    //将树状过滤中第三级被选中的值赋值,用逗号分割
    for (i in 树状参数.getSelectedObjects()){
        str = str + 树状参数.getSelectedObjects()[level + ",";
    }
    str = str.split(",");
    for(i = 0; i < str.length-1; i++){
        arr.push(str[i);
    }
    param["指标" + level = arr;
    return arr;
}
function b(arrstr, tempa, tempc){
    var zba = [];
    var zbb = [];
    for(i=0; i < arrstr.length; ++i){
        if(arrstr[i == "undefined")
            zba.push(tempa[i);
        else if(tempc[i == "undefined")
            zbb.push(arrstr[i);
    }

    param["指标0" = zba;
    param["指标1" = zbb;
}
回复

使用道具 举报

飞扬如梦青铜一 显示全部楼层 发表于 2024-3-6 10:53:44
没太明白,可以提供一下代码吗?
回复

使用道具 举报

LaL青铜四 来自手机 显示全部楼层 发表于 2024-3-6 10:56:16
脚本重新贴一下,get 出来的值是用二维数组存储的。例如第一层第一个数据为a[0][0],改变数组下表就可以得到对应的值。
回复

使用道具 举报

yhdata_yzm 显示全部楼层 发表于 2024-3-6 13:30:13
举个例子我有三层,当我勾选江苏,山东的时候
二维数组存储的数据实际是有右边表格的这种形式
var a=树状过滤1.getSelectedObjects()
a[行][列] 就是具体要对应的值行,列的值都是从0开始计数,如果勾选的多这个维表越复杂
企业微信截图_b3146d74-325e-4a07-8c96-3dcb11cdedc2.png
回复

使用道具 举报

飞扬如梦青铜一 显示全部楼层 发表于 2024-3-7 08:26:42
yhdata_yzm 发表于 2024-3-6 13:30
举个例子我有三层,当我勾选江苏,山东的时候
二维数组存储的数据实际是有右边表格的这种形式
var a=树状过 ...

如果我想实现四层,代码需要怎么调整呢?
回复

使用道具 举报

李俊豪青铜三 显示全部楼层 发表于 2024-3-7 08:37:45
这个怎么弄的
回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |《永洪社区协议》
返回顶部