UNPKG

@ngageoint/mage.web-app

Version:

The Mage web-app is the UI for interacting with the Mage service in a web browser.

1 lines 8.85 MB
(self.webpackChunkadmin=self.webpackChunkadmin||[]).push([[179],{9290:(A,f,o)=>{"use strict";o.r(f);var c=o(80412),u=o.n(c),l=o(86349),p=o(15439),b=o.n(p);let m=(()=>{class T{constructor(z,j,O,U,V,Z,ne,re){this.$uibModal=z,this.$state=j,this.$stateParams=O,this.DeviceService=V,this.UserService=Z,this.LoginService=ne,this.UserPagingService=re,this.token=U.getToken(),this.hasDeviceEditPermission=l.default.contains(Z.myself.role.permissions,"UPDATE_DEVICE"),this.hasDeviceDeletePermission=l.default.contains(Z.myself.role.permissions,"DELETE_DEVICE"),this.filter={device:{id:O.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(z=>{this.device=z}),this.LoginService.query({filter:this.filter,limit:this.loginResultsLimit}).then(z=>{this.loginPage=z,z.logins.length&&(this.firstLogin=z.logins[0])}),this.UserPagingService.refresh(this.stateAndData)}userSearchChanged(){""===this.user&&(this.user=null,this.filterLogins())}searchLogins(z){return this.isSearching=!0,null==z&&(z=".*"),this.UserPagingService.search(this.stateAndData.all,z).then(j=>(this.loginSearchResults=j,0==this.loginSearchResults.length&&this.loginSearchResults.push({displayName:"No Results Found"}),this.isSearching=!1,this.loginSearchResults))}iconClass(z){if(!z)return;if(z.iconClass)return z.iconClass;const j=z.userAgent||"";return z.iconClass="Web Client"===z.appVersion?"fa-desktop admin-desktop-icon":-1!==j.toLowerCase().indexOf("android")?"fa-android admin-android-icon":-1!==j.toLowerCase().indexOf("ios")?"fa-apple admin-apple-icon":"fa-mobile admin-generic-icon",z.iconClass}editDevice(z){this.$state.go("admin.deviceEdit",{deviceId:z.id})}gotoUser(z){this.$state.go("admin.user",{userId:z.id})}deleteDevice(z){this.$uibModal.open({resolve:{device:()=>z},component:"adminDeviceDelete"}).result.then(()=>{this.$state.go("admin.devices")})}registerDevice(z){z.registered=!0,this.DeviceService.updateDevice(z).then(()=>{this.onDeviceRegistered({$event:{device:z}})})}unregisterDevice(z){z.registered=!1,this.DeviceService.updateDevice(z).then(()=>{this.onDeviceUnregistered({$event:{device:z}})})}pageLogin(z){this.LoginService.query({url:z,filter:this.filter,limit:this.loginResultsLimit}).then(j=>{j.logins.length&&(this.loginPage=j,this.showNext=0!==j.logins.length,this.showPrevious=j.logins[0].id!==this.firstLogin.id)})}filterLogins(){this.filter.user=this.user,this.filter.startDate=this.login.startDate,this.login.endDate&&(this.filter.endDate=b()(this.login.endDate).endOf("day").toDate()),this.LoginService.query({filter:this.filter,limit:this.loginResultsLimit}).then(z=>{this.showNext=0!==z.logins.length,this.showPrevious=!1,this.loginPage=z})}openLoginStart(z){z.preventDefault(),z.stopPropagation(),this.login.startDateOpened=!0}openLoginEnd(z){z.preventDefault(),z.stopPropagation(),this.login.endDateOpened=!0}loginResultsLimitChanged(){this.filterLogins()}onFilterDateChanged(){this.filterLogins()}}return T.$inject=["$uibModal","$state","$stateParams","LocalStorageService","DeviceService","UserService","LoginService","UserPagingService"],T})();const g={template:o(68514),bindings:{onDeviceRegistered:"&",onDeviceUnregistered:"&"},controller:m};let y=(()=>{class T{constructor(z,j,O,U,V,Z,ne){this.$uibModal=z,this.$state=j,this.DeviceService=U,this.UserService=V,this.DevicePagingService=Z,this.UserPagingService=ne,this.token=O.getToken(),this.filter="all",this.deviceSearch="",this.devices=[],this.deviceStateAndData=this.DevicePagingService.constructDefault(),this.hasDeviceCreatePermission=l.default.contains(V.myself.role.permissions,"CREATE_DEVICE"),this.hasDeviceEditPermission=l.default.contains(V.myself.role.permissions,"UPDATE_DEVICE"),this.hasDeviceDeletePermission=l.default.contains(V.myself.role.permissions,"DELETE_DEVICE")}$onInit(){this.DevicePagingService.refresh(this.deviceStateAndData).then(()=>{this.devices=this.DevicePagingService.devices(this.deviceStateAndData[this.filter])})}count(z){return this.deviceStateAndData[z].deviceCount}hasNext(){return this.DevicePagingService.hasNext(this.deviceStateAndData[this.filter])}next(){this.DevicePagingService.next(this.deviceStateAndData[this.filter]).then(z=>{this.devices=z})}hasPrevious(){return this.DevicePagingService.hasPrevious(this.deviceStateAndData[this.filter])}previous(){this.DevicePagingService.previous(this.deviceStateAndData[this.filter]).then(z=>{this.devices=z})}search(){this.DevicePagingService.search(this.deviceStateAndData[this.filter],this.deviceSearch).then(z=>{z.length>0?this.devices=z:this.DevicePagingService.search(this.deviceStateAndData[this.filter],this.deviceSearch,this.deviceSearch).then(j=>{this.devices=j})})}iconClass(z){if(z.iconClass)return z.iconClass;const j=z.userAgent||"";return z.iconClass="Web Client"===z.appVersion?"fa-desktop admin-desktop-icon":-1!==j.toLowerCase().indexOf("android")?"fa-android admin-android-icon":-1!==j.toLowerCase().indexOf("ios")?"fa-apple admin-apple-icon":"fa-mobile admin-generic-icon",z.iconClass}changeFilter(z){this.filter=z,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(z){this.$state.go("admin.device",{deviceId:z.id})}editDevice(z,j){z.stopPropagation(),this.$state.go("admin.deviceEdit",{deviceId:j.id})}registerDevice(z,j){z.stopPropagation(),j.registered=!0,this.DeviceService.updateDevice(j).then(()=>{this.DevicePagingService.refresh(this.deviceStateAndData).then(()=>{this.devices=this.DevicePagingService.devices(this.deviceStateAndData[this.filter])}),this.onDeviceRegistered({$event:{device:j}})},O=>{this.error=O.responseText})}deleteDevice(z,j){z.stopPropagation(),this.$uibModal.open({resolve:{device:()=>j},component:"adminDeviceDelete"}).result.then(()=>{this.DevicePagingService.refresh(this.deviceStateAndData).then(()=>{this.devices=this.DevicePagingService.devices(this.deviceStateAndData[this.filter])})})}}return T.$inject=["$uibModal","$state","LocalStorageService","DeviceService","UserService","DevicePagingService","UserPagingService"],T})();const _={template:o(50830),bindings:{onDeviceRegistered:"&"},controller:y};let v=(()=>{class T{constructor(z,j,O,U,V){this.$state=z,this.$stateParams=j,this.DeviceService=U,this.UserPagingService=V,this.token=O.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(z=>{this.device=u().copy(z),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(z){return this.isSearching=!0,null==z&&(z=".*"),this.UserPagingService.search(this.stateAndData[this.userState],z).then(j=>(this.pocs=j,this.isSearching=!1,this.pocs))}iconClass(z){if(z.iconClass)return z.iconClass;var j=z.userAgent||"";return z.iconClass="Web Client"===z.appVersion?"fa-desktop admin-desktop-icon":-1!==j.toLowerCase().indexOf("android")?"fa-android admin-android-icon":-1!==j.toLowerCase().indexOf("ios")?"fa-apple admin-apple-icon":"fa-mobile admin-generic-icon",z.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 z=this.device;null!=this.poc&&(z.userId=this.poc.id),z.id?this.DeviceService.updateDevice(z).then(()=>{this.$state.go("admin.device",{deviceId:z.id})},j=>{this.saving=!1,this.error=j.responseText,this.poc=null}):this.DeviceService.createDevice(z).then(j=>{this.$state.go("admin.device",{deviceId:j.id})},j=>{this.saving=!1,this.error=j.responseText,this.poc=null})}}return T.$inject=["$state","$stateParams","LocalStorageService","DeviceService","UserPagingService"],T})();const E={template:o(377),controller:v};let k=(()=>{class T{constructor(z){this.DeviceService=z}$onInit(){this.device=this.resolve.device}deleteDevice(z){this.DeviceService.deleteDevice(z).then(()=>{this.modalInstance.close(z)})}cancel(){this.modalInstance.dismiss("cancel")}}return T.$inject=["DeviceService"],T})();const M={template:o(91955),bindings:{resolve:"<",modalInstance:"<"},controller:k};u().module("mage").component("adminDevice",g).component("adminDevices",_).component("adminDeviceEdit",E).component("adminDeviceDelete",M)},1770:(A,f,o)=>{"use strict";o.r(f);var c=o(80412),u=o.n(c),l=o(86349);let p=(()=>{class Se{constructor(be,me,Ie,Ze,rt,Ct,Ft,cn,qt,Vt){this.$state=be,this.$stateParams=me,this.$filter=Ie,this.$q=Ze,this.$uibModal=rt,this.UserService=Ft,this.Event=cn,this.Team=qt,this.Layer=Vt,this.token=Ct.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(be=>{const me=l.default.indexBy(be.teams,"id");this.layers=be.layers;const Ie=l.default.indexBy(be.layers,"id");this.event=be.event;const Ze=l.default.find(this.event.teamIds,cn=>{if(me[cn])return me[cn].teamEventId===this.event.id});this.eventTeam=me[Ze],this.getMembersPage(),this.getNonMembersPage(),this.getTeamsPage(),this.getNonTeamsPage();const rt=l.default.filter(this.event.teamIds,cn=>{if(me[cn])return me[cn].teamEventId!==this.event.id});this.teamsInEvent=l.default.map(rt,cn=>me[cn]),this.teamsNotInEvent=l.default.filter(be.teams,cn=>-1===this.event.teamIds.indexOf(cn.id)&&!cn.teamEventId),this.layer={},this.eventLayers=l.default.chain(this.event.layerIds).filter(cn=>Ie[cn]).map(cn=>Ie[cn]).value(),this.nonLayers=l.default.filter(this.layers,cn=>-1===this.event.layerIds.indexOf(cn.id));const Ct=this.event.acl[this.UserService.myself.id],Ft=Ct?Ct.permissions:[];this.hasReadPermission=l.default.contains(this.UserService.myself.role.permissions,"READ_EVENT_ALL")||l.default.contains(Ft,"read"),this.hasUpdatePermission=l.default.contains(this.UserService.myself.role.permissions,"UPDATE_EVENT")||l.default.contains(Ft,"update"),this.hasDeletePermission=l.default.contains(this.UserService.myself.role.permissions,"DELETE_EVENT")||l.default.contains(Ft,"delete")})}getMembersPage(){this.loadingMembers=!0,this.Event.getMembers({id:this.$stateParams.eventId,page:this.membersPageIndex,page_size:this.membersPageSize,total:!0,term:this.memberSearchTerm},be=>{this.loadingMembers=!1,this.membersPage=be})}getNonMembersPage(){this.loadingNonMembers=!0,this.Event.getNonMembers({id:this.$stateParams.eventId,page:this.nonMembersPageIndex,page_size:this.nonMembersPageSize,total:!0,term:this.nonMemberSearchTerm},be=>{this.loadingNonMembers=!1,this.nonMembersPage=be})}addMember(be,me){be.stopPropagation(),this.nonMember=null,this.eventTeam.userIds.push(me.id),this.eventTeam.$save(()=>{this.getMembersPage(),this.getNonMembersPage()})}removeMember(be,me){be.stopPropagation(),this.eventTeam.userIds=l.default.reject(this.eventTeam.userIds,Ie=>me.id===Ie),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},be=>{this.loadingTeams=!1,this.teamsPage=be})}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},be=>{this.loadingNonTeams=!1,this.nonTeamsPage=be})}filterLayers(be){let me=this.eventLayers;return this.layerSearch&&(me=this.$filter("filter")([be],this.layerSearch)),me&&me.length}filterNonLayers(be){let me=this.nonLayers;return this.nonLayerSearch&&(me=this.$filter("filter")([be],this.nonLayerSearch)),me&&me.length}normalize(be){return{id:be.id,description:be.email||be.description,name:be.name||be.displayName,type:be.name?"team":"user"}}addTeam(be,me){be.stopPropagation(),this.nonMember=null,this.event.teamIds.push(me.id),this.teamsInEvent.push(me),this.teamsNotInEvent=l.default.reject(this.teamsNotInEvent,Ie=>Ie.id===me.id),this.Event.addTeam({id:this.event.id},me).$promise.then(()=>{this.getTeamsPage(),this.getNonTeamsPage()})}removeTeam(be,me){be.stopPropagation(),this.event.teamIds=l.default.reject(this.event.teamIds,Ie=>Ie===me.id),this.teamsNotInEvent.push(me),this.teamsInEvent=l.default.reject(this.teamsInEvent,Ie=>Ie.id===me.id),this.Event.removeTeam({id:this.event.id,teamId:me.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(be,me){be.stopPropagation(),this.layer={},this.event.layerIds.push(me.id),this.eventLayers.push(me),this.nonLayers=l.default.reject(this.nonLayers,Ie=>Ie.id===me.id),this.Event.addLayer({id:this.event.id},me)}removeLayer(be,me){this.event.layerIds=l.default.reject(this.event.layerIds,Ie=>Ie===me.id),this.eventLayers=l.default.reject(this.eventLayers,Ie=>Ie.id===me.id),this.nonLayers.push(me),this.Event.removeLayer({id:this.event.id,layerId:me.id})}saveFormRestrictions(){this.restrictions.minObservationForms.$setValidity("formsMax",!0),this.restrictions.maxObservationForms.$setValidity("formsMin",!0);const be=this.event.forms||[],me=be.reduce((Ze,rt)=>Ze+rt.min,0);if(this.event.maxObservationForms&&me>this.event.maxObservationForms&&this.restrictions.maxObservationForms.$setValidity("formsMin",!1),be.every(Ze=>null!=Ze.max)){const Ze=be.reduce((rt,Ct)=>rt+Ct.max,0);this.event.minObservationForms&&this.event.minObservationForms>Ze&&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()},Ze=>{500===Ze.status?(restrictionsError,this.restrictionsError={message:Ze.data}):Ze.data&&Ze.data.message&&(this.restrictionsError={errors:Ze.data.errors})})}editEvent(be){this.$state.go("admin.eventEdit",{eventId:be.id})}editAccess(be){this.$state.go("admin.eventAccess",{eventId:be.id})}editForm(be,me){this.$state.go("admin.formEdit",{eventId:be.id,formId:me.id})}gotoMember(be){be.username?this.$state.go("admin.user",{userId:be.id}):this.$state.go("admin.team",{teamId:be.id})}gotoLayer(be){this.$state.go("admin.layer",{layerId:be.id})}completeEvent(be){be.complete=!0,be.$save(me=>{this.event=me})}activateEvent(be){be.complete=!1,be.$save(()=>{be.complete=!1})}createForm(){this.formCreateOpen={opened:!0}}onFormCreateClose(be){this.formCreateOpen={opened:!1},be.id?this.$state.go("admin.formEdit",{eventId:this.event.id,formId:be.id}):this.$state.go("admin.fieldsCreate",{eventId:this.event.id,form:be})}moveFormUp(be,me){be.stopPropagation();let Ie=this.event.forms,Ze=Ie.indexOf(me),rt=Ze-1;if(!this.showArchivedForms)for(;rt>=0&&Ie[rt].archived;rt--);Ie.splice(rt,0,Ie.splice(Ze,1)[0]),this.event.$save()}moveFormDown(be,me){be.stopPropagation();let Ie=this.event.forms,Ze=Ie.indexOf(me),rt=Ze+1;if(!this.showArchivedForms)for(;Ze<Ie.length&&Ie[rt].archived;rt++);Ie.splice(rt,0,Ie.splice(Ze,1)[0]),this.event.$save()}preview(be,me){be.stopPropagation(),this.previewForm=me}closePreview(){this.previewForm=null}deleteEvent(){this.$uibModal.open({resolve:{event:()=>this.event},component:"adminEventDelete"}).result.then(()=>{this.$state.go("admin.events")})}}return Se.$inject=["$state","$stateParams","$filter","$q","$uibModal","LocalStorageService","UserService","Event","Team","Layer"],Se})();const b={template:o(86663),controller:p};let m=(()=>{class Se{constructor(be,me,Ie,Ze,rt){this.$state=be,this.$filter=me,this.$uibModal=Ie,this.Event=Ze,this.UserService=rt,this.events=[],this.totalEvents=0,this.filter="active",this.page=0,this.itemsPerPage=10,this.eventSearch="",this.searchTimeout=null,this.projection={name:!0,description:!0,acl:!0,complete:!0}}$onInit(){this.loadEvents()}loadEvents(){const be={state:this.filter,populate:!1,projection:JSON.stringify(this.projection),page:this.page,page_size:this.itemsPerPage,includePagination:!0};this.eventSearch&&this.eventSearch.trim()&&(be.term=this.eventSearch.trim()),this.Event.queryWithPagination(be,me=>{this.events=me.items||[],this.totalEvents=me.totalCount||0})}handleSearchChange(){this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=setTimeout(()=>{this.page=0,this.loadEvents()},300)}handleFilterChange(){this.page=0,this.loadEvents()}handlePageChange(){this.loadEvents()}nextPage(){(this.page+1)*this.itemsPerPage<this.totalEvents&&(this.page++,this.loadEvents())}previousPage(){this.page>0&&(this.page--,this.loadEvents())}reset(){this.page=0,this.eventSearch="",this.filter="active",this.loadEvents()}newEvent(){this.$state.go("admin.eventCreate")}gotoEvent(be){this.$state.go("admin.event",{eventId:be.id})}editEvent(be,me){be.stopPropagation(),this.$state.go("admin.eventEdit",{eventId:me.id})}hasUpdatePermission(be){return this.hasPermission(be,"update")}hasDeletePermission(be){return this.hasPermission(be,"delete")}hasPermission(be,me){var Ie=be.acl[this.UserService.myself.id],Ze=Ie?Ie.permissions:[];switch(me){case"update":return l.default.contains(this.UserService.myself.role.permissions,"UPDATE_EVENT")||l.default.contains(Ze,"update");case"delete":return l.default.contains(this.UserService.myself.role.permissions,"DELETE_EVENT")||l.default.contains(Ze,"delete")}}deleteEvent(be,me){be.stopPropagation(),this.$uibModal.open({resolve:{event:()=>me},component:"adminEventDelete"}).result.then(Ze=>{this.events=l.default.without(this.events,Ze)})}}return Se.$inject=["$state","$filter","$uibModal","Event","UserService"],Se})();const g={template:o(42469),controller:m};let y=(()=>{class Se{constructor(be,me,Ie){this.$state=be,this.$stateParams=me,this.Event=Ie}$onInit(){this.$stateParams.eventId?this.Event.get({id:this.$stateParams.eventId},be=>{this.event=new this.Event({id:be.id,name:be.name,description:be.description})}):(this.event=new this.Event,this.event.noGeometry=!1)}saveEvent(be){be.$save(()=>{this.$state.go("admin.event",{eventId:be.id})},me=>{500===me.status?this.error={message:me.data}:me.data&&me.data.message&&(this.error={message:"Error Saving Event Information",errors:me.data.errors})})}cancel(){this.event.id?this.$state.go("admin.event",{eventId:this.event.id}):this.$state.go("admin.events")}}return Se.$inject=["$state","$stateParams","Event"],Se})();const _={template:o(8331),controller:y};let v=(()=>{class Se{constructor(){}$onInit(){this.event=this.resolve.event}deleteEvent(be){be.$delete(()=>{this.modalInstance.close(be)})}cancel(){this.modalInstance.dismiss("cancel")}}return Se.$inject=[],Se})();const E={template:o(84250),bindings:{resolve:"<",modalInstance:"<"},controller:v};let k=(()=>{class Se{constructor(be,me,Ie,Ze,rt,Ct,Ft,cn){this.$state=be,this.$stateParams=me,this.$q=Ie,this.$filter=Ze,this.Event=rt,this.EventAccess=Ct,this.UserService=Ft,this.UserPagingService=cn,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(be=>{let me=JSON.parse(JSON.stringify(this.stateAndData[this.userState]));this.stateAndData[this.nonAclUserState]=me,delete this.stateAndData.active,delete this.stateAndData.inactive,delete this.stateAndData.disabled;let Ze=Object.keys(be.event.acl).concat(be.event.userIds);this.stateAndData[this.userState].userFilter.in={_id:Object.keys(be.event.acl)},this.stateAndData[this.userState].countFilter.in={_id:Object.keys(be.event.acl)},this.stateAndData[this.nonAclUserState].userFilter.nin={_id:Ze},this.stateAndData[this.nonAclUserState].countFilter.nin={_id:Ze},this.UserPagingService.refresh(this.stateAndData).then(()=>{this.refreshMembers(be.event)})})}_filterMembers(be){let me=this.$filter("filter")([be],this.memberSearch);return me&&me.length}refreshMembers(be){this.event=be;let me=l.default.indexBy(this.UserPagingService.users(this.stateAndData[this.userState]),"id");this.eventMembers=l.default.map(this.event.acl,(Ie,Ze)=>{let rt=l.default.pick(me[Ze],"displayName","avatarUrl","lastUpdated");return rt.id=Ze,rt.role={selected:l.default.find(this.roles,Ct=>Ct.name===Ie.role)},rt}),this.owners=this.getOwners()}getOwners(){return l.default.filter(this.eventMembers,be=>"OWNER"===be.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(be){return this.isSearching=!0,null==be&&(be=".*"),this.UserPagingService.search(this.stateAndData[this.nonAclUserState],be).then(me=>(this.nonMemberSearchResults=me,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},be=>{delete this.nonMember.selected,this.stateAndData[this.userState].userFilter.in={_id:Object.keys(be.acl)},this.stateAndData[this.userState].countFilter.in={_id:Object.keys(be.acl)},this.UserPagingService.refresh(this.stateAndData).then(()=>{this.refreshMembers(be)})})}removeMember(be){this.EventAccess.delete({eventId:this.event.id,userId:be.id},me=>{this.stateAndData[this.userState].userFilter.in={_id:Object.keys(me.acl)},this.stateAndData[this.userState].countFilter.in={_id:Object.keys(me.acl)},this.UserPagingService.refresh(this.stateAndData).then(()=>{this.refreshMembers(me)})})}updateRole(be,me){this.EventAccess.update({eventId:this.event.id,userId:be.id,role:me.name},Ie=>{this.UserPagingService.refresh(this.stateAndData).then(()=>{this.refreshMembers(Ie)})})}gotoUser(be){this.$state.go("admin.user",{userId:be.id})}}return Se.$inject=["$state","$stateParams","$q","$filter","Event","EventAccess","UserService","UserPagingService"],Se})();const M={template:o(20632),controller:k};var T=o(1629);let D=(()=>{class Se{constructor(be,me){this.$element=be,this.Form=me}$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 T.W(this.$element.find(".form-create-panel")[0]),this.formPanel.listen("MDCDialog:closing",be=>{"close"!==be.detail.action&&this.onFormCreateClose({form:this.form})}),this.formPanel.listen("MDCDialog:opening",()=>{})}formFilePicked(be){this.form.formArchiveFile=be.file}upload(){this.generalForm.$submitted=!0,!this.generalForm.$invalid&&(this.form.formArchiveFile?this.form.$save({},be=>{this.form.id=be.id,this.formPanel.close()},be=>{this.error=be.responseText}):this.formPanel.close())}}return Se.$inject=["$element","Form"],Se})();const z={template:o(53208),bindings:{open:"<",event:"<",onFormCreateClose:"&"},controller:D};let j=(()=>{class Se{constructor(be,me,Ie,Ze,rt,Ct,Ft){this.$state=be,this.$stateParams=me,this.$uibModal=Ie,this.$timeout=Ze,this.Event=Ct,this.Form=Ft,this.token=rt.getToken(),this.filesToUpload=[],this.saveTime=0}$onInit(){this.Event.get({id:this.$stateParams.eventId},be=>{if(this.event=be,this.$stateParams.formId){var me=l.default.find(be.forms,Ie=>Ie.id.toString()===this.$stateParams.formId);this.form=new this.Form(me)}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(be){this.$uibModal.open({component:"adminEventFormEditError",resolve:{model:()=>be}})}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()},be=>{var me=be.data||{};this.showError({title:"Error Saving Form",message:me.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:me.errors}),this.saving=!1}))}}return Se.$inject=["$state","$stateParams","$uibModal","$timeout","LocalStorageService","Event","Form"],Se})();const O={template:o(83003),controller:j},V={template:o(97022),bindings:{resolve:"<",modalInstance:"<"},controller:class U{$onInit(){this.model=this.resolve.model}ok(){this.modalInstance.dismiss()}}};let Z=(()=>{class Se{ok(){this.modalInstance.close()}cancel(){this.modalInstance.dismiss()}}return Se.$inject=[],Se})();const ne={template:o(82718),bindings:{modalInstance:"<"},controller:Z};let re=(()=>{class Se{constructor(be,me,Ie,Ze,rt,Ct,Ft,cn,qt,Vt){this.$state=be,this.$stateParams=me,this.$filter=Ie,this.$uibModal=Ze,this.$transitions=rt,this.$timeout=Ct,this.LocalStorageService=Ft,this.Event=cn,this.Form=qt,this.FormIcon=Vt,this.unSavedChanges=!1,this.unSavedUploads=!1,this.token=Ft.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},be=>{if(this.event=be,this.$stateParams.formId){const me=be.forms.find(Ie=>Ie.id.toString()===this.$stateParams.formId);this.form=new this.Form(me),this.primaryField=this.form.fields.find(Ie=>Ie.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({},be=>!this.unSavedChanges||(this.$uibModal.open({component:"adminEventFormEditUnsaved"}).result.then(()=>{this.unSavedChanges=!1,be.run()}),!1))}fetchIcons(){this.FormIcon.query({eventId:this.$stateParams.eventId,formId:this.$stateParams.formId},be=>{l.default.each(be,me=>{me.primary&&me.variant?(this.icons[me.primary]||(this.icons[me.primary]={}),this.icons[me.primary][me.variant]=l.default.extend(this.icons[me.primary][me.variant]||{},me)):me.primary?this.icons[me.primary]=l.default.extend(this.icons[me.primary]||{},me):this.icons=me}),this.mapIcons()})}mapIcons(){this.primaryField&&l.default.each(this.primaryField.choices,be=>{this.iconMap[be.title]={icon:this.getIcon(be.title)},l.default.each(this.variants,me=>{this.iconMap[be.title][me.title]={icon:this.getIcon(be.title,me.title)}})}),this.iconMap.icon=this.getIcon()}getIcon(be,me){return be&&this.icons[be]&&me&&this.icons[be][me]&&this.icons[be][me].icon?this.icons[be][me].icon:be&&this.icons[be]&&this.icons[be].icon?this.icons[be].icon:this.icons.icon}mapStyles(){this.primaryField&&l.default.each(this.primaryField.choices,be=>{this.styleMap[be.title]={style:this.getStyle(be.title)},l.default.each(this.variants,me=>{this.styleMap[be.title][me.title]={style:this.getStyle(be.title,me.title)}})}),this.styleMap.style=this.getStyle()}getStyle(be,me){if(this.event&&this.form){var Ie=this.form.style||this.event.style;return l.default.pick(be&&Ie[be]&&me&&Ie[be][me]?Ie[be][me]:be&&Ie[be]?Ie[be]:Ie,this.styleKeys)}}onIconAdded(be){var me=be.icon,Ie=be.primary,Ze=be.variant;this.filesToUpload.push({file:be.file,primary:Ie,variant:Ze}),Ie&&Ze?(this.icons[Ie]=this.icons[Ie]||{},this.icons[Ie][Ze]=l.default.extend(this.icons[Ie][Ze]||{},{icon:me}),this.iconMap[Ie][Ze].icon=this.getIcon(Ie,Ze)):Ie?(this.icons[Ie]=l.default.extend(this.icons[Ie]||{},{icon:me}),l.default.each(this.variants,rt=>{this.iconMap[Ie][rt.title].icon=this.getIcon(Ie,rt.title)})):(this.icons=l.default.extend(this.icons||{},{icon:me}),this.primaryField&&l.default.each(this.primaryField.choices,rt=>{l.default.each(this.variants,Ct=>{this.iconMap[rt.title][Ct.title].icon=this.getIcon(rt.title,Ct.title)}),this.iconMap[rt.title].icon=this.getIcon(rt.title)})),this.unSavedChanges=!0}onStyleChanged(be){var me=be.style,Ie=be.primary,Ze=be.variant;this.form.style=this.form.style||u().copy(this.event.style),Ie&&Ze?(this.form.style[Ie]||(this.form.style[Ie]=u().copy(this.form.style)),this.form.style[Ie][Ze]=l.default.extend(this.form.style[Ie][Ze]||{},me),this.styleMap[Ie][Ze].style=this.getStyle(Ie,Ze)):Ie?(this.form.style[Ie]=l.default.extend(this.form.style[Ie]||{},me),l.default.each(this.variants,rt=>{this.styleMap[Ie][rt.title].style=this.getStyle(Ie,rt.title)})):this.form.style=l.default.extend(this.form.style||{},me),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,be=>{this.isMemberField(be)&&(be.choices=[])}),l.default.each(this.filesToUpload,be=>{this.upload(be)}),this.saving=!1,this.formSaved=!0,this.completeSave()},be=>{var me=be.data||{};this.showError({title:"Error Saving Form",message:me.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:me.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(be){var me="/api/events/"+this.event.id+"/icons/"+this.form.id+(be.primary?"/"+be.primary:"")+(be.variant?"/"+be.variant:""),Ie=new FormData;Ie.append("icon",be.file),jQuery.ajax({url:me,type:"POST",headers:{Authorization:"Bearer "+this.LocalStorageService.getToken()},xhr:()=>jQuery.ajaxSettings.xhr(),success:()=>{this.$timeout(()=>{this.filesToUpload=l.default.reject(this.filesToUpload,Ze=>be.file===Ze.file),this.completeSave()})},data:Ie,cache:!1,contentType:!1,processData:!1})}showError(be){this.$uibModal.open({component:"adminEventFormEditError",resolve:{model:()=>be}})}populateVariants(){if(this.form){if(this.primaryField=l.default.find(this.form.fields,be=>be.name===this.form.primaryField),this.variantField=l.default.find(this.form.fields,be=>be.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(be,me){return function(Ie){return"dropdown"===Ie.type&&(!be||be.name!==Ie.name)&&(me&&Ie.name===me.name||!Ie.archived)}}removeVariant(be){this.variantField.choices=l.default.without(this.variantField.choices,be),this.variants=this.$filter("orderBy")(this.variantField.choices,"value")}addVariantOption(be){var me={id:this.variantField.choices.length,title:be,value:be};this.variantField.choices=this.variantField.choices||new Array,this.variantField.choices.push(me),this.variants=this.$filter("orderBy")(this.variantField.choices,"value")}isMemberField(be){return l.default.contains(this.form.userFields,be.name)}}return Se.$inject=["$state","$stateParams","$filter","$uibModal","$transitions","$timeout","LocalStorageService","Event","Form","FormIcon"],Se})();const N={template:o(11556),controller:re},Y={template:'<canvas height="20" width="34"></canvas>',bindings:{type:"@",style:"<",primary:"<",variant:"<"},controller:(()=>{class Se{constructor(be){this.$element=be}$onChanges(){if(this.style){var be=this.$element.find("canvas")[0],me=this.style;if(this.style[this.primary]&&this.style[this.primary][this.variant]?me=this.style[this.primary][this.variant]:this.style[this.primary]&&(me=this.style[this.primary]),be.getContext){var Ie=be.getContext("2d");Ie.clearRect(0,0,be.width,be.height);var Ze=this.hexToRgb(me.fill);Ie.fillStyle="rgba("+Ze.r+","+Ze.g+","+Ze.b+","+me.fillOpacity+")",Ie.lineWidth=me.strokeWidth;var rt=this.hexToRgb(me.stroke);Ie.strokeStyle="rgba("+rt.r+","+rt.g+","+rt.b+","+me.strokeOpacity+")","Polygon"===this.type?(Ie.beginPath(),Ie.moveTo(32,2),Ie.lineTo(14,2),Ie.lineTo(2,18),Ie.lineTo(20,18),Ie.lineTo(32,2),Ie.closePath(),Ie.fill(),Ie.stroke()):"LineString"===this.type&&(Ie.beginPath(),Ie.moveTo(2,15),Ie.lineTo(12,2),Ie.lineTo(22,12),Ie.lineTo(32,2),Ie.stroke())}}}hexToRgb(be){var me=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(be);return me?{r:parseInt(me[1],16),g:parseInt(me[2],16),b:parseInt(me[3],16)}:null}}return Se.$inject=["$element"],Se})()};let K=(()=>{class Se{constructor(be,me){this.$uibModal=be,this.$timeout=me}$onChanges(be){be.style&&(this.style=u().copy(this.style))}updateSymbology(){this.$uibModal.open({component:"adminEventFormMapSymbologyEdit",size:"lg",resolve:{icon:()=>this.icon,style:()=>this.style,primary:()=>this.primary,variant:()=>{}}}).result.then(me=>{if(this.onStyleChanged({$event:{style:me.style,primary:this.primary,variant:this.variant}}),this.style=me.style,me.file){var Ie=new FileReader;Ie.onload=(()=>Ze=>{this.$timeout(()=>{this.icon=Ze.target.result,this.onIconAdded({$event:{icon:Ze.target.result,file:me.file,primary:this.primary,variant:this.variant}})})})(),Ie.readAsDataURL(me.file)}})}}return Se.$inject=["$uibModal","$timeout"],Se})();const J={template:o(87993),bindings:{title:"@",primary:"@",variant:"@",icon:"<",style:"<",onStyleChanged:"&",onIconAdded:"&"},controller:K},W={template:o(11561),bindings:{resolve:"<",modalInstance:"<"},controller:class ae{constructor(){this.minicolorSettings={position:"bottom left"}}$onInit(){this.icon=u().copy(this.resolve.icon),this.style=u().copy(this.resolve.style),this.primary=u().copy(this.resolve.primary),this.variant=u().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"})}}};u().module("mage").component("adminEventFormMapEdit",N).component("adminEventFormMapShape",Y).component("adminEventFormMapSymbology",J).component("adminEventFormMapSymbologyEdit",W);var oe=o(15439),ce=o.n(oe);const fe=(...Se)=>Math.random(...Se);let ge=(()=>{class Se{constructor(be,me,Ie,Ze,rt,Ct,Ft){this.$stateParams=be,this.$uibModal=me,this.$transitions=Ie,this.LocalStorageService=Ze,this.Event=rt,this.Form=Ct,this.UserService=Ft,this.unSavedChanges=!1,this.token=Ze.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},be=>{if(this.event=new this.Event(be),this.$stateParams.formId){const me=l.default.find(be.forms,Ie=>Ie.id.toString()===this.$stateParams.formId);this.form=new this.Form(me),this.primaryField=this.form.fields.find(Ie=>Ie.name===this.form.primaryField),this.event.forms=[this.form],this.UserService.getMyself().then(Ie=>{this.observations=[];for(let Ze=0;Ze<3;Ze++){const rt=this.createObservation(Ze,Number(this.$stateParams.formId),Ie);rt.style={iconUrl:this.getObservationIconUrl(rt,me)},this.observations.push(rt)}})}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({},be=>!this.unSavedChanges||(this.$uibModal.open({component:"adminEventFormEditUnsaved"}).result.then(()=>{this.unSavedChanges=!1,be.run()}),!1))}fieldFilter(be){return function(me){return be&&me.name===be||!me.archived}}onFieldChanged(){this.unSavedChanges=!0}getObservationIconUrl(be,me){let Ie,Ze;if(be.properties.forms.length){const rt=be.properties.forms[0];Ie=rt[me.primaryField],Ze=rt[me.variantField]}return this.getObservationIconUrlForEvent(this.$stateParams.eventId,this.$stateParams.formId,Ie,Ze)}getObservationIconUrlForEvent(be,me,Ie,Ze){let rt="/api/events/"+be+"/icons";return me&&(rt+="/"+me),Ie&&(rt+="/"+Ie),Ze&&(rt+="/"+Ze),rt+"?access_token="+this.LocalStorageService.getToken()}createObservation(be,me,Ie){return{id:be,createdAt:ce()(new Date).toISOString(),geometry:{type:"Point",coordinates:[180-360*fe(),80-160*fe()]},lastModified:ce()(new Date).toISOString(),properties:{timestamp:ce()(new Date).toISOString(),forms:[this.createForm(me)]},type:"Feature",user:Ie,favoriteUserIds:[],attachments:[]}}createForm(be){const me={formId:be};return this.form.fields.forEach(Ie=>{this.createField(me,Ie)}),me}createField(be,me){const Ie=this.fieldFactory[me.type]||this.fieldFactory.createTextField;Ie&&Ie(be,me)}createGeometryField(be,me){be[me.name]={type:"Point",coordinates:[180-360*fe(),80-160*fe()]}}createTextField(be,me){be[me.name]="Lorem ipsum"}createTextAreaField(be,me){be[me.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(be,me){be[me.name]=me.choices.length?me.choices[Math.floor(fe()*me.choices.length)].title:""}createMultiSelectField(be,me){if(me.choices.length){const Ie=new Set;for(let Ze=0;Ze<Math.floor(fe()*me.choices.length);Ze++)Ie.add(me.choices[Math.floor(fe()*me.choices.length)].title);be[me.name]=Array.from(Ie).join(", ")}else be[me.name]=""}createCheckbox(be,me){const Ie=Math.floor(2*fe());be[me.name]=1===Ie?me.title:""}createNumberField(be,me){be[me.name]=Math.floor(100*fe())+1}createDateField(be,me){be[me.name]=ce()(new Date).toISOString()}createPasswordField(be,me){be[me.name]="**********"}createEmailField(be,me){be[me.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},be=>{const me=be.data||{};this.showError({title:"Error Saving Form",message:me.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:me.errors}),this.saving=!1})}showError(be){this.$uibModal.open({component:"adminEventFormEditError",resolve:{model:()=>be}})}}return Se.$inject=["$stateParams","$uibModal","$transitions","LocalStorageService","Event","Form","UserService"],Se})();const we={template:o(96057),controller:ge};u().module("mage").component("adminEventFormFeedEdit",we);let Me=(()=>{class Se{constructor(be,me,Ie,Ze,rt,Ct,Ft,cn){this.$state=be,this.$stateParams=me,this.$uibModal=Ie,this.$timeout=Ze,this.$transitions=rt,this.Event=Ft,this.Form=cn,this.unSavedChanges=!1,this.token=Ct.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},be=>{if(this.event=be,this.$stateParams.formId&&"new"!==this.$stateParams.formId){const me=l.default.find(be.forms,Ie=>Ie.id.toString()===this.$stateParams.formId);this.form=new this.Form(me),l.default.each(this.form.fields,Ie=>{Ie.name===this.form.primaryField&&(this.primaryField=Ie)})}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=u().copy(this.form)}),this.$transitions.onStart({},be=>!this.unSavedChanges||(this.$uibModal.open({component:"adminEventFormEditUnsaved"}).result.then(()=>{this.unSavedChanges=!1,be.run()}),!1))}$doCheck(){this.form&&!this.saving&&(l.default.some(Object.values(this.fieldForms),me=>me&&me.$dirty)&&(this.unSavedChanges=!0),this.previousForm=u().copy(this.form))}createField(){return{title:"New field",type:"textfield",required:!1,choices:[]}}deletableField(be){return-1!==be.name.indexOf("field")}getTypeValue(be){return this.isMemberField(be)?"dropdown"===be.type?this.fieldNameMap.userDropdown.title:this.fieldNameMap.multiSelectUserDropdown.title:this.fieldNameMap[be.type].title}onFieldTypeChange(){"attachment"===this.newField.type?this.newField.allowedAttachmentTypes=this.attachmentAllowedTypes.map(be=>be.name):delete this.newField.attachmentAllowedTypes}addAllowedAttachmentTypes(be){be.allowedAttachmentTypes=this.attachmentAllowedTypes.map(me=>me.name)}addField(){if(this.newFieldForm.$invalid)return;const be=this.form.fields,me=l.default.isEmpty(be)?0:l.default.max(be,Ie=>Ie.id).id+1;this.newField.id=me,this.newField.name="field"+me,"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"),be.push(this.newField),this.newField=this.createField(),this.unSavedChanges=!0}removeField(be){const me=l.default.find(this.form.fields,Ie=>be===Ie.id);me&&(me.archived=!0),this.unSavedChanges=!0}moveFieldUp(be,me){be.stopPropagation(),be.preventDefault();const Ie=l.default.sortBy(this.form.fields,rt=>rt.id);let Ze=null;for(let rt=Ie.length-1;rt>=0;rt--){const Ct=Ie[rt];if(Ct.id<me.id&&!Ct.archived){Ze=Ct;break}}if(Ze){const rt=Ze.id;Ze.id=me.id,me.id=rt}this.unSavedChanges=!0}moveFieldDown(be,me){be.stopPropagation(),be.preventDefault();const Ie=l.default.sortBy(this.form.fields,rt=>rt.id);let Ze=null;for(let rt=0;rt<Ie.length;rt++){const Ct=Ie[rt];if(Ct.id>me.id&&!Ct.archived){Ze=Ct;break}}if(Ze){const rt=Ze.id;Ze.id=me.id,me.id=rt}this.unSavedChanges=!0}showError(be){this.$uibModal.open({component:"adminEventFormEditError",resolve:{model:()=>be}})}save(){const be=l.default.filter(this.form.fields,me=>!me.archived);l.default.isEmpty(be)||(this.formSaved=!1,this.saving=!0,this.form.$save({eventId:this.event.id,id:this.form.id},()=>{l.default.each(this.form.fields,me=>{this.isMemberField(me)&&(me.choices=[])}),this.saving=!1,this.formSaved=!0,this.completeSave()},me=>{const Ie=me.data||{};this.showError({title:"Error Saving Form",message:Ie.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:Ie.errors}),this.saving=!1}))}completeSave(){this.formSaved&&(this.saving=!1,this.unSavedChanges=!1,Object.values(this.fieldForms).forEach(be=>{be&&be.$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(be,me){be.choices=be.choices||new Array;const Ie=l.default.isEmpty(be.choices)?1:l.default.max(be.choices,Ze=>Ze.id).id+1;be.choices.push({id:Ie,title:me,value:be.choices.length}),this.unSavedChanges=!0}deleteOption(be,me){for(var Ie=0;Ie<be.choices.length;Ie++)if(be.choices[Ie].title===me.title){be.choices.splice(Ie,1);break}this.unSavedChanges=!0}reorderOption(be,me){this.$uibModal.open({component:"adminEventFormFieldOptionReorder",resolve:{option:()=>me,field:()=>be}}).result.then(Ze=>{be.choices=Ze,this.unSavedChanges=!0})}showAddOptions(be){return"radio"===be.type||"dropdown"===be.type||"multiselectdropdown"===be.type}hideAddOptions(be){return"radio"===be.type||"dropdown"===be.type||"userDropdown"===be.type}isMemberField(be){return l.default.contains(this.form.userFields,be.name)}isUserDropdown(be){return"userDropdown"===be.type}}return Se.$inject=["$state","$stateParams","$uibModal","$timeout","$transitions","LocalStorageService","Event","Form"],Se})();const Te={template:o(52104),controller:Me};let _e=(()=>{class Se{constructor(){}$onInit(){this.option=u().copy(this.resolve.option),this.choices=u().copy(this.resolve.field.choices)}move(be){var me=l.default.findIndex(this.choices,Ie=>Ie.title===this.option.title);be>me&&be--,this.choices.splice(be,0,this.choices.splice(me,1)[0])}done(){this.modalInstance.close(this.choices)}cancel(){this.modalInstance.dismiss("cancel")}}return Se.$inject=[],Se})();const ve={template:o(22361),bindings:{resolve:"<",modalInstance:"<"},controller:_e};u().module("mage").component("adminEventFormFieldsEdit",Te).component("adminEventFormFieldOptionReorder",ve),u().module("mage").component("adminEventFormEdit",O).component("adminEventFormCreate",z).component("adminEventFormEditError",V).component("adminEventFormEditUnsaved",ne)