vTable实现多维表格

介绍

        vTable是字节开发的一款能用来渲染表格的库,是用canvas渲染,避免了传统用dom组件表格的一些问题,能很快的渲染出上万格子的表格。

        接下来我将使用vTable构建类似下面的多维表格,其中quantity、sales等是指标。

使用

官网地址:Getting_Started——VisActor/VTable tutorial documents

1、首先下载npm,或者cdn引入vtable,并且准备一个div作为容器。vTable有ListTable(普通表格)和PivotTable(透视表)的区别,我们现在用PivotTable来构建表格。

<script src="https://unpkg.com/@visactor/vtable/dist/vtable.min.js"></script><div id="tableContainer" style="width: 100vw;height:100vh;"></div><script>// 创建 VTable 实例const tableInstance = new VTable.PivotTable(document.getElementById('tableContainer'), option);
</script>

2、准备表格数据

[{"city": "重庆","exist": 1,"sold": 2,"column1": "家具"},{"city": "武汉","column1": "家具","exist": 7,"sold": 8},{"city": "重庆","column1": "家具","exist": 2,"sold": 3},{"city": "武汉","column1": "家具","exist": 8,"sold": 9},{"city": "重庆","column1": "体育器材","exist": 4,"sold": 5},{"city": "武汉","column1": "体育器材","exist": 10,"sold": 11},{"city": "重庆","column1": "体育器材","exist": 6,"sold": 7},{"city": "武汉","column1": "体育器材","exist": 11,"sold": 12}
]

3、构建option。

row和column用来指定行和列,

indicators用来指定指标,

dataConfig用来设置合计、平均值等一些计算,

hideIndicatorName用来设置是否隐藏指标

更多配置请看官网

      const records = contentconst option = {records,rows: [{dimensionKey: 'city',title: '城市',}],columns: [{dimensionKey: 'column1',title: '类别',}],indicators: [{indicatorKey: 'exist',title: '现存'},{indicatorKey: 'sold',title: '已售',}],// 设置左上角corner: {titleOnDimension: 'all',//row   column  all},// hideIndicatorName: true,//隐藏指标名// 设置合计dataConfig: {totals: {row: {showGrandTotals: true,subTotalsDimensions: ['exist'],grandTotalLabel: '合计',},}},widthMode: 'standard'};

完整代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><!-- <script src="https://unpkg.com/@visactor/vtable/dist/vtable.min.js"></script> --><script src="./vtable.min.js"></script><style>* {margin: 0;padding: 0;}</style>
</head><body><div id="tableContainer" style="width: 99vw;height:99vh;"></div><script>fetch('./data4.txt').then(res => res.json()).then(res => {console.log(res);let content = resconst records = contentconst option = {records,rows: [{dimensionKey: 'city',title: '城市',}],columns: [{dimensionKey: 'column1',title: '类别',}],indicators: [{indicatorKey: 'exist',title: '现存'},{indicatorKey: 'sold',title: '已售',}],// 设置左上角corner: {titleOnDimension: 'all',//row   column  all},// hideIndicatorName: true,//隐藏指标名// 设置合计dataConfig: {totals: {row: {showGrandTotals: true,subTotalsDimensions: ['exist'],grandTotalLabel: '合计',},}},widthMode: 'standard'};// 创建 VTable 实例const tableInstance = new VTable.PivotTable(document.getElementById('tableContainer'), option);})</script>
</body></html>

 

效果

现存和已售是指标。

最后附上效果:

END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/51269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT的基础数据类型(下)

QVector 与QList类似,但它在内存使用上更为紧凑,内部使用动态数组来存储元素,适用于存储大量相同类型的数据。 初始化 QVector的初始化方式有以下几种: //初始化一个空的QVectorQVector<int> vec;//初始化一个大小为10的空QVectorQVector<int> vec2(10);//使…

【精选】基于大数据的___银行信用卡用户的数仓系统的设计与实现(全网独一无二,最新定制)

目录&#xff1a; 关键技术介绍 PYTHON语言简介 大数据介绍 MySql数据库 DJANGO框架 Hadoop介绍 Scrapy介绍 B/S架构 系统的设计 系统总功能模块设计 系统测试 系统测试的目的 软件测试过程 6.3测试用例 参考代码&#xff1a; 为什么选择我&#xff1a; 博主介绍&am…

github访问加速项目@一键部署自动更改host修改加速Github访问

文章目录 abstractpowershell 版本的一键更新hosts文件更新Hosts 操作步骤准备:设置powershell执行策略powrshell脚本注册计划任务定期自动执行上述操作相关目录结构 其他方法获取相关脚本一键运行整合脚本&#x1f916;&#x1f43d;检查 abstract 尽管这里实现了一键部署自动…

自动驾驶-机器人-slam-定位面经和面试知识系列10之高频面试题(04)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新&#xff0c;基本涵盖了自己秋招历程被问过的面试内容&#xff08;除了实习和学校项目相关的具体细节&#xff09;。在知乎和牛客也会同步更新&#xff0c;全网同号&#xff08;lonely-stone或者…

Elasticsearch安装 Kibana安装

安装Elasticsearch 一、拉取镜像或者上传 docker pull Elasticsearch 二、将上传的镜像导入(在仓库拉取的这一步跳过) docker load -i es.tar docker load -i 三、创建容器 1.Elasticsearch 注意修改到自己的网络&#xff08;第八行&#xff09; docker run -d \--nam…

实时多个人脸跟踪算法实现过程记录【实时MOT】

实现的功能 之前做的实时多个人脸跟踪&#xff0c;现在记录一下。 摄像头检测到多个人脸&#xff0c;再进行跟踪。 现有问题&#xff1a;如果直接调用opncv的人脸跟踪&#xff0c;耗时多&#xff0c;无法做到实时。 具体实现过程 分为两个步骤&#xff1a;1.选base 2. 做优化…

2014年4月-2023年上市公司秩鼎ESG评级数据

2014年4月-2023年上市公司秩鼎ESG评级数据 1、时间&#xff1a;2014年4月-2023年11月 2、来源:秩鼎数据 3、指标&#xff1a;证券代码、SC、评级日期、ESG评级、ESG等级、ESG得分、E评级、E等级、E得分、S评级、S等级、S得分、G评级、G等级、G得分、总市值(亿元)、流通市值(…

电脑硬盘坏了怎么恢复数据?

在数字化时代&#xff0c;电脑硬盘作为存储核心&#xff0c;承载着我们的工作文档、学习资料、家庭照片以及无数珍贵的回忆。然而&#xff0c;硬盘作为机械设备&#xff0c;也有其寿命和脆弱性&#xff0c;一旦出现故障&#xff0c;数据恢复便成为了一个紧迫而棘手的问题。本文…

电子元器件之聚丙烯膜电容(CBB)

很多人对硬件感兴趣&#xff0c;要么就是想学一门手艺&#xff0c;找一份相关的工作。要么就是对电子感兴趣&#xff0c;想自己做些东西玩玩。虽然现在很多电子模块已经很成熟了&#xff0c;稍微连接一下线路就能做一个自己电子小制作&#xff0c;网上也有很多教学视频。 但大…

「Python程序设计」基本数据类型:字符串

​在python的程序设计过程中&#xff0c;字符串是需要经常处理的变量类型。字符串在程序中的存储方式&#xff0c;类似于一维数组&#xff0c;每个字符占据数组中的一个单元格。 字符串可以存储字符类型的变量&#xff0c;即使是数字类型&#xff0c;也可以通过字符串来进行存…

(javaweb)maven高级

目录 ​编辑 1.分模块设计与开发 2.继承与聚合--继承关系实现 3.继承与聚合--版本锁定 4.继承与聚合--聚合版本 5.私服 资源的上传与下载 1.分模块设计与开发 分模块&#xff1a;拆分成多个模块进行开发 不分模块&#xff1a;业务代码堆积成一个 不利于项目管理和维护并…

Apache PDFBox

文章目录 一、关于 Apache PDFBox二进制下载构建贡献支持已知限制和问题许可证&#xff08;另见[LICENSE. txt](https://github.com/apache/pdfbox/blob/trunk/LICENSE.txt)&#xff09;出口管制 二、依赖1、核心组件最低要求字体处理XMP元数据使用Maven包含依赖项 2、可选组件…

密码生成器(HTML+CSS+JavaScript)

&#x1f30f;个人博客主页&#xff1a;心.c ​ 前言&#xff1a;前两天写了密码生成器&#xff0c;现在跟大家分享一下&#xff0c;大家如果想使用随便拿&#xff0c;如果哪里有问题还请大佬们给我指出&#xff0c;感谢支持 &#x1f525;&#x1f525;&#x1f525;专题文章&…

MySQL 的半同步模式

目录 1 半同步简介: 解决主从数据一致性问题 2 实现半同步模式实践操作 2.1 MASTER 2.2 SLAVE 1 2.3 SLAVE 2 2.4 查看client链接状态 2.5 SLAVE 服务器故障模拟 2.5.1 停止 SLAVE 的 IO_THREAD 2.5.2 查看SLAVE 的IO线程是否关闭 2.5.3 查看 MASTER 上 client 的连接状态…

在树莓派5上使用pytroch进行模型训练—全流程笔记

在树莓派上运行pytroch模型&#x1f680; 在完成了树莓派的一系列基础配置学习之后&#xff0c;按照规划&#xff0c;下一步要做的就是在树莓派上安装一个pytorch&#xff0c;尝试运行一下深度学习的模型&#xff0c;如果可以实现且准速度有一定保证的话&#xff0c;就可以作为…

使用Qt+Visual Stuidio写一个简单的音乐播放器(1)

1.使用QMediaPlayer播放音乐 第三步:在代码头部加上: #include <QtMultimedia/QMediaPlayer> // VS向.pro文件添加代码的方式 #pragma execution_character_set("utf-8") // qt支持显示中文 QMediaPlayer类是一个高级媒体播放类。它可以用来播放歌曲、电…

java:获取桥接方法的参数名

如果一个方法是桥接方法&#xff0c;那么因为这个方法是由编译器自动生成的&#xff0c;所以它的方法参数名是无意的arg0,arg1。。。 如果要直接通过Method.getParameters(),得到的Pamameter对象中的name就是这些意义的名字。 所以对于一个由编译器生成的桥接方法&#xff0c;如…

常见的视频监控RTSP RTMP 流媒体协议及开发测试工具

一 流媒体协议 RTMP (Real-Time Messaging Protocol): 封装格式&#xff1a;FLV 或 MP4协议&#xff1a;TCP端口&#xff1a;默认2200厂家&#xff1a;Adobe Systems特点&#xff1a;实时性强&#xff0c;延迟低&#xff0c;支持服务器端的推流和拉流。应用&#xff1a;主要用…

超分CAMixerSR 使用笔记

目录 超分CAMixerSR 笔记 自己改进的图例示例: 修改目录: 设置预训练模型: 超分CAMixerSR 笔记 自己改进的图例示例: 修改目录: codes/basicsr改为codes/basicsr_m 设置预训练模型: path:pretrain_network_g: F:\project\chaofen\CAMixerSR-main\pretrained_mode…

C++初学(14)

14.1、while循环 和for循环相比&#xff0c;while循环没有初始化和更新部分&#xff0c;它只有测试条件和循环体。 while(text-condition)body首先程序计算圆括号内的测试条件&#xff08;text-condition&#xff09;表达式。如果该表达式为ture&#xff0c;则执行循环体中的…