UNPKG

zwave-js-ui

Version:

Z-Wave Control Panel and MQTT Gateway

3 lines (2 loc) 9.76 kB
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DialogHealthCheckInfo-Dk02aupW.js","./index-DwzE-W2i.js","./index-B2zoqM3Y.css","./VDataTable-D8DZXD9Y.js","./sort-C8HQTCiq.js","./VTable-Cxuwit5L.js","./VTable-BsI6FsWH.css","./VDataTable-CLcLRj9B.css"])))=>i.map(i=>d[i]); import{_ as b,a as P,I as w,d as x,s as V,e as N,z as a,w as l,b as n,h as d,F as _,ar as T,H as g,t as i,G as R,u as S,V as v,f as p,J as L,D as M,i as k,k as u,l as C,n as c,c as h,by as H,at as j,ai as F,a7 as B,X as D,dC as I,dD as E,az as U,x as O,y as q}from"./index-DwzE-W2i.js";import{V as z}from"./VDataTable-D8DZXD9Y.js";import"./sort-C8HQTCiq.js";import"./VTable-Cxuwit5L.js";const A={components:{DialogHealthCheckInfo:x(()=>q(()=>import("./DialogHealthCheckInfo-Dk02aupW.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url))},props:{modelValue:Boolean,node:Object,socket:Object},mixins:[w],watch:{modelValue(s){this.init(s)}},computed:{...P(O,["nodes"]),_value:{get(){return this.modelValue},set(s){this.$emit("update:modelValue",s)}},isLR(){return this.activeNode?.protocol===U.ZWaveLongRange},filteredNodes(){return this.isLR?this.nodes.filter(s=>s.isControllerNode):this.activeNode?this.nodes.filter(s=>s.id!==this.activeNode.id):this.nodes},headers(){return this.mode==="Lifeline"?[{title:"Max latency",key:"latency"},{title:"Failed pings",key:"failedPingsNode"},{title:"Route Changes",key:"routeChanges"},{title:"SNR margin",key:"snrMargin"},{title:"Min power level w/o errors",key:"minPowerlevel"},{title:"Rating",key:"rating"}]:[{title:"Failed pings",key:"failedPingsToSource"},{title:"Min Power Level w/o errors",key:"minPowerlevelSource"},{title:"Rating",key:"rating"}]}},data(){return{loading:!1,infoMenu:!1,results:[],rounds:5,targetNode:null,activeNode:null,resultsTargetNode:null,averages:null,mode:"Lifeline"}},methods:{exportResults(){this.app.exportConfiguration(this.results,`healthCheck_${this.activeNode.id}-${this.resultsTargetNode}`,"json")},getNeighborsColor(s){return s>2?"text-success":s===0?"text-error":"text-warning"},getLatencyColor(s){return s<=100?"text-success":s<=500?"text-warning":"text-error"},getSnrMarginColor(s){return s>=17?"text-success":"text-error"},getFailedPingsColor(s){return s===0?"text-success":s===1?"text-warning":"text-error"},getRatingColor(s){return s===void 0?"primary":s>=6?"success":s>=4?"warning":"error"},getPowerLevel(s){return I(E,s)},getPowerLevelColor(s){return s===void 0?"":s>=6?"text-success":s>=3?"text-warning":"text-error"},init(s){s?(this.rounds=5,this.activeNode=D(this.node),this.targetNode=this.filteredNodes.find(r=>r.isControllerNode),this.selectedNode=this.filteredNodes[0]?this.filteredNodes[0].id:null,this.subscribeChannels(["diagnostics"]),this.bindEvent("healthCheckProgress",this.onHealthCheckProgress.bind(this))):s===!1&&(this.unbindEvents(),this.results=[],this.loading=!1,this.targetNode=null,this.averages=null)},onHealthCheckProgress(s){const{request:r,round:m,totalRounds:f,lastResult:t}=s;if(r.nodeId===this.activeNode.id){const o=this.results[this.results.length-1];t&&Object.assign(o,t),m<f&&this.results.push({round:m,rating:void 0})}},async stopHealth(){(await this.app.apiRequest("abortHealthCheck",[this.activeNode.id])).success&&this.showSnackbar("Health check aborted","success")},async checkHealth(){this.loading=!0,this.results=[];const s=[this.activeNode.id],r=typeof this.targetNode=="object"?this.targetNode:this.nodes.find(f=>f.id==this.targetNode);if(!r)return;r.isControllerNode?this.mode="Lifeline":(this.mode="Route",s.push(r.id)),s.push(this.rounds||1),this.results.push({round:1,rating:void 0});const m=await this.app.apiRequest(`check${this.mode}Health`,s,{infoSnack:!0,errorSnack:!1});if(this.loading=!1,m.success){const f=m.result;this.results=f.results,delete f.results,this.averages=f,this.averages.numNeighbors=Math.max(...this.results.map(t=>t.numNeighbors)),this.resultsTargetNode=f.targetNodeId}else this.results.pop(),this.showSnackbar(m.message||"Health check failed","error")}},beforeUnmount(){this.init(!1)}},G={class:"text-h5"},J={key:0},W={key:0},X={key:0,class:"mb-0"},Z={key:1,class:"mb-0"},K={key:0,class:"mb-0"},Q={key:1,class:"mb-0"},Y={key:0,class:"mb-0"},$={key:1,class:"mb-0"};function ee(s,r,m,f,t,o){const y=V("dialog-health-check-info");return a(),N(B,{modelValue:o._value,"onUpdate:modelValue":r[6]||(r[6]=e=>o._value=e),"max-width":"800px",persistent:""},{default:l(()=>[n(_,{loading:t.loading},{default:l(()=>[n(T,null,{default:l(()=>[g("span",G,"Node "+i(t.activeNode?t.activeNode.id:"")+" - Health check",1)]),_:1}),n(R,null,{default:l(()=>[n(S,null,{default:l(()=>[n(v,{class:"ma-3",justify:"start"},{default:l(()=>[n(p,null,{default:l(()=>[n(L,{style:{"max-width":"300px"},label:"Target Node",modelValue:t.targetNode,"onUpdate:modelValue":r[0]||(r[0]=e=>t.targetNode=e),items:o.filteredNodes,"return-object":"",hint:"Target node to run the route health check on","persistent-hint":"","item-title":"_name","item-value":"id"},null,8,["modelValue","items"])]),_:1}),n(p,null,{default:l(()=>[n(M,{modelValue:t.rounds,"onUpdate:modelValue":r[1]||(r[1]=e=>t.rounds=e),modelModifiers:{number:!0},hint:"Number of rounds to run the health check",label:"Rounds",min:"1",max:"10",type:"number","persistent-hint":""},null,8,["modelValue"])]),_:1})]),_:1}),n(v,{class:"mb-2",justify:"space-around"},{default:l(()=>[n(k,{variant:"flat",color:t.loading?"error":"success",disabled:!t.targetNode,onClick:r[2]||(r[2]=e=>t.loading?o.stopHealth():o.checkHealth())},{default:l(()=>[u(i(t.loading?"Stop":"Check"),1)]),_:1},8,["color","disabled"]),n(k,{variant:"flat",color:"primary",onClick:r[3]||(r[3]=e=>t.infoMenu=!0)},{default:l(()=>[r[8]||(r[8]=u(" Info ",-1)),n(C,null,{default:l(()=>[...r[7]||(r[7]=[u("help",-1)])]),_:1})]),_:1})]),_:1}),t.averages&&!t.loading?(a(),N(v,{key:0,class:"mb-2",justify:"space-around"},{default:l(()=>[t.averages.numNeighbors&&!o.isLR?(a(),N(p,{key:0,class:"text-center"},{default:l(()=>[r[9]||(r[9]=g("p",{class:"mb-1 text-subtitle-1 font-weight-bold"}," No. Neighbors ",-1)),g("span",{class:c([o.getNeighborsColor(t.averages.numNeighbors),"text-h3"])},i(t.averages.numNeighbors),3)]),_:1})):d("",!0),t.averages.rating?(a(),N(p,{key:1,class:"text-center"},{default:l(()=>[r[10]||(r[10]=g("p",{class:"mb-1 text-subtitle-1 font-weight-bold"}," Rating ",-1)),g("span",{class:c(["text-"+o.getRatingColor(t.averages.rating),"text-h3"])},i(t.averages.rating)+"/10",3)]),_:1})):d("",!0)]),_:1})):d("",!0),t.results.length>0?(a(),N(z,{key:1,headers:o.headers,items:t.results,"item-key":"id",class:"elevation-1","hide-default-footer":"","items-per-page":-1},{top:l(()=>[n(v,{class:"py-2",align:"center",justify:"center"},{default:l(()=>[!t.loading&&t.resultsTargetNode>=0?(a(),N(k,{key:0,variant:"flat",color:"primary",onClick:o.exportResults,class:"mb-2"},{default:l(()=>[r[12]||(r[12]=u("Export ",-1)),n(C,null,{default:l(()=>[...r[11]||(r[11]=[u("file_download",-1)])]),_:1})]),_:1},8,["onClick"])):d("",!0)]),_:1})]),"item.rating":l(({item:e})=>[n(H,{rounded:"",style:{"min-width":"80px"},height:"25","model-value":e.rating*10,color:o.getRatingColor(e.rating),indeterminate:e.rating===void 0},{default:l(()=>[e.rating!==void 0?(a(),h("strong",J,i(e.rating)+"/10",1)):d("",!0)]),_:2},1032,["model-value","color","indeterminate"])]),"item.latency":l(({item:e})=>[e.latency!==void 0?(a(),h("strong",{key:0,class:c(o.getLatencyColor(e.latency))},i(e.latency)+" ms",3)):d("",!0)]),"item.snrMargin":l(({item:e})=>[e.snrMargin!==void 0?(a(),h("strong",{key:0,class:c(o.getSnrMarginColor(e.snrMargin))},i(e.snrMargin)+" dBm",3)):d("",!0)]),"item.routeChanges":l(({item:e})=>[e.routeChanges!==void 0?(a(),h("strong",W,i(e.routeChanges),1)):d("",!0)]),"item.minPowerlevel":l(({item:e})=>[e.minPowerlevel!==void 0?(a(),h("strong",{key:0,class:c(o.getPowerLevelColor(e.minPowerlevel))},i(o.getPowerLevel(e.minPowerlevel)),3)):d("",!0)]),"item.failedPingsNode":l(({item:e})=>[e.failedPingsNode!==void 0?(a(),h("p",X,[u(i(t.resultsTargetNode)+" → "+i(t.activeNode.id)+": ",1),g("strong",{class:c(o.getFailedPingsColor(e.failedPingsNode))},i(e.failedPingsNode)+"/10",3)])):d("",!0),e.failedPingsController!==void 0?(a(),h("p",Z,[u(i(t.resultsTargetNode)+" ← "+i(t.activeNode.id)+": ",1),g("strong",{class:c(o.getFailedPingsColor(e.failedPingsController))},i(e.failedPingsController)+"/10",3)])):d("",!0)]),"item.failedPingsToSource":l(({item:e})=>[e.failedPingsToSource!==void 0?(a(),h("p",K,[u(i(t.resultsTargetNode)+" → "+i(t.activeNode.id)+": ",1),g("strong",{class:c(o.getFailedPingsColor(e.failedPingsToSource))},i(e.failedPingsToSource)+"/10",3)])):d("",!0),e.failedPingsToTarget!==void 0?(a(),h("p",Q,[u(i(t.resultsTargetNode)+" ← "+i(t.activeNode.id)+": ",1),g("strong",{class:c(o.getFailedPingsColor(e.failedPingsToTarget))},i(e.failedPingsToTarget)+"/10",3)])):d("",!0)]),"item.minPowerlevelSource":l(({item:e})=>[e.minPowerlevelSource!==void 0?(a(),h("p",Y,[u(" Node "+i(t.activeNode.id)+": ",1),g("strong",{class:c(o.getPowerLevelColor(e.minPowerlevelSource))},i(o.getPowerLevel(e.minPowerlevelSource)),3)])):d("",!0),e.minPowerlevelTarget!==void 0?(a(),h("p",$,[u(" Node "+i(t.resultsTargetNode)+": ",1),g("strong",{class:c(o.getPowerLevelColor(e.minPowerlevelTarget))},i(o.getPowerLevel(e.minPowerlevelTarget)),3)])):d("",!0)]),_:2},1032,["headers","items"])):d("",!0)]),_:1})]),_:1}),n(j,null,{default:l(()=>[n(F),n(k,{color:"blue-darken-1",variant:"text",onClick:r[4]||(r[4]=e=>s.$emit("close"))},{default:l(()=>[...r[13]||(r[13]=[u("Close",-1)])]),_:1})]),_:1})]),_:1},8,["loading"]),t.infoMenu?(a(),N(y,{key:0,modelValue:t.infoMenu,"onUpdate:modelValue":r[5]||(r[5]=e=>t.infoMenu=e)},null,8,["modelValue"])):d("",!0)]),_:1},8,["modelValue"])}const oe=b(A,[["render",ee]]);export{oe as default};