agentworkshop 0.8.5 → 0.8.6

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 (349) hide show
  1. package/.AgentWorkShop/prompts/host-tools.en.json +3 -3
  2. package/.AgentWorkShop/prompts/host-tools.json +14 -4
  3. package/.output/.AgentWorkShop/prompts/host-tools.en.json +3 -3
  4. package/.output/.AgentWorkShop/prompts/host-tools.json +14 -4
  5. package/.output/nitro.json +1 -1
  6. package/.output/public/_nuxt/{U_n8pryv2.js → 7op-BMk82.js} +1 -1
  7. package/.output/public/_nuxt/{zWZ26UWi.js → B1SIgyrl.js} +1 -1
  8. package/.output/public/_nuxt/{C4tXwpSt.js → BA2lmfW4.js} +1 -1
  9. package/.output/public/_nuxt/{EJkmXP432.js → BDXQqSkl2.js} +1 -1
  10. package/.output/public/_nuxt/{CY_7u1ST2.js → BI9jj13f2.js} +1 -1
  11. package/.output/public/_nuxt/{CGf9neEK2.js → BiXqyYNw2.js} +1 -1
  12. package/.output/public/_nuxt/{D9GoOkyP2.js → BlOm8JIs2.js} +1 -1
  13. package/.output/public/_nuxt/{CQ31GiJU2.js → BoXKUOiN2.js} +1 -1
  14. package/.output/public/_nuxt/{DZzbCFY2.js → BuLoPmcf.js} +1 -1
  15. package/.output/public/_nuxt/{D9ppMCbw.js → BwOK42JQ.js} +1 -1
  16. package/.output/public/_nuxt/{CZJ5cw6r2.js → C1RMfPoB2.js} +1 -1
  17. package/.output/public/_nuxt/{CGviZq4E.js → COfo_Bg3.js} +1 -1
  18. package/.output/public/_nuxt/CTGJHZ8X2.js +1 -0
  19. package/.output/public/_nuxt/{SgsmmrsZ.js → CY2NkFvI.js} +1 -1
  20. package/.output/public/_nuxt/{B4GOTVfN.js → C_4mzQ5X.js} +1 -1
  21. package/.output/public/_nuxt/{DGmFHb7m.js → CdvMP3lv.js} +1 -1
  22. package/.output/public/_nuxt/{iqxZGXsY.js → CooauJ7D.js} +1 -1
  23. package/.output/public/_nuxt/{C3vxePED.js → D1eVi1zr.js} +1 -1
  24. package/.output/public/_nuxt/{DnuJ66Jy.js → D6PUmBb0.js} +1 -1
  25. package/.output/public/_nuxt/{BBhroEeN.js → DC8sMA36.js} +1 -1
  26. package/.output/public/_nuxt/{DOUuGOQR2.js → DDHh85c42.js} +1 -1
  27. package/.output/public/_nuxt/{Cy_HDgSl.js → DDXOfmo2.js} +2 -2
  28. package/.output/public/_nuxt/{Cr2xJ_CY.js → DMFwLxfu.js} +1 -1
  29. package/.output/public/_nuxt/{BZg_MIK42.js → DoprKJ5a2.js} +1 -1
  30. package/.output/public/_nuxt/{BzBBEE-o2.js → Dr1FVeQG2.js} +1 -1
  31. package/.output/public/_nuxt/{W0sNnJQh.js → DtnsTW7e.js} +1 -1
  32. package/.output/public/_nuxt/{gUYi1hLJ2.js → DxDqd6T42.js} +1 -1
  33. package/.output/public/_nuxt/{B0UUODeh.js → DzU3zEKX.js} +1 -1
  34. package/.output/public/_nuxt/{BkO5WdX5.js → EgO70wrE.js} +1 -1
  35. package/.output/public/_nuxt/{7OZQiw002.js → HJKu4eEV2.js} +1 -1
  36. package/.output/public/_nuxt/{ChF6qLpY2.js → K5Xen0wZ2.js} +1 -1
  37. package/.output/public/_nuxt/{CNrRZmSx2.js → Rb4o4o-82.js} +1 -1
  38. package/.output/public/_nuxt/{BqBTlfiz.js → Tf6SJSDj.js} +1 -1
  39. package/.output/public/_nuxt/{DJaGVY4v2.js → ZzOyoXex2.js} +1 -1
  40. package/.output/public/_nuxt/{PbzVdCTA2.js → azOGy_tU2.js} +1 -1
  41. package/.output/public/_nuxt/{D1thFC3z.js → be-4wyTo.js} +1 -1
  42. package/.output/public/_nuxt/builds/latest.json +1 -1
  43. package/.output/public/_nuxt/builds/meta/593b65bd-cf1d-4b7f-a993-57e939c38f36.json +1 -0
  44. package/.output/public/_nuxt/{8b9CKi6F.js → dcjPjLPI.js} +1 -1
  45. package/.output/public/_nuxt/{ae2-5ZPt.js → h-Fn7pRD.js} +1 -1
  46. package/.output/public/_nuxt/{-gy9k_TE2.js → hyLdZsOd2.js} +1 -1
  47. package/.output/public/_nuxt/{BHxG41IQ2.js → o8sYG6xx2.js} +1 -1
  48. package/.output/server/chunks/_/access.mjs +1 -1
  49. package/.output/server/chunks/_/agent-dto.mjs +26 -0
  50. package/.output/server/chunks/_/agent-dto.mjs.map +1 -0
  51. package/.output/server/chunks/_/data-export.mjs +6 -6
  52. package/.output/server/chunks/_/data-query.mjs +3 -3
  53. package/.output/server/chunks/_/eda-run.repo.mjs +2 -2
  54. package/.output/server/chunks/_/features.mjs +5 -5
  55. package/.output/server/chunks/_/golden.mjs +3 -3
  56. package/.output/server/chunks/_/harness-spawn-policy.mjs +77 -0
  57. package/.output/server/chunks/_/harness-spawn-policy.mjs.map +1 -0
  58. package/.output/server/chunks/_/index.mjs +1 -1
  59. package/.output/server/chunks/_/line-scope.mjs +32 -0
  60. package/.output/server/chunks/_/line-scope.mjs.map +1 -0
  61. package/.output/server/chunks/_/mes-console.mjs +1 -1
  62. package/.output/server/chunks/_/nitro.mjs +2429 -1726
  63. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  64. package/.output/server/chunks/_/ocap.mjs +1 -1
  65. package/.output/server/chunks/_/rest-auth.mjs +1 -1
  66. package/.output/server/chunks/_/spc.mjs +1 -1
  67. package/.output/server/chunks/build/TownView-BWMDbosY.mjs +1 -1
  68. package/.output/server/chunks/build/daq-CdxcfY_G.mjs +1 -1
  69. package/.output/server/chunks/build/dcw-BlDQtS4q.mjs +1 -1
  70. package/.output/server/chunks/build/types-D6J7slEa.mjs +1 -1
  71. package/.output/server/chunks/build/useDaqAddNode-D_Rkju0f.mjs +1 -1
  72. package/.output/server/chunks/build/useDaqDetailNode-DeOsDxK5.mjs +1 -1
  73. package/.output/server/chunks/build/useDaqDetailParams-Cm9a9r5G.mjs +1 -1
  74. package/.output/server/chunks/build/useDaqFilters-CctmO03p.mjs +1 -1
  75. package/.output/server/chunks/build/useDaqStream-B9ZBVQrI.mjs +1 -1
  76. package/.output/server/chunks/build/useDaqTemplates-CK37sMfi.mjs +1 -1
  77. package/.output/server/chunks/build/useDcwAddNode-DACVcEHs.mjs +1 -1
  78. package/.output/server/chunks/build/useDcwStream-Dir5ufAU.mjs +1 -1
  79. package/.output/server/chunks/routes/api/mcp/workshop.mjs +1 -1
  80. package/.output/server/chunks/routes/api/system/backup/run.post.mjs +2 -2
  81. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs +17 -9
  82. package/.output/server/chunks/routes/api/workshop/agent-tools/index.post.mjs.map +1 -1
  83. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs +3 -0
  84. package/.output/server/chunks/routes/api/workshop/agents/_id_.patch.mjs.map +1 -1
  85. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  86. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs +6 -0
  87. package/.output/server/chunks/routes/api/workshop/channel-templates/_id_.patch.mjs.map +1 -1
  88. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs +5 -0
  89. package/.output/server/chunks/routes/api/workshop/channels/_id/agents/_agentId_.patch.mjs.map +1 -1
  90. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs +5 -2
  91. package/.output/server/chunks/routes/api/workshop/channels/_id/index.get.mjs.map +1 -1
  92. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs +7 -1
  93. package/.output/server/chunks/routes/api/workshop/channels/_id/index.post.mjs.map +1 -1
  94. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs +3 -1
  95. package/.output/server/chunks/routes/api/workshop/channels/index.get.mjs.map +1 -1
  96. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +8 -6
  97. package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
  98. package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs +29 -49
  99. package/.output/server/chunks/routes/api/workshop/daq/_id/ingest.post.mjs.map +1 -1
  100. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
  101. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +6 -1
  102. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs.map +1 -1
  103. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs +4 -2
  104. package/.output/server/chunks/routes/api/workshop/daq/alarms.get.mjs.map +1 -1
  105. package/.output/server/chunks/routes/api/workshop/daq/index2.post.mjs +1 -1
  106. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +14 -5
  107. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs.map +1 -1
  108. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
  109. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
  110. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
  111. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +7 -4
  112. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs.map +1 -1
  113. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  114. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
  115. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +6 -2
  116. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs.map +1 -1
  117. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +6 -2
  118. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs.map +1 -1
  119. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
  120. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
  121. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
  122. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +6 -1
  123. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs.map +1 -1
  124. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
  125. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +7 -4
  126. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs.map +1 -1
  127. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  128. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
  129. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
  130. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +6 -2
  131. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs.map +1 -1
  132. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
  133. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +7 -4
  134. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
  135. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  136. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
  137. package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +1 -1
  138. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +6 -2
  139. package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +1 -1
  140. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
  141. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
  142. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  143. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  144. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  145. package/.output/server/chunks/routes/api/workshop/dcw/mes-artifacts/file.get.mjs +6 -2
  146. package/.output/server/chunks/routes/api/workshop/dcw/mes-artifacts/file.get.mjs.map +1 -1
  147. package/.output/server/chunks/routes/api/workshop/dcw/mes-hook-test.post.mjs +1 -1
  148. package/.output/server/chunks/routes/api/workshop/dcw/mes-test-read.post.mjs +1 -1
  149. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
  150. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
  151. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +6 -2
  152. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs.map +1 -1
  153. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +4 -2
  154. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs.map +1 -1
  155. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +5 -2
  156. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs.map +1 -1
  157. package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +1 -1
  158. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +1 -1
  159. package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +1 -1
  160. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
  161. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
  162. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
  163. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
  164. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs +7 -3
  165. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/versions.get.mjs.map +1 -1
  166. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +8 -1
  167. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs.map +1 -1
  168. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +6 -2
  169. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs.map +1 -1
  170. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  171. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
  172. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  173. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  174. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +7 -4
  175. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs.map +1 -1
  176. package/.output/server/chunks/routes/api/workshop/eda/commonality.get.mjs +1 -1
  177. package/.output/server/chunks/routes/api/workshop/eda/vm/predict.post.mjs +1 -1
  178. package/.output/server/chunks/routes/api/workshop/exp/confirmations/_id/decide.post.mjs +1 -1
  179. package/.output/server/chunks/routes/api/workshop/exp/index.get.mjs +1 -1
  180. package/.output/server/chunks/routes/api/workshop/fs/dirs.get.mjs +1 -1
  181. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  182. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  183. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  184. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  185. package/.output/server/chunks/routes/api/workshop/index.mjs +1 -1
  186. package/.output/server/chunks/routes/api/workshop/index.post.mjs +2 -0
  187. package/.output/server/chunks/routes/api/workshop/index.post.mjs.map +1 -1
  188. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  189. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +8 -3
  190. package/.output/server/chunks/routes/api/workshop/index3.post.mjs.map +1 -1
  191. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
  192. package/.output/server/chunks/routes/api/workshop/index6.get.mjs +1 -1
  193. package/.output/server/chunks/routes/api/workshop/index7.get.mjs +1 -1
  194. package/.output/server/chunks/routes/api/workshop/index7.post.mjs +1 -1
  195. package/.output/server/chunks/routes/api/workshop/mes/datasets.get.mjs +1 -1
  196. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/autofix.mjs +1 -1
  197. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/compile.mjs +1 -1
  198. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/evidence.mjs +1 -1
  199. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/publish.mjs +1 -1
  200. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval-decision.mjs +1 -1
  201. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/approval.mjs +1 -1
  202. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/rules/_ruleId/transition.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/subgraph.mjs +1 -1
  204. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId/validate.mjs +1 -1
  205. package/.output/server/chunks/routes/api/workshop/ontology/drafts/_draftId_.mjs +1 -1
  206. package/.output/server/chunks/routes/api/workshop/ontology/export/_ontologyId_.mjs +1 -1
  207. package/.output/server/chunks/routes/api/workshop/ontology/index.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/ontology/scene.mjs +1 -1
  209. package/.output/server/chunks/routes/api/workshop/ontology/traces/_ontologyId_.mjs +1 -1
  210. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId/compare.mjs +1 -1
  211. package/.output/server/chunks/routes/api/workshop/ontology/versions/_ontologyId_.mjs +1 -1
  212. package/.output/server/chunks/routes/api/workshop/optimization/capabilities.get.mjs +1 -1
  213. package/.output/server/chunks/routes/api/workshop/optimization/index.get.mjs +1 -1
  214. package/.output/server/chunks/routes/api/workshop/optimization/index.mjs +1 -1
  215. package/.output/server/chunks/routes/api/workshop/optimization/index2.mjs +1 -1
  216. package/.output/server/chunks/routes/api/workshop/optimization/profiles/_id/publish.post.mjs +1 -1
  217. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/crosscheck.post.mjs +1 -1
  218. package/.output/server/chunks/routes/api/workshop/optimization/recommendations/_id/dispatch.post.mjs +1 -1
  219. package/.output/server/chunks/routes/api/workshop/optimization/solve.post.mjs +1 -1
  220. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  221. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  222. package/.output/server/chunks/routes/api/workshop/process-model/datasets.post.mjs +1 -1
  223. package/.output/server/chunks/routes/api/workshop/process-model/eligibility.mjs +1 -1
  224. package/.output/server/chunks/routes/api/workshop/process-model/index.mjs +1 -1
  225. package/.output/server/chunks/routes/api/workshop/process-model/specs/_id/publish.post.mjs +1 -1
  226. package/.output/server/chunks/routes/api/workshop/process-model/train.post.mjs +1 -1
  227. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  228. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  229. package/.output/server/chunks/routes/api/workshop/tools/sync.post.mjs +1 -1
  230. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  231. package/.output/server/chunks/routes/renderer.mjs +2 -2
  232. package/.output/server/chunks/virtual/entry.mjs +1 -1
  233. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  234. package/.output/server/package.json +1 -1
  235. package/README-zh.md +4 -2
  236. package/README.md +9 -2
  237. package/config.yml +1 -1
  238. package/docker-compose.yml +4 -2
  239. package/docs/cli.en.md +2 -2
  240. package/docs/cli.md +2 -2
  241. package/docs/plugins.en.md +1 -1
  242. package/docs/plugins.md +1 -1
  243. package/docs/sdk.en.md +1 -1
  244. package/docs/sdk.md +1 -1
  245. package/package.json +1 -1
  246. package/scripts/_audit/_live-mqtt-e2e-20261028.mjs +219 -0
  247. package/scripts/_audit/prompt-injection-probe.mts +76 -0
  248. package/scripts/api-live-e2e.mjs +9 -3
  249. package/scripts/e2e-multiexpert-remediation-real.mjs +453 -0
  250. package/scripts/e2e-node-binding-3mode-real.mjs +697 -0
  251. package/scripts/e2e-node-binding-authz.mjs +332 -0
  252. package/scripts/security-acceptance.mjs +218 -0
  253. package/server/api/workshop/agent-tools/bindings/index.post.ts +33 -17
  254. package/server/api/workshop/agents/[id].patch.ts +3 -0
  255. package/server/api/workshop/agents/index.post.ts +3 -0
  256. package/server/api/workshop/channel-templates/[id].patch.ts +5 -0
  257. package/server/api/workshop/channel-templates/index.post.ts +6 -0
  258. package/server/api/workshop/channels/[id]/agents/[agentId].patch.ts +5 -0
  259. package/server/api/workshop/channels/[id]/agents/index.get.ts +8 -2
  260. package/server/api/workshop/channels/[id]/agents/index.post.ts +7 -0
  261. package/server/api/workshop/channels/[id]/index.get.ts +10 -4
  262. package/server/api/workshop/channels.post.ts +3 -0
  263. package/server/api/workshop/daq/[id]/ingest.post.ts +26 -22
  264. package/server/api/workshop/daq/[id].patch.ts +8 -0
  265. package/server/api/workshop/daq/alarms.get.ts +18 -16
  266. package/server/api/workshop/daq/infra/reconnect.post.ts +21 -5
  267. package/server/api/workshop/daq/test-driver.post.ts +10 -3
  268. package/server/api/workshop/dcw/[id]/param-ledger.get.ts +7 -1
  269. package/server/api/workshop/dcw/[id]/read.post.ts +6 -1
  270. package/server/api/workshop/dcw/[id].patch.ts +49 -40
  271. package/server/api/workshop/dcw/journal/index.get.ts +7 -3
  272. package/server/api/workshop/dcw/mes-artifacts/file.get.ts +7 -1
  273. package/server/api/workshop/dcw/mes-artifacts/index.get.ts +7 -1
  274. package/server/api/workshop/dcw/optimizations/[id]/series.get.ts +6 -1
  275. package/server/api/workshop/dcw/optimizations/[id].get.ts +3 -1
  276. package/server/api/workshop/dcw/optimizations/index.get.ts +6 -3
  277. package/server/api/workshop/dcw/params/[id]/read.post.ts +22 -17
  278. package/server/api/workshop/dcw/recipes/[id]/versions.get.ts +20 -14
  279. package/server/api/workshop/dcw/recipes/[id].delete.ts +33 -25
  280. package/server/api/workshop/dcw/recipes/index.get.ts +17 -12
  281. package/server/api/workshop/dcw/runs/[id]/close.post.ts +21 -15
  282. package/server/api/workshop/dcw/test-driver.post.ts +21 -16
  283. package/server/api/workshop/ws/hub.ts +2 -1
  284. package/server/plugins/01-instance-guard.ts +82 -0
  285. package/server/plugins/daq.ts +40 -8
  286. package/server/plugins/workshop.ts +12 -0
  287. package/server/services/workshop/agents/adapters/line-spawn.ts +24 -1
  288. package/server/services/workshop/agents/agent-dto.ts +54 -0
  289. package/server/services/workshop/agents/harness-spawn-policy.ts +114 -0
  290. package/server/services/workshop/agents/host-tool-bridge/dispatch.ts +22 -0
  291. package/server/services/workshop/agents/host-tool-bridge/index.ts +1 -1
  292. package/server/services/workshop/agents/host-tool-bridge/per-agent.ts +17 -3
  293. package/server/services/workshop/agents/host-tool-bridge/tools/tasks.ts +1 -1
  294. package/server/services/workshop/agents/host-tool-bridge/tools/team-delegation.ts +5 -1
  295. package/server/services/workshop/agents/industrial/dcw-tools.ts +6 -2
  296. package/server/services/workshop/agents/industrial/ops-tools.ts +54 -12
  297. package/server/services/workshop/agents/industrial/recipe-gate.ts +68 -15
  298. package/server/services/workshop/agents/industrial/tool-verify-legacy-specs.ts +2 -2
  299. package/server/services/workshop/agents/industrial/tool-verify.ts +31 -2
  300. package/server/services/workshop/agents/node-bindings.repo.ts +4 -3
  301. package/server/services/workshop/agents/node-delegation.ts +49 -4
  302. package/server/services/workshop/agents/tool-approvals.ts +23 -0
  303. package/server/services/workshop/agents/tool-reference-spec.ts +3 -0
  304. package/server/services/workshop/daq/bus/mqtt.adapter.ts +12 -0
  305. package/server/services/workshop/daq/daq-controller/crud.ts +5 -3
  306. package/server/services/workshop/daq/daq-controller/ingest.ts +23 -0
  307. package/server/services/workshop/daq/daq-controller/push.ts +24 -3
  308. package/server/services/workshop/daq/daq-controller/runtime-control.ts +6 -0
  309. package/server/services/workshop/daq/daq-controller/sweep-alarms.ts +3 -1
  310. package/server/services/workshop/daq/daq-controller/tsdb-twin.ts +21 -1
  311. package/server/services/workshop/daq/daq-node.repo.ts +10 -7
  312. package/server/services/workshop/daq/daq-node.ts +2 -0
  313. package/server/services/workshop/daq/daq-runtime.ts +10 -2
  314. package/server/services/workshop/daq/drivers/modbus-tcp.ts +8 -5
  315. package/server/services/workshop/daq/drivers/registry.ts +5 -4
  316. package/server/services/workshop/daq/infra.ts +13 -0
  317. package/server/services/workshop/daq/ingest-policy.ts +24 -1
  318. package/server/services/workshop/daq/storage/timescale.adapter.ts +42 -3
  319. package/server/services/workshop/db/database/migrations.ts +83 -68
  320. package/server/services/workshop/dcw/dcw-controller/crud.ts +27 -2
  321. package/server/services/workshop/dcw/dcw-controller/lines.ts +14 -3
  322. package/server/services/workshop/dcw/dcw-controller/recipes.ts +63 -5
  323. package/server/services/workshop/dcw/dcw-recipe.repo.ts +10 -1
  324. package/server/services/workshop/dcw/dcw-runtime.ts +37 -14
  325. package/server/services/workshop/dcw/drivers/shared.ts +62 -6
  326. package/server/services/workshop/dcw/recipe-op-anchor.ts +28 -0
  327. package/server/services/workshop/dcw/recipe-rollback-manager/rollback.ts +204 -190
  328. package/server/services/workshop/dcw/recipe-rollback-manager/sweep.ts +97 -77
  329. package/server/services/workshop/line-scope.ts +80 -0
  330. package/server/services/workshop/optimization/dispatch.service.ts +18 -2
  331. package/server/services/workshop/permissions.ts +2 -0
  332. package/server/services/workshop/runtime/agent-runtime/message.ts +17 -0
  333. package/server/services/workshop/runtime/agent-runtime/state.ts +9 -3
  334. package/server/services/workshop/runtime/agent-runtime/types.ts +2 -1
  335. package/server/services/workshop/runtime/channel-runtime.ts +3 -1
  336. package/server/services/workshop/runtime/mailbox.ts +6 -3
  337. package/server/services/workshop/runtime/manager/a2a.ts +4 -2
  338. package/server/services/workshop/runtime/manager/admin-channel.ts +1 -1
  339. package/server/services/workshop/runtime/manager/chat.ts +3 -1
  340. package/server/services/workshop/runtime/manager/host-tools.ts +1 -1
  341. package/server/services/workshop/runtime/manager/runtime-wiring.ts +31 -19
  342. package/server/services/workshop/runtime/manager/state.ts +43 -1
  343. package/server/services/workshop/runtime/permission-scope.ts +21 -0
  344. package/server/services/workshop/runtime/scheduler-loop/tick.ts +16 -4
  345. package/server/services/workshop/scene-events.ts +19 -0
  346. package/shared/daq-protocol.ts +24 -5
  347. package/shared/dcw-protocol/catalog.ts +4 -4
  348. package/.output/public/_nuxt/CCI-fwcS2.js +0 -1
  349. package/.output/public/_nuxt/builds/meta/5cd11284-05bf-4fcd-9a69-56a01c9f56dd.json +0 -1
@@ -1 +1 @@
1
- import{t as e}from"./DK3Fl9T5.js";import{g as t,v as n}from"./CavpkQb0.js";import{d as r}from"./C6lssmvl.js";import{n as i}from"./D1MkndMZ.js";import{t as a}from"./R5Pz7BqB.js";import{t as o}from"./gUYi1hLJ2.js";var s=e({useDcwQuery:()=>c});function c(e){let{t:s}=i(),c=o(),{lineId:l}=e,u=t({productId:``,recipeId:``,paramKey:``,nodeId:``,lastMin:30,bucketMs:15e3}),d=n(null),f=n(!1),p=n(``);async function m(){f.value=!0,p.value=``,d.value=null;try{d.value=await c.queryLine({lineId:l.value,productId:u.productId||void 0,recipeId:u.recipeId||void 0,paramKey:u.paramKey||void 0,nodeId:u.nodeId||void 0,fromMs:Date.now()-u.lastMin*6e4,toMs:Date.now(),bucketMs:u.bucketMs>0?u.bucketMs:void 0,limit:2e3}),d.value.channels.length===0&&(p.value=s(`dcwDetail.kszv5sq136`))}catch(e){p.value=a(e)}finally{f.value=!1}}return{query:u,queryResult:d,queryBusy:f,queryError:p,doQuery:m,daqParamKeys:r(()=>c.templates.map(e=>e.key))}}export{s as n,c as t};
1
+ import{t as e}from"./DK3Fl9T5.js";import{g as t,v as n}from"./CavpkQb0.js";import{d as r}from"./C6lssmvl.js";import{n as i}from"./D1MkndMZ.js";import{t as a}from"./R5Pz7BqB.js";import{t as o}from"./DxDqd6T42.js";var s=e({useDcwQuery:()=>c});function c(e){let{t:s}=i(),c=o(),{lineId:l}=e,u=t({productId:``,recipeId:``,paramKey:``,nodeId:``,lastMin:30,bucketMs:15e3}),d=n(null),f=n(!1),p=n(``);async function m(){f.value=!0,p.value=``,d.value=null;try{d.value=await c.queryLine({lineId:l.value,productId:u.productId||void 0,recipeId:u.recipeId||void 0,paramKey:u.paramKey||void 0,nodeId:u.nodeId||void 0,fromMs:Date.now()-u.lastMin*6e4,toMs:Date.now(),bucketMs:u.bucketMs>0?u.bucketMs:void 0,limit:2e3}),d.value.channels.length===0&&(p.value=s(`dcwDetail.kszv5sq136`))}catch(e){p.value=a(e)}finally{f.value=!1}}return{query:u,queryResult:d,queryBusy:f,queryError:p,doQuery:m,daqParamKeys:r(()=>c.templates.map(e=>e.key))}}export{s as n,c as t};
@@ -1 +1 @@
1
- import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{P as n,R as r,d as i,tt as a}from"./C6lssmvl.js";import{n as o}from"./D1MkndMZ.js";import{t as s}from"./CElzwyXQ.js";import{t as c}from"./CCI-fwcS2.js";var l=e({useDaqDetailHistory:()=>u});function u(e,l){let{t:u}=o(),d=c(),f=t([]),p=t(15e3),m=t(!1),h=i(()=>[{label:u(`daqDetail.bucket1s`),ms:1e3},{label:u(`daqDetail.bucket5s`),ms:5e3},{label:u(`daqDetail.bucket15s`),ms:15e3},{label:u(`daqDetail.bucket30s`),ms:3e4},{label:u(`daqDetail.bucket60s`),ms:6e4}]);async function g(){if(e.value){m.value=!0;try{let t=await d.samplesOf(e.value,{toMs:Date.now(),bucketMs:p.value||void 0,limit:400});f.value=t}finally{m.value=!1,y()}}}let _=t(null),v=`rgba(140,155,175,0.8)`;function y(){let e=_.value;if(!e)return;let t=Math.min(window.devicePixelRatio||1,2),n=e.clientWidth,r=e.clientHeight;(e.width!==n*t||e.height!==r*t)&&(e.width=n*t,e.height=r*t);let i=e.getContext(`2d`);if(!i)return;i.setTransform(t,0,0,t,0,0),i.clearRect(0,0,n,r);for(let e=1;e<4;e++)i.strokeStyle=`rgba(120,135,160,0.18)`,i.beginPath(),i.moveTo(0,r/4*e),i.lineTo(n,r/4*e),i.stroke();let a=f.value;if(a.length<2)return;let o=1/0,s=-1/0;for(let e of a){let t=e.value??e.avg??e.min??0;o=Math.min(o,t),s=Math.max(s,t)}let c=Math.max(s-o,1e-9);i.strokeStyle=v,i.font=`10px monospace`,i.fillStyle=v,i.fillText(s.toFixed(2),4,11),i.fillText(o.toFixed(2),4,r-4),i.strokeStyle=`#35e0a0`,i.lineWidth=1.6,i.beginPath(),a.forEach((e,t)=>{let s=t/(a.length-1)*n,l=r-((e.value??e.avg??0)-o)/c*(r-16)-8;t===0?i.moveTo(s,l):i.lineTo(s,l)}),i.stroke()}let b=t(null),x=null,S=``;function C(){let e=b.value,t=l.value;if(!e||!t||t.hist.length<2)return;let n=`${t.hist.length}:${t.hist[t.hist.length-1]}:${t.hist[0]}`;if(n===S)return;S=n;let r=Math.min(window.devicePixelRatio||1,2),i=e.clientWidth,a=e.clientHeight;(e.width!==i*r||e.height!==a*r)&&(e.width=i*r,e.height=a*r);let o=e.getContext(`2d`);if(!o)return;o.setTransform(r,0,0,r,0,0),o.clearRect(0,0,i,a);let s=Math.max(...t.hist),c=Math.min(...t.hist),u=Math.max(s-c,1e-9);o.strokeStyle=`rgba(65,200,244,0.9)`,o.lineWidth=1.5,o.beginPath(),t.hist.forEach((e,n)=>{let r=n/(t.hist.length-1)*i,s=a-(e-c)/u*(a-6)-3;n===0?o.moveTo(r,s):o.lineTo(r,s)}),o.stroke()}let w=null,T=!1;function E(){T=document.hidden,T||(C(),O.value&&g())}let D=t(0),O=i(()=>{let e=d.controller.minQueryDisplayIntervalMs??500,t=D.value>0?D.value:d.controller.queryDisplayIntervalMs??0;return t>0?Math.max(e,t):0}),k=null;function A(){k&&=(clearInterval(k),null);let e=O.value;e&&(k=s(()=>{document.hidden||m.value||g()},e))}return r(()=>{g(),x=s(()=>{T||C()},800),document.addEventListener(`visibilitychange`,E),typeof ResizeObserver<`u`&&(w=new ResizeObserver(()=>{S=``,C(),y()}),b.value&&w.observe(b.value)),A()}),n(()=>{x&&clearInterval(x),k&&clearInterval(k),document.removeEventListener(`visibilitychange`,E),w?.disconnect(),w=null}),a(p,()=>void g()),a(O,()=>A()),{historyPoints:f,bucketMs:p,histLoading:m,BUCKETS:h,loadHistory:g,chartCanvas:_,liveCanvas:b,refreshOverrideMs:D}}export{l as n,u as t};
1
+ import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{P as n,R as r,d as i,tt as a}from"./C6lssmvl.js";import{n as o}from"./D1MkndMZ.js";import{t as s}from"./CElzwyXQ.js";import{t as c}from"./CTGJHZ8X2.js";var l=e({useDaqDetailHistory:()=>u});function u(e,l){let{t:u}=o(),d=c(),f=t([]),p=t(15e3),m=t(!1),h=i(()=>[{label:u(`daqDetail.bucket1s`),ms:1e3},{label:u(`daqDetail.bucket5s`),ms:5e3},{label:u(`daqDetail.bucket15s`),ms:15e3},{label:u(`daqDetail.bucket30s`),ms:3e4},{label:u(`daqDetail.bucket60s`),ms:6e4}]);async function g(){if(e.value){m.value=!0;try{let t=await d.samplesOf(e.value,{toMs:Date.now(),bucketMs:p.value||void 0,limit:400});f.value=t}finally{m.value=!1,y()}}}let _=t(null),v=`rgba(140,155,175,0.8)`;function y(){let e=_.value;if(!e)return;let t=Math.min(window.devicePixelRatio||1,2),n=e.clientWidth,r=e.clientHeight;(e.width!==n*t||e.height!==r*t)&&(e.width=n*t,e.height=r*t);let i=e.getContext(`2d`);if(!i)return;i.setTransform(t,0,0,t,0,0),i.clearRect(0,0,n,r);for(let e=1;e<4;e++)i.strokeStyle=`rgba(120,135,160,0.18)`,i.beginPath(),i.moveTo(0,r/4*e),i.lineTo(n,r/4*e),i.stroke();let a=f.value;if(a.length<2)return;let o=1/0,s=-1/0;for(let e of a){let t=e.value??e.avg??e.min??0;o=Math.min(o,t),s=Math.max(s,t)}let c=Math.max(s-o,1e-9);i.strokeStyle=v,i.font=`10px monospace`,i.fillStyle=v,i.fillText(s.toFixed(2),4,11),i.fillText(o.toFixed(2),4,r-4),i.strokeStyle=`#35e0a0`,i.lineWidth=1.6,i.beginPath(),a.forEach((e,t)=>{let s=t/(a.length-1)*n,l=r-((e.value??e.avg??0)-o)/c*(r-16)-8;t===0?i.moveTo(s,l):i.lineTo(s,l)}),i.stroke()}let b=t(null),x=null,S=``;function C(){let e=b.value,t=l.value;if(!e||!t||t.hist.length<2)return;let n=`${t.hist.length}:${t.hist[t.hist.length-1]}:${t.hist[0]}`;if(n===S)return;S=n;let r=Math.min(window.devicePixelRatio||1,2),i=e.clientWidth,a=e.clientHeight;(e.width!==i*r||e.height!==a*r)&&(e.width=i*r,e.height=a*r);let o=e.getContext(`2d`);if(!o)return;o.setTransform(r,0,0,r,0,0),o.clearRect(0,0,i,a);let s=Math.max(...t.hist),c=Math.min(...t.hist),u=Math.max(s-c,1e-9);o.strokeStyle=`rgba(65,200,244,0.9)`,o.lineWidth=1.5,o.beginPath(),t.hist.forEach((e,n)=>{let r=n/(t.hist.length-1)*i,s=a-(e-c)/u*(a-6)-3;n===0?o.moveTo(r,s):o.lineTo(r,s)}),o.stroke()}let w=null,T=!1;function E(){T=document.hidden,T||(C(),O.value&&g())}let D=t(0),O=i(()=>{let e=d.controller.minQueryDisplayIntervalMs??500,t=D.value>0?D.value:d.controller.queryDisplayIntervalMs??0;return t>0?Math.max(e,t):0}),k=null;function A(){k&&=(clearInterval(k),null);let e=O.value;e&&(k=s(()=>{document.hidden||m.value||g()},e))}return r(()=>{g(),x=s(()=>{T||C()},800),document.addEventListener(`visibilitychange`,E),typeof ResizeObserver<`u`&&(w=new ResizeObserver(()=>{S=``,C(),y()}),b.value&&w.observe(b.value)),A()}),n(()=>{x&&clearInterval(x),k&&clearInterval(k),document.removeEventListener(`visibilitychange`,E),w?.disconnect(),w=null}),a(p,()=>void g()),a(O,()=>A()),{historyPoints:f,bucketMs:p,histLoading:m,BUCKETS:h,loadHistory:g,chartCanvas:_,liveCanvas:b,refreshOverrideMs:D}}export{l as n,u as t};
@@ -1 +1 @@
1
- import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{d as n}from"./C6lssmvl.js";import{t as r}from"./CPvFGbr8.js";import{t as i}from"./DKOvbitt.js";import{t as a}from"./CCI-fwcS2.js";import{t as o}from"./gUYi1hLJ2.js";import{t as s}from"./Aoz9xMB92.js";var c=e({useDashboardData:()=>l});function l(){let e=i(),c=r(),l=a(),u=o(),d=n(()=>c.isDark?{accent:`#3fe4ab`,cyan:`#41c8f4`,amber:`#f6c453`,violet:`#a795ff`,danger:`#ff8080`}:{accent:`#4a6b57`,cyan:`#6f8296`,amber:`#c9a26a`,violet:`#b3714f`,danger:`#c25a4e`}),f=n(()=>c.isDark),p=s(),m=t([]),h=async()=>{try{let e=await p.listHarnesses();m.value=e?.data?.harnesses??[]}catch{}},g=n(()=>m.value.filter(e=>e.available!==!1).length),_=n(()=>u.lines.filter(e=>u.lineStateOf(e.id).active)),v=n(()=>l.nodes.filter(e=>e.enabled&&e.state!==`offline`).length),y=n(()=>l.nodes.length),b=n(()=>l.nodes.filter(e=>e.state===`alarm`).length),x=n(()=>{let e=u.controller.writesTotal;return e===0?100:Math.round((e-u.controller.writesFailed)/e*1e3)/10}),S=t([]),C=n(()=>l.nodes.filter(e=>e.value!=null&&e.max>e.min).sort((e,t)=>!e.lineId-+!t.lineId||e.id.localeCompare(t.id)).slice(0,4));function w(){let e={};for(let t of C.value)e[t.id]=t.value==null?null:Math.round((t.value-t.min)/(t.max-t.min)*100);S.value.push({t:Date.now(),m:e}),S.value.length>36&&S.value.shift()}let T=n(()=>C.value.length>0&&S.value.some(e=>C.value.some(t=>typeof e.m[t.id]==`number`))),E=n(()=>u.lines.map(e=>{let t=u.lineStateOf(e.id);return{id:e.id,name:e.name,color:e.color,active:t.active,product:t.productName,recipe:t.recipeName,runId:t.runId,tagged:t.taggedSamples,dcwCount:u.nodes.filter(t=>t.lineId===e.id).length,daqCount:l.nodes.filter(t=>t.lineId===e.id).length}})),D=n(()=>[...E.value].sort((e,t)=>Number(t.active)-Number(e.active)||t.tagged-e.tagged||e.name.localeCompare(t.name)));return{site:e,daq:l,dcw:u,pal:d,isDark:f,harnesses:m,harnessOk:g,loadHarnesses:h,linesActive:_,daqOnline:v,daqTotal:y,alarmCount:b,writeRate:x,trendNodes:C,trendBuf:S,trendHasData:T,pushTrend:w,lineCards:E,fleetShown:n(()=>D.value.slice(0,8)),fleetOverflow:n(()=>Math.max(E.value.length-8,0))}}export{c as n,l as t};
1
+ import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{d as n}from"./C6lssmvl.js";import{t as r}from"./CPvFGbr8.js";import{t as i}from"./DKOvbitt.js";import{t as a}from"./CTGJHZ8X2.js";import{t as o}from"./DxDqd6T42.js";import{t as s}from"./Aoz9xMB92.js";var c=e({useDashboardData:()=>l});function l(){let e=i(),c=r(),l=a(),u=o(),d=n(()=>c.isDark?{accent:`#3fe4ab`,cyan:`#41c8f4`,amber:`#f6c453`,violet:`#a795ff`,danger:`#ff8080`}:{accent:`#4a6b57`,cyan:`#6f8296`,amber:`#c9a26a`,violet:`#b3714f`,danger:`#c25a4e`}),f=n(()=>c.isDark),p=s(),m=t([]),h=async()=>{try{let e=await p.listHarnesses();m.value=e?.data?.harnesses??[]}catch{}},g=n(()=>m.value.filter(e=>e.available!==!1).length),_=n(()=>u.lines.filter(e=>u.lineStateOf(e.id).active)),v=n(()=>l.nodes.filter(e=>e.enabled&&e.state!==`offline`).length),y=n(()=>l.nodes.length),b=n(()=>l.nodes.filter(e=>e.state===`alarm`).length),x=n(()=>{let e=u.controller.writesTotal;return e===0?100:Math.round((e-u.controller.writesFailed)/e*1e3)/10}),S=t([]),C=n(()=>l.nodes.filter(e=>e.value!=null&&e.max>e.min).sort((e,t)=>!e.lineId-+!t.lineId||e.id.localeCompare(t.id)).slice(0,4));function w(){let e={};for(let t of C.value)e[t.id]=t.value==null?null:Math.round((t.value-t.min)/(t.max-t.min)*100);S.value.push({t:Date.now(),m:e}),S.value.length>36&&S.value.shift()}let T=n(()=>C.value.length>0&&S.value.some(e=>C.value.some(t=>typeof e.m[t.id]==`number`))),E=n(()=>u.lines.map(e=>{let t=u.lineStateOf(e.id);return{id:e.id,name:e.name,color:e.color,active:t.active,product:t.productName,recipe:t.recipeName,runId:t.runId,tagged:t.taggedSamples,dcwCount:u.nodes.filter(t=>t.lineId===e.id).length,daqCount:l.nodes.filter(t=>t.lineId===e.id).length}})),D=n(()=>[...E.value].sort((e,t)=>Number(t.active)-Number(e.active)||t.tagged-e.tagged||e.name.localeCompare(t.name)));return{site:e,daq:l,dcw:u,pal:d,isDark:f,harnesses:m,harnessOk:g,loadHarnesses:h,linesActive:_,daqOnline:v,daqTotal:y,alarmCount:b,writeRate:x,trendNodes:C,trendBuf:S,trendHasData:T,pushTrend:w,lineCards:E,fleetShown:n(()=>D.value.slice(0,8)),fleetOverflow:n(()=>Math.max(E.value.length-8,0))}}export{c as n,l as t};
@@ -1 +1 @@
1
- import{t as e}from"./DK3Fl9T5.js";import{g as t,v as n}from"./CavpkQb0.js";import{d as r}from"./C6lssmvl.js";import{n as i}from"./D1MkndMZ.js";import{t as a}from"./R5Pz7BqB.js";import{t as o}from"./gUYi1hLJ2.js";import{r as s}from"./Du9v6qGB2.js";var c=e({useDcwDetailTemplates:()=>l});function l(e){let{t:c}=i(),l=o(),u=n(!1),d=n(!1),f=n(``),p=n(``);function m(){u.value=!0,f.value=``,p.value=``}let h=t({name:``,ch:``,code:``,unit:``,min:``,max:``,decimals:1,icon:`gateway`,semantics:``}),g=[{key:`thermo`,label:c(`dcwDetail.k422b8126`)},{key:`pressure`,label:c(`dcwDetail.k3x6ff127`)},{key:`tension`,label:c(`dcwDetail.k3z9xc128`)},{key:`encoder`,label:c(`dcwDetail.kjb3vhs129`)},{key:`camera`,label:c(`dcwDetail.k47atw130`)},{key:`gateway`,label:c(`dcwDetail.k48c07131`)}];async function _(){d.value=!0,f.value=``,p.value=``;try{if(!h.name.trim())throw Error(c(`dcwDetail.k6ugbw2132`));if(h.unit.trim()===``)throw Error(c(`dcwDetail.kx3pg59133`));if(h.min===``||h.max===``)throw Error(c(`dcwDetail.k13awowo134`));let t=await l.createTemplate({name:h.name.trim(),ch:h.ch.trim()||h.name.trim(),code:h.code.trim()||`CUSTOM`,unit:h.unit.trim(),min:Number(h.min),max:Number(h.max),decimals:Number(h.decimals)||0,icon:h.icon,semantics:h.semantics.trim()||void 0});e.addTemplate.value=t.key,p.value=c(`dcwDetail.ky4e1tr185`,{p0:s(c,t)}),h.name=``,h.ch=``,h.code=``,h.unit=``,h.min=``,h.max=``,h.semantics=``}catch(e){f.value=a(e)}finally{d.value=!1}}return{tplOpen:u,tplSaving:d,tplError:f,tplOk:p,tplForm:h,tplIcons:g,builtinCount:r(()=>l.templates.filter(e=>e.builtin).length),customCount:r(()=>l.templates.filter(e=>!e.builtin).length),openTplModal:m,doCreateTemplate:_}}export{c as n,l as t};
1
+ import{t as e}from"./DK3Fl9T5.js";import{g as t,v as n}from"./CavpkQb0.js";import{d as r}from"./C6lssmvl.js";import{n as i}from"./D1MkndMZ.js";import{t as a}from"./R5Pz7BqB.js";import{t as o}from"./DxDqd6T42.js";import{r as s}from"./Du9v6qGB2.js";var c=e({useDcwDetailTemplates:()=>l});function l(e){let{t:c}=i(),l=o(),u=n(!1),d=n(!1),f=n(``),p=n(``);function m(){u.value=!0,f.value=``,p.value=``}let h=t({name:``,ch:``,code:``,unit:``,min:``,max:``,decimals:1,icon:`gateway`,semantics:``}),g=[{key:`thermo`,label:c(`dcwDetail.k422b8126`)},{key:`pressure`,label:c(`dcwDetail.k3x6ff127`)},{key:`tension`,label:c(`dcwDetail.k3z9xc128`)},{key:`encoder`,label:c(`dcwDetail.kjb3vhs129`)},{key:`camera`,label:c(`dcwDetail.k47atw130`)},{key:`gateway`,label:c(`dcwDetail.k48c07131`)}];async function _(){d.value=!0,f.value=``,p.value=``;try{if(!h.name.trim())throw Error(c(`dcwDetail.k6ugbw2132`));if(h.unit.trim()===``)throw Error(c(`dcwDetail.kx3pg59133`));if(h.min===``||h.max===``)throw Error(c(`dcwDetail.k13awowo134`));let t=await l.createTemplate({name:h.name.trim(),ch:h.ch.trim()||h.name.trim(),code:h.code.trim()||`CUSTOM`,unit:h.unit.trim(),min:Number(h.min),max:Number(h.max),decimals:Number(h.decimals)||0,icon:h.icon,semantics:h.semantics.trim()||void 0});e.addTemplate.value=t.key,p.value=c(`dcwDetail.ky4e1tr185`,{p0:s(c,t)}),h.name=``,h.ch=``,h.code=``,h.unit=``,h.min=``,h.max=``,h.semantics=``}catch(e){f.value=a(e)}finally{d.value=!1}}return{tplOpen:u,tplSaving:d,tplError:f,tplOk:p,tplForm:h,tplIcons:g,builtinCount:r(()=>l.templates.filter(e=>e.builtin).length),customCount:r(()=>l.templates.filter(e=>!e.builtin).length),openTplModal:m,doCreateTemplate:_}}export{c as n,l as t};
@@ -1,4 +1,4 @@
1
- import{g as e}from"./CavpkQb0.js";import{t}from"./36oeS8_R.js";import{t as n}from"./R5Pz7BqB.js";import{n as r}from"./B6C4WofF.js";var i=[{key:`temp-sp`,name:`温度设定器`,code:`TEMP · SP`,ch:`烘箱温度设定`,unit:`℃`,min:150,max:200,decimals:1,icon:`thermo`,semantics:`烘箱/熔体温度设定:升高使热塑温度上升(成膜更均匀但能耗高、过热降解风险),降低则偏冷易厚度不均。调整后需等待热惯性(数十秒级)再评估效果。`},{key:`speed-sp`,name:`速度设定器`,code:`LINE · SP`,ch:`产线速度设定`,unit:`m/min`,min:280,max:360,decimals:0,icon:`encoder`,semantics:`产线速度设定:升速提高产能但缩短物料受热时间(温度补偿需联动),降速利于精细工艺。速度变化会同步影响张力与厚度分布。`},{key:`tension-sp`,name:`张力设定器`,code:`TENSION · SP`,ch:`膜张力设定`,unit:`kN`,min:18,max:26,decimals:1,icon:`tension`,semantics:`膜张力设定:张力过大易断膜/拉伸变形,过小则跑偏起皱。调整需平缓,并与速度联动观察。`},{key:`pressure-sp`,name:`压力设定器`,code:`PRESSURE · SP`,ch:`熔体压力设定`,unit:`MPa`,min:.6,max:1.2,decimals:2,icon:`pressure`,semantics:`熔体压力设定:反映挤出/泵送负荷,压力偏高提示阻力大或温度偏低,偏低可能是料位不足。调整需小幅步进。`}],a=[{kind:`mock`,label:`Mock 模拟 PLC`,status:`builtin`,configFields:[]},{kind:`modbus-tcp`,label:`Modbus TCP(PLC/网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`设备地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.10`,hint:`PLC 或 Modbus 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`Modbus TCP 标准端口 502`},{key:`unitId`,label:`单元号(unitId)`,type:`number`,default:1,hint:`从站地址,常见 1`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`,hint:`如 int16 用 0~2000 表示 0.1 分辨率`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`opcua`,label:`OPC UA(PLC/MES 写节点值)`,status:`real`,configFields:[{key:`endpoint`,label:`端点(endpoint)`,type:`string`,required:!0,placeholder:`opc.tcp://192.168.1.10:4840`,hint:`OPC UA 服务器地址`},{key:`nodeId`,label:`节点 ID(NodeId)`,type:`string`,required:!0,placeholder:`ns=2;s=Channel1.Device1.SetTemp`,hint:`要写入的变量节点`},{key:`securityMode`,label:`安全策略`,type:`select`,default:`None`,options:[{value:`None`,label:`None(无加密,内网常用)`},{value:`Sign`,label:`Sign(签名)`},{value:`SignAndEncrypt`,label:`SignAndEncrypt(签名+加密)`}]},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`modbus-rtu`,label:`Modbus RTU over TCP(串口网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`网关地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.50`,hint:`串口服务器/RTU 转 TCP 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`网关透传端口(常见 502 / 8899 / 26)`},{key:`unitId`,label:`从站地址(unitId)`,type:`number`,default:1,hint:`RS-485 总线上的从站地址`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(CD AB)`},{value:`wordSwap`,label:`字交换(CD AB / 交换单字)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`mqtt`,label:`MQTT(发布设定值到 Broker)`,status:`real`,configFields:[{key:`host`,label:`Broker 地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.20`,hint:`MQTT Broker 地址(与边缘网关约定同一 Broker)`},{key:`port`,label:`端口`,type:`number`,default:1883,hint:`MQTT TCP 端口 1883`},{key:`topic`,label:`下发主题(topic)`,type:`string`,required:!0,placeholder:`factory/line1/setpoint`,hint:`网关订阅的控制主题(勿与采集主题相同)`},{key:`jsonKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = 纯数字报文;填写 = {"键":值} JSON 报文`},{key:`qos`,label:`QoS`,type:`number`,default:1,hint:`0=至多一次 1=至少一次(推荐)`},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`http`,label:`HTTP/REST(POST 设定值)`,status:`real`,configFields:[{key:`url`,label:`写接口地址(URL)`,type:`string`,required:!0,placeholder:`http://192.168.1.30/api/setpoint`,hint:`接收设定值的 HTTP 接口(POST JSON);仅 http/https,内网地址需同时开启 allowPrivateHost`},{key:`bodyKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = {"value": 设定值};填写 = {"键": 设定值}`},{key:`headersJSON`,label:`请求头(可选)`,type:`string`,placeholder:`{"X-API-Token":"{{SECRET:PLC_KEY}}"}`,hint:`JSON 对象形式的 HTTP 头;值支持 {{SECRET:REF}}(未解析整头省略)`},{key:`timeoutMs`,label:`超时(ms)`,type:`number`,default:6e3,hint:`单次写入超时,钳 1000–60000ms,缺省 6000`},{key:`authType`,label:`认证方式`,type:`select`,default:`none`,options:[{value:`none`,label:`无认证(缺省)`},{value:`bearer`,label:`Bearer(Authorization 头)`},{value:`header`,label:`自定义头(authHeaderName)`}],hint:`与 secretRef 配合;缺省 none 保持旧配置行为`},{key:`authHeaderName`,label:`自定义认证头名(可选)`,type:`string`,placeholder:`X-Api-Token`,hint:`authType=header 时的头名`},{key:`secretRef`,label:`凭据引用(secretRef)`,type:`string`,placeholder:`plc-line1`,hint:`凭据引用名;token 从 env AW_SECRET_<REF大写> 或管理端运行时凭据仓读取,不落明文`},{key:`allowPrivateHost`,label:`内网地址白名单`,type:`select`,default:`false`,options:[{value:`false`,label:`拒绝(默认,SSRF 防护)`},{value:`true`,label:`允许(内网 PLC/网关显式开启)`}],hint:`内网/环回地址显式白名单开关(生产写接口通常在内网)`}]},{kind:`mes-rest`,label:`MES 集成(REST API 映射)`,status:`real`,configFields:[{key:`baseUrl`,label:`MES 服务地址(baseUrl)`,type:`string`,required:!0,placeholder:`https://mes.example.com`,hint:`仅 http/https;内网地址需同时开启 allowPrivateHost`},{key:`authType`,label:`认证方式(authType)`,type:`select`,default:`bearer`,options:[{value:`bearer`,label:`Bearer(Authorization 头)`},{value:`header`,label:`自定义头(authHeaderName)`},{value:`none`,label:`无认证`}],hint:`凭据注入方式`},{key:`secretRef`,label:`凭据引用(secretRef)`,type:`string`,placeholder:`line1-mes`,hint:`凭据引用名;token 从 env AW_MES_<REF大写>_TOKEN、管理端运行时凭据仓(/api/workshop/mes/secrets)或运行时设置 mes.secret.<ref> 读取,不落明文`},{key:`authHeaderName`,label:`自定义认证头名(可选)`,type:`string`,placeholder:`X-Api-Token`,hint:`authType=header 时的自定义头名`},{key:`requestTimeoutMs`,label:`请求超时(ms)`,type:`number`,default:1e4,hint:`单次 MES 请求超时,缺省 10s`},{key:`allowPrivateHost`,label:`内网地址白名单`,type:`select`,default:`false`,options:[{value:`false`,label:`拒绝(默认,SSRF 防护)`},{value:`true`,label:`允许(内网 MES 显式开启)`}],hint:`内网/环回地址显式白名单开关(生产 MES 通常在内网)`},{key:`desc`,label:`节点语义描述(desc)`,type:`string`,placeholder:`烘箱温度设定回写 MES 工单;异常时先查工单状态`,hint:`节点语义描述(给 Agent 看):参数物理含义、异常时先查什么`},{key:`headers`,label:`默认请求头(headers)`,type:`text`,placeholder:`{"X-Unit":"L01","X-API-Token":"{{SECRET:MES_PRIMARY}}"}`,hint:`默认请求头 JSON(随读/写/史所有请求携带;值支持 {{SECRET:REF}} 引用凭据不落明文;映射级 headers 与认证头可覆盖)`},{key:`readMap`,label:`当前值映射(readMap)`,type:`text`,placeholder:`{"path":"/api/v1/params/{name}/current","query":{"name":"TEMP_SP"},"response":{"valuePath":"data.value","tsPath":"data.ts","tsFormat":"epoch_ms"}}`,hint:`当前值映射 JSON:{method,path,query,headers,response:{valuePath,tsPath,tsFormat}}`},{key:`writeMap`,label:`写映射(writeMap)`,type:`text`,placeholder:`{"method":"POST","path":"/api/v1/params/{name}/setpoint","query":{"name":"TEMP_SP"},"bodyTemplate":{"value":"{{value}}"},"successOn":[200,201],"response":{"ackPath":"ack"}}`,hint:`写映射 JSON(可选):{method,path,bodyTemplate,successOn,response:{ackPath}};bodyTemplate 里 {{value}} 为治理后工程值`},{key:`historyMap`,label:`历史映射(historyMap)`,type:`text`,placeholder:`{"path":"/api/v1/params/{name}/history","query":{"name":"TEMP_SP"},"response":{"rowsPath":"data.rows[*]","valuePath":"value","tsPath":"ts","nextCursorPath":"data.nextCursor"},"pageSize":500,"maxPages":40}`,hint:`历史映射 JSON(可选):{method,path,query,response:{rowsPath,valuePath,tsPath,nextCursorPath},pageSize,maxPages};response.format 支持数据格式全谱:scalar(缺省,每时间点一个数值)/vector(检测向量如膜厚断面,配 valuesPath)/image(图像帧如 CCD,配 dataPath+mimePath)/table/event(记录流)`},{key:`writeHook`,label:`写入构造钩子(writeHook)`,type:`text`,placeholder:`function (eng, ctx) {
1
+ import{g as e}from"./CavpkQb0.js";import{t}from"./36oeS8_R.js";import{t as n}from"./R5Pz7BqB.js";import{n as r}from"./B6C4WofF.js";var i=[{key:`temp-sp`,name:`温度设定器`,code:`TEMP · SP`,ch:`烘箱温度设定`,unit:`℃`,min:150,max:200,decimals:1,icon:`thermo`,semantics:`烘箱/熔体温度设定:升高使热塑温度上升(成膜更均匀但能耗高、过热降解风险),降低则偏冷易厚度不均。调整后需等待热惯性(数十秒级)再评估效果。`},{key:`speed-sp`,name:`速度设定器`,code:`LINE · SP`,ch:`产线速度设定`,unit:`m/min`,min:280,max:360,decimals:0,icon:`encoder`,semantics:`产线速度设定:升速提高产能但缩短物料受热时间(温度补偿需联动),降速利于精细工艺。速度变化会同步影响张力与厚度分布。`},{key:`tension-sp`,name:`张力设定器`,code:`TENSION · SP`,ch:`膜张力设定`,unit:`kN`,min:18,max:26,decimals:1,icon:`tension`,semantics:`膜张力设定:张力过大易断膜/拉伸变形,过小则跑偏起皱。调整需平缓,并与速度联动观察。`},{key:`pressure-sp`,name:`压力设定器`,code:`PRESSURE · SP`,ch:`熔体压力设定`,unit:`MPa`,min:.6,max:1.2,decimals:2,icon:`pressure`,semantics:`熔体压力设定:反映挤出/泵送负荷,压力偏高提示阻力大或温度偏低,偏低可能是料位不足。调整需小幅步进。`}],a=[{kind:`mock`,label:`Mock 模拟 PLC`,status:`builtin`,configFields:[]},{kind:`modbus-tcp`,label:`Modbus TCP(PLC/网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`设备地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.10`,hint:`PLC 或 Modbus 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`Modbus TCP 标准端口 502`},{key:`unitId`,label:`单元号(unitId)`,type:`number`,default:1,hint:`从站地址,常见 1`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(DC BA / 全字节反转)`},{value:`wordSwap`,label:`字交换(CD AB / 仅换字序)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`,hint:`如 int16 用 0~2000 表示 0.1 分辨率`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`opcua`,label:`OPC UA(PLC/MES 写节点值)`,status:`real`,configFields:[{key:`endpoint`,label:`端点(endpoint)`,type:`string`,required:!0,placeholder:`opc.tcp://192.168.1.10:4840`,hint:`OPC UA 服务器地址`},{key:`nodeId`,label:`节点 ID(NodeId)`,type:`string`,required:!0,placeholder:`ns=2;s=Channel1.Device1.SetTemp`,hint:`要写入的变量节点`},{key:`securityMode`,label:`安全策略`,type:`select`,default:`None`,options:[{value:`None`,label:`None(无加密,内网常用)`},{value:`Sign`,label:`Sign(签名)`},{value:`SignAndEncrypt`,label:`SignAndEncrypt(签名+加密)`}]},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`modbus-rtu`,label:`Modbus RTU over TCP(串口网关 写保持寄存器)`,status:`real`,configFields:[{key:`host`,label:`网关地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.50`,hint:`串口服务器/RTU 转 TCP 网关 IP`},{key:`port`,label:`端口`,type:`number`,default:502,hint:`网关透传端口(常见 502 / 8899 / 26)`},{key:`unitId`,label:`从站地址(unitId)`,type:`number`,default:1,hint:`RS-485 总线上的从站地址`},{key:`register`,label:`写寄存器地址`,type:`number`,required:!0,placeholder:`40021`,hint:`4xxxx=保持寄存器(写);回读同址校验`},{key:`dataType`,label:`数据类型`,type:`select`,default:`float32`,options:[{value:`int16`,label:`int16(1 寄存器)`},{value:`uint16`,label:`uint16(1 寄存器)`},{value:`int32`,label:`int32(2 寄存器)`},{value:`uint32`,label:`uint32(2 寄存器)`},{value:`float32`,label:`float32(2 寄存器,常用)`}]},{key:`byteOrder`,label:`字节序`,type:`select`,default:`big`,options:[{value:`big`,label:`大端(AB CD)`},{value:`little`,label:`小端(DC BA / 全字节反转)`},{value:`wordSwap`,label:`字交换(CD AB / 仅换字序)`}]},{key:`engMin`,label:`工程量程下限`,type:`number`,hint:`线性换算:eng ∈ [engMin, engMax] ↔ raw ∈ [rawMin, rawMax];float32 且未填原始量程时 raw=eng`},{key:`engMax`,label:`工程量程上限`,type:`number`},{key:`rawMin`,label:`原始值下限`,type:`number`},{key:`rawMax`,label:`原始值上限`,type:`number`}]},{kind:`mqtt`,label:`MQTT(发布设定值到 Broker)`,status:`real`,configFields:[{key:`host`,label:`Broker 地址(host)`,type:`string`,required:!0,placeholder:`192.168.1.20`,hint:`MQTT Broker 地址(与边缘网关约定同一 Broker)`},{key:`port`,label:`端口`,type:`number`,default:1883,hint:`MQTT TCP 端口 1883`},{key:`topic`,label:`下发主题(topic)`,type:`string`,required:!0,placeholder:`factory/line1/setpoint`,hint:`网关订阅的控制主题(勿与采集主题相同)`},{key:`jsonKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = 纯数字报文;填写 = {"键":值} JSON 报文`},{key:`qos`,label:`QoS`,type:`number`,default:1,hint:`0=至多一次 1=至少一次(推荐)`},{key:`username`,label:`用户名(可选)`,type:`string`},{key:`password`,label:`密码(可选)`,type:`string`}]},{kind:`http`,label:`HTTP/REST(POST 设定值)`,status:`real`,configFields:[{key:`url`,label:`写接口地址(URL)`,type:`string`,required:!0,placeholder:`http://192.168.1.30/api/setpoint`,hint:`接收设定值的 HTTP 接口(POST JSON);仅 http/https,内网地址需同时开启 allowPrivateHost`},{key:`bodyKey`,label:`JSON 键(可选)`,type:`string`,placeholder:`setpoint`,hint:`留空 = {"value": 设定值};填写 = {"键": 设定值}`},{key:`headersJSON`,label:`请求头(可选)`,type:`string`,placeholder:`{"X-API-Token":"{{SECRET:PLC_KEY}}"}`,hint:`JSON 对象形式的 HTTP 头;值支持 {{SECRET:REF}}(未解析整头省略)`},{key:`timeoutMs`,label:`超时(ms)`,type:`number`,default:6e3,hint:`单次写入超时,钳 1000–60000ms,缺省 6000`},{key:`authType`,label:`认证方式`,type:`select`,default:`none`,options:[{value:`none`,label:`无认证(缺省)`},{value:`bearer`,label:`Bearer(Authorization 头)`},{value:`header`,label:`自定义头(authHeaderName)`}],hint:`与 secretRef 配合;缺省 none 保持旧配置行为`},{key:`authHeaderName`,label:`自定义认证头名(可选)`,type:`string`,placeholder:`X-Api-Token`,hint:`authType=header 时的头名`},{key:`secretRef`,label:`凭据引用(secretRef)`,type:`string`,placeholder:`plc-line1`,hint:`凭据引用名;token 从 env AW_SECRET_<REF大写> 或管理端运行时凭据仓读取,不落明文`},{key:`allowPrivateHost`,label:`内网地址白名单`,type:`select`,default:`false`,options:[{value:`false`,label:`拒绝(默认,SSRF 防护)`},{value:`true`,label:`允许(内网 PLC/网关显式开启)`}],hint:`内网/环回地址显式白名单开关(生产写接口通常在内网)`}]},{kind:`mes-rest`,label:`MES 集成(REST API 映射)`,status:`real`,configFields:[{key:`baseUrl`,label:`MES 服务地址(baseUrl)`,type:`string`,required:!0,placeholder:`https://mes.example.com`,hint:`仅 http/https;内网地址需同时开启 allowPrivateHost`},{key:`authType`,label:`认证方式(authType)`,type:`select`,default:`bearer`,options:[{value:`bearer`,label:`Bearer(Authorization 头)`},{value:`header`,label:`自定义头(authHeaderName)`},{value:`none`,label:`无认证`}],hint:`凭据注入方式`},{key:`secretRef`,label:`凭据引用(secretRef)`,type:`string`,placeholder:`line1-mes`,hint:`凭据引用名;token 从 env AW_MES_<REF大写>_TOKEN、管理端运行时凭据仓(/api/workshop/mes/secrets)或运行时设置 mes.secret.<ref> 读取,不落明文`},{key:`authHeaderName`,label:`自定义认证头名(可选)`,type:`string`,placeholder:`X-Api-Token`,hint:`authType=header 时的自定义头名`},{key:`requestTimeoutMs`,label:`请求超时(ms)`,type:`number`,default:1e4,hint:`单次 MES 请求超时,缺省 10s`},{key:`allowPrivateHost`,label:`内网地址白名单`,type:`select`,default:`false`,options:[{value:`false`,label:`拒绝(默认,SSRF 防护)`},{value:`true`,label:`允许(内网 MES 显式开启)`}],hint:`内网/环回地址显式白名单开关(生产 MES 通常在内网)`},{key:`desc`,label:`节点语义描述(desc)`,type:`string`,placeholder:`烘箱温度设定回写 MES 工单;异常时先查工单状态`,hint:`节点语义描述(给 Agent 看):参数物理含义、异常时先查什么`},{key:`headers`,label:`默认请求头(headers)`,type:`text`,placeholder:`{"X-Unit":"L01","X-API-Token":"{{SECRET:MES_PRIMARY}}"}`,hint:`默认请求头 JSON(随读/写/史所有请求携带;值支持 {{SECRET:REF}} 引用凭据不落明文;映射级 headers 与认证头可覆盖)`},{key:`readMap`,label:`当前值映射(readMap)`,type:`text`,placeholder:`{"path":"/api/v1/params/{name}/current","query":{"name":"TEMP_SP"},"response":{"valuePath":"data.value","tsPath":"data.ts","tsFormat":"epoch_ms"}}`,hint:`当前值映射 JSON:{method,path,query,headers,response:{valuePath,tsPath,tsFormat}}`},{key:`writeMap`,label:`写映射(writeMap)`,type:`text`,placeholder:`{"method":"POST","path":"/api/v1/params/{name}/setpoint","query":{"name":"TEMP_SP"},"bodyTemplate":{"value":"{{value}}"},"successOn":[200,201],"response":{"ackPath":"ack"}}`,hint:`写映射 JSON(可选):{method,path,bodyTemplate,successOn,response:{ackPath}};bodyTemplate 里 {{value}} 为治理后工程值`},{key:`historyMap`,label:`历史映射(historyMap)`,type:`text`,placeholder:`{"path":"/api/v1/params/{name}/history","query":{"name":"TEMP_SP"},"response":{"rowsPath":"data.rows[*]","valuePath":"value","tsPath":"ts","nextCursorPath":"data.nextCursor"},"pageSize":500,"maxPages":40}`,hint:`历史映射 JSON(可选):{method,path,query,response:{rowsPath,valuePath,tsPath,nextCursorPath},pageSize,maxPages};response.format 支持数据格式全谱:scalar(缺省,每时间点一个数值)/vector(检测向量如膜厚断面,配 valuesPath)/image(图像帧如 CCD,配 dataPath+mimePath)/table/event(记录流)`},{key:`writeHook`,label:`写入构造钩子(writeHook)`,type:`text`,placeholder:`function (eng, ctx) {
2
2
  // eng = recipe 下发的本参数工程值;返回真实写请求(多字段 API 只写本节点负责的一个字段)
3
3
  return { method: 'POST', path: '/api/v1/params/multi/set', body: { tem: eng } }
4
4
  }`,hint:`可选 JS 函数表达式:(eng, ctx) => {method?,path?,query?,headers?,body?};覆盖 writeMap 声明(body 缺省 {{value}} 模板);recipe 下发时每个参数只把本节点的值传给本 API`},{key:`writeCheckHook`,label:`写响应二次校验钩子(writeCheckHook)`,type:`text`,placeholder:`function (param, ctx) {
@@ -1 +1 @@
1
- import{N as e,dt as t,ft as n,mt as r}from"./CavpkQb0.js";import{R as i,S as a,V as o,W as s,b as c,f as l,h as u,i as d,m as f,p,rt as m,y as h}from"./C6lssmvl.js";import{d as g}from"./CDYLasP8.js";import{n as _}from"./Bko5adbu.js";import{t as v}from"./DPPC9Teq.js";import{n as y}from"./D1MkndMZ.js";import{t as b}from"./Bmvt9ydE.js";import{t as x}from"./BDNMzG2s.js";import{t as S}from"./AQuNRC4D.js";import{t as C}from"./CfIbFnJz.js";import{t as w}from"./ilJHF1nA2.js";import{t as ee}from"./BzBBEE-o2.js";import{t as te}from"./CmuGMxDP.js";var T={class:`fleet aw-bench aw-stagger`},E={class:`aw-bench-hd`},D={class:`aw-bench-title`},O={class:`aw-bench-sub`},k={class:`aw-bench-meta`},A={class:`fleet-grid`},j={class:`lc-head`},M={key:0,class:`lc-run mono`},N={class:`lc-meta mono`},P={class:`fa-n mono`},F={class:`fa-label`},I={key:1,class:`fleet-empty`},L=Object.assign(x(a({__name:`DashboardFleetPanel`,props:{lines:{},total:{},overflow:{}},setup(i){let{t:a}=y();return(c,h)=>{let g=v;return o(),u(`section`,T,[l(`header`,E,[l(`h3`,D,r(e(a)(`home.charts.lines`)),1),l(`small`,O,r(e(a)(`home.fleetHint`)),1),l(`span`,k,[l(`span`,null,[l(`b`,null,r(i.total),1)])])]),l(`div`,A,[(o(!0),u(d,null,s(i.lines,i=>(o(),p(g,{key:i.id,class:t([`line-card`,{on:i.active}]),style:n({"--lc":i.color}),to:`/dcw/${i.id}`},{default:m(()=>[l(`div`,j,[h[0]||=l(`span`,{class:`lc-dot`},null,-1),l(`b`,null,r(i.name),1),l(`span`,{class:t([`lc-state`,{on:i.active}])},r(i.active?e(a)(`home.runNow`):e(a)(`home.standBy`)),3)]),i.active?(o(),u(`div`,M,[l(`span`,null,r(i.product)+` · `+r(i.recipe),1),l(`small`,null,r(e(a)(`home.batch`))+` `+r(i.runId?.slice(0,8))+` · `+r(e(a)(`home.tagged`))+` `+r(i.tagged),1)])):f(``,!0),l(`div`,N,[l(`span`,null,r(e(a)(`home.nodesUnit`))+` `+r(i.dcwCount),1),l(`span`,null,r(e(a)(`home.daqUnit`))+` `+r(i.daqCount),1)])]),_:2},1032,[`class`,`style`,`to`]))),128)),i.overflow>0?(o(),p(g,{key:0,class:`line-card fleet-all im`,to:`/dcw`},{default:m(()=>[l(`span`,P,`+`+r(i.overflow),1),l(`span`,F,r(e(a)(`home.fleetAll`)),1),h[1]||=l(`span`,{class:`i-tabler-arrow-right fa-arrow`},null,-1)]),_:1})):f(``,!0),i.total===0?(o(),u(`p`,I,r(e(a)(`home.noLine`)),1)):f(``,!0)])])}}}),[[`__scopeId`,`data-v-03be19d1`]]),{__name:`DashboardFleetPanel`}),R={class:`aw-gauge-band aw-stagger`},z={class:`aw-gauge`},B={class:`aw-gauge-label`},V={class:`aw-gauge-value`},H={class:`aw-readout`},U={class:`aw-gauge`},W={class:`aw-gauge-label`},G={class:`aw-gauge-value`},K={class:`aw-readout`},q={class:`aw-gauge`},J={class:`aw-gauge-label`},Y={class:`aw-gauge-value`},X={class:`aw-readout`},Z={class:`aw-gauge`},Q={class:`aw-gauge-label`},ne={class:`aw-gauge-value`},re={class:`aw-readout`},ie={class:`aw-gauge`},ae={class:`aw-gauge-label`},oe={class:`aw-gauge-value`},se={class:`aw-readout`},ce={class:`aw-gauge-label`},le={class:`aw-gauge-value`},ue={class:`aw-readout`},de=Object.assign(x(a({__name:`DashboardGaugeBand`,props:{linesActive:{},linesTotal:{},dcwOnline:{},dcwTotal:{},daqOnline:{},daqTotal:{},samplesStored:{},writeRate:{},alarmCount:{}},setup(n){let{t:i}=y();return(a,s)=>(o(),u(`div`,R,[l(`div`,z,[l(`span`,B,r(e(i)(`home.kpi.lines`)),1),l(`span`,V,[l(`span`,H,[h(r(n.linesActive),1),l(`small`,null,`/`+r(n.linesTotal),1)])])]),l(`div`,U,[l(`span`,W,r(e(i)(`home.kpi.dcwNodes`)),1),l(`span`,G,[l(`span`,K,[h(r(n.dcwOnline),1),l(`small`,null,`/`+r(n.dcwTotal),1)])])]),l(`div`,q,[l(`span`,J,r(e(i)(`home.kpi.daqNodes`)),1),l(`span`,Y,[l(`span`,X,[h(r(n.daqOnline),1),l(`small`,null,`/`+r(n.daqTotal),1)])])]),l(`div`,Z,[l(`span`,Q,r(e(i)(`home.kpi.samples`)),1),l(`span`,ne,[l(`span`,re,r(n.samplesStored),1)])]),l(`div`,ie,[l(`span`,ae,r(e(i)(`home.kpi.writeRate`)),1),l(`span`,oe,[l(`span`,se,[h(r(n.writeRate),1),s[0]||=l(`small`,null,`%`,-1)])])]),l(`div`,{class:t([`aw-gauge`,{"is-alarm":n.alarmCount>0}])},[l(`span`,ce,r(e(i)(`home.kpi.alarms`)),1),l(`span`,le,[l(`span`,ue,r(n.alarmCount),1)])],2)]))}}),[[`__scopeId`,`data-v-0fab36f7`]]),{__name:`DashboardGaugeBand`}),fe={class:`harness aw-bench aw-stagger`},pe={class:`aw-bench-hd`},me={class:`aw-bench-title`},he={class:`aw-bench-sub`},ge={class:`aw-bench-meta`},_e={class:`harness-row`},ve=[`href`,`title`],ye={class:`h-name`},be={key:0,class:`h-cmd mono`},xe={key:1,class:`h-go`},Se=Object.assign(x(a({__name:`DashboardHarnessPanel`,props:{harnesses:{},okCount:{}},setup(n){let{t:i}=y(),a=e=>e.id===`mock`?i(`agents.hMock`):e.id===`omp`?i(`agents.hOmp`):e.label,c=e=>{if(e.available===!1)return i(`home.harness.missing`);if(e.inprocess)return`in-process`;let t=String(e.command??``);return t?e.label.startsWith(t)?``:t:``};return(p,m)=>(o(),u(`section`,fe,[l(`header`,pe,[l(`h3`,me,r(e(i)(`home.harness.title`)),1),l(`small`,he,r(e(i)(`home.harness.sub`)),1),l(`span`,ge,[l(`span`,null,[l(`b`,null,r(n.okCount),1),h(`/`+r(n.harnesses.length),1)])])]),l(`div`,_e,[(o(!0),u(d,null,s(n.harnesses,e=>(o(),u(`a`,{key:e.id,class:t([`h-item`,{off:e.available===!1,link:e.available===!1&&e.homepage}]),href:e.available===!1&&e.homepage?e.homepage:void 0,target:`_blank`,rel:`noopener`,title:e.available===!1?e.error??``:e.resolvedPath??e.command??``},[m[0]||=l(`span`,{class:`h-dot`},null,-1),l(`span`,ye,r(a(e)),1),c(e)?(o(),u(`span`,be,r(c(e)),1)):f(``,!0),e.available===!1&&e.homepage?(o(),u(`span`,xe,`↗`)):f(``,!0)],10,ve))),128))])]))}}),[[`__scopeId`,`data-v-c6db3d57`]]),{__name:`DashboardHarnessPanel`}),Ce={class:`hero aw-bench aw-bench--marked aw-stagger`},we={class:`hero-main`},Te={class:`aw-bench-kicker`},Ee={class:`hero-title`},De={class:`aw-serif-accent-italic`},Oe={class:`hero-sub`},ke={class:`hero-acts`},Ae={class:`hero-live`},je={class:`live-badge`},Me={class:`live-rows`},Ne={class:`live-row`},Pe={class:`mono`},Fe={class:`live-row`},Ie={class:`mono`},Le={class:`mono`},Re=Object.assign(x(a({__name:`DashboardHero`,props:{mode:{},linesActive:{},linesTotal:{},samplesStored:{},alarmCount:{}},setup(n){let{t:i}=y();return(a,s)=>(o(),u(`section`,Ce,[l(`div`,we,[l(`p`,Te,r(e(i)(`home.kicker`))+` · `+r(n.mode),1),l(`h1`,Ee,[h(r(e(i)(`home.heroTitle`))+` `,1),l(`span`,De,r(e(i)(`home.heroAccent`)),1)]),l(`p`,Oe,r(e(i)(`home.heroSub`)),1),l(`div`,ke,[l(`button`,{class:`aw-pill im`,onClick:s[0]||=t=>(`navigateTo`in a?a.navigateTo:e(g))(`/town`)},[s[2]||=l(`span`,{class:`i-tabler-map-2 im-pop`},null,-1),h(` `+r(e(i)(`home.ctaTown`)),1)]),l(`button`,{class:`aw-pill outline im`,onClick:s[1]||=t=>(`navigateTo`in a?a.navigateTo:e(g))(`/dcw`)},[s[3]||=l(`span`,{class:`i-tabler-route im-pop`},null,-1),h(` `+r(e(i)(`home.ctaLine`)),1)])])]),l(`div`,Ae,[l(`span`,je,[s[4]||=l(`span`,{class:`live-dot`},null,-1),h(r(e(i)(`home.live`)),1)]),l(`dl`,Me,[l(`div`,Ne,[l(`dt`,null,r(e(i)(`home.kpi.lines`)),1),l(`dd`,Pe,[l(`b`,null,r(n.linesActive),1),l(`small`,null,`/`+r(n.linesTotal),1)])]),l(`div`,Fe,[l(`dt`,null,r(e(i)(`home.kpi.samples`)),1),l(`dd`,Ie,[l(`b`,null,r(n.samplesStored),1)])]),l(`div`,{class:t([`live-row`,{"is-alarm":n.alarmCount>0}])},[l(`dt`,null,r(e(i)(`home.kpi.alarms`)),1),l(`dd`,Le,[l(`b`,null,r(n.alarmCount),1)])],2)])]),s[5]||=l(`div`,{class:`hero-scale`,"aria-hidden":`true`},null,-1)]))}}),[[`__scopeId`,`data-v-5acb71f5`]]),{__name:`DashboardHero`}),ze={class:`aw-bench span4`},Be={class:`aw-bench-hd`},Ve={class:`aw-bench-title`},He={class:`aw-bench-meta`},Ue={class:`donut-wrap`},We={class:`donut-center mono`},Ge=Object.assign(x(a({__name:`DashboardLineStatePanel`,props:{option:{type:Object,required:!0},linesActive:{type:Number,required:!0},linesTotal:{type:Number,required:!0}},setup(t){let{t:n}=y();return(i,a)=>{let s=b;return o(),u(`section`,ze,[l(`header`,Be,[l(`h3`,Ve,r(e(n)(`home.charts.lineState`)),1),l(`span`,He,[l(`span`,null,[l(`b`,null,r(t.linesActive),1),h(`/`+r(t.linesTotal)+` `+r(e(n)(`home.kpi.lines`)),1)])])]),l(`div`,Ue,[l(`div`,We,[l(`b`,null,r(t.linesActive),1),l(`small`,null,`/ `+r(t.linesTotal),1)]),c(s,null,{default:m(()=>[c(S,{option:t.option,class:`chart h240`},null,8,[`option`])]),_:1})])])}}}),[[`__scopeId`,`data-v-737eea92`]]),{__name:`DashboardLineStatePanel`}),Ke={class:`aw-bench span4`},qe={class:`aw-bench-hd`},Je={class:`aw-bench-title`},Ye=Object.assign(x(a({__name:`DashboardNodeStatePanel`,props:{option:{type:Object,required:!0}},setup(t){let{t:n}=y();return(i,a)=>{let s=b;return o(),u(`section`,Ke,[l(`header`,qe,[l(`h3`,Je,r(e(n)(`home.charts.nodeState`)),1)]),c(s,null,{default:m(()=>[c(S,{option:t.option,class:`chart h240`},null,8,[`option`])]),_:1})])}}}),[[`__scopeId`,`data-v-8780e560`]]),{__name:`DashboardNodeStatePanel`}),Xe={class:`aw-bench span4`},Ze={class:`aw-bench-hd`},Qe={class:`aw-bench-title`},$e=Object.assign(x(a({__name:`DashboardPipelinePanel`,props:{option:{type:Object,required:!0}},setup(t){let{t:n}=y();return(i,a)=>{let s=b;return o(),u(`section`,Xe,[l(`header`,Ze,[l(`h3`,Qe,r(e(n)(`home.charts.pipeline`)),1)]),c(s,null,{default:m(()=>[c(S,{option:t.option,class:`chart h240`},null,8,[`option`])]),_:1})])}}}),[[`__scopeId`,`data-v-4367fd2c`]]),{__name:`DashboardPipelinePanel`}),et={class:`aw-bench span8`},tt={class:`aw-bench-hd`},$={class:`aw-bench-title`},nt={class:`aw-bench-sub`},rt={class:`aw-bench-meta`},it={key:1,class:`aw-empty chart h280`},at={class:`aw-empty-title`},ot={class:`aw-empty-sub`},st=Object.assign(x(a({__name:`DashboardTrendPanel`,props:{option:{type:Object,required:!0},hasData:{type:Boolean,required:!0}},setup(t){let{t:n}=y();return(i,a)=>{let s=b;return o(),u(`section`,et,[l(`header`,tt,[l(`h3`,$,r(e(n)(`home.charts.trend`)),1),l(`small`,nt,r(e(n)(`home.charts.trendSub`)),1),l(`span`,rt,[l(`span`,null,r(e(n)(`home.trendY`)),1)])]),c(s,null,{default:m(()=>[t.hasData?(o(),p(S,{key:0,option:t.option,class:`chart h280`},null,8,[`option`])):(o(),u(`div`,it,[l(`p`,at,r(e(n)(`home.trendWaiting`)),1),l(`p`,ot,r(e(n)(`home.trendNeedRun`)),1)]))]),_:1})])}}}),[[`__scopeId`,`data-v-fb990e55`]]),{__name:`DashboardTrendPanel`}),ct={class:`aw-bench span4`},lt={class:`aw-bench-hd`},ut={class:`aw-bench-title`},dt={class:`aw-bench-meta`},ft=Object.assign(x(a({__name:`DashboardWritePanel`,props:{option:{type:Object,required:!0},writesTotal:{type:Number,required:!0},writesFailed:{type:Number,required:!0}},setup(t){let{t:n}=y();return(i,a)=>{let s=b;return o(),u(`section`,ct,[l(`header`,lt,[l(`h3`,ut,r(e(n)(`home.charts.writeCtl`)),1),l(`span`,dt,[l(`span`,null,[l(`b`,null,r(t.writesTotal),1),h(` `+r(e(n)(`home.writesFailed`))+` `+r(t.writesFailed),1)])])]),c(s,null,{default:m(()=>[c(S,{option:t.option,class:`chart h240`},null,8,[`option`])]),_:1})])}}}),[[`__scopeId`,`data-v-fe997f1c`]]),{__name:`DashboardWritePanel`}),pt={class:`home`},mt={class:`grid aw-stagger`},ht=x(a({__name:`index`,setup(t){let{t:n}=y();_({title:()=>n(`titles.dashboard`)});let r=ee(),{site:a,daq:s,dcw:d,pushTrend:h,loadHarnesses:g,linesActive:v,daqOnline:x,daqTotal:S,alarmCount:T,writeRate:E,harnesses:D,harnessOk:O,trendHasData:k,lineCards:A,fleetShown:j,fleetOverflow:M}=r,{trendOpt:N,lineStateOpt:P,pipelineOpt:F,writeOpt:I,nodeStateOpt:R}=w(r);return i(()=>{s.ensureWsFeed(),d.ensureWsFeed(),Promise.all([s.load(),d.load()]).then(()=>h()),g(),C(()=>{s.load(),d.load(),g(),h()},5e3,{bgMs:3e4})}),(t,n)=>{let r=te,i=b;return o(),u(`div`,pt,[c(Re,{mode:e(a).mode,"lines-active":e(v).length,"lines-total":e(d).lines.length,"samples-stored":e(s).meta.samplesStored??0,"alarm-count":e(T)},null,8,[`mode`,`lines-active`,`lines-total`,`samples-stored`,`alarm-count`]),c(de,{"lines-active":e(v).length,"lines-total":e(d).lines.length,"dcw-online":e(d).controller.nodesOnline,"dcw-total":e(d).controller.nodesTotal,"daq-online":e(x),"daq-total":e(S),"samples-stored":e(s).meta.samplesStored??0,"write-rate":e(E),"alarm-count":e(T)},null,8,[`lines-active`,`lines-total`,`dcw-online`,`dcw-total`,`daq-online`,`daq-total`,`samples-stored`,`write-rate`,`alarm-count`]),e(D).length>0?(o(),p(Se,{key:0,harnesses:e(D),"ok-count":e(O)},null,8,[`harnesses`,`ok-count`])):f(``,!0),l(`div`,mt,[c(st,{option:e(N),"has-data":e(k)},null,8,[`option`,`has-data`]),c(Ge,{option:e(P),"lines-active":e(v).length,"lines-total":e(d).lines.length},null,8,[`option`,`lines-active`,`lines-total`]),c($e,{option:e(F)},null,8,[`option`]),c(ft,{option:e(I),"writes-total":e(d).controller.writesTotal,"writes-failed":e(d).controller.writesFailed},null,8,[`option`,`writes-total`,`writes-failed`]),c(Ye,{option:e(R)},null,8,[`option`])]),c(L,{lines:e(j),total:e(A).length,overflow:e(M)},null,8,[`lines`,`total`,`overflow`]),c(i,null,{default:m(()=>[c(r,{"slot-name":`dashboard.widgets`})]),_:1})])}}}),[[`__scopeId`,`data-v-685ce916`]]);export{ht as default};
1
+ import{N as e,dt as t,ft as n,mt as r}from"./CavpkQb0.js";import{R as i,S as a,V as o,W as s,b as c,f as l,h as u,i as d,m as f,p,rt as m,y as h}from"./C6lssmvl.js";import{d as g}from"./CDYLasP8.js";import{n as _}from"./Bko5adbu.js";import{t as v}from"./DPPC9Teq.js";import{n as y}from"./D1MkndMZ.js";import{t as b}from"./Bmvt9ydE.js";import{t as x}from"./BDNMzG2s.js";import{t as S}from"./AQuNRC4D.js";import{t as C}from"./CfIbFnJz.js";import{t as w}from"./ilJHF1nA2.js";import{t as ee}from"./Dr1FVeQG2.js";import{t as te}from"./CmuGMxDP.js";var T={class:`fleet aw-bench aw-stagger`},E={class:`aw-bench-hd`},D={class:`aw-bench-title`},O={class:`aw-bench-sub`},k={class:`aw-bench-meta`},A={class:`fleet-grid`},j={class:`lc-head`},M={key:0,class:`lc-run mono`},N={class:`lc-meta mono`},P={class:`fa-n mono`},F={class:`fa-label`},I={key:1,class:`fleet-empty`},L=Object.assign(x(a({__name:`DashboardFleetPanel`,props:{lines:{},total:{},overflow:{}},setup(i){let{t:a}=y();return(c,h)=>{let g=v;return o(),u(`section`,T,[l(`header`,E,[l(`h3`,D,r(e(a)(`home.charts.lines`)),1),l(`small`,O,r(e(a)(`home.fleetHint`)),1),l(`span`,k,[l(`span`,null,[l(`b`,null,r(i.total),1)])])]),l(`div`,A,[(o(!0),u(d,null,s(i.lines,i=>(o(),p(g,{key:i.id,class:t([`line-card`,{on:i.active}]),style:n({"--lc":i.color}),to:`/dcw/${i.id}`},{default:m(()=>[l(`div`,j,[h[0]||=l(`span`,{class:`lc-dot`},null,-1),l(`b`,null,r(i.name),1),l(`span`,{class:t([`lc-state`,{on:i.active}])},r(i.active?e(a)(`home.runNow`):e(a)(`home.standBy`)),3)]),i.active?(o(),u(`div`,M,[l(`span`,null,r(i.product)+` · `+r(i.recipe),1),l(`small`,null,r(e(a)(`home.batch`))+` `+r(i.runId?.slice(0,8))+` · `+r(e(a)(`home.tagged`))+` `+r(i.tagged),1)])):f(``,!0),l(`div`,N,[l(`span`,null,r(e(a)(`home.nodesUnit`))+` `+r(i.dcwCount),1),l(`span`,null,r(e(a)(`home.daqUnit`))+` `+r(i.daqCount),1)])]),_:2},1032,[`class`,`style`,`to`]))),128)),i.overflow>0?(o(),p(g,{key:0,class:`line-card fleet-all im`,to:`/dcw`},{default:m(()=>[l(`span`,P,`+`+r(i.overflow),1),l(`span`,F,r(e(a)(`home.fleetAll`)),1),h[1]||=l(`span`,{class:`i-tabler-arrow-right fa-arrow`},null,-1)]),_:1})):f(``,!0),i.total===0?(o(),u(`p`,I,r(e(a)(`home.noLine`)),1)):f(``,!0)])])}}}),[[`__scopeId`,`data-v-03be19d1`]]),{__name:`DashboardFleetPanel`}),R={class:`aw-gauge-band aw-stagger`},z={class:`aw-gauge`},B={class:`aw-gauge-label`},V={class:`aw-gauge-value`},H={class:`aw-readout`},U={class:`aw-gauge`},W={class:`aw-gauge-label`},G={class:`aw-gauge-value`},K={class:`aw-readout`},q={class:`aw-gauge`},J={class:`aw-gauge-label`},Y={class:`aw-gauge-value`},X={class:`aw-readout`},Z={class:`aw-gauge`},Q={class:`aw-gauge-label`},ne={class:`aw-gauge-value`},re={class:`aw-readout`},ie={class:`aw-gauge`},ae={class:`aw-gauge-label`},oe={class:`aw-gauge-value`},se={class:`aw-readout`},ce={class:`aw-gauge-label`},le={class:`aw-gauge-value`},ue={class:`aw-readout`},de=Object.assign(x(a({__name:`DashboardGaugeBand`,props:{linesActive:{},linesTotal:{},dcwOnline:{},dcwTotal:{},daqOnline:{},daqTotal:{},samplesStored:{},writeRate:{},alarmCount:{}},setup(n){let{t:i}=y();return(a,s)=>(o(),u(`div`,R,[l(`div`,z,[l(`span`,B,r(e(i)(`home.kpi.lines`)),1),l(`span`,V,[l(`span`,H,[h(r(n.linesActive),1),l(`small`,null,`/`+r(n.linesTotal),1)])])]),l(`div`,U,[l(`span`,W,r(e(i)(`home.kpi.dcwNodes`)),1),l(`span`,G,[l(`span`,K,[h(r(n.dcwOnline),1),l(`small`,null,`/`+r(n.dcwTotal),1)])])]),l(`div`,q,[l(`span`,J,r(e(i)(`home.kpi.daqNodes`)),1),l(`span`,Y,[l(`span`,X,[h(r(n.daqOnline),1),l(`small`,null,`/`+r(n.daqTotal),1)])])]),l(`div`,Z,[l(`span`,Q,r(e(i)(`home.kpi.samples`)),1),l(`span`,ne,[l(`span`,re,r(n.samplesStored),1)])]),l(`div`,ie,[l(`span`,ae,r(e(i)(`home.kpi.writeRate`)),1),l(`span`,oe,[l(`span`,se,[h(r(n.writeRate),1),s[0]||=l(`small`,null,`%`,-1)])])]),l(`div`,{class:t([`aw-gauge`,{"is-alarm":n.alarmCount>0}])},[l(`span`,ce,r(e(i)(`home.kpi.alarms`)),1),l(`span`,le,[l(`span`,ue,r(n.alarmCount),1)])],2)]))}}),[[`__scopeId`,`data-v-0fab36f7`]]),{__name:`DashboardGaugeBand`}),fe={class:`harness aw-bench aw-stagger`},pe={class:`aw-bench-hd`},me={class:`aw-bench-title`},he={class:`aw-bench-sub`},ge={class:`aw-bench-meta`},_e={class:`harness-row`},ve=[`href`,`title`],ye={class:`h-name`},be={key:0,class:`h-cmd mono`},xe={key:1,class:`h-go`},Se=Object.assign(x(a({__name:`DashboardHarnessPanel`,props:{harnesses:{},okCount:{}},setup(n){let{t:i}=y(),a=e=>e.id===`mock`?i(`agents.hMock`):e.id===`omp`?i(`agents.hOmp`):e.label,c=e=>{if(e.available===!1)return i(`home.harness.missing`);if(e.inprocess)return`in-process`;let t=String(e.command??``);return t?e.label.startsWith(t)?``:t:``};return(p,m)=>(o(),u(`section`,fe,[l(`header`,pe,[l(`h3`,me,r(e(i)(`home.harness.title`)),1),l(`small`,he,r(e(i)(`home.harness.sub`)),1),l(`span`,ge,[l(`span`,null,[l(`b`,null,r(n.okCount),1),h(`/`+r(n.harnesses.length),1)])])]),l(`div`,_e,[(o(!0),u(d,null,s(n.harnesses,e=>(o(),u(`a`,{key:e.id,class:t([`h-item`,{off:e.available===!1,link:e.available===!1&&e.homepage}]),href:e.available===!1&&e.homepage?e.homepage:void 0,target:`_blank`,rel:`noopener`,title:e.available===!1?e.error??``:e.resolvedPath??e.command??``},[m[0]||=l(`span`,{class:`h-dot`},null,-1),l(`span`,ye,r(a(e)),1),c(e)?(o(),u(`span`,be,r(c(e)),1)):f(``,!0),e.available===!1&&e.homepage?(o(),u(`span`,xe,`↗`)):f(``,!0)],10,ve))),128))])]))}}),[[`__scopeId`,`data-v-c6db3d57`]]),{__name:`DashboardHarnessPanel`}),Ce={class:`hero aw-bench aw-bench--marked aw-stagger`},we={class:`hero-main`},Te={class:`aw-bench-kicker`},Ee={class:`hero-title`},De={class:`aw-serif-accent-italic`},Oe={class:`hero-sub`},ke={class:`hero-acts`},Ae={class:`hero-live`},je={class:`live-badge`},Me={class:`live-rows`},Ne={class:`live-row`},Pe={class:`mono`},Fe={class:`live-row`},Ie={class:`mono`},Le={class:`mono`},Re=Object.assign(x(a({__name:`DashboardHero`,props:{mode:{},linesActive:{},linesTotal:{},samplesStored:{},alarmCount:{}},setup(n){let{t:i}=y();return(a,s)=>(o(),u(`section`,Ce,[l(`div`,we,[l(`p`,Te,r(e(i)(`home.kicker`))+` · `+r(n.mode),1),l(`h1`,Ee,[h(r(e(i)(`home.heroTitle`))+` `,1),l(`span`,De,r(e(i)(`home.heroAccent`)),1)]),l(`p`,Oe,r(e(i)(`home.heroSub`)),1),l(`div`,ke,[l(`button`,{class:`aw-pill im`,onClick:s[0]||=t=>(`navigateTo`in a?a.navigateTo:e(g))(`/town`)},[s[2]||=l(`span`,{class:`i-tabler-map-2 im-pop`},null,-1),h(` `+r(e(i)(`home.ctaTown`)),1)]),l(`button`,{class:`aw-pill outline im`,onClick:s[1]||=t=>(`navigateTo`in a?a.navigateTo:e(g))(`/dcw`)},[s[3]||=l(`span`,{class:`i-tabler-route im-pop`},null,-1),h(` `+r(e(i)(`home.ctaLine`)),1)])])]),l(`div`,Ae,[l(`span`,je,[s[4]||=l(`span`,{class:`live-dot`},null,-1),h(r(e(i)(`home.live`)),1)]),l(`dl`,Me,[l(`div`,Ne,[l(`dt`,null,r(e(i)(`home.kpi.lines`)),1),l(`dd`,Pe,[l(`b`,null,r(n.linesActive),1),l(`small`,null,`/`+r(n.linesTotal),1)])]),l(`div`,Fe,[l(`dt`,null,r(e(i)(`home.kpi.samples`)),1),l(`dd`,Ie,[l(`b`,null,r(n.samplesStored),1)])]),l(`div`,{class:t([`live-row`,{"is-alarm":n.alarmCount>0}])},[l(`dt`,null,r(e(i)(`home.kpi.alarms`)),1),l(`dd`,Le,[l(`b`,null,r(n.alarmCount),1)])],2)])]),s[5]||=l(`div`,{class:`hero-scale`,"aria-hidden":`true`},null,-1)]))}}),[[`__scopeId`,`data-v-5acb71f5`]]),{__name:`DashboardHero`}),ze={class:`aw-bench span4`},Be={class:`aw-bench-hd`},Ve={class:`aw-bench-title`},He={class:`aw-bench-meta`},Ue={class:`donut-wrap`},We={class:`donut-center mono`},Ge=Object.assign(x(a({__name:`DashboardLineStatePanel`,props:{option:{type:Object,required:!0},linesActive:{type:Number,required:!0},linesTotal:{type:Number,required:!0}},setup(t){let{t:n}=y();return(i,a)=>{let s=b;return o(),u(`section`,ze,[l(`header`,Be,[l(`h3`,Ve,r(e(n)(`home.charts.lineState`)),1),l(`span`,He,[l(`span`,null,[l(`b`,null,r(t.linesActive),1),h(`/`+r(t.linesTotal)+` `+r(e(n)(`home.kpi.lines`)),1)])])]),l(`div`,Ue,[l(`div`,We,[l(`b`,null,r(t.linesActive),1),l(`small`,null,`/ `+r(t.linesTotal),1)]),c(s,null,{default:m(()=>[c(S,{option:t.option,class:`chart h240`},null,8,[`option`])]),_:1})])])}}}),[[`__scopeId`,`data-v-737eea92`]]),{__name:`DashboardLineStatePanel`}),Ke={class:`aw-bench span4`},qe={class:`aw-bench-hd`},Je={class:`aw-bench-title`},Ye=Object.assign(x(a({__name:`DashboardNodeStatePanel`,props:{option:{type:Object,required:!0}},setup(t){let{t:n}=y();return(i,a)=>{let s=b;return o(),u(`section`,Ke,[l(`header`,qe,[l(`h3`,Je,r(e(n)(`home.charts.nodeState`)),1)]),c(s,null,{default:m(()=>[c(S,{option:t.option,class:`chart h240`},null,8,[`option`])]),_:1})])}}}),[[`__scopeId`,`data-v-8780e560`]]),{__name:`DashboardNodeStatePanel`}),Xe={class:`aw-bench span4`},Ze={class:`aw-bench-hd`},Qe={class:`aw-bench-title`},$e=Object.assign(x(a({__name:`DashboardPipelinePanel`,props:{option:{type:Object,required:!0}},setup(t){let{t:n}=y();return(i,a)=>{let s=b;return o(),u(`section`,Xe,[l(`header`,Ze,[l(`h3`,Qe,r(e(n)(`home.charts.pipeline`)),1)]),c(s,null,{default:m(()=>[c(S,{option:t.option,class:`chart h240`},null,8,[`option`])]),_:1})])}}}),[[`__scopeId`,`data-v-4367fd2c`]]),{__name:`DashboardPipelinePanel`}),et={class:`aw-bench span8`},tt={class:`aw-bench-hd`},$={class:`aw-bench-title`},nt={class:`aw-bench-sub`},rt={class:`aw-bench-meta`},it={key:1,class:`aw-empty chart h280`},at={class:`aw-empty-title`},ot={class:`aw-empty-sub`},st=Object.assign(x(a({__name:`DashboardTrendPanel`,props:{option:{type:Object,required:!0},hasData:{type:Boolean,required:!0}},setup(t){let{t:n}=y();return(i,a)=>{let s=b;return o(),u(`section`,et,[l(`header`,tt,[l(`h3`,$,r(e(n)(`home.charts.trend`)),1),l(`small`,nt,r(e(n)(`home.charts.trendSub`)),1),l(`span`,rt,[l(`span`,null,r(e(n)(`home.trendY`)),1)])]),c(s,null,{default:m(()=>[t.hasData?(o(),p(S,{key:0,option:t.option,class:`chart h280`},null,8,[`option`])):(o(),u(`div`,it,[l(`p`,at,r(e(n)(`home.trendWaiting`)),1),l(`p`,ot,r(e(n)(`home.trendNeedRun`)),1)]))]),_:1})])}}}),[[`__scopeId`,`data-v-fb990e55`]]),{__name:`DashboardTrendPanel`}),ct={class:`aw-bench span4`},lt={class:`aw-bench-hd`},ut={class:`aw-bench-title`},dt={class:`aw-bench-meta`},ft=Object.assign(x(a({__name:`DashboardWritePanel`,props:{option:{type:Object,required:!0},writesTotal:{type:Number,required:!0},writesFailed:{type:Number,required:!0}},setup(t){let{t:n}=y();return(i,a)=>{let s=b;return o(),u(`section`,ct,[l(`header`,lt,[l(`h3`,ut,r(e(n)(`home.charts.writeCtl`)),1),l(`span`,dt,[l(`span`,null,[l(`b`,null,r(t.writesTotal),1),h(` `+r(e(n)(`home.writesFailed`))+` `+r(t.writesFailed),1)])])]),c(s,null,{default:m(()=>[c(S,{option:t.option,class:`chart h240`},null,8,[`option`])]),_:1})])}}}),[[`__scopeId`,`data-v-fe997f1c`]]),{__name:`DashboardWritePanel`}),pt={class:`home`},mt={class:`grid aw-stagger`},ht=x(a({__name:`index`,setup(t){let{t:n}=y();_({title:()=>n(`titles.dashboard`)});let r=ee(),{site:a,daq:s,dcw:d,pushTrend:h,loadHarnesses:g,linesActive:v,daqOnline:x,daqTotal:S,alarmCount:T,writeRate:E,harnesses:D,harnessOk:O,trendHasData:k,lineCards:A,fleetShown:j,fleetOverflow:M}=r,{trendOpt:N,lineStateOpt:P,pipelineOpt:F,writeOpt:I,nodeStateOpt:R}=w(r);return i(()=>{s.ensureWsFeed(),d.ensureWsFeed(),Promise.all([s.load(),d.load()]).then(()=>h()),g(),C(()=>{s.load(),d.load(),g(),h()},5e3,{bgMs:3e4})}),(t,n)=>{let r=te,i=b;return o(),u(`div`,pt,[c(Re,{mode:e(a).mode,"lines-active":e(v).length,"lines-total":e(d).lines.length,"samples-stored":e(s).meta.samplesStored??0,"alarm-count":e(T)},null,8,[`mode`,`lines-active`,`lines-total`,`samples-stored`,`alarm-count`]),c(de,{"lines-active":e(v).length,"lines-total":e(d).lines.length,"dcw-online":e(d).controller.nodesOnline,"dcw-total":e(d).controller.nodesTotal,"daq-online":e(x),"daq-total":e(S),"samples-stored":e(s).meta.samplesStored??0,"write-rate":e(E),"alarm-count":e(T)},null,8,[`lines-active`,`lines-total`,`dcw-online`,`dcw-total`,`daq-online`,`daq-total`,`samples-stored`,`write-rate`,`alarm-count`]),e(D).length>0?(o(),p(Se,{key:0,harnesses:e(D),"ok-count":e(O)},null,8,[`harnesses`,`ok-count`])):f(``,!0),l(`div`,mt,[c(st,{option:e(N),"has-data":e(k)},null,8,[`option`,`has-data`]),c(Ge,{option:e(P),"lines-active":e(v).length,"lines-total":e(d).lines.length},null,8,[`option`,`lines-active`,`lines-total`]),c($e,{option:e(F)},null,8,[`option`]),c(ft,{option:e(I),"writes-total":e(d).controller.writesTotal,"writes-failed":e(d).controller.writesFailed},null,8,[`option`,`writes-total`,`writes-failed`]),c(Ye,{option:e(R)},null,8,[`option`])]),c(L,{lines:e(j),total:e(A).length,overflow:e(M)},null,8,[`lines`,`total`,`overflow`]),c(i,null,{default:m(()=>[c(r,{"slot-name":`dashboard.widgets`})]),_:1})])}}}),[[`__scopeId`,`data-v-685ce916`]]);export{ht as default};
@@ -1 +1 @@
1
- import{t as e}from"./DK3Fl9T5.js";import{d as t,z as n}from"./C6lssmvl.js";import{a as r}from"./BtumQhZK.js";import{n as i}from"./D1MkndMZ.js";import{t as a}from"./CCI-fwcS2.js";import{t as o}from"./gUYi1hLJ2.js";import{t as s}from"./R1g64DNi2.js";var c=e({useDcwDetailScope:()=>l});function l(){let{t:e}=i(),c=r(),l=o(),u=a(),d=s();u.load();let f=t(()=>String(c.params.id??``)),p=t(()=>l.lines.find(e=>e.id===f.value)),m=t(()=>l.lineStateOf(f.value));l.load();let h=l.ensureWsFeed();n(()=>h());let g=e=>(e.deviceIds??(e.deviceBindingId?[e.deviceBindingId]:[])).map(e=>_(e)).join(` / `)||`—`,_=t=>t?d.twins.find(e=>e.id===t)?.name??t:e(`dcwDetail.k3own4q121`),v=t(()=>({idle:e(`dcwDetail.k3zgkk122`),writing:e(`dcwDetail.k3l3h80123`),ok:e(`dcwDetail.stAck`),error:e(`dcwDetail.k40reu124`),offline:e(`dcwDetail.k44c2n125`)}));function y(e){let t=e??``;return l.templates.find(e=>e.key===(t.startsWith(`dcw-`)?t.slice(4):t))?.ch??t}function b(e){return l.nodeById(e)?.min}function x(e){return l.nodeById(e)?.max}let S=t(()=>u.nodes.filter(e=>e.lineId===f.value));function C(e){return u.nodeById(e)?.name??e}let w=t(()=>l.nodes.filter(e=>e.lineId===f.value)),T=t(()=>l.products.filter(e=>e.lineId===f.value)),E=t(()=>l.recipes.filter(e=>e.lineId===f.value)),D=t(()=>l.runs.filter(e=>e.lineId===f.value)),O=t(()=>{let e=new Set(w.value.map(e=>e.id));return l.history.filter(t=>e.has(t.nodeId))}),k=t(()=>l.nodes.filter(e=>!e.lineId)),A=t(()=>l.products.filter(e=>!e.lineId));async function j(e){await l.patchNode(e,{lineId:f.value});let t=l.nodeById(e);t&&(t.lineId=f.value)}async function M(e){await l.updateProduct(e,{lineId:f.value}),await l.load()}let N=e=>l.products.find(t=>t.id===e)?.name??e;function P(t,n){let r=l.nodes.find(e=>e.id===t);return r?r.enabled?n&&r.lineId!==n?{code:`unbound`,label:e(`dcwDetail.staleUnbound`)}:null:{code:`disabled`,label:e(`dcwDetail.staleDisabled`)}:{code:`deleted`,label:e(`dcwDetail.staleDeleted`)}}function F(e){return l.nodes.find(t=>t.id===e)?.name??e}function I(t,n){let r=u.nodes.find(e=>e.id===t);return r?r.enabled?n&&r.lineId!==n?{code:`unbound`,label:e(`dcwDetail.staleUnbound`)}:null:{code:`disabled`,label:e(`dcwDetail.staleDisabled`)}:{code:`deleted`,label:e(`dcwDetail.staleDeleted`)}}return{dcw:l,daq:u,deviceTwins:d,lineId:f,line:p,ls:m,stateLabel:v,dcwTemplateRefCh:y,nodeMin:b,nodeMax:x,lineDaqNodes:S,daqNodeCh:C,lineNodes:w,lineProducts:T,lineRecipesAll:E,lineRuns:D,lineHistory:O,unassignedNodes:k,unassignedProducts:A,adoptNode:j,adoptProduct:M,productName:N,paramStatus:P,paramNodeName:F,daqWindowStatus:I,nodeDeviceNames:g}}export{c as n,l as t};
1
+ import{t as e}from"./DK3Fl9T5.js";import{d as t,z as n}from"./C6lssmvl.js";import{a as r}from"./BtumQhZK.js";import{n as i}from"./D1MkndMZ.js";import{t as a}from"./CTGJHZ8X2.js";import{t as o}from"./DxDqd6T42.js";import{t as s}from"./R1g64DNi2.js";var c=e({useDcwDetailScope:()=>l});function l(){let{t:e}=i(),c=r(),l=o(),u=a(),d=s();u.load();let f=t(()=>String(c.params.id??``)),p=t(()=>l.lines.find(e=>e.id===f.value)),m=t(()=>l.lineStateOf(f.value));l.load();let h=l.ensureWsFeed();n(()=>h());let g=e=>(e.deviceIds??(e.deviceBindingId?[e.deviceBindingId]:[])).map(e=>_(e)).join(` / `)||`—`,_=t=>t?d.twins.find(e=>e.id===t)?.name??t:e(`dcwDetail.k3own4q121`),v=t(()=>({idle:e(`dcwDetail.k3zgkk122`),writing:e(`dcwDetail.k3l3h80123`),ok:e(`dcwDetail.stAck`),error:e(`dcwDetail.k40reu124`),offline:e(`dcwDetail.k44c2n125`)}));function y(e){let t=e??``;return l.templates.find(e=>e.key===(t.startsWith(`dcw-`)?t.slice(4):t))?.ch??t}function b(e){return l.nodeById(e)?.min}function x(e){return l.nodeById(e)?.max}let S=t(()=>u.nodes.filter(e=>e.lineId===f.value));function C(e){return u.nodeById(e)?.name??e}let w=t(()=>l.nodes.filter(e=>e.lineId===f.value)),T=t(()=>l.products.filter(e=>e.lineId===f.value)),E=t(()=>l.recipes.filter(e=>e.lineId===f.value)),D=t(()=>l.runs.filter(e=>e.lineId===f.value)),O=t(()=>{let e=new Set(w.value.map(e=>e.id));return l.history.filter(t=>e.has(t.nodeId))}),k=t(()=>l.nodes.filter(e=>!e.lineId)),A=t(()=>l.products.filter(e=>!e.lineId));async function j(e){await l.patchNode(e,{lineId:f.value});let t=l.nodeById(e);t&&(t.lineId=f.value)}async function M(e){await l.updateProduct(e,{lineId:f.value}),await l.load()}let N=e=>l.products.find(t=>t.id===e)?.name??e;function P(t,n){let r=l.nodes.find(e=>e.id===t);return r?r.enabled?n&&r.lineId!==n?{code:`unbound`,label:e(`dcwDetail.staleUnbound`)}:null:{code:`disabled`,label:e(`dcwDetail.staleDisabled`)}:{code:`deleted`,label:e(`dcwDetail.staleDeleted`)}}function F(e){return l.nodes.find(t=>t.id===e)?.name??e}function I(t,n){let r=u.nodes.find(e=>e.id===t);return r?r.enabled?n&&r.lineId!==n?{code:`unbound`,label:e(`dcwDetail.staleUnbound`)}:null:{code:`disabled`,label:e(`dcwDetail.staleDisabled`)}:{code:`deleted`,label:e(`dcwDetail.staleDeleted`)}}return{dcw:l,daq:u,deviceTwins:d,lineId:f,line:p,ls:m,stateLabel:v,dcwTemplateRefCh:y,nodeMin:b,nodeMax:x,lineDaqNodes:S,daqNodeCh:C,lineNodes:w,lineProducts:T,lineRecipesAll:E,lineRuns:D,lineHistory:O,unassignedNodes:k,unassignedProducts:A,adoptNode:j,adoptProduct:M,productName:N,paramStatus:P,paramNodeName:F,daqWindowStatus:I,nodeDeviceNames:g}}export{c as n,l as t};
@@ -1 +1 @@
1
- import{N as e,dt as t,mt as n,u as r,v as i}from"./CavpkQb0.js";import{$ as a,S as o,V as s,W as c,b as l,f as u,h as d,i as f,it as p,k as m,m as h,p as ee,rt as g,y as _}from"./C6lssmvl.js";import{c as v,f as y,l as b,s as x}from"./ri9UF8rk.js";import{t as te}from"./DPPC9Teq.js";import{n as S}from"./D1MkndMZ.js";import{t as C}from"./BDNMzG2s.js";import{t as w}from"./DOT-XQyi.js";import{t as T}from"./CNs_Ozdc.js";import{r as E}from"./-gy9k_TE2.js";import{t as D}from"./ChF6qLpY2.js";import{t as O}from"./BZg_MIK42.js";import{t as k}from"./CNrRZmSx2.js";import{t as A}from"./CQ31GiJU2.js";var j={class:`col-live`},M={class:`aw-tile value-card`},N={class:`aw-kicker`},P={class:`big-val mono`},F={class:`facts mono`},I=Object.assign(C(o({__name:`DaqDetailLiveCard`,props:m({node:{},tpl:{},boundDeviceName:{},defaultIntervalMs:{},defaultPublishMs:{},driverPlanned:{type:Function}},{canvasEl:{required:!0},canvasElModifiers:{}}),emits:[`update:canvasEl`],setup(e){let t=e,{t:r}=S(),i=a(e,`canvasEl`);function o(e){return e==null?r(`daqDetail.k9vnp9h053`,{p0:t.defaultPublishMs}):e===0?r(`daqDetail.k1m1zwux030`):`${e}ms`}return(t,r)=>(s(),d(`section`,j,[u(`div`,M,[u(`p`,N,n(t.$t(`daqDetail.k1fx2vik032`))+` `+n(e.tpl?.ch??`-`),1),u(`div`,P,[_(n(e.node.value==null?`--`:e.node.value.toFixed(e.node.decimals)),1),u(`small`,null,n(e.node.unit),1)]),u(`canvas`,{ref_key:`canvasEl`,ref:i,class:`live-canvas`},null,512),u(`dl`,F,[u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k4a0la003`)),1),u(`dd`,null,n(e.node.driver)+n(e.driverPlanned(e.node.driver)?t.$t(`daqDetail.kz8zr9v035`):``),1)]),u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k3xg3w004`)),1),u(`dd`,null,n(e.node.intervalMs??t.$t(`daqDetail.k9vnp9h053`,{p0:e.defaultIntervalMs})),1)]),u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k3w6td005`)),1),u(`dd`,null,n(o(e.node.publishIntervalMs)),1)]),u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k3x5tpx006`)),1),u(`dd`,null,n(e.node.warnLow??`-∞`)+` ~ `+n(e.node.warnHigh??`+∞`),1)]),u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k1hjj0jf007`)),1),u(`dd`,null,n(e.node.min)+` ~ `+n(e.node.max),1)]),u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k1i8rtqt008`)),1),u(`dd`,null,n(e.boundDeviceName||t.$t(`daqDetail.k3own4q036`)),1)])])])]))}}),[[`__scopeId`,`data-v-ded59ba4`]]),{__name:`DaqDetailLiveCard`}),L={class:`col-form aw-tile pad`},R={class:`sec`},z={class:`field`},B={class:`field`},V={value:``},H=[`value`],U={class:`field`},W=[`value`,`disabled`],G={class:`field row`},K=[`disabled`],q={class:`field row`},J=[`title`],Y=[`disabled`,`title`],X=[`disabled`,`title`],Z={class:`field row`},Q=[`disabled`],ne={class:`field`},re={class:`field`},ie={class:`field-row`},ae={class:`field`},oe={class:`field`},se={class:`field`},ce={class:`field`},le=[`disabled`],ue={class:`sec mt`},de={class:`driver-grid`},fe={key:0},pe=[`onUpdate:modelValue`],me=[`value`],he=[`onUpdate:modelValue`,`type`,`placeholder`],ge={class:`test-row`},_e=[`disabled`],ve={class:`sec mt`},ye={class:`bind-row`},be={value:``},xe=[`value`],Se=Object.assign(C(o({__name:`DaqDetailParamForm`,props:m({lines:{},driverCatalog:{},driverFields:{},saving:{type:Boolean},testing:{type:Boolean},testResult:{},boundDeviceName:{},availableDevices:{}},{form:{required:!0},formModifiers:{},driverCfg:{required:!0},driverCfgModifiers:{},bindDeviceId:{required:!0},bindDeviceIdModifiers:{}}),emits:m([`save`,`test`,`bind-toggle`],[`update:form`,`update:driverCfg`,`update:bindDeviceId`]),setup(e,{emit:r}){let i=r,o=a(e,`form`),l=a(e,`driverCfg`),m=a(e,`bindDeviceId`);return(r,a)=>(s(),d(`section`,L,[u(`h3`,R,n(r.$t(`daqDetail.kd9d69j009`)),1),u(`form`,{class:`form-grid`,onSubmit:a[17]||=y(e=>i(`save`),[`prevent`])},[u(`label`,z,[u(`span`,null,n(r.$t(`daqDetail.k1iw7tbf010`)),1),u(`button`,{type:`button`,class:t([`toggle`,{on:o.value.enabled}]),onClick:a[0]||=e=>o.value.enabled=!o.value.enabled},n(o.value.enabled?r.$t(`daqDetail.k3w3j8f037`):r.$t(`daqDetail.k3n5aaj045`)),3)]),u(`label`,B,[u(`span`,null,n(r.$t(`daqDetail.k12k23od011`)),1),p(u(`select`,{"onUpdate:modelValue":a[1]||=e=>o.value.lineId=e,class:`input`},[u(`option`,V,n(r.$t(`daqDetail.k3ootr6012`)),1),(s(!0),d(f,null,c(e.lines,e=>(s(),d(`option`,{key:e.id,value:e.id},n(e.name),9,H))),128))],512),[[v,o.value.lineId]])]),u(`label`,U,[u(`span`,null,n(r.$t(`daqDetail.k1l6smxo013`)),1),p(u(`select`,{"onUpdate:modelValue":a[2]||=e=>o.value.driver=e,class:`input`},[(s(!0),d(f,null,c(e.driverCatalog,e=>(s(),d(`option`,{key:e.kind,value:e.kind,disabled:e.status===`planned`},n(e.label)+n(e.plugin?` ⌁`:``)+n(e.status===`planned`?r.$t(`daqDetail.kz8zr9v035`):``),9,W))),128))],512),[[v,o.value.driver]])]),u(`label`,G,[u(`button`,{type:`button`,class:t([`toggle slim`,{on:o.value.followGlobal}]),onClick:a[3]||=e=>o.value.followGlobal=!o.value.followGlobal},n(o.value.followGlobal?r.$t(`daqDetail.k1k2ueyq038`):r.$t(`daqDetail.k1cgi8fy046`)),3),p(u(`input`,{"onUpdate:modelValue":a[4]||=e=>o.value.intervalMs=e,type:`number`,min:`1000`,max:`60000`,step:`500`,class:`input`,disabled:o.value.followGlobal},null,8,K),[[b,o.value.intervalMs,void 0,{number:!0}]]),a[21]||=u(`small`,null,`ms`,-1)]),u(`label`,q,[u(`button`,{type:`button`,class:t([`toggle slim`,{on:o.value.calKind===`linear`}]),title:r.$t(`daqDetail.calDecoderTip`),onClick:a[5]||=e=>o.value.calKind=o.value.calKind===`linear`?`none`:`linear`},n(o.value.calKind===`linear`?r.$t(`daqDetail.k1eru4r1039`):r.$t(`daqDetail.k3oktae047`)),11,J),p(u(`input`,{"onUpdate:modelValue":a[6]||=e=>o.value.calScale=e,type:`number`,step:`0.1`,class:`input`,disabled:o.value.calKind!==`linear`,title:r.$t(`daqDetail.calScaleTip`)},null,8,Y),[[b,o.value.calScale,void 0,{number:!0}]]),p(u(`input`,{"onUpdate:modelValue":a[7]||=e=>o.value.calOffset=e,type:`number`,step:`0.1`,class:`input`,disabled:o.value.calKind!==`linear`,title:r.$t(`daqDetail.calOffsetTip`)},null,8,X),[[b,o.value.calOffset,void 0,{number:!0}]]),a[22]||=u(`small`,null,`decoder`,-1)]),u(`label`,Z,[u(`button`,{type:`button`,class:t([`toggle slim`,{on:o.value.publishFollow}]),onClick:a[8]||=e=>o.value.publishFollow=!o.value.publishFollow},n(o.value.publishFollow?r.$t(`daqDetail.k1k2t5o7040`):r.$t(`daqDetail.k1cggz5f048`)),3),u(`span`,{class:t([`toggle slim`,{on:o.value.publishEveryFrame}]),style:{cursor:`pointer`},onClick:a[9]||=e=>o.value.publishEveryFrame=!o.value.publishEveryFrame},n(o.value.publishEveryFrame?r.$t(`daqDetail.k41mvv041`):r.$t(`daqDetail.k3n42dj049`)),3),p(u(`input`,{"onUpdate:modelValue":a[10]||=e=>o.value.publishMs=e,type:`number`,min:`0`,max:`60000`,step:`100`,class:`input`,disabled:o.value.publishFollow||o.value.publishEveryFrame},null,8,Q),[[b,o.value.publishMs,void 0,{number:!0}]]),a[23]||=u(`small`,null,`ms`,-1)]),u(`label`,ne,[u(`span`,null,n(r.$t(`daqDetail.k3x4ef014`)),1),p(u(`input`,{"onUpdate:modelValue":a[11]||=e=>o.value.unit=e,class:`input`},null,512),[[b,o.value.unit]])]),u(`label`,re,[u(`span`,null,n(r.$t(`daqDetail.k3mxmcx015`)),1),p(u(`input`,{"onUpdate:modelValue":a[12]||=e=>o.value.decimals=e,type:`number`,min:`0`,max:`6`,class:`input`},null,512),[[b,o.value.decimals,void 0,{number:!0}]])]),u(`div`,ie,[u(`label`,ae,[u(`span`,null,n(r.$t(`daqDetail.k1l9jv5m016`)),1),p(u(`input`,{"onUpdate:modelValue":a[13]||=e=>o.value.min=e,type:`number`,step:`any`,class:`input`},null,512),[[b,o.value.min,void 0,{number:!0}]])]),u(`label`,oe,[u(`span`,null,n(r.$t(`daqDetail.k1md63hm017`)),1),p(u(`input`,{"onUpdate:modelValue":a[14]||=e=>o.value.warnLow=e,type:`number`,step:`any`,class:`input`},null,512),[[b,o.value.warnLow,void 0,{number:!0}]])]),u(`label`,se,[u(`span`,null,n(r.$t(`daqDetail.k1md63gp018`)),1),p(u(`input`,{"onUpdate:modelValue":a[15]||=e=>o.value.warnHigh=e,type:`number`,step:`any`,class:`input`},null,512),[[b,o.value.warnHigh,void 0,{number:!0}]])]),u(`label`,ce,[u(`span`,null,n(r.$t(`daqDetail.k1l9jv4p019`)),1),p(u(`input`,{"onUpdate:modelValue":a[16]||=e=>o.value.max=e,type:`number`,step:`any`,class:`input`},null,512),[[b,o.value.max,void 0,{number:!0}]])])]),u(`button`,{class:`aw-pill`,type:`submit`,disabled:e.saving},n(e.saving?r.$t(`daqDetail.k1as0g50042`):r.$t(`daqDetail.ksn9cgo050`)),9,le)],32),e.driverFields.length?(s(),d(f,{key:0},[u(`h3`,ue,n(r.$t(`daqDetail.k1p9gioa033`))+` `+n(e.driverCatalog.find(e=>e.kind===o.value.driver)?.label),1),u(`div`,de,[(s(!0),d(f,null,c(e.driverFields,e=>(s(),d(`label`,{key:e.key,class:`field`},[u(`span`,null,[_(n(e.label),1),e.required?(s(),d(`em`,fe,`*`)):h(``,!0)]),e.type===`select`?p((s(),d(`select`,{key:0,"onUpdate:modelValue":t=>l.value[e.key]=t,class:`input`},[(s(!0),d(f,null,c(e.options,e=>(s(),d(`option`,{key:e.value,value:e.value},n(e.label),9,me))),128))],8,pe)),[[v,l.value[e.key]]]):p((s(),d(`input`,{key:1,"onUpdate:modelValue":t=>l.value[e.key]=t,type:e.type===`number`?`number`:`text`,placeholder:e.placeholder,class:`input`},null,8,he)),[[x,l.value[e.key]]])]))),128))]),u(`div`,ge,[u(`button`,{class:`pill-btn`,disabled:e.testing,onClick:a[18]||=e=>i(`test`)},n(e.testing?r.$t(`daqDetail.k1fsh720043`):r.$t(`daqDetail.k1fstglk051`)),9,_e),e.testResult?(s(),d(`span`,{key:0,class:t([`test-out mono`,e.testResult.ok?`ok`:`bad`])},n(e.testResult.ok?`✓`:`✗`)+` `+n(e.testResult.message),3)):h(``,!0)])],64)):h(``,!0),u(`h3`,ve,n(r.$t(`daqDetail.k1ie6qju020`)),1),u(`div`,ye,[p(u(`select`,{"onUpdate:modelValue":a[19]||=e=>m.value=e,class:`input grow`},[u(`option`,be,n(r.$t(`daqDetail.kjobzu3021`)),1),(s(!0),d(f,null,c(e.availableDevices,e=>(s(),d(`option`,{key:e.id,value:e.id},n(e.name),9,xe))),128))],512),[[v,m.value]]),u(`button`,{class:`pill-btn`,onClick:a[20]||=e=>i(`bind-toggle`)},n(e.boundDeviceName?r.$t(`daqDetail.k479eh044`):r.$t(`daqDetail.k452a8052`)),1)])]))}}),[[`__scopeId`,`data-v-de819029`]]),{__name:`DaqDetailParamForm`}),Ce={class:`col-hist aw-tile pad`},we={class:`hist-hd`},Te={class:`sec`},Ee={class:`hist-ctl mono`},De=[`value`],Oe=[`title`],ke=[`placeholder`],Ae={class:`raw-table mono`},je=Object.assign(C(o({__name:`DaqDetailHistoryCard`,props:m({tsdb:{},buckets:{},historyPoints:{},decimals:{},minQueryMs:{},defaultQueryMs:{}},{bucketMs:{required:!0},bucketMsModifiers:{},refreshOverrideMs:{required:!0},refreshOverrideMsModifiers:{},canvasEl:{required:!0},canvasElModifiers:{}}),emits:m([`reload`],[`update:bucketMs`,`update:refreshOverrideMs`,`update:canvasEl`]),setup(t,{emit:r}){let i=r,o=a(t,`bucketMs`),l=a(t,`refreshOverrideMs`),m=a(t,`canvasEl`);return(r,a)=>(s(),d(`section`,Ce,[u(`div`,we,[u(`h3`,Te,n(r.$t(`daqDetail.k1i535i5034`))+n(t.tsdb)+`) `,1),u(`div`,Ee,[p(u(`select`,{"onUpdate:modelValue":a[0]||=e=>o.value=e,class:`input`},[(s(!0),d(f,null,c(t.buckets,e=>(s(),d(`option`,{key:e.ms,value:e.ms},n(e.label),9,De))),128))],512),[[v,o.value,void 0,{number:!0}]]),u(`label`,{class:`refresh-ctl`,title:r.$t(`daqDetail.k1rfrshint001`,{p0:t.minQueryMs})},[a[3]||=u(`span`,{class:`i-tabler-refresh`},null,-1),p(u(`input`,{"onUpdate:modelValue":a[1]||=e=>l.value=e,type:`number`,min:0,max:`600000`,step:`500`,placeholder:String(t.defaultQueryMs)},null,8,ke),[[b,l.value,void 0,{number:!0}]]),a[4]||=_(`ms `,-1)],8,Oe),u(`button`,{class:`pill-btn`,onClick:a[2]||=e=>i(`reload`)},n(r.$t(`daqDetail.k3x1jg022`)),1)])]),u(`canvas`,{ref_key:`canvasEl`,ref:m,class:`hist-canvas`},null,512),u(`table`,Ae,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,n(r.$t(`daqDetail.k40vsf023`)),1),u(`th`,null,n(r.$t(`daqDetail.k48v5024`)),1),u(`th`,null,n(r.$t(`daqDetail.k4bza025`)),1)])]),u(`tbody`,null,[(s(!0),d(f,null,c(t.historyPoints.filter(e=>e.value!=null).slice(-12).reverse(),(r,i)=>(s(),d(`tr`,{key:i},[u(`td`,null,n(e(w)(new Date(r.at).toISOString())),1),u(`td`,null,n(r.value.toFixed(t.decimals??2)),1),u(`td`,null,n(r.state),1)]))),128))])])]))}}),[[`__scopeId`,`data-v-24d96636`]]),{__name:`DaqDetailHistoryCard`}),Me={class:`aw-tile pad frames-tile`},Ne={class:`hist-hd`},Pe={class:`sec`},Fe={class:`mono frames-n`},Ie=[`viewBox`],Le=[`points`],Re={class:`raw-table mono`},ze={key:0,class:`gal`},Be=[`title`,`onClick`],Ve=[`src`],$={class:`mono`},He={key:1,class:`frames-empty`},Ue=[`src`],We=Object.assign(C(o({__name:`DaqDetailFramesTile`,props:{signalKind:{},frames:{},vecPath:{}},emits:[`reload`],setup(t,{emit:r}){let a=r,o=i(null),l=e=>w(new Date(e).toISOString()),p=e=>Object.entries(e.metrics??{}).slice(0,3).map(([e,t])=>`${e}=${t}`).join(` `);return(r,i)=>(s(),d(`section`,Me,[u(`div`,Ne,[u(`h3`,Pe,[_(n(t.signalKind===`image`?r.$t(`daqDetail.kfrm0001`):r.$t(`daqDetail.kfrm0002`))+` `,1),u(`span`,Fe,n(t.frames.length),1)]),u(`button`,{class:`pill-btn`,onClick:i[0]||=e=>a(`reload`)},n(r.$t(`daqDetail.k3x1jg022`)),1)]),t.signalKind===`vector`?(s(),d(f,{key:0},[(s(),d(`svg`,{class:`vec-svg`,viewBox:`0 0 ${e(320)} ${e(84)}`,preserveAspectRatio:`none`},[u(`polyline`,{points:t.vecPath,fill:`none`,stroke:`var(--accent)`,"stroke-width":`1.5`},null,8,Le)],8,Ie)),u(`table`,Re,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,n(r.$t(`daqDetail.k40vsf023`)),1),u(`th`,null,n(r.$t(`daqDetail.kfrm0004`)),1),u(`th`,null,n(r.$t(`daqDetail.kfrm0005`)),1)])]),u(`tbody`,null,[(s(!0),d(f,null,c(t.frames.filter(e=>e.kind===`vector`).slice(0,12),e=>(s(),d(`tr`,{key:e.at},[u(`td`,null,n(l(e.at)),1),u(`td`,null,n(e.points?.length??0),1),u(`td`,null,n(p(e)),1)]))),128))])])],64)):(s(),d(f,{key:1},[t.frames.length?(s(),d(`div`,ze,[(s(!0),d(f,null,c(t.frames,e=>(s(),d(`figure`,{key:e.at,class:`gal-item`,title:r.$t(`daqDetail.kfrm0006`),onClick:t=>o.value=e},[u(`img`,{src:e.thumbUrl,loading:`lazy`,alt:`daq frame`},null,8,Ve),u(`figcaption`,$,n(l(e.at))+` · `+n(p(e)),1)],8,Be))),128))])):(s(),d(`p`,He,n(r.$t(`daqDetail.kfrm0003`)),1)),o.value?(s(),d(`div`,{key:2,class:`gal-full`,onClick:i[1]||=e=>o.value=null},[u(`img`,{src:o.value.contentUrl??o.value.thumbUrl,alt:`daq frame full`},null,8,Ue)])):h(``,!0)],64))]))}}),[[`__scopeId`,`data-v-3170b88f`]]),{__name:`DaqDetailFramesTile`}),Ge={class:`page`},Ke={class:`aw-kicker`},qe={class:`aw-page-head`},Je={key:0,class:`err`},Ye={key:1,class:`grid`},Xe=C(o({__name:`[id]`,setup(i){T({layout:`default`});let{daq:a,dcw:o,nodeId:c,node:f,tpl:p,signalKind:m,isFrameNode:v,stateLabel:y,effectiveState:b,driverPlanned:x}=k(),{form:S,driverCatalog:C,driverCfg:w,driverFields:j,testing:M,testResult:N,saving:P,doTest:F,saveParams:L}=A(c,f),{bindDeviceId:R,boundDeviceName:z,onBindToggle:B,availableDevices:V}=D(c,f),{historyPoints:H,bucketMs:U,BUCKETS:W,loadHistory:G,chartCanvas:K,liveCanvas:q,refreshOverrideMs:J}=O(c,f),{frames:Y,loadFrames:X,vecPath:Z}=E(c,v);return(i,T)=>{let E=te,D=I,O=Se,k=je,A=We;return s(),d(`div`,Ge,[u(`p`,Ke,[l(E,{to:`/daq`,class:`back`},{default:g(()=>[_(n(i.$t(`daqDetail.k1emg364001`)),1)]),_:1}),_(` / NODE `+n(e(c).slice(0,8).toUpperCase()),1)]),u(`div`,qe,[u(`h1`,null,n(e(f)?.name??e(c)),1),u(`span`,{class:t([`st-pill`,[e(b)()]])},n(e(y)[e(b)()]),3)]),!e(f)&&e(a).error?(s(),d(`p`,Je,[_(n(e(a).error)+`(`,1),l(E,{to:`/workshop`},{default:g(()=>[_(n(i.$t(`daqDetail.k1bhhheq002`)),1)]),_:1}),T[7]||=_(`) `,-1)])):h(``,!0),e(f)?(s(),d(`div`,Ye,[l(D,{"canvas-el":e(q),"onUpdate:canvasEl":T[0]||=e=>r(q)?q.value=e:null,node:e(f),tpl:e(p),"bound-device-name":e(z),"default-interval-ms":e(a).controller.defaultIntervalMs,"default-publish-ms":e(a).controller.defaultPublishIntervalMs,"driver-planned":e(x)},null,8,[`canvas-el`,`node`,`tpl`,`bound-device-name`,`default-interval-ms`,`default-publish-ms`,`driver-planned`]),l(O,{form:e(S),"onUpdate:form":T[1]||=e=>r(S)?S.value=e:null,"driver-cfg":e(w),"onUpdate:driverCfg":T[2]||=e=>r(w)?w.value=e:null,"bind-device-id":e(R),"onUpdate:bindDeviceId":T[3]||=e=>r(R)?R.value=e:null,lines:e(o).lines,"driver-catalog":e(C),"driver-fields":e(j),saving:e(P),testing:e(M),"test-result":e(N),"bound-device-name":e(z),"available-devices":e(V),onSave:e(L),onTest:e(F),onBindToggle:e(B)},null,8,[`form`,`driver-cfg`,`bind-device-id`,`lines`,`driver-catalog`,`driver-fields`,`saving`,`testing`,`test-result`,`bound-device-name`,`available-devices`,`onSave`,`onTest`,`onBindToggle`]),l(k,{"bucket-ms":e(U),"onUpdate:bucketMs":T[4]||=e=>r(U)?U.value=e:null,"refresh-override-ms":e(J),"onUpdate:refreshOverrideMs":T[5]||=e=>r(J)?J.value=e:null,"canvas-el":e(K),"onUpdate:canvasEl":T[6]||=e=>r(K)?K.value=e:null,tsdb:e(a).meta.tsdb,buckets:e(W),"history-points":e(H),decimals:e(f).decimals,"min-query-ms":e(a).controller.minQueryDisplayIntervalMs??500,"default-query-ms":e(a).controller.queryDisplayIntervalMs??5e3,onReload:e(G)},null,8,[`bucket-ms`,`refresh-override-ms`,`canvas-el`,`tsdb`,`buckets`,`history-points`,`decimals`,`min-query-ms`,`default-query-ms`,`onReload`])])):h(``,!0),e(v)?(s(),ee(A,{key:2,"signal-kind":e(m),frames:e(Y),"vec-path":e(Z),onReload:e(X)},null,8,[`signal-kind`,`frames`,`vec-path`,`onReload`])):h(``,!0)])}}}),[[`__scopeId`,`data-v-6ad2bd61`]]);export{Xe as default};
1
+ import{N as e,dt as t,mt as n,u as r,v as i}from"./CavpkQb0.js";import{$ as a,S as o,V as s,W as c,b as l,f as u,h as d,i as f,it as p,k as m,m as h,p as ee,rt as g,y as _}from"./C6lssmvl.js";import{c as v,f as y,l as b,s as x}from"./ri9UF8rk.js";import{t as te}from"./DPPC9Teq.js";import{n as S}from"./D1MkndMZ.js";import{t as C}from"./BDNMzG2s.js";import{t as w}from"./DOT-XQyi.js";import{t as T}from"./CNs_Ozdc.js";import{r as E}from"./hyLdZsOd2.js";import{t as D}from"./K5Xen0wZ2.js";import{t as O}from"./DoprKJ5a2.js";import{t as k}from"./Rb4o4o-82.js";import{t as A}from"./BoXKUOiN2.js";var j={class:`col-live`},M={class:`aw-tile value-card`},N={class:`aw-kicker`},P={class:`big-val mono`},F={class:`facts mono`},I=Object.assign(C(o({__name:`DaqDetailLiveCard`,props:m({node:{},tpl:{},boundDeviceName:{},defaultIntervalMs:{},defaultPublishMs:{},driverPlanned:{type:Function}},{canvasEl:{required:!0},canvasElModifiers:{}}),emits:[`update:canvasEl`],setup(e){let t=e,{t:r}=S(),i=a(e,`canvasEl`);function o(e){return e==null?r(`daqDetail.k9vnp9h053`,{p0:t.defaultPublishMs}):e===0?r(`daqDetail.k1m1zwux030`):`${e}ms`}return(t,r)=>(s(),d(`section`,j,[u(`div`,M,[u(`p`,N,n(t.$t(`daqDetail.k1fx2vik032`))+` `+n(e.tpl?.ch??`-`),1),u(`div`,P,[_(n(e.node.value==null?`--`:e.node.value.toFixed(e.node.decimals)),1),u(`small`,null,n(e.node.unit),1)]),u(`canvas`,{ref_key:`canvasEl`,ref:i,class:`live-canvas`},null,512),u(`dl`,F,[u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k4a0la003`)),1),u(`dd`,null,n(e.node.driver)+n(e.driverPlanned(e.node.driver)?t.$t(`daqDetail.kz8zr9v035`):``),1)]),u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k3xg3w004`)),1),u(`dd`,null,n(e.node.intervalMs??t.$t(`daqDetail.k9vnp9h053`,{p0:e.defaultIntervalMs})),1)]),u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k3w6td005`)),1),u(`dd`,null,n(o(e.node.publishIntervalMs)),1)]),u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k3x5tpx006`)),1),u(`dd`,null,n(e.node.warnLow??`-∞`)+` ~ `+n(e.node.warnHigh??`+∞`),1)]),u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k1hjj0jf007`)),1),u(`dd`,null,n(e.node.min)+` ~ `+n(e.node.max),1)]),u(`div`,null,[u(`dt`,null,n(t.$t(`daqDetail.k1i8rtqt008`)),1),u(`dd`,null,n(e.boundDeviceName||t.$t(`daqDetail.k3own4q036`)),1)])])])]))}}),[[`__scopeId`,`data-v-ded59ba4`]]),{__name:`DaqDetailLiveCard`}),L={class:`col-form aw-tile pad`},R={class:`sec`},z={class:`field`},B={class:`field`},V={value:``},H=[`value`],U={class:`field`},W=[`value`,`disabled`],G={class:`field row`},K=[`disabled`],q={class:`field row`},J=[`title`],Y=[`disabled`,`title`],X=[`disabled`,`title`],Z={class:`field row`},Q=[`disabled`],ne={class:`field`},re={class:`field`},ie={class:`field-row`},ae={class:`field`},oe={class:`field`},se={class:`field`},ce={class:`field`},le=[`disabled`],ue={class:`sec mt`},de={class:`driver-grid`},fe={key:0},pe=[`onUpdate:modelValue`],me=[`value`],he=[`onUpdate:modelValue`,`type`,`placeholder`],ge={class:`test-row`},_e=[`disabled`],ve={class:`sec mt`},ye={class:`bind-row`},be={value:``},xe=[`value`],Se=Object.assign(C(o({__name:`DaqDetailParamForm`,props:m({lines:{},driverCatalog:{},driverFields:{},saving:{type:Boolean},testing:{type:Boolean},testResult:{},boundDeviceName:{},availableDevices:{}},{form:{required:!0},formModifiers:{},driverCfg:{required:!0},driverCfgModifiers:{},bindDeviceId:{required:!0},bindDeviceIdModifiers:{}}),emits:m([`save`,`test`,`bind-toggle`],[`update:form`,`update:driverCfg`,`update:bindDeviceId`]),setup(e,{emit:r}){let i=r,o=a(e,`form`),l=a(e,`driverCfg`),m=a(e,`bindDeviceId`);return(r,a)=>(s(),d(`section`,L,[u(`h3`,R,n(r.$t(`daqDetail.kd9d69j009`)),1),u(`form`,{class:`form-grid`,onSubmit:a[17]||=y(e=>i(`save`),[`prevent`])},[u(`label`,z,[u(`span`,null,n(r.$t(`daqDetail.k1iw7tbf010`)),1),u(`button`,{type:`button`,class:t([`toggle`,{on:o.value.enabled}]),onClick:a[0]||=e=>o.value.enabled=!o.value.enabled},n(o.value.enabled?r.$t(`daqDetail.k3w3j8f037`):r.$t(`daqDetail.k3n5aaj045`)),3)]),u(`label`,B,[u(`span`,null,n(r.$t(`daqDetail.k12k23od011`)),1),p(u(`select`,{"onUpdate:modelValue":a[1]||=e=>o.value.lineId=e,class:`input`},[u(`option`,V,n(r.$t(`daqDetail.k3ootr6012`)),1),(s(!0),d(f,null,c(e.lines,e=>(s(),d(`option`,{key:e.id,value:e.id},n(e.name),9,H))),128))],512),[[v,o.value.lineId]])]),u(`label`,U,[u(`span`,null,n(r.$t(`daqDetail.k1l6smxo013`)),1),p(u(`select`,{"onUpdate:modelValue":a[2]||=e=>o.value.driver=e,class:`input`},[(s(!0),d(f,null,c(e.driverCatalog,e=>(s(),d(`option`,{key:e.kind,value:e.kind,disabled:e.status===`planned`},n(e.label)+n(e.plugin?` ⌁`:``)+n(e.status===`planned`?r.$t(`daqDetail.kz8zr9v035`):``),9,W))),128))],512),[[v,o.value.driver]])]),u(`label`,G,[u(`button`,{type:`button`,class:t([`toggle slim`,{on:o.value.followGlobal}]),onClick:a[3]||=e=>o.value.followGlobal=!o.value.followGlobal},n(o.value.followGlobal?r.$t(`daqDetail.k1k2ueyq038`):r.$t(`daqDetail.k1cgi8fy046`)),3),p(u(`input`,{"onUpdate:modelValue":a[4]||=e=>o.value.intervalMs=e,type:`number`,min:`1000`,max:`60000`,step:`500`,class:`input`,disabled:o.value.followGlobal},null,8,K),[[b,o.value.intervalMs,void 0,{number:!0}]]),a[21]||=u(`small`,null,`ms`,-1)]),u(`label`,q,[u(`button`,{type:`button`,class:t([`toggle slim`,{on:o.value.calKind===`linear`}]),title:r.$t(`daqDetail.calDecoderTip`),onClick:a[5]||=e=>o.value.calKind=o.value.calKind===`linear`?`none`:`linear`},n(o.value.calKind===`linear`?r.$t(`daqDetail.k1eru4r1039`):r.$t(`daqDetail.k3oktae047`)),11,J),p(u(`input`,{"onUpdate:modelValue":a[6]||=e=>o.value.calScale=e,type:`number`,step:`0.1`,class:`input`,disabled:o.value.calKind!==`linear`,title:r.$t(`daqDetail.calScaleTip`)},null,8,Y),[[b,o.value.calScale,void 0,{number:!0}]]),p(u(`input`,{"onUpdate:modelValue":a[7]||=e=>o.value.calOffset=e,type:`number`,step:`0.1`,class:`input`,disabled:o.value.calKind!==`linear`,title:r.$t(`daqDetail.calOffsetTip`)},null,8,X),[[b,o.value.calOffset,void 0,{number:!0}]]),a[22]||=u(`small`,null,`decoder`,-1)]),u(`label`,Z,[u(`button`,{type:`button`,class:t([`toggle slim`,{on:o.value.publishFollow}]),onClick:a[8]||=e=>o.value.publishFollow=!o.value.publishFollow},n(o.value.publishFollow?r.$t(`daqDetail.k1k2t5o7040`):r.$t(`daqDetail.k1cggz5f048`)),3),u(`span`,{class:t([`toggle slim`,{on:o.value.publishEveryFrame}]),style:{cursor:`pointer`},onClick:a[9]||=e=>o.value.publishEveryFrame=!o.value.publishEveryFrame},n(o.value.publishEveryFrame?r.$t(`daqDetail.k41mvv041`):r.$t(`daqDetail.k3n42dj049`)),3),p(u(`input`,{"onUpdate:modelValue":a[10]||=e=>o.value.publishMs=e,type:`number`,min:`0`,max:`60000`,step:`100`,class:`input`,disabled:o.value.publishFollow||o.value.publishEveryFrame},null,8,Q),[[b,o.value.publishMs,void 0,{number:!0}]]),a[23]||=u(`small`,null,`ms`,-1)]),u(`label`,ne,[u(`span`,null,n(r.$t(`daqDetail.k3x4ef014`)),1),p(u(`input`,{"onUpdate:modelValue":a[11]||=e=>o.value.unit=e,class:`input`},null,512),[[b,o.value.unit]])]),u(`label`,re,[u(`span`,null,n(r.$t(`daqDetail.k3mxmcx015`)),1),p(u(`input`,{"onUpdate:modelValue":a[12]||=e=>o.value.decimals=e,type:`number`,min:`0`,max:`6`,class:`input`},null,512),[[b,o.value.decimals,void 0,{number:!0}]])]),u(`div`,ie,[u(`label`,ae,[u(`span`,null,n(r.$t(`daqDetail.k1l9jv5m016`)),1),p(u(`input`,{"onUpdate:modelValue":a[13]||=e=>o.value.min=e,type:`number`,step:`any`,class:`input`},null,512),[[b,o.value.min,void 0,{number:!0}]])]),u(`label`,oe,[u(`span`,null,n(r.$t(`daqDetail.k1md63hm017`)),1),p(u(`input`,{"onUpdate:modelValue":a[14]||=e=>o.value.warnLow=e,type:`number`,step:`any`,class:`input`},null,512),[[b,o.value.warnLow,void 0,{number:!0}]])]),u(`label`,se,[u(`span`,null,n(r.$t(`daqDetail.k1md63gp018`)),1),p(u(`input`,{"onUpdate:modelValue":a[15]||=e=>o.value.warnHigh=e,type:`number`,step:`any`,class:`input`},null,512),[[b,o.value.warnHigh,void 0,{number:!0}]])]),u(`label`,ce,[u(`span`,null,n(r.$t(`daqDetail.k1l9jv4p019`)),1),p(u(`input`,{"onUpdate:modelValue":a[16]||=e=>o.value.max=e,type:`number`,step:`any`,class:`input`},null,512),[[b,o.value.max,void 0,{number:!0}]])])]),u(`button`,{class:`aw-pill`,type:`submit`,disabled:e.saving},n(e.saving?r.$t(`daqDetail.k1as0g50042`):r.$t(`daqDetail.ksn9cgo050`)),9,le)],32),e.driverFields.length?(s(),d(f,{key:0},[u(`h3`,ue,n(r.$t(`daqDetail.k1p9gioa033`))+` `+n(e.driverCatalog.find(e=>e.kind===o.value.driver)?.label),1),u(`div`,de,[(s(!0),d(f,null,c(e.driverFields,e=>(s(),d(`label`,{key:e.key,class:`field`},[u(`span`,null,[_(n(e.label),1),e.required?(s(),d(`em`,fe,`*`)):h(``,!0)]),e.type===`select`?p((s(),d(`select`,{key:0,"onUpdate:modelValue":t=>l.value[e.key]=t,class:`input`},[(s(!0),d(f,null,c(e.options,e=>(s(),d(`option`,{key:e.value,value:e.value},n(e.label),9,me))),128))],8,pe)),[[v,l.value[e.key]]]):p((s(),d(`input`,{key:1,"onUpdate:modelValue":t=>l.value[e.key]=t,type:e.type===`number`?`number`:`text`,placeholder:e.placeholder,class:`input`},null,8,he)),[[x,l.value[e.key]]])]))),128))]),u(`div`,ge,[u(`button`,{class:`pill-btn`,disabled:e.testing,onClick:a[18]||=e=>i(`test`)},n(e.testing?r.$t(`daqDetail.k1fsh720043`):r.$t(`daqDetail.k1fstglk051`)),9,_e),e.testResult?(s(),d(`span`,{key:0,class:t([`test-out mono`,e.testResult.ok?`ok`:`bad`])},n(e.testResult.ok?`✓`:`✗`)+` `+n(e.testResult.message),3)):h(``,!0)])],64)):h(``,!0),u(`h3`,ve,n(r.$t(`daqDetail.k1ie6qju020`)),1),u(`div`,ye,[p(u(`select`,{"onUpdate:modelValue":a[19]||=e=>m.value=e,class:`input grow`},[u(`option`,be,n(r.$t(`daqDetail.kjobzu3021`)),1),(s(!0),d(f,null,c(e.availableDevices,e=>(s(),d(`option`,{key:e.id,value:e.id},n(e.name),9,xe))),128))],512),[[v,m.value]]),u(`button`,{class:`pill-btn`,onClick:a[20]||=e=>i(`bind-toggle`)},n(e.boundDeviceName?r.$t(`daqDetail.k479eh044`):r.$t(`daqDetail.k452a8052`)),1)])]))}}),[[`__scopeId`,`data-v-de819029`]]),{__name:`DaqDetailParamForm`}),Ce={class:`col-hist aw-tile pad`},we={class:`hist-hd`},Te={class:`sec`},Ee={class:`hist-ctl mono`},De=[`value`],Oe=[`title`],ke=[`placeholder`],Ae={class:`raw-table mono`},je=Object.assign(C(o({__name:`DaqDetailHistoryCard`,props:m({tsdb:{},buckets:{},historyPoints:{},decimals:{},minQueryMs:{},defaultQueryMs:{}},{bucketMs:{required:!0},bucketMsModifiers:{},refreshOverrideMs:{required:!0},refreshOverrideMsModifiers:{},canvasEl:{required:!0},canvasElModifiers:{}}),emits:m([`reload`],[`update:bucketMs`,`update:refreshOverrideMs`,`update:canvasEl`]),setup(t,{emit:r}){let i=r,o=a(t,`bucketMs`),l=a(t,`refreshOverrideMs`),m=a(t,`canvasEl`);return(r,a)=>(s(),d(`section`,Ce,[u(`div`,we,[u(`h3`,Te,n(r.$t(`daqDetail.k1i535i5034`))+n(t.tsdb)+`) `,1),u(`div`,Ee,[p(u(`select`,{"onUpdate:modelValue":a[0]||=e=>o.value=e,class:`input`},[(s(!0),d(f,null,c(t.buckets,e=>(s(),d(`option`,{key:e.ms,value:e.ms},n(e.label),9,De))),128))],512),[[v,o.value,void 0,{number:!0}]]),u(`label`,{class:`refresh-ctl`,title:r.$t(`daqDetail.k1rfrshint001`,{p0:t.minQueryMs})},[a[3]||=u(`span`,{class:`i-tabler-refresh`},null,-1),p(u(`input`,{"onUpdate:modelValue":a[1]||=e=>l.value=e,type:`number`,min:0,max:`600000`,step:`500`,placeholder:String(t.defaultQueryMs)},null,8,ke),[[b,l.value,void 0,{number:!0}]]),a[4]||=_(`ms `,-1)],8,Oe),u(`button`,{class:`pill-btn`,onClick:a[2]||=e=>i(`reload`)},n(r.$t(`daqDetail.k3x1jg022`)),1)])]),u(`canvas`,{ref_key:`canvasEl`,ref:m,class:`hist-canvas`},null,512),u(`table`,Ae,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,n(r.$t(`daqDetail.k40vsf023`)),1),u(`th`,null,n(r.$t(`daqDetail.k48v5024`)),1),u(`th`,null,n(r.$t(`daqDetail.k4bza025`)),1)])]),u(`tbody`,null,[(s(!0),d(f,null,c(t.historyPoints.filter(e=>e.value!=null).slice(-12).reverse(),(r,i)=>(s(),d(`tr`,{key:i},[u(`td`,null,n(e(w)(new Date(r.at).toISOString())),1),u(`td`,null,n(r.value.toFixed(t.decimals??2)),1),u(`td`,null,n(r.state),1)]))),128))])])]))}}),[[`__scopeId`,`data-v-24d96636`]]),{__name:`DaqDetailHistoryCard`}),Me={class:`aw-tile pad frames-tile`},Ne={class:`hist-hd`},Pe={class:`sec`},Fe={class:`mono frames-n`},Ie=[`viewBox`],Le=[`points`],Re={class:`raw-table mono`},ze={key:0,class:`gal`},Be=[`title`,`onClick`],Ve=[`src`],$={class:`mono`},He={key:1,class:`frames-empty`},Ue=[`src`],We=Object.assign(C(o({__name:`DaqDetailFramesTile`,props:{signalKind:{},frames:{},vecPath:{}},emits:[`reload`],setup(t,{emit:r}){let a=r,o=i(null),l=e=>w(new Date(e).toISOString()),p=e=>Object.entries(e.metrics??{}).slice(0,3).map(([e,t])=>`${e}=${t}`).join(` `);return(r,i)=>(s(),d(`section`,Me,[u(`div`,Ne,[u(`h3`,Pe,[_(n(t.signalKind===`image`?r.$t(`daqDetail.kfrm0001`):r.$t(`daqDetail.kfrm0002`))+` `,1),u(`span`,Fe,n(t.frames.length),1)]),u(`button`,{class:`pill-btn`,onClick:i[0]||=e=>a(`reload`)},n(r.$t(`daqDetail.k3x1jg022`)),1)]),t.signalKind===`vector`?(s(),d(f,{key:0},[(s(),d(`svg`,{class:`vec-svg`,viewBox:`0 0 ${e(320)} ${e(84)}`,preserveAspectRatio:`none`},[u(`polyline`,{points:t.vecPath,fill:`none`,stroke:`var(--accent)`,"stroke-width":`1.5`},null,8,Le)],8,Ie)),u(`table`,Re,[u(`thead`,null,[u(`tr`,null,[u(`th`,null,n(r.$t(`daqDetail.k40vsf023`)),1),u(`th`,null,n(r.$t(`daqDetail.kfrm0004`)),1),u(`th`,null,n(r.$t(`daqDetail.kfrm0005`)),1)])]),u(`tbody`,null,[(s(!0),d(f,null,c(t.frames.filter(e=>e.kind===`vector`).slice(0,12),e=>(s(),d(`tr`,{key:e.at},[u(`td`,null,n(l(e.at)),1),u(`td`,null,n(e.points?.length??0),1),u(`td`,null,n(p(e)),1)]))),128))])])],64)):(s(),d(f,{key:1},[t.frames.length?(s(),d(`div`,ze,[(s(!0),d(f,null,c(t.frames,e=>(s(),d(`figure`,{key:e.at,class:`gal-item`,title:r.$t(`daqDetail.kfrm0006`),onClick:t=>o.value=e},[u(`img`,{src:e.thumbUrl,loading:`lazy`,alt:`daq frame`},null,8,Ve),u(`figcaption`,$,n(l(e.at))+` · `+n(p(e)),1)],8,Be))),128))])):(s(),d(`p`,He,n(r.$t(`daqDetail.kfrm0003`)),1)),o.value?(s(),d(`div`,{key:2,class:`gal-full`,onClick:i[1]||=e=>o.value=null},[u(`img`,{src:o.value.contentUrl??o.value.thumbUrl,alt:`daq frame full`},null,8,Ue)])):h(``,!0)],64))]))}}),[[`__scopeId`,`data-v-3170b88f`]]),{__name:`DaqDetailFramesTile`}),Ge={class:`page`},Ke={class:`aw-kicker`},qe={class:`aw-page-head`},Je={key:0,class:`err`},Ye={key:1,class:`grid`},Xe=C(o({__name:`[id]`,setup(i){T({layout:`default`});let{daq:a,dcw:o,nodeId:c,node:f,tpl:p,signalKind:m,isFrameNode:v,stateLabel:y,effectiveState:b,driverPlanned:x}=k(),{form:S,driverCatalog:C,driverCfg:w,driverFields:j,testing:M,testResult:N,saving:P,doTest:F,saveParams:L}=A(c,f),{bindDeviceId:R,boundDeviceName:z,onBindToggle:B,availableDevices:V}=D(c,f),{historyPoints:H,bucketMs:U,BUCKETS:W,loadHistory:G,chartCanvas:K,liveCanvas:q,refreshOverrideMs:J}=O(c,f),{frames:Y,loadFrames:X,vecPath:Z}=E(c,v);return(i,T)=>{let E=te,D=I,O=Se,k=je,A=We;return s(),d(`div`,Ge,[u(`p`,Ke,[l(E,{to:`/daq`,class:`back`},{default:g(()=>[_(n(i.$t(`daqDetail.k1emg364001`)),1)]),_:1}),_(` / NODE `+n(e(c).slice(0,8).toUpperCase()),1)]),u(`div`,qe,[u(`h1`,null,n(e(f)?.name??e(c)),1),u(`span`,{class:t([`st-pill`,[e(b)()]])},n(e(y)[e(b)()]),3)]),!e(f)&&e(a).error?(s(),d(`p`,Je,[_(n(e(a).error)+`(`,1),l(E,{to:`/workshop`},{default:g(()=>[_(n(i.$t(`daqDetail.k1bhhheq002`)),1)]),_:1}),T[7]||=_(`) `,-1)])):h(``,!0),e(f)?(s(),d(`div`,Ye,[l(D,{"canvas-el":e(q),"onUpdate:canvasEl":T[0]||=e=>r(q)?q.value=e:null,node:e(f),tpl:e(p),"bound-device-name":e(z),"default-interval-ms":e(a).controller.defaultIntervalMs,"default-publish-ms":e(a).controller.defaultPublishIntervalMs,"driver-planned":e(x)},null,8,[`canvas-el`,`node`,`tpl`,`bound-device-name`,`default-interval-ms`,`default-publish-ms`,`driver-planned`]),l(O,{form:e(S),"onUpdate:form":T[1]||=e=>r(S)?S.value=e:null,"driver-cfg":e(w),"onUpdate:driverCfg":T[2]||=e=>r(w)?w.value=e:null,"bind-device-id":e(R),"onUpdate:bindDeviceId":T[3]||=e=>r(R)?R.value=e:null,lines:e(o).lines,"driver-catalog":e(C),"driver-fields":e(j),saving:e(P),testing:e(M),"test-result":e(N),"bound-device-name":e(z),"available-devices":e(V),onSave:e(L),onTest:e(F),onBindToggle:e(B)},null,8,[`form`,`driver-cfg`,`bind-device-id`,`lines`,`driver-catalog`,`driver-fields`,`saving`,`testing`,`test-result`,`bound-device-name`,`available-devices`,`onSave`,`onTest`,`onBindToggle`]),l(k,{"bucket-ms":e(U),"onUpdate:bucketMs":T[4]||=e=>r(U)?U.value=e:null,"refresh-override-ms":e(J),"onUpdate:refreshOverrideMs":T[5]||=e=>r(J)?J.value=e:null,"canvas-el":e(K),"onUpdate:canvasEl":T[6]||=e=>r(K)?K.value=e:null,tsdb:e(a).meta.tsdb,buckets:e(W),"history-points":e(H),decimals:e(f).decimals,"min-query-ms":e(a).controller.minQueryDisplayIntervalMs??500,"default-query-ms":e(a).controller.queryDisplayIntervalMs??5e3,onReload:e(G)},null,8,[`bucket-ms`,`refresh-override-ms`,`canvas-el`,`tsdb`,`buckets`,`history-points`,`decimals`,`min-query-ms`,`default-query-ms`,`onReload`])])):h(``,!0),e(v)?(s(),ee(A,{key:2,"signal-kind":e(m),frames:e(Y),"vec-path":e(Z),onReload:e(X)},null,8,[`signal-kind`,`frames`,`vec-path`,`onReload`])):h(``,!0)])}}}),[[`__scopeId`,`data-v-6ad2bd61`]]);export{Xe as default};
@@ -1 +1 @@
1
- import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{d as n}from"./C6lssmvl.js";import{t as r}from"./CCI-fwcS2.js";import{t as i}from"./R1g64DNi2.js";var a=e({useDaqDetailBinding:()=>o});function o(e,a){let o=r(),s=i(),c=t(``),l=n(()=>(a.value?.deviceIds??(a.value?.deviceBindingId?[a.value.deviceBindingId]:[])).map(e=>s.twins.find(t=>t.id===e)?.name??`${e.slice(0,8)}…`).join(` / `));function u(){o.bindNode(e.value,a.value?.deviceBindingId?null:c.value||null)}return{bindDeviceId:c,boundDeviceName:l,onBindToggle:u,availableDevices:n(()=>s.twins.filter(e=>e.kind!==`daq`&&e.id!==a.value?.id))}}export{a as n,o as t};
1
+ import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{d as n}from"./C6lssmvl.js";import{t as r}from"./CTGJHZ8X2.js";import{t as i}from"./R1g64DNi2.js";var a=e({useDaqDetailBinding:()=>o});function o(e,a){let o=r(),s=i(),c=t(``),l=n(()=>(a.value?.deviceIds??(a.value?.deviceBindingId?[a.value.deviceBindingId]:[])).map(e=>s.twins.find(t=>t.id===e)?.name??`${e.slice(0,8)}…`).join(` / `));function u(){o.bindNode(e.value,a.value?.deviceBindingId?null:c.value||null)}return{bindDeviceId:c,boundDeviceName:l,onBindToggle:u,availableDevices:n(()=>s.twins.filter(e=>e.kind!==`daq`&&e.id!==a.value?.id))}}export{a as n,o as t};
@@ -1 +1 @@
1
- import{t as e}from"./DK3Fl9T5.js";import{P as t,R as n,d as r}from"./C6lssmvl.js";import{a as i}from"./BtumQhZK.js";import{n as a}from"./D1MkndMZ.js";import{a as o,t as s}from"./CCI-fwcS2.js";import{t as c}from"./gUYi1hLJ2.js";import{t as l}from"./R1g64DNi2.js";var u=e({useDaqDetailNode:()=>d});function d(){let{t:e}=a(),u=i(),d=r(()=>String(u.params.id??``)),f=s(),p=c();p.load();let m=l(),h=r(()=>f.nodeById(d.value)??null),g=r(()=>{let e=h.value?o(h.value.templateRef):``;return f.templates.find(t=>t.key===e)??null}),_=r(()=>g.value?.signalKind??`scalar`),v=r(()=>_.value!==`scalar`),y=r(()=>({ok:e(`daqDetail.k41k5c026`),warn:e(`daqDetail.k49z8v027`),alarm:e(`daqDetail.k3xmid028`),offline:e(`daqDetail.k44c2n029`)})),b=()=>{let e=h.value;return!e||!f.controller.running||!e.enabled?`offline`:e.state};function x(e){return f.meta.drivers.find(t=>t.kind===e)?.status===`planned`}let S=null;return n(()=>{S=f.ensureWsFeed(),f.load(),m.load()}),t(()=>S?.()),{daq:f,dcw:p,deviceTwins:m,nodeId:d,node:h,tpl:g,signalKind:_,isFrameNode:v,stateLabel:y,effectiveState:b,driverPlanned:x}}export{u as n,d as t};
1
+ import{t as e}from"./DK3Fl9T5.js";import{P as t,R as n,d as r}from"./C6lssmvl.js";import{a as i}from"./BtumQhZK.js";import{n as a}from"./D1MkndMZ.js";import{a as o,t as s}from"./CTGJHZ8X2.js";import{t as c}from"./DxDqd6T42.js";import{t as l}from"./R1g64DNi2.js";var u=e({useDaqDetailNode:()=>d});function d(){let{t:e}=a(),u=i(),d=r(()=>String(u.params.id??``)),f=s(),p=c();p.load();let m=l(),h=r(()=>f.nodeById(d.value)??null),g=r(()=>{let e=h.value?o(h.value.templateRef):``;return f.templates.find(t=>t.key===e)??null}),_=r(()=>g.value?.signalKind??`scalar`),v=r(()=>_.value!==`scalar`),y=r(()=>({ok:e(`daqDetail.k41k5c026`),warn:e(`daqDetail.k49z8v027`),alarm:e(`daqDetail.k3xmid028`),offline:e(`daqDetail.k44c2n029`)})),b=()=>{let e=h.value;return!e||!f.controller.running||!e.enabled?`offline`:e.state};function x(e){return f.meta.drivers.find(t=>t.kind===e)?.status===`planned`}let S=null;return n(()=>{S=f.ensureWsFeed(),f.load(),m.load()}),t(()=>S?.()),{daq:f,dcw:p,deviceTwins:m,nodeId:d,node:h,tpl:g,signalKind:_,isFrameNode:v,stateLabel:y,effectiveState:b,driverPlanned:x}}export{u as n,d as t};
@@ -1 +1 @@
1
- import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{d as n}from"./C6lssmvl.js";import{t as r}from"./gUYi1hLJ2.js";var i=e({useDcwFilter:()=>a});function a(e){let i=r(),a=t(`all`),o=t(``);return{filterState:a,searchText:o,runningCount:n(()=>e.value.filter(e=>i.lineStateOf(e.line.id).active).length),shownCards:n(()=>e.value.filter(e=>{let t=i.lineStateOf(e.line.id).active;if(a.value===`running`&&!t||a.value===`idle`&&t)return!1;let n=o.value.trim().toLowerCase();return!(n&&!e.line.name.toLowerCase().includes(n)&&!(e.line.description??``).toLowerCase().includes(n))}))}}export{i as n,a as t};
1
+ import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{d as n}from"./C6lssmvl.js";import{t as r}from"./DxDqd6T42.js";var i=e({useDcwFilter:()=>a});function a(e){let i=r(),a=t(`all`),o=t(``);return{filterState:a,searchText:o,runningCount:n(()=>e.value.filter(e=>i.lineStateOf(e.line.id).active).length),shownCards:n(()=>e.value.filter(e=>{let t=i.lineStateOf(e.line.id).active;if(a.value===`running`&&!t||a.value===`idle`&&t)return!1;let n=o.value.trim().toLowerCase();return!(n&&!e.line.name.toLowerCase().includes(n)&&!(e.line.description??``).toLowerCase().includes(n))}))}}export{i as n,a as t};
@@ -1 +1 @@
1
- import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{d as n}from"./C6lssmvl.js";import{t as r}from"./R5Pz7BqB.js";import{i,t as a}from"./CCI-fwcS2.js";import{r as o}from"./Du9v6qGB2.js";var s=e({useDaqTemplateIconLabels:()=>c,useDaqTemplates:()=>l});function c(e){return{thermo:e(`daq.k422b8079`),pressure:e(`daq.k3x6ff080`),tension:e(`daq.k3z9xc081`),encoder:e(`daq.k3subk4082`),camera:e(`daq.k47atw083`),gateway:e(`daq.kz7yhbj084`)}}function l(e){let s=a(),c=t(!1),l=t(null),u=t(!1),d=t(``),f=t(``),p=t({name:``,ch:``,code:``,unit:``,min:0,max:100,base:50,amp:2,decimals:2,icon:`thermo`}),m=n(()=>s.templates.filter(e=>!e.builtin)),h=n(()=>s.templates.filter(e=>e.builtin));function g(t,n=!1){p.value.name=n?e(`daq.k2hbo3c126`,{p0:o(e,t)}):o(e,t),p.value.ch=t.ch,p.value.code=t.code,p.value.unit=t.unit,p.value.min=t.min,p.value.max=t.max,p.value.base=t.base,p.value.amp=t.amp,p.value.decimals=t.decimals,p.value.icon=t.icon}function _(){l.value=null,d.value=``,f.value=``,g({key:``,name:``,code:``,ch:``,unit:``,base:50,amp:2,min:0,max:100,decimals:2,icon:`thermo`})}function v(e){l.value=e.key,d.value=``,g(e)}function y(e){l.value=null,d.value=``,g(e,!0)}async function b(){u.value=!0,d.value=``;try{let e=e=>{let t=Number(e);return e===``||e==null||!Number.isFinite(t)?void 0:t},t=p.value,n={name:t.name.trim(),ch:t.ch.trim()||void 0,code:t.code.trim()||void 0,unit:t.unit.trim(),min:e(t.min),max:e(t.max),base:e(t.base),amp:e(t.amp),decimals:e(t.decimals),icon:t.icon};l.value?await s.updateTemplate(l.value,n):await s.createTemplate(n),_()}catch(e){d.value=r(e)}finally{u.value=!1}}async function x(e){if(f.value!==e.key){f.value=e.key;return}try{await s.removeTemplate(e.key)}catch(e){d.value=r(e)}finally{f.value=``}}return{tplOpen:c,tplEditing:l,tplSaving:u,tplError:d,confirmingDel:f,tplForm:p,iconChoices:i,customTpls:m,builtinTpls:h,resetTplForm:_,editTpl:v,copyTpl:y,saveTpl:b,askDelTpl:x}}export{l as n,s as r,c as t};
1
+ import{t as e}from"./DK3Fl9T5.js";import{v as t}from"./CavpkQb0.js";import{d as n}from"./C6lssmvl.js";import{t as r}from"./R5Pz7BqB.js";import{i,t as a}from"./CTGJHZ8X2.js";import{r as o}from"./Du9v6qGB2.js";var s=e({useDaqTemplateIconLabels:()=>c,useDaqTemplates:()=>l});function c(e){return{thermo:e(`daq.k422b8079`),pressure:e(`daq.k3x6ff080`),tension:e(`daq.k3z9xc081`),encoder:e(`daq.k3subk4082`),camera:e(`daq.k47atw083`),gateway:e(`daq.kz7yhbj084`)}}function l(e){let s=a(),c=t(!1),l=t(null),u=t(!1),d=t(``),f=t(``),p=t({name:``,ch:``,code:``,unit:``,min:0,max:100,base:50,amp:2,decimals:2,icon:`thermo`}),m=n(()=>s.templates.filter(e=>!e.builtin)),h=n(()=>s.templates.filter(e=>e.builtin));function g(t,n=!1){p.value.name=n?e(`daq.k2hbo3c126`,{p0:o(e,t)}):o(e,t),p.value.ch=t.ch,p.value.code=t.code,p.value.unit=t.unit,p.value.min=t.min,p.value.max=t.max,p.value.base=t.base,p.value.amp=t.amp,p.value.decimals=t.decimals,p.value.icon=t.icon}function _(){l.value=null,d.value=``,f.value=``,g({key:``,name:``,code:``,ch:``,unit:``,base:50,amp:2,min:0,max:100,decimals:2,icon:`thermo`})}function v(e){l.value=e.key,d.value=``,g(e)}function y(e){l.value=null,d.value=``,g(e,!0)}async function b(){u.value=!0,d.value=``;try{let e=e=>{let t=Number(e);return e===``||e==null||!Number.isFinite(t)?void 0:t},t=p.value,n={name:t.name.trim(),ch:t.ch.trim()||void 0,code:t.code.trim()||void 0,unit:t.unit.trim(),min:e(t.min),max:e(t.max),base:e(t.base),amp:e(t.amp),decimals:e(t.decimals),icon:t.icon};l.value?await s.updateTemplate(l.value,n):await s.createTemplate(n),_()}catch(e){d.value=r(e)}finally{u.value=!1}}async function x(e){if(f.value!==e.key){f.value=e.key;return}try{await s.removeTemplate(e.key)}catch(e){d.value=r(e)}finally{f.value=``}}return{tplOpen:c,tplEditing:l,tplSaving:u,tplError:d,confirmingDel:f,tplForm:p,iconChoices:i,customTpls:m,builtinTpls:h,resetTplForm:_,editTpl:v,copyTpl:y,saveTpl:b,askDelTpl:x}}export{l as n,s as r,c as t};
@@ -1 +1 @@
1
- import{t as e}from"./DK3Fl9T5.js";import{t}from"./gUYi1hLJ2.js";var n=e({useLogsScope:()=>r});function r(){let e=t();function n(t){return e.products.filter(e=>!t||e.lineId===t)}function r(t,n){return e.recipes.filter(e=>(!t||e.lineId===t)&&(!n||e.productId===n))}function i(t){return e.lines.find(e=>e.id===t)?.name??``}function a(t){return e.products.find(e=>e.id===t)?.name??``}function o(t){return e.recipes.find(e=>e.id===t)?.name??``}return{lines:e.lines,productsOfLine:n,recipesOfScope:r,lineName:i,productName:a,recipeName:o}}export{n,r as t};
1
+ import{t as e}from"./DK3Fl9T5.js";import{t}from"./DxDqd6T42.js";var n=e({useLogsScope:()=>r});function r(){let e=t();function n(t){return e.products.filter(e=>!t||e.lineId===t)}function r(t,n){return e.recipes.filter(e=>(!t||e.lineId===t)&&(!n||e.productId===n))}function i(t){return e.lines.find(e=>e.id===t)?.name??``}function a(t){return e.products.find(e=>e.id===t)?.name??``}function o(t){return e.recipes.find(e=>e.id===t)?.name??``}return{lines:e.lines,productsOfLine:n,recipesOfScope:r,lineName:i,productName:a,recipeName:o}}export{n,r as t};