zwave-js-ui
Version:
Z-Wave Control Panel and MQTT Gateway
3 lines (2 loc) • 9.79 kB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DialogHealthCheckInfo-TBe_WsRz.js","./index-B9yS4Bcc.js","./index-Bm7DxUwf.css","./VDataTable-CKSj76XP.js","./sort-CSOGXH9I.js","./VTable-BXtGlLLl.js","./VTable-CQyv0wyO.css","./VDataTable-DNwLG7iF.css"])))=>i.map(i=>d[i]);
import{_,d as b,z as w,I as x,m as V,u as C,av as T,a as S,du as R,dv as L,G as M,r as H,o as a,l as N,w as l,b as i,N as j,ar as B,U as g,t as n,O as F,V as I,e as v,f as p,P as E,W as D,h as k,k as u,i as y,n as c,q as d,bC as U,c as h,at as O,ai as q,a7 as A}from"./index-B9yS4Bcc.js";import{V as z}from"./VDataTable-CKSj76XP.js";import"./sort-CSOGXH9I.js";import"./VTable-BXtGlLLl.js";const W={components:{DialogHealthCheckInfo:b(()=>w(()=>import("./DialogHealthCheckInfo-TBe_WsRz.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url))},props:{modelValue:Boolean,node:Object,socket:Object},mixins:[x],watch:{modelValue(t){this.init(t)}},computed:{...V(C,["nodes"]),_value:{get(){return this.modelValue},set(t){this.$emit("update:modelValue",t)}},isLR(){var t;return((t=this.activeNode)==null?void 0:t.protocol)===T.ZWaveLongRange},filteredNodes(){return this.isLR?this.nodes.filter(t=>t.isControllerNode):this.activeNode?this.nodes.filter(t=>t.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:{...S(C,["showSnackbar"]),exportResults(){this.app.exportConfiguration(this.results,`healthCheck_${this.activeNode.id}-${this.resultsTargetNode}`,"json")},getNeighborsColor(t){return t>2?"text-success":t===0?"text-error":"text-warning"},getLatencyColor(t){return t<=100?"text-success":t<=500?"text-warning":"text-error"},getSnrMarginColor(t){return t>=17?"text-success":"text-error"},getFailedPingsColor(t){return t===0?"text-success":t===1?"text-warning":"text-error"},getRatingColor(t){return t===void 0?"primary":t>=6?"success":t>=4?"warning":"error"},getPowerLevel(t){return R(L,t)},getPowerLevelColor(t){return t===void 0?"":t>=6?"text-success":t>=3?"text-warning":"text-error"},init(t){t?(this.rounds=5,this.activeNode=M(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))):t===!1&&(this.unbindEvents(),this.results=[],this.loading=!1,this.targetNode=null,this.averages=null)},onHealthCheckProgress(t){const{request:r,round:m,totalRounds:f,lastResult:s}=t;if(r.nodeId===this.activeNode.id){const o=this.results[this.results.length-1];s&&Object.assign(o,s),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 t=[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",t.push(r.id)),t.push(this.rounds||1),this.results.push({round:1,rating:void 0});const m=await this.app.apiRequest(`check${this.mode}Health`,t,{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(s=>s.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"},Z={key:0},J={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(t,r,m,f,s,o){const P=H("dialog-health-check-info");return a(),N(A,{modelValue:o._value,"onUpdate:modelValue":r[6]||(r[6]=e=>o._value=e),"max-width":"800px",persistent:""},{default:l(()=>[i(j,{loading:s.loading},{default:l(()=>[i(B,null,{default:l(()=>[g("span",G,"Node "+n(s.activeNode?s.activeNode.id:"")+" - Health check",1)]),_:1}),i(F,null,{default:l(()=>[i(I,null,{default:l(()=>[i(v,{class:"ma-3",justify:"start"},{default:l(()=>[i(p,null,{default:l(()=>[i(E,{style:{"max-width":"300px"},label:"Target Node",modelValue:s.targetNode,"onUpdate:modelValue":r[0]||(r[0]=e=>s.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(D,{modelValue:s.rounds,"onUpdate:modelValue":r[1]||(r[1]=e=>s.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:s.loading?"error":"success",disabled:!s.targetNode,onClick:r[2]||(r[2]=e=>s.loading?o.stopHealth():o.checkHealth())},{default:l(()=>[u(n(s.loading?"Stop":"Check"),1)]),_:1},8,["color","disabled"]),i(k,{variant:"flat",color:"primary",onClick:r[3]||(r[3]=e=>s.infoMenu=!0)},{default:l(()=>[r[8]||(r[8]=u(" Info ")),i(y,null,{default:l(()=>r[7]||(r[7]=[u("help")])),_:1,__:[7]})]),_:1,__:[8]})]),_:1}),s.averages&&!s.loading?(a(),N(v,{key:0,class:"mb-2",justify:"space-around"},{default:l(()=>[s.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(s.averages.numNeighbors),"text-h3"])},n(s.averages.numNeighbors),3)]),_:1,__:[9]})):d("",!0),s.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(s.averages.rating),"text-h3"])},n(s.averages.rating)+"/10",3)]),_:1,__:[10]})):d("",!0)]),_:1})):d("",!0),s.results.length>0?(a(),N(z,{key:1,headers:o.headers,items:s.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(()=>[!s.loading&&s.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 ")),i(y,null,{default:l(()=>r[11]||(r[11]=[u("file_download")])),_:1,__:[11]})]),_:1,__:[12]},8,["onClick"])):d("",!0)]),_:1})]),"item.rating":l(({item:e})=>[i(U,{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",Z,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",J,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(s.resultsTargetNode)+" → "+n(s.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(s.resultsTargetNode)+" ← "+n(s.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(s.resultsTargetNode)+" → "+n(s.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(s.resultsTargetNode)+" ← "+n(s.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(s.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(s.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(O,null,{default:l(()=>[i(q),i(k,{color:"blue-darken-1",variant:"text",onClick:r[4]||(r[4]=e=>t.$emit("close"))},{default:l(()=>r[13]||(r[13]=[u("Close")])),_:1,__:[13]})]),_:1})]),_:1},8,["loading"]),s.infoMenu?(a(),N(P,{key:0,modelValue:s.infoMenu,"onUpdate:modelValue":r[5]||(r[5]=e=>s.infoMenu=e)},null,8,["modelValue"])):d("",!0)]),_:1},8,["modelValue"])}const ne=_(W,[["render",te]]);export{ne as default};