zwave-js-ui
Version:
Z-Wave Control Panel and MQTT Gateway
4 lines (3 loc) • 13.1 kB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BaseFab-LOhS57gL.js","./index-B9yS4Bcc.js","./index-Bm7DxUwf.css","./VFab-OEmwwbnb.js","./VFab-MHxCNJTw.css","./BaseFab-BUyXt8fM.css","./ExpandedNode-DWXRrPlC.js","./VTextarea-BABdvF5b.js","./VTextarea-BTR7f0gW.css","./ExpandedNode-D92CBnYH.css","./MissingKeysAlert-6pDwWfB5.js"])))=>i.map(i=>d[i]);
import{_ as P,I as L,d as b,u as k,av as u,al as N,a as F,aw as q,ax as D,ay as T,az as I,aA as E,aB as v,aC as A,l as h,w as l,V as W,r as w,o as c,b as r,f as R,U as f,ab as Z,a1 as O,ae as z,Z as K,aD as x,k as y,e as j,W as Q,h as B,p as X,t as _,i as V,q as Y,c as C,K as G,R as m,N as H,O as J,ag as $,a7 as ee,z as S}from"./index-B9yS4Bcc.js";import{V as se}from"./VDataTable-CKSj76XP.js";import{V as oe}from"./VFab-OEmwwbnb.js";import"./sort-CSOGXH9I.js";import"./VTable-BXtGlLLl.js";const te={name:"SmartStart",props:{socket:Object},mixins:[L],components:{BaseFab:b(()=>S(()=>import("./BaseFab-LOhS57gL.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),ExpandedNode:b(()=>S(()=>import("./ExpandedNode-DWXRrPlC.js"),__vite__mapDeps([6,1,2,7,8,9]),import.meta.url)),MissingKeysAlert:b(()=>S(()=>import("./MissingKeysAlert-6pDwWfB5.js"),__vite__mapDeps([10,1,2]),import.meta.url))},watch:{tableOptions:{handler(){k().savePreferences({smartStartTable:this.tableOptions})},deep:!0}},computed:{streamerMode(){return k().ui.streamerMode},fabItems(){return[{icon:"add",color:"primary",action:()=>this.editItem(),tooltip:"Add"},{icon:"qr_code_scanner",color:"warning",action:()=>this.scanItem(),tooltip:"Scan"},{icon:"refresh",color:"success",action:()=>this.refreshItems(),tooltip:"Refresh"},{icon:"file_download",color:"error",action:()=>this.importList(),tooltip:"Import"},{icon:"file_upload",color:"purple",action:()=>this.exportList(),tooltip:"Export"}]}},data(){return{items:[],showInfoTooltip:!1,x:0,y:0,Protocols:u,fab:!1,search:"",tableOptions:{sortBy:[{key:"nodeId"}]},expandedNode:null,expandedNodeDialog:!1,headers:[{title:"ID",key:"nodeId"},{title:"Name",key:"name"},{title:"Location",key:"location"},{title:"Active",key:"status"},{title:"Protocol",key:"protocol"},{title:"DSK",key:"dsk"},{title:"S2 Access Control",key:"securityClasses.s2AccessControl"},{title:"S2 Authenticated",key:"securityClasses.s2Authenticated"},{title:"S2 Unauthenticated",key:"securityClasses.s2Unauthenticated"},{title:"S0 Legacy",key:"securityClasses.s0Legacy"},{title:"Manufacturer",key:"manufacturer"},{title:"Label",key:"label"},{title:"Description",key:"description"},{title:"Actions",key:"actions",sortable:!1}],edited:!1}},mounted(){this.tableOptions=k().getPreference("smartStartTable",{page:1,itemsPerPage:10,sortBy:[{key:"nodeId"}],groupBy:[]}),this.refreshItems(),this.bindEvent(N.nodeAdded,()=>{this.refreshItems()})},beforeUnmount(){this.socket&&this.unbindEvents()},methods:{...F(k,["showSnackbar"]),onRowFocus(e,t){t.nodeId&&(this.x=e.clientX+10,this.y=e.clientY+10,this.showInfoTooltip=!0)},onRowBlur(){this.showInfoTooltip=!1},getProtocol:q,getProtocolColor(e){return D(e,this.app.currentTheme)},showNodeDialog(e){const t=this.nodes.find(n=>n.id===e.nodeId);t&&(this.expandedNode=t,this.expandedNodeDialog=!0)},closeDialog(){this.expandedNode=null,this.expandedNodeDialog=!1},async refreshItems(){const e=await this.app.apiRequest("getProvisioningEntries",[],{infoSnack:!1,errorSnack:!0});e.success&&(this.items=this.parseItems(e.result))},async exportList(){await this.app.exportConfiguration(this.items,"provisioningEntries","json")},async importList(){const{data:e}=await this.app.importFile("json");if(e)for(const t of e)this.updateItem(t)},async onChange(e){await this.updateItem(e),this.edited=!1,this.refreshItems()},async toggleProtocol(e){e.protocol=e.protocol===u.ZWave?u.ZWaveLongRange:u.ZWave,await this.onChange(e)},async updateItem(e){const t=await this.app.apiRequest("provisionSmartStartNode",[typeof e=="string"?e:this.convertItem(e)]);if(t.success){const n=t.result;this.showSnackbar(`Node ${n.nodeId||n.name||""} ${this.edited?"updated":"added"}`,"success"),this.refreshItems()}},async scanItem(){let e=await this.app.confirm("New entry","Scan QR Code or import it as an image","info",{qrScan:!0,canceltext:"Close",width:500});e&&(T(e)?this.showSnackbar(`Provided QR Code is not a SmartStart QR Code.
In order to use it go to Control Panel > Manage Nodes and use Scan QR Code Inclusion.`,"warning"):this.updateItem(e))},async editItem(e){e&&(this.edited=!0);let t=[{type:"text",label:"Name",required:!0,key:"name",hint:"The node name",default:e?e.name:""},{type:"text",label:"Location",required:!0,key:"location",hint:"The node location",default:e?e.location:""}];e!=null&&e.nodeId||(t=[...t,{type:"text",label:"DSK",required:!0,key:"dsk",hint:"Enter the full DSK code (dashes included) for your device",rules:[I],default:e?e.dsk:""},{type:"list",label:"Protocol",required:!0,key:"protocol",items:E,disabled:e&&(!e.supportedProtocols||e.supportedProtocols.length<2),hint:"Inclusion protocol to use",default:e?e.protocol:u.ZWave},{type:"checkbox",label:"S2 Access Control",key:"s2AccessControl",disabled:e?!e.requestedSecurityClasses.s2AccessControl:!1,default:e?e.securityClasses.s2AccessControl:!1},{type:"checkbox",label:"S2 Authenticated",key:"s2Authenticated",disabled:e?!e.requestedSecurityClasses.s2Authenticated:!1,default:e?e.securityClasses.s2Authenticated:!1},{type:"checkbox",label:"S2 Unauthenticated",key:"s2Unauthenticated",disabled:e?!e.requestedSecurityClasses.s2Unauthenticated:!1,default:e?e.securityClasses.s2Unauthenticated:!1,show:p=>p.protocol===u.ZWave},{type:"checkbox",label:"S0 Legacy",key:"s0Legacy",disabled:e?!e.requestedSecurityClasses.s0Legacy:!1,default:e?e.securityClasses.s0Legacy:!1,show:p=>p.protocol===u.ZWave}]);let n=await this.app.confirm((e?"Update":"New")+" entry","","info",{confirmText:e?"Update":"Add",width:500,inputs:t});if(Object.keys(n).length!==0)if(n.dsk||e!=null&&e.nodeId){if(!(e!=null&&e.nodeId)){const p={s2Unauthenticated:n.s2Unauthenticated,s2Authenticated:n.s2Authenticated,s2AccessControl:n.s2AccessControl,s0Legacy:n.s0Legacy};delete n.s2AccessControl,delete n.s2Authenticated,delete n.s2Unauthenticated,delete n.s0Legacy,n.securityClasses=p}e&&(n={...e,...n}),this.updateItem(n)}else n.dsk||this.showSnackbar("DSK is required","error")},async removeItem(e){await this.app.confirm("Attention","Are you sure you want to delete this item from provisioning? Removing it from provisioning will not exclude the node","alert")&&(await this.app.apiRequest("unprovisionSmartStartNode",[e.dsk])).success&&(this.showSnackbar(`Node ${e.nodeId} removed`,"success"),this.refreshItems())},parseItems(e){return e.map(t=>({...t,status:!t.status,protocol:t.protocol??u.ZWave,securityClasses:v(t.securityClasses,!1),requestedSecurityClasses:v(t.requestedSecurityClasses,!t.requestedSecurityClasses)}))},convertItem(e){return e={...e,status:e.status?0:1,protocol:e.protocol??u.ZWave,securityClasses:A(e.securityClasses),requestedSecurityClasses:A(e.requestedSecurityClasses||v([],!0))},e}}},ae={key:0},le={key:1},ne={key:1,class:"text-caption"},re=["onFocus","onBlur","onMouseenter","onMouseleave"],de=["onFocus","onBlur","onMouseenter","onMouseleave"],ce=["onFocus","onBlur","onMouseenter","onMouseleave"],ue={key:1},ie=["onFocus","onBlur","onMouseenter","onMouseleave"],pe={key:1};function ye(e,t,n,p,d,a){const U=w("missing-keys-alert"),g=w("base-fab"),M=w("expanded-node");return c(),h(W,{fluid:"",class:"pa-4"},{default:l(()=>[r(se,{headers:d.headers,items:d.items,class:"elevation-1",style:{"margin-bottom":"80px"},search:d.search,options:d.tableOptions,"onUpdate:options":t[2]||(t[2]=s=>d.tableOptions=s),"sort-by":d.tableOptions.sortBy},{top:l(()=>[r(R,{class:"pt-0"},{default:l(()=>[t[8]||(t[8]=f("h2",{class:"pa-3"},"Provisioning Entries",-1)),r(U),r(Z,{modelValue:d.showInfoTooltip,"onUpdate:modelValue":t[0]||(t[0]=s=>d.showInfoTooltip=s),location:"bottom left",style:O({position:"fixed",left:d.x+"px",top:d.y+"px"})},{default:l(()=>[r(z,{density:"compact"},{default:l(()=>[r(K,{density:"compact"},{default:l(()=>[r(x,null,{default:l(()=>t[7]||(t[7]=[y(" When an entry has a Node associated it cannot be edited ")])),_:1,__:[7]})]),_:1})]),_:1})]),_:1},8,["modelValue","style"]),r(j,null,{default:l(()=>[r(R,{cols:"12",sm:"6"},{default:l(()=>[r(Q,{modelValue:d.search,"onUpdate:modelValue":t[1]||(t[1]=s=>d.search=s),clearable:"",flat:"",variant:"outlined","hide-details":"","single-line":"",class:"ma-2",style:{"max-width":"300px","min-width":"250px"},"prepend-inner-icon":"search",label:"Search","append-icon":"refresh","onClick:append":a.refreshItems},null,8,["modelValue","onClick:append"])]),_:1})]),_:1})]),_:1,__:[8]})]),"item.nodeId":l(({item:s})=>[s.nodeId?(c(),h(B,{key:0,color:"primary",size:"small",rounded:"",onClick:X(o=>a.showNodeDialog(s),["stop"])},{default:l(()=>[y(_(s.nodeId)+" ",1),r(V,{class:"ml-2",size:"small"},{default:l(()=>t[9]||(t[9]=[y("open_in_new")])),_:1,__:[9]})]),_:2},1032,["onClick"])):Y("",!0)]),"item.dsk":l(({item:s})=>[a.streamerMode?(c(),C("span",ae,"*********")):(c(),C("span",le,_(s.dsk),1))]),"item.status":l(({item:s})=>[r(G,{modelValue:s.status,"onUpdate:modelValue":[o=>s.status=o,o=>a.onChange(s)],density:"compact","hide-details":""},null,8,["modelValue","onUpdate:modelValue"])]),"item.protocol":l(({item:s})=>{var o;return[(o=s.supportedProtocols)!=null&&o.includes(d.Protocols.ZWaveLongRange)?(c(),h(B,{key:0,onClick:i=>a.toggleProtocol(s),disabled:!!s.nodeId,density:"compact",rounded:"",onFocus:i=>a.onRowFocus(i,s),onBlur:i=>a.onRowBlur(i,s),onMouseenter:i=>a.onRowFocus(i,s),onMouseleave:i=>a.onRowBlur(i,s),size:"small",variant:"outlined",color:a.getProtocolColor(s)},{default:l(()=>[y(_(a.getProtocol(s)),1)]),_:2},1032,["onClick","disabled","onFocus","onBlur","onMouseenter","onMouseleave","color"])):(c(),C("span",ne," Z-Wave "))]}),"item.securityClasses.s2AccessControl":l(({item:s})=>[f("div",{onFocus:o=>a.onRowFocus(o,s),onBlur:o=>a.onRowBlur(o,s),onMouseenter:o=>a.onRowFocus(o,s),onMouseleave:o=>a.onRowBlur(o,s)},[r(m,{modelValue:s.securityClasses.s2AccessControl,"onUpdate:modelValue":[o=>s.securityClasses.s2AccessControl=o,o=>a.onChange(s)],disabled:!!s.nodeId||!s.requestedSecurityClasses.s2AccessControl,"hide-details":"",density:"compact"},null,8,["modelValue","onUpdate:modelValue","disabled"])],40,re)]),"item.securityClasses.s2Authenticated":l(({item:s})=>[f("div",{onFocus:o=>a.onRowFocus(o,s),onBlur:o=>a.onRowBlur(o,s),onMouseenter:o=>a.onRowFocus(o,s),onMouseleave:o=>a.onRowBlur(o,s)},[r(m,{modelValue:s.securityClasses.s2Authenticated,"onUpdate:modelValue":[o=>s.securityClasses.s2Authenticated=o,o=>a.onChange(s)],disabled:!!s.nodeId||!s.requestedSecurityClasses.s2Authenticated,"hide-details":"",density:"compact"},null,8,["modelValue","onUpdate:modelValue","disabled"])],40,de)]),"item.securityClasses.s2Unauthenticated":l(({item:s})=>[f("div",{onFocus:o=>a.onRowFocus(o,s),onBlur:o=>a.onRowBlur(o,s),onMouseenter:o=>a.onRowFocus(o,s),onMouseleave:o=>a.onRowBlur(o,s)},[s.protocol===d.Protocols.ZWave?(c(),h(m,{key:0,modelValue:s.securityClasses.s2Unauthenticated,"onUpdate:modelValue":[o=>s.securityClasses.s2Unauthenticated=o,o=>a.onChange(s)],disabled:!!s.nodeId||!s.requestedSecurityClasses.s2Unauthenticated,"hide-details":"",density:"compact"},null,8,["modelValue","onUpdate:modelValue","disabled"])):(c(),C("span",ue))],40,ce)]),"item.securityClasses.s0Legacy":l(({item:s})=>[f("div",{onFocus:o=>a.onRowFocus(o,s),onBlur:o=>a.onRowBlur(o,s),onMouseenter:o=>a.onRowFocus(o,s),onMouseleave:o=>a.onRowBlur(o,s)},[s.protocol===d.Protocols.ZWave?(c(),h(m,{key:0,modelValue:s.securityClasses.s0Legacy,"onUpdate:modelValue":[o=>s.securityClasses.s0Legacy=o,o=>a.onChange(s)],disabled:!!s.nodeId||!s.requestedSecurityClasses.s0Legacy,"hide-details":"",density:"compact"},null,8,["modelValue","onUpdate:modelValue","disabled"])):(c(),C("span",pe))],40,ie)]),"item.actions":l(({item:s})=>[r(V,{class:"mr-2",size:"small",color:"error",onClick:o=>a.removeItem(s)},{default:l(()=>t[10]||(t[10]=[y("delete")])),_:2,__:[10]},1032,["onClick"]),r(V,{size:"small",color:"success",onClick:o=>a.editItem(s)},{default:l(()=>t[11]||(t[11]=[y("edit")])),_:2,__:[11]},1032,["onClick"])]),_:2},1032,["headers","items","search","options","sort-by"]),r(g,{modelValue:d.fab,"onUpdate:modelValue":t[3]||(t[3]=s=>d.fab=s),location:"bottom end",transition:"slide-y-reverse-transition",class:"mb-7","icon-open":"menu","icon-close":"close",items:a.fabItems},null,8,["modelValue","items"]),r(ee,{fullscreen:e.$vuetify.display.xs,"max-width":"1200px",modelValue:d.expandedNodeDialog,"onUpdate:modelValue":t[5]||(t[5]=s=>d.expandedNodeDialog=s),persistent:"",onKeydown:t[6]||(t[6]=$(s=>a.closeDialog(),["exit"]))},{default:l(()=>[r(H,{"min-height":"90vh"},{default:l(()=>[r(oe,{style:{position:"absolute",right:"5px",top:"5px"},size:"x-small",onClick:t[4]||(t[4]=s=>a.closeDialog()),icon:"close"}),r(J,{class:"pt-3"},{default:l(()=>[r(M,{node:d.expandedNode,socket:n.socket},null,8,["node","socket"])]),_:1})]),_:1})]),_:1},8,["fullscreen","modelValue"])]),_:1})}const be=P(te,[["render",ye]]);export{be as default};