iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
10 lines • 17.1 kB
JavaScript
;(self.webpackChunkhome_assistant_frontend=self.webpackChunkhome_assistant_frontend||[]).push([["84464"],{82062:function(e,t,i){i.a(e,(async function(e,t){try{var s=i(61701),n=i(72621),a=(i(71695),i(61893),i(9359),i(70104),i(47021),i(57243)),o=i(50778),r=i(69634),l=i(50602),d=i(45061),c=i(76320),u=i(10916),h=e([l]);l=(h.then?(await h)():h)[0];let _,f,v,g,m,y,p,k=e=>e;const b=(e,t,i)=>180*(0,u.Ff)((0,u.Fv)(e,t,i),t,i)/100;(0,s.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(){return 0}},{kind:"field",decorators:[(0,o.Cb)({type:Number})],key:"max",value(){return 100}},{kind:"field",decorators:[(0,o.Cb)({type:Number})],key:"value",value(){return 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(){return!1}},{kind:"field",decorators:[(0,o.Cb)({type:Array})],key:"levels",value:void 0},{kind:"field",decorators:[(0,o.Cb)()],key:"label",value(){return""}},{kind:"field",decorators:[(0,o.SB)()],key:"_angle",value(){return 0}},{kind:"field",decorators:[(0,o.SB)()],key:"_updated",value(){return!1}},{kind:"field",decorators:[(0,o.SB)()],key:"_segment_label",value(){return""}},{kind:"method",key:"firstUpdated",value:function(e){(0,n.Z)(i,"firstUpdated",this,3)([e]),(0,c.T)((()=>{this._updated=!0,this._angle=b(this.value,this.min,this.max),this._segment_label=this._getSegmentLabel(),this._rescaleSvg()}))}},{kind:"method",key:"updated",value:function(e){(0,n.Z)(i,"updated",this,3)([e]),this._updated&&(e.has("value")||e.has("valueText")||e.has("label")||e.has("_segment_label"))&&(this._angle=b(this.value,this.min,this.max),this._segment_label=this._getSegmentLabel(),this._rescaleSvg())}},{kind:"method",key:"render",value:function(){return(0,a.YP)(_||(_=k` <svg viewBox="-50 -50 100 50" class="gauge"> ${0} ${0} ${0} </svg> <svg class="text"> <text class="value-text"> ${0}${0} </text> </svg>`),this.needle&&this.levels?"":(0,a.YP)(f||(f=k`<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=b(this.min,this.min,this.max);i=(0,a.YP)(v||(v=k`<path stroke="var(--info-color)" class="level" d="M
${0}
${0}
A 40 40 0 0 1 40 0
"></path>`),0-40*Math.cos(e*Math.PI/180),0-40*Math.sin(e*Math.PI/180))}const s=b(e.level,this.min,this.max);return(0,a.YP)(g||(g=k`${0}<path stroke="${0}" class="level" d="M
${0}
${0}
A 40 40 0 0 1 40 0
"></path>`),i,e.stroke,0-40*Math.cos(s*Math.PI/180),0-40*Math.sin(s*Math.PI/180))})):"",this.needle?(0,a.YP)(m||(m=k`<path class="needle" d="M -25 -2.5 L -47.5 0 L -25 2.5 z" style="${0}"> </path>`),(0,r.V)({transform:`rotate(${this._angle}deg)`})):(0,a.YP)(y||(y=k`<path class="value" d="M -40 0 A 40 40 0 1 0 40 0" style="${0}"></path>`),(0,r.V)({transform:`rotate(${this._angle}deg)`})),this._segment_label?this._segment_label:this.valueText||(0,l.uf)(this.value,this.locale,this.formatOptions),this._segment_label?"":"%"===this.label?(0,d.K)(this.locale)+"%":` ${this.label}`)}},{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(){return(0,a.iv)(p||(p=k`: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}`))}}]}}),a.oi);t()}catch(_){t(_)}}))},17705:function(e,t,i){i.d(t,{Cj:()=>h,F7:()=>n,Hs:()=>S,Kd:()=>b,Kj:()=>f,Nw:()=>g,PA:()=>a,Py:()=>l,Qm:()=>$,Z0:()=>p,_Y:()=>c,_m:()=>o,dL:()=>d,dO:()=>x,hN:()=>_,h_:()=>u,j2:()=>k,q6:()=>v,uR:()=>r});i(19083),i(71695),i(9359),i(52924),i(61006),i(47021);var s=i(47194);let n=function(e){return e[e.NONE=0]="NONE",e[e.ARITHMETIC=1]="ARITHMETIC",e[e.CIRCULAR=2]="CIRCULAR",e}({});const a=99387==i.j?["entity_not_recorded","entity_no_longer_recorded","state_class_removed","units_changed","mean_type_changed","no_state"]:null,o=e=>e.sendMessagePromise({type:"recorder/info"}),r=(e,t)=>e.callWS({type:"recorder/list_statistic_ids",statistic_type:t}),l=(e,t)=>e.callWS({type:"recorder/get_statistics_metadata",statistic_ids:t}),d=(e,t,i,s,n="hour",a,o)=>e.callWS({type:"recorder/statistics_during_period",start_time:t.toISOString(),end_time:null==i?void 0:i.toISOString(),statistic_ids:s,period:n,units:a,types:o}),c=(e,t,i,s)=>e.callWS({type:"recorder/statistic_during_period",statistic_id:t,units:s,fixed_period:i.fixed_period?{start_time:i.fixed_period.start instanceof Date?i.fixed_period.start.toISOString():i.fixed_period.start,end_time:i.fixed_period.end instanceof Date?i.fixed_period.end.toISOString():i.fixed_period.end}:void 0,calendar:i.calendar,rolling_window:i.rolling_window}),u=e=>e.callWS({type:"recorder/validate_statistics"}),h=(e,t,i)=>e.callWS({type:"recorder/update_statistics_metadata",statistic_id:t,unit_of_measurement:i}),_=(e,t)=>e.callWS({type:"recorder/clear_statistics",statistic_ids:t}),f=e=>{let t=null;if(!e)return null;for(const i of e)null!==i.change&&void 0!==i.change&&(null===t?t=i.change:t+=i.change);return t},v=(e,t)=>{let i=null;for(const s of t){if(!(s in e))continue;const t=f(e[s]);null!==t&&(null===i?i=t:i+=t)}return i},g=(e,t)=>e.some((e=>void 0!==e[t]&&null!==e[t])),m=["mean","min","max"],y=["sum","state","change"],p=(e,t)=>!(!m.includes(t)||e.mean_type===n.NONE)||!(!y.includes(t)||!e.has_sum),k=(e,t,i,s,n)=>{const a=new Date(i).toISOString();return e.callWS({type:"recorder/adjust_sum_statistics",statistic_id:t,start_time:a,adjustment:s,adjustment_unit_of_measurement:n})},b=(e,t,i)=>{const n=e.states[t];return n?(0,s.C)(n):(null==i?void 0:i.name)||t},x=(e,t,i)=>{let s;var n;t&&(s=null===(n=e.states[t])||void 0===n?void 0:n.attributes.unit_of_measurement);return void 0===s?null==i?void 0:i.statistics_unit_of_measurement:s},S=e=>e.includes(":"),$=e=>e.callWS({type:"recorder/update_statistics_issues"})},6736:function(e,t,i){i.d(t,{f:()=>o});var s=i(61701),n=i(72621),a=(i(19083),i(71695),i(9359),i(52924),i(40251),i(61006),i(47021),i(50778));const o=e=>(0,s.Z)(null,(function(e,t){class i extends t{constructor(...t){super(...t),e(this)}}return{F:i,d:[{kind:"field",decorators:[(0,a.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",key:"hassSubscribeRequiredHostProps",value:void 0},{kind:"field",key:"__unsubs",value:void 0},{kind:"method",key:"connectedCallback",value:function(){(0,n.Z)(i,"connectedCallback",this,3)([]),this._checkSubscribed()}},{kind:"method",key:"disconnectedCallback",value:function(){if((0,n.Z)(i,"disconnectedCallback",this,3)([]),this.__unsubs){for(;this.__unsubs.length;){const e=this.__unsubs.pop();e instanceof Promise?e.then((e=>e())):e()}this.__unsubs=void 0}}},{kind:"method",key:"updated",value:function(e){if((0,n.Z)(i,"updated",this,3)([e]),e.has("hass"))this._checkSubscribed();else if(this.hassSubscribeRequiredHostProps)for(const t of e.keys())if(this.hassSubscribeRequiredHostProps.includes(t))return void this._checkSubscribed()}},{kind:"method",key:"hassSubscribe",value:function(){return[]}},{kind:"method",key:"_checkSubscribed",value:function(){var e;void 0!==this.__unsubs||!this.isConnected||void 0===this.hass||null!==(e=this.hassSubscribeRequiredHostProps)&&void 0!==e&&e.some((e=>void 0===this[e]))||(this.__unsubs=this.hassSubscribe())}}]}}),e)},33637:function(e,t,i){i.a(e,(async function(e,s){try{i.r(t);var n=i(61701),a=(i(71695),i(9359),i(70104),i(47021),i(57243)),o=i(50778),r=i(69634),l=(i(54977),i(82062)),d=(i(37583),i(1118)),c=i(17705),u=i(6736),h=i(10188),_=i(93331),f=e([l,d,h]);[l,d,h]=f.then?(await f)():f;let v,g,m,y,p=e=>e;const k="M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z",b={maximumFractionDigits:0};(0,n.Z)([(0,o.Mo)("hui-energy-solar-consumed-gauge-card")],(function(e,t){return{F:class extends t{constructor(...t){super(...t),e(this)}},d:[{kind:"field",decorators:[(0,o.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_config",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_data",value:void 0},{kind:"field",key:"hassSubscribeRequiredHostProps",value(){return["_config"]}},{kind:"method",key:"hassSubscribe",value:function(){var e;return[(0,d.UB)(this.hass,{key:null===(e=this._config)||void 0===e?void 0:e.collection_key}).subscribe((e=>{this._data=e}))]}},{kind:"method",key:"getCardSize",value:function(){return 4}},{kind:"method",key:"setConfig",value:function(e){this._config=e}},{kind:"method",key:"shouldUpdate",value:function(e){return(0,_.SN)(this,e)||e.size>1||!e.has("hass")}},{kind:"method",key:"render",value:function(){if(!this._config||!this.hass)return a.Ld;if(!this._data)return(0,a.dy)(v||(v=p`${0}`),this.hass.localize("ui.panel.lovelace.cards.energy.loading"));const e=this._data.prefs,t=(0,d.Jj)(e);if(!t.solar)return a.Ld;const i=(0,c.q6)(this._data.stats,t.solar.map((e=>e.stat_energy_from)))||0,s=(0,c.q6)(this._data.stats,t.grid[0].flow_to.map((e=>e.stat_energy_to)));let n;if(null!==s&&i){n=Math.max(0,i-s)/i*100}return(0,a.dy)(g||(g=p` <ha-card> ${0} </ha-card> `),void 0!==n?(0,a.dy)(m||(m=p` <ha-gauge min="0" max="100" .value="${0}" label="%" .formatOptions="${0}" .locale="${0}" style="${0}"></ha-gauge> <ha-tooltip placement="left" hoist> <span slot="content"> ${0} <br><br> ${0} </span> <ha-svg-icon .path="${0}"></ha-svg-icon> </ha-tooltip> <div class="name"> ${0} </div> `),n,b,this.hass.locale,(0,r.V)({"--gauge-color":this._computeSeverity(n)}),this.hass.localize("ui.panel.lovelace.cards.energy.solar_consumed_gauge.card_indicates_solar_energy_used"),this.hass.localize("ui.panel.lovelace.cards.energy.solar_consumed_gauge.card_indicates_solar_energy_used_charge_home_bat"),k,this.hass.localize("ui.panel.lovelace.cards.energy.solar_consumed_gauge.self_consumed_solar_energy")):0===i?this.hass.localize("ui.panel.lovelace.cards.energy.solar_consumed_gauge.not_produced_solar_energy"):this.hass.localize("ui.panel.lovelace.cards.energy.solar_consumed_gauge.self_consumed_solar_could_not_calc"))}},{kind:"method",key:"_computeSeverity",value:function(e){return e>75?h.severityMap.green:e<50?h.severityMap.yellow:h.severityMap.normal}},{kind:"field",static:!0,key:"styles",value(){return(0,a.iv)(y||(y=p`ha-card{height:100%;overflow:hidden;padding:16px;display:flex;align-items:center;justify-content:center;flex-direction:column;box-sizing:border-box}ha-gauge{width:100%;max-width:250px;direction:ltr}.name{text-align:center;line-height:initial;color:var(--primary-text-color);width:100%;font-size:15px;margin-top:8px}ha-svg-icon{position:absolute;right:4px;inset-inline-end:4px;inset-inline-start:initial;top:4px;color:var(--secondary-text-color)}ha-tooltip::part(base__popup){margin-top:4px}`))}}]}}),(0,u.f)(a.oi));s()}catch(v){s(v)}}))},10188:function(e,t,i){i.a(e,(async function(e,s){try{i.r(t),i.d(t,{DEFAULT_MAX:()=>I,DEFAULT_MIN:()=>P,severityMap:()=>z});var n=i(61701),a=i(72621),o=(i(52247),i(71695),i(61893),i(9359),i(70104),i(19423),i(40251),i(47021),i(57243)),r=i(50778),l=i(20552),d=i(35359),c=i(69634),u=i(82393),h=i(47194),_=i(31064),f=i(50602),v=(i(54977),i(82062)),g=i(96194),m=i(3967),y=i(69223),p=i(1617),k=i(5684),b=i(93331),x=i(62577),S=e([v,f]);[v,f]=S.then?(await S)():S;let $,w,C,M,N,A=e=>e;const P=0,I=100,z={red:"var(--error-color)",green:"var(--success-color)",yellow:"var(--warning-color)",normal:"var(--info-color)"};(0,n.Z)([(0,r.Mo)("hui-gauge-card")],(function(e,t){class s extends t{constructor(...t){super(...t),e(this)}}return{F:s,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,r.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,r.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,_.T)(e.entity))throw new Error("Invalid entity");this._config=Object.assign({min:P,max:I},e)}},{kind:"method",key:"render",value:function(){var e,t;if(!this._config||!this.hass)return o.Ld;const i=this.hass.states[this._config.entity];if(!i)return(0,o.dy)($||($=A` <hui-warning> ${0} </hui-warning> `),(0,x.i)(this.hass,this._config.entity));const s=Number(i.state);if(i.state===g.nZ)return(0,o.dy)(w||(w=A` <hui-warning>${0}</hui-warning> `),this.hass.localize("ui.panel.lovelace.warning.entity_unavailable",{entity:this._config.entity}));if(isNaN(s))return(0,o.dy)(C||(C=A` <hui-warning>${0}</hui-warning> `),this.hass.localize("ui.panel.lovelace.warning.entity_non_numeric",{entity:this._config.entity}));const n=null!==(e=this._config.name)&&void 0!==e?e:(0,h.C)(i);return(0,o.dy)(M||(M=A` <ha-card class="${0}" @action="${0}" .actionHandler="${0}" tabindex="${0}"> <ha-gauge .min="${0}" .max="${0}" .value="${0}" .formatOptions="${0}" .locale="${0}" .label="${0}" style="${0}" .needle="${0}" .levels="${0}"></ha-gauge> <div class="name" .title="${0}">${0}</div> </ha-card> `),(0,d.$)({action:(0,k.q)(this._config)}),this._handleAction,(0,m.K)({hasHold:(0,k._)(this._config.hold_action),hasDoubleClick:(0,k._)(this._config.double_tap_action)}),(0,l.o)(!this._config.tap_action||(0,k._)(this._config.tap_action)?"0":void 0),this._config.min,this._config.max,i.state,(0,f.l4)(i,this.hass.entities[i.entity_id]),this.hass.locale,this._config.unit||(null===(t=this.hass)||void 0===t?void 0:t.states[this._config.entity].attributes.unit_of_measurement)||"",(0,c.V)({"--gauge-color":this._computeSeverity(s)}),this._config.needle,this._config.needle?this._severityLevels():void 0,n,n)}},{kind:"method",key:"shouldUpdate",value:function(e){return(0,b.G2)(this,e)}},{kind:"method",key:"updated",value:function(e){if((0,a.Z)(s,"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,u.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 s=0;s<t.length;s++){var i;const n=t[s];if(n&&e>=n.from&&(s+1===t.length||e<(null===(i=t[s+1])||void 0===i?void 0:i.from)))return n.color}return z.normal}const s=this._config.severity;if(!s)return z.normal;const n=Object.keys(s).map((e=>[e,s[e]]));for(const a of n)if(null==z[a[0]]||isNaN(a[1]))return z.normal;return n.sort(((e,t)=>e[1]-t[1])),e>=n[0][1]&&e<n[1][1]?z[n[0][0]]:e>=n[1][1]&&e<n[2][1]?z[n[1][0]]:e>=n[2][1]?z[n[2][0]]:z.normal}},{kind:"method",key:"_severityLevels",value:function(){const e=this._config.segments;if(e)return e.map((e=>({level:null==e?void 0:e.from,stroke:null==e?void 0:e.color,label:null==e?void 0:e.label})));const t=this._config.severity;if(!t)return[{level:0,stroke:z.normal}];return Object.keys(t).map((e=>({level:t[e],stroke:z[e]})))}},{kind:"method",key:"_handleAction",value:function(e){(0,p.G)(this,this.hass,this._config,e.detail.action)}},{kind:"field",static:!0,key:"styles",value(){return(0,o.iv)(N||(N=A`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);s()}catch($){s($)}}))},10916:function(e,t,i){i.d(t,{Ff:()=>n,Fv:()=>s,IU:()=>a});const s=(e,t,i)=>isNaN(e)||isNaN(t)||isNaN(i)?0:e>i?i:e<t?t:e,n=(e,t,i)=>100*(e-t)/(i-t),a=e=>Math.round(10*e)/10}}]);
//# sourceMappingURL=84464.68e2d5ce8dcf5c8a.js.map