agentworkshop 0.7.23 → 0.7.27

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 (344) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/0jKrzLuM.js +19 -0
  3. package/.output/public/_nuxt/2jaJHWIJ.js +1 -0
  4. package/.output/public/_nuxt/{Cor9siSf.js → 6PZPfFcO.js} +1 -1
  5. package/.output/public/_nuxt/B7gZokg82.js +209 -0
  6. package/.output/public/_nuxt/B8kt898d.js +1 -0
  7. package/.output/public/_nuxt/{B-xskWta.js → BCJFMBQ6.js} +1 -1
  8. package/.output/public/_nuxt/BFGpEo8S.js +1 -0
  9. package/.output/public/_nuxt/BG4zduPf.js +14 -0
  10. package/.output/public/_nuxt/{DNxVTfhe.js → BGhOrgle.js} +1 -1
  11. package/.output/public/_nuxt/{n3vMFfrv.js → BHcpzI2n.js} +3 -3
  12. package/.output/public/_nuxt/{CEHmSufQ.js → BTLEvDxM.js} +1 -1
  13. package/.output/public/_nuxt/{CYBq3kS7.js → BWyR3awA.js} +1 -1
  14. package/.output/public/_nuxt/Bc89zKq2.js +1 -0
  15. package/.output/public/_nuxt/BetmGSO4.js +1 -0
  16. package/.output/public/_nuxt/{DAR70Lf5.js → BgCrZKv_2.js} +1 -1
  17. package/.output/public/_nuxt/BowTbasd.js +1 -0
  18. package/.output/public/_nuxt/BvtknqSC2.js +1 -0
  19. package/.output/public/_nuxt/CJviSvm-.js +1 -0
  20. package/.output/public/_nuxt/CTfqWGdy.js +1 -0
  21. package/.output/public/_nuxt/Cb3SnTM8.js +1 -0
  22. package/.output/public/_nuxt/Chc5pfAA.js +1 -0
  23. package/.output/public/_nuxt/CmHzfVc5.js +3 -0
  24. package/.output/public/_nuxt/Cn3J3NXR.js +23 -0
  25. package/.output/public/_nuxt/CobSUzQv.js +2 -0
  26. package/.output/public/_nuxt/{kZV5TQvh2.js → CucID8qg2.js} +1 -1
  27. package/.output/public/_nuxt/{CfVAr2nf.js → Cz9gD2Yo.js} +1 -1
  28. package/.output/public/_nuxt/{E88a-JCG.js → DGAOugLt.js} +1 -1
  29. package/.output/public/_nuxt/DHbTyoAV.js +1 -0
  30. package/.output/public/_nuxt/{BxtpDtzC.js → DNQF_TXX.js} +1 -1
  31. package/.output/public/_nuxt/DfLUN8kY.js +1 -0
  32. package/.output/public/_nuxt/DjU9Dx5Y.js +1 -0
  33. package/.output/public/_nuxt/DnziMlcX.js +1 -0
  34. package/.output/public/_nuxt/{BBwMH_hG.js → DoAlYsiF.js} +1 -1
  35. package/.output/public/_nuxt/{DA4lxCWC2.js → DosOJEmZ2.js} +2 -2
  36. package/.output/public/_nuxt/{DWcEk1ur2.js → DvgKXPgu2.js} +1 -1
  37. package/.output/public/_nuxt/{ed5qX-x5.js → Q_SJDSgx.js} +1 -1
  38. package/.output/public/_nuxt/{TownView.zu2rU5nS.css → TownView.CtskuMXS.css} +1 -1
  39. package/.output/public/_nuxt/XY2z78rj.js +1 -0
  40. package/.output/public/_nuxt/_id_.DdbYeLqn.css +1 -0
  41. package/.output/public/_nuxt/bFnZa2yd.js +1 -0
  42. package/.output/public/_nuxt/builds/latest.json +1 -1
  43. package/.output/public/_nuxt/builds/meta/f7a8e33d-5422-45ac-895d-27168f97e3ad.json +1 -0
  44. package/.output/public/_nuxt/daq.DGV9QS8d.css +1 -0
  45. package/.output/public/_nuxt/entry.BN02X8iR.css +1 -0
  46. package/.output/public/_nuxt/monitor.B--1dPzs.css +1 -0
  47. package/.output/public/_nuxt/permissions.B1pjGChZ.css +1 -0
  48. package/.output/public/_nuxt/plugins.DpCuwaJt.css +1 -0
  49. package/.output/public/_nuxt/rkVgzg62.js +1 -0
  50. package/.output/public/_nuxt/settings.W6qrYAui.css +1 -0
  51. package/.output/public/_nuxt/teams.BBXVkyKq.css +1 -0
  52. package/.output/public/_nuxt/tokens.xRb1fSPU.css +1 -0
  53. package/.output/public/_nuxt/users.DuAt_Zwf.css +1 -0
  54. package/.output/public/_nuxt/workshop.BJg84pOK.css +1 -0
  55. package/.output/public/assets/game/character/yangyang-walk.glb +0 -0
  56. package/.output/server/chunks/_/host-bindings.mjs +1 -1
  57. package/.output/server/chunks/_/nitro.mjs +1073 -925
  58. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  59. package/.output/server/chunks/build/{OmpTerminalPanel-Ban3yJZ4.mjs → OmpTerminalPanel-Cw_Vw9oO.mjs} +3 -3
  60. package/.output/server/chunks/build/{OmpTerminalPanel-Ban3yJZ4.mjs.map → OmpTerminalPanel-Cw_Vw9oO.mjs.map} +1 -1
  61. package/.output/server/chunks/build/{TownView-DxeQe1Bl.mjs → TownView-ftIylqiD.mjs} +178 -151
  62. package/.output/server/chunks/build/{TownView-DxeQe1Bl.mjs.map → TownView-ftIylqiD.mjs.map} +1 -1
  63. package/.output/server/chunks/build/{_id_-DQDqj-cZ.mjs → _id_-3Axz2-gV.mjs} +35 -35
  64. package/.output/server/chunks/build/{_id_-DQDqj-cZ.mjs.map → _id_-3Axz2-gV.mjs.map} +1 -1
  65. package/.output/server/chunks/build/{_id_-DY6v6sqB.mjs → _id_-CahfkmEt.mjs} +5 -5
  66. package/.output/server/chunks/build/{_id_-DY6v6sqB.mjs.map → _id_-CahfkmEt.mjs.map} +1 -1
  67. package/.output/server/chunks/build/{_wsId_-C2O5zZsI.mjs → _wsId_-BymlQhzS.mjs} +13 -15
  68. package/.output/server/chunks/build/{_wsId_-C2O5zZsI.mjs.map → _wsId_-BymlQhzS.mjs.map} +1 -1
  69. package/.output/server/chunks/build/{agents--6bzGtES.mjs → agents-DuMiSWKp.mjs} +7 -9
  70. package/.output/server/chunks/build/agents-DuMiSWKp.mjs.map +1 -0
  71. package/.output/server/chunks/build/button-DEcZFcqN.mjs +1 -1
  72. package/.output/server/chunks/build/{card-CCPQoKlh.mjs → card-Dipvaykh.mjs} +4 -4
  73. package/.output/server/chunks/build/{card-CCPQoKlh.mjs.map → card-Dipvaykh.mjs.map} +1 -1
  74. package/.output/server/chunks/build/{channel-templates-C1Bb-U75.mjs → channel-templates-BStqJ-of.mjs} +5 -7
  75. package/.output/server/chunks/build/channel-templates-BStqJ-of.mjs.map +1 -0
  76. package/.output/server/chunks/build/{checkbox-Dv1kjaUZ.mjs → checkbox-C1gABOca.mjs} +5 -5
  77. package/.output/server/chunks/build/{checkbox-Dv1kjaUZ.mjs.map → checkbox-C1gABOca.mjs.map} +1 -1
  78. package/.output/server/chunks/build/{daq-B-3xCp_2.mjs → daq-ChYCABz1.mjs} +312 -426
  79. package/.output/server/chunks/build/daq-ChYCABz1.mjs.map +1 -0
  80. package/.output/server/chunks/build/{dcw-BL2dhuz7.mjs → dcw-CcQNGggh.mjs} +3 -3
  81. package/.output/server/chunks/build/{dcw-BL2dhuz7.mjs.map → dcw-CcQNGggh.mjs.map} +1 -1
  82. package/.output/server/chunks/build/{default-DdV642BY.mjs → default-95-zOTPt.mjs} +3 -4
  83. package/.output/server/chunks/build/{default-DdV642BY.mjs.map → default-95-zOTPt.mjs.map} +1 -1
  84. package/.output/server/chunks/build/dropdown-vhn1NPFs.mjs +1 -1
  85. package/.output/server/chunks/build/{input-number-CZ3ZrCsy.mjs → input-number-Bd55elNN.mjs} +3 -3
  86. package/.output/server/chunks/build/{input-number-CZ3ZrCsy.mjs.map → input-number-Bd55elNN.mjs.map} +1 -1
  87. package/.output/server/chunks/build/{input-DxDqeyQW.mjs → input-sf_BT6o6.mjs} +553 -5
  88. package/.output/server/chunks/build/input-sf_BT6o6.mjs.map +1 -0
  89. package/.output/server/chunks/build/{logs-Dto_umFY.mjs → logs-D-2UyGtE.mjs} +3 -3
  90. package/.output/server/chunks/build/{logs-Dto_umFY.mjs.map → logs-D-2UyGtE.mjs.map} +1 -1
  91. package/.output/server/chunks/build/menu-WCrlpYVh.mjs +2 -2
  92. package/.output/server/chunks/build/modal-yvUquPj5.mjs +2 -2
  93. package/.output/server/chunks/build/{monitor-miqq9xHB.mjs → monitor-mfG5jBtz.mjs} +70 -192
  94. package/.output/server/chunks/build/monitor-mfG5jBtz.mjs.map +1 -0
  95. package/.output/server/chunks/build/{pages-D9tOoJsf.mjs → pages-Dfosfchr.mjs} +5 -6
  96. package/.output/server/chunks/build/pages-Dfosfchr.mjs.map +1 -0
  97. package/.output/server/chunks/build/{permissions-CxEgXic0.mjs → permissions-B-hhZuzm.mjs} +288 -194
  98. package/.output/server/chunks/build/permissions-B-hhZuzm.mjs.map +1 -0
  99. package/.output/server/chunks/build/{plugins-wLIKHcIE.mjs → plugins-DZR0T4Mh.mjs} +17 -17
  100. package/.output/server/chunks/build/{plugins-wLIKHcIE.mjs.map → plugins-DZR0T4Mh.mjs.map} +1 -1
  101. package/.output/server/chunks/build/popconfirm-CRaHcz5O.mjs +1 -1
  102. package/.output/server/chunks/build/{segmented-ChmQZwz6.mjs → segmented-LPPREMtZ.mjs} +336 -5
  103. package/.output/server/chunks/build/{segmented-ChmQZwz6.mjs.map → segmented-LPPREMtZ.mjs.map} +1 -1
  104. package/.output/server/chunks/build/{settings-BPBll_7K.mjs → settings-BajN9TQW.mjs} +254 -27
  105. package/.output/server/chunks/build/settings-BajN9TQW.mjs.map +1 -0
  106. package/.output/server/chunks/build/space-CCBYAkXt.mjs +1 -1
  107. package/.output/server/chunks/build/switch-CelRXpcy.mjs +1 -1
  108. package/.output/server/chunks/build/{table-BtksyDlQ.mjs → table-Bf1r2JjE.mjs} +5 -5
  109. package/.output/server/chunks/build/{table-BtksyDlQ.mjs.map → table-Bf1r2JjE.mjs.map} +1 -1
  110. package/.output/server/chunks/build/{tabs-DQv-_-R6.mjs → tabs-BM3tAh_J.mjs} +2 -2
  111. package/.output/server/chunks/build/{tabs-DQv-_-R6.mjs.map → tabs-BM3tAh_J.mjs.map} +1 -1
  112. package/.output/server/chunks/build/{tag-A0tZ2Ouq.mjs → tag-NO9jEqKy.mjs} +3 -3
  113. package/.output/server/chunks/build/{tag-A0tZ2Ouq.mjs.map → tag-NO9jEqKy.mjs.map} +1 -1
  114. package/.output/server/chunks/build/{teams-DD8ZXTKL.mjs → teams-t2SkRlJP.mjs} +349 -51
  115. package/.output/server/chunks/build/teams-t2SkRlJP.mjs.map +1 -0
  116. package/.output/server/chunks/build/{tokens-Dxnuw96_.mjs → tokens-DiCojbN8.mjs} +296 -200
  117. package/.output/server/chunks/build/tokens-DiCojbN8.mjs.map +1 -0
  118. package/.output/server/chunks/build/{town-Dsh0jlwZ.mjs → town-C7QM8DYK.mjs} +5 -5
  119. package/.output/server/chunks/build/{town-Dsh0jlwZ.mjs.map → town-C7QM8DYK.mjs.map} +1 -1
  120. package/.output/server/chunks/build/{useDaqStream-DkRL3tEW.mjs → useDaqStream-BeA2X8KR.mjs} +26 -11
  121. package/.output/server/chunks/build/useDaqStream-BeA2X8KR.mjs.map +1 -0
  122. package/.output/server/chunks/build/{useDcwStream-DyB2ufQI.mjs → useDcwStream-BJW_MitY.mjs} +14 -6
  123. package/.output/server/chunks/build/useDcwStream-BJW_MitY.mjs.map +1 -0
  124. package/.output/server/chunks/build/{useDeviceTwins-ZbT86L9O.mjs → useDeviceTwins-Dwz_EY_i.mjs} +2 -2
  125. package/.output/server/chunks/build/{useDeviceTwins-ZbT86L9O.mjs.map → useDeviceTwins-Dwz_EY_i.mjs.map} +1 -1
  126. package/.output/server/chunks/build/{useOpsLog-8HCYFb6n.mjs → useOpsLog-Dm8QEb1I.mjs} +2 -2
  127. package/.output/server/chunks/build/{useOpsLog-8HCYFb6n.mjs.map → useOpsLog-Dm8QEb1I.mjs.map} +1 -1
  128. package/.output/server/chunks/build/{useWorkshopApi-D2gq06N2.mjs → useWorkshopApi-B-L3MmIX.mjs} +9 -2
  129. package/.output/server/chunks/build/{useWorkshopApi-D2gq06N2.mjs.map → useWorkshopApi-B-L3MmIX.mjs.map} +1 -1
  130. package/.output/server/chunks/build/{users-D6RNylrW.mjs → users-B9SAdEtH.mjs} +12 -13
  131. package/.output/server/chunks/build/users-B9SAdEtH.mjs.map +1 -0
  132. package/.output/server/chunks/build/{workshop-CTcYDq2i.mjs → workshop-81xhz368.mjs} +21 -22
  133. package/.output/server/chunks/build/workshop-81xhz368.mjs.map +1 -0
  134. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs +14 -2
  135. package/.output/server/chunks/routes/api/plugins/_name/_...path_.mjs.map +1 -1
  136. package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
  137. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs +40 -0
  138. package/.output/server/chunks/routes/api/workshop/channels/_id/index.put.mjs.map +1 -0
  139. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs +21 -9
  140. package/.output/server/chunks/routes/api/workshop/channels/_id/index4.get.mjs.map +1 -1
  141. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs +33 -0
  142. package/.output/server/chunks/routes/api/workshop/channels/_id/index5.get.mjs.map +1 -0
  143. package/.output/server/chunks/routes/api/workshop/channels/_id/terminals.get.mjs +1 -1
  144. package/.output/server/chunks/routes/api/workshop/channels.post.mjs +15 -1
  145. package/.output/server/chunks/routes/api/workshop/channels.post.mjs.map +1 -1
  146. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
  147. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +1 -1
  148. package/.output/server/chunks/routes/api/workshop/daq/_id/frames/content.get.mjs +1 -1
  149. package/.output/server/chunks/routes/api/workshop/daq/_id/frames.get.mjs +1 -1
  150. package/.output/server/chunks/routes/api/workshop/daq/_id/samples.get.mjs +1 -1
  151. package/.output/server/chunks/routes/api/workshop/daq/_id/test.post.mjs +1 -1
  152. package/.output/server/chunks/routes/api/workshop/daq/_id_.delete.mjs +1 -1
  153. package/.output/server/chunks/routes/api/workshop/daq/_id_.patch.mjs +1 -1
  154. package/.output/server/chunks/routes/api/workshop/daq/alarms/_id/ack.post.mjs +1 -1
  155. package/.output/server/chunks/routes/api/workshop/daq/controller.post.mjs +1 -1
  156. package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs +1 -1
  157. package/.output/server/chunks/routes/api/workshop/daq/infra/reconnect.post.mjs +1 -1
  158. package/.output/server/chunks/routes/api/workshop/daq/infra.get.mjs +1 -1
  159. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs +1 -1
  160. package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs +1 -1
  161. package/.output/server/chunks/routes/api/workshop/daq/test-driver.post.mjs +1 -1
  162. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  163. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +1 -1
  164. package/.output/server/chunks/routes/api/workshop/dcw/_id/param-ledger.get.mjs +1 -1
  165. package/.output/server/chunks/routes/api/workshop/dcw/_id/read.post.mjs +1 -1
  166. package/.output/server/chunks/routes/api/workshop/dcw/_id/test.post.mjs +1 -1
  167. package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +1 -1
  168. package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +1 -1
  169. package/.output/server/chunks/routes/api/workshop/dcw/_id_.patch.mjs +1 -1
  170. package/.output/server/chunks/routes/api/workshop/dcw/controller.post.mjs +1 -1
  171. package/.output/server/chunks/routes/api/workshop/dcw/index.get.mjs +1 -1
  172. package/.output/server/chunks/routes/api/workshop/dcw/index.post.mjs +1 -1
  173. package/.output/server/chunks/routes/api/workshop/dcw/index2.get.mjs +1 -1
  174. package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +1 -1
  175. package/.output/server/chunks/routes/api/workshop/dcw/index3.get.mjs +1 -1
  176. package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +1 -1
  177. package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +1 -1
  178. package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +1 -1
  179. package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +1 -1
  180. package/.output/server/chunks/routes/api/workshop/dcw/journal/node/_nodeId/rollback.post.mjs +1 -1
  181. package/.output/server/chunks/routes/api/workshop/dcw/line/query.get.mjs +1 -1
  182. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/start.post.mjs +1 -1
  183. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id/stop.post.mjs +1 -1
  184. package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.delete.mjs +1 -1
  185. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/judge.post.mjs +1 -1
  186. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/rollback.post.mjs +1 -1
  187. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id/series.get.mjs +1 -1
  188. package/.output/server/chunks/routes/api/workshop/dcw/optimizations/_id_.get.mjs +1 -1
  189. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.delete.mjs +1 -1
  190. package/.output/server/chunks/routes/api/workshop/dcw/products/_id_.patch.mjs +1 -1
  191. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/apply.post.mjs +1 -1
  192. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/mark-good.post.mjs +1 -1
  193. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id/rollback-good.post.mjs +1 -1
  194. package/.output/server/chunks/routes/api/workshop/dcw/recipes/_id_.delete.mjs +1 -1
  195. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/close.post.mjs +1 -1
  196. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/data.get.mjs +1 -1
  197. package/.output/server/chunks/routes/api/workshop/dcw/runs/_id/rollback.post.mjs +1 -1
  198. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
  199. package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
  200. package/.output/server/chunks/routes/api/workshop/dcw/test-driver.post.mjs +1 -1
  201. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.delete.mjs +1 -1
  202. package/.output/server/chunks/routes/api/workshop/device-twins/_id_.patch.mjs +1 -1
  203. package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
  204. package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
  205. package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
  206. package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
  207. package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
  208. package/.output/server/chunks/routes/api/workshop/index3.post.mjs +1 -1
  209. package/.output/server/chunks/routes/api/workshop/index4.get.mjs +1 -1
  210. package/.output/server/chunks/routes/api/workshop/index4.post.mjs +1 -1
  211. package/.output/server/chunks/routes/api/workshop/index5.get.mjs +1 -1
  212. package/.output/server/chunks/routes/api/workshop/index5.post.mjs +1 -1
  213. package/.output/server/chunks/routes/api/workshop/index6.post.mjs +1 -1
  214. package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
  215. package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
  216. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
  217. package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
  218. package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
  219. package/.output/server/chunks/routes/renderer.mjs +3 -3
  220. package/.output/server/chunks/virtual/entry.mjs +381 -438
  221. package/.output/server/chunks/virtual/entry.mjs.map +1 -1
  222. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  223. package/.output/server/package.json +1 -1
  224. package/app/app.vue +7 -0
  225. package/app/assets/css/main.css +12 -1
  226. package/app/components/workshop/DaqNodeRow.vue +398 -0
  227. package/app/components/workshop/town/ModelPreview3D.vue +26 -4
  228. package/app/components/workshop/town/TownScene3D.ts +60 -12
  229. package/app/components/workshop/town/TownView.vue +4 -3
  230. package/app/composables/workshop/useCharacterAssets.ts +1 -0
  231. package/app/composables/workshop/useDaqStream.ts +24 -5
  232. package/app/composables/workshop/useDcwStream.ts +13 -4
  233. package/app/composables/workshop/useWorkshopApi.ts +294 -259
  234. package/app/pages/daq/[id].vue +27 -3
  235. package/app/pages/daq/index.vue +8 -355
  236. package/app/pages/monitor.vue +56 -68
  237. package/app/pages/permissions/index.vue +86 -82
  238. package/app/pages/plugins/index.vue +12 -7
  239. package/app/pages/settings.vue +253 -2
  240. package/app/pages/tokens.vue +94 -96
  241. package/app/pages/users.vue +10 -18
  242. package/app/pages/workshop/index.vue +34 -5
  243. package/app/pages/workshop/teams.vue +212 -2
  244. package/i18n/dicts/_en.json +361 -1
  245. package/i18n/dicts/plugins.json +10 -0
  246. package/i18n/dicts/settings.json +1 -0
  247. package/i18n/dicts/teamPlugins.json +10 -0
  248. package/i18n/locales/en.ts +1861 -1901
  249. package/i18n/locales/zh-CN.ts +1789 -1830
  250. package/package.json +149 -148
  251. package/public/assets/game/character/yangyang-walk.glb +0 -0
  252. package/scripts/_dbg-cpu-profile.mjs +53 -0
  253. package/scripts/_dbg-logs-ui-e2e.py +3 -2
  254. package/scripts/_dbg-render-perf.mjs +142 -0
  255. package/scripts/_dbg-render-regression.mjs +130 -0
  256. package/scripts/_dbg-ui-survey.py +52 -0
  257. package/scripts/i18n-merge.mjs +152 -30
  258. package/scripts/production-closed-loop-e2e.mjs +254 -0
  259. package/scripts/team-plugins-api-smoke.mjs +149 -0
  260. package/scripts/three-system-e2e.mjs +448 -0
  261. package/server/api/plugins/[name]/[...path].ts +46 -31
  262. package/server/api/workshop/channels/[id]/plugins/index.get.ts +35 -0
  263. package/server/api/workshop/channels/[id]/plugins/index.put.ts +39 -0
  264. package/server/api/workshop/channels.post.ts +17 -0
  265. package/server/data/dcw-lines.json +14 -0
  266. package/server/data/dcw-products.json +14 -0
  267. package/server/data/dcw-recipes.json +23 -1
  268. package/server/data/dcw-rollback.json +585 -10
  269. package/server/data/dcw-runs.json +27 -27
  270. package/server/data/dcw-writes.json +96 -0
  271. package/server/data/dcws.json +394 -366
  272. package/server/data/scene-layouts.json +66 -0
  273. package/server/plugins/aw-plugins.ts +35 -27
  274. package/server/plugins-builtin/diag-bridge/index.mjs +556 -0
  275. package/server/plugins-builtin/rag-bridge/index.mjs +364 -0
  276. package/server/services/workshop/agents/host-tool-bridge.ts +659 -642
  277. package/server/services/workshop/agents/omp-agent.ts +1178 -1178
  278. package/server/services/workshop/agents/plugin-tools.ts +10 -1
  279. package/server/services/workshop/db/channel-plugins.repo.ts +65 -0
  280. package/server/services/workshop/plugins/host.mjs +52 -4
  281. package/server/services/workshop/runtime/manager.ts +2976 -2968
  282. package/shared/config/schema.json +4 -0
  283. package/.output/public/_nuxt/BJbhwS5o.js +0 -1
  284. package/.output/public/_nuxt/BUcmySDa2.js +0 -209
  285. package/.output/public/_nuxt/BWC4HQHQ.js +0 -1
  286. package/.output/public/_nuxt/BbZAzXjZ2.js +0 -1
  287. package/.output/public/_nuxt/BgOhoDTI.js +0 -1
  288. package/.output/public/_nuxt/Bo8t5fkJ.js +0 -1
  289. package/.output/public/_nuxt/BuiGDfMB.js +0 -1
  290. package/.output/public/_nuxt/BxPPAkGA.js +0 -3
  291. package/.output/public/_nuxt/C53drffV.js +0 -1
  292. package/.output/public/_nuxt/CcwJ2mrD2.js +0 -1
  293. package/.output/public/_nuxt/Cr9DkD1d.js +0 -1
  294. package/.output/public/_nuxt/DTYBfjRY.js +0 -1
  295. package/.output/public/_nuxt/DVoWWlUW.js +0 -1
  296. package/.output/public/_nuxt/Dc32T41C.js +0 -1
  297. package/.output/public/_nuxt/Dhqra7NB.js +0 -1
  298. package/.output/public/_nuxt/DlRO_q5L.js +0 -1
  299. package/.output/public/_nuxt/DsUUYP292.js +0 -1
  300. package/.output/public/_nuxt/Dsdy4Ua-.js +0 -1
  301. package/.output/public/_nuxt/DtzZqC0z.js +0 -1
  302. package/.output/public/_nuxt/Ko9mMsJj.js +0 -14
  303. package/.output/public/_nuxt/RzXYI9FM.js +0 -23
  304. package/.output/public/_nuxt/UtviM1bg.js +0 -1
  305. package/.output/public/_nuxt/_id_.C-YXjn8Q.css +0 -1
  306. package/.output/public/_nuxt/bAFueD6a.js +0 -1
  307. package/.output/public/_nuxt/builds/meta/1adc96e0-8bbd-4a79-ac7e-b6952556fef8.json +0 -1
  308. package/.output/public/_nuxt/daq.3OKj58HH.css +0 -1
  309. package/.output/public/_nuxt/dbi5bHkY.js +0 -2
  310. package/.output/public/_nuxt/eHYnGew0.js +0 -19
  311. package/.output/public/_nuxt/entry.OR_psZHp.css +0 -1
  312. package/.output/public/_nuxt/jyQyulh-.js +0 -1
  313. package/.output/public/_nuxt/monitor.CmwpEUCI.css +0 -1
  314. package/.output/public/_nuxt/permissions.DTRtZeTw.css +0 -1
  315. package/.output/public/_nuxt/plugins.BcSEwwGb.css +0 -1
  316. package/.output/public/_nuxt/settings.BqMF2nfj.css +0 -1
  317. package/.output/public/_nuxt/teams.DN0pAGGu.css +0 -1
  318. package/.output/public/_nuxt/tokens.BVXU1jOK.css +0 -1
  319. package/.output/public/_nuxt/users.D8lcLE62.css +0 -1
  320. package/.output/public/_nuxt/workshop.CbymC2LY.css +0 -1
  321. package/.output/public/_nuxt/zVkqCZ78.js +0 -1
  322. package/.output/server/chunks/build/Col-biaNnEPf.mjs +0 -338
  323. package/.output/server/chunks/build/Col-biaNnEPf.mjs.map +0 -1
  324. package/.output/server/chunks/build/agents--6bzGtES.mjs.map +0 -1
  325. package/.output/server/chunks/build/channel-templates-C1Bb-U75.mjs.map +0 -1
  326. package/.output/server/chunks/build/daq-B-3xCp_2.mjs.map +0 -1
  327. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs +0 -554
  328. package/.output/server/chunks/build/hasIn-vQ9LWt-J.mjs.map +0 -1
  329. package/.output/server/chunks/build/input-DxDqeyQW.mjs.map +0 -1
  330. package/.output/server/chunks/build/monitor-miqq9xHB.mjs.map +0 -1
  331. package/.output/server/chunks/build/pages-D9tOoJsf.mjs.map +0 -1
  332. package/.output/server/chunks/build/permissions-CxEgXic0.mjs.map +0 -1
  333. package/.output/server/chunks/build/settings-BPBll_7K.mjs.map +0 -1
  334. package/.output/server/chunks/build/teams-DD8ZXTKL.mjs.map +0 -1
  335. package/.output/server/chunks/build/tokens-Dxnuw96_.mjs.map +0 -1
  336. package/.output/server/chunks/build/useDaqStream-DkRL3tEW.mjs.map +0 -1
  337. package/.output/server/chunks/build/useDcwStream-DyB2ufQI.mjs.map +0 -1
  338. package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs +0 -27
  339. package/.output/server/chunks/build/useSiteConfig-DJe_KMVr.mjs.map +0 -1
  340. package/.output/server/chunks/build/users-D6RNylrW.mjs.map +0 -1
  341. package/.output/server/chunks/build/workshop-CTcYDq2i.mjs.map +0 -1
  342. /package/.output/public/_nuxt/{CNs_Ozdc.js → CNs_Ozdc2.js} +0 -0
  343. /package/.output/public/_nuxt/{Cno6kYiO.js → Cno6kYiO2.js} +0 -0
  344. /package/.output/public/_nuxt/{ORt9oDIy2.js → ORt9oDIy.js} +0 -0
@@ -2,13 +2,13 @@ import { _ as _plugin_vue_export_helper_default, u as useI18n, c as useHead$1, a
2
2
  import { s as spin_default } from './spin-HVY81X_L.mjs';
3
3
  import { a as apiErrorMessage } from './api-error-dul30BYQ.mjs';
4
4
  import { a as useWorkshopWs } from './useWorkshopWs-CprkZEdq.mjs';
5
- import { u as useDcwStream } from './useDcwStream-DyB2ufQI.mjs';
6
- import { u as useDaqStream } from './useDaqStream-DkRL3tEW.mjs';
7
- import { u as useDeviceTwins } from './useDeviceTwins-ZbT86L9O.mjs';
8
- import { u as useOpsLog } from './useOpsLog-8HCYFb6n.mjs';
5
+ import { u as useDcwStream } from './useDcwStream-BJW_MitY.mjs';
6
+ import { u as useDaqStream } from './useDaqStream-BeA2X8KR.mjs';
7
+ import { u as useDeviceTwins } from './useDeviceTwins-Dwz_EY_i.mjs';
8
+ import { u as useOpsLog } from './useOpsLog-Dm8QEb1I.mjs';
9
9
  import { defineComponent, computed, reactive, ref, watch, mergeProps, unref, withCtx, createTextVNode, toDisplayString, createVNode, openBlock, createBlock, withDirectives, Fragment, renderList, vModelSelect, vModelText, createCommentVNode, useSSRContext } from 'vue';
10
10
  import { ssrRenderAttrs, ssrInterpolate, ssrRenderAttr, ssrRenderClass, ssrRenderComponent, ssrIncludeBooleanAttr, ssrRenderList, ssrLooseContain, ssrLooseEqual, ssrRenderDynamicModel, ssrRenderStyle } from 'vue/server-renderer';
11
- import { b0 as DAQ_TEMPLATES, b3 as DAQ_DRIVERS, b2 as daqKeyFromRef, b5 as DAQ_TEMPLATE_ICONS } from '../_/nitro.mjs';
11
+ import { b2 as DAQ_TEMPLATES, b5 as DAQ_DRIVERS, b4 as daqKeyFromRef, b7 as DAQ_TEMPLATE_ICONS } from '../_/nitro.mjs';
12
12
  import 'unhead/utils';
13
13
  import '../routes/renderer.mjs';
14
14
  import 'unhead/server';
@@ -41,73 +41,43 @@ import 'node:sqlite';
41
41
  import 'node:module';
42
42
  import 'node:zlib';
43
43
 
44
- //#region app/pages/daq/index.vue?vue&type=script&setup=true&lang.ts
44
+ //#region app/components/workshop/DaqNodeRow.vue?vue&type=script&setup=true&lang.ts
45
+ /** 数据新鲜度:超过 max(4×有效周期, 12s) 无新样本视为「采不到数据」(容忍 5s REST 刷新拍与时钟偏差) */
45
46
  var TREND_W = 120;
46
47
  var TREND_H = 26;
47
- /** 数据新鲜度:超过 max(4×有效周期, 12s) 无新样本视为「采不到数据」(容忍 5s REST 刷新拍与时钟偏差) */
48
- var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
49
- __name: "index",
48
+ var DaqNodeRow_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
49
+ __name: "DaqNodeRow",
50
50
  __ssrInlineRender: true,
51
+ props: { n: {} },
51
52
  setup(__props) {
52
53
  /**
53
- * 数采中心(DAQ Console)—— server 驱动数采的总控面。
54
- * 后端能力自描述(tsdb/queue/驱动族 + 管线指标)、控制器全局启停/周期、
55
- * 节点清单(状态/实时值/周期/绑定/驱动),点进 /daq/[id] 进入单节点专业控制台。
54
+ * DaqNodeRow —— 数采节点表格行(渲染隔离单元)。
55
+ *
56
+ * 行级派生态(pill/趋势串/限值线/产线运行态/节拍文案)全部在本组件 computed 内求值,
57
+ * 只追踪「本行节点」的响应式依赖:其它行/其它节点的 WS 读数帧失效不再波及本行 patch
58
+ * (等价 v-memo 的隔离效果,但 v-memo 在 SSR 编译产物引用未定义的 _cache 导致 500,
59
+ * 子组件 props 身份跳过是 SSR 安全形态)。父层 v-for 传稳定节点引用,依赖不变零重渲。
56
60
  */
57
- const { t: tt } = useI18n();
58
- useHead$1({ title: () => tt("titles.daq") });
61
+ const props = __props;
62
+ const { t } = useI18n();
59
63
  const daq = useDaqStream();
60
64
  const dcw = useDcwStream();
61
- useWorkshopWs();
62
- /** 是否存在任意运行中的产线(横幅判定) */
63
- const anyLineActive = computed(() => dcw.lines.some((l) => dcw.lineStateOf(l.id).active));
64
- /** 节点产线归属变更(挂载到产线/移出;失败 toast 后端可读原因) */
65
- async function setNodeLine(id, e) {
66
- const lineId = e.target.value;
67
- try {
68
- await daq.patchNode(id, { lineId });
69
- const n = daq.nodes.find((x) => x.id === id);
70
- if (n) n.lineId = lineId;
71
- } catch (err) {
72
- api$1.error(apiErrorMessage(err));
73
- }
74
- }
75
- /** 节点绑定设备(多对多:add 挂新设备 / remove 摘除一台;server 落库,与数字孪生同一 deviceIds 链路) */
76
- async function addNodeDevice(id, e) {
77
- const deviceId = e.target.value;
78
- if (!deviceId) return;
79
- const node = daq.nodes.find((n) => n.id === id);
80
- if (!node) return;
81
- if (node.deviceIds?.includes(deviceId)) return;
82
- try {
83
- await daq.setNodeBindings(id, [...node.deviceIds ?? [], deviceId]);
84
- } catch (err) {
85
- api$1.error(apiErrorMessage(err));
86
- }
87
- e.target.value = "";
65
+ const deviceTwins = useDeviceTwins();
66
+ function staleOf(n) {
67
+ if (!n.lastAt) return true;
68
+ const iv = n.intervalMs ?? daq.controller.defaultIntervalMs;
69
+ return Date.now() - Date.parse(n.lastAt) > Math.max(iv * 4, 12e3);
88
70
  }
89
- async function removeNodeDevice(id, deviceId) {
90
- const node = daq.nodes.find((n) => n.id === id);
91
- if (!node) return;
92
- try {
93
- await daq.setNodeBindings(id, (node.deviceIds ?? []).filter((d) => d !== deviceId));
94
- } catch (err) {
95
- api$1.error(apiErrorMessage(err));
96
- }
71
+ function rowStateOf(n) {
72
+ if (!n.enabled) return "disabled";
73
+ if (!n.lineId) return "unassigned";
74
+ if (!dcw.lineStateOf(n.lineId).active) return "idle";
75
+ if (!daq.controller.running || staleOf(n)) return "offline";
76
+ return n.state;
97
77
  }
98
- const nodeDeviceIds = (n) => n.deviceIds ?? (n.deviceBindingId ? [n.deviceBindingId] : []);
99
- const deviceNameById = (id) => nodeDevices.get(id) ?? deviceTwins.twins.find((t) => t.id === id)?.name ?? id;
100
- /** 单节点独立 启动/停止采集(PATCH enabled;server 权威,本地乐观翻转 + WS/轮询收敛) */
101
- async function toggleNodeEnabled(n) {
102
- const next = !n.enabled;
103
- try {
104
- await daq.patchNode(n.id, { enabled: next });
105
- n.enabled = next;
106
- if (!next) n.state = "offline";
107
- api$1.success(next ? tt("daq.k1nodestart147") : tt("daq.k1nodestop146"));
108
- } catch (err) {
109
- api$1.error(apiErrorMessage(err));
110
- }
78
+ function isLive(n) {
79
+ const s = rowStateOf(n);
80
+ return s === "ok" || s === "warn" || s === "alarm";
111
81
  }
112
82
  /** 活动配方对该节点的数采监控窗口(本线活动批次;不同 Recipe 不同窗口) */
113
83
  function recipeWinOf(n) {
@@ -122,22 +92,21 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
122
92
  if (!w || n.value == null) return false;
123
93
  return w.min != null && n.value < w.min || w.max != null && n.value > w.max;
124
94
  }
125
- const opsLog = useOpsLog();
126
- function opsKindLabel(kind) {
95
+ /** 行内趋势的有效限值:活动配方窗口优先,节点预警带兜底,皆无 → 不画限值线 */
96
+ function limitOf(n) {
97
+ const w = recipeWinOf(n);
98
+ if (w && (w.min != null || w.max != null)) return {
99
+ min: w.min,
100
+ max: w.max
101
+ };
102
+ if (n.warnLow != null || n.warnHigh != null) return {
103
+ min: n.warnLow,
104
+ max: n.warnHigh
105
+ };
127
106
  return {
128
- write: tt("logs.kind.write"),
129
- manual: tt("logs.kind.manual"),
130
- alarm: tt("logs.kind.alarm"),
131
- line: tt("logs.kind.line"),
132
- recipe: tt("logs.kind.recipe"),
133
- rollback: tt("logs.kind.rollback"),
134
- daq: tt("logs.kind.daq"),
135
- system: tt("logs.kind.system")
136
- }[kind] ?? (kind || tt("logs.kind.system"));
137
- }
138
- function opsTime(at) {
139
- const d = new Date(at);
140
- return Number.isFinite(d.getTime()) ? `${String(d.getHours()).padStart(2, "0")}:${String(d.getMinutes()).padStart(2, "0")}:${String(d.getSeconds()).padStart(2, "0")}` : "";
107
+ min: null,
108
+ max: null
109
+ };
141
110
  }
142
111
  function trendPath(hist) {
143
112
  const vals = hist.filter(Number.isFinite);
@@ -155,24 +124,181 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
155
124
  const span = Math.max(...vals, limit) - min || 1;
156
125
  return Number((TREND_H - (limit - min) / span * 24 - 1).toFixed(1));
157
126
  }
158
- /** 行内趋势的有效限值:活动配方窗口优先,节点预警带兜底,皆无 → 不画限值线 */
159
- function limitOf(n) {
160
- const w = recipeWinOf(n);
161
- if (w && (w.min != null || w.max != null)) return {
162
- min: w.min,
163
- max: w.max,
164
- source: "recipe"
127
+ /** 状态 pill(含诚实的原因提示;配方越限标签仅在数据新鲜时展示) */
128
+ function statePillOf(n) {
129
+ const s = rowStateOf(n);
130
+ const offlineLabel = t("daq.k44c2n065");
131
+ if (s === "offline") {
132
+ if (n.lastError) return {
133
+ key: s,
134
+ label: offlineLabel,
135
+ tip: n.lastError
136
+ };
137
+ return {
138
+ key: s,
139
+ label: offlineLabel,
140
+ tip: !daq.controller.running ? t("daq.k1gateoff140") : t("daq.k1staled129", { p0: Math.round(Math.max((n.intervalMs ?? daq.controller.defaultIntervalMs) * 4, 12e3) / 1e3) })
141
+ };
142
+ }
143
+ const labels = {
144
+ ok: t("daq.k41k5c062"),
145
+ warn: t("daq.k49z8v063"),
146
+ alarm: t("daq.k3xmid064"),
147
+ offline: offlineLabel,
148
+ idle: t("daq.k3ozyqz117"),
149
+ disabled: t("daq.k1disabl130"),
150
+ unassigned: t("daq.k3ootr6053")
165
151
  };
166
- if (n.warnLow != null || n.warnHigh != null) return {
167
- min: n.warnLow,
168
- max: n.warnHigh,
169
- source: "warn"
152
+ if (s === "idle") return {
153
+ key: s,
154
+ label: labels.idle,
155
+ tip: t("daq.k1idlehin139")
156
+ };
157
+ if ((s === "ok" || s === "warn" || s === "alarm") && recipeAlarm(n)) {
158
+ const w = recipeWinOf(n);
159
+ return {
160
+ key: "alarm",
161
+ label: t("daq.k1l3pt51104"),
162
+ tip: t("daq.k1hrrqa1122", {
163
+ p0: w?.min ?? "-∞",
164
+ p1: w?.max ?? "+∞",
165
+ p2: ""
166
+ })
167
+ };
168
+ }
169
+ return {
170
+ key: s,
171
+ label: labels[s],
172
+ tip: ""
170
173
  };
174
+ }
175
+ /** 模板通道语义(server 目录为唯一事实源;模板已删除 → 显示 templateRef 原文降级) */
176
+ function daqTemplateRefCh(templateRef) {
177
+ const tpl = daq.templates.find((x) => x.key === daqKeyFromRef(templateRef));
178
+ return tpl ? `${tpl.name} · ${tpl.ch}` : templateRef || "-";
179
+ }
180
+ const intervalOf = (intervalMs) => {
181
+ if (intervalMs == null) return t("daq.k9vnp9h124", { p0: daq.controller.defaultIntervalMs });
182
+ return `${intervalMs}ms`;
183
+ };
184
+ /** WS 下发节拍展示(null=跟随全局;0=每帧;>0 独立间隔) */
185
+ const publishOf = (v) => {
186
+ if (v == null) return t("daq.k9vnp9h124", { p0: daq.controller.defaultPublishIntervalMs });
187
+ if (v === 0) return t("daq.k41mvv078");
188
+ return `${v}ms`;
189
+ };
190
+ /** 驱动是否为预留协议(meta status=planned) */
191
+ const driverPlanned = (kind) => daq.meta.drivers.find((d) => d.kind === kind)?.status === "planned";
192
+ const nodeDeviceIds = (n) => n.deviceIds ?? (n.deviceBindingId ? [n.deviceBindingId] : []);
193
+ const deviceNameById = (id) => deviceTwins.twins.find((x) => x.id === id)?.name ?? id;
194
+ /** 绑定设备下拉选项:全部真实设备孪生(剔除 daq/dcw 伪孪生) */
195
+ const bindableDeviceTwins = computed(() => deviceTwins.twins.filter((x) => x.kind !== "daq" && !(x.modelRef ?? "").startsWith("daq-") && !(x.modelRef ?? "").startsWith("dcw-")));
196
+ const ctx = computed(() => {
197
+ const n = props.n;
198
+ const lim = limitOf(n);
199
+ const ls = n.lineId ? dcw.lineStateOf(n.lineId) : null;
171
200
  return {
172
- min: null,
173
- max: null,
174
- source: "warn"
201
+ tpl: daqTemplateRefCh(n.templateRef),
202
+ pill: statePillOf(n),
203
+ alarm: recipeAlarm(n),
204
+ live: isLive(n),
205
+ trend: trendPath(n.hist),
206
+ limMin: limitY(n.hist, lim.min),
207
+ limMax: limitY(n.hist, lim.max),
208
+ interval: intervalOf(n.intervalMs),
209
+ publish: publishOf(n.publishIntervalMs),
210
+ lineActive: !!ls?.active,
211
+ lineProduct: ls?.productName ?? "",
212
+ lineRecipe: ls?.recipeName ?? ""
175
213
  };
214
+ });
215
+ return (_ctx, _push, _parent, _attrs) => {
216
+ const _component_NuxtLink = NuxtLink;
217
+ _push(`<tr${ssrRenderAttrs(mergeProps({ class: { "row-recipe-alarm": ctx.value.alarm } }, _attrs))}><td><span class="mono dim">${ssrInterpolate(__props.n.id.slice(0, 8))}</span><b>${ssrInterpolate(__props.n.name)}</b><small class="mono ch">${ssrInterpolate(ctx.value.tpl)}</small></td><td><span class="${ssrRenderClass([[ctx.value.pill.key], "st-pill"])}"${ssrRenderAttr("title", ctx.value.pill.tip)}>${ssrInterpolate(ctx.value.pill.label)}</span></td><td class="${ssrRenderClass([{
218
+ "stale": !ctx.value.live,
219
+ "val-alarm": __props.n.state === "alarm" || ctx.value.alarm
220
+ }, "mono val"])}"${ssrRenderAttr("title", ctx.value.live ? void 0 : ctx.value.pill.tip)}>${ssrInterpolate(__props.n.value != null ? __props.n.value.toFixed(__props.n.decimals) : "--")} <small>${ssrInterpolate(__props.n.unit)}</small></td><td class="trend-cell"><svg class="trend" viewBox="0 0 120 26" preserveAspectRatio="none"${ssrRenderAttr("title", _ctx.$t("daq.k1trnd002"))}>`);
221
+ if (ctx.value.limMin != null) _push(`<line class="lim" x1="0"${ssrRenderAttr("y1", ctx.value.limMin)} x2="120"${ssrRenderAttr("y2", ctx.value.limMin)}></line>`);
222
+ else _push(`<!---->`);
223
+ if (ctx.value.limMax != null) _push(`<line class="lim max" x1="0"${ssrRenderAttr("y1", ctx.value.limMax)} x2="120"${ssrRenderAttr("y2", ctx.value.limMax)}></line>`);
224
+ else _push(`<!---->`);
225
+ _push(`<polyline class="${ssrRenderClass([{ alarm: __props.n.state === "alarm" || ctx.value.alarm }, "trace"])}"${ssrRenderAttr("points", ctx.value.trend)}></polyline></svg></td><td class="mono">${ssrInterpolate(ctx.value.interval)}</td><td class="mono">${ssrInterpolate(ctx.value.publish)}</td><td><span class="${ssrRenderClass([{ planned: driverPlanned(__props.n.driver) }, "drv-tag"])}"${ssrRenderAttr("title", driverPlanned(__props.n.driver) ? _ctx.$t("daq.k1plndrv138") : "")}>${ssrInterpolate(__props.n.driver)}</span></td><td><select class="line-sel"${ssrRenderAttr("value", __props.n.lineId)}${ssrRenderAttr("title", _ctx.$t("daq.k3q23v3010"))}><option value="">${ssrInterpolate(_ctx.$t("daq.k3ootr6053"))}</option><!--[-->`);
226
+ ssrRenderList(unref(dcw).lines, (l) => {
227
+ _push(`<option${ssrRenderAttr("value", l.id)}>${ssrInterpolate(l.name)}</option>`);
228
+ });
229
+ _push(`<!--]--></select></td><td>`);
230
+ if (__props.n.lineId) _push(`<span class="${ssrRenderClass([{ on: ctx.value.lineActive }, "run-pill"])}"${ssrRenderAttr("title", _ctx.$t("daq.k1runtipc131"))}><span class="rp-dot"></span> ${ssrInterpolate(ctx.value.lineActive ? _ctx.$t("daq.k3vp67i096") : _ctx.$t("daq.k3ozyqz117"))}</span>`);
231
+ else _push(`<span class="run-pill na">${ssrInterpolate(_ctx.$t("daq.k3ootr6053"))}</span>`);
232
+ _push(`</td><td class="prod-cell">`);
233
+ if (__props.n.lineId && ctx.value.lineActive) _push(`<!--[--><b${ssrRenderAttr("title", _ctx.$t("daq.k1prdrtip132"))}>${ssrInterpolate(ctx.value.lineProduct || "--")}</b><small class="mono"${ssrRenderAttr("title", _ctx.$t("daq.k1prdrtip132"))}>${ssrInterpolate(ctx.value.lineRecipe || "--")}</small><!--]-->`);
234
+ else _push(`<span class="dim">--</span>`);
235
+ _push(`</td><td><div class="dev-binds"><!--[-->`);
236
+ ssrRenderList(nodeDeviceIds(__props.n), (did) => {
237
+ _push(`<span class="dev-bind-chip"${ssrRenderAttr("title", _ctx.$t("daq.k2bindtip137"))}>${ssrInterpolate(deviceNameById(did))} <span class="dev-unbind" title="unbind">✕</span></span>`);
238
+ });
239
+ _push(`<!--]--><select class="line-sel dev-add"${ssrRenderAttr("value", "")}${ssrRenderAttr("title", _ctx.$t("daq.k2bindtip137"))}><option value="">${ssrInterpolate(_ctx.$t("daq.k3own4q056"))}</option><!--[-->`);
240
+ ssrRenderList(bindableDeviceTwins.value, (d) => {
241
+ _push(`<option${ssrRenderAttr("value", d.id)}${ssrIncludeBooleanAttr((__props.n.deviceIds ?? []).includes(d.id)) ? " disabled" : ""}>${ssrInterpolate(deviceNameById(d.id))}</option>`);
242
+ });
243
+ _push(`<!--]--></select></div></td><td class="right"><button class="${ssrRenderClass([{ off: !__props.n.enabled }, "node-toggle"])}"${ssrRenderAttr("title", __props.n.enabled ? _ctx.$t("daq.k1nodestop146") : _ctx.$t("daq.k1nodestart147"))}><span class="${ssrRenderClass(__props.n.enabled ? "i-tabler-player-pause" : "i-tabler-player-play")}"></span> ${ssrInterpolate(__props.n.enabled ? _ctx.$t("daq.k1nodestop146") : _ctx.$t("daq.k1nodestart147"))}</button>`);
244
+ _push(ssrRenderComponent(_component_NuxtLink, {
245
+ class: "console-link",
246
+ to: `/daq/${__props.n.id}`
247
+ }, {
248
+ default: withCtx((_, _push, _parent, _scopeId) => {
249
+ if (_push) _push(`<span class="i-tabler-dashboard"${_scopeId}></span> ${ssrInterpolate(_ctx.$t("daq.k3o3jg2074"))}`);
250
+ else return [createVNode("span", { class: "i-tabler-dashboard" }), createTextVNode(" " + toDisplayString(_ctx.$t("daq.k3o3jg2074")), 1)];
251
+ }),
252
+ _: 1
253
+ }, _parent));
254
+ _push(`</td></tr>`);
255
+ };
256
+ }
257
+ });
258
+ //#endregion
259
+ //#region app/components/workshop/DaqNodeRow.vue
260
+ var _sfc_setup$1 = DaqNodeRow_vue_vue_type_script_setup_true_lang_default.setup;
261
+ DaqNodeRow_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
262
+ const ssrContext = useSSRContext();
263
+ (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/DaqNodeRow.vue");
264
+ return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
265
+ };
266
+ var DaqNodeRow_default = Object.assign(DaqNodeRow_vue_vue_type_script_setup_true_lang_default, { __name: "WorkshopDaqNodeRow" });
267
+ //#endregion
268
+ //#region app/pages/daq/index.vue?vue&type=script&setup=true&lang.ts
269
+ /** 数据新鲜度:超过 max(4×有效周期, 12s) 无新样本视为「采不到数据」(容忍 5s REST 刷新拍与时钟偏差) */
270
+ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
271
+ __name: "index",
272
+ __ssrInlineRender: true,
273
+ setup(__props) {
274
+ /**
275
+ * 数采中心(DAQ Console)—— server 驱动数采的总控面。
276
+ * 后端能力自描述(tsdb/queue/驱动族 + 管线指标)、控制器全局启停/周期、
277
+ * 节点清单(状态/实时值/周期/绑定/驱动),点进 /daq/[id] 进入单节点专业控制台。
278
+ */
279
+ const { t: tt } = useI18n();
280
+ useHead$1({ title: () => tt("titles.daq") });
281
+ const daq = useDaqStream();
282
+ const dcw = useDcwStream();
283
+ useWorkshopWs();
284
+ /** 是否存在任意运行中的产线(横幅判定) */
285
+ const anyLineActive = computed(() => dcw.lines.some((l) => dcw.lineStateOf(l.id).active));
286
+ const opsLog = useOpsLog();
287
+ function opsKindLabel(kind) {
288
+ return {
289
+ write: tt("logs.kind.write"),
290
+ manual: tt("logs.kind.manual"),
291
+ alarm: tt("logs.kind.alarm"),
292
+ line: tt("logs.kind.line"),
293
+ recipe: tt("logs.kind.recipe"),
294
+ rollback: tt("logs.kind.rollback"),
295
+ daq: tt("logs.kind.daq"),
296
+ system: tt("logs.kind.system")
297
+ }[kind] ?? (kind || tt("logs.kind.system"));
298
+ }
299
+ function opsTime(at) {
300
+ const d = new Date(at);
301
+ return Number.isFinite(d.getTime()) ? `${String(d.getHours()).padStart(2, "0")}:${String(d.getMinutes()).padStart(2, "0")}:${String(d.getSeconds()).padStart(2, "0")}` : "";
176
302
  }
177
303
  /** 未确认报警确认(失败 toast 后端可读原因;成功后 fetchAlarms 已由 store 内部刷新) */
178
304
  async function ackOne(id) {
@@ -303,59 +429,6 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
303
429
  if (!daq.controller.running || staleOf(n)) return "offline";
304
430
  return n.state;
305
431
  }
306
- /** 数据是否在线(实时值列据此区分「实时值」与「最后值」) */
307
- function isLive(n) {
308
- const s = rowStateOf(n);
309
- return s === "ok" || s === "warn" || s === "alarm";
310
- }
311
- const rowLabel = {
312
- ok: tt("daq.k41k5c062"),
313
- warn: tt("daq.k49z8v063"),
314
- alarm: tt("daq.k3xmid064"),
315
- offline: tt("daq.k44c2n065"),
316
- idle: tt("daq.k3ozyqz117"),
317
- disabled: tt("daq.k1disabl130"),
318
- unassigned: tt("daq.k3ootr6053")
319
- };
320
- /** 状态 pill(含诚实的原因提示;配方越限标签仅在数据新鲜时展示) */
321
- function statePillOf(n) {
322
- const s = rowStateOf(n);
323
- if (s === "offline") {
324
- if (n.lastError) return {
325
- key: s,
326
- label: rowLabel.offline,
327
- tip: n.lastError
328
- };
329
- const tip = !daq.controller.running ? tt("daq.k1gateoff140") : tt("daq.k1staled129", { p0: Math.round(Math.max((n.intervalMs ?? daq.controller.defaultIntervalMs) * 4, 12e3) / 1e3) });
330
- return {
331
- key: s,
332
- label: rowLabel.offline,
333
- tip
334
- };
335
- }
336
- if (s === "idle") return {
337
- key: s,
338
- label: rowLabel.idle,
339
- tip: tt("daq.k1idlehin139")
340
- };
341
- if ((s === "ok" || s === "warn" || s === "alarm") && recipeAlarm(n)) {
342
- const w = recipeWinOf(n);
343
- return {
344
- key: "alarm",
345
- label: tt("daq.k1l3pt51104"),
346
- tip: tt("daq.k1hrrqa1122", {
347
- p0: w?.min ?? "-∞",
348
- p1: w?.max ?? "+∞",
349
- p2: ""
350
- })
351
- };
352
- }
353
- return {
354
- key: s,
355
- label: rowLabel[s],
356
- tip: ""
357
- };
358
- }
359
432
  const filteredNodes = computed(() => daq.nodes.filter((n) => {
360
433
  if (filters.lineId && (filters.lineId === "none" ? !!n.lineId : (n.lineId ?? "") !== filters.lineId)) return false;
361
434
  const nodeDevIds = n.deviceIds ?? (n.deviceBindingId ? [n.deviceBindingId] : []);
@@ -368,33 +441,6 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
368
441
  if (!searchMatch(n)) return false;
369
442
  return true;
370
443
  }));
371
- /** 行渲染上下文预计算:状态 pill/配方越限/在离线/模板名 每行只算一次,
372
- * 模板里 11 次函数调用/行(102 行 = 1100+ 次/渲染,含多次 .find)收敛为 1 次查表 */
373
- const rowCtx = computed(() => {
374
- const m = /* @__PURE__ */ new Map();
375
- for (const n of filteredNodes.value) m.set(n.id, {
376
- pill: statePillOf(n),
377
- alarm: recipeAlarm(n),
378
- live: isLive(n),
379
- tpl: daqTemplateRefCh(n.templateRef)
380
- });
381
- return m;
382
- });
383
- const EMPTY_CTX = {
384
- pill: {
385
- key: "offline",
386
- label: "",
387
- tip: ""
388
- },
389
- alarm: false,
390
- live: false,
391
- tpl: "-"
392
- };
393
- /** 行渲染视图:节点 + 预计算上下文成对交付,模板零函数调用 */
394
- const filteredRows = computed(() => filteredNodes.value.map((n) => ({
395
- n,
396
- c: rowCtx.value.get(n.id) ?? EMPTY_CTX
397
- })));
398
444
  const deviceTwins = useDeviceTwins();
399
445
  const nodeDevices = /* @__PURE__ */ new Map();
400
446
  watch(() => deviceTwins.twins, (list) => {
@@ -403,18 +449,6 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
403
449
  immediate: true,
404
450
  deep: true
405
451
  });
406
- /** 绑定设备下拉选项:全部真实设备孪生(剔除 daq/dcw 伪孪生) */
407
- const bindableDeviceTwins = computed(() => deviceTwins.twins.filter((t) => t.kind !== "daq" && !(t.modelRef ?? "").startsWith("daq-") && !(t.modelRef ?? "").startsWith("dcw-")));
408
- const intervalOf = (intervalMs) => {
409
- if (intervalMs == null) return tt("daq.k9vnp9h124", { p0: daq.controller.defaultIntervalMs });
410
- return `${intervalMs}ms`;
411
- };
412
- /** WS 下发节拍展示(null=跟随全局;0=每帧;>0 独立间隔) */
413
- const publishOf = (v) => {
414
- if (v == null) return tt("daq.k9vnp9h124", { p0: daq.controller.defaultPublishIntervalMs });
415
- if (v === 0) return tt("daq.k41mvv078");
416
- return `${v}ms`;
417
- };
418
452
  const addOpen = ref(false);
419
453
  const addScenario = ref("mock");
420
454
  const addTemplate = ref(DAQ_TEMPLATES[0]?.key ?? "temp-tc");
@@ -472,16 +506,15 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
472
506
  };
473
507
  const customTpls = computed(() => daq.templates.filter((t) => !t.builtin));
474
508
  const builtinTpls = computed(() => daq.templates.filter((t) => t.builtin));
475
- /** 驱动是否为预留协议(meta status=planned) */
476
- const driverPlanned = (kind) => daq.meta.drivers.find((d) => d.kind === kind)?.status === "planned";
477
509
  const reconnecting = ref(false);
478
510
  return (_ctx, _push, _parent, _attrs) => {
479
511
  const _component_NuxtLink = NuxtLink;
480
512
  const _component_a_spin = spin_default;
481
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "page" }, _attrs))} data-v-1dcb778c><div class="aw-page-head" data-v-1dcb778c><div data-v-1dcb778c><p class="aw-kicker" data-v-1dcb778c> AGENTWORKSHOP / DAQ CONSOLE </p><h1 data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1emg364011"))}</h1><p class="sub" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1wmg2bz012"))}</p></div><div class="badges mono" data-v-1dcb778c><span class="badge"${ssrRenderAttr("title", _ctx.$t("daq.k1tsdbtip133"))} data-v-1dcb778c>TSDB · ${ssrInterpolate(unref(daq).meta.tsdb)}</span><span class="badge"${ssrRenderAttr("title", _ctx.$t("daq.k1queuet134"))} data-v-1dcb778c>QUEUE · ${ssrInterpolate(unref(daq).meta.queue)}</span></div></div>`);
513
+ const _component_WorkshopDaqNodeRow = DaqNodeRow_default;
514
+ _push(`<div${ssrRenderAttrs(mergeProps({ class: "page" }, _attrs))} data-v-10e5bd50><div class="aw-page-head" data-v-10e5bd50><div data-v-10e5bd50><p class="aw-kicker" data-v-10e5bd50> AGENTWORKSHOP / DAQ CONSOLE </p><h1 data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1emg364011"))}</h1><p class="sub" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1wmg2bz012"))}</p></div><div class="badges mono" data-v-10e5bd50><span class="badge"${ssrRenderAttr("title", _ctx.$t("daq.k1tsdbtip133"))} data-v-10e5bd50>TSDB · ${ssrInterpolate(unref(daq).meta.tsdb)}</span><span class="badge"${ssrRenderAttr("title", _ctx.$t("daq.k1queuet134"))} data-v-10e5bd50>QUEUE · ${ssrInterpolate(unref(daq).meta.queue)}</span></div></div>`);
482
515
  if (unref(daq).loaded && filteredLine.value && filteredLineState.value) {
483
- _push(`<div class="${ssrRenderClass([{ good: filteredLineState.value.active }, "infra-banner"])}" data-v-1dcb778c><span class="${ssrRenderClass(filteredLineState.value.active ? "i-tabler-circle-check" : "i-tabler-info-circle")}" data-v-1dcb778c></span><span class="txt" data-v-1dcb778c>`);
484
- if (filteredLineState.value.active) _push(`<!--[-->${ssrInterpolate(_ctx.$t("daq.k3ktxbr085"))}${ssrInterpolate(filteredLine.value.name)}」${ssrInterpolate(_ctx.$t("daq.k15lvw0o105"))}<b data-v-1dcb778c>${ssrInterpolate(filteredLineState.value.productName)}</b> · Recipe:<b data-v-1dcb778c>${ssrInterpolate(filteredLineState.value.recipeName)}</b><small class="mono" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k400lb086"))} ${ssrInterpolate(filteredLineState.value.runId?.slice(0, 8))} · ${ssrInterpolate(_ctx.$t("daq.k3zkt2106"))} ${ssrInterpolate(filteredLineState.value.startedAt?.slice(11, 19))} ${ssrInterpolate(_ctx.$t("daq.k69vag8108"))} ${ssrInterpolate(filteredLineState.value.taggedSamples)} ${ssrInterpolate(_ctx.$t("daq.k4118o092"))}</small><!--]-->`);
516
+ _push(`<div class="${ssrRenderClass([{ good: filteredLineState.value.active }, "infra-banner"])}" data-v-10e5bd50><span class="${ssrRenderClass(filteredLineState.value.active ? "i-tabler-circle-check" : "i-tabler-info-circle")}" data-v-10e5bd50></span><span class="txt" data-v-10e5bd50>`);
517
+ if (filteredLineState.value.active) _push(`<!--[-->${ssrInterpolate(_ctx.$t("daq.k3ktxbr085"))}${ssrInterpolate(filteredLine.value.name)}」${ssrInterpolate(_ctx.$t("daq.k15lvw0o105"))}<b data-v-10e5bd50>${ssrInterpolate(filteredLineState.value.productName)}</b> · Recipe:<b data-v-10e5bd50>${ssrInterpolate(filteredLineState.value.recipeName)}</b><small class="mono" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k400lb086"))} ${ssrInterpolate(filteredLineState.value.runId?.slice(0, 8))} · ${ssrInterpolate(_ctx.$t("daq.k3zkt2106"))} ${ssrInterpolate(filteredLineState.value.startedAt?.slice(11, 19))} ${ssrInterpolate(_ctx.$t("daq.k69vag8108"))} ${ssrInterpolate(filteredLineState.value.taggedSamples)} ${ssrInterpolate(_ctx.$t("daq.k4118o092"))}</small><!--]-->`);
485
518
  else _push(`<!--[-->${ssrInterpolate(_ctx.$t("daq.k3ktxbr085"))}${ssrInterpolate(filteredLine.value.name)}」${ssrInterpolate(_ctx.$t("daq.k12uge2o107"))}<!--]-->`);
486
519
  _push(`</span>`);
487
520
  _push(ssrRenderComponent(_component_NuxtLink, {
@@ -496,7 +529,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
496
529
  }, _parent));
497
530
  _push(`</div>`);
498
531
  } else if (unref(daq).loaded && !anyLineActive.value) {
499
- _push(`<div class="infra-banner" data-v-1dcb778c><span class="i-tabler-info-circle" data-v-1dcb778c></span><span class="txt" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k19onw5w013"))}`);
532
+ _push(`<div class="infra-banner" data-v-10e5bd50><span class="i-tabler-info-circle" data-v-10e5bd50></span><span class="txt" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k19onw5w013"))}`);
500
533
  _push(ssrRenderComponent(_component_NuxtLink, { to: "/dcw" }, {
501
534
  default: withCtx((_, _push, _parent, _scopeId) => {
502
535
  if (_push) _push(`${ssrInterpolate(_ctx.$t("daq.k1b2tk5c014"))}`);
@@ -506,19 +539,19 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
506
539
  }, _parent));
507
540
  _push(`${ssrInterpolate(_ctx.$t("daq.k1u9wnlg015"))}</span></div>`);
508
541
  } else _push(`<!---->`);
509
- if (unref(daq).meta.infra?.degraded) _push(`<div class="infra-banner" data-v-1dcb778c><span class="i-tabler-alert-triangle" data-v-1dcb778c></span><span class="txt" data-v-1dcb778c>${ssrInterpolate(unref(daq).meta.infra.warning)}</span><button class="pill-btn"${ssrIncludeBooleanAttr(reconnecting.value) ? " disabled" : ""} data-v-1dcb778c>${ssrInterpolate(reconnecting.value ? _ctx.$t("daq.k1ld43ur094") : _ctx.$t("daq.kzg9805110"))}</button></div>`);
542
+ if (unref(daq).meta.infra?.degraded) _push(`<div class="infra-banner" data-v-10e5bd50><span class="i-tabler-alert-triangle" data-v-10e5bd50></span><span class="txt" data-v-10e5bd50>${ssrInterpolate(unref(daq).meta.infra.warning)}</span><button class="pill-btn"${ssrIncludeBooleanAttr(reconnecting.value) ? " disabled" : ""} data-v-10e5bd50>${ssrInterpolate(reconnecting.value ? _ctx.$t("daq.k1ld43ur094") : _ctx.$t("daq.kzg9805110"))}</button></div>`);
510
543
  else _push(`<!---->`);
511
544
  if (unref(daq).alarms.length) {
512
- _push(`<div class="alarm-bar" data-v-1dcb778c><span class="bar-label" data-v-1dcb778c><span class="i-tabler-bell-ringing bell" data-v-1dcb778c></span> ${ssrInterpolate(_ctx.$t("daq.k1alarm141"))} <b class="mono" data-v-1dcb778c>${ssrInterpolate(unref(daq).alarms.length)}</b></span><div class="alarm-scroll" data-v-1dcb778c><!--[-->`);
545
+ _push(`<div class="alarm-bar" data-v-10e5bd50><span class="bar-label" data-v-10e5bd50><span class="i-tabler-bell-ringing bell" data-v-10e5bd50></span> ${ssrInterpolate(_ctx.$t("daq.k1alarm141"))} <b class="mono" data-v-10e5bd50>${ssrInterpolate(unref(daq).alarms.length)}</b></span><div class="alarm-scroll" data-v-10e5bd50><!--[-->`);
513
546
  ssrRenderList(unref(daq).alarms, (a) => {
514
- _push(`<span class="alarm-item"${ssrRenderAttr("title", _ctx.$t("daq.k1esc143", { p0: a.escalation }))} data-v-1dcb778c><b data-v-1dcb778c>${ssrInterpolate(a.nodeName)}</b><span class="mono dim" data-v-1dcb778c>${ssrInterpolate(a.metric)}</span><span class="mono" data-v-1dcb778c>${ssrInterpolate(a.value)} ${ssrInterpolate(a.rule === "lt-min" ? "<" : ">")} ${ssrInterpolate(a.threshold)}</span>`);
515
- if (a.escalation > 0) _push(`<small class="esc mono" data-v-1dcb778c>+${ssrInterpolate(a.escalation)}</small>`);
547
+ _push(`<span class="alarm-item"${ssrRenderAttr("title", _ctx.$t("daq.k1esc143", { p0: a.escalation }))} data-v-10e5bd50><b data-v-10e5bd50>${ssrInterpolate(a.nodeName)}</b><span class="mono dim" data-v-10e5bd50>${ssrInterpolate(a.metric)}</span><span class="mono" data-v-10e5bd50>${ssrInterpolate(a.value)} ${ssrInterpolate(a.rule === "lt-min" ? "<" : ">")} ${ssrInterpolate(a.threshold)}</span>`);
548
+ if (a.escalation > 0) _push(`<small class="esc mono" data-v-10e5bd50>+${ssrInterpolate(a.escalation)}</small>`);
516
549
  else _push(`<!---->`);
517
- _push(`<button class="mini-btn ack" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1ack142"))}</button></span>`);
550
+ _push(`<button class="mini-btn ack" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1ack142"))}</button></span>`);
518
551
  });
519
552
  _push(`<!--]--></div></div>`);
520
553
  } else _push(`<!---->`);
521
- _push(`<section class="aw-tile ctrl-card" data-v-1dcb778c><div class="ctrl-row" data-v-1dcb778c><div class="ctrl-left" data-v-1dcb778c><button class="${ssrRenderClass([{ running: unref(daq).controller.running }, "aw-pill"])}"${ssrRenderAttr("title", _ctx.$t("daq.k1snap145"))} data-v-1dcb778c><span class="${ssrRenderClass(unref(daq).controller.running ? "i-tabler-player-pause" : "i-tabler-player-play")}" data-v-1dcb778c></span> ${ssrInterpolate(unref(daq).controller.running ? _ctx.$t("daq.kpui00095") : _ctx.$t("daq.knxpdpt111"))}</button><label class="cycle mono" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1ifahxj016"))} <input${ssrRenderAttr("value", unref(daq).controller.defaultIntervalMs)} type="number" min="200" max="60000" step="100" data-v-1dcb778c>ms </label><label class="cycle mono"${ssrRenderAttr("title", _ctx.$t("daq.k1e8lcoo001"))} data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1if98n0017"))} <input${ssrRenderAttr("value", unref(daq).controller.defaultPublishIntervalMs)} type="number" min="0" max="60000" step="100" data-v-1dcb778c>ms </label></div><div class="ctrl-right" data-v-1dcb778c><span class="ctrl-metrics mono" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k45uio067"))} ${ssrInterpolate(unref(daq).controller.nodesOnline)}/${ssrInterpolate(unref(daq).controller.nodesTotal)}</span><span class="sep" data-v-1dcb778c>·</span><span${ssrRenderAttr("title", _ctx.$t("daq.k1yztsu4002"))} data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k3xagp087"))} ${ssrInterpolate(unref(daq).meta.produced)}</span><span class="sep" data-v-1dcb778c>·</span><span${ssrRenderAttr("title", _ctx.$t("daq.ko09iha003"))} data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k427eu088"))} ${ssrInterpolate(unref(daq).meta.consumed)}</span><span class="sep" data-v-1dcb778c>·</span><span class="${ssrRenderClass({ warn: (unref(daq).meta.dropped ?? 0) > 0 })}"${ssrRenderAttr("title", _ctx.$t("daq.k1droptip135"))} data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k3w8go089"))} ${ssrInterpolate(unref(daq).meta.dropped)}</span><span class="sep" data-v-1dcb778c>·</span><span${ssrRenderAttr("title", _ctx.$t("daq.kj1jbmw004"))} data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k3wusd090"))} ${ssrInterpolate(unref(daq).meta.samplesStored)}</span></span><button class="aw-pill outline add-btn" data-v-1dcb778c><span class="i-tabler-adjustments-horizontal" data-v-1dcb778c></span> ${ssrInterpolate(_ctx.$t("daq.k1f5cv0s018"))}</button><button class="aw-pill add-btn" data-v-1dcb778c><span class="i-tabler-plus" data-v-1dcb778c></span> ${ssrInterpolate(_ctx.$t("daq.k1fn0ukb019"))}</button></div></div><div class="line-strip" data-v-1dcb778c><span class="strip-label" data-v-1dcb778c><span class="i-tabler-route" data-v-1dcb778c></span> ${ssrInterpolate(_ctx.$t("daq.k1b2o3b6020"))}<small class="mono" data-v-1dcb778c>${ssrInterpolate(unref(dcw).lines.length)}</small></span><div class="strip-scroll" data-v-1dcb778c><!--[-->`);
554
+ _push(`<section class="aw-tile ctrl-card" data-v-10e5bd50><div class="ctrl-row" data-v-10e5bd50><div class="ctrl-left" data-v-10e5bd50><button class="${ssrRenderClass([{ running: unref(daq).controller.running }, "aw-pill"])}"${ssrRenderAttr("title", _ctx.$t("daq.k1snap145"))} data-v-10e5bd50><span class="${ssrRenderClass(unref(daq).controller.running ? "i-tabler-player-pause" : "i-tabler-player-play")}" data-v-10e5bd50></span> ${ssrInterpolate(unref(daq).controller.running ? _ctx.$t("daq.kpui00095") : _ctx.$t("daq.knxpdpt111"))}</button><label class="cycle mono" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1ifahxj016"))} <input${ssrRenderAttr("value", unref(daq).controller.defaultIntervalMs)} type="number" min="200" max="60000" step="100" data-v-10e5bd50>ms </label><label class="cycle mono"${ssrRenderAttr("title", _ctx.$t("daq.k1e8lcoo001"))} data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1if98n0017"))} <input${ssrRenderAttr("value", unref(daq).controller.defaultPublishIntervalMs)} type="number" min="0" max="60000" step="100" data-v-10e5bd50>ms </label></div><div class="ctrl-right" data-v-10e5bd50><span class="ctrl-metrics mono" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k45uio067"))} ${ssrInterpolate(unref(daq).controller.nodesOnline)}/${ssrInterpolate(unref(daq).controller.nodesTotal)}</span><span class="sep" data-v-10e5bd50>·</span><span${ssrRenderAttr("title", _ctx.$t("daq.k1yztsu4002"))} data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k3xagp087"))} ${ssrInterpolate(unref(daq).meta.produced)}</span><span class="sep" data-v-10e5bd50>·</span><span${ssrRenderAttr("title", _ctx.$t("daq.ko09iha003"))} data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k427eu088"))} ${ssrInterpolate(unref(daq).meta.consumed)}</span><span class="sep" data-v-10e5bd50>·</span><span class="${ssrRenderClass({ warn: (unref(daq).meta.dropped ?? 0) > 0 })}"${ssrRenderAttr("title", _ctx.$t("daq.k1droptip135"))} data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k3w8go089"))} ${ssrInterpolate(unref(daq).meta.dropped)}</span><span class="sep" data-v-10e5bd50>·</span><span${ssrRenderAttr("title", _ctx.$t("daq.kj1jbmw004"))} data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k3wusd090"))} ${ssrInterpolate(unref(daq).meta.samplesStored)}</span></span><button class="aw-pill outline add-btn" data-v-10e5bd50><span class="i-tabler-adjustments-horizontal" data-v-10e5bd50></span> ${ssrInterpolate(_ctx.$t("daq.k1f5cv0s018"))}</button><button class="aw-pill add-btn" data-v-10e5bd50><span class="i-tabler-plus" data-v-10e5bd50></span> ${ssrInterpolate(_ctx.$t("daq.k1fn0ukb019"))}</button></div></div><div class="line-strip" data-v-10e5bd50><span class="strip-label" data-v-10e5bd50><span class="i-tabler-route" data-v-10e5bd50></span> ${ssrInterpolate(_ctx.$t("daq.k1b2o3b6020"))}<small class="mono" data-v-10e5bd50>${ssrInterpolate(unref(dcw).lines.length)}</small></span><div class="strip-scroll" data-v-10e5bd50><!--[-->`);
522
555
  ssrRenderList(unref(dcw).lines, (l) => {
523
556
  _push(ssrRenderComponent(_component_NuxtLink, {
524
557
  key: l.id,
@@ -533,9 +566,9 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
533
566
  }, {
534
567
  default: withCtx((_, _push, _parent, _scopeId) => {
535
568
  if (_push) {
536
- _push(`<span class="lp-dot" data-v-1dcb778c${_scopeId}></span><b data-v-1dcb778c${_scopeId}>${ssrInterpolate(l.name)}</b>`);
537
- if (unref(dcw).lineStateOf(l.id).active) _push(`<small class="lp-run" data-v-1dcb778c${_scopeId}>${ssrInterpolate(unref(dcw).lineStateOf(l.id).recipeName ?? _ctx.$t("daq.k3vp67i096"))}</small>`);
538
- else _push(`<small class="lp-idle" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3zgkk021"))}</small>`);
569
+ _push(`<span class="lp-dot" data-v-10e5bd50${_scopeId}></span><b data-v-10e5bd50${_scopeId}>${ssrInterpolate(l.name)}</b>`);
570
+ if (unref(dcw).lineStateOf(l.id).active) _push(`<small class="lp-run" data-v-10e5bd50${_scopeId}>${ssrInterpolate(unref(dcw).lineStateOf(l.id).recipeName ?? _ctx.$t("daq.k3vp67i096"))}</small>`);
571
+ else _push(`<small class="lp-idle" data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3zgkk021"))}</small>`);
539
572
  } else return [
540
573
  createVNode("span", { class: "lp-dot" }),
541
574
  createVNode("b", null, toDisplayString(l.name), 1),
@@ -557,7 +590,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
557
590
  to: "/dcw"
558
591
  }, {
559
592
  default: withCtx((_, _push, _parent, _scopeId) => {
560
- if (_push) _push(`<span class="lp-dot" data-v-1dcb778c${_scopeId}></span><b data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1el12b1022"))}</b><small class="lp-idle" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k8jxxe8023"))}</small>`);
593
+ if (_push) _push(`<span class="lp-dot" data-v-10e5bd50${_scopeId}></span><b data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1el12b1022"))}</b><small class="lp-idle" data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k8jxxe8023"))}</small>`);
561
594
  else return [
562
595
  createVNode("span", { class: "lp-dot" }),
563
596
  createVNode("b", null, toDisplayString(_ctx.$t("daq.k1el12b1022")), 1),
@@ -569,101 +602,101 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
569
602
  else _push(`<!---->`);
570
603
  _push(`</div></div></section>`);
571
604
  if (addOpen.value) {
572
- _push(`<div class="modal-mask" data-v-1dcb778c><div class="modal" data-v-1dcb778c><h3 class="m-title" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k19rioqa024"))}</h3><div class="seg-row" data-v-1dcb778c><button class="${ssrRenderClass([{ on: addScenario.value === "mock" }, "seg"])}" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1p5c1un025"))}</button><button class="${ssrRenderClass([{ on: addScenario.value === "real" }, "seg"])}" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1cbcp3o026"))}</button></div><div class="f-grid" data-v-1dcb778c><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1fsgerc027"))}</span><select class="inp" data-v-1dcb778c><!--[-->`);
605
+ _push(`<div class="modal-mask" data-v-10e5bd50><div class="modal" data-v-10e5bd50><h3 class="m-title" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k19rioqa024"))}</h3><div class="seg-row" data-v-10e5bd50><button class="${ssrRenderClass([{ on: addScenario.value === "mock" }, "seg"])}" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1p5c1un025"))}</button><button class="${ssrRenderClass([{ on: addScenario.value === "real" }, "seg"])}" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1cbcp3o026"))}</button></div><div class="f-grid" data-v-10e5bd50><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1fsgerc027"))}</span><select class="inp" data-v-10e5bd50><!--[-->`);
573
606
  ssrRenderList(unref(daq).templates, (t) => {
574
- _push(`<option${ssrRenderAttr("value", t.key)} data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(addTemplate.value) ? ssrLooseContain(addTemplate.value, t.key) : ssrLooseEqual(addTemplate.value, t.key)) ? " selected" : ""}>${ssrInterpolate(t.name)} · ${ssrInterpolate(t.ch)}(${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)} ${ssrInterpolate(t.unit)})${ssrInterpolate(t.builtin ? "" : _ctx.$t("daq.kr45rk9097"))}</option>`);
607
+ _push(`<option${ssrRenderAttr("value", t.key)} data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(addTemplate.value) ? ssrLooseContain(addTemplate.value, t.key) : ssrLooseEqual(addTemplate.value, t.key)) ? " selected" : ""}>${ssrInterpolate(t.name)} · ${ssrInterpolate(t.ch)}(${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)} ${ssrInterpolate(t.unit)})${ssrInterpolate(t.builtin ? "" : _ctx.$t("daq.kr45rk9097"))}</option>`);
575
608
  });
576
- _push(`<!--]--></select></label><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1ce2k1y028"))}</span><input${ssrRenderAttr("value", addName.value)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.kgpxzy3005"))} data-v-1dcb778c></label>`);
577
- if (addScenario.value === "real") _push(`<label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k13mfsfc029"))}</span><input${ssrRenderAttr("value", addInterval.value)} type="number" min="1000" max="60000" step="500" class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.k1eg1000a136"))} data-v-1dcb778c></label>`);
609
+ _push(`<!--]--></select></label><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1ce2k1y028"))}</span><input${ssrRenderAttr("value", addName.value)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.kgpxzy3005"))} data-v-10e5bd50></label>`);
610
+ if (addScenario.value === "real") _push(`<label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k13mfsfc029"))}</span><input${ssrRenderAttr("value", addInterval.value)} type="number" min="1000" max="60000" step="500" class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.k1eg1000a136"))} data-v-10e5bd50></label>`);
578
611
  else _push(`<!---->`);
579
612
  _push(`</div>`);
580
613
  if (addScenario.value === "real") {
581
- _push(`<!--[--><div class="f-grid" data-v-1dcb778c><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1kt87rx030"))}</span><select class="inp" data-v-1dcb778c><!--[-->`);
614
+ _push(`<!--[--><div class="f-grid" data-v-10e5bd50><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1kt87rx030"))}</span><select class="inp" data-v-10e5bd50><!--[-->`);
582
615
  ssrRenderList(unref(DAQ_DRIVERS).filter((x) => x.status !== "planned"), (d) => {
583
- _push(`<option${ssrRenderAttr("value", d.kind)} data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(addDriver.value) ? ssrLooseContain(addDriver.value, d.kind) : ssrLooseEqual(addDriver.value, d.kind)) ? " selected" : ""}>${ssrInterpolate(d.label)}${ssrInterpolate(driverReady(d.kind) ? "" : _ctx.$t("daq.kjbqphp098"))}</option>`);
616
+ _push(`<option${ssrRenderAttr("value", d.kind)} data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(addDriver.value) ? ssrLooseContain(addDriver.value, d.kind) : ssrLooseEqual(addDriver.value, d.kind)) ? " selected" : ""}>${ssrInterpolate(d.label)}${ssrInterpolate(driverReady(d.kind) ? "" : _ctx.$t("daq.kjbqphp098"))}</option>`);
584
617
  });
585
618
  _push(`<!--]--></select></label></div>`);
586
619
  if (addFields.value.length) {
587
- _push(`<div class="f-grid driver-form" data-v-1dcb778c><!--[-->`);
620
+ _push(`<div class="f-grid driver-form" data-v-10e5bd50><!--[-->`);
588
621
  ssrRenderList(addFields.value, (f) => {
589
- _push(`<label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(f.label)}`);
590
- if (f.required) _push(`<em data-v-1dcb778c>*</em>`);
622
+ _push(`<label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(f.label)}`);
623
+ if (f.required) _push(`<em data-v-10e5bd50>*</em>`);
591
624
  else _push(`<!---->`);
592
625
  _push(`</span>`);
593
626
  if (f.type === "select") {
594
- _push(`<select class="inp" data-v-1dcb778c><!--[-->`);
627
+ _push(`<select class="inp" data-v-10e5bd50><!--[-->`);
595
628
  ssrRenderList(f.options, (o) => {
596
- _push(`<option${ssrRenderAttr("value", o.value)} data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(addCfg.value[f.key]) ? ssrLooseContain(addCfg.value[f.key], o.value) : ssrLooseEqual(addCfg.value[f.key], o.value)) ? " selected" : ""}>${ssrInterpolate(o.label)}</option>`);
629
+ _push(`<option${ssrRenderAttr("value", o.value)} data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(addCfg.value[f.key]) ? ssrLooseContain(addCfg.value[f.key], o.value) : ssrLooseEqual(addCfg.value[f.key], o.value)) ? " selected" : ""}>${ssrInterpolate(o.label)}</option>`);
597
630
  });
598
631
  _push(`<!--]--></select>`);
599
- } else _push(`<input${ssrRenderDynamicModel(f.type === "number" ? "number" : "text", addCfg.value[f.key], null)}${ssrRenderAttr("type", f.type === "number" ? "number" : "text")}${ssrRenderAttr("placeholder", f.placeholder)} class="inp" data-v-1dcb778c>`);
600
- if (f.hint) _push(`<small class="hint" data-v-1dcb778c>${ssrInterpolate(f.hint)}</small>`);
632
+ } else _push(`<input${ssrRenderDynamicModel(f.type === "number" ? "number" : "text", addCfg.value[f.key], null)}${ssrRenderAttr("type", f.type === "number" ? "number" : "text")}${ssrRenderAttr("placeholder", f.placeholder)} class="inp" data-v-10e5bd50>`);
633
+ if (f.hint) _push(`<small class="hint" data-v-10e5bd50>${ssrInterpolate(f.hint)}</small>`);
601
634
  else _push(`<!---->`);
602
635
  _push(`</label>`);
603
636
  });
604
637
  _push(`<!--]--></div>`);
605
638
  } else _push(`<!---->`);
606
- _push(`<div class="test-row" data-v-1dcb778c><button class="pill-btn"${ssrIncludeBooleanAttr(addTesting.value) ? " disabled" : ""} data-v-1dcb778c>${ssrInterpolate(addTesting.value ? _ctx.$t("daq.k1fsh720099") : _ctx.$t("daq.k1fstglk112"))}</button>`);
639
+ _push(`<div class="test-row" data-v-10e5bd50><button class="pill-btn"${ssrIncludeBooleanAttr(addTesting.value) ? " disabled" : ""} data-v-10e5bd50>${ssrInterpolate(addTesting.value ? _ctx.$t("daq.k1fsh720099") : _ctx.$t("daq.k1fstglk112"))}</button>`);
607
640
  if (addTest.value) {
608
- _push(`<span class="${ssrRenderClass([addTest.value.ok ? "ok" : "bad", "test-result"])}" data-v-1dcb778c>${ssrInterpolate(addTest.value.ok ? "✓" : "✗")} ${ssrInterpolate(addTest.value.message)}`);
641
+ _push(`<span class="${ssrRenderClass([addTest.value.ok ? "ok" : "bad", "test-result"])}" data-v-10e5bd50>${ssrInterpolate(addTest.value.ok ? "✓" : "✗")} ${ssrInterpolate(addTest.value.message)}`);
609
642
  if (addTest.value.latencyMs != null) _push(`<!--[-->(${ssrInterpolate(addTest.value.latencyMs)}ms)<!--]-->`);
610
643
  else _push(`<!---->`);
611
644
  _push(`</span>`);
612
645
  } else _push(`<!---->`);
613
646
  _push(`</div><!--]-->`);
614
647
  } else _push(`<!---->`);
615
- if (addError.value) _push(`<p class="m-err" data-v-1dcb778c>${ssrInterpolate(addError.value)}</p>`);
648
+ if (addError.value) _push(`<p class="m-err" data-v-10e5bd50>${ssrInterpolate(addError.value)}</p>`);
616
649
  else _push(`<!---->`);
617
- _push(`<div class="m-actions" data-v-1dcb778c><button class="aw-pill outline" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k3xdnn031"))}</button><button class="aw-pill"${ssrIncludeBooleanAttr(addSaving.value || addScenario.value === "real" && addTest.value != null && !addTest.value.ok) ? " disabled" : ""}${ssrRenderAttr("title", addScenario.value === "real" && !(addTest.value && addTest.value.ok) ? _ctx.$t("daq.k1needtst137") : "")} data-v-1dcb778c>${ssrInterpolate(addSaving.value ? _ctx.$t("daq.k1bg4759100") : addScenario.value === "real" ? _ctx.$t("daq.k7pxjxo113") : _ctx.$t("daq.k1bge46t118"))}</button></div></div></div>`);
650
+ _push(`<div class="m-actions" data-v-10e5bd50><button class="aw-pill outline" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k3xdnn031"))}</button><button class="aw-pill"${ssrIncludeBooleanAttr(addSaving.value || addScenario.value === "real" && addTest.value != null && !addTest.value.ok) ? " disabled" : ""}${ssrRenderAttr("title", addScenario.value === "real" && !(addTest.value && addTest.value.ok) ? _ctx.$t("daq.k1needtst137") : "")} data-v-10e5bd50>${ssrInterpolate(addSaving.value ? _ctx.$t("daq.k1bg4759100") : addScenario.value === "real" ? _ctx.$t("daq.k7pxjxo113") : _ctx.$t("daq.k1bge46t118"))}</button></div></div></div>`);
618
651
  } else _push(`<!---->`);
619
652
  if (tplOpen.value) {
620
- _push(`<div class="modal-mask" data-v-1dcb778c><div class="modal" data-v-1dcb778c><h3 class="m-title" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k11mv96s032"))}</h3><p class="sec-label" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.ktji4ky033"))}</p><table class="tpl-table" data-v-1dcb778c><tbody data-v-1dcb778c><!--[-->`);
653
+ _push(`<div class="modal-mask" data-v-10e5bd50><div class="modal" data-v-10e5bd50><h3 class="m-title" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k11mv96s032"))}</h3><p class="sec-label" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.ktji4ky033"))}</p><table class="tpl-table" data-v-10e5bd50><tbody data-v-10e5bd50><!--[-->`);
621
654
  ssrRenderList(customTpls.value, (t) => {
622
- _push(`<tr data-v-1dcb778c><td data-v-1dcb778c><b data-v-1dcb778c>${ssrInterpolate(t.name)}</b><small class="mono dim" data-v-1dcb778c>${ssrInterpolate(t.code)}</small></td><td class="mono range" data-v-1dcb778c>${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)} ${ssrInterpolate(t.unit)} · ${ssrInterpolate(t.decimals)} ${ssrInterpolate(_ctx.$t("daq.k48oi091"))}</td><td class="right actions" data-v-1dcb778c><button class="mini-btn" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k45eb0034"))}</button><button class="mini-btn danger" data-v-1dcb778c>${ssrInterpolate(confirmingDel.value === t.key ? _ctx.$t("daq.k1hhheu3101") : _ctx.$t("daq.k3xakp114"))}</button></td></tr>`);
655
+ _push(`<tr data-v-10e5bd50><td data-v-10e5bd50><b data-v-10e5bd50>${ssrInterpolate(t.name)}</b><small class="mono dim" data-v-10e5bd50>${ssrInterpolate(t.code)}</small></td><td class="mono range" data-v-10e5bd50>${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)} ${ssrInterpolate(t.unit)} · ${ssrInterpolate(t.decimals)} ${ssrInterpolate(_ctx.$t("daq.k48oi091"))}</td><td class="right actions" data-v-10e5bd50><button class="mini-btn" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k45eb0034"))}</button><button class="mini-btn danger" data-v-10e5bd50>${ssrInterpolate(confirmingDel.value === t.key ? _ctx.$t("daq.k1hhheu3101") : _ctx.$t("daq.k3xakp114"))}</button></td></tr>`);
623
656
  });
624
657
  _push(`<!--]-->`);
625
- if (!customTpls.value.length) _push(`<tr data-v-1dcb778c><td colspan="3" class="empty" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.kztvzbo035"))}</td></tr>`);
658
+ if (!customTpls.value.length) _push(`<tr data-v-10e5bd50><td colspan="3" class="empty" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.kztvzbo035"))}</td></tr>`);
626
659
  else _push(`<!---->`);
627
- _push(`</tbody></table><p class="sec-label" data-v-1dcb778c>${ssrInterpolate(tplEditing.value ? _ctx.$t("daq.k1iiph0s102") : _ctx.$t("daq.k1efixrj115"))}</p><div class="f-grid" data-v-1dcb778c><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k3xhia036"))}<em data-v-1dcb778c>*</em></span><input${ssrRenderAttr("value", unref(tplForm).name)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.k5opd2t006"))} data-v-1dcb778c></label><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k3x4ef037"))}<em data-v-1dcb778c>*</em></span><input${ssrRenderAttr("value", unref(tplForm).unit)} class="inp" placeholder="如 %RH" data-v-1dcb778c></label><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1l477m0038"))}</span><input${ssrRenderAttr("value", unref(tplForm).ch)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.kk8o4tl007"))} data-v-1dcb778c></label><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1ayxrqb039"))}</span><input${ssrRenderAttr("value", unref(tplForm).code)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.kzn3l7l008"))} data-v-1dcb778c></label><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1l9jv5m040"))}<em data-v-1dcb778c>*</em></span><input${ssrRenderAttr("value", unref(tplForm).min)} type="number" class="inp" data-v-1dcb778c></label><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1l9jv4p041"))}<em data-v-1dcb778c>*</em></span><input${ssrRenderAttr("value", unref(tplForm).max)} type="number" class="inp" data-v-1dcb778c></label><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k3mxmcx042"))}</span><input${ssrRenderAttr("value", unref(tplForm).decimals)} type="number" min="0" max="4" class="inp" data-v-1dcb778c></label><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k3xx56043"))}</span><select class="inp" data-v-1dcb778c><!--[-->`);
660
+ _push(`</tbody></table><p class="sec-label" data-v-10e5bd50>${ssrInterpolate(tplEditing.value ? _ctx.$t("daq.k1iiph0s102") : _ctx.$t("daq.k1efixrj115"))}</p><div class="f-grid" data-v-10e5bd50><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k3xhia036"))}<em data-v-10e5bd50>*</em></span><input${ssrRenderAttr("value", unref(tplForm).name)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.k5opd2t006"))} data-v-10e5bd50></label><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k3x4ef037"))}<em data-v-10e5bd50>*</em></span><input${ssrRenderAttr("value", unref(tplForm).unit)} class="inp" placeholder="如 %RH" data-v-10e5bd50></label><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1l477m0038"))}</span><input${ssrRenderAttr("value", unref(tplForm).ch)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.kk8o4tl007"))} data-v-10e5bd50></label><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1ayxrqb039"))}</span><input${ssrRenderAttr("value", unref(tplForm).code)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.kzn3l7l008"))} data-v-10e5bd50></label><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1l9jv5m040"))}<em data-v-10e5bd50>*</em></span><input${ssrRenderAttr("value", unref(tplForm).min)} type="number" class="inp" data-v-10e5bd50></label><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1l9jv4p041"))}<em data-v-10e5bd50>*</em></span><input${ssrRenderAttr("value", unref(tplForm).max)} type="number" class="inp" data-v-10e5bd50></label><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k3mxmcx042"))}</span><input${ssrRenderAttr("value", unref(tplForm).decimals)} type="number" min="0" max="4" class="inp" data-v-10e5bd50></label><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k3xx56043"))}</span><select class="inp" data-v-10e5bd50><!--[-->`);
628
661
  ssrRenderList(unref(DAQ_TEMPLATE_ICONS), (ic) => {
629
- _push(`<option${ssrRenderAttr("value", ic)} data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(tplForm).icon) ? ssrLooseContain(unref(tplForm).icon, ic) : ssrLooseEqual(unref(tplForm).icon, ic)) ? " selected" : ""}>${ssrInterpolate(ICON_LABEL[ic])}</option>`);
662
+ _push(`<option${ssrRenderAttr("value", ic)} data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(tplForm).icon) ? ssrLooseContain(unref(tplForm).icon, ic) : ssrLooseEqual(unref(tplForm).icon, ic)) ? " selected" : ""}>${ssrInterpolate(ICON_LABEL[ic])}</option>`);
630
663
  });
631
- _push(`<!--]--></select></label><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1f4eknv044"))}</span><input${ssrRenderAttr("value", unref(tplForm).base)} type="number" class="inp" data-v-1dcb778c><small class="hint" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.kytd15s045"))}</small></label><label class="f" data-v-1dcb778c><span data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1f4ifpo046"))}</span><input${ssrRenderAttr("value", unref(tplForm).amp)} type="number" class="inp" data-v-1dcb778c><small class="hint" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.ksp2aji047"))}</small></label></div>`);
632
- if (tplError.value) _push(`<p class="m-err" data-v-1dcb778c>${ssrInterpolate(tplError.value)}</p>`);
664
+ _push(`<!--]--></select></label><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1f4eknv044"))}</span><input${ssrRenderAttr("value", unref(tplForm).base)} type="number" class="inp" data-v-10e5bd50><small class="hint" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.kytd15s045"))}</small></label><label class="f" data-v-10e5bd50><span data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1f4ifpo046"))}</span><input${ssrRenderAttr("value", unref(tplForm).amp)} type="number" class="inp" data-v-10e5bd50><small class="hint" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.ksp2aji047"))}</small></label></div>`);
665
+ if (tplError.value) _push(`<p class="m-err" data-v-10e5bd50>${ssrInterpolate(tplError.value)}</p>`);
633
666
  else _push(`<!---->`);
634
- _push(`<div class="m-actions" data-v-1dcb778c><button class="aw-pill outline" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k48p40048"))}</button><button class="pill-btn"${ssrIncludeBooleanAttr(tplSaving.value) ? " disabled" : ""} data-v-1dcb778c>${ssrInterpolate(tplSaving.value ? _ctx.$t("daq.k1b38d59103") : tplEditing.value ? _ctx.$t("daq.k1b39281116") : _ctx.$t("daq.k1b3dtga119"))}</button></div><p class="sec-label" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1w8s84s049"))}</p><table class="tpl-table" data-v-1dcb778c><tbody data-v-1dcb778c><!--[-->`);
667
+ _push(`<div class="m-actions" data-v-10e5bd50><button class="aw-pill outline" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k48p40048"))}</button><button class="pill-btn"${ssrIncludeBooleanAttr(tplSaving.value) ? " disabled" : ""} data-v-10e5bd50>${ssrInterpolate(tplSaving.value ? _ctx.$t("daq.k1b38d59103") : tplEditing.value ? _ctx.$t("daq.k1b39281116") : _ctx.$t("daq.k1b3dtga119"))}</button></div><p class="sec-label" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1w8s84s049"))}</p><table class="tpl-table" data-v-10e5bd50><tbody data-v-10e5bd50><!--[-->`);
635
668
  ssrRenderList(builtinTpls.value, (t) => {
636
- _push(`<tr data-v-1dcb778c><td data-v-1dcb778c><b data-v-1dcb778c>${ssrInterpolate(t.name)}</b><small class="mono dim" data-v-1dcb778c>${ssrInterpolate(t.code)}</small></td><td class="mono range" data-v-1dcb778c>${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)} ${ssrInterpolate(t.unit)} · ${ssrInterpolate(t.decimals)} ${ssrInterpolate(_ctx.$t("daq.k48oi091"))}</td><td class="right actions" data-v-1dcb778c><button class="mini-btn" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k3y694050"))}</button></td></tr>`);
669
+ _push(`<tr data-v-10e5bd50><td data-v-10e5bd50><b data-v-10e5bd50>${ssrInterpolate(t.name)}</b><small class="mono dim" data-v-10e5bd50>${ssrInterpolate(t.code)}</small></td><td class="mono range" data-v-10e5bd50>${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)} ${ssrInterpolate(t.unit)} · ${ssrInterpolate(t.decimals)} ${ssrInterpolate(_ctx.$t("daq.k48oi091"))}</td><td class="right actions" data-v-10e5bd50><button class="mini-btn" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k3y694050"))}</button></td></tr>`);
637
670
  });
638
671
  _push(`<!--]--></tbody></table></div></div>`);
639
672
  } else _push(`<!---->`);
640
- _push(`<section class="aw-tile opt-card" data-v-1dcb778c><button class="opt-head" data-v-1dcb778c><span class="i-tabler-flask" data-v-1dcb778c></span><b data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1optt001"))}</b><span class="opt-count mono" data-v-1dcb778c>${ssrInterpolate(unref(dcw).optimizations.length)}</span><span class="${ssrRenderClass([{ open: optOpen.value }, "opt-chevron"])}" data-v-1dcb778c></span></button><div class="${ssrRenderClass([{ open: optOpen.value }, "opt-body"])}" data-v-1dcb778c>`);
673
+ _push(`<section class="aw-tile opt-card" data-v-10e5bd50><button class="opt-head" data-v-10e5bd50><span class="i-tabler-flask" data-v-10e5bd50></span><b data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1optt001"))}</b><span class="opt-count mono" data-v-10e5bd50>${ssrInterpolate(unref(dcw).optimizations.length)}</span><span class="${ssrRenderClass([{ open: optOpen.value }, "opt-chevron"])}" data-v-10e5bd50></span></button><div class="${ssrRenderClass([{ open: optOpen.value }, "opt-body"])}" data-v-10e5bd50>`);
641
674
  if (optMounted.value) {
642
- _push(`<!--[--><div class="opt-filters" data-v-1dcb778c><select class="inp-sel" data-v-1dcb778c><option value="" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(optFilterLine.value) ? ssrLooseContain(optFilterLine.value, "") : ssrLooseEqual(optFilterLine.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("daq.k1optf001"))}</option><!--[-->`);
675
+ _push(`<!--[--><div class="opt-filters" data-v-10e5bd50><select class="inp-sel" data-v-10e5bd50><option value="" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(optFilterLine.value) ? ssrLooseContain(optFilterLine.value, "") : ssrLooseEqual(optFilterLine.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("daq.k1optf001"))}</option><!--[-->`);
643
676
  ssrRenderList(unref(dcw).lines, (l) => {
644
- _push(`<option${ssrRenderAttr("value", l.id)} data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(optFilterLine.value) ? ssrLooseContain(optFilterLine.value, l.id) : ssrLooseEqual(optFilterLine.value, l.id)) ? " selected" : ""}>${ssrInterpolate(l.name)}</option>`);
677
+ _push(`<option${ssrRenderAttr("value", l.id)} data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(optFilterLine.value) ? ssrLooseContain(optFilterLine.value, l.id) : ssrLooseEqual(optFilterLine.value, l.id)) ? " selected" : ""}>${ssrInterpolate(l.name)}</option>`);
645
678
  });
646
- _push(`<!--]--></select><select class="inp-sel" data-v-1dcb778c><option value="" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(optFilterRecipe.value) ? ssrLooseContain(optFilterRecipe.value, "") : ssrLooseEqual(optFilterRecipe.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("daq.k1optf004"))}</option><!--[-->`);
679
+ _push(`<!--]--></select><select class="inp-sel" data-v-10e5bd50><option value="" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(optFilterRecipe.value) ? ssrLooseContain(optFilterRecipe.value, "") : ssrLooseEqual(optFilterRecipe.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("daq.k1optf004"))}</option><!--[-->`);
647
680
  ssrRenderList(optRecipeOptions.value, (r) => {
648
- _push(`<option${ssrRenderAttr("value", r.id)} data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(optFilterRecipe.value) ? ssrLooseContain(optFilterRecipe.value, r.id) : ssrLooseEqual(optFilterRecipe.value, r.id)) ? " selected" : ""}>${ssrInterpolate(r.name)}</option>`);
681
+ _push(`<option${ssrRenderAttr("value", r.id)} data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(optFilterRecipe.value) ? ssrLooseContain(optFilterRecipe.value, r.id) : ssrLooseEqual(optFilterRecipe.value, r.id)) ? " selected" : ""}>${ssrInterpolate(r.name)}</option>`);
649
682
  });
650
- _push(`<!--]--></select><button class="mini-act" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1optf002"))}</button></div>`);
651
- if (unref(dcw).optimizations.length === 0) _push(`<p class="opt-empty" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1opte001"))}</p>`);
683
+ _push(`<!--]--></select><button class="mini-act" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1optf002"))}</button></div>`);
684
+ if (unref(dcw).optimizations.length === 0) _push(`<p class="opt-empty" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1opte001"))}</p>`);
652
685
  else _push(`<!---->`);
653
- _push(`<ul class="opt-list" data-v-1dcb778c><!--[-->`);
686
+ _push(`<ul class="opt-list" data-v-10e5bd50><!--[-->`);
654
687
  ssrRenderList(unref(dcw).optimizations.slice(0, 30), (r) => {
655
- _push(`<li class="${ssrRenderClass([r.status, "opt-row"])}" data-v-1dcb778c><div class="opt-line1" data-v-1dcb778c><span class="${ssrRenderClass([r.status, "opt-status"])}" data-v-1dcb778c>${ssrInterpolate(_ctx.$t(optStatusKey(r.status)))}</span><b class="opt-node" data-v-1dcb778c>${ssrInterpolate(r.nodeName)}</b><span class="mono opt-params" data-v-1dcb778c>${ssrInterpolate(r.params[0]?.from ?? "?")} → ${ssrInterpolate(r.params[0]?.to)}</span><span class="mono opt-time" data-v-1dcb778c>${ssrInterpolate(r.setAt.slice(5, 16).replace("T", " "))}</span>`);
656
- if (!optSeriesOf.value[r.id]) _push(`<button class="mini-act"${ssrIncludeBooleanAttr(optSeriesLoading.value === r.id) ? " disabled" : ""} data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1opta001"))}</button>`);
688
+ _push(`<li class="${ssrRenderClass([r.status, "opt-row"])}" data-v-10e5bd50><div class="opt-line1" data-v-10e5bd50><span class="${ssrRenderClass([r.status, "opt-status"])}" data-v-10e5bd50>${ssrInterpolate(_ctx.$t(optStatusKey(r.status)))}</span><b class="opt-node" data-v-10e5bd50>${ssrInterpolate(r.nodeName)}</b><span class="mono opt-params" data-v-10e5bd50>${ssrInterpolate(r.params[0]?.from ?? "?")} → ${ssrInterpolate(r.params[0]?.to)}</span><span class="mono opt-time" data-v-10e5bd50>${ssrInterpolate(r.setAt.slice(5, 16).replace("T", " "))}</span>`);
689
+ if (!optSeriesOf.value[r.id]) _push(`<button class="mini-act"${ssrIncludeBooleanAttr(optSeriesLoading.value === r.id) ? " disabled" : ""} data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1opta001"))}</button>`);
657
690
  else _push(`<!---->`);
658
- if (r.status === "open") _push(`<button class="mini-act danger" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1opta002"))}</button>`);
691
+ if (r.status === "open") _push(`<button class="mini-act danger" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1opta002"))}</button>`);
659
692
  else _push(`<!---->`);
660
- _push(`</div><div class="opt-line2 mono" data-v-1dcb778c>`);
661
- if (r.judge) _push(`<span class="${ssrRenderClass([r.judge.verdict, "opt-judge"])}" data-v-1dcb778c>${ssrInterpolate(r.judge.verdict)}(${ssrInterpolate(r.judge.by)}): ${ssrInterpolate(r.judge.reason.slice(0, 70))}</span>`);
662
- else if (r.status === "open") _push(`<span class="opt-open-hint" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1opto001"))}</span>`);
693
+ _push(`</div><div class="opt-line2 mono" data-v-10e5bd50>`);
694
+ if (r.judge) _push(`<span class="${ssrRenderClass([r.judge.verdict, "opt-judge"])}" data-v-10e5bd50>${ssrInterpolate(r.judge.verdict)}(${ssrInterpolate(r.judge.by)}): ${ssrInterpolate(r.judge.reason.slice(0, 70))}</span>`);
695
+ else if (r.status === "open") _push(`<span class="opt-open-hint" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1opto001"))}</span>`);
663
696
  else _push(`<!---->`);
664
- if (r.aggPending) _push(`<span class="opt-agg" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1optw001"))}</span>`);
697
+ if (r.aggPending) _push(`<span class="opt-agg" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1optw001"))}</span>`);
665
698
  else if (r.windowAgg && r.windowAgg.channels.length) {
666
- _push(`<span class="opt-agg" data-v-1dcb778c><!--[-->`);
699
+ _push(`<span class="opt-agg" data-v-10e5bd50><!--[-->`);
667
700
  ssrRenderList(r.windowAgg.channels, (c) => {
668
701
  _push(`<!--[-->${ssrInterpolate(c.ch)} ${ssrInterpolate(fmtPoint(c.min))}~${ssrInterpolate(fmtPoint(c.max))}(${ssrInterpolate(_ctx.$t("daq.k1optw002"))}${ssrInterpolate(c.breaches < 0 ? "-" : c.breaches)}) <!--]-->`);
669
702
  });
@@ -671,12 +704,12 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
671
704
  } else _push(`<!---->`);
672
705
  _push(`</div>`);
673
706
  if (optSeriesOf.value[r.id]) {
674
- _push(`<div class="opt-series" data-v-1dcb778c><!--[-->`);
707
+ _push(`<div class="opt-series" data-v-10e5bd50><!--[-->`);
675
708
  ssrRenderList(optSeriesOf.value[r.id].channels, (ch) => {
676
- _push(`<div class="opt-ch" data-v-1dcb778c><svg class="opt-spark" viewBox="0 0 240 36" preserveAspectRatio="none" data-v-1dcb778c><polyline${ssrRenderAttr("points", seriesPath(ch.points))} data-v-1dcb778c></polyline></svg><span class="mono" data-v-1dcb778c>${ssrInterpolate(ch.ch)} ${ssrInterpolate(fmtPoint(ch.points.at(-1)?.value ?? ch.points.at(-1)?.avg))}${ssrInterpolate(ch.unit)}</span></div>`);
709
+ _push(`<div class="opt-ch" data-v-10e5bd50><svg class="opt-spark" viewBox="0 0 240 36" preserveAspectRatio="none" data-v-10e5bd50><polyline${ssrRenderAttr("points", seriesPath(ch.points))} data-v-10e5bd50></polyline></svg><span class="mono" data-v-10e5bd50>${ssrInterpolate(ch.ch)} ${ssrInterpolate(fmtPoint(ch.points.at(-1)?.value ?? ch.points.at(-1)?.avg))}${ssrInterpolate(ch.unit)}</span></div>`);
677
710
  });
678
711
  _push(`<!--]-->`);
679
- if (optSeriesOf.value[r.id].channels.length === 0) _push(`<p class="opt-empty" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1opte002"))}</p>`);
712
+ if (optSeriesOf.value[r.id].channels.length === 0) _push(`<p class="opt-empty" data-v-10e5bd50>${ssrInterpolate(_ctx.$t("daq.k1opte002"))}</p>`);
680
713
  else _push(`<!---->`);
681
714
  _push(`</div>`);
682
715
  } else _push(`<!---->`);
@@ -688,101 +721,67 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
688
721
  _push(ssrRenderComponent(_component_a_spin, { spinning: !unref(daq).loaded && !unref(daq).error }, {
689
722
  default: withCtx((_, _push, _parent, _scopeId) => {
690
723
  if (_push) {
691
- _push(`<section class="aw-tile table-card" data-v-1dcb778c${_scopeId}><div class="tbl-toolbar" data-v-1dcb778c${_scopeId}><div class="filters" data-v-1dcb778c${_scopeId}><label class="flt" data-v-1dcb778c${_scopeId}><span data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3wj9n051"))}</span><select class="inp-sel" data-v-1dcb778c${_scopeId}><option value="" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineId) ? ssrLooseContain(unref(filters).lineId, "") : ssrLooseEqual(unref(filters).lineId, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1bkl9uj052"))}</option><!--[-->`);
724
+ _push(`<section class="aw-tile table-card" data-v-10e5bd50${_scopeId}><div class="tbl-toolbar" data-v-10e5bd50${_scopeId}><div class="filters" data-v-10e5bd50${_scopeId}><label class="flt" data-v-10e5bd50${_scopeId}><span data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3wj9n051"))}</span><select class="inp-sel" data-v-10e5bd50${_scopeId}><option value="" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineId) ? ssrLooseContain(unref(filters).lineId, "") : ssrLooseEqual(unref(filters).lineId, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1bkl9uj052"))}</option><!--[-->`);
692
725
  ssrRenderList(unref(dcw).lines, (l) => {
693
- _push(`<option${ssrRenderAttr("value", l.id)} data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineId) ? ssrLooseContain(unref(filters).lineId, l.id) : ssrLooseEqual(unref(filters).lineId, l.id)) ? " selected" : ""}${_scopeId}>${ssrInterpolate(l.name)}</option>`);
726
+ _push(`<option${ssrRenderAttr("value", l.id)} data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineId) ? ssrLooseContain(unref(filters).lineId, l.id) : ssrLooseEqual(unref(filters).lineId, l.id)) ? " selected" : ""}${_scopeId}>${ssrInterpolate(l.name)}</option>`);
694
727
  });
695
- _push(`<!--]--><option value="none" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineId) ? ssrLooseContain(unref(filters).lineId, "none") : ssrLooseEqual(unref(filters).lineId, "none")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3ootr6053"))}</option></select></label><label class="flt" data-v-1dcb778c${_scopeId}><span data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1i8rtqt054"))}</span><select class="inp-sel" data-v-1dcb778c${_scopeId}><option value="" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).deviceId) ? ssrLooseContain(unref(filters).deviceId, "") : ssrLooseEqual(unref(filters).deviceId, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1bkw4m2055"))}</option><!--[-->`);
728
+ _push(`<!--]--><option value="none" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineId) ? ssrLooseContain(unref(filters).lineId, "none") : ssrLooseEqual(unref(filters).lineId, "none")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3ootr6053"))}</option></select></label><label class="flt" data-v-10e5bd50${_scopeId}><span data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1i8rtqt054"))}</span><select class="inp-sel" data-v-10e5bd50${_scopeId}><option value="" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).deviceId) ? ssrLooseContain(unref(filters).deviceId, "") : ssrLooseEqual(unref(filters).deviceId, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1bkw4m2055"))}</option><!--[-->`);
696
729
  ssrRenderList(boundDevices.value, (d) => {
697
- _push(`<option${ssrRenderAttr("value", d.id)} data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).deviceId) ? ssrLooseContain(unref(filters).deviceId, d.id) : ssrLooseEqual(unref(filters).deviceId, d.id)) ? " selected" : ""}${_scopeId}>${ssrInterpolate(d.name)}(${ssrInterpolate(d.count)}) </option>`);
730
+ _push(`<option${ssrRenderAttr("value", d.id)} data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).deviceId) ? ssrLooseContain(unref(filters).deviceId, d.id) : ssrLooseEqual(unref(filters).deviceId, d.id)) ? " selected" : ""}${_scopeId}>${ssrInterpolate(d.name)}(${ssrInterpolate(d.count)}) </option>`);
698
731
  });
699
- _push(`<!--]--><option value="none" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).deviceId) ? ssrLooseContain(unref(filters).deviceId, "none") : ssrLooseEqual(unref(filters).deviceId, "none")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3own4q056"))}</option></select></label><label class="flt"${ssrRenderAttr("title", _ctx.$t("daq.khb8mru009"))} data-v-1dcb778c${_scopeId}><span data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1b2tkyv057"))}</span><select class="inp-sel" data-v-1dcb778c${_scopeId}><option value="" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineRun) ? ssrLooseContain(unref(filters).lineRun, "") : ssrLooseEqual(unref(filters).lineRun, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3x4t1058"))}</option><option value="on" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineRun) ? ssrLooseContain(unref(filters).lineRun, "on") : ssrLooseEqual(unref(filters).lineRun, "on")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1nxm3p7059"))}</option><option value="off" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineRun) ? ssrLooseContain(unref(filters).lineRun, "off") : ssrLooseEqual(unref(filters).lineRun, "off")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1ulx34e060"))}</option></select></label><label class="flt" data-v-1dcb778c${_scopeId}><span data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1iwdfef061"))}</span><select class="inp-sel" data-v-1dcb778c${_scopeId}><option value="" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).state) ? ssrLooseContain(unref(filters).state, "") : ssrLooseEqual(unref(filters).state, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3x4t1058"))}</option><option value="ok" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).state) ? ssrLooseContain(unref(filters).state, "ok") : ssrLooseEqual(unref(filters).state, "ok")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k41k5c062"))}</option><option value="warn" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).state) ? ssrLooseContain(unref(filters).state, "warn") : ssrLooseEqual(unref(filters).state, "warn")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k49z8v063"))}</option><option value="alarm" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).state) ? ssrLooseContain(unref(filters).state, "alarm") : ssrLooseEqual(unref(filters).state, "alarm")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3xmid064"))}</option><option value="offline" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).state) ? ssrLooseContain(unref(filters).state, "offline") : ssrLooseEqual(unref(filters).state, "offline")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k44c2n065"))}</option></select></label><label class="flt" data-v-1dcb778c${_scopeId}><span data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttpl010"))}</span><select class="inp-sel" data-v-1dcb778c${_scopeId}><option value="" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).template) ? ssrLooseContain(unref(filters).template, "") : ssrLooseEqual(unref(filters).template, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttpl011"))}</option><!--[-->`);
732
+ _push(`<!--]--><option value="none" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).deviceId) ? ssrLooseContain(unref(filters).deviceId, "none") : ssrLooseEqual(unref(filters).deviceId, "none")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3own4q056"))}</option></select></label><label class="flt"${ssrRenderAttr("title", _ctx.$t("daq.khb8mru009"))} data-v-10e5bd50${_scopeId}><span data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1b2tkyv057"))}</span><select class="inp-sel" data-v-10e5bd50${_scopeId}><option value="" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineRun) ? ssrLooseContain(unref(filters).lineRun, "") : ssrLooseEqual(unref(filters).lineRun, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3x4t1058"))}</option><option value="on" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineRun) ? ssrLooseContain(unref(filters).lineRun, "on") : ssrLooseEqual(unref(filters).lineRun, "on")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1nxm3p7059"))}</option><option value="off" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineRun) ? ssrLooseContain(unref(filters).lineRun, "off") : ssrLooseEqual(unref(filters).lineRun, "off")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1ulx34e060"))}</option></select></label><label class="flt" data-v-10e5bd50${_scopeId}><span data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1iwdfef061"))}</span><select class="inp-sel" data-v-10e5bd50${_scopeId}><option value="" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).state) ? ssrLooseContain(unref(filters).state, "") : ssrLooseEqual(unref(filters).state, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3x4t1058"))}</option><option value="ok" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).state) ? ssrLooseContain(unref(filters).state, "ok") : ssrLooseEqual(unref(filters).state, "ok")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k41k5c062"))}</option><option value="warn" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).state) ? ssrLooseContain(unref(filters).state, "warn") : ssrLooseEqual(unref(filters).state, "warn")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k49z8v063"))}</option><option value="alarm" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).state) ? ssrLooseContain(unref(filters).state, "alarm") : ssrLooseEqual(unref(filters).state, "alarm")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3xmid064"))}</option><option value="offline" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).state) ? ssrLooseContain(unref(filters).state, "offline") : ssrLooseEqual(unref(filters).state, "offline")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k44c2n065"))}</option></select></label><label class="flt" data-v-10e5bd50${_scopeId}><span data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttpl010"))}</span><select class="inp-sel" data-v-10e5bd50${_scopeId}><option value="" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).template) ? ssrLooseContain(unref(filters).template, "") : ssrLooseEqual(unref(filters).template, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttpl011"))}</option><!--[-->`);
700
733
  ssrRenderList(templateOptions.value, (t) => {
701
- _push(`<option${ssrRenderAttr("value", t.ref)} data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).template) ? ssrLooseContain(unref(filters).template, t.ref) : ssrLooseEqual(unref(filters).template, t.ref)) ? " selected" : ""}${_scopeId}>${ssrInterpolate(t.label)}(${ssrInterpolate(t.count)}) </option>`);
734
+ _push(`<option${ssrRenderAttr("value", t.ref)} data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).template) ? ssrLooseContain(unref(filters).template, t.ref) : ssrLooseEqual(unref(filters).template, t.ref)) ? " selected" : ""}${_scopeId}>${ssrInterpolate(t.label)}(${ssrInterpolate(t.count)}) </option>`);
702
735
  });
703
- _push(`<!--]--></select></label><label class="flt" data-v-1dcb778c${_scopeId}><span data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fltdrv012"))}</span><select class="inp-sel" data-v-1dcb778c${_scopeId}><option value="" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).driver) ? ssrLooseContain(unref(filters).driver, "") : ssrLooseEqual(unref(filters).driver, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fltdrv013"))}</option><!--[-->`);
736
+ _push(`<!--]--></select></label><label class="flt" data-v-10e5bd50${_scopeId}><span data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fltdrv012"))}</span><select class="inp-sel" data-v-10e5bd50${_scopeId}><option value="" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).driver) ? ssrLooseContain(unref(filters).driver, "") : ssrLooseEqual(unref(filters).driver, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fltdrv013"))}</option><!--[-->`);
704
737
  ssrRenderList(driverOptions.value, (d) => {
705
- _push(`<option${ssrRenderAttr("value", d.kind)} data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).driver) ? ssrLooseContain(unref(filters).driver, d.kind) : ssrLooseEqual(unref(filters).driver, d.kind)) ? " selected" : ""}${_scopeId}>${ssrInterpolate(d.label)}(${ssrInterpolate(d.count)}) </option>`);
738
+ _push(`<option${ssrRenderAttr("value", d.kind)} data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).driver) ? ssrLooseContain(unref(filters).driver, d.kind) : ssrLooseEqual(unref(filters).driver, d.kind)) ? " selected" : ""}${_scopeId}>${ssrInterpolate(d.label)}(${ssrInterpolate(d.count)}) </option>`);
706
739
  });
707
- _push(`<!--]--></select></label><label class="flt"${ssrRenderAttr("title", _ctx.$t("daq.k1flttim014"))} data-v-1dcb778c${_scopeId}><span data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttim015"))}</span><select class="inp-sel" data-v-1dcb778c${_scopeId}><option value="" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "") : ssrLooseEqual(unref(filters).time, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttim016"))}</option><option value="live" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "live") : ssrLooseEqual(unref(filters).time, "live")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1timlv017"))}</option><option value="hour" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "hour") : ssrLooseEqual(unref(filters).time, "hour")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1timhr018"))}</option><option value="day" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "day") : ssrLooseEqual(unref(filters).time, "day")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1timdy019"))}</option><option value="old" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "old") : ssrLooseEqual(unref(filters).time, "old")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1timld020"))}</option><option value="never" data-v-1dcb778c${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "never") : ssrLooseEqual(unref(filters).time, "never")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1timnv021"))}</option></select></label><label class="flt" data-v-1dcb778c${_scopeId}><span data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fltsrc022"))}</span><input${ssrRenderAttr("value", unref(filters).search)} class="inp-sel flt-search" type="search"${ssrRenderAttr("placeholder", _ctx.$t("daq.k1fltsph023"))} data-v-1dcb778c${_scopeId}></label>`);
708
- if (hasFilters.value) _push(`<button class="mini-btn clear-btn" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fygck2066"))}</button>`);
740
+ _push(`<!--]--></select></label><label class="flt"${ssrRenderAttr("title", _ctx.$t("daq.k1flttim014"))} data-v-10e5bd50${_scopeId}><span data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttim015"))}</span><select class="inp-sel" data-v-10e5bd50${_scopeId}><option value="" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "") : ssrLooseEqual(unref(filters).time, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttim016"))}</option><option value="live" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "live") : ssrLooseEqual(unref(filters).time, "live")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1timlv017"))}</option><option value="hour" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "hour") : ssrLooseEqual(unref(filters).time, "hour")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1timhr018"))}</option><option value="day" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "day") : ssrLooseEqual(unref(filters).time, "day")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1timdy019"))}</option><option value="old" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "old") : ssrLooseEqual(unref(filters).time, "old")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1timld020"))}</option><option value="never" data-v-10e5bd50${ssrIncludeBooleanAttr(Array.isArray(unref(filters).time) ? ssrLooseContain(unref(filters).time, "never") : ssrLooseEqual(unref(filters).time, "never")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1timnv021"))}</option></select></label><label class="flt" data-v-10e5bd50${_scopeId}><span data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fltsrc022"))}</span><input${ssrRenderAttr("value", unref(filters).search)} class="inp-sel flt-search" type="search"${ssrRenderAttr("placeholder", _ctx.$t("daq.k1fltsph023"))} data-v-10e5bd50${_scopeId}></label>`);
741
+ if (hasFilters.value) _push(`<button class="mini-btn clear-btn" data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fygck2066"))}</button>`);
709
742
  else _push(`<!---->`);
710
- _push(`</div><span class="count mono" data-v-1dcb778c${_scopeId}>${ssrInterpolate(filteredNodes.value.length)} / ${ssrInterpolate(unref(daq).nodes.length)} ${ssrInterpolate(_ctx.$t("daq.k45uio067"))}</span></div><div class="ops-panels" data-v-1dcb778c${_scopeId}><div class="${ssrRenderClass([{ live: unref(daq).alarms.length > 0 }, "ops-panel alarm-panel"])}" data-v-1dcb778c${_scopeId}><div class="panel-head" data-v-1dcb778c${_scopeId}><span class="i-tabler-bell-ringing bell" data-v-1dcb778c${_scopeId}></span><b data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1alarm141"))}</b><span class="${ssrRenderClass([{ hot: unref(daq).alarms.length > 0 }, "mono cnt"])}" data-v-1dcb778c${_scopeId}>${ssrInterpolate(unref(daq).alarms.length)}</span></div><div class="panel-body" data-v-1dcb778c${_scopeId}>`);
711
- if (unref(daq).alarms.length === 0) _push(`<p class="panel-empty" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1evt001"))}</p>`);
743
+ _push(`</div><span class="count mono" data-v-10e5bd50${_scopeId}>${ssrInterpolate(filteredNodes.value.length)} / ${ssrInterpolate(unref(daq).nodes.length)} ${ssrInterpolate(_ctx.$t("daq.k45uio067"))}</span></div><div class="ops-panels" data-v-10e5bd50${_scopeId}><div class="${ssrRenderClass([{ live: unref(daq).alarms.length > 0 }, "ops-panel alarm-panel"])}" data-v-10e5bd50${_scopeId}><div class="panel-head" data-v-10e5bd50${_scopeId}><span class="i-tabler-bell-ringing bell" data-v-10e5bd50${_scopeId}></span><b data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1alarm141"))}</b><span class="${ssrRenderClass([{ hot: unref(daq).alarms.length > 0 }, "mono cnt"])}" data-v-10e5bd50${_scopeId}>${ssrInterpolate(unref(daq).alarms.length)}</span></div><div class="panel-body" data-v-10e5bd50${_scopeId}>`);
744
+ if (unref(daq).alarms.length === 0) _push(`<p class="panel-empty" data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1evt001"))}</p>`);
712
745
  else {
713
746
  _push(`<!--[-->`);
714
747
  ssrRenderList(unref(daq).alarms, (a) => {
715
- _push(`<div class="alarm-row" data-v-1dcb778c${_scopeId}><span class="i-tabler-alert-triangle tri" data-v-1dcb778c${_scopeId}></span><b data-v-1dcb778c${_scopeId}>${ssrInterpolate(a.nodeName)}</b><span class="mono dim" data-v-1dcb778c${_scopeId}>${ssrInterpolate(a.metric)}</span><span class="mono" data-v-1dcb778c${_scopeId}>${ssrInterpolate(a.value)} ${ssrInterpolate(a.rule === "lt-min" ? "<" : ">")} ${ssrInterpolate(a.threshold)}</span>`);
716
- if (a.escalation > 0) _push(`<small class="esc mono" data-v-1dcb778c${_scopeId}>+${ssrInterpolate(a.escalation)}</small>`);
748
+ _push(`<div class="alarm-row" data-v-10e5bd50${_scopeId}><span class="i-tabler-alert-triangle tri" data-v-10e5bd50${_scopeId}></span><b data-v-10e5bd50${_scopeId}>${ssrInterpolate(a.nodeName)}</b><span class="mono dim" data-v-10e5bd50${_scopeId}>${ssrInterpolate(a.metric)}</span><span class="mono" data-v-10e5bd50${_scopeId}>${ssrInterpolate(a.value)} ${ssrInterpolate(a.rule === "lt-min" ? "<" : ">")} ${ssrInterpolate(a.threshold)}</span>`);
749
+ if (a.escalation > 0) _push(`<small class="esc mono" data-v-10e5bd50${_scopeId}>+${ssrInterpolate(a.escalation)}</small>`);
717
750
  else _push(`<!---->`);
718
- _push(`<button class="mini-btn ack" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1ack142"))}</button></div>`);
751
+ _push(`<button class="mini-btn ack" data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1ack142"))}</button></div>`);
719
752
  });
720
753
  _push(`<!--]-->`);
721
754
  }
722
- _push(`</div></div><div class="ops-panel event-panel" data-v-1dcb778c${_scopeId}><div class="panel-head" data-v-1dcb778c${_scopeId}><span class="i-tabler-activity" data-v-1dcb778c${_scopeId}></span><b data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1evt002"))}</b>`);
755
+ _push(`</div></div><div class="ops-panel event-panel" data-v-10e5bd50${_scopeId}><div class="panel-head" data-v-10e5bd50${_scopeId}><span class="i-tabler-activity" data-v-10e5bd50${_scopeId}></span><b data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1evt002"))}</b>`);
723
756
  _push(ssrRenderComponent(_component_NuxtLink, {
724
757
  class: "panel-link",
725
758
  to: "/logs"
726
759
  }, {
727
760
  default: withCtx((_, _push, _parent, _scopeId) => {
728
- if (_push) _push(`${ssrInterpolate(_ctx.$t("daq.k1evt003"))}<span class="i-tabler-arrow-right" data-v-1dcb778c${_scopeId}></span>`);
761
+ if (_push) _push(`${ssrInterpolate(_ctx.$t("daq.k1evt003"))}<span class="i-tabler-arrow-right" data-v-10e5bd50${_scopeId}></span>`);
729
762
  else return [createTextVNode(toDisplayString(_ctx.$t("daq.k1evt003")), 1), createVNode("span", { class: "i-tabler-arrow-right" })];
730
763
  }),
731
764
  _: 1
732
765
  }, _parent, _scopeId));
733
- _push(`</div><div class="panel-body" data-v-1dcb778c${_scopeId}>`);
734
- if (unref(opsLog).recent.length === 0) _push(`<p class="panel-empty" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1evt004"))}</p>`);
766
+ _push(`</div><div class="panel-body" data-v-10e5bd50${_scopeId}>`);
767
+ if (unref(opsLog).recent.length === 0) _push(`<p class="panel-empty" data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1evt004"))}</p>`);
735
768
  else {
736
769
  _push(`<!--[-->`);
737
770
  ssrRenderList(unref(opsLog).recent, (r, i) => {
738
- _push(`<div class="evt-row" data-v-1dcb778c${_scopeId}><span class="mono dim t" data-v-1dcb778c${_scopeId}>${ssrInterpolate(opsTime(r.at))}</span><span class="${ssrRenderClass([r.actorKind, "src-badge"])}" data-v-1dcb778c${_scopeId}>${ssrInterpolate(r.actorKind === "agent" ? "Agent" : r.actorKind === "user" ? _ctx.$t("logs.src.user") : _ctx.$t("logs.src.system"))}</span><span class="${ssrRenderClass([r.kind, "kind-chip"])}" data-v-1dcb778c${_scopeId}>${ssrInterpolate(opsKindLabel(r.kind))}</span><span class="txt"${ssrRenderAttr("title", r.summary)} data-v-1dcb778c${_scopeId}>${ssrInterpolate(r.summary)}</span></div>`);
771
+ _push(`<div class="evt-row" data-v-10e5bd50${_scopeId}><span class="mono dim t" data-v-10e5bd50${_scopeId}>${ssrInterpolate(opsTime(r.at))}</span><span class="${ssrRenderClass([r.actorKind, "src-badge"])}" data-v-10e5bd50${_scopeId}>${ssrInterpolate(r.actorKind === "agent" ? "Agent" : r.actorKind === "user" ? _ctx.$t("logs.src.user") : _ctx.$t("logs.src.system"))}</span><span class="${ssrRenderClass([r.kind, "kind-chip"])}" data-v-10e5bd50${_scopeId}>${ssrInterpolate(opsKindLabel(r.kind))}</span><span class="txt"${ssrRenderAttr("title", r.summary)} data-v-10e5bd50${_scopeId}>${ssrInterpolate(r.summary)}</span></div>`);
739
772
  });
740
773
  _push(`<!--]-->`);
741
774
  }
742
- _push(`</div></div></div><table class="nodes-table" data-v-1dcb778c${_scopeId}><thead data-v-1dcb778c${_scopeId}><tr data-v-1dcb778c${_scopeId}><th data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k45uio067"))}</th><th data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k42w8s068"))}</th><th data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3mv305069"))}</th><th data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1trnd001"))}</th><th data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1l6g2ga070"))}</th><th data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3zi0nf071"))}</th><th data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k4a0la072"))}</th><th data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3wj9n051"))}</th><th${ssrRenderAttr("title", _ctx.$t("daq.k1runtipc131"))} data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1b2tkyv057"))}</th><th${ssrRenderAttr("title", _ctx.$t("daq.k1prdrtip132"))} data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1prodrc128"))}</th><th data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1i8rtqt054"))}</th><th class="right" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k40aa6073"))}</th></tr></thead><tbody data-v-1dcb778c${_scopeId}><!--[-->`);
743
- ssrRenderList(filteredRows.value, ({ n, c }) => {
744
- _push(`<tr class="${ssrRenderClass({ "row-recipe-alarm": c.alarm })}" data-v-1dcb778c${_scopeId}><td data-v-1dcb778c${_scopeId}><span class="mono dim" data-v-1dcb778c${_scopeId}>${ssrInterpolate(n.id.slice(0, 8))}</span><b data-v-1dcb778c${_scopeId}>${ssrInterpolate(n.name)}</b><small class="mono ch" data-v-1dcb778c${_scopeId}>${ssrInterpolate(c.tpl)}</small></td><td data-v-1dcb778c${_scopeId}><span class="${ssrRenderClass([[c.pill.key], "st-pill"])}"${ssrRenderAttr("title", c.pill.tip)} data-v-1dcb778c${_scopeId}>${ssrInterpolate(c.pill.label)}</span></td><td class="${ssrRenderClass([{
745
- "stale": !c.live,
746
- "val-alarm": n.state === "alarm" || c.alarm
747
- }, "mono val"])}"${ssrRenderAttr("title", c.live ? void 0 : c.pill.tip)} data-v-1dcb778c${_scopeId}>${ssrInterpolate(n.value != null ? n.value.toFixed(n.decimals) : "--")} <small data-v-1dcb778c${_scopeId}>${ssrInterpolate(n.unit)}</small></td><td class="trend-cell" data-v-1dcb778c${_scopeId}><svg class="trend" viewBox="0 0 120 26" preserveAspectRatio="none"${ssrRenderAttr("title", _ctx.$t("daq.k1trnd002"))} data-v-1dcb778c${_scopeId}>`);
748
- if (limitY(n.hist, limitOf(n).min) != null) _push(`<line class="lim" x1="0"${ssrRenderAttr("y1", limitY(n.hist, limitOf(n).min))} x2="120"${ssrRenderAttr("y2", limitY(n.hist, limitOf(n).min))} data-v-1dcb778c${_scopeId}></line>`);
749
- else _push(`<!---->`);
750
- if (limitY(n.hist, limitOf(n).max) != null) _push(`<line class="lim max" x1="0"${ssrRenderAttr("y1", limitY(n.hist, limitOf(n).max))} x2="120"${ssrRenderAttr("y2", limitY(n.hist, limitOf(n).max))} data-v-1dcb778c${_scopeId}></line>`);
751
- else _push(`<!---->`);
752
- _push(`<polyline class="${ssrRenderClass([{ alarm: n.state === "alarm" || c.alarm }, "trace"])}"${ssrRenderAttr("points", trendPath(n.hist))} data-v-1dcb778c${_scopeId}></polyline></svg></td><td class="mono" data-v-1dcb778c${_scopeId}>${ssrInterpolate(intervalOf(n.intervalMs))}</td><td class="mono" data-v-1dcb778c${_scopeId}>${ssrInterpolate(publishOf(n.publishIntervalMs))}</td><td data-v-1dcb778c${_scopeId}><span class="${ssrRenderClass([{ planned: driverPlanned(n.driver) }, "drv-tag"])}"${ssrRenderAttr("title", driverPlanned(n.driver) ? _ctx.$t("daq.k1plndrv138") : "")} data-v-1dcb778c${_scopeId}>${ssrInterpolate(n.driver)}</span></td><td data-v-1dcb778c${_scopeId}><select class="line-sel"${ssrRenderAttr("value", n.lineId)}${ssrRenderAttr("title", _ctx.$t("daq.k3q23v3010"))} data-v-1dcb778c${_scopeId}><option value="" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3ootr6053"))}</option><!--[-->`);
753
- ssrRenderList(unref(dcw).lines, (l) => {
754
- _push(`<option${ssrRenderAttr("value", l.id)} data-v-1dcb778c${_scopeId}>${ssrInterpolate(l.name)}</option>`);
755
- });
756
- _push(`<!--]--></select></td><td data-v-1dcb778c${_scopeId}>`);
757
- if (n.lineId) _push(`<span class="${ssrRenderClass([{ on: unref(dcw).lineStateOf(n.lineId).active }, "run-pill"])}"${ssrRenderAttr("title", _ctx.$t("daq.k1runtipc131"))} data-v-1dcb778c${_scopeId}><span class="rp-dot" data-v-1dcb778c${_scopeId}></span> ${ssrInterpolate(unref(dcw).lineStateOf(n.lineId).active ? _ctx.$t("daq.k3vp67i096") : _ctx.$t("daq.k3ozyqz117"))}</span>`);
758
- else _push(`<span class="run-pill na" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3ootr6053"))}</span>`);
759
- _push(`</td><td class="prod-cell" data-v-1dcb778c${_scopeId}>`);
760
- if (n.lineId && unref(dcw).lineStateOf(n.lineId).active) _push(`<!--[--><b${ssrRenderAttr("title", _ctx.$t("daq.k1prdrtip132"))} data-v-1dcb778c${_scopeId}>${ssrInterpolate(unref(dcw).lineStateOf(n.lineId).productName || "--")}</b><small class="mono"${ssrRenderAttr("title", _ctx.$t("daq.k1prdrtip132"))} data-v-1dcb778c${_scopeId}>${ssrInterpolate(unref(dcw).lineStateOf(n.lineId).recipeName || "--")}</small><!--]-->`);
761
- else _push(`<span class="dim" data-v-1dcb778c${_scopeId}>--</span>`);
762
- _push(`</td><td data-v-1dcb778c${_scopeId}><div class="dev-binds" data-v-1dcb778c${_scopeId}><!--[-->`);
763
- ssrRenderList(nodeDeviceIds(n), (did) => {
764
- _push(`<span class="dev-bind-chip"${ssrRenderAttr("title", _ctx.$t("daq.k2bindtip137"))} data-v-1dcb778c${_scopeId}>${ssrInterpolate(deviceNameById(did))} <span class="dev-unbind" title="unbind" data-v-1dcb778c${_scopeId}>✕</span></span>`);
765
- });
766
- _push(`<!--]--><select class="line-sel dev-add"${ssrRenderAttr("value", "")}${ssrRenderAttr("title", _ctx.$t("daq.k2bindtip137"))} data-v-1dcb778c${_scopeId}><option value="" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3own4q056"))}</option><!--[-->`);
767
- ssrRenderList(bindableDeviceTwins.value, (d) => {
768
- _push(`<option${ssrRenderAttr("value", d.id)}${ssrIncludeBooleanAttr((n.deviceIds ?? []).includes(d.id)) ? " disabled" : ""} data-v-1dcb778c${_scopeId}>${ssrInterpolate(unref(nodeDevices).get(d.id) ?? d.name)}</option>`);
769
- });
770
- _push(`<!--]--></select></div></td><td class="right" data-v-1dcb778c${_scopeId}><button class="${ssrRenderClass([{ off: !n.enabled }, "node-toggle"])}"${ssrRenderAttr("title", n.enabled ? _ctx.$t("daq.k1nodestop146") : _ctx.$t("daq.k1nodestart147"))} data-v-1dcb778c${_scopeId}><span class="${ssrRenderClass(n.enabled ? "i-tabler-player-pause" : "i-tabler-player-play")}" data-v-1dcb778c${_scopeId}></span> ${ssrInterpolate(n.enabled ? _ctx.$t("daq.k1nodestop146") : _ctx.$t("daq.k1nodestart147"))}</button>`);
771
- _push(ssrRenderComponent(_component_NuxtLink, {
772
- class: "console-link",
773
- to: `/daq/${n.id}`
774
- }, {
775
- default: withCtx((_, _push, _parent, _scopeId) => {
776
- if (_push) _push(`<span class="i-tabler-dashboard" data-v-1dcb778c${_scopeId}></span> ${ssrInterpolate(_ctx.$t("daq.k3o3jg2074"))}`);
777
- else return [createVNode("span", { class: "i-tabler-dashboard" }), createTextVNode(" " + toDisplayString(_ctx.$t("daq.k3o3jg2074")), 1)];
778
- }),
779
- _: 2
780
- }, _parent, _scopeId));
781
- _push(`</td></tr>`);
775
+ _push(`</div></div></div><table class="nodes-table" data-v-10e5bd50${_scopeId}><thead data-v-10e5bd50${_scopeId}><tr data-v-10e5bd50${_scopeId}><th data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k45uio067"))}</th><th data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k42w8s068"))}</th><th data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3mv305069"))}</th><th data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1trnd001"))}</th><th data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1l6g2ga070"))}</th><th data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3zi0nf071"))}</th><th data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k4a0la072"))}</th><th data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3wj9n051"))}</th><th${ssrRenderAttr("title", _ctx.$t("daq.k1runtipc131"))} data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1b2tkyv057"))}</th><th${ssrRenderAttr("title", _ctx.$t("daq.k1prdrtip132"))} data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1prodrc128"))}</th><th data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1i8rtqt054"))}</th><th class="right" data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k40aa6073"))}</th></tr></thead><tbody data-v-10e5bd50${_scopeId}><!--[-->`);
776
+ ssrRenderList(filteredNodes.value, (n) => {
777
+ _push(ssrRenderComponent(_component_WorkshopDaqNodeRow, {
778
+ key: n.id,
779
+ n
780
+ }, null, _parent, _scopeId));
782
781
  });
783
782
  _push(`<!--]-->`);
784
- if (unref(daq).loaded && unref(daq).nodes.length === 0) _push(`<tr data-v-1dcb778c${_scopeId}><td colspan="11" data-v-1dcb778c${_scopeId}><div class="pane-empty" style="${ssrRenderStyle({ "min-height": "120px" })}" data-v-1dcb778c${_scopeId}><p class="pe-sub" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.kvhjyc3075"))}</p></div></td></tr>`);
785
- else if (unref(daq).loaded && filteredNodes.value.length === 0) _push(`<tr data-v-1dcb778c${_scopeId}><td colspan="11" data-v-1dcb778c${_scopeId}><div class="pane-empty" style="${ssrRenderStyle({ "min-height": "90px" })}" data-v-1dcb778c${_scopeId}><p class="pe-sub" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1w20qew076"))}</p></div></td></tr>`);
783
+ if (unref(daq).loaded && unref(daq).nodes.length === 0) _push(`<tr data-v-10e5bd50${_scopeId}><td colspan="11" data-v-10e5bd50${_scopeId}><div class="pane-empty" style="${ssrRenderStyle({ "min-height": "120px" })}" data-v-10e5bd50${_scopeId}><p class="pe-sub" data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.kvhjyc3075"))}</p></div></td></tr>`);
784
+ else if (unref(daq).loaded && filteredNodes.value.length === 0) _push(`<tr data-v-10e5bd50${_scopeId}><td colspan="11" data-v-10e5bd50${_scopeId}><div class="pane-empty" style="${ssrRenderStyle({ "min-height": "90px" })}" data-v-10e5bd50${_scopeId}><p class="pe-sub" data-v-10e5bd50${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1w20qew076"))}</p></div></td></tr>`);
786
785
  else _push(`<!---->`);
787
786
  _push(`</tbody></table></section>`);
788
787
  } else return [createVNode("section", { class: "aw-tile table-card" }, [
@@ -943,124 +942,11 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
943
942
  createVNode("th", { title: _ctx.$t("daq.k1prdrtip132") }, toDisplayString(_ctx.$t("daq.k1prodrc128")), 9, ["title"]),
944
943
  createVNode("th", null, toDisplayString(_ctx.$t("daq.k1i8rtqt054")), 1),
945
944
  createVNode("th", { class: "right" }, toDisplayString(_ctx.$t("daq.k40aa6073")), 1)
946
- ])]), createVNode("tbody", null, [(openBlock(true), createBlock(Fragment, null, renderList(filteredRows.value, ({ n, c }) => {
947
- return openBlock(), createBlock("tr", {
945
+ ])]), createVNode("tbody", null, [(openBlock(true), createBlock(Fragment, null, renderList(filteredNodes.value, (n) => {
946
+ return openBlock(), createBlock(_component_WorkshopDaqNodeRow, {
948
947
  key: n.id,
949
- class: { "row-recipe-alarm": c.alarm }
950
- }, [
951
- createVNode("td", null, [
952
- createVNode("span", { class: "mono dim" }, toDisplayString(n.id.slice(0, 8)), 1),
953
- createVNode("b", null, toDisplayString(n.name), 1),
954
- createVNode("small", { class: "mono ch" }, toDisplayString(c.tpl), 1)
955
- ]),
956
- createVNode("td", null, [createVNode("span", {
957
- class: ["st-pill", [c.pill.key]],
958
- title: c.pill.tip
959
- }, toDisplayString(c.pill.label), 11, ["title"])]),
960
- createVNode("td", {
961
- class: ["mono val", {
962
- "stale": !c.live,
963
- "val-alarm": n.state === "alarm" || c.alarm
964
- }],
965
- title: c.live ? void 0 : c.pill.tip
966
- }, [createTextVNode(toDisplayString(n.value != null ? n.value.toFixed(n.decimals) : "--") + " ", 1), createVNode("small", null, toDisplayString(n.unit), 1)], 10, ["title"]),
967
- createVNode("td", { class: "trend-cell" }, [(openBlock(), createBlock("svg", {
968
- class: "trend",
969
- viewBox: "0 0 120 26",
970
- preserveAspectRatio: "none",
971
- title: _ctx.$t("daq.k1trnd002")
972
- }, [
973
- limitY(n.hist, limitOf(n).min) != null ? (openBlock(), createBlock("line", {
974
- key: 0,
975
- class: "lim",
976
- x1: "0",
977
- y1: limitY(n.hist, limitOf(n).min),
978
- x2: "120",
979
- y2: limitY(n.hist, limitOf(n).min)
980
- }, null, 8, ["y1", "y2"])) : createCommentVNode("", true),
981
- limitY(n.hist, limitOf(n).max) != null ? (openBlock(), createBlock("line", {
982
- key: 1,
983
- class: "lim max",
984
- x1: "0",
985
- y1: limitY(n.hist, limitOf(n).max),
986
- x2: "120",
987
- y2: limitY(n.hist, limitOf(n).max)
988
- }, null, 8, ["y1", "y2"])) : createCommentVNode("", true),
989
- createVNode("polyline", {
990
- class: ["trace", { alarm: n.state === "alarm" || c.alarm }],
991
- points: trendPath(n.hist)
992
- }, null, 10, ["points"])
993
- ], 8, ["title"]))]),
994
- createVNode("td", { class: "mono" }, toDisplayString(intervalOf(n.intervalMs)), 1),
995
- createVNode("td", { class: "mono" }, toDisplayString(publishOf(n.publishIntervalMs)), 1),
996
- createVNode("td", null, [createVNode("span", {
997
- class: ["drv-tag", { planned: driverPlanned(n.driver) }],
998
- title: driverPlanned(n.driver) ? _ctx.$t("daq.k1plndrv138") : ""
999
- }, toDisplayString(n.driver), 11, ["title"])]),
1000
- createVNode("td", null, [createVNode("select", {
1001
- class: "line-sel",
1002
- value: n.lineId,
1003
- title: _ctx.$t("daq.k3q23v3010"),
1004
- onChange: ($event) => setNodeLine(n.id, $event)
1005
- }, [createVNode("option", { value: "" }, toDisplayString(_ctx.$t("daq.k3ootr6053")), 1), (openBlock(true), createBlock(Fragment, null, renderList(unref(dcw).lines, (l) => {
1006
- return openBlock(), createBlock("option", {
1007
- key: l.id,
1008
- value: l.id
1009
- }, toDisplayString(l.name), 9, ["value"]);
1010
- }), 128))], 40, [
1011
- "value",
1012
- "title",
1013
- "onChange"
1014
- ])]),
1015
- createVNode("td", null, [n.lineId ? (openBlock(), createBlock("span", {
1016
- key: 0,
1017
- class: ["run-pill", { on: unref(dcw).lineStateOf(n.lineId).active }],
1018
- title: _ctx.$t("daq.k1runtipc131")
1019
- }, [createVNode("span", { class: "rp-dot" }), createTextVNode(" " + toDisplayString(unref(dcw).lineStateOf(n.lineId).active ? _ctx.$t("daq.k3vp67i096") : _ctx.$t("daq.k3ozyqz117")), 1)], 10, ["title"])) : (openBlock(), createBlock("span", {
1020
- key: 1,
1021
- class: "run-pill na"
1022
- }, toDisplayString(_ctx.$t("daq.k3ootr6053")), 1))]),
1023
- createVNode("td", { class: "prod-cell" }, [n.lineId && unref(dcw).lineStateOf(n.lineId).active ? (openBlock(), createBlock(Fragment, { key: 0 }, [createVNode("b", { title: _ctx.$t("daq.k1prdrtip132") }, toDisplayString(unref(dcw).lineStateOf(n.lineId).productName || "--"), 9, ["title"]), createVNode("small", {
1024
- class: "mono",
1025
- title: _ctx.$t("daq.k1prdrtip132")
1026
- }, toDisplayString(unref(dcw).lineStateOf(n.lineId).recipeName || "--"), 9, ["title"])], 64)) : (openBlock(), createBlock("span", {
1027
- key: 1,
1028
- class: "dim"
1029
- }, "--"))]),
1030
- createVNode("td", null, [createVNode("div", { class: "dev-binds" }, [(openBlock(true), createBlock(Fragment, null, renderList(nodeDeviceIds(n), (did) => {
1031
- return openBlock(), createBlock("span", {
1032
- key: did,
1033
- class: "dev-bind-chip",
1034
- title: _ctx.$t("daq.k2bindtip137")
1035
- }, [createTextVNode(toDisplayString(deviceNameById(did)) + " ", 1), createVNode("span", {
1036
- class: "dev-unbind",
1037
- title: "unbind",
1038
- onClick: ($event) => removeNodeDevice(n.id, did)
1039
- }, "✕", 8, ["onClick"])], 8, ["title"]);
1040
- }), 128)), createVNode("select", {
1041
- class: "line-sel dev-add",
1042
- value: "",
1043
- title: _ctx.$t("daq.k2bindtip137"),
1044
- onChange: ($event) => addNodeDevice(n.id, $event)
1045
- }, [createVNode("option", { value: "" }, toDisplayString(_ctx.$t("daq.k3own4q056")), 1), (openBlock(true), createBlock(Fragment, null, renderList(bindableDeviceTwins.value, (d) => {
1046
- return openBlock(), createBlock("option", {
1047
- key: d.id,
1048
- value: d.id,
1049
- disabled: (n.deviceIds ?? []).includes(d.id)
1050
- }, toDisplayString(unref(nodeDevices).get(d.id) ?? d.name), 9, ["value", "disabled"]);
1051
- }), 128))], 40, ["title", "onChange"])])]),
1052
- createVNode("td", { class: "right" }, [createVNode("button", {
1053
- class: ["node-toggle", { off: !n.enabled }],
1054
- title: n.enabled ? _ctx.$t("daq.k1nodestop146") : _ctx.$t("daq.k1nodestart147"),
1055
- onClick: ($event) => toggleNodeEnabled(n)
1056
- }, [createVNode("span", { class: n.enabled ? "i-tabler-player-pause" : "i-tabler-player-play" }, null, 2), createTextVNode(" " + toDisplayString(n.enabled ? _ctx.$t("daq.k1nodestop146") : _ctx.$t("daq.k1nodestart147")), 1)], 10, ["title", "onClick"]), createVNode(_component_NuxtLink, {
1057
- class: "console-link",
1058
- to: `/daq/${n.id}`
1059
- }, {
1060
- default: withCtx(() => [createVNode("span", { class: "i-tabler-dashboard" }), createTextVNode(" " + toDisplayString(_ctx.$t("daq.k3o3jg2074")), 1)]),
1061
- _: 1
1062
- }, 8, ["to"])])
1063
- ], 2);
948
+ n
949
+ }, null, 8, ["n"]);
1064
950
  }), 128)), unref(daq).loaded && unref(daq).nodes.length === 0 ? (openBlock(), createBlock("tr", { key: 0 }, [createVNode("td", { colspan: "11" }, [createVNode("div", {
1065
951
  class: "pane-empty",
1066
952
  style: { "min-height": "120px" }
@@ -1073,7 +959,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
1073
959
  _: 1
1074
960
  }, _parent));
1075
961
  if (unref(daq).error) {
1076
- _push(`<p class="err" data-v-1dcb778c>${ssrInterpolate(unref(daq).error)}(`);
962
+ _push(`<p class="err" data-v-10e5bd50>${ssrInterpolate(unref(daq).error)}(`);
1077
963
  _push(ssrRenderComponent(_component_NuxtLink, { to: "/workshop" }, {
1078
964
  default: withCtx((_, _push, _parent, _scopeId) => {
1079
965
  if (_push) _push(`${ssrInterpolate(_ctx.$t("daq.k1bhhheq077"))}`);
@@ -1095,7 +981,7 @@ index_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
1095
981
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/daq/index.vue");
1096
982
  return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
1097
983
  };
1098
- var daq_default = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-1dcb778c"]]);
984
+ var daq_default = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-10e5bd50"]]);
1099
985
 
1100
986
  export { daq_default as default };
1101
- //# sourceMappingURL=daq-B-3xCp_2.mjs.map
987
+ //# sourceMappingURL=daq-ChYCABz1.mjs.map