UNPKG

iobroker.lovelace

Version:

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

2 lines 17.9 kB
export const __webpack_ids__=["76597"];export const __webpack_modules__={36185:function(t,e,i){i.a(t,(async function(t,e){try{var s=i(44249),a=i(57243),n=i(15093),l=i(19631),o=i(46467),d=i(36522),h=i(20382),r=(i(37583),i(83166),t([o]));o=(r.then?(await r)():r)[0];const u="M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1M17,12H12V17H17V12Z",c=()=>Promise.all([i.e("97983"),i.e("3134"),i.e("58640"),i.e("60351"),i.e("46360")]).then(i.bind(i,88944)),m=(t,e)=>{(0,d.B)(t,"show-dialog",{dialogTag:"ha-dialog-date-picker",dialogImport:c,dialogParams:e})};(0,s.Z)([(0,n.Mo)("ha-date-input")],(function(t,e){return{F:class extends e{constructor(...e){super(...e),t(this)}},d:[{kind:"field",decorators:[(0,n.Cb)({attribute:!1})],key:"locale",value:void 0},{kind:"field",decorators:[(0,n.Cb)()],key:"value",value:void 0},{kind:"field",decorators:[(0,n.Cb)()],key:"min",value:void 0},{kind:"field",decorators:[(0,n.Cb)()],key:"max",value:void 0},{kind:"field",decorators:[(0,n.Cb)({type:Boolean})],key:"disabled",value:()=>!1},{kind:"field",decorators:[(0,n.Cb)({type:Boolean})],key:"required",value:()=>!1},{kind:"field",decorators:[(0,n.Cb)()],key:"label",value:void 0},{kind:"field",decorators:[(0,n.Cb)()],key:"helper",value:void 0},{kind:"field",decorators:[(0,n.Cb)({attribute:"can-clear",type:Boolean})],key:"canClear",value:()=>!1},{kind:"method",key:"render",value:function(){return a.dy`<ha-textfield .label="${this.label}" .helper="${this.helper}" .disabled="${this.disabled}" iconTrailing helperPersistent readonly="readonly" @click="${this._openDialog}" @keydown="${this._keyDown}" .value="${this.value?(0,o.WB)(new Date(`${this.value.split("T")[0]}T00:00:00`),{...this.locale,time_zone:h.c_.local},{}):""}" .required="${this.required}"> <ha-svg-icon slot="trailingIcon" .path="${u}"></ha-svg-icon> </ha-textfield>`}},{kind:"method",key:"_openDialog",value:function(){this.disabled||m(this,{min:this.min||"1970-01-01",max:this.max,value:this.value,canClear:this.canClear,onChange:t=>this._valueChanged(t),locale:this.locale.language,firstWeekday:(0,l.Bt)(this.locale)})}},{kind:"method",key:"_keyDown",value:function(t){this.canClear&&["Backspace","Delete"].includes(t.key)&&this._valueChanged(void 0)}},{kind:"method",key:"_valueChanged",value:function(t){this.value!==t&&(this.value=t,(0,d.B)(this,"change"),(0,d.B)(this,"value-changed",{value:t}))}},{kind:"field",static:!0,key:"styles",value:()=>a.iv`ha-svg-icon{color:var(--secondary-text-color)}ha-textfield{display:block}`}]}}),a.oi);e()}catch(t){e(t)}}))},75677:function(t,e,i){i.a(t,(async function(t,s){try{i.r(e),i.d(e,{HaDateTimeSelector:()=>r});var a=i(44249),n=i(57243),l=i(15093),o=i(36522),d=i(36185),h=(i(49653),i(34363),t([d]));d=(h.then?(await h)():h)[0];let r=(0,a.Z)([(0,l.Mo)("ha-selector-datetime")],(function(t,e){return{F:class extends e{constructor(...e){super(...e),t(this)}},d:[{kind:"field",decorators:[(0,l.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,l.Cb)({attribute:!1})],key:"selector",value:void 0},{kind:"field",decorators:[(0,l.Cb)()],key:"value",value:void 0},{kind:"field",decorators:[(0,l.Cb)()],key:"label",value:void 0},{kind:"field",decorators:[(0,l.Cb)()],key:"helper",value:void 0},{kind:"field",decorators:[(0,l.Cb)({type:Boolean,reflect:!0})],key:"disabled",value:()=>!1},{kind:"field",decorators:[(0,l.Cb)({type:Boolean})],key:"required",value:()=>!0},{kind:"field",decorators:[(0,l.IO)("ha-date-input")],key:"_dateInput",value:void 0},{kind:"field",decorators:[(0,l.IO)("ha-time-input")],key:"_timeInput",value:void 0},{kind:"method",key:"render",value:function(){const t="string"==typeof this.value?this.value.split(" "):void 0;return n.dy` <div class="input"> <ha-date-input .label="${this.label}" .locale="${this.hass.locale}" .disabled="${this.disabled}" .required="${this.required}" .value="${t?.[0]}" @value-changed="${this._valueChanged}"> </ha-date-input> <ha-time-input enable-second .value="${t?.[1]||"00:00:00"}" .locale="${this.hass.locale}" .disabled="${this.disabled}" .required="${this.required}" @value-changed="${this._valueChanged}"></ha-time-input> </div> ${this.helper?n.dy`<ha-input-helper-text>${this.helper}</ha-input-helper-text>`:""} `}},{kind:"method",key:"_valueChanged",value:function(t){t.stopPropagation(),this._dateInput.value&&this._timeInput.value&&(0,o.B)(this,"value-changed",{value:`${this._dateInput.value} ${this._timeInput.value}`})}},{kind:"field",static:!0,key:"styles",value:()=>n.iv`.input{display:flex;align-items:center;flex-direction:row}ha-date-input{min-width:150px;margin-right:4px;margin-inline-end:4px;margin-inline-start:initial}`}]}}),n.oi);s()}catch(t){s(t)}}))},69695:function(t,e,i){i.r(e),i.d(e,{HaNumberSelector:()=>d});var s=i(44249),a=i(57243),n=i(15093),l=i(35359),o=i(36522);i(34363),i(74421),i(83166);let d=(0,s.Z)([(0,n.Mo)("ha-selector-number")],(function(t,e){return{F:class extends e{constructor(...e){super(...e),t(this)}},d:[{kind:"field",decorators:[(0,n.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,n.Cb)({attribute:!1})],key:"selector",value:void 0},{kind:"field",decorators:[(0,n.Cb)({type:Number})],key:"value",value:void 0},{kind:"field",decorators:[(0,n.Cb)({type:Number})],key:"placeholder",value:void 0},{kind:"field",decorators:[(0,n.Cb)()],key:"label",value:void 0},{kind:"field",decorators:[(0,n.Cb)()],key:"helper",value:void 0},{kind:"field",decorators:[(0,n.Cb)({type:Boolean})],key:"required",value:()=>!0},{kind:"field",decorators:[(0,n.Cb)({type:Boolean})],key:"disabled",value:()=>!1},{kind:"field",key:"_valueStr",value:()=>""},{kind:"method",key:"willUpdate",value:function(t){t.has("value")&&(""!==this._valueStr&&this.value===Number(this._valueStr)||(this._valueStr=null==this.value||isNaN(this.value)?"":this.value.toString()))}},{kind:"method",key:"render",value:function(){const t="box"===this.selector.number?.mode||void 0===this.selector.number?.min||void 0===this.selector.number?.max;let e;if(!t&&(e=this.selector.number.step??1,"any"===e)){e=1;const t=(this.selector.number.max-this.selector.number.min)/100;for(;e>t;)e/=10}return a.dy` ${this.label&&!t?a.dy`${this.label}${this.required?"*":""}`:a.Ld} <div class="input"> ${t?a.Ld:a.dy` <ha-slider labeled .min="${this.selector.number.min}" .max="${this.selector.number.max}" .value="${this.value??""}" .step="${e}" .disabled="${this.disabled}" .required="${this.required}" @change="${this._handleSliderChange}" .ticks="${this.selector.number?.slider_ticks}"> </ha-slider> `} <ha-textfield .inputMode="${"any"===this.selector.number?.step||(this.selector.number?.step??1)%1!=0?"decimal":"numeric"}" .label="${t?this.label:void 0}" .placeholder="${this.placeholder}" class="${(0,l.$)({single:t})}" .min="${this.selector.number?.min}" .max="${this.selector.number?.max}" .value="${this._valueStr??""}" .step="${this.selector.number?.step??1}" helperPersistent .helper="${t?this.helper:void 0}" .disabled="${this.disabled}" .required="${this.required}" .suffix="${this.selector.number?.unit_of_measurement}" type="number" autoValidate ?no-spinner="${!t}" @input="${this._handleInputChange}"> </ha-textfield> </div> ${!t&&this.helper?a.dy`<ha-input-helper-text>${this.helper}</ha-input-helper-text>`:a.Ld} `}},{kind:"method",key:"_handleInputChange",value:function(t){t.stopPropagation(),this._valueStr=t.target.value;const e=""===t.target.value||isNaN(t.target.value)?void 0:Number(t.target.value);this.value!==e&&(0,o.B)(this,"value-changed",{value:e})}},{kind:"method",key:"_handleSliderChange",value:function(t){t.stopPropagation();const e=Number(t.target.value);this.value!==e&&(0,o.B)(this,"value-changed",{value:e})}},{kind:"field",static:!0,key:"styles",value:()=>a.iv`.input{display:flex;justify-content:space-between;align-items:center;direction:ltr}ha-slider{flex:1;margin-right:16px;margin-inline-end:16px;margin-inline-start:0}ha-textfield{--ha-textfield-input-width:40px}.single{--ha-textfield-input-width:unset;flex:1}`}]}}),a.oi)},316:function(t,e,i){i.a(t,(async function(t,s){try{i.r(e),i.d(e,{DialogStatisticsFixUnsupportedUnitMetadata:()=>k});var a=i(44249),n=(i(92745),i(9359),i(31526),i(31622),i(85017)),l=i(57243),o=i(15093),d=i(27486),h=i(64214),r=i(36522),u=i(17170),c=(i(73729),i(29073),i(13928),i(7285),i(75677)),m=(i(69695),i(37583),i(17705)),v=i(76131),p=i(28008),_=i(72473),f=t([u,c,h]);[u,c,h]=f.then?(await f)():f;let k=(0,a.Z)([(0,o.Mo)("dialog-statistics-adjust-sum")],(function(t,e){return{F:class extends e{constructor(...e){super(...e),t(this)}},d:[{kind:"field",decorators:[(0,o.Cb)({attribute:!1})],key:"hass",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_params",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_busy",value:()=>!1},{kind:"field",decorators:[(0,o.SB)()],key:"_moment",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_stats5min",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_statsHour",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_chosenStat",value:void 0},{kind:"field",key:"_origAmount",value:void 0},{kind:"field",decorators:[(0,o.SB)()],key:"_amount",value:void 0},{kind:"field",key:"_dateTimeSelector",value:()=>({datetime:{}})},{kind:"field",key:"_amountSelector",value:()=>(0,d.Z)((t=>({number:{step:.01,unit_of_measurement:t,mode:"box"}})))},{kind:"method",key:"showDialog",value:function(t){this._params=t;const e=new Date;e.setMinutes(e.getMinutes()-e.getMinutes()%5,0),this._moment=(0,n.X)(e),this._fetchStats()}},{kind:"method",key:"closeDialog",value:function(){this._params=void 0,this._moment=void 0,this._stats5min=void 0,this._statsHour=void 0,this._origAmount=void 0,this._amount=void 0,this._chosenStat=void 0,this._busy=!1,(0,r.B)(this,"dialog-closed",{dialog:this.localName})}},{kind:"method",key:"render",value:function(){if(!this._params)return l.Ld;let t;return t=this._chosenStat?this._renderAdjustStat():this._renderPickStatistic(),l.dy` <ha-dialog open scrimClickAction escapeKeyAction @closed="${this.closeDialog}" .heading="${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.title")}"> ${t} </ha-dialog> `}},{kind:"method",key:"shouldUpdate",value:function(t){if(1!==t.size||!t.has("hass"))return!0;const e=t.get("hass");return!e||e.localize!==this.hass.localize}},{kind:"method",key:"_renderPickStatistic",value:function(){let t;if(this._stats5min&&this._statsHour)if(this._statsHour.length<1&&this._stats5min.length<1)t=l.dy`<p> ${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.no_statistics_found")} </p>`;else{const e=this._stats5min.length>=1?this._stats5min:this._statsHour,i=(0,m.dO)(this.hass,this._params.statistic.statistic_id,this._params.statistic),s=[];for(const t of e){const e=Math.round(100*t.change)/100;s.push(l.dy` <ha-list-item twoline hasMeta .stat="${t}" @click="${this._setChosenStatistic}"> <span>${e} ${i}</span> <span slot="secondary"> ${(0,h.o0)(new Date(t.start),this.hass.locale,this.hass.config)} </span> <ha-icon-next slot="meta"></ha-icon-next> </ha-list-item> `)}t=l.dy`${s}`}else t=l.dy`<ha-spinner></ha-spinner>`;return l.dy` <div class="text-content"> ${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.info_text_1")} </div> <div class="text-content"> <b>${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.statistic")}</b> ${this._params.statistic.statistic_id} </div> <ha-selector-datetime .label="${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.pick_a_time")}" .hass="${this.hass}" .selector="${this._dateTimeSelector}" .value="${this._moment}" @value-changed="${this._dateTimeSelectorChanged}"></ha-selector-datetime> <div class="stat-list">${t}</div> <mwc-button slot="secondaryAction" .label="${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.outliers")}" @click="${this._fetchOutliers}"></mwc-button> <mwc-button slot="primaryAction" dialogAction="cancel" .label="${this.hass.localize("ui.common.close")}"></mwc-button> `}},{kind:"method",key:"_clearChosenStatistic",value:function(){this._chosenStat=void 0}},{kind:"method",key:"_setChosenStatistic",value:function(t){const e=t.currentTarget.stat,i=Math.round(100*e.change)/100;this._chosenStat=e,this._origAmount=i,this._amount=i}},{kind:"method",key:"_dateTimeSelectorChanged",value:function(t){this._moment=t.detail.value,this._fetchStats()}},{kind:"method",key:"_renderAdjustStat",value:function(){const t=(0,m.dO)(this.hass,this._params.statistic.statistic_id,this._params.statistic);return l.dy` <div class="text-content"> <b>${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.statistic")}</b> ${this._params.statistic.statistic_id} </div> <div class="table-row"> <span>${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.start")}</span> <span>${(0,h.o0)(new Date(this._chosenStat.start),this.hass.locale,this.hass.config)}</span> </div> <div class="table-row"> <span>${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.end")}</span> <span>${(0,h.o0)(new Date(this._chosenStat.end),this.hass.locale,this.hass.config)}</span> </div> <ha-selector-number .label="${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.new_value")}" .hass="${this.hass}" .selector="${this._amountSelector(t||void 0)}" .value="${this._amount}" .disabled="${this._busy}" @value-changed="${this._amountChanged}"></ha-selector-number> <mwc-button slot="primaryAction" .label="${this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.adjust")}" .disabled="${this._busy}" @click="${this._fixIssue}"></mwc-button> <mwc-button slot="secondaryAction" .label="${this.hass.localize("ui.common.back")}" .disabled="${this._busy}" @click="${this._clearChosenStatistic}"></mwc-button> `}},{kind:"method",key:"_amountChanged",value:function(t){this._amount=t.detail.value}},{kind:"method",key:"_fetchStats",value:async function(){this._stats5min=void 0,this._statsHour=void 0;const t=this._params.statistic.statistic_id,e=new Date(this._moment.replace(" ","T")),i=new Date(e.getTime());i.setTime(i.getTime()-72e5);const s=new Date(e.getTime());s.setTime(s.getTime()+108e5);const a=await(0,m.dL)(this.hass,i,s,[t],"hour");if(this._statsHour=t in a?a[t].slice(0,5):[],0===this._statsHour.length)return void(this._stats5min=[]);const n=new Date(e.getTime());n.setTime(n.getTime()-6e5);const l=new Date(e.getTime());l.setTime(l.getTime()+9e5);const o=await(0,m.dL)(this.hass,n,l,[t],"5minute");this._stats5min=t in o?o[t].slice(0,5):[]}},{kind:"method",key:"_fetchOutliers",value:async function(){this._stats5min=void 0,this._statsHour=void 0;const t=this._params.statistic.statistic_id,e=new Date(0),i=new Date,s=await(0,m.dL)(this.hass,e,i,[t],"hour"),a=t in s?s[t]:[];if(0===a.length)return;const n=await(0,m.dL)(this.hass,e,i,[t],"5minute"),l=t in n?n[t]:[];l.shift();const o=[];a.forEach((t=>{o.push({hour:t,fiveMin:[]})}));const d={hour:null,fiveMin:[]};let h=0;l.forEach((t=>{let e=!1;for(;h<o.length;h++){const i=o[h].hour;if(i&&t.start>=i.start&&t.end<=i.end){o[h].fiveMin.push(t),e=!0;break}}e||d.fiveMin.push(t)})),o.push(d);let r=[],u=0;const c=t=>{const e=Math.abs(t.change??0);(r.length<10||e>u)&&(r.push(t),r=r.sort(((t,e)=>Math.abs(e.change??0)-Math.abs(t.change??0))),r=r.slice(0,10),u=r[r.length-1].change??0)};o.forEach((t=>{0===t.fiveMin.length&&t.hour?c(t.hour):t.fiveMin.forEach((t=>{c(t)}))})),this._statsHour=r,this._stats5min=[]}},{kind:"method",key:"_fixIssue",value:async function(){const t=(0,m.dO)(this.hass,this._params.statistic.statistic_id,this._params.statistic);this._busy=!0;try{await(0,m.j2)(this.hass,this._params.statistic.statistic_id,this._chosenStat.start,this._amount-this._origAmount,t||null)}catch(t){return this._busy=!1,void(0,v.showAlertDialog)(this,{text:this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.error_sum_adjusted",{message:t.message||t})})}(0,_.C)(this,{message:this.hass.localize("ui.panel.developer-tools.tabs.statistics.fix_issue.adjust_sum.sum_adjusted")}),this.closeDialog()}},{kind:"get",static:!0,key:"styles",value:function(){return[p.Qx,p.yu,l.iv`@media all and (max-width:450px),all and (max-height:500px){ha-dialog{--mdc-dialog-max-height:100%;height:100%}}@media all and (min-width:850px){ha-dialog{--mdc-dialog-max-height:80%;--mdc-dialog-max-height:80%}}@media all and (min-width:451px) and (min-height:501px){ha-dialog{--mdc-dialog-max-width:480px}}.text-content,ha-selector-datetime,ha-selector-number{margin-bottom:20px}ha-list-item{margin:0 -24px;--mdc-list-side-padding:24px}.table-row{display:flex;justify-content:space-between;margin-bottom:20px}.stat-list{min-height:360px;display:flex;flex-direction:column}.stat-list ha-spinner{margin:0 auto}`]}}]}}),l.oi);s()}catch(t){s(t)}}))},55800:function(t,e,i){function s(t,e){return(t<0?"-":"")+Math.abs(t).toString().padStart(e,"0")}i.d(e,{r:()=>s})},85017:function(t,e,i){i.d(e,{X:()=>l});var s=i(55800),a=i(12279),n=i(18112);function l(t,e){const i=(0,n.Q)(t,e?.in);if(!(0,a.J)(i))throw new RangeError("Invalid time value");const l=e?.format??"extended",o=e?.representation??"complete";let d="";const h="extended"===l?"-":"",r="extended"===l?":":"";if("time"!==o){const t=(0,s.r)(i.getDate(),2),e=(0,s.r)(i.getMonth()+1,2);d=`${(0,s.r)(i.getFullYear(),4)}${h}${e}${h}${t}`}if("date"!==o){d=`${d}${""===d?"":" "}${(0,s.r)(i.getHours(),2)}${r}${(0,s.r)(i.getMinutes(),2)}${r}${(0,s.r)(i.getSeconds(),2)}`}return d}},12279:function(t,e,i){function s(t){return t instanceof Date||"object"==typeof t&&"[object Date]"===Object.prototype.toString.call(t)}i.d(e,{J:()=>n});var a=i(18112);function n(t){return!(!s(t)&&"number"!=typeof t||isNaN(+(0,a.Q)(t)))}}}; //# sourceMappingURL=76597.7adcb9f07d5b04c5.js.map