zwave-js-ui
Version:
Z-Wave Control Panel and MQTT Gateway
3 lines (2 loc) • 6.17 kB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./DialogSceneValue-UtlwFmF_.js","./index-B9yS4Bcc.js","./index-Bm7DxUwf.css"])))=>i.map(i=>d[i]);
import{_ as v,I as _,d as w,m as k,u as m,a as y,l as S,w as t,V as C,r as g,o as f,b as a,f as p,h as r,k as o,i as u,Q as x,W as b,e as I,U as A,t as D,q as R,z as q}from"./index-B9yS4Bcc.js";import{V as N}from"./VDataTable-CKSj76XP.js";import"./sort-CSOGXH9I.js";import"./VTable-BXtGlLLl.js";const T={name:"Scenes",mixins:[_],components:{DialogSceneValue:w(()=>q(()=>import("./DialogSceneValue-UtlwFmF_.js"),__vite__mapDeps([0,1,2]),import.meta.url))},watch:{selectedScene(){this.refreshValues()},dialogValue(e){e||this.closeDialog()}},computed:{...k(m,["nodes"]),scenesWithId(){return this.scenes.map(e=>({...e,label:`[${e.sceneid}] ${e.label}`}))},dialogTitle(){return this.editedIndex===-1?"New Value":"Edit Value"}},data(){return{dialogValue:!1,scenes:[],selectedScene:null,newScene:"",scene_values:[],editedValue:{},editedIndex:-1,headers_scenes:[{title:"Value ID",key:"id"},{title:"Node",key:"nodeId"},{title:"Label",key:"label"},{title:"Value",key:"value"},{title:"Timeout",key:"timeout"},{title:"Actions",key:"actions",sortable:!1}]}},methods:{...y(m,["showSnackbar"]),async importScenes(){if(await this.app.confirm("Attention","This operation will override all current scenes and cannot be undone","alert"))try{const{data:e}=await this.app.importFile("json");if(e instanceof Array){const s=await this.app.apiRequest("_setScenes",[e]);s.success&&(this.showSnackbar("Successfully updated scenes","success"),this.scenes=s.result)}else this.showSnackbar("Imported file not valid","error")}catch{}},exportScenes(){this.app.exportConfiguration(this.scenes,"scenes")},async refreshScenes(){const e=await this.app.apiRequest("_getScenes",[],{infoSnack:!1,errorSnack:!0});e.success&&(this.scenes=e.result,this.selectedScene||(this.selectedScene=this.scenes.length?this.scenes[0].sceneid:null))},async createScene(){this.newScene&&(await this.app.apiRequest("_createScene",[this.newScene])).success&&(this.showSnackbar("Scene created","success"),this.newScene="",this.refreshScenes())},async removeScene(){this.selectedScene&&await this.app.confirm("Attention","Are you sure you want to delete this scene?","alert")&&(await this.app.apiRequest("_removeScene",[this.selectedScene])).success&&(this.selectedScene=null,this.showSnackbar("Scene removed","success"),this.refreshScenes())},async activateScene(){this.selectedScene&&(await this.app.apiRequest("_activateScene",[this.selectedScene])).success&&this.showSnackbar("Scene activated","success")},editItem(e){this.editedIndex=this.scene_values.indexOf(e);const s=this.nodes.find(d=>d.id===e.nodeId)||{id:e.nodeId,name:"",loc:"",values:[]};let c=s.values.find(d=>d.id===e.id);c=c?Object.assign({},c):Object.assign({},e),c.newValue=e.value,this.editedValue={node:s,value:c,timeout:e.timeout},this.dialogValue=!0},async deleteItem(e){await this.app.confirm("Attention","Are you sure you want to delete this item?","alert")&&(await this.app.apiRequest("_removeSceneValue",[this.selectedScene,e])).success&&(this.showSnackbar("Value removed","success"),this.refreshValues())},closeDialog(){this.dialogValue=!1,setTimeout(()=>{this.editedValue={},this.editedIndex=-1},300)},async saveValue(){const e=this.editedValue.value;e.value=e.newValue,(await this.app.apiRequest("_addSceneValue",[this.selectedScene,e,e.value,this.editedValue.timeout])).success&&(this.showSnackbar("Value saved","success"),this.refreshValues(),this.closeDialog())},async refreshValues(){if(this.selectedScene){const e=await this.app.apiRequest("_sceneGetValues",[this.selectedScene],{infoSnack:!1,errorSnack:!0});e.success&&(this.scene_values=e.result)}}},mounted(){this.refreshScenes()}},B={class:"d-flex flex-row"};function E(e,s,c,d,i,l){const h=g("DialogSceneValue");return f(),S(C,{"grid-list-md":""},{default:t(()=>[a(I,null,{default:t(()=>[a(p,{cols:"12"},{default:t(()=>[a(r,{variant:"text",onClick:l.importScenes},{default:t(()=>[s[5]||(s[5]=o(" Import ")),a(u,{end:"",color:"primary"},{default:t(()=>s[4]||(s[4]=[o("file_upload")])),_:1,__:[4]})]),_:1,__:[5]},8,["onClick"]),a(r,{variant:"text",onClick:l.exportScenes},{default:t(()=>[s[7]||(s[7]=o(" Export ")),a(u,{end:"",color:"primary"},{default:t(()=>s[6]||(s[6]=[o("file_download")])),_:1,__:[6]})]),_:1,__:[7]},8,["onClick"])]),_:1}),a(p,{cols:"12",sm:"6"},{default:t(()=>[a(x,{label:"Scene",modelValue:i.selectedScene,"onUpdate:modelValue":s[0]||(s[0]=n=>i.selectedScene=n),items:l.scenesWithId,"item-title":"label","item-value":"sceneid"},null,8,["modelValue","items"])]),_:1}),a(p,{cols:"12",sm:"6"},{default:t(()=>[a(b,{label:"New Scene","append-icon":"send","onClick:append":l.createScene,modelValue:i.newScene,"onUpdate:modelValue":s[1]||(s[1]=n=>i.newScene=n),modelModifiers:{trim:!0}},null,8,["onClick:append","modelValue"])]),_:1})]),_:1}),a(h,{onSave:l.saveValue,onClose:l.closeDialog,modelValue:i.dialogValue,"onUpdate:modelValue":s[2]||(s[2]=n=>i.dialogValue=n),title:l.dialogTitle,editedValue:i.editedValue,nodes:e.nodes},null,8,["onSave","onClose","modelValue","title","editedValue","nodes"]),i.selectedScene?(f(),S(N,{key:0,headers:i.headers_scenes,items:i.scene_values,class:"elevation-1"},{top:t(()=>[A("div",B,[a(r,{color:"error",variant:"text",onClick:l.removeScene},{default:t(()=>s[8]||(s[8]=[o("Delete")])),_:1,__:[8]},8,["onClick"]),a(r,{color:"success",variant:"text",onClick:l.activateScene},{default:t(()=>s[9]||(s[9]=[o("Activate")])),_:1,__:[9]},8,["onClick"]),a(r,{color:"primary",variant:"text",onClick:s[3]||(s[3]=n=>i.dialogValue=!0)},{default:t(()=>s[10]||(s[10]=[o("New Value")])),_:1,__:[10]})])]),"item.timeout":t(({item:n})=>[o(D(n.timeout?"After "+n.timeout+"s":"No"),1)]),"item.actions":t(({item:n})=>[a(u,{size:"small",color:"success",class:"mr-2",onClick:V=>l.editItem(n)},{default:t(()=>s[11]||(s[11]=[o("edit")])),_:2,__:[11]},1032,["onClick"]),a(u,{size:"small",color:"error",onClick:V=>l.deleteItem(n)},{default:t(()=>s[12]||(s[12]=[o("delete")])),_:2,__:[12]},1032,["onClick"])]),_:2},1032,["headers","items"])):R("",!0)]),_:1})}const W=v(T,[["render",E]]);export{W as default};