@camstack/addon-admin-ui 1.2.502 → 1.2.503

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/assets/{AddonAssetIcon-BE4IRtcr.js → AddonAssetIcon-DRZmNGlG.js} +1 -1
  3. package/dist/assets/{Addons-BpGMIVwu.js → Addons-RW0QdiVT.js} +1 -1
  4. package/dist/assets/{AdminPage-DO4TvyzZ.js → AdminPage-Bn1s1Zyw.js} +1 -1
  5. package/dist/assets/{AdminSectionedPage-DbSVTTH0.js → AdminSectionedPage-OHmEcMxM.js} +1 -1
  6. package/dist/assets/{AiProfiles-DlLpJu6R.js → AiProfiles-CrsCHAWJ.js} +1 -1
  7. package/dist/assets/{BrokerEditorDialog-ZqEB1OeF.js → BrokerEditorDialog-0I2FqCxl.js} +1 -1
  8. package/dist/assets/{Build-D-kordXj.js → Build-vzgL6An-.js} +1 -1
  9. package/dist/assets/{Calendars-CPKyT4jY.js → Calendars-CdAizSco.js} +1 -1
  10. package/dist/assets/{Cluster-2uEFOeHM.js → Cluster-Bg0lO7ax.js} +1 -1
  11. package/dist/assets/{CompositionBlockEditor-Ch4cyhPp.js → CompositionBlockEditor-CP3_SX84.js} +1 -1
  12. package/dist/assets/{CompositionEditorPage-mWPEX9E1.js → CompositionEditorPage-DfjSU7uD.js} +1 -1
  13. package/dist/assets/{Data-DHfi_Lpj.js → Data-D2dSu7s6.js} +1 -1
  14. package/dist/assets/{DeviceDetail-Dj663lX6.js → DeviceDetail-Dd1ulCyf.js} +2 -2
  15. package/dist/assets/{DeviceDoActionFields-BjxeF1AZ.js → DeviceDoActionFields-CHeeEoE0.js} +1 -1
  16. package/dist/assets/{Devices-BIokWQGH.js → Devices-gen3hRHJ.js} +1 -1
  17. package/dist/assets/{EmbedPlayerPage-BAopgKNa.js → EmbedPlayerPage-rhZJ1QKl.js} +1 -1
  18. package/dist/assets/{HelperWizard-BVEjPQvM.js → HelperWizard-QNL7ojgt.js} +2 -2
  19. package/dist/assets/History-D84HQRm3.js +1 -0
  20. package/dist/assets/{Identity-Do-Unn14.js → Identity-CxluBwKM.js} +1 -1
  21. package/dist/assets/{IntegrationDetail-Dbw98oyP.js → IntegrationDetail-2QlbVLE7.js} +1 -1
  22. package/dist/assets/{IntegrationHub-cywGK2Wp.js → IntegrationHub-DXhDIgkG.js} +1 -1
  23. package/dist/assets/{Integrations-DeVdSE8D.js → Integrations-Cs-b-69p.js} +1 -1
  24. package/dist/assets/{Integrations-C0ckAtmU.js → Integrations-DT3z5Q5Q.js} +1 -1
  25. package/dist/assets/{Library-DCcWEFFl.js → Library-BYQs9rzN.js} +1 -1
  26. package/dist/assets/{Locations-CYrSAzVs.js → Locations-LcX-LYMF.js} +1 -1
  27. package/dist/assets/{Logs-CfwzwwGK.js → Logs-BEZRwDcR.js} +1 -1
  28. package/dist/assets/{MaskShapeCanvas-DtFd99MF.js → MaskShapeCanvas-Cn8yntgZ.js} +1 -1
  29. package/dist/assets/{MotionZonesSettings-CQl2EA6N.js → MotionZonesSettings-ar2Pege0.js} +1 -1
  30. package/dist/assets/{MyAccess-DD7nAn5h.js → MyAccess-ChxQGXAk.js} +1 -1
  31. package/dist/assets/{Network-BYuL-L4z.js → Network-C7jEJlX5.js} +1 -1
  32. package/dist/assets/{NodeAddonsSettingsPanel-D3T2zuD1.js → NodeAddonsSettingsPanel-DEdzDp8P.js} +1 -1
  33. package/dist/assets/{Notifications-CzX3nzZP.js → Notifications-Dk-cpsUG.js} +1 -1
  34. package/dist/assets/{Pipeline-Bq6O6mrO.js → Pipeline-DanfCspn.js} +1 -1
  35. package/dist/assets/{PrivacyMaskSettings-qYOg-1SO.js → PrivacyMaskSettings-w3Z1Pmp0.js} +1 -1
  36. package/dist/assets/{Recordings-NipGCr6f.js → Recordings-DPC7wBK7.js} +1 -1
  37. package/dist/assets/{ScanNetworkModal-CWiM9HWV.js → ScanNetworkModal-DYNrpcKO.js} +1 -1
  38. package/dist/assets/{SceneMonitorEditor-Ba9gLNWL.js → SceneMonitorEditor-BbGTvgFe.js} +1 -1
  39. package/dist/assets/{SessionsList-DWm1_JRD.js → SessionsList-_-3LQsWm.js} +1 -1
  40. package/dist/assets/{Showroom-ChlaT6Cm.js → Showroom-Cb8HIezy.js} +1 -1
  41. package/dist/assets/{System-Cby1MNlk.js → System-CmmWc699.js} +1 -1
  42. package/dist/assets/{Terminal-BrONi7mZ.js → Terminal-B-DbiagD.js} +1 -1
  43. package/dist/assets/{Viewer-C5qA4uKO.js → Viewer-h_DWBxgH.js} +1 -1
  44. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BTGIQmuA.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-ChYA9pOs.js} +1 -1
  45. package/dist/assets/{addon-icons-context-BZhSRQ2k.js → addon-icons-context-aYGMdVc6.js} +1 -1
  46. package/dist/assets/{archive-BJkTmC56.js → archive-B8nHeizN.js} +1 -1
  47. package/dist/assets/{assignment-candidates-DJLitZnD.js → assignment-candidates-C73e9ykO.js} +1 -1
  48. package/dist/assets/{authed-media-BC_02usb.js → authed-media-OiQVKexs.js} +1 -1
  49. package/dist/assets/{bell-off-DMGqFkTx.js → bell-off-B8qGTZJe.js} +1 -1
  50. package/dist/assets/{boxes-Bajlyp9F.js → boxes-DTEgIla8.js} +1 -1
  51. package/dist/assets/circle-slash--9TzZJnc.js +1 -0
  52. package/dist/assets/client-C6c46gRD.js +674 -0
  53. package/dist/assets/{cloud-upload-BXAu0WA_.js → cloud-upload-CrsNLt4y.js} +1 -1
  54. package/dist/assets/crop-Cf_bbG5R.js +1 -0
  55. package/dist/assets/{device-integration-icon-DLda0bDE.js → device-integration-icon-BStZ5ytk.js} +1 -1
  56. package/dist/assets/device-picker-model-DuRGlFHX.js +1 -0
  57. package/dist/assets/{dist-B3iqcRcx.js → dist-DhM3TUvu.js} +1 -1
  58. package/dist/assets/dist-Dwc9xFn1.js +674 -0
  59. package/dist/assets/{eraser-BP7I6n2j.js → eraser-B6GapSNa.js} +1 -1
  60. package/dist/assets/{hard-drive-download-bSbR-kqh.js → hard-drive-download-CKtXN4eq.js} +1 -1
  61. package/dist/assets/{hostInit-CqBL2ZCP.js → hostInit-Dugn9T0N.js} +1 -1
  62. package/dist/assets/{icons-C3RUxRxL.js → icons-IUDDHPfU.js} +1 -1
  63. package/dist/assets/{index-BGJbArko.js → index-pzq9LOji.js} +3 -3
  64. package/dist/assets/{key-D2U0s0LY.js → key-B1puhv1a.js} +1 -1
  65. package/dist/assets/{key-round-D8xR5lTT.js → key-round-DmUg5DWL.js} +1 -1
  66. package/dist/assets/{layers-sqZU1Efj.js → layers--KlhvTig.js} +1 -1
  67. package/dist/assets/{linked-devices-model-DQCmeWmy.js → linked-devices-model-CNnR_mjb.js} +1 -1
  68. package/dist/assets/{list-ordered-BGulzxMx.js → list-ordered-pBVZh-hF.js} +1 -1
  69. package/dist/assets/{location-owned-usage-CLPPrh2c.js → location-owned-usage-Cwiz3bVN.js} +1 -1
  70. package/dist/assets/{log-in-D88bsbT9.js → log-in-DtNu6ihw.js} +1 -1
  71. package/dist/assets/{memory-stick-DuklOVmZ.js → memory-stick-s804jcfZ.js} +1 -1
  72. package/dist/assets/{message-square-plus-CrWXPaYo.js → message-square-plus-Cl5QQyI7.js} +1 -1
  73. package/dist/assets/{mf-entry-bootstrap-0-d28584aa.js → mf-entry-bootstrap-0-e18bf152.js} +2 -2
  74. package/dist/assets/{mic-off-LpAoBdO7.js → mic-off-Bl1AxZQ6.js} +1 -1
  75. package/dist/assets/{monitor-off-BaVOrPeY.js → monitor-off-Du7HEr2h.js} +1 -1
  76. package/dist/assets/{monitor-smartphone-COSQV55Z.js → monitor-smartphone-DJqsZ1_F.js} +1 -1
  77. package/dist/assets/mount-DuRGlFHX.js +1 -0
  78. package/dist/assets/{player-overlays-DDvKn1W0.js → player-overlays-B4lehTI4.js} +1 -1
  79. package/dist/assets/{recycle-CD8ymUv3.js → recycle-Clfv9-vM.js} +1 -1
  80. package/dist/assets/remoteEntry-C4v7BKsX.js +1 -0
  81. package/dist/assets/{scan-eye-CdfmPhrl.js → scan-eye-k8IsYrRV.js} +1 -1
  82. package/dist/assets/{scissors-Bl3fg6Ss.js → scissors-DSR_hX9P.js} +1 -1
  83. package/dist/assets/{search-x-CZruDJ75.js → search-x-CJK6g57h.js} +1 -1
  84. package/dist/assets/{send-Cdk8pNT7.js → send-BXMUOnLc.js} +1 -1
  85. package/dist/assets/{settings-2-DqKxa0Hf.js → settings-2-D_d4vkzK.js} +1 -1
  86. package/dist/assets/{sigma-ByejGGJ9.js → sigma-C5zYB6Cq.js} +1 -1
  87. package/dist/assets/{speaker-B-TcfLx7.js → speaker-BCuags2o.js} +1 -1
  88. package/dist/assets/{src-TayryneI.js → src-DlnTixq9.js} +8 -8
  89. package/dist/assets/{step-inspector-model-B6yVCl09.js → step-inspector-model-DP-n2a-m.js} +1 -1
  90. package/dist/assets/{table-2-C753-50s.js → table-2-DecfWh5K.js} +1 -1
  91. package/dist/assets/{timer-reset-CF7cF_Ga.js → timer-reset-CdW4OGWJ.js} +1 -1
  92. package/dist/assets/{unlink-C3Qb_GTc.js → unlink-Chgtl9c5.js} +1 -1
  93. package/dist/assets/{usb-CTHiJtrH.js → usb-DSG8UHuC.js} +1 -1
  94. package/dist/assets/{use-scenes-feed-onSFrxVP.js → use-scenes-feed-Px1hbQDA.js} +1 -1
  95. package/dist/assets/{use-stationary-objects-CpKg50zN.js → use-stationary-objects-WqiRmYIc.js} +1 -1
  96. package/dist/assets/useEventInvalidation-DuRGlFHX.js +1 -0
  97. package/dist/assets/{useNodeUrlSelection-B-S1kSBF.js → useNodeUrlSelection-DW98VTZs.js} +1 -1
  98. package/dist/assets/user-round-CsUnuDee.js +1 -0
  99. package/dist/assets/{user-x-BaEc4WgN.js → user-x-Ddy9Al8t.js} +1 -1
  100. package/dist/assets/{variable-b7iNWVN7.js → variable-BGeMjiqk.js} +1 -1
  101. package/dist/assets/{video-CF2QZpF3.js → video-B-2RwuDj.js} +1 -1
  102. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-B0_zurpm.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CoUIkQxD.js} +2 -2
  103. package/dist/index.html +8 -8
  104. package/dist/server/addon.js +102 -116
  105. package/package.json +1 -1
  106. package/dist/assets/History-DJR_LsxX.js +0 -1
  107. package/dist/assets/circle-slash-Dng6-XsF.js +0 -1
  108. package/dist/assets/client-BqE1zM9p.js +0 -674
  109. package/dist/assets/crop-CLBowvwG.js +0 -1
  110. package/dist/assets/device-picker-model-CHicgClc.js +0 -1
  111. package/dist/assets/dist-KDpN_XDi.js +0 -674
  112. package/dist/assets/mount-CHicgClc.js +0 -1
  113. package/dist/assets/remoteEntry-Br1rMgc-.js +0 -1
  114. package/dist/assets/useEventInvalidation-CHicgClc.js +0 -1
  115. package/dist/assets/user-round-D_ZjF5gh.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-admin-ui",
3
- "version": "1.2.502",
3
+ "version": "1.2.503",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Admin UI — Vite frontend build and server-side addon",
@@ -1 +0,0 @@
1
- import{C as e,K as t,S as n,Y as r,et as i,i as a,x as o}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{En as s,Ht as c,Tr as l,ct as u,dt as d,fr as f,gt as p,ki as m,pa as h,st as g,xn as _}from"./player-overlays-DDvKn1W0.js";import{_r as v,la as y}from"./client-BqE1zM9p.js";import{A as b,C as x,Cn as S,Cr as C,D as w,Do as T,Dr as E,E as D,Er as O,Lr as k,M as A,Md as ee,N as j,O as M,Or as N,P as te,Pr as ne,S as re,Sn as P,Tr as F,Vr as I,Yr as L,_ as ie,_r as ae,b as R,bn as z,d as oe,dr as se,f as ce,fn as le,fr as ue,gr as de,h as fe,hr as pe,j as me,k as he,lu as ge,m as _e,no as ve,pn as ye,pr as be,ri as B,to as xe,u as Se,v as Ce,w as we,x as V}from"./src-TayryneI.js";import{t as H}from"./useTranslation-BJr-n0es.js";import{gr as Te}from"./index-BGJbArko.js";import{t as Ee}from"./AdminPage-DO4TvyzZ.js";i();function U(e,t){return e.scope===``?e.displayName:`${e.displayName} · ${t?.(e)??e.scope}`}function De(e,t,n){let r=[];for(let{device:t,series:i}of e)for(let e of i){let i={subject:{kind:`device`,deviceId:t.id},key:e.key,scope:e.scope};r.push({id:V(i),ref:i,info:e,subjectName:t.name,location:t.location??``,nodeId:``,metric:U(e,n)})}for(let{node:e,series:i}of t)for(let t of i){let i={subject:{kind:`node`,nodeId:e.id},key:t.key,scope:t.scope};r.push({id:V(i),ref:i,info:t,subjectName:e.name,location:``,nodeId:e.id,metric:U(t,n)})}return r}function Oe(e){return[e.subjectName,e.location,e.metric,e.info.key,e.info.unit??``,e.nodeId].join(` `)}function W(e,t,n){if(e.ref.subject.kind!==`device`||t===null)return e.subjectName;let r=t.byId.get(e.ref.subject.deviceId);return r===void 0?e.subjectName:ne(r,`compact`,t,n)}var ke=[`energy`,`temperatures`,`nodes`,`storage`],Ae=new Set([`cap:temperature-sensor.celsius`,`cap:climate-control.currentTemp`]),G=[`addon:metrics-native/node-cpu-percent`,`addon:metrics-native/node-memory-percent`],je=`addon:storage-orchestrator/location-used-percent`;function Me(e,t){let n=(e,n)=>{let r=t.filter(e);return R((n?[...r].sort(n):r).map(e=>e.ref))};switch(e){case`energy`:return n(e=>e.ref.subject.kind===`device`&&e.info.key===`derived:energy.kwh`);case`temperatures`:return n(e=>e.ref.subject.kind===`device`&&Ae.has(e.info.key)&&e.info.scope===``,(e,t)=>e.location.localeCompare(t.location)||e.subjectName.localeCompare(t.subjectName));case`nodes`:return n(e=>e.ref.subject.kind===`node`&&G.includes(e.info.key)&&e.info.scope===``,(e,t)=>G.indexOf(e.info.key)-G.indexOf(t.info.key)||e.subjectName.localeCompare(t.subjectName));case`storage`:return n(e=>e.ref.subject.kind===`node`&&e.info.key===je)}}function Ne(e,t){let n=new Map(t.map(e=>[e.id,e])),r=[],i=[],a=[],o=[];for(let t of R(e)){let e=n.get(V(t));if(e===void 0){o.push(t);continue}e.info.key===`derived:energy.kwh`?a.push(e):e.info.kind===`boolean`||e.info.kind===`enum`?i.push(e):r.push(e)}return{lines:r,states:i,energy:a,missing:o}}function K(e){return e.subject.kind===`device`?{deviceId:e.subject.deviceId,key:e.key,scope:e.scope}:{forNodeId:e.subject.nodeId,key:e.key,scope:e.scope}}var q=`history-page`;function Pe({part:r,window:i}){let{t:a}=H(),o=h(),s=I(),c=k(),l=e=>`${W(e,s,c)} · ${e.metric}`,u=t(()=>[...r.lines,...r.states,...r.energy],[r]),d=_e(t(()=>u.map(e=>K(e.ref)),[u]),i,!1),f=e=>d.status===`ok`?d.data.current.get(ce(K(e.ref))):void 0,p=e=>{let t=f(e);return t?.ok?t.result:void 0};if(u.length===0)return n(O,{icon:m,title:a(`history.page.emptyTitle`,`Pick series to compare`),description:a(`history.page.emptyHint`,`Choose up to 24 series on the left, or start from a panel above.`)});if(d.status===`error`)return n(F,{title:a(`history.page.readFailed`,`History could not be read`),message:d.error});let g=d.status===`pending`,_=u.map(e=>({c:e,e:f(e)})).filter(e=>e.e?.ok===!1),v=r.lines.map((e,t)=>{let n=p(e),r=w(e.info,n,i.from);return{id:e.id,label:l(e),unit:e.info.unit,colorIndex:t,points:r.points,gapMs:r.gapMs,interpolation:r.held&&n?.resolution===`raw`?`step`:`linear`}}),y=r.states.map((e,t)=>{let n=M(e.info,p(e),i.from,i.to),r=we(e.info.key,o);return{id:e.id,label:l(e),kind:e.info.kind===`boolean`?`boolean`:`enum`,colorIndex:e.info.kind===`boolean`?t:0,states:n.states,segments:n.segments,totals:n.totals,stateLabel:e.info.kind===`boolean`?e=>e===`true`?r.on:r.off:void 0}}),b=r.energy.map(e=>({c:e,...D(p(e))})),x=b[0]?.bucketMs??36e5,S=[...new Set(b.flatMap(e=>e.buckets.map(e=>e.t)))].sort((e,t)=>e-t).map(e=>({t:e,values:b.map(t=>t.buckets.find(t=>t.t===e)?.values[0]??null)}));return e(`div`,{className:`space-y-5 min-w-0`,children:[_.length>0&&n(F,{title:a(`history.page.someFailed`,`Some series could not be read`),message:_.map(e=>`${l(e.c)}: ${e.e.error}`).join(` · `)}),v.length>0&&n(te,{title:a(`history.page.lines`,`Measurements`),series:v,range:i,height:260,syncKey:q,pending:g}),b.length>0&&n(C,{title:a(`history.page.energy`,`Energy`),layers:b.map((e,t)=>({id:e.c.id,label:W(e.c,s,c),colorIndex:t})),buckets:S,bucketMs:x,range:i,unit:`kWh`,showTotal:!0,height:160,syncKey:q,pending:g}),y.length>0&&n(j,{title:y.length===1?y[0]?.label??``:a(`history.page.states`,`States`),rows:y,range:i,syncKey:q,pending:g})]})}function Fe(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}async function Ie(e,t){let n=[];for(let r of Fe(e,50))try{let{results:e}=await t(r),i=new Map(e.map(e=>[e.seriesId,e]));for(let e of r)n.push(i.get(e)??{seriesId:e,ok:!1,reason:`not-found`})}catch(e){let t=e instanceof Error?e.message:String(e);for(let e of r)n.push({seriesId:e,ok:!1,reason:`request-failed`,message:t})}return n}function J(e){return e.raw+e[`5m`]+e[`1h`]+e[`1d`]}function Le(e){return e.reduce((e,t)=>t.ok?{...e,deleted:e.deleted+1,points:e.points+J(t.deleted)}:{...e,refused:e.refused+1},{deleted:0,refused:0,points:0})}function Re(e,t){let n=new Map(e.map(e=>[e.seriesId,e]));return t.flatMap(e=>{let t=n.get(e.seriesId);return t===void 0?[]:[{series:t,outcome:e}]})}var Y=e=>new Date(e).toLocaleDateString(void 0,{dateStyle:`short`});function X(e,t,n){let r=t.get(e.deviceId);return r===void 0?e.reason===`device-gone`?n(`history.orphans.deviceRemoved`,`#{{id}} (removed)`,{id:e.deviceId}):n(`history.orphans.deviceId`,`#{{id}}`,{id:e.deviceId}):r}function Z(e){let t=e.displayName??e.key;return e.scope===``?t:`${t} · ${e.scope}`}function Q(t,r,i){return{key:`series`,header:i(`history.orphans.colSeries`,`Series`),render:a=>{let o=t(a);return e(`div`,{className:`min-w-0 max-w-[16rem]`,children:[n(`div`,{className:`truncate text-foreground`,title:o.key,children:Z(o)}),n(`div`,{className:`truncate text-[10px] text-foreground-subtle`,children:X(o,r,i)})]})},sortValue:e=>`${X(t(e),r,i)} ${Z(t(e))}`}}var ze=[`raw`,`5m`,`1h`,`1d`];function Be(e,t){return e===`raw`?t(`history.orphans.colRaw`,`Raw points`):e===`5m`?t(`history.orphans.col5m`,`5 min`):e===`1h`?t(`history.orphans.col1h`,`1 h`):t(`history.orphans.col1d`,`1 day`)}function Ve(t,r){return[Q(e=>e,t,r),{key:`reason`,header:r(`history.orphans.colReason`,`Reason`),render:t=>e(`div`,{className:`flex flex-col items-start gap-0.5`,children:[n(B,{variant:t.reason===`device-gone`?`warning`:`neutral`,className:`text-[10px]`,children:t.reason===`device-gone`?r(`history.orphans.deviceGone`,`Device removed`):r(`history.orphans.undeclared`,`No longer declared`)}),t.missingSince!==null&&n(`span`,{className:`text-[10px] text-foreground-subtle`,children:r(`history.orphans.since`,`since {{date}}`,{date:Y(t.missingSince)})})]}),sortValue:e=>e.reason},{key:`span`,header:r(`history.orphans.colSpan`,`Recorded`),render:t=>e(`span`,{className:`tabular-nums text-foreground-muted`,children:[Y(t.firstTs),` → `,Y(t.lastTs)]}),sortValue:e=>e.lastTs},...ze.map(e=>({key:`rows-${e}`,header:Be(e,r),align:`right`,render:t=>n(`span`,{className:`tabular-nums text-foreground-muted`,children:t.rows[e].toLocaleString()}),sortValue:t=>t.rows[e]}))]}function He(e,t){if(e.ok)return n(B,{variant:`success`,className:`text-[10px]`,children:t(`history.orphans.deleted`,{count:J(e.deleted),points:J(e.deleted).toLocaleString(),defaultValue_one:`Deleted · {{points}} point`,defaultValue_other:`Deleted · {{points}} points`})});let r=e.reason===`request-failed`?t(`history.orphans.requestFailed`,`Not sent: {{message}}`,{message:e.message}):e.reason===`not-orphan`?t(`history.orphans.refusedNotOrphan`,`Kept: no longer orphan`):e.reason===`not-found`?t(`history.orphans.refusedNotFound`,`Already gone`):t(`history.orphans.refusedFailed`,`The hub could not delete it`);return n(B,{variant:e.reason===`not-found`?`neutral`:`warning`,className:`text-[10px]`,children:r})}function Ue(e,t){return[Q(e=>e.series,e,t),{key:`result`,header:t(`history.orphans.colResult`,`Result`),render:e=>He(e.outcome,t),sortValue:e=>+!e.outcome.ok}]}i();function We({open:i,onClose:a,list:o,deviceNames:l,onDelete:u,onRefresh:d,refreshing:p}){let{t:m}=H(),h=g(),[_,v]=r(new Set),[y,b]=r(!1),[x,C]=r([]),w=t(()=>Ve(l,m),[l,m]),T=t(()=>Ue(l,m),[l,m]),E=t(()=>new Set(o.series.map(e=>String(e.seriesId))),[o.series]),D=[..._].filter(e=>E.has(e)).map(Number),O=Le(x.map(e=>e.outcome)),k=async()=>{if(await h({title:m(`history.orphans.confirmTitle`,{count:D.length,defaultValue_one:`Delete {{count}} series`,defaultValue_other:`Delete {{count}} series`}),message:m(`history.orphans.confirmMessage`,`Every recorded point of these series is removed from the hub. This cannot be undone.`),confirmLabel:m(`history.orphans.confirmLabel`,`Delete`),variant:`danger`})){b(!0);try{let e=await Ie(D,u);C(Re(o.series,e)),v(new Set)}finally{b(!1),d()}}};return n(se,{open:i,onOpenChange:e=>!e&&a(),children:e(be,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,"data-testid":`orphan-series-dialog`,children:[n(de,{children:n(ae,{children:m(`history.orphans.title`,`Series no longer linked to a device`)})}),e(ue,{className:`space-y-3`,children:[n(`p`,{className:`text-xs text-foreground-muted`,children:m(`history.orphans.intro`,`Nothing records into these series any more: their device was removed, or no capability declares them now. Select the ones to delete.`)}),o.truncated&&e(`div`,{className:`flex flex-wrap items-center gap-2`,"data-testid":`orphan-truncated`,children:[n(`p`,{className:`text-xs text-warning`,children:m(`history.orphans.truncated`,`More series are unlinked than are listed here. Delete these, then load the rest.`)}),e(L,{size:`sm`,variant:`outline`,onClick:d,disabled:p,children:[n(s,{className:`h-3 w-3`,"aria-hidden":!0}),m(`history.orphans.loadAgain`,`Load again`)]})]}),x.length>0&&e(`div`,{className:`space-y-2`,"data-testid":`orphan-outcomes`,children:[n(`p`,{className:`text-xs text-foreground`,"aria-live":`polite`,children:m(`history.orphans.summary`,{count:O.deleted,refused:O.refused,points:O.points.toLocaleString(),defaultValue_one:`{{count}} series deleted ({{points}} points), {{refused}} kept.`,defaultValue_other:`{{count}} series deleted ({{points}} points), {{refused}} kept.`})}),n(P,{columns:T,rows:x,rowKey:e=>String(e.series.seriesId),minWidthPx:420,maxBodyHeight:`max-h-[60vh]`,emptyMessage:``})]}),n(P,{columns:w,rows:o.series,rowKey:e=>String(e.seriesId),minWidthPx:760,maxBodyHeight:S,defaultSort:{columnKey:`series`,dir:`asc`},emptyMessage:m(`history.orphans.empty`,`Every series is linked to a device.`),selection:{selected:_,onChange:v,rowLabel:e=>`${Z(e)} — ${X(e,l,m)}`,pageLabel:m(`history.orphans.selectAll`,`Select every listed series`)}})]}),e(pe,{children:[n(`span`,{className:`mr-auto text-[11px] tabular-nums text-foreground`,"aria-live":`polite`,children:m(`history.orphans.selected`,{count:D.length,defaultValue_one:`{{count}} selected`,defaultValue_other:`{{count}} selected`})}),n(L,{variant:`ghost`,size:`sm`,onClick:a,children:m(`history.orphans.close`,`Close`)}),e(L,{variant:`danger`,size:`sm`,disabled:D.length===0||y,onClick:()=>void k(),children:[y?n(f,{className:`h-3 w-3 animate-spin`,"aria-hidden":!0}):n(c,{className:`h-3 w-3`,"aria-hidden":!0}),m(`history.orphans.deleteSelected`,`Delete selected`)]})]})]})})}i();var Ge=5*6e4;function Ke({enabled:i}){let{t:a}=H(),[s,c]=r(!1),l=ve({},{enabled:i,staleTime:Ge}),u=T({projection:`slim`},{enabled:i}),d=xe(),f=t(()=>new Map((u.data??[]).map(e=>[e.id,e.name])),[u.data]),p=e=>d.mutateAsync({seriesIds:[...e]});if(!i||l.status===`pending`)return null;if(l.status===`error`)return n(F,{variant:`warning`,title:a(`history.orphans.checkFailedTitle`,`Could not check for unlinked series`),message:l.error.message,onRetry:()=>void l.refetch()});let m=l.data;if(m.series.length===0&&!s)return null;let h=m.series.length;return e(o,{children:[h>0&&n(F,{variant:`warning`,message:m.truncated?a(`history.orphans.noticeMore`,{count:h,defaultValue_one:`More than {{count}} series are no longer linked to a device.`,defaultValue_other:`More than {{count}} series are no longer linked to a device.`}):a(`history.orphans.notice`,{count:h,defaultValue_one:`{{count}} series is no longer linked to a device.`,defaultValue_other:`{{count}} series are no longer linked to a device.`}),action:n(L,{size:`sm`,variant:`outline`,onClick:()=>c(!0),children:a(`history.orphans.review`,`Review`)})}),n(We,{open:s,onClose:()=>c(!1),list:m,deviceNames:f,onDelete:p,onRefresh:()=>void l.refetch(),refreshing:l.isFetching})]})}i();var qe=`device`,Je=`node`;function Ye({catalog:r,selected:i,onChange:a,loading:o}){let{t:s}=H(),c=I(),l=k(),u=e=>W(e,c,l),d=le(r,{searchText:e=>[Oe(e)],facetGroups:[{id:`subject`,value:e=>e.ref.subject.kind===`device`?qe:Je},{id:`room`,value:e=>e.location},{id:`unit`,value:e=>e.info.unit??``}]}),f=t(()=>[{key:`metric`,header:s(`history.picker.series`,`Series`),render:t=>e(`div`,{className:`min-w-0`,children:[n(`div`,{className:`truncate text-foreground`,children:t.metric}),n(`div`,{className:`truncate text-[10px] text-foreground-subtle`,children:t.location===``?u(t):`${u(t)} · ${t.location}`})]}),sortValue:e=>`${e.subjectName} ${e.metric}`},{key:`unit`,header:s(`history.picker.unit`,`Unit`),render:e=>n(`span`,{className:`text-foreground-muted`,children:e.info.unit??`—`}),sortValue:e=>e.info.unit??``}],[s,c,l]),p=i.size>=24;return e(`div`,{className:`space-y-2 min-w-0`,children:[n(ye,{state:d.state,facets:[],groups:[{...d.groups.find(e=>e.id===`subject`)??{id:`subject`,facets:[],selected:[]},label:s(`history.picker.subject`,`Source`),facetLabel:e=>e===qe?s(`history.picker.devices`,`Devices`):s(`history.picker.nodes`,`Nodes`)},{...d.groups.find(e=>e.id===`room`)??{id:`room`,facets:[],selected:[]},label:s(`history.picker.room`,`Room`),facetLabel:e=>e===``?s(`history.picker.noRoom`,`No room`):e},{...d.groups.find(e=>e.id===`unit`)??{id:`unit`,facets:[],selected:[]},label:s(`history.picker.metricType`,`Unit`),facetLabel:e=>e===``?s(`history.picker.noUnit`,`States & counts`):e}],labels:{searchPlaceholder:s(`history.picker.search`,`Search device, room, metric or node…`),searchLabel:s(`history.picker.searchLabel`,`Search series`),facetsLabel:s(`history.picker.facets`,`Filters`),clearLabel:s(`history.picker.clear`,`Clear`)},onSearch:d.setSearch,onToggleFacet:d.toggleFacet,onToggleGroupFacet:d.toggleGroupFacet,onClear:d.clear}),n(`p`,{className:`text-[10px] text-foreground-subtle`,"aria-live":`polite`,children:s(`history.picker.count`,`{{count}} of {{max}} selected`,{count:i.size,max:24})}),n(P,{columns:f,rows:d.rows,rowKey:e=>e.id,maxBodyHeight:S,pageSize:50,defaultSort:{columnKey:`metric`,dir:`asc`},emptyMessage:o?s(`history.picker.loading`,`Reading the series of every device…`):d.active?s(`history.picker.emptyFiltered`,`No series match these filters.`):s(`history.picker.empty`,`Nothing is recorded yet.`),selection:{selected:i,onChange:e=>{let t=[...e].filter(e=>i.has(e)),n=[...e].filter(e=>!i.has(e));a(new Set([...t,...n].slice(0,24)))},isSelectable:e=>i.has(e.id)||!p,rowLabel:e=>`${u(e)} · ${e.metric}`,pageLabel:s(`history.picker.selectPage`,`Select every series on this page`)}})]})}i();var Xe=new Set([y.Hub,y.Container]),$=5*6e4;function Ze(){let{t:r}=H(),i=E(`device-history`),[a,o]=Te(),s=t(()=>R(a.getAll(`s`).flatMap(e=>{let t=ie(e);return t===null?[]:[t]})),[a]),c=a.get(`window`),d=me(c)?c:`7d`,f=he(a.get(`range`)),h=(e,t,n)=>{let r=new URLSearchParams;for(let t of R(e))r.append(`s`,Ce(t));t!==`7d`&&r.set(`window`,t);let i=n===void 0?a.get(`range`):n;t===`custom`&&i&&r.set(`range`,i),o(r,{replace:!0})},v=Qe(i===`present`),y=A(d,Date.now(),f),S=A(d,oe(Date.now(),y.to-y.from),f),C=t(()=>Ne(s,v.candidates),[s,v.candidates]),w=t(()=>new Set(s.map(V)),[s]),T=Se(),D=u(),k=g(),ee=async()=>{let e=await D({title:r(`history.page.saveTitle`,`Save as panel`),label:r(`history.page.saveName`,`Panel name`),confirmLabel:r(`history.page.save`,`Save`)});e===null||e.trim()===``||await T.update(t=>re(t,{id:`panel-${Date.now().toString(36)}`,name:e.trim().slice(0,80),window:d,selection:[...s]}))},j=async(e,t)=>{await k({title:r(`history.page.deleteTitle`,`Delete panel`),message:r(`history.page.deleteMessage`,`The panel "{{name}}" is removed from your account.`,{name:t}),confirmLabel:r(`history.page.delete`,`Delete`),variant:`danger`})&&await T.update(t=>x(t,e))},M=e=>e===`energy`?r(`history.panels.energy`,`Total energy`):e===`temperatures`?r(`history.panels.temperatures`,`Temperatures by room`):e===`nodes`?r(`history.panels.nodes`,`Cluster nodes`):r(`history.panels.storage`,`Storage locations`);return n(Ee,{icon:m,title:r(`history.page.title`,`History`),subtitle:r(`history.page.subtitle`,`What devices, nodes and storage recorded over time, side by side.`),actions:i===`present`?e(L,{size:`sm`,variant:`outline`,onClick:()=>void ee(),disabled:s.length===0||!T.writable,children:[n(_,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),r(`history.page.saveTitle`,`Save as panel`)]}):void 0,children:i===`pending`?n(N,{className:`h-64 w-full`}):i===`unknown`?n(F,{title:r(`history.page.presenceUnknownTitle`,`Could not reach the hub`),message:r(`history.page.presenceUnknown`,`The hub did not say whether device history is installed. Try again in a moment.`)}):i===`absent`?n(O,{icon:l,title:r(`history.page.absentTitle`,`Device history is not running on this hub`),description:r(`history.page.absent`,`Nothing is recorded until the device-history system addon is enabled.`)}):e(`div`,{className:`space-y-3 sm:space-y-4`,children:[n(Ke,{enabled:i===`present`}),e(`div`,{className:`flex flex-wrap items-center gap-2`,role:`group`,"aria-label":r(`history.page.panels`,`Panels`),children:[ke.map(e=>n(L,{size:`sm`,variant:`outline`,disabled:v.status!==`ok`,onClick:()=>h(Me(e,v.candidates),d),children:M(e)},e)),T.value.panels.map(t=>e(`span`,{className:`inline-flex items-center`,children:[n(L,{size:`sm`,variant:`secondary`,onClick:()=>h(t.selection,t.window,null),children:t.name}),n(L,{size:`sm`,variant:`ghost`,"aria-label":r(`history.page.deleteNamed`,`Delete panel {{name}}`,{name:t.name}),onClick:()=>void j(t.id,t.name),disabled:!T.writable,children:n(p,{className:`h-3.5 w-3.5`,"aria-hidden":`true`})})]},t.id))]}),e(`div`,{className:`grid grid-cols-1 gap-3 sm:gap-4 xl:grid-cols-5`,children:[n(`div`,{className:`min-w-0 xl:col-span-2`,children:n(z,{headingId:`history-picker`,title:r(`history.picker.title`,`Series`),children:n(`div`,{className:`p-2 sm:p-3`,children:v.status===`error`?n(F,{message:v.error}):n(Ye,{catalog:v.candidates,loading:v.status===`pending`,selected:w,onChange:e=>{let t=s.filter(t=>e.has(V(t))),n=v.candidates.filter(t=>e.has(t.id)&&!w.has(t.id)).map(e=>e.ref);h([...t,...n],d)}})})})}),n(`div`,{className:`min-w-0 xl:col-span-3`,children:n(z,{headingId:`history-overlay`,title:r(`history.page.overlay`,`Overlay`),actions:s.length>0?n(L,{size:`sm`,variant:`ghost`,onClick:()=>h([],d),children:r(`history.page.clear`,`Clear`)}):void 0,children:e(`div`,{className:`p-2 sm:p-3 space-y-3 min-w-0`,children:[n(fe,{value:d,onChange:e=>h(s,e),custom:f,onCustomChange:e=>h(s,`custom`,b(e))}),v.status===`pending`&&s.length>0?n(N,{className:`h-64 w-full`}):n(Pe,{part:C,window:S}),C.missing.length>0&&v.status===`ok`&&n(`p`,{className:`text-[11px] text-foreground-subtle`,children:r(`history.page.missing`,{count:C.missing.length,defaultValue_one:`{{count}} selected series is no longer recorded.`,defaultValue_other:`{{count}} selected series are no longer recorded.`})})]})})})]})]})})}function Qe(e){let{t:n}=H(),r=n(`history.picker.wholeFrame`,`Whole frame`),i=d().trpcClient,o=T({projection:`slim`},{enabled:e}),{nodes:s}=ee(),c=t(()=>(o.data??[]).filter(e=>!Xe.has(String(e.type))),[o.data]),l=a({queries:c.map(t=>({queryKey:[`device-history`,`listSeries`,t.id],queryFn:()=>i.deviceHistory.listSeries.query({deviceId:t.id}),enabled:e,staleTime:$}))}),u=a({queries:s.map(t=>({queryKey:[`device-history`,`listNodeSeries`,t.id],queryFn:()=>i.deviceHistory.listNodeSeries.query({forNodeId:t.id}),enabled:e,staleTime:$}))}),f=ge({},{enabled:e,staleTime:$}),p=t(()=>new Map((f?.data??[]).map(e=>[e.id,e.displayName])),[f?.data]),m=l.map(e=>e.data),h=u.map(e=>e.data),g=t(()=>De(c.flatMap((e,t)=>{let n=m[t];return n===void 0?[]:[{device:{id:e.id,name:e.name,location:e.location??null},series:n}]}),s.flatMap((e,t)=>{let n=h[t];return n===void 0?[]:[{node:{id:e.id,name:e.name},series:n}]}),e=>{if(e.key!==`addon:pipeline-analytics/occupancy`)return p.get(e.scope)??e.scope;let{zoneId:t,className:n}=v(e.scope),i=t===``?r:t;return n===void 0?i:`${i} · ${n}`}),[c,s,p,[...l,...u].map(e=>e.dataUpdatedAt).join(`,`),r]);return o.status===`error`?{status:`error`,error:o.error.message,candidates:[]}:{status:o.status===`pending`||l.some(e=>e.isPending)||u.some(e=>e.isPending)?`pending`:`ok`,error:``,candidates:g}}export{Ze as HistoryPage};
@@ -1 +0,0 @@
1
- import{ca as e}from"./player-overlays-DDvKn1W0.js";var t=e(`circle-slash`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`9`,x2:`15`,y1:`15`,y2:`9`,key:`1dfufj`}]]);export{t};