UNPKG

zwave-js-ui

Version:

Z-Wave Control Panel and MQTT Gateway

4 lines (3 loc) 13.1 kB
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BaseFab-DI-AJnjz.js","./index-B8xHYEBg.js","./index-j3oOpPBM.css","./VFab-BT_NQtXp.js","./VFab-ByB_rPoF.css","./BaseFab-BUyXt8fM.css","./ExpandedNode-B_SBeqqa.js","./VTextarea-CMX9ej38.js","./VTextarea-DyGjqrlm.css","./ExpandedNode-DwhgINfZ.css","./MissingKeysAlert-BTEmfUjx.js"])))=>i.map(i=>d[i]); import{_ as M,ax as I,m as P,d as k,I as F,e as y,w as l,b as r,l as b,k as p,H as h,c as f,M as C,i as _,t as v,B as L,h as D,o as N,f as A,s as w,aa as q,U as x,ab as T,Q as E,ay as W,V as Z,D as O,F as z,G as K,af as j,a6 as Q,u as G,az as g,aA as u,aB as V,aC as H,aD as X,aE as Y,aF as J,x as m,an as $,y as S,z as c}from"./index-B8xHYEBg.js";import{V as ee}from"./VDataTable-DFqrHTxq.js";import{V as se}from"./VFab-BT_NQtXp.js";import"./sort-B85QZ63r.js";import"./VTable-DHfEeaF4.js";const oe={name:"SmartStart",props:{socket:Object},mixins:[F],components:{BaseFab:k(()=>S(()=>import("./BaseFab-DI-AJnjz.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),ExpandedNode:k(()=>S(()=>import("./ExpandedNode-B_SBeqqa.js"),__vite__mapDeps([6,1,2,7,8,9]),import.meta.url)),MissingKeysAlert:k(()=>S(()=>import("./MissingKeysAlert-BTEmfUjx.js"),__vite__mapDeps([10,1,2]),import.meta.url))},watch:{tableOptions:{handler(){m().savePreferences({smartStartTable:this.tableOptions})},deep:!0}},computed:{streamerMode(){return m().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=m().getPreference("smartStartTable",{page:1,itemsPerPage:10,sortBy:[{key:"nodeId"}],groupBy:[]}),this.refreshItems(),this.bindEvent($.nodeAdded,()=>{this.refreshItems()})},beforeUnmount(){this.socket&&this.unbindEvents()},methods:{...P(m,["showSnackbar"]),onRowFocus(e,t){t.nodeId&&(this.x=e.clientX+10,this.y=e.clientY+10,this.showInfoTooltip=!0)},onRowBlur(){this.showInfoTooltip=!1},getProtocol:I,getProtocolColor(e){return J(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&&(Y(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?.nodeId||(t=[...t,{type:"text",label:"DSK",required:!0,key:"dsk",hint:"Enter the full DSK code (dashes included) for your device",rules:[H],default:e?e.dsk:""},{type:"list",label:"Protocol",required:!0,key:"protocol",items:X,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:i=>i.protocol===u.ZWave},{type:"checkbox",label:"S0 Legacy",key:"s0Legacy",disabled:e?!e.requestedSecurityClasses.s0Legacy:!1,default:e?e.securityClasses.s0Legacy:!1,show:i=>i.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?.nodeId){if(!e?.nodeId){const i={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=i}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:g(e.securityClasses),requestedSecurityClasses:g(e.requestedSecurityClasses||V([],!0))},e}}},te={key:0},ae={key:1},le={key:1,class:"text-caption"},ne=["onFocus","onBlur","onMouseenter","onMouseleave"],re=["onFocus","onBlur","onMouseenter","onMouseleave"],de=["onFocus","onBlur","onMouseenter","onMouseleave"],ce={key:1},ue=["onFocus","onBlur","onMouseenter","onMouseleave"],ie={key:1};function pe(e,t,n,i,d,a){const R=w("missing-keys-alert"),B=w("base-fab"),U=w("expanded-node");return c(),y(G,{fluid:"",class:"pa-4"},{default:l(()=>[r(ee,{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(A,{class:"pt-0"},{default:l(()=>[t[8]||(t[8]=h("h2",{class:"pa-3"},"Provisioning Entries",-1)),r(R),r(q,{modelValue:d.showInfoTooltip,"onUpdate:modelValue":t[0]||(t[0]=s=>d.showInfoTooltip=s),location:"bottom left",style:x({position:"fixed",left:d.x+"px",top:d.y+"px"})},{default:l(()=>[r(T,{density:"compact"},{default:l(()=>[r(E,{density:"compact"},{default:l(()=>[r(W,null,{default:l(()=>[...t[7]||(t[7]=[p(" When an entry has a Node associated it cannot be edited ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue","style"]),r(Z,null,{default:l(()=>[r(A,{cols:"12",sm:"6"},{default:l(()=>[r(O,{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})]),"item.nodeId":l(({item:s})=>[s.nodeId?(c(),y(_,{key:0,color:"primary",size:"small",rounded:"",onClick:N(o=>a.showNodeDialog(s),["stop"])},{default:l(()=>[p(v(s.nodeId)+" ",1),r(b,{class:"ml-2",size:"small"},{default:l(()=>[...t[9]||(t[9]=[p("open_in_new",-1)])]),_:1})]),_:2},1032,["onClick"])):D("",!0)]),"item.dsk":l(({item:s})=>[a.streamerMode?(c(),f("span",te,"*********")):(c(),f("span",ae,v(s.dsk),1))]),"item.status":l(({item:s})=>[r(L,{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})=>[s.supportedProtocols?.includes(d.Protocols.ZWaveLongRange)?(c(),y(_,{key:0,onClick:o=>a.toggleProtocol(s),disabled:!!s.nodeId,density:"compact",rounded:"",onFocus:o=>a.onRowFocus(o,s),onBlur:o=>a.onRowBlur(o,s),onMouseenter:o=>a.onRowFocus(o,s),onMouseleave:o=>a.onRowBlur(o,s),size:"small",variant:"outlined",color:a.getProtocolColor(s)},{default:l(()=>[p(v(a.getProtocol(s)),1)]),_:2},1032,["onClick","disabled","onFocus","onBlur","onMouseenter","onMouseleave","color"])):(c(),f("span",le," Z-Wave "))]),"item.securityClasses.s2AccessControl":l(({item:s})=>[h("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(C,{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,ne)]),"item.securityClasses.s2Authenticated":l(({item:s})=>[h("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(C,{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,re)]),"item.securityClasses.s2Unauthenticated":l(({item:s})=>[h("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(),y(C,{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(),f("span",ce))],40,de)]),"item.securityClasses.s0Legacy":l(({item:s})=>[h("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(),y(C,{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(),f("span",ie))],40,ue)]),"item.actions":l(({item:s})=>[r(b,{class:"mr-2",size:"small",color:"error",onClick:o=>a.removeItem(s)},{default:l(()=>[...t[10]||(t[10]=[p("delete",-1)])]),_:1},8,["onClick"]),r(b,{size:"small",color:"success",onClick:o=>a.editItem(s)},{default:l(()=>[...t[11]||(t[11]=[p("edit",-1)])]),_:1},8,["onClick"])]),_:2},1032,["headers","items","search","options","sort-by"]),r(B,{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(Q,{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]=j(s=>a.closeDialog(),["exit"]))},{default:l(()=>[r(z,{"min-height":"90vh"},{default:l(()=>[r(se,{style:{position:"absolute",right:"5px",top:"5px"},size:"x-small",onClick:t[4]||(t[4]=s=>a.closeDialog()),icon:"close"}),r(K,{class:"pt-3"},{default:l(()=>[r(U,{node:d.expandedNode,socket:n.socket},null,8,["node","socket"])]),_:1})]),_:1})]),_:1},8,["fullscreen","modelValue"])]),_:1})}const ke=M(oe,[["render",pe]]);export{ke as default};