zwave-js-ui
Version:
Z-Wave Control Panel and MQTT Gateway
3 lines (2 loc) • 9.75 kB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DialogHealthCheckInfo-CQ5I4FW7.js","./index-B8xHYEBg.js","./index-j3oOpPBM.css","./VDataTable-DFqrHTxq.js","./sort-B85QZ63r.js","./VTable-DHfEeaF4.js","./VTable-BsI6FsWH.css","./VDataTable-CLcLRj9B.css"])))=>i.map(i=>d[i]);
import{_ as P,m as w,a as x,I as V,d as _,s as T,e as N,z as a,w as l,b as i,h as d,F as S,as as R,H as g,t as n,G as L,u as M,V as v,f as p,J as H,D as j,i as k,k as u,l as C,n as c,c as h,bz as F,au as B,ah as D,a6 as I,W as E,dC as A,dD as U,x as y,aA as O,y as q}from"./index-B8xHYEBg.js";import{V as z}from"./VDataTable-DFqrHTxq.js";import"./sort-B85QZ63r.js";import"./VTable-DHfEeaF4.js";const W={components:{DialogHealthCheckInfo:_(()=>q(()=>import("./DialogHealthCheckInfo-CQ5I4FW7.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url))},props:{modelValue:Boolean,node:Object,socket:Object},mixins:[V],watch:{modelValue(s){this.init(s)}},computed:{...x(y,["nodes"]),_value:{get(){return this.modelValue},set(s){this.$emit("update:modelValue",s)}},isLR(){return this.activeNode?.protocol===O.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:{...w(y,["showSnackbar"]),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 A(U,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=E(this.node),this.targetNode=this.filteredNodes.find(r=>r.isControllerNode),this.selectedNode=this.filteredNodes[0]?this.filteredNodes[0].id:null,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},Z={key:0},K={key:0,class:"mb-0"},Q={key:1,class:"mb-0"},X={key:0,class:"mb-0"},Y={key:1,class:"mb-0"},$={key:0,class:"mb-0"},ee={key:1,class:"mb-0"};function te(s,r,m,f,t,o){const b=T("dialog-health-check-info");return a(),N(I,{modelValue:o._value,"onUpdate:modelValue":r[6]||(r[6]=e=>o._value=e),"max-width":"800px",persistent:""},{default:l(()=>[i(S,{loading:t.loading},{default:l(()=>[i(R,null,{default:l(()=>[g("span",G,"Node "+n(t.activeNode?t.activeNode.id:"")+" - Health check",1)]),_:1}),i(L,null,{default:l(()=>[i(M,null,{default:l(()=>[i(v,{class:"ma-3",justify:"start"},{default:l(()=>[i(p,null,{default:l(()=>[i(H,{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}),i(p,null,{default:l(()=>[i(j,{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}),i(v,{class:"mb-2",justify:"space-around"},{default:l(()=>[i(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(n(t.loading?"Stop":"Check"),1)]),_:1},8,["color","disabled"]),i(k,{variant:"flat",color:"primary",onClick:r[3]||(r[3]=e=>t.infoMenu=!0)},{default:l(()=>[r[8]||(r[8]=u(" Info ",-1)),i(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"])},n(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"])},n(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(()=>[i(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)),i(C,null,{default:l(()=>[...r[11]||(r[11]=[u("file_download",-1)])]),_:1})]),_:1},8,["onClick"])):d("",!0)]),_:1})]),"item.rating":l(({item:e})=>[i(F,{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,n(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))},n(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))},n(e.snrMargin)+" dBm",3)):d("",!0)]),"item.routeChanges":l(({item:e})=>[e.routeChanges!==void 0?(a(),h("strong",Z,n(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))},n(o.getPowerLevel(e.minPowerlevel)),3)):d("",!0)]),"item.failedPingsNode":l(({item:e})=>[e.failedPingsNode!==void 0?(a(),h("p",K,[u(n(t.resultsTargetNode)+" → "+n(t.activeNode.id)+": ",1),g("strong",{class:c(o.getFailedPingsColor(e.failedPingsNode))},n(e.failedPingsNode)+"/10",3)])):d("",!0),e.failedPingsController!==void 0?(a(),h("p",Q,[u(n(t.resultsTargetNode)+" ← "+n(t.activeNode.id)+": ",1),g("strong",{class:c(o.getFailedPingsColor(e.failedPingsController))},n(e.failedPingsController)+"/10",3)])):d("",!0)]),"item.failedPingsToSource":l(({item:e})=>[e.failedPingsToSource!==void 0?(a(),h("p",X,[u(n(t.resultsTargetNode)+" → "+n(t.activeNode.id)+": ",1),g("strong",{class:c(o.getFailedPingsColor(e.failedPingsToSource))},n(e.failedPingsToSource)+"/10",3)])):d("",!0),e.failedPingsToTarget!==void 0?(a(),h("p",Y,[u(n(t.resultsTargetNode)+" ← "+n(t.activeNode.id)+": ",1),g("strong",{class:c(o.getFailedPingsColor(e.failedPingsToTarget))},n(e.failedPingsToTarget)+"/10",3)])):d("",!0)]),"item.minPowerlevelSource":l(({item:e})=>[e.minPowerlevelSource!==void 0?(a(),h("p",$,[u(" Node "+n(t.activeNode.id)+": ",1),g("strong",{class:c(o.getPowerLevelColor(e.minPowerlevelSource))},n(o.getPowerLevel(e.minPowerlevelSource)),3)])):d("",!0),e.minPowerlevelTarget!==void 0?(a(),h("p",ee,[u(" Node "+n(t.resultsTargetNode)+": ",1),g("strong",{class:c(o.getPowerLevelColor(e.minPowerlevelTarget))},n(o.getPowerLevel(e.minPowerlevelTarget)),3)])):d("",!0)]),_:2},1032,["headers","items"])):d("",!0)]),_:1})]),_:1}),i(B,null,{default:l(()=>[i(D),i(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(b,{key:0,modelValue:t.infoMenu,"onUpdate:modelValue":r[5]||(r[5]=e=>t.infoMenu=e)},null,8,["modelValue"])):d("",!0)]),_:1},8,["modelValue"])}const ne=P(W,[["render",te]]);export{ne as default};