1import{T as V}from"./TooltipIcon-CnUZlYtq.js";import{_ as k}from"./CustomDialog-BZTc6T9V.js";import{I as U}from"./I18nCompactTextField-C0dh4P7Y.js";import{V as I,a as S,m as w}from"./moment-BVkLcFz5.js";import{V as f,a as g,b as y,f as R}from"./VCard-C3KEYVhl.js";import{d as q,o as l,e as d,w as i,b as n,h as s,g as C,_ as B,ac as T,c as G,ab as E,a as v,V as h,f as u,t as p,E as x}from"./index-CFh73YDE.js";import{V as N}from"./ValidationDialog-C5prvyHs.js";import{V as P}from"./VDataTableServer-C3gnlJ2m.js";import"./LanguageSelectorField-CLMFchhk.js";import"./VDialog-D_BujYTp.js";import"./MessageText-DJ-lb5Z-.js";import"./ssrBoot-t3xB8Hwf.js";const A={name:"DepartmentGroupDetailsDialog",props:{modelValue:Object,debug:{type:Boolean,default:!0}},emits:["update:modelValue"],computed:{model:{get:function(){return this.modelValue},set:function(t){this.$emit("update:modelValue",t)}}}},b=q({...A,setup(t){return(e,o)=>e.model?(l(),d(k,{key:0,modelValue:e.model,"onUpdate:modelValue":o[4]||(o[4]=a=>e.model=a),debug:t.debug},{footer:i(()=>[n(S,{modelValue:e.model.validationResult,"onUpdate:modelValue":o[3]||(o[3]=a=>e.model.validationResult=a)},null,8,["modelValue"])]),default:i(()=>[n(y,{class:"pa-1",fluid:""},{default:i(()=>[e.model.id?(l(),d(f,{key:0,"no-gutters":""},{default:i(()=>[n(g,{cols:"12"},{default:i(()=>[n(I,{modelValue:e.model,"onUpdate:modelValue":o[0]||(o[0]=a=>e.model=a)},null,8,["modelValue"])]),_:1})]),_:1})):s("",!0),e.model.data?(l(),d(f,{key:1},{default:i(()=>[n(g,{cols:"12"},{default:i(()=>[n(U,{modelValue:e.model.data.name,"onUpdate:modelValue":o[1]||(o[1]=a=>e.model.data.name=a),"prepend-icon":"mdi-format-title",label:e.$gettext("Name"),variant:"outlined"},null,8,["modelValue","label"])]),_:1}),n(g,{cols:"12"},{default:i(()=>[n(C,{modelValue:e.model.data.icon,"onUpdate:modelValue":o[2]||(o[2]=a=>e.model.data.icon=a),label:e.$gettext("Icon"),"prepend-inner-icon":"mdi-image-outline",clearable:"",variant:"outlined"},null,8,["modelValue","label"])]),_:1})]),_:1})):s("",!0)]),_:1})]),_:1},8,["modelValue","debug"])):s("",!0)}}),L={name:"DepartmentGroupManipulationDialog",emits:["updated","created","update:modelValue"],components:{ValidationDialog:N,DepartmentGroupDetailsDialog:b},data:()=>({dialogData:void 0,validationDialogData:void 0,loading:!1}),props:{modelValue:Object,items:Array,debug:{type:Boolean,default:!1}},computed:{model:{get:function(){return this.modelValue},set:function(t){this.$emit("update:modelValue",t)}}},watch:{model:function(t){t!=null&&(this.dialogData=this.getDialogData(t))}},methods:{getDialogData(t){if(t==null)return;let e={actions:[{title:this.$pgettext("verb","Export"),event:"export",color:"warning",type:"icon",icon:"mdi-file-download"},{title:this.$pgettext("verb","Import"),event:"import",color:"error",type:"icon",icon:"mdi-file-upload"},{title:this.$pgettext("verb","Validate"),event:"validate",icon:"mdi-check-all",color:"success"}]};return e.show=this.model!==void 0&&this.model!==null,t&&t.id?(e.title=this.$gettext("Edit department group"),e.id=t.id,e.data=JSON.parse(JSON.stringify({name:t.name,icon:t.icon})),e.createdAt=t.createdAt,e.createdBy=t.createdBy,e.actions.push({title:this.$pgettext("verb","Update"),icon:"mdi-content-save-outline",event:"updateDepartmentGroup",color:"primary darken-1"})):(e.title=this.$gettext("Create a new department group"),e.data={name:{},icon:""},t&&(e.version=t.version),e.actions.push({title:this.$pgettext("verb","Create"),icon:"mdi-content-save-outline",event:"createDepartmentGroup",color:"primary darken-1"})),e.actions.push({title:this.$gettext("Cancel"),event:"close",icon:"mdi-close",color:"secondary darken-1"}),e},closeDialog(){this.dialogData=void 0,this.closeValidationDialog(),this.$emit("update:modelValue",void 0)},closeValidationDialog(){this.validationDialogData=void 0},validateDepartmentGroupContent(){return this.debug&&console.log("Sending data for validation..."),this.graphQL_query(` 2 mutation validateDepartmentGroupContent($data:GenericScalar!){ 3 validateDepartmentGroupContent(data:$data){ 4 result, 5 success, 6 message 7 } 8 }`,this.debug,{data:this.dialogData.data})},onValidateDepartmentGroupData(){this.validateDepartmentGroupContent().then(t=>{t.data&&t.data.data&&t.data.data.validateDepartmentGroupContent&&(t.data.data.validateDepartmentGroupContent.message&&this.showMessage({text:t.data.data.validateDepartmentGroupContent.message,color:t.data.data.validateDepartmentGroupContent.success?"success":"error",timeout:t.data.data.validateDepartmentGroupContent.success?1e3:-1}),this.dialogData.validationResult=t.data.data.validateDepartmentGroupContent.result)})},onExportDepartmentGroupData(t){let e=this.dialogData.data,o=JSON.stringify([e]),a=`${this.$gettext("Department group")} ${this.i18nString(e.name)}
8@${w().format("YYYY-MM-DDTHHmmss")}.json`,m=window.URL.createObjectURL(new Blob([o])),r=document.createElement("a");r.href=m,r.setAttribute("download",a),document.body.appendChild(r),r.click()},onImportDepartmentGroupData(){let t=document.createElement("input");t.type="file",t.onchange=()=>{let o=Array.from(t.files)[0],a=new FileReader,m=this;a.onload=function(r){let c=JSON.parse(r.target.result);m.dialogData.data=c[0]},a.readAsText(o)},t.click()},onBeforeUpdateDepartmentGroup(){this.validateDepartmentGroupContent().then(t=>{t.data&&t.data.data&&t.data.data.validateDepartmentGroupContent&&(this.validationResult=t.data.data.validateDepartmentGroupContent.result,this.validationResult.length>0?this.validationDialogData={show:!0,title:this.$gettext("Validation errors found"),element:this,debug:this.debug,data:{validationResult:this.validationResult,departmentGroupData:this.dialogData.data},actions:[{title:this.$pgettext("verb","Save anyway"),event:"updateDepartmentGroup",color:"red darken-1"},{title:this.$gettext("Return to editing"),event:"cancel",color:"blue darken-1"}]}:this.onUpdateDepartmentGroup())})},onUpdateDepartmentGroup(){this.loading=!0,this.graphQL_query('mutation updateDepartmentGroup( $departmentGroupId: UUID!, $data: GenericScalar!){ updateDepartmentGroup( id: $departmentGroupId, data: $data ) { result { id, name, icon permissions(request:["update", "delete"]) }, success, message }}',!0,{departmentGroupId:this.dialogData.id,data:this.dialogData.data}).then(t=>{if(t.data&&t.data.data&&t.data.data.updateDepartmentGroup){let e=t.data.data.updateDepartmentGroup;e.success&&e.result&&(this.$emit("updated",e.result),this.closeDialog()),e.message&&this.showMessage({text:e.message,color:e.success?"success":"error",timeout:e.success?2e3:-1})}}).finally(()=>{this.loading=!1})},onBeforeCreateDepartmentGroup(){this.validateDepartmentGroupContent().then(t=>{t.data&&t.data.data&&t.data.data.validateDepartmentGroupContent&&(this.validationResult=t.data.data.validateDepartmentGroupContent.result,this.validationResult.length>0?this.validationDialogData={show:!0,title:this.$gettext("Validation errors found"),element:this,debug:this.debug,data:{validationResult:this.validationResult,departmentGroupData:this.dialogData.data},actions:[{title:this.$pgettext("verb","Create anyway"),event:"createDepartmentGroup",color:"red darken-1"},{title:this.$gettext("Return to editing"),event:"cancel",color:"blue darken-1"}]}:this.onCreateDepartmentGroup())})},onCreateDepartmentGroup(){this.loading=!0,this.graphQL_query('mutation createDepartmentGroup($data: GenericScalar!){ createDepartmentGroup(data: $data) { result { id, latestVersion { id, name, icon }, permissions(request:["update", "delete"]) }, success, message }}',!0,{data:this.dialogData.data}).then(t=>{if(t.data&&t.data.data&&t.data.data.createDepartmentGroup){let e=t.data.data.createDepartmentGroup;e.success&&e.result&&(this.$emit("created",e.result),this.closeDialog()),e.message&&this.showMessage({text:e.message,color:e.success?"success":"error",timeout:e.success?2e3:-1})}}).finally(()=>{this.loading=!1})}}};function O(t,e,o,a,m,r){const c=b,$=T("ValidationDialog");return l(),G("span",null,[n(c,{modelValue:t.dialogData,"onUpdate:modelValue":e[0]||(e[0]=D=>t.dialogData=D),onClose:r.closeDialog,onCancel:r.closeDialog,onValidate:r.onValidateDepartmentGroupData,onExport:r.onExportDepartmentGroupData,onImport:r.onImportDepartmentGroupData,onUpdateDepartmentGroup:r.onBeforeUpdateDepartmentGroup,onCreateDepartmentGroup:r.onBeforeCreateDepartmentGroup},null,8,["modelValue","onClose","onCancel","onValidate","onExport","onImport","onUpdateDepartmentGroup","onCreateDepartmentGroup"]),n($,{modelValue:t.validationDialogData,"onUpdate:modelValue":e[1]||(e[1]=D=>t.validationDialogData=D),loadin:t.loading,onCancel:r.closeValidationDialog,onCreateDepartmentGroup:r.onCreateDepartmentGroup,onUpdateDepartmentGroup:r.onUpdateDepartmentGroup},null,8,["modelValue","loadin","onCancel","onCreateDepartmentGroup","onUpdateDepartmentGroup"])])}
8const F=B(L,[["render",O]]),M={class:"ml-4 font-weight-bold",style:{"font-size":"1.5rem"}},j={key:1},Q={key:2},J={data:()=>({itemsPerPage:10,departmentGroups:void 0,departmentGroupItem:void 0,searchText:"",search:"",totalItems:0,loading:!1,appStore:E()}),computed:{headers(){return[{title:this.$gettext("Name"),align:"start",sortable:!0,key:"name"},{title:this.$gettext("Actions"),key:"actions",sortable:!1,align:"right",width:"100px"}]}},methods:{debaunceTextSearch(){this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.search=this.searchText},500)},getDepartmentGroups(t){this.loading=!0;let e=this.getFilterString(t),o=this.getSearchFilterString(t);this.graphQL_query(`query getDepartmentGroups($query:GenericScalar){ departmentGroups(query:$query, ${e}){ id, createdAt, createdBy{id, displayName}, name, icon permissions(request:["update", "delete"]) }, departmentGroupCount(query:$query, ${o}) permissions(request:["create_department_group"])}`,this.appStore.debug,{query:{}}).then(a=>{a.data&&a.data.data&&a.data.data.departmentGroups&&(this.departmentGroups=a.data.data.departmentGroups,this.totalItems=a.data.data.departmentGroupCount,a.data.data.permissions&&a.data.data.permissions.length>0&&this.appStore.updateUserGlobalPermissions(a.data.data.permissions))}).finally(()=>{this.loading=!1})},openCreateDepartmentGroupDialog(){this.departmentGroupItem={id:void 0,latestVersion:{name:{},icon:""}}},onDepartmentGroupCreated(t){this.getDepartmentGroups()},onDepartmentGroupUpdated(t){this.getDepartmentGroups()},onEditItem(t){this.departmentGroupItem=t},onDeleteItem(t){confirm(this.$gettext("Are you sure you want to delete this department group?"))&&this.graphQL_query("mutation deleteDepartmentGroup($id: UUID!){ deleteDepartmentGroup(id: $id){ success, message }}",this.appStore.debug,{id:t.id}).then(e=>{e.data&&e.data.data&&e.data.data.deleteDepartmentGroup&&e.data.data.deleteDepartmentGroup.success&&this.getDepartmentGroups()})}}},ie=Object.assign(J,{__name:"DepartmentGroups",setup(t){return(e,o)=>(l(),d(R,{class:"fill-height"},{default:i(()=>[n(y,{fluid:""},{default:i(()=>[n(f,{"no-gutters":""},{default:i(()=>[n(g,{cols:"6"},{default:i(()=>[v("h1",M,[n(h,{size:"tiny"},{default:i(()=>[...o[3]||(o[3]=[u("mdi-folder-home-outline",-1)])]),_:1}),u(" "+p(e.$gettext("Department groups")),1)])]),_:1}),e.departmentGroups?(l(),d(g,{key:0,cols:"6",class:"align-right text-right"},{default:i(()=>[e.appStore.userHasGlobalPermission("create_department_group")?(l(),d(x,{key:0,onClick:e.openCreateDepartmentGroupDialog,class:"text-none",color:"primary"},{default:i(()=>[n(h,null,{default:i(()=>[...o[4]||(o[4]=[u("mdi-plus",-1)])]),_:1}),u(" "+p(e.$gettext("Create a new department group")),1)]),_:1},8,["onClick"])):s("",!0)]),_:1})):s("",!0),n(g,{cols:"12",class:"align-right text-right"},{default:i(()=>[n(C,{"prepend-inner-icon":"mdi-magnify",modelValue:e.searchText,"onUpdate:modelValue":o[0]||(o[0]=a=>e.searchText=a),label:e.$gettext("Search"),"single-line":"","hide-details":"",variant:"underlined",class:"mt-2 mb-0",style:{width:"200px",display:"inline-block"},onInput:e.debaunceTextSearch,clearable:""},null,8,["modelValue","label","onInput"])]),_:1})]),_:1})]),_:1}),n(P,{"items-per-page":e.itemsPerPage,"onUpdate:itemsPerPage":o[1]||(o[1]=a=>e.itemsPerPage=a),sortBy:[{key:"name",order:"asc"}],headers:e.headers,items:e.departmentGroups,"items-length":e.totalItems,loading:e.loading,search:e.search,"item-key":"id",class:"elevation-1","onUpdate:options":e.getDepartmentGroups,"loading-text":e.$gettext("Loading... Please wait.")},{"item.name":i(({item:a})=>[a.icon?(l(),d(h,{key:0,class:"mr-2"},{default:i(()=>[u(p(a.icon),1)]),_:2},1024)):s("",!0),typeof a.name=="string"||a.name instanceof String?(l(),G("span",j,p(a.name),1)):(l(),G("span",Q,[v("span",null,p(e.i18nString(a.name)),1)]))]),"item.actions":i(({item:a})=>[a.permissions&&a.permissions.length>0&&a.permissions.indexOf("update")!==-1?(l(),d(V,{key:0,icon:"mdi-pencil",color:"warning",onClick:m=>e.onEditItem(a)},{default:i(()=>[u(p(e.$pgettext("department group","Edit")),1)]),_:1},8,["onClick"])):s("",!0),a.permissions&&a.permissions.length>0&&a.permissions.indexOf("delete")!==-1?(l(),d(V,{key:1,icon:"mdi-delete",color:"error",onClick:m=>e.onDeleteItem(a)},{default:i(()=>[u(p(e.$pgettext("department group","Delete")),1)]),_:1},8,["onClick"])):s("",!0)]),_:1},8,["items-per-page","headers","items","items-length","loading","search","onUpdate:options","loading-text"]),n(F,{modelValue:e.departmentGroupItem,"onUpdate:modelValue":o[2]||(o[2]=a=>e.departmentGroupItem=a),onCreated:e.onDepartmentGroupCreated,onUpdated:e.onDepartmentGroupUpdated,debug:e.debug},null,8,["modelValue","onCreated","onUpdated","debug"])]),_:1}))}});
8export{ie as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.