首页 > 其他分享 >Echarts Tooltip的大量数据下显示优化

Echarts Tooltip的大量数据下显示优化

时间:2023-01-30 16:12:23浏览次数:30  
标签:显示 const 自定义 tooltip item Tooltip str 优化 Echarts

前言

在做某些图表需求的时候,有时候需要让echarts tooltip展示大量内容,这些内容如果按照echarts默认的显示方式,会出现超出屏幕的部分溢出,展示不全问题.解决这个问题呢,就需要自定义tooltip展示内容

解决思路

通过查阅相关的api,发现 tooltip有一个 formatter的配置项,自定义显示可以用这个来实现,我的思路是既然echarts默认都是只显示一列,那么我能不能自定义渲染改成多列显示,在网上搜索了一下,有前辈已经实现了,于是我复制相关的代码,进行了相关修改

代码实现

首先是如何判断要显示几列,这里通过计算,一列显示30条数据差不多,然后除以下就能算出有几列了

//向上取整,防止超出
const autoWidth=Math.ceil(sortData.length/30)

下来就是自定义展示的内容了

这里是通过flex布局来实现

formatter: (params) => {
          const autoWidth=Math.ceil(sortData.length/30)
//宽度这里autoWidth * 220代表了每列的宽度相加得到总宽度
//高度这里因为要换行显示所以也需要计算出来(这里因为需求方的要求,数据需要竖排排序显示,所以flex-flow 为 column)
          let str = `<div style="width: ${autoWidth*220}px;display: flex;flex-flow: column wrap; justify-content: flex-start;height:${Math.ceil((sortData.length/autoWidth))*22}px; ">`
          sortData.forEach((item) => {
//这里算每列宽度的百分比
            str += `<div style="width:${((1/autoWidth)*100)}%;height: 22px;display: flex;flex-flow: row nowrap; justify-content: flex-start;">
<span style="flex: 1; overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">${item.marker}${item?.sceneName}:</span>
<span style="float:right;margin-right: 10px;">${toThousands(item?.[sortDimensionName])}</span>
</div>`
          })
          str += `</div>`
          return str
        }

实现效果

基本显示还是可以的,但是还发现了一些问题,tooltip会在某些情况下漂移到屏幕外面,还需要进行进一步优化

这里查阅了相关的api,发现有一个 position 相关的api,可以用来调整tooltip的显示位置

我的思路是判断数据如果大于40条,自定义显示位置

尝试过用 fixed固定定位,来实现,但是发现移动过程中会出现闪动现象,无法解决,尝试其他办法

我尝试判断dom是否在可视窗口内,如果不在,计算偏移量,但是因为技术菜,没办法,实现,从网上找来了相关代码,进行修改,基本上算是解决了

position: (point, params, dom, rect, size) => {
          let x = point[0];
          let y = point[1];
          const {contentSize, viewSize} = size;
          const maxX = viewSize[0] - contentSize[0];
          const maxY = viewSize[1] - contentSize[1];
          if (x > maxX) {
//这里判断的是显示在左边还是右边
            x -= contentSize[0];
          }
          if (y > maxY) {
//计算y轴位置
            y = maxY
          }
          return [x, y];
        }

不知道评论区的大佬有没有更好的解决方式,欢迎交流学习

标签:显示,const,自定义,tooltip,item,Tooltip,str,优化,Echarts
From: https://www.cnblogs.com/qisexin/p/17076318.html

相关文章

  • VMware安装Rocky Linux8服务器系统并执行优化,包括修改安装镜像源、ssh免密等等
    1、https://blog.csdn.net/DCTANT/article/details/125430461?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-125430......
  • centos 7 系统优化
    #系统版本CentOSLinuxrelease7.9.2009(Core)x64#内核版本Linuxdashuju013.10.0-1160.el7.x86_64#1SMPMonOct1916:18:59UTC2020x86_64x86_64x86_64GN......
  • 通过 explain 关键字对sql进行优化
    在select语句之前增加explain关键字,MySQL会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而不是执行这条SQL(如果from中包含子查询,仍会执行该子查询,将结果放......
  • allure-动态参数,报告优化方法。
    1.allure.title方法#前置需要在源文件:\venv\Lib\site-packages\allure_pytest\listener.py#在该文件修改为这样:test_result.parameters.extend([])#使用方法:allure.dyna......
  • 高并发环境下3种方式优化Tomcat性能
    摘要:Tomcat作为最常用的JavaWeb服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢?本文分享自华为云社区《【高并发】......
  • CocosCreator 性能优化:DrawCall
    在游戏开发中,DrawCall作为一个非常重要的性能指标,直接影响游戏的整体性能表现。无论是CocosCreator、Unity、Unreal还是其他游戏引擎,只要说到游戏性能优化,DrawCall都......
  • 高并发环境下3种方式优化Tomcat性能
    摘要:Tomcat作为最常用的JavaWeb服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢?本文分享自华为云社区《​​【高并发......
  • 样本熵(SampEn)的C/C++代码实现与优化
    样本熵(SampEn)的C/C++代码实现与优化本文不介绍什么是样本熵,具体推荐看此文https://blog.csdn.net/Cratial/article/details/79742363,写的很好,里面的示例也被我拿来测试......
  • WinForm开发优化事项
    早期1、界面拉伸情况处理,界面放大情况处理。3、  中期  1、尽可能写每天的更新日志、  发布前1、版本号修改1、代码备份,与代码配套的部署文档编写,配套的......
  • m基于MSOPSO多策略粒子群算法的目标优化matlab仿真
    1.算法描述粒子群优化算法(particleswarmoptimization,PSO)是一种源于对鸟群捕食行为的研究而发明的进化计算技术,最先由Eberhart博士和Kennedy博士提出,其主要想法是:将每......