PageSourceSearch

https://www.energipilot.ai/_app/immutable/nodes/33.Bqe6TPzt.js

js energipilot.ai collected 2026-10-05 12:12:16 UTC 13,570 bytes, 1 lines download raw bytes

1import"../chunks/Bzak7iHL.js";import{p as Ae,j as t,e as oe,g as Qe,q as Re,av as ie,v as A,h as ne,f as x,n as E,i as G,t as ce,a,s,b as ke,aw as Ie,au as We,u as P,d as D,r as $,c as Q,k as Ye}from"../chunks/DiO2CZui.js";import{s as ae}from"../chunks/BmLM3EiO.js";import{p as Se,i as le}from"../chunks/DJUPFnnO.js";import{e as Te,i as je}from"../chunks/oIFMjm7i.js";import{c as v}from"../chunks/D48zowx1.js";import"../chunks/3S0pBhbd.js";import{B as Pe}from"../chunks/CUZnTjrT.js";import{B as De,a as Ze}from"../chunks/Bo_KUe22.js";import{B as Be}from"../chunks/BLA8L0v9.js";import{R as ze}from"../chunks/Bd_dBWCd.js";import{B as me}from"../chunks/ifxiHgte.js";import{I as et}from"../chunks/CCiWPtXH.js";import{E as tt}from"../chunks/LFRpsF9G.js";import{S as rt}from"../chunks/Bj9rMhfm.js";import{T as ot}from"../chunks/BmQ_zl54.js";import{s as at}from"../chunks/C1k1hgm9.js";import{t as Le,A as st,B as dt}from"../chunks/BYuzPCVz.js";import{a as it}from"../chunks/DsJPz9uH.js";import{d as qe,A as Fe,a as Ue,b as Ve,c as Ge}from"../chunks/kPuFdtIW.js";import{A as Xe}from"../chunks/CkE5K470.js";import{I as ve}from"../chunks/CjyxznbS.js";import{S as lt}from"../chunks/jwt2dlOR.js";import{S as ye}from"../chunks/Cl24Hjrh.js";import"../chunks/zHgLGl0x.js";import{l as nt,m as ct,n as ut}from"../chunks/KVu73d2t.js";import"../chunks/COSSQXEf.js";import"../chunks/B0XwC4Ot.js";import{z as vt,d as mt,b as pt}from"../chunks/Dpr-pgqc.js";import{a as ft}from"../chunks/tQFe8wya.js";import{t as pe}from"../chunks/OA9zYGmM.js";import{A as _t}from"../chunks/Cj92WR8H.js";import{X as gt}from"../chunks/cnFbJfxw.js";import{N as $t}from"../chunks/C2gdUtvm.js";import{P as ht}from"../chunks/DkvCG_cj.js";import{T as yt}from"../chunks/Dx0_NVOQ.js";var we=Q("<!> <!>",1),xt=Q('<div class="space-y-2"><!><!></div>'),bt=Q('<div class="flex flex-col gap-4 py-4"></div> <div class="flex justify-end gap-2 pt-4"><!><!></div>',1),It=Q('<form method="POST" novalidate=""><div class="flex flex-col gap-4 py-4"><!> <!> <!> <!> <!> <!> <!></div> <!></form>');function Pt(se,h){Ae(h,!0);const r=()=>Ie(w,"$form",l),b=()=>Ie(te,"$errors",l),X=()=>Ie(Y,"$submitting",l),[l,k]=We(),U=Se(h,"mode",3,"create"),p=Se(h,"deviceId",3,null),n=P(()=>U()==="edit"&&p()!==null),O=nt(),j=ct(),I=P(()=>t(n)?j:O),C=Le(),M=st(()=>p()),z=P(()=>(C.data??[]).map(d=>({value:d.id.toString(),label:d.label}))),N=P(()=>M.isPending&&t(n));let S=null;const T=vt(ft),fe=mt({name:"",deviceTypeId:0,commid:"",description:"",serialNo:"",testResults:"",productionInfo:""},T),ee=pt(fe,{SPA:!0,validators:T,onUpdate({form:d,cancel:m}){if(m(),S&&S.set(d.valid?{}:d.errors??{}),d.valid){const f=d.data,L={name:f.name,deviceTypeId:f.deviceTypeId,commid:f.commid,description:f.description||void 0,serialNo:f.serialNo||void 0,testResults:f.testResults||void 0,productionInfo:f.productionInfo||void 0};t(n)&&p()!==null?j.mutate({id:p(),payload:L},{onSuccess:()=>{pe.success("Device updated"),e(),h.closeModal(),j.reset(),oe(i,"")},onError:_=>{pe.error(_.message||"Failed to update")}}):O.mutate(L,{onSuccess:()=>{pe.success("Device created"),e(),h.closeModal(),O.reset(),oe(i,"")},onError:_=>{pe.error(_.message||"Failed to create")}})}}});S=ee.errors;const{form:w,errors:te,enhance:de,submitting:Y,reset:e}=ee;let i=Qe("");Re(()=>{ie(w,A(r).deviceTypeId=parseInt(t(i))||0,A(r))}),Re(()=>{if(M.isSuccess&&M.data&&t(n)){const d=M.data;w.update(m=>({...m,name:d.name??"",deviceTypeId:d.deviceTypeId??0,commid:d.commid??"",description:d.description??"",serialNo:d.serialNo??"",testResults:d.testResults??"",productionInfo:d.productionInfo??""})),oe(i,typeof d.deviceTypeId=="number"&&d.deviceTypeId>0?d.deviceTypeId.toString():"",!0)}else!t(n)&&p()===null&&(e(),oe(i,""))});function c(){S==null||S.set({}),e(),oe(i,""),O.reset(),j.reset(),h.closeModal()}var g=ne(),R=x(g);v(R,()=>qe,(d,m)=>{m(d,{class:"max-w-lg",children:(f,L)=>{var _=we(),ue=x(_);v(ue,()=>Fe,(H,B)=>{B(H,{children:(V,re)=>{var J=we(),K=x(J);v(K,()=>Ue,(W,q)=>{q(W,{children:(y,F)=>{E();var u=G();ce(()=>ae(u,t(n)?"Edit Device":"Add Device")),a(y,u)},$$slots:{default:!0}})});var Z=s(K,2);v(Z,()=>Ve,(W,q)=>{q(W,{children:(y,F)=>{E();var u=G();ce(()=>ae(u,t(n)?"Update device details.":"Register a new hardware device or API endpoint.")),a(y,u)},$$slots:{default:!0}})}),a(V,J)},$$slots:{default:!0}})});var $e=s(ue,2);{var _e=H=>{var B=bt(),V=x(B);Te(V,20,()=>Array(4),je,(Z,W)=>{var q=xt(),y=D(q);ye(y,{class:"h-4 w-32"});var F=s(y);ye(F,{class:"h-10 w-full"}),$(q),a(Z,q)}),$(V);var re=s(V,2),J=D(re);ye(J,{class:"h-10 w-20"});var K=s(J);ye(K,{class:"h-10 w-16"}),$(re),a(H,B)},ge=H=>{var B=It(),V=D(B),re=D(V);{let u=P(()=>{var o;return(o=b().name)==null?void 0:o[0]});ve(re,{id:"dev-name",label:"Name",placeholder:"e.g., Building B Gateway",required:!0,get error(){return t(u)},get value(){return r().name},set value(o){ie(w,A(r).name=o,A(r))}})}var J=s(re,2);{let u=P(()=>{var o;return(o=b().deviceTypeId)==null?void 0:o[0]});lt(J,{id:"dev-type",label:"Device Type",get items(){return t(z)},get error(){return t(u)},get selectedValue(){return t(i)},set selectedValue(o){oe(i,o,!0)}})}var K=s(J,2);{let u=P(()=>{var o;return(o=b().commid)==null?void 0:o[0]});ve(K,{id:"dev-commid",label:"Communication ID",placeholder:"MAC address or URL",required:!0,get error(){return t(u)},get value(){return r().commid},set value(o){ie(w,A(r).commid=o,A(r))}})}var Z=s(K,2);{let u=P(()=>{var o;return(o=b().description)==null?void 0:o[0]});ve(Z,{id:"dev-desc",label:"Description",placeholder:"Optional",get error(){return t(u)},get value(){return r().description},set value(o){ie(w,A(r).description=o,A(r))}})}var W=s(Z,2);{let u=P(()=>{var o;return(o=b().serialNo)==null?void 0:o[0]});ve(W,{id:"dev-serial",label:"Serial Number",placeholder:"Optional",get error(){return t(u)},get value(){return r().serialNo},set value(o){ie(w,A(r).serialNo=o,A(r))}})}var q=s(W,2);{let u=P(()=>{var o;return(o=b().testResults)==null?void 0:o[0]});ve(q,{id:"dev-test",label:"Test Results",placeholder:"Optional",get error(){return t(u)},get value(){return r().testResults},set value(o){ie(w,A(r).testResults=o,A(r))}})}var y=s(q,2);{let u=P(()=>{var o;return(o=b().productionInfo)==null?void 0:o[0]});ve(y,{id:"dev-prod",label:"Production Info",placeholder:"Optional",get error(){return t(u)},get value(){return r().productionInfo},set value(o){ie(w,A(r).productionInfo=o,A(r))}})}$(V);var F=s(V,2);v(F,()=>Ge,(u,o)=>{o(u,{children:(He,Nt)=>{var Oe=we(),Ce=x(Oe);{let xe=P(()=>X()||t(I).isPending||t(N));v(Ce,()=>Xe,(be,Ne)=>{Ne(be,{type:"button",onclick:c,get disabled(){return t(xe)},children:(he,Rt)=>{E();var Ke=G("Cancel");a(he,Ke)},$$slots:{default:!0}})})}var Je=s(Ce,2);{let xe=P(()=>X()||t(I).isPending||t(N));me(Je,{type:"submit",get disabled(){return t(xe)},children:(be,Ne)=>{E();var he=G();ce(()=>ae(he,t(n)?"Save":"Add")),a(be,he)},$$slots:{default:!0}})}a(He,Oe)},$$slots:{default:!0}})}),$(B),it(B,u=>de==null?void 0:de(u)),a(H,B)};le($e,H=>{t(N)?H(_e):H(ge,-1)})}a(f,_)},$$slots:{default:!0}})}),a(se,g),ke(),k()}var Dt=Q('Are you sure you want to delete <span class="font-semibold"> </span>? This will soft-delete the device.',1),Me=Q("<!> <!>",1);function wt(se,h){Ae(h,!0);let r=Se(h,"open",15,!1);const b=ut();async function X(){try{await b.mutateAsync(h.item.id),pe.success("Device deleted"),h.onClose()}catch(U){pe.error(U instanceof Error?U.message:"Failed to delete device")}}var l=ne(),k=x(l);
1v(k,()=>ze,(U,p)=>{p(U,{get open(){return r()},set open(n){r(n)},children:(n,O)=>{var j=ne(),I=x(j);v(I,()=>qe,(C,M)=>{M(C,{children:(z,N)=>{var S=Me(),T=x(S);v(T,()=>Fe,(ee,w)=>{w(ee,{children:(te,de)=>{var Y=Me(),e=x(Y);v(e,()=>Ue,(c,g)=>{g(c,{children:(R,d)=>{E();var m=G("Delete Device");a(R,m)},$$slots:{default:!0}})});var i=s(e,2);v(i,()=>Ve,(c,g)=>{g(c,{children:(R,d)=>{E();var m=Dt(),f=s(x(m)),L=D(f,!0);$(f),E(),ce(()=>{var _;return ae(L,(_=h.item)==null?void 0:_.name)}),a(R,m)},$$slots:{default:!0}})}),a(te,Y)},$$slots:{default:!0}})});var fe=s(T,2);v(fe,()=>Ge,(ee,w)=>{w(ee,{children:(te,de)=>{var Y=Me(),e=x(Y);v(e,()=>Xe,(c,g)=>{g(c,{get disabled(){return b.isPending},get onclick(){return h.onClose},children:(R,d)=>{E();var m=G("Cancel");a(R,m)},$$slots:{default:!0}})});var i=s(e,2);v(i,()=>_t,(c,g)=>{g(c,{type:"button",get disabled(){return b.isPending},onclick:X,class:"bg-red-600 text-white hover:bg-red-700 focus:ring-red-600",children:(R,d)=>{E();var m=G("Delete");a(R,m)},$$slots:{default:!0}})}),a(te,Y)},$$slots:{default:!0}})}),a(z,S)},$$slots:{default:!0}})}),a(n,j)},$$slots:{default:!0}})}),a(se,l),ke()}const Mt=se=>{var h=St(),r=x(h);v(r,()=>De,(p,n)=>{n(p,{class:"hidden md:block"})});var b=s(r,2);v(b,()=>Pe,(p,n)=>{n(p,{children:(O,j)=>{var I=ne(),C=x(I);v(C,()=>Be,(M,z)=>{z(M,{href:"/admin",children:(N,S)=>{E();var T=G("Admin");a(N,T)},$$slots:{default:!0}})}),a(O,I)},$$slots:{default:!0}})});var X=s(b,2);v(X,()=>De,(p,n)=>{n(p,{class:"hidden md:block"})});var l=s(X,2);v(l,()=>Pe,(p,n)=>{n(p,{children:(O,j)=>{var I=ne(),C=x(I);v(C,()=>Be,(M,z)=>{z(M,{href:"/admin/timeseries",children:(N,S)=>{E();var T=G("Data Pipeline");a(N,T)},$$slots:{default:!0}})}),a(O,I)},$$slots:{default:!0}})});var k=s(l,2);v(k,()=>De,(p,n)=>{n(p,{class:"hidden md:block"})});var U=s(k,2);v(U,()=>Pe,(p,n)=>{n(p,{children:(O,j)=>{var I=ne(),C=x(I);v(C,()=>Ze,(M,z)=>{z(M,{children:(N,S)=>{E();var T=G("Devices");a(N,T)},$$slots:{default:!0}})}),a(O,I)},$$slots:{default:!0}})}),a(se,h)};var St=Q("<!> <!> <!> <!> <!> <!>",1),Tt=Q('<div class="flex items-center gap-2 mb-4"><!> <!></div>'),Ee=Q('<div class="grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3"></div>'),At=Q('<div class="text-center py-12 text-gray-500"><p class="text-lg font-medium">No devices found</p> <p class="text-sm"> </p></div>'),kt=Q('<div class="text-xs text-muted-foreground mt-1"> </div>'),Ot=Q('<div class="rounded border bg-card text-card-foreground dark:bg-surface p-4 shadow-sm"><div class="flex justify-between items-start"><div class="flex-1 min-w-0"><div class="font-semibold text-base truncate"> </div> <div class="text-sm text-muted-foreground font-mono truncate"> </div> <!></div> <div class="flex gap-1 flex-shrink-0 ml-2"><!> <!> <!></div></div></div>'),Ct=Q('<div class="flex items-center justify-between"><h1 class="text-2xl font-bold">Sensor Devices</h1> <!></div> <!> <!> <!> <!> <!>',1);function $r(se,h){Ae(h,!0),at({breadcrumbs:Mt});const r=dt(),b=Le(),X=P(()=>Object.fromEntries((b.data??[]).map(e=>[e.id,e.label]))),l=Ye({modalOpen:!1,modalMode:"create",editingDeviceId:null,deletingItem:null,deleteModalOpen:!1});let k=Qe("");const U=P(()=>()=>{if(!r.data)return[];const e=t(k).toLowerCase().trim();return e?r.data.filter(i=>{var c,g;return((c=i.name)==null?void 0:c.toLowerCase().includes(e))||((g=i.commid)==null?void 0:g.toLowerCase().includes(e))}):r.data});function p(e){l.editingDeviceId=e,l.modalMode="edit",l.modalOpen=!0}function n(){l.modalOpen=!1,l.editingDeviceId=null,l.modalMode="create"}function O(e){l.deletingItem=e,l.deleteModalOpen=!0}function j(){l.deleteModalOpen=!1,l.deletingItem=null}var I=Ct(),C=x(I),M=s(D(C),2);me(M,{variant:"default",href:"/admin/timeseries/devices/new",children:(e,i)=>{E();var c=G("Setup New Device");a(e,c)},$$slots:{default:!0}}),$(C);var z=s(C,2);ot(z,{richColors:!0,position:"top-right"});var N=s(z,2);{var S=e=>{var i=Tt(),c=D(i);et(c,{type:"text",placeholder:"Search by name or commid...",class:"max-w-md",get value(){return t(k)},set value(d){oe(k,d,!0)}});var g=s(c,2);{var R=d=>{me(d,{variant:"ghost",size:"icon",onclick:()=>oe(k,""),class:"h-10 w-10",children:(m,f)=>{gt(m,{class:"h-4 w-4"})},$$slots:{default:!0}})};le(g,d=>
1{t(k)&&d(R)})}$(i),a(e,i)};le(N,e=>{r.isSuccess&&r.data&&e(S)})}var T=s(N,2);{var fe=e=>{var i=Ee();Te(i,20,()=>Array(6),je,(c,g)=>{rt(c)}),$(i),a(e,i)},ee=e=>{var i=ne(),c=x(i);{var g=m=>{var f=At(),L=s(D(f),2),_=D(L,!0);$(L),$(f),ce(()=>ae(_,t(k)?"Try adjusting your search":"Click 'Add Device' to register one.")),a(m,f)},R=P(()=>t(U)().length===0),d=m=>{var f=Ee();Te(f,21,()=>t(U)(),L=>L.deviceId,(L,_)=>{var ue=Ot(),$e=D(ue),_e=D($e),ge=D(_e),H=D(ge,!0);$(ge);var B=s(ge,2),V=D(B,!0);$(B);var re=s(B,2);{var J=y=>{var F=kt(),u=D(F,!0);$(F),ce(()=>ae(u,t(X)[t(_).deviceTypeId])),a(y,F)};le(re,y=>{t(X)[t(_).deviceTypeId]&&y(J)})}$(_e);var K=s(_e,2),Z=D(K);me(Z,{variant:"outline",size:"icon",class:"h-8 w-8",title:"View Portmap",get href(){return`/admin/timeseries/devices/${t(_).deviceId??""}/portmap`},children:(y,F)=>{$t(y,{class:"h-4 w-4"})},$$slots:{default:!0}});var W=s(Z,2);me(W,{variant:"outline",size:"icon",class:"h-8 w-8",onclick:()=>p(t(_).deviceId),children:(y,F)=>{ht(y,{class:"h-4 w-4"})},$$slots:{default:!0}});var q=s(W,2);me(q,{variant:"outline",size:"icon",class:"h-8 w-8 text-destructive hover:bg-destructive hover:text-destructive-foreground",onclick:()=>O({id:t(_).deviceId,name:t(_).name}),children:(y,F)=>{yt(y,{class:"h-4 w-4"})},$$slots:{default:!0}}),$(K),$($e),$(ue),ce(()=>{ae(H,t(_).name),ae(V,t(_).commid)}),a(L,ue)}),$(f),a(m,f)};le(c,m=>{t(R)?m(g):m(d,-1)})}a(e,i)},w=e=>{tt(e,{get e(){return r.error}})};le(T,e=>{r.isPending?e(fe):r.isSuccess?e(ee,1):r.isError&&e(w,2)})}var te=s(T,2);v(te,()=>ze,(e,i)=>{i(e,{get open(){return l.modalOpen},set open(c){l.modalOpen=c},children:(c,g)=>{Pt(c,{closeModal:n,get mode(){return l.modalMode},get deviceId(){return l.editingDeviceId}})},$$slots:{default:!0}})});var de=s(te,2);{var Y=e=>{wt(e,{get item(){return l.deletingItem},onClose:j,get open(){return l.deleteModalOpen},set open(i){l.deleteModalOpen=i}})};le(de,e=>{l.deletingItem&&e(Y)})}a(se,I),ke()}export{$r as component};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.