{"version":3,"sources":["webpack:///./src/views/Dispatch.vue?b5ae","webpack:///./src/views/Dispatch.vue?e777","webpack:///./src/views/Dispatch.vue?b428","webpack:///./src/views/Dispatch.vue?56f8","webpack:///./src/views/Dispatch.vue"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","class","mobileDispatchEnabled","attrs","_v","alarmQueueFilters","model","value","callback","$$v","currentAlarmQueueFilters","expression","staticStyle","ref","guards","guardTours","alarms","patrolZones","mapKey","mapStyle","statusVisibility","mapOptions","on","dispatchGuardToAlarm","clearGuardStatus","markerRightClicked","wide","pinnedGuardIds","unavailableStates","eventQueue","guardTypes","showTimerDetails","setOfflineIncluded","pinGuard","gotoGuard","setGuardStatus","guardRightClicked","setGuardCovering","cancelGuardCovering","dispatchToTour","assessorToTour","slot","guardsByStatus","setStatusVisibility","mapOptionsChanged","mapComponents","removeComponent","gotoLocation","cancelDispatch","directives","name","rawName","viewMenuFlag","style","top","contextMenuTop","left","contextMenuLeft","showGuardTypeModal","changeTypeModalFlag","_s","guardToUpdate","callsign","guardType","dispatchGuardTypeID","scopedSlots","_u","key","fn","find","g","dispatchIcon","title","option","selectedGuardTypeID","updatingGuardTypeFlag","$event","saveGuardType","_e","staticRenderFns","guardStatusDetails","Available","markerState","label","cssClass","sortOrder","Dispatched","Investigating","OnBreak","EnRoute","OnTour","OffShift","Covering","Covered","CoveringRequested","dispatchApi","Eventqueue","DispatchStore","updateService","showAlarms","showGuardLinks","showTourCheckpoints","showTourLinks","filterBounds","guardQueue","changeGuardTypePref","changeGuardTypeByIconPref","guardID","eventID","newStatus","unavailableStatus","unavailableReason","TriggerUpdateGuard","mounted","dispatchEnabled","loadAvailableAlarmQueueFilters","filter","f","loadAlarmQueueFilters","data","unavailableStatuses","userFilter","alarmQueueFilterID","updateGuards","includeOffline","Start","loadGuardTypes","changeGuardTypeEnabled","loadGuardTypePref","loadGuardTypeByIconPref","beforeDestroy","Stop","forEach","guard","indexOf","guardId","p","dispatchQueue","then","queue","featuresList","Mobile","Dispatch","getPermissions","canChangeGuardType","map","a","filterId","regionId","regionID","groupedGuards","reduce","group","status","push","numberStatus","Number","isNaN","dispatchStatus","details","undefined","set","show","count","length","sort","b","alarmQueueFiltersChanged","newFilters","loadFilterBounds","loadAlarmQueueFilterBounds","bounds","Promise","all","combinedBounds","north","south","east","west","anyBounds","Math","max","min","$refs","dispatchMap","gotoBounds","getPatrolZonesForAlarmQueueFilters","event","latLong","userId","addDispatchRequest","eventId","currentUser","fullName","breakGuardId","reliefGuardId","setGuardCovered","cancelGuardCovered","tour","guardTourId","guardMakeAvailable","activeEvent","q","dispatchFinish","dispatchQueueId","dispatchQueueID","visible","newOptions","timerLabel","extendTimer","open","existingPin","component","lastLocationLatLng","existingItem","splice","guardIdIndex","location","goToLocation","dispatchQueueItem","finishDispatchRequest","e","viewContextMenu","nextTick","contextMenuHeight","contextMenu","clientHeight","contextMenuWidth","clientWidth","x","window","innerWidth","y","innerHeight","LastLocation","JSON","stringify","updateGuard","updateGuardTypeCache","Action","Getter","components","NavHeader","ExtendTimer","vselect3","clickOutside","directive"],"mappings":"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","file":"js/chunk-952dec60.355e7b92.js","sourcesContent":["import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dispatch.vue?vue&type=style&index=0&id=0f9a2557&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dispatch.vue?vue&type=style&index=0&id=0f9a2557&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card fill-body card-secondary\",class:{ 'd-flex': _vm.mobileDispatchEnabled },attrs:{\"data-cy\":\"responseSetupContainer\"}},[_c('nav-header',{attrs:{\"title\":'Guard Dispatch',\"data-cy\":\"navHeader\"}}),(_vm.mobileDispatchEnabled)?[_c('div',{staticClass:\"d-flex flex-row align-items-center\"},[_c('span',{staticClass:\"m-l-10\"},[_vm._v(\"\\n\\t\\t\\t\\tFilter:\\n\\t\\t\\t\")]),_c('v-select',{staticClass:\"dark flex-grow-1\",attrs:{\"options\":_vm.alarmQueueFilters,\"multiple\":\"\",\"label\":\"title\"},model:{value:(_vm.currentAlarmQueueFilters),callback:function ($$v) {_vm.currentAlarmQueueFilters=$$v},expression:\"currentAlarmQueueFilters\"}})],1),_c('div',{staticClass:\"d-flex flex-row\",staticStyle:{\"flex-grow\":\"1\",\"position\":\"relative\"}},[_c('dispatch-map',{ref:\"dispatchMap\",staticClass:\"fade-item flex-grow-1\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"data-cy\":\"dispatch-map\",\"guards\":_vm.guards,\"guardTours\":_vm.guardTours,\"alarms\":_vm.alarms,\"patrolZones\":_vm.patrolZones,\"mapKey\":_vm.mapKey,\"mapStyle\":_vm.mapStyle,\"statusVisibility\":_vm.statusVisibility,\"mapOptions\":_vm.mapOptions},on:{\"dispatchGuard\":_vm.dispatchGuardToAlarm,\"clearStatus\":_vm.clearGuardStatus,\"markerRightClicked\":_vm.markerRightClicked}}),_c('sidebar',{staticClass:\"fade-item\",staticStyle:{\"flex-shrink\":\"1\"},model:{value:(_vm.wide),callback:function ($$v) {_vm.wide=$$v},expression:\"wide\"}},[_c('guard-list',{staticClass:\"sidebar-item\",attrs:{\"data-cy\":\"guards-list\",\"guards\":_vm.guards,\"alarms\":_vm.alarms,\"wide\":_vm.wide,\"pinnedGuardIds\":_vm.pinnedGuardIds,\"unavailableStates\":_vm.unavailableStates,\"eventQueue\":_vm.eventQueue,\"useQuickDispatch\":true,\"guardTypes\":this.guardTypes},on:{\"dispatchGuard\":_vm.dispatchGuardToAlarm,\"clearStatus\":_vm.clearGuardStatus,\"showTimerDetails\":_vm.showTimerDetails,\"includeOfflineChanged\":_vm.setOfflineIncluded,\"pinGuard\":_vm.pinGuard,\"gotoGuard\":_vm.gotoGuard,\"setGuardStatus\":_vm.setGuardStatus,\"guardRightClicked\":_vm.guardRightClicked,\"set-guard-covering\":_vm.setGuardCovering,\"cancel-guard-covered\":_vm.cancelGuardCovering}}),_c('tour-list',{staticClass:\"sidebar-item\",attrs:{\"guards\":_vm.guards,\"guardTours\":_vm.guardTours,\"data-cy\":\"tours-list\"},on:{\"dispatchGuard\":_vm.dispatchToTour,\"dispatchAssessor\":_vm.assessorToTour}}),_c('template',{slot:\"floating\"},[_c('map-filter',{attrs:{\"guardsByStatus\":_vm.guardsByStatus,\"data-cy\":\"map-options\",\"mapOptions\":_vm.mapOptions},on:{\"statusVisibilityCHanged\":_vm.setStatusVisibility,\"mapOptionsChanged\":_vm.mapOptionsChanged}})],1),_c('template',{slot:\"floating-stretch\"},[_c('map-pop-list',{attrs:{\"contentComponents\":_vm.mapComponents},on:{\"removeComponent\":_vm.removeComponent,\"goto\":_vm.gotoLocation,\"cancelDispatch\":_vm.cancelDispatch}})],1)],2)],1)]:(_vm.dispatchEnabled)?[_c('guard-list',{staticClass:\"guard-list\",attrs:{\"data-cy\":\"guards-list-nonmobile\",\"guards\":_vm.guards,\"alarms\":_vm.alarms,\"wide\":true,\"mobileDispatch\":false,\"pinnedGuardIds\":_vm.pinnedGuardIds,\"unavailableStates\":_vm.unavailableStates,\"eventQueue\":_vm.eventQueue,\"useQuickDispatch\":true,\"guardTypes\":this.guardTypes},on:{\"dispatchGuard\":_vm.dispatchGuardToAlarm,\"clearStatus\":_vm.clearGuardStatus,\"showTimerDetails\":_vm.showTimerDetails,\"includeOfflineChanged\":_vm.setOfflineIncluded,\"pinGuard\":_vm.pinGuard,\"set-guard-covering\":_vm.setGuardCovering,\"cancel-guard-covered\":_vm.cancelGuardCovering}})]:_c('div',{attrs:{\"data-cy\":\"feature-disabled\"}},[_c('p',[_vm._v(\"Dispatch management is not enabled.\")])]),_c('extend-timer',{ref:\"extendTimer\"}),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.viewMenuFlag),expression:\"viewMenuFlag\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(function () { return _vm.viewMenuFlag = false; }),expression:\"() => viewMenuFlag = false\"}],ref:\"contextMenu\",style:({ top: _vm.contextMenuTop, left: _vm.contextMenuLeft }),attrs:{\"id\":\"context-menu\",\"data-cy\":\"context-menu\",\"tabindex\":\"-1\"}},[_c('li',{attrs:{\"data-cy\":\"change-guard-type-option\"},on:{\"click\":_vm.showGuardTypeModal}},[_vm._v(\"Change type\")])]),_c('b-modal',{attrs:{\"role\":\"dialog\",\"size\":\"md\",\"centered\":\"\",\"no-close-on-esc\":\"\",\"no-close-on-backdrop\":\"\"},model:{value:(_vm.changeTypeModalFlag),callback:function ($$v) {_vm.changeTypeModalFlag=$$v},expression:\"changeTypeModalFlag\"}},[_c('template',{slot:\"modal-header\"},[_c('h4',[_vm._v(\"Change \"+_vm._s(_vm.guardToUpdate? _vm.guardToUpdate.callsign + '\\' ' : ' ')+\"Guard Type\")])]),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"12\",\"sm\":\"12\",\"md\":\"12\",\"lg\":\"12\"}},[_c('vselect3',{staticClass:\"dark\",attrs:{\"options\":_vm.guardTypes,\"append-to-body\":\"\",\"reduce\":function (guardType) { return guardType.dispatchGuardTypeID; },\"label\":\"title\"},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(ref){\nvar dispatchGuardTypeID = ref.dispatchGuardTypeID;\nreturn [_c('span',{staticClass:\"mr-2 fa-lg\",class:_vm.guardTypes.find(function (g) { return g.dispatchGuardTypeID == dispatchGuardTypeID; }).dispatchIcon}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.guardTypes.find(function (g) { return g.dispatchGuardTypeID == dispatchGuardTypeID; }).title)+\"\\n\\t\\t\\t\\t\\t\\t\")]}},{key:\"option\",fn:function(option){return [_c('span',{staticClass:\"mr-2 fa-lg\",class:option.dispatchIcon}),_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(option.title)+\"\\n\\t\\t\\t\\t\\t\\t\")]}}]),model:{value:(_vm.selectedGuardTypeID),callback:function ($$v) {_vm.selectedGuardTypeID=$$v},expression:\"selectedGuardTypeID\"}})],1)],1)],1),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"ml-auto\",attrs:{\"variant\":\"primary\",\"disabled\":!_vm.guardToUpdate || !_vm.selectedGuardTypeID || _vm.guardToUpdate.dispatchGuardTypeID == _vm.selectedGuardTypeID || _vm.updatingGuardTypeFlag,\"data-cy\":\"save-button\"},on:{\"click\":function($event){return _vm.saveGuardType()}}},[(_vm.updatingGuardTypeFlag)?_c('i',{staticClass:\"fas fa-circle-notch fa-spin mr-2\"}):_vm._e(),_vm._v(\"\\n\\t\\t\\t\\tSave\\n\\t\\t\\t\")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"disable\":_vm.updatingGuardTypeFlag,\"data-cy\":\"cancel-button\"},on:{\"click\":function($event){_vm.changeTypeModalFlag = false}}},[_vm._v(\"\\n\\t\\t\\t\\tCancel\\n\\t\\t\\t\")])],1)],2)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace, State, Getter, Mutation, Action } from \"vuex-class\";\r\n\r\nimport {\r\n\taxiosJsonInstance\r\n} from \"@/axios.instance\";\r\n\r\nimport { get } from \"lodash\";\r\n\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport ExtendTimer from \"@/components/dispatch/ExtendTimer.vue\";\r\nimport vSelect from \"vue-select\";\r\n\r\nimport api from \"@/services/api.service\";\r\nimport mobileApi from \"@/services/api.mobile.service\";\r\n\r\nimport { AlarmQueueFilterID, AlarmQueueFilter } from \"@/store/eventqueue/types\";\r\nimport { UserPermissions, FeaturesList } from \"@/store/types\";\r\n\r\nimport { darkMapStyle, satelliteMapStyle, getMapStyle } from \"@/scripts/mapping/mapStyle\";\r\n\r\nimport vselect3 from \"vselect3\";\r\nimport vClickOutside from \"v-click-outside\";\r\nimport { GuardType } from '@/store/dispatch/types';\r\n\r\nimport {\r\n\tGuard,\r\n\tGuardTour,\r\n\tDispatchableEvent,\r\n\tMapOptions,\r\n\tDispatchStatus,\r\n\tGuardsByStatus,\r\n\tEventStatus,\r\n\tDispatchQueue,\r\n\tUnavailableStatus,\r\n\tEvent,\r\n\r\n\tMapFilter,\r\n\tDispatchMap,\r\n\tSidebar,\r\n\tGuardList,\r\n\tToursList,\r\n\r\n\tDispatchApi,\r\n\tDispatchUpdateService,\r\n\r\n\tAssessmentTourList\r\n} from \"@sureview/v2-dispatch\"\r\n\r\nimport {\r\n\tconvertStringToLatLng,\r\n\tILatLngBounds,\r\n\tILatLng\r\n} from \"@sureview/v2-mapping\";\r\nimport { Pref } from '@/store/settings/types';\r\n\r\ninterface GuardStatusDetails {\r\n\tmarkerState: string;\r\n\tlabel: string;\r\n\tsortOrder: number;\r\n\tcssClass?: string;\r\n}\r\n\r\nconst guardStatusDetails: {\r\n\t[key in DispatchStatus]: GuardStatusDetails\r\n} = {\r\n\t[DispatchStatus.Available]: { markerState: \"available\", label: \"Available\", cssClass: \"text-success\", sortOrder: 1 },\r\n\t[DispatchStatus.Dispatched]: {\r\n\t\tmarkerState: \"dispatched\",\r\n\t\tlabel: \"Dispatched\",\r\n\t\tcssClass: \"text-success\",\r\n\t\tsortOrder: 2\r\n\t},\r\n\t[DispatchStatus.Investigating]: {\r\n\t\tmarkerState: \"investigating\",\r\n\t\tlabel: \"Investigating\",\r\n\t\tcssClass: \"text-primary\",\r\n\t\tsortOrder: 4\r\n\t},\r\n\t[DispatchStatus.OnBreak]: { markerState: \"unavailable\", label: \"Unavailable\", sortOrder: 6 },\r\n\t[DispatchStatus.EnRoute]: { markerState: \"enroute\", label: \"En Route\", cssClass: \"text-warning\", sortOrder: 3 },\r\n\t[DispatchStatus.OnTour]: { markerState: \"ontour\", label: \"On Tour\", cssClass: \"text-primary\", sortOrder: 5 },\r\n\t[DispatchStatus.OffShift]: { markerState: \"offshift\", label: \"Off Shift\", cssClass: \"fa-user-slash text-off-shift\", sortOrder: 8 },\r\n\t[DispatchStatus.Covering]: { markerState: \"covering\", label: \"Covering\", cssClass: \"text-info\", sortOrder: 7 },\r\n\t[DispatchStatus.Covered]: { markerState: \"covered\", label: \"Covered\", cssClass: \"text-success\", sortOrder: 1 },\r\n\t[DispatchStatus.CoveringRequested]: { markerState: \"coverRequested\", label: \"Requested to Cover\", cssClass: \"text-info\", sortOrder: 7 },\r\n};\r\n\r\nconst dispatchApi = new DispatchApi(axiosJsonInstance);\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst DispatchStore = namespace(\"dispatch\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"v-select\": vSelect,\r\n\t\t\"extend-timer\": ExtendTimer,\r\n\t\t\"guard-list\": GuardList,\r\n\t\tvselect3,\r\n\t\t\"assessment-tour-list\": AssessmentTourList\r\n\t},\r\n\tdirectives: {\r\n\t\tclickOutside: vClickOutside.directive\r\n\t}\r\n})\r\nexport default class Dispatch extends Vue {\r\n\t$refs: {\r\n\t\tdispatchMap: DispatchMap,\r\n\t\textendTimer: ExtendTimer,\r\n\t\tcontextMenu: HTMLElement\r\n\t}\r\n\r\n\t@Getter(\"getMapKey\") private mapKey: string;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@State(\"User\") currentUser: {\r\n\t\tuserId: number,\r\n\t\tfullName: string;\r\n\t};\r\n\r\n\t@Eventqueue.Action loadAvailableAlarmQueueFilters!: () => Promise;\r\n\r\n\t@DispatchStore.Action updateGuard: any;\r\n\t@DispatchStore.Action loadGuardTypes: any;\r\n\t@DispatchStore.Getter('getGuardTypes') guardTypes!: GuardType[];\r\n\r\n\r\n\tguards: Guard[] = [];\r\n\tguardTours: GuardTour[] = [];\r\n\teventQueue: Event[] = [];\r\n\talarms: DispatchableEvent[] = [];\r\n\tunavailableStates: UnavailableStatus[] = [];\r\n\tpatrolZones: any[] = [];\r\n\tmapComponents: any[] = [];\r\n\r\n\tpinnedGuardIds: number[] = [];\r\n\talarmQueueFilters: AlarmQueueFilter[] = [];\r\n\tcurrentAlarmQueueFilters: AlarmQueueFilter[] = [];\r\n\r\n\twide: boolean = false;\r\n\r\n\tupdateService: DispatchUpdateService = null;\r\n\r\n\tmapOptions: MapOptions = {\r\n\t\t\tshowAlarms: true,\r\n\t\t\tshowGuardLinks: true,\r\n\t\t\tshowTourCheckpoints: true,\r\n\t\t\tshowTourLinks: true\r\n\t\t};\r\n\tstatusVisibility: { [key in DispatchStatus]: boolean } = {};\r\n\r\n\tfilterBounds: { [alarmQueueFilterId: number]: ILatLngBounds } = {};\r\n\tguardQueue: { [guardId: number]: DispatchQueue[] } = {};\r\n\r\n\tprivate viewMenuFlag: boolean = false;\r\n\tprivate changeTypeModalFlag: boolean = false;\r\n\tprivate contextMenuTop: string = \"0px\";\r\n\tprivate contextMenuLeft: string = \"0px\";\r\n\tprivate guardToUpdate: Guard = null;\r\n\tprivate selectedGuardTypeID: number | null = null;\r\n\tprivate updatingGuardTypeFlag: boolean = false;\r\n\tprivate changeGuardTypePref: Pref = null;\r\n\tprivate changeGuardTypeByIconPref: Pref = null;\r\n\r\n\tprivate setGuardStatus(guardID:number, eventID:number, newStatus:DispatchStatus,unavailableStatus:UnavailableStatus, unavailableReason: string){\r\n\t\tdispatchApi.setGuardStatus(\r\n\t\t\tguardID, //guardID\r\n\t\t\teventID ?? null, //eventID\r\n\t\t\tnewStatus, //newStatus\r\n\t\t\tunavailableStatus, //unavailableStatus\r\n\t\t\tunavailableReason //UnavailableReason\r\n\t\t);\r\n\r\n\t\tthis.updateService.TriggerUpdateGuard();\r\n\t}\r\n\r\n\tpublic async mounted() {\r\n\t\tif (this.dispatchEnabled) {\r\n\t\t\tthis.alarmQueueFilters = (await this.loadAvailableAlarmQueueFilters())\r\n\t\t\t\t.filter(f => f.isLocal);\r\n\t\t\tconst userAlarmQueueFilters = ((await api.loadAlarmQueueFilters()).data)\r\n\t\t\t\t.filter(f => !f.regionID);\r\n\r\n\t\t\tthis.unavailableStates = await dispatchApi.unavailableStatuses();\r\n\t\t\tthis.currentAlarmQueueFilters = this.alarmQueueFilters\r\n\t\t\t\t.filter(f => userAlarmQueueFilters.find(userFilter => userFilter.alarmQueueFilterID === f.alarmQueueFilterID));\r\n\r\n\t\t\tthis.updateService = new DispatchUpdateService(\r\n\t\t\t\tdispatchApi,\r\n\t\t\t\t() => this.requestFilters,\r\n\t\t\t\tguards => this.updateGuards(guards),\r\n\t\t\t\talarms => this.alarms = alarms,\r\n\t\t\t\tguardTours => this.guardTours = guardTours,\r\n\t\t\t\teventQueue => this.eventQueue = eventQueue);\r\n\r\n\t\t\tif (!this.mobileDispatchEnabled) {\r\n\t\t\t\tthis.updateService.includeOffline = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateService.Start();\r\n\r\n\t\t\tawait this.loadGuardTypes();\r\n\t\t\tif(this.changeGuardTypeEnabled) {\r\n\t\t\t\tthis.changeGuardTypePref = await api.loadGuardTypePref();\r\n\t\t\t\tthis.changeGuardTypeByIconPref = await api.loadGuardTypeByIconPref();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic beforeDestroy() {\r\n\t\tif (this.updateService) {\r\n\t\t\tthis.updateService.Stop();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic updateGuards(guards: Guard[]) {\r\n\t\tthis.guards = guards;\r\n\t\tguards.forEach(guard => {\r\n\t\t\tif (this.pinnedGuardIds.indexOf(guard.guardId) > -1) {\r\n\t\t\t\tconst existingPin = this.mapComponents.find(p => p.key === \"guard-\" + guard.guardId);\r\n\t\t\t\tif (existingPin) {\r\n\t\t\t\t\texistingPin.data.guard = guard;\r\n\r\n\t\t\t\t\t// do not await this - do async.\r\n\t\t\t\t\tdispatchApi.dispatchQueue(guard.guardId).then(queue => {\r\n\t\t\t\t\t\texistingPin.data.dispatchQueue = queue;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget dispatchEnabled() {\r\n\t\treturn this.featuresList[\"Dispatch\"];\r\n\t}\r\n\tget mobileDispatchEnabled(): boolean {\r\n\t\treturn this.featuresList.Mobile && this.featuresList.Mobile.Dispatch;\r\n\t}\r\n\r\n\tget changeGuardTypeEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Dispatch\", \"ChangeGuardType\"]) && this.getPermissions.canChangeGuardType;\r\n\t}\r\n\r\n\tget requestFilters(): AlarmQueueFilterID[] {\r\n\t\treturn this.currentAlarmQueueFilters.map(a => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tfilterId: a.alarmQueueFilterID,\r\n\t\t\t\t\tregionId: a.regionID\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t}\r\n\r\n\tget mapStyle () {\r\n\t\treturn darkMapStyle;\r\n\t}\r\n\r\n\tget guardsByStatus(): GuardsByStatus[] {\r\n\t\tvar groupedGuards = this.guards.reduce((group: any, guard: Guard) => {\r\n\t\t\tconst status = guard.status;\r\n\t\t\t(group[status] = group[status] || []).push(guard)\r\n\t\t\treturn group\r\n\t\t}, {});\r\n\r\n\t\tvar guardsByStatus: GuardsByStatus[] = [];\r\n\r\n\t\tfor (const status in DispatchStatus) {\r\n\t\t\tconst numberStatus = Number(status);\r\n\t\t\tif (isNaN(numberStatus)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst dispatchStatus = numberStatus as DispatchStatus;\r\n\r\n\t\t\tconst details = guardStatusDetails[dispatchStatus];\r\n\t\t\tif (this.statusVisibility[dispatchStatus] === undefined) {\r\n\t\t\t\tVue.set(this.statusVisibility, dispatchStatus, true);\r\n\t\t\t}\r\n\r\n\t\t\tguardsByStatus.push({\r\n\t\t\t\tstatus: numberStatus as DispatchStatus,\r\n\t\t\t\tlabel: details.label,\r\n\t\t\t\tshow: this.statusVisibility[dispatchStatus],\r\n\t\t\t\tcount: groupedGuards[status] ? groupedGuards[status].length : 0,\r\n\t\t\t\tsortOrder: details.sortOrder\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn guardsByStatus.sort((a, b) => a.sortOrder - b.sortOrder);\r\n\t}\r\n\r\n\t@Watch(\"currentAlarmQueueFilters\")\r\n\tasync alarmQueueFiltersChanged(newFilters: AlarmQueueFilter[]) {\r\n\t\tconst loadFilterBounds = newFilters.filter(f => !this.filterBounds[f.alarmQueueFilterID])\r\n\t\t\t.map(f => api.loadAlarmQueueFilterBounds(f.alarmQueueFilterID).then(bounds => {\r\n\t\t\t\treturn this.filterBounds[f.alarmQueueFilterID] = bounds.data;\r\n\t\t\t}));\r\n\r\n\t\tif (loadFilterBounds.length > 0) {\r\n\t\t\tawait Promise.all(loadFilterBounds);\r\n\t\t}\r\n\r\n\t\tconst combinedBounds = {\r\n\t\t\tnorth: null,\r\n\t\t\tsouth: null,\r\n\t\t\teast: null,\r\n\t\t\twest: null\r\n\t\t}\r\n\r\n\t\tnewFilters.forEach(filter => {\r\n\t\t\tvar bounds = this.filterBounds[filter.alarmQueueFilterID];\r\n\t\t\tif (bounds.anyBounds) {\r\n\t\t\t\tcombinedBounds.north = combinedBounds.north === null ? bounds.north : Math.max(bounds.north, combinedBounds.north);\r\n\t\t\t\tcombinedBounds.east = combinedBounds.east === null ? bounds.east : Math.max(bounds.east, combinedBounds.east);\r\n\r\n\t\t\t\tcombinedBounds.south = combinedBounds.south === null ? bounds.south : Math.min(bounds.south, combinedBounds.south);\r\n\t\t\t\tcombinedBounds.west = combinedBounds.west === null ? bounds.west : Math.min(bounds.west, combinedBounds.west);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (combinedBounds.north !== null) {\r\n\t\t\tthis.$refs.dispatchMap.gotoBounds(combinedBounds);\r\n\t\t}\r\n\r\n\t\tthis.patrolZones = await dispatchApi.getPatrolZonesForAlarmQueueFilters(newFilters.map(f => {\r\n\t\t\treturn {\r\n\t\t\t\tfilterId: f.alarmQueueFilterID,\r\n\t\t\t\tregionId: f.regionID\r\n\t\t\t};\r\n\t\t}));\r\n\t}\r\n\r\n\tdispatchGuardToAlarm ({ guard, event, latLong }: { guard: Guard, event: DispatchableEvent, latLong: string }) {\r\n\t\tif (guard.status == DispatchStatus.Available) {\r\n\t\t\tguard.status = DispatchStatus.Dispatched;\r\n\t\t}\r\n\r\n\t\tif (this.mobileDispatchEnabled && guard.userId) {\r\n\t\t\tmobileApi.addDispatchRequest(guard.guardId, null, event.eventId,\r\n\t\t\t\tthis.currentUser.fullName, \"Dispatch to area and investigate\", latLong, \"\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async setGuardCovering(breakGuardId: number, reliefGuardId: number): Promise {\r\n\t\tawait dispatchApi.setGuardCovered(breakGuardId, reliefGuardId);\r\n\t}\r\n\r\n\tprivate async cancelGuardCovering(reliefGuardId: number): Promise {\r\n\t\tawait dispatchApi.cancelGuardCovered(reliefGuardId);\r\n\t}\r\n\r\n\tdispatchToTour(tour: GuardTour, guard: Guard) {\r\n\t\tdispatchApi.dispatchToTour(guard.guardId, tour.guardTourId,\r\n\t\t\tthis.currentUser.fullName, \"Dispatch to area and investigate\");\r\n\t}\r\n\r\n\tassessorToTour(tour: GuardTour, guard: Guard) {\r\n\t\tdispatchApi.assessorToTour(guard.guardId, tour.guardTourId,\r\n\t\t\tthis.currentUser.fullName, \"Dispatch to area and complete assessment\");\r\n\t}\r\n\r\n\tasync clearGuardStatus (guard: Guard) {\r\n\t\tif (guard.status === DispatchStatus.OnBreak) {\r\n\t\t\tawait dispatchApi.guardMakeAvailable(guard.guardId);\r\n\t\t} else {\r\n\t\t\tconst queue = await dispatchApi.dispatchQueue(guard.guardId);\r\n\t\t\tconst activeEvent = queue.find(q => q.active);\r\n\t\t\tif (activeEvent) {\r\n\t\t\t\tdispatchApi.dispatchFinish({\r\n\t\t\t\t\tguardId: guard.guardId,\r\n\t\t\t\t\tdispatchQueueId: activeEvent.dispatchQueueID\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetStatusVisibility(status: DispatchStatus, visible: boolean) {\r\n\t\tthis.statusVisibility[status] = visible;\r\n\t}\r\n\r\n\tmapOptionsChanged (newOptions: MapOptions) {\r\n\t\tthis.mapOptions = newOptions;\r\n\t}\r\n\r\n\tshowTimerDetails (guard: Guard, label: string, timerLabel: string) {\r\n\t\tthis.$refs.extendTimer.open(guard, label, timerLabel);\r\n\t}\r\n\r\n\tsetOfflineIncluded(includeOffline: boolean) {\r\n\t\tif (this.updateService) {\r\n\t\t\tthis.updateService.includeOffline = includeOffline;\r\n\t\t}\r\n\t}\r\n\r\n\tasync pinGuard(guard: Guard) {\r\n\t\tconst key = \"guard-\" + guard.guardId;\r\n\t\tconst existingPin = this.mapComponents.find(p => p.key === key);\r\n\r\n\t\tif (!existingPin) {\r\n\t\t\tthis.pinnedGuardIds.push(guard.guardId);\r\n\t\t\tconst data = {\r\n\t\t\t\tkey: key,\r\n\t\t\t\ttitle: guard.callsign,\r\n\t\t\t\tcomponent: \"guard\",\r\n\t\t\t\tdata: null\r\n\t\t\t};\r\n\t\t\tVue.set(data, \"data\", {});\r\n\t\t\tVue.set(data.data, \"guard\", guard);\r\n\t\t\tVue.set(data.data, \"dispatchQueue\", await dispatchApi.dispatchQueue(guard.guardId));\r\n\r\n\t\t\tthis.mapComponents.push(data);\r\n\t\t} else {\r\n\t\t\tthis.removeComponent(key);\r\n\t\t}\r\n\t}\r\n\r\n\tgotoGuard(guard: Guard) {\r\n\t\tif (guard.lastLocationLatLng){\r\n\t\t\tthis.gotoLocation(guard.lastLocationLatLng);\r\n\t\t}\r\n\t}\r\n\r\n\tremoveComponent(key: string) {\r\n\t\tconst existingItem = this.mapComponents.find(p => p.key === key);\r\n\t\tif (existingItem) {\r\n\t\t\tthis.mapComponents.splice(this.mapComponents.indexOf(existingItem), 1);\r\n\r\n\t\t\tif (existingItem.component === \"guard\") {\r\n\t\t\t\tconst guardIdIndex = this.pinnedGuardIds.indexOf(existingItem.data.guard.guardId);\r\n\t\t\t\tif (guardIdIndex > -1) {\r\n\t\t\t\t\tthis.pinnedGuardIds.splice(guardIdIndex, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgotoLocation(location: ILatLng) {\r\n\t\tif (this.$refs.dispatchMap){\r\n\t\t\tthis.$refs.dispatchMap.goToLocation(location);\r\n\t\t}\r\n\t}\r\n\r\n\tasync cancelDispatch(guard: Guard, dispatchQueueItem: DispatchQueue) {\r\n\t\tawait mobileApi.finishDispatchRequest(dispatchQueueItem.dispatchQueueID, guard.guardId);\r\n\t}\r\n\r\n\t// Method invoked when guard marker right clicked on map\r\n\tpublic markerRightClicked(e: any) {\r\n\t\t// Ensure feature, permissions & prefs enabled\r\n\t\tif(!this.changeGuardTypeEnabled || !this.changeGuardTypeByIconPref || !this.changeGuardTypeByIconPref.value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.viewContextMenu(e);\r\n\t}\r\n\r\n\t// Method invoked when guard right clicked in guards list\r\n\tpublic guardRightClicked(e: any) {\r\n\t\t// Ensure feature, permissions & prefs enabled\r\n\t\tif(!this.changeGuardTypeEnabled || !this.changeGuardTypePref || !this.changeGuardTypePref.value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.viewContextMenu(e);\r\n\t}\r\n\r\n\t// Method displays the context menu\r\n\tpublic viewContextMenu(e: any) {\r\n\t\t// Flag to show context menu\r\n\t\tthis.viewMenuFlag = true;\r\n\r\n\t\t// Wait for next tick before getting dimensions of ctx menu and setting its x,y co-ordinates\r\n\t\tVue.nextTick(() => {\r\n\t\t\tconst contextMenuHeight = this.$refs.contextMenu.clientHeight;\r\n\t\t\tconst contextMenuWidth = this.$refs.contextMenu.clientWidth;\r\n\t\t\tthis.contextMenuLeft = e.event.x + 'px';\r\n\t\t\tif((e.event.x + Number(contextMenuWidth)) >= window.innerWidth) {\r\n\t\t\t\tthis.contextMenuLeft = (window.innerWidth - contextMenuWidth) + 'px';\r\n\t\t\t}\r\n\t\t\tthis.contextMenuTop = e.event.y + 'px';\r\n\t\t\tif((e.event.y + Number(contextMenuHeight)) >= window.innerHeight) {\r\n\t\t\t\tthis.contextMenuTop = (window.innerHeight - contextMenuHeight) + 'px';\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\t// Grab the guard that was right clicked\r\n\t\tthis.guardToUpdate = this.guards.find((guard: Guard) => {\r\n\t\t\treturn guard.guardId == e.guardId;\r\n\t\t})\r\n\t\tthis.selectedGuardTypeID = Number(this.guardToUpdate.dispatchGuardTypeID);\r\n\t}\r\n\r\n\t// Show modal to change guard type\r\n\tpublic showGuardTypeModal() {\r\n\t\tthis.viewMenuFlag = false;\r\n\t\tthis.changeTypeModalFlag = true;\r\n\t}\r\n\r\n\t// Method saves guard type after changing it\r\n\tpublic async saveGuardType() {\r\n\t\tthis.updatingGuardTypeFlag = true;\r\n\r\n\t\t// Update the guard locally\r\n\t\tthis.guardToUpdate.dispatchGuardTypeID = this.selectedGuardTypeID;\r\n\t\tthis.guardToUpdate.LastLocation = JSON.stringify(this.guardToUpdate.lastLocationLatLng);\r\n\r\n\t\t// Update the guard on the server\r\n\t\tawait api.updateGuard(this.guardToUpdate);\r\n\r\n\t\t// Update the guard in the cache\r\n\t\tawait api.updateGuardTypeCache(this.guardToUpdate);\r\n\r\n\t\t// Update the latest instance of the guard in the updating service\r\n\t\t// that hasn't been updated by the cache yet.\r\n\t\tlet guardToUpdate = this.guards.find((guard: Guard) => {\r\n\t\t\treturn guard.guardId == this.guardToUpdate.guardId;\r\n\t\t})\r\n\t\tguardToUpdate.dispatchGuardTypeID = this.selectedGuardTypeID;\r\n\r\n\t\tthis.selectedGuardTypeID = null;\r\n\t\tthis.updatingGuardTypeFlag = false;\r\n\t\tthis.changeTypeModalFlag = false;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dispatch.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Dispatch.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Dispatch.vue?vue&type=template&id=0f9a2557&scoped=true&\"\nimport script from \"./Dispatch.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dispatch.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Dispatch.vue?vue&type=style&index=0&id=0f9a2557&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0f9a2557\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}