zwave-js-ui
Version:
Z-Wave Control Panel and MQTT Gateway
4 lines (3 loc) • 13 kB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./BaseFab-BwvwxwY8.js","./index-DwzE-W2i.js","./index-B2zoqM3Y.css","./VFab-BoiUHyPJ.js","./VFab-ByB_rPoF.css","./BaseFab-BUyXt8fM.css","./ExpandedNode-DkVECifD.js","./VTextarea-DtC2nuOc.js","./VTextarea-DyGjqrlm.css","./ExpandedNode-Bq-MvLVB.css","./MissingKeysAlert-J9jrE1h4.js"])))=>i.map(i=>d[i]);
import{_ as M,aw as I,d as m,I as P,e as y,w as l,b as r,l as k,k as p,H as h,c as f,M as C,i as _,t as b,B as L,h as F,o as D,f as g,s as v,ab as N,W as q,ac as x,R as T,ax as E,V as W,D as Z,F as O,G as z,ag as K,a7 as j,u as Q,ay as A,az as u,aA as w,aB as G,aC as H,aD as X,aE as Y,x as V,y as S,z as c}from"./index-DwzE-W2i.js";import{V as J}from"./VDataTable-D8DZXD9Y.js";import{V as $}from"./VFab-BoiUHyPJ.js";import"./sort-C8HQTCiq.js";import"./VTable-Cxuwit5L.js";const ee={name:"SmartStart",props:{socket:Object},mixins:[P],components:{BaseFab:m(()=>S(()=>import("./BaseFab-BwvwxwY8.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url)),ExpandedNode:m(()=>S(()=>import("./ExpandedNode-DkVECifD.js"),__vite__mapDeps([6,1,2,7,8,9]),import.meta.url)),MissingKeysAlert:m(()=>S(()=>import("./MissingKeysAlert-J9jrE1h4.js"),__vite__mapDeps([10,1,2]),import.meta.url))},watch:{tableOptions:{handler(){V().savePreferences({smartStartTable:this.tableOptions})},deep:!0}},computed:{streamerMode(){return V().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=V().getPreference("smartStartTable",{page:1,itemsPerPage:10,sortBy:[{key:"nodeId"}],groupBy:[]}),this.refreshItems(),this.subscribeChannels(["nodes"]),this.bindEvent("nodeAdded",()=>{this.refreshItems()})},beforeUnmount(){this.socket&&this.unbindEvents()},methods:{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 Y(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&&(X(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:[G],default:e?e.dsk:""},{type:"list",label:"Protocol",required:!0,key:"protocol",items:H,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:w(t.securityClasses,!1),requestedSecurityClasses:w(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||w([],!0))},e}}},se={key:0},oe={key:1},te={key:1,class:"text-caption"},ae=["onFocus","onBlur","onMouseenter","onMouseleave"],le=["onFocus","onBlur","onMouseenter","onMouseleave"],ne=["onFocus","onBlur","onMouseenter","onMouseleave"],re={key:1},de=["onFocus","onBlur","onMouseenter","onMouseleave"],ce={key:1};function ue(e,t,n,i,d,a){const R=v("missing-keys-alert"),B=v("base-fab"),U=v("expanded-node");return c(),y(Q,{fluid:"",class:"pa-4"},{default:l(()=>[r(J,{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(g,{class:"pt-0"},{default:l(()=>[t[8]||(t[8]=h("h2",{class:"pa-3"},"Provisioning Entries",-1)),r(R),r(N,{modelValue:d.showInfoTooltip,"onUpdate:modelValue":t[0]||(t[0]=s=>d.showInfoTooltip=s),location:"bottom left",style:q({position:"fixed",left:d.x+"px",top:d.y+"px"})},{default:l(()=>[r(x,{density:"compact"},{default:l(()=>[r(T,{density:"compact"},{default:l(()=>[r(E,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(W,null,{default:l(()=>[r(g,{cols:"12",sm:"6"},{default:l(()=>[r(Z,{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:D(o=>a.showNodeDialog(s),["stop"])},{default:l(()=>[p(b(s.nodeId)+" ",1),r(k,{class:"ml-2",size:"small"},{default:l(()=>[...t[9]||(t[9]=[p("open_in_new",-1)])]),_:1})]),_:2},1032,["onClick"])):F("",!0)]),"item.dsk":l(({item:s})=>[a.streamerMode?(c(),f("span",se,"*********")):(c(),f("span",oe,b(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(b(a.getProtocol(s)),1)]),_:2},1032,["onClick","disabled","onFocus","onBlur","onMouseenter","onMouseleave","color"])):(c(),f("span",te," 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,ae)]),"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,le)]),"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",re))],40,ne)]),"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",ce))],40,de)]),"item.actions":l(({item:s})=>[r(k,{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(k,{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(j,{fullscreen:e.$vuetify.display.xs,"max-width":"1200px",modelValue:d.expandedNodeDialog,"onUpdate:modelValue":t[5]||(t[5]=s=>d.expandedNodeDialog=s),onKeydown:t[6]||(t[6]=K(s=>a.closeDialog(),["exit"]))},{default:l(()=>[r(O,{"min-height":"90vh"},{default:l(()=>[r($,{style:{position:"absolute",right:"5px",top:"5px"},size:"x-small",onClick:t[4]||(t[4]=s=>a.closeDialog()),icon:"close"}),r(z,{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 Ce=M(ee,[["render",ue]]);export{Ce as default};