diff --git a/webclient/dist/js/main.js b/webclient/dist/js/main.js index 1cec367..016a81d 100644 --- a/webclient/dist/js/main.js +++ b/webclient/dist/js/main.js @@ -1,14 +1,14 @@ -(()=>{var Oe=Object.defineProperty,ke=Object.defineProperties;var Ie=Object.getOwnPropertyDescriptors;var ae=Object.getOwnPropertySymbols;var Ne=Object.prototype.hasOwnProperty,xe=Object.prototype.propertyIsEnumerable;var ne=(a,e,t)=>e in a?Oe(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,v=(a,e)=>{for(var t in e||(e={}))Ne.call(e,t)&&ne(a,t,e[t]);if(ae)for(var t of ae(e))xe.call(e,t)&&ne(a,t,e[t]);return a},se=(a,e)=>ke(a,Ie(e));var re=(a,e,t)=>new Promise((n,s)=>{var r=c=>{try{i(t.next(c))}catch(l){s(l)}},o=c=>{try{i(t.throw(c))}catch(l){s(l)}},i=c=>c.done?n(c.value):Promise.resolve(c.value).then(r,o);i((t=t.apply(a,e)).next())});var h,T,D;function Re(){h.dataset.navState="displayed",h.classList.remove("state-off"),h.classList.add("state-on"),T.classList.add("a-show")}function F(){h.dataset.navState="hidden",h.classList.remove("state-on"),h.classList.add("state-off"),T.classList.add("a-hide"),T.classList.remove("a-show"),setTimeout(()=>{T.classList.remove("a-hide")},300)}function ie(){console.log("HUD init"),h=document.querySelector(".hud .nav-toggle"),T=document.querySelector(".hud .navigation"),D=document.querySelector(".hud .reload-screen"),h==null||h.addEventListener("click",a=>{a.currentTarget.dataset.navState!="displayed"?Re():F()}),D==null||D.addEventListener("click",a=>{Screens.reload()})}var M=class{constructor(e,t,n){this.screens={},this.routesMap={},this.currentScreen=null,this.eventsHandlers={switch:[],reload:[],reinit:[],errorScreen:[]},this.screensContainer=document.querySelector(e),this.loader=document.querySelector(t),this.errorScreen=document.querySelector(n),console.log("Screens Init")}add(e,t){if(typeof t!="object")return console.error("Screens: screens must be object");if(typeof(t==null?void 0:t.alias)=="undefined")return console.error("Screens: undefined alias");if(typeof(t==null?void 0:t.renderer)!="function")return console.error("Screens: renderer must be function");this.screens[t.alias]=v({route:e},t),this.routesMap[e]=t.alias}switch(e){var n;if(this.runSwitchHandlers(e),this.hideErrorScreen(),this.showLoader(),(n=this.currentScreen)==null||n.DOMObject.remove(),typeof this.screens[e]=="undefined"){console.error(`Screens: "${e}" not found`);return}this.currentScreen=this.screens[e];let t=document.createElement("div");t.classList.add("screen"),t.id=e,t.dataset.alias=e,t.innerHTML=this.currentScreen.renderer(),this.currentScreen.DOMObject=t,this.screensContainer.append(this.currentScreen.DOMObject),this.currentScreen.initer(this)}reload(){this.currentScreen&&(this.runReloadHandlers(this.currentScreen.alias),this.switch(this.currentScreen.alias))}reinit(){this.currentScreen&&(this.currentScreen.initer(this),this.runReinitHandlers())}routing(){setInterval(()=>{let e=document.location.hash.split("#!")[1];if(typeof e=="undefined"||e=="")return;let t=typeof this.routesMap[e]=="undefined"?"not-found-screen":this.routesMap[e];(!this.currentScreen||this.currentScreen.alias!=t)&&this.switch(t)},50)}ready(){this.currentScreen!=null&&(this.currentScreen.DOMObject||(this.currentScreen.DOMObject=document.getElementsById(this.currentScreen.alias)),this.hideLoader(),this.currentScreen.DOMObject.classList.add("a-show"))}error(e,t){var n;(n=this.currentScreen)==null||n.DOMObject.remove(),this.errorScreen.querySelector(".error-title").innerHTML=e,this.errorScreen.querySelector(".error-text").innerHTML=t,this.showErrorScreen(),this.runErrorScreenHandlers()}hideLoader(){this.loader.classList.remove("a-show")}showLoader(){this.loader.classList.add("a-show")}showErrorScreen(){this.errorScreen.classList.add("a-show")}hideErrorScreen(){this.errorScreen.classList.remove("a-show")}getScreens(){return this.screens}getRoutesMap(){return this.routesMap}onSwitch(e){this.eventsHandlers.switch.push(e)}onReaload(e){this.eventsHandlers.reload.push(e)}onReinit(e){this.eventsHandlers.reinit.push(e)}onErrorScreen(e){this.eventsHandlers.errorScreen.push(e)}runSwitchHandlers(e){let t=Object.keys(this.routesMap).filter(n=>this.routesMap[n]==e);for(let n of this.eventsHandlers.switch)n(this,e,t.length?t[0]:void 0)}runReloadHandlers(e){for(let t of this.eventsHandlers.reload)t(this,e)}runReinitHandlers(){for(let e of this.eventsHandlers.reinit)e(this)}runErrorScreenHandlers(){for(let e of this.eventsHandlers.errorScreen)e(this)}};var q=class{constructor(){this.data={}}set(e,t){this.data[e]=t}get(e){return this.data[e]}setRaw(e,t){this.set("raw."+e,t)}getRaw(e){return this.get("raw."+e)}};function je(a,e,t,n){return` - - `,ot(n,(o,i)=>{let c=o.advancedSelect.value();if(!c.isOption)return;let l=Object.keys(c.option)[0];it(x,{target_id:n,place_in_area_id:l})});let r=f.querySelector(".form-container");f.querySelector("button.show-place-in-area").addEventListener("click",o=>{r.classList.contains("a-show")?(r.classList.remove("a-show"),r.classList.add("a-hide"),setTimeout(()=>r.classList.remove("a-hide"),300)):r.classList.add("a-show")}),f.querySelector("button.hide-place-in-area").addEventListener("click",o=>{V()}),f.querySelector("button.remove-parent-id").addEventListener("click",o=>{rt(n)})}var me={relay:(a,e)=>{let t="";for(let n of e.channels){let s=n.state=="off"?"OFF":"ON",r=n.state=="on"?"badge-success":"",o=e.channels.length>1?`${n.id}:`:"";t+=` - ${o}${s} - `}return`
${t}
`},button:(a,e)=>{let t={enabled:"badge-success",disabled:"",mute:"badge-primary-outline",waiting:"badge-warning",error:"badge-error"},n="";for(let s of e.channels)n+=` + `,ot(a,(o,r)=>{let c=o.advancedSelect.value();if(!c.isOption)return;let l=Object.keys(c.option)[0];rt(x,{target_id:a,place_in_area_id:l})});let i=f.querySelector(".form-container");f.querySelector("button.show-place-in-area").addEventListener("click",o=>{i.classList.contains("a-show")?(i.classList.remove("a-show"),i.classList.add("a-hide"),setTimeout(()=>i.classList.remove("a-hide"),300)):i.classList.add("a-show")}),f.querySelector("button.hide-place-in-area").addEventListener("click",o=>{V()}),f.querySelector("button.remove-parent-id").addEventListener("click",o=>{it(a)})}var me={relay:(n,e)=>{let t="";for(let a of e.channels){let s=a.state=="off"?"OFF":"ON",i=a.state=="on"?"badge-success":"",o=e.channels.length>1?`${a.id}:`:"";t+=` + ${o}${s} + `}return`
${t}
`},button:(n,e)=>{let t={enabled:"badge-success",disabled:"",mute:"badge-primary-outline",waiting:"badge-warning",error:"badge-error"},a="";for(let s of e.channels)a+=` ${s.id}:${s.indicator} - `;return`
${n}
`},sensor:(a,e)=>{let t=d=>{switch(d){case"increasing":return'';case"decreasing":return''}return""},n=e.sensors.radar.presence?`${e.sensors.radar.activity_score}${t(e.sensors.radar.activity_score_dynamics)}`:'',s=e.sensors.temperature.current+"\xB0C"+t(e.sensors.temperature.dynamics),r=e.sensors.humidity.current+"%"+t(e.sensors.humidity.dynamics),o=e.sensors.pressure.current+"hpa"+t(e.sensors.pressure.dynamics),i=e.sensors.light.percent+"%",c=e.sensors.microphone.current_noise+"dBi"+t(e.sensors.microphone.noise_dynamics);return`
${` - ${n} + `;return`
${a}
`},sensor:(n,e)=>{let t=d=>{switch(d){case"increasing":return'';case"decreasing":return''}return""},a=e.sensors.radar.presence?`${e.sensors.radar.activity_score}${t(e.sensors.radar.activity_score_dynamics)}`:'',s=e.sensors.temperature.current+"\xB0C"+t(e.sensors.temperature.dynamics),i=e.sensors.humidity.current+"%"+t(e.sensors.humidity.dynamics),o=e.sensors.pressure.current+"hpa"+t(e.sensors.pressure.dynamics),r=e.sensors.light.percent+"%",c=e.sensors.microphone.current_noise+"dBi"+t(e.sensors.microphone.noise_dynamics);return`
${` + ${a} ${s} - ${r} + ${i} ${o} - ${i} + ${r} ${c} - `}
`},hatch:(a,e)=>`
${e.hatch.state.indexOf("open")!=-1?`${e.hatch.state} - ${e.hatch.position_pct}%`:`${e.hatch.state}`}
`};function lt(a){a.addEventListener("click",e=>{e.currentTarget.deviceStateComponent.create()})}function dt(a,e,t){return typeof me[a]!="undefined"?me[a](e,t):"Unknown device type
"+JSON.stringify(t)}function y(a,e,t){let n=Helper.template.createElement("div",{class:"component device-state-component"},"");return n.deviceStateComponent={create:()=>{n.innerHTML=Helper.template.circleLoaderHTML(),a.devices.status(e,(s,r,o)=>{if(console.log("sh_api.devices.status",s,r),!r)return n.innerHTML=` + `}
`},hatch:(n,e)=>`
${e.hatch.state.indexOf("open")!=-1?`${e.hatch.state} - ${e.hatch.position_pct}%`:`${e.hatch.state}`}
`};function lt(n){n.addEventListener("click",e=>{e.currentTarget.deviceStateComponent.create()})}function dt(n,e,t){return typeof me[n]!="undefined"?me[n](e,t):"Unknown device type
"+JSON.stringify(t)}function y(n,e,t){let a=Helper.template.createElement("div",{class:"component device-state-component"},"");return a.deviceStateComponent={create:()=>{a.innerHTML=Helper.template.circleLoaderHTML(),n.devices.status(e,(s,i,o)=>{if(console.log("sh_api.devices.status",s,i),!i)return a.innerHTML=` Loading Error - `,console.error("deviceStateComponent",`DeviceID ${e}`);n.innerHTML=dt(t,r.data.device.alias,r.data.device.device_response),lt(n)})}},n.deviceStateComponent.create(),n}function ut(a,e,t){let n=[{payloadFieldName:"name",selector:".display-name",methName:"update_name",originalValue:e.name,isMultiString:!1},{payloadFieldName:"description",selector:".description",methName:"update_description",originalValue:e.description,isMultiString:!0},{payloadFieldName:"new_alias",selector:".alias",methName:"update_alias",originalValue:e.alias,isMultiString:!1}];for(let s of n){let r=editableString(t.querySelector(s.selector));r.editableString.onChange(o=>{let i={device_id:e.id};i[s.payloadFieldName]=o.value,a.devices[s.methName](i,(c,l,d)=>{var u,p,m;if(c||!l||!l.status)return console.error(`sh_api.devices.${s.methName}`,c),r.editableString.setValue(s.originalValue),Toasts.createError((u=c==null?void 0:c.message)!=null?u:"Error updating",(m=(p=c.raw)==null?void 0:p.msg)!=null?m:`Error of ${s.payloadFieldName} updating`).show();l.status==!0&&Screens.reinit()})})}}function R(a,e){return console.log(a),Modals.create("device-popup",{title:`Device ${a.name}`,body:t=>{var o;let n={area_id:"place-in-area-component-container",ip:"device-ip",state:"state-container",name:"display-name",description:"description",alias:"alias-view-container"},s=(i,c)=>{let l={ip:"{{value}}",status:d=>`${d}`,connection_status:d=>`${d}`,mac:"{{value}}",alias:' {{value}}',device_id:"{{value}}",last_contact:d=>Helper.unification.timeAgo(d),create_at:d=>Helper.unification.formatDate(d),update_at:d=>Helper.unification.formatDate(d)};return l[i]?typeof l[i]=="function"?l[i](c):l[i].replaceAll("{{value}}",c):c},r="";for(let i in a){let c=(o=n[i])!=null?o:"";r+=` + `,console.error("deviceStateComponent",`DeviceID ${e}`);a.innerHTML=dt(t,i.data.device.alias,i.data.device.device_response),lt(a)})}},a.deviceStateComponent.create(),a}function ut(n,e,t){let a=[{payloadFieldName:"name",selector:".display-name",methName:"update_name",originalValue:e.name,isMultiString:!1},{payloadFieldName:"description",selector:".description",methName:"update_description",originalValue:e.description,isMultiString:!0},{payloadFieldName:"new_alias",selector:".alias",methName:"update_alias",originalValue:e.alias,isMultiString:!1}];for(let s of a){let i=editableString(t.querySelector(s.selector));i.editableString.onChange(o=>{let r={device_id:e.id};r[s.payloadFieldName]=o.value,n.devices[s.methName](r,(c,l,d)=>{var u,p,m;if(c||!l||!l.status)return console.error(`sh_api.devices.${s.methName}`,c),i.editableString.setValue(s.originalValue),Toasts.createError((u=c==null?void 0:c.message)!=null?u:"Error updating",(m=(p=c.raw)==null?void 0:p.msg)!=null?m:`Error of ${s.payloadFieldName} updating`).show();l.status==!0&&Screens.reinit()})})}}function R(n,e){return console.log(n),Modals.create("device-popup",{title:`Device ${n.name}`,body:t=>{var o;let a={area_id:"place-in-area-component-container",ip:"device-ip",state:"state-container",name:"display-name",description:"description",alias:"alias-view-container"},s=(r,c)=>{let l={ip:"{{value}}",status:d=>`${d}`,connection_status:d=>`${d}`,mac:"{{value}}",alias:' {{value}}',device_id:"{{value}}",last_contact:d=>Helper.unification.timeAgo(d),create_at:d=>Helper.unification.formatDate(d),update_at:d=>Helper.unification.formatDate(d)};return l[r]?typeof l[r]=="function"?l[r](c):l[r].replaceAll("{{value}}",c):c},i="";for(let r in n){let c=(o=a[r])!=null?o:"";i+=` - ${i}: - ${s(i,a[i])} + ${r}: + ${s(r,n[r])} `}return`
- ${r} + ${i}
- `},actions:t=>{let n=Helper.template.createElement("button",{class:"btn btn-primary"},"Close"),s=Helper.template.createElement("button",{class:"btn btn-warning with-icon"},' Reboot'),r=Helper.template.createElement("button",{class:"btn btn-danger with-icon"},' Remove'),o=Helper.template.createElement("button",{class:"btn btn-secondary with-icon"},' ReSetup'),i=Helper.template.createElement("button",{class:"btn btn-danger with-icon"},' Reset');return n.addEventListener("click",c=>{t.close()}),s.dataset.deviceId=a.id,s.dataset.deviceName=a.name,s.dataset.deviceAlias=a.alias,s.addEventListener("click",c=>{s.getAttribute("disabled")||_(e,c.currentTarget,t)}),r.addEventListener("click",c=>{r.getAttribute("disabled")||(Helper.states.btnLoadingState(r,!0),confirmPopup("Are you sure you want to remove this device?",()=>{e.devices.remove(a.id,(l,d,u)=>{Helper.states.btnLoadingState(r,!1),console.log("Was removed"),t.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Removed",` - Device: ${a.name}
- Alias: ${a.alias}
- IP: ${a.ip} - `).show()},300)})},()=>{Helper.states.btnLoadingState(r,!1),console.log("CANCELED")}))}),o.dataset.deviceId=a.id,o.addEventListener("click",c=>{let l=o.dataset.deviceId;Helper.states.btnLoadingState(o,!0),confirmPopup("Are you sure you want to repeat setup device?",()=>{e.devices.resetup({device_id:l},(d,u,p)=>{Helper.states.btnLoadingState(o,!1),t.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Success",` - Device Id: ${a.name}
- Alias: ${a.alias} - `).show()},300)})},()=>{Helper.states.btnLoadingState(o,!1),console.log("CANCELED")})}),i.dataset.deviceId=a.id,i.addEventListener("click",c=>{let l=i.dataset.deviceId;Helper.states.btnLoadingState(i,!0),confirmPopup("Are you sure you want to RESET device?",()=>{e.devices.reset({device_id:l},(d,u,p)=>{Helper.states.btnLoadingState(i,!1),t.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Success",`Device Id: ${a.name}
- Alias: ${a.alias}`).show()},300)})},()=>{Helper.states.btnLoadingState(i,!1)})}),[n,o,s,i,r]},onready:t=>{L(e,t.querySelector(".place-in-area-component-container"),"device",a.id,a.area_id),t.querySelector(".state-container").append(y(e,a.id,a.type)),ut(e,a,t)}})}function pt(a){let e=[];for(let t of a.devices)t=Helper.unification.deviceFieldsUnification(t),e.push({deviceName:t.name,alias:t.alias,connectionStatus:Helper.template.connectionStatusBadge(t.connection_status),state:`
{let a=Helper.template.createElement("button",{class:"btn btn-primary"},"Close"),s=Helper.template.createElement("button",{class:"btn btn-warning with-icon"},' Reboot'),i=Helper.template.createElement("button",{class:"btn btn-danger with-icon"},' Remove'),o=Helper.template.createElement("button",{class:"btn btn-secondary with-icon"},' ReSetup'),r=Helper.template.createElement("button",{class:"btn btn-danger with-icon"},' Reset');return a.addEventListener("click",c=>{t.close()}),s.dataset.deviceId=n.id,s.dataset.deviceName=n.name,s.dataset.deviceAlias=n.alias,s.addEventListener("click",c=>{s.getAttribute("disabled")||w(e,c.currentTarget,t)}),i.addEventListener("click",c=>{i.getAttribute("disabled")||(Helper.states.btnLoadingState(i,!0),confirmPopup("Are you sure you want to remove this device?",()=>{e.devices.remove(n.id,(l,d,u)=>{Helper.states.btnLoadingState(i,!1),console.log("Was removed"),t.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Removed",` + Device: ${n.name}
+ Alias: ${n.alias}
+ IP: ${n.ip} + `).show()},300)})},()=>{Helper.states.btnLoadingState(i,!1),console.log("CANCELED")}))}),o.dataset.deviceId=n.id,o.addEventListener("click",c=>{let l=o.dataset.deviceId;Helper.states.btnLoadingState(o,!0),confirmPopup("Are you sure you want to repeat setup device?",()=>{e.devices.resetup({device_id:l},(d,u,p)=>{Helper.states.btnLoadingState(o,!1),t.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Success",` + Device Id: ${n.name}
+ Alias: ${n.alias} + `).show()},300)})},()=>{Helper.states.btnLoadingState(o,!1),console.log("CANCELED")})}),r.dataset.deviceId=n.id,r.addEventListener("click",c=>{let l=r.dataset.deviceId;Helper.states.btnLoadingState(r,!0),confirmPopup("Are you sure you want to RESET device?",()=>{e.devices.reset({device_id:l},(d,u,p)=>{Helper.states.btnLoadingState(r,!1),t.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Success",`Device Id: ${n.name}
+ Alias: ${n.alias}`).show()},300)})},()=>{Helper.states.btnLoadingState(r,!1)})}),[a,o,s,r,i]},onready:t=>{L(e,t.querySelector(".place-in-area-component-container"),"device",n.id,n.area_id),t.querySelector(".state-container").append(y(e,n.id,n.type)),ut(e,n,t)}})}function pt(n){let e=[];for(let t of n.devices)t=Helper.unification.deviceFieldsUnification(t),e.push({deviceName:t.name,alias:t.alias,connectionStatus:Helper.template.connectionStatusBadge(t.connection_status),state:`
Reboot
- `});return e}function mt(a,e,t){a.currentScreen.DOMObject.querySelector(".main-container").innerHTML=Helper.template.table("Devices list",{deviceName:"Device name",connectionStatus:"Connect",state:"State",ip:"IP",actions:"Actions"},e,`Total: ${t} devices`)}function ft(a,e){a.currentScreen.DOMObject.querySelectorAll(".reboot-btn").forEach(t=>{t.addEventListener("click",n=>{n.currentTarget.getAttribute("disabled")||_(e,n.currentTarget)})}),a.currentScreen.DOMObject.querySelectorAll(".details-btn").forEach(t=>{t.addEventListener("click",n=>{let s=v({state:""},JSON.parse(n.currentTarget.dataset.device));R(s,e).show()})})}function fe(a){return{alias:"devices",renderer:()=>Helper.template.mainTemplate(N("devices")),initer:e=>{try{a.devices.list((t,n,s)=>{if(t||!n||s.status_code!=200)throw"Err";mt(e,pt(n.data),n.data.total),ft(e,a),e.currentScreen.DOMObject.querySelectorAll(".device-state-container").forEach(r=>{r.append(y(a,r.dataset.deviceId,r.dataset.deviceType))}),e.ready()})}catch(t){return console.error("sh_api.devices.list",t),e.error("Server API ERROR","")}}}}function be(a,e){return a=Helper.unification.deviceFieldsUnification(a),Modals.create("device-setup",{title:`Setup new device ${a.ip}`,body:t=>{let n="";for(let r in a)r[0]!="_"&&(n+=` + `});return e}function mt(n,e,t){n.currentScreen.DOMObject.querySelector(".main-container").innerHTML=Helper.template.table("Devices list",{deviceName:"Device name",connectionStatus:"Connect",state:"State",ip:"IP",actions:"Actions"},e,`Total: ${t} devices`)}function ft(n,e){n.currentScreen.DOMObject.querySelectorAll(".reboot-btn").forEach(t=>{t.addEventListener("click",a=>{a.currentTarget.getAttribute("disabled")||w(e,a.currentTarget)})}),n.currentScreen.DOMObject.querySelectorAll(".details-btn").forEach(t=>{t.addEventListener("click",a=>{let s=v({state:""},JSON.parse(a.currentTarget.dataset.device));R(s,e).show()})})}function fe(n){return{alias:"devices",renderer:()=>Helper.template.mainTemplate(N("devices")),initer:e=>{try{n.devices.list((t,a,s)=>{if(t||!a||s.status_code!=200)throw"Err";mt(e,pt(a.data),a.data.total),ft(e,n),e.currentScreen.DOMObject.querySelectorAll(".device-state-container").forEach(i=>{i.append(y(n,i.dataset.deviceId,i.dataset.deviceType))}),e.ready()})}catch(t){return console.error("sh_api.devices.list",t),e.error("Server API ERROR","")}}}}function be(n,e){return n=Helper.unification.deviceFieldsUnification(n),Modals.create("device-setup",{title:`Setup new device ${n.ip}`,body:t=>{let a="";for(let i in n)i[0]!="_"&&(a+=` - ${r}: - ${a[r]} + ${i}: + ${n[i]} `);return`
@@ -140,7 +140,7 @@
- ${n} + ${a}
@@ -175,21 +175,21 @@
- `},actions:t=>{let n=Helper.template.createElement("button",{class:"btn btn-primary"},"Cancel");n.addEventListener("click",r=>{t.close()});let s=Helper.template.createElement("button",{class:"btn btn-success with-icon"},' Setup');return s.addEventListener("click",r=>{if(r.currentTarget.getAttribute("disabled"))return!1;let o={device_ip:a.ip},i=document.querySelector("#device-setup .setup-form");if(i.querySelectorAll("input[type='text']").forEach(d=>{d.dispatchEvent(new Event("input",{bubbles:!0}))}),i.querySelectorAll(".label.error").length)return!1;let c=i.querySelectorAll("input"),l=i.querySelector("textarea");for(let d of c)o[d.getAttribute("name")]=d.value;o[l.getAttribute("name")]=l.value,Helper.states.btnLoadingState(s,!0),e.devices.setup_new_device(o,(d,u,p)=>{var m,g;if(Helper.states.btnLoadingState(s,!1),(d==null?void 0:d.type)=="api_error"){if(console.error("ERR! sh_api.devices.setup_new_device",d.raw),(m=d.raw)!=null&&m.failed_fields)for(let b of d.raw.failed_fields)t.querySelector(`[name="${b}"]`).parentNode.classList.add("error");if((g=d.raw)!=null&&g.msg){let b=t.querySelector(".setup-form .alert-container");b.innerHTML="",b==null||b.append(Helper.template.createAlert("error",d.raw.msg))}return!1}if(!u)return!1;c.forEach(b=>b.value=""),l.value="",t.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Setup successful",`Added new device ID ${a.device_id}`).show()},300)})}),[n,s]},onready:t=>{t.querySelector(".setup-form").querySelectorAll("input").forEach(s=>{s.addEventListener("input",r=>{var o;r.currentTarget.value.length?(r.currentTarget.parentNode.classList.remove("error"),(o=r.currentTarget.parentNode.parentNode.querySelector(".input-info.error"))==null||o.remove()):(r.currentTarget.parentNode.classList.add("error"),r.currentTarget.parentNode.parentNode.querySelector(".input-info.error")||r.currentTarget.parentNode.parentNode.append(Helper.template.createElement("div",{class:"input-info error"},' Field cannot be empty')))})})}})}function bt(a){let e=[];for(let t of a.devices)t=Helper.unification.deviceFieldsUnification(t),e.push({deviceId:t.device_id,deviceName:t.name,deviceType:t.type,status:`${t.status}`,ip:`${t.ip}`,mac:`${t.mac}`,wifiSignal:t.wifi_signal,actions:t.status=="setup"?` + `},actions:t=>{let a=Helper.template.createElement("button",{class:"btn btn-primary"},"Cancel");a.addEventListener("click",i=>{t.close()});let s=Helper.template.createElement("button",{class:"btn btn-success with-icon"},' Setup');return s.addEventListener("click",i=>{if(i.currentTarget.getAttribute("disabled"))return!1;let o={device_ip:n.ip},r=document.querySelector("#device-setup .setup-form");if(r.querySelectorAll("input[type='text']").forEach(d=>{d.dispatchEvent(new Event("input",{bubbles:!0}))}),r.querySelectorAll(".label.error").length)return!1;let c=r.querySelectorAll("input"),l=r.querySelector("textarea");for(let d of c)o[d.getAttribute("name")]=d.value;o[l.getAttribute("name")]=l.value,Helper.states.btnLoadingState(s,!0),e.devices.setup_new_device(o,(d,u,p)=>{var m,g;if(Helper.states.btnLoadingState(s,!1),(d==null?void 0:d.type)=="api_error"){if(console.error("ERR! sh_api.devices.setup_new_device",d.raw),(m=d.raw)!=null&&m.failed_fields)for(let b of d.raw.failed_fields)t.querySelector(`[name="${b}"]`).parentNode.classList.add("error");if((g=d.raw)!=null&&g.msg){let b=t.querySelector(".setup-form .alert-container");b.innerHTML="",b==null||b.append(Helper.template.createAlert("error",d.raw.msg))}return!1}if(!u)return!1;c.forEach(b=>b.value=""),l.value="",t.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Setup successful",`Added new device ID ${n.device_id}`).show()},300)})}),[a,s]},onready:t=>{t.querySelector(".setup-form").querySelectorAll("input").forEach(s=>{s.addEventListener("input",i=>{var o;i.currentTarget.value.length?(i.currentTarget.parentNode.classList.remove("error"),(o=i.currentTarget.parentNode.parentNode.querySelector(".input-info.error"))==null||o.remove()):(i.currentTarget.parentNode.classList.add("error"),i.currentTarget.parentNode.parentNode.querySelector(".input-info.error")||i.currentTarget.parentNode.parentNode.append(Helper.template.createElement("div",{class:"input-info error"},' Field cannot be empty')))})})}})}function bt(n){let e=[];for(let t of n.devices)t=Helper.unification.deviceFieldsUnification(t),e.push({deviceId:t.device_id,deviceName:t.name,deviceType:t.type,status:`${t.status}`,ip:`${t.ip}`,mac:`${t.mac}`,wifiSignal:t.wifi_signal,actions:t.status=="setup"?` - `:""});return e}function vt(a,e,t){a.currentScreen.DOMObject.querySelector(".main-container").innerHTML=Helper.template.table("Found devices",{deviceId:"Device ID",deviceName:"Device name",deviceType:"Type",status:"Status",ip:"IP",mac:"Mac",wifiSignal:"Signal",actions:"Actions"},e,`Total: ${t} devices`)}function ht(a,e){a.currentScreen.DOMObject.querySelectorAll(".setup-btn").forEach(t=>{t.addEventListener("click",n=>{let s=JSON.parse(n.currentTarget.dataset.device);be(s,e).show()})})}function ve(a){return{alias:"devices-scanning",renderer:()=>Helper.template.mainTemplate(N("scanning")),initer:e=>{a.devices.scanning_all((t,n,s)=>{if(console.log("sh_api.devices.scanning_all",t,n),s.status_code!=200)return e.error("Server API ERROR","");vt(e,bt(n.data),n.data.devices.length),ht(e,a),e.ready()})}}}var J={list:fe,scanning:ve};function $(a){return Helper.template.sidebarNav([{content:' Scopes',route:"/#!/scripts/scopes",is_active:a=="scopes"},{content:' Actions',route:"/#!/scripts/actions",is_active:a=="actions"},{content:' Regular',route:"/#!/scripts/regular",is_active:a=="regular"}])}function W(a,e,t){a.scripts.run({alias:e,params:{}},(n,s,r)=>{s?(t(!0),setTimeout(()=>Screens.reinit(),1e3),setTimeout(()=>Toasts.createSuccess(`${e} running`,`${e} running success`).show(),300)):(t(!1),setTimeout(()=>Toasts.createError(`${e} failed`,`${e} running failed`).show(),300))})}function Y(a){return` + `:""});return e}function vt(n,e,t){n.currentScreen.DOMObject.querySelector(".main-container").innerHTML=Helper.template.table("Found devices",{deviceId:"Device ID",deviceName:"Device name",deviceType:"Type",status:"Status",ip:"IP",mac:"Mac",wifiSignal:"Signal",actions:"Actions"},e,`Total: ${t} devices`)}function ht(n,e){n.currentScreen.DOMObject.querySelectorAll(".setup-btn").forEach(t=>{t.addEventListener("click",a=>{let s=JSON.parse(a.currentTarget.dataset.device);be(s,e).show()})})}function ve(n){return{alias:"devices-scanning",renderer:()=>Helper.template.mainTemplate(N("scanning")),initer:e=>{n.devices.scanning_all((t,a,s)=>{if(console.log("sh_api.devices.scanning_all",t,a),s.status_code!=200)return e.error("Server API ERROR","");vt(e,bt(a.data),a.data.devices.length),ht(e,n),e.ready()})}}}var J={list:fe,scanning:ve};function $(n){return Helper.template.sidebarNav([{content:' Scopes',route:"/#!/scripts/scopes",is_active:n=="scopes"},{content:' Actions',route:"/#!/scripts/actions",is_active:n=="actions"},{content:' Regular',route:"/#!/scripts/regular",is_active:n=="regular"}])}function W(n,e,t){n.scripts.run({alias:e,params:{}},(a,s,i)=>{s?(t(!0),setTimeout(()=>Screens.reinit(),1e3),setTimeout(()=>Toasts.createSuccess(`${e} running`,`${e} running success`).show(),300)):(t(!1),setTimeout(()=>Toasts.createError(`${e} failed`,`${e} running failed`).show(),300))})}function Y(n){return`
- ${a.name} + ${n.name} @@ -198,14 +198,14 @@
- ${a.icon} + ${n.icon}
-
${a.description}
+
${n.description}
- `}function G(a,e){e.querySelector(".card-content").addEventListener("click",t=>{if(e.getAttribute("disabled"))return;Helper.states.cardScriptActionLoadingState(e,!0);let n=e.dataset.alias;W(a,n,s=>{Helper.states.cardScriptActionLoadingState(e,!1),s&&(e.classList.add("card-success"),setTimeout(()=>e.classList.remove("card-success"),1e3))})})}function he(a,e){let t=document.createElement("div");t.innerHTML=Y(e);let n=t.querySelector(".card");return G(a,n),n}function gt(a){let e=[];for(let t of a.scopes){let n=t.state=="disabled"?``;e.push({name:t.name,filename:`${t.filename}
${t.path}`,state:Helper.template.toogleStateBadge(t.state),actions:` - ${n} - `})}return e}function St(a,e,t){a.currentScreen.DOMObject.querySelector(".main-container").innerHTML=Helper.template.table("Scopes list",{name:"Scope name",filename:"Filename",state:"State",actions:"Actions"},e,`Total: ${t} scopes`)}function yt(a,e){a.currentScreen.DOMObject.querySelectorAll(".change-state-btn").forEach(t=>{t.addEventListener("click",n=>{let s=n.currentTarget;if(s.getAttribute("disabled"))return;let r=s.dataset.value=="enable"?"scope_enable":"scope_disable",o=JSON.parse(s.dataset.scope);Helper.states.btnLoadingState(s,!0),e.scripts[r](o.name,(i,c,l)=>{Helper.states.btnLoadingState(s,!1),c?(setTimeout(()=>Screens.reinit(),250),Toasts.createSuccess("Request Success",`State of ${o.name} was changed`).show()):Toasts.createError("Request failed","Scope state not changed").show()})})})}function ge(a){return{title:"Scripts Scopes",alias:"scripts-scopes",renderer:()=>Helper.template.mainTemplate($("scopes")),initer:e=>{a.scripts.scopes_list((t,n,s)=>{if(console.log("sh_api.scripts.scopes_list",t,n,s),s.status_code!=200)return e.error("Server API ERROR","");St(e,gt(n.data),n.data.total),yt(e,a),e.ready()})}}}function _t(a){let e=[];for(let t of a.scripts){let n=t.state=="disabled"?``;e.push({alias:`${t.alias}
by ${t.created_by}`,name:`${t.name}
${t.description}
`,filename:`${t.filename}
${t.path}`,state:Helper.template.toogleStateBadge(t.state),actions:` - ${n} - `})}return e}function wt(a,e,t){let n={};for(let s in e)n[e[s].alias]=e[s],e[s].code="";a.currentScreen.DOMObject.provideSciptsData=n,a.currentScreen.DOMObject.querySelector(".main-container").innerHTML=Helper.template.table("Regular scripts list",{alias:"Alias",name:"Script name",filename:"Filename",state:"State",actions:"Actions"},e,`Total: ${t} scripts`)}function Lt(a,e){a.currentScreen.DOMObject.querySelectorAll(".change-state-btn").forEach(t=>{t.addEventListener("click",n=>{var i;let s=n.currentTarget;if(s.getAttribute("disabled"))return;let r=s.dataset.value=="enable"?"regular_enable":"regular_disable",o=(i=a.currentScreen.DOMObject.provideSciptsData[s.dataset.alias])!=null?i:{alias:s.dataset.alias};Helper.states.btnLoadingState(s,!0),e.scripts[r](o.alias,(c,l,d)=>{Helper.states.btnLoadingState(s,!1),l?(setTimeout(()=>Screens.reinit(),250),Toasts.createSuccess("Request Success",`State of ${o.alias} was changed`).show()):Toasts.createError("Request failed","Regular script state not changed").show()})})})}function Se(a){return{title:"Scripts Regular",alias:"scripts-regular",renderer:()=>Helper.template.mainTemplate($("regular")),initer:e=>{a.scripts.regular_list((t,n,s)=>{if(console.log("sh_api.scripts.regular_list",t,n,s),s.status_code!=200)return e.error("Server API ERROR","");wt(e,_t(n.data),n.data.total),Lt(e,a),e.ready()})}}}function ye(a,e){return console.log("actionDetailsPopup",a),Modals.create("action-script-popup",{title:`${a.name}`,body:t=>{let n=a.area_id!=-1?'
':"";return` + ${a} + `})}return e}function _t(n,e,t){let a={};for(let s in e)a[e[s].alias]=e[s],e[s].code="";n.currentScreen.DOMObject.provideSciptsData=a,n.currentScreen.DOMObject.querySelector(".main-container").innerHTML=Helper.template.table("Regular scripts list",{alias:"Alias",name:"Script name",filename:"Filename",state:"State",actions:"Actions"},e,`Total: ${t} scripts`)}function Lt(n,e){n.currentScreen.DOMObject.querySelectorAll(".change-state-btn").forEach(t=>{t.addEventListener("click",a=>{var r;let s=a.currentTarget;if(s.getAttribute("disabled"))return;let i=s.dataset.value=="enable"?"regular_enable":"regular_disable",o=(r=n.currentScreen.DOMObject.provideSciptsData[s.dataset.alias])!=null?r:{alias:s.dataset.alias};Helper.states.btnLoadingState(s,!0),e.scripts[i](o.alias,(c,l,d)=>{Helper.states.btnLoadingState(s,!1),l?(setTimeout(()=>Screens.reinit(),250),Toasts.createSuccess("Request Success",`State of ${o.alias} was changed`).show()):Toasts.createError("Request failed","Regular script state not changed").show()})})})}function Se(n){return{title:"Scripts Regular",alias:"scripts-regular",renderer:()=>Helper.template.mainTemplate($("regular")),initer:e=>{n.scripts.regular_list((t,a,s)=>{if(console.log("sh_api.scripts.regular_list",t,a,s),s.status_code!=200)return e.error("Server API ERROR","");_t(e,wt(a.data),a.data.total),Lt(e,n),e.ready()})}}}function ye(n,e){return console.log("actionDetailsPopup",n),Modals.create("action-script-popup",{title:`${n.name}`,body:t=>{let a=n.area_id!=-1?'
':"";return`
-

${a.alias}

-
${a.description}
-
${Helper.template.toogleStateBadge(a.state)}
- ${n} -
${a.filename}
-
By ${a.author}
+

${n.alias}

+
${n.description}
+
${Helper.template.toogleStateBadge(n.state)}
+ ${a} +
${n.filename}
+
By ${n.author}
-
${a.code}
+
${n.code}
- `},actions:t=>{let n=Helper.template.createElement("button",{class:"btn btn-primary"},"Close"),s=Helper.template.createElement("button",{class:a.state=="enabled"?"btn btn-warning":"btn btn-success","data-value":a.state=="enabled"?"disable":"enable"},a.state=="enabled"?"Disable":"Enable"),r=Helper.template.createElement("button",{class:"btn btn-secondary with-icon"},' Run');return n.addEventListener("click",o=>{t.close()}),s.addEventListener("click",o=>{let i=o.currentTarget;if(i.getAttribute("disabled"))return;let c=i.dataset.value=="enable"?"action_enable":"action_disable";Helper.states.btnLoadingState(i,!0),e.scripts[c](a.alias,(l,d,u)=>{Helper.states.btnLoadingState(i,!1),t.close(),d?(setTimeout(()=>Screens.reinit(),250),Toasts.createSuccess("Request Success",`State of ${a.alias} was changed`).show()):Toasts.createError("Request failed","Regular script state not changed").show()})}),r.addEventListener("click",o=>{let i=o.currentTarget;Helper.states.btnLoadingState(i,!0),W(e,a.alias,c=>{Helper.states.btnLoadingState(i,!1),c&&t.close()})}),[n,s,r]},onready:t=>{L(e,t.querySelector(".place-in-area-component-container"),"action",a.id,a.area_id),hljs.highlightElement(t.querySelector(".code-viewer"))}})}function K(a){var t,n,s;let e=[];for(let r of a.scripts)e.push({alias:r.alias,author:r.created_by,name:r.name,icon:(t=r.icon)!=null?t:'',description:r.description,filename:`${r.filename}
${r.path}`,state:r.state,code:r.code,id:(n=r.id)!=null?n:0,area_id:(s=r.area_id)!=null?s:-1});return e}function $t(a,e,t){let n='
',s={};for(let o of e)s[o.alias]=o,n+=Y(o);n+="
";let r=a.currentScreen.DOMObject.querySelector(".main-container");r.innerHTML=n,a.currentScreen.DOMObject.provideSciptsData=s}function Et(a,e){a.currentScreen.DOMObject.querySelectorAll(".script-action").forEach(t=>{G(e,t)}),a.currentScreen.DOMObject.querySelectorAll(".action-details-btn").forEach(t=>{t.addEventListener("click",n=>{var o;let s=n.currentTarget,r=(o=a.currentScreen.DOMObject.provideSciptsData[s.dataset.alias])!=null?o:{};console.log("SCRIPT",r),ye(r,e).show()})})}function _e(a){return{title:"Scripts Actions",alias:"scripts-actions",renderer:()=>Helper.template.mainTemplate($("actions")),initer:e=>{a.scripts.actions_list((t,n,s)=>{if(console.log("sh_api.scripts.actions_list",t,n,s),s.status_code!=200)return e.error("Server API ERROR","");$t(e,K(n.data),n.data.total),Et(e,a),e.ready()})}}}var j={scopes:ge,regular:Se,actions:_e};function we(a){return Helper.template.sidebarNav([{content:' Areas Tree',route:"/#!/areas/tree",is_active:a=="areas-tree"}])}function Le(a,e){return console.log("areaDevicesModal",a),Modals.create("area-devices-modal",{title:` ${a.display_name}`,body:t=>` + `},actions:t=>{let a=Helper.template.createElement("button",{class:"btn btn-primary"},"Close"),s=Helper.template.createElement("button",{class:n.state=="enabled"?"btn btn-warning":"btn btn-success","data-value":n.state=="enabled"?"disable":"enable"},n.state=="enabled"?"Disable":"Enable"),i=Helper.template.createElement("button",{class:"btn btn-secondary with-icon"},' Run');return a.addEventListener("click",o=>{t.close()}),s.addEventListener("click",o=>{let r=o.currentTarget;if(r.getAttribute("disabled"))return;let c=r.dataset.value=="enable"?"action_enable":"action_disable";Helper.states.btnLoadingState(r,!0),e.scripts[c](n.alias,(l,d,u)=>{Helper.states.btnLoadingState(r,!1),t.close(),d?(setTimeout(()=>Screens.reinit(),250),Toasts.createSuccess("Request Success",`State of ${n.alias} was changed`).show()):Toasts.createError("Request failed","Regular script state not changed").show()})}),i.addEventListener("click",o=>{let r=o.currentTarget;Helper.states.btnLoadingState(r,!0),W(e,n.alias,c=>{Helper.states.btnLoadingState(r,!1),c&&t.close()})}),[a,s,i]},onready:t=>{L(e,t.querySelector(".place-in-area-component-container"),"action",n.id,n.area_id),hljs.highlightElement(t.querySelector(".code-viewer"))}})}function K(n){var t,a,s;let e=[];for(let i of n.scripts)e.push({alias:i.alias,author:i.created_by,name:i.name,icon:(t=i.icon)!=null?t:'',description:i.description,filename:`${i.filename}
${i.path}`,state:i.state,code:i.code,id:(a=i.id)!=null?a:0,area_id:(s=i.area_id)!=null?s:-1});return e}function $t(n,e,t){let a='
',s={};for(let o of e)s[o.alias]=o,a+=Y(o);a+="
";let i=n.currentScreen.DOMObject.querySelector(".main-container");i.innerHTML=a,n.currentScreen.DOMObject.provideSciptsData=s}function Et(n,e){n.currentScreen.DOMObject.querySelectorAll(".script-action").forEach(t=>{G(e,t)}),n.currentScreen.DOMObject.querySelectorAll(".action-details-btn").forEach(t=>{t.addEventListener("click",a=>{var o;let s=a.currentTarget,i=(o=n.currentScreen.DOMObject.provideSciptsData[s.dataset.alias])!=null?o:{};console.log("SCRIPT",i),ye(i,e).show()})})}function we(n){return{title:"Scripts Actions",alias:"scripts-actions",renderer:()=>Helper.template.mainTemplate($("actions")),initer:e=>{n.scripts.actions_list((t,a,s)=>{if(console.log("sh_api.scripts.actions_list",t,a,s),s.status_code!=200)return e.error("Server API ERROR","");$t(e,K(a.data),a.data.total),Et(e,n),e.ready()})}}}var j={scopes:ge,regular:Se,actions:we};function _e(n){return Helper.template.sidebarNav([{content:' Areas Tree',route:"/#!/areas/tree",is_active:n=="areas-tree"}])}function Le(n,e){return console.log("areaDevicesModal",n),Modals.create("area-devices-modal",{title:` ${n.display_name}`,body:t=>`
- `,actions:t=>{let n=Helper.template.createElement("button",{class:"btn btn-primary"},"Close"),s=Helper.template.createElement("button",{class:"btn btn-warning with-icon btn-reboot-all"},' Reboot All');return n.addEventListener("click",r=>{t.close()}),s.addEventListener("click",r=>{s.getAttribute("disabled")||(Helper.states.btnLoadingState(s,!0),confirmPopup(`Are you sure you want to reboot all devices from ${a.display_name}?`,()=>{e.areas.reboot_devices(a.id,(o,i,c)=>{Helper.states.btnLoadingState(s,!1),i?(console.log("Was rebooted all devices"),Toasts.createSuccess("Rebooted all devices",`Area: ${a.display_name}`).show()):Toasts.createDanger("Rebooted fail",`Area: ${a.display_name}`).show()})},()=>{Helper.states.btnLoadingState(s,!1),console.log("CANCELED")}))}),[n,s]},onready:t=>{let n=t.querySelector(".devices-container"),s=t.querySelector(".loader");e.areas.devices(a.id,(r,o,i)=>{console.log("sh_api.areas.devices",o);function c(d){if(!d)return[];let u=[];for(let p of d.devices)p=Helper.unification.deviceFieldsUnification(p),u.push({deviceNaming:` + `,actions:t=>{let a=Helper.template.createElement("button",{class:"btn btn-primary"},"Close"),s=Helper.template.createElement("button",{class:"btn btn-warning with-icon btn-reboot-all"},' Reboot All');return a.addEventListener("click",i=>{t.close()}),s.addEventListener("click",i=>{s.getAttribute("disabled")||(Helper.states.btnLoadingState(s,!0),confirmPopup(`Are you sure you want to reboot all devices from ${n.display_name}?`,()=>{e.areas.reboot_devices(n.id,(o,r,c)=>{Helper.states.btnLoadingState(s,!1),r?(console.log("Was rebooted all devices"),Toasts.createSuccess("Rebooted all devices",`Area: ${n.display_name}`).show()):Toasts.createDanger("Rebooted fail",`Area: ${n.display_name}`).show()})},()=>{Helper.states.btnLoadingState(s,!1),console.log("CANCELED")}))}),[a,s]},onready:t=>{let a=t.querySelector(".devices-container"),s=t.querySelector(".loader");e.areas.devices(n.id,(i,o,r)=>{console.log("sh_api.areas.devices",o);function c(d){if(!d)return[];let u=[];for(let p of d.devices)p=Helper.unification.deviceFieldsUnification(p),u.push({deviceNaming:`
${p.name}
${p.alias}
`,status:Helper.template.connectionStatusBadge(p.connection_status),state:`
Reboot
- `});return u}let l=c(o==null?void 0:o.data);l.length?n.innerHTML=Helper.template.table("",{deviceNaming:"Device",status:"Status",state:"State",actions:"Actions"},l,`Total: ${l.length} devices`):(n.innerHTML=Helper.template.emptyHereHTML(),t.querySelector(".btn-reboot-all").remove()),n.querySelectorAll(".reboot-btn").forEach(d=>{d.addEventListener("click",u=>{d.getAttribute("disabled")||_(e,u.currentTarget,t)})}),n.querySelectorAll(".device-state-container").forEach(d=>{d.append(y(e,d.dataset.deviceId,d.dataset.deviceType))}),n.querySelectorAll(".details-btn").forEach(d=>{d.addEventListener("click",u=>{let p=v({status:""},JSON.parse(u.currentTarget.dataset.device));R(p,e).show()})}),s.remove(),console.log("devices",l)})}})}function $e(a,e){return console.log("areaActionsModal",a),Modals.create("area-actions-modal",{title:` ${a.display_name}`,body:t=>` + `});return u}let l=c(o==null?void 0:o.data);l.length?a.innerHTML=Helper.template.table("",{deviceNaming:"Device",status:"Status",state:"State",actions:"Actions"},l,`Total: ${l.length} devices`):(a.innerHTML=Helper.template.emptyHereHTML(),t.querySelector(".btn-reboot-all").remove()),a.querySelectorAll(".reboot-btn").forEach(d=>{d.addEventListener("click",u=>{d.getAttribute("disabled")||w(e,u.currentTarget,t)})}),a.querySelectorAll(".device-state-container").forEach(d=>{d.append(y(e,d.dataset.deviceId,d.dataset.deviceType))}),a.querySelectorAll(".details-btn").forEach(d=>{d.addEventListener("click",u=>{let p=v({status:""},JSON.parse(u.currentTarget.dataset.device));R(p,e).show()})}),s.remove(),console.log("devices",l)})}})}function $e(n,e){return console.log("areaActionsModal",n),Modals.create("area-actions-modal",{title:` ${n.display_name}`,body:t=>`
- `,actions:t=>{let n=Helper.template.createElement("button",{class:"btn btn-primary"},"Close");return n.addEventListener("click",s=>{t.close()}),[n]},onready:t=>{let n=t.querySelector(".actions-container"),s=t.querySelector(".loader");e.areas.scripts(a.id,(r,o,i)=>{if(console.log("sh_api.areas.scripts",r,o,i),!o)return Toasts.createDanger("Loading failed",`Area: ${a.display_name}`).show();let c=K(o.data);console.log("ACTIONS",c),n.innerHTML="",c.length||(n.innerHTML=Helper.template.emptyHereHTML()),s.remove();for(let l of c)n.append(he(e,l))})}})}function Ee(a){return console.log("createNewAreaModal"),Modals.create("create-area-modal",{title:' Create new Area',body:e=>` + `,actions:t=>{let a=Helper.template.createElement("button",{class:"btn btn-primary"},"Close");return a.addEventListener("click",s=>{t.close()}),[a]},onready:t=>{let a=t.querySelector(".actions-container"),s=t.querySelector(".loader");e.areas.scripts(n.id,(i,o,r)=>{if(console.log("sh_api.areas.scripts",i,o,r),!o)return Toasts.createDanger("Loading failed",`Area: ${n.display_name}`).show();let c=K(o.data);console.log("ACTIONS",c),a.innerHTML="",c.length||(a.innerHTML=Helper.template.emptyHereHTML()),s.remove();for(let l of c)a.append(he(e,l))})}})}function Ee(n){return console.log("createNewAreaModal"),Modals.create("create-area-modal",{title:' Create new Area',body:e=>`
- `,actions:e=>{let t=Helper.template.createElement("button",{class:"btn btn-primary"},"Close"),n=Helper.template.createElement("button",{class:"btn btn-success with-icon"},' Create');return t.addEventListener("click",s=>{e.close()}),n.addEventListener("click",s=>{let r=e.querySelector(".create-area-form");if(r.querySelectorAll("input[type='text']").forEach(c=>{c.dispatchEvent(new Event("input",{bubbles:!0}))}),r.querySelectorAll(".label.error").length)return!1;let o=r.querySelectorAll("input"),i={};for(let c of o)i[c.getAttribute("name")]=c.value;Helper.states.btnLoadingState(n,!0),a.areas.new_area(i,(c,l,d)=>{var u,p;if(Helper.states.btnLoadingState(n,!1),(c==null?void 0:c.type)=="api_error"){if(console.error("ERR! sh_api.areas.new_area",c.raw),(u=c.raw)!=null&&u.failed_fields)for(let m of c.raw.failed_fields)e.querySelector(`[name="${m}"]`).parentNode.classList.add("error");if((p=c.raw)!=null&&p.msg){let m=e.querySelector(".alert-container");m.innerHTML="",m==null||m.append(Helper.template.createAlert("error",c.raw.msg))}return!1}if(!l)return!1;o.forEach(m=>m.value=""),e.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Creating successful",`Added new area ID ${i.alias}`).show()},300)})}),[t,n]},onready:e=>{let t=e.querySelector(".create-area-form");t.querySelectorAll(".input").forEach(n=>{n.addEventListener("input",s=>{var r;s.currentTarget.value.length?(s.currentTarget.parentNode.classList.remove("error"),(r=s.currentTarget.parentNode.parentNode.querySelector(".input-info.error"))==null||r.remove()):(s.currentTarget.parentNode.classList.add("error"),s.currentTarget.parentNode.parentNode.querySelector(".input-info.error")||s.currentTarget.parentNode.parentNode.append(Helper.template.createElement("div",{class:"input-info error"},' Field cannot be empty')))})}),a.areas.types_list((n,s,r)=>{console.log("sh_api.areas.types_list",n,s,r),s||console.error("Request Error. sh_api.areas.types_list()");let o={};for(let i of s.data.types)o[i]=i;t.querySelector(".advanced-select-container").append(advancedSelect(t.querySelector('[name="type"]'),o,"Will be created"))})}})}function Tt(a,e,t){let n=[{payloadFieldName:"display_name",selector:".display-name",methName:"update_display_name",originalValue:e.display_name,isMultiString:!1},{payloadFieldName:"new_alias",selector:".alias",methName:"update_alias",originalValue:e.alias,isMultiString:!1}];for(let s of n){let r=editableString(t.querySelector(s.selector));r.editableString.onChange(o=>{let i={area_id:e.id};i[s.payloadFieldName]=o.value,a.areas[s.methName](i,(c,l,d)=>{var u,p,m;if(c||!l||!l.status)return console.error(`sh_api.areas.${s.methName}`,c),r.editableString.setValue(s.originalValue),Toasts.createError((u=c==null?void 0:c.message)!=null?u:"Error updating",(m=(p=c.raw)==null?void 0:p.msg)!=null?m:`Error of ${s.payloadFieldName} updating`).show();l.status==!0&&Screens.reinit()})})}}function Te(a,e){var t;return a=(t=Screens.currentScreen.DOMObject.provideData[a.id])!=null?t:a,console.log("areaDetailsModal",a),Modals.create("area-details-modal",{title:` ${a.display_name}`,body:n=>{var c;let s=a,r={parent_id:"place-in-area-container",display_name:"display-name",alias:"alias-view-container"},o=(l,d)=>{let u={alias:' {{value}}',create_at:p=>Helper.unification.formatDate(p),update_at:p=>Helper.unification.formatDate(p),schema:"Nothing yet"};return u[l]?typeof u[l]=="function"?u[l](d):u[l].replaceAll("{{value}}",d):d},i="";for(let l in s){let d=(c=r[l])!=null?c:"";i+=` + `,actions:e=>{let t=Helper.template.createElement("button",{class:"btn btn-primary"},"Close"),a=Helper.template.createElement("button",{class:"btn btn-success with-icon"},' Create');return t.addEventListener("click",s=>{e.close()}),a.addEventListener("click",s=>{let i=e.querySelector(".create-area-form");if(i.querySelectorAll("input[type='text']").forEach(c=>{c.dispatchEvent(new Event("input",{bubbles:!0}))}),i.querySelectorAll(".label.error").length)return!1;let o=i.querySelectorAll("input"),r={};for(let c of o)r[c.getAttribute("name")]=c.value;Helper.states.btnLoadingState(a,!0),n.areas.new_area(r,(c,l,d)=>{var u,p;if(Helper.states.btnLoadingState(a,!1),(c==null?void 0:c.type)=="api_error"){if(console.error("ERR! sh_api.areas.new_area",c.raw),(u=c.raw)!=null&&u.failed_fields)for(let m of c.raw.failed_fields)e.querySelector(`[name="${m}"]`).parentNode.classList.add("error");if((p=c.raw)!=null&&p.msg){let m=e.querySelector(".alert-container");m.innerHTML="",m==null||m.append(Helper.template.createAlert("error",c.raw.msg))}return!1}if(!l)return!1;o.forEach(m=>m.value=""),e.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Creating successful",`Added new area ID ${r.alias}`).show()},300)})}),[t,a]},onready:e=>{let t=e.querySelector(".create-area-form");t.querySelectorAll(".input").forEach(a=>{a.addEventListener("input",s=>{var i;s.currentTarget.value.length?(s.currentTarget.parentNode.classList.remove("error"),(i=s.currentTarget.parentNode.parentNode.querySelector(".input-info.error"))==null||i.remove()):(s.currentTarget.parentNode.classList.add("error"),s.currentTarget.parentNode.parentNode.querySelector(".input-info.error")||s.currentTarget.parentNode.parentNode.append(Helper.template.createElement("div",{class:"input-info error"},' Field cannot be empty')))})}),n.areas.types_list((a,s,i)=>{console.log("sh_api.areas.types_list",a,s,i),s||console.error("Request Error. sh_api.areas.types_list()");let o={};for(let r of s.data.types)o[r]=r;t.querySelector(".advanced-select-container").append(advancedSelect(t.querySelector('[name="type"]'),o,"Will be created"))})}})}function Tt(n,e,t){let a=[{payloadFieldName:"display_name",selector:".display-name",methName:"update_display_name",originalValue:e.display_name,isMultiString:!1},{payloadFieldName:"new_alias",selector:".alias",methName:"update_alias",originalValue:e.alias,isMultiString:!1}];for(let s of a){let i=editableString(t.querySelector(s.selector));i.editableString.onChange(o=>{let r={area_id:e.id};r[s.payloadFieldName]=o.value,n.areas[s.methName](r,(c,l,d)=>{var u,p,m;if(c||!l||!l.status)return console.error(`sh_api.areas.${s.methName}`,c),i.editableString.setValue(s.originalValue),Toasts.createError((u=c==null?void 0:c.message)!=null?u:"Error updating",(m=(p=c.raw)==null?void 0:p.msg)!=null?m:`Error of ${s.payloadFieldName} updating`).show();l.status==!0&&Screens.reinit()})})}}function Te(n,e){var t;return n=(t=Screens.currentScreen.DOMObject.provideData[n.id])!=null?t:n,console.log("areaDetailsModal",n),Modals.create("area-details-modal",{title:` ${n.display_name}`,body:a=>{var c;let s=n,i={parent_id:"place-in-area-container",display_name:"display-name",alias:"alias-view-container"},o=(l,d)=>{let u={alias:' {{value}}',create_at:p=>Helper.unification.formatDate(p),update_at:p=>Helper.unification.formatDate(p),schema:"Nothing yet"};return u[l]?typeof u[l]=="function"?u[l](d):u[l].replaceAll("{{value}}",d):d},r="";for(let l in s){let d=(c=i[l])!=null?c:"";r+=` ${l}: ${o(l,s[l])} @@ -314,44 +314,44 @@ `}return` - ${i} + ${r}
- `},actions:n=>{let s=Helper.template.createElement("button",{class:"btn btn-primary"},"Close"),r=Helper.template.createElement("button",{class:"btn btn-danger with-icon"},' Remove');return s.addEventListener("click",o=>{n.close()}),r.addEventListener("click",o=>{Helper.states.btnLoadingState(r,!0),confirmPopup(`Are you sure you want to remove this area? ${a.display_name}`,()=>{e.areas.remove(a.id,(i,c,l)=>{Helper.states.btnLoadingState(r,!1),console.log("Was removed"),n.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Removed",`Area: ${a.display_name}`).show()},300)})},()=>{Helper.states.btnLoadingState(r,!1),console.log("CANCELED")})}),[s,r]},onready:n=>{L(e,n.querySelector(".place-in-area-container"),"area",a.id,a.parent_id),Tt(e,a,n)}})}function Ht(a){let e=a.areas,t={},n=[];for(let s of e)t[s.id]=se(v({},s),{children:[]});for(let s of e){let r=t[s.id];s.parent_id&&t[s.parent_id]?t[s.parent_id].children.push(r):n.push(r)}return n}function At(a){return Ht(a)}function He(a,e){var s,r;e=e!=null?e:0;let t=(s=a.children)!=null&&s.length?"":"is-single",n=` + `},actions:a=>{let s=Helper.template.createElement("button",{class:"btn btn-primary"},"Close"),i=Helper.template.createElement("button",{class:"btn btn-danger with-icon"},' Remove');return s.addEventListener("click",o=>{a.close()}),i.addEventListener("click",o=>{Helper.states.btnLoadingState(i,!0),confirmPopup(`Are you sure you want to remove this area? ${n.display_name}`,()=>{e.areas.remove(n.id,(r,c,l)=>{Helper.states.btnLoadingState(i,!1),console.log("Was removed"),a.close(),Screens.reinit(),setTimeout(()=>{Toasts.createSuccess("Removed",`Area: ${n.display_name}`).show()},300)})},()=>{Helper.states.btnLoadingState(i,!1),console.log("CANCELED")})}),[s,i]},onready:a=>{L(e,a.querySelector(".place-in-area-container"),"area",n.id,n.parent_id),Tt(e,n,a)}})}function Ht(n){let e=n.areas,t={},a=[];for(let s of e)t[s.id]=se(v({},s),{children:[]});for(let s of e){let i=t[s.id];s.parent_id&&t[s.parent_id]?t[s.parent_id].children.push(i):a.push(i)}return a}function At(n){return Ht(n)}function He(n,e){var s,i;e=e!=null?e:0;let t=(s=n.children)!=null&&s.length?"":"is-single",a=`
- ${a.display_name} + ${n.display_name} [ - ${a.type} - ${a.alias} + ${n.type} + ${n.alias} ]
- `;if((r=a.children)!=null&&r.length)for(let o of a.children)n+=He(o,e+1);return n}function Dt(a,e){console.log("TREE",e);let t='
';for(let n of e)t+=He(n);t+="
",a.currentScreen.DOMObject.querySelector(".main-container .tree-container").innerHTML=t}function Mt(a,e){a.currentScreen.DOMObject.querySelectorAll(".btn.devices").forEach(t=>{t.addEventListener("click",n=>{Le({id:n.currentTarget.dataset.areaId,display_name:n.currentTarget.dataset.areaName},e).show()})}),a.currentScreen.DOMObject.querySelectorAll(".btn.actions").forEach(t=>{t.addEventListener("click",n=>{$e({id:n.currentTarget.dataset.areaId,display_name:n.currentTarget.dataset.areaName},e).show()})}),a.currentScreen.DOMObject.querySelectorAll(".btn.details").forEach(t=>{t.addEventListener("click",n=>{Te({id:n.currentTarget.dataset.areaId,display_name:n.currentTarget.dataset.areaName,parent_id:n.currentTarget.dataset.parentId},e).show()})}),a.currentScreen.DOMObject.querySelectorAll("button.show-childs").forEach(t=>{t.addEventListener("click",n=>{let s=n.currentTarget,r=s.parentNode,o=parseInt(r.dataset.lvl);if(s.classList.contains("opened")){s.classList.remove("opened");let i=r.nextElementSibling;for(;i;){let c=parseInt(i.dataset.lvl);if(c==o||cHelper.template.mainTemplate(we("areas-tree"),`
+ `;if((i=n.children)!=null&&i.length)for(let o of n.children)a+=He(o,e+1);return a}function Dt(n,e){console.log("TREE",e);let t='
';for(let a of e)t+=He(a);t+="
",n.currentScreen.DOMObject.querySelector(".main-container .tree-container").innerHTML=t}function Mt(n,e){n.currentScreen.DOMObject.querySelectorAll(".btn.devices").forEach(t=>{t.addEventListener("click",a=>{Le({id:a.currentTarget.dataset.areaId,display_name:a.currentTarget.dataset.areaName},e).show()})}),n.currentScreen.DOMObject.querySelectorAll(".btn.actions").forEach(t=>{t.addEventListener("click",a=>{$e({id:a.currentTarget.dataset.areaId,display_name:a.currentTarget.dataset.areaName},e).show()})}),n.currentScreen.DOMObject.querySelectorAll(".btn.details").forEach(t=>{t.addEventListener("click",a=>{Te({id:a.currentTarget.dataset.areaId,display_name:a.currentTarget.dataset.areaName,parent_id:a.currentTarget.dataset.parentId},e).show()})}),n.currentScreen.DOMObject.querySelectorAll("button.show-childs").forEach(t=>{t.addEventListener("click",a=>{let s=a.currentTarget,i=s.parentNode,o=parseInt(i.dataset.lvl);if(s.classList.contains("opened")){s.classList.remove("opened");let r=i.nextElementSibling;for(;r;){let c=parseInt(r.dataset.lvl);if(c==o||cHelper.template.mainTemplate(_e("areas-tree"),`

Areas Tree

@@ -365,8 +365,8 @@
- `),initer:e=>{a.areas.list((t,n,s)=>{if(console.log("sh_api.areas.list",t,n,s),s.status_code!=200)return e.error("Server API ERROR","");if(e.currentScreen.DOMObject.provideData={},typeof n.data!="undefined"&&typeof n.data.areas!="undefined")for(let o of n.data.areas)e.currentScreen.DOMObject.provideData[o.id]=o;Dt(e,At(n.data)),Mt(e,a);let r=e.currentScreen.DOMObject.querySelector(".create-new-area-modal");r.classList.contains("inited")||(r.classList.add("inited"),r==null||r.addEventListener("click",o=>{Ee(a).show()})),e.ready()})}}}var De={areasTree:Ae};function Me(a,e){a.add("/",{alias:"home",renderer:()=>"",initer:t=>{document.location="/#!/areas/tree"}}),a.add("-",{alias:"not-found-screen",renderer:()=>'

404 NOT FOUND

',initer:t=>{t.ready()}}),a.add("/devices",J.list(e)),a.add("/devices/scanning",J.scanning(e)),a.add("/scripts/scopes",j.scopes(e)),a.add("/scripts/regular",j.regular(e)),a.add("/scripts/actions",j.actions(e)),a.add("/areas/tree",De.areasTree(e))}function qt(a,e,t){return` -