@ngageoint/mage.web-app
Version:
The MAGE web-app is the UI for interacting with the MAGE service in a web browser.
1 lines • 7.19 MB
JavaScript
(self.webpackChunkadmin=self.webpackChunkadmin||[]).push([[179],{9290:(I,y,s)=>{"use strict";s.r(y);var d=s(80412),c=s.n(d),l=s(86349),u=s(15439),h=s.n(u);let m=(()=>{class A{constructor(T,O,F,B,z,Q,re,ae){this.$uibModal=T,this.$state=O,this.$stateParams=F,this.DeviceService=z,this.UserService=Q,this.LoginService=re,this.UserPagingService=ae,this.token=B.getToken(),this.hasDeviceEditPermission=l.default.contains(Q.myself.role.permissions,"UPDATE_DEVICE"),this.hasDeviceDeletePermission=l.default.contains(Q.myself.role.permissions,"DELETE_DEVICE"),this.filter={device:{id:F.deviceId}},this.user=null,this.login={startDateOpened:!1,endDateOpened:!1},this.firstLogin=null,this.showPrevious=!1,this.showNext=!0,this.isSearching=!1,this.stateAndData=this.UserPagingService.constructDefault(),this.loginSearchResults=[]}$onInit(){this.DeviceService.getDevice(this.$stateParams.deviceId).then(T=>{this.device=T}),this.LoginService.query({filter:this.filter,limit:this.loginResultsLimit}).then(T=>{this.loginPage=T,T.logins.length&&(this.firstLogin=T.logins[0])}),this.UserPagingService.refresh(this.stateAndData)}userSearchChanged(){""===this.user&&(this.user=null,this.filterLogins())}searchLogins(T){return this.isSearching=!0,null==T&&(T=".*"),this.UserPagingService.search(this.stateAndData.all,T).then(O=>(this.loginSearchResults=O,0==this.loginSearchResults.length&&this.loginSearchResults.push({displayName:"No Results Found"}),this.isSearching=!1,this.loginSearchResults))}iconClass(T){if(!T)return;if(T.iconClass)return T.iconClass;const O=T.userAgent||"";return T.iconClass="Web Client"===T.appVersion?"fa-desktop admin-desktop-icon":-1!==O.toLowerCase().indexOf("android")?"fa-android admin-android-icon":-1!==O.toLowerCase().indexOf("ios")?"fa-apple admin-apple-icon":"fa-mobile admin-generic-icon",T.iconClass}editDevice(T){this.$state.go("admin.deviceEdit",{deviceId:T.id})}gotoUser(T){this.$state.go("admin.user",{userId:T.id})}deleteDevice(T){this.$uibModal.open({resolve:{device:()=>T},component:"adminDeviceDelete"}).result.then(()=>{this.$state.go("admin.devices")})}registerDevice(T){T.registered=!0,this.DeviceService.updateDevice(T).then(()=>{this.onDeviceRegistered({$event:{device:T}})})}unregisterDevice(T){T.registered=!1,this.DeviceService.updateDevice(T).then(()=>{this.onDeviceUnregistered({$event:{device:T}})})}pageLogin(T){this.LoginService.query({url:T,filter:this.filter,limit:this.loginResultsLimit}).then(O=>{O.logins.length&&(this.loginPage=O,this.showNext=0!==O.logins.length,this.showPrevious=O.logins[0].id!==this.firstLogin.id)})}filterLogins(){this.filter.user=this.user,this.filter.startDate=this.login.startDate,this.login.endDate&&(this.filter.endDate=h()(this.login.endDate).endOf("day").toDate()),this.LoginService.query({filter:this.filter,limit:this.loginResultsLimit}).then(T=>{this.showNext=0!==T.logins.length,this.showPrevious=!1,this.loginPage=T})}openLoginStart(T){T.preventDefault(),T.stopPropagation(),this.login.startDateOpened=!0}openLoginEnd(T){T.preventDefault(),T.stopPropagation(),this.login.endDateOpened=!0}loginResultsLimitChanged(){this.filterLogins()}onFilterDateChanged(){this.filterLogins()}}return A.$inject=["$uibModal","$state","$stateParams","LocalStorageService","DeviceService","UserService","LoginService","UserPagingService"],A})();const p={template:s(68514),bindings:{onDeviceRegistered:"&",onDeviceUnregistered:"&"},controller:m};let v=(()=>{class A{constructor(T,O,F,B,z,Q,re){this.$uibModal=T,this.$state=O,this.DeviceService=B,this.UserService=z,this.DevicePagingService=Q,this.UserPagingService=re,this.token=F.getToken(),this.filter="all",this.deviceSearch="",this.devices=[],this.deviceStateAndData=this.DevicePagingService.constructDefault(),this.hasDeviceCreatePermission=l.default.contains(z.myself.role.permissions,"CREATE_DEVICE"),this.hasDeviceEditPermission=l.default.contains(z.myself.role.permissions,"UPDATE_DEVICE"),this.hasDeviceDeletePermission=l.default.contains(z.myself.role.permissions,"DELETE_DEVICE")}$onInit(){this.DevicePagingService.refresh(this.deviceStateAndData).then(()=>{this.devices=this.DevicePagingService.devices(this.deviceStateAndData[this.filter])})}count(T){return this.deviceStateAndData[T].deviceCount}hasNext(){return this.DevicePagingService.hasNext(this.deviceStateAndData[this.filter])}next(){this.DevicePagingService.next(this.deviceStateAndData[this.filter]).then(T=>{this.devices=T})}hasPrevious(){return this.DevicePagingService.hasPrevious(this.deviceStateAndData[this.filter])}previous(){this.DevicePagingService.previous(this.deviceStateAndData[this.filter]).then(T=>{this.devices=T})}search(){this.DevicePagingService.search(this.deviceStateAndData[this.filter],this.deviceSearch).then(T=>{T.length>0?this.devices=T:this.DevicePagingService.search(this.deviceStateAndData[this.filter],this.deviceSearch,this.deviceSearch).then(O=>{this.devices=O})})}iconClass(T){if(T.iconClass)return T.iconClass;const O=T.userAgent||"";return T.iconClass="Web Client"===T.appVersion?"fa-desktop admin-desktop-icon":-1!==O.toLowerCase().indexOf("android")?"fa-android admin-android-icon":-1!==O.toLowerCase().indexOf("ios")?"fa-apple admin-apple-icon":"fa-mobile admin-generic-icon",T.iconClass}changeFilter(T){this.filter=T,this.search()}reset(){this.filter="all",this.deviceSearch="",this.deviceStateAndData=this.DevicePagingService.constructDefault(),this.DevicePagingService.refresh(this.deviceStateAndData).then(()=>{this.devices=this.DevicePagingService.devices(this.deviceStateAndData[this.filter])})}newDevice(){this.$state.go("admin.deviceCreate")}gotoDevice(T){this.$state.go("admin.device",{deviceId:T.id})}editDevice(T,O){T.stopPropagation(),this.$state.go("admin.deviceEdit",{deviceId:O.id})}registerDevice(T,O){T.stopPropagation(),O.registered=!0,this.DeviceService.updateDevice(O).then(()=>{this.DevicePagingService.refresh(this.deviceStateAndData).then(()=>{this.devices=this.DevicePagingService.devices(this.deviceStateAndData[this.filter])}),this.onDeviceRegistered({$event:{device:O}})},F=>{this.error=F.responseText})}deleteDevice(T,O){T.stopPropagation(),this.$uibModal.open({resolve:{device:()=>O},component:"adminDeviceDelete"}).result.then(()=>{this.DevicePagingService.refresh(this.deviceStateAndData).then(()=>{this.devices=this.DevicePagingService.devices(this.deviceStateAndData[this.filter])})})}}return A.$inject=["$uibModal","$state","LocalStorageService","DeviceService","UserService","DevicePagingService","UserPagingService"],A})();const b={template:s(50830),bindings:{onDeviceRegistered:"&"},controller:v};let _=(()=>{class A{constructor(T,O,F,B,z){this.$state=T,this.$stateParams=O,this.DeviceService=B,this.UserPagingService=z,this.token=F.getToken(),this.userState="all",this.isSearching=!1,this.stateAndData=this.UserPagingService.constructDefault(),this.pocs=[],this.poc=null}$onInit(){this.$stateParams.deviceId?this.DeviceService.getDevice(this.$stateParams.deviceId).then(T=>{this.device=c().copy(T),this.poc=this.device.user}):this.device={},delete this.stateAndData.active,delete this.stateAndData.inactive,delete this.stateAndData.disabled,this.UserPagingService.refresh(this.stateAndData).then(()=>{this.pocs=this.UserPagingService.users(this.stateAndData[this.userState])})}searchPocs(T){return this.isSearching=!0,null==T&&(T=".*"),this.UserPagingService.search(this.stateAndData[this.userState],T).then(O=>(this.pocs=O,this.isSearching=!1,this.pocs))}iconClass(T){if(T.iconClass)return T.iconClass;var O=T.userAgent||"";return T.iconClass="Web Client"===T.appVersion?"fa-desktop admin-desktop-icon":-1!==O.toLowerCase().indexOf("android")?"fa-android admin-android-icon":-1!==O.toLowerCase().indexOf("ios")?"fa-apple admin-apple-icon":"fa-mobile admin-generic-icon",T.iconClass}cancel(){this.device.id?this.$state.go("admin.device",{deviceId:this.device.id}):this.$state.go("admin.devices")}saveDevice(){this.saving=!0,this.error=!1;var T=this.device;null!=this.poc&&(T.userId=this.poc.id),T.id?this.DeviceService.updateDevice(T).then(()=>{this.$state.go("admin.device",{deviceId:T.id})},O=>{this.saving=!1,this.error=O.responseText,this.poc=null}):this.DeviceService.createDevice(T).then(O=>{this.$state.go("admin.device",{deviceId:O.id})},O=>{this.saving=!1,this.error=O.responseText,this.poc=null})}}return A.$inject=["$state","$stateParams","LocalStorageService","DeviceService","UserPagingService"],A})();const E={template:s(377),controller:_};let w=(()=>{class A{constructor(T){this.DeviceService=T}$onInit(){this.device=this.resolve.device}deleteDevice(T){this.DeviceService.deleteDevice(T).then(()=>{this.modalInstance.close(T)})}cancel(){this.modalInstance.dismiss("cancel")}}return A.$inject=["DeviceService"],A})();const D={template:s(91955),bindings:{resolve:"<",modalInstance:"<"},controller:w};c().module("mage").component("adminDevice",p).component("adminDevices",b).component("adminDeviceEdit",E).component("adminDeviceDelete",D)},1770:(I,y,s)=>{"use strict";s.r(y);var d=s(80412),c=s.n(d),l=s(86349);let u=(()=>{class Ae{constructor(ye,ve,Oe,tt,ut,Lt,Gt,an,At,Pt){this.$state=ye,this.$stateParams=ve,this.$filter=Oe,this.$q=tt,this.$uibModal=ut,this.UserService=Gt,this.Event=an,this.Team=At,this.Layer=Pt,this.token=Lt.getToken(),this.showArchivedForms=!1,this.loadingMembers=!1,this.membersPageIndex=0,this.membersPageSize=5,this.membersPage={items:[],totalCount:0},this.loadingNonMembers=!1,this.nonMembersPageIndex=0,this.nonMembersPageSize=5,this.nonMembersPage={items:[],totalCount:0},this.loadingTeams=!1,this.teamsPageIndex=0,this.teamsPageSize=2,this.teamsPage={items:[],totalCount:0},this.loadingNonTeams=!1,this.nonTeamsPageIndex=0,this.nonTeamsPageSize=5,this.nonTeamsPage={items:[],totalCount:0},this.eventMembers=[],this.teamsInEvent=[],this.editLayers=!1,this.eventLayers=[],this.layersPage=0,this.layersPerPage=5,this.layerSearch=null,this.nonLayers=[],this.nonLayersPage=0,this.nonLayersPerPage=2,this.nonLayerSearch=null,this.layers=[],this.filterLayers=this.filterLayers.bind(this),this.filterNonLayers=this.filterNonLayers.bind(this)}$onInit(){this.$q.all({teams:this.Team.query({populate:!1}).$promise,layers:this.Layer.query().$promise,event:this.Event.get({id:this.$stateParams.eventId,populate:!1}).$promise}).then(ye=>{const ve=l.default.indexBy(ye.teams,"id");this.layers=ye.layers;const Oe=l.default.indexBy(ye.layers,"id");this.event=ye.event;const tt=l.default.find(this.event.teamIds,an=>{if(ve[an])return ve[an].teamEventId===this.event.id});this.eventTeam=ve[tt],this.getMembersPage(),this.getNonMembersPage(),this.getTeamsPage(),this.getNonTeamsPage();const ut=l.default.filter(this.event.teamIds,an=>{if(ve[an])return ve[an].teamEventId!==this.event.id});this.teamsInEvent=l.default.map(ut,an=>ve[an]),this.teamsNotInEvent=l.default.filter(ye.teams,an=>-1===this.event.teamIds.indexOf(an.id)&&!an.teamEventId),this.layer={},this.eventLayers=l.default.chain(this.event.layerIds).filter(an=>Oe[an]).map(an=>Oe[an]).value(),this.nonLayers=l.default.filter(this.layers,an=>-1===this.event.layerIds.indexOf(an.id));const Lt=this.event.acl[this.UserService.myself.id],Gt=Lt?Lt.permissions:[];this.hasReadPermission=l.default.contains(this.UserService.myself.role.permissions,"READ_EVENT_ALL")||l.default.contains(Gt,"read"),this.hasUpdatePermission=l.default.contains(this.UserService.myself.role.permissions,"UPDATE_EVENT")||l.default.contains(Gt,"update"),this.hasDeletePermission=l.default.contains(this.UserService.myself.role.permissions,"DELETE_EVENT")||l.default.contains(Gt,"delete")})}getMembersPage(){this.loadingMembers=!0,this.Event.getMembers({id:this.$stateParams.eventId,page:this.membersPageIndex,page_size:this.membersPageSize,total:!0,term:this.memberSearchTerm},ye=>{this.loadingMembers=!1,this.membersPage=ye})}getNonMembersPage(){this.loadingNonMembers=!0,this.Event.getNonMembers({id:this.$stateParams.eventId,page:this.nonMembersPageIndex,page_size:this.nonMembersPageSize,total:!0,term:this.nonMemberSearchTerm},ye=>{this.loadingNonMembers=!1,this.nonMembersPage=ye})}addMember(ye,ve){ye.stopPropagation(),this.nonMember=null,this.eventTeam.userIds.push(ve.id),this.eventTeam.$save(()=>{this.getMembersPage(),this.getNonMembersPage()})}removeMember(ye,ve){ye.stopPropagation(),this.eventTeam.userIds=l.default.reject(this.eventTeam.userIds,Oe=>ve.id===Oe),this.eventTeam.$save(()=>{this.getMembersPage(),this.getNonMembersPage()})}hasNextMember(){return(this.membersPageIndex+1)*this.membersPageSize<this.membersPage.totalCount}hasPreviousMember(){return this.membersPageIndex>0&&this.membersPage.totalCount>0}nextMemberPage(){this.hasNextMember()&&(this.membersPageIndex++,this.getMembersPage())}previousMemberPage(){this.hasPreviousMember()&&(this.membersPageIndex--,this.getMembersPage())}searchMembers(){this.membersPageIndex=0,this.getMembersPage()}hasNextNonMember(){return(this.nonMembersPageIndex+1)*this.nonMembersPageSize<this.nonMembersPage.totalCount}hasPreviousNonMember(){return this.nonMembersPageIndex>0&&this.nonMembersPage.totalCount>0}nextNonMemberPage(){this.hasNextNonMember()&&(this.nonMembersPageIndex++,this.getNonMembersPage())}previousNonMemberPage(){this.hasPreviousNonMember()&&(this.nonMembersPageIndex--,this.getNonMembersPage())}searchNonMembers(){this.nonMembersPageIndex=0,this.getNonMembersPage()}getTeamsPage(){this.loadingTeams=!0,this.Event.getTeams({id:this.$stateParams.eventId,omit_event_teams:!0,page:this.teamsPageIndex,page_size:this.teamsPageSize,total:!0,term:this.teamSearchTerm},ye=>{this.loadingTeams=!1,this.teamsPage=ye})}getNonTeamsPage(){this.loadingNonTeams=!0,this.Event.getNonTeams({id:this.$stateParams.eventId,omit_event_teams:!0,page:this.nonTeamsPageIndex,page_size:this.nonTeamsPageSize,total:!0,term:this.nonTeamSearchTerm},ye=>{this.loadingNonTeams=!1,this.nonTeamsPage=ye})}filterLayers(ye){let ve=this.eventLayers;return this.layerSearch&&(ve=this.$filter("filter")([ye],this.layerSearch)),ve&&ve.length}filterNonLayers(ye){let ve=this.nonLayers;return this.nonLayerSearch&&(ve=this.$filter("filter")([ye],this.nonLayerSearch)),ve&&ve.length}normalize(ye){return{id:ye.id,description:ye.email||ye.description,name:ye.name||ye.displayName,type:ye.name?"team":"user"}}addTeam(ye,ve){ye.stopPropagation(),this.nonMember=null,this.event.teamIds.push(ve.id),this.teamsInEvent.push(ve),this.teamsNotInEvent=l.default.reject(this.teamsNotInEvent,Oe=>Oe.id===ve.id),this.Event.addTeam({id:this.event.id},ve).$promise.then(()=>{this.getTeamsPage(),this.getNonTeamsPage()})}removeTeam(ye,ve){ye.stopPropagation(),this.event.teamIds=l.default.reject(this.event.teamIds,Oe=>Oe===ve.id),this.teamsNotInEvent.push(ve),this.teamsInEvent=l.default.reject(this.teamsInEvent,Oe=>Oe.id===ve.id),this.Event.removeTeam({id:this.event.id,teamId:ve.id}).$promise.then(()=>{this.getTeamsPage(),this.getNonTeamsPage()})}hasNextTeam(){return(this.teamsPageIndex+1)*this.teamsPageSize<this.teamsPage.totalCount}hasPreviousTeam(){return this.teamsPageIndex>0&&this.teamsPage.totalCount>0}nextTeamPage(){this.hasNextTeam()&&(this.teamsPageIndex++,this.getTeamsPage())}previousTeamPage(){this.hasPreviousTeam()&&(this.teamsPageIndex--,this.getTeamsPage())}searchTeams(){this.teamsPageIndex=0,this.getTeamsPage()}hasNextNonTeam(){return(this.nonTeamsPageIndex+1)*this.nonTeamsPageSize<this.nonTeamsPage.totalCount}hasPreviousNonTeam(){return this.nonTeamsPageIndex>0&&this.nonTeamsPage.totalCount>0}nextNonTeamPage(){this.hasNextNonTeam()&&(this.nonTeamsPageIndex++,this.getNonTeamsPage())}previousNonTeamPage(){this.hasPreviousNonTeam()&&(this.nonTeamsPageIndex--,this.getNonTeamsPage())}searchNonTeams(){this.nonTeamsPageIndex=0,this.getNonTeamsPage()}addLayer(ye,ve){ye.stopPropagation(),this.layer={},this.event.layerIds.push(ve.id),this.eventLayers.push(ve),this.nonLayers=l.default.reject(this.nonLayers,Oe=>Oe.id===ve.id),this.Event.addLayer({id:this.event.id},ve)}removeLayer(ye,ve){this.event.layerIds=l.default.reject(this.event.layerIds,Oe=>Oe===ve.id),this.eventLayers=l.default.reject(this.eventLayers,Oe=>Oe.id===ve.id),this.nonLayers.push(ve),this.Event.removeLayer({id:this.event.id,layerId:ve.id})}saveFormRestrictions(){this.restrictions.minObservationForms.$setValidity("formsMax",!0),this.restrictions.maxObservationForms.$setValidity("formsMin",!0);const ye=this.event.forms||[],ve=ye.reduce((tt,ut)=>tt+ut.min,0);if(this.event.maxObservationForms&&ve>this.event.maxObservationForms&&this.restrictions.maxObservationForms.$setValidity("formsMin",!1),ye.every(tt=>null!=tt.max)){const tt=ye.reduce((ut,Lt)=>ut+Lt.max,0);this.event.minObservationForms&&this.event.minObservationForms>tt&&this.restrictions.minObservationForms.$setValidity("formsMax",!1)}this.restrictions.$invalid||new this.Event({id:this.event.id,forms:this.event.forms,minObservationForms:this.event.minObservationForms,maxObservationForms:this.event.maxObservationForms}).$save(()=>{delete this.restrictionsError,this.restrictions.$setPristine()},tt=>{500===tt.status?(restrictionsError,this.restrictionsError={message:tt.data}):tt.data&&tt.data.message&&(this.restrictionsError={errors:tt.data.errors})})}editEvent(ye){this.$state.go("admin.eventEdit",{eventId:ye.id})}editAccess(ye){this.$state.go("admin.eventAccess",{eventId:ye.id})}editForm(ye,ve){this.$state.go("admin.formEdit",{eventId:ye.id,formId:ve.id})}gotoMember(ye){ye.username?this.$state.go("admin.user",{userId:ye.id}):this.$state.go("admin.team",{teamId:ye.id})}gotoLayer(ye){this.$state.go("admin.layer",{layerId:ye.id})}completeEvent(ye){ye.complete=!0,ye.$save(ve=>{this.event=ve})}activateEvent(ye){ye.complete=!1,ye.$save(()=>{ye.complete=!1})}createForm(){this.formCreateOpen={opened:!0}}onFormCreateClose(ye){this.formCreateOpen={opened:!1},ye.id?this.$state.go("admin.formEdit",{eventId:this.event.id,formId:ye.id}):this.$state.go("admin.fieldsCreate",{eventId:this.event.id,form:ye})}moveFormUp(ye,ve){ye.stopPropagation();let Oe=this.event.forms,tt=Oe.indexOf(ve),ut=tt-1;if(!this.showArchivedForms)for(;ut>=0&&Oe[ut].archived;ut--);Oe.splice(ut,0,Oe.splice(tt,1)[0]),this.event.$save()}moveFormDown(ye,ve){ye.stopPropagation();let Oe=this.event.forms,tt=Oe.indexOf(ve),ut=tt+1;if(!this.showArchivedForms)for(;tt<Oe.length&&Oe[ut].archived;ut++);Oe.splice(ut,0,Oe.splice(tt,1)[0]),this.event.$save()}preview(ye,ve){ye.stopPropagation(),this.previewForm=ve}closePreview(){this.previewForm=null}deleteEvent(){this.$uibModal.open({resolve:{event:()=>this.event},component:"adminEventDelete"}).result.then(()=>{this.$state.go("admin.events")})}}return Ae.$inject=["$state","$stateParams","$filter","$q","$uibModal","LocalStorageService","UserService","Event","Team","Layer"],Ae})();const h={template:s(86663),controller:u};let m=(()=>{class Ae{constructor(ye,ve,Oe,tt,ut){this.$state=ye,this.$filter=ve,this.$uibModal=Oe,this.Event=tt,this.UserService=ut,this.events=[],this.filter="active",this.page=0,this.itemsPerPage=10,this.eventSearch="",this.projection={name:!0,description:!0,acl:!0,complete:!0},this.filterEvents=this._filterEvents.bind(this),this.filterComplete=this._filterComplete.bind(this)}$onInit(){this.Event.query({state:"all",populate:!1,projection:JSON.stringify(this.projection)},ye=>{this.events=ye})}handleSearchChange(){const ye=this.events.filter(ve=>this._filterEvents(ve));this.page=ye.length>0?0:this.page}_filterEvents(ye){const ve=this.eventSearch.trim().toLowerCase();if(!ve)return!0;const Oe=ye.name.toLowerCase().includes(ve),tt=ye.description&&ye.description.toLowerCase().includes(ve);return Oe||tt}_filterComplete(ye){switch(this.filter){case"all":return!0;case"active":return!ye.complete;case"complete":return ye.complete}}reset(){this.page=0,this.eventSearch=""}newEvent(){this.$state.go("admin.eventCreate")}gotoEvent(ye){this.$state.go("admin.event",{eventId:ye.id})}editEvent(ye,ve){ye.stopPropagation(),this.$state.go("admin.eventEdit",{eventId:ve.id})}hasUpdatePermission(ye){return this.hasPermission(ye,"update")}hasDeletePermission(ye){return this.hasPermission(ye,"delete")}hasPermission(ye,ve){var Oe=ye.acl[this.UserService.myself.id],tt=Oe?Oe.permissions:[];switch(ve){case"update":return l.default.contains(this.UserService.myself.role.permissions,"UPDATE_EVENT")||l.default.contains(tt,"update");case"delete":return l.default.contains(this.UserService.myself.role.permissions,"DELETE_EVENT")||l.default.contains(tt,"delete")}}deleteEvent(ye,ve){ye.stopPropagation(),this.$uibModal.open({resolve:{event:()=>ve},component:"adminEventDelete"}).result.then(tt=>{this.events=l.default.without(this.events,tt)})}}return Ae.$inject=["$state","$filter","$uibModal","Event","UserService"],Ae})();const p={template:s(42469),controller:m};let v=(()=>{class Ae{constructor(ye,ve,Oe){this.$state=ye,this.$stateParams=ve,this.Event=Oe}$onInit(){this.$stateParams.eventId?this.Event.get({id:this.$stateParams.eventId},ye=>{this.event=new this.Event({id:ye.id,name:ye.name,description:ye.description})}):this.event=new this.Event}saveEvent(ye){ye.$save(()=>{this.$state.go("admin.event",{eventId:ye.id})},ve=>{500===ve.status?this.error={message:ve.data}:ve.data&&ve.data.message&&(this.error={message:"Error Saving Event Information",errors:ve.data.errors})})}cancel(){this.event.id?this.$state.go("admin.event",{eventId:this.event.id}):this.$state.go("admin.events")}}return Ae.$inject=["$state","$stateParams","Event"],Ae})();const b={template:s(8331),controller:v};let _=(()=>{class Ae{constructor(){}$onInit(){this.event=this.resolve.event}deleteEvent(ye){ye.$delete(()=>{this.modalInstance.close(ye)})}cancel(){this.modalInstance.dismiss("cancel")}}return Ae.$inject=[],Ae})();const E={template:s(84250),bindings:{resolve:"<",modalInstance:"<"},controller:_};let w=(()=>{class Ae{constructor(ye,ve,Oe,tt,ut,Lt,Gt,an){this.$state=ye,this.$stateParams=ve,this.$q=Oe,this.$filter=tt,this.Event=ut,this.EventAccess=Lt,this.UserService=Gt,this.UserPagingService=an,this.eventMembers=[],this.nonMemberSearchResults=[],this.isSearching=!1,this.userState="all",this.nonAclUserState=this.userState+".nonacl",this.memberSearch="",this.stateAndData=this.UserPagingService.constructDefault(),this.roles=[{name:"GUEST",title:"Guest",description:"Read only access to this event."},{name:"MANAGER",title:"Manager",description:"Read and Update access to this event."},{name:"OWNER",title:"Owner",description:"Read, Update and Delete access to this event."}],this.nonMember={role:this.roles[0]},this.filterMembers=this._filterMembers.bind(this)}$onInit(){this.$q.all({event:this.Event.get({id:this.$stateParams.eventId,populate:!1}).$promise}).then(ye=>{let ve=JSON.parse(JSON.stringify(this.stateAndData[this.userState]));this.stateAndData[this.nonAclUserState]=ve,delete this.stateAndData.active,delete this.stateAndData.inactive,delete this.stateAndData.disabled;let tt=Object.keys(ye.event.acl).concat(ye.event.userIds);this.stateAndData[this.userState].userFilter.in={_id:Object.keys(ye.event.acl)},this.stateAndData[this.userState].countFilter.in={_id:Object.keys(ye.event.acl)},this.stateAndData[this.nonAclUserState].userFilter.nin={_id:tt},this.stateAndData[this.nonAclUserState].countFilter.nin={_id:tt},this.UserPagingService.refresh(this.stateAndData).then(()=>{this.refreshMembers(ye.event)})})}_filterMembers(ye){let ve=this.$filter("filter")([ye],this.memberSearch);return ve&&ve.length}refreshMembers(ye){this.event=ye;let ve=l.default.indexBy(this.UserPagingService.users(this.stateAndData[this.userState]),"id");this.eventMembers=l.default.map(this.event.acl,(Oe,tt)=>{let ut=l.default.pick(ve[tt],"displayName","avatarUrl","lastUpdated");return ut.id=tt,ut.role={selected:l.default.find(this.roles,Lt=>Lt.name===Oe.role)},ut}),this.owners=this.getOwners()}getOwners(){return l.default.filter(this.eventMembers,ye=>"OWNER"===ye.role.selected.name)}count(){return this.UserPagingService.count(this.stateAndData[this.userState])}hasNext(){return this.UserPagingService.hasNext(this.stateAndData[this.userState])}next(){this.UserPagingService.next(this.stateAndData[this.userState]).then(()=>{this.refreshMembers(this.event)})}hasPrevious(){return this.UserPagingService.hasPrevious(this.stateAndData[this.userState])}previous(){this.UserPagingService.previous(this.stateAndData[this.userState]).then(()=>{this.refreshMembers(this.event)})}search(){this.UserPagingService.search(this.stateAndData[this.userState],this.memberSearch).then(()=>{this.refreshMembers(this.event)})}searchNonMembers(ye){return this.isSearching=!0,null==ye&&(ye=".*"),this.UserPagingService.search(this.stateAndData[this.nonAclUserState],ye).then(ve=>(this.nonMemberSearchResults=ve,0==this.nonMemberSearchResults.length&&this.nonMemberSearchResults.push({displayName:"No Results Found"}),this.isSearching=!1,this.nonMemberSearchResults))}addMember(){this.EventAccess.update({eventId:this.event.id,userId:this.nonMember.selected.id,role:this.nonMember.role.name},ye=>{delete this.nonMember.selected,this.stateAndData[this.userState].userFilter.in={_id:Object.keys(ye.acl)},this.stateAndData[this.userState].countFilter.in={_id:Object.keys(ye.acl)},this.UserPagingService.refresh(this.stateAndData).then(()=>{this.refreshMembers(ye)})})}removeMember(ye){this.EventAccess.delete({eventId:this.event.id,userId:ye.id},ve=>{this.stateAndData[this.userState].userFilter.in={_id:Object.keys(ve.acl)},this.stateAndData[this.userState].countFilter.in={_id:Object.keys(ve.acl)},this.UserPagingService.refresh(this.stateAndData).then(()=>{this.refreshMembers(ve)})})}updateRole(ye,ve){this.EventAccess.update({eventId:this.event.id,userId:ye.id,role:ve.name},Oe=>{this.UserPagingService.refresh(this.stateAndData).then(()=>{this.refreshMembers(Oe)})})}gotoUser(ye){this.$state.go("admin.user",{userId:ye.id})}}return Ae.$inject=["$state","$stateParams","$q","$filter","Event","EventAccess","UserService","UserPagingService"],Ae})();const D={template:s(20632),controller:w};var A=s(1629);let C=(()=>{class Ae{constructor(ye,ve){this.$element=ye,this.Form=ve}$onChanges(){this.open&&this.open.opened&&!this.formPanel.isOpen&&(this.form=new this.Form({eventId:this.event.id,color:"#"+("000000"+Math.floor(16777215*Math.random()).toString(16)).slice(-6)}),this.formPanel.open())}$onInit(){this.formPanel=new A.W(this.$element.find(".form-create-panel")[0]),this.formPanel.listen("MDCDialog:closing",ye=>{"close"!==ye.detail.action&&this.onFormCreateClose({form:this.form})}),this.formPanel.listen("MDCDialog:opening",()=>{})}formFilePicked(ye){this.form.formArchiveFile=ye.file}upload(){this.generalForm.$submitted=!0,!this.generalForm.$invalid&&(this.form.formArchiveFile?this.form.$save({},ye=>{this.form.id=ye.id,this.formPanel.close()},ye=>{this.error=ye.responseText}):this.formPanel.close())}}return Ae.$inject=["$element","Form"],Ae})();const T={template:s(53208),bindings:{open:"<",event:"<",onFormCreateClose:"&"},controller:C};let O=(()=>{class Ae{constructor(ye,ve,Oe,tt,ut,Lt,Gt){this.$state=ye,this.$stateParams=ve,this.$uibModal=Oe,this.$timeout=tt,this.Event=Lt,this.Form=Gt,this.token=ut.getToken(),this.filesToUpload=[],this.saveTime=0}$onInit(){this.Event.get({id:this.$stateParams.eventId},ye=>{if(this.event=ye,this.$stateParams.formId){var ve=l.default.find(ye.forms,Oe=>Oe.id.toString()===this.$stateParams.formId);this.form=new this.Form(ve)}else this.form=new this.Form,this.form.archived=!1,this.form.color="#"+(16777215*Math.random()<<0).toString(16),this.form.fields=[],this.form.userFields=[]})}showError(ye){this.$uibModal.open({component:"adminEventFormEditError",resolve:{model:()=>ye}})}archiveForm(){this.form.archived=!0,this.form.$save({eventId:this.event.id,id:this.form.id},function(){})}restoreForm(){this.form.archived=!1,this.form.$save({eventId:this.event.id,id:this.form.id},()=>{})}saveForm(){this.generalForm.$submitted=!0,!this.generalForm.$invalid&&(this.saving=!0,this.form.$save({eventId:this.event.id,id:this.form.id},()=>{this.saving=!1,this.generalForm.$setPristine(),this.generalForm.$setUntouched()},ye=>{var ve=ye.data||{};this.showError({title:"Error Saving Form",message:ve.errors?"If the problem persists please contact your MAGE administrator for help.":"Please try again later, if the problem persists please contact your MAGE administrator for help.",errors:ve.errors}),this.saving=!1}))}}return Ae.$inject=["$state","$stateParams","$uibModal","$timeout","LocalStorageService","Event","Form"],Ae})();const F={template:s(83003),controller:O},z={template:s(97022),bindings:{resolve:"<",modalInstance:"<"},controller:class B{$onInit(){this.model=this.resolve.model}ok(){this.modalInstance.dismiss()}}};let Q=(()=>{class Ae{ok(){this.modalInstance.close()}cancel(){this.modalInstance.dismiss()}}return Ae.$inject=[],Ae})();const re={template:s(82718),bindings:{modalInstance:"<"},controller:Q};let ae=(()=>{class Ae{constructor(ye,ve,Oe,tt,ut,Lt,Gt,an,At,Pt){this.$state=ye,this.$stateParams=ve,this.$filter=Oe,this.$uibModal=tt,this.$transitions=ut,this.$timeout=Lt,this.LocalStorageService=Gt,this.Event=an,this.Form=At,this.FormIcon=Pt,this.unSavedChanges=!1,this.unSavedUploads=!1,this.token=Gt.getToken(),this.icons={},this.iconMap={},this.styleMap={},this.formSaved=!1,this.filesToUpload=[],this.saveTime=0,this.fileUploadOptions={},this.styleKeys=["fill","fillOpacity","stroke","strokeOpacity","strokeWidth"]}$onInit(){this.Event.get({id:this.$stateParams.eventId},ye=>{if(this.event=ye,this.$stateParams.formId){const ve=ye.forms.find(Oe=>Oe.id.toString()===this.$stateParams.formId);this.form=new this.Form(ve),this.primaryField=this.form.fields.find(Oe=>Oe.name===this.form.primaryField)}else this.form=new this.Form,this.form.archived=!1,this.form.color="#"+(16777215*Math.random()<<0).toString(16),this.form.fields=[],this.form.userFields=[];this.mapStyles(),this.fetchIcons(this.$stateParams.eventId,this.$stateParams.formId),this.populateVariants()}),this.$transitions.onStart({},ye=>!this.unSavedChanges||(this.$uibModal.open({component:"adminEventFormEditUnsaved"}).result.then(()=>{this.unSavedChanges=!1,ye.run()}),!1))}fetchIcons(){this.FormIcon.query({eventId:this.$stateParams.eventId,formId:this.$stateParams.formId},ye=>{l.default.each(ye,ve=>{ve.primary&&ve.variant?(this.icons[ve.primary]||(this.icons[ve.primary]={}),this.icons[ve.primary][ve.variant]=l.default.extend(this.icons[ve.primary][ve.variant]||{},ve)):ve.primary?this.icons[ve.primary]=l.default.extend(this.icons[ve.primary]||{},ve):this.icons=ve}),this.mapIcons()})}mapIcons(){this.primaryField&&l.default.each(this.primaryField.choices,ye=>{this.iconMap[ye.title]={icon:this.getIcon(ye.title)},l.default.each(this.variants,ve=>{this.iconMap[ye.title][ve.title]={icon:this.getIcon(ye.title,ve.title)}})}),this.iconMap.icon=this.getIcon()}getIcon(ye,ve){return ye&&this.icons[ye]&&ve&&this.icons[ye][ve]&&this.icons[ye][ve].icon?this.icons[ye][ve].icon:ye&&this.icons[ye]&&this.icons[ye].icon?this.icons[ye].icon:this.icons.icon}mapStyles(){this.primaryField&&l.default.each(this.primaryField.choices,ye=>{this.styleMap[ye.title]={style:this.getStyle(ye.title)},l.default.each(this.variants,ve=>{this.styleMap[ye.title][ve.title]={style:this.getStyle(ye.title,ve.title)}})}),this.styleMap.style=this.getStyle()}getStyle(ye,ve){if(this.event&&this.form){var Oe=this.form.style||this.event.style;return l.default.pick(ye&&Oe[ye]&&ve&&Oe[ye][ve]?Oe[ye][ve]:ye&&Oe[ye]?Oe[ye]:Oe,this.styleKeys)}}onIconAdded(ye){var ve=ye.icon,Oe=ye.primary,tt=ye.variant;this.filesToUpload.push({file:ye.file,primary:Oe,variant:tt}),Oe&&tt?(this.icons[Oe]=this.icons[Oe]||{},this.icons[Oe][tt]=l.default.extend(this.icons[Oe][tt]||{},{icon:ve}),this.iconMap[Oe][tt].icon=this.getIcon(Oe,tt)):Oe?(this.icons[Oe]=l.default.extend(this.icons[Oe]||{},{icon:ve}),l.default.each(this.variants,ut=>{this.iconMap[Oe][ut.title].icon=this.getIcon(Oe,ut.title)})):(this.icons=l.default.extend(this.icons||{},{icon:ve}),this.primaryField&&l.default.each(this.primaryField.choices,ut=>{l.default.each(this.variants,Lt=>{this.iconMap[ut.title][Lt.title].icon=this.getIcon(ut.title,Lt.title)}),this.iconMap[ut.title].icon=this.getIcon(ut.title)})),this.unSavedChanges=!0}onStyleChanged(ye){var ve=ye.style,Oe=ye.primary,tt=ye.variant;this.form.style=this.form.style||c().copy(this.event.style),Oe&&tt?(this.form.style[Oe]||(this.form.style[Oe]=c().copy(this.form.style)),this.form.style[Oe][tt]=l.default.extend(this.form.style[Oe][tt]||{},ve),this.styleMap[Oe][tt].style=this.getStyle(Oe,tt)):Oe?(this.form.style[Oe]=l.default.extend(this.form.style[Oe]||{},ve),l.default.each(this.variants,ut=>{this.styleMap[Oe][ut.title].style=this.getStyle(Oe,ut.title)})):this.form.style=l.default.extend(this.form.style||{},ve),this.unSavedChanges=!0}save(){this.formSaved=!1,this.saving=!0,this.form.$save({eventId:this.event.id,id:this.form.id},()=>{l.default.each(this.form.fields,ye=>{this.isMemberField(ye)&&(ye.choices=[])}),l.default.each(this.filesToUpload,ye=>{this.upload(ye)}),this.saving=!1,this.formSaved=!0,this.completeSave()},ye=>{var ve=ye.data||{};this.showError({title:"Error Saving Form",message:ve.errors?"If the problem persists please contact your MAGE administrator for help.":"Please try again later, if the problem persists please contact your MAGE administrator for help.",errors:ve.errors}),this.saving=!1})}completeSave(){0===this.filesToUpload.length&&this.formSaved&&(this.saving=!1,this.unSavedChanges=!1,delete this.exportError,this.fetchIcons(),this.mapStyles())}upload(ye){var ve="/api/events/"+this.event.id+"/icons/"+this.form.id+(ye.primary?"/"+ye.primary:"")+(ye.variant?"/"+ye.variant:""),Oe=new FormData;Oe.append("icon",ye.file),jQuery.ajax({url:ve,type:"POST",headers:{Authorization:"Bearer "+this.LocalStorageService.getToken()},xhr:()=>jQuery.ajaxSettings.xhr(),success:()=>{this.$timeout(()=>{this.filesToUpload=l.default.reject(this.filesToUpload,tt=>ye.file===tt.file),this.completeSave()})},data:Oe,cache:!1,contentType:!1,processData:!1})}showError(ye){this.$uibModal.open({component:"adminEventFormEditError",resolve:{model:()=>ye}})}populateVariants(){if(this.form){if(this.primaryField=l.default.find(this.form.fields,ye=>ye.name===this.form.primaryField),this.variantField=l.default.find(this.form.fields,ye=>ye.name===this.form.variantField),!this.primaryField||this.primaryField.archived)return this.variants=[],this.form.primaryField=null,this.form.variantField=null,this.mapIcons(),void this.mapStyles();if(!this.variantField)return this.variants=[],this.form.variantField=null,this.mapIcons(),void this.mapStyles();"dropdown"===this.variantField.type?(this.variants=this.$filter("orderBy")(this.variantField.choices,"value"),this.showNumberVariants=!1):"date"===this.variantField.type&&(this.variantField.choices=this.variantField.choices||[],this.variants=this.$filter("orderBy")(this.variantField.choices,"value"),this.showNumberVariants=!0),this.mapIcons(),this.mapStyles()}}primaryChanged(){this.populateVariants(),this.unSavedChanges=!0}variantChanged(){this.populateVariants(),this.unSavedChanges=!0}symbologyFilter(ye,ve){return function(Oe){return"dropdown"===Oe.type&&(!ye||ye.name!==Oe.name)&&(ve&&Oe.name===ve.name||!Oe.archived)}}removeVariant(ye){this.variantField.choices=l.default.without(this.variantField.choices,ye),this.variants=this.$filter("orderBy")(this.variantField.choices,"value")}addVariantOption(ye){var ve={id:this.variantField.choices.length,title:ye,value:ye};this.variantField.choices=this.variantField.choices||new Array,this.variantField.choices.push(ve),this.variants=this.$filter("orderBy")(this.variantField.choices,"value")}isMemberField(ye){return l.default.contains(this.form.userFields,ye.name)}}return Ae.$inject=["$state","$stateParams","$filter","$uibModal","$transitions","$timeout","LocalStorageService","Event","Form","FormIcon"],Ae})();const V={template:s(11556),controller:ae},J={template:'<canvas height="20" width="34"></canvas>',bindings:{type:"@",style:"<",primary:"<",variant:"<"},controller:(()=>{class Ae{constructor(ye){this.$element=ye}$onChanges(){if(this.style){var ye=this.$element.find("canvas")[0],ve=this.style;if(this.style[this.primary]&&this.style[this.primary][this.variant]?ve=this.style[this.primary][this.variant]:this.style[this.primary]&&(ve=this.style[this.primary]),ye.getContext){var Oe=ye.getContext("2d");Oe.clearRect(0,0,ye.width,ye.height);var tt=this.hexToRgb(ve.fill);Oe.fillStyle="rgba("+tt.r+","+tt.g+","+tt.b+","+ve.fillOpacity+")",Oe.lineWidth=ve.strokeWidth;var ut=this.hexToRgb(ve.stroke);Oe.strokeStyle="rgba("+ut.r+","+ut.g+","+ut.b+","+ve.strokeOpacity+")","Polygon"===this.type?(Oe.beginPath(),Oe.moveTo(32,2),Oe.lineTo(14,2),Oe.lineTo(2,18),Oe.lineTo(20,18),Oe.lineTo(32,2),Oe.closePath(),Oe.fill(),Oe.stroke()):"LineString"===this.type&&(Oe.beginPath(),Oe.moveTo(2,15),Oe.lineTo(12,2),Oe.lineTo(22,12),Oe.lineTo(32,2),Oe.stroke())}}}hexToRgb(ye){var ve=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(ye);return ve?{r:parseInt(ve[1],16),g:parseInt(ve[2],16),b:parseInt(ve[3],16)}:null}}return Ae.$inject=["$element"],Ae})()};let te=(()=>{class Ae{constructor(ye,ve){this.$uibModal=ye,this.$timeout=ve}$onChanges(ye){ye.style&&(this.style=c().copy(this.style))}updateSymbology(){this.$uibModal.open({component:"adminEventFormMapSymbologyEdit",size:"lg",resolve:{icon:()=>this.icon,style:()=>this.style,primary:()=>this.primary,variant:()=>{}}}).result.then(ve=>{if(this.onStyleChanged({$event:{style:ve.style,primary:this.primary,variant:this.variant}}),this.style=ve.style,ve.file){var Oe=new FileReader;Oe.onload=(()=>tt=>{this.$timeout(()=>{this.icon=tt.target.result,this.onIconAdded({$event:{icon:tt.target.result,file:ve.file,primary:this.primary,variant:this.variant}})})})(),Oe.readAsDataURL(ve.file)}})}}return Ae.$inject=["$uibModal","$timeout"],Ae})();const W={template:s(87993),bindings:{title:"@",primary:"@",variant:"@",icon:"<",style:"<",onStyleChanged:"&",onIconAdded:"&"},controller:te},U={template:s(11561),bindings:{resolve:"<",modalInstance:"<"},controller:class K{constructor(){this.minicolorSettings={position:"bottom left"}}$onInit(){this.icon=c().copy(this.resolve.icon),this.style=c().copy(this.resolve.style),this.primary=c().copy(this.resolve.primary),this.variant=c().copy(this.resolve.variant)}onFile(Pe){this.file=Pe.file}done(Pe){Pe.$submitted=!0,!Pe.$invalid&&this.modalInstance.close({style:this.style,file:this.file})}cancel(){this.modalInstance.dismiss({reason:"cancel"})}}};c().module("mage").component("adminEventFormMapEdit",V).component("adminEventFormMapShape",J).component("adminEventFormMapSymbology",W).component("adminEventFormMapSymbologyEdit",U);var se=s(15439),de=s.n(se);const fe=(...Ae)=>Math.random(...Ae);let me=(()=>{class Ae{constructor(ye,ve,Oe,tt,ut,Lt,Gt){this.$stateParams=ye,this.$uibModal=ve,this.$transitions=Oe,this.LocalStorageService=tt,this.Event=ut,this.Form=Lt,this.UserService=Gt,this.unSavedChanges=!1,this.token=tt.getToken(),this.fieldFactory={radio:this.createSelectField,dropdown:this.createSelectField,multiselectdropdown:this.createMultiSelectField,checkbox:this.createCheckbox,numberfield:this.createNumberField,date:this.createDateField,textfield:this.createTextField,textarea:this.createTextAreaField,password:this.createPasswordField,email:this.createEmailField,geometry:this.createGeometryField}}$onInit(){this.Event.get({id:this.$stateParams.eventId},ye=>{if(this.event=new this.Event(ye),this.$stateParams.formId){const ve=l.default.find(ye.forms,Oe=>Oe.id.toString()===this.$stateParams.formId);this.form=new this.Form(ve),this.primaryField=this.form.fields.find(Oe=>Oe.name===this.form.primaryField),this.event.forms=[this.form],this.UserService.getMyself().then(Oe=>{this.observations=[];for(let tt=0;tt<3;tt++){const ut=this.createObservation(tt,Number(this.$stateParams.formId),Oe);ut.style={iconUrl:this.getObservationIconUrl(ut,ve)},this.observations.push(ut)}})}else this.form=new this.Form,this.form.archived=!1,this.form.color="#"+(16777215*fe()<<0).toString(16),this.form.fields=[],this.form.userFields=[]}),this.$transitions.onStart({},ye=>!this.unSavedChanges||(this.$uibModal.open({component:"adminEventFormEditUnsaved"}).result.then(()=>{this.unSavedChanges=!1,ye.run()}),!1))}fieldFilter(ye){return function(ve){return ye&&ve.name===ye||!ve.archived}}onFieldChanged(){this.unSavedChanges=!0}getObservationIconUrl(ye,ve){let Oe,tt;if(ye.properties.forms.length){const ut=ye.properties.forms[0];Oe=ut[ve.primaryField],tt=ut[ve.variantField]}return this.getObservationIconUrlForEvent(this.$stateParams.eventId,this.$stateParams.formId,Oe,tt)}getObservationIconUrlForEvent(ye,ve,Oe,tt){let ut="/api/events/"+ye+"/icons";return ve&&(ut+="/"+ve),Oe&&(ut+="/"+Oe),tt&&(ut+="/"+tt),ut+"?access_token="+this.LocalStorageService.getToken()}createObservation(ye,ve,Oe){return{id:ye,createdAt:de()(new Date).toISOString(),geometry:{type:"Point",coordinates:[180-360*fe(),80-160*fe()]},lastModified:de()(new Date).toISOString(),properties:{timestamp:de()(new Date).toISOString(),forms:[this.createForm(ve)]},type:"Feature",user:Oe,favoriteUserIds:[],attachments:[]}}createForm(ye){const ve={formId:ye};return this.form.fields.forEach(Oe=>{this.createField(ve,Oe)}),ve}createField(ye,ve){const Oe=this.fieldFactory[ve.type]||this.fieldFactory.createTextField;Oe&&Oe(ye,ve)}createGeometryField(ye,ve){ye[ve.name]={type:"Point",coordinates:[180-360*fe(),80-160*fe()]}}createTextField(ye,ve){ye[ve.name]="Lorem ipsum"}createTextAreaField(ye,ve){ye[ve.name]="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Nam at lectus urna duis convallis convallis tellus."}createSelectField(ye,ve){ye[ve.name]=ve.choices.length?ve.choices[Math.floor(fe()*ve.choices.length)].title:""}createMultiSelectField(ye,ve){if(ve.choices.length){const Oe=new Set;for(let tt=0;tt<Math.floor(fe()*ve.choices.length);tt++)Oe.add(ve.choices[Math.floor(fe()*ve.choices.length)].title);ye[ve.name]=Array.from(Oe).join(", ")}else ye[ve.name]=""}createCheckbox(ye,ve){const Oe=Math.floor(2*fe());ye[ve.name]=1===Oe?ve.title:""}createNumberField(ye,ve){ye[ve.name]=Math.floor(100*fe())+1}createDateField(ye,ve){ye[ve.name]=de()(new Date).toISOString()}createPasswordField(ye,ve){ye[ve.name]="**********"}createEmailField(ye,ve){ye[ve.name]="mage@email.com"}save(){this.saving=!0,this.form.$save({eventId:this.event.id,id:this.form.id},()=>{this.saving=!1,this.unSavedChanges=!1},ye=>{const ve=ye.data||{};this.showError({title:"Error Saving Form",message:ve.errors?"If the problem persists please contact your MAGE administrator for help.":"Please try again later, if the problem persists please contact your MAGE administrator for help.",errors:ve.errors}),this.saving=!1})}showError(ye){this.$uibModal.open({component:"adminEventFormEditError",resolve:{model:()=>ye}})}}return Ae.$inject=["$stateParams","$uibModal","$transitions","LocalStorageService","Event","Form","UserService"],Ae})();const be={template:s(96057),controller:me};c().module("mage").component("adminEventFormFeedEdit",be);let Ee=(()=>{class Ae{constructor(ye,ve,Oe,tt,ut,Lt,Gt,an){this.$state=ye,this.$stateParams=ve,this.$uibModal=Oe,this.$timeout=tt,this.$transitions=ut,this.Event=Gt,this.Form=an,this.unSavedChanges=!1,this.token=Lt.getToken(),this.fieldForms={},this.iconMap={},this.styleMap={},this.formSaved=!1,this.filesToUpload=[],this.saveTime=0,this.fieldTypes=[{name:"attachment",title:"Attachment"},{name:"checkbox",title:"Checkbox"},{name:"date",title:"Date"},{name:"email",title:"Email"},{name:"hidden",title:"Hidden"},{name:"geometry",title:"Location"},{name:"numberfield",title:"Number"},{name:"radio",title:"Radio Buttons"},{name:"dropdown",title:"Select"},{name:"multiselectdropdown",title:"Multiple Select",hidden:!0},{name:"textfield",title:"Text"},{name:"textarea",title:"Text Area"},{name:"userDropdown",title:"User Select"},{name:"multiSelectUserDropdown",title:"User Multiple Select",hidden:!0}],this.attachmentAllowedTypes=[{name:"image",title:"Image"},{name:"video",title:"Video"},{name:"audio",title:"Audio"}],this.fieldNameMap=l.default.indexBy(this.fieldTypes,"name"),this.newField=this.createField(),this.accordion={},this.accordion.oneAtATime=!0,this.variants=[]}$onInit(){this.Event.get({id:this.$stateParams.eventId},ye=>{if(this.event=ye,this.$stateParams.formId&&"new"!==this.$stateParams.formId){const ve=l.default.find(ye.forms,Oe=>Oe.id.toString()===this.$stateParams.formId);this.form=new this.Form(ve),l.default.each(this.form.fields,Oe=>{Oe.name===this.form.primaryField&&(this.primaryField=Oe)})}else this.$stateParams.form?(this.form=new this.Form,this.form.archived=!1,this.form.color=this.$stateParams.form.color,this.form.name=this.$stateParams.form.name,this.form.description=this.$stateParams.form.description,this.form.fields=[],this.form.userFields=[]):(this.form=new this.Form,this.form.archived=!1,this.form.color="#"+(16777215*Math.random()<<0).toString(16),this.form.fields=[],this.form.userFields=[]);this.previousForm=c().copy(this.form)}),this.$transitions.onStart({},ye=>!this.unSavedChanges||(this.$uibModal.open({component:"adminEventFormEditUnsaved"}).result.then(()=>{this.unSavedChanges=!1,ye.run()}),!1))}$doCheck(){this.form&&!this.saving&&(l.default.some(Object.values(this.fieldForms),ve=>ve&&ve.$dirty)&&(this.unSavedChanges=!0),this.previousForm=c().copy(this.form))}createField(){return{title:"New field",type:"textfield",required:!1,choices:[]}}deletableField(ye){return-1!==ye.name.indexOf("field")}getTypeValue(ye){return this.isMemberField(ye)?"dropdown"===ye.type?this.fieldNameMap.userDropdown.title:this.fieldNameMap.multiSelectUserDropdown.title:this.fieldNameMap[ye.type].title}onFieldTypeChange(){"attachment"===this.newField.type?this.newField.allowedAttachmentTypes=this.attachmentAllowedTypes.map(ye=>ye.name):delete this.newField.attachmentAllowedTypes}addAllowedAttachmentTypes(ye){ye.allowedAttachmentTypes=this.attachmentAllowedTypes.map(ve=>ve.name)}addField(){if(this.newFieldForm.$invalid)return;const ye=this.form.fields,ve=l.default.isEmpty(ye)?0:l.default.max(ye,Oe=>Oe.id).id+1;this.newField.id=ve,this.newField.name="field"+ve,"userDropdown"===this.newField.type&&(this.form.userFields.push(this.newField.name),this.newField.type="dropdown"),"dropdown"===this.newField.type&&this.newField.$multiselect&&(this.newField.type="multiselectdropdown"),ye.push(this.newField),this.newField=this.createField(),this.unSavedChanges=!0}removeField(ye){const ve=l.default.find(this.form.fields,Oe=>ye===Oe.id);ve&&(ve.archived=!0),this.unSavedChanges=!0}moveFieldUp(ye,ve){ye.stopPropagation(),ye.preventDefault();const Oe=l.default.sortBy(this.form.fields,ut=>ut.id);let tt=null;for(let ut=Oe.length-1;ut>=0;ut--){const Lt=Oe[ut];if(Lt.id<ve.id&&!Lt.archived){tt=Lt;break}}if(tt){const ut=tt.id;tt.id=ve.id,ve.id=ut}this.unSavedChanges=!0}moveFieldDown(ye,ve){ye.stopPropagation(),ye.preventDefault();const Oe=l.default.sortBy(this.form.fields,ut=>ut.id);let tt=null;for(let ut=0;ut<Oe.length;ut++){const Lt=Oe[ut];if(Lt.id>ve.id&&!Lt.archived){tt=Lt;break}}if(tt){const ut=tt.id;tt.id=ve.id,ve.id=ut}this.unSavedChanges=!0}showError(ye){this.$uibModal.open({component:"adminEventFormEditError",resolve:{model:()=>ye}})}save(){const ye=l.default.filter(this.form.fields,ve=>!ve.archived);l.default.isEmpty(ye)||(this.formSaved=!1,this.saving=!0,this.form.$save({eventId:this.event.id,id:this.form.id},()=>{l.default.each(this.form.fields,ve=>{this.isMemberField(ve)&&(ve.choices=[])}),this.saving=!1,this.formSaved=!0,this.completeSave()},ve=>{const Oe=ve.data||{};this.showError({title:"Error Saving Form",message:Oe.errors?"If the problem persists please contact your MAGE administrator for help.":"Please try again later, if the problem persists please contact your MAGE administrator for help.",errors:Oe.errors}),this.saving=!1}))}completeSave(){this.formSaved&&(this.saving=!1,this.unSavedChanges=!1,Object.values(this.fieldForms).forEach(ye=>{ye&&ye.$setPristine()}),delete this.exportError,-1!==this.$state.current.url.indexOf("/forms/new"))&&this.$state.go("admin.formFieldsEdit",{eventId:this.event.id,formId:this.form.id})}addOption(ye,ve){ye.choices=ye.choices||new Array;const Oe=l.default.isEmpty(ye.choices)?1:l.default.max(ye.choices,tt=>tt.id).id+1;ye.choices.push({id:Oe,title:ve,value:ye.choices.length}),this.unSavedChanges=!0}deleteOption(ye,ve){for(var Oe=0;Oe<ye.choices.length;Oe++)if(ye.choices[Oe].title===ve.title){ye.choices.splice(Oe,1);break}this.unSavedChanges=!0}reorderOption(ye,ve){this.$uibModal.open({component:"adminEventFormFieldOptionReorder",resolve:{option:()=>ve,field:()=>ye}}).result.then(tt=>{ye.choices=tt,this.unSavedChanges=!0})}showAddOptions(ye){return"radio"===ye.type||"dropdown"===ye.type||"multiselectdropdown"===ye.type}hideAddOptions(ye){return"radio"===ye.type||"dropdown"===ye.type||"userDropdown"===ye.type}isMemberField(ye){return l.default.contains(this.form.userFields,ye.name)}isUserDropdown(ye){return"userDropdown"===ye.type}}return Ae.$inject=["$state","$stateParams","$uibModal","$timeout","$transitions","LocalStorageService","Event","Form"],Ae})();const Ce={template:s(52104),controller:Ee};let ke=(()=>{class Ae{constructor(){}$onInit(){this.option=c().copy(this.resolve.option),this.choices=c().copy(this.resolve.field.choices)}move(ye){var ve=l.default.findIndex(this.choices,Oe=>Oe.title===this.option.title);ye>ve&&ye--,this.choices.splice(ye,0,this.choices.splice(ve,1)[0])}done(){this.modalInstance.close(this.choices)}cancel(){this.modalInstance.dismiss("cancel")}}return Ae.$inject=[],Ae})();const ge={template:s(22361),bindings:{resolve:"<",modalInstance:"<"},controller:ke};c().module("mage").component("adminEventFormFieldsEdit",Ce).component("adminEventFormFieldOptionReorder",ge),c().module("mage").component("adminEventFormEdit",F).component("adminEventFormCreate",T).component("adminEventFormEditError",z).component("adminEventFormEditUnsaved",re),c().module("mage").component("adminEvent",h).component("adminEvents",p).component("adminEventEdit",b).component("adminEventDelete",E).component("adminEventAccess",D)},60621:(I,y,s)=>{"use strict";s.r(y);v