thingsboard 自定義動作JS編程

在 ThingsBoard 中實現 自定義動作(Custom Action)的 JavaScript 編程,主要通過“Custom action (with HTML template)”方式完成,適用于創建彈窗、編輯實體、控制設備等交互行為。

實現步驟(以添加設備或資產為例)

1、進入部件編輯模式 → 點擊“+”添加動作。

2、選擇動作來源(如:Widget header button 或 Action cell button)。

3、動作類型選擇:Custom action (with HTML template)

4、配置四個標簽頁:
Resources:引入外部 JS/CSS(可選);
CSS:自定義樣式;
HTML:彈窗或交互界面結構;
JavaScript:核心邏輯代碼。

?5、JavaScript 示例:添加設備/資產彈窗邏輯(精簡版)

    var targetStateId = '';// 防止 entityLabel 為 nullif (entityLabel) {                               //entityLabel 是否包含“用電保護器” if (entityLabel.includes('用電保護器')) {targetStateId = 'state_air';             // 用電保護器} else if (entityLabel.includes('數字量')) {targetStateId = 'state_output';          // 數字量輸入輸出}else if (entityLabel.includes('DTU')) {targetStateId = 'state_dtu';          // DTU}}/* 2. 可選:額外參數,隨狀態一起帶過去 */const params = {entityId: entityId.id,entityName: entityName,entityLabel: entityLabel};/* 3. 獲取儀表盤所有已定義的狀態列表 *///const states = widgetContext.dashboardCtrl.dashboard.configuration.states || {};//alert(JSON.stringify(states, null, 2));if (targetStateId) {widgetContext.stateController.openState(targetStateId, params, true);} else {widgetContext.showErrorToast('狀態 "' + targetStateId + '" 未定義。');}

“自定義動作(Custom Action)” 的 JS 編程不是“炫技”,而是解決實際業務痛點的關鍵手段。它的好處和解決的問題可以總結為:


? 1.?解決“標準動作”無法滿足的業務需求

  • 痛點:ThingsBoard 自帶的動作(如“打開儀表盤”、“打開詳情”)只能做固定的事情,無法處理復雜業務邏輯。

  • 例子

    • 點擊按鈕后需要彈窗輸入設備參數(如 SIM 卡號、固件版本)再保存;

    • 點擊“報警確認”按鈕時,需要調用外部 API(釘釘/微信)通知運維人員;

    • 點擊“重啟設備”按鈕時,需要先彈窗確認,再下發 RPC 命令并記錄日志。


? 2.?解決“多步驟交互”問題

  • 痛點:標準動作是“一步完成”,而實際業務需要“多步交互”(如表單驗證、異步加載數據)。

  • 例子

    • 添加設備時,先選擇設備類型 → 動態加載對應的屬性模板 → 再填寫參數 → 最后保存;

    • 點擊“批量下發配置”時,先選擇配置模板 → 再選擇目標設備 → 最后確認執行。


? 3.?解決“跨系統集成”問題

  • 痛點:ThingsBoard 無法直接調用外部系統(如 ERP、CRM、工單系統)。

  • 例子

    • 點擊“創建工單”按鈕時,調用 Jira/ServiceNow API 創建問題單;

    • 點擊“同步庫存”按鈕時,調用 ERP 接口獲取最新庫存數據并更新 ThingsBoard 屬性。


? 4.?解決“用戶體驗差”問題

  • 痛點:標準動作的彈窗樣式固定,無法根據品牌或業務需求定制。

  • 例子

    • 自定義彈窗的標題、按鈕顏色、布局,使其符合公司 UI 規范;

    • 在彈窗中嵌入圖表(如歷史數據趨勢)輔助用戶決策。


? 5.?解決“重復勞動”問題

  • 痛點:多個儀表盤需要相同的“添加/編輯”功能,但標準動作無法復用。

  • 例子

    • 封裝一個“通用設備添加彈窗”,所有儀表盤只需引用,無需重復造輪子;

    • 將復雜邏輯(如設備注冊流程)封裝成可復用的自定義動作模板。


? 6.?解決“權限控制”問題

  • 痛點:標準動作無法根據用戶角色動態控制按鈕顯隱。

  • 例子

    • 只有“管理員”角色才能看到“刪除設備”按鈕;

    • 只有“維修工程師”角色才能看到“遠程調試”按鈕。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/93387.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93387.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93387.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring Boot 簡單接口角色授權檢查實現

一、背景與目標在Spring Boot應用開發中,接口級別的權限控制是系統安全的重要組成部分。本文將介紹一種簡單直接的接口角色授權檢查實現方案,適合快速開發和安全合規檢查場景。二、技術方案概述本方案采用自定義注解攔截器的方式實現,具有以下…

PytorchLightning最佳實踐日志篇

在 PyTorch Lightning(PL)中,日志系統是 “煉丹” 過程中復現實驗、對比效果、排查問題的核心工具。結合實際工程經驗,總結以下最佳實踐和技巧,幫助提升實驗效率: 一、日志工具的選擇與配置 PL 通過統一的s…

基于JavaWeb的兼職發布平臺的設計與實現

開發語言:Java框架:springbootJDK版本:JDK1.8服務器:tomcat7數據庫:mysql 5.7數據庫工具:Navicat12開發軟件:eclipse/myeclipse/ideaMaven包:Maven3.6系統展示系統首頁用戶登錄招聘信…

Linux學習--C語言(指針3)

1.指針函數和函數指針1.1 指針函數指針函數是函數&#xff0c;函數的返回值是指針不能返回局部變量的地址指針函數返回的地址可以作為下一個函數調用的參數1.2 函數指針函數指針是指針&#xff0c;指針指向一個函數#include <stdio.h>int Add(int x, int y) {return x y…

【JAVA EE初階】多線程(上)

目錄 1.預備知識 1.1 馮諾依曼體系結構&#xff1a; 1.2 現代CPU主要關心指標&#xff08;和日常開發密切相關的&#xff09; 1.3 計算機中&#xff0c;一個漢字占幾個字節&#xff1f; 1.4 Windows和Linux的區別 1.5 PCB的一些關鍵要點 2.線程和進程 2.1 創建線程的寫法…

用互聯網思維擴展電商后臺的 CRUD 功能

一、自定義實現MyBatis-Plus逆向工程 多數據源的問題解決了&#xff0c;接下來開始進行實際開發時&#xff0c;你會發現&#xff0c;最麻煩的一件事情就是要創建與數據庫表對應的POJO了。這些沒什么難度&#xff0c;但是繁瑣的內容會占據大量的開發時間。比如一個PmsProducr對…

無代碼測試平臺ATECLOUD全場景測試方案

ATECLOUD 智能云測試平臺是有納米軟件開發的一款以無代碼架構與彈性擴展體系為核心的自動化測試平臺&#xff0c;通過數據模型驅動的創新設計&#xff0c;為研發、產線等多場景提供高效可控的測試解決方案。?無代碼架構 ATECLOUD 打破傳統技術壁壘&#xff0c;構建完全可視化的…

當 AI 重構審計流程,CISA 認證為何成為破局關鍵

在南京審計大學最新發布的《面向審計行業 DeepSeek 大模型操作指南》中&#xff0c;一組數據引發行業深思&#xff1a;通過自動化數據處理、智能風險識別和定制化報告生成&#xff0c;AI 大模型能幫助審計人員降低 40% 以上的人工成本&#xff0c;同時將風險識別準確率提升至 9…

NAT技術、代理服務器

NAT/NAPT技術NAT的全稱是network address translation&#xff0c;網絡地址轉換。NAT 能在對外通信時夠將源 IP 轉為新源 IP&#xff0c;對內通信時將目的ip轉換成新目的ip&#xff0c;實現這個操作&#xff0c;靠的是地址轉換表但NAT的說法其實是不準確的&#xff0c;因為多個…

【硬件-筆試面試題】硬件/電子工程師,筆試面試題-45,(知識點:負反饋的作用,基礎理解,干擾和噪聲的抑制)

目錄 1、題目 2、解答 步驟一&#xff1a;明確負反饋的作用原理 步驟二&#xff1a;逐一分析選項 3、相關知識點 一、負反饋的基本原理 二、負反饋對干擾和噪聲的抑制機制 三、選項分析與答案 四、擴展思考&#xff1a;如何抑制不同位置的干擾&#xff1f; 總結 題目…

Flutter藍牙BLE開發完全指南(內含高級功能擴展)

Flutter藍牙BLE開發完全指南 我將為您提供一個完整的Flutter藍牙BLE實現方案,包含UI設計、權限處理、設備掃描、連接通信等完整功能。 完整實現方案 1. 添加依賴與權限配置 pubspec.yaml dependencies:flutter:sdk: flutterflutter_blue_plus: ^1.10.0permission_handler…

使用 Canvas 替代 <video> 標簽加載并渲染視頻

在部分瀏覽器環境或業務場景下&#xff0c;直接使用 <video> 標簽加載視頻會出現首幀延遲的情況。以下方法通過 WebGPU Canvas 2D 將視頻幀繪制到自定義 Canvas 上&#xff0c;讓 <video> 只做解碼&#xff0c;WebGPU 接管渲染&#xff0c;通過最小化對象創建 精…

基于Flask的智能停車場管理系統開發實踐

在現代城市中&#xff0c;停車難已成為一個普遍問題。為了解決這一問題&#xff0c;我開發了一個基于Python Flask框架的智能停車場管理系統。該系統集成了車牌識別、車位狀態監控、收費管理等多項功能&#xff0c;為停車場的智能化管理提供了完整的解決方案。系統功能概述該停…

【C#獲取高精度時間】

在C#中&#xff0c;有幾種方法可以獲取高精度時間&#xff08;高分辨率時間戳&#xff09;&#xff0c;適用于性能測量、計時等需要高精度的場景。以下是幾種常用方法&#xff1a; 1. 使用 Stopwatch 類&#xff08;推薦&#xff09; Stopwatch 類提供了最高精度的時間測量&…

Spring Boot + React 打造現代化高校成績管理系統實戰記錄

作者: 笙囧同學 發布時間: 2025年7月 技術棧: Spring Boot 3.2.3 React 18 TypeScript 華為云GaussDB 項目類型: 全棧Web應用 開發周期: 30天 代碼量: 15000 行 &#x1f4d6; 前言 大家好&#xff0c;我是笙囧同學&#xff01;&#x1f64b;?♂? 作為一名計算機科學與技…

形參表不匹配(BUG)

在您的代碼中&#xff0c;存在兩個主要問題導致"形參表中不匹配"的錯誤&#xff1a;erase() 函數中的成員變量名錯誤iterator erase(iterator pos) {// ...size--; // ? 錯誤&#xff1a;成員變量名為 _size 而非 sizereturn iterator(next); }修正&#xff1a;ite…

Spring循環依賴以及三個級別緩存

Spring循環依賴以及三個級別緩存 什么是循環依賴&#xff1f; 循環依賴&#xff0c;顧名思義&#xff0c;就是指兩個或多個 Spring Bean 之間相互依賴&#xff0c;形成一個閉環。 最常見也是 Spring 能夠“解決”的循環依賴是構造器注入 和 setter 注入 混合或單獨使用時&…

《零基礎入門AI:OpenCV圖像預處理進一步學習》

本文全面講解OpenCV圖像預處理的七大核心技術&#xff08;插值方法、邊緣填充、圖像矯正&#xff08;透視變換&#xff09;、圖像掩膜、ROI切割、圖像添加水印、圖像噪點消除&#xff09;&#xff0c;每個知識點都配有詳細解釋和實用代碼示例&#xff0c;幫助初學者建立系統的圖…

MongoDB的內存和核心數對于運行效率的影響

在 MongoDB 線上生產環境中&#xff0c;CPU&#xff08;核心&#xff09; 和 內存 是兩大關鍵硬件資源&#xff0c;它們在不同的操作場景下發揮著核心作用&#xff0c;共同影響著數據庫的性能、穩定性和擴展性。理解它們的作用場景至關重要&#xff0c;是容量規劃、性能優化和故…

自己的SAPGUI嘗試

為滿足用戶需求&#xff0c;博主做了一個臺賬管理程序&#xff0c;嘗試用自己的程序做GUI&#xff0c;用SAP 系統做數據庫。 運行了半年&#xff0c;程序很nice,用戶每天都在高效的使用&#xff0c;已經有十幾萬的數據。 總結一下這次自己的GUI嘗試&#xff0c;好處是C# WINFOR…