platypush/platypush/backend/http/webapp/dist/static/js/7878.f549ed39.js

2 lines
16 KiB
JavaScript

"use strict";(self["webpackChunkplatypush"]=self["webpackChunkplatypush"]||[]).push([[7878,667,2106],{7878:function(e,t,i){i.r(t),i.d(t,{default:function(){return D}});var s=i(6252),n=i(3577);const l={class:"row plugin entities-container"},a={class:"groups-canvas"},r={key:2,class:"groups-container"},o={class:"frame"},u={class:"header"},c={class:"section left"},d={class:"section center"},h=["textContent"],p={class:"section right"},y={key:0,class:"body"};function m(e,t,i,m,g,f){const v=(0,s.up)("Loading"),b=(0,s.up)("Selector"),E=(0,s.up)("EntityModal"),w=(0,s.up)("VariableModal"),_=(0,s.up)("NoItems"),G=(0,s.up)("Icon"),k=(0,s.up)("DropdownItem"),I=(0,s.up)("Dropdown"),C=(0,s.up)("Entity");return(0,s.wg)(),(0,s.iD)("div",l,[g.loading?((0,s.wg)(),(0,s.j4)(v,{key:0})):(0,s.kq)("",!0),(0,s._)("header",null,[(0,s.Wm)(b,{"entity-groups":g.entityGroups,value:g.selector,onInput:t[0]||(t[0]=e=>g.selector=e),onRefresh:f.refresh,onShowVariableModal:t[1]||(t[1]=e=>g.variableModalVisible=!0)},null,8,["entity-groups","value","onRefresh"])]),(0,s._)("div",a,[g.modalEntityId&&g.entities[g.modalEntityId]?((0,s.wg)(),(0,s.j4)(E,{key:0,entity:g.entities[g.modalEntityId],parent:g.entities[g.entities[g.modalEntityId].parent_id],children:f.childrenByParentId(g.modalEntityId),visible:g.modalVisible,"config-values":f.configValuesByParentId(g.modalEntityId),onClose:f.onEntityModal,onEntityUpdate:t[2]||(t[2]=e=>g.modalEntityId=e)},null,8,["entity","parent","children","visible","config-values","onClose"])):(0,s.kq)("",!0),(0,s.Wm)(w,{visible:g.variableModalVisible,onClose:t[3]||(t[3]=e=>g.variableModalVisible=!1)},null,8,["visible"]),Object.keys(f.displayGroups||{})?.length?((0,s.wg)(),(0,s.iD)("div",r,[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(f.displayGroups,(e=>((0,s.wg)(),(0,s.iD)("div",{class:"group fade-in",key:e.name},[(0,s._)("div",o,[(0,s._)("div",u,[(0,s._)("span",c,["category"===g.selector.grouping&&f.entitiesMeta[f.typesByCategory[e.name]]?((0,s.wg)(),(0,s.j4)(G,(0,n.vs)((0,s.dG)({key:0},f.entitiesMeta[f.typesByCategory[e.name]].icon||{})),null,16)):"plugin"===g.selector.grouping&&f.pluginIcons[e.name]?((0,s.wg)(),(0,s.j4)(G,{key:1,class:(0,n.C_)(f.pluginIcons[e.name]?.class),url:f.pluginIcons[e.name]?.imgUrl},null,8,["class","url"])):(0,s.kq)("",!0)]),(0,s._)("span",d,[(0,s._)("div",{class:"title",textContent:(0,n.zw)(e.name)},null,8,h)]),(0,s._)("span",p,[(0,s.Wm)(I,{title:"Actions","icon-class":"fa fa-ellipsis-h"},{default:(0,s.w5)((()=>[(0,s.Wm)(k,{text:"Refresh","icon-class":"fa fa-sync-alt",onClick:t=>f.refresh(e)},null,8,["onClick"]),(0,s.Wm)(k,{text:"Hide","icon-class":"fa fa-eye-slash",onClick:t=>f.hideGroup(e)},null,8,["onClick"]),g.collapsedGroups[e.name]?((0,s.wg)(),(0,s.j4)(k,{key:1,text:"Expand","icon-class":"fa fa-caret-down",onClick:t=>g.collapsedGroups[e.name]=!1},null,8,["onClick"])):((0,s.wg)(),(0,s.j4)(k,{key:0,text:"Collapse","icon-class":"fa fa-caret-up",onClick:t=>g.collapsedGroups[e.name]=!0},null,8,["onClick"]))])),_:2},1024)])]),g.collapsedGroups[e.name]?(0,s.kq)("",!0):((0,s.wg)(),(0,s.iD)("div",y,[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(Object.values(e.entities).sort(((e,t)=>e.name.localeCompare(t.name))),(e=>((0,s.wg)(),(0,s.iD)("div",{class:"entity-frame",key:e.id},[e.parent_id?(0,s.kq)("",!0):((0,s.wg)(),(0,s.j4)(C,{value:e,children:f.childrenByParentId(e.id),"all-entities":g.entities,onShowModal:t[4]||(t[4]=e=>f.onEntityModal(e)),onInput:t=>f.onEntityInput(e),error:!!g.errorEntities[e.id],key:e.id,loading:!!g.loadingEntities[e.id],onLoading:t=>g.loadingEntities[e.id]=t},null,8,["value","children","all-entities","onInput","error","loading","onLoading"]))])))),128))]))])])))),128))])):((0,s.wg)(),(0,s.j4)(_,{key:1},{default:(0,s.w5)((()=>[(0,s.Uk)("No entities found")])),_:1}))])])}var g=i(8637),f=i(2787),v=i(815),b=i(6791),E=i(657),w=i(3222),_=i(4558),G=i(667),k=i(1999),I=i(2106),C=i(5250),V=i(1359),j=i(7369),T={name:"Entities",mixins:[g.Z],components:{Dropdown:f.Z,DropdownItem:v.Z,Entity:_["default"],EntityModal:k["default"],Icon:E.Z,Loading:b.Z,NoItems:w.Z,Selector:G["default"],VariableModal:I["default"]},props:{entityScanTimeout:{type:Number,default:30}},data(){return{loading:!1,loadingEntities:{},errorEntities:{},entityTimeouts:{},entities:{},entityGroups:{id:{},category:{},plugin:{},type:{}},modalEntityId:null,modalVisible:!1,variableModalVisible:!1,selector:{grouping:"plugin",selectedEntities:{},selectedGroups:{}},collapsedGroups:{}}},computed:{entitiesMeta(){return j},pluginIcons(){return V},typesByCategory(){return Object.entries(j).reduce(((e,[t,i])=>(e[i.name_plural]=t,e)),{})},displayGroups(){return Object.entries(this.entityGroups[this.selector.grouping]).filter((e=>this.selector.selectedGroups[e[0]])).map((([e,t])=>({name:e,entities:Object.values(t).filter((e=>e.id in this.selector.selectedEntities))}))).filter((e=>e.entities?.length>0)).sort(((e,t)=>e.name.localeCompare(t.name)))}},methods:{addEntity(e){this.entities[e.id]=e,null==e.parent_id&&["id","type","category","plugin"].forEach((t=>{null!=e[t]&&("id"==t?this.entityGroups[t][e[t]]=e:(this.entityGroups[t][e[t]]||(this.entityGroups[t][e[t]]={}),this.entityGroups[t][e[t]][e.id]=e))}))},removeEntity(e){null==e.parent_id&&(["id","type","category","plugin"].forEach((t=>{this.entityGroups[t][e[t]][e.id]&&delete this.entityGroups[t][e[t]][e.id]})),this.entities[e.id]&&delete this.entities[e.id])},_shouldSkipLoading(e){const t=Object.values(this.childrenByParentId(e.id)),i=t.filter((e=>!e.is_configuration&&!e.is_write_only&&!e.is_query_disabled)).length>0;return e.is_query_disabled||e.is_write_only||t.length&&!i},hideGroup(e){Object.keys(e.entities).forEach((e=>{this.selector.selectedEntities[e]&&delete this.selector.selectedEntities[e]})),delete this.selector.selectedGroups[e.name]},async refresh(e,t=!0){const i=(e?e.entities:this.entities)||{},s={};e&&(s.plugins=Object.values(i).reduce(((e,t)=>(e[t.plugin]=!0,e)),{})),t&&(this.loadingEntities=Object.values(i).reduce(((e,t)=>{if(this._shouldSkipLoading(t))return e;const i=this,s=t.id;return this.entityTimeouts[s]&&clearTimeout(this.entityTimeouts[s]),this.addEntity(t),this.entityTimeouts[s]=setTimeout((()=>{i.loadingEntities[s]&&delete i.loadingEntities[s],i.entityTimeouts[s]&&delete i.entityTimeouts[s],i.errorEntities[s]=t,console.warn(`Scan timeout for ${t.name}`)}),1e3*this.entityScanTimeout),e[s]=!0,e}),{})),this.request("entities.scan",s)},async sync(e=!0){e&&(this.loading=!0);try{this.entities=(await this.request("entities.get")).reduce(((e,t)=>(t.name=t?.meta?.name_override||t.name,t.category=j[t.type].name_plural,t.meta={...j[t.type]||{},...t.meta||{}},e[t.id]=t,this.addEntity(t),e)),{}),this.selector.selectedEntities=this.entityGroups.id,this.refreshEntitiesCache()}finally{e&&(this.loading=!1)}},childrenByParentId(e,t){const i=this.entities?.[e];return i?.children_ids?.length?i.children_ids.reduce(((e,i)=>{const s=this.entities[i];return s&&(!t&&!s.is_configuration||t&&s.is_configuration)&&(e[i]=this.entities[i]),e}),{}):{}},configValuesByParentId(e){return this.childrenByParentId(e,!0)},clearEntityTimeouts(e){this.errorEntities[e]&&delete this.errorEntities[e],this.loadingEntities[e]&&delete this.loadingEntities[e],this.entityTimeouts[e]&&(clearTimeout(this.entityTimeouts[e]),delete this.entityTimeouts[e])},onEntityInput(e){e.category=j[e.type].name_plural,this.entities[e.id]=e,this.clearEntityTimeouts(e.id),this.loadingEntities[e.id]&&delete this.loadingEntities[e.id]},onEntityUpdate(e){const t=e.entity.id;if(null==t)return;this.clearEntityTimeouts(t);const i={...e.entity};null==e.entity?.state&&(i.state=this.entities[t]?.state),i.meta?.name_override?.length?i.name=i.meta.name_override:this.entities[t]?.meta?.name_override?.length?i.name=this.entities[t].meta.name_override:i.name=e.entity?.name||this.entities[t]?.name,i.category=j[i.type].name_plural,i.meta={...j[e.entity.type]||{},...this.entities[t]?.meta||{},...e.entity?.meta||{}},this.addEntity(i),C.$.publishEntity(i)},onEntityDelete(e){const t=e.entity?.id;null!=t&&(t===this.modalEntityId&&(this.modalEntityId=null),this.entities[t]&&this.removeEntity(this.entities[t]))},onEntityModal(e){e?(this.modalEntityId=e,this.modalVisible=!0):(this.modalEntityId=null,this.modalVisible=!1)},loadCachedEntities(){const e=window.localStorage.getItem("entities");if(e){try{if(this.entities=JSON.parse(e),!this.entities)throw Error("The list of cached entities is null")}catch(t){return console.warning("Could not parse cached entities",t),!1}return Object.values(this.entities).forEach((e=>this.onEntityUpdate({entity:e}))),this.selector.selectedEntities=this.entityGroups.id,!0}return!1},refreshEntitiesCache(){this.loading||window.localStorage.setItem("entities",JSON.stringify(this.entities))}},async mounted(){this.subscribe(this.onEntityUpdate,"on-entity-update","platypush.message.event.entities.EntityUpdateEvent"),this.subscribe(this.onEntityDelete,"on-entity-delete","platypush.message.event.entities.EntityDeleteEvent");const e=this.loadCachedEntities();await this.sync(!e),await this.refresh(null,!e),setInterval((()=>this.refreshEntitiesCache()),1e4)},unmounted(){this.unsubscribe("on-entity-update")}},O=i(3744);const x=(0,O.Z)(T,[["render",m],["__scopeId","data-v-59321353"]]);var D=x},667:function(e,t,i){i.r(t),i.d(t,{default:function(){return v}});var s=i(6252),n=i(9963);const l={class:"entities-selectors-container"},a={key:0,class:"selector search-container col-11"},r={class:"selector actions-container col-1 pull-right"};function o(e,t,i,o,u,c){const d=(0,s.up)("DropdownItem"),h=(0,s.up)("Dropdown");return(0,s.wg)(),(0,s.iD)("div",l,[Object.keys(i.entityGroups.id||{}).length?((0,s.wg)(),(0,s.iD)("div",a,[(0,s.wy)((0,s._)("input",{ref:"search",type:"text",class:"search-bar",title:"Filter by name, plugin or ID",placeholder:"🔎","onUpdate:modelValue":t[0]||(t[0]=e=>u.searchTerm=e)},null,512),[[n.nr,u.searchTerm]])])):(0,s.kq)("",!0),(0,s._)("div",r,[(0,s.Wm)(h,{title:"Actions","icon-class":"fas fa-ellipsis"},{default:(0,s.w5)((()=>[(0,s.Wm)(d,{"icon-class":"fas fa-sync-alt",text:"Refresh",onClick:t[1]||(t[1]=t=>e.$emit("refresh"))}),(0,s.Wm)(d,{"icon-class":"fas fa-square-root-variable",text:"Set Variable",onClick:t[2]||(t[2]=t=>e.$emit("show-variable-modal"))}),(0,s.Wm)(h,{title:"Group by",text:"Group by","icon-class":"fas fa-object-ungroup",ref:"groupingSelector"},{default:(0,s.w5)((()=>[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(c.visibleGroupings,(e=>((0,s.wg)(),(0,s.j4)(d,{key:e,text:c.prettifyGroupingName(e),"item-class":{selected:i.value?.grouping===e},onClick:t=>c.onGroupingChanged(e)},null,8,["text","item-class","onClick"])))),128))])),_:1},512),(0,s.Wm)(h,{title:"Filter groups",text:"Filter groups","icon-class":{fas:!0,"fa-filter":!0,active:c.hasActiveFilter},ref:"groupSelector","keep-open-on-item-click":""},{default:(0,s.w5)((()=>[((0,s.wg)(!0),(0,s.iD)(s.HY,null,(0,s.Ko)(c.sortedGroups,(e=>((0,s.wg)(),(0,s.j4)(d,(0,s.dG)({key:e,text:e},c.iconForGroup(e),{"item-class":{selected:!!u.selectedGroups[e]},onClick:(0,n.iM)((t=>c.toggleGroup(e)),["stop"])}),null,16,["text","item-class","onClick"])))),128))])),_:1},8,["icon-class"])])),_:1})])])}var u=i(8637),c=i(2787),d=i(815),h=i(7369),p=i(1359),y=i(5250),m={name:"Selector",emits:["input","refresh","show-variable-modal"],mixins:[u.Z],components:{Dropdown:c.Z,DropdownItem:d.Z},props:{entityGroups:{type:Object,required:!0},value:{type:Object,required:!0}},data(){return{selectedGroups:{},searchTerm:""}},computed:{visibleGroupings(){return Object.keys(this.entityGroups).filter((e=>"id"!==e))},hasActiveFilter(){return Object.values(this.selectedGroups).filter((e=>!1===e)).length>0},sortedGroups(){return Object.keys(this.entityGroups[this.value?.grouping]||{}).sort()},typesMeta(){return h},isGroupFilterActive(){return Object.keys(this.selectedGroups).length!==this.sortedGroups.length},selectedEntities(){if(!this.searchTerm?.length)return this.entityGroups.id;const e=this.searchTerm.toLowerCase().trim();return Object.values(this.entityGroups.id).filter((t=>{if(!this.selectedGroups[t[this.value?.grouping]])return!1;if(!e?.length)return!0;for(const i of["id","external_id","name","plugin"]){if(!t[i])continue;const s=t[i].toString().toLowerCase();if(s.indexOf(e)>=0)return!0}return!1})).reduce(((e,t)=>(e[t.id]=t,e)),{})}},methods:{prettifyGroupingName(e){return e?(e=this.prettify(e),e.endsWith("y")&&(e=e.slice(0,e.length-1)+"ie"),e+="s",e):""},iconForGroup(e){if("plugin"===this.value.grouping&&p[e]){const t=p[e];return{"icon-class":t["class"]?.length||!t.imgUrl?.length?t["class"]:"fas fa-gears","icon-url":t.imgUrl}}return{}},sync(){const e={...this.value};e.searchTerm=this.searchTerm,e.selectedEntities=this.selectedEntities,e.selectedGroups=this.selectedGroups,this.$emit("input",e)},refreshGroupFilter(){this.selectedGroups=Object.keys(this.entityGroups[this.value?.grouping]||{}).reduce(((e,t)=>(e[t]=!0,e)),{}),this.sync()},toggleGroup(e){this.selectedGroups[e]=!this.selectedGroups[e],this.sync()},processEntityUpdate(e){const t=e[this.value?.grouping];t&&null==this.selectedGroups[t]&&(this.selectedGroups[t]=!0)},onGroupingChanged(e){if(!this.entityGroups[e]||e===this.value?.grouping)return!1;const t={...this.value};t.grouping=e,this.$emit("input",t)}},mounted(){this.refreshGroupFilter(),this.$watch((()=>this.value?.grouping),(()=>{this.refreshGroupFilter()})),this.$watch((()=>this.searchTerm),this.sync),y.$.onEntity(this.processEntityUpdate)}},g=i(3744);const f=(0,g.Z)(m,[["render",o],["__scopeId","data-v-334516c0"]]);var v=f},2106:function(e,t,i){i.r(t),i.d(t,{default:function(){return I}});var s=i(6252),n=i(9963);const l=e=>((0,s.dD)("data-v-4e3d4a40"),e=e(),(0,s.Cn)(),e),a={class:"variable-modal-container"},r={class:"row"},o=l((()=>(0,s._)("div",{class:"col-s-12 col-m-4 label"},[(0,s._)("label",{for:"name"},"Variable Name")],-1))),u={class:"col-s-12 col-m-8 value"},c=["disabled"],d={class:"row"},h=l((()=>(0,s._)("div",{class:"col-s-12 col-m-4 label"},[(0,s._)("label",{for:"name"},"Variable Value")],-1))),p={class:"col-s-12 col-m-8 value"},y=["disabled"],m={class:"row button-container"},g=["disabled"],f=l((()=>(0,s._)("i",{class:"fas fa-check"},null,-1))),v=[f];function b(e,t,i,l,f,b){const E=(0,s.up)("Modal");return(0,s.wg)(),(0,s.j4)(E,{visible:i.visible,title:"Set Variable",ref:"modal",onOpen:b.onOpen,onClose:t[3]||(t[3]=t=>e.$emit("close",t))},{default:(0,s.w5)((()=>[(0,s._)("div",a,[(0,s._)("form",{onSubmit:t[2]||(t[2]=(0,n.iM)(((...e)=>b.setValue&&b.setValue(...e)),["prevent"]))},[(0,s._)("div",r,[o,(0,s._)("div",u,[(0,s.wy)((0,s._)("input",{type:"text",id:"variable-name","onUpdate:modelValue":t[0]||(t[0]=e=>f.varName=e),placeholder:"Variable Name",disabled:f.loading,ref:"varName"},null,8,c),[[n.nr,f.varName]])])]),(0,s._)("div",d,[h,(0,s._)("div",p,[(0,s.wy)((0,s._)("input",{type:"text",id:"variable-value","onUpdate:modelValue":t[1]||(t[1]=e=>f.varValue=e),ref:"varValue",placeholder:"Variable Value",disabled:f.loading},null,8,y),[[n.nr,f.varValue]])])]),(0,s._)("div",m,[(0,s._)("button",{type:"submit",title:"Set",disabled:f.loading},v,8,g)])],32)])])),_:1},8,["visible","onOpen"])}var E=i(3493),w=i(8637),_={name:"VariableModal",components:{Modal:E.Z},mixins:[w.Z],emits:["close"],props:{visible:{type:Boolean,default:!1}},data(){return{loading:!1,varName:null,varValue:null}},methods:{async clearValue(){this.loading=!0;try{await this.request("variable.unset",{name:this.varName.trim()})}finally{this.loading=!1}},async setValue(){const e=this.varName.trim();e?.length||this.notifyWarning("No variable name has been specified");const t=this.varValue;if(t?.length){this.loading=!0;try{const i={};i[e]=t,await this.request("variable.set",i)}finally{this.loading=!1}}else await this.clearValue();this.$refs.varName.value="",this.$refs.varValue.value="",this.$refs.modal.close()},onOpen(){this.$nextTick((()=>{this.$refs.varName.focus()}))}}},G=i(3744);const k=(0,G.Z)(_,[["render",b],["__scopeId","data-v-4e3d4a40"]]);var I=k}}]);
//# sourceMappingURL=7878.f549ed39.js.map