@nywqs/scada-engine 1.1.27 → 1.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/README.md +28 -13
  2. package/dist/assets/dataProcessor.worker-DerLDc7p.js +1 -0
  3. package/dist/scada-engine.css +1 -1
  4. package/dist/scada-engine.es.js +15236 -13405
  5. package/dist/scada-engine.umd.js +26 -26
  6. package/dist/src/components/BindingCard.d.ts +3 -6
  7. package/dist/src/components/{DevicePointSelector.d.ts → ComponentPointSelector.d.ts} +5 -9
  8. package/dist/src/components/DataPropertiesTab.d.ts +0 -2
  9. package/dist/src/scada-components/iot/industrial-3d-fluid.d.ts +9 -0
  10. package/dist/src/scada-components/registry.d.ts +65 -4
  11. package/dist/src/scada-components/types.d.ts +28 -3
  12. package/dist/src/services/dataParser.d.ts +110 -0
  13. package/dist/src/services/dataSourceManager.d.ts +7 -1
  14. package/dist/src/services/httpService.d.ts +73 -0
  15. package/dist/src/services/mqttService.d.ts +5 -5
  16. package/dist/src/services/sseService.d.ts +75 -0
  17. package/dist/src/services/websocketService.d.ts +67 -0
  18. package/dist/src/types/dataAdapter.d.ts +184 -0
  19. package/dist/src/utils/animationScheduler.d.ts +85 -0
  20. package/dist/src/utils/canvasLayerManager.d.ts +88 -0
  21. package/dist/src/utils/dataBindingService.d.ts +55 -11
  22. package/dist/src/utils/index.d.ts +4 -0
  23. package/dist/src/utils/nodeOperations.d.ts +1 -1
  24. package/dist/src/utils/viewportCulling.d.ts +63 -0
  25. package/dist/src/utils/workerManager.d.ts +57 -0
  26. package/dist/src/views/workflow/components/ElementSelector.d.ts +2 -10
  27. package/dist/src/views/workflow/components/WorkflowToolbar.d.ts +1 -1
  28. package/dist/src/views/workflow/services/canvasElementService.d.ts +4 -4
  29. package/dist/src/views/workflow/types/element.d.ts +16 -0
  30. package/dist/src/workers/dataProcessor.worker.d.ts +21 -0
  31. package/package.json +1 -1
package/README.md CHANGED
@@ -1,18 +1,22 @@
1
1
  # @nywqs/scada-engine
2
2
 
3
+ [![npm version](https://img.shields.io/npm/v/@nywqs/scada-engine.svg)](https://www.npmjs.com/package/@nywqs/scada-engine)
4
+ [![license](https://img.shields.io/npm/l/@nywqs/scada-engine.svg)](https://github.com/leoncheng2030/scada-engine/blob/main/LICENSE)
5
+
3
6
  基于 AntV X6 + Vue 3 的自研 SCADA 组态引擎
4
7
 
5
8
  ## 特性
6
9
 
7
- - 可视化编辑器:拖拽式组态界面设计
8
- - 丰富组件库:内置基础图形、IoT组件、图表等
9
- - 数据绑定:支持设备数据点绑定和实时更新
10
- - 事件系统:灵活的事件配置和交互响应
11
- - TypeScript:完整的类型定义支持
12
- - 响应式:基于 Vue 3 Composition API
13
- - 动画引擎:支持节点和连线动画效果
14
- - 预览模式:支持编辑模式和预览模式切换
15
- - 数据集成:支持多种数据源集成方式
10
+ - ✅ **可视化编辑器**:拖拽式组态界面设计
11
+ - 🎭 **丰富组件库**:内置基础图形、IoT组件、图表等
12
+ - 🔗 **数据绑定**:支持设备数据点绑定和实时更新
13
+ - ⚡ **事件系统**:灵活的事件配置和交互响应
14
+ - 📝 **TypeScript**:完整的类型定义支持
15
+ - 🔄 **响应式**:基于 Vue 3 Composition API
16
+ - 🎨 **动画引擎**:支持节点和连线动画效果
17
+ - 👀 **预览模式**:支持编辑模式和预览模式切换
18
+ - 📡 **数据集成**:支持多种数据源集成方式
19
+ - 📱 **自适应**:画布自动适配不同屏幕尺寸
16
20
 
17
21
  ## 安装
18
22
 
@@ -34,6 +38,12 @@ npm install vue@^3.4.0 vue-router@^4.6.0 @antv/x6@^2.18.0 echarts@^5.5.0 pinia@^
34
38
 
35
39
  ## 快速开始
36
40
 
41
+ ### 安装
42
+
43
+ ```bash
44
+ npm install @nywqs/scada-engine@latest
45
+ ```
46
+
37
47
  ### 全局注册
38
48
 
39
49
  ```typescript
@@ -616,10 +626,15 @@ npm publish
616
626
 
617
627
  ## 版本历史
618
628
 
619
- ### 1.1.21 (2026-01-06)
620
- - 设备数据集成:支持通过deviceData属性和updateDeviceData方法集成外部设备数据
621
- - 修复预览按钮事件触发问题
622
- - 优化路由跳转逻辑
629
+ 完整的版本更新记录请查看 [CHANGELOG.md](./CHANGELOG.md)
630
+
631
+ ### 1.1.27 (2025-01-16)
632
+ - 修复 `ScadaCanvas.vue` 中 `calculateContainerSize` 函数的 TypeScript 类型声明
633
+ - 为函数添加明确的返回类型注解,消除 TS6133 警告
634
+
635
+ ### 1.1.26 (2025-01-16)
636
+ - 创建版本更新历史记录文档 CHANGELOG.md
637
+ - 建立版本发布规范和记录模板
623
638
 
624
639
  ### 1.1.20 (2026-01-06)
625
640
  - 画布自适应缩放:支持不同分辨率设备自动适配显示
@@ -0,0 +1 @@
1
+ (function(){"use strict";self.onmessage=r=>{const{id:e,type:t,payload:s}=r.data;try{let n;switch(t){case"PARSE_DEVICE_DATA":n=i(s);break;case"TRANSFORM_BINDING_DATA":n=f(s);break;case"BATCH_CALCULATE":n=y(s);break;default:throw new Error(`未知的消息类型: ${t}`)}const a={id:e,type:t,result:n};self.postMessage(a)}catch(n){const a={id:e,type:"ERROR",error:n.message};self.postMessage(a)}};function i(r){return Array.isArray(r.devices)?r.devices.map(e=>({id:e.id||e.deviceId,name:e.name||e.deviceName,points:o(e.points||e.data||[])})):Array.isArray(r)?[{id:"default",name:"Default Device",points:r.map(e=>({id:e.id,value:e.value,quality:e.quality||"good",timestamp:e.timestamp||new Date().toISOString()}))}]:r}function o(r){return r.map(e=>typeof e=="object"&&e.id!==void 0?{id:e.id,value:e.value,dataType:c(e.value),quality:e.quality||"good",timestamp:e.timestamp||new Date().toISOString()}:e)}function c(r){return typeof r=="number"?"number":typeof r=="boolean"?"boolean":typeof r=="string"?"string":"unknown"}function f(r){const{bindings:e,deviceData:t}=r,s=[];return e.forEach(n=>{const a=l(t,n.devicePointId);if(a!==void 0){const u=m(a,n.mapping);s.push({nodeId:n.nodeId,targetProperty:n.targetProperty,value:u})}}),s}function l(r,e){if(Array.isArray(r)){const t=r.find(s=>s.id===e);return t==null?void 0:t.value}if(r[e]!==void 0)return r[e];if(r.devices&&Array.isArray(r.devices)){for(const t of r.devices)if(t.points&&Array.isArray(t.points)){const s=t.points.find(n=>n.id===e);if(s)return s.value}}}function m(r,e){var t;if(!e||e.type==="DIRECT")return r;switch(e.type){case"BOOLEAN":return r?e.trueValue:e.falseValue;case"RANGE":const s=Number(r);if(e.rangeRules&&Array.isArray(e.rangeRules))for(const a of e.rangeRules){const u=a.min!==void 0?Number(a.min):-1/0,v=a.max!==void 0?Number(a.max):1/0;if(s>=u&&s<=v)return a.value}return r;case"ENUM":const n=String(r);return((t=e.enumMappings)==null?void 0:t[n])??r;default:return r}}function y(r){const{calculations:e}=r;return e.map(t=>{switch(t.type){case"average":return d(t.params.values);case"sum":return p(t.params.values);case"interpolate":return A(t.params.from,t.params.to,t.params.t);default:return null}})}function d(r){return r.length===0?0:r.reduce((e,t)=>e+t,0)/r.length}function p(r){return r.reduce((e,t)=>e+t,0)}function A(r,e,t){return r+(e-r)*Math.max(0,Math.min(1,t))}})();