UNPKG

iobroker.lovelace

Version:

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

1 lines 8.69 kB
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[42568],{3515:function(t,i,s){s.a(t,async function(t,e){try{s.r(i),s.d(i,{DEFAULT_DAYS_TO_SHOW:function(){return $},HuiStatisticsGraphCard:function(){return k}});s(16280),s(18111),s(20116),s(7588),s(61701),s(3362),s(62953);var n=s(40445),a=s(6946),h=s(66708),o=s(5124),r=s(67576),_=s(6412),c=s(79468),d=s(6030),l=(s(76776),s(43661),s(34127)),g=s(38114),y=s(23528),u=s(13632),f=s(784),p=s(20939),v=s(97372),m=t([l,g,v,y]);[l,g,v,y]=m.then?(await m)():m;let S,b,w,E=t=>t;const $=30;class k extends o.WF{static async getConfigElement(){return await Promise.all([s.e(99143),s.e(19260),s.e(66990),s.e(81804),s.e(54884),s.e(51486),s.e(72181)]).then(s.bind(s,9562)),document.createElement("hui-statistics-graph-card-editor")}static getStubConfig(t,i,s){const e=(0,u.B)(t,1,i,s,["sensor"],t=>"state_class"in t.attributes);return{type:"statistics-graph",entities:e.length?[e[0]]:[]}}disconnectedCallback(){super.disconnectedCallback(),this._unsubscribeEnergy(),this._interval&&(clearInterval(this._interval),this._interval=void 0)}connectedCallback(){var t;super.connectedCallback(),this.hasUpdated&&(null!==(t=this._config)&&void 0!==t&&t.energy_date_selection?this._subscribeEnergy(!0):void 0===this._interval&&this._setFetchStatisticsTimer(!0))}_subscribeEnergy(t=!1){var i;this._energySub||(t&&this._fetchInitialStatistics(),this._energySub=(0,g.tb)(this.hass,{key:null===(i=this._config)||void 0===i?void 0:i.collection_key}).subscribe(t=>{this._energyStart=t.start,this._energyEnd=t.end,this._getStatistics()}))}_unsubscribeEnergy(){this._energySub&&(this._energySub(),this._energySub=void 0),this._energyStart=void 0,this._energyEnd=void 0}getCardSize(){var t,i,s;return 5+(null!==(t=this._config)&&void 0!==t&&t.title?2:0)+(null!==(i=this._config)&&void 0!==i&&i.hide_legend?0:(null===(s=this._entities)||void 0===s?void 0:s.length)||0)}getGridOptions(){return{columns:12,min_columns:6,min_rows:3}}setConfig(t){if(!t.entities||!Array.isArray(t.entities))throw new Error("Entities need to be an array");if(!t.entities.length)throw new Error("You must include at least one entity");t.energy_date_selection&&t.collection_key&&(0,g.s8)(t.collection_key),this._entities=t.entities?(0,p.L)(t.entities,!1):[],this._entityIds=this._entities.map(t=>t.entity),"string"==typeof t.stat_types?this._statTypes=[t.stat_types]:t.stat_types?this._statTypes=t.stat_types:this._statTypes=["change","state","sum","min","max","mean"],this._config=t,this._computeNames(),this._computeColors()}_computeNames(){this.hass&&this._config&&(this._names={},this._entities.forEach(t=>{const i=this.hass.states[t.entity];var s;i?this._names[t.entity]=this.hass.formatEntityName(i,t.name)||t.entity:this._names[t.entity]=("string"==typeof t.name?t.name:void 0)||(null===(s=this._metadata)||void 0===s||null===(s=s[t.entity])||void 0===s?void 0:s.name)||t.entity}))}_computeColors(){this._config&&(this._colors={},this._entities.forEach(t=>{this._colors[t.entity]=t.color?(0,c.RQ)(t.color):void 0}))}shouldUpdate(t){return(0,f.pY)(this,t)||t.size>1||!t.has("hass")}willUpdate(t){if(super.willUpdate(t),(t.has("hass")||t.has("_config")||t.has("_metadata"))&&this._computeNames(),!this._config||!t.has("_config"))return;const i=t.get("_config");if(this.hass){if(this._config.energy_date_selection&&!this._energySub)return void this._subscribeEnergy(!0);if(!this._config.energy_date_selection&&this._energySub)return this._unsubscribeEnergy(),void this._setFetchStatisticsTimer();this._config.energy_date_selection&&this._energySub&&t.has("_config")&&(null==i?void 0:i.collection_key)!==this._config.collection_key&&(this._unsubscribeEnergy(),this._subscribeEnergy())}t.has("_config")&&(null==i?void 0:i.entities)!==this._config.entities?this._config.energy_date_selection?this._fetchInitialStatistics():this._setFetchStatisticsTimer(!0):!t.has("_config")||(null==i?void 0:i.stat_types)===this._config.stat_types&&(null==i?void 0:i.days_to_show)===this._config.days_to_show&&(null==i?void 0:i.period)===this._config.period&&(null==i?void 0:i.unit)===this._config.unit||this._setFetchStatisticsTimer()}async _fetchInitialStatistics(){await this._getStatisticsMetaData(this._entityIds),await this._getStatistics()}async _setFetchStatisticsTimer(t=!1){var i;clearInterval(this._interval),this._interval=0,t&&await this._getStatisticsMetaData(this._entityIds),await this._getStatistics(),null!==(i=this._config)&&void 0!==i&&i.energy_date_selection||(this._interval=window.setInterval(()=>this._getStatistics(),this._intervalTimeout))}get _period(){var t;const i=null===(t=this._config)||void 0===t?void 0:t.period,s="auto"===i;return this._energyStart&&this._energyEnd&&(!i||s)?(0,g.TI)(this._energyStart,this._energyEnd):s?void 0:i}render(){var t,i,s;if(!this.hass||!this._config)return o.s6;const e="number"==typeof(null===(t=this._config.grid_options)||void 0===t?void 0:t.rows),n=this._energyStart&&this._energyEnd?(0,a.c)(this._energyEnd,this._energyStart):this._config.days_to_show||$,r=this._energyStart||(0,h.O)(new Date,24*n+1),c=`/history?${(0,d.KH)({entity_id:this._entityIds.join(","),start_date:r.toISOString()})}`;return(0,o.qy)(S||(S=E` <ha-card> ${0} <div class="content ${0}"> <statistics-chart .hass="${0}" .isLoadingData="${0}" .statisticsData="${0}" .metadata="${0}" .period="${0}" .chartType="${0}" .statTypes="${0}" .names="${0}" .unit="${0}" .minYAxis="${0}" .maxYAxis="${0}" .colors="${0}" .startTime="${0}" .endTime="${0}" .fitYData="${0}" .hideLegend="${0}" .logarithmicScale="${0}" .daysToShow="${0}" .height="${0}" .expandLegend="${0}"></statistics-chart> </div> </ha-card> `),this._config.title?(0,o.qy)(b||(b=E` <h1 class="card-header"> ${0} <a id="${0}" href="${0}" aria-label="${0}"> <ha-icon-next></ha-icon-next> </a> <ha-tooltip for="${0}" placement="left"> ${0} </ha-tooltip> </h1> `),this._config.title,this._historyLinkId,c,this.hass.localize("panel.history"),this._historyLinkId,this.hass.localize("panel.history")):o.s6,(0,_.H)({"has-header":!!this._config.title,"has-rows":!(null===(i=this._config.grid_options)||void 0===i||!i.rows)}),this.hass,!this._statistics,this._statistics,this._metadata,this._period,this._config.chart_type||"line",this._statTypes,this._names,this._unit,this._config.min_y_axis,this._config.max_y_axis,this._colors,this._energyStart,this._energyEnd&&this._energyStart?(0,v.Gs)(this._period,this._energyEnd,(null!==(s=this._config.chart_type)&&void 0!==s?s:"line").startsWith("line")):void 0,this._config.fit_y_data||!1,this._config.hide_legend||!1,this._config.logarithmic_scale||!1,n,e?"100%":void 0,this._config.expand_legend)}get _intervalTimeout(){var t;return 1e3*("5minute"===(null===(t=this._config)||void 0===t?void 0:t.period)?5:60)*60}async _getStatisticsMetaData(t){const i=await(0,y.Wr)(this.hass,t),s={};i.forEach(t=>{s[t.statistic_id]=t}),this._metadata=s}async _getStatistics(){var t;const i=null!==(t=this._energyStart)&&void 0!==t?t:(0,h.O)(new Date,24*(this._config.days_to_show||$)+1),s=this._energyEnd;try{let t;if(this._config.unit&&this._metadata){const i=Object.values(this._metadata).find(t=>(0,y.JE)(this.hass,null==t?void 0:t.statistic_id,t)===this._config.unit);i&&(t=i.unit_class,this._unit=this._config.unit)}if(!t&&this._metadata){const i=this._metadata[this._entityIds[0]];t=null==i?void 0:i.unit_class,this._unit=t&&(0,y.JE)(this.hass,i.statistic_id,i)||void 0}const e=t?{[t]:this._unit}:void 0,n=await(0,y.sz)(this.hass,i,s,this._entityIds,this._period,e,this._statTypes);this._statistics={},this._entities.forEach(t=>{const i=t.entity;i in n&&(this._statistics[i]=n[i])})}catch(e){this._statistics=void 0}}constructor(...t){super(...t),this._entities=[],this._entityIds=[],this._historyLinkId=`history-${Math.random().toString(36).substring(2,9)}`,this._names={},this._colors={}}}k.styles=(0,o.AH)(w||(w=E`ha-card{display:flex;flex-direction:column;height:100%}.card-header{justify-content:space-between;display:flex;padding-bottom:0}.card-header ha-icon-next{--ha-icon-button-size:24px;line-height:24px;color:var(--primary-text-color)}.content{padding:16px;flex:1}.has-header{padding-top:0}statistics-chart{height:100%}.has-rows{--chart-max-height:100%}`)),(0,n.Cg)([(0,r.MZ)({attribute:!1})],k.prototype,"hass",void 0),(0,n.Cg)([(0,r.wk)()],k.prototype,"_config",void 0),(0,n.Cg)([(0,r.wk)()],k.prototype,"_statistics",void 0),(0,n.Cg)([(0,r.wk)()],k.prototype,"_metadata",void 0),(0,n.Cg)([(0,r.wk)()],k.prototype,"_unit",void 0),(0,n.Cg)([(0,r.wk)()],k.prototype,"_energyStart",void 0),(0,n.Cg)([(0,r.wk)()],k.prototype,"_energyEnd",void 0),k=(0,n.Cg)([(0,r.EM)("hui-statistics-graph-card")],k),e()}catch(S){e(S)}})}}]);