图表自定义提示问题

图表自定义提示js写了后,界面会卡,通过控制台打印日志发现,js被多次调用了,有方法解决让其不卡吗?image.png

FineReport 啊嘞嘞 发布于 2024-11-20 17:56
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
啊嘞嘞Lv5见习互助
发布于前天 15:16(编辑于 昨天 17:47

1、数据集查询,通过sql语句把所需要呈现的提示内容拼成json的形式。

image.png

查询结果为:

image.png

2、把结果单元格中,我这里是决策报表,所以放到了报表块的单元格中,通过公式把所有结果拼成一个json串:REPLACE(VALUE("数据集名称",1),"},{",",")  ,倒是后就只需要加载一次,速度就上去了。

image.png

3、直接通过帆软提供的报表块接口获取单元格内容,过去需要的数据,再把获取到的json转map,就好操作了,代码如下:

```js

function(){

 var points = this.points;

 var category = this.category; //获取分类名

 //  获取提示内容

 var tips = _g().getWidgetByName("report13").getCellValue("B2");

 //  获取当前分类的提示内容

 var tip = new Map(Object.entries(JSON.parse(tips))).get(category);

 // 将获取到的提示内容转为map

 var ts = new Map(Object.entries(tip));

 var text = "" + category + "";

 for (var i = 0; i < points.length; i++) {

  if (points[i].series.visible) {

   //  系列名

   var seriesName = points[i].seriesName;

   //  系列值

   var seriesValue = points[i].value;

   //  系列颜色

   var serIesColor = points[i].color;

   var seriesNameAndValue = "";

   if(seriesName == "系列名1"){

    seriesNameAndValue = ts.get("系列名1") == null ? "自定义内容1" : ts.get("系列名1");

   }else if(seriesName == "系列名2"){

    seriesNameAndValue = ts.get("系列名2") == null ? "自定义内容2" : ts.get("系列名2");

   }else if(seriesName == "系列名3"){

    seriesNameAndValue = ts.get("系列名3") == null ? "自定义内容3" : ts.get("系列名3");

   }else if(seriesName == "系列名4"){

    seriesNameAndValue = ts.get("系列名4") == null ? "自定义内容4" : ts.get("系列名4");

   }else{

    //  不需要自定义的提示直接默认系列名 + 系列值。

    seriesNameAndValue = seriesName + ":" + seriesValue; 

   }

   text += "" + "● " + "" + seriesNameAndValue + "";

  }

 }

 return text + ""; 

}

```

这样不管系列再多,自定义提示也不会卡顿了

最佳回答
0
华莉星宸Lv7资深互助
发布于2024-11-20 18:18

这是正常的

你的界面有多少个数据点

就会执行多少次

-----------------

尽量使用标准的提示信息

  • 啊嘞嘞 啊嘞嘞(提问者) 不得办法呀,老板要的提示都不一样。
    2024-11-21 10:49 
  • 华莉星宸 华莉星宸 回复 啊嘞嘞(提问者) 那就没什么好办法了,问问技术支持吧https://service.fanruan.com/support
    2024-11-21 10:51 
  • 啊嘞嘞 啊嘞嘞(提问者) 回复 华莉星宸 有了有了。
    2025-01-06 15:48 
最佳回答
0
CD20160914Lv8专家互助
发布于2024-11-20 19:43

你把这个数据集优化一下,做图表的数据集全部汇总,不要返回在图表中去汇总。而是直接汇总出来结果

再用js去调用这个数据集提示一般问题不大。除非你的X轴分类很多。而且系列也多。

不然你就etl处理成一张结果表,再制作图表,再写你的js语句这样一般不会有问题的!

  • 2关注人数
  • 122浏览人数
  • 最后回答于:昨天 17:47
    请选择关闭问题的原因
    确定 取消
    返回顶部