UNPKG

iobroker.lovelace

Version:

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

1 lines 7.89 kB
export const __rspack_esm_id=42568;export const __rspack_esm_ids=[42568];export const __webpack_modules__={3515(t,i,s){s.a(t,async function(t,e){try{s.r(i),s.d(i,{DEFAULT_DAYS_TO_SHOW:()=>b,HuiStatisticsGraphCard:()=>v});s(18111),s(20116),s(7588),s(61701);var a=s(62826),n=s(6946),h=s(66708),o=s(5124),_=s(22441),r=s(6412),c=s(79468),d=s(6030),g=(s(76776),s(43661),s(34127)),y=s(38114),l=s(23528),p=s(13632),f=s(784),u=s(20939),m=s(97372),S=t([g,y,m]);[g,y,m]=S.then?(await S)():S;const b=30;class v extends o.WF{static async getConfigElement(){return await Promise.all([s.e(99143),s.e(19260),s.e(66990),s.e(54884),s.e(58945),s.e(41865)]).then(s.bind(s,9562)),document.createElement("hui-statistics-graph-card-editor")}static getStubConfig(t,i,s){const e=(0,p.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(){super.connectedCallback(),this.hasUpdated&&(this._config?.energy_date_selection?this._subscribeEnergy(!0):void 0===this._interval&&this._setFetchStatisticsTimer(!0))}_subscribeEnergy(t=!1){this._energySub||(t&&this._fetchInitialStatistics(),this._energySub=(0,y.tb)(this.hass,{key:this._config?.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(){return 5+(this._config?.title?2:0)+(this._config?.hide_legend?0:this._entities?.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,y.s8)(t.collection_key),this._entities=t.entities?(0,u.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];this._names[t.entity]=i?this.hass.formatEntityName(i,t.name)||t.entity:("string"==typeof t.name?t.name:void 0)||this._metadata?.[t.entity]?.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")&&i?.collection_key!==this._config.collection_key&&(this._unsubscribeEnergy(),this._subscribeEnergy())}t.has("_config")&&i?.entities!==this._config.entities?this._config.energy_date_selection?this._fetchInitialStatistics():this._setFetchStatisticsTimer(!0):!t.has("_config")||i?.stat_types===this._config.stat_types&&i?.days_to_show===this._config.days_to_show&&i?.period===this._config.period&&i?.unit===this._config.unit||this._setFetchStatisticsTimer()}async _fetchInitialStatistics(){await this._getStatisticsMetaData(this._entityIds),await this._getStatistics()}async _setFetchStatisticsTimer(t=!1){clearInterval(this._interval),this._interval=0,t&&await this._getStatisticsMetaData(this._entityIds),await this._getStatistics(),this._config?.energy_date_selection||(this._interval=window.setInterval(()=>this._getStatistics(),this._intervalTimeout))}get _period(){const t=this._config?.period,i="auto"===t;return this._energyStart&&this._energyEnd&&(!t||i)?(0,y.TI)(this._energyStart,this._energyEnd):i?void 0:t}render(){if(!this.hass||!this._config)return o.s6;const t="number"==typeof this._config.grid_options?.rows,i=this._energyStart&&this._energyEnd?(0,n.c)(this._energyEnd,this._energyStart):this._config.days_to_show||b,s=this._energyStart||(0,h.O)(new Date,24*i+1),e=`/history?${(0,d.KH)({entity_id:this._entityIds.join(","),start_date:s.toISOString()})}`;return o.qy` <ha-card> ${this._config.title?o.qy` <h1 class="card-header"> ${this._config.title} <a id="${this._historyLinkId}" href="${e}" aria-label="${this.hass.localize("panel.history")}"> <ha-icon-next></ha-icon-next> </a> <ha-tooltip for="${this._historyLinkId}" placement="left"> ${this.hass.localize("panel.history")} </ha-tooltip> </h1> `:o.s6} <div class="content ${(0,r.H)({"has-header":!!this._config.title,"has-rows":!!this._config.grid_options?.rows})}"> <statistics-chart .hass="${this.hass}" .isLoadingData="${!this._statistics}" .statisticsData="${this._statistics}" .metadata="${this._metadata}" .period="${this._period}" .chartType="${this._config.chart_type||"line"}" .statTypes="${this._statTypes}" .names="${this._names}" .unit="${this._unit}" .minYAxis="${this._config.min_y_axis}" .maxYAxis="${this._config.max_y_axis}" .colors="${this._colors}" .startTime="${this._energyStart}" .endTime="${this._energyEnd&&this._energyStart?(0,m.Gs)(this._period,this._energyEnd,(this._config.chart_type??"line").startsWith("line")):void 0}" .fitYData="${this._config.fit_y_data||!1}" .hideLegend="${this._config.hide_legend||!1}" .logarithmicScale="${this._config.logarithmic_scale||!1}" .daysToShow="${i}" .height="${t?"100%":void 0}" .expandLegend="${this._config.expand_legend}"></statistics-chart> </div> </ha-card> `}get _intervalTimeout(){return 1e3*("5minute"===this._config?.period?5:60)*60}async _getStatisticsMetaData(t){const i=await(0,l.Wr)(this.hass,t),s={};i.forEach(t=>{s[t.statistic_id]=t}),this._metadata=s}async _getStatistics(){const t=this._energyStart??(0,h.O)(new Date,24*(this._config.days_to_show||b)+1),i=this._energyEnd;try{let s;if(this._config.unit&&this._metadata){const t=Object.values(this._metadata).find(t=>(0,l.JE)(this.hass,t?.statistic_id,t)===this._config.unit);t&&(s=t.unit_class,this._unit=this._config.unit)}if(!s&&this._metadata){const t=this._metadata[this._entityIds[0]];s=t?.unit_class,this._unit=s&&(0,l.JE)(this.hass,t.statistic_id,t)||void 0}const e=s?{[s]:this._unit}:void 0,a=await(0,l.sz)(this.hass,t,i,this._entityIds,this._period,e,this._statTypes);this._statistics={},this._entities.forEach(t=>{const i=t.entity;i in a&&(this._statistics[i]=a[i])})}catch(t){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={}}}v.styles=o.AH`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,a.Cg)([(0,_.MZ)({attribute:!1})],v.prototype,"hass",void 0),(0,a.Cg)([(0,_.wk)()],v.prototype,"_config",void 0),(0,a.Cg)([(0,_.wk)()],v.prototype,"_statistics",void 0),(0,a.Cg)([(0,_.wk)()],v.prototype,"_metadata",void 0),(0,a.Cg)([(0,_.wk)()],v.prototype,"_unit",void 0),(0,a.Cg)([(0,_.wk)()],v.prototype,"_energyStart",void 0),(0,a.Cg)([(0,_.wk)()],v.prototype,"_energyEnd",void 0),v=(0,a.Cg)([(0,_.EM)("hui-statistics-graph-card")],v),e()}catch(t){e(t)}})}};