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

文本框动态展示自由报表内的部分内容

yhdata_2YxCD0y6玄铁三 显示全部楼层 发表于 2024-12-4 17:15:09 |阅读模式 打印 上一主题 下一主题
10
未解决

文本框动态展示自由报表内的部分内容

141 7
本帖最后由 yhdata_2YxCD0y6 于 2024-12-5 09:42 编辑

在报告中制作了一张自由式报表(报表设计和示例数据如下图)


我现在需要写一段文本,动态展示自由式报表中新增占比排名前三的名称+新增占比率。(例如:本周新增使用量前三为A(占比96%)、B(占比2%)、C(占比1%)
要怎么实现呢?


回复

使用道具 举报

精彩评论7

yhdata_lyaa 显示全部楼层 发表于 2024-12-4 17:44:09
先获取到自由表的值,赋值给参数,比如

var a =getData("图表1") //获取图表1的数据
param['A'] = a.get(0,4) // 获取表1中第一行第五列的单元格数据,赋值给参数A

然后文本组件里写:
本周新增使用量前三为A(占比?{A})、B(占比?{B})、C(占比?{C})

回复

使用道具 举报

yhdata_2YxCD0y6玄铁三 显示全部楼层 发表于 2024-12-4 17:56:09
yhdata_lyaa 发表于 2024-12-4 17:44
先获取到自由表的值,赋值给参数,比如

var a =getData("图表1") //获取图表1的数据

如果不确定取的值是在哪个单元格该怎么办?
如图,每个单元格中的指标都是纵向扩展的,假设参数'a'指的是新增占比排行第一的占比率,那她的值应该是K列=1时对应的同行的J列的值
回复

使用道具 举报

yhdata_lyaa 显示全部楼层 发表于 2024-12-4 18:07:17
yhdata_2YxCD0y6 发表于 2024-12-4 17:56
如果不确定取的值是在哪个单元格该怎么办?
如图,每个单元格中的指标都是纵向扩展的,假设参数'a'指的是 ...

数行列数,展开以后的行列数
回复

使用道具 举报

魁梧滴小猴子白银二 显示全部楼层 发表于 2024-12-5 08:51:00
围观
回复

使用道具 举报

yhdata_2YxCD0y6玄铁三 显示全部楼层 发表于 2024-12-5 09:35:27
本帖最后由 yhdata_2YxCD0y6 于 2024-12-5 09:43 编辑
yhdata_lyaa 发表于 2024-12-4 18:07
数行列数,展开以后的行列数

没懂。
那我还是不确定展开以后应该展示的行列数是什么啊?有没有更具体一点的例子
示例截图的排名1/2/3是正好按顺序排列的,但实际不一定。因为整张报表的排序是按照其他字段倒序排列的
PS. 我在主贴附了一张修改开始结束日期后的图,图中排名的1/2/3并不是顺序展示的
回复

使用道具 举报

mary01青铜四 显示全部楼层 发表于 2024-12-5 10:13:22
dataset = [
  {name: "A", newCount: 1920},
  {name: "B", newCount: 40},
  {name: "C", newCount: 20},
  // ...更多条目
]

// 计算总新增使用量
function calculateTotalNewCount(dataset) {
    return dataset.reduce((total, item) => total + item.newCount, 0);
}

// 获取排名前三的条目
function getTopThreeItems(dataset, totalNewCount) {
    // 计算每个条目的占比并排序
    let itemsWithPercentage = dataset.map(item => ({
        name: item.name,
        percentage: (item.newCount / totalNewCount * 100).toFixed(2),
        newCount: item.newCount
    })).sort((a, b) => b.newCount - a.newCount);

    // 取出前三个条目
    return itemsWithPercentage.slice(0, 3);
}

// 构建输出文本
function buildOutputText(topThreeItems) {
    let output = "本周新增使用量前三为";
    topThreeItems.forEach((item, index) => {
        output += ` ${item.name}(占比${item.percentage}%)`;
        if (index < topThreeItems.length - 1) {
            output += "、";
        }
    });
    return output;
}

// 主函数:获取数据集,计算并输出结果
function main() {
    // 假设这是从数据库或API获得的数据集
    let dataset = [
      {name: "A", newCount: 1920},
      {name: "B", newCount: 40},
      {name: "C", newCount: 20},
      // ...更多条目
    ];

    let totalNewCount = calculateTotalNewCount(dataset);
    let topThreeItems = getTopThreeItems(dataset, totalNewCount);
    let outputText = buildOutputText(topThreeItems);

    // 输出最终文本到报表中的指定位置
    console.log(outputText); // 在实际应用中,这里应该是设置报表组件的内容
}

// 执行主函数
main();
回复

使用道具 举报

yhdata_2YxCD0y6玄铁三 显示全部楼层 发表于 2024-12-5 11:29:17
mary01 发表于 2024-12-5 10:13
dataset = [
  {name: "A", newCount: 1920},
  {name: "B", newCount: 40},

不好意思,不会写js。。
请问一下这段脚本里的dataset指的就是自由式报表getdata?或者可以直接将数据集的内容赋值给dataset嘛?
然后最下方的输出outputText到指定组件,这个在永洪的脚本中又该怎么写呢?
回复

使用道具 举报

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

  • 官方微信

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

    扫码关注
  • 新浪微博

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

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

会员等你来哦

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