iobroker.lovelace
Version:
With this adapter you can build visualization for ioBroker with Home Assistant Lovelace UI
1 lines • 14.3 kB
JavaScript
"use strict";(self.rspackChunkhome_assistant_frontend=self.rspackChunkhome_assistant_frontend||[]).push([[64811],{1375:function(t,e){e.A={en:"US",hi:"IN",deva:"IN",te:"IN",mr:"IN",ta:"IN",gu:"IN",kn:"IN",or:"IN",ml:"IN",pa:"IN",bho:"IN",awa:"IN",as:"IN",mwr:"IN",mai:"IN",mag:"IN",bgc:"IN",hne:"IN",dcc:"IN",bn:"BD",beng:"BD",rkt:"BD",dz:"BT",tibt:"BT",tn:"BW",am:"ET",ethi:"ET",om:"ET",quc:"GT",id:"ID",jv:"ID",su:"ID",mad:"ID",ms_arab:"ID",he:"IL",hebr:"IL",jam:"JM",ja:"JP",jpan:"JP",km:"KH",khmr:"KH",ko:"KR",kore:"KR",lo:"LA",laoo:"LA",mh:"MH",my:"MM",mymr:"MM",mt:"MT",ne:"NP",fil:"PH",ceb:"PH",ilo:"PH",ur:"PK",pa_arab:"PK",lah:"PK",ps:"PK",sd:"PK",skr:"PK",gn:"PY",th:"TH",thai:"TH",tts:"TH",zh_hant:"TW",hant:"TW",sm:"WS",zu:"ZA",sn:"ZW",arq:"DZ",ar:"EG",arab:"EG",arz:"EG",fa:"IR",az_arab:"IR",dv:"MV",thaa:"MV"}},27734:function(t,e,n){n.d(e,{S:function(){return o}});n(27495);var a=n(1375),s=n(62009);function o(t){return function(t,e,n){if(t){var a,s=t.toLowerCase().split(/[-_]/),o=s[0],r=o;if(s[1]&&4===s[1].length?(r+="_"+s[1],a=s[2]):a=s[1],a||(a=e[r]||e[o]),a)return function(t,e){var n=e["string"==typeof t?t.toUpperCase():t];return"number"==typeof n?n:1}(a.match(/^\d+$/)?Number(a):a,n)}return 1}(t,a.A,s.A)}},62009:function(t,e){e.A={AG:0,ATG:0,28:0,AS:0,ASM:0,16:0,BD:0,BGD:0,50:0,BR:0,BRA:0,76:0,BS:0,BHS:0,44:0,BT:0,BTN:0,64:0,BW:0,BWA:0,72:0,BZ:0,BLZ:0,84:0,CA:0,CAN:0,124:0,CO:0,COL:0,170:0,DM:0,DMA:0,212:0,DO:0,DOM:0,214:0,ET:0,ETH:0,231:0,GT:0,GTM:0,320:0,GU:0,GUM:0,316:0,HK:0,HKG:0,344:0,HN:0,HND:0,340:0,ID:0,IDN:0,360:0,IL:0,ISR:0,376:0,IN:0,IND:0,356:0,JM:0,JAM:0,388:0,JP:0,JPN:0,392:0,KE:0,KEN:0,404:0,KH:0,KHM:0,116:0,KR:0,KOR:0,410:0,LA:0,LA0:0,418:0,MH:0,MHL:0,584:0,MM:0,MMR:0,104:0,MO:0,MAC:0,446:0,MT:0,MLT:0,470:0,MX:0,MEX:0,484:0,MZ:0,MOZ:0,508:0,NI:0,NIC:0,558:0,NP:0,NPL:0,524:0,PA:0,PAN:0,591:0,PE:0,PER:0,604:0,PH:0,PHL:0,608:0,PK:0,PAK:0,586:0,PR:0,PRI:0,630:0,PT:0,PRT:0,620:0,PY:0,PRY:0,600:0,SA:0,SAU:0,682:0,SG:0,SGP:0,702:0,SV:0,SLV:0,222:0,TH:0,THA:0,764:0,TT:0,TTO:0,780:0,TW:0,TWN:0,158:0,UM:0,UMI:0,581:0,US:0,USA:0,840:0,VE:0,VEN:0,862:0,VI:0,VIR:0,850:0,WS:0,WSM:0,882:0,YE:0,YEM:0,887:0,ZA:0,ZAF:0,710:0,ZW:0,ZWE:0,716:0,AE:6,ARE:6,784:6,AF:6,AFG:6,4:6,BH:6,BHR:6,48:6,DJ:6,DJI:6,262:6,DZ:6,DZA:6,12:6,EG:6,EGY:6,818:6,IQ:6,IRQ:6,368:6,IR:6,IRN:6,364:6,JO:6,JOR:6,400:6,KW:6,KWT:6,414:6,LY:6,LBY:6,434:6,OM:6,OMN:6,512:6,QA:6,QAT:6,634:6,SD:6,SDN:6,729:6,SY:6,SYR:6,760:6,MV:5,MDV:5,462:5}},380:function(t,e,n){n.a(t,async function(t,a){try{n.d(e,{D:function(){return l},P:function(){return c}});n(74423);var s=n(74487),o=n(27734),r=n(46927),i=n(96029),u=t([s]);s=(u.then?(await u)():u)[0];const c=t=>t.first_weekday===r.zt.language?"weekInfo"in Intl.Locale.prototype?new Intl.Locale(t.language).weekInfo.firstDay%7:(0,o.S)(t.language)%7:i.Z.includes(t.first_weekday)?i.Z.indexOf(t.first_weekday):1,l=t=>{const e=c(t);return i.Z[e]};a()}catch(c){a(c)}})},98975:function(t,e,n){n.a(t,async function(t,a){try{n.d(e,{K:function(){return c}});var s=n(74487),o=n(22786),r=n(63927),i=t([s,r]);[s,r]=i.then?(await i)():i;const u=(0,o.A)(t=>new Intl.RelativeTimeFormat(t.language,{numeric:"auto"})),c=(t,e,n,a=!0)=>{const s=(0,r.x)(t,n,e);return a?u(e).format(s.value,s.unit):Intl.NumberFormat(e.language,{style:"unit",unit:s.unit,unitDisplay:"long"}).format(Math.abs(s.value))};a()}catch(u){a(u)}})},96029:function(t,e,n){n.d(e,{Tq:function(){return r},Z:function(){return s},ZV:function(){return a},sj:function(){return o}});const a=["sun","mon","tue","wed","thu","fri","sat"],s=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],o={0:"sun",1:"mon",2:"tue",3:"wed",4:"thu",5:"fri",6:"sat"},r={sun:"sunday",mon:"monday",tue:"tuesday",wed:"wednesday",thu:"thursday",fri:"friday",sat:"saturday"}},63927:function(t,e,n){n.a(t,async function(t,a){try{n.d(e,{x:function(){return f}});var s=n(6946),o=n(52640),r=n(38684),i=n(380),u=t([i]);i=(u.then?(await u)():u)[0];const l=1e3,h=60,d=60*h;function f(t,e=Date.now(),n,a={}){const u=Object.assign(Object.assign({},g),a||{}),c=(+t-+e)/l;if(Math.abs(c)<u.second)return{value:Math.round(c),unit:"second"};const f=c/h;if(Math.abs(f)<u.minute)return{value:Math.round(f),unit:"minute"};const v=c/d;if(Math.abs(v)<u.hour)return{value:Math.round(v),unit:"hour"};const b=new Date(t),m=new Date(e);b.setHours(0,0,0,0),m.setHours(0,0,0,0);const p=(0,s.c)(b,m);if(0===p)return{value:Math.round(v),unit:"hour"};if(Math.abs(p)<u.day)return{value:p,unit:"day"};const y=(0,i.P)(n),_=(0,o.k)(b,{weekStartsOn:y}),M=(0,o.k)(m,{weekStartsOn:y}),D=(0,r.I)(_,M);if(0===D)return{value:p,unit:"day"};if(Math.abs(D)<u.week)return{value:D,unit:"week"};const w=b.getFullYear()-m.getFullYear(),I=12*w+b.getMonth()-m.getMonth();return 0===I?{value:D,unit:"week"}:Math.abs(I)<u.month||0===w?{value:I,unit:"month"}:{value:Math.round(w),unit:"year"}}const g={second:59,minute:59,hour:22,day:5,week:4,month:11};a()}catch(c){a(c)}})},2854:function(t,e,n){n.a(t,async function(t,a){try{n.r(e),n.d(e,{BluetoothNetworkVisualization:function(){return $}});n(44114),n(18111),n(22489),n(20116),n(7588),n(61701),n(53921),n(62953);var s=n(40445),o=n(5124),r=n(67576),i=n(22786),u=n(98975),c=n(76774),l=n(91926),h=n(77796),d=n(7358),f=n(36866),g=n(21030),v=n(81310),b=t([d,f,v,u]);[d,f,v,u]=b.then?(await b)():b;let m,p,y,_,M,D,w,I,S,k=t=>t;const N=1e4,A="ha",P="ioBroker",T=[[-70,"--green-color"],[-75,"--lime-color"],[-80,"--yellow-color"],[-85,"--amber-color"],[-90,"--orange-color"],[-95,"--deep-orange-color"],[-1/0,"--red-color"]];class $ extends o.WF{connectedCallback(){if(super.connectedCallback(),this.hass){this._unsub_advertisements=(0,g.Ht)(this.hass.connection,t=>{this._data.length?this._throttledUpdateData(t):this._data=t}),this._unsub_scanners=(0,g.mj)(this.hass.connection,t=>{this._scanners=t});const t=Object.values(this.hass.devices).filter(t=>t.connections.find(t=>"bluetooth"===t[0]));this._sourceDevices=Object.fromEntries(t.map(t=>[t.connections.find(t=>"bluetooth"===t[0])[1],t]))}}disconnectedCallback(){super.disconnectedCallback(),this._unsub_advertisements&&(this._unsub_advertisements(),this._unsub_advertisements=void 0),this._throttledUpdateData.cancel(),this._unsub_scanners&&(this._unsub_scanners(),this._unsub_scanners=void 0)}render(){return(0,o.qy)(m||(m=k` <hass-subpage .hass="${0}" .narrow="${0}" .header="${0}" back-path="/config/bluetooth/dashboard"> ${0} <ha-network-graph .hass="${0}" .searchFilter="${0}" .data="${0}" .searchableAttributes="${0}" .tooltipFormatter="${0}" -click="${0}"> ${0} </ha-network-graph> </hass-subpage> `),this.hass,this.narrow,this.hass.localize("ui.panel.config.bluetooth.navigation.visualization"),this.narrow?(0,o.qy)(p||(p=k`<div slot="header">${0}</div>`),this._renderInputSearch()):o.s6,this.hass,this._searchFilter,this._formatNetworkData(this._data,this._scanners),this._getSearchableAttributes,this._tooltipFormatter,this._handleChartClick,this.narrow?o.s6:this._renderInputSearch("search"))}_renderInputSearch(t=""){return(0,o.qy)(y||(y=k`<ha-input-search appearance="outlined" slot="${0}" .value="${0}" ="${0}"></ha-input-search>`),t,this._searchFilter,this._handleSearchChange)}_handleSearchChange(t){var e;this._searchFilter=null!==(e=t.target.value)&&void 0!==e?e:""}_getBluetoothDeviceName(t){var e,n,a,s;return t===A?P:this._sourceDevices[t]?(null===(n=this._sourceDevices[t])||void 0===n?void 0:n.name_by_user)||(null===(a=this._sourceDevices[t])||void 0===a?void 0:a.name)||t:this._scanners[t]?(null===(s=this._scanners[t])||void 0===s?void 0:s.name)||t:(null===(e=this._data.find(e=>e.address===t))||void 0===e?void 0:e.name)||t}_getLineWidth(t){return t>-33?3:t>-66?2:1}_handleChartClick(t){if("node"===t.detail.dataType&&"pointer"===t.detail.event.target.cursor){const{id:e}=t.detail.data,n=this._sourceDevices[e];n&&(0,l.oo)(`/config/devices/device/${n.id}`)}}static get styles(){return[(0,o.AH)(_||(_=k`ha-network-graph{height:100%}[slot=header]{display:flex;align-items:center}ha-input-search{flex:1}`))]}constructor(...t){super(...t),this.narrow=!1,this.isWide=!1,this._data=[],this._scanners={},this._sourceDevices={},this._searchFilter="",this._throttledUpdateData=(0,h.n)(t=>{this._data=t},N),this._getSearchableAttributes=t=>{const e=[],n=this._sourceDevices[t];null!=n&&n.manufacturer&&e.push(n.manufacturer),null!=n&&n.model&&e.push(n.model);const a=this._scanners[t];return null!=a&&a.name&&e.push(a.name),e},this._getRssiColorVar=(0,i.A)(t=>{for(const[e,n]of T)if(t>e)return n;return"--red-color"}),this._formatNetworkData=(0,i.A)((t,e)=>{const n=getComputedStyle(this),a=[{name:P,symbol:"roundRect",itemStyle:{color:n.getPropertyValue("--primary-color")}},{name:this.hass.localize("ui.panel.config.bluetooth.scanners"),symbol:"circle",itemStyle:{color:n.getPropertyValue("--cyan-color")}},{name:this.hass.localize("ui.panel.config.bluetooth.known_devices"),symbol:"circle",itemStyle:{color:n.getPropertyValue("--teal-color")}},{name:this.hass.localize("ui.panel.config.bluetooth.unknown_devices"),symbol:"circle",itemStyle:{color:n.getPropertyValue("--disabled-color")}}],s=[{id:A,name:P,category:0,value:4,symbol:"roundRect",symbolSize:40,polarDistance:0}],o=[];return Object.values(e).forEach(t=>{const e=this._sourceDevices[t.source],a=e?(0,c.q)(e,this.hass.areas):void 0;s.push({id:t.source,name:(null==e?void 0:e.name_by_user)||(null==e?void 0:e.name)||t.name,context:null==a?void 0:a.name,category:1,value:5,symbol:"circle",symbolSize:30,polarDistance:.25}),o.push({source:A,target:t.source,value:0,symbol:"none",lineStyle:{width:3,color:n.getPropertyValue("--primary-color")}})}),t.forEach(t=>{if(e[t.address])return void o.push({source:t.source,target:t.address,value:t.rssi,symbol:"none",lineStyle:{width:this._getLineWidth(t.rssi),color:n.getPropertyValue(this._getRssiColorVar(t.rssi))}});const a=this._sourceDevices[t.address],r=a?(0,c.q)(a,this.hass.areas):void 0;s.push({id:t.address,name:this._getBluetoothDeviceName(t.address),context:null==r?void 0:r.name,value:a?1:0,category:a?2:3,symbolSize:20}),o.push({source:t.source,target:t.address,value:t.rssi,symbol:"none",lineStyle:{width:this._getLineWidth(t.rssi),color:a?n.getPropertyValue(this._getRssiColorVar(t.rssi)):n.getPropertyValue("--disabled-color")}})}),{nodes:s,links:o,categories:a}}),this._tooltipFormatter=t=>{const{dataType:e,data:n}=t;if("edge"===e){const{source:t,target:e,value:a}=n,s=this._getBluetoothDeviceName(t),r=this._getBluetoothDeviceName(e);return(0,o.qy)(M||(M=k`${0} → ${0}${0}`),s,r,t!==A?(0,o.qy)(D||(D=k` <b>${0}:</b> ${0}`),this.hass.localize("ui.panel.config.bluetooth.rssi"),a):o.s6)}const{id:a}=n,s=this._getBluetoothDeviceName(a),r=this._data.find(t=>t.address===a),i=this._sourceDevices[a],l=i?(0,c.q)(i,this.hass.areas):void 0,h=l?(0,o.qy)(w||(w=k`<br><b>${0}: </b>${0}`),this.hass.localize("ui.panel.config.bluetooth.area"),l.name):o.s6;return r?(0,o.qy)(I||(I=k`<b>${0}</b><br> <b>${0}:</b> ${0}<br> <b>${0}:</b> ${0}<br> <b>${0}:</b> ${0}<br> <b>${0}:</b> ${0}${0}`),s,this.hass.localize("ui.panel.config.bluetooth.address"),a,this.hass.localize("ui.panel.config.bluetooth.rssi"),r.rssi,this.hass.localize("ui.panel.config.bluetooth.source"),r.source,this.hass.localize("ui.panel.config.bluetooth.updated"),(0,u.K)(new Date(1e3*r.time),this.hass.locale),h):i?(0,o.qy)(S||(S=k`<b>${0}</b><br> <b>${0}:</b> ${0}${0}`),s,this.hass.localize("ui.panel.config.bluetooth.address"),a,h):o.s6}}}(0,s.Cg)([(0,r.MZ)({attribute:!1})],$.prototype,"hass",void 0),(0,s.Cg)([(0,r.MZ)({type:Boolean,reflect:!0})],$.prototype,"narrow",void 0),(0,s.Cg)([(0,r.MZ)({attribute:"is-wide",type:Boolean})],$.prototype,"isWide",void 0),(0,s.Cg)([(0,r.MZ)({attribute:!1})],$.prototype,"route",void 0),(0,s.Cg)([(0,r.wk)()],$.prototype,"_data",void 0),(0,s.Cg)([(0,r.wk)()],$.prototype,"_scanners",void 0),(0,s.Cg)([(0,r.wk)()],$.prototype,"_sourceDevices",void 0),(0,s.Cg)([(0,r.wk)()],$.prototype,"_searchFilter",void 0),$=(0,s.Cg)([(0,r.EM)("bluetooth-network-visualization")],$),a()}catch(m){a(m)}})},53921:function(t,e,n){var a=n(46518),s=n(72652),o=n(97040);a({target:"Object",stat:!0},{fromEntries:function(t){var e={};return s(t,function(t,n){o(e,t,n)},{AS_ENTRIES:!0}),e}})},2045:function(t,e,n){n.d(e,{q:function(){return s}});let a={};function s(){return a}},74816:function(t,e,n){n.d(e,{x:function(){return s}});n(18111),n(20116),n(61701);var a=n(73420);function s(t,...e){const n=a.w.bind(null,t||e.find(t=>"object"==typeof t));return e.map(n)}},465:function(t,e,n){n.d(e,{m:function(){return u}});n(62953);var a=n(83504);function s(t){const e=(0,a.a)(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}var o=n(74816),r=n(9160),i=n(35932);function u(t,e,n){const[a,u]=(0,o.x)(null==n?void 0:n.in,t,e),c=(0,i.o)(a),l=(0,i.o)(u),h=+c-s(c),d=+l-s(l);return Math.round((h-d)/r.w4)}},6946:function(t,e,n){n.d(e,{c:function(){return o}});n(62953);var a=n(74816),s=n(465);function o(t,e,n){const[o,i]=(0,a.x)(null==n?void 0:n.in,t,e),u=r(o,i),c=Math.abs((0,s.m)(o,i));o.setDate(o.getDate()-u*c);const l=u*(c-Number(r(o,i)===-u));return 0===l?0:l}function r(t,e){const n=t.getFullYear()-e.getFullYear()||t.getMonth()-e.getMonth()||t.getDate()-e.getDate()||t.getHours()-e.getHours()||t.getMinutes()-e.getMinutes()||t.getSeconds()-e.getSeconds()||t.getMilliseconds()-e.getMilliseconds();return n<0?-1:n>0?1:n}},38684:function(t,e,n){n.d(e,{I:function(){return o}});var a=n(6439),s=n(6946);function o(t,e,n){const o=(0,s.c)(t,e,n)/7;return(0,a.u)(null==n?void 0:n.roundingMethod)(o)}},35932:function(t,e,n){n.d(e,{o:function(){return s}});var a=n(83504);function s(t,e){const n=(0,a.a)(t,null==e?void 0:e.in);return n.setHours(0,0,0,0),n}},52640:function(t,e,n){n.d(e,{k:function(){return o}});var a=n(2045),s=n(83504);function o(t,e){var n,o,r,i,u,c;const l=(0,a.q)(),h=null!==(n=null!==(o=null!==(r=null!==(i=null==e?void 0:e.weekStartsOn)&&void 0!==i?i:null==e||null===(u=e.locale)||void 0===u||null===(u=u.options)||void 0===u?void 0:u.weekStartsOn)&&void 0!==r?r:l.weekStartsOn)&&void 0!==o?o:null===(c=l.locale)||void 0===c||null===(c=c.options)||void 0===c?void 0:c.weekStartsOn)&&void 0!==n?n:0,d=(0,s.a)(t,null==e?void 0:e.in),f=d.getDay(),g=(f<h?7:0)+f-h;return d.setDate(d.getDate()-g),d.setHours(0,0,0,0),d}}}]);