[F2] DAG 节点面板(左侧拖拽区)
- apps/web-antd/src/components/iot-dag/DagNodePanel.vue
- 3 类分组 collapse + 搜索过滤 + 加载/错误/空态
- apps/web-antd/src/components/iot-dag/NodeTypeCard.vue
- HTML5 dragstart 双 MIME:application/x-iot-dag-node + text/plain
- payload: { type: providerType, category: dagNodeType }
- apps/web-antd/src/components/iot-dag/hooks/useNodeCatalog.ts
- Mock 13 节点类型(5 trigger / 3 condition / 5 action)
- fetcher 可注入、permissionFilter 预留
- TODO(F3/F7): 替换为 @vben/request /iot/rule/provider/metadata
- apps/web-antd/src/components/iot-dag/__tests__/useNodeCatalog.spec.ts 17 用例
- apps/web-antd/src/components/iot-dag/index.ts barrel 增加 DagNodePanel/NodeTypeCard
- i18n: iot.dag.panel.* + iot.dag.node.<type>.{name,desc} zh-CN/en-US 同步
- Known Pitfalls 落地: ⚠️ Firefox dataTransfer 双 MIME / 权限过滤预留 / icon Lucide 名
note: Acceptance #3 drop 由 F3/F7 DagCanvasContainer 实现,F2 只负责发送方。
图标通过 data-icon attribute 传递,F3/F7 集成时接入 lucide-vue-next 渲染。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -53,6 +53,72 @@
|
||||
"canvas": {
|
||||
"readonly": "Read-only mode",
|
||||
"empty": "Drag nodes to canvas to start"
|
||||
},
|
||||
"panel": {
|
||||
"title": "Node Types",
|
||||
"searchPlaceholder": "Search nodes...",
|
||||
"loading": "Loading...",
|
||||
"loadError": "Load failed, please refresh",
|
||||
"noMatch": "No matching nodes found",
|
||||
"category": {
|
||||
"trigger": "Trigger",
|
||||
"condition": "Condition",
|
||||
"action": "Action"
|
||||
}
|
||||
},
|
||||
"node": {
|
||||
"device_state": {
|
||||
"name": "Device State",
|
||||
"desc": "Triggered when device goes online/offline"
|
||||
},
|
||||
"device_property": {
|
||||
"name": "Device Property Report",
|
||||
"desc": "Triggered when device reports property data"
|
||||
},
|
||||
"device_event": {
|
||||
"name": "Device Event",
|
||||
"desc": "Triggered when device reports an event"
|
||||
},
|
||||
"device_service": {
|
||||
"name": "Device Service Call",
|
||||
"desc": "Triggered when device service is invoked"
|
||||
},
|
||||
"timer": {
|
||||
"name": "Timer",
|
||||
"desc": "Triggered by Cron expression on schedule"
|
||||
},
|
||||
"expression": {
|
||||
"name": "Expression",
|
||||
"desc": "Aviator expression evaluation condition"
|
||||
},
|
||||
"time_range": {
|
||||
"name": "Time Range",
|
||||
"desc": "Check if current time is within a specified range"
|
||||
},
|
||||
"condition_device_state": {
|
||||
"name": "Device State Check",
|
||||
"desc": "Check current device online status"
|
||||
},
|
||||
"property_set": {
|
||||
"name": "Set Property",
|
||||
"desc": "Send property set command to device"
|
||||
},
|
||||
"service_invoke": {
|
||||
"name": "Invoke Service",
|
||||
"desc": "Invoke device service"
|
||||
},
|
||||
"alarm_trigger": {
|
||||
"name": "Trigger Alarm",
|
||||
"desc": "Trigger a device alarm"
|
||||
},
|
||||
"alarm_clear": {
|
||||
"name": "Clear Alarm",
|
||||
"desc": "Clear a device alarm"
|
||||
},
|
||||
"notify": {
|
||||
"name": "Send Notification",
|
||||
"desc": "Send notification (SMS/Email/Webhook)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,72 @@
|
||||
"canvas": {
|
||||
"readonly": "只读模式",
|
||||
"empty": "拖拽节点到画布开始编排"
|
||||
},
|
||||
"panel": {
|
||||
"title": "节点类型",
|
||||
"searchPlaceholder": "搜索节点...",
|
||||
"loading": "加载中...",
|
||||
"loadError": "加载失败,请刷新重试",
|
||||
"noMatch": "未找到匹配节点",
|
||||
"category": {
|
||||
"trigger": "触发器",
|
||||
"condition": "条件",
|
||||
"action": "动作"
|
||||
}
|
||||
},
|
||||
"node": {
|
||||
"device_state": {
|
||||
"name": "设备状态",
|
||||
"desc": "设备上线/下线时触发"
|
||||
},
|
||||
"device_property": {
|
||||
"name": "设备属性上报",
|
||||
"desc": "设备属性数据上报时触发"
|
||||
},
|
||||
"device_event": {
|
||||
"name": "设备事件",
|
||||
"desc": "设备上报事件时触发"
|
||||
},
|
||||
"device_service": {
|
||||
"name": "设备服务调用",
|
||||
"desc": "设备服务被调用时触发"
|
||||
},
|
||||
"timer": {
|
||||
"name": "定时触发",
|
||||
"desc": "按 Cron 表达式定时触发"
|
||||
},
|
||||
"expression": {
|
||||
"name": "表达式判断",
|
||||
"desc": "Aviator 表达式计算条件"
|
||||
},
|
||||
"time_range": {
|
||||
"name": "时间段判断",
|
||||
"desc": "判断当前时间是否在指定范围"
|
||||
},
|
||||
"condition_device_state": {
|
||||
"name": "设备状态判断",
|
||||
"desc": "判断设备当前在线状态"
|
||||
},
|
||||
"property_set": {
|
||||
"name": "下发属性",
|
||||
"desc": "向设备下发属性设置指令"
|
||||
},
|
||||
"service_invoke": {
|
||||
"name": "调用服务",
|
||||
"desc": "调用设备服务"
|
||||
},
|
||||
"alarm_trigger": {
|
||||
"name": "触发告警",
|
||||
"desc": "触发设备告警"
|
||||
},
|
||||
"alarm_clear": {
|
||||
"name": "清除告警",
|
||||
"desc": "清除设备告警"
|
||||
},
|
||||
"notify": {
|
||||
"name": "发送通知",
|
||||
"desc": "发送消息通知(短信/邮件/webhook)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user