agentworkshop 0.7.38 → 0.7.40
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.
- package/.AgentWorkShop/prompts/aml-mission-default.md +20 -20
- package/.AgentWorkShop/prompts/aml-playbook.md +49 -49
- package/.AgentWorkShop/prompts/host-tools.json +1293 -1238
- package/.AgentWorkShop/prompts/peer-reply-cross-channel.md +10 -10
- package/.output/.AgentWorkShop/prompts/aml-mission-default.md +20 -20
- package/.output/.AgentWorkShop/prompts/aml-playbook.md +49 -49
- package/.output/.AgentWorkShop/prompts/host-tools.json +1293 -1238
- package/.output/.AgentWorkShop/prompts/peer-reply-cross-channel.md +10 -10
- package/.output/nitro.json +1 -1
- package/.output/public/_nuxt/88GOowgO2.js +1 -0
- package/.output/public/_nuxt/{BNT8gYU92.js → BC9wjTJK2.js} +2 -2
- package/.output/public/_nuxt/BOt2SP4z.js +1 -0
- package/.output/public/_nuxt/BP-NyKVG.js +18 -0
- package/.output/public/_nuxt/{HBLJ-wei.js → BXxH0UQE.js} +1 -1
- package/.output/public/_nuxt/{zIGh7R49.js → BneN7fbu.js} +1 -1
- package/.output/public/_nuxt/BsROmY89.js +1 -0
- package/.output/public/_nuxt/{C_OLzD09.js → C4oW1HsE.js} +1 -1
- package/.output/public/_nuxt/CFxtLwjp.js +1 -0
- package/.output/public/_nuxt/{Cec0Ua3F.js → CS50LB_l.js} +1 -1
- package/.output/public/_nuxt/C_iYD-EB.js +1 -0
- package/.output/public/_nuxt/{DAe0h2MB.js → ClILjvWH.js} +1 -1
- package/.output/public/_nuxt/CssgYAAL2.js +1 -0
- package/.output/public/_nuxt/{CY9LbPCI.js → CzOCSGLe.js} +1 -1
- package/.output/public/_nuxt/D8qvkfyY.js +1 -0
- package/.output/public/_nuxt/DCn7QZ5N.js +2 -0
- package/.output/public/_nuxt/DGIuvyRN2.js +1 -0
- package/.output/public/_nuxt/{CojCTLKD.js → DGj-WEBg.js} +1 -1
- package/.output/public/_nuxt/{DDShH71m.js → DS8qj8EL.js} +1 -1
- package/.output/public/_nuxt/DTFCy6h-.js +1 -0
- package/.output/public/_nuxt/{DrYV5i68.js → DUjW5Yq5.js} +1 -1
- package/.output/public/_nuxt/DZshyNLa.js +1 -0
- package/.output/public/_nuxt/{45zuyAso.js → D_OTvQza.js} +1 -1
- package/.output/public/_nuxt/DcsCcxp4.js +1 -0
- package/.output/public/_nuxt/{DUrecWPx.js → Dihnimlk.js} +2 -2
- package/.output/public/_nuxt/Dqw1lpr-.js +1 -0
- package/.output/public/_nuxt/{BG8sCcwx.js → Dr9v6C0f.js} +9 -9
- package/.output/public/_nuxt/{8NMOXZOV.js → Du9ZJtnj.js} +1 -1
- package/.output/public/_nuxt/TownView.f-YOdXRs.css +1 -0
- package/.output/public/_nuxt/_id_.CM4bIgKY.css +1 -0
- package/.output/public/_nuxt/_id_.bNV69Dtf.css +1 -0
- package/.output/public/_nuxt/_wsId_.B4WiqkIS.css +1 -0
- package/.output/public/_nuxt/agents.ZD0rVdHE.css +1 -0
- package/.output/public/_nuxt/aml.BN8ZEW4h.css +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/f4707884-7cf4-4a31-80d2-e3d72b73745f.json +1 -0
- package/.output/public/_nuxt/channel-templates.BOtahzPi.css +1 -0
- package/.output/public/_nuxt/daq.B0D3dPAc.css +1 -0
- package/.output/public/_nuxt/dcw.8Y7FqCVN.css +1 -0
- package/.output/public/_nuxt/default.J32SgqFY.css +1 -0
- package/.output/public/_nuxt/entry.bdm0tv6M.css +1 -0
- package/.output/public/_nuxt/logs.BpKzmKsh.css +1 -0
- package/.output/public/_nuxt/monitor.D9pe7qN6.css +1 -0
- package/.output/public/_nuxt/pages.D7aSDlUI.css +1 -0
- package/.output/public/_nuxt/permissions.DwTVlFe6.css +1 -0
- package/.output/public/_nuxt/plugins.sb4nDGqr.css +1 -0
- package/.output/public/_nuxt/{Cbq-mryP.js → qr6R6Ha1.js} +1 -1
- package/.output/public/_nuxt/settings.BTgR-NiE.css +1 -0
- package/.output/public/_nuxt/teams.CxnxKVVs.css +1 -0
- package/.output/public/_nuxt/tokens.BFY7qv4f.css +1 -0
- package/.output/public/_nuxt/{town.DKIAhKnx.css → town.BBXZmeoP.css} +1 -1
- package/.output/public/_nuxt/users.DLgZ1D0h.css +1 -0
- package/.output/public/_nuxt/workshop.CR_QzeAN.css +1 -0
- package/.output/public/_nuxt/{BzHEilTt.js → xh3_vYcu.js} +1 -1
- package/.output/public/_nuxt/yF0aYMF1.js +4 -0
- package/.output/server/chunks/_/entity.mjs.map +1 -1
- package/.output/server/chunks/_/nitro.mjs +2244 -1464
- package/.output/server/chunks/_/nitro.mjs.map +1 -1
- package/.output/server/chunks/build/{TownView-jVazYOjN.mjs → TownView-BuLAsmpR.mjs} +288 -206
- package/.output/server/chunks/build/TownView-BuLAsmpR.mjs.map +1 -0
- package/.output/server/chunks/build/{_id_-CfVosNg3.mjs → _id_-BU1wfOID.mjs} +138 -138
- package/.output/server/chunks/build/{_id_-CfVosNg3.mjs.map → _id_-BU1wfOID.mjs.map} +1 -1
- package/.output/server/chunks/build/{_id_-Hwr4rZpr.mjs → _id_-BYsEua57.mjs} +33 -32
- package/.output/server/chunks/build/_id_-BYsEua57.mjs.map +1 -0
- package/.output/server/chunks/build/{_wsId_-BVg3bB77.mjs → _wsId_-BxlDcJHg.mjs} +293 -259
- package/.output/server/chunks/build/{_wsId_-BVg3bB77.mjs.map → _wsId_-BxlDcJHg.mjs.map} +1 -1
- package/.output/server/chunks/build/{agents-Bvin73QY.mjs → agents-CLQqJF2y.mjs} +21 -27
- package/.output/server/chunks/build/agents-CLQqJF2y.mjs.map +1 -0
- package/.output/server/chunks/build/{aml-BCSJCdX7.mjs → aml-_7FdFL2p.mjs} +109 -109
- package/.output/server/chunks/build/{aml-BCSJCdX7.mjs.map → aml-_7FdFL2p.mjs.map} +1 -1
- package/.output/server/chunks/build/api-error-dul30BYQ.mjs.map +1 -1
- package/.output/server/chunks/build/{channel-templates-BTq8570n.mjs → channel-templates-p6SZNjlM.mjs} +19 -19
- package/.output/server/chunks/build/{channel-templates-BTq8570n.mjs.map → channel-templates-p6SZNjlM.mjs.map} +1 -1
- package/.output/server/chunks/build/{daq-C03Uu5UE.mjs → daq-cgyjKmJu.mjs} +188 -122
- package/.output/server/chunks/build/daq-cgyjKmJu.mjs.map +1 -0
- package/.output/server/chunks/build/{dcw-6vEYVeje.mjs → dcw-CoTxBlAZ.mjs} +45 -45
- package/.output/server/chunks/build/{dcw-6vEYVeje.mjs.map → dcw-CoTxBlAZ.mjs.map} +1 -1
- package/.output/server/chunks/build/{default-hseyOqBT.mjs → default-BE4r0FZN.mjs} +158 -79
- package/.output/server/chunks/build/{default-hseyOqBT.mjs.map → default-BE4r0FZN.mjs.map} +1 -1
- package/.output/server/chunks/build/{logs-B-xhuqln.mjs → logs-BSOeZwwI.mjs} +34 -34
- package/.output/server/chunks/build/{logs-B-xhuqln.mjs.map → logs-BSOeZwwI.mjs.map} +1 -1
- package/.output/server/chunks/build/{monitor-CyfDt4nR.mjs → monitor-C0okQaXz.mjs} +33 -33
- package/.output/server/chunks/build/{monitor-CyfDt4nR.mjs.map → monitor-C0okQaXz.mjs.map} +1 -1
- package/.output/server/chunks/build/{pages-BO7yZsXA.mjs → pages-DFxjn9Xa.mjs} +33 -17
- package/.output/server/chunks/build/pages-DFxjn9Xa.mjs.map +1 -0
- package/.output/server/chunks/build/{permissions-B52oOmaO.mjs → permissions-68SsNjex.mjs} +12 -12
- package/.output/server/chunks/build/{permissions-B52oOmaO.mjs.map → permissions-68SsNjex.mjs.map} +1 -1
- package/.output/server/chunks/build/{plugins-CUWmMdyt.mjs → plugins-lGlUr1lj.mjs} +17 -17
- package/.output/server/chunks/build/{plugins-CUWmMdyt.mjs.map → plugins-lGlUr1lj.mjs.map} +1 -1
- package/.output/server/chunks/build/{settings-DoQ2Oq3P.mjs → settings-Ddd1qx2Z.mjs} +50 -47
- package/.output/server/chunks/build/settings-Ddd1qx2Z.mjs.map +1 -0
- package/.output/server/chunks/build/{teams-2kz3CusY.mjs → teams-MEDLZdMn.mjs} +38 -34
- package/.output/server/chunks/build/teams-MEDLZdMn.mjs.map +1 -0
- package/.output/server/chunks/build/{tokens-BbWLqtVz.mjs → tokens-C7fTM5C2.mjs} +14 -14
- package/.output/server/chunks/build/{tokens-BbWLqtVz.mjs.map → tokens-C7fTM5C2.mjs.map} +1 -1
- package/.output/server/chunks/build/{town-BOl6hs9B.mjs → town-qMPql9Se.mjs} +36 -10
- package/.output/server/chunks/build/town-qMPql9Se.mjs.map +1 -0
- package/.output/server/chunks/build/useDaqStream-CIBaiGAl.mjs +1 -1
- package/.output/server/chunks/build/useDcwStream-CBbiYnWe.mjs +1 -1
- package/.output/server/chunks/build/useResponsive-BKDMGTHs.mjs +49 -0
- package/.output/server/chunks/build/useResponsive-BKDMGTHs.mjs.map +1 -0
- package/.output/server/chunks/build/{users-fohSmF-J.mjs → users-Cfd5-l2-.mjs} +6 -6
- package/.output/server/chunks/build/{users-fohSmF-J.mjs.map → users-Cfd5-l2-.mjs.map} +1 -1
- package/.output/server/chunks/build/{workshop-DX5-ldc4.mjs → workshop-BL5bhfs0.mjs} +15 -15
- package/.output/server/chunks/build/{workshop-DX5-ldc4.mjs.map → workshop-BL5bhfs0.mjs.map} +1 -1
- package/.output/server/chunks/build/{workspaces-BuydxM-3.mjs → workspaces-Bgz5Ekwp.mjs} +18 -3
- package/.output/server/chunks/build/workspaces-Bgz5Ekwp.mjs.map +1 -0
- package/.output/server/chunks/routes/api/system/config-groups/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/system/settings/events.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs +6 -2
- package/.output/server/chunks/routes/api/workshop/agent-tools/invoke.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/aml/datasets/_id_.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/channel-templates/_id/instantiate.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/channels.post.mjs +3 -3
- package/.output/server/chunks/routes/api/workshop/daq/index.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/daq/templates/_key_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs +3 -2
- package/.output/server/chunks/routes/api/workshop/dcw/_id/write.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs +2 -1
- package/.output/server/chunks/routes/api/workshop/dcw/_id_.delete.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs +8 -6
- package/.output/server/chunks/routes/api/workshop/dcw/index2.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs +5 -5
- package/.output/server/chunks/routes/api/workshop/dcw/index3.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs +14 -4
- package/.output/server/chunks/routes/api/workshop/dcw/index4.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs +4 -4
- package/.output/server/chunks/routes/api/workshop/dcw/index4.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs +4 -3
- package/.output/server/chunks/routes/api/workshop/dcw/index5.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs +31 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index5.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs +28 -0
- package/.output/server/chunks/routes/api/workshop/dcw/index6.get.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/lines/_id_.patch.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs +32 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/read.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs +34 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id/write.post.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs +33 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.delete.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs +34 -0
- package/.output/server/chunks/routes/api/workshop/dcw/params/_id_.patch.mjs.map +1 -0
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/dcw/templates/_key_.patch.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses/_id/providers.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/harnesses.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/pending.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/hitl/respond.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs +2 -0
- package/.output/server/chunks/routes/api/workshop/index6.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs +3 -1
- package/.output/server/chunks/routes/api/workshop/index9.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/disable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/plugins/_name/enable.post.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/scene/layouts/_channelId_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/workshop/workspaces/_id/channel-templates/_tplId_.post.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +3 -3
- package/.output/server/chunks/virtual/entry.mjs +53 -25
- package/.output/server/chunks/virtual/precomputed.mjs +1 -1
- package/.output/server/package.json +1 -1
- package/README-zh.md +204 -40
- package/README.md +739 -591
- package/app/app.vue +9 -3
- package/app/assets/css/main.css +517 -7
- package/app/components/AppHeader.vue +98 -24
- package/app/components/AppSidebar.vue +118 -11
- package/app/components/AwChart.vue +2 -1
- package/app/components/workshop/AgentInspectorDrawer.vue +6 -6
- package/app/components/workshop/AgentLanesView.vue +52 -1
- package/app/components/workshop/AssetLibrary.vue +4 -2
- package/app/components/workshop/ChannelSessionList.vue +4 -2
- package/app/components/workshop/Composer.vue +96 -0
- package/app/components/workshop/DaqNodeRow.vue +19 -0
- package/app/components/workshop/DaqTemplateIcon.vue +33 -0
- package/app/components/workshop/DeviceTwinPanel.vue +37 -35
- package/app/components/workshop/EventBlock.vue +3 -3
- package/app/components/workshop/InspectorPanel.vue +47 -11
- package/app/components/workshop/LiveAgentBar.vue +34 -0
- package/app/components/workshop/TaskBoardView.vue +83 -33
- package/app/components/workshop/TranscriptTimeline.vue +56 -0
- package/app/components/workshop/blocks/ClusterError.vue +1 -1
- package/app/components/workshop/blocks/ClusterRoute.vue +3 -1
- package/app/components/workshop/blocks/ClusterStatus.vue +2 -2
- package/app/components/workshop/blocks/ClusterStream.vue +8 -2
- package/app/components/workshop/town/ModelPreview3D.vue +1 -1
- package/app/components/workshop/town/TownView.vue +507 -82
- package/app/composables/useResponsive.ts +88 -0
- package/app/composables/useRouteMeta.ts +3 -0
- package/app/composables/workshop/useDcwStream.ts +1 -1
- package/app/composables/workshop/useVisibleInterval.ts +2 -2
- package/app/composables/workshop/useWorkshopApi.ts +1 -1
- package/app/layouts/default.vue +46 -2
- package/app/pages/aml/index.vue +712 -616
- package/app/pages/daq/[id].vue +3 -2
- package/app/pages/daq/index.vue +209 -9
- package/app/pages/dcw/[id].vue +109 -28
- package/app/pages/dcw/index.vue +83 -23
- package/app/pages/index.vue +35 -1
- package/app/pages/logs/index.vue +147 -13
- package/app/pages/monitor.vue +56 -12
- package/app/pages/permissions/index.vue +34 -0
- package/app/pages/plugins/index.vue +35 -4
- package/app/pages/settings.vue +90 -21
- package/app/pages/tokens.vue +23 -0
- package/app/pages/town.vue +50 -5
- package/app/pages/users.vue +23 -0
- package/app/pages/workshop/agents.vue +92 -2
- package/app/pages/workshop/channel-templates.vue +53 -0
- package/app/pages/workshop/index.vue +14 -0
- package/app/pages/workshop/teams.vue +66 -6
- package/app/pages/workshop/w/[wsId].vue +202 -14
- package/app/plugins/aw-plugins.client.ts +13 -8
- package/app/stores/app.ts +33 -1
- package/app/stores/workshop/user.ts +1 -1
- package/app/stores/workshop/workspaces.ts +18 -2
- package/app/utils/api-error.ts +1 -1
- package/cli/commands/build.mjs +8 -1
- package/docker-compose.yml +6 -0
- package/docs/full-test-plan.md +4 -0
- package/docs/plugins.en.md +1 -0
- package/docs/plugins.md +1 -0
- package/i18n/locales/en.ts +3 -0
- package/i18n/locales/zh-CN.ts +3 -0
- package/nuxt.config.ts +31 -0
- package/package.json +9 -1
- package/scripts/_audit/detached-start.mjs +103 -0
- package/scripts/_audit/guard-upstream-liveness.mjs +104 -0
- package/scripts/_dbg-param-map-e2e.ts +242 -0
- package/scripts/_dbg-param-map-rest-smoke.mjs +73 -0
- package/scripts/_dbg-param-real-scenario.mjs +153 -0
- package/scripts/_dbg-perms-e2e.mjs +10 -3
- package/scripts/_dbg-protocol-matrix.mjs +453 -441
- package/scripts/_dbg-render-regression.mjs +151 -130
- package/scripts/_dbg-town-agents-probe.mjs +60 -0
- package/scripts/_dbg-visual-acceptance.mjs +63 -0
- package/scripts/api-live-e2e.mjs +40 -8
- package/scripts/capture-walkthrough.mjs +232 -0
- package/scripts/e2e-agent-team.mjs +5 -3
- package/scripts/render-walkthrough-figure.mjs +46 -0
- package/scripts/seed-walkthrough-fixture.mjs +143 -0
- package/scripts/test-plugin-hardening.mjs +8 -0
- package/scripts/three-system-e2e.mjs +6 -6
- package/scripts/ui/admin-shots.mjs +46 -0
- package/scripts/ui/audit-layout.mjs +301 -0
- package/scripts/ui/bump-microfont.mjs +39 -0
- package/scripts/ui/lib.mjs +198 -0
- package/scripts/ui/linkcheck2.mjs +37 -0
- package/scripts/ui/live-render-check.mjs +72 -0
- package/scripts/ui/md-lint.mjs +80 -0
- package/scripts/ui/perf-audit.mjs +132 -0
- package/scripts/ui/readme-assets.mjs +30 -0
- package/scripts/ui/readme-shots.mjs +42 -0
- package/scripts/ui/record.mjs +225 -0
- package/scripts/ui/seed-admin.mjs +68 -0
- package/scripts/ui/seed-demo.mjs +83 -0
- package/scripts/ui/shot-hero.mjs +25 -0
- package/scripts/ui/shots.mjs +75 -0
- package/scripts/ui/sim-ui-shot.mjs +16 -0
- package/scripts/ui/verify-nav.mjs +51 -0
- package/scripts/ui/verify-responsive.mjs +285 -0
- package/server/api/system/config-groups/[id].patch.ts +1 -1
- package/server/api/system/config-groups/index.post.ts +1 -1
- package/server/api/system/settings/events.get.ts +1 -1
- package/server/api/system/settings/index.patch.ts +1 -1
- package/server/api/workshop/agent-tools/invoke.post.ts +16 -2
- package/server/api/workshop/aml/datasets/[id].get.ts +8 -1
- package/server/api/workshop/daq/infra/reconnect.post.ts +1 -1
- package/server/api/workshop/daq/templates/[key].delete.ts +1 -0
- package/server/api/workshop/daq/templates/[key].patch.ts +1 -0
- package/server/api/workshop/daq/templates/index.post.ts +1 -0
- package/server/api/workshop/dcw/[id]/write.post.ts +10 -2
- package/server/api/workshop/dcw/[id].delete.ts +5 -2
- package/server/api/workshop/dcw/index.get.ts +2 -0
- package/server/api/workshop/dcw/lines/[id].patch.ts +1 -1
- package/server/api/workshop/dcw/params/[id]/read.post.ts +17 -0
- package/server/api/workshop/dcw/params/[id]/write.post.ts +21 -0
- package/server/api/workshop/dcw/params/[id].delete.ts +19 -0
- package/server/api/workshop/dcw/params/[id].patch.ts +23 -0
- package/server/api/workshop/dcw/params/index.get.ts +27 -0
- package/server/api/workshop/dcw/params/index.post.ts +25 -0
- package/server/api/workshop/permissions/index.get.ts +3 -1
- package/server/plugins/aw-plugins.ts +14 -3
- package/server/plugins/dev-stability-guard.ts +3 -1
- package/server/plugins/system-config.ts +6 -1
- package/server/plugins-builtin/rag-bridge/index.mjs +9 -2
- package/server/services/system-config.ts +28 -9
- package/server/services/workshop/agents/adapters/one-shot-cli-agent.ts +2 -1
- package/server/services/workshop/agents/agent-interface.ts +8 -6
- package/server/services/workshop/agents/base-agent.ts +18 -4
- package/server/services/workshop/agents/claude-agent.ts +7 -3
- package/server/services/workshop/agents/codex-agent.ts +3 -3
- package/server/services/workshop/agents/dsh-agent.ts +3 -3
- package/server/services/workshop/agents/goose-agent.ts +0 -1
- package/server/services/workshop/agents/harness-terminal.ts +14 -1
- package/server/services/workshop/agents/hermes-agent.ts +4 -2
- package/server/services/workshop/agents/host-tool-bridge.ts +5 -1
- package/server/services/workshop/agents/industrial-context.ts +4 -1
- package/server/services/workshop/agents/industrial-tools.ts +164 -6
- package/server/services/workshop/agents/omp-agent.ts +15 -9
- package/server/services/workshop/agents/opencode-agent.ts +47 -21
- package/server/services/workshop/agents/qwen-agent.ts +10 -5
- package/server/services/workshop/aml/entity.ts +3 -1
- package/server/services/workshop/aml/python-runtime.ts +3 -2
- package/server/services/workshop/daq/bus/mqtt.adapter.ts +8 -4
- package/server/services/workshop/daq/daq-controller.ts +18 -3
- package/server/services/workshop/daq/daq-runtime.ts +5 -3
- package/server/services/workshop/daq/drivers.ts +63 -8
- package/server/services/workshop/daq/host-ports.ts +3 -2
- package/server/services/workshop/daq/storage/timescale.adapter.ts +3 -1
- package/server/services/workshop/db/channel.repo.ts +4 -0
- package/server/services/workshop/db/ops.repo.ts +5 -2
- package/server/services/workshop/db/retention.ts +8 -3
- package/server/services/workshop/dcw/dcw-controller.ts +143 -16
- package/server/services/workshop/dcw/dcw-product.repo.ts +38 -1
- package/server/services/workshop/dcw/dcw-runtime.ts +3 -2
- package/server/services/workshop/dcw/drivers.ts +5 -2
- package/server/services/workshop/dcw/param-conversion.ts +78 -0
- package/server/services/workshop/dcw/param-limits.ts +142 -0
- package/server/services/workshop/dcw/param-map.repo.ts +305 -0
- package/server/services/workshop/dcw/recipe-rollback-manager.ts +13 -7
- package/server/services/workshop/runtime/agent-runtime.ts +4 -0
- package/server/services/workshop/runtime/manager.ts +9 -2
- package/server/services/workshop/settings.ts +4 -2
- package/server/types/pg.d.ts +49 -0
- package/server/utils/stability-severity.ts +13 -2
- package/shared/config/groups.mjs +22 -1
- package/shared/config/home.d.mts +28 -0
- package/shared/dcw-protocol.ts +136 -0
- package/uno.config.ts +12 -1
- package/.output/public/_nuxt/BFkgkW8u.js +0 -4
- package/.output/public/_nuxt/C5gUkRwn.js +0 -1
- package/.output/public/_nuxt/CM12FuB42.js +0 -1
- package/.output/public/_nuxt/CZiw7sEV.js +0 -1
- package/.output/public/_nuxt/Cc_9VzD42.js +0 -1
- package/.output/public/_nuxt/CdPzkOMV.js +0 -1
- package/.output/public/_nuxt/D1YDxZpZ.js +0 -1
- package/.output/public/_nuxt/D20Yamr4.js +0 -1
- package/.output/public/_nuxt/DVsjtsvZ2.js +0 -1
- package/.output/public/_nuxt/DmqknNvV.js +0 -18
- package/.output/public/_nuxt/DnUuIR83.js +0 -1
- package/.output/public/_nuxt/S_fVQwJK.js +0 -1
- package/.output/public/_nuxt/TownView.0oLiQgTC.css +0 -1
- package/.output/public/_nuxt/_id_.D-SYuyZb.css +0 -1
- package/.output/public/_nuxt/_id_.hma_BU6T.css +0 -1
- package/.output/public/_nuxt/_wsId_.B12v3PhY.css +0 -1
- package/.output/public/_nuxt/agents.BV70ioCv.css +0 -1
- package/.output/public/_nuxt/ahgEJu2R.js +0 -1
- package/.output/public/_nuxt/aml.COEKNNqK.css +0 -1
- package/.output/public/_nuxt/builds/meta/44b66249-54d0-4c8a-9057-9755a32329e2.json +0 -1
- package/.output/public/_nuxt/channel-templates.C-M5nKcC.css +0 -1
- package/.output/public/_nuxt/daq.B3265ZDn.css +0 -1
- package/.output/public/_nuxt/dcw.DLYZqEhT.css +0 -1
- package/.output/public/_nuxt/default.DE_vT238.css +0 -1
- package/.output/public/_nuxt/entry.BB-Eeh-J.css +0 -1
- package/.output/public/_nuxt/logs.CqFyMrJw.css +0 -1
- package/.output/public/_nuxt/monitor.B--1dPzs.css +0 -1
- package/.output/public/_nuxt/pages.ooEzrMm9.css +0 -1
- package/.output/public/_nuxt/permissions.B1pjGChZ.css +0 -1
- package/.output/public/_nuxt/plugins.5e5chZ67.css +0 -1
- package/.output/public/_nuxt/pz2JDAM7.js +0 -2
- package/.output/public/_nuxt/settings.Dm3M0RLy.css +0 -1
- package/.output/public/_nuxt/teams.BC75EGnR.css +0 -1
- package/.output/public/_nuxt/tokens.xRb1fSPU.css +0 -1
- package/.output/public/_nuxt/users.CXnP2E08.css +0 -1
- package/.output/public/_nuxt/workshop.Jk5HxWPE.css +0 -1
- package/.output/server/chunks/build/TownView-jVazYOjN.mjs.map +0 -1
- package/.output/server/chunks/build/_id_-Hwr4rZpr.mjs.map +0 -1
- package/.output/server/chunks/build/agents-Bvin73QY.mjs.map +0 -1
- package/.output/server/chunks/build/daq-C03Uu5UE.mjs.map +0 -1
- package/.output/server/chunks/build/pages-BO7yZsXA.mjs.map +0 -1
- package/.output/server/chunks/build/settings-DoQ2Oq3P.mjs.map +0 -1
- package/.output/server/chunks/build/teams-2kz3CusY.mjs.map +0 -1
- package/.output/server/chunks/build/town-BOl6hs9B.mjs.map +0 -1
- package/.output/server/chunks/build/workspaces-BuydxM-3.mjs.map +0 -1
- /package/.output/public/_nuxt/{36oeS8_R2.js → 36oeS8_R.js} +0 -0
- /package/.output/public/_nuxt/{CYWVXZTS.js → CYWVXZTS2.js} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { _ as _plugin_vue_export_helper_default, u as useI18n, at as useHttp, b as useUserStore } from '../virtual/entry.mjs';
|
|
2
|
-
import { u as
|
|
2
|
+
import { u as useResponsive } from './useResponsive-BKDMGTHs.mjs';
|
|
3
|
+
import { u as useWorkspacesStore } from './workspaces-Bgz5Ekwp.mjs';
|
|
3
4
|
import { a as apiErrorMessage } from './api-error-dul30BYQ.mjs';
|
|
4
5
|
import { u as useEntitiesStore, a as useWorkshopWs } from './useWorkshopWs-C_I7q9As.mjs';
|
|
5
6
|
import { s as setInterval, n as nowLocalIso } from './useLocalTime-9a4B-aHv.mjs';
|
|
@@ -8,8 +9,8 @@ import { u as useDcwStream } from './useDcwStream-CBbiYnWe.mjs';
|
|
|
8
9
|
import { u as useDaqStream } from './useDaqStream-CIBaiGAl.mjs';
|
|
9
10
|
import { u as useDeviceTwins } from './useDeviceTwins-Yko6nNPF.mjs';
|
|
10
11
|
import { shallowRef, ref, computed, toValue, watch, nextTick, defineComponent, reactive, mergeProps, unref, readonly, getCurrentScope, onScopeDispose, getCurrentInstance, toRef, customRef, useSSRContext } from 'vue';
|
|
11
|
-
import { ssrRenderAttrs, ssrInterpolate, ssrRenderAttr,
|
|
12
|
-
import {
|
|
12
|
+
import { ssrRenderAttrs, ssrRenderClass, ssrInterpolate, ssrRenderAttr, ssrIncludeBooleanAttr, ssrRenderComponent, ssrRenderList, ssrRenderStyle, ssrLooseContain, ssrLooseEqual } from 'vue/server-renderer';
|
|
13
|
+
import { bt as DAQ_TEMPLATES } from '../_/nitro.mjs';
|
|
13
14
|
import * as THREE from 'three';
|
|
14
15
|
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
15
16
|
import { RoomEnvironment } from 'three/examples/jsm/environments/RoomEnvironment.js';
|
|
@@ -579,9 +580,9 @@ var ModelPreview3D_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
579
580
|
ref: hostRef,
|
|
580
581
|
class: "model-preview-3d",
|
|
581
582
|
style: { height: `${__props.height}px` }
|
|
582
|
-
}, _attrs))} data-v-
|
|
583
|
-
if (unref(loading)) _push(`<div class="mp-loading" data-v-
|
|
584
|
-
else if (unref(failed)) _push(`<div class="mp-failed" data-v-
|
|
583
|
+
}, _attrs))} data-v-ed056b0a>`);
|
|
584
|
+
if (unref(loading)) _push(`<div class="mp-loading" data-v-ed056b0a><span class="mp-spin" data-v-ed056b0a></span></div>`);
|
|
585
|
+
else if (unref(failed)) _push(`<div class="mp-failed" data-v-ed056b0a> PREVIEW NA </div>`);
|
|
585
586
|
else _push(`<!---->`);
|
|
586
587
|
_push(`</div>`);
|
|
587
588
|
};
|
|
@@ -589,13 +590,13 @@ var ModelPreview3D_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
589
590
|
});
|
|
590
591
|
//#endregion
|
|
591
592
|
//#region app/components/workshop/town/ModelPreview3D.vue
|
|
592
|
-
var _sfc_setup$
|
|
593
|
+
var _sfc_setup$4 = ModelPreview3D_vue_vue_type_script_setup_true_lang_default.setup;
|
|
593
594
|
ModelPreview3D_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
|
|
594
595
|
const ssrContext = useSSRContext();
|
|
595
596
|
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/town/ModelPreview3D.vue");
|
|
596
|
-
return _sfc_setup$
|
|
597
|
+
return _sfc_setup$4 ? _sfc_setup$4(props, ctx) : void 0;
|
|
597
598
|
};
|
|
598
|
-
var ModelPreview3D_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ModelPreview3D_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
599
|
+
var ModelPreview3D_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(ModelPreview3D_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-ed056b0a"]]), { __name: "WorkshopTownModelPreview3D" });
|
|
599
600
|
//#endregion
|
|
600
601
|
//#region app/components/workshop/AssetLibrary.vue?vue&type=script&setup=true&lang.ts
|
|
601
602
|
var AssetLibrary_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
@@ -626,8 +627,8 @@ var AssetLibrary_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
626
627
|
const deletingId = ref("");
|
|
627
628
|
const deleteMsg = ref("");
|
|
628
629
|
return (_ctx, _push, _parent, _attrs) => {
|
|
629
|
-
_push(`<aside${ssrRenderAttrs(mergeProps({ class: "asset-lib" }, _attrs))} data-v-
|
|
630
|
-
if (unref(dropActive)) _push(`<span class="drop-hint" data-v-
|
|
630
|
+
_push(`<aside${ssrRenderAttrs(mergeProps({ class: "asset-lib" }, _attrs))} data-v-3d6a30ed><div class="lib-head" data-v-3d6a30ed><span class="head-title" data-v-3d6a30ed>${ssrInterpolate(_ctx.$t("assetLibrary.k7la4x5001"))}</span><span class="head-hint" data-v-3d6a30ed>${ssrInterpolate(_ctx.$t("assetLibrary.kulif5b002"))}</span></div><div class="${ssrRenderClass([{ drop: unref(dropActive) }, "upload-box"])}" data-v-3d6a30ed><label class="upload-row" data-v-3d6a30ed><input type="file" accept=".glb,.gltf,.obj,.fbx" class="file-input" data-v-3d6a30ed><span class="upload-name" data-v-3d6a30ed><span class="i-tabler-plus upload-ico" data-v-3d6a30ed></span> ${ssrInterpolate(unref(uploadFile)?.name || _ctx.$t("assetLibrary.k1iiort6010"))}</span></label>`);
|
|
631
|
+
if (unref(dropActive)) _push(`<span class="drop-hint" data-v-3d6a30ed><span class="i-tabler-download" data-v-3d6a30ed></span> ${ssrInterpolate(_ctx.$t("assetLibrary.k5hg6jq003"))}</span>`);
|
|
631
632
|
else _push(`<!---->`);
|
|
632
633
|
if (unref(uploadFile)) {
|
|
633
634
|
_push(`<!--[-->`);
|
|
@@ -635,31 +636,31 @@ var AssetLibrary_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
635
636
|
"local-file": unref(uploadFile),
|
|
636
637
|
height: 92
|
|
637
638
|
}, null, _parent));
|
|
638
|
-
else _push(`<span class="upload-file-tag" data-v-
|
|
639
|
-
_push(`<div class="upload-actions" data-v-
|
|
640
|
-
} else if (unref(uploading)) _push(`<span class="mini-err" data-v-
|
|
639
|
+
else _push(`<span class="upload-file-tag" data-v-3d6a30ed>${ssrInterpolate(unref(uploadFile).name)} (${ssrInterpolate(_ctx.$t("assetLibrary.k1xz5wvk009"))}</span>`);
|
|
640
|
+
_push(`<div class="upload-actions" data-v-3d6a30ed><button class="upload-btn go"${ssrIncludeBooleanAttr(unref(uploading)) ? " disabled" : ""} data-v-3d6a30ed>${ssrInterpolate(unref(uploading) ? _ctx.$t("assetLibrary.k1ar7n8i005") : _ctx.$t("assetLibrary.k1hhga4h014"))}</button><button class="upload-btn"${ssrIncludeBooleanAttr(unref(uploading)) ? " disabled" : ""} data-v-3d6a30ed>${ssrInterpolate(_ctx.$t("assetLibrary.k3xdnn004"))}</button></div><!--]-->`);
|
|
641
|
+
} else if (unref(uploading)) _push(`<span class="mini-err" data-v-3d6a30ed>${ssrInterpolate(_ctx.$t("assetLibrary.k1ar7n8i005"))}</span>`);
|
|
641
642
|
else _push(`<!---->`);
|
|
642
|
-
if (unref(uploadError) && !unref(uploadFile)) _push(`<span class="mini-err" data-v-
|
|
643
|
+
if (unref(uploadError) && !unref(uploadFile)) _push(`<span class="mini-err" data-v-3d6a30ed>${ssrInterpolate(unref(uploadError))}</span>`);
|
|
643
644
|
else _push(`<!---->`);
|
|
644
|
-
_push(`</div><div class="lib-grid" data-v-
|
|
645
|
+
_push(`</div><div class="lib-grid" data-v-3d6a30ed><!--[-->`);
|
|
645
646
|
ssrRenderList(unref(deviceModels), (m) => {
|
|
646
|
-
_push(`<div class="model-card"${ssrRenderAttr("data-model-id", m.id)} draggable="true"${ssrRenderAttr("title", m.hint || _ctx.$t("assetLibrary.katn7lo015", { p0: m.name }))} data-v-
|
|
647
|
+
_push(`<div class="model-card"${ssrRenderAttr("data-model-id", m.id)} draggable="true"${ssrRenderAttr("title", m.hint || _ctx.$t("assetLibrary.katn7lo015", { p0: m.name }))} data-v-3d6a30ed>`);
|
|
647
648
|
if (isPreviewable(m.file)) _push(ssrRenderComponent(ModelPreview3D_default, {
|
|
648
649
|
file: m.file,
|
|
649
650
|
height: 76
|
|
650
651
|
}, null, _parent));
|
|
651
|
-
else _push(`<span class="model-img glb dev" data-v-
|
|
652
|
-
_push(`<span class="model-name" data-v-
|
|
653
|
-
if (m.file.includes("/assets/game/devices/")) _push(`<button class="card-btn danger"${ssrIncludeBooleanAttr(unref(deletingId) === m.id) ? " disabled" : ""} data-v-
|
|
652
|
+
else _push(`<span class="model-img glb dev" data-v-3d6a30ed><span class="i-tabler-cpu glb-cube" aria-hidden="true" data-v-3d6a30ed></span></span>`);
|
|
653
|
+
_push(`<span class="model-name" data-v-3d6a30ed>${ssrInterpolate(m.name)}</span><span class="model-badge" data-v-3d6a30ed>${ssrInterpolate(_ctx.$t("assetLibrary.k1n32zs0006"))}</span><div class="card-actions" data-v-3d6a30ed>`);
|
|
654
|
+
if (m.file.includes("/assets/game/devices/")) _push(`<button class="card-btn danger"${ssrIncludeBooleanAttr(unref(deletingId) === m.id) ? " disabled" : ""} data-v-3d6a30ed>${ssrInterpolate(unref(deletingId) === m.id ? "…" : _ctx.$t("assetLibrary.k498l011"))}</button>`);
|
|
654
655
|
else _push(`<!---->`);
|
|
655
656
|
_push(`</div></div>`);
|
|
656
657
|
});
|
|
657
658
|
_push(`<!--]-->`);
|
|
658
|
-
if (!unref(assets).loaded) _push(`<div class="lib-note" data-v-
|
|
659
|
-
else if (unref(deviceModels).length === 0) _push(`<div class="lib-note" data-v-
|
|
659
|
+
if (!unref(assets).loaded) _push(`<div class="lib-note" data-v-3d6a30ed><span class="loading-dot" data-v-3d6a30ed></span> ${ssrInterpolate(_ctx.$t("assetLibrary.k1kq2tmi007"))}</div>`);
|
|
660
|
+
else if (unref(deviceModels).length === 0) _push(`<div class="lib-note" data-v-3d6a30ed>${ssrInterpolate(_ctx.$t("assetLibrary.k15527e1008"))}</div>`);
|
|
660
661
|
else _push(`<!---->`);
|
|
661
662
|
_push(`</div>`);
|
|
662
|
-
if (unref(deleteMsg)) _push(`<span class="mini-msg" data-v-
|
|
663
|
+
if (unref(deleteMsg)) _push(`<span class="mini-msg" data-v-3d6a30ed>${ssrInterpolate(unref(deleteMsg))}</span>`);
|
|
663
664
|
else _push(`<!---->`);
|
|
664
665
|
_push(`</aside>`);
|
|
665
666
|
};
|
|
@@ -667,13 +668,54 @@ var AssetLibrary_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
667
668
|
});
|
|
668
669
|
//#endregion
|
|
669
670
|
//#region app/components/workshop/AssetLibrary.vue
|
|
670
|
-
var _sfc_setup$
|
|
671
|
+
var _sfc_setup$3 = AssetLibrary_vue_vue_type_script_setup_true_lang_default.setup;
|
|
671
672
|
AssetLibrary_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
|
|
672
673
|
const ssrContext = useSSRContext();
|
|
673
674
|
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/AssetLibrary.vue");
|
|
675
|
+
return _sfc_setup$3 ? _sfc_setup$3(props, ctx) : void 0;
|
|
676
|
+
};
|
|
677
|
+
var AssetLibrary_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(AssetLibrary_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-3d6a30ed"]]), { __name: "WorkshopAssetLibrary" });
|
|
678
|
+
//#endregion
|
|
679
|
+
//#region app/components/workshop/DaqTemplateIcon.vue?vue&type=script&setup=true&lang.ts
|
|
680
|
+
var DaqTemplateIcon_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
681
|
+
__name: "DaqTemplateIcon",
|
|
682
|
+
__ssrInlineRender: true,
|
|
683
|
+
props: { icon: {} },
|
|
684
|
+
setup(__props) {
|
|
685
|
+
/**
|
|
686
|
+
* 数采/智控模板图标 —— 全项目唯一的 SVG 片段注入口。
|
|
687
|
+
*
|
|
688
|
+
* 为什么这里必须用 v-html:DAQ_ICONS 的值是 SVG **绘制片段**(path/circle/rect),
|
|
689
|
+
* 必须按 SVG 命名空间解析成图元,文本插值只会把它们画成字面文本。
|
|
690
|
+
* 为什么是安全的:DAO_ICONS 是编译期静态字面量表 —— 键来自 #shared 协议的图标枚举,
|
|
691
|
+
* 值全部是本文件里手写的字符串,不含用户输入、不含 <script>/on* 事件属性/外部引用。
|
|
692
|
+
* 收敛收益:TownView 原先有 6 处 v-html(各自重复同样的判断),现在只此一处。
|
|
693
|
+
*/
|
|
694
|
+
const props = __props;
|
|
695
|
+
/** 数采模板图标(设计稿 ICONS;SVG path 直嵌) */
|
|
696
|
+
const DAQ_ICONS = {
|
|
697
|
+
thermo: "<path d=\"M10 4a2 2 0 0 1 4 0v9a4 4 0 1 1-4 0V4Z\"/><circle cx=\"12\" cy=\"16.5\" r=\"1.6\"/>",
|
|
698
|
+
pressure: "<circle cx=\"12\" cy=\"12\" r=\"8\"/><path d=\"m12 12 3.5-3.5\"/><circle cx=\"12\" cy=\"12\" r=\"1.2\"/>",
|
|
699
|
+
tension: "<circle cx=\"12\" cy=\"10\" r=\"4\"/><path d=\"M4 18.5h16M8 18.5V14M16 18.5V14\"/><path d=\"M2.5 10H8M16 10h5.5\"/>",
|
|
700
|
+
encoder: "<circle cx=\"12\" cy=\"12\" r=\"8\"/><circle cx=\"12\" cy=\"12\" r=\"2\"/><path d=\"M12 4v3M12 17v3M4 12h3M17 12h3\"/>",
|
|
701
|
+
camera: "<rect x=\"3\" y=\"7\" width=\"13\" height=\"10\" rx=\"2\"/><path d=\"m16 11 5-3v8l-5-3\"/><circle cx=\"8\" cy=\"12\" r=\"2.5\"/>",
|
|
702
|
+
gateway: "<rect x=\"8\" y=\"11\" width=\"8\" height=\"10\" rx=\"1.5\"/><circle cx=\"12\" cy=\"5.5\" r=\"1.5\"/><path d=\"M12 10V7M8.5 8.5a5 5 0 0 1 7 0M6 6a8.5 8.5 0 0 1 12 0\"/>"
|
|
703
|
+
};
|
|
704
|
+
const markup = computed(() => DAQ_ICONS[props.icon] ?? DAQ_ICONS.gateway);
|
|
705
|
+
return (_ctx, _push, _parent, _attrs) => {
|
|
706
|
+
_push(`<svg${ssrRenderAttrs(mergeProps({ viewBox: "0 0 24 24" }, _attrs))}>${unref(markup) ?? ""}</svg>`);
|
|
707
|
+
};
|
|
708
|
+
}
|
|
709
|
+
});
|
|
710
|
+
//#endregion
|
|
711
|
+
//#region app/components/workshop/DaqTemplateIcon.vue
|
|
712
|
+
var _sfc_setup$2 = DaqTemplateIcon_vue_vue_type_script_setup_true_lang_default.setup;
|
|
713
|
+
DaqTemplateIcon_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
|
|
714
|
+
const ssrContext = useSSRContext();
|
|
715
|
+
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/DaqTemplateIcon.vue");
|
|
674
716
|
return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0;
|
|
675
717
|
};
|
|
676
|
-
var
|
|
718
|
+
var DaqTemplateIcon_default = Object.assign(DaqTemplateIcon_vue_vue_type_script_setup_true_lang_default, { __name: "WorkshopDaqTemplateIcon" });
|
|
677
719
|
//#endregion
|
|
678
720
|
//#region app/components/workshop/DeviceTwinPanel.vue?vue&type=script&setup=true&lang.ts
|
|
679
721
|
var DeviceTwinPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
@@ -725,44 +767,44 @@ var DeviceTwinPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
725
767
|
const dcwErrs = reactive({});
|
|
726
768
|
const dcwBusy = ref("");
|
|
727
769
|
return (_ctx, _push, _parent, _attrs) => {
|
|
728
|
-
_push(`<aside${ssrRenderAttrs(mergeProps({ class: "twin-panel" }, _attrs))} data-v-
|
|
729
|
-
if (unref(twins).error) _push(`<div class="twin-error" data-v-
|
|
770
|
+
_push(`<aside${ssrRenderAttrs(mergeProps({ class: "twin-panel" }, _attrs))} data-v-37ad3127><div class="twin-head" data-v-37ad3127><span class="twin-kicker" data-v-37ad3127>${ssrInterpolate(_ctx.$t("deviceTwinPanel.k7k6evr002"))}</span><span class="twin-count" data-v-37ad3127>${ssrInterpolate(unref(twins).twins.length)}</span></div>`);
|
|
771
|
+
if (unref(twins).error) _push(`<div class="twin-error" data-v-37ad3127>${ssrInterpolate(unref(twins).error)}</div>`);
|
|
730
772
|
else _push(`<!---->`);
|
|
731
|
-
if (!unref(twins).loaded) _push(`<div class="twin-empty" data-v-
|
|
732
|
-
else if (unref(twins).twins.length === 0) _push(`<div class="twin-empty" data-v-
|
|
773
|
+
if (!unref(twins).loaded) _push(`<div class="twin-empty" data-v-37ad3127>${ssrInterpolate(_ctx.$t("deviceTwinPanel.kkw7sn5003"))}</div>`);
|
|
774
|
+
else if (unref(twins).twins.length === 0) _push(`<div class="twin-empty" data-v-37ad3127><div class="twin-empty-frame" data-v-37ad3127><div class="twin-empty-title" data-v-37ad3127>${ssrInterpolate(_ctx.$t("deviceTwinPanel.k13y2qmg004"))}</div><div class="twin-empty-sub" data-v-37ad3127>${ssrInterpolate(_ctx.$t("deviceTwinPanel.kotf23l005"))}</div></div></div>`);
|
|
733
775
|
else {
|
|
734
|
-
_push(`<div class="twin-list" data-v-
|
|
735
|
-
ssrRenderList(unref(twins).twins, (
|
|
736
|
-
_push(`<button class="${ssrRenderClass([{ daq: isDaq(
|
|
737
|
-
if (Object.keys(
|
|
738
|
-
_push(`<div class="twin-tele" data-v-
|
|
739
|
-
ssrRenderList(
|
|
740
|
-
_push(`<span class="tele-item" data-v-
|
|
776
|
+
_push(`<div class="twin-list" data-v-37ad3127><!--[-->`);
|
|
777
|
+
ssrRenderList(unref(twins).twins, (tw) => {
|
|
778
|
+
_push(`<button class="${ssrRenderClass([{ daq: isDaq(tw) }, "twin-card"])}" type="button" data-v-37ad3127><div class="twin-row" data-v-37ad3127><span class="twin-model-tag" data-v-37ad3127>${ssrInterpolate(modelTag(tw.modelRef || tw.name))}</span><div class="twin-idbar" data-v-37ad3127><span class="twin-name" data-v-37ad3127>${ssrInterpolate(tw.name)}</span><span class="twin-code" data-v-37ad3127>${ssrInterpolate(isDaq(tw) ? "DAQ" : devNo(tw.id))}</span></div><button class="${ssrRenderClass([{ armed: unref(armedId) === tw.id }, "twin-del"])}"${ssrIncludeBooleanAttr(unref(busyId) === tw.id) ? " disabled" : ""}${ssrRenderAttr("title", unref(armedId) === tw.id ? "再次点击确认删除该设备实例" : "删除该设备实例")} data-v-37ad3127>${ssrInterpolate(unref(armedId) === tw.id ? _ctx.$t("deviceTwinPanel.k44653007") : "✕")}</button><span class="${ssrRenderClass([`s-${tw.state}`, "twin-state"])}" data-v-37ad3127><i class="twin-state-dot" style="${ssrRenderStyle({ background: stateColor[tw.state] || "var(--hud-dim)" })}" data-v-37ad3127></i> ${ssrInterpolate(stateLabel[tw.state] || tw.state)}</span></div>`);
|
|
779
|
+
if (Object.keys(tw.telemetry).length) {
|
|
780
|
+
_push(`<div class="twin-tele" data-v-37ad3127><!--[-->`);
|
|
781
|
+
ssrRenderList(tw.telemetry, (v, k) => {
|
|
782
|
+
_push(`<span class="tele-item" data-v-37ad3127><em data-v-37ad3127>${ssrInterpolate(k)}</em><b data-v-37ad3127>${ssrInterpolate(fmt(v))}</b></span>`);
|
|
741
783
|
});
|
|
742
784
|
_push(`<!--]--></div>`);
|
|
743
785
|
} else _push(`<!---->`);
|
|
744
|
-
if (__props.daqLive?.[
|
|
745
|
-
_push(`<div class="twin-daq" data-v-
|
|
746
|
-
ssrRenderList(__props.daqLive[
|
|
747
|
-
_push(`<span class="${ssrRenderClass([{ alarm: d.alarm }, "daq-item"])}" data-v-
|
|
786
|
+
if (__props.daqLive?.[tw.id]?.length) {
|
|
787
|
+
_push(`<div class="twin-daq" data-v-37ad3127><!--[-->`);
|
|
788
|
+
ssrRenderList(__props.daqLive[tw.id], (d, i) => {
|
|
789
|
+
_push(`<span class="${ssrRenderClass([{ alarm: d.alarm }, "daq-item"])}" data-v-37ad3127><em data-v-37ad3127>${ssrInterpolate(d.ch)}</em><b data-v-37ad3127>${ssrInterpolate(d.value)}<i data-v-37ad3127>${ssrInterpolate(d.unit)}</i></b></span>`);
|
|
748
790
|
});
|
|
749
791
|
_push(`<!--]--></div>`);
|
|
750
792
|
} else _push(`<!---->`);
|
|
751
|
-
if (__props.dcwLive?.[
|
|
752
|
-
_push(`<div class="twin-dcw" data-v-
|
|
753
|
-
ssrRenderList(__props.dcwLive[
|
|
754
|
-
_push(`<div class="dcw-item" data-v-
|
|
755
|
-
if (r.src === "recipe") _push(`<i class="dcw-src" data-v-
|
|
793
|
+
if (__props.dcwLive?.[tw.id]?.length) {
|
|
794
|
+
_push(`<div class="twin-dcw" data-v-37ad3127><!--[-->`);
|
|
795
|
+
ssrRenderList(__props.dcwLive[tw.id], (r) => {
|
|
796
|
+
_push(`<div class="dcw-item" data-v-37ad3127><div class="dcw-head" data-v-37ad3127><em data-v-37ad3127>${ssrInterpolate(r.ch)}`);
|
|
797
|
+
if (r.src === "recipe") _push(`<i class="dcw-src" data-v-37ad3127>${ssrInterpolate(_ctx.$t("deviceTwinPanel.k48grv006"))}</i>`);
|
|
756
798
|
else _push(`<!---->`);
|
|
757
|
-
_push(`</em><b class="dcw-set" data-v-
|
|
799
|
+
_push(`</em><b class="dcw-set" data-v-37ad3127>${ssrInterpolate(r.value != null ? r.value.toFixed(r.decimals) : "--")}<i data-v-37ad3127>${ssrInterpolate(r.unit)}</i></b></div>`);
|
|
758
800
|
if (r.readValue != null || r.lastReadAt) {
|
|
759
|
-
_push(`<div class="dcw-act"${ssrRenderAttr("title", _ctx.$t("deviceTwinPanel.k9r7d4e030"))} data-v-
|
|
760
|
-
if (r.lastReadAt) _push(`<i class="dcw-act-at" data-v-
|
|
801
|
+
_push(`<div class="dcw-act"${ssrRenderAttr("title", _ctx.$t("deviceTwinPanel.k9r7d4e030"))} data-v-37ad3127><em data-v-37ad3127>ACT</em><b data-v-37ad3127>${ssrInterpolate(r.readValue != null ? r.readValue.toFixed(r.decimals) : "--")}<i data-v-37ad3127>${ssrInterpolate(r.unit)}</i></b>`);
|
|
802
|
+
if (r.lastReadAt) _push(`<i class="dcw-act-at" data-v-37ad3127>${ssrInterpolate(r.lastReadAt.slice(11, 19))}</i>`);
|
|
761
803
|
else _push(`<!---->`);
|
|
762
804
|
_push(`</div>`);
|
|
763
805
|
} else _push(`<!---->`);
|
|
764
|
-
_push(`<div class="dcw-win" data-v-
|
|
765
|
-
if (unref(dcwErrs)[r.id]) _push(`<small class="dcw-err" data-v-
|
|
806
|
+
_push(`<div class="dcw-win" data-v-37ad3127><span${ssrRenderAttr("title", r.src === "recipe" ? "当前运行配方工艺窗口" : "节点全局量程")} data-v-37ad3127>${ssrInterpolate(dcwWinText(r))}</span></div><div class="dcw-ctrl" data-v-37ad3127><input${ssrRenderAttr("value", unref(dcwDrafts)[r.id])} type="number" class="ctrl-input"${ssrRenderAttr("step", 10 ** -r.decimals)}${ssrRenderAttr("min", Number.isFinite(r.lo) ? r.lo : void 0)}${ssrRenderAttr("max", Number.isFinite(r.hi) ? r.hi : void 0)}${ssrRenderAttr("placeholder", `${Number.isFinite(r.lo) ? r.lo : ""} ~ ${Number.isFinite(r.hi) ? r.hi : ""}`)} data-v-37ad3127><button class="ctrl-btn dcw-send"${ssrIncludeBooleanAttr(unref(dcwDrafts)[r.id] == null || unref(dcwDrafts)[r.id] === "" || unref(dcwBusy) === r.id) ? " disabled" : ""}${ssrRenderAttr("title", _ctx.$t("deviceTwinPanel.k1j04u8001"))} data-v-37ad3127>${ssrInterpolate(unref(dcwBusy) === r.id ? "···" : "SET")}</button></div>`);
|
|
807
|
+
if (unref(dcwErrs)[r.id]) _push(`<small class="dcw-err" data-v-37ad3127>${ssrInterpolate(unref(dcwErrs)[r.id])}</small>`);
|
|
766
808
|
else _push(`<!---->`);
|
|
767
809
|
_push(`</div>`);
|
|
768
810
|
});
|
|
@@ -772,7 +814,7 @@ var DeviceTwinPanel_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/
|
|
|
772
814
|
});
|
|
773
815
|
_push(`<!--]--></div>`);
|
|
774
816
|
}
|
|
775
|
-
if (unref(ctrlMsg)) _push(`<span class="twin-err" data-v-
|
|
817
|
+
if (unref(ctrlMsg)) _push(`<span class="twin-err" data-v-37ad3127>${ssrInterpolate(unref(ctrlMsg))}</span>`);
|
|
776
818
|
else _push(`<!---->`);
|
|
777
819
|
_push(`</aside>`);
|
|
778
820
|
};
|
|
@@ -786,7 +828,7 @@ DeviceTwinPanel_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx)
|
|
|
786
828
|
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/DeviceTwinPanel.vue");
|
|
787
829
|
return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0;
|
|
788
830
|
};
|
|
789
|
-
var DeviceTwinPanel_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(DeviceTwinPanel_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
831
|
+
var DeviceTwinPanel_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(DeviceTwinPanel_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-37ad3127"]]), { __name: "WorkshopDeviceTwinPanel" });
|
|
790
832
|
//#endregion
|
|
791
833
|
//#region app/composables/workshop/useSceneLayouts.ts
|
|
792
834
|
/**
|
|
@@ -1227,6 +1269,18 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
1227
1269
|
const deviceTwins = useDeviceTwins();
|
|
1228
1270
|
const sceneLayouts = useSceneLayouts();
|
|
1229
1271
|
useHttp();
|
|
1272
|
+
const { isDesktop } = useResponsive();
|
|
1273
|
+
/** 当前打开的抽屉:'left' | 'right' | null */
|
|
1274
|
+
const sheetOpen = ref(null);
|
|
1275
|
+
/** 窄屏底部坞是否展开(默认收起,舞台优先) */
|
|
1276
|
+
const dockOpen = ref(false);
|
|
1277
|
+
/** 回到桌面档必须清空抽屉状态,否则遮罩会滞留在屏幕上 */
|
|
1278
|
+
watch(isDesktop, (d) => {
|
|
1279
|
+
if (d) {
|
|
1280
|
+
sheetOpen.value = null;
|
|
1281
|
+
dockOpen.value = false;
|
|
1282
|
+
}
|
|
1283
|
+
});
|
|
1230
1284
|
ref(null);
|
|
1231
1285
|
/** 当前渲染器(TownScene / TownScene3D 之一) */
|
|
1232
1286
|
const sceneRef = shallowRef(null);
|
|
@@ -1830,22 +1884,17 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
1830
1884
|
/** 数采 → 设备绑定(server 权威:node.deviceBindingId;REST bind 落库 + WS 收敛) */
|
|
1831
1885
|
const boundDeviceOf = (daqId) => daq.nodeById(daqId)?.deviceIds?.[0] ?? daq.nodeById(daqId)?.deviceBindingId ?? null;
|
|
1832
1886
|
const daqOfDevice = (deviceId) => deviceId ? daq.nodes.filter((n) => (n.deviceIds ?? (n.deviceBindingId ? [n.deviceBindingId] : [])).includes(deviceId)).map((n) => n.id) : [];
|
|
1833
|
-
/** 数采模板图标(设计稿 ICONS;SVG path 直嵌) */
|
|
1834
|
-
const DAQ_ICONS = {
|
|
1835
|
-
thermo: "<path d=\"M10 4a2 2 0 0 1 4 0v9a4 4 0 1 1-4 0V4Z\"/><circle cx=\"12\" cy=\"16.5\" r=\"1.6\"/>",
|
|
1836
|
-
pressure: "<circle cx=\"12\" cy=\"12\" r=\"8\"/><path d=\"m12 12 3.5-3.5\"/><circle cx=\"12\" cy=\"12\" r=\"1.2\"/>",
|
|
1837
|
-
tension: "<circle cx=\"12\" cy=\"10\" r=\"4\"/><path d=\"M4 18.5h16M8 18.5V14M16 18.5V14\"/><path d=\"M2.5 10H8M16 10h5.5\"/>",
|
|
1838
|
-
encoder: "<circle cx=\"12\" cy=\"12\" r=\"8\"/><circle cx=\"12\" cy=\"12\" r=\"2\"/><path d=\"M12 4v3M12 17v3M4 12h3M17 12h3\"/>",
|
|
1839
|
-
camera: "<rect x=\"3\" y=\"7\" width=\"13\" height=\"10\" rx=\"2\"/><path d=\"m16 11 5-3v8l-5-3\"/><circle cx=\"8\" cy=\"12\" r=\"2.5\"/>",
|
|
1840
|
-
gateway: "<rect x=\"8\" y=\"11\" width=\"8\" height=\"10\" rx=\"1.5\"/><circle cx=\"12\" cy=\"5.5\" r=\"1.5\"/><path d=\"M12 10V7M8.5 8.5a5 5 0 0 1 7 0M6 6a8.5 8.5 0 0 1 12 0\"/>"
|
|
1841
|
-
};
|
|
1842
|
-
const daqIcon = (icon) => DAQ_ICONS[icon] ?? DAQ_ICONS.gateway;
|
|
1843
1887
|
/** bind-pop:添加数采通道 —— 直接选择节点实例绑定(server 权威 deviceBindingId,双向同源)。
|
|
1844
1888
|
* 列出未绑定 + 绑在他设备的节点(按模板分组,显示当前归属);不再隐式创建/就近复用。 */
|
|
1845
1889
|
const bindPopOpen = ref(false);
|
|
1846
1890
|
const dcwBindPopOpen = ref(false);
|
|
1847
1891
|
/** 弹层高度钳制:top 恰好贴住所属 Inspector 卡片顶缘(不越出面板、不顶到页面顶部) */
|
|
1848
1892
|
const bindPopMaxH = ref(420);
|
|
1893
|
+
/**
|
|
1894
|
+
* 绑定候选行(数采/智控两个绑定弹层共用)。
|
|
1895
|
+
* tpl 只声明弹层真正读取、且两套模板目录都有的字段:数采侧是 DaqTemplate,
|
|
1896
|
+
* 智控侧是 dcw.templates 的同构投影 —— 后者本就没有 base/amp 等数采专有字段。
|
|
1897
|
+
*/
|
|
1849
1898
|
const daqBindChoices = computed(() => {
|
|
1850
1899
|
const devId = selected.value?.kind === "device" ? selected.value.id : "";
|
|
1851
1900
|
const map = {};
|
|
@@ -1896,12 +1945,12 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
1896
1945
|
const id = selected.value?.id;
|
|
1897
1946
|
if (!id) return [];
|
|
1898
1947
|
return daqOfDevice(id).map((daqId) => {
|
|
1899
|
-
const
|
|
1948
|
+
const twin = sceneTwinById(daqId);
|
|
1900
1949
|
const st = daqSim.value.get(daqId);
|
|
1901
|
-
const tpl = st?.tpl ?? daqTplById(
|
|
1950
|
+
const tpl = st?.tpl ?? daqTplById(twin?.modelRef ?? "");
|
|
1902
1951
|
return {
|
|
1903
1952
|
daqId,
|
|
1904
|
-
name:
|
|
1953
|
+
name: twin?.name ?? daqId,
|
|
1905
1954
|
ch: tpl?.ch ?? t("townView.k1ef3cls168"),
|
|
1906
1955
|
icon: tpl?.icon ?? "gateway",
|
|
1907
1956
|
value: st ? fmtDaq(st) : "--",
|
|
@@ -2322,83 +2371,94 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
2322
2371
|
const navScale = computed(() => Math.min(5, Math.max(.4, camPose.value.dolly)));
|
|
2323
2372
|
return (_ctx, _push, _parent, _attrs) => {
|
|
2324
2373
|
const _component_WorkshopAssetLibrary = AssetLibrary_default;
|
|
2374
|
+
const _component_WorkshopDaqTemplateIcon = DaqTemplateIcon_default;
|
|
2325
2375
|
const _component_WorkshopDeviceTwinPanel = DeviceTwinPanel_default;
|
|
2326
|
-
_push(`<div${ssrRenderAttrs(mergeProps({ class: "town-view" }, _attrs))} data-v-
|
|
2327
|
-
if (unref(saveState) && unref(saveState).state !== "idle") _push(`<span class="${ssrRenderClass([`s-${unref(saveState).state}`, "save-chip"])}" data-v-
|
|
2376
|
+
_push(`<div${ssrRenderAttrs(mergeProps({ class: "town-view" }, _attrs))} data-v-3e78e101><header class="${ssrRenderClass([{ "sheet-on": unref(sheetOpen) }, "topnav"])}" data-v-3e78e101><div class="brand" data-v-3e78e101><svg class="brand-glyph" viewBox="0 0 32 32" fill="none" aria-hidden="true" data-v-3e78e101><path d="M16 2.5 27.5 9v14L16 29.5 4.5 23V9L16 2.5Z" stroke="#35e0a0" stroke-width="1.6" data-v-3e78e101></path><path d="M16 8.2 22.5 12v8L16 23.8 9.5 20v-8L16 8.2Z" stroke="#41c8f4" stroke-width="1.3" opacity=".85" data-v-3e78e101></path><circle cx="16" cy="16" r="2.4" fill="#35e0a0" data-v-3e78e101></circle><circle cx="25.5" cy="7.5" r="1.6" fill="#41c8f4" data-v-3e78e101></circle></svg><div data-v-3e78e101><div class="brand-name" data-v-3e78e101> DIGITAL <em data-v-3e78e101>TWIN</em></div><div class="brand-sub" data-v-3e78e101> AGENTWORKSHOP · ${ssrInterpolate(_ctx.$t("townView.klyi8yg127"))}</div></div></div><nav class="nav-tabs"${ssrRenderAttr("aria-label", _ctx.$t("townView.k1c9jyta001"))} data-v-3e78e101><div class="seg" data-v-3e78e101><button class="${ssrRenderClass({ on: unref(mode) === "browse" })}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k48dwh027"))}</button><button class="${ssrRenderClass({ on: unref(mode) === "edit" })}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k45eb0028"))}</button></div><button class="nav-action"${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""}${ssrRenderAttr("title", unref(mode) === "edit" ? "把全部设备的位置/朝向/缩放写入数据库" : "运行模式只读")} data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1b3bk8t029"))}</button>`);
|
|
2377
|
+
if (unref(saveState) && unref(saveState).state !== "idle") _push(`<span class="${ssrRenderClass([`s-${unref(saveState).state}`, "save-chip"])}" data-v-3e78e101>${ssrInterpolate(unref(saveStateLabel))}</span>`);
|
|
2328
2378
|
else _push(`<!---->`);
|
|
2329
|
-
_push(`</nav><div class="nav-right" data-v-
|
|
2379
|
+
_push(`</nav><div class="nav-right" data-v-3e78e101><span class="${ssrRenderClass([{ "nav-bell-warn": unref(activeAlarmCount) > 0 }, "nav-chip mono"])}"${ssrRenderAttr("title", _ctx.$t("townView.k1fsi3ir002"))} data-v-3e78e101>◉ ${ssrInterpolate(unref(activeAlarmCount))}</span><span class="nav-chip mono nav-fps" data-v-3e78e101>${ssrInterpolate(unref(fps))} FPS</span><div class="avatar-chip nav-user"${ssrRenderAttr("title", _ctx.$t("townView.k1demf38003"))} data-v-3e78e101><div class="avatar-fallback" data-v-3e78e101>${ssrInterpolate((unref(userStore).user?.name ?? "OP").slice(0, 2).toUpperCase())}</div><span data-v-3e78e101>${ssrInterpolate(unref(userStore).user?.name || _ctx.$t("townView.k1pub99m139"))}</span></div><button type="button" class="${ssrRenderClass([{ on: unref(sheetOpen) === "left" }, "sheet-btn"])}" aria-controls="town-rail-left"${ssrRenderAttr("aria-expanded", unref(sheetOpen) === "left" ? "true" : "false")}${ssrRenderAttr("title", _ctx.$t("townView.k1k75lzy030"))} data-v-3e78e101><svg class="sheet-ico" viewBox="0 0 24 24" aria-hidden="true" data-v-3e78e101><path d="M4 6h16M4 12h11M4 18h16" data-v-3e78e101></path></svg><span class="sheet-btn-t" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1k75lzy030"))}</span></button><button type="button" class="${ssrRenderClass([{ on: unref(sheetOpen) === "right" }, "sheet-btn"])}" aria-controls="town-rail-right"${ssrRenderAttr("aria-expanded", unref(sheetOpen) === "right" ? "true" : "false")}${ssrRenderAttr("title", _ctx.$t("townView.k17dkhgd112"))} data-v-3e78e101><svg class="sheet-ico" viewBox="0 0 24 24" aria-hidden="true" data-v-3e78e101><path d="M20 6H4M20 12H9M20 18H4" data-v-3e78e101></path></svg><span class="sheet-btn-t" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k17dkhgd112"))}</span></button></div></header><div class="app" data-v-3e78e101><aside id="town-rail-left" class="${ssrRenderClass([{ "sheet-open": unref(sheetOpen) === "left" }, "rail rail-left"])}" data-v-3e78e101><div class="sheet-hd" data-v-3e78e101><span class="sheet-grip" aria-hidden="true" data-v-3e78e101></span><span class="sheet-hd-t" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1k75lzy030"))}</span><button type="button" class="sheet-x" aria-label="关闭" data-v-3e78e101> ✕ </button></div><section class="panel" data-v-3e78e101><div class="panel-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1k75lzy030"))}</h3><span class="panel-tag" data-v-3e78e101>${ssrInterpolate(unref(deviceModels).length)}</span></div>`);
|
|
2330
2380
|
_push(ssrRenderComponent(_component_WorkshopAssetLibrary, { class: "lib-embed" }, null, _parent));
|
|
2331
|
-
_push(`</section><section class="panel" data-v-
|
|
2381
|
+
_push(`</section><section class="panel" data-v-3e78e101><div class="panel-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k2gwyas031"))}</h3><span class="panel-tag" data-v-3e78e101>${ssrInterpolate(unref(daqTwins).length)}</span></div><div class="daq-ctrl" data-v-3e78e101><button class="${ssrRenderClass([{ on: unref(daq).controller.running }, "daq-ctl-btn"])}"${ssrRenderAttr("title", unref(daq).controller.running ? "暂停全部采集:停止所有启用节点的采样(节点级启停独立)" : "恢复全部采集:仅启用节点恢复采集(手动停用的保持停用)")} data-v-3e78e101>${ssrInterpolate(unref(daq).controller.running ? _ctx.$t("townView.k3w3j8f140") : _ctx.$t("townView.k3n93ed175"))}</button><label class="daq-ctl-cycle mono"${ssrRenderAttr("title", _ctx.$t("townView.khzlyf5004"))} data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3xg3w032"))} <input type="number" min="200" max="60000" step="100"${ssrRenderAttr("value", unref(daq).controller.defaultIntervalMs)} data-v-3e78e101>ms </label></div><div class="daq-list" data-v-3e78e101><!--[-->`);
|
|
2332
2382
|
ssrRenderList(unref(daqTemplates), (tpl) => {
|
|
2333
|
-
_push(`<div class="daq-group" data-v-
|
|
2383
|
+
_push(`<div class="daq-group" data-v-3e78e101><div class="${ssrRenderClass([{ open: !!unref(treeOpen)[`daq:${tpl.id}`] }, "daq-card tpl"])}" role="button" tabindex="0"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0001", {
|
|
2334
2384
|
p0: tpl.name,
|
|
2335
2385
|
p1: tpl.ch,
|
|
2336
2386
|
p2: tpl.min,
|
|
2337
2387
|
p3: tpl.max,
|
|
2338
2388
|
p4: tpl.unit
|
|
2339
|
-
}))} data-v-
|
|
2340
|
-
|
|
2389
|
+
}))} data-v-3e78e101><span class="daq-caret" data-v-3e78e101>▶</span><span class="daq-ico" data-v-3e78e101>`);
|
|
2390
|
+
_push(ssrRenderComponent(_component_WorkshopDaqTemplateIcon, {
|
|
2391
|
+
class: "daq-svg",
|
|
2392
|
+
icon: tpl.icon
|
|
2393
|
+
}, null, _parent));
|
|
2394
|
+
_push(`</span><div class="daq-meta" data-v-3e78e101><span class="daq-name" data-v-3e78e101>${ssrInterpolate(tpl.name)}</span><span class="daq-code" data-v-3e78e101>${ssrInterpolate(tpl.code)}</span></div>`);
|
|
2395
|
+
if (unref(mode) === "edit") _push(`<button class="daq-add"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0002", { p0: tpl.name }))} data-v-3e78e101> + </button>`);
|
|
2341
2396
|
else _push(`<!---->`);
|
|
2342
|
-
_push(`<span class="daq-count" data-v-
|
|
2397
|
+
_push(`<span class="daq-count" data-v-3e78e101>×${ssrInterpolate(unref(daqNodesByTpl).get(tpl.id)?.length ?? 0)}</span></div>`);
|
|
2343
2398
|
if (unref(treeOpen)[`daq:${tpl.id}`]) {
|
|
2344
|
-
_push(`<div class="daq-children" data-v-
|
|
2399
|
+
_push(`<div class="daq-children" data-v-3e78e101><!--[-->`);
|
|
2345
2400
|
ssrRenderList(unref(daqNodesByTpl).get(tpl.id) ?? [], (n) => {
|
|
2346
|
-
_push(`<div class="${ssrRenderClass([{ placed: typeof n.posX === "number" }, "daq-node"])}"${ssrRenderAttr("draggable", unref(mode) === "edit")}${ssrRenderAttr("title", typeof n.posX === "number" ? _ctx.$t("townView.k2tplxp0005") : _ctx.$t("townView.k2tplxp0006"))} data-v-
|
|
2347
|
-
if (typeof n.posX === "number") _push(`<span class="scene-cur" data-v-
|
|
2401
|
+
_push(`<div class="${ssrRenderClass([{ placed: typeof n.posX === "number" }, "daq-node"])}"${ssrRenderAttr("draggable", unref(mode) === "edit")}${ssrRenderAttr("title", typeof n.posX === "number" ? _ctx.$t("townView.k2tplxp0005") : _ctx.$t("townView.k2tplxp0006"))} data-v-3e78e101><span class="${ssrRenderClass([daqLeafState(n), "node-dot"])}" data-v-3e78e101></span><div class="daq-meta" data-v-3e78e101><span class="daq-name" data-v-3e78e101>${ssrInterpolate(n.name)}</span><span class="daq-node-sub" data-v-3e78e101><span class="node-val mono" data-v-3e78e101>${ssrInterpolate(n.value != null ? `${n.value.toFixed(tpl.decimals)} ${tpl.unit}` : "--")}</span><span class="node-dev" data-v-3e78e101>${ssrInterpolate(n.deviceBindingId ? unref(deviceTwins).byId(n.deviceBindingId)?.name ?? _ctx.$t("townView.k3own4q148") : _ctx.$t("townView.k3own4q148"))}</span></span></div>`);
|
|
2402
|
+
if (typeof n.posX === "number") _push(`<span class="scene-cur" data-v-3e78e101>✓</span>`);
|
|
2348
2403
|
else _push(`<!---->`);
|
|
2349
2404
|
_push(`</div>`);
|
|
2350
2405
|
});
|
|
2351
2406
|
_push(`<!--]-->`);
|
|
2352
|
-
if (!unref(daqNodesByTpl).get(tpl.id)?.length) _push(`<div class="daq-empty-hint" data-v-
|
|
2407
|
+
if (!unref(daqNodesByTpl).get(tpl.id)?.length) _push(`<div class="daq-empty-hint" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k2tplxp0003"))}</div>`);
|
|
2353
2408
|
else _push(`<!---->`);
|
|
2354
2409
|
_push(`</div>`);
|
|
2355
2410
|
} else _push(`<!---->`);
|
|
2356
2411
|
_push(`</div>`);
|
|
2357
2412
|
});
|
|
2358
|
-
_push(`<!--]--></div></section><section class="panel" data-v-
|
|
2413
|
+
_push(`<!--]--></div></section><section class="panel" data-v-3e78e101><div class="panel-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.km7ayhi033"))}</h3><span class="panel-tag" data-v-3e78e101>${ssrInterpolate(unref(dcw).nodes.length)}</span></div><div class="daq-list" data-v-3e78e101><!--[-->`);
|
|
2359
2414
|
ssrRenderList(unref(dcwTemplates), (tpl) => {
|
|
2360
|
-
_push(`<div class="daq-group" data-v-
|
|
2415
|
+
_push(`<div class="daq-group" data-v-3e78e101><div class="${ssrRenderClass([{ open: !!unref(treeOpen)[`dcw:${tpl.id}`] }, "daq-card tpl"])}" role="button" tabindex="0"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0001", {
|
|
2361
2416
|
p0: tpl.name,
|
|
2362
2417
|
p1: tpl.ch,
|
|
2363
2418
|
p2: tpl.min,
|
|
2364
2419
|
p3: tpl.max,
|
|
2365
2420
|
p4: tpl.unit
|
|
2366
|
-
}))} data-v-
|
|
2367
|
-
|
|
2421
|
+
}))} data-v-3e78e101><span class="daq-caret" data-v-3e78e101>▶</span><span class="daq-ico" data-v-3e78e101>`);
|
|
2422
|
+
_push(ssrRenderComponent(_component_WorkshopDaqTemplateIcon, {
|
|
2423
|
+
class: "daq-svg",
|
|
2424
|
+
icon: tpl.icon
|
|
2425
|
+
}, null, _parent));
|
|
2426
|
+
_push(`</span><div class="daq-meta" data-v-3e78e101><span class="daq-name" data-v-3e78e101>${ssrInterpolate(tpl.name)}</span><span class="daq-code" data-v-3e78e101>${ssrInterpolate(tpl.code)}</span></div>`);
|
|
2427
|
+
if (unref(mode) === "edit") _push(`<button class="daq-add"${ssrRenderAttr("title", _ctx.$t("townView.k2tplxp0002", { p0: tpl.name }))} data-v-3e78e101> + </button>`);
|
|
2368
2428
|
else _push(`<!---->`);
|
|
2369
|
-
_push(`<span class="daq-count" data-v-
|
|
2429
|
+
_push(`<span class="daq-count" data-v-3e78e101>×${ssrInterpolate(unref(dcwNodesByTpl).get(tpl.id)?.length ?? 0)}</span></div>`);
|
|
2370
2430
|
if (unref(treeOpen)[`dcw:${tpl.id}`]) {
|
|
2371
|
-
_push(`<div class="daq-children" data-v-
|
|
2431
|
+
_push(`<div class="daq-children" data-v-3e78e101><!--[-->`);
|
|
2372
2432
|
ssrRenderList(unref(dcwNodesByTpl).get(tpl.id) ?? [], (n) => {
|
|
2373
|
-
_push(`<div class="${ssrRenderClass([{ placed: typeof n.posX === "number" }, "daq-node"])}"${ssrRenderAttr("draggable", unref(mode) === "edit")}${ssrRenderAttr("title", typeof n.posX === "number" ? _ctx.$t("townView.k2tplxp0005") : _ctx.$t("townView.k2tplxp0006"))} data-v-
|
|
2374
|
-
if (typeof n.posX === "number") _push(`<span class="scene-cur" data-v-
|
|
2433
|
+
_push(`<div class="${ssrRenderClass([{ placed: typeof n.posX === "number" }, "daq-node"])}"${ssrRenderAttr("draggable", unref(mode) === "edit")}${ssrRenderAttr("title", typeof n.posX === "number" ? _ctx.$t("townView.k2tplxp0005") : _ctx.$t("townView.k2tplxp0006"))} data-v-3e78e101><span class="${ssrRenderClass([dcwLeafState(n), "node-dot"])}" data-v-3e78e101></span><div class="daq-meta" data-v-3e78e101><span class="daq-name" data-v-3e78e101>${ssrInterpolate(n.name)}</span><span class="daq-node-sub" data-v-3e78e101><span class="node-val mono" data-v-3e78e101>${ssrInterpolate(n.value != null ? `${n.value.toFixed(tpl.decimals)} ${tpl.unit}` : "--")}</span><span class="node-dev" data-v-3e78e101>${ssrInterpolate(n.deviceBindingId ? unref(deviceTwins).byId(n.deviceBindingId)?.name ?? _ctx.$t("townView.k3own4q148") : _ctx.$t("townView.k3own4q148"))}</span></span></div>`);
|
|
2434
|
+
if (typeof n.posX === "number") _push(`<span class="scene-cur" data-v-3e78e101>✓</span>`);
|
|
2375
2435
|
else _push(`<!---->`);
|
|
2376
2436
|
_push(`</div>`);
|
|
2377
2437
|
});
|
|
2378
2438
|
_push(`<!--]-->`);
|
|
2379
|
-
if (!unref(dcwNodesByTpl).get(tpl.id)?.length) _push(`<div class="daq-empty-hint" data-v-
|
|
2439
|
+
if (!unref(dcwNodesByTpl).get(tpl.id)?.length) _push(`<div class="daq-empty-hint" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k2tplxp0003"))}</div>`);
|
|
2380
2440
|
else _push(`<!---->`);
|
|
2381
2441
|
_push(`</div>`);
|
|
2382
2442
|
} else _push(`<!---->`);
|
|
2383
2443
|
_push(`</div>`);
|
|
2384
2444
|
});
|
|
2385
|
-
_push(`<!--]--></div></section><section class="panel" data-v-
|
|
2445
|
+
_push(`<!--]--></div></section><section class="panel" data-v-3e78e101><div class="panel-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1c9n911034"))}</h3><span class="panel-tag" data-v-3e78e101>${ssrInterpolate(unref(dockChannels).length)}</span></div><div class="scene-list" data-v-3e78e101><!--[-->`);
|
|
2386
2446
|
ssrRenderList(unref(dockChannels), (ch) => {
|
|
2387
|
-
_push(`<div class="${ssrRenderClass([{ active: ch.placed }, "scene-row"])}"${ssrRenderAttr("draggable", !ch.placed && unref(mode) === "edit")}${ssrRenderAttr("data-channel-id", ch.channelId)}${ssrRenderAttr("title", ch.placed ? "已在场景中,点击定位" : "拖拽到场景放置")} data-v-
|
|
2388
|
-
if (ch.placed) _push(`<span class="scene-cur" data-v-
|
|
2389
|
-
else _push(`<span class="scene-add" data-v-
|
|
2447
|
+
_push(`<div class="${ssrRenderClass([{ active: ch.placed }, "scene-row"])}"${ssrRenderAttr("draggable", !ch.placed && unref(mode) === "edit")}${ssrRenderAttr("data-channel-id", ch.channelId)}${ssrRenderAttr("title", ch.placed ? "已在场景中,点击定位" : "拖拽到场景放置")} data-v-3e78e101><span class="scene-ico" style="${ssrRenderStyle({ "--ch": ch.color })}" data-v-3e78e101></span><div class="scene-meta-wrap" data-v-3e78e101><span class="scene-name" data-v-3e78e101>${ssrInterpolate(ch.name)}</span><span class="scene-meta" data-v-3e78e101>${ssrInterpolate(ch.agentCount)} ${ssrInterpolate(_ctx.$t("townView.k1brss7t128"))} ${ssrInterpolate(ch.placed ? _ctx.$t("townView.k3n94g3141") : _ctx.$t("townView.k3os7i3176"))}</span></div>`);
|
|
2448
|
+
if (ch.placed) _push(`<span class="scene-cur" data-v-3e78e101>✓</span>`);
|
|
2449
|
+
else _push(`<span class="scene-add" data-v-3e78e101>+</span>`);
|
|
2390
2450
|
_push(`</div>`);
|
|
2391
2451
|
});
|
|
2392
2452
|
_push(`<!--]-->`);
|
|
2393
|
-
if (unref(dockHint)) _push(`<div class="scene-hint" data-v-
|
|
2453
|
+
if (unref(dockHint)) _push(`<div class="scene-hint" data-v-3e78e101>${ssrInterpolate(unref(dockHint))}</div>`);
|
|
2394
2454
|
else _push(`<!---->`);
|
|
2395
|
-
_push(`</div></section></aside><main class="stage-col" data-v-
|
|
2455
|
+
_push(`</div></section></aside><main class="stage-col" data-v-3e78e101><div class="stage" data-v-3e78e101><div id="town-host" class="town-host" data-v-3e78e101></div><div class="stage-vignette" data-v-3e78e101></div><div class="stage-top" data-v-3e78e101><div class="vp-title" data-v-3e78e101><h2 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1b0z4vr035"))}</h2><span class="vp-id" data-v-3e78e101>CH · ${ssrInterpolate(unref(activeChannelName) || _ctx.$t("townView.k3lkuz3142"))}</span></div><div class="vp-tools" data-v-3e78e101><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k18d6wnb005"))} data-v-3e78e101><svg class="vp-svg" viewBox="0 0 24 24" data-v-3e78e101><circle cx="12" cy="12" r="7" data-v-3e78e101></circle><path d="M12 2v4M12 18v4M2 12h4M18 12h4" data-v-3e78e101></path></svg></button><button class="${ssrRenderClass([{ on: unref(orbitOn) }, "vp-tool"])}"${ssrRenderAttr("title", _ctx.$t("townView.k1io51dn006"))} data-v-3e78e101><svg class="vp-svg" viewBox="0 0 24 24" data-v-3e78e101><circle cx="12" cy="12" r="3.2" data-v-3e78e101></circle><path d="M20.5 9a10 10 0 0 1 .3 4.5M3.5 15a10 10 0 0 1-.3-4.5" data-v-3e78e101></path></svg></button><button class="${ssrRenderClass([{ on: unref(showCallouts) }, "vp-tool"])}"${ssrRenderAttr("title", _ctx.$t("townView.k1sgjlq8007"))} data-v-3e78e101><svg class="vp-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="M4 8h12l4 4-4 4H4z" data-v-3e78e101></path><circle cx="8.5" cy="12" r="1.4" data-v-3e78e101></circle></svg></button><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k3wuf0008"))} data-v-3e78e101><svg class="vp-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="M4 9V4h5M20 9V4h-5M4 15v5h5M20 15v5h-5" data-v-3e78e101></path></svg></button></div></div><div class="angle-chip" data-v-3e78e101><select${ssrRenderAttr("value", unref(viewPreset))}${ssrRenderAttr("aria-label", _ctx.$t("townView.k1k4j5i7009"))} data-v-3e78e101><option value="std" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kv72860036"))}</option><option value="top" data-v-3e78e101> 俯视 · TOP </option><option value="front" data-v-3e78e101> 前视 · FRONT </option><option value="side" data-v-3e78e101> 侧视 · SIDE </option></select></div>`);
|
|
2396
2456
|
if (unref(showCallouts)) {
|
|
2397
|
-
_push(`<!--[--><svg class="leaders" data-v-
|
|
2457
|
+
_push(`<!--[--><svg class="leaders" data-v-3e78e101><!--[-->`);
|
|
2398
2458
|
ssrRenderList(unref(callouts), (c) => {
|
|
2399
|
-
_push(`<g class="${ssrRenderClass({ near: c.near })}" style="${ssrRenderStyle(c.leader ? null : { display: "none" })}" data-v-
|
|
2459
|
+
_push(`<g class="${ssrRenderClass({ near: c.near })}" style="${ssrRenderStyle(c.leader ? null : { display: "none" })}" data-v-3e78e101><path${ssrRenderAttr("d", `M ${c.x} ${c.y - 8} L ${c.x} ${c.y - 2}`)}${ssrRenderAttr("stroke", c.warn ? "rgba(246,196,83,.8)" : "rgba(65,200,244,.55)")} stroke-width="1.3" fill="none" data-v-3e78e101></path><circle${ssrRenderAttr("cx", c.x)}${ssrRenderAttr("cy", c.y)} r="2.6"${ssrRenderAttr("fill", c.warn ? "#f6c453" : "#41c8f4")} data-v-3e78e101></circle></g>`);
|
|
2400
2460
|
});
|
|
2401
|
-
_push(`<!--]--></svg><div class="callout-layer" data-v-
|
|
2461
|
+
_push(`<!--]--></svg><div class="callout-layer" data-v-3e78e101><!--[-->`);
|
|
2402
2462
|
ssrRenderList(unref(callouts), (c) => {
|
|
2403
2463
|
_push(`<div class="${ssrRenderClass([{
|
|
2404
2464
|
warn: c.warn,
|
|
@@ -2406,12 +2466,12 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
2406
2466
|
}, "callout"])}" style="${ssrRenderStyle({
|
|
2407
2467
|
left: c.x + "px",
|
|
2408
2468
|
top: c.y + "px"
|
|
2409
|
-
})}"${ssrRenderAttr("title", _ctx.$t("townView.k1ejxiwp010"))} data-v-
|
|
2469
|
+
})}"${ssrRenderAttr("title", _ctx.$t("townView.k1ejxiwp010"))} data-v-3e78e101><div class="co-label" data-v-3e78e101><span class="co-dot" data-v-3e78e101></span>${ssrInterpolate(c.label)}</div><div class="co-val" data-v-3e78e101>${ssrInterpolate(c.value)}<small data-v-3e78e101>${ssrInterpolate(c.unit)}</small></div><div class="co-range" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1faqmjb073"))} ${ssrInterpolate(c.lo.toFixed(Math.min(2, (String(c.lo).split(".")[1] ?? "").length + 1)))} – ${ssrInterpolate(c.hi.toFixed(Math.min(2, (String(c.hi).split(".")[1] ?? "").length + 1)))}</div></div>`);
|
|
2410
2470
|
});
|
|
2411
2471
|
_push(`<!--]--></div><!--]-->`);
|
|
2412
2472
|
} else _push(`<!---->`);
|
|
2413
|
-
_push(`<div class="kpi-strip" data-v-
|
|
2414
|
-
if (unref(sceneEmpty)) _push(`<div class="empty-hint" data-v-
|
|
2473
|
+
_push(`<div class="kpi-strip" data-v-3e78e101><div class="kpi" data-v-3e78e101><span class="kpi-ico c1" data-v-3e78e101><svg class="kpi-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="M4 8.5 12 4l8 4.5v7L12 20l-8-4.5v-7Z" data-v-3e78e101></path><path d="M4 8.5l8 4.5 8-4.5M12 13v7" data-v-3e78e101></path></svg></span><div class="kpi-meta" data-v-3e78e101><div class="kpi-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1k6xemt037"))}</div><div class="kpi-val" data-v-3e78e101>${ssrInterpolate(unref(deviceCount))}<small data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k49lh038"))}</small></div></div></div><div class="kpi" data-v-3e78e101><span class="kpi-ico c2" data-v-3e78e101><svg class="kpi-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="m5 12.5 4.5 4.5L19 7.5" data-v-3e78e101></path></svg></span><div class="kpi-meta" data-v-3e78e101><div class="kpi-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1l1a9t2039"))}</div><div class="kpi-val" data-v-3e78e101>${ssrInterpolate(unref(runningCount))}<small data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k49lh038"))}</small></div></div></div><div class="kpi" data-v-3e78e101><span class="kpi-ico c3" data-v-3e78e101><svg class="kpi-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="M12 3 22 20H2L12 3Z" data-v-3e78e101></path><path d="M12 10v4M12 17v.2" data-v-3e78e101></path></svg></span><div class="kpi-meta" data-v-3e78e101><div class="kpi-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1fsi3ir002"))}</div><div class="kpi-val" data-v-3e78e101>${ssrInterpolate(unref(activeAlarmCount))}<small data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k4dfq040"))}</small></div></div></div><div class="kpi" data-v-3e78e101><span class="kpi-ico c4" data-v-3e78e101><svg class="kpi-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="M9.5 14.5 14.5 9.5" data-v-3e78e101></path><path d="M11 6.5 12.8 4.7a4 4 0 0 1 5.6 5.6L16.5 12" data-v-3e78e101></path><path d="m13 17.5-1.8 1.8a4 4 0 0 1-5.6-5.6L7.5 12" data-v-3e78e101></path></svg></span><div class="kpi-meta" data-v-3e78e101><div class="kpi-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1emsai1041"))}</div><div class="kpi-val" data-v-3e78e101>${ssrInterpolate(unref(daqTwins).length)}<small data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k4l1w042"))}</small></div></div></div><div class="kpi" data-v-3e78e101><span class="kpi-ico c5" data-v-3e78e101><svg class="kpi-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="M5 19a9 9 0 1 1 14 0" data-v-3e78e101></path><path d="M12 13l3.5-3.5" data-v-3e78e101></path><circle cx="12" cy="13" r="1.4" data-v-3e78e101></circle></svg></span><div class="kpi-meta" data-v-3e78e101><div class="kpi-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kbrxdq1043"))}</div><div class="kpi-val" data-v-3e78e101>${ssrInterpolate(unref(healthPct))}<small data-v-3e78e101>%</small></div></div></div></div>`);
|
|
2474
|
+
if (unref(sceneEmpty)) _push(`<div class="empty-hint" data-v-3e78e101><b data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3rwxjc044"))}</b><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1sa1eaj045"))}</span></div>`);
|
|
2415
2475
|
else _push(`<!---->`);
|
|
2416
2476
|
if (unref(selectedChannel) && unref(boundaryDraft)) {
|
|
2417
2477
|
_push(`<div class="boundary-panel drag-panel" style="${ssrRenderStyle(unref(panelPos).boundary ? {
|
|
@@ -2419,111 +2479,121 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
2419
2479
|
top: unref(panelPos).boundary.y + "px",
|
|
2420
2480
|
bottom: "auto",
|
|
2421
2481
|
transform: "none"
|
|
2422
|
-
} : void 0)}" data-v-
|
|
2423
|
-
if (unref(channelPanelTab) === "boundary") _push(`<!--[--><div class="bp-row" data-v-
|
|
2482
|
+
} : void 0)}" data-v-3e78e101><div class="bp-title drag-grip"${ssrRenderAttr("title", _ctx.$t("townView.k1d0rl5z011"))} data-v-3e78e101><span class="bp-name" data-v-3e78e101>${ssrInterpolate(unref(entities).channels[unref(selectedChannel)]?.name ?? unref(selectedChannel).slice(0, 8))}</span><span class="bp-sub" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1mehlxs046"))}</span><div class="bp-tabs" data-v-3e78e101><button class="${ssrRenderClass([{ on: unref(channelPanelTab) === "boundary" }, "bp-tab"])}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k489ka047"))}</button><button class="${ssrRenderClass([{ on: unref(channelPanelTab) === "members" }, "bp-tab"])}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3ztf1129"))} ${ssrInterpolate(unref(channelMembers).length)}</button></div></div>`);
|
|
2483
|
+
if (unref(channelPanelTab) === "boundary") _push(`<!--[--><div class="bp-row" data-v-3e78e101><span class="bp-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3zhy5048"))}</span><div class="bp-seg" data-v-3e78e101><button class="${ssrRenderClass([{ on: unref(boundaryDraft).shape === "ellipse" }, "seg-btn"])}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k414bc049"))}</button><button class="${ssrRenderClass([{ on: unref(boundaryDraft).shape === "rect" }, "seg-btn"])}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k43u0g050"))}</button></div></div><div class="bp-row" data-v-3e78e101><span class="bp-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1fbz4s1051"))}</span><input${ssrRenderAttr("value", unref(boundaryDraft).radiusX)} class="bp-range" type="range" min="80" max="4000" step="8" style="${ssrRenderStyle({ "--fill": sliderPct(unref(boundaryDraft).radiusX, 80, 4e3) })}" data-v-3e78e101><span class="bp-val" data-v-3e78e101>${ssrInterpolate(Math.round(unref(boundaryDraft).radiusX))}</span></div><div class="bp-row" data-v-3e78e101><span class="bp-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1ighwgs052"))}</span><input${ssrRenderAttr("value", unref(boundaryDraft).radiusZ)} class="bp-range" type="range" min="60" max="4000" step="8" style="${ssrRenderStyle({ "--fill": sliderPct(unref(boundaryDraft).radiusZ, 60, 4e3) })}" data-v-3e78e101><span class="bp-val" data-v-3e78e101>${ssrInterpolate(Math.round(unref(boundaryDraft).radiusZ))}</span></div><div class="bp-row" data-v-3e78e101><span class="bp-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k40qab053"))}</span><input${ssrRenderAttr("value", unref(boundaryDraft).rotationY)} class="bp-range" type="range" min="0" max="360" step="5" style="${ssrRenderStyle({ "--fill": sliderPct(unref(boundaryDraft).rotationY ?? 0, 0, 360) })}" data-v-3e78e101><span class="bp-val" data-v-3e78e101>${ssrInterpolate(Math.round(unref(boundaryDraft).rotationY ?? 0))}°</span></div><!--]-->`);
|
|
2424
2484
|
else {
|
|
2425
|
-
_push(`<!--[--><div class="bp-hint" data-v-
|
|
2485
|
+
_push(`<!--[--><div class="bp-hint" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kimxls2054"))}</div><div class="member-list" data-v-3e78e101><!--[-->`);
|
|
2426
2486
|
ssrRenderList(unref(channelMembers), (m) => {
|
|
2427
|
-
_push(`<div class="member-row" data-v-
|
|
2487
|
+
_push(`<div class="member-row" data-v-3e78e101><span class="member-ava" style="${ssrRenderStyle({ color: hashColor(unref(selectedChannel)) })}" data-v-3e78e101>${ssrInterpolate(m.name.charAt(0).toUpperCase())}</span><div class="member-info" data-v-3e78e101><span class="member-name" data-v-3e78e101>${ssrInterpolate(m.name)}</span><span class="${ssrRenderClass([m.role === "lead" ? "r-lead" : "r-worker", "member-role"])}" data-v-3e78e101>${ssrInterpolate(m.role === "lead" ? "Leader" : "Worker")}</span></div><select class="member-select"${ssrRenderAttr("value", (m.modelRef ?? "") || "hero-3d")} data-v-3e78e101><!--[-->`);
|
|
2428
2488
|
ssrRenderList(unref(agentModels), (model) => {
|
|
2429
|
-
_push(`<option${ssrRenderAttr("value", model.id)} data-v-
|
|
2489
|
+
_push(`<option${ssrRenderAttr("value", model.id)} data-v-3e78e101>${ssrInterpolate(model.name)}</option>`);
|
|
2430
2490
|
});
|
|
2431
2491
|
_push(`<!--]--></select></div>`);
|
|
2432
2492
|
});
|
|
2433
2493
|
_push(`<!--]-->`);
|
|
2434
|
-
if (unref(channelMembers).length === 0) _push(`<div class="bp-hint" data-v-
|
|
2494
|
+
if (unref(channelMembers).length === 0) _push(`<div class="bp-hint" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k419rbs055"))}</div>`);
|
|
2435
2495
|
else _push(`<!---->`);
|
|
2436
2496
|
_push(`</div><!--]-->`);
|
|
2437
2497
|
}
|
|
2438
|
-
_push(`<div class="bp-actions" data-v-
|
|
2439
|
-
if (unref(channelPanelTab) === "boundary") _push(`<button class="bp-btn save" data-v-
|
|
2498
|
+
_push(`<div class="bp-actions" data-v-3e78e101>`);
|
|
2499
|
+
if (unref(channelPanelTab) === "boundary") _push(`<button class="bp-btn save" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1b3kp8f056"))}</button>`);
|
|
2440
2500
|
else _push(`<!---->`);
|
|
2441
|
-
_push(`<button class="bp-btn danger" data-v-
|
|
2501
|
+
_push(`<button class="bp-btn danger" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1hs45qg057"))}</button><button class="bp-btn" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3x62t058"))}</button></div></div>`);
|
|
2442
2502
|
} else _push(`<!---->`);
|
|
2443
|
-
if (unref(lastDropText)) _push(`<div class="drop-chip" data-v-
|
|
2503
|
+
if (unref(lastDropText)) _push(`<div class="drop-chip" data-v-3e78e101>${ssrInterpolate(unref(lastDropText))}</div>`);
|
|
2444
2504
|
else _push(`<!---->`);
|
|
2445
|
-
if (unref(errorText)) _push(`<div class="error-chip" data-v-
|
|
2505
|
+
if (unref(errorText)) _push(`<div class="error-chip" data-v-3e78e101>${ssrInterpolate(unref(errorText))}</div>`);
|
|
2446
2506
|
else _push(`<!---->`);
|
|
2447
|
-
if (!unref(ready)) _push(`<div data-hud="town-loading" class="loading-mask" data-v-
|
|
2507
|
+
if (!unref(ready)) _push(`<div data-hud="town-loading" class="loading-mask" data-v-3e78e101><div class="loading-spinner" data-v-3e78e101></div><span class="loading-text" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kvjdqfg059"))}</span></div>`);
|
|
2448
2508
|
else _push(`<!---->`);
|
|
2449
|
-
_push(`</div><div class="dock" data-v-
|
|
2509
|
+
_push(`</div><div class="${ssrRenderClass([{ "dock-open": unref(dockOpen) }, "dock"])}" data-v-3e78e101><button type="button" class="dock-toggle" aria-controls="town-dock-controls"${ssrRenderAttr("aria-expanded", unref(dockOpen) ? "true" : "false")} data-v-3e78e101><span class="dock-toggle-t" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1c9iq23060"))}</span><span class="dock-toggle-hint mono" data-v-3e78e101>${ssrInterpolate(unref(mode) === "edit" ? _ctx.$t("townView.k1iipfcs143") : _ctx.$t("townView.k1l147w1177"))}</span><span class="dock-caret" aria-hidden="true" data-v-3e78e101>▾</span></button><section id="town-dock-controls" class="dock-card" data-v-3e78e101><div class="dock-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1c9iq23060"))}</h3><span class="dock-mode" data-v-3e78e101>${ssrInterpolate(unref(mode) === "edit" ? _ctx.$t("townView.k1iipfcs143") : _ctx.$t("townView.k1l147w1177"))}</span></div><p class="ctl-sec" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.secRender"))}</p><div class="ctl-row" data-v-3e78e101><span class="ctl-name"${ssrRenderAttr("title", _ctx.$t("townView.qualityTip"))} data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.qualityLabel"))}</span><div class="fps-seg" data-v-3e78e101><!--[-->`);
|
|
2450
2510
|
ssrRenderList(QUALITY_OPTIONS, (o) => {
|
|
2451
|
-
_push(`<button class="${ssrRenderClass({ on: unref(qualityMode) === o.v })}" data-v-
|
|
2511
|
+
_push(`<button class="${ssrRenderClass({ on: unref(qualityMode) === o.v })}" data-v-3e78e101>${ssrInterpolate(_ctx.$t(o.label))}</button>`);
|
|
2452
2512
|
});
|
|
2453
|
-
_push(`<!--]--></div><span class="ctl-val" data-v-
|
|
2513
|
+
_push(`<!--]--></div><span class="ctl-val" data-v-3e78e101></span></div><div class="ctl-row" data-v-3e78e101><span class="ctl-name"${ssrRenderAttr("title", _ctx.$t("townView.fpsCapTip"))} data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.fpsCapLabel"))}</span><div class="fps-seg" data-v-3e78e101><!--[-->`);
|
|
2454
2514
|
ssrRenderList(FPS_OPTIONS, (o) => {
|
|
2455
|
-
_push(`<button class="${ssrRenderClass({ on: unref(fpsCap) === o.v })}" data-v-
|
|
2515
|
+
_push(`<button class="${ssrRenderClass({ on: unref(fpsCap) === o.v })}" data-v-3e78e101>${ssrInterpolate(o.label)}</button>`);
|
|
2456
2516
|
});
|
|
2457
|
-
_push(`<!--]--></div><span class="ctl-val" data-v-
|
|
2458
|
-
ssrRenderList(unref(trendChips), (
|
|
2459
|
-
_push(`<button class="${ssrRenderClass([{ off: !trendOn(
|
|
2517
|
+
_push(`<!--]--></div><span class="ctl-val" data-v-3e78e101></span></div><p class="ctl-sec" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.secEnv"))}</p><div class="ctl-row" data-v-3e78e101><span class="ctl-name" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1gizopz061"))}</span><input class="ctl-range" type="range" min="30" max="220"${ssrRenderAttr("value", Math.round(unref(exposure) * 100))} style="${ssrRenderStyle({ "--fill": sliderPct(Math.round(unref(exposure) * 100), 30, 220) })}" data-v-3e78e101><span class="ctl-val" data-v-3e78e101>${ssrInterpolate(Math.round(unref(exposure) * 100))}%</span></div><div class="ctl-row" data-v-3e78e101><span class="ctl-name" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1bcpqto062"))}</span><input class="ctl-range" type="range" min="10" max="100"${ssrRenderAttr("value", Math.round(unref(tintOpacity) * 100))} style="${ssrRenderStyle({ "--fill": sliderPct(Math.round(unref(tintOpacity) * 100), 10, 100) })}" data-v-3e78e101><span class="ctl-val" data-v-3e78e101>${ssrInterpolate(Math.round(unref(tintOpacity) * 100))}%</span></div><div class="ctl-row" data-v-3e78e101><span class="ctl-name" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1bztha1063"))}</span><input class="ctl-range" type="range" min="60" max="120"${ssrRenderAttr("value", unref(threshPct))} style="${ssrRenderStyle({ "--fill": sliderPct(unref(threshPct), 60, 120) })}" data-v-3e78e101><span class="ctl-val" data-v-3e78e101>${ssrInterpolate(unref(threshPct))}%</span></div><div class="ctl-row" data-v-3e78e101><span class="ctl-name"${ssrRenderAttr("title", _ctx.$t("townView.kz71l1f012"))} data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.ka4i1s9064"))}</span><input class="ctl-range" type="range" min="0" max="3000" step="50"${ssrRenderAttr("value", unref(calloutNearDist))} style="${ssrRenderStyle({ "--fill": sliderPct(unref(calloutNearDist), 0, 3e3) })}" data-v-3e78e101><span class="ctl-val" data-v-3e78e101>${ssrInterpolate(unref(calloutNearDist) === 0 ? _ctx.$t("townView.k493s144") : `${unref(calloutNearDist)}`)}</span></div><p class="ctl-sec" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.secOps"))}</p><div class="ctl-row" data-v-3e78e101><span class="ctl-name" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1idc6pa065"))}</span><button class="${ssrRenderClass([{ on: unref(snap) }, "snap-toggle"])}" data-v-3e78e101>${ssrInterpolate(unref(snap) ? _ctx.$t("townView.k4bs5145") : _ctx.$t("townView.k493s144"))}</button><span class="ctl-val" data-v-3e78e101></span></div><div class="ctl-btns" data-v-3e78e101><button class="btn btn-primary" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1lap9bs024"))}</button><button class="btn btn-ghost"${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""}${ssrRenderAttr("title", unref(mode) === "edit" ? _ctx.$t("townView.ksavetip181") : _ctx.$t("townView.krotip182"))} data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1b3bk8t029"))}</button><button class="${ssrRenderClass([{ armed: unref(estop) }, "btn btn-danger"])}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1i046wf066"))}</button></div></section><section class="dock-card" data-v-3e78e101><div class="dock-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1kfoef9067"))}</h3><span class="dock-count mono" data-v-3e78e101>${ssrInterpolate(unref(daqTwins).length)}</span><div class="${ssrRenderClass([{ expanded: unref(trendExpanded) }, "trend-legend"])}" data-v-3e78e101><!--[-->`);
|
|
2518
|
+
ssrRenderList(unref(trendChips), (chip) => {
|
|
2519
|
+
_push(`<button class="${ssrRenderClass([{ off: !trendOn(chip.id) }, "lg-chip"])}" data-v-3e78e101><span class="lg-dot" style="${ssrRenderStyle({ background: trendColor(chip.id) })}" data-v-3e78e101></span>${ssrInterpolate(chip.name)}</button>`);
|
|
2460
2520
|
});
|
|
2461
2521
|
_push(`<!--]-->`);
|
|
2462
|
-
if (unref(trendOverflow) > 0) _push(`<button class="lg-chip lg-more mono"${ssrRenderAttr("title", unref(trendExpanded) ? _ctx.$t("townView.trendCollapse") : _ctx.$t("townView.trendExpandAll", { p0: unref(daqTwins).length }))} data-v-
|
|
2522
|
+
if (unref(trendOverflow) > 0) _push(`<button class="lg-chip lg-more mono"${ssrRenderAttr("title", unref(trendExpanded) ? _ctx.$t("townView.trendCollapse") : _ctx.$t("townView.trendExpandAll", { p0: unref(daqTwins).length }))} data-v-3e78e101>${ssrInterpolate(unref(trendExpanded) ? _ctx.$t("townView.trendCollapse") : `+${unref(trendOverflow)}`)}</button>`);
|
|
2463
2523
|
else _push(`<!---->`);
|
|
2464
|
-
_push(`</div></div><div class="trend-wrap" data-v-
|
|
2465
|
-
if (!unref(daqTwins).length) _push(`<span class="trend-empty" data-v-
|
|
2524
|
+
_push(`</div></div><div class="trend-wrap" data-v-3e78e101><canvas class="trend-cv" data-v-3e78e101></canvas>`);
|
|
2525
|
+
if (!unref(daqTwins).length) _push(`<span class="trend-empty" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1uht2uv068"))}</span>`);
|
|
2466
2526
|
else _push(`<!---->`);
|
|
2467
|
-
_push(`</div></section></div></main><aside class="rail rail-right" data-v-
|
|
2527
|
+
_push(`</div></section></div></main><aside id="town-rail-right" class="${ssrRenderClass([{ "sheet-open": unref(sheetOpen) === "right" }, "rail rail-right"])}" data-v-3e78e101><div class="sheet-hd" data-v-3e78e101><span class="sheet-grip" aria-hidden="true" data-v-3e78e101></span><span class="sheet-hd-t" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k17dkhgd112"))}</span><button type="button" class="sheet-x" aria-label="关闭" data-v-3e78e101> ✕ </button></div>`);
|
|
2468
2528
|
if (unref(selected)) {
|
|
2469
|
-
_push(`<section class="panel inspector" data-v-
|
|
2470
|
-
if (unref(selected).kind === "device" && unref(selectedIsDaq)) _push(`<span class="ins-chip accent" data-v-
|
|
2471
|
-
else if (unref(selected).kind === "device" && unref(selectedIsDcw)) _push(`<span class="ins-chip accent" data-v-
|
|
2529
|
+
_push(`<section class="panel inspector" data-v-3e78e101><div class="panel-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(unref(selected).kind === "device" ? unref(selectedIsDcw) ? _ctx.$t("townView.k1ekqxlt146") : unref(selectedIsDaq) ? _ctx.$t("townView.k1empnnb178") : _ctx.$t("townView.k1k6wg8j185") : unref(selectedAgentRoleLabel))}</h3><button class="mini-btn"${ssrRenderAttr("title", _ctx.$t("townView.k1bsckft013"))} data-v-3e78e101> ✕ </button></div><div class="ins-chip-row" data-v-3e78e101><span class="ins-chip mono" data-v-3e78e101>${ssrInterpolate(unref(selected).id.slice(0, 8))}</span>`);
|
|
2530
|
+
if (unref(selected).kind === "device" && unref(selectedIsDaq)) _push(`<span class="ins-chip accent" data-v-3e78e101>DAQ</span>`);
|
|
2531
|
+
else if (unref(selected).kind === "device" && unref(selectedIsDcw)) _push(`<span class="ins-chip accent" data-v-3e78e101>DCW</span>`);
|
|
2472
2532
|
else _push(`<!---->`);
|
|
2473
2533
|
_push(`</div>`);
|
|
2474
2534
|
if (unref(selected).kind === "device") {
|
|
2475
2535
|
_push(`<!--[-->`);
|
|
2476
2536
|
if (unref(selectedIsDcw)) {
|
|
2477
|
-
_push(`<div class="daq-info" data-v-
|
|
2478
|
-
if (unref(dcwWriteErrs)[unref(selected).id]) _push(`<p class="dcw-err" data-v-
|
|
2537
|
+
_push(`<div class="daq-info" data-v-3e78e101><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1deqh0d069"))}</span><b class="cy" data-v-3e78e101>${ssrInterpolate(unref(selectedDcwNode)?.value != null ? unref(selectedDcwNode).value.toFixed(unref(selectedDcwNode).decimals) : "--")} ${ssrInterpolate(unref(selectedDcwNode)?.unit)}</b></div><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(unref(selectedDcwWindow)?.src === "recipe" ? _ctx.$t("townView.kq2jssk147") : _ctx.$t("townView.k1iwj796179"))}</span><b class="${ssrRenderClass({ amber: unref(selectedDcwWindow)?.src === "recipe" })}" data-v-3e78e101>${ssrInterpolate(dcwWinLabel(unref(selectedDcwNode)))}</b></div><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1i8rtqt070"))}</span><b data-v-3e78e101>${ssrInterpolate(unref(selectedDcwDeviceName) || _ctx.$t("townView.k3own4q148"))}</b></div><div class="daq-bind-bar" data-v-3e78e101><input${ssrRenderAttr("value", unref(dcwWriteDrafts)[unref(selected).id])} type="number" class="bind-select"${ssrRenderAttr("step", 10 ** -(unref(selectedDcwNode)?.decimals ?? 2))}${ssrRenderAttr("placeholder", dcwWinInputPh(unref(selectedDcwNode)))} data-v-3e78e101><button class="bind-add-btn"${ssrIncludeBooleanAttr(unref(dcwWriteDrafts)[unref(selected).id] == null || unref(dcwWriteDrafts)[unref(selected).id] === "") ? " disabled" : ""} data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kwrbtn180"))}</button></div>`);
|
|
2538
|
+
if (unref(dcwWriteErrs)[unref(selected).id]) _push(`<p class="dcw-err" data-v-3e78e101>${ssrInterpolate(unref(dcwWriteErrs)[unref(selected).id])}</p>`);
|
|
2479
2539
|
else _push(`<!---->`);
|
|
2480
2540
|
if (unref(mode) === "edit") {
|
|
2481
|
-
_push(`<div class="daq-bind-bar" data-v-
|
|
2541
|
+
_push(`<div class="daq-bind-bar" data-v-3e78e101><select class="bind-select" data-v-3e78e101><option value="" data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(dcwBindPick)) ? ssrLooseContain(unref(dcwBindPick), "") : ssrLooseEqual(unref(dcwBindPick), "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.kjo6ekr071"))}</option><!--[-->`);
|
|
2482
2542
|
ssrRenderList(unref(deviceTwins).twins.filter((x) => !isLegacyDaqTwin(x) && x.id !== (unref(selected)?.id ?? "")), (dv) => {
|
|
2483
|
-
_push(`<option${ssrRenderAttr("value", dv.id)} data-v-
|
|
2543
|
+
_push(`<option${ssrRenderAttr("value", dv.id)} data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(dcwBindPick)) ? ssrLooseContain(unref(dcwBindPick), dv.id) : ssrLooseEqual(unref(dcwBindPick), dv.id)) ? " selected" : ""}>${ssrInterpolate(dv.name)}</option>`);
|
|
2484
2544
|
});
|
|
2485
|
-
_push(`<!--]--></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(selectedDcwDeviceName) && !unref(dcwBindPick)) ? " disabled" : ""} data-v-
|
|
2545
|
+
_push(`<!--]--></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(selectedDcwDeviceName) && !unref(dcwBindPick)) ? " disabled" : ""} data-v-3e78e101>${ssrInterpolate(unref(selectedDcwDeviceName) ? _ctx.$t("townView.k479eh149") : _ctx.$t("townView.k452a8102"))}</button></div>`);
|
|
2486
2546
|
} else _push(`<!---->`);
|
|
2487
2547
|
_push(`</div>`);
|
|
2488
2548
|
} else if (unref(selectedIsDaq)) {
|
|
2489
|
-
_push(`<div class="daq-info" data-v-
|
|
2549
|
+
_push(`<div class="daq-info" data-v-3e78e101><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3mv305072"))}</span><b class="cy" data-v-3e78e101>${ssrInterpolate(unref(selectedDaqSim) ? fmtDaq(unref(selectedDaqSim)) : "--")} ${ssrInterpolate(unref(selectedDaqSim)?.tpl.unit)}</b></div><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1faqmjb073"))}</span><b data-v-3e78e101>${ssrInterpolate(unref(selectedDaqSim)?.tpl.min)} ~ ${ssrInterpolate(unref(selectedDaqSim)?.tpl.max)}</b></div><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1i8rtqt070"))}</span><b data-v-3e78e101>${ssrInterpolate(unref(daqBoundDeviceName) || _ctx.$t("townView.k3own4q148"))}</b></div>`);
|
|
2490
2550
|
if (unref(mode) === "edit") {
|
|
2491
|
-
_push(`<div class="daq-bind-bar" data-v-
|
|
2551
|
+
_push(`<div class="daq-bind-bar" data-v-3e78e101><select class="bind-select" data-v-3e78e101><option value="" data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(bindPick)) ? ssrLooseContain(unref(bindPick), "") : ssrLooseEqual(unref(bindPick), "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.kjo6ekr071"))}</option><!--[-->`);
|
|
2492
2552
|
ssrRenderList(unref(deviceTwins).twins.filter((x) => !isLegacyDaqTwin(x) && x.id !== (unref(selected)?.id ?? "")), (dv) => {
|
|
2493
|
-
_push(`<option${ssrRenderAttr("value", dv.id)} data-v-
|
|
2553
|
+
_push(`<option${ssrRenderAttr("value", dv.id)} data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(bindPick)) ? ssrLooseContain(unref(bindPick), dv.id) : ssrLooseEqual(unref(bindPick), dv.id)) ? " selected" : ""}>${ssrInterpolate(dv.name)}</option>`);
|
|
2494
2554
|
});
|
|
2495
|
-
_push(`<!--]--></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(daqBoundDeviceName) && !unref(bindPick)) ? " disabled" : ""} data-v-
|
|
2555
|
+
_push(`<!--]--></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(daqBoundDeviceName) && !unref(bindPick)) ? " disabled" : ""} data-v-3e78e101>${ssrInterpolate(unref(daqBoundDeviceName) ? _ctx.$t("townView.k479eh149") : _ctx.$t("townView.k452a8102"))}</button></div>`);
|
|
2496
2556
|
} else _push(`<!---->`);
|
|
2497
|
-
if (unref(mode) === "edit" && unref(selectedDaqNode)) _push(`<div class="daq-node-ctl" data-v-
|
|
2498
|
-
else _push(`<div class="ins-empty" data-v-
|
|
2557
|
+
if (unref(mode) === "edit" && unref(selectedDaqNode)) _push(`<div class="daq-node-ctl" data-v-3e78e101><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1l6g2ga074"))}</span><span class="daq-th-inputs" data-v-3e78e101><input${ssrRenderAttr("value", unref(daqIntervalDraft))} type="number" min="200" max="60000" step="100" class="daq-num" data-v-3e78e101><small data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1or92b075"))}</small></span></div><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3x5tpx076"))}</span><span class="daq-th-inputs" data-v-3e78e101><input${ssrRenderAttr("value", unref(selectedDaqNode).warnLow)} type="number" step="any" class="daq-num" data-v-3e78e101> ~ <input${ssrRenderAttr("value", unref(selectedDaqNode).warnHigh)} type="number" step="any" class="daq-num" data-v-3e78e101></span></div><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1hjj0jf077"))}</span><span class="daq-th-inputs" data-v-3e78e101><input${ssrRenderAttr("value", unref(selectedDaqNode).min)} type="number" step="any" class="daq-num" data-v-3e78e101> ~ <input${ssrRenderAttr("value", unref(selectedDaqNode).max)} type="number" step="any" class="daq-num" data-v-3e78e101></span></div><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k48tki078"))}</span><button class="${ssrRenderClass([{ warn: unref(selectedDaqNode).enabled }, "bind-add-btn"])}" data-v-3e78e101>${ssrInterpolate(unref(selectedDaqNode).enabled ? _ctx.$t("townView.k1wv0nyo150") : _ctx.$t("townView.kh1586b180"))}</button></div><div class="daq-info-row" data-v-3e78e101><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3xakp079"))}</span><button class="bind-add-btn danger"${ssrRenderAttr("title", _ctx.$t("townView.kpwutri014"))} data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1bpp30k080"))}</button></div></div>`);
|
|
2558
|
+
else _push(`<div class="ins-empty" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kzk5dfx081"))}</div>`);
|
|
2499
2559
|
_push(`</div>`);
|
|
2500
2560
|
} else {
|
|
2501
|
-
_push(`<!--[--><div class="obj-row" data-v-
|
|
2561
|
+
_push(`<!--[--><div class="obj-row" data-v-3e78e101><span class="obj-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3xhia082"))}</span><input${ssrRenderAttr("value", unref(objNameDraft))} class="obj-input"${ssrRenderAttr("placeholder", _ctx.$t("townView.k1k6vbaf015"))}${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""}${ssrRenderAttr("title", unref(mode) === "edit" ? "设备名称" : "运行模式只读")} data-v-3e78e101></div><div class="obj-row" data-v-3e78e101><span class="obj-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k41amp083"))}</span><select class="obj-select"${ssrRenderAttr("value", unref(scene3dRef)?.getDeviceModelRef?.(unref(selected).id) ?? "")}${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""} data-v-3e78e101><!--[-->`);
|
|
2502
2562
|
ssrRenderList(unref(deviceModels), (m) => {
|
|
2503
|
-
_push(`<option${ssrRenderAttr("value", m.id)} data-v-
|
|
2563
|
+
_push(`<option${ssrRenderAttr("value", m.id)} data-v-3e78e101>${ssrInterpolate(m.name)}</option>`);
|
|
2504
2564
|
});
|
|
2505
|
-
_push(`<!--]--></select></div><div class="sect-hd" data-v-
|
|
2565
|
+
_push(`<!--]--></select></div><div class="sect-hd" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1vtyk05130"))} ${ssrInterpolate(unref(boundDaqRows).length)} ${ssrInterpolate(_ctx.$t("townView.k3vfpz5138"))}</div><!--[-->`);
|
|
2506
2566
|
ssrRenderList(unref(boundDaqRows), (r) => {
|
|
2507
|
-
_push(`<div class="bind-row" data-v-
|
|
2508
|
-
|
|
2567
|
+
_push(`<div class="bind-row" data-v-3e78e101><span class="bind-ico" data-v-3e78e101>`);
|
|
2568
|
+
_push(ssrRenderComponent(_component_WorkshopDaqTemplateIcon, {
|
|
2569
|
+
class: "bind-svg",
|
|
2570
|
+
icon: r.icon
|
|
2571
|
+
}, null, _parent));
|
|
2572
|
+
_push(`</span><span class="bind-meta" data-v-3e78e101><span class="bind-label" data-v-3e78e101>${ssrInterpolate(r.ch)}</span><span class="bind-val" data-v-3e78e101><b data-v-3e78e101>${ssrInterpolate(r.value)}</b> ${ssrInterpolate(r.unit)} · ${ssrInterpolate(r.name)}</span></span><canvas class="bind-spark" width="56" height="20" data-v-3e78e101></canvas>`);
|
|
2573
|
+
if (unref(mode) === "edit") _push(`<button class="bind-x"${ssrRenderAttr("title", _ctx.$t("townView.k1k73omv016"))} data-v-3e78e101> ✕ </button>`);
|
|
2509
2574
|
else _push(`<!---->`);
|
|
2510
2575
|
_push(`</div>`);
|
|
2511
2576
|
});
|
|
2512
2577
|
_push(`<!--]-->`);
|
|
2513
|
-
if (!unref(boundDaqRows).length) _push(`<div class="ins-empty" data-v-
|
|
2578
|
+
if (!unref(boundDaqRows).length) _push(`<div class="ins-empty" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kgpuqhb084"))}</div>`);
|
|
2514
2579
|
else _push(`<!---->`);
|
|
2515
2580
|
if (unref(mode) === "edit") {
|
|
2516
|
-
_push(`<div class="bind-add-wrap" data-v-
|
|
2581
|
+
_push(`<div class="bind-add-wrap" data-v-3e78e101><button class="bind-add" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kvm0lin085"))}</button>`);
|
|
2517
2582
|
if (unref(bindPopOpen)) {
|
|
2518
|
-
_push(`<div class="bind-pop" style="${ssrRenderStyle({ maxHeight: `${unref(bindPopMaxH)}px` })}" data-v-
|
|
2583
|
+
_push(`<div class="bind-pop" style="${ssrRenderStyle({ maxHeight: `${unref(bindPopMaxH)}px` })}" data-v-3e78e101><!--[-->`);
|
|
2519
2584
|
ssrRenderList(unref(daqTemplates), (tpl) => {
|
|
2520
2585
|
_push(`<!--[-->`);
|
|
2521
2586
|
if (unref(daqBindChoices)[tpl.id]?.length) {
|
|
2522
|
-
_push(`<div class="bp-group" data-v-
|
|
2587
|
+
_push(`<div class="bp-group" data-v-3e78e101><span class="bp-tpl" data-v-3e78e101>${ssrInterpolate(tpl.name)} · ${ssrInterpolate(tpl.ch)}</span><!--[-->`);
|
|
2523
2588
|
ssrRenderList(unref(daqBindChoices)[tpl.id], (c) => {
|
|
2524
|
-
_push(`<button${ssrRenderAttr("data-node-id", c.id)}${ssrRenderAttr("title", c.devName ? _ctx.$t("townView.k2bindr0007", { p0: c.devName }) : _ctx.$t("townView.k2bindr0008"))} data-v-
|
|
2525
|
-
|
|
2526
|
-
|
|
2589
|
+
_push(`<button${ssrRenderAttr("data-node-id", c.id)}${ssrRenderAttr("title", c.devName ? _ctx.$t("townView.k2bindr0007", { p0: c.devName }) : _ctx.$t("townView.k2bindr0008"))} data-v-3e78e101>`);
|
|
2590
|
+
_push(ssrRenderComponent(_component_WorkshopDaqTemplateIcon, {
|
|
2591
|
+
class: "bind-svg",
|
|
2592
|
+
icon: c.tpl.icon
|
|
2593
|
+
}, null, _parent));
|
|
2594
|
+
_push(`<span data-v-3e78e101>${ssrInterpolate(c.name)}`);
|
|
2595
|
+
if (c.devName) _push(`<i class="bp-cur" data-v-3e78e101>→ ${ssrInterpolate(c.devName)}</i>`);
|
|
2596
|
+
else if (!c.placed) _push(`<i class="bp-cur" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k2bindr0009"))}</i>`);
|
|
2527
2597
|
else _push(`<!---->`);
|
|
2528
2598
|
_push(`</span></button>`);
|
|
2529
2599
|
});
|
|
@@ -2532,40 +2602,50 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
2532
2602
|
_push(`<!--]-->`);
|
|
2533
2603
|
});
|
|
2534
2604
|
_push(`<!--]-->`);
|
|
2535
|
-
if (!unref(daqBindChoiceCount)) _push(`<div class="bp-empty" data-v-
|
|
2605
|
+
if (!unref(daqBindChoiceCount)) _push(`<div class="bp-empty" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k2bindr0010"))}</div>`);
|
|
2536
2606
|
else _push(`<!---->`);
|
|
2537
2607
|
_push(`</div>`);
|
|
2538
2608
|
} else _push(`<!---->`);
|
|
2539
2609
|
_push(`</div>`);
|
|
2540
2610
|
} else _push(`<!---->`);
|
|
2541
|
-
_push(`<div class="sect-hd" data-v-
|
|
2611
|
+
_push(`<div class="sect-hd" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.ktzir2t131"))} ${ssrInterpolate(unref(boundDcwRows).length)} ${ssrInterpolate(_ctx.$t("townView.k4l1w042"))}</div><!--[-->`);
|
|
2542
2612
|
ssrRenderList(unref(boundDcwRows), (r) => {
|
|
2543
|
-
_push(`<div class="dcw-row" data-v-
|
|
2544
|
-
|
|
2613
|
+
_push(`<div class="dcw-row" data-v-3e78e101><div class="dcw-top" data-v-3e78e101><span class="bind-ico" data-v-3e78e101>`);
|
|
2614
|
+
_push(ssrRenderComponent(_component_WorkshopDaqTemplateIcon, {
|
|
2615
|
+
class: "bind-svg",
|
|
2616
|
+
icon: r.icon
|
|
2617
|
+
}, null, _parent));
|
|
2618
|
+
_push(`</span><span class="dcw-id" data-v-3e78e101><span class="bind-label" data-v-3e78e101>${ssrInterpolate(r.ch)}`);
|
|
2619
|
+
if (r.rMin != null || r.rMax != null) _push(`<i class="dcw-tag" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k48grv086"))}</i>`);
|
|
2545
2620
|
else _push(`<!---->`);
|
|
2546
|
-
_push(`</span><span class="dcw-name" data-v-
|
|
2547
|
-
if (unref(mode) === "edit") _push(`<button class="bind-x"${ssrRenderAttr("title", _ctx.$t("townView.k1k73omv016"))} data-v-
|
|
2621
|
+
_push(`</span><span class="dcw-name" data-v-3e78e101>${ssrInterpolate(r.name)}</span></span><span class="dcw-cur" data-v-3e78e101><b data-v-3e78e101>${ssrInterpolate(r.value != null ? r.value.toFixed(r.decimals) : "--")}</b><i data-v-3e78e101>${ssrInterpolate(r.unit)}</i></span>`);
|
|
2622
|
+
if (unref(mode) === "edit") _push(`<button class="bind-x"${ssrRenderAttr("title", _ctx.$t("townView.k1k73omv016"))} data-v-3e78e101> ✕ </button>`);
|
|
2548
2623
|
else _push(`<!---->`);
|
|
2549
|
-
_push(`</div><div class="${ssrRenderClass([{ recipe: r.rMin != null || r.rMax != null }, "dcw-win"])}" data-v-
|
|
2550
|
-
if (unref(dcwWriteErrs)[r.dcwId]) _push(`<small class="dcw-err" data-v-
|
|
2624
|
+
_push(`</div><div class="${ssrRenderClass([{ recipe: r.rMin != null || r.rMax != null }, "dcw-win"])}" data-v-3e78e101><em data-v-3e78e101>${ssrInterpolate(r.rMin != null || r.rMax != null ? _ctx.$t("townView.k1l3m0hx151") : _ctx.$t("townView.k1bc6rqf181"))}</em><span class="dcw-win-num" data-v-3e78e101>${ssrInterpolate(r.rMin ?? "-∞")}</span><span class="dcw-win-track" data-v-3e78e101><i style="${ssrRenderStyle({ left: `${dcwMarkPct(r)}%` })}" data-v-3e78e101></i></span><span class="dcw-win-num" data-v-3e78e101>${ssrInterpolate(r.rMax ?? "+∞")}</span></div><div class="dcw-write" data-v-3e78e101><input${ssrRenderAttr("value", unref(dcwWriteDrafts)[r.dcwId])} type="number"${ssrRenderAttr("step", 10 ** -r.decimals)}${ssrRenderAttr("placeholder", `${r.rMin ?? r.gMin} ~ ${r.rMax ?? r.gMax}`)} data-v-3e78e101><button class="dcw-send"${ssrIncludeBooleanAttr(unref(dcwWriteDrafts)[r.dcwId] == null || unref(dcwWriteDrafts)[r.dcwId] === "") ? " disabled" : ""}${ssrRenderAttr("title", _ctx.$t("townView.k15t7izc017"))} data-v-3e78e101> write </button></div>`);
|
|
2625
|
+
if (unref(dcwWriteErrs)[r.dcwId]) _push(`<small class="dcw-err" data-v-3e78e101>${ssrInterpolate(unref(dcwWriteErrs)[r.dcwId])}</small>`);
|
|
2551
2626
|
else _push(`<!---->`);
|
|
2552
2627
|
_push(`</div>`);
|
|
2553
2628
|
});
|
|
2554
2629
|
_push(`<!--]-->`);
|
|
2555
|
-
if (!unref(boundDcwRows).length) _push(`<div class="ins-empty" data-v-
|
|
2630
|
+
if (!unref(boundDcwRows).length) _push(`<div class="ins-empty" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k10smf24087"))}</div>`);
|
|
2556
2631
|
else _push(`<!---->`);
|
|
2557
2632
|
if (unref(mode) === "edit") {
|
|
2558
|
-
_push(`<div class="bind-add-wrap" data-v-
|
|
2633
|
+
_push(`<div class="bind-add-wrap" data-v-3e78e101><button class="bind-add" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kvk1vh5088"))}</button>`);
|
|
2559
2634
|
if (unref(dcwBindPopOpen)) {
|
|
2560
|
-
_push(`<div class="bind-pop" style="${ssrRenderStyle({ maxHeight: `${unref(bindPopMaxH)}px` })}" data-v-
|
|
2635
|
+
_push(`<div class="bind-pop" style="${ssrRenderStyle({ maxHeight: `${unref(bindPopMaxH)}px` })}" data-v-3e78e101><!--[-->`);
|
|
2561
2636
|
ssrRenderList(unref(dcwTemplates), (tpl) => {
|
|
2562
2637
|
_push(`<!--[-->`);
|
|
2563
2638
|
if (unref(dcwBindChoices)[tpl.id]?.length) {
|
|
2564
|
-
_push(`<div class="bp-group" data-v-
|
|
2639
|
+
_push(`<div class="bp-group" data-v-3e78e101><span class="bp-tpl" data-v-3e78e101>${ssrInterpolate(tpl.name)} · ${ssrInterpolate(tpl.ch)}</span><!--[-->`);
|
|
2565
2640
|
ssrRenderList(unref(dcwBindChoices)[tpl.id], (c) => {
|
|
2566
|
-
_push(`<button${ssrRenderAttr("data-node-id", c.id)}${ssrRenderAttr("title", c.devName ? _ctx.$t("townView.k2bindr0007", { p0: c.devName }) : _ctx.$t("townView.k2bindr0008"))} data-v-
|
|
2567
|
-
|
|
2568
|
-
|
|
2641
|
+
_push(`<button${ssrRenderAttr("data-node-id", c.id)}${ssrRenderAttr("title", c.devName ? _ctx.$t("townView.k2bindr0007", { p0: c.devName }) : _ctx.$t("townView.k2bindr0008"))} data-v-3e78e101>`);
|
|
2642
|
+
_push(ssrRenderComponent(_component_WorkshopDaqTemplateIcon, {
|
|
2643
|
+
class: "bind-svg",
|
|
2644
|
+
icon: c.tpl.icon
|
|
2645
|
+
}, null, _parent));
|
|
2646
|
+
_push(`<span data-v-3e78e101>${ssrInterpolate(c.name)}`);
|
|
2647
|
+
if (c.devName) _push(`<i class="bp-cur" data-v-3e78e101>→ ${ssrInterpolate(c.devName)}</i>`);
|
|
2648
|
+
else if (!c.placed) _push(`<i class="bp-cur" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k2bindr0009"))}</i>`);
|
|
2569
2649
|
else _push(`<!---->`);
|
|
2570
2650
|
_push(`</span></button>`);
|
|
2571
2651
|
});
|
|
@@ -2574,121 +2654,123 @@ var TownView_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineC
|
|
|
2574
2654
|
_push(`<!--]-->`);
|
|
2575
2655
|
});
|
|
2576
2656
|
_push(`<!--]-->`);
|
|
2577
|
-
if (!unref(dcwBindChoiceCount)) _push(`<div class="bp-empty" data-v-
|
|
2657
|
+
if (!unref(dcwBindChoiceCount)) _push(`<div class="bp-empty" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k2bindr0010"))}</div>`);
|
|
2578
2658
|
else _push(`<!---->`);
|
|
2579
2659
|
_push(`</div>`);
|
|
2580
2660
|
} else _push(`<!---->`);
|
|
2581
2661
|
_push(`</div>`);
|
|
2582
2662
|
} else _push(`<!---->`);
|
|
2583
|
-
if (unref(mode) === "edit") _push(`<!--[--><div class="sect-hd" data-v-
|
|
2584
|
-
else _push(`<div class="ins-empty" data-v-
|
|
2663
|
+
if (unref(mode) === "edit") _push(`<!--[--><div class="sect-hd" data-v-3e78e101> 变换 · BLENDER </div><div class="xz-seg" data-v-3e78e101><button class="${ssrRenderClass([{ on: unref(tMode) === "translate" }, "seg-btn"])}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1hg3167089"))}</button><button class="${ssrRenderClass([{ on: unref(tMode) === "rotate" }, "seg-btn"])}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1enlg7i090"))}</button><button class="${ssrRenderClass([{ on: unref(tMode) === "scale" }, "seg-btn"])}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1ibjg3j091"))}</button></div><div class="scale-row" data-v-3e78e101><span class="scale-min" data-v-3e78e101>0.2×</span><input class="scale-range" type="range" min="0.2" max="5" step="0.05"${ssrRenderAttr("value", unref(selected).scale)} data-v-3e78e101><span class="scale-max" data-v-3e78e101>5×</span></div><div class="scale-val" data-v-3e78e101>${ssrInterpolate(Math.round(unref(selected).scale * 100))}% </div><div class="ins-foot" data-v-3e78e101><button class="${ssrRenderClass([{ armed: unref(deviceDeleteArmed) === unref(selected).id }, "btn btn-danger ins-del"])}" data-v-3e78e101>${ssrInterpolate(unref(deviceDeleteArmed) === unref(selected).id ? _ctx.$t("townView.k1w10xa5152") : _ctx.$t("townView.k121kfef182"))}</button></div><!--]-->`);
|
|
2664
|
+
else _push(`<div class="ins-empty" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kt0i3y2092"))}</div>`);
|
|
2585
2665
|
_push(`<!--]-->`);
|
|
2586
2666
|
}
|
|
2587
2667
|
_push(`<!--]-->`);
|
|
2588
2668
|
} else if (unref(selected).kind === "agent") {
|
|
2589
|
-
_push(`<!--[--><div class="chat-id-row" data-v-
|
|
2590
|
-
if (unref(selectedAgentMeta)?.harness) _push(`<span class="chat-harness" data-v-
|
|
2669
|
+
_push(`<!--[--><div class="chat-id-row" data-v-3e78e101><span class="chat-badge" style="${ssrRenderStyle({ "--p-acc": unref(agentChatColor) })}" data-v-3e78e101>${ssrInterpolate(unref(agentChatTitle).slice(0, 1).toUpperCase())}</span><div class="chat-nameplate" data-v-3e78e101><span class="chat-name" data-v-3e78e101>${ssrInterpolate(unref(agentChatTitle))}</span><span class="chat-meta" data-v-3e78e101><span class="${ssrRenderClass([unref(selectedAgentMeta)?.role === "lead" ? "r-lead" : "r-worker", "chat-role"])}" data-v-3e78e101>${ssrInterpolate(unref(selectedAgentRoleTag))}</span><span class="${ssrRenderClass([`s-${unref(selectedAgentMeta)?.state ?? "idle"}`, "chat-state"])}" data-v-3e78e101>${ssrInterpolate(unref(agentChatStateLabel))}</span>`);
|
|
2670
|
+
if (unref(selectedAgentMeta)?.harness) _push(`<span class="chat-harness" data-v-3e78e101>${ssrInterpolate(unref(selectedAgentMeta).harness.toUpperCase())}</span>`);
|
|
2591
2671
|
else _push(`<!---->`);
|
|
2592
|
-
_push(`<span class="chat-count" data-v-
|
|
2672
|
+
_push(`<span class="chat-count" data-v-3e78e101>${ssrInterpolate(unref(agentHistory).length + unref(agentChatRows).length)} ${ssrInterpolate(_ctx.$t("townView.k4dfq040"))}</span></span></div></div><div class="obj-row" data-v-3e78e101><span class="obj-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k41amp083"))}</span><select class="obj-select"${ssrRenderAttr("value", (unref(scene3dRef)?.getAgentModel?.(unref(selected).id) ?? "") || "hero-3d")}${ssrIncludeBooleanAttr(unref(mode) !== "edit") ? " disabled" : ""} data-v-3e78e101><!--[-->`);
|
|
2593
2673
|
ssrRenderList(unref(agentModels), (m) => {
|
|
2594
|
-
_push(`<option${ssrRenderAttr("value", m.id)} data-v-
|
|
2674
|
+
_push(`<option${ssrRenderAttr("value", m.id)} data-v-3e78e101>${ssrInterpolate(m.name)}</option>`);
|
|
2595
2675
|
});
|
|
2596
|
-
_push(`<!--]--></select></div><div class="obj-sep" data-v-
|
|
2597
|
-
if (unref(mode) === "edit") _push(`<button class="${ssrRenderClass([{ on: unref(agentDrawingRange) }, "obj-mini"])}"${ssrRenderAttr("title", _ctx.$t("townView.k13enoy3018"))} data-v-
|
|
2676
|
+
_push(`<!--]--></select></div><div class="obj-sep" data-v-3e78e101></div><div class="obj-row" data-v-3e78e101><span class="obj-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1fix3hb093"))}</span><span class="range-status" data-v-3e78e101>${ssrInterpolate(unref(agentRangeStatusText))}</span>`);
|
|
2677
|
+
if (unref(mode) === "edit") _push(`<button class="${ssrRenderClass([{ on: unref(agentDrawingRange) }, "obj-mini"])}"${ssrRenderAttr("title", _ctx.$t("townView.k13enoy3018"))} data-v-3e78e101>${ssrInterpolate(unref(agentDrawingRange) ? _ctx.$t("townView.k3slzhc153") : _ctx.$t("townView.k1f1xmci183"))}</button>`);
|
|
2598
2678
|
else _push(`<!---->`);
|
|
2599
|
-
_push(`</div><div class="obj-sep" data-v-
|
|
2679
|
+
_push(`</div><div class="obj-sep" data-v-3e78e101></div><div class="sect-hd" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1p7nru2094"))}</div><!--[-->`);
|
|
2600
2680
|
ssrRenderList(unref(agentBindings), (b) => {
|
|
2601
|
-
_push(`<div class="bind-row" data-v-
|
|
2681
|
+
_push(`<div class="bind-row" data-v-3e78e101><span class="${ssrRenderClass([b.kind === "dcw" ? "accent" : "", "ins-chip"])}" style="${ssrRenderStyle({ "flex": "none" })}" data-v-3e78e101>${ssrInterpolate(b.kind === "dcw" ? _ctx.$t("townView.k40ifw097") : _ctx.$t("townView.k40rjw098"))}</span><span class="bind-meta" data-v-3e78e101><span class="bind-label" data-v-3e78e101>${ssrInterpolate(bindingNodeName(b))}</span><select class="bind-select" style="${ssrRenderStyle({ "margin-top": "3px" })}"${ssrRenderAttr("value", b.mode)}${ssrRenderAttr("title", _ctx.$t("townView.khqvwix019"))} data-v-3e78e101><option value="auto" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1io1ylm095"))}</option><option value="manual" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1duyr8q096"))}</option></select></span><button class="bind-x"${ssrRenderAttr("title", _ctx.$t("townView.k1k73omv016"))} data-v-3e78e101> ✕ </button></div>`);
|
|
2602
2682
|
});
|
|
2603
2683
|
_push(`<!--]-->`);
|
|
2604
|
-
if (!unref(agentBindings).length) _push(`<div class="ins-empty" data-v-
|
|
2684
|
+
if (!unref(agentBindings).length) _push(`<div class="ins-empty" data-v-3e78e101> 未绑定工业节点 —— 绑定后 Agent 可用 dcw_control / daq_query 工具 </div>`);
|
|
2605
2685
|
else _push(`<!---->`);
|
|
2606
2686
|
if (unref(mode) === "edit") {
|
|
2607
|
-
_push(`<div class="daq-bind-bar" style="${ssrRenderStyle({ "margin-bottom": "8px" })}" data-v-
|
|
2687
|
+
_push(`<div class="daq-bind-bar" style="${ssrRenderStyle({ "margin-bottom": "8px" })}" data-v-3e78e101><select class="bind-select" style="${ssrRenderStyle({
|
|
2608
2688
|
"flex": "none",
|
|
2609
2689
|
"width": "62px"
|
|
2610
|
-
})}" data-v-
|
|
2690
|
+
})}" data-v-3e78e101><option value="dcw" data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindKind)) ? ssrLooseContain(unref(agentBindKind), "dcw") : ssrLooseEqual(unref(agentBindKind), "dcw")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k40ifw097"))}</option><option value="daq" data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindKind)) ? ssrLooseContain(unref(agentBindKind), "daq") : ssrLooseEqual(unref(agentBindKind), "daq")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k40rjw098"))}</option></select><select class="bind-select" data-v-3e78e101><option value="" data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindNodeId)) ? ssrLooseContain(unref(agentBindNodeId), "") : ssrLooseEqual(unref(agentBindNodeId), "")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.kurjldk099"))}</option>`);
|
|
2611
2691
|
if (unref(agentBindKind) === "dcw") {
|
|
2612
2692
|
_push(`<!--[-->`);
|
|
2613
2693
|
ssrRenderList(unref(dcw).nodes, (n) => {
|
|
2614
|
-
_push(`<option${ssrRenderAttr("value", n.id)} data-v-
|
|
2694
|
+
_push(`<option${ssrRenderAttr("value", n.id)} data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindNodeId)) ? ssrLooseContain(unref(agentBindNodeId), n.id) : ssrLooseEqual(unref(agentBindNodeId), n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}</option>`);
|
|
2615
2695
|
});
|
|
2616
2696
|
_push(`<!--]-->`);
|
|
2617
2697
|
} else {
|
|
2618
2698
|
_push(`<!--[-->`);
|
|
2619
2699
|
ssrRenderList(unref(daq).nodes, (n) => {
|
|
2620
|
-
_push(`<option${ssrRenderAttr("value", n.id)} data-v-
|
|
2700
|
+
_push(`<option${ssrRenderAttr("value", n.id)} data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindNodeId)) ? ssrLooseContain(unref(agentBindNodeId), n.id) : ssrLooseEqual(unref(agentBindNodeId), n.id)) ? " selected" : ""}>${ssrInterpolate(n.name)}</option>`);
|
|
2621
2701
|
});
|
|
2622
2702
|
_push(`<!--]-->`);
|
|
2623
2703
|
}
|
|
2624
2704
|
_push(`</select><select class="bind-select" style="${ssrRenderStyle({
|
|
2625
2705
|
"flex": "none",
|
|
2626
2706
|
"width": "76px"
|
|
2627
|
-
})}" data-v-
|
|
2707
|
+
})}" data-v-3e78e101><option value="auto" data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindMode)) ? ssrLooseContain(unref(agentBindMode), "auto") : ssrLooseEqual(unref(agentBindMode), "auto")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k45kpj100"))}</option><option value="manual" data-v-3e78e101${ssrIncludeBooleanAttr(Array.isArray(unref(agentBindMode)) ? ssrLooseContain(unref(agentBindMode), "manual") : ssrLooseEqual(unref(agentBindMode), "manual")) ? " selected" : ""}>${ssrInterpolate(_ctx.$t("townView.k3zul4101"))}</option></select><button class="bind-add-btn"${ssrIncludeBooleanAttr(!unref(agentBindNodeId)) ? " disabled" : ""} data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k452a8102"))}</button></div>`);
|
|
2628
2708
|
} else _push(`<!---->`);
|
|
2629
2709
|
if (unref(pendingApprovals).length) {
|
|
2630
|
-
_push(`<!--[--><div class="sect-hd" style="${ssrRenderStyle({ "color": "var(--hud-amber)" })}" data-v-
|
|
2710
|
+
_push(`<!--[--><div class="sect-hd" style="${ssrRenderStyle({ "color": "var(--hud-amber)" })}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1gk2jg7132"))} ${ssrInterpolate(unref(pendingApprovals).length)}</div><!--[-->`);
|
|
2631
2711
|
ssrRenderList(unref(pendingApprovals), (ap) => {
|
|
2632
|
-
_push(`<div class="approval-card" data-v-
|
|
2712
|
+
_push(`<div class="approval-card" data-v-3e78e101><div class="approval-detail" data-v-3e78e101>${ssrInterpolate(ap.detail)}</div><div class="${ssrRenderClass([{ urgent: approvalRemainingSec(ap) <= 30 }, "approval-ttl"])}" data-v-3e78e101> ⏱ ${ssrInterpolate(approvalRemainingSec(ap))}s ${ssrInterpolate(_ctx.$t("townView.hitlAutoReject"))}</div><input${ssrRenderAttr("value", unref(approvalComments)[ap.id])} class="dcw-write input-inline" style="${ssrRenderStyle({
|
|
2633
2713
|
"width": "100%",
|
|
2634
2714
|
"margin-top": "5px"
|
|
2635
|
-
})}"${ssrRenderAttr("placeholder", _ctx.$t("townView.keztqrn020"))} data-v-
|
|
2715
|
+
})}"${ssrRenderAttr("placeholder", _ctx.$t("townView.keztqrn020"))} data-v-3e78e101><div class="daq-bind-bar" style="${ssrRenderStyle({ "margin-top": "5px" })}" data-v-3e78e101><button class="bind-add-btn" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kslcozu103"))}</button><button class="bind-add-btn danger" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k14gu3rd104"))}</button></div></div>`);
|
|
2636
2716
|
});
|
|
2637
2717
|
_push(`<!--]--><!--]-->`);
|
|
2638
2718
|
} else _push(`<!---->`);
|
|
2639
|
-
if (unref(agentRangeDraft) && unref(mode) === "edit") _push(`<!--[--><div class="obj-row" data-v-
|
|
2640
|
-
else _push(`<div class="ins-empty" data-v-
|
|
2641
|
-
_push(`<div class="obj-sep" data-v-
|
|
2642
|
-
if (unref(historyLoading)) _push(`<div class="rpg-note" data-v-
|
|
2719
|
+
if (unref(agentRangeDraft) && unref(mode) === "edit") _push(`<!--[--><div class="obj-row" data-v-3e78e101><span class="obj-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3zhy5048"))}</span><div class="bp-seg" data-v-3e78e101><button class="${ssrRenderClass([{ on: unref(agentRangeDraft).shape === "ellipse" }, "seg-btn"])}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k414bc049"))}</button><button class="${ssrRenderClass([{ on: unref(agentRangeDraft).shape === "rect" }, "seg-btn"])}" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k43u0g050"))}</button></div></div><div class="obj-row" data-v-3e78e101><span class="obj-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k41lwj105"))}</span><input${ssrRenderAttr("value", unref(agentRangeDraft).radiusX)} class="obj-range" type="range" min="40" max="4000" step="8" data-v-3e78e101><span class="bp-val" data-v-3e78e101>${ssrInterpolate(Math.round(unref(agentRangeDraft).radiusX))}</span></div><div class="obj-row" data-v-3e78e101><span class="obj-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k45bta106"))}</span><input${ssrRenderAttr("value", unref(agentRangeDraft).radiusZ)} class="obj-range" type="range" min="40" max="4000" step="8" data-v-3e78e101><span class="bp-val" data-v-3e78e101>${ssrInterpolate(Math.round(unref(agentRangeDraft).radiusZ))}</span></div><button class="obj-mini danger" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1w45mzc107"))}</button><!--]-->`);
|
|
2720
|
+
else _push(`<div class="ins-empty" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k14s8urm108"))}</div>`);
|
|
2721
|
+
_push(`<div class="obj-sep" data-v-3e78e101></div><div class="sect-hd chat-sect" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1ghjbfc133"))} ${ssrInterpolate(unref(agentChatTitle))} <button class="mini-btn chat-refresh"${ssrRenderAttr("title", _ctx.$t("townView.k15avt7g021"))} data-v-3e78e101>${ssrInterpolate(unref(historyLoading) ? "…" : "↻")}</button></div><div class="rpg-lines chat-embed" data-v-3e78e101>`);
|
|
2722
|
+
if (unref(historyLoading)) _push(`<div class="rpg-note" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kkhlx5h109"))}</div>`);
|
|
2643
2723
|
else _push(`<!---->`);
|
|
2644
2724
|
if (unref(agentHistory).length) {
|
|
2645
|
-
_push(`<!--[--><div class="rpg-divider" data-v-
|
|
2725
|
+
_push(`<!--[--><div class="rpg-divider" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k768cnt134"))} ${ssrInterpolate(unref(agentHistory).length)}</div><!--[-->`);
|
|
2646
2726
|
ssrRenderList(unref(agentHistory), (r) => {
|
|
2647
|
-
_push(`<div class="rpg-line hist" data-v-
|
|
2648
|
-
if (chatKindLabel(r.kind)) _push(`<span class="${ssrRenderClass([`k-${r.kind}`, "rpg-kind"])}" data-v-
|
|
2727
|
+
_push(`<div class="rpg-line hist" data-v-3e78e101><span class="rpg-time" data-v-3e78e101>${ssrInterpolate(fmtTime(r.at))}</span><div class="rpg-bubble" data-v-3e78e101>`);
|
|
2728
|
+
if (chatKindLabel(r.kind)) _push(`<span class="${ssrRenderClass([`k-${r.kind}`, "rpg-kind"])}" data-v-3e78e101>${ssrInterpolate(chatKindLabel(r.kind))}</span>`);
|
|
2649
2729
|
else _push(`<!---->`);
|
|
2650
|
-
_push(`<span class="rpg-text" data-v-
|
|
2730
|
+
_push(`<span class="rpg-text" data-v-3e78e101>${ssrInterpolate(r.text)}</span></div></div>`);
|
|
2651
2731
|
});
|
|
2652
2732
|
_push(`<!--]--><!--]-->`);
|
|
2653
2733
|
} else _push(`<!---->`);
|
|
2654
|
-
if (unref(agentChatRows).length) _push(`<div class="rpg-divider live" data-v-
|
|
2734
|
+
if (unref(agentChatRows).length) _push(`<div class="rpg-divider live" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1cwz73k135"))} ${ssrInterpolate(unref(agentChatRows).length)}</div>`);
|
|
2655
2735
|
else _push(`<!---->`);
|
|
2656
2736
|
_push(`<!--[-->`);
|
|
2657
2737
|
ssrRenderList(unref(agentChatRows), (r) => {
|
|
2658
|
-
_push(`<div class="rpg-line live" data-v-
|
|
2738
|
+
_push(`<div class="rpg-line live" data-v-3e78e101><span class="rpg-time" data-v-3e78e101>${ssrInterpolate(fmtTime(r.at))}</span><div class="rpg-bubble" data-v-3e78e101><span class="rpg-text" data-v-3e78e101>${ssrInterpolate(r.text)}</span></div></div>`);
|
|
2659
2739
|
});
|
|
2660
2740
|
_push(`<!--]-->`);
|
|
2661
|
-
if (unref(selectedAgentMeta)?.state === "busy") _push(`<div class="rpg-typing" data-v-
|
|
2741
|
+
if (unref(selectedAgentMeta)?.state === "busy") _push(`<div class="rpg-typing" data-v-3e78e101><span class="ty-dot" data-v-3e78e101></span><span class="ty-dot" data-v-3e78e101></span><span class="ty-dot" data-v-3e78e101></span><span class="ty-label" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k3o5tz9110"))}</span></div>`);
|
|
2662
2742
|
else _push(`<!---->`);
|
|
2663
|
-
if (!unref(historyLoading) && !unref(agentHistory).length && !unref(agentChatRows).length) _push(`<div class="rpg-note" data-v-
|
|
2743
|
+
if (!unref(historyLoading) && !unref(agentHistory).length && !unref(agentChatRows).length) _push(`<div class="rpg-note" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1qkqld7111"))}</div>`);
|
|
2664
2744
|
else _push(`<!---->`);
|
|
2665
2745
|
_push(`</div><!--]-->`);
|
|
2666
2746
|
} else _push(`<!---->`);
|
|
2667
2747
|
_push(`</section>`);
|
|
2668
2748
|
} else _push(`<!---->`);
|
|
2669
|
-
_push(`<section class="panel" data-v-
|
|
2749
|
+
_push(`<section class="panel" data-v-3e78e101><div class="panel-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k17dkhgd112"))}</h3></div><div class="health-body" data-v-3e78e101><div class="donut-wrap" data-v-3e78e101><canvas width="118" height="118" data-v-3e78e101></canvas><div class="donut-center" data-v-3e78e101><b style="${ssrRenderStyle({ color: unref(healthTone) })}" data-v-3e78e101>${ssrInterpolate(unref(healthPct))}%</b><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k7h1nxo113"))}</span></div></div><div class="health-legend" data-v-3e78e101><div class="hl-row" data-v-3e78e101><span class="hl-dot" style="${ssrRenderStyle({ background: "var(--hud-accent)" })}" data-v-3e78e101></span> ${ssrInterpolate(_ctx.$t("townView.k3vp67i114"))} <span class="n" data-v-3e78e101>${ssrInterpolate(unref(runningCount))}</span></div><div class="hl-row" data-v-3e78e101><span class="hl-dot" style="${ssrRenderStyle({ background: "var(--hud-amber)" })}" data-v-3e78e101></span> ${ssrInterpolate(_ctx.$t("townView.k3zcvb115"))} <span class="n" data-v-3e78e101>${ssrInterpolate(unref(idleCount))}</span></div><div class="hl-row" data-v-3e78e101><span class="hl-dot" style="${ssrRenderStyle({ background: "var(--hud-danger)" })}" data-v-3e78e101></span> ${ssrInterpolate(_ctx.$t("townView.k3xmid116"))} <span class="n" data-v-3e78e101>${ssrInterpolate(unref(alarmCount))}</span></div><div class="hl-row" data-v-3e78e101><span class="hl-dot" style="${ssrRenderStyle({ background: "#3a4a63" })}" data-v-3e78e101></span> ${ssrInterpolate(_ctx.$t("townView.statesOffline"))} <span class="n" data-v-3e78e101>${ssrInterpolate(unref(offlineCount))}</span></div></div></div></section><section class="panel" data-v-3e78e101><div class="panel-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1q247fn117"))}</h3><span class="panel-tag" data-v-3e78e101>${ssrInterpolate(unref(deviceTwins).twins.length)}</span></div>`);
|
|
2670
2750
|
_push(ssrRenderComponent(_component_WorkshopDeviceTwinPanel, {
|
|
2671
2751
|
class: "kd-embed",
|
|
2672
2752
|
"daq-live": unref(daqLive),
|
|
2673
2753
|
"dcw-live": unref(dcwLive),
|
|
2674
2754
|
onFocusDevice
|
|
2675
2755
|
}, null, _parent));
|
|
2676
|
-
_push(`</section><section class="panel" data-v-
|
|
2756
|
+
_push(`</section><section class="panel" data-v-3e78e101><div class="panel-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1cxf749118"))}</h3><span class="panel-tag" data-v-3e78e101>${ssrInterpolate(unref(activeAlarmCount))} ${ssrInterpolate(_ctx.$t("townView.k4dfq040"))}</span><button class="mini-btn"${ssrRenderAttr("title", _ctx.$t("townView.k1bkswpz022"))} data-v-3e78e101> ✓ </button></div><div class="alarm-list" data-v-3e78e101><!--[-->`);
|
|
2677
2757
|
ssrRenderList(unref(alarms).slice(0, 8), (a) => {
|
|
2678
|
-
_push(`<div class="al-row" data-v-
|
|
2758
|
+
_push(`<div class="al-row" data-v-3e78e101><span class="${ssrRenderClass([a.state === 2 ? "info" : a.state === 1 ? "warn" : "crit", "al-ico"])}" data-v-3e78e101><svg class="al-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="M12 3 22 20H2L12 3Z" data-v-3e78e101></path><path d="M12 10v4M12 17v.2" data-v-3e78e101></path></svg></span><div class="al-body" data-v-3e78e101><div class="al-txt" data-v-3e78e101>${ssrInterpolate(a.txt)}</div><div class="al-src" data-v-3e78e101>${ssrInterpolate(a.src)} · ${ssrInterpolate(a.time)}</div></div><button class="${ssrRenderClass([`s${a.state}`, "al-state"])}" data-v-3e78e101>${ssrInterpolate(ALARM_STATES[a.state])}</button></div>`);
|
|
2679
2759
|
});
|
|
2680
2760
|
_push(`<!--]-->`);
|
|
2681
|
-
if (!unref(alarms).length) _push(`<div class="rail-empty" data-v-
|
|
2761
|
+
if (!unref(alarms).length) _push(`<div class="rail-empty" data-v-3e78e101><svg class="re-ico" viewBox="0 0 24 24" data-v-3e78e101><path d="M12 3l7 3v5c0 4.6-3 8.2-7 10-4-1.8-7-5.4-7-10V6l7-3Z" data-v-3e78e101></path><path d="m9.2 12.2 2 2 3.6-4" data-v-3e78e101></path></svg><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kjz544r119"))}</span></div>`);
|
|
2682
2762
|
else _push(`<!---->`);
|
|
2683
|
-
_push(`</div></section><section class="panel" data-v-
|
|
2684
|
-
ssrRenderList([...unref(ticker)].reverse(), (
|
|
2685
|
-
_push(`<div class="event-row" data-v-
|
|
2763
|
+
_push(`</div></section><section class="panel" data-v-3e78e101><div class="panel-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1cxdtq2120"))}</h3><span class="panel-tag" data-v-3e78e101>${ssrInterpolate(unref(ticker).length)}</span></div><div class="event-list" data-v-3e78e101><!--[-->`);
|
|
2764
|
+
ssrRenderList([...unref(ticker)].reverse(), (ev, i) => {
|
|
2765
|
+
_push(`<div class="event-row" data-v-3e78e101><span class="ev-time" data-v-3e78e101>${ssrInterpolate(fmtTime(ev.at))}</span><span class="ev-name"${ssrRenderAttr("title", ev.agentName)} data-v-3e78e101>${ssrInterpolate(ev.agentName)}</span><span class="ev-text"${ssrRenderAttr("title", ev.text)} data-v-3e78e101>${ssrInterpolate(ev.text)}</span></div>`);
|
|
2686
2766
|
});
|
|
2687
2767
|
_push(`<!--]-->`);
|
|
2688
|
-
if (!unref(ticker).length) _push(`<div class="rail-empty" data-v-
|
|
2768
|
+
if (!unref(ticker).length) _push(`<div class="rail-empty" data-v-3e78e101><svg class="re-ico" viewBox="0 0 24 24" data-v-3e78e101><path d="M3 12h3l2.5-6 4 12L15 12h6" data-v-3e78e101></path></svg><span data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k2uk6ua121"))}</span></div>`);
|
|
2769
|
+
else _push(`<!---->`);
|
|
2770
|
+
_push(`</div></section><section class="panel" data-v-3e78e101><div class="panel-hd" data-v-3e78e101><h3 data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kjug2jq122"))}</h3></div><div class="mm-body" data-v-3e78e101><div class="mm-wrap"${ssrRenderAttr("title", _ctx.$t("townView.klfwiqg023"))} data-v-3e78e101><canvas class="nav-cv" data-v-3e78e101></canvas></div><div class="mm-col" data-v-3e78e101><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k1lap9bs024"))} data-v-3e78e101><svg class="vp-svg" viewBox="0 0 24 24" data-v-3e78e101><path d="M3 12a9 9 0 1 0 3-6.7M3 4v5h5" data-v-3e78e101></path></svg></button><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.kav8a8k025"))} data-v-3e78e101><svg class="vp-svg" viewBox="0 0 24 24" data-v-3e78e101><circle cx="11" cy="11" r="6.5" data-v-3e78e101></circle><path d="m16 16 4.5 4.5M8.5 11h5" data-v-3e78e101></path></svg></button><button class="vp-tool"${ssrRenderAttr("title", _ctx.$t("townView.k1u7uce9026"))} data-v-3e78e101><svg class="vp-svg" viewBox="0 0 24 24" data-v-3e78e101><circle cx="11" cy="11" r="6.5" data-v-3e78e101></circle><path d="m16 16 4.5 4.5M8.5 11h5M11 8.5v5" data-v-3e78e101></path></svg></button></div></div><div class="mm-meta mono" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k1gaaodq136"))}${ssrInterpolate(unref(navScale).toFixed(1))} · ${ssrInterpolate(unref(minimap)?.devices?.length ?? 0)} ${ssrInterpolate(_ctx.$t("townView.k47e16126"))}</div></section></aside></div><footer class="statusbar" data-v-3e78e101><span data-v-3e78e101><span class="${ssrRenderClass([{ red: unref(conn).state !== "open" }, "sb-dot"])}" data-v-3e78e101></span>${ssrInterpolate(_ctx.$t("townView.k1i4g246123"))} <b data-v-3e78e101>${ssrInterpolate(unref(conn).state === "open" ? _ctx.$t("townView.k41k5c154") : unref(syncing) ? _ctx.$t("townView.k3lmtk3184") : _ctx.$t("townView.k44c2n186"))}</b></span><span class="sb-stats" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.k4a0jt124"))} <b data-v-3e78e101>${ssrInterpolate(unref(blockCount))}</b><i data-v-3e78e101>·</i>${ssrInterpolate(_ctx.$t("townView.k3xdvm125"))} <b data-v-3e78e101>${ssrInterpolate(unref(agentCount))}</b><i data-v-3e78e101>·</i>${ssrInterpolate(_ctx.$t("townView.k47e16126"))} <b data-v-3e78e101>${ssrInterpolate(unref(deviceCount))}</b></span><span class="sb-lat mono" data-v-3e78e101>${ssrInterpolate(unref(fps))} FPS </span><span class="copy" data-v-3e78e101> © 2026 ABO · DIGITAL TWIN · ${ssrInterpolate(_ctx.$t("townView.k1h5gxpf137"))}</span></footer>`);
|
|
2771
|
+
if (unref(sheetOpen)) _push(`<div class="sheet-mask" data-v-3e78e101></div>`);
|
|
2689
2772
|
else _push(`<!---->`);
|
|
2690
|
-
|
|
2691
|
-
if (!unref(ready)) _push(`<div data-hud="town-loading" class="loading-mask" data-v-5660e131><div class="loading-spinner" data-v-5660e131></div><span class="loading-text" data-v-5660e131>${ssrInterpolate(_ctx.$t("townView.kvjdqfg059"))}</span></div>`);
|
|
2773
|
+
if (!unref(ready)) _push(`<div data-hud="town-loading" class="loading-mask" data-v-3e78e101><div class="loading-spinner" data-v-3e78e101></div><span class="loading-text" data-v-3e78e101>${ssrInterpolate(_ctx.$t("townView.kvjdqfg059"))}</span></div>`);
|
|
2692
2774
|
else _push(`<!---->`);
|
|
2693
2775
|
_push(`</div>`);
|
|
2694
2776
|
};
|
|
@@ -2702,7 +2784,7 @@ TownView_vue_vue_type_script_setup_true_lang_default.setup = (props, ctx) => {
|
|
|
2702
2784
|
(ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/workshop/town/TownView.vue");
|
|
2703
2785
|
return _sfc_setup ? _sfc_setup(props, ctx) : void 0;
|
|
2704
2786
|
};
|
|
2705
|
-
var TownView_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TownView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-
|
|
2787
|
+
var TownView_default = /*#__PURE__*/ Object.assign(_plugin_vue_export_helper_default(TownView_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-3e78e101"]]), { __name: "WorkshopTownView" });
|
|
2706
2788
|
|
|
2707
2789
|
export { TownView_default as T, useStorage as u };
|
|
2708
|
-
//# sourceMappingURL=TownView-
|
|
2790
|
+
//# sourceMappingURL=TownView-BuLAsmpR.mjs.map
|