跳到主要内容

AngularJS 到 React:自定义配置组件

使用本指南学习如何将面板的自定义配置组件从 AngularJS 迁移到 React。

背景

Grafana SDK 为开发者提供了许多有用的配置组件,例如输入数字范围、阈值、单位选择和颜色选择。您可以在 @grafana/ui 中查看这些元素的描述和示例。

一些面板的配置选项比其他面板更复杂。这些面板需要您构建自定义组件来支持从 AngularJS 到 React 的移植。

Angular 自定义配置示例

本文档重点介绍 grafana-polystat-panel,它是一个从 AngularJS 转换为 React 的大型复杂插件的示例。

AngularJS 版本的 polystat 具有用于复合指标的自定义编辑器。使用复合指标可以一起处理一系列指标,以确定总体状态。

复合指标的一个示例是服务器,它具有 CPU 使用率、内存使用率、磁盘使用率、网络带宽和 API 响应率的查询。单个指标被组合起来表示所有这些不同的指标,每个指标都有其独特的阈值,并生成一个以“最差”状态(即最低值)显示的 polygon。

复合指标编辑器包含全局选项,以及许多应用于特定复合指标的自定义选项。例如

AngularJS Composite
AngularJS 复合指标

当您展开一个复合指标 (COMPOSITE1) 时,它会显示详细信息。添加新的复合指标会提供合理的默认值,并在左侧显示有序的名称。

该面板版本 1 的源代码可以在这里查看:Polystat Panel v1.x

AngularJS 复合指标编辑器是 HTML 和用于管理 UI 的代码的组合。例如

AngularJS composite editor expanded
AngularJS 复合指标编辑器已展开

此 AngularJS 插件在 Grafana 版本 10 中可以工作,但是编辑器难以使用,因为它需要左右滚动才能看到所有值。此外,您必须将编辑器侧面板扩展到几乎全尺寸才能看到所有选项。一旦禁用 AngularJS,该插件将不再起作用。

React 组件和配置选项

将您的组件移植到 React 需要创建一个如下所示的自定义编辑器组件

React composite editor
React 复合指标编辑器
React composite editor expanded
React 复合指标编辑器已展开
React composite editor add metric
React 复合指标编辑器添加指标

复合指标编辑器现在垂直显示,不需要左右滚动即可查看所有选项。您还可以像过滤其余配置项一样过滤编辑器。

该组件的源代码现在是自包含的,可以在 Grafana GitHub 存储库 中查看。

新编辑器比 AngularJS 版本有许多优势

  • 支持重新排序复合指标并对其进行命名以便于识别。编辑器还利用内置的输入字段和验证器,减少了支持面板所需的代码量。
  • 允许许多复杂的配置选项,这些选项在 React 中更容易实现。例如,这些选项包括从正则表达式、模板变量或两者兼有中派生复合指标名称的能力。
  • 包括用于阈值和覆盖的其他自定义编辑器,这些编辑器不同于常见的 @grafana/ui 模式。这些编辑器可以用作参考,了解如何使用复杂逻辑实现这些类型的编辑器。