agentworkshop 0.7.21 → 0.7.23

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 (105) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/BJbhwS5o.js +1 -0
  3. package/.output/public/_nuxt/Bo8t5fkJ.js +1 -0
  4. package/.output/public/_nuxt/{DBXhDLgl.js → BuiGDfMB.js} +1 -1
  5. package/.output/public/_nuxt/{QT54MQV9.js → C53drffV.js} +1 -1
  6. package/.output/public/_nuxt/{BA3XzwiD.js → CEHmSufQ.js} +2 -2
  7. package/.output/public/_nuxt/Dc32T41C.js +1 -0
  8. package/.output/public/_nuxt/DtzZqC0z.js +1 -0
  9. package/.output/public/_nuxt/{BOJaHO5V.js → Ko9mMsJj.js} +3 -3
  10. package/.output/public/_nuxt/{TownView.BHLKAjEu.css → TownView.zu2rU5nS.css} +1 -1
  11. package/.output/public/_nuxt/_id_.C-YXjn8Q.css +1 -0
  12. package/.output/public/_nuxt/_id_.MbzdFygI.css +1 -0
  13. package/.output/public/_nuxt/_wsId_.BqWBlY7X.css +1 -0
  14. package/.output/public/_nuxt/builds/latest.json +1 -1
  15. package/.output/public/_nuxt/builds/meta/1adc96e0-8bbd-4a79-ac7e-b6952556fef8.json +1 -0
  16. package/.output/public/_nuxt/daq.3OKj58HH.css +1 -0
  17. package/.output/public/_nuxt/dbi5bHkY.js +2 -0
  18. package/.output/public/_nuxt/dcw.rXH2fc2Z.css +1 -0
  19. package/.output/public/_nuxt/entry.OR_psZHp.css +1 -0
  20. package/.output/public/_nuxt/{DsOkkMX3.js → jyQyulh-.js} +1 -1
  21. package/.output/public/_nuxt/logs.DMOM-iHe.css +1 -0
  22. package/.output/public/_nuxt/{B-E8fXAO.js → n3vMFfrv.js} +1 -1
  23. package/.output/server/chunks/_/nitro.mjs +842 -717
  24. package/.output/server/chunks/_/nitro.mjs.map +1 -1
  25. package/.output/server/chunks/build/{TownView-ql2eHZOg.mjs → TownView-DxeQe1Bl.mjs} +144 -143
  26. package/.output/server/chunks/build/{TownView-ql2eHZOg.mjs.map → TownView-DxeQe1Bl.mjs.map} +1 -1
  27. package/.output/server/chunks/build/{_id_-CwR5oLu9.mjs → _id_-DQDqj-cZ.mjs} +33 -35
  28. package/.output/server/chunks/build/_id_-DQDqj-cZ.mjs.map +1 -0
  29. package/.output/server/chunks/build/{_id_-Bs-euJPu.mjs → _id_-DY6v6sqB.mjs} +138 -137
  30. package/.output/server/chunks/build/_id_-DY6v6sqB.mjs.map +1 -0
  31. package/.output/server/chunks/build/{_wsId_-B3aB9bIp.mjs → _wsId_-C2O5zZsI.mjs} +6 -6
  32. package/.output/server/chunks/build/{_wsId_-B3aB9bIp.mjs.map → _wsId_-C2O5zZsI.mjs.map} +1 -1
  33. package/.output/server/chunks/build/{daq-epWL_sC7.mjs → daq-B-3xCp_2.mjs} +146 -118
  34. package/.output/server/chunks/build/daq-B-3xCp_2.mjs.map +1 -0
  35. package/.output/server/chunks/build/{dcw-CBPaFj2f.mjs → dcw-BL2dhuz7.mjs} +43 -43
  36. package/.output/server/chunks/build/{dcw-CBPaFj2f.mjs.map → dcw-BL2dhuz7.mjs.map} +1 -1
  37. package/.output/server/chunks/build/{logs-Bz1p6x_5.mjs → logs-Dto_umFY.mjs} +44 -38
  38. package/.output/server/chunks/build/logs-Dto_umFY.mjs.map +1 -0
  39. package/.output/server/chunks/build/{pages-Dq7_H4FK.mjs → pages-D9tOoJsf.mjs} +2 -2
  40. package/.output/server/chunks/build/{pages-Dq7_H4FK.mjs.map → pages-D9tOoJsf.mjs.map} +1 -1
  41. package/.output/server/chunks/build/{town-CstiKxf_.mjs → town-Dsh0jlwZ.mjs} +3 -3
  42. package/.output/server/chunks/build/{town-CstiKxf_.mjs.map → town-Dsh0jlwZ.mjs.map} +1 -1
  43. package/.output/server/chunks/build/{useDaqStream-BOOZ-p-l.mjs → useDaqStream-DkRL3tEW.mjs} +9 -1
  44. package/.output/server/chunks/build/{useDaqStream-BOOZ-p-l.mjs.map → useDaqStream-DkRL3tEW.mjs.map} +1 -1
  45. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs +1 -1
  46. package/.output/server/chunks/routes/api/workshop/daq/_id/bind.post.mjs.map +1 -1
  47. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs +34 -0
  48. package/.output/server/chunks/routes/api/workshop/daq/_id/bindings.put.mjs.map +1 -0
  49. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs +1 -1
  50. package/.output/server/chunks/routes/api/workshop/dcw/_id/bind.post.mjs.map +1 -1
  51. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs +33 -0
  52. package/.output/server/chunks/routes/api/workshop/dcw/_id/bindings.put.mjs.map +1 -0
  53. package/.output/server/chunks/routes/renderer.mjs +1 -1
  54. package/.output/server/chunks/virtual/entry.mjs +16 -8
  55. package/.output/server/chunks/virtual/precomputed.mjs +1 -1
  56. package/.output/server/package.json +1 -1
  57. package/app/assets/css/main.css +306 -161
  58. package/app/components/workshop/blocks/ClusterArtifact.vue +0 -16
  59. package/app/components/workshop/town/TownView.vue +7082 -7076
  60. package/app/composables/workshop/useDaqStream.ts +10 -0
  61. package/app/pages/daq/[id].vue +919 -937
  62. package/app/pages/daq/index.vue +67 -43
  63. package/app/pages/dcw/[id].vue +6 -5
  64. package/app/pages/dcw/index.vue +1 -30
  65. package/app/pages/logs/index.vue +99 -87
  66. package/i18n/locales/en.ts +3 -0
  67. package/i18n/locales/zh-CN.ts +5 -0
  68. package/package.json +148 -148
  69. package/scripts/_dbg-device-bind-e2e.mjs +129 -0
  70. package/scripts/_dbg-logs-ui-e2e.py +125 -0
  71. package/server/api/workshop/daq/[id]/bind.post.ts +5 -2
  72. package/server/api/workshop/daq/[id]/bindings.put.ts +22 -0
  73. package/server/api/workshop/dcw/[id]/bind.post.ts +4 -2
  74. package/server/api/workshop/dcw/[id]/bindings.put.ts +21 -0
  75. package/server/data/daqs.json +405 -100
  76. package/server/data/dcw-lines.json +7 -0
  77. package/server/data/dcw-rollback.json +21 -10
  78. package/server/data/dcw-runs.json +50 -54
  79. package/server/data/dcw-writes.json +24 -0
  80. package/server/data/dcws.json +505 -216
  81. package/server/data/line-runs.json +18 -18
  82. package/server/services/workshop/agents/industrial-context.ts +231 -222
  83. package/server/services/workshop/daq/daq-controller.ts +76 -23
  84. package/server/services/workshop/daq/daq-node.ts +11 -1
  85. package/server/services/workshop/dcw/dcw-controller.ts +50 -2
  86. package/server/services/workshop/dcw/dcw-node.ts +10 -1
  87. package/shared/daq-protocol.ts +2 -0
  88. package/shared/dcw-protocol.ts +2 -0
  89. package/.output/public/_nuxt/B_C3GLsD.js +0 -1
  90. package/.output/public/_nuxt/Ba7YofCb.js +0 -2
  91. package/.output/public/_nuxt/C_2bTK0C.js +0 -1
  92. package/.output/public/_nuxt/CgT5wMfz.js +0 -1
  93. package/.output/public/_nuxt/D4CLp1hc.js +0 -1
  94. package/.output/public/_nuxt/_id_.DIxEKj88.css +0 -1
  95. package/.output/public/_nuxt/_id_.IbmpkhH4.css +0 -1
  96. package/.output/public/_nuxt/_wsId_.BFyCuUwS.css +0 -1
  97. package/.output/public/_nuxt/builds/meta/5d344836-03a5-4f47-a0a7-fd30192f5a8f.json +0 -1
  98. package/.output/public/_nuxt/daq.6IrhVVfy.css +0 -1
  99. package/.output/public/_nuxt/dcw.rpqpOYQ8.css +0 -1
  100. package/.output/public/_nuxt/entry.DRUzDwmX.css +0 -1
  101. package/.output/public/_nuxt/logs.BarkrvUp.css +0 -1
  102. package/.output/server/chunks/build/_id_-Bs-euJPu.mjs.map +0 -1
  103. package/.output/server/chunks/build/_id_-CwR5oLu9.mjs.map +0 -1
  104. package/.output/server/chunks/build/daq-epWL_sC7.mjs.map +0 -1
  105. package/.output/server/chunks/build/logs-Bz1p6x_5.mjs.map +0 -1
@@ -3,7 +3,7 @@ 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
5
  import { u as useDcwStream } from './useDcwStream-DyB2ufQI.mjs';
6
- import { u as useDaqStream } from './useDaqStream-BOOZ-p-l.mjs';
6
+ import { u as useDaqStream } from './useDaqStream-DkRL3tEW.mjs';
7
7
  import { u as useDeviceTwins } from './useDeviceTwins-ZbT86L9O.mjs';
8
8
  import { u as useOpsLog } from './useOpsLog-8HCYFb6n.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';
@@ -72,15 +72,31 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
72
72
  api$1.error(apiErrorMessage(err));
73
73
  }
74
74
  }
75
- /** 节点绑定设备(bind REST server 落库;与数字孪生/节点检查器同一条 deviceBindingId 链路) */
76
- async function setNodeDevice(id, e) {
75
+ /** 节点绑定设备(多对多:add 挂新设备 / remove 摘除一台;server 落库,与数字孪生同一 deviceIds 链路) */
76
+ async function addNodeDevice(id, e) {
77
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;
78
82
  try {
79
- await daq.bindNode(id, deviceId || null);
83
+ await daq.setNodeBindings(id, [...node.deviceIds ?? [], deviceId]);
80
84
  } catch (err) {
81
85
  api$1.error(apiErrorMessage(err));
82
86
  }
87
+ e.target.value = "";
83
88
  }
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
+ }
97
+ }
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;
84
100
  /** 单节点独立 启动/停止采集(PATCH enabled;server 权威,本地乐观翻转 + WS/轮询收敛) */
85
101
  async function toggleNodeEnabled(n) {
86
102
  const next = !n.enabled;
@@ -260,7 +276,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
260
276
  /** 筛选下拉的设备选项:仅列出至少绑定了一个节点的设备(空设备筛选无意义) */
261
277
  const boundDevices = computed(() => {
262
278
  const used = /* @__PURE__ */ new Map();
263
- for (const n of daq.nodes) if (n.deviceBindingId) used.set(n.deviceBindingId, (used.get(n.deviceBindingId) ?? 0) + 1);
279
+ for (const n of daq.nodes) for (const d of n.deviceIds ?? (n.deviceBindingId ? [n.deviceBindingId] : [])) used.set(d, (used.get(d) ?? 0) + 1);
264
280
  return deviceTwins.twins.filter((t) => used.has(t.id)).map((t) => ({
265
281
  id: t.id,
266
282
  name: nodeDevices.get(t.id) ?? t.name,
@@ -342,7 +358,8 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
342
358
  }
343
359
  const filteredNodes = computed(() => daq.nodes.filter((n) => {
344
360
  if (filters.lineId && (filters.lineId === "none" ? !!n.lineId : (n.lineId ?? "") !== filters.lineId)) return false;
345
- if (filters.deviceId && (filters.deviceId === "none" ? !!n.deviceBindingId : n.deviceBindingId !== filters.deviceId)) return false;
361
+ const nodeDevIds = n.deviceIds ?? (n.deviceBindingId ? [n.deviceBindingId] : []);
362
+ if (filters.deviceId && (filters.deviceId === "none" ? nodeDevIds.length > 0 : !nodeDevIds.includes(filters.deviceId))) return false;
346
363
  if (filters.template && n.templateRef !== filters.template) return false;
347
364
  if (filters.driver && n.driver !== filters.driver) return false;
348
365
  if (!lineRunMatch(n)) return false;
@@ -461,10 +478,10 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
461
478
  return (_ctx, _push, _parent, _attrs) => {
462
479
  const _component_NuxtLink = NuxtLink;
463
480
  const _component_a_spin = spin_default;
464
- _push(`<div${ssrRenderAttrs(mergeProps({ class: "page" }, _attrs))} data-v-6b2d097f><div class="aw-page-head" data-v-6b2d097f><div data-v-6b2d097f><p class="aw-kicker" data-v-6b2d097f> AGENTWORKSHOP / DAQ CONSOLE </p><h1 data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1emg364011"))}</h1><p class="sub" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1wmg2bz012"))}</p></div><div class="badges mono" data-v-6b2d097f><span class="badge"${ssrRenderAttr("title", _ctx.$t("daq.k1tsdbtip133"))} data-v-6b2d097f>TSDB · ${ssrInterpolate(unref(daq).meta.tsdb)}</span><span class="badge"${ssrRenderAttr("title", _ctx.$t("daq.k1queuet134"))} data-v-6b2d097f>QUEUE · ${ssrInterpolate(unref(daq).meta.queue)}</span></div></div>`);
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>`);
465
482
  if (unref(daq).loaded && filteredLine.value && filteredLineState.value) {
466
- _push(`<div class="${ssrRenderClass([{ good: filteredLineState.value.active }, "infra-banner"])}" data-v-6b2d097f><span class="${ssrRenderClass(filteredLineState.value.active ? "i-tabler-circle-check" : "i-tabler-info-circle")}" data-v-6b2d097f></span><span class="txt" data-v-6b2d097f>`);
467
- if (filteredLineState.value.active) _push(`<!--[-->${ssrInterpolate(_ctx.$t("daq.k3ktxbr085"))}${ssrInterpolate(filteredLine.value.name)}」${ssrInterpolate(_ctx.$t("daq.k15lvw0o105"))}<b data-v-6b2d097f>${ssrInterpolate(filteredLineState.value.productName)}</b> · Recipe:<b data-v-6b2d097f>${ssrInterpolate(filteredLineState.value.recipeName)}</b><small class="mono" data-v-6b2d097f>${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><!--]-->`);
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><!--]-->`);
468
485
  else _push(`<!--[-->${ssrInterpolate(_ctx.$t("daq.k3ktxbr085"))}${ssrInterpolate(filteredLine.value.name)}」${ssrInterpolate(_ctx.$t("daq.k12uge2o107"))}<!--]-->`);
469
486
  _push(`</span>`);
470
487
  _push(ssrRenderComponent(_component_NuxtLink, {
@@ -479,7 +496,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
479
496
  }, _parent));
480
497
  _push(`</div>`);
481
498
  } else if (unref(daq).loaded && !anyLineActive.value) {
482
- _push(`<div class="infra-banner" data-v-6b2d097f><span class="i-tabler-info-circle" data-v-6b2d097f></span><span class="txt" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k19onw5w013"))}`);
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"))}`);
483
500
  _push(ssrRenderComponent(_component_NuxtLink, { to: "/dcw" }, {
484
501
  default: withCtx((_, _push, _parent, _scopeId) => {
485
502
  if (_push) _push(`${ssrInterpolate(_ctx.$t("daq.k1b2tk5c014"))}`);
@@ -489,19 +506,19 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
489
506
  }, _parent));
490
507
  _push(`${ssrInterpolate(_ctx.$t("daq.k1u9wnlg015"))}</span></div>`);
491
508
  } else _push(`<!---->`);
492
- if (unref(daq).meta.infra?.degraded) _push(`<div class="infra-banner" data-v-6b2d097f><span class="i-tabler-alert-triangle" data-v-6b2d097f></span><span class="txt" data-v-6b2d097f>${ssrInterpolate(unref(daq).meta.infra.warning)}</span><button class="pill-btn"${ssrIncludeBooleanAttr(reconnecting.value) ? " disabled" : ""} data-v-6b2d097f>${ssrInterpolate(reconnecting.value ? _ctx.$t("daq.k1ld43ur094") : _ctx.$t("daq.kzg9805110"))}</button></div>`);
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>`);
493
510
  else _push(`<!---->`);
494
511
  if (unref(daq).alarms.length) {
495
- _push(`<div class="alarm-bar" data-v-6b2d097f><span class="bar-label" data-v-6b2d097f><span class="i-tabler-bell-ringing bell" data-v-6b2d097f></span> ${ssrInterpolate(_ctx.$t("daq.k1alarm141"))} <b class="mono" data-v-6b2d097f>${ssrInterpolate(unref(daq).alarms.length)}</b></span><div class="alarm-scroll" data-v-6b2d097f><!--[-->`);
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><!--[-->`);
496
513
  ssrRenderList(unref(daq).alarms, (a) => {
497
- _push(`<span class="alarm-item"${ssrRenderAttr("title", _ctx.$t("daq.k1esc143", { p0: a.escalation }))} data-v-6b2d097f><b data-v-6b2d097f>${ssrInterpolate(a.nodeName)}</b><span class="mono dim" data-v-6b2d097f>${ssrInterpolate(a.metric)}</span><span class="mono" data-v-6b2d097f>${ssrInterpolate(a.value)} ${ssrInterpolate(a.rule === "lt-min" ? "<" : ">")} ${ssrInterpolate(a.threshold)}</span>`);
498
- if (a.escalation > 0) _push(`<small class="esc mono" data-v-6b2d097f>+${ssrInterpolate(a.escalation)}</small>`);
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>`);
499
516
  else _push(`<!---->`);
500
- _push(`<button class="mini-btn ack" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1ack142"))}</button></span>`);
517
+ _push(`<button class="mini-btn ack" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1ack142"))}</button></span>`);
501
518
  });
502
519
  _push(`<!--]--></div></div>`);
503
520
  } else _push(`<!---->`);
504
- _push(`<section class="aw-tile ctrl-card" data-v-6b2d097f><div class="ctrl-row" data-v-6b2d097f><div class="ctrl-left" data-v-6b2d097f><button class="${ssrRenderClass([{ running: unref(daq).controller.running }, "aw-pill"])}"${ssrRenderAttr("title", _ctx.$t("daq.k1snap145"))} data-v-6b2d097f><span class="${ssrRenderClass(unref(daq).controller.running ? "i-tabler-player-pause" : "i-tabler-player-play")}" data-v-6b2d097f></span> ${ssrInterpolate(unref(daq).controller.running ? _ctx.$t("daq.kpui00095") : _ctx.$t("daq.knxpdpt111"))}</button><label class="cycle mono" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1ifahxj016"))} <input${ssrRenderAttr("value", unref(daq).controller.defaultIntervalMs)} type="number" min="200" max="60000" step="100" data-v-6b2d097f>ms </label><label class="cycle mono"${ssrRenderAttr("title", _ctx.$t("daq.k1e8lcoo001"))} data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1if98n0017"))} <input${ssrRenderAttr("value", unref(daq).controller.defaultPublishIntervalMs)} type="number" min="0" max="60000" step="100" data-v-6b2d097f>ms </label></div><div class="ctrl-right" data-v-6b2d097f><span class="ctrl-metrics mono" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k45uio067"))} ${ssrInterpolate(unref(daq).controller.nodesOnline)}/${ssrInterpolate(unref(daq).controller.nodesTotal)}</span><span class="sep" data-v-6b2d097f>·</span><span${ssrRenderAttr("title", _ctx.$t("daq.k1yztsu4002"))} data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k3xagp087"))} ${ssrInterpolate(unref(daq).meta.produced)}</span><span class="sep" data-v-6b2d097f>·</span><span${ssrRenderAttr("title", _ctx.$t("daq.ko09iha003"))} data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k427eu088"))} ${ssrInterpolate(unref(daq).meta.consumed)}</span><span class="sep" data-v-6b2d097f>·</span><span class="${ssrRenderClass({ warn: (unref(daq).meta.dropped ?? 0) > 0 })}"${ssrRenderAttr("title", _ctx.$t("daq.k1droptip135"))} data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k3w8go089"))} ${ssrInterpolate(unref(daq).meta.dropped)}</span><span class="sep" data-v-6b2d097f>·</span><span${ssrRenderAttr("title", _ctx.$t("daq.kj1jbmw004"))} data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k3wusd090"))} ${ssrInterpolate(unref(daq).meta.samplesStored)}</span></span><button class="aw-pill outline add-btn" data-v-6b2d097f><span class="i-tabler-adjustments-horizontal" data-v-6b2d097f></span> ${ssrInterpolate(_ctx.$t("daq.k1f5cv0s018"))}</button><button class="aw-pill add-btn" data-v-6b2d097f><span class="i-tabler-plus" data-v-6b2d097f></span> ${ssrInterpolate(_ctx.$t("daq.k1fn0ukb019"))}</button></div></div><div class="line-strip" data-v-6b2d097f><span class="strip-label" data-v-6b2d097f><span class="i-tabler-route" data-v-6b2d097f></span> ${ssrInterpolate(_ctx.$t("daq.k1b2o3b6020"))}<small class="mono" data-v-6b2d097f>${ssrInterpolate(unref(dcw).lines.length)}</small></span><div class="strip-scroll" data-v-6b2d097f><!--[-->`);
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><!--[-->`);
505
522
  ssrRenderList(unref(dcw).lines, (l) => {
506
523
  _push(ssrRenderComponent(_component_NuxtLink, {
507
524
  key: l.id,
@@ -516,9 +533,9 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
516
533
  }, {
517
534
  default: withCtx((_, _push, _parent, _scopeId) => {
518
535
  if (_push) {
519
- _push(`<span class="lp-dot" data-v-6b2d097f${_scopeId}></span><b data-v-6b2d097f${_scopeId}>${ssrInterpolate(l.name)}</b>`);
520
- if (unref(dcw).lineStateOf(l.id).active) _push(`<small class="lp-run" data-v-6b2d097f${_scopeId}>${ssrInterpolate(unref(dcw).lineStateOf(l.id).recipeName ?? _ctx.$t("daq.k3vp67i096"))}</small>`);
521
- else _push(`<small class="lp-idle" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3zgkk021"))}</small>`);
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>`);
522
539
  } else return [
523
540
  createVNode("span", { class: "lp-dot" }),
524
541
  createVNode("b", null, toDisplayString(l.name), 1),
@@ -540,7 +557,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
540
557
  to: "/dcw"
541
558
  }, {
542
559
  default: withCtx((_, _push, _parent, _scopeId) => {
543
- if (_push) _push(`<span class="lp-dot" data-v-6b2d097f${_scopeId}></span><b data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1el12b1022"))}</b><small class="lp-idle" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k8jxxe8023"))}</small>`);
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>`);
544
561
  else return [
545
562
  createVNode("span", { class: "lp-dot" }),
546
563
  createVNode("b", null, toDisplayString(_ctx.$t("daq.k1el12b1022")), 1),
@@ -552,101 +569,101 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
552
569
  else _push(`<!---->`);
553
570
  _push(`</div></div></section>`);
554
571
  if (addOpen.value) {
555
- _push(`<div class="modal-mask" data-v-6b2d097f><div class="modal" data-v-6b2d097f><h3 class="m-title" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k19rioqa024"))}</h3><div class="seg-row" data-v-6b2d097f><button class="${ssrRenderClass([{ on: addScenario.value === "mock" }, "seg"])}" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1p5c1un025"))}</button><button class="${ssrRenderClass([{ on: addScenario.value === "real" }, "seg"])}" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1cbcp3o026"))}</button></div><div class="f-grid" data-v-6b2d097f><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1fsgerc027"))}</span><select class="inp" data-v-6b2d097f><!--[-->`);
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><!--[-->`);
556
573
  ssrRenderList(unref(daq).templates, (t) => {
557
- _push(`<option${ssrRenderAttr("value", t.key)} data-v-6b2d097f${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>`);
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>`);
558
575
  });
559
- _push(`<!--]--></select></label><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1ce2k1y028"))}</span><input${ssrRenderAttr("value", addName.value)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.kgpxzy3005"))} data-v-6b2d097f></label>`);
560
- if (addScenario.value === "real") _push(`<label class="f" data-v-6b2d097f><span data-v-6b2d097f>${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-6b2d097f></label>`);
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>`);
561
578
  else _push(`<!---->`);
562
579
  _push(`</div>`);
563
580
  if (addScenario.value === "real") {
564
- _push(`<!--[--><div class="f-grid" data-v-6b2d097f><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1kt87rx030"))}</span><select class="inp" data-v-6b2d097f><!--[-->`);
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><!--[-->`);
565
582
  ssrRenderList(unref(DAQ_DRIVERS).filter((x) => x.status !== "planned"), (d) => {
566
- _push(`<option${ssrRenderAttr("value", d.kind)} data-v-6b2d097f${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>`);
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>`);
567
584
  });
568
585
  _push(`<!--]--></select></label></div>`);
569
586
  if (addFields.value.length) {
570
- _push(`<div class="f-grid driver-form" data-v-6b2d097f><!--[-->`);
587
+ _push(`<div class="f-grid driver-form" data-v-1dcb778c><!--[-->`);
571
588
  ssrRenderList(addFields.value, (f) => {
572
- _push(`<label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(f.label)}`);
573
- if (f.required) _push(`<em data-v-6b2d097f>*</em>`);
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>`);
574
591
  else _push(`<!---->`);
575
592
  _push(`</span>`);
576
593
  if (f.type === "select") {
577
- _push(`<select class="inp" data-v-6b2d097f><!--[-->`);
594
+ _push(`<select class="inp" data-v-1dcb778c><!--[-->`);
578
595
  ssrRenderList(f.options, (o) => {
579
- _push(`<option${ssrRenderAttr("value", o.value)} data-v-6b2d097f${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>`);
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>`);
580
597
  });
581
598
  _push(`<!--]--></select>`);
582
- } 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-6b2d097f>`);
583
- if (f.hint) _push(`<small class="hint" data-v-6b2d097f>${ssrInterpolate(f.hint)}</small>`);
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>`);
584
601
  else _push(`<!---->`);
585
602
  _push(`</label>`);
586
603
  });
587
604
  _push(`<!--]--></div>`);
588
605
  } else _push(`<!---->`);
589
- _push(`<div class="test-row" data-v-6b2d097f><button class="pill-btn"${ssrIncludeBooleanAttr(addTesting.value) ? " disabled" : ""} data-v-6b2d097f>${ssrInterpolate(addTesting.value ? _ctx.$t("daq.k1fsh720099") : _ctx.$t("daq.k1fstglk112"))}</button>`);
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>`);
590
607
  if (addTest.value) {
591
- _push(`<span class="${ssrRenderClass([addTest.value.ok ? "ok" : "bad", "test-result"])}" data-v-6b2d097f>${ssrInterpolate(addTest.value.ok ? "✓" : "✗")} ${ssrInterpolate(addTest.value.message)}`);
608
+ _push(`<span class="${ssrRenderClass([addTest.value.ok ? "ok" : "bad", "test-result"])}" data-v-1dcb778c>${ssrInterpolate(addTest.value.ok ? "✓" : "✗")} ${ssrInterpolate(addTest.value.message)}`);
592
609
  if (addTest.value.latencyMs != null) _push(`<!--[-->(${ssrInterpolate(addTest.value.latencyMs)}ms)<!--]-->`);
593
610
  else _push(`<!---->`);
594
611
  _push(`</span>`);
595
612
  } else _push(`<!---->`);
596
613
  _push(`</div><!--]-->`);
597
614
  } else _push(`<!---->`);
598
- if (addError.value) _push(`<p class="m-err" data-v-6b2d097f>${ssrInterpolate(addError.value)}</p>`);
615
+ if (addError.value) _push(`<p class="m-err" data-v-1dcb778c>${ssrInterpolate(addError.value)}</p>`);
599
616
  else _push(`<!---->`);
600
- _push(`<div class="m-actions" data-v-6b2d097f><button class="aw-pill outline" data-v-6b2d097f>${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-6b2d097f>${ssrInterpolate(addSaving.value ? _ctx.$t("daq.k1bg4759100") : addScenario.value === "real" ? _ctx.$t("daq.k7pxjxo113") : _ctx.$t("daq.k1bge46t118"))}</button></div></div></div>`);
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>`);
601
618
  } else _push(`<!---->`);
602
619
  if (tplOpen.value) {
603
- _push(`<div class="modal-mask" data-v-6b2d097f><div class="modal" data-v-6b2d097f><h3 class="m-title" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k11mv96s032"))}</h3><p class="sec-label" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.ktji4ky033"))}</p><table class="tpl-table" data-v-6b2d097f><tbody data-v-6b2d097f><!--[-->`);
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><!--[-->`);
604
621
  ssrRenderList(customTpls.value, (t) => {
605
- _push(`<tr data-v-6b2d097f><td data-v-6b2d097f><b data-v-6b2d097f>${ssrInterpolate(t.name)}</b><small class="mono dim" data-v-6b2d097f>${ssrInterpolate(t.code)}</small></td><td class="mono range" data-v-6b2d097f>${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)} ${ssrInterpolate(t.unit)} · ${ssrInterpolate(t.decimals)} ${ssrInterpolate(_ctx.$t("daq.k48oi091"))}</td><td class="right actions" data-v-6b2d097f><button class="mini-btn" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k45eb0034"))}</button><button class="mini-btn danger" data-v-6b2d097f>${ssrInterpolate(confirmingDel.value === t.key ? _ctx.$t("daq.k1hhheu3101") : _ctx.$t("daq.k3xakp114"))}</button></td></tr>`);
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>`);
606
623
  });
607
624
  _push(`<!--]-->`);
608
- if (!customTpls.value.length) _push(`<tr data-v-6b2d097f><td colspan="3" class="empty" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.kztvzbo035"))}</td></tr>`);
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>`);
609
626
  else _push(`<!---->`);
610
- _push(`</tbody></table><p class="sec-label" data-v-6b2d097f>${ssrInterpolate(tplEditing.value ? _ctx.$t("daq.k1iiph0s102") : _ctx.$t("daq.k1efixrj115"))}</p><div class="f-grid" data-v-6b2d097f><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k3xhia036"))}<em data-v-6b2d097f>*</em></span><input${ssrRenderAttr("value", unref(tplForm).name)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.k5opd2t006"))} data-v-6b2d097f></label><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k3x4ef037"))}<em data-v-6b2d097f>*</em></span><input${ssrRenderAttr("value", unref(tplForm).unit)} class="inp" placeholder="如 %RH" data-v-6b2d097f></label><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1l477m0038"))}</span><input${ssrRenderAttr("value", unref(tplForm).ch)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.kk8o4tl007"))} data-v-6b2d097f></label><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1ayxrqb039"))}</span><input${ssrRenderAttr("value", unref(tplForm).code)} class="inp"${ssrRenderAttr("placeholder", _ctx.$t("daq.kzn3l7l008"))} data-v-6b2d097f></label><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1l9jv5m040"))}<em data-v-6b2d097f>*</em></span><input${ssrRenderAttr("value", unref(tplForm).min)} type="number" class="inp" data-v-6b2d097f></label><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1l9jv4p041"))}<em data-v-6b2d097f>*</em></span><input${ssrRenderAttr("value", unref(tplForm).max)} type="number" class="inp" data-v-6b2d097f></label><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k3mxmcx042"))}</span><input${ssrRenderAttr("value", unref(tplForm).decimals)} type="number" min="0" max="4" class="inp" data-v-6b2d097f></label><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k3xx56043"))}</span><select class="inp" data-v-6b2d097f><!--[-->`);
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><!--[-->`);
611
628
  ssrRenderList(unref(DAQ_TEMPLATE_ICONS), (ic) => {
612
- _push(`<option${ssrRenderAttr("value", ic)} data-v-6b2d097f${ssrIncludeBooleanAttr(Array.isArray(unref(tplForm).icon) ? ssrLooseContain(unref(tplForm).icon, ic) : ssrLooseEqual(unref(tplForm).icon, ic)) ? " selected" : ""}>${ssrInterpolate(ICON_LABEL[ic])}</option>`);
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>`);
613
630
  });
614
- _push(`<!--]--></select></label><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1f4eknv044"))}</span><input${ssrRenderAttr("value", unref(tplForm).base)} type="number" class="inp" data-v-6b2d097f><small class="hint" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.kytd15s045"))}</small></label><label class="f" data-v-6b2d097f><span data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1f4ifpo046"))}</span><input${ssrRenderAttr("value", unref(tplForm).amp)} type="number" class="inp" data-v-6b2d097f><small class="hint" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.ksp2aji047"))}</small></label></div>`);
615
- if (tplError.value) _push(`<p class="m-err" data-v-6b2d097f>${ssrInterpolate(tplError.value)}</p>`);
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>`);
616
633
  else _push(`<!---->`);
617
- _push(`<div class="m-actions" data-v-6b2d097f><button class="aw-pill outline" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k48p40048"))}</button><button class="pill-btn"${ssrIncludeBooleanAttr(tplSaving.value) ? " disabled" : ""} data-v-6b2d097f>${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-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1w8s84s049"))}</p><table class="tpl-table" data-v-6b2d097f><tbody data-v-6b2d097f><!--[-->`);
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><!--[-->`);
618
635
  ssrRenderList(builtinTpls.value, (t) => {
619
- _push(`<tr data-v-6b2d097f><td data-v-6b2d097f><b data-v-6b2d097f>${ssrInterpolate(t.name)}</b><small class="mono dim" data-v-6b2d097f>${ssrInterpolate(t.code)}</small></td><td class="mono range" data-v-6b2d097f>${ssrInterpolate(t.min)}~${ssrInterpolate(t.max)} ${ssrInterpolate(t.unit)} · ${ssrInterpolate(t.decimals)} ${ssrInterpolate(_ctx.$t("daq.k48oi091"))}</td><td class="right actions" data-v-6b2d097f><button class="mini-btn" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k3y694050"))}</button></td></tr>`);
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>`);
620
637
  });
621
638
  _push(`<!--]--></tbody></table></div></div>`);
622
639
  } else _push(`<!---->`);
623
- _push(`<section class="aw-tile opt-card" data-v-6b2d097f><button class="opt-head" data-v-6b2d097f><span class="i-tabler-flask" data-v-6b2d097f></span><b data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1optt001"))}</b><span class="opt-count mono" data-v-6b2d097f>${ssrInterpolate(unref(dcw).optimizations.length)}</span><span class="${ssrRenderClass([{ open: optOpen.value }, "opt-chevron"])}" data-v-6b2d097f></span></button><div class="${ssrRenderClass([{ open: optOpen.value }, "opt-body"])}" data-v-6b2d097f>`);
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>`);
624
641
  if (optMounted.value) {
625
- _push(`<!--[--><div class="opt-filters" data-v-6b2d097f><select class="inp-sel" data-v-6b2d097f><option value="" data-v-6b2d097f${ssrIncludeBooleanAttr(Array.isArray(optFilterLine.value) ? ssrLooseContain(optFilterLine.value, "") : ssrLooseEqual(optFilterLine.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("daq.k1optf001"))}</option><!--[-->`);
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><!--[-->`);
626
643
  ssrRenderList(unref(dcw).lines, (l) => {
627
- _push(`<option${ssrRenderAttr("value", l.id)} data-v-6b2d097f${ssrIncludeBooleanAttr(Array.isArray(optFilterLine.value) ? ssrLooseContain(optFilterLine.value, l.id) : ssrLooseEqual(optFilterLine.value, l.id)) ? " selected" : ""}>${ssrInterpolate(l.name)}</option>`);
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>`);
628
645
  });
629
- _push(`<!--]--></select><select class="inp-sel" data-v-6b2d097f><option value="" data-v-6b2d097f${ssrIncludeBooleanAttr(Array.isArray(optFilterRecipe.value) ? ssrLooseContain(optFilterRecipe.value, "") : ssrLooseEqual(optFilterRecipe.value, "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("daq.k1optf004"))}</option><!--[-->`);
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><!--[-->`);
630
647
  ssrRenderList(optRecipeOptions.value, (r) => {
631
- _push(`<option${ssrRenderAttr("value", r.id)} data-v-6b2d097f${ssrIncludeBooleanAttr(Array.isArray(optFilterRecipe.value) ? ssrLooseContain(optFilterRecipe.value, r.id) : ssrLooseEqual(optFilterRecipe.value, r.id)) ? " selected" : ""}>${ssrInterpolate(r.name)}</option>`);
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>`);
632
649
  });
633
- _push(`<!--]--></select><button class="mini-act" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1optf002"))}</button></div>`);
634
- if (unref(dcw).optimizations.length === 0) _push(`<p class="opt-empty" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1opte001"))}</p>`);
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>`);
635
652
  else _push(`<!---->`);
636
- _push(`<ul class="opt-list" data-v-6b2d097f><!--[-->`);
653
+ _push(`<ul class="opt-list" data-v-1dcb778c><!--[-->`);
637
654
  ssrRenderList(unref(dcw).optimizations.slice(0, 30), (r) => {
638
- _push(`<li class="${ssrRenderClass([r.status, "opt-row"])}" data-v-6b2d097f><div class="opt-line1" data-v-6b2d097f><span class="${ssrRenderClass([r.status, "opt-status"])}" data-v-6b2d097f>${ssrInterpolate(_ctx.$t(optStatusKey(r.status)))}</span><b class="opt-node" data-v-6b2d097f>${ssrInterpolate(r.nodeName)}</b><span class="mono opt-params" data-v-6b2d097f>${ssrInterpolate(r.params[0]?.from ?? "?")} → ${ssrInterpolate(r.params[0]?.to)}</span><span class="mono opt-time" data-v-6b2d097f>${ssrInterpolate(r.setAt.slice(5, 16).replace("T", " "))}</span>`);
639
- if (!optSeriesOf.value[r.id]) _push(`<button class="mini-act"${ssrIncludeBooleanAttr(optSeriesLoading.value === r.id) ? " disabled" : ""} data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1opta001"))}</button>`);
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>`);
640
657
  else _push(`<!---->`);
641
- if (r.status === "open") _push(`<button class="mini-act danger" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1opta002"))}</button>`);
658
+ if (r.status === "open") _push(`<button class="mini-act danger" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1opta002"))}</button>`);
642
659
  else _push(`<!---->`);
643
- _push(`</div><div class="opt-line2 mono" data-v-6b2d097f>`);
644
- if (r.judge) _push(`<span class="${ssrRenderClass([r.judge.verdict, "opt-judge"])}" data-v-6b2d097f>${ssrInterpolate(r.judge.verdict)}(${ssrInterpolate(r.judge.by)}): ${ssrInterpolate(r.judge.reason.slice(0, 70))}</span>`);
645
- else if (r.status === "open") _push(`<span class="opt-open-hint" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1opto001"))}</span>`);
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>`);
646
663
  else _push(`<!---->`);
647
- if (r.aggPending) _push(`<span class="opt-agg" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1optw001"))}</span>`);
664
+ if (r.aggPending) _push(`<span class="opt-agg" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1optw001"))}</span>`);
648
665
  else if (r.windowAgg && r.windowAgg.channels.length) {
649
- _push(`<span class="opt-agg" data-v-6b2d097f><!--[-->`);
666
+ _push(`<span class="opt-agg" data-v-1dcb778c><!--[-->`);
650
667
  ssrRenderList(r.windowAgg.channels, (c) => {
651
668
  _push(`<!--[-->${ssrInterpolate(c.ch)} ${ssrInterpolate(fmtPoint(c.min))}~${ssrInterpolate(fmtPoint(c.max))}(${ssrInterpolate(_ctx.$t("daq.k1optw002"))}${ssrInterpolate(c.breaches < 0 ? "-" : c.breaches)}) <!--]-->`);
652
669
  });
@@ -654,12 +671,12 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
654
671
  } else _push(`<!---->`);
655
672
  _push(`</div>`);
656
673
  if (optSeriesOf.value[r.id]) {
657
- _push(`<div class="opt-series" data-v-6b2d097f><!--[-->`);
674
+ _push(`<div class="opt-series" data-v-1dcb778c><!--[-->`);
658
675
  ssrRenderList(optSeriesOf.value[r.id].channels, (ch) => {
659
- _push(`<div class="opt-ch" data-v-6b2d097f><svg class="opt-spark" viewBox="0 0 240 36" preserveAspectRatio="none" data-v-6b2d097f><polyline${ssrRenderAttr("points", seriesPath(ch.points))} data-v-6b2d097f></polyline></svg><span class="mono" data-v-6b2d097f>${ssrInterpolate(ch.ch)} ${ssrInterpolate(fmtPoint(ch.points.at(-1)?.value ?? ch.points.at(-1)?.avg))}${ssrInterpolate(ch.unit)}</span></div>`);
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>`);
660
677
  });
661
678
  _push(`<!--]-->`);
662
- if (optSeriesOf.value[r.id].channels.length === 0) _push(`<p class="opt-empty" data-v-6b2d097f>${ssrInterpolate(_ctx.$t("daq.k1opte002"))}</p>`);
679
+ if (optSeriesOf.value[r.id].channels.length === 0) _push(`<p class="opt-empty" data-v-1dcb778c>${ssrInterpolate(_ctx.$t("daq.k1opte002"))}</p>`);
663
680
  else _push(`<!---->`);
664
681
  _push(`</div>`);
665
682
  } else _push(`<!---->`);
@@ -671,88 +688,92 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
671
688
  _push(ssrRenderComponent(_component_a_spin, { spinning: !unref(daq).loaded && !unref(daq).error }, {
672
689
  default: withCtx((_, _push, _parent, _scopeId) => {
673
690
  if (_push) {
674
- _push(`<section class="aw-tile table-card" data-v-6b2d097f${_scopeId}><div class="tbl-toolbar" data-v-6b2d097f${_scopeId}><div class="filters" data-v-6b2d097f${_scopeId}><label class="flt" data-v-6b2d097f${_scopeId}><span data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3wj9n051"))}</span><select class="inp-sel" data-v-6b2d097f${_scopeId}><option value="" data-v-6b2d097f${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineId) ? ssrLooseContain(unref(filters).lineId, "") : ssrLooseEqual(unref(filters).lineId, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1bkl9uj052"))}</option><!--[-->`);
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><!--[-->`);
675
692
  ssrRenderList(unref(dcw).lines, (l) => {
676
- _push(`<option${ssrRenderAttr("value", l.id)} data-v-6b2d097f${ssrIncludeBooleanAttr(Array.isArray(unref(filters).lineId) ? ssrLooseContain(unref(filters).lineId, l.id) : ssrLooseEqual(unref(filters).lineId, l.id)) ? " selected" : ""}${_scopeId}>${ssrInterpolate(l.name)}</option>`);
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>`);
677
694
  });
678
- _push(`<!--]--><option value="none" data-v-6b2d097f${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-6b2d097f${_scopeId}><span data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1i8rtqt054"))}</span><select class="inp-sel" data-v-6b2d097f${_scopeId}><option value="" data-v-6b2d097f${ssrIncludeBooleanAttr(Array.isArray(unref(filters).deviceId) ? ssrLooseContain(unref(filters).deviceId, "") : ssrLooseEqual(unref(filters).deviceId, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1bkw4m2055"))}</option><!--[-->`);
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><!--[-->`);
679
696
  ssrRenderList(boundDevices.value, (d) => {
680
- _push(`<option${ssrRenderAttr("value", d.id)} data-v-6b2d097f${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>`);
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>`);
681
698
  });
682
- _push(`<!--]--><option value="none" data-v-6b2d097f${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-6b2d097f${_scopeId}><span data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1b2tkyv057"))}</span><select class="inp-sel" data-v-6b2d097f${_scopeId}><option value="" data-v-6b2d097f${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-6b2d097f${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-6b2d097f${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-6b2d097f${_scopeId}><span data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1iwdfef061"))}</span><select class="inp-sel" data-v-6b2d097f${_scopeId}><option value="" data-v-6b2d097f${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-6b2d097f${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-6b2d097f${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-6b2d097f${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-6b2d097f${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-6b2d097f${_scopeId}><span data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttpl010"))}</span><select class="inp-sel" data-v-6b2d097f${_scopeId}><option value="" data-v-6b2d097f${ssrIncludeBooleanAttr(Array.isArray(unref(filters).template) ? ssrLooseContain(unref(filters).template, "") : ssrLooseEqual(unref(filters).template, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttpl011"))}</option><!--[-->`);
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><!--[-->`);
683
700
  ssrRenderList(templateOptions.value, (t) => {
684
- _push(`<option${ssrRenderAttr("value", t.ref)} data-v-6b2d097f${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>`);
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>`);
685
702
  });
686
- _push(`<!--]--></select></label><label class="flt" data-v-6b2d097f${_scopeId}><span data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fltdrv012"))}</span><select class="inp-sel" data-v-6b2d097f${_scopeId}><option value="" data-v-6b2d097f${ssrIncludeBooleanAttr(Array.isArray(unref(filters).driver) ? ssrLooseContain(unref(filters).driver, "") : ssrLooseEqual(unref(filters).driver, "")) ? " selected" : ""}${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fltdrv013"))}</option><!--[-->`);
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><!--[-->`);
687
704
  ssrRenderList(driverOptions.value, (d) => {
688
- _push(`<option${ssrRenderAttr("value", d.kind)} data-v-6b2d097f${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>`);
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>`);
689
706
  });
690
- _push(`<!--]--></select></label><label class="flt"${ssrRenderAttr("title", _ctx.$t("daq.k1flttim014"))} data-v-6b2d097f${_scopeId}><span data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1flttim015"))}</span><select class="inp-sel" data-v-6b2d097f${_scopeId}><option value="" data-v-6b2d097f${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-6b2d097f${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-6b2d097f${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-6b2d097f${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-6b2d097f${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-6b2d097f${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-6b2d097f${_scopeId}><span data-v-6b2d097f${_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-6b2d097f${_scopeId}></label>`);
691
- if (hasFilters.value) _push(`<button class="mini-btn clear-btn" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1fygck2066"))}</button>`);
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>`);
692
709
  else _push(`<!---->`);
693
- _push(`</div><span class="count mono" data-v-6b2d097f${_scopeId}>${ssrInterpolate(filteredNodes.value.length)} / ${ssrInterpolate(unref(daq).nodes.length)} ${ssrInterpolate(_ctx.$t("daq.k45uio067"))}</span></div><div class="ops-panels" data-v-6b2d097f${_scopeId}><div class="${ssrRenderClass([{ live: unref(daq).alarms.length > 0 }, "ops-panel alarm-panel"])}" data-v-6b2d097f${_scopeId}><div class="panel-head" data-v-6b2d097f${_scopeId}><span class="i-tabler-bell-ringing bell" data-v-6b2d097f${_scopeId}></span><b data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1alarm141"))}</b><span class="${ssrRenderClass([{ hot: unref(daq).alarms.length > 0 }, "mono cnt"])}" data-v-6b2d097f${_scopeId}>${ssrInterpolate(unref(daq).alarms.length)}</span></div><div class="panel-body" data-v-6b2d097f${_scopeId}>`);
694
- if (unref(daq).alarms.length === 0) _push(`<p class="panel-empty" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1evt001"))}</p>`);
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>`);
695
712
  else {
696
713
  _push(`<!--[-->`);
697
714
  ssrRenderList(unref(daq).alarms, (a) => {
698
- _push(`<div class="alarm-row" data-v-6b2d097f${_scopeId}><span class="i-tabler-alert-triangle tri" data-v-6b2d097f${_scopeId}></span><b data-v-6b2d097f${_scopeId}>${ssrInterpolate(a.nodeName)}</b><span class="mono dim" data-v-6b2d097f${_scopeId}>${ssrInterpolate(a.metric)}</span><span class="mono" data-v-6b2d097f${_scopeId}>${ssrInterpolate(a.value)} ${ssrInterpolate(a.rule === "lt-min" ? "<" : ">")} ${ssrInterpolate(a.threshold)}</span>`);
699
- if (a.escalation > 0) _push(`<small class="esc mono" data-v-6b2d097f${_scopeId}>+${ssrInterpolate(a.escalation)}</small>`);
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>`);
700
717
  else _push(`<!---->`);
701
- _push(`<button class="mini-btn ack" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1ack142"))}</button></div>`);
718
+ _push(`<button class="mini-btn ack" data-v-1dcb778c${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1ack142"))}</button></div>`);
702
719
  });
703
720
  _push(`<!--]-->`);
704
721
  }
705
- _push(`</div></div><div class="ops-panel event-panel" data-v-6b2d097f${_scopeId}><div class="panel-head" data-v-6b2d097f${_scopeId}><span class="i-tabler-activity" data-v-6b2d097f${_scopeId}></span><b data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1evt002"))}</b>`);
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>`);
706
723
  _push(ssrRenderComponent(_component_NuxtLink, {
707
724
  class: "panel-link",
708
725
  to: "/logs"
709
726
  }, {
710
727
  default: withCtx((_, _push, _parent, _scopeId) => {
711
- if (_push) _push(`${ssrInterpolate(_ctx.$t("daq.k1evt003"))}<span class="i-tabler-arrow-right" data-v-6b2d097f${_scopeId}></span>`);
728
+ if (_push) _push(`${ssrInterpolate(_ctx.$t("daq.k1evt003"))}<span class="i-tabler-arrow-right" data-v-1dcb778c${_scopeId}></span>`);
712
729
  else return [createTextVNode(toDisplayString(_ctx.$t("daq.k1evt003")), 1), createVNode("span", { class: "i-tabler-arrow-right" })];
713
730
  }),
714
731
  _: 1
715
732
  }, _parent, _scopeId));
716
- _push(`</div><div class="panel-body" data-v-6b2d097f${_scopeId}>`);
717
- if (unref(opsLog).recent.length === 0) _push(`<p class="panel-empty" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1evt004"))}</p>`);
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>`);
718
735
  else {
719
736
  _push(`<!--[-->`);
720
737
  ssrRenderList(unref(opsLog).recent, (r, i) => {
721
- _push(`<div class="evt-row" data-v-6b2d097f${_scopeId}><span class="mono dim t" data-v-6b2d097f${_scopeId}>${ssrInterpolate(opsTime(r.at))}</span><span class="${ssrRenderClass([r.actorKind, "src-badge"])}" data-v-6b2d097f${_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-6b2d097f${_scopeId}>${ssrInterpolate(opsKindLabel(r.kind))}</span><span class="txt"${ssrRenderAttr("title", r.summary)} data-v-6b2d097f${_scopeId}>${ssrInterpolate(r.summary)}</span></div>`);
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>`);
722
739
  });
723
740
  _push(`<!--]-->`);
724
741
  }
725
- _push(`</div></div></div><table class="nodes-table" data-v-6b2d097f${_scopeId}><thead data-v-6b2d097f${_scopeId}><tr data-v-6b2d097f${_scopeId}><th data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k45uio067"))}</th><th data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k42w8s068"))}</th><th data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3mv305069"))}</th><th data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1trnd001"))}</th><th data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1l6g2ga070"))}</th><th data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3zi0nf071"))}</th><th data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k4a0la072"))}</th><th data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3wj9n051"))}</th><th${ssrRenderAttr("title", _ctx.$t("daq.k1runtipc131"))} data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1b2tkyv057"))}</th><th${ssrRenderAttr("title", _ctx.$t("daq.k1prdrtip132"))} data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1prodrc128"))}</th><th data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1i8rtqt054"))}</th><th class="right" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k40aa6073"))}</th></tr></thead><tbody data-v-6b2d097f${_scopeId}><!--[-->`);
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}><!--[-->`);
726
743
  ssrRenderList(filteredRows.value, ({ n, c }) => {
727
- _push(`<tr class="${ssrRenderClass({ "row-recipe-alarm": c.alarm })}" data-v-6b2d097f${_scopeId}><td data-v-6b2d097f${_scopeId}><span class="mono dim" data-v-6b2d097f${_scopeId}>${ssrInterpolate(n.id.slice(0, 8))}</span><b data-v-6b2d097f${_scopeId}>${ssrInterpolate(n.name)}</b><small class="mono ch" data-v-6b2d097f${_scopeId}>${ssrInterpolate(c.tpl)}</small></td><td data-v-6b2d097f${_scopeId}><span class="${ssrRenderClass([[c.pill.key], "st-pill"])}"${ssrRenderAttr("title", c.pill.tip)} data-v-6b2d097f${_scopeId}>${ssrInterpolate(c.pill.label)}</span></td><td class="${ssrRenderClass([{
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([{
728
745
  "stale": !c.live,
729
746
  "val-alarm": n.state === "alarm" || c.alarm
730
- }, "mono val"])}"${ssrRenderAttr("title", c.live ? void 0 : c.pill.tip)} data-v-6b2d097f${_scopeId}>${ssrInterpolate(n.value != null ? n.value.toFixed(n.decimals) : "--")} <small data-v-6b2d097f${_scopeId}>${ssrInterpolate(n.unit)}</small></td><td class="trend-cell" data-v-6b2d097f${_scopeId}><svg class="trend" viewBox="0 0 120 26" preserveAspectRatio="none"${ssrRenderAttr("title", _ctx.$t("daq.k1trnd002"))} data-v-6b2d097f${_scopeId}>`);
731
- 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-6b2d097f${_scopeId}></line>`);
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>`);
732
749
  else _push(`<!---->`);
733
- 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-6b2d097f${_scopeId}></line>`);
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>`);
734
751
  else _push(`<!---->`);
735
- _push(`<polyline class="${ssrRenderClass([{ alarm: n.state === "alarm" || c.alarm }, "trace"])}"${ssrRenderAttr("points", trendPath(n.hist))} data-v-6b2d097f${_scopeId}></polyline></svg></td><td class="mono" data-v-6b2d097f${_scopeId}>${ssrInterpolate(intervalOf(n.intervalMs))}</td><td class="mono" data-v-6b2d097f${_scopeId}>${ssrInterpolate(publishOf(n.publishIntervalMs))}</td><td data-v-6b2d097f${_scopeId}><span class="${ssrRenderClass([{ planned: driverPlanned(n.driver) }, "drv-tag"])}"${ssrRenderAttr("title", driverPlanned(n.driver) ? _ctx.$t("daq.k1plndrv138") : "")} data-v-6b2d097f${_scopeId}>${ssrInterpolate(n.driver)}</span></td><td data-v-6b2d097f${_scopeId}><select class="line-sel"${ssrRenderAttr("value", n.lineId)}${ssrRenderAttr("title", _ctx.$t("daq.k3q23v3010"))} data-v-6b2d097f${_scopeId}><option value="" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3ootr6053"))}</option><!--[-->`);
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><!--[-->`);
736
753
  ssrRenderList(unref(dcw).lines, (l) => {
737
- _push(`<option${ssrRenderAttr("value", l.id)} data-v-6b2d097f${_scopeId}>${ssrInterpolate(l.name)}</option>`);
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>`);
738
765
  });
739
- _push(`<!--]--></select></td><td data-v-6b2d097f${_scopeId}>`);
740
- if (n.lineId) _push(`<span class="${ssrRenderClass([{ on: unref(dcw).lineStateOf(n.lineId).active }, "run-pill"])}"${ssrRenderAttr("title", _ctx.$t("daq.k1runtipc131"))} data-v-6b2d097f${_scopeId}><span class="rp-dot" data-v-6b2d097f${_scopeId}></span> ${ssrInterpolate(unref(dcw).lineStateOf(n.lineId).active ? _ctx.$t("daq.k3vp67i096") : _ctx.$t("daq.k3ozyqz117"))}</span>`);
741
- else _push(`<span class="run-pill na" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3ootr6053"))}</span>`);
742
- _push(`</td><td class="prod-cell" data-v-6b2d097f${_scopeId}>`);
743
- if (n.lineId && unref(dcw).lineStateOf(n.lineId).active) _push(`<!--[--><b${ssrRenderAttr("title", _ctx.$t("daq.k1prdrtip132"))} data-v-6b2d097f${_scopeId}>${ssrInterpolate(unref(dcw).lineStateOf(n.lineId).productName || "--")}</b><small class="mono"${ssrRenderAttr("title", _ctx.$t("daq.k1prdrtip132"))} data-v-6b2d097f${_scopeId}>${ssrInterpolate(unref(dcw).lineStateOf(n.lineId).recipeName || "--")}</small><!--]-->`);
744
- else _push(`<span class="dim" data-v-6b2d097f${_scopeId}>--</span>`);
745
- _push(`</td><td data-v-6b2d097f${_scopeId}><select class="line-sel"${ssrRenderAttr("value", n.deviceBindingId ?? "")}${ssrRenderAttr("title", _ctx.$t("daq.k2bindtip137"))} data-v-6b2d097f${_scopeId}><option value="" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k3own4q056"))}</option><!--[-->`);
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><!--[-->`);
746
767
  ssrRenderList(bindableDeviceTwins.value, (d) => {
747
- _push(`<option${ssrRenderAttr("value", d.id)} data-v-6b2d097f${_scopeId}>${ssrInterpolate(unref(nodeDevices).get(d.id) ?? d.name)}</option>`);
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>`);
748
769
  });
749
- _push(`<!--]--></select></td><td class="right" data-v-6b2d097f${_scopeId}><button class="${ssrRenderClass([{ off: !n.enabled }, "node-toggle"])}"${ssrRenderAttr("title", n.enabled ? _ctx.$t("daq.k1nodestop146") : _ctx.$t("daq.k1nodestart147"))} data-v-6b2d097f${_scopeId}><span class="${ssrRenderClass(n.enabled ? "i-tabler-player-pause" : "i-tabler-player-play")}" data-v-6b2d097f${_scopeId}></span> ${ssrInterpolate(n.enabled ? _ctx.$t("daq.k1nodestop146") : _ctx.$t("daq.k1nodestart147"))}</button>`);
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>`);
750
771
  _push(ssrRenderComponent(_component_NuxtLink, {
751
772
  class: "console-link",
752
773
  to: `/daq/${n.id}`
753
774
  }, {
754
775
  default: withCtx((_, _push, _parent, _scopeId) => {
755
- if (_push) _push(`<span class="i-tabler-dashboard" data-v-6b2d097f${_scopeId}></span> ${ssrInterpolate(_ctx.$t("daq.k3o3jg2074"))}`);
776
+ if (_push) _push(`<span class="i-tabler-dashboard" data-v-1dcb778c${_scopeId}></span> ${ssrInterpolate(_ctx.$t("daq.k3o3jg2074"))}`);
756
777
  else return [createVNode("span", { class: "i-tabler-dashboard" }), createTextVNode(" " + toDisplayString(_ctx.$t("daq.k3o3jg2074")), 1)];
757
778
  }),
758
779
  _: 2
@@ -760,8 +781,8 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
760
781
  _push(`</td></tr>`);
761
782
  });
762
783
  _push(`<!--]-->`);
763
- if (unref(daq).loaded && unref(daq).nodes.length === 0) _push(`<tr data-v-6b2d097f${_scopeId}><td colspan="11" data-v-6b2d097f${_scopeId}><div class="pane-empty" style="${ssrRenderStyle({ "min-height": "120px" })}" data-v-6b2d097f${_scopeId}><p class="pe-sub" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.kvhjyc3075"))}</p></div></td></tr>`);
764
- else if (unref(daq).loaded && filteredNodes.value.length === 0) _push(`<tr data-v-6b2d097f${_scopeId}><td colspan="11" data-v-6b2d097f${_scopeId}><div class="pane-empty" style="${ssrRenderStyle({ "min-height": "90px" })}" data-v-6b2d097f${_scopeId}><p class="pe-sub" data-v-6b2d097f${_scopeId}>${ssrInterpolate(_ctx.$t("daq.k1w20qew076"))}</p></div></td></tr>`);
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>`);
765
786
  else _push(`<!---->`);
766
787
  _push(`</tbody></table></section>`);
767
788
  } else return [createVNode("section", { class: "aw-tile table-card" }, [
@@ -1006,21 +1027,28 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
1006
1027
  key: 1,
1007
1028
  class: "dim"
1008
1029
  }, "--"))]),
1009
- createVNode("td", null, [createVNode("select", {
1010
- class: "line-sel",
1011
- value: n.deviceBindingId ?? "",
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: "",
1012
1043
  title: _ctx.$t("daq.k2bindtip137"),
1013
- onChange: ($event) => setNodeDevice(n.id, $event)
1044
+ onChange: ($event) => addNodeDevice(n.id, $event)
1014
1045
  }, [createVNode("option", { value: "" }, toDisplayString(_ctx.$t("daq.k3own4q056")), 1), (openBlock(true), createBlock(Fragment, null, renderList(bindableDeviceTwins.value, (d) => {
1015
1046
  return openBlock(), createBlock("option", {
1016
1047
  key: d.id,
1017
- value: d.id
1018
- }, toDisplayString(unref(nodeDevices).get(d.id) ?? d.name), 9, ["value"]);
1019
- }), 128))], 40, [
1020
- "value",
1021
- "title",
1022
- "onChange"
1023
- ])]),
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"])])]),
1024
1052
  createVNode("td", { class: "right" }, [createVNode("button", {
1025
1053
  class: ["node-toggle", { off: !n.enabled }],
1026
1054
  title: n.enabled ? _ctx.$t("daq.k1nodestop146") : _ctx.$t("daq.k1nodestart147"),
@@ -1045,7 +1073,7 @@ var index_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComp
1045
1073
  _: 1
1046
1074
  }, _parent));
1047
1075
  if (unref(daq).error) {
1048
- _push(`<p class="err" data-v-6b2d097f>${ssrInterpolate(unref(daq).error)}(`);
1076
+ _push(`<p class="err" data-v-1dcb778c>${ssrInterpolate(unref(daq).error)}(`);
1049
1077
  _push(ssrRenderComponent(_component_NuxtLink, { to: "/workshop" }, {
1050
1078
  default: withCtx((_, _push, _parent, _scopeId) => {
1051
1079
  if (_push) _push(`${ssrInterpolate(_ctx.$t("daq.k1bhhheq077"))}`);
@@ -1067,7 +1095,7 @@ index_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
1067
1095
  (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/daq/index.vue");
1068
1096
  return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
1069
1097
  };
1070
- var daq_default = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-6b2d097f"]]);
1098
+ var daq_default = /*#__PURE__*/ _plugin_vue_export_helper_default(index_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-1dcb778c"]]);
1071
1099
 
1072
1100
  export { daq_default as default };
1073
- //# sourceMappingURL=daq-epWL_sC7.mjs.map
1101
+ //# sourceMappingURL=daq-B-3xCp_2.mjs.map