Thingsboard组件自定义动作:关联同名设备仪表板的技术问询
解决方案:通过自定义动作关联同名设备仪表板
我之前刚好碰到过一模一样的需求,给你梳理下具体的实现步骤,亲测可行:
核心思路
利用自定义动作中的event对象获取点击设备的entityName,再通过Grafana的URL规则构造目标仪表板的跳转链接,直接打开同名仪表板。
具体代码实现
在自定义动作的JavaScript编辑框中,输入以下代码(根据你的实际情况调整参数):
// 1. 从点击事件中获取当前设备的名称(也就是你的目标仪表板名称) const deviceName = event.entityName; // 2. 替换为你的仪表板所在文件夹的UID(可从目标仪表板的URL中提取,比如`d/abc123/device-001`里的`abc123`) const targetFolderUid = "your-folder-uid-here"; // 3. 处理仪表板的URL别名(slug):Grafana默认会把名称转小写、空格替换为连字符,若你手动修改过slug需对应调整 const dashboardSlug = deviceName.toLowerCase().replace(/\s+/g, '-'); // 4. 构造跳转URL并打开目标仪表板 const dashboardUrl = `/d/${targetFolderUid}/${dashboardSlug}`; window.location.href = dashboardUrl;
关键注意事项
- 确保你的设备名称和对应仪表板的**URL别名(slug)**完全匹配:如果仪表板创建时没有修改过slug,Grafana会自动将名称转为小写,空格替换为
-,所以上面的代码做了对应的字符串处理;如果是自定义的slug,直接替换dashboardSlug的生成逻辑即可。 - 如果所有仪表板都在根文件夹(没有指定文件夹),可以把
targetFolderUid替换为general(根文件夹的默认UID)。 - 测试时可以先通过
console.log(event)打印事件对象,确认entityName是否正确获取到了你需要的设备名称。
内容的提问来源于stack exchange,提问作者ajko01
相关产品推荐
相关产品推荐

