S2 引擎-大数据分析表格

一、特性
1)开箱即用:提供不同场景下开箱即用的 React, Vue3 表组件及配套分析组件,只需要简单的配置即可轻松实现复杂场景。
2)多维交叉分析: 告别单一分析维度,全面拥抱任意维度的自由组合分析。
3)高性能:能支持全量百万数据下 < 4s 渲染,也能通过局部下钻来实现秒级渲染。
4)高扩展性:支持任意的自定义扩展(包括但不局限于布局,样式,交互,数据流等)。
5)交互友好:支持丰富的交互形式(单选、圈选、行选、列选、冻结行头、宽高拖拽,自定义交互等)
二、实现原理
G 是 Antv 系列的底层渲染引擎,为上层提供一致、高性能的 2D / 3D 图形渲染能力,适配 Web 端全部底层渲染 API (Canvas2D / SVG / WebGL / WebGPU / CanvasKit)。
在这里插入图片描述
在这里插入图片描述
s2 是基于 @antv/g 渲染的 canvas 表格,通过配置信息将原始数据处理,转换为以 行、列 纬度值为 path 的多维数组。在此之后,通过 hierarchy 来改变自动生成的层级结构。然后通过 layout 更改任意行、列、单元格的坐标信息。最后由 layoutResult 来确定行、列的笛卡尔交集的 dataCell 数据信息。
在这里插入图片描述
在性能的优化上做了,按需渲染和缓存设计:
按需渲染:只渲染可视区域内的单元格,滚动后通过 scrollX 和 scrollY,计算当前视窗中的单元格的节点索引,去动态并新增和删除单元格。
三、本地化
3.1 使用

// 生成 S2DataConfig: 数据配置,S2Options:参数配置,S2Theme:主题配置
const changeVariables = () => {options.value = tableConfig.initOptions(columns.value, tableRef.value, props.options, headerCallBack, globalClickCallBack)theme.value = tableConfig.initTheme(props.theme)dataConfig.value = tableConfig.initDataConfig(columns.value, tableData.value, props.customTableSheetTotal, dataCellDbClickCallBack)
}// s2 实例化
const initTable = () => {// 实例类型:TableSheet 明细表,PivotSheet 交叉表tableSheet.value = type.value === 'tableSheet' ? new TableSheet(tableRef.value, dataConfig.value, options.value) : new PivotSheet(tableRef.value, dataConfig.value, options.value)// 设置主题tableSheet?.value.setTheme(theme.value)tableSheet?.value.render()// 类属性赋值tableConfig.tableSheet = tableSheet.valuetableConfig.tableRef = tableRef.value// 注册单元格点击事件tableConfig.dataCellClick()
}// 画布尺寸监听,动态改变表格宽高
const addResizeEvent = () => {const resizeObserver = window.ResizeObserverconst callback = (domList) => {if (!domList[0]) returnlet { width, height } = tableRef.value.getBoundingClientRect()tableConfig.autoLayoutRender(width, height)}observer = new resizeObserver(callback)observer.observe(tableRef.value)
}

3.2 自定义表头样式

// 自定义 customColCell 进行继承实现
export class customColCell extends ColCell { initCell() {super.initCell() }// 基于 s2 getBackgroundColor 自定义表头二级列背景色getBackgroundColor() {let backgroundStyle = super.getBackgroundColor()...backgroundStyle = { ... }return backgroundStyle}// 基于 s2 addActionIcon 自定义表头 icon ,主要用于改变颜色addActionIcon(options) {...var icon = new GuiIcon({ ... })icon.set('visible', !defaultHide)icon.on('mouseover', function (event) { ... })icon.on('mouseleave', function (event) { ... })icon.on('click', function (event) { ... })this.actionIcons.push(icon)this.add(icon)}
}

3.3 自定义操作列

// 继承 s2 数据单元格,并追加自定义
export class customDataCell extends DataCell {initCell() {super.initCell()// 在绘制完原本的单元格后, 再绘制定制化内容this.renderCustomDataCell()}// 自定义单元格渲染renderCustomDataCell() {let textStyle = {fill: '#8B60F0',fontSize: 12,lineHeight: 34,textAlign: 'center',cursor: 'pointer',textBaseline: 'middle',opacity: 1}...actionList.map((item, index) => {textStyle = {...textStyle,...item?.textStyle}...switch (item.type) {case 'default':this.addShape('text', {attrs: {text: fieldValue,...position.text,...textStyle}})breakcase 'operate': this.addShape('text', {attrs: {x: x,y: position.text.y,text: item.name,...textStyle}})break}})}
}

3.4 自定义支持汇总

export class customDataCell extends DataCell {drawTextShape() {let { valueField, rowIndex } = this.metalet { dataCfg } = this.spreadsheet// 处理明细表汇总if (dataCfg.customTableSheetTotal.enable && rowIndex === dataCfg.data.length - 1) { this.meta.isTotals = trueif (valueField === '$$series_number$$') {this.meta.fieldValue = dataCfg.customTableSheetTotal.label}}super.drawTextShape()}// 汇总行填充色drawBackgroundShape() {super.drawBackgroundShape()let { rowIndex } = this.metalet { dataCfg } = this.spreadsheetif (dataCfg.customTableSheetTotal.enable && rowIndex === dataCfg.data.length - 1) this.backgroundShape.attr('fill', '#f5f7fa')}
}...
// 计算逻辑,另外

3.5 单元格数据格式化

// 封装的数据过滤方法
... 
export const filterList = [{label: '数据转换',options: [...]},{label: '日期时间',options: [...]}
]static initDataConfig(columns, data, customTableSheetTotal = { enable: false, label: '汇总' }, dataCellDbClickCallBack) {...columnsCustom.map(item => {let { field, name, alias, formatter } = item...meta.push({field,name: alias || name,item,formatter,dataCellDbClickCallBack})})// 兼容二级表头columnsCustom.map(item => {...})// 汇总处理data = this.handleTableSheetTotal(columns, data, customTableSheetTotal)return {...this.defaultDataConfig(),fields,meta,data,customTableSheetTotal}}

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

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

相关文章

数据脱敏方案总结

什么是数据脱敏 数据脱敏的定义 数据脱敏百度百科中是这样定义的&#xff1a; 数据脱敏&#xff0c;指对某些敏感信息通过脱敏规则进行数据的变形&#xff0c;实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集…

YOLOv11模型改进-注意力-引入简单无参数注意力模块SimAM 提升小目标和遮挡检测

本篇文章将介绍一个新的改进机制——卷积和注意力融合模块SimAM &#xff0c;并阐述如何将其应用于YOLOv11中&#xff0c;显著提升模型性能。首先&#xff0c;SimAM 是一种用于卷积神经网络的简单且无参数的注意力模块&#xff0c;它基于神经科学理论定义能量函数来计算 3-D 注…

若依框架的下载与配置

1. 若依版本 RuoYi-Vue前后端分离版。 2. 框架下载 2.1 后端框架下载 https://gitee.com/y_project/RuoYi-Vue 2.2 前端框架下载 https://github.com/yangzongzhuan/RuoYi-Vue3 3. 数据库配置 3.1 创建数据库 基于MySQL数据库&#xff0c;创建数据库&#xff1a;ry-vu…

Top Down 2D Dojo Chip Set

以下是对这款 2D 微型像素关卡芯片集的简洁介绍&#xff1a; 这是一款基于 8x8 像素网格的 2D 微型像素关卡芯片集&#xff0c;采用经典的像素风格。它包含 66 个.png 格式的芯片&#xff0c;涵盖多种墙壁和门的变体&#xff0c;非常适合用于快速搭建游戏原型的道场关卡。利用…

gazebo显示urdf

最近想要将urdf显示在gazebo中。也就是实现下面这样的效果。 因为我看到网上&#xff0c;很多都是在rviz中显示urdf文件。 <launch><!-- 将 Urdf 文件的内容加载到参数服务器 --><param name"robot_description" textfile"$(find urdf_gazebo)/…

【GAMES101笔记速查——Lecture 17 Materials and Appearances】

目录 1 材质和外观 1.1 自然界中&#xff0c;外观是光线和材质共同作用的结果 1.2 图形学中&#xff0c;什么是材质&#xff1f; 1.2.1 渲染方程严格正确&#xff0c;其中BRDF项决定了物体的材质 1.2.2 漫反射材质 &#xff08;1&#xff09;如何定义漫反射系数&#xff1…

mysql8以上版本第一次下载后的登录问题

mysql8以上版本第一次下载后的登录问题 在官网下载mysql后&#xff0c;按照MySQL下载和安装教程操作就可以 如果出现问题&#xff0c;参考https://blog.csdn.net/weixin_63107823/article/details/136588474 注意ini配置文件&#xff0c;如果你是复制的别人的代码&#xff0…

ESD防静电闸机如何保护汽车电子产品

随着汽车电子技术的快速发展&#xff0c;汽车中集成了越来越多的电子设备&#xff0c;如车载信息娱乐系统、自动驾驶传感器、驾驶辅助系统等。静电放电可能导致电子组件的损坏、性能下降&#xff0c;甚至使整个系统失效。因此&#xff0c;如何有效保护汽车电子产品免受静电损害…

2024 四川省大学生信息安全技术大赛 安恒杯 部分 WP

文章目录 一、前言二、MISCunzip-png拓展 第47张图片重要的文件 三、WEB四、CRYPTO五、REVERSE 一、前言 WP不完整&#xff0c;仅供参考&#xff01; 除WEB外&#xff0c;其余附件均已打包完毕&#xff0c;在这里也是非常感谢师傅的附件支持&#xff01; 123网盘下载&#x…

Web应用框架-Django应用基础(2)

1.请求响应对象 1.1 请求对象HttpRequest测试 #hello\views def http_request(request):#1.获得请求方式print(request.method)#2.获得请求头信息#2.1 获取META中的请求头信息headers request.METAprint(headers)#2.2 获取请求头信息的内容ua request.META.get(HTTP_USER_AG…

[已解决] pycharm添加本地conda虚拟环境 + 配置解释器 - pycharm找不到conda可执行文件

目录 问题&#xff1a; 方法&#xff1a; 补充&#xff1a;创建conda虚拟环境 参考文档&#xff1a;pycharm找不到conda可执行文件怎么办&#xff1f;-CSDN 问题&#xff1a; 1.显示&#xff1a;未为项目配置 Python 解释器 2.想在pycharm中使用本地创建的虚拟环境 方法&a…

通过前端UI界面创建VUE项目

通过前端UI界面创建VUE项目&#xff0c;是比较方面的一种方式&#xff0c;下面我们详细分析一下流程&#xff1a; 1、找到合适目录 右键鼠标&#xff0c;点击在终端打开 2、开始创建 输入 vue ui 浏览器弹出页面 3、点击Create项目 显示已有文件列表&#xff0c;另外可以点击…

ChatGLM4重磅开源! 连忙实操测试一波,效果惊艳,真的好用!附带最新相关资料和喂饭级实操推理教程!!

本文目录 GLM4重磅开源啦 GLM4系列版本介绍 GLM4大模型能力测评结果 经典测评任务结果 长文本能力 工具调用能力 多模态能力 手把手实操GLM-4-9B-Chat推理预测&&效果展示 GLM4运行硬件和环境要求 配置对应的库环境 使用peftbitsandbytes 进行4位量化推理 进…

【大模型报告】2024年中国AI大模型场景探索及产业应用调研报告【免费下载】

1.行业概况 市场规模&#xff1a; 2023年中国AI大模型行业规模达到147亿元&#xff0c;预计到2028年将突破1000亿元&#xff0c;复合增速超过50%。 应用价值&#xff1a; AI大模型技术能够提升生产要素的产出效率&#xff0c;并提高数据要素在生产要素组合中的地位。 应用路…

本地生活便民信息服务小程序源码系统 PHP+MySQL组合开发 带完整的安装代码包以及搭建部署教程

系统概述 地方门户分类信息网站源码系统是一个基于PHP和MySQL开发的强大平台&#xff0c;旨在帮助用户轻松搭建地方性的分类信息网站。该系统集成了众多实用功能&#xff0c;支持用户自由发帖、浏览和搜索各类信息&#xff0c;如二手交易、求职招聘、房屋租售、生活服务、商家…

Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)

文章目录 简介前置概念.git目录objects目录refs目录HEAD文件 resetreflog 与 reset --hardrevert(撤销指定提交)stashdiff工作区与暂存区差异暂存区与HEAD差异工作区与HEAD差异其他比较 restore、checkout(代码撤回)merge、rebase、cherry-pick 简介 本文将介绍Git几个核心概念…

ubuntu22.04下GStreamer源码编译单步调试

前言 本文会通过介绍在linux平台下的GStreamer的源码编译和单步调试example实例。官网介绍直接通过命令行来安装gstreamer可以参考链接&#xff1a;Installing on Linux。 这种方法安装后&#xff0c;基于gstreamer的程序&#xff0c;单步调试的时候并不会进入到gstreamer源码…

李飞飞:不要数字孪生,要数字表兄弟,一张照片生成机器人训练场景

我们很多人都听说过数字孪生&#xff08;digital twin&#xff09;&#xff0c;在英伟达等公司的大力推动下&#xff0c;这种高效运营工作流程的方法已经在很多工业场景中得到应用。 但你听说过数字表亲&#xff08;digital cousin&#xff09;吗&#xff1f; 近日&#xff0…

2024年【浙江省安全员-C证】复审考试及浙江省安全员-C证证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 浙江省安全员-C证复审考试是安全生产模拟考试一点通总题库中生成的一套浙江省安全员-C证证考试&#xff0c;安全生产模拟考试一点通上浙江省安全员-C证作业手机同步练习。2024年【浙江省安全员-C证】复审考试及浙江省…

vue3环境变量和模式

文章目录 一、vite文档介绍环境变量1.环境变量1.1创建文件 2.NODE_ENV 和 模式**2.1process.env.NODE_ENV&#xff08;Node.js 环境变量&#xff09;**2.2 **模式&#xff08;mode&#xff09;** 二、loadEnv获取环境变量&#xff08;针对在env文件夹下&#xff09;2.1创建环境…