UNPKG

zwave-js-ui

Version:

Z-Wave Control Panel and MQTT Gateway

2 lines (1 loc) 13.6 kB
import{dw as we,a2 as ye,c$ as Ne,dx as Re,a4 as Ce,bE as Ie,dy as De,bj as I,cF as ue,cC as Pe,a5 as _e,cL as Fe,bq as O,cW as re,dh as Le,cY as W,a6 as Ee,W as oe,U as a,b as l,M as E,an as z,$ as Te,d4 as Me,dz as Be,dA as Ae,a8 as Ue,h as T,bF as de,_ as je,I as Oe,a as ze,u as He,G as qe,o as D,l as H,w as u,N as Ge,ar as Ke,t as d,O as Xe,V as We,e as Y,f as Z,Q as Ye,dB as Ze,dC as ce,k,bC as Qe,q as L,ae as Je,Z as Q,aD as J,dD as $,c as me,at as $e,ai as et,a7 as tt}from"./index-B9yS4Bcc.js";import{V as nt}from"./VTable-BXtGlLLl.js";const it=50,lt=500;function st(e){let{toggleUpDown:i}=e,c=-1,S=-1;we(m);function n(f){m(),r(f),window.addEventListener("pointerup",m),document.addEventListener("blur",m),c=window.setTimeout(()=>{S=window.setInterval(()=>r(f),it)},lt)}function m(){window.clearTimeout(c),window.clearInterval(S),window.removeEventListener("pointerup",m),document.removeEventListener("blur",m)}function r(f){i(f==="up")}return{holdStart:n,holdStop:m}}const at=ye({controlVariant:{type:String,default:"default"},inset:Boolean,hideInput:Boolean,modelValue:{type:Number,default:null},min:{type:Number,default:Number.MIN_SAFE_INTEGER},max:{type:Number,default:Number.MAX_SAFE_INTEGER},step:{type:Number,default:1},precision:{type:Number,default:0},minFractionDigits:{type:Number,default:null},decimalSeparator:{type:String,validator:e=>!e||e.length===1},...Ne(Re(),["modelValue","validationValue"])},"VNumberInput"),fe=Ce()({name:"VNumberInput",props:{...at()},emits:{"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,i){let{slots:c}=i;const S=Ie(),{holdStart:n,holdStop:m}=st({toggleUpDown:K}),r=De(e),f=I(()=>r.isDisabled.value||r.isReadonly.value),M=ue(e.focused),{decimalSeparator:ve}=Pe(),b=I(()=>{var t;return((t=e.decimalSeparator)==null?void 0:t[0])||ve.value});function N(t){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.precision,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const y=s==null?String(t):t.toFixed(s);if(M.value&&p)return Number(y).toString().replace(".",b.value);if(e.minFractionDigits===null||s!==null&&s<e.minFractionDigits)return y.replace(".",b.value);let[R,g]=y.split(".");return g=(g??"").padEnd(e.minFractionDigits,"0").replace(new RegExp(`(?<=\\d{${e.minFractionDigits}})0`,"g"),""),[R,g].filter(Boolean).join(b.value)}const o=_e(e,"modelValue",null,t=>t??null,t=>t==null?t??null:W(Number(t),e.min,e.max)),P=ue(null);Fe(()=>{M.value&&!f.value||(o.value==null?P.value=null:isNaN(o.value)||(P.value=N(o.value)))});const h=I({get:()=>P.value,set(t){if(t===null||t===""){o.value=null,P.value=null;return}const s=Number(t.replace(b.value,"."));!isNaN(s)&&s<=e.max&&s>=e.min&&(o.value=s,P.value=t)}}),q=I(()=>f.value?!1:(o.value??0)+e.step<=e.max),G=I(()=>f.value?!1:(o.value??0)-e.step>=e.min),v=I(()=>e.hideInput?"stacked":e.controlVariant),ee=O(()=>v.value==="split"?"$plus":"$collapse"),te=O(()=>v.value==="split"?"$minus":"$expand"),B=O(()=>v.value==="split"?"default":"small"),A=O(()=>v.value==="stacked"?"auto":"100%"),pe={props:{onClick:U,onPointerup:w,onPointerdown:ie,onPointercancel:w}},ge={props:{onClick:U,onPointerup:w,onPointerdown:le,onPointercancel:w}};re(()=>e.precision,()=>se()),re(()=>e.minFractionDigits,()=>se()),Le(()=>{X()});function ne(t){if(t==null)return 0;const s=t.toString(),p=s.indexOf(".");return~p?s.length-p:0}function K(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;if(f.value)return;if(o.value==null){h.value=N(W(0,e.min,e.max));return}let s=Math.max(ne(o.value),ne(e.step));e.precision!=null&&(s=Math.max(s,e.precision)),t?q.value&&(h.value=N(o.value+e.step,s)):G.value&&(h.value=N(o.value-e.step,s))}function be(t){var j;if(!t.data)return;const s=t.target,{value:p,selectionStart:y,selectionEnd:R}=s??{},g=p?p.slice(0,y)+t.data+p.slice(R):t.data,C=Be(g,e.precision,b.value);new RegExp(`^-?\\d*${Ae(b.value)}?\\d*$`).test(g)||(t.preventDefault(),s.value=C),e.precision!=null&&(((j=g.split(b.value)[1])==null?void 0:j.length)>e.precision&&(t.preventDefault(),s.value=C),e.precision===0&&g.includes(b.value)&&(t.preventDefault(),s.value=C))}async function he(t){["Enter","ArrowLeft","ArrowRight","Backspace","Delete","Tab"].includes(t.key)||t.ctrlKey||["ArrowDown","ArrowUp"].includes(t.key)&&(t.preventDefault(),X(),await Ue(),t.key==="ArrowDown"?K(!1):K())}function U(t){t.stopPropagation()}function w(t){const s=t.currentTarget;s==null||s.releasePointerCapture(t.pointerId),t.preventDefault(),m()}function ie(t){const s=t.currentTarget;s==null||s.setPointerCapture(t.pointerId),t.preventDefault(),t.stopPropagation(),n("up")}function le(t){const s=t.currentTarget;s==null||s.setPointerCapture(t.pointerId),t.preventDefault(),t.stopPropagation(),n("down")}function X(){if(f.value||!S.value)return;const t=S.value.value,s=Number(t.replace(b.value,"."));t&&!isNaN(s)?h.value=N(W(s,e.min,e.max)):h.value=null}function se(){f.value||(h.value=o.value!==null&&!isNaN(o.value)?N(o.value,e.precision,!1):null)}function Ve(){if(!f.value){if(o.value===null||isNaN(o.value)){h.value=null;return}h.value=o.value.toString().replace(".",b.value)}}function xe(){Ve()}function ke(){X()}return Ee(()=>{const{modelValue:t,...s}=oe.filterProps(e);function p(){return c.increment?l(de,{key:"increment-defaults",defaults:{VBtn:{disabled:!q.value,flat:!0,height:A.value,size:B.value,icon:ee.value}}},{default:()=>[c.increment(pe)]}):l(T,{"aria-hidden":"true","data-testid":"increment",disabled:!q.value,flat:!0,height:A.value,icon:ee.value,key:"increment-btn",onClick:U,onPointerdown:ie,onPointerup:w,onPointercancel:w,size:B.value,tabindex:"-1"},null)}function y(){return c.decrement?l(de,{key:"decrement-defaults",defaults:{VBtn:{disabled:!G.value,flat:!0,height:A.value,size:B.value,icon:te.value}}},{default:()=>[c.decrement(ge)]}):l(T,{"aria-hidden":"true","data-testid":"decrement",disabled:!G.value,flat:!0,height:A.value,icon:te.value,key:"decrement-btn",onClick:U,onPointerdown:le,onPointerup:w,onPointercancel:w,size:B.value,tabindex:"-1"},null)}function R(){return a("div",{class:"v-number-input__control"},[y(),l(E,{vertical:v.value!=="stacked"},null),p()])}function g(){return!e.hideInput&&!e.inset?l(E,{vertical:!0},null):void 0}const C=v.value==="split"?a("div",{class:"v-number-input__control"},[l(E,{vertical:!0},null),p()]):e.reverse||v.value==="hidden"?void 0:a(z,null,[g(),R()]),j=c["append-inner"]||C,ae=v.value==="split"?a("div",{class:"v-number-input__control"},[y(),l(E,{vertical:!0},null)]):e.reverse&&v.value!=="hidden"?a(z,null,[R(),g()]):void 0,Se=c["prepend-inner"]||ae;return l(oe,Te({ref:S},s,{modelValue:h.value,"onUpdate:modelValue":V=>h.value=V,focused:M.value,"onUpdate:focused":V=>M.value=V,validationValue:o.value,onBeforeinput:be,onFocus:xe,onBlur:ke,onKeydown:he,class:["v-number-input",{"v-number-input--default":v.value==="default","v-number-input--hide-input":e.hideInput,"v-number-input--inset":e.inset,"v-number-input--reverse":e.reverse,"v-number-input--split":v.value==="split","v-number-input--stacked":v.value==="stacked"},e.class],style:e.style,inputmode:"decimal"}),{...c,"append-inner":j?function(){var F;for(var V=arguments.length,_=new Array(V),x=0;x<V;x++)_[x]=arguments[x];return a(z,null,[(F=c["append-inner"])==null?void 0:F.call(c,..._),C])}:void 0,"prepend-inner":Se?function(){var F;for(var V=arguments.length,_=new Array(V),x=0;x<V;x++)_[x]=arguments[x];return a(z,null,[ae,(F=c["prepend-inner"])==null?void 0:F.call(c,..._)])}:void 0})}),Me({},S)}}),ut={components:{},props:{modelValue:Boolean,node:Object,socket:Object},mixins:[Oe],watch:{modelValue(e){this.init(e)}},computed:{_value:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},data(){return{running:!1,activeNode:null,isRunning:!1,mode:0,modes:[{title:"Basic Set On/Off",value:0}],infinite:!1,interval:250,iterations:100,statistics:null,progress:0}},methods:{...ze(He,["showSnackbar"]),exportResults(){this.app.exportConfiguration(this.results,`linkReliability_${this.activeNode.id}-${this.statistics}`,"json")},init(e){const i=this.running;this.mode=0,this.statistics=null,this.infinite=!1,this.running=!1,this.interval=250,this.iterations=25,this.progress=0,e?(this.activeNode=qe(this.node),this.bindEvent("linkReliability",this.onProgress.bind(this))):e===!1&&(this.unbindEvents(),i&&this.abortLinkReliabilityCheck())},onProgress(e){this.statistics=e.args[0],this.progress=Math.round(this.statistics.rounds/this.iterations*100)},async abortLinkReliabilityCheck(){const e=await this.app.apiRequest("abortLinkReliabilityCheck",[this.activeNode.id]);this.running=!1,e.success&&this.showSnackbar("Link statistics aborted","success")},async checkLinkReliability(){this.running=!0;const e=await this.app.apiRequest("checkLinkReliability",[this.activeNode.id,{mode:this.mode,interval:this.interval,rounds:this.infinite?void 0:this.iterations}],{infoSnack:!0,errorSnack:!1});this.running=!1,this.progress=0,e.success?this.statistics=e.result:this.showSnackbar(e.message||"Health check failed","error")}},beforeUnmount(){this.init(!1)}},rt={class:"text-h5"},ot={key:0},dt={key:0};function ct(e,i,c,S,n,m){return D(),H(tt,{modelValue:m._value,"onUpdate:modelValue":i[5]||(i[5]=r=>m._value=r),"max-width":"800px",persistent:""},{default:u(()=>[l(Ge,null,{default:u(()=>[l(Ke,null,{default:u(()=>[a("span",rt,"Node "+d(n.activeNode?n.activeNode.id:"")+" - Link Statistics",1)]),_:1}),l(Xe,null,{default:u(()=>[l(We,null,{default:u(()=>[l(Y,{class:"ma-3",justify:"start"},{default:u(()=>[l(Z,{cols:"12",align:"center"},{default:u(()=>[l(Ye,{label:"Mode",style:{"max-width":"325px"},modelValue:n.mode,"onUpdate:modelValue":i[0]||(i[0]=r=>n.mode=r),items:n.modes,"persistent-hint":""},null,8,["modelValue","items"])]),_:1}),l(Z,{cols:"12",sm:"6"},{default:u(()=>[l(Ze,{class:"justify-center",modelValue:n.infinite,"onUpdate:modelValue":i[2]||(i[2]=r=>n.infinite=r),inline:""},{default:u(()=>[l(ce,{label:"Infinite",value:!0}),l(ce,{label:"XX",value:!1},{label:u(()=>[l(fe,{disabled:n.infinite,label:"Iterations",modelValue:n.iterations,"onUpdate:modelValue":i[1]||(i[1]=r=>n.iterations=r),modelModifiers:{number:!0},type:"number",min:1,max:1e4,"persistent-hint":""},null,8,["disabled","modelValue"])]),_:1})]),_:1},8,["modelValue"])]),_:1}),l(Z,{cols:"12",sm:"6",class:"mt-4"},{default:u(()=>[l(fe,{label:"Interval",modelValue:n.interval,"onUpdate:modelValue":i[3]||(i[3]=r=>n.interval=r),modelModifiers:{number:!0},suffix:"ms",type:"number",min:1,max:1e4,"persistent-hint":""},null,8,["modelValue"])]),_:1})]),_:1}),l(Y,{class:"mb-4",justify:"space-around"},{default:u(()=>[l(T,{variant:"flat",color:"success",onClick:m.checkLinkReliability,disabled:n.running,loading:n.running},{default:u(()=>i[6]||(i[6]=[k("Run")])),_:1,__:[6]},8,["onClick","disabled","loading"]),l(T,{variant:"flat",color:"error",onClick:m.abortLinkReliabilityCheck,disabled:!n.running},{default:u(()=>i[7]||(i[7]=[k("Stop")])),_:1,__:[7]},8,["onClick","disabled"])]),_:1}),l(E),n.statistics?(D(),H(Y,{key:0,class:"ma-3",justify:"center",align:"center"},{default:u(()=>[n.running?(D(),H(Qe,{key:0,indeterminate:this.infinite,"model-value":this.infinite?null:this.progress,color:"success"},null,8,["indeterminate","model-value"])):L("",!0),l(Je,{class:"mr-2",density:"compact"},{default:u(()=>{var r;return[l(Q,null,{default:u(()=>[l(J,{class:"text-info"},{default:u(()=>i[8]||(i[8]=[k("Commands Sent")])),_:1,__:[8]}),l($,null,{default:u(()=>[k(d(n.statistics.commandsSent),1)]),_:1})]),_:1}),l(Q,null,{default:u(()=>[l(J,{class:"text-error"},{default:u(()=>i[9]||(i[9]=[k("Failed Commands")])),_:1,__:[9]}),l($,null,{default:u(()=>[k(d(n.statistics.commandErrors)+" ("+d((n.statistics.commandErrors/n.statistics.rounds*100).toFixed(1))+" %)",1)]),_:1})]),_:1}),((r=n.statistics)==null?void 0:r.missingResponses)!=null?(D(),H(Q,{key:0},{default:u(()=>[l(J,{class:"text-error"},{default:u(()=>i[10]||(i[10]=[k("Missing Responses")])),_:1,__:[10]}),l($,null,{default:u(()=>[k(d(n.statistics.missingResponses)+" ("+d((n.statistics.missingResponses/n.statistics.commandsSent*100).toFixed(1))+" %)",1)]),_:1})]),_:1})):L("",!0)]}),_:1}),l(nt,null,{default:u(()=>{var r;return[i[15]||(i[15]=a("thead",null,[a("tr",null,[a("th",{class:"text-left"}),a("th",{class:"text-left"},"Min"),a("th",{class:"text-left"},"Max"),a("th",{class:"text-left"},"Avg")])],-1)),n.statistics.latency?(D(),me("tbody",ot,[a("tr",null,[i[11]||(i[11]=a("td",null,"Latency [ms]",-1)),a("td",null,d(n.statistics.latency.min),1),a("td",null,d(n.statistics.latency.max),1),a("td",null,d(Math.round(n.statistics.latency.average)),1)]),a("tr",null,[i[12]||(i[12]=a("td",null,"Round-Trip Time [ms]",-1)),a("td",null,d(n.statistics.rtt.min),1),a("td",null,d(n.statistics.rtt.max),1),a("td",null,d(Math.round(n.statistics.rtt.average)),1)]),a("tr",null,[i[13]||(i[13]=a("td",null,"ACK RSSI [dBm]",-1)),a("td",null,d(n.statistics.ackRSSI.min),1),a("td",null,d(n.statistics.ackRSSI.max),1),a("td",null,d(Math.round(n.statistics.ackRSSI.average)),1)]),Number.isFinite((r=n.statistics.responseRSSI)==null?void 0:r.average)?(D(),me("tr",dt,[i[14]||(i[14]=a("td",null,"Response RSSI [dBm]",-1)),a("td",null,d(n.statistics.responseRSSI.min),1),a("td",null,d(n.statistics.responseRSSI.max),1),a("td",null,d(Math.round(n.statistics.responseRSSI.average)),1)])):L("",!0)])):L("",!0)]}),_:1})]),_:1})):L("",!0)]),_:1})]),_:1}),l($e,null,{default:u(()=>[l(et),l(T,{color:"blue-darken-1",variant:"text",onClick:i[4]||(i[4]=r=>e.$emit("close"))},{default:u(()=>i[16]||(i[16]=[k("Close")])),_:1,__:[16]})]),_:1})]),_:1})]),_:1},8,["modelValue"])}const vt=je(ut,[["render",ct]]);export{vt as default};