插件 〉ACE.SVG
ACE.SVG
基于 React 的 Grafana SVG 面板插件
这是适用于 Grafana 10.x+ 的 SVG 面板插件
为什么又来一个 SVG 面板插件?
是的,我确实考虑过将其命名为 YASPP... 现有的 SVG 面板插件都使用了 7.0 版本之前的 Angular 面板 API。我希望能够利用新的数据 API 中的所有功能,以及迁移到 React 可能带来的性能提升。我还在某种程度上采用了与一些其他 SVG 插件不同的方向/理念。
它是如何工作的?
- 本插件的用户需要拥有在矢量设计软件(参见 Inkscape、Adobe Illustrator 或 draw.io 等网页工具)中创建的、可进行动画处理的 SVG 图形。
- 用户将现有的 SVG 布局上传到插件中,然后启用“点击映射”功能,以便轻松地将任意组、路径或文本 span 的 ID 映射到命名令牌。
- 然后,用户在 init 函数中执行额外的设置任务,该函数在每次加载 SVG 面板时都会被调用。
- 最后,用户可以使用 render 函数(面板每次接收到新数据时调用)中通过命名令牌访问 SVG 的元素。
- 用户在 render 或 init 函数中的代码可以访问所有映射的元素、根 SVG 文档、一个临时状态存储以及面板的 DataFrames。
此项目的目标是什么?
- 成为在 Grafana 中可视化任意 SVG 图形和动画的最高性能方式
- 不碍事 - 本插件将专注于提供简单、显而易见的工具,以减少将静态 SVG 图形转换为数据驱动的可视化的阻力,同时不限制您的选择。
- 保持专注 - 本插件不会尝试成为一个在线图形编辑器。
入门指南
- 创建一个新面板并选择 ACE.SVG 作为可视化类型
- 将您的 SVG 源文件粘贴到“SVG Document”选项卡编辑器中。
- 使用“SVG Mapping”选项卡中的“点击映射”功能将 SVG 元素映射到变量。
- 在“User JS Init”选项卡编辑器中编写您希望在仪表盘加载时运行一次的代码。
- 在“User JS Render”选项卡编辑器中编写您希望在接收到数据时运行的代码。
- 充分利用浏览器 JS 控制台和 console.log() 来探索插件和 SVG.js 的功能。
执行环境接口
插件在 Init 和 Render 函数的执行上下文中提供了几个访问 SVG 文档和 Grafana 的接口。以下是每个接口的详细信息,请记住您始终可以使用浏览器 JS 控制台和 console.log() 来获取更多详细信息。
svgmap
是一个 JS 对象,其中每个映射的 SVG.js 元素都作为属性可用。示例:如果您有一个 svgid 为 'rect4524' 并提供了映射名称 bigSquare,您可以通过svgmap.bigSquare
访问该元素上的 SVG.js 方法。svgmap 也包含在options.svgMappings
中。data
是 Grafana 传递给面板用于渲染的原始对象,它包含 DataFrames,其中包含活动查询和时间范围选择的所有时序数据。这个接口有点复杂和冗长,因此我们将添加辅助方法来简化常见用例。Grafana DataFrame 文档options
是由仪表盘管理用于存储面板状态的原始面板 options 对象。它包含 SVG 和函数的源代码,以及任何映射或其他配置数据。虽然您可以使用此接口手动访问面板的所有内容,但最常见的用例是从 Init 函数向其添加属性,供 Render 函数后续使用。例如,如果面板中有一个常见的动画,您可以在 Init 中创建一个函数来设置它,并将其作为属性附加到 options 对象上,以便您可以在 Render 函数中使用它并保持逻辑流程清晰。svgnode
是对 SVG.js 对象的引用。context
是一个最初为空的对象,传递给 init 函数。init 函数可以存储您希望在 init 和渲染之间保留的任何上下文或状态。这不是必需的,但对于某些高级用例(例如,init 函数中的 svg 生成器)来说,能够在 init 和 render 之间(以及在不同的渲染调用之间)传递数据会很有用。
'data' 对象既包含查询定义,也包含查询结果。对于用户初始化函数,很可能(尚)没有结果,但应该存在查询定义。这对于某些初始渲染目的可能有用,但建议谨慎使用,因为查询可能会更新(例如当用户正在更新查询时),所以在此处完成的任何操作可能也应在 update 函数中完成。
重要提示
- 对象的
style
属性优先于fill()
。在使用 Inkscape 创建图形时,这可能会导致问题,因为它使用style
属性来分配填充颜色。要解决此问题,您必须删除该元素的style
中的fill:#FFFFFF;
部分。
了解更多
- SVG.js 用于 SVG DOM 操作的核心 SVG 库。
- Grafana 文档 面向用户和开发者的文档。
- Mozilla Developer 关于 SVG 标准本身的文档。
在 Grafana Cloud 上安装 ACE.SVG
在 Grafana Cloud 实例上安装插件是一键完成的;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才会显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键完成的;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才会显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键完成的;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才会显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键完成的;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才会显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键完成的;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才会显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键完成的;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才会显示在您的 Grafana 中。
在 Grafana Cloud 实例上安装插件是一键完成的;更新也是如此。很酷,对吧?
请注意,插件可能需要长达 1 分钟才会显示在您的 Grafana 中。
欲了解更多信息,请访问关于插件安装的文档。
在本地 Grafana 上安装
对于本地实例,插件通过简单的 CLI 命令进行安装和更新。插件不会自动更新,但您的 Grafana 中会直接通知您有可用更新。
1. 安装面板
使用 grafana-cli 工具从命令行安装 ACE.SVG
grafana-cli plugins install
插件将安装到您的 grafana 插件目录中;默认路径为 /var/lib/grafana/plugins。了解更多关于 cli 工具的信息。
2. 将面板添加到仪表盘
安装的面板将立即显示在 Grafana 主菜单的“仪表盘”部分中,并且可以像 Grafana 中的任何其他核心面板一样添加。
要查看已安装面板列表,请点击主菜单中的插件项。核心面板和已安装面板都会显示。
更新日志
本项目的所有重要变更都将记录在此文件中。
0.1.5
- 修复 dependabot 依赖问题
ws
,braces
,fast-loops
,webpack
,path-to-regexp
- 将 Node 版本更新到 22
- 更新依赖版本和工作流程
- 添加新的工作流程以打包统计信息并更新插件创建
- 更新主 README 页面上损坏的徽章
- 添加关于 CSS 优先级的注意事项
- 添加额外的开发者说明
- 将
console.log
移至用户 JS Init 代码 - 将 README 拆分为两个文件:“Grafana Marketplace”和“面向开发者”
- 移除已弃用的
<HorizontalGroup>
和<VerticalGroup>
类,改用<Stack>
- 移除未使用的媒体文件
0.1.4
- 解决
SvgMappings
事件错误(感谢 @hyunki85!) - 更新依赖和工作流程
0.1.3
- 在 readme 中添加一些额外的有用链接
- 通过添加
readonly
/const
修饰符、访问修饰符和函数返回类型来提高代码质量 - 用 Grafana 内置的
CodeEditor
替换 Monaco 代码编辑器 - 简化示例中的 init 源代码并添加注释
0.1.2
- 修复内置示例
- 更新依赖版本
- 将 readme 中的命令从
yarn
更新为npm
- 移除 provisioning 文件夹
- 移除对
emotion
的 devDependency
0.1.1
- 修复 readme 中的错误链接
- 更新依赖版本
- 清理一些旧的配置文件
0.1.0
- 更新框架以兼容 Grafana v10