UNPKG

iobroker.lovelace

Version:

With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI

10 lines 9.16 kB
export const __webpack_ids__=["40389"];export const __webpack_modules__={82062:function(e,t,i){i.a(e,(async function(e,t){try{var n=i(44249),a=i(72621),s=(i(9359),i(70104),i(57243)),o=i(15093),l=i(69634),r=i(50602),h=i(45061),c=i(76320),d=i(10916),u=e([r]);r=(u.then?(await u)():u)[0];const f=(e,t,i)=>180*(0,d.Ff)((0,d.Fv)(e,t,i),t,i)/100;(0,n.Z)([(0,o.Mo)("ha-gauge")],(function(e,t){class i extends t{constructor(...t){super(...t),e(this)}}return{F:i,d:[{kind:"field",decorators:[(0,o.Cb)({type:Number})],key:"min",value:()=>0},{kind:"field",decorators:[(0,o.Cb)({type:Number})],key:"max",value:()=>100},{kind:"field",decorators:[(0,o.Cb)({type:Number})],key:"value",value:()=>0},{kind:"field",decorators:[(0,o.Cb)({attribute:!1})],key:"formatOptions",value:void 0},{kind:"field",decorators:[(0,o.Cb)({attribute:!1,type:String})],key:"valueText",value:void 0},{kind:"field",decorators:[(0,o.Cb)({attribute:!1})],key:"locale",value:void 0},{kind:"field",decorators:[(0,o.Cb)({type:Boolean})],key:"needle",value:()=>!1},{kind:"field",decorators:[(0,o.Cb)({type:Array})],key:"levels",value:void 0},{kind:"field",decorators:[(0,o.Cb)()],key:"label",value:()=>""},{kind:"field",decorators:[(0,o.SB)()],key:"_angle",value:()=>0},{kind:"field",decorators:[(0,o.SB)()],key:"_updated",value:()=>!1},{kind:"field",decorators:[(0,o.SB)()],key:"_segment_label",value:()=>""},{kind:"method",key:"firstUpdated",value:function(e){(0,a.Z)(i,"firstUpdated",this,3)([e]),(0,c.T)((()=>{this._updated=!0,this._angle=f(this.value,this.min,this.max),this._segment_label=this._getSegmentLabel(),this._rescaleSvg()}))}},{kind:"method",key:"updated",value:function(e){(0,a.Z)(i,"updated",this,3)([e]),this._updated&&(e.has("value")||e.has("valueText")||e.has("label")||e.has("_segment_label"))&&(this._angle=f(this.value,this.min,this.max),this._segment_label=this._getSegmentLabel(),this._rescaleSvg())}},{kind:"method",key:"render",value:function(){return s.YP` <svg viewBox="-50 -50 100 50" class="gauge"> ${this.needle&&this.levels?"":s.YP`<path class="dial" d="M -40 0 A 40 40 0 0 1 40 0"></path>`} ${this.levels?this.levels.sort(((e,t)=>e.level-t.level)).map(((e,t)=>{let i;if(0===t&&e.level!==this.min){const e=f(this.min,this.min,this.max);i=s.YP`<path stroke="var(--info-color)" class="level" d="M ${0-40*Math.cos(e*Math.PI/180)} ${0-40*Math.sin(e*Math.PI/180)} A 40 40 0 0 1 40 0 "></path>`}const n=f(e.level,this.min,this.max);return s.YP`${i}<path stroke="${e.stroke}" class="level" d="M ${0-40*Math.cos(n*Math.PI/180)} ${0-40*Math.sin(n*Math.PI/180)} A 40 40 0 0 1 40 0 "></path>`})):""} ${this.needle?s.YP`<path class="needle" d="M -25 -2.5 L -47.5 0 L -25 2.5 z" style="${(0,l.V)({transform:`rotate(${this._angle}deg)`})}"> </path>`:s.YP`<path class="value" d="M -40 0 A 40 40 0 1 0 40 0" style="${(0,l.V)({transform:`rotate(${this._angle}deg)`})}"></path>`} </svg> <svg class="text"> <text class="value-text"> ${this._segment_label?this._segment_label:this.valueText||(0,r.uf)(this.value,this.locale,this.formatOptions)}${this._segment_label?"":"%"===this.label?(0,h.K)(this.locale)+"%":` ${this.label}`} </text> </svg>`}},{kind:"method",key:"_rescaleSvg",value:function(){const e=this.shadowRoot.querySelector(".text"),t=e.querySelector("text").getBBox();e.setAttribute("viewBox",`${t.x} ${t.y} ${t.width} ${t.height}`)}},{kind:"method",key:"_getSegmentLabel",value:function(){if(this.levels){this.levels.sort(((e,t)=>e.level-t.level));for(let e=this.levels.length-1;e>=0;e--)if(this.value>=this.levels[e].level)return this.levels[e].label}return""}},{kind:"field",static:!0,key:"styles",value:()=>s.iv`:host{position:relative}.dial{fill:none;stroke:var(--primary-background-color);stroke-width:15}.value{fill:none;stroke-width:15;stroke:var(--gauge-color);transition:all 1s ease 0s}.needle{fill:var(--primary-text-color);transition:all 1s ease 0s}.level{fill:none;stroke-width:15}.gauge{display:block}.text{position:absolute;max-height:40%;max-width:55%;left:50%;bottom:-6%;transform:translate(-50%,0%)}.value-text{font-size:50px;fill:var(--primary-text-color);text-anchor:middle;direction:ltr}`}]}}),s.oi);t()}catch(e){t(e)}}))},10188:function(e,t,i){i.a(e,(async function(e,n){try{i.r(t),i.d(t,{DEFAULT_MAX:()=>M,DEFAULT_MIN:()=>w,severityMap:()=>N});var a=i(44249),s=i(72621),o=(i(9359),i(70104),i(57243)),l=i(15093),r=i(20552),h=i(35359),c=i(69634),d=i(82393),u=i(47194),f=i(31064),v=i(50602),g=(i(54977),i(82062)),m=i(96194),_=i(3967),y=i(69223),k=i(1617),p=i(5684),b=i(93331),x=i(62577),$=e([g,v]);[g,v]=$.then?(await $)():$;const w=0,M=100,N={red:"var(--error-color)",green:"var(--success-color)",yellow:"var(--warning-color)",normal:"var(--info-color)"};(0,a.Z)([(0,l.Mo)("hui-gauge-card")],(function(e,t){class n extends t{constructor(...t){super(...t),e(this)}}return{F:n,d:[{kind:"method",static:!0,key:"getConfigElement",value:async function(){return await i.e("96212").then(i.bind(i,32137)),document.createElement("hui-gauge-card-editor")}},{kind:"method",static:!0,key:"getStubConfig",value:function(e,t,i){return{type:"gauge",entity:(0,y.j)(e,1,t,i,["counter","input_number","number","sensor"],(e=>!isNaN(Number(e.state))))[0]||""}}},{kind:"field",decorators:[(0,l.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,l.SB)()],key:"_config",value:void 0},{kind:"method",key:"getCardSize",value:function(){return 4}},{kind:"method",key:"setConfig",value:function(e){if(!e.entity)throw new Error("Entity must be specified");if(!(0,f.T)(e.entity))throw new Error("Invalid entity");this._config={min:w,max:M,...e}}},{kind:"method",key:"render",value:function(){if(!this._config||!this.hass)return o.Ld;const e=this.hass.states[this._config.entity];if(!e)return o.dy` <hui-warning> ${(0,x.i)(this.hass,this._config.entity)} </hui-warning> `;const t=Number(e.state);if(e.state===m.nZ)return o.dy` <hui-warning>${this.hass.localize("ui.panel.lovelace.warning.entity_unavailable",{entity:this._config.entity})}</hui-warning> `;if(isNaN(t))return o.dy` <hui-warning>${this.hass.localize("ui.panel.lovelace.warning.entity_non_numeric",{entity:this._config.entity})}</hui-warning> `;const i=this._config.name??(0,u.C)(e);return o.dy` <ha-card class="${(0,h.$)({action:(0,p.q)(this._config)})}" @action="${this._handleAction}" .actionHandler="${(0,_.K)({hasHold:(0,p._)(this._config.hold_action),hasDoubleClick:(0,p._)(this._config.double_tap_action)})}" tabindex="${(0,r.o)(!this._config.tap_action||(0,p._)(this._config.tap_action)?"0":void 0)}"> <ha-gauge .min="${this._config.min}" .max="${this._config.max}" .value="${e.state}" .formatOptions="${(0,v.l4)(e,this.hass.entities[e.entity_id])}" .locale="${this.hass.locale}" .label="${this._config.unit||this.hass?.states[this._config.entity].attributes.unit_of_measurement||""}" style="${(0,c.V)({"--gauge-color":this._computeSeverity(t)})}" .needle="${this._config.needle}" .levels="${this._config.needle?this._severityLevels():void 0}"></ha-gauge> <div class="name" .title="${i}">${i}</div> </ha-card> `}},{kind:"method",key:"shouldUpdate",value:function(e){return(0,b.G2)(this,e)}},{kind:"method",key:"updated",value:function(e){if((0,s.Z)(n,"updated",this,3)([e]),!this._config||!this.hass)return;const t=e.get("hass"),i=e.get("_config");t&&i&&t.themes===this.hass.themes&&i.theme===this._config.theme||(0,d.R)(this,this.hass.themes,this._config.theme)}},{kind:"method",key:"_computeSeverity",value:function(e){if(this._config.needle)return;let t=this._config.segments;if(t){t=[...t].sort(((e,t)=>e.from-t.from));for(let i=0;i<t.length;i++){const n=t[i];if(n&&e>=n.from&&(i+1===t.length||e<t[i+1]?.from))return n.color}return N.normal}const i=this._config.severity;if(!i)return N.normal;const n=Object.keys(i).map((e=>[e,i[e]]));for(const e of n)if(null==N[e[0]]||isNaN(e[1]))return N.normal;return n.sort(((e,t)=>e[1]-t[1])),e>=n[0][1]&&e<n[1][1]?N[n[0][0]]:e>=n[1][1]&&e<n[2][1]?N[n[1][0]]:e>=n[2][1]?N[n[2][0]]:N.normal}},{kind:"method",key:"_severityLevels",value:function(){const e=this._config.segments;if(e)return e.map((e=>({level:e?.from,stroke:e?.color,label:e?.label})));const t=this._config.severity;if(!t)return[{level:0,stroke:N.normal}];return Object.keys(t).map((e=>({level:t[e],stroke:N[e]})))}},{kind:"method",key:"_handleAction",value:function(e){(0,k.G)(this,this.hass,this._config,e.detail.action)}},{kind:"field",static:!0,key:"styles",value:()=>o.iv`ha-card{height:100%;overflow:hidden;padding:16px;display:flex;align-items:center;justify-content:center;flex-direction:column;box-sizing:border-box}ha-card.action{cursor:pointer}ha-card:focus{outline:0}ha-gauge{width:100%;max-width:250px}.name{text-align:center;line-height:initial;color:var(--primary-text-color);width:100%;font-size:15px;margin-top:8px}`}]}}),o.oi);n()}catch(e){n(e)}}))},10916:function(e,t,i){i.d(t,{Ff:()=>a,Fv:()=>n,IU:()=>s});const n=(e,t,i)=>isNaN(e)||isNaN(t)||isNaN(i)?0:e>i?i:e<t?t:e,a=(e,t,i)=>100*(e-t)/(i-t),s=e=>Math.round(10*e)/10}}; //# sourceMappingURL=40389.d562429b73ef0ad3.js.map