{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/audio/AudioControl.vue?a2f3","webpack:///./src/components/audio/Receive.vue?137b","webpack:///./src/services/api.organizationSettings.ts","webpack:///./src/components/tasks/task-types/BasicTask.vue?a802","webpack:///./src/components/tasks/task-types/BasicTask.vue?c06f","webpack:///./src/components/tasks/task-types/BasicTask.vue?7f2e","webpack:///./src/components/tasks/task-types/BasicTask.vue","webpack:///./src/components/table/generic-update-modal.vue?842c","webpack:///./src/scripts/string-operations.ts","webpack:///./src/components/site-monitor/PutEventOnTestModal.vue?2093","webpack:///./src/components/rules-engine-setup/data-components/RuleGenericDropdown.vue?6a9b","webpack:///./src/components/Schedules/ScheduleModal.vue?1dca","webpack:///./src/components/Schedules/ScheduleMaskDuration.vue?d721","webpack:///./src/components/Schedules/ScheduleMaskDuration.vue?4513","webpack:///./src/components/Schedules/ScheduleMaskDuration.vue?5d1a","webpack:///./src/components/Schedules/ScheduleMaskDuration.vue","webpack:///./src/components/Schedules/ScheduleModal.vue?38e2","webpack:///./src/components/Schedules/ScheduleModal.vue?cb26","webpack:///./src/components/Schedules/ScheduleModal.vue","webpack:///./src/store/vuex-shared-mutations.ts","webpack:///./src/store/state.ts","webpack:///./src/store/getters.ts","webpack:///./src/store/actions.ts","webpack:///./src/store/mutations.ts","webpack:///./src/store/emails/getters.ts","webpack:///./src/store/emails/mutations.ts","webpack:///./src/store/emails/actions.ts","webpack:///./src/store/emails/state.ts","webpack:///./src/store/emails/index.ts","webpack:///./src/store/csv-parser/getters.ts","webpack:///./src/store/csv-parser/mutations.ts","webpack:///./src/store/csv-parser/actions.ts","webpack:///./src/store/csv-parser/state.ts","webpack:///./src/store/csv-parser/index.ts","webpack:///./src/store/eventqueue/getters.ts","webpack:///./src/store/eventqueue/actions.ts","webpack:///./src/store/eventqueue/state.ts","webpack:///./src/store/eventqueue/mutations.ts","webpack:///./src/store/eventqueue/index.ts","webpack:///./src/store/site-monitor/getters.ts","webpack:///./src/store/site-monitor/actions.ts","webpack:///./src/store/site-monitor/state.ts","webpack:///./src/store/site-monitor/mutations.ts","webpack:///./src/store/site-monitor/index.ts","webpack:///./src/store/site-monitor-cameras/getters.ts","webpack:///./src/store/site-monitor-cameras/actions.ts","webpack:///./src/store/site-monitor-cameras/state.ts","webpack:///./src/store/site-monitor-cameras/mutations.ts","webpack:///./src/store/site-monitor-cameras/index.ts","webpack:///./src/store/tasks/getters.ts","webpack:///./src/store/tasks/actions.ts","webpack:///./src/store/tasks/state.ts","webpack:///./src/store/tasks/mutations.ts","webpack:///./src/store/tasks/index.ts","webpack:///./src/store/sessions/getters.ts","webpack:///./src/store/sessions/actions.ts","webpack:///./src/store/sessions/state.ts","webpack:///./src/store/sessions/mutations.ts","webpack:///./src/store/sessions/index.ts","webpack:///./src/store/plugins.ts","webpack:///./src/store/map-layers/getters.ts","webpack:///./src/store/map-layers/actions.ts","webpack:///./src/store/map-layers/state.ts","webpack:///./src/store/map-layers/mutations.ts","webpack:///./src/store/map-layers/index.ts","webpack:///./src/store/user-management/getters.ts","webpack:///./src/store/user-management/actions.ts","webpack:///./src/store/user-management/state.ts","webpack:///./src/store/user-management/mutations.ts","webpack:///./src/store/user-management/index.ts","webpack:///./src/services/api.devices.service.ts","webpack:///./src/utils/objectToCamelCase.ts","webpack:///./src/store/devices/actions.ts","webpack:///./src/store/devices/state.ts","webpack:///./src/store/devices/mutations.ts","webpack:///./src/store/devices/getters.ts","webpack:///./src/store/devices/index.ts","webpack:///./src/store/responses/getters.ts","webpack:///./src/store/responses/actions.ts","webpack:///./src/store/responses/state.ts","webpack:///./src/store/responses/mutations.ts","webpack:///./src/store/responses/index.ts","webpack:///./src/store/event-search/getters.ts","webpack:///./src/store/event-search/actions.ts","webpack:///./src/store/event-search/state.ts","webpack:///./src/store/event-search/mutations.ts","webpack:///./src/store/event-search/index.ts","webpack:///./src/utils/wait.ts","webpack:///./src/store/mobile/getters.ts","webpack:///./src/store/mobile/actions.ts","webpack:///./src/store/mobile/state.ts","webpack:///./src/store/views/types.ts","webpack:///./src/store/mobile/mutations.ts","webpack:///./src/store/mobile/index.ts","webpack:///./src/store/views/getters.ts","webpack:///./src/services/api.views.service.ts","webpack:///./src/store/views/actions.ts","webpack:///./src/store/views/state.ts","webpack:///./src/store/views/mutations.ts","webpack:///./src/store/views/index.ts","webpack:///./src/store/reports/getters.ts","webpack:///./src/store/reports/actions.ts","webpack:///./src/store/reports/state.ts","webpack:///./src/store/reports/mutations.ts","webpack:///./src/store/reports/index.ts","webpack:///./src/store/area-notes/getters.ts","webpack:///./src/store/area-notes/actions.ts","webpack:///./src/store/area-notes/state.ts","webpack:///./src/store/area-notes/mutations.ts","webpack:///./src/store/area-notes/index.ts","webpack:///./src/store/activity-log/getters.ts","webpack:///./src/store/activity-log/actions.ts","webpack:///./src/store/activity-log/mutations.ts","webpack:///./src/store/activity-log/index.ts","webpack:///./src/store/areas/getters.ts","webpack:///./src/types/PollingStatus.ts","webpack:///./src/store/areas/actions.ts","webpack:///./src/store/areas/types.ts","webpack:///./src/store/areas/state.ts","webpack:///./src/store/areas/mutations.ts","webpack:///./src/store/areas/index.ts","webpack:///./src/store/tours/getters.ts","webpack:///./src/store/tours/actions.ts","webpack:///./src/store/tours/state.ts","webpack:///./src/store/tours/mutations.ts","webpack:///./src/store/tours/index.ts","webpack:///./src/store/generic-table/getters.ts","webpack:///./src/store/generic-table/state.ts","webpack:///./src/store/generic-table/mutations.ts","webpack:///./src/store/generic-table/index.ts","webpack:///./src/store/manual-raise/mutations.ts","webpack:///./src/store/manual-raise/actions.ts","webpack:///./src/store/manual-raise/index.ts","webpack:///./src/store/mobile-raise-templates/actions.ts","webpack:///./src/store/mobile-raise-templates/getters.ts","webpack:///./src/store/mobile-raise-templates/state.ts","webpack:///./src/store/mobile-raise-templates/mutations.ts","webpack:///./src/store/mobile-raise-templates/index.ts","webpack:///./src/store/mobile-raise/actions.ts","webpack:///./src/store/mobile-raise/state.ts","webpack:///./src/store/mobile-raise/mutations.ts","webpack:///./src/store/mobile-raise/index.ts","webpack:///./src/store/subscription/getters.ts","webpack:///./src/store/subscription/actions.ts","webpack:///./src/store/subscription/state.ts","webpack:///./src/store/subscription/mutations.ts","webpack:///./src/store/subscription/index.ts","webpack:///./src/store/signup/getters.ts","webpack:///./src/store/signup/actions.ts","webpack:///./src/store/signup/state.ts","webpack:///./src/store/signup/mutations.ts","webpack:///./src/store/signup/index.ts","webpack:///./src/store/external-map-layers/getters.ts","webpack:///./src/store/external-map-layers/actions.ts","webpack:///./src/store/external-map-layers/state.ts","webpack:///./src/store/external-map-layers/mutations.ts","webpack:///./src/store/external-map-layers/index.ts","webpack:///./src/store/case-management/state.ts","webpack:///./src/store/case-management/actions.ts","webpack:///./src/store/case-management/mutations.ts","webpack:///./src/store/case-management/index.ts","webpack:///./src/store/csv-form-handler/getters.ts","webpack:///./src/store/csv-form-handler/mutations.ts","webpack:///./src/store/csv-form-handler/actions.ts","webpack:///./src/store/csv-form-handler/state.ts","webpack:///./src/store/csv-form-handler/index.ts","webpack:///./src/store/alarm-masking/getters.ts","webpack:///./src/store/alarm-masking/actions.ts","webpack:///./src/store/alarm-masking/state.ts","webpack:///./src/store/alarm-masking/mutations.ts","webpack:///./src/store/alarm-masking/index.ts","webpack:///./src/store/user-context/actions.ts","webpack:///./src/store/user-context/state.ts","webpack:///./src/store/user-context/mutations.ts","webpack:///./src/store/user-context/getters.ts","webpack:///./src/store/user-context/index.ts","webpack:///./src/store/guard-chat/state.ts","webpack:///./src/store/guard-chat/mutations.ts","webpack:///./src/store/guard-chat/actions.ts","webpack:///./src/store/guard-chat/getters.ts","webpack:///./src/store/guard-chat/index.ts","webpack:///./src/store/field-ops/actions.ts","webpack:///./src/store/field-ops/state.ts","webpack:///./src/store/field-ops/mutations.ts","webpack:///./src/store/field-ops/index.ts","webpack:///./src/store/setup/getters.ts","webpack:///./src/store/setup/actions.ts","webpack:///./src/store/setup/state.ts","webpack:///./src/store/setup/mutations.ts","webpack:///./src/store/setup/index.ts","webpack:///./src/store/response-actions/actions.ts","webpack:///./src/store/response-actions/state.ts","webpack:///./src/store/response-actions/mutations.ts","webpack:///./src/store/response-actions/index.ts","webpack:///./src/mixins/paginatedSearchExtendedMixins.ts","webpack:///./src/store/custom-fields/actions.ts","webpack:///./src/store/custom-fields/state.ts","webpack:///./src/store/custom-fields/mutations.ts","webpack:///./src/store/custom-fields/getters.ts","webpack:///./src/store/custom-fields/index.ts","webpack:///./src/store/system-health/getters.ts","webpack:///./src/store/system-health/state.ts","webpack:///./src/store/system-health/mutations.ts","webpack:///./src/components/rules-engine-setup/RulesScope.vue?5578","webpack:///./src/store/system-health/actions.ts","webpack:///./src/store/system-health/index.ts","webpack:///./src/components/rules-engine-setup/RulesLogicBuilder.vue?02b4","webpack:///./src/components/rules-engine-setup/RulesLogicBuilder.vue?910b","webpack:///./src/components/rules-engine-setup/RulesLogicBuilder.vue?530f","webpack:///./src/components/rules-engine-setup/RulesLogicBuilder.vue","webpack:///./src/components/rules-engine-setup/RulesScope.vue?0017","webpack:///./src/components/rules-engine-setup/data-components/RulesNumberInput.vue?0202","webpack:///./src/components/rules-engine-setup/data-components/RulesNumberInput.vue?7243","webpack:///./src/components/rules-engine-setup/data-components/RulesNumberInput.vue?c077","webpack:///./src/components/rules-engine-setup/data-components/RulesNumberInput.vue","webpack:///./src/components/rules-engine-setup/data-components/RulesAlarmDropdown.vue?a313","webpack:///./src/components/rules-engine-setup/data-components/RuleGenericDropdown.vue?f40a","webpack:///./src/components/rules-engine-setup/data-components/RuleGenericDropdown.vue?fb36","webpack:///./src/components/rules-engine-setup/data-components/RuleGenericDropdown.vue?b948","webpack:///./src/components/rules-engine-setup/data-components/RuleGenericDropdown.vue","webpack:///./src/components/rules-engine-setup/data-components/RulesAlarmDropdown.vue?46e4","webpack:///./src/components/rules-engine-setup/data-components/RulesAlarmDropdown.vue?d7db","webpack:///./src/components/rules-engine-setup/data-components/RulesAlarmDropdown.vue","webpack:///./src/components/rules-engine-setup/RulesScope.vue?6035","webpack:///./src/components/rules-engine-setup/RulesScope.vue","webpack:///./src/utils/string-utils.ts","webpack:///./src/store/rules-engine/getters.ts","webpack:///./src/store/rules-engine/actions.ts","webpack:///./src/store/rules-engine/state.ts","webpack:///./src/store/rules-engine/mutations.ts","webpack:///./src/store/rules-engine/index.ts","webpack:///./src/store/distance-configuration/getters.ts","webpack:///./src/store/distance-configuration/mutations.ts","webpack:///./src/store/distance-configuration/actions.ts","webpack:///./src/store/distance-configuration/state.ts","webpack:///./src/store/distance-configuration/index.ts","webpack:///./src/store/schedules/getters.ts","webpack:///./src/store/schedules/actions.ts","webpack:///./src/store/schedules/mutations.ts","webpack:///./src/store/schedules/state.ts","webpack:///./src/store/schedules/index.ts","webpack:///./src/store/alarm-points/actions.ts","webpack:///./src/store/alarm-points/mutations.ts","webpack:///./src/store/alarm-points/index.ts","webpack:///./src/store/area-event-history/actions.ts","webpack:///./src/store/area-event-history/state.ts","webpack:///./src/store/area-event-history/mutations.ts","webpack:///./src/store/area-event-history/index.ts","webpack:///./src/store/index.ts","webpack:///./src/components/AreaCameras.vue?5381","webpack:///./src/components/emails/email-holder.vue?68f0","webpack:///./src/components/Schedules/ScheduleModal.vue?d874","webpack:///./src/mixins/SiteMonitorMixin.ts","webpack:///./src/components/area-notes/AreaNotesTable.vue?c5d0","webpack:///./src/components/area-notes/AreaNotesTableItem.vue?37f4","webpack:///./src/components/area-notes/AreaNotesTableItem.vue?22c9","webpack:///./src/components/area-notes/AreaNotesTableItem.vue?f5bb","webpack:///./src/components/area-notes/AreaNotesTableItem.vue","webpack:///./src/components/area-notes/AreaNotesTable.vue?ab68","webpack:///./src/components/area-notes/AreaNotesTable.vue?f081","webpack:///./src/components/area-notes/AreaNotesTable.vue","webpack:///./src/components/DeviceController.vue?3e14","webpack:///./src/components/area-notes/AreaNotesModal.vue?beb7","webpack:///./src/components/area-notes/AreaNotesModal.vue?7f01","webpack:///./src/components/area-notes/AreaNotesModal.vue?5c5d","webpack:///./src/components/area-notes/AreaNotesModal.vue","webpack:///./src/App.vue?5cc3","webpack:///./src/components/alarm-points/AlarmPointHistory.vue?9a4f","webpack:///./src/components/area-tree-select/AdditionalFields.vue?dd10","webpack:///./src/components/site-monitor/InvolvedParties.vue?4705","webpack:///./src/views/SignUp/SecurityInfo.vue?2876","webpack:///./src/components/mobile-raise-templates/TemplateModal.vue?4a7f","webpack:///./src/views/ContactRoles.vue?5807","webpack:///./src/filters.ts","webpack:///./src/components/alarm-masking/MaskingModalLauncher.vue?c371","webpack:///./src/components/form/RichTextEditor.vue?ddae","webpack:///./src/components/EventRecords.vue?970e","webpack:///./src/components/DesktopLeftSidebar.vue?726a","webpack:///./src/components/table/generic-table.vue?f11c","webpack:///./src/components/table/generic-table.vue?3f95","webpack:///./src/components/table/generic-table.vue?2d24","webpack:///./src/components/table/generic-table.vue","webpack:///./src/views/FeatureSetup.vue?7718","webpack:///./src/components/area-notes/AreaNotesForm.vue?ee51","webpack:///./src/components/area-notes/AreaNotesForm.vue?cd47","webpack:///./src/components/area-notes/AreaNotesForm.vue?d601","webpack:///./src/components/area-notes/AreaNotesForm.vue","webpack:///./src/components/device-setup/CameraPreview.vue?86a2","webpack:///./src/components/EventSharing.vue?aceb","webpack:///./src/components/EventSharingAsset.vue?19ba","webpack:///./src/components/EventSharingAsset.vue?67b4","webpack:///./src/components/EventSharingAsset.vue?f23c","webpack:///./src/components/EventSharingAsset.vue","webpack:///./src/components/EventSharing.vue?45c0","webpack:///./src/components/EventSharing.vue?5cf4","webpack:///./src/components/EventSharing.vue","webpack:///./src/components/system-view/SystemViewHealthFilter.vue?847c","webpack:///./src/types/sv-data/enums/NotificationDocumentTypeIds.ts","webpack:///./src/components/tasks/CompleteTaskLine.vue?aa3e","webpack:///./src/components/media/AreaCameras.vue?d88e","webpack:///./src/views/TourSetup.vue?5c36","webpack:///./src/services/api.user.service.ts","webpack:///./src/components/setup/FeatureTree.vue?f2ef","webpack:///./src/views/AssetSetup.vue?2f2f","webpack:///./src/components/emails/email-holder.vue?d6fb","webpack:///./src/components/emails/base/email-from-to.vue?b945","webpack:///./src/components/emails/base/email-from-to.vue?2b20","webpack:///./src/components/emails/base/email-from-to.vue?baf0","webpack:///./src/components/emails/base/email-from-to.vue","webpack:///./src/components/emails/base/email-attachments.vue?a191","webpack:///./src/components/emails/base/email-attachments.vue?0306","webpack:///./src/components/emails/base/email-attachments.vue?cb4c","webpack:///./src/components/emails/base/email-attachments.vue","webpack:///./src/components/emails/email-holder.vue?d0fb","webpack:///./src/components/emails/email-holder.vue?c9ef","webpack:///./src/components/emails/email-holder.vue","webpack:///./src/store/schedules/types.ts","webpack:///./src/components/form/AreaTreeSelect.vue?5c3b","webpack:///./src/components/reports/ReportBuilder.vue?0d86","webpack:///./src/components/EventClose.vue?8c90","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationEditModal.vue?9925","webpack:///./src/components/AreaDateTimeDisplay.vue?6b66","webpack:///./src/components/AreaDateTimeDisplay.vue?40c0","webpack:///./src/components/AreaDateTimeDisplay.vue?a820","webpack:///./src/components/AreaDateTimeDisplay.vue","webpack:///./src/store/sessions/types.ts","webpack:///./src/components/system-view/advanced-filters/PeriodAlarmCountAdvancedFilter.vue?447e","webpack:///./src/components/tasks/task-types/DynamicDataList.vue?d5cc","webpack:///./src/components/tasks/task-types/DynamicDataList.vue?cd5c","webpack:///./src/components/tasks/task-types/DynamicDataList.vue?785b","webpack:///./src/components/tasks/task-types/DynamicDataList.vue","webpack:///./src/components/emails/base/email-attachments.vue?3bae","webpack:///./src/components/utilities/NestedSelect.vue?83b6","webpack:///./src/components/utilities/NestedSelect.vue?69fc","webpack:///./src/components/utilities/NestedSelect.vue?cecc","webpack:///./src/components/utilities/NestedSelect.vue","webpack:///./src/components/ManualPatrol.vue?8850","webpack:///./src/components/system-view/advanced-filters/LastTimeAlarmAdvancedFilter.vue?a8c3","webpack:///./src/components/alarm-masking/MaskingModalFilteredAreas.vue?9dc1","webpack:///./src/components/tasks/task-types/AuditTask.vue?2143","webpack:///./src/components/tasks/task-types/AuditTask.vue?3d85","webpack:///./src/components/tasks/task-types/AuditTask.vue?6830","webpack:///./src/components/tasks/task-types/AuditTask.vue","webpack:///./src/components/mobile/live/StarredCameras.vue?9938","webpack:///./src/components/custom-fields/CustomDefinedFieldsDisplay.vue?80a6","webpack:///./src/components/custom-fields/CustomDefinedField.vue?76ca","webpack:///./src/components/custom-fields/CustomDefinedField.vue?77ac","webpack:///./src/components/custom-fields/CustomDefinedField.vue?16e4","webpack:///./src/components/custom-fields/CustomDefinedField.vue","webpack:///./src/components/custom-fields/CustomDefinedFieldsDisplay.vue?5ec8","webpack:///./src/components/custom-fields/CustomDefinedFieldsDisplay.vue?d7e5","webpack:///./src/components/custom-fields/CustomDefinedFieldsDisplay.vue","webpack:///./src/components/organization-settings/QuickEndSettings.vue?77ca","webpack:///./src/components/reports/InsightsGraph.vue?31d7","webpack:///./src/components/situational-awareness/MapDataSources.vue?cfac","webpack:///./src/components/EventDetails.vue?6f84","webpack:///./src/components/EventDetails.vue?13f1","webpack:///./src/components/EventDetails.vue?6a6d","webpack:///./src/components/EventDetails.vue","webpack:///./src/components/alarm-points/AlarmPointSelect.vue?b59c","webpack:///./src/views/AreaSetup/AreaRegionSetup.vue?650c","webpack:///./src/components/alarm-masking/MaskingModal.vue?2dec","webpack:///./src/views/MFA.vue?05b7","webpack:///./src/views/MFA.vue?46d3","webpack:///./src/views/MFA.vue?a9ff","webpack:///./src/views/MFA.vue","webpack:///./src/views/SubscriptionDetails.vue?511e","webpack:///./src/components/form/SearchDropDown.vue?2912","webpack:///./src/components/form/SearchDropDown.vue?dee1","webpack:///./src/components/form/SearchDropDown.vue?7a92","webpack:///./src/components/form/SearchDropDown.vue","webpack:///./src/components/OpsLinks.vue?0cd7","webpack:///./src/components/area-tree-select/DrawdownBreadcrumbs.vue?9b6c","webpack:///./src/components/tasks/task-types/EventOutcomeTask.vue?4ef0","webpack:///./src/components/tasks/task-types/EventOutcomeTask.vue?a6ab","webpack:///./src/components/tasks/task-types/EventOutcomeTask.vue?c7c5","webpack:///./src/components/tasks/task-types/EventOutcomeTask.vue","webpack:///./src/components/EventLeave.vue?7eb1","webpack:///./src/components/mobile/mobile-raise/RaiseActivityLog.vue?0a92","webpack:///./src/views/Cameras.vue?beea","webpack:///./src/components/system-view/SetupOverviewAlarm.vue?ef3d","webpack:///./src/components/tasks/EventTaskGroup.vue?cc12","webpack:///./src/components/csv-uploader/csv-progress.vue?70f3","webpack:///./src/components/audio/Transmit.vue?3a09","webpack:///./src/views/UserSetup/ClearMFA.vue?cdb4","webpack:///./src/views/MobileCore.vue?1d15","webpack:///./src/components/external-map-layer/DeleteExternalMapLayerModal.vue?28ef","webpack:///./src/components/rules-engine-setup/RulesScope.vue?ea6e","webpack:///./src/components/organization-settings/SingleSignOnSettings.vue?edc7","webpack:///./src/components/areas/AreaSetupDisableAreaButton.vue?f9e6","webpack:///./src/views/ResetPassword.vue?6089","webpack:///./src/components/device-setup/sync/GroupSyncConfig.vue?ba7f","webpack:///./src/components/alarm-points/AlarmPoint.vue?7c24","webpack:///./src/components/EventLeave.vue?62aa","webpack:///./src/components/EventLeave.vue?8328","webpack:///./src/components/EventLeave.vue?0114","webpack:///./src/components/EventLeave.vue","webpack:///./src/views/AreaSetup/AreaTreePath.vue?7f0e","webpack:///./src/components/Schedules/ScheduleModal.vue?267b","webpack:///./src/components/area-notes/AreaNotesFinder.vue?3031","webpack:///./src/components/alarm-points/AlarmPointFinder.vue?5ee7","webpack:///./src/components/tasks/EventTaskContainer.vue?be4a","webpack:///./src/components/system-view/advanced-filters/SystemViewAdvancedFilters.vue?4558","webpack:///./src/components/tasks/task-types/SitRepTask.vue?79f4","webpack:///./src/components/tasks/task-types/SitRepTask.vue?ca47","webpack:///./src/components/tasks/task-types/SitRepTask.vue?c85a","webpack:///./src/components/tasks/task-types/SitRepTask.vue","webpack:///./src/components/ErrorWarning.vue?2423","webpack:///./src/components/ErrorWarning.vue?d769","webpack:///./src/components/ErrorWarning.vue?4cc7","webpack:///./src/components/ErrorWarning.vue","webpack:///./src/types/sv-data/enums/NotificationTemplateTypeIds.ts","webpack:///./src/components/alarm-masking/MaskingModal.vue?176f","webpack:///./src/components/alarm-masking/AlarmMaskDurationInput.vue?3db6","webpack:///./src/components/alarm-masking/AlarmMaskDurationInput.vue?163c","webpack:///./src/components/alarm-masking/AlarmMaskDurationInput.vue?21a2","webpack:///./src/components/alarm-masking/AlarmMaskDurationInput.vue","webpack:///./src/components/alarm-masking/MaskingModal.vue?38b9","webpack:///./src/components/alarm-masking/MaskingModal.vue?75e1","webpack:///./src/components/alarm-masking/MaskingModal.vue","webpack:///./src/components/tasks/TaskTriggerDialog.vue?e98b","webpack:///./src/components/form/TreePicker.vue?e7de","webpack:///./src/components/AlarmQueueFooter.vue?472d","webpack:///./src/components/external-map-layer/ExternalMapLayerModal.vue?2f65","webpack:///./src/components/device-setup/sync/GroupSyncConfig.vue?9089","webpack:///./src/components/device-setup/sync/GroupSyncConfig.vue?33be","webpack:///./src/components/device-setup/sync/GroupSyncConfig.vue?47cd","webpack:///./src/components/device-setup/sync/GroupSyncConfig.vue","webpack:///./src/components/form/CaseTypeSelect.vue?0075","webpack:///./src/components/mobile/assets/Events/MobileEventShare.vue?1c74","webpack:///./src/components/form/SVButton.vue?3c1d","webpack:///./src/components/alarm-masking/MaskingModal.vue?8022","webpack:///./src/components/mobile-raise-templates/ConfirmationModal.vue?9c6b","webpack:///./src/services/gps.service.ts","webpack:///./src/types/sv-data/events/ActionState.ts","webpack:///./src/components/system-view/SetupOverview.vue?2a2b","webpack:///./src/components/map-setup/MapLayerSetup.vue?11e9","webpack:///./src/components/EnhancedSingleMap.vue?b2c9","webpack:///./src/scripts/mapping/mapStyle.ts","webpack:///./src/components/asset/AssetOnlySetup.vue?0481","webpack:///./src/components/rules-engine-setup/RulesCard.vue?f1b9","webpack:///./src/views/EventQueue.vue?aac5","webpack:///./src/components/SiteMonitorHeader.vue?2cc4","webpack:///./src/components/ShortcutHelp.vue?cdff","webpack:///./src/components/ShortcutHelp.vue?b0c0","webpack:///./src/components/ShortcutHelp.vue?1f9a","webpack:///./src/components/ShortcutHelp.vue","webpack:///./src/components/tasks/ActionLibrarySimpleList.vue?d344","webpack:///./src/components/mobile/core/MobileMap.vue?bbee","webpack:///./src/services/api.schedules.service.ts","webpack:///./src/components/Schedules/SchedulesCalendar.vue?a520","webpack:///./src/views/TempLogin.vue?ab03","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/components/AreaDateTimeDisplay.vue?5604","webpack:///./src/components/form/CameraSelect.vue?c36b","webpack:///./src/views/SignUp/ContactInfo.vue?bdc8","webpack:///./src/views/FieldOps.vue?0dd2","webpack:///./src/components/Sidebar.vue?793f","webpack:///./src/components/Sidebar.vue?b226","webpack:///./src/components/DesktopLeftSidebar.vue?70d7","webpack:///./src/components/Sidebar.vue?43a8","webpack:///./src/components/Sidebar.vue","webpack:///./src/components/mobile/assets/AssetMove.vue?aa39","webpack:///./src/components/mobile/assets/AssetMove.vue?af96","webpack:///./src/components/mobile/assets/AssetMove.vue?d92a","webpack:///./src/components/mobile/assets/AssetMove.vue","webpack:///./src/components/DesktopLeftSidebar.vue?f918","webpack:///./src/components/situational-awareness/SituationalAwarenessAlertsControl.vue?235f","webpack:///./src/components/emails/EmailRawDataControl.vue?279f","webpack:///./src/components/emails/EmailRawDataControl.vue?06b8","webpack:///./src/components/emails/EmailRawDataControl.vue?2729","webpack:///./src/components/emails/EmailRawDataControl.vue","webpack:///./src/components/emails/EmailRawDataModal.vue?8c14","webpack:///./src/components/emails/EmailRawDataModal.vue?c6c9","webpack:///./src/components/emails/EmailRawDataModal.vue?342e","webpack:///./src/components/emails/EmailRawDataModal.vue","webpack:///./src/components/situational-awareness/SituationalAwarenessAlertsControl.vue?b6d7","webpack:///./src/components/situational-awareness/SituationalAwarenessAlertsControl.vue?e56c","webpack:///./src/components/situational-awareness/SituationalAwarenessAlertsControl.vue","webpack:///./src/components/DesktopLeftSidebar.vue?788b","webpack:///./src/components/DesktopLeftSidebar.vue","webpack:///./src/views/FieldOps.vue?6fcd","webpack:///./src/views/FieldOps.vue?d15c","webpack:///./src/views/FieldOps.vue","webpack:///./src/types/sv-data/enums/EventTypes.ts","webpack:///./src/utils/formatterEmailAttachments.js","webpack:///./src/components/event-queue/InactivityWarning.vue?d9ce","webpack:///./src/components/NavMenu.vue?29f0","webpack:///./src/components/EventSharingAsset.vue?7771","webpack:///./src/components/tasks/task-types/YesNoTask.vue?9eaf","webpack:///./src/components/tasks/task-types/YesNoTask.vue?9766","webpack:///./src/components/tasks/task-types/YesNoTask.vue?3598","webpack:///./src/components/tasks/task-types/YesNoTask.vue","webpack:///./src/components/NavMenu.vue?1289","webpack:///./src/components/my-account/my-account.vue?708e","webpack:///./src/components/my-account/account-details.vue?51c3","webpack:///./src/components/my-account/clear-mfa.vue?f227","webpack:///./src/components/my-account/clear-mfa.vue?d43f","webpack:///./src/components/my-account/clear-mfa.vue?bc85","webpack:///./src/components/my-account/clear-mfa.vue","webpack:///./src/components/my-account/account-details.vue?ab1b","webpack:///./src/components/my-account/account-details.vue?16e7","webpack:///./src/components/my-account/account-details.vue","webpack:///./src/components/my-account/my-account.vue?7105","webpack:///./src/components/my-account/my-account.vue?e200","webpack:///./src/components/my-account/my-account.vue","webpack:///./src/components/system-admin/SwitchTenant.vue?299a","webpack:///./src/components/system-admin/SwitchTenant.vue?1a07","webpack:///./src/components/system-admin/SwitchTenant.vue?ae89","webpack:///./src/components/system-admin/SwitchTenant.vue","webpack:///./src/components/NavMenuIcon.vue?3775","webpack:///./src/components/NavMenuIcon.vue?5a04","webpack:///./src/components/NavMenuIcon.vue?e48a","webpack:///./src/components/NavMenuIcon.vue","webpack:///./src/components/GettingStartedModal.vue?257d","webpack:///./src/components/GettingStartedModal.vue?f7a6","webpack:///./src/components/GettingStartedModal.vue?1887","webpack:///./src/components/GettingStartedModal.vue","webpack:///./src/components/Support.vue?a2e3","webpack:///./src/components/Support.vue?13a2","webpack:///./src/components/Support.vue?afab","webpack:///./src/components/Support.vue","webpack:///./src/components/NavMenu.vue?9eb5","webpack:///./src/components/NavMenu.vue?3e16","webpack:///./src/components/NavMenu.vue","webpack:///./src/types/sv-data/enums/EventRecordTypes.ts","webpack:///./src/components/mobile/assets/AssetMove.vue?5cb6","webpack:///./src/components/IncidentReport.vue?169f","webpack:///./src/components/mobile/core/RightSideBar.vue?d839","webpack:///./src/components/AuditControl.vue?930d","webpack:///./src/views/Permissions.vue?a1fe","webpack:///./src/types/sv-data/enums/MobileEventShareStates.ts","webpack:///./src/components/tasks/AddNewActionCategory.vue?a437","webpack:///./src/components/ZendeskHelp.vue?34ab","webpack:///./src/components/ZendeskHelp.vue?8d2e","webpack:///./src/components/ZendeskHelp.vue?eed6","webpack:///./src/components/ZendeskHelp.vue","webpack:///./src/components/mobile-assets/MobileAssetHistory.vue?e0b8","webpack:///./src/components/area-notes/AreaNotesTableItem.vue?a19b","webpack:///./src/components/ParkedQueue.vue?22f8","webpack:///./src/components/tasks/choices/ChoicesTaskSetup.vue?5245","webpack:///./src/components/tasks/choices/ChoicesTaskSetup.vue?f37c","webpack:///./src/components/tasks/choices/ChoicesTaskSetup.vue?a7b4","webpack:///./src/components/tasks/choices/ChoicesTaskSetup.vue","webpack:///./src/components/alarm-masking/MaskingModalGroupBadge.vue?a1d0","webpack:///./src/views/EventQueue.vue?edf7","webpack:///./src/components/mobile/core/MobileMap.vue?ee34","webpack:///./src/components/EventLeave.vue?40d2","webpack:///./src/components/EnhancedMapSidebar.vue?92d4","webpack:///./src/components/system-view/HealthHistory.vue?0480","webpack:///./src/components/area-event-history/AreaEventHistory.vue?d993","webpack:///./src/components/area-event-history/AreaEventHistory.vue?175d","webpack:///./src/components/area-event-history/AreaEventHistory.vue?4381","webpack:///./src/components/area-event-history/AreaEventHistory.vue","webpack:///./src/components/reports/ReportFilters.vue?87e0","webpack:///./src/components/external-map-layer/ExternalMapLayerSelector.vue?cebe","webpack:///./src/axios.instance.ts","webpack:///./src/services/api.supportEngagement.service.ts","webpack:///./src/views/SiteAdminLanding.vue?5d6f","webpack:///./src/views/ExternalMapLayerSetup.vue?8047","webpack:///./src/components/action-plans/ActionPlansModal.vue?0ed8","webpack:///./src/services/api.guardChat.service.ts","webpack:///./src/components/setup/alarm-setup/decoder-setup/AlarmDecoderTable.vue?5405","webpack:///./src/utils/CustomFieldLogic.ts","webpack:///./src/components/situational-awareness/MapDataSources.vue?6f21","webpack:///./src/components/situational-awareness/AdvancedMapFilters.vue?7631","webpack:///./src/components/situational-awareness/AdvancedMapFilters.vue?641c","webpack:///./src/components/situational-awareness/AdvancedMapFilters.vue?7a6b","webpack:///./src/components/situational-awareness/AdvancedMapFilters.vue","webpack:///./src/components/external-map-layer/ExternalMapLayerSelector.vue?037a","webpack:///./src/components/external-map-layer/ExternalMapLayerSelector.vue?7a7d","webpack:///./src/components/external-map-layer/ExternalMapLayerSelector.vue?7a85","webpack:///./src/components/external-map-layer/ExternalMapLayerSelector.vue","webpack:///./src/components/situational-awareness/MapDataSources.vue?366a","webpack:///./src/components/situational-awareness/MapDataSources.vue?a9a3","webpack:///./src/components/situational-awareness/MapDataSources.vue","webpack:///./src/store/mobile/types.ts","webpack:///./src/views/Login.vue?0ae4","webpack:///./src/mixins/MobileMixin.ts","webpack:///./src/views/Login.vue?805f","webpack:///./src/views/Login.vue?0409","webpack:///./src/views/Login.vue","webpack:///./src/views/LoginSaml.vue?65aa","webpack:///./src/views/LoginSaml.vue?79f7","webpack:///./src/views/LoginSaml.vue?3fb3","webpack:///./src/views/LoginSaml.vue","webpack:///./src/views/TempLogin.vue?bd58","webpack:///./src/views/TempLogin.vue?d376","webpack:///./src/views/TempLogin.vue?1774","webpack:///./src/views/TempLogin.vue","webpack:///./src/views/EventQueue.vue?a5c7","webpack:///./src/components/SiteStatus.vue?f89f","webpack:///./src/components/SiteStatus.vue?88cc","webpack:///./src/components/SiteStatus.vue?a4b2","webpack:///./src/components/SiteStatus.vue","webpack:///./src/components/AlarmQueueHeader.vue?6441","webpack:///./src/components/area-notes/AreaNotesFinder.vue?3f2e","webpack:///./src/components/area-notes/AreaNotesFinder.vue?6c97","webpack:///./src/components/area-notes/AreaNotesFinder.vue?c5d2","webpack:///./src/components/area-notes/AreaNotesFinder.vue","webpack:///./src/components/system-view/SystemViewHealthFilter.vue?9501","webpack:///./src/components/system-view/SystemViewHealthRadioFilter.vue?7cf2","webpack:///./src/components/system-view/SystemViewHealthRadioFilter.vue?9380","webpack:///./src/components/system-view/SystemViewHealthRadioFilter.vue?9e82","webpack:///./src/components/system-view/SystemViewHealthRadioFilter.vue","webpack:///./src/components/system-view/SystemViewHealthFilter.vue?bc51","webpack:///./src/components/system-view/SystemViewHealthFilter.vue?3a87","webpack:///./src/components/system-view/SystemViewHealthFilter.vue","webpack:///./src/components/AlarmQueueFilterTabs.vue?2675","webpack:///./src/components/AlarmQueueFilterEdit.vue?5f54","webpack:///./src/components/AlarmQueueFilterEdit.vue?7042","webpack:///./src/components/AlarmQueueFilterEdit.vue?17c1","webpack:///./src/components/AlarmQueueFilterEdit.vue","webpack:///./src/components/AlarmQueueFilterTabs.vue?8328","webpack:///./src/components/AlarmQueueFilterTabs.vue?e5d1","webpack:///./src/components/AlarmQueueFilterTabs.vue","webpack:///./src/components/AlarmQueueHeader.vue?d28d","webpack:///./src/components/AlarmQueueHeader.vue?b9fa","webpack:///./src/components/AlarmQueueHeader.vue","webpack:///./src/components/AlarmQueueFooter.vue?1c2f","webpack:///./src/components/event-queue/PatrolQueue.vue?7e51","webpack:///./src/components/event-queue/PatrolQueue.vue?6ec6","webpack:///./src/components/event-queue/PatrolQueue.vue?d02d","webpack:///./src/components/event-queue/PatrolQueue.vue","webpack:///./src/components/ProcessingQueue.vue?8b28","webpack:///./src/components/ProcessingQueue.vue?8356","webpack:///./src/components/ProcessingQueue.vue?9d4d","webpack:///./src/components/ProcessingQueue.vue","webpack:///./src/components/ParkedQueue.vue?300c","webpack:///./src/components/ParkedQueue.vue?bd8e","webpack:///./src/components/ParkedQueue.vue?84bf","webpack:///./src/components/ParkedQueue.vue","webpack:///./src/components/event-queue/OnTestQueue.vue?25e5","webpack:///./src/components/event-queue/OnTestQueue.vue?77b9","webpack:///./src/components/event-queue/OnTestQueue.vue?fcd2","webpack:///./src/components/event-queue/OnTestQueue.vue","webpack:///./src/components/AlarmQueueFooter.vue?8047","webpack:///./src/components/AlarmQueueFooter.vue?dde7","webpack:///./src/components/AlarmQueueFooter.vue","webpack:///./src/components/ProcessingError.vue?f53f","webpack:///./src/components/ProcessingError.vue?acde","webpack:///./src/components/ProcessingError.vue?ff63","webpack:///./src/components/ProcessingError.vue","webpack:///./src/components/InvitationCheck.vue?31c2","webpack:///./src/components/InvitationCheck.vue?5d01","webpack:///./src/components/InvitationCheck.vue?7979","webpack:///./src/components/InvitationCheck.vue","webpack:///./src/components/ManualPatrol.vue?1e92","webpack:///./src/components/ManualPatrol.vue?6735","webpack:///./src/components/ManualPatrol.vue?2d17","webpack:///./src/components/ManualPatrol.vue","webpack:///./src/components/ManualRaise.vue?2a1a","webpack:///./src/components/ManualRaise.vue?2b43","webpack:///./src/components/ManualRaise.vue?f2ca","webpack:///./src/components/ManualRaise.vue","webpack:///./src/components/ManualAction.vue?8f57","webpack:///./src/components/ManualAction.vue?aa0a","webpack:///./src/components/ManualAction.vue?8193","webpack:///./src/components/ManualAction.vue","webpack:///./src/components/event-queue/InactivityWarning.vue?2253","webpack:///./src/components/event-queue/InactivityWarning.vue?beea","webpack:///./src/components/event-queue/InactivityWarning.vue?af05","webpack:///./src/components/event-queue/InactivityWarning.vue","webpack:///./src/components/activity-log/ActivityLogPopup.vue?15ae","webpack:///./src/components/activity-log/ActivityLogPopup.vue?b83e","webpack:///./src/components/activity-log/ActivityLogPopup.vue?1391","webpack:///./src/components/activity-log/ActivityLogPopup.vue","webpack:///./src/components/ai-virtual-operator/VirtualOperatorsPopup.vue?8cc7","webpack:///./src/components/ai-virtual-operator/VirtualOperatorsPopup.vue?891d","webpack:///./src/components/ai-virtual-operator/VirtualOperatorsPopup.vue?adc5","webpack:///./src/components/ai-virtual-operator/VirtualOperatorsPopup.vue","webpack:///./src/components/event-queue/ProcessAlarmConfirmation.vue?11c6","webpack:///./src/components/event-queue/ProcessAlarmConfirmation.vue?fec5","webpack:///./src/components/event-queue/ProcessAlarmConfirmation.vue?e296","webpack:///./src/components/event-queue/ProcessAlarmConfirmation.vue","webpack:///./src/components/alarm-points/AlarmPointManagerDialog.vue?00c9","webpack:///./src/components/alarm-points/AlarmPoint.vue?ec0a","webpack:///./src/components/access-control/History.vue?a89a","webpack:///./src/components/access-control/History.vue?2a05","webpack:///./src/components/access-control/History.vue?6f52","webpack:///./src/components/access-control/History.vue","webpack:///./src/components/alarm-points/AlarmPointHistory.vue?d305","webpack:///./src/components/alarm-points/AlarmPointHistory.vue?568c","webpack:///./src/components/alarm-points/AlarmPointHistory.vue?9831","webpack:///./src/components/alarm-points/AlarmPointHistory.vue","webpack:///./src/components/alarm-points/AlarmPoint.vue?fa39","webpack:///./src/components/alarm-points/AlarmPoint.vue?9d49","webpack:///./src/components/alarm-points/AlarmPoint.vue","webpack:///./src/components/alarm-points/AreaAlarms.vue?8e01","webpack:///./src/components/alarm-points/AreaAlarms.vue?87bf","webpack:///./src/components/alarm-points/AreaAlarms.vue?d521","webpack:///./src/components/alarm-points/AreaAlarms.vue","webpack:///./src/components/alarm-points/AlarmPointFinder.vue?781b","webpack:///./src/components/alarm-points/AlarmPointFinder.vue?52b0","webpack:///./src/components/alarm-points/AlarmPointFinder.vue?1a2b","webpack:///./src/components/alarm-points/AlarmPointFinder.vue","webpack:///./src/components/alarm-points/AlarmPointManagerDialog.vue?19f6","webpack:///./src/components/alarm-points/AlarmPointManagerDialog.vue?7b22","webpack:///./src/components/alarm-points/AlarmPointManagerDialog.vue","webpack:///./src/components/area-event-history/AreaEventHistoryPopout.vue?6986","webpack:///./src/components/area-event-history/AreaEventHistoryPopout.vue?4420","webpack:///./src/components/area-event-history/AreaEventHistoryPopout.vue?23cb","webpack:///./src/components/area-event-history/AreaEventHistoryPopout.vue","webpack:///./src/views/EventQueue.vue?eda2","webpack:///./src/views/EventQueue.vue?4beb","webpack:///./src/views/EventQueue.vue","webpack:///./src/views/SiteMonitor.vue?ab9c","webpack:///./src/components/alarm-points/AlarmPointDialog.vue?e9ca","webpack:///./src/components/alarm-points/AlarmPointDialog.vue?e00c","webpack:///./src/components/alarm-points/AlarmPointDialog.vue?0eaa","webpack:///./src/components/alarm-points/AlarmPointDialog.vue","webpack:///./src/components/site-monitor/InvolvedParties.vue?e67a","webpack:///./src/components/site-monitor/InvolvedParties.vue?e472","webpack:///./src/components/site-monitor/InvolvedParties.vue?3b9f","webpack:///./src/components/site-monitor/InvolvedParties.vue","webpack:///./src/views/SiteMonitor.vue?ed5b","webpack:///./src/views/SiteMonitor.vue?bbd0","webpack:///./src/views/SiteMonitor.vue","webpack:///./src/views/SiteMonitorCameras.vue?b718","webpack:///./src/components/Sessions.vue?5f71","webpack:///./src/components/Sessions.vue?19d5","webpack:///./src/components/Sessions.vue?6501","webpack:///./src/components/Sessions.vue","webpack:///./src/components/Cameras.vue?f3e8","webpack:///./src/components/MatrixContainer.vue?cc8d","webpack:///./src/components/AuditControl.vue?6c40","webpack:///./src/components/media/BufferSeek.vue?7910","webpack:///./src/components/media/BufferSeek.vue?81ed","webpack:///./src/components/media/BufferSeek.vue?7281","webpack:///./src/components/media/BufferSeek.vue","webpack:///./src/components/AuditVideo.vue?09ec","webpack:///./src/components/AuditVideo.vue?e22b","webpack:///./src/components/AuditVideo.vue?94f7","webpack:///./src/components/AuditVideo.vue","webpack:///./src/components/AuditControl.vue?8d64","webpack:///./src/components/AuditControl.vue?ce31","webpack:///./src/components/AuditControl.vue","webpack:///./src/components/MatrixContainer.vue?7177","webpack:///./src/components/MatrixContainer.vue?e9c9","webpack:///./src/components/MatrixContainer.vue","webpack:///./src/components/DeviceController.vue?c301","webpack:///./src/components/media/ClipsList.vue?26f5","webpack:///./src/components/media/ClipsList.vue?7c34","webpack:///./src/components/media/ClipsList.vue?9c6f","webpack:///./src/components/media/ClipsList.vue","webpack:///./src/components/media/AreaCameras.vue?1d99","webpack:///./src/components/system-view/SystemViewCameraIcon.vue?d1a0","webpack:///./src/components/system-view/SystemViewCameraIcon.vue?7204","webpack:///./src/components/system-view/SystemViewCameraIcon.vue?5a9d","webpack:///./src/components/system-view/SystemViewCameraIcon.vue","webpack:///./src/components/media/AreaCameras.vue?5303","webpack:///./src/components/media/AreaCameras.vue?4085","webpack:///./src/components/media/AreaCameras.vue","webpack:///./src/components/media/MatrixContent.vue?56d6","webpack:///./src/scripts/array-operations.ts","webpack:///./src/components/media/MatrixContent.vue?703f","webpack:///./src/components/media/Tour.vue?e13b","webpack:///./src/components/media/MatrixContent.vue?3035","webpack:///./src/components/media/MatrixContent.vue","webpack:///./src/components/media/Tour.vue?cb71","webpack:///./src/types/audio/audio.ts","webpack:///./src/components/media/Tour.vue?4e56","webpack:///./src/components/media/Tour.vue","webpack:///./src/components/audio/AudioControl.vue?f7d8","webpack:///./src/components/audio/Receive.vue?0e1c","webpack:///./src/mixins/audio/AudioMixin.ts","webpack:///./src/mixins/audio/AudioAddressMixin.ts","webpack:///./src/components/audio/Receive.vue?6a9e","webpack:///./src/components/audio/Receive.vue?ebc9","webpack:///./src/components/audio/Receive.vue","webpack:///./src/components/audio/Transmit.vue?bea4","webpack:///./src/utils/audioSampler.ts","webpack:///./src/mixins/audio/MicMixin.ts","webpack:///./src/components/audio/Transmit.vue?d9ff","webpack:///./src/components/audio/Transmit.vue?bd81","webpack:///./src/components/audio/Transmit.vue","webpack:///./src/components/audio/AudioList.vue?b4fb","webpack:///./src/components/audio/AudioList.vue?0d99","webpack:///./src/components/audio/AudioList.vue?8f2f","webpack:///./src/components/audio/AudioList.vue","webpack:///./src/components/audio/AudioControl.vue?b08e","webpack:///./src/components/audio/AudioControl.vue?236a","webpack:///./src/components/audio/AudioControl.vue","webpack:///./src/components/media/ControlDevicesList.vue?f2bb","webpack:///./src/components/media/ControlDevicesList.vue?38fb","webpack:///./src/components/media/ControlDevicesList.vue?cbcf","webpack:///./src/components/media/ControlDevicesList.vue","webpack:///./src/store/site-monitor-cameras/types.ts","webpack:///./src/components/DeviceController.vue?886a","webpack:///./src/components/DeviceController.vue?922a","webpack:///./src/components/DeviceController.vue","webpack:///./src/components/Cameras.vue?4afd","webpack:///./src/components/Cameras.vue?4632","webpack:///./src/components/Cameras.vue","webpack:///./src/components/LinkingCamera.vue?104e","webpack:///./src/components/LinkingCamera.vue?7fa2","webpack:///./src/components/LinkingCamera.vue?113d","webpack:///./src/components/LinkingCamera.vue","webpack:///./src/views/SiteMonitorCameras.vue?6daa","webpack:///./src/views/SiteMonitorCameras.vue?64f5","webpack:///./src/views/SiteMonitorCameras.vue","webpack:///./src/views/Cameras.vue?48d4","webpack:///./src/components/AreaCameras.vue?de86","webpack:///./src/components/AreaCameras.vue?22f0","webpack:///./src/components/AreaCameras.vue?586a","webpack:///./src/components/AreaCameras.vue","webpack:///./src/views/Cameras.vue?19c4","webpack:///./src/views/Cameras.vue?ce53","webpack:///./src/views/Cameras.vue","webpack:///./src/views/EventSearchPage.vue?30bb","webpack:///./src/components/EventSearch.vue?ea6b","webpack:///./src/scripts/mapping/cornerBounds.ts","webpack:///./src/scripts/mapping/map.ts","webpack:///./src/services/insertScript.service.ts","webpack:///./src/components/mapping/MapSearch.vue?5f7c","webpack:///./src/components/mapping/MapSearch.vue?7e8b","webpack:///./src/components/mapping/MapSearch.vue?cc00","webpack:///./src/components/mapping/MapSearch.vue","webpack:///./src/components/EventSearch.vue?3901","webpack:///./src/components/csv-uploader/csv-progress.vue?1858","webpack:///./src/components/EventSearch.vue?db96","webpack:///./src/components/EventSearch.vue","webpack:///./src/components/EventReview.vue?1bd4","webpack:///./src/components/event-review/PreserveEventControl.vue?f2bd","webpack:///./src/components/event-review/PreserveEventControl.vue?fdf0","webpack:///./src/components/event-review/PreserveEventControl.vue?e524","webpack:///./src/components/event-review/PreserveEventControl.vue","webpack:///./src/components/EventReview.vue?27dd","webpack:///./src/components/EventReview.vue?80dd","webpack:///./src/components/EventReview.vue","webpack:///./src/views/EventSearchPage.vue?2d46","webpack:///./src/views/EventSearchPage.vue?d837","webpack:///./src/views/EventSearchPage.vue","webpack:///./src/views/ConfigureTasks.vue?3475","webpack:///./src/components/tasks/AddNewTask.vue?eaf9","webpack:///./src/components/tasks/AddNewTask.vue?fdb9","webpack:///./src/components/tasks/AddNewTask.vue?5bcd","webpack:///./src/components/tasks/AddNewTask.vue","webpack:///./src/components/tasks/EditActionPlan.vue?453f","webpack:///./src/components/tasks/EditActionPlan.vue?83a4","webpack:///./src/components/tasks/EditActionPlan.vue?a254","webpack:///./src/components/tasks/EditActionPlan.vue","webpack:///./src/components/tasks/AddNewActionCategory.vue?072b","webpack:///./src/components/tasks/AddNewActionCategory.vue?5442","webpack:///./src/components/tasks/AddNewActionCategory.vue?e94d","webpack:///./src/components/tasks/AddNewActionCategory.vue","webpack:///./src/components/tasks/EditLibraryTask.vue?1229","webpack:///./src/components/tasks/EditLibraryTask.vue?b9a5","webpack:///./src/components/tasks/EditLibraryTask.vue?ee28","webpack:///./src/components/tasks/EditLibraryTask.vue","webpack:///./src/components/tasks/TaskTriggerDialog.vue?71f9","webpack:///./src/components/tasks/TaskTriggerDialog.vue?3314","webpack:///./src/components/tasks/TaskTriggerDialog.vue?d2d0","webpack:///./src/components/tasks/TaskTriggerDialog.vue","webpack:///./src/views/ConfigureTasks.vue?9680","webpack:///./src/views/ConfigureTasks.vue?d9e3","webpack:///./src/views/ConfigureTasks.vue","webpack:///./src/views/SiteAdminLanding.vue?095b","webpack:///./src/views/SiteAdminLanding.vue?df0d","webpack:///./src/views/SiteAdminLanding.vue?c225","webpack:///./src/views/SiteAdminLanding.vue","webpack:///./src/views/MobileCore.vue?5173","webpack:///./src/components/mobile/core/MobileMenu.vue?c50c","webpack:///./src/components/mobile/core/MobileMenu.vue?6576","webpack:///./src/components/mobile/core/MobileMenu.vue?af7b","webpack:///./src/components/mobile/core/MobileMenu.vue","webpack:///./src/components/mobile/core/MobileMap.vue?8e18","webpack:///./src/components/mobile/core/MobileMap.vue?2349","webpack:///./src/components/mobile/core/MobileMap.vue?9c50","webpack:///./src/components/mobile/core/MobileMap.vue","webpack:///./src/components/mobile/core/RightSideBar.vue?cead","webpack:///./src/components/mobile/live/LiveCameras.vue?9bb2","webpack:///./src/components/mobile/core/MobileCameraSelect.vue?abc4","webpack:///./src/components/mobile/core/MobileCameraSelect.vue?b5cb","webpack:///./src/components/mobile/core/MobileCameraSelect.vue?8e02","webpack:///./src/components/mobile/core/MobileCameraSelect.vue","webpack:///./src/components/mobile/live/LiveCameras.vue?a1b6","webpack:///./src/components/mobile/live/LiveCameras.vue?b74b","webpack:///./src/components/mobile/live/LiveCameras.vue","webpack:///./src/components/mobile/assets/AssetControl.vue?bdd2","webpack:///./src/components/mobile/assets/Events/MobileEventShare.vue?3577","webpack:///./src/components/mobile/assets/Events/EventShareItem.vue?8d6e","webpack:///./src/components/mobile/assets/Events/EventShareItem.vue?01d6","webpack:///./src/components/mobile/assets/Events/EventShareItem.vue?c5dc","webpack:///./src/components/mobile/assets/Events/EventShareItem.vue","webpack:///./src/components/mobile/assets/Events/MobileEventRecords.vue?30d7","webpack:///./src/components/mobile/assets/Events/MobileEventRecords.vue?a25d","webpack:///./src/components/mobile/assets/Events/MobileEventRecords.vue?41e8","webpack:///./src/components/mobile/assets/Events/MobileEventRecords.vue","webpack:///./src/components/mobile/assets/Events/MobileEventShare.vue?575e","webpack:///./src/components/mobile/assets/Events/MobileEventShare.vue?4f9e","webpack:///./src/components/mobile/assets/Events/MobileEventShare.vue","webpack:///./src/components/mobile/assets/AssetControl.vue?eb8c","webpack:///./src/components/mobile/assets/AssetControl.vue?cef4","webpack:///./src/components/mobile/assets/AssetControl.vue","webpack:///./src/components/mobile/core/RightSideBar.vue?81f2","webpack:///./src/components/mobile/core/RightSideBar.vue?1369","webpack:///./src/components/mobile/core/RightSideBar.vue","webpack:///./src/components/mobile/core/LeftSideBar.vue?4be7","webpack:///./src/components/mobile/UserDetails.vue?d9e7","webpack:///./src/components/mobile/UserDetails.vue?b966","webpack:///./src/components/mobile/UserDetails.vue?af36","webpack:///./src/components/mobile/UserDetails.vue","webpack:///./src/components/mobile/core/LeftSideBar.vue?6de9","webpack:///./src/components/mobile/core/LeftSideBar.vue?40ce","webpack:///./src/components/mobile/core/LeftSideBar.vue","webpack:///./src/components/mobile/core/NotificationBar.vue?21d2","webpack:///./src/components/mobile/core/NotificationBar.vue?7292","webpack:///./src/components/mobile/core/NotificationBar.vue?5ffb","webpack:///./src/components/mobile/core/NotificationBar.vue","webpack:///./src/components/mobile/live/CameraPlayer.vue?917d","webpack:///./src/components/mobile/live/StarredCameras.vue?e397","webpack:///./src/components/mobile/live/StarredCameras.vue?037f","webpack:///./src/components/mobile/live/StarredCameras.vue?eb31","webpack:///./src/components/mobile/live/StarredCameras.vue","webpack:///./src/components/mobile/live/CameraPlayer.vue?1c17","webpack:///./src/components/mobile/live/CameraPlayer.vue?a29c","webpack:///./src/components/mobile/live/CameraPlayer.vue","webpack:///./src/components/mobile/mobile-raise/RaiseSelect.vue?95e1","webpack:///./src/components/mobile/mobile-raise/QuickSelect.vue?22a6","webpack:///./src/components/mobile/mobile-raise/Title.vue?1bf2","webpack:///./src/components/mobile/mobile-raise/Title.vue?12b4","webpack:///./src/components/mobile/mobile-raise/Title.vue?99a4","webpack:///./src/components/mobile/mobile-raise/Title.vue","webpack:///./src/components/mobile/mobile-raise/QuickSelect.vue?47f7","webpack:///./src/components/mobile/mobile-raise/QuickSelect.vue?1e95","webpack:///./src/components/mobile/mobile-raise/QuickSelect.vue","webpack:///./src/components/mobile/mobile-raise/SearchSelect.vue?37e6","webpack:///./src/components/mobile/mobile-raise/SearchSelect.vue?5aac","webpack:///./src/components/mobile/mobile-raise/SearchSelect.vue?8215","webpack:///./src/components/mobile/mobile-raise/SearchSelect.vue","webpack:///./src/components/mobile/mobile-raise/RaiseSelect.vue?cb9c","webpack:///./src/components/mobile/mobile-raise/RaiseSelect.vue?82ca","webpack:///./src/components/mobile/mobile-raise/RaiseSelect.vue","webpack:///./src/components/mobile/mobile-raise/RaiseActivityLog.vue?774b","webpack:///./src/components/mobile/mobile-raise/RaiseActivityLog.vue?434c","webpack:///./src/components/mobile/mobile-raise/RaiseActivityLog.vue?68c4","webpack:///./src/components/mobile/mobile-raise/RaiseActivityLog.vue","webpack:///./src/components/mobile/mobile-raise/RaiseManualRaise.vue?ed8b","webpack:///./src/services/device.geolocation.service.ts","webpack:///./src/services/device.position.service.ts","webpack:///./src/components/mobile/mobile-raise/RaiseManualRaise.vue?f82c","webpack:///./src/components/mobile/mobile-raise/RaiseManualRaise.vue?c54e","webpack:///./src/components/mobile/mobile-raise/RaiseManualRaise.vue","webpack:///./src/components/mobile/mobile-raise/ManualRaiseDetails.vue?d4af","webpack:///./src/components/mobile/core/UploadFileButton.vue?33af","webpack:///./src/components/mobile/core/UploadFileButton.vue?9a31","webpack:///./src/components/mobile/core/UploadFileButton.vue?4648","webpack:///./src/components/mobile/core/UploadFileButton.vue","webpack:///./src/components/mobile/mobile-raise/ManualRaiseDetails.vue?54af","webpack:///./src/components/mobile/mobile-raise/ManualRaiseDetails.vue?7580","webpack:///./src/components/mobile/mobile-raise/ManualRaiseDetails.vue","webpack:///./src/components/mobile/messages/Chat.vue?f98d","webpack:///./src/components/mobile/messages/Chat.vue?44ea","webpack:///./src/components/mobile/messages/Chat.vue?36f5","webpack:///./src/components/mobile/messages/Chat.vue","webpack:///./src/views/MobileCore.vue?0f01","webpack:///./src/views/MobileCore.vue?18d5","webpack:///./src/views/MobileCore.vue","webpack:///./src/views/UserSetup/UserManagementSetup.vue?ee36","webpack:///./src/views/UserSetup/UserGroupInput.vue?f573","webpack:///./src/views/UserSetup/UserGroupInput.vue?3614","webpack:///./src/views/UserSetup/UserGroupInput.vue?e104","webpack:///./src/views/UserSetup/UserGroupInput.vue","webpack:///./src/components/csv-uploader/csv-uploader-wrapper.vue?e531","webpack:///./src/components/csv-uploader/csv-uploader.vue?4e84","webpack:///./src/components/csv-uploader/csv-form.vue?54d2","webpack:///./src/components/csv-uploader/csv-form.vue?4a8f","webpack:///./src/components/csv-uploader/csv-form.vue?5db3","webpack:///./src/components/csv-uploader/csv-form.vue","webpack:///./src/components/csv-uploader/csv-progress.vue?6c13","webpack:///./src/components/reports/InsightsGraph.vue?cfd6","webpack:///./src/components/csv-uploader/csv-progress.vue?0839","webpack:///./src/components/csv-uploader/csv-progress.vue","webpack:///./src/components/csv-uploader/csv-uploader.vue?d759","webpack:///./src/components/csv-uploader/csv-uploader.vue?3066","webpack:///./src/components/csv-uploader/csv-uploader.vue","webpack:///./src/components/csv-uploader/csv-uploader-wrapper.vue?f9e0","webpack:///./src/components/csv-uploader/csv-uploader-wrapper.vue?d5d2","webpack:///./src/components/csv-uploader/csv-uploader-wrapper.vue","webpack:///./src/views/UserSetup/ClearMFA.vue?7b31","webpack:///./src/views/UserSetup/ClearMFA.vue?2e18","webpack:///./src/views/UserSetup/ClearMFA.vue?ea9e","webpack:///./src/views/UserSetup/ClearMFA.vue","webpack:///./src/views/UserSetup/AssetTypeSelect.vue?50cd","webpack:///./src/views/UserSetup/AssetTypeSelect.vue?2326","webpack:///./src/views/UserSetup/AssetTypeSelect.vue?e80c","webpack:///./src/views/UserSetup/AssetTypeSelect.vue","webpack:///./src/views/UserSetup/UserManagementSetup.vue?de36","webpack:///./src/views/UserSetup/UserManagementSetup.vue?cc5e","webpack:///./src/views/UserSetup/UserManagementSetup.vue","webpack:///./src/views/Contacts.vue?32e3","webpack:///./src/views/ContactRoles.vue?53bc","webpack:///./src/views/ContactRoles.vue?89a7","webpack:///./src/views/ContactRoles.vue?ec52","webpack:///./src/views/ContactRoles.vue","webpack:///./src/components/form/ContactsFor.vue?9b60","webpack:///./src/components/form/ContactsFor.vue?8ec8","webpack:///./src/components/form/ContactsFor.vue?2ff7","webpack:///./src/components/form/ContactsFor.vue","webpack:///./src/views/Contacts.vue?75c7","webpack:///./src/views/Contacts.vue?e9f0","webpack:///./src/views/Contacts.vue","webpack:///./src/views/Reports.vue?4403","webpack:///./src/components/reports/ReportBuilder.vue?d685","webpack:///./src/components/reports/TemplateReportBuilder.vue?969a","webpack:///./src/components/reports/ReportFilters.vue?450d","webpack:///./src/components/alarm-points/AlarmPointSelect.vue?f247","webpack:///./src/components/alarm-points/AlarmPointSelect.vue?976a","webpack:///./src/components/alarm-points/AlarmPointSelect.vue?4267","webpack:///./src/components/alarm-points/AlarmPointSelect.vue","webpack:///./src/components/reports/EventTypeReportFilter.vue?68b0","webpack:///./src/components/reports/EventTypeReportFilter.vue?56fc","webpack:///./src/components/reports/EventTypeReportFilter.vue?503c","webpack:///./src/components/reports/EventTypeReportFilter.vue","webpack:///./src/components/reports/ReportFilters.vue?60b1","webpack:///./src/components/reports/ReportFilters.vue?b14a","webpack:///./src/components/reports/ReportFilters.vue","webpack:///./src/components/reports/TemplateReportBuilder.vue?fdff","webpack:///./src/components/reports/TemplateReportBuilder.vue?1a00","webpack:///./src/components/reports/TemplateReportBuilder.vue","webpack:///./src/components/reports/InsightsGraph.vue?9246","webpack:///./src/components/reports/TileReport.vue?420e","webpack:///./src/components/reports/TileReport.vue?2306","webpack:///./src/components/reports/TileReport.vue?2dc8","webpack:///./src/components/reports/TileReport.vue","webpack:///./src/components/reports/InsightsGraph.vue?e74b","webpack:///./src/components/reports/InsightsGraph.vue","webpack:///./src/components/reports/ReportBuilder.vue?e880","webpack:///./src/components/reports/ReportBuilder.vue?17c1","webpack:///./src/components/reports/ReportBuilder.vue","webpack:///./src/views/Reports.vue?fd0c","webpack:///./src/views/Reports.vue?b15c","webpack:///./src/views/Reports.vue","webpack:///./src/views/ActivityLogManagement.vue?4dc6","webpack:///./src/components/activity-log/ActivityLogTable.vue?b59a","webpack:///./src/components/activity-log/ActivityLogTable.vue?370d","webpack:///./src/components/activity-log/ActivityLogTable.vue?075b","webpack:///./src/components/activity-log/ActivityLogTable.vue","webpack:///./src/views/ActivityLogManagement.vue?3bb5","webpack:///./src/views/ActivityLogManagement.vue?b85c","webpack:///./src/views/ActivityLogManagement.vue","webpack:///./src/views/FeatureSetup.vue?ef0d","webpack:///./src/views/FeatureSetup.vue?80db","webpack:///./src/views/FeatureSetup.vue?3100","webpack:///./src/views/FeatureSetup.vue","webpack:///./src/views/TourSetup.vue?8c2a","webpack:///./src/components/TourSetupModal.vue?4232","webpack:///./src/components/TourSetupModal.vue?5f21","webpack:///./src/components/TourSetupModal.vue?2526","webpack:///./src/components/TourSetupModal.vue","webpack:///./src/views/TourSetup.vue?4a60","webpack:///./src/views/TourSetup.vue?8cab","webpack:///./src/views/TourSetup.vue","webpack:///./src/views/Permissions.vue?4054","webpack:///./src/components/setup/users/UserRoleSetup.vue?604d","webpack:///./src/components/setup/users/UserRolePermissions.vue?09d8","webpack:///./src/components/setup/users/AlarmQueueFilterSelect.vue?9518","webpack:///./src/components/setup/users/AlarmQueueFilterSelect.vue?bd8f","webpack:///./src/components/setup/users/AlarmQueueFilterSelect.vue?abeb","webpack:///./src/components/setup/users/AlarmQueueFilterSelect.vue","webpack:///./src/components/setup/users/UserRolePermissions.vue?4ff7","webpack:///./src/components/setup/users/UserRolePermissions.vue?2b64","webpack:///./src/components/setup/users/UserRolePermissions.vue","webpack:///./src/components/setup/users/UserRoleSetup.vue?5591","webpack:///./src/components/setup/users/UserRoleSetup.vue?c514","webpack:///./src/components/setup/users/UserRoleSetup.vue","webpack:///./src/components/setup/users/UserGroupSetup.vue?4ec7","webpack:///./src/components/setup/users/UserGroupRoles.vue?52a8","webpack:///./src/components/setup/users/UserGroupRoles.vue?b181","webpack:///./src/components/setup/users/UserGroupRoles.vue?e8ac","webpack:///./src/components/setup/users/UserGroupRoles.vue","webpack:///./src/components/setup/users/UserGroupSetup.vue?d4fb","webpack:///./src/components/setup/users/UserGroupSetup.vue?2c52","webpack:///./src/components/setup/users/UserGroupSetup.vue","webpack:///./src/views/Permissions.vue?c1db","webpack:///./src/views/Permissions.vue?4728","webpack:///./src/views/Permissions.vue","webpack:///./src/views/AlarmSetup.vue?ad24","webpack:///./src/components/setup/alarm-setup/AlarmSetupTable.vue?8064","webpack:///./src/components/setup/alarm-setup/AlarmSetupTable.vue?eb70","webpack:///./src/components/setup/alarm-setup/AlarmSetupTable.vue?cef4","webpack:///./src/components/setup/alarm-setup/AlarmSetupTable.vue","webpack:///./src/components/setup/alarm-setup/HttpAlarmSetupTable.vue?4afc","webpack:///./src/types/sv-data/alarms/Constants.ts","webpack:///./src/components/setup/alarm-setup/HttpAlarmSetupTable.vue?f8cb","webpack:///./src/components/setup/alarm-setup/HttpAlarmSetupTable.vue?4ac8","webpack:///./src/components/setup/alarm-setup/HttpAlarmSetupTable.vue","webpack:///./src/components/setup/alarm-setup/decoder-setup/AlarmDecoderTable.vue?4fcd","webpack:///./src/components/setup/alarm-setup/decoder-setup/AlarmDecoderEventSetup.vue?37ca","webpack:///./src/components/setup/alarm-setup/decoder-setup/AlarmDecoderEventSetup.vue?1480","webpack:///./src/components/setup/alarm-setup/decoder-setup/AlarmDecoderEventSetup.vue?1b73","webpack:///./src/components/setup/alarm-setup/decoder-setup/AlarmDecoderEventSetup.vue","webpack:///./src/components/setup/alarm-setup/decoder-setup/AlarmDecoderTable.vue?b770","webpack:///./src/components/setup/alarm-setup/decoder-setup/AlarmDecoderTable.vue?54c8","webpack:///./src/components/setup/alarm-setup/decoder-setup/AlarmDecoderTable.vue","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationTable.vue?1afd","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationDeleteModal.vue?e6c2","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationDeleteModal.vue?820e","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationDeleteModal.vue?d72b","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationDeleteModal.vue","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationEditModal.vue?e5ad","webpack:///./src/components/setup/alarm-setup/distance-configuration/MapRadius.vue?53b2","webpack:///./src/utils/conversion-utils.ts","webpack:///./src/components/setup/alarm-setup/distance-configuration/MapRadius.vue?de8c","webpack:///./src/components/mobile-raise-templates/TemplateModalMode.ts","webpack:///./src/components/setup/alarm-setup/distance-configuration/MapRadius.vue?0a5d","webpack:///./src/components/setup/alarm-setup/distance-configuration/MapRadius.vue","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationEditModal.vue?62fe","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationEditModal.vue?74ea","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationEditModal.vue","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationTable.vue?976c","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationTable.vue?d752","webpack:///./src/components/setup/alarm-setup/distance-configuration/DistanceConfigurationTable.vue","webpack:///./src/views/AlarmSetup.vue?2c99","webpack:///./src/views/AlarmSetup.vue?bafe","webpack:///./src/views/AlarmSetup.vue","webpack:///./src/views/MobileRaiseSetup.vue?eb6c","webpack:///./src/components/mobile-raise-templates/TemplateModal.vue?c0e3","webpack:///./src/components/mobile-raise-templates/LinksSelector.vue?260b","webpack:///./src/types/sv-data/enums/ObjectTypeIds.ts","webpack:///./src/components/mobile-raise-templates/IconsSelector.vue?7de3","webpack:///./src/components/mobile-raise-templates/RoundIconButton.vue?c7ce","webpack:///./src/components/mobile-raise-templates/RoundIconButton.vue?3a96","webpack:///./src/components/mobile-raise-templates/RoundIconButton.vue?3267","webpack:///./src/components/mobile-raise-templates/RoundIconButton.vue","webpack:///./src/components/mobile-raise-templates/IconsSelector.vue?e50d","webpack:///./src/components/mobile-raise-templates/IconsSelector.vue?f660","webpack:///./src/components/mobile-raise-templates/IconsSelector.vue","webpack:///./src/components/mobile-raise-templates/RaiseTitle.vue?45ab","webpack:///./src/components/mobile-raise-templates/RaiseTitle.vue?438e","webpack:///./src/components/mobile-raise-templates/RaiseTitle.vue?5ffe","webpack:///./src/components/mobile-raise-templates/RaiseTitle.vue","webpack:///./src/components/mobile-raise-templates/LinksSelector.vue?ea2f","webpack:///./src/components/mobile-raise-templates/LinksSelector.vue?1023","webpack:///./src/components/mobile-raise-templates/LinksSelector.vue","webpack:///./src/components/mobile-raise-templates/QuickSelectSlot.vue?be8f","webpack:///./src/components/mobile-raise-templates/RoundIcon.vue?82b8","webpack:///./src/components/mobile-raise-templates/RoundIcon.vue?edcc","webpack:///./src/components/mobile-raise-templates/RoundIcon.vue?c202","webpack:///./src/components/mobile-raise-templates/RoundIcon.vue","webpack:///./src/components/mobile-raise-templates/QuickSelectSlot.vue?99cc","webpack:///./src/components/mobile-raise-templates/QuickSelectSlot.vue?9396","webpack:///./src/components/mobile-raise-templates/QuickSelectSlot.vue","webpack:///./src/components/mobile-raise-templates/MobileRaisesLinksControl.vue?d282","webpack:///./src/components/mobile-raise-templates/MobileRaisesLinksControl.vue?f1de","webpack:///./src/components/mobile-raise-templates/MobileRaisesLinksControl.vue?520f","webpack:///./src/components/mobile-raise-templates/MobileRaisesLinksControl.vue","webpack:///./src/components/mobile-raise-templates/UserGroupsControl.vue?08db","webpack:///./src/components/mobile-raise-templates/UserGroupsControl.vue?8ea5","webpack:///./src/components/mobile-raise-templates/UserGroupsControl.vue?9f20","webpack:///./src/components/mobile-raise-templates/UserGroupsControl.vue","webpack:///./src/components/mobile-raise-templates/TitleControl.vue?36f9","webpack:///./src/components/mobile-raise-templates/TitleControl.vue?9363","webpack:///./src/components/mobile-raise-templates/TitleControl.vue?4c61","webpack:///./src/components/mobile-raise-templates/TitleControl.vue","webpack:///./src/components/mobile-raise-templates/titleFeedbacks.ts","webpack:///./src/components/mobile-raise-templates/TemplateModal.vue?c7e2","webpack:///./src/components/mobile-raise-templates/TemplateModal.vue?2df2","webpack:///./src/components/mobile-raise-templates/TemplateModal.vue","webpack:///./src/views/MobileRaiseSetup.vue?7ecc","webpack:///./src/views/MobileRaiseSetup.vue?b04e","webpack:///./src/views/MobileRaiseSetup.vue","webpack:///./src/views/SubscriptionDetails.vue?c464","webpack:///./src/components/organization-settings/SingleSignOnSettings.vue?449e","webpack:///./src/components/organization-settings/SingleSignOnSettings.vue?abf3","webpack:///./src/components/organization-settings/SingleSignOnSettings.vue?ac38","webpack:///./src/components/organization-settings/SingleSignOnSettings.vue","webpack:///./src/components/organization-settings/HousekeepingSettingsForm.vue?42e5","webpack:///./src/components/organization-settings/HousekeepingSettingsForm.vue?5e5e","webpack:///./src/components/organization-settings/HousekeepingSettingsForm.vue?2f33","webpack:///./src/components/organization-settings/HousekeepingSettingsForm.vue","webpack:///./src/components/organization-settings/QuickEndSettings.vue?60b1","webpack:///./src/components/form/EventOutcomeSelect.vue?467e","webpack:///./src/components/form/EventOutcomeSelect.vue?765d","webpack:///./src/components/form/EventOutcomeSelect.vue?7a74","webpack:///./src/components/form/EventOutcomeSelect.vue","webpack:///./src/components/organization-settings/QuickEndSettings.vue?fb0f","webpack:///./src/components/organization-settings/QuickEndSettings.vue?e1c4","webpack:///./src/components/organization-settings/QuickEndSettings.vue","webpack:///./src/components/organization-settings/TenantSystemPrefsForm.vue?b750","webpack:///./src/components/organization-settings/TenantSystemPrefsForm.vue?b6ef","webpack:///./src/components/organization-settings/TenantSystemPrefsForm.vue?2e26","webpack:///./src/components/organization-settings/TenantSystemPrefsForm.vue","webpack:///./src/components/event-queue/AlarmQueuePriorityColors.vue?3289","webpack:///./src/components/event-queue/ColorModalItem.vue?ffc2","webpack:///./src/components/event-queue/ColorModalItem.vue?3680","webpack:///./src/components/event-queue/ColorModalItem.vue?97f4","webpack:///./src/components/event-queue/ColorModalItem.vue","webpack:///./src/components/event-queue/AlarmQueuePriorityColors.vue?7fe1","webpack:///./src/components/event-queue/AlarmQueuePriorityColors.vue?994d","webpack:///./src/components/event-queue/AlarmQueuePriorityColors.vue","webpack:///./src/views/SubscriptionDetails.vue?44d9","webpack:///./src/views/SubscriptionDetails.vue?b6ef","webpack:///./src/views/SubscriptionDetails.vue","webpack:///./src/views/SignUp/SignUp.vue?c586","webpack:///./src/views/SignUp/ContactInfo.vue?63b6","webpack:///./src/views/SignUp/ContactInfo.vue?8285","webpack:///./src/views/SignUp/ContactInfo.vue?3f76","webpack:///./src/views/SignUp/ContactInfo.vue","webpack:///./src/views/SignUp/CompanyInfo.vue?210f","webpack:///./src/views/AreaSetup/AreaLocationSetup.vue?82da","webpack:///./src/views/AreaSetup/AreaLocationSetup.vue?635a","webpack:///./src/views/AreaSetup/AreaLocationSetup.vue?b9b0","webpack:///./src/views/AreaSetup/AreaLocationSetup.vue","webpack:///./src/views/SignUp/CompanyInfo.vue?4cfd","webpack:///./src/views/SignUp/CompanyInfo.vue?664a","webpack:///./src/views/SignUp/CompanyInfo.vue","webpack:///./src/views/SignUp/SecurityInfo.vue?d20c","webpack:///./src/views/SignUp/SecurityInfo.vue?f287","webpack:///./src/views/SignUp/SecurityInfo.vue?3e9f","webpack:///./src/views/SignUp/SecurityInfo.vue","webpack:///./src/views/SignUp/PaymentInfo.vue?c86d","webpack:///./src/views/SignUp/PaymentInfo.vue?1054","webpack:///./src/views/SignUp/PaymentInfo.vue?c0cf","webpack:///./src/views/SignUp/PaymentInfo.vue","webpack:///./src/views/SignUp/SignUp.vue?3e07","webpack:///./src/views/SignUp/SignUp.vue?b349","webpack:///./src/views/SignUp/SignUp.vue","webpack:///./src/views/EventCategorySetup.vue?e1c5","webpack:///./src/components/form/CaseTypeSelect.vue?4045","webpack:///./src/components/form/CaseTypeSelect.vue?7531","webpack:///./src/components/form/CaseTypeSelect.vue?cbba","webpack:///./src/components/form/CaseTypeSelect.vue","webpack:///./src/views/EventCategorySetup.vue?0212","webpack:///./src/views/EventCategorySetup.vue?bbf8","webpack:///./src/views/EventCategorySetup.vue","webpack:///./src/views/SetPassword.vue?4a20","webpack:///./src/views/SetPassword.vue?9c5a","webpack:///./src/views/SetPassword.vue?126f","webpack:///./src/views/SetPassword.vue","webpack:///./src/views/ResetPassword.vue?0242","webpack:///./src/views/ResetPassword.vue?1d91","webpack:///./src/views/ResetPassword.vue?fbc3","webpack:///./src/views/ResetPassword.vue","webpack:///./src/views/AreaSetup/AreaSetupPage.vue?d154","webpack:///./src/views/AreaSetup/AreaTable.vue?aab3","webpack:///./src/views/AreaSetup/AreaTreePath.vue?0506","webpack:///./src/views/AreaSetup/AreaTreePath.vue?7ee8","webpack:///./src/views/AreaSetup/AreaTreePath.vue?d021","webpack:///./src/views/AreaSetup/AreaTreePath.vue","webpack:///./src/components/areas/AreaSetupDisableAreaButton.vue?cd64","webpack:///./src/components/areas/AreaSetupDisableAreaButton.vue?d3d8","webpack:///./src/components/areas/AreaSetupDisableAreaButton.vue?1af9","webpack:///./src/components/areas/AreaSetupDisableAreaButton.vue","webpack:///./src/views/AreaSetup/AreaRegionSetup.vue?359c","webpack:///./src/views/AreaSetup/AreaRegionSetup.vue?606f","webpack:///./src/views/AreaSetup/AreaRegionSetup.vue?d5a8","webpack:///./src/views/AreaSetup/AreaRegionSetup.vue","webpack:///./src/views/AreaSetup/AreaTable.vue?9776","webpack:///./src/views/AreaSetup/AreaTable.vue?4218","webpack:///./src/views/AreaSetup/AreaTable.vue","webpack:///./src/views/AreaSetup/AreaSetupPage.vue?ebcf","webpack:///./src/views/AreaSetup/AreaSetupPage.vue?9d49","webpack:///./src/views/AreaSetup/AreaSetupPage.vue","webpack:///./src/views/AssetSetup.vue?db90","webpack:///./src/components/asset/AssetOnlySetup.vue?eb8e","webpack:///./src/components/asset/AssetColorPicker.vue?b1d6","webpack:///./src/components/asset/AssetColorPicker.vue?b0c0","webpack:///./src/components/asset/AssetColorPicker.vue?89e7","webpack:///./src/components/asset/AssetColorPicker.vue","webpack:///./src/components/asset/AssetOnlySetup.vue?e98e","webpack:///./src/components/asset/AssetOnlySetup.vue?16d0","webpack:///./src/components/asset/AssetOnlySetup.vue","webpack:///./src/components/asset/AssetTypeSetup.vue?95ac","webpack:///./src/components/asset/AssetTypeSetup.vue?f455","webpack:///./src/components/asset/AssetTypeSetup.vue?594b","webpack:///./src/components/asset/AssetTypeSetup.vue","webpack:///./src/views/AssetSetup.vue?1179","webpack:///./src/views/AssetSetup.vue?60c8","webpack:///./src/views/AssetSetup.vue","webpack:///./src/views/MapSetup.vue?967c","webpack:///./src/components/form/ElevationSelect.vue?bb73","webpack:///./src/components/form/ElevationSelect.vue?e6c5","webpack:///./src/components/form/ElevationSelect.vue?7520","webpack:///./src/components/form/ElevationSelect.vue","webpack:///./src/components/map-setup/MapLayerSetup.vue?0a0b","webpack:///./src/components/map-setup/MapLayerSetup.vue?b4be","webpack:///./src/components/map-setup/MapLayerSetup.vue?1a12","webpack:///./src/components/map-setup/MapLayerSetup.vue","webpack:///./src/components/map-setup/MapItemSetup.vue?ccc9","webpack:///./src/components/map-setup/MapItemSetup.vue?e78c","webpack:///./src/components/map-setup/MapItemSetup.vue?ebf1","webpack:///./src/components/map-setup/MapItemSetup.vue","webpack:///./src/views/MapSetup.vue?5e17","webpack:///./src/views/MapSetup.vue?524e","webpack:///./src/views/MapSetup.vue","webpack:///./src/views/RulesEngineSetup.vue?adf9","webpack:///./src/components/rules-engine-setup/RulesEngineSetupModal.vue?92c4","webpack:///./src/components/rules-engine-setup/RulesCard.vue?0679","webpack:///./src/components/rules-engine-setup/RulesCard.vue?6e99","webpack:///./src/components/rules-engine-setup/RulesCard.vue?2d9d","webpack:///./src/components/rules-engine-setup/RulesCard.vue","webpack:///./src/components/rules-engine-setup/RulesEngineSetupModal.vue?eaa0","webpack:///./src/components/rules-engine-setup/RulesEngineSetupModal.vue?b3a9","webpack:///./src/components/rules-engine-setup/RulesEngineSetupModal.vue","webpack:///./src/components/rules-engine-setup/RulesEngineDeleteModal.vue?591b","webpack:///./src/components/rules-engine-setup/RulesEngineDeleteModal.vue?ffac","webpack:///./src/components/rules-engine-setup/RulesEngineDeleteModal.vue?6725","webpack:///./src/components/rules-engine-setup/RulesEngineDeleteModal.vue","webpack:///./src/views/RulesEngineSetup.vue?55e0","webpack:///./src/views/RulesEngineSetup.vue?d75c","webpack:///./src/views/RulesEngineSetup.vue","webpack:///./src/views/SystemView.vue?3759","webpack:///./src/components/system-view/SystemViewTree.vue?c9f3","webpack:///./src/components/form/TreePicker.vue?ff4e","webpack:///./src/store/external-map-layers/types.ts","webpack:///./src/components/form/TreePicker.vue?163f","webpack:///./src/components/form/TreePicker.vue?80e0","webpack:///./src/components/form/TreePicker.vue","webpack:///./src/components/system-view/advanced-filters/SystemViewAdvancedFilters.vue?d8f6","webpack:///./src/services/api.systemViewAdvancedFilters.service.ts","webpack:///./src/components/system-view/advanced-filters/SystemViewAdvancedFilterEdit.vue?1150","webpack:///./src/components/system-view/advanced-filters/DeviceNameAdvancedFilter.vue?bfa4","webpack:///./src/components/system-view/advanced-filters/DeviceNameAdvancedFilter.vue?5b9f","webpack:///./src/components/system-view/advanced-filters/DeviceNameAdvancedFilter.vue?4483","webpack:///./src/components/system-view/advanced-filters/DeviceNameAdvancedFilter.vue","webpack:///./src/components/system-view/advanced-filters/DeviceTypeAdvancedFilter.vue?60e1","webpack:///./src/components/system-view/advanced-filters/DeviceTypeAdvancedFilter.vue?d960","webpack:///./src/components/system-view/advanced-filters/DeviceTypeAdvancedFilter.vue?5dfd","webpack:///./src/components/system-view/advanced-filters/DeviceTypeAdvancedFilter.vue","webpack:///./src/components/system-view/advanced-filters/LastTimeAlarmAdvancedFilter.vue?1b6d","webpack:///./src/components/system-view/advanced-filters/LastTimeAlarmAdvancedFilter.vue?33b8","webpack:///./src/components/system-view/advanced-filters/LastTimeAlarmAdvancedFilter.vue?f71d","webpack:///./src/components/system-view/advanced-filters/LastTimeAlarmAdvancedFilter.vue","webpack:///./src/components/system-view/advanced-filters/PeriodAlarmCountAdvancedFilter.vue?0eb5","webpack:///./src/components/system-view/advanced-filters/PeriodAlarmCountAdvancedFilter.vue?ebca","webpack:///./src/components/system-view/advanced-filters/PeriodAlarmCountAdvancedFilter.vue?df6b","webpack:///./src/components/system-view/advanced-filters/PeriodAlarmCountAdvancedFilter.vue","webpack:///./src/components/system-view/advanced-filters/SystemViewAdvancedFilterEdit.vue?3f80","webpack:///./src/components/system-view/advanced-filters/SystemViewAdvancedFilterEdit.vue?07df","webpack:///./src/components/system-view/advanced-filters/SystemViewAdvancedFilterEdit.vue","webpack:///./src/components/system-view/advanced-filters/SystemViewAdvancedFilters.vue?e949","webpack:///./src/components/system-view/advanced-filters/SystemViewAdvancedFilters.vue?3402","webpack:///./src/components/system-view/advanced-filters/SystemViewAdvancedFilters.vue","webpack:///./src/components/system-view/SystemViewTree.vue?a767","webpack:///./src/components/system-view/SystemViewTree.vue?0d94","webpack:///./src/components/system-view/SystemViewTree.vue","webpack:///./src/components/system-view/SetupOverview.vue?b4e1","webpack:///./src/components/system-view/SetupOverviewCamera.vue?cd75","webpack:///./src/components/system-view/SystemOverview.vue?00ea","webpack:///./src/components/system-view/SystemOverview.vue?f601","webpack:///./src/components/system-view/SystemOverview.vue?dbd4","webpack:///./src/components/system-view/SystemOverview.vue","webpack:///./src/components/system-view/SystemViewMap.vue?270f","webpack:///./src/components/system-view/SystemViewMap.vue?4aec","webpack:///./src/components/system-view/SystemViewMap.vue?da87","webpack:///./src/components/system-view/SystemViewMap.vue","webpack:///./src/components/system-view/SystemViewAlarmSetup.vue?4e79","webpack:///./src/components/system-view/SystemViewAlarmAutomations.vue?855b","webpack:///./src/components/system-view/SystemViewAlarmAutomations.vue?2ef2","webpack:///./src/components/system-view/SystemViewAlarmAutomations.vue?1c46","webpack:///./src/components/system-view/SystemViewAlarmAutomations.vue","webpack:///./src/components/system-view/SystemViewAlarmSetup.vue?3898","webpack:///./src/components/system-view/SystemViewAlarmSetup.vue?b90e","webpack:///./src/components/system-view/SystemViewAlarmSetup.vue","webpack:///./src/components/system-view/PingButton.vue?1691","webpack:///./src/components/system-view/PingButton.vue?c09d","webpack:///./src/components/system-view/PingButton.vue?daf9","webpack:///./src/components/system-view/PingButton.vue","webpack:///./src/components/system-view/SetupOverviewCamera.vue?6a03","webpack:///./src/components/system-view/SetupOverviewCamera.vue?2c5a","webpack:///./src/components/system-view/SetupOverviewCamera.vue","webpack:///./src/components/system-view/SetupOverviewDevice.vue?82b4","webpack:///./src/components/system-view/SetupOverviewDevice.vue?16d8","webpack:///./src/components/system-view/SetupOverviewDevice.vue?6c9a","webpack:///./src/components/system-view/SetupOverviewDevice.vue","webpack:///./src/components/system-view/SetupOverviewAppliance.vue?5d5a","webpack:///./src/components/system-view/SetupOverviewAppliance.vue?511a","webpack:///./src/components/system-view/SetupOverviewAppliance.vue?d3d1","webpack:///./src/components/system-view/SetupOverviewAppliance.vue","webpack:///./src/components/system-view/SetupOverviewServer.vue?7eec","webpack:///./src/components/system-view/SetupOverviewServer.vue?d524","webpack:///./src/components/system-view/SetupOverviewServer.vue?513e","webpack:///./src/components/system-view/SetupOverviewServer.vue","webpack:///./src/components/system-view/HealthHistory.vue?c76e","webpack:///./src/components/system-view/HealthHistory.vue?5873","webpack:///./src/components/system-view/HealthHistory.vue?3e94","webpack:///./src/components/system-view/HealthHistory.vue","webpack:///./src/components/system-view/SetupOverviewGroupSync.vue?8371","webpack:///./src/components/system-view/SetupOverviewGroupSync.vue?432a","webpack:///./src/components/system-view/SetupOverviewGroupSync.vue?7b1f","webpack:///./src/components/system-view/SetupOverviewGroupSync.vue","webpack:///./src/components/system-view/SetupOverviewAlarm.vue?f787","webpack:///./src/components/system-view/SetupOverviewAlarm.vue?1919","webpack:///./src/components/system-view/SetupOverviewAlarm.vue?6090","webpack:///./src/components/system-view/SetupOverviewAlarm.vue","webpack:///./src/components/system-view/SetupOverview.vue?e9bd","webpack:///./src/components/system-view/SetupOverview.vue?f797","webpack:///./src/components/system-view/SetupOverview.vue","webpack:///./src/views/SystemView.vue?acf7","webpack:///./src/views/SystemView.vue?f2bd","webpack:///./src/views/SystemView.vue","webpack:///./src/views/ExternalMapLayerSetup.vue?5f94","webpack:///./src/components/external-map-layer/ExternalMapLayerPropertiesSetup.vue?985d","webpack:///./src/components/external-map-layer/ExternalMapLayerPropertiesSetup.vue?4e03","webpack:///./src/components/external-map-layer/ExternalMapLayerPropertiesSetup.vue?6fac","webpack:///./src/components/external-map-layer/ExternalMapLayerPropertiesSetup.vue","webpack:///./src/components/external-map-layer/ExternalMapLayerModal.vue?cd3c","webpack:///./src/components/external-map-layer/DeleteExternalMapLayerModal.vue?d1b7","webpack:///./src/components/external-map-layer/DeleteExternalMapLayerModal.vue?a5ec","webpack:///./src/components/external-map-layer/DeleteExternalMapLayerModal.vue?f43e","webpack:///./src/components/external-map-layer/DeleteExternalMapLayerModal.vue","webpack:///./src/components/external-map-layer/ExternalMapLayerModal.vue?84ff","webpack:///./src/components/external-map-layer/ExternalMapLayerModal.vue?9022","webpack:///./src/components/external-map-layer/ExternalMapLayerModal.vue","webpack:///./src/views/ExternalMapLayerSetup.vue?b59b","webpack:///./src/views/ExternalMapLayerSetup.vue?61d6","webpack:///./src/views/ExternalMapLayerSetup.vue","webpack:///./src/views/Schedules.vue?d82f","webpack:///./src/components/Schedules/ScheduleSetup.vue?779f","webpack:///./src/components/Schedules/SchedulesTable.vue?7880","webpack:///./src/components/Schedules/SchedulesTable.vue?0664","webpack:///./src/components/Schedules/SchedulesTable.vue?9d94","webpack:///./src/components/Schedules/SchedulesTable.vue","webpack:///./src/components/Schedules/ScheduleSetup.vue?0833","webpack:///./src/components/Schedules/ScheduleSetup.vue?eb2f","webpack:///./src/components/Schedules/ScheduleSetup.vue","webpack:///./src/components/Schedules/public-holidays/PublicHolidaySetup.vue?a58d","webpack:///./src/components/Schedules/public-holidays/PublicHolidaySetup.vue?46ef","webpack:///./src/components/Schedules/public-holidays/PublicHolidaySetup.vue?cc0c","webpack:///./src/components/Schedules/public-holidays/PublicHolidaySetup.vue","webpack:///./src/views/Schedules.vue?56af","webpack:///./src/views/Schedules.vue?4e76","webpack:///./src/views/Schedules.vue","webpack:///./src/views/Masking/MaskingReasonsSetup.vue?8813","webpack:///./src/views/Masking/MaskingReasonsSetup.vue?f41b","webpack:///./src/views/Masking/MaskingReasonsSetup.vue?5653","webpack:///./src/views/Masking/MaskingReasonsSetup.vue","webpack:///./src/views/NotificationTemplateSetup.vue?db7c","webpack:///./src/components/form/RichTextEditor.vue?9825","webpack:///./src/components/form/RichTextEditor.vue?125d","webpack:///./src/components/form/RichTextEditor.vue?e828","webpack:///./src/components/form/RichTextEditor.vue","webpack:///./src/views/NotificationTemplateSetup.vue?6cef","webpack:///./src/views/NotificationTemplateSetup.vue?90a2","webpack:///./src/views/NotificationTemplateSetup.vue","webpack:///./src/router.ts","webpack:///./src/views/SystemView.vue?fb5e","webpack:///./src/components/media/BufferSeek.vue?5522","webpack:///./src/store/types.ts","webpack:///./src/components/EqStatusInfoBar.vue?7854","webpack:///./src/components/EqStatusInfoBar.vue?c80c","webpack:///./src/components/EqStatusInfoBar.vue?c096","webpack:///./src/components/EqStatusInfoBar.vue","webpack:///./src/components/mobile-raise-templates/RoundIconButton.vue?d5f1","webpack:///./src/components/system-view/SetupOverviewDevice.vue?2549","webpack:///./src/components/mobile-raise-templates/QuickSelectSlot.vue?a79e","webpack:///./src/components/AlarmQueueHeader.vue?bcfc","webpack:///./src/components/media/Tour.vue?af04","webpack:///./src/components/ManualRaise.vue?51c4","webpack:///./src/components/ManualAction.vue?bbaa","webpack:///./src/components/activity-log/ActivityLogPopup.vue?e3e0","webpack:///./src/components/tasks/task-types/EventOutcomeTask.vue?252e","webpack:///./src/types/sv-data/enums/MaskType.ts","webpack:///./src/components/setup/alarm-setup/decoder-setup/AlarmDecoderEventSetup.vue?9b99","webpack:///./src/components/alarm-masking/MaskingForm.vue?b6cf","webpack:///./src/components/alarm-masking/MaskingForm.vue?5512","webpack:///./src/components/alarm-masking/MaskingForm.vue?cb44","webpack:///./src/components/alarm-masking/MaskingForm.vue","webpack:///./src/components/tasks/task-types/RaiseToCasesTask.vue?827a","webpack:///./src/components/tasks/task-types/RaiseToCasesTask.vue?995e","webpack:///./src/components/tasks/task-types/RaiseToCasesTask.vue?130b","webpack:///./src/components/tasks/task-types/RaiseToCasesTask.vue","webpack:///./src/components/EventDetails.vue?4f35","webpack:///./src/components/tasks/ActionLibrarySimpleList.vue?feb3","webpack:///./src/components/ai-virtual-operator/VirtualOperatorsPopup.vue?475c","webpack:///./src/components/Schedules/public-holidays/PublicHolidaySetup.vue?7f1a","webpack:///./src/components/ValidatePinCodeModal.vue?1f0c","webpack:///./src/components/AlarmQueueFilterEdit.vue?e5b8","webpack:///./src/components/mobile-raise-templates/LinksSelector.vue?3a11","webpack:///./src/mixins/PaginatedSearch.ts","webpack:///./src/components/asset/AssetTypeSetup.vue?d56a","webpack:///./src/components/mobile/mobile-raise/ManualRaiseDetails.vue?9eba","webpack:///./src/components/system-view/advanced-filters/SystemViewAdvancedFilterEdit.vue?107d","webpack:///./src/views/MapSetup.vue?f83f","webpack:///./src/components/setup/alarm-setup/distance-configuration/MapRadius.vue?34ad","webpack:///./src/components/rules-engine-setup/RulesLogicBuilder.vue?7c5a","webpack:///./src/components/Sidebar.vue?4118","webpack:///./src/components/Tree.vue?60c9","webpack:///./src/components/Tree.vue?56e2","webpack:///./src/components/Tree.vue?4f7c","webpack:///./src/components/Tree.vue","webpack:///./src/components/mobile/core/MobileMenu.vue?5427","webpack:///./src/mixins/AutomationMixin.ts","webpack:///./src/models/Tasks/renderType.ts","webpack:///./src/components/Tree.vue?ae26","webpack:///./src/components/custom-fields/CustomFieldDatePicker.vue?3dd5","webpack:///./src/components/custom-fields/CustomFieldDatePicker.vue?c21d","webpack:///./src/components/custom-fields/CustomFieldDatePicker.vue?f4c2","webpack:///./src/components/custom-fields/CustomFieldDatePicker.vue","webpack:///./src/components/my-account/account-details.vue?887b","webpack:///./src/components/mobile/mobile-raise/RaiseManualRaise.vue?944f","webpack:///./src/mixins/HideMapMixin.ts","webpack:///./src/components/AreaDetails.vue?758a","webpack:///./src/components/activity-log/ActivityLogTable.vue?6eab","webpack:///./src/components/Schedules/ScheduleEnums.ts","webpack:///./src/components/ErrorWarning.vue?0c31","webpack:///./src/views/FieldOps.vue?500e","webpack:///./src/components/InvitationCheck.vue?0f3f","webpack:///./src/components/event-queue/PatrolQueue.vue?66cf","webpack:///./src/components/UrlInputLine.vue?016a","webpack:///./src/components/mobile/core/MobileMap.vue?1566","webpack:///./src/components/Schedules/SchedulesCalendar.vue?96f2","webpack:///./src/scripts/mapping/mapLabel.ts","webpack:///./src/components/tasks/choices/ChoicesTask.vue?cb96","webpack:///./src/components/EnhancedSingleMap.vue?056f","webpack:///./src/assets/svgIcons.ts","webpack:///./src/components/IncidentReport.vue?74d2","webpack:///./src/components/IncidentReportDownload.vue?8cc1","webpack:///./src/components/IncidentReportDownload.vue?38ba","webpack:///./src/components/IncidentReportDownload.vue?41d3","webpack:///./src/components/IncidentReportDownload.vue","webpack:///./src/components/IncidentReport.vue?31c8","webpack:///./src/components/IncidentReport.vue?062e","webpack:///./src/components/IncidentReport.vue","webpack:///./src/views/Schedules.vue?7189","webpack:///./src/components/EnhancedMap.vue?2d6e","webpack:///./src/components/EnhancedMap.vue?a9ff","webpack:///./src/components/EnhancedMap.vue?42b2","webpack:///./src/components/EnhancedMap.vue","webpack:///./src/components/ForceRestore.vue?efff","webpack:///./src/components/table/generic-update-modal.vue?ae51","webpack:///./src/components/table/generic-update-modal.vue?bc6a","webpack:///./src/components/table/generic-update-modal.vue?40c4","webpack:///./src/components/table/generic-update-modal.vue","webpack:///./src/components/device-setup/CameraPreview.vue?81ad","webpack:///./src/components/device-setup/CameraPreview.vue?ce95","webpack:///./src/components/device-setup/CameraPreview.vue?a00d","webpack:///./src/components/device-setup/CameraPreview.vue","webpack:///./src/components/mobile/mobile-raise/SearchSelect.vue?3700","webpack:///./src/components/media/CameraModal.vue?bcfb","webpack:///./src/components/EventClose.vue?160e","webpack:///./src/components/EventClose.vue?1f54","webpack:///./src/components/EventClose.vue?83c4","webpack:///./src/components/EventClose.vue","webpack:///./src/components/mobile/mobile-raise/RaiseSelect.vue?a0b9","webpack:///./src/components/AreaNotes.vue?cad0","webpack:///./src/components/area-notes/AreaNotesTable.vue?dc4d","webpack:///./src/services/api.service.ts","webpack:///./src/components/external-map-layer/ExternalMapLayerPropertiesSetup.vue?47ea","webpack:///./src/views/AreaSetup/AreaTable.vue?a818","webpack:///./src/components/mobile-assets/MobileAssetHistory.vue?7dfe","webpack:///./src/components/mobile-assets/MobileAssetHistory.vue?f82f","webpack:///./src/components/mobile-assets/MobileAssetHistory.vue?e1d7","webpack:///./src/components/mobile-assets/MobileAssetHistory.vue","webpack:///./src/components/site-monitor/PutEventOnTestModal.vue?e480","webpack:///./src/store/alarm-points/types.ts","webpack:///./src/components/alarm-points/OnTestScheduleForm.vue?4a71","webpack:///./src/components/alarm-points/OnTestScheduleForm.vue?4b18","webpack:///./src/components/alarm-points/OnTestScheduleForm.vue?90f5","webpack:///./src/components/alarm-points/OnTestScheduleForm.vue","webpack:///./src/components/site-monitor/PutEventOnTestModal.vue?57f6","webpack:///./src/components/site-monitor/PutEventOnTestModal.vue?3233","webpack:///./src/components/site-monitor/PutEventOnTestModal.vue","webpack:///./src/components/alarm-masking/AlarmMaskDurationInput.vue?68af","webpack:///./src/components/form/CameraSelect.vue?ff15","webpack:///./src/components/form/CameraSelect.vue?203d","webpack:///./src/components/form/CameraSelect.vue?f3c5","webpack:///./src/components/form/CameraSelect.vue","webpack:///./src/components/activity-log/ActivityLogPopup.vue?0db3","webpack:///./src/components/IconUpload.vue?5358","webpack:///./src/components/tasks/task-types/InputTask.vue?9a19","webpack:///./src/components/custom-fields/CustomFieldModalDeleteView.vue?3b03","webpack:///./src/components/ShortcutHelp.vue?a0a3","webpack:///./src/components/event-queue/EventQueueAreaInfoIcon.vue?8901","webpack:///./src/components/event-queue/EventQueueAreaInfoIcon.vue?649d","webpack:///./src/components/event-queue/EventQueueAreaInfoIcon.vue?f24a","webpack:///./src/components/event-queue/EventQueueAreaInfoIcon.vue","webpack:///./src/components/utilities/draggable.vue?8549","webpack:///./src/components/utilities/draggable.vue?e5b9","webpack:///./src/components/utilities/draggable.vue?f4a3","webpack:///./src/components/utilities/draggable.vue","webpack:///./src/components/SureViewIcon.vue?6716","webpack:///./src/components/SureViewIcon.vue?ba1c","webpack:///./src/components/SureViewIcon.vue?16d4","webpack:///./src/components/SureViewIcon.vue","webpack:///./src/components/form/ContactsFor.vue?cb89","webpack:///./src/components/mobile/core/UploadFileButton.vue?7286","webpack:///./src/components/asset/AssetColorPicker.vue?5d4b","webpack:///./src/views/ConfigureTasks.vue?1588","webpack:///./src/views/EventSearchPage.vue?586f","webpack:///./src/views/Masking/MaskingReasonsSetup.vue?53bb","webpack:///./src/components/alarm-points/AreaAlarms.vue?9fa0","webpack:///./src/components/EventSearch.vue?6be6","webpack:///./src/components/custom-fields/CustomDefinedFieldsDisplay.vue?3245","webpack:///./src/components/setup/FeatureTree.vue?f718","webpack:///./src/components/setup/FeatureTree.vue?4099","webpack:///./src/components/setup/FeatureTree.vue?3ca4","webpack:///./src/components/setup/FeatureTree.vue","webpack:///./src/types/EnhancedSingleMapTypes.ts","webpack:///./src/components/system-view/SystemViewTree.vue?8a22","webpack:///./src/components/area-notes/AreaNotesForm.vue?6bb8","webpack:///./src/components/mobile/mobile-raise/QuickSelect.vue?0d55","webpack:///./src/components/Schedules/public-holidays/PublicHolidaySetup.vue?3656","webpack:///./src/components/ZendeskHelp.vue?87fe","webpack:///./src/components/tasks/control/ControlSetup.vue?8cce","webpack:///./src/components/system-admin/SwitchTenant.vue?4373","webpack:///./src/components/mapping/EnhancedSingleMapControls.vue?6a7c","webpack:///./src/components/form/ElevationSelect.vue?924f","webpack:///./src/views/UserSetup/UserManagementSetup.vue?c876","webpack:///./src/components/area-tree-select/DrawdownBreadcrumbs.vue?7b63","webpack:///./src/types/Constants.ts","webpack:///./src/components/mobile-assets/MobileAssetList.vue?9a27","webpack:///./src/components/mobile-assets/MobileAssetList.vue?a2fe","webpack:///./src/components/mobile-assets/MobileAssetList.vue?d591","webpack:///./src/components/mobile-assets/MobileAssetList.vue","webpack:///./src/services/api.customField.service.ts","webpack:///./src/components/system-view/advanced-filters/DeviceTypeAdvancedFilter.vue?13d8","webpack:///./src/components/alarm-points/AlarmPointManagerDialog.vue?cab6","webpack:///./src/components/rules-engine-setup/RulesEngineSetupModal.vue?17a6","webpack:///./src/components/AreaDetails.vue?6889","webpack:///./src/components/ValidatePinCodeModal.vue?9e51","webpack:///./src/components/ValidatePinCodeModal.vue?9c10","webpack:///./src/components/ValidatePinCodeModal.vue?d9e7","webpack:///./src/components/ValidatePinCodeModal.vue","webpack:///./src/components/contacts/AreaContacts.vue?21d2","webpack:///./src/components/custom-fields/CustomFieldPriorityDisplay.vue?74c4","webpack:///./src/components/custom-fields/CustomFieldPriorityDisplay.vue?0f0c","webpack:///./src/components/custom-fields/CustomFieldPriorityDisplay.vue?44f0","webpack:///./src/components/custom-fields/CustomFieldPriorityDisplay.vue","webpack:///./src/components/contacts/AreaContacts.vue?3192","webpack:///./src/components/contacts/AreaContacts.vue?a851","webpack:///./src/components/contacts/AreaContacts.vue","webpack:///./src/components/area-details/HyperlinkContact.vue?dc76","webpack:///./src/components/area-details/HyperlinkContact.vue?59cd","webpack:///./src/components/area-details/HyperlinkContact.vue?65e0","webpack:///./src/components/area-details/HyperlinkContact.vue","webpack:///./src/components/AreaDetails.vue?7d8e","webpack:///./src/components/AreaDetails.vue?ba04","webpack:///./src/components/AreaDetails.vue","webpack:///./src/store/devices/templates.ts","webpack:///./src/utils/debounce-helper.ts","webpack:///./src/store/devices/types.ts","webpack:///./src/components/rules-engine-setup/RulesLogicStep.vue?4f26","webpack:///./src/components/rules-engine-setup/RulesSelector.vue?ce77","webpack:///./src/components/rules-engine-setup/RulesSelector.vue?c9a9","webpack:///./src/components/rules-engine-setup/RulesSelector.vue?8ef7","webpack:///./src/components/rules-engine-setup/RulesSelector.vue","webpack:///./src/components/rules-engine-setup/RulesLogicStep.vue?8e95","webpack:///./src/components/rules-engine-setup/RulesLogicStep.vue?24f3","webpack:///./src/components/rules-engine-setup/RulesLogicStep.vue","webpack:///./src/views/AlarmSetup.vue?9391","webpack:///./src/components/alarm-points/AlarmPoint.vue?a506","webpack:///./src/components/alarm-points/PutOnTest.vue?db5d","webpack:///./src/components/system-view/SystemViewAlarmSetup.vue?c565","webpack:///./src/components/tasks/task-types/BasicTask.vue?8d14","webpack:///./src/views/MobileRaiseSetup.vue?9231","webpack:///./src/components/audio/AudioControl.vue?47bf","webpack:///./src/components/mobile-assets/types.ts","webpack:///./src/components/tasks/task-types/CCureTask.vue?f361","webpack:///./src/components/tasks/task-types/CCureTask.vue?653b","webpack:///./src/components/tasks/task-types/CCureTask.vue?bb80","webpack:///./src/components/tasks/task-types/CCureTask.vue","webpack:///./src/components/mobile/messages/MessageBlock.vue?2852","webpack:///./src/views/SetPassword.vue?2ce7","webpack:///./src/components/site-monitor/InactivityWarning.vue?af05","webpack:///./src/components/device-setup/sync/GroupSyncConfig.vue?da17","webpack:///./src/views/ActivityLogManagement.vue?0332","webpack:///./src/components/EventRecords.vue?c742","webpack:///./src/components/CreateNewResponse.vue?1e2d","webpack:///./src/components/CreateNewResponse.vue?7583","webpack:///./src/components/CreateNewResponse.vue?3e47","webpack:///./src/components/CreateNewResponse.vue","webpack:///./src/components/EventRecordDetailsPopout.vue?1085","webpack:///./src/components/EventRecordDetailsPopout.vue?ee5e","webpack:///./src/components/EventRecordDetailsPopout.vue?39b1","webpack:///./src/components/EventRecordDetailsPopout.vue","webpack:///./src/components/EventRecords.vue?ff63","webpack:///./src/components/EventRecords.vue?de6d","webpack:///./src/components/EventRecords.vue","webpack:///./src/views/UserSetup/UserGroupInput.vue?5adf","webpack:///./src/components/mobile-raise-templates/RoundIcon.vue?83c6","webpack:///./src/components/tasks/EventTaskContainer.vue?a303","webpack:///./src/components/tasks/AddNewEventTask.vue?5b97","webpack:///./src/components/tasks/AddNewEventTask.vue?63ce","webpack:///./src/components/tasks/AddNewEventTask.vue?02a6","webpack:///./src/components/tasks/AddNewEventTask.vue","webpack:///./src/components/tasks/MultipleAssignToAction.vue?7c9b","webpack:///./src/components/tasks/MultipleAssignToAction.vue?80a0","webpack:///./src/components/tasks/MultipleAssignToAction.vue?b3a1","webpack:///./src/components/tasks/MultipleAssignToAction.vue","webpack:///./src/components/tasks/ActionLibrarySimpleList.vue?3811","webpack:///./src/components/tasks/ActionLibrarySimpleList.vue?677f","webpack:///./src/components/tasks/ActionLibrarySimpleList.vue?5e23","webpack:///./src/components/tasks/ActionLibrarySimpleList.vue","webpack:///./src/components/tasks/EventTaskGroup.vue?143e","webpack:///./src/components/tasks/CompleteTaskLine.vue?3556","webpack:///./src/components/tasks/notification/NotificationTask.vue?f133","webpack:///./src/components/tasks/notification/NotificationTask.vue?de2d","webpack:///./src/components/tasks/notification/NotificationTask.vue?82df","webpack:///./src/components/tasks/notification/NotificationTask.vue","webpack:///./src/components/tasks/choices/ChoicesTask.vue?6158","webpack:///./src/components/tasks/choices/ChoicesTask.vue?3e80","webpack:///./src/components/tasks/choices/ChoicesTask.vue?e99a","webpack:///./src/components/tasks/choices/ChoicesTask.vue","webpack:///./src/components/tasks/call-contact/CallContactTask.vue?c2d2","webpack:///./src/components/tasks/call-contact/CallContactTask.vue?8c36","webpack:///./src/components/tasks/call-contact/CallContactTask.vue?f3d8","webpack:///./src/components/tasks/call-contact/CallContactTask.vue","webpack:///./src/components/tasks/control/ControlTask.vue?2977","webpack:///./src/components/tasks/control/ControlTask.vue?d52a","webpack:///./src/components/tasks/control/ControlTask.vue?ff43","webpack:///./src/components/tasks/control/ControlTask.vue","webpack:///./src/components/tasks/CompleteTaskLine.vue?a8ad","webpack:///./src/components/tasks/CompleteTaskLine.vue?3f0f","webpack:///./src/components/tasks/CompleteTaskLine.vue","webpack:///./src/components/tasks/EventTaskGroup.vue?40e8","webpack:///./src/components/tasks/EventTaskGroup.vue?d473","webpack:///./src/components/tasks/EventTaskGroup.vue","webpack:///./src/components/action-plans/ActionPlansOverrideModal.vue?2974","webpack:///./src/components/action-plans/ActionPlansModal.vue?7b34","webpack:///./src/components/action-plans/ActionPlansModal.vue?9c6b","webpack:///./src/components/action-plans/ActionPlansModal.vue?fd9e","webpack:///./src/components/action-plans/ActionPlansModal.vue","webpack:///./src/components/action-plans/ActionPlansOverrideModal.vue?3853","webpack:///./src/components/action-plans/ActionPlansOverrideModal.vue?c9cb","webpack:///./src/components/action-plans/ActionPlansOverrideModal.vue","webpack:///./src/services/api.eventTasks.service.ts","webpack:///./src/components/tasks/EventTaskContainer.vue?9c97","webpack:///./src/components/tasks/EventTaskContainer.vue?7fea","webpack:///./src/components/tasks/EventTaskContainer.vue","webpack:///./src/components/LinkingCamera.vue?94b2","webpack:///./src/components/system-view/SetupOverviewCamera.vue?06b6","webpack:///./src/components/event-queue/AutoFeedAlarms.vue?63a7","webpack:///./src/components/event-queue/AutoFeedAlarms.vue?b1f6","webpack:///./src/components/event-queue/AutoFeedAlarms.vue?efb1","webpack:///./src/components/event-queue/AutoFeedAlarms.vue","webpack:///./src/components/EventEnded.vue?8387","webpack:///./src/components/TourSetupModal.vue?5043","webpack:///./src/components/AdvancedAreaSearch.vue?c65a","webpack:///./src/components/EventSearch.vue?5918","webpack:///./src/components/event-queue/EventQueueAreaInfoIcon.vue?3896","webpack:///./src/components/area-event-history/AreaEventHistory.vue?0211","webpack:///./src/services/api.ccure.service.ts","webpack:///./src/components/MatrixContainer.vue?c320","webpack:///./src/views/FieldOps.vue?e100","webpack:///./src/views/SubscriptionDetails.vue?cfa5","webpack:///./src/components/EventEnded.vue?0659","webpack:///./src/components/EventEnded.vue?12f8","webpack:///./src/components/EventEnded.vue?45d9","webpack:///./src/components/EventEnded.vue","webpack:///./src/components/ForceRestore.vue?5c19","webpack:///./src/components/ForceRestore.vue?91ca","webpack:///./src/components/ForceRestore.vue?b2c2","webpack:///./src/components/ForceRestore.vue","webpack:///./src/components/form/SVButton.vue?3885","webpack:///./src/components/form/SVButton.vue?f2f6","webpack:///./src/components/form/SVButton.vue?0ab5","webpack:///./src/components/form/SVButton.vue","webpack:///./src/components/audio/AudioList.vue?aa5a","webpack:///./src/components/system-view/SystemViewHealthRadioFilter.vue?ead5","webpack:///./src/components/EqStatusInfoBar.vue?0479","webpack:///./src/components/alarm-points/AreaAlarms.vue?d63a","webpack:///./src/components/Schedules/SchedulesTable.vue?c193","webpack:///./src/services/api.apiKey.service.ts","webpack:///./src/services/api.masking.service.ts","webpack:///./src/services/auditService.ts","webpack:///./src/components/SiteMonitorHeader.vue?f88a","webpack:///./src/components/site-monitor/NotificationModal.vue?e8ec","webpack:///./src/components/site-monitor/SetEventOutcomeAndNote.vue?4238","webpack:///./src/components/site-monitor/SetEventOutcomeAndNote.vue?3f09","webpack:///./src/components/site-monitor/SetEventOutcomeAndNote.vue?c95d","webpack:///./src/components/site-monitor/SetEventOutcomeAndNote.vue","webpack:///./src/components/site-monitor/NotificationModal.vue?0828","webpack:///./src/components/site-monitor/NotificationModal.vue?8e87","webpack:///./src/components/site-monitor/NotificationModal.vue","webpack:///./src/components/RaiseCaseModal.vue?2423","webpack:///./src/components/RaiseCaseModal.vue?c795","webpack:///./src/components/RaiseCaseModal.vue?6b9d","webpack:///./src/components/RaiseCaseModal.vue","webpack:///./src/components/site-monitor/QuickEndSettingsTooltipContent.vue?11b4","webpack:///./src/components/site-monitor/QuickEndSettingsTooltipContent.vue?0a38","webpack:///./src/components/site-monitor/QuickEndSettingsTooltipContent.vue?7130","webpack:///./src/components/site-monitor/QuickEndSettingsTooltipContent.vue","webpack:///./src/components/SiteMonitorHeader.vue?97a9","webpack:///./src/components/SiteMonitorHeader.vue?bbbd","webpack:///./src/components/SiteMonitorHeader.vue","webpack:///./src/mixins.ts","webpack:///./src/components/table/generic-update-modal.vue?c854","webpack:///./src/components/alarm-points/PutOnTest.vue?e1cf","webpack:///./src/components/alarm-points/PutOnTest.vue?33ea","webpack:///./src/components/alarm-points/PutOnTest.vue?ea0c","webpack:///./src/components/alarm-points/PutOnTest.vue","webpack:///./src/components/emails/EmailRawDataControl.vue?a25c","webpack:///./src/views/LoginSaml.vue?e371","webpack:///./src/components/ResetActionsCCure.vue?a248","webpack:///./src/components/EnhancedSingleMap.vue?78ef","webpack:///./src/components/media/CameraModal.vue?a388","webpack:///./src/components/media/CameraModal.vue?b6b9","webpack:///./src/components/media/CameraModal.vue?0781","webpack:///./src/components/media/CameraModal.vue","webpack:///./src/components/mapping/EnhancedSingleMapControls.vue?a915","webpack:///./src/components/mapping/EnhancedSingleMapControls.vue?4b7c","webpack:///./src/components/mapping/EnhancedSingleMapControls.vue?ab47","webpack:///./src/components/mapping/EnhancedSingleMapControls.vue","webpack:///./src/components/EnhancedSingleMap.vue?cec2","webpack:///./src/components/EnhancedSingleMap.vue?b467","webpack:///./src/components/EnhancedSingleMap.vue","webpack:///./src/components/EventSharing.vue?9f3c","webpack:///./src/components/mobile/assets/AssetStatusInput.vue?49b4","webpack:///./src/components/mobile/assets/AssetStatusInput.vue?2cf4","webpack:///./src/components/mobile/assets/AssetStatusInput.vue?de83","webpack:///./src/components/mobile/assets/AssetStatusInput.vue","webpack:///./src/components/tasks/task-types/UrlTask.vue?b9e2","webpack:///./src/components/alarm-masking/MaskingModalFilteredAreas.vue?d401","webpack:///./src/components/alarm-masking/MaskingModalFilteredAreas.vue?97a1","webpack:///./src/components/alarm-masking/MaskingModalFilteredAreas.vue?b4c3","webpack:///./src/components/alarm-masking/MaskingModalFilteredAreas.vue","webpack:///./src/components/reports/InsightsGraph.vue?1c2a","webpack:///./src/components/ProcessingError.vue?c4ca","webpack:///./src/components/alarm-masking/MaskingModalLauncher.vue?c59e","webpack:///./src/components/alarm-masking/AdvancedMaskModal.vue?407c","webpack:///./src/components/alarm-masking/AdvancedMaskModal.vue?a9d3","webpack:///./src/components/alarm-masking/AdvancedMaskModal.vue?90f2","webpack:///./src/components/alarm-masking/AdvancedMaskModal.vue","webpack:///./src/components/alarm-masking/MaskingModalLauncher.vue?d4a5","webpack:///./src/components/alarm-masking/MaskingModalLauncher.vue?85b1","webpack:///./src/components/alarm-masking/MaskingModalLauncher.vue","webpack:///./src/components/form/DatePicker.vue?d33c","webpack:///./src/components/tasks/EventTaskGroup.vue?133d","webpack:///./src/components/system-view/SystemViewAlarmAutomations.vue?dceb","webpack:///./src/components/NavMenuIcon.vue?123d","webpack:///./src/components/Schedules/ScheduleSetup.vue?7ac4","webpack:///./src/components/EventReview.vue?7a82","webpack:///./src/store/distance-configuration/types.ts","webpack:///./src/components/EventRecords.vue?937d","webpack:///./src/components/mobile-raise-templates/IconsSelector.vue?6085","webpack:///./src/components/NavHeader.vue?d3aa","webpack:///./src/components/ResetActionsCCure.vue?4e0c","webpack:///./src/components/ResetActionsCCure.vue?d884","webpack:///./src/components/ResetActionsCCure.vue?d104","webpack:///./src/components/ResetActionsCCure.vue","webpack:///./src/components/csv-uploader/csv-uploader.vue?853d","webpack:///./src/views/NotificationTemplateSetup.vue?a3f2","webpack:///./src/components/mobile/messages/Chat.vue?1c2d","webpack:///./src/components/situational-awareness/AdvancedMapFilters.vue?2b34","webpack:///./src/components/Schedules/ScheduleMaskDuration.vue?8bc7","webpack:///./src/components/mobile/assets/AssetControl.vue?b06b","webpack:///./src/components/Schedules/SchedulesCalendar.vue?26f4","webpack:///./src/components/Schedules/SchedulesCalendar.vue?c6fa","webpack:///./src/components/Schedules/SchedulesCalendar.vue?b515","webpack:///./src/components/Schedules/SchedulesCalendar.vue","webpack:///./src/components/NavHeader.vue?5866","webpack:///./src/components/NavHeader.vue?6964","webpack:///./src/components/NavHeader.vue?f85f","webpack:///./src/components/NavHeader.vue","webpack:///./src/components/EnhancedSingleMap.vue?f658","webpack:///./src/components/mobile/assets/Events/EventShareItem.vue?b45e","webpack:///./src/views/Contacts.vue?35d1","webpack:///./src/App.vue?9af9","webpack:///./src/components/system-admin/AccessTimerModal.vue?ed94","webpack:///./src/components/system-admin/AccessTimerModal.vue?54f3","webpack:///./src/components/system-admin/AccessTimerModal.vue?5e7b","webpack:///./src/components/system-admin/AccessTimerModal.vue","webpack:///./src/App.vue?dad8","webpack:///./src/App.vue?18c8","webpack:///./src/App.vue","webpack:///./src/services/subscriptions.plugin.ts","webpack:///./src/services/axios.interceptors.ts","webpack:///./src/services/appConfig.plugin.ts","webpack:///./src/plugins/vuetify.js","webpack:///./src/main.ts","webpack:///./src/services/api.mobileRaiseTemplates.service.ts","webpack:///./src/components/EventRecordDetailsPopout.vue?db0f","webpack:///./src/components/rules-engine-setup/RulesLogicStep.vue?734f","webpack:///./src/components/AuditVideo.vue?801a","webpack:///./src/components/EventOutcomeSelector.vue?ff89","webpack:///./src/components/EventOutcomeSelector.vue?94c9","webpack:///./src/components/EventOutcomeSelector.vue?e679","webpack:///./src/components/EventOutcomeSelector.vue","webpack:///./src/components/Support.vue?7852","webpack:///./src/components/EnhancedMapSidebar.vue?9655","webpack:///./src/components/EnhancedMapSidebar.vue?fa2b","webpack:///./src/components/EnhancedMapSidebar.vue?06f7","webpack:///./src/components/EnhancedMapSidebar.vue","webpack:///./src/components/mobile/live/CameraPlayer.vue?89c8","webpack:///./src/components/mobile/core/NotificationBar.vue?e6ac","webpack:///./src/components/mobile/core/LeftSideBar.vue?5125","webpack:///./src/components/IconUpload.vue?2771","webpack:///./src/mixins/IconMixins.ts","webpack:///./src/components/IconUpload.vue?ebf7","webpack:///./src/components/IconUpload.vue?f46b","webpack:///./src/components/IconUpload.vue","webpack:///./src/services/tasks.service.ts","webpack:///./src/store/mobile-raise-templates/typesFunctions.ts","webpack:///./src/components/EventOutcomeSelector.vue?e3c1","webpack:///./src/mixins/RegionalHandlerMixin.ts","webpack:///./src/components/ManualRaise.vue?e727","webpack:///./src/components/rules-engine-setup/RulesText.vue?2dfd","webpack:///./src/components/rules-engine-setup/RulesText.vue?48ef","webpack:///./src/components/rules-engine-setup/RulesText.vue?3b56","webpack:///./src/components/rules-engine-setup/RulesText.vue","webpack:///./src/views/RulesEngineSetup.vue?9a48","webpack:///./src/components/area-event-history/AreaEventHistoryPopout.vue?0fee","webpack:///./src/components/tasks/call-contact/CallContactTask.vue?61f7","webpack:///./src/components/site-monitor/NotificationModal.vue?42fb","webpack:///./src/components/external-map-layer/ExternalMapLayerModal.vue?7046","webpack:///./src/components/alarm-masking/MaskingForm.vue?2191","webpack:///./src/components/organization-settings/SingleSignOnSettings.vue?4f47","webpack:///./src/components/situational-awareness/SituationalAwarenessAlertsControl.vue?dcf3","webpack:///./src/components/mobile-assets/MobileAssetList.vue?9775","webpack:///./src/components/access-control/History.vue?5459","webpack:///./src/services/api.mobile.service.ts","webpack:///./src/components/mobile/messages/MessagesList.vue?a438","webpack:///./src/components/mobile/messages/MessageBlock.vue?5646","webpack:///./src/components/mobile/messages/MessageBlock.vue?176b","webpack:///./src/components/mobile/messages/MessageBlock.vue?3fbe","webpack:///./src/components/mobile/messages/MessageBlock.vue","webpack:///./src/components/mobile/messages/MessagesList.vue?8bf4","webpack:///./src/components/mobile/messages/MessagesList.vue?88df","webpack:///./src/components/mobile/messages/MessagesList.vue","webpack:///./src/components/tasks/AddNewEventTask.vue?2ddf","webpack:///./src/components/setup/alarm-setup/ResponseActionSetup.vue?35de","webpack:///./src/store/response-actions/types.ts","webpack:///./src/components/setup/alarm-setup/ResponseActionTable.vue?2e10","webpack:///./src/components/setup/alarm-setup/ResponseActionTable.vue?d977","webpack:///./src/components/setup/alarm-setup/ResponseActionTable.vue?9650","webpack:///./src/components/setup/alarm-setup/ResponseActionTable.vue","webpack:///./src/components/setup/alarm-setup/ResponseActionSetup.vue?351b","webpack:///./src/components/setup/alarm-setup/ResponseActionSetup.vue?782c","webpack:///./src/components/setup/alarm-setup/ResponseActionSetup.vue","webpack:///./src/components/UrlInputLine.vue?10c5","webpack:///./src/components/UrlInputLine.vue?0e03","webpack:///./src/components/UrlInputLine.vue?a949","webpack:///./src/components/UrlInputLine.vue","webpack:///./src/components/EventRaise.vue?56b1","webpack:///./src/components/EventRaise.vue?143a","webpack:///./src/components/EventRaise.vue?b748","webpack:///./src/components/EventRaise.vue","webpack:///./src/components/custom-fields/CustomFieldModalTableView.vue?a137","webpack:///./src/types/sv-data/custom-fields/Constants.ts","webpack:///./src/components/custom-fields/CustomFieldModalUpdateView.vue?5d49","webpack:///./src/components/custom-fields/CustomFieldModalUpdateView.vue?27ad","webpack:///./src/components/custom-fields/CustomFieldModalUpdateView.vue?0fc9","webpack:///./src/components/custom-fields/CustomFieldModalUpdateView.vue","webpack:///./src/components/custom-fields/CustomFieldModalDeleteView.vue?0e7a","webpack:///./src/components/custom-fields/CustomFieldModalDeleteView.vue?919e","webpack:///./src/components/custom-fields/CustomFieldModalDeleteView.vue?5f6e","webpack:///./src/components/custom-fields/CustomFieldModalDeleteView.vue","webpack:///./src/components/custom-fields/CustomFieldModalTableView.vue?a679","webpack:///./src/components/custom-fields/CustomFieldModalTableView.vue?b574","webpack:///./src/components/custom-fields/CustomFieldModalTableView.vue","webpack:///./src/services/api.settings.service.ts","webpack:///./src/components/alarm-points/AlarmPoint.vue?4c3e","webpack:///./src/components/csv-uploader/csv-form.vue?71e1","webpack:///./src/components/mobile/assets/Events/EventShareItem.vue?2017","webpack:///./src/store/rules-engine/types.ts","webpack:///./src/store/custom-fields/types.ts","webpack:///./src/components/AreaDetails.vue?314c","webpack:///./src/components/OpsLinks.vue?0a68","webpack:///./src/components/OpsLinks.vue?fe61","webpack:///./src/components/OpsLinks.vue?8158","webpack:///./src/components/OpsLinks.vue","webpack:///./src/components/table/generic-table.vue?d144","webpack:///./src/components/alarm-points/OnTestScheduleForm.vue?0167","webpack:///./src/views/SignUp/SignUp.vue?dcbb","webpack:///./src/components/tasks/task-types/InputTask.vue?36bc","webpack:///./src/components/tasks/task-types/InputTask.vue?42e6","webpack:///./src/components/tasks/task-types/InputTask.vue?758c","webpack:///./src/components/tasks/task-types/InputTask.vue","webpack:///./src/components/custom-fields/CustomFieldModalTableView.vue?bbf1","webpack:///./src/components/tasks/control/ControlSetup.vue?7910","webpack:///./src/components/tasks/control/ControlSetup.vue?aa84","webpack:///./src/components/tasks/control/ControlSetup.vue?57a7","webpack:///./src/components/tasks/control/ControlSetup.vue","webpack:///./src/components/mobile/core/LeftSideBar.vue?1859","webpack:///./src/components/custom-fields/CustomDefinedField.vue?1cea","webpack:///./src/types/sv-data/enums/TaskTypeIds.ts","webpack:///./src/components/mobile-raise-templates/RaiseTitle.vue?6c2a","webpack:///./src/components/media/ClipsList.vue?a31b","webpack:///./src/components/EnhancedMap.vue?c723","webpack:///./src/components/custom-fields/CustomFieldDatePicker.vue?cb6e","webpack:///./src/components/AreaNotes.vue?5ba5","webpack:///./src/components/form/DatePicker.vue?9a22","webpack:///./src/components/form/DatePicker.vue?8f66","webpack:///./src/components/form/DatePicker.vue?0692","webpack:///./src/components/form/DatePicker.vue","webpack:///./src/components/AreaNotes.vue?3e0c","webpack:///./src/components/AreaNotes.vue?b17d","webpack:///./src/components/AreaNotes.vue","webpack:///./src/scripts/dictionary.ts","webpack:///./src/views/MobileCore.vue?8044","webpack:///./src/components/mobile/UserDetails.vue?069c","webpack:///./src/components/mobile/messages/MessagesList.vue?8d6f","webpack:///./src/components/contacts/AreaContacts.vue?f219","webpack:///./src/scripts/mapping/markerTypes.ts","webpack:///./src/mixins/FieldOpsMixin.ts","webpack:///./src/components/reports/TileReport.vue?cab3","webpack:///./src/components/mobile/core/MobileCameraSelect.vue?6e33","webpack:///./src/components/table/generic-update-modal.vue?52db","webpack:///./src/views/SiteMonitor.vue?9c6c","webpack:///./src/mixins/customFieldMixins.ts","webpack:///./src/store/map-layers/types.ts","webpack:///./src/components/csv-uploader/csv-uploader.vue?0add","webpack:///./src/components/site-monitor/InactivityWarning.vue?8422","webpack:///./src/components/site-monitor/InactivityWarning.vue?89bd","webpack:///./src/components/site-monitor/InactivityWarning.vue?d9b5","webpack:///./src/components/site-monitor/InactivityWarning.vue","webpack:///./src/components/table/generic-table.vue?e0cf","webpack:///./src/components/system-admin/AccessTimerModal.vue?640b","webpack:///./src/components/site-monitor/SetEventOutcomeAndNote.vue?044b","webpack:///./src/components/mobile-raise-templates/ConfirmationModal.vue?f153","webpack:///./src/components/mobile-raise-templates/ConfirmationModal.vue?4a52","webpack:///./src/components/mobile-raise-templates/ConfirmationModal.vue?1121","webpack:///./src/components/mobile-raise-templates/ConfirmationModal.vue","webpack:///./src/views/AreaSetup/AreaLocationSetup.vue?0f39","webpack:///./src/components/Cameras.vue?34a8","webpack:///./src/components/alarm-masking/MaskingModalGroupBadge.vue?2dc0","webpack:///./src/components/alarm-masking/MaskingModalGroupBadge.vue?0506","webpack:///./src/components/alarm-masking/MaskingModalGroupBadge.vue?4860","webpack:///./src/components/alarm-masking/MaskingModalGroupBadge.vue","webpack:///./src/components/custom-fields/CustomFieldModalUpdateView.vue?706c","webpack:///./src/components/form/SearchDropDown.vue?3701","webpack:///./src/components/external-map-layer/DeleteExternalMapLayerModal.vue?bd3a","webpack:///./src/components/tasks/task-types/UrlTask.vue?07bb","webpack:///./src/components/tasks/task-types/UrlTask.vue?233e","webpack:///./src/components/tasks/task-types/UrlTask.vue?ba06","webpack:///./src/components/tasks/task-types/UrlTask.vue","webpack:///./src/components/tasks/notification/NotificationSetup.vue?7b4e","webpack:///./src/components/tasks/notification/NotificationSetup.vue?93f3","webpack:///./src/components/tasks/notification/NotificationSetup.vue?8a66","webpack:///./src/components/tasks/notification/NotificationSetup.vue","webpack:///./src/components/SureViewIcon.vue?fbe5","webpack:///./src/views/Login.vue?c111","webpack:///./src/components/system-view/SystemViewCameraIcon.vue?68e4","webpack:///./src/components/alarm-masking/AdvancedMaskModal.vue?9c2d","webpack:///./src/components/GettingStartedModal.vue?4db9","webpack:///./src/components/tasks/call-contact/CallContactSetup.vue?c80c","webpack:///./src/components/tasks/call-contact/CallContactSetup.vue?2caf","webpack:///./src/components/tasks/call-contact/CallContactSetup.vue?eb41","webpack:///./src/components/tasks/call-contact/CallContactSetup.vue","webpack:///./src/components/form/AreaTreeSelect.vue?7118","webpack:///./src/components/AdvancedAreaSearch.vue?94d9","webpack:///./src/components/AdvancedAreaSearch.vue?8a0d","webpack:///./src/components/AdvancedAreaSearch.vue?d8db","webpack:///./src/components/AdvancedAreaSearch.vue","webpack:///./src/components/area-tree-select/DrawdownBreadcrumbs.vue?82be","webpack:///./src/components/area-tree-select/DrawdownBreadcrumbs.vue?4ff0","webpack:///./src/components/area-tree-select/DrawdownBreadcrumbs.vue?300c","webpack:///./src/components/area-tree-select/DrawdownBreadcrumbs.vue","webpack:///./src/components/area-tree-select/AdditionalFields.vue?f07e","webpack:///./src/components/area-tree-select/AdditionalFields.vue?3bad","webpack:///./src/components/area-tree-select/AdditionalFields.vue?440b","webpack:///./src/components/area-tree-select/AdditionalFields.vue","webpack:///./src/components/form/AreaTreeSelect.vue?9287","webpack:///./src/components/form/AreaTreeSelect.vue?a5b2","webpack:///./src/components/form/AreaTreeSelect.vue","webpack:///./src/components/map-setup/MapItemSetup.vue?ddd0","webpack:///./src/components/system-view/advanced-filters/DeviceNameAdvancedFilter.vue?bba9","webpack:///./src/services/api.notificationTemplate.service.ts","webpack:///./src/views/EventCategorySetup.vue?ddaf"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","OrganizationQuickEndSettingsUrl","OrganizationSettingsURL","this","axios","axiosJson","retrieveTenantSystemPrefs","liveValue","retrieveAreaSearchAdditionalFieldsSetting","createOrUpdateTenantSystemPrefs","tenantSystemPrefs","put","retrieveQuickEndSettings","groupID","status","createOrUpdateQuickEndSettings","quickEndSettingsRequest","deleteQuickEndSettings","delete","createAlarmQueuePriorityColor","eventQueuePriorityColor","post","retrieveAlarmQueuePriorityColors","paginatedSearchRequest","updateAlarmQueuePriorityColor","deleteAlarmQueuePriorityColor","eventQueuePriorityColorId","validateAlarmQueuePriorityColors","response","organizationApi","OrganizationApi","render","_vm","_h","$createElement","_c","_self","staticClass","attrs","directives","rawName","task","expression","class","invalid","hasValidationErrors","showErrorAnimation","domProps","on","$event","composing","$set","onValidateTask","isFocused","modifiers","updateTask","completed","_e","eventTaskID","isMine","Array","isArray","basicTaskModel","_i","$$a","$$el","$$c","checked","$$v","$$i","concat","style","_v","_s","taskText","staticRenderFns","isNullOrWhitespace","updating","mounted","$nextTick","editing","isValid","$config","ANIMATION_DURATION","$emit","Boolean","BasicTask","components","component","String","trimEndOf","remove","newLength","indexOf","substring","getTitle","isScheduleModalVisible","closeModal","$v","schedule","title","$error","scheduleTypeEditEnabled","model","callback","trim","$params","minLength","min","maxLength","max","groupId","$touch","selectedArea","scheduleTypeId","filteredScheduleTypes","selectedGroup","isMaskingEnabled","disableMasking","scheduleTypeTitle","isMaskingSchedule","alarmOptions","responseID","handleAlarmSearchInput","responseId","slot","hideResponseSelector","handleSearchInput","responseMaskingMeta","responseIds","eventTypes","eventType","eventNum","handleEventTypeSearchInput","serverTypeEvent","isScheduleTypeRaiseEvent","endDateTime","timeZone","id","startDateTime","intervalValue","_n","minValue","maxValue","intervalTypeId","intervalTypes","interval","getEndTypes","onSelectedEndTypeChanged","selectedEndType","isScheduleEndTypeNone","isReoccurenceAvailable","expiresOn","maxOccurrences","triggerValidationOnEndType","publicHolidayTypeId","publicHolidayTypes","publicHoliday","isEdit","displayDeleteConfirmation","isButtonDisabled","onSubmit","isDeleteConfirmationVisible","safeDeleteMatches","confirmDelete","cancelDeletion","_k","keyCode","safeDeleteInput","_m","maskOver24Hours","unMaskedEndTime","unMaskedStartTime","maskedPeriod","oneMinuteInMilliseconds","startDate","Date","startMask","formattedTime","endDate","endMask","setMinutes","getMinutes","formattedMaskedOver24Hours","maskedStartTime","maskedEndTime","duration","diff","asHours","maskDurationInHours","dateTime","dateTimeWithoutOffset","getTime","getTimezoneOffset","formattedDateTime","toISOString","replace","time","toTimeString","split","dateTimeAsString","required","ScheduleMaskDuration","SchedulesStore","ResponseStore","debouncePeriod","minIntervalValue","isoFormatWithoutDst","defaultSchedule","getDefaultSchedule","originalSchedule","None","alarms","currentTimeZoneId","manualRaiseServerTypeId","performAlarmSearch","searchTerm","responseSearchToken","cancel","a","CancelToken","source","getAllResponsesByArea","responses","leading","trailing","setDefaultToLocalFields","beforeDestroy","setIsScheduleModalVisible","readonly","Masking","isEventRaiseEnabled","EventRaise","permissions","isSystemAdmin","canEditSchedules","scheduleId","v","utc","add","OnDate","After","currentAlarm","isAlarmInAlarmList","isExpectedAlarmSchedule","isEventRaiseSchedule","expectedInput","locale","isDailySchedule","Day","timeZoneId","areaTimeZoneId","getTimeZone","iana","Intl","DateTimeFormat","resolvedOptions","unchangedSchedule","getScheduleByIdAndDate","selectedScheduleId","selectedScheduleStart","currentSchedule","isSame","disabled","ExpectedAlarm","allAlarms","getFeature","schedulesTypeList","scheduleTypes","filter","st","scheduleType","find","onDeleteModalVisibilityChange","tempSchedule","updateScheduleForModal","onModalVisibilityChange","scheduleToEdit","getSelectedEndType","onGroupChanged","newGroupId","oldGroupId","loadEventTypes","setAreaTimeZone","onStartDateTimeChanged","triggerDatesValidation","onEndDateTimeChanged","onExpiresOnChanged","onAllAlarmsChanged","newValue","oldValue","onScheduleTypeChanged","disarmReason","disarmUntil","setScheduleId","setSelectedGroup","setSelectedScheduleId","removeTempSchedule","$reset","$invalid","format","addOrUpdateSchedule","setIsReloadRequired","getResponseById","calendarDateFormatter","date","momentDate","toDate","combineDateWithTime","hours","minutes","set","setIsDeleteConfirmationVisible","deleteItem","deleteSchedule","onSelectedScheduleTypeChanged","setDefaultResponseId","setDefaultEventTypeId","clearExpiresOn","setDefaultMaxOccurences","isOnEndType","setDefaultExpiresOn","isAfterOccurencesType","getExpiresOn","daysToRun","nextOccurrence","alarm","alarmList","findIndex","loadGroup","timeZoneID","getDateOnly","startOf","getTimeOnly","getHours","toString","padStart","mins","loadServerEventTypes","hasScheduleChanged","Getter","State","Mutation","Action","default","ScheduleModal","mixins","validations","minTime","isStartDateValid","isBefore","isEndDateValid","isAfter","numeric","isScheduleLengthValid","hasDataChanged","AreaTreeSelect","ConfirmationModal","DEFAULT_SHARING_KEY","DEFAULT_STORAGE_KEY","predicate","sharingKey","storageKey","excludedPages","store","localStorage","setItem","removeItem","committing","storageKeyEntry","shouldShare","mutation","subscribe","state","JSON","stringify","addEventListener","some","page","url","includes","parse","commit","payload","windowId","valueOf","getDefaultState","appInitialised","dataError","showRoutingGroupsLegend","User","userId","userGroupId","loggedIn","username","fullName","isFullUser","userPermissions","canManageContactRoles","canEditSettings","canHandleAlarms","canViewReports","canAddIndividualActions","canEditUserPermissions","canViewSiteSetup","canEditSiteSetup","canRaiseActivityLog","canToggleLogVisibility","canEditOwnActivityLog","canEditOtherActivityLogs","canDisarmSites","canDisarmSitesExtended","canSetResponseToMasked","canSetSiteToOnTest","canSetSiteToAuditMode","canViewEvents","canAccessQuickControl","canViewMediaMatrixControls","canAccessManualRaise","canAccessManualTour","canViewSitRep","canUseMobile","canViewMobileRaise","canEditMobileRaise","canDownloadEventSearchSitRep","canDownloadEventSearchMedia","canViewSubscriptionDetails","canProcessActiveAlarms","canDownloadSingleClip","isAccountAdmin","canViewExternalMapLayers","canEditExternalMapLayers","canEditInsightsTitle","canExtendAlerts","canEditMaps","canEditSystemSettings","canEditEventCategorySetup","canEditGuardTours","canAssignGuardTour","canConductGuardTour","canClaimFromMobileRaise","canPreserveEvents","canRequestSupport","canEditAssetSetup","canViewFieldOps","canEditFieldOps","canOverrideGroupSync","canUpdateEventLocation","canUpdateEndedEventLocation","canEditAutomations","canViewAutomations","canViewSystemView","canPromoteSituationalAwarenessEvent","canDismissSituationalAwarenessEvent","canViewSituationalAwarenessEvents","canViewRulesEngine","canEditRulesEngine","canUpdateEventCategory","canViewSchedules","canEndMultipleEvents","canEditMaskReasons","canViewMaskReasons","canMaskUntilDateTime","canEditPostEvent","canChangeMaskAction","canViewEventHistory","canPutAlarmPointsOnTest","canUseVirtualAssistSummary","canViewNotificationTemplates","canEditNotificationTemplates","canConfigureSuiteSync","canEditInvolvedParties","canUseVirtualOperators","canConfigureDeviceSync","canViewCustomFields","canEditCustomFields","canViewAdvancedStatusFilters","canEditAdvancedStatusFilters","canViewSLAs","canEditSLAs","alarmQueueFilterRestrictions","canFailOverAppliance","canPerformMatrixSnapshot","canOverrideEventActionPlan","dynamicLinkConfig","isFirstLogin","tenantGroupId","userPrefs","useImperialMeasurements","mobileAppEnabled","suiteUserId","suiteResponseLicenced","suiteCasesLicenced","systemPrefs","alarmAgeWarningSeconds","alarmScreenTimeoutSeconds","canUsersAddIndividualActions","hideLabels","requireMapPin","mapType","mobilePrefs","mapStyle","timeZoneAbbr","UserGroups","keyboardShortcuts","legendKeys","routingGroups","activeRegion","regionId","regionUrl","localUserData","featuresList","timeZones","isSessionHeartBeatActive","isSystemAdminAccessTimeModalHidden","elevationLabels","appOptions","requiresConfiguration","defaultMaskValue","defaultParkValue","defaultMaskAction","maxResponseSlaDuration","responseSlaNotifyAtSecondsRemaining","reloadEventQueue","autoFeedAlarms","isLoggedIn","isAppInitialised","getUserName","getUserEmail","getLoginError","getDataError","getShortcuts","getLegendKeys","getTimeZoneAbbr","getUserGroups","getShowRoutingGroupsLegend","getPermissions","getUseImperialMeasurements","getMapType","getMapStyle","getHideLabels","getRequireMapPin","getRoutingGroups","getAlarmScreenTimeoutSeconds","getAlarmAgeWarningSeconds","getMaxResponseSlaDuration","getResponseSlaNotifyAtSecondsRemaining","getActiveRegion","getVersion","version","getMapKey","getFeaturesList","featureNames","getUserId","getUserGroupId","getUserTenantGroupId","getUserSuiteTenantId","getMaskMaxHours","getIsFieldOpsLicensed","getIsResponseLicensed","getFieldOpsLicencedRoutes","getFieldOpsOnlyRoutes","getFieldOpsAndResponseLicencedRoutes","getTimeZones","getCanAddIndividualActionsOverride","getDynamicLinkConfig","isSessionExpiryAudioSoundEnabled","Alarms","SessionExpiryAudioSound","getIsCasesLicenced","getIsOnPrem","deployed","getRequiresConfiguration","getDefaultMaskValue","getDefaultParkValue","item","getDefaultMaskAction","actions","initApp","dispatch","toLocaleTimeString","timeZoneName","login","authenticationStatus","Success","subscription","processLoginResponse","features","getLoginSession","singleEventLogin","loginData","sessionID","accessCode","loginResult","catch","logout","payLoad","currentRoute","router","meta","closeOnLogout","close","redirectOnLogin","errorMessage","path","fullPath","startsWith","hasSessionExpired","playAudioAlert","stopHeartbeat","resetState","serverLogout","fetchUserGroups","loadUserGroups","userGroups","searchGroup","SearchTerm","notInEvent","fetchRoutingGroups","loadRoutingGroups","setMapType","loginToRegion","log","openMediaMatrix","getters","isEnabled","routeData","open","openEventReview","eventId","startApiHeartbeat","startHeartbeat","stopApiHeartbeat","getInterDataServiceLoginToken","context","updateActiveRegion","toLowerCase","endsWith","loadFeaturesList","fetchFeaturesList","getTenantSystemPrefs","live","prefs","raiseSystemLog","ObjectId","ObjectTypeId","getElevationLabels","fetchAppOptions","getAppOptions","fetchRequiresConfig","requiresConfig","mutations","suiteTenantId","storeLocalLogin","setAppInitialisedFlag","setDataError","hasError","setUserGroups","groups","setShortcuts","shortCuts","validShortcuts","sc","featureFlag","setLegendKeys","legends","setRoutingGroupsLegend","show","setTimeZoneAbbr","setMapStyle","setRoutingGroups","routeGroups","setActiveRegion","setBaseApiUrl","setUserAlarmScreenTimeoutSeconds","setAppVersion","setFeaturesList","config","setTenantSystemPrefs","setTimeZones","setElevationLabels","labels","setisFirstLogin","setAppOptions","options","setRequiresConfiguration","toggleAutoFeedAlarms","hideSysAdminAccessTimerModal","appOptionsCopy","requiresConfigCopy","assign","setReloadEventQueue","mainHTMLWithImages","getMainHTML","formattedImagesById","getEmail","getAllHTML","getMultipartAlternativeHTMLs","html","getExtraImages","areImagesExists","getInlineImagesId","getImages","getIdsInlinesImages","groupBy","map","flat","reduce","prev","cur","getMultipartAlternativeHTMLWithImages","getMultipartAlternativeByType","body","isAttachmentsArray","getMultipartAlternative","attachment","getAttachments","getPdfs","getVideos","getAttachmentsHTML","isAttachmentObject","isObject","getEmailFrom","emailsStorage","putEmail","formattedData","setEventRecordIdToShowEmailFor","eventRecordIdToShowEventEmailFor","eventRecordIdToShowEmailFor","loadEmailData","rootGetters","auth","recordId","eventDetails","auditService","auditEndpoint","downloadRawData","namespaced","emails","headers","isContextExist","formattedHeaders","formattedBody","isDataEmpty","isTableValid","values","errorsCSV","every","errors","isHeadersExits","isValidHeadersKey","notValidHeaderKey","requiredHeaders","info","join","difference","keys","mandatoryFields","validHeadersName","header","isBodyExits","csvParsed","row","acc","getCsvLinkDownloadByString","text","blob","Blob","URL","createObjectURL","putCSVParsed","putMandatoryFields","putValidHeadersName","invalidKeys","setValidHeadersName","setMandatoryFields","loadSCVData","csvText","csvContext","convertToSCV","rowSeparator","content","entries","linkDownloadCSV","option","csvParser","getActiveEvents","getFilteredEvents","getFilteredEventIds","getFilteredEventById","FilteredEvents","eventID","getActiveFilterID","getCountByType","countType","eventCountsByType","getAlarmQueueFilterIDs","getLastUpdatedEvents","getAlarmQueueFilters","getOpenAlarmQueueFilterIds","AlarmQueueFilters","aqf","f","getHoverEvent","DisplayedEvent","getManualPatrolShown","isNewFilterModalVisible","getActivityLogShown","getManualActionShown","getSiteTree","getSiteTreeForSelectedTenant","selectedTenant","SiteTree","node","group","getSiteTreeCount","total","recursiveCount","tree","subGroups","forEach","getSelectedGroups","getTreeSelectedGroup","getSearchSelectedGroup","getQueueMapBounds","getCurrentSort","getProcessingError","alarmTags","getLastEventHandled","getUserZone","serverEventTypes","getHandlingEvent","getJoiningEventID","getTourNoteRequired","getHideMapFlag","getMaxEventsToShow","getBulkHandleShown","getVirtualOperatorControlPanelShown","getAllAlarmsSelected","getSelectedAlarms","getRefreshQueue","getClosingAction","fetchEventQueue","canProcessAlarms","currentSort","CurrentSort","filteredEventsResponse","eventQueueRequestUrl","eventQueueGetOverride","EventTypes","Alarm","Patrol","SiteCheck","alarmOnTestFeatureEnabled","OnTest","AuditTest","requestData","filters","sortBy","sort","sortDesc","desc","includeAll","onlyWithLocation","transformRequest","defaults","alarmQueueFilters","alarmQueueFilterID","regionID","activeAlarmCount","alarmCount","AlarmActiveFilter","eventsList","eventQueue","inOpenFilters","inFilters","el","filterID","filterId","eventTitle","displayTitle","responseTitle","eventTypeID","inProcessing","unParkAt","regionTitle","root","maxEventsToShow","q","debugMode","listOfAlarms","evt","listOfParked","listOfPatrols","eventQueueInfo","CurrentUTC","EventsLastUpdate","EventsLastUpdated","AlarmList","ParkedList","TourList","lostConnectionCount","setMaxEventsToShow","maxCount","addFilteredEvents","storedEvent","removeFilteredEvents","index","fetchAlarmQueueFilters","loadAlarmQueueFilters","filtersIds","activeFilter","filterRestrictions","allItem","isActive","hide","regionalFilterID","isLocal","allFiltersItem","addedRegionTitle","anyActive","unshift","updateFilteredEvents","activeId","handleEvent","checkInProcessing","openInNewWindow","pickupMethod","loadEventHandleAllowInProcessing","eventHandledResult","canProcess","openInNewTabFeatureEnabled","auditEventPickUp","removedFromEvent","sitesTreeGet","multiTenant","loadGroupsTree","selected","isOpen","findGroupInTreeById","recursiveFind","searchResult","loadAvailableAlarmQueueFilters","addAlarmQueueFilter","removeAlarmQueueFilter","eventHandleTop","createAlarmQueueFilter","test","parseInt","editAlarmQueueFilter","deleteAlarmQueueFilter","collapseSiteTree","lvl","collapsedLevel","nextLvl","loadAlarmTags","fetchUserZone","loadUserZone","userZone","setDisplayedEvent","eventControl","tourNotesRequired","serverType","searchServerEventTypes","pageSize","searchGroups","params","loadGroupsList","setActiveFilter","loadEventShareInvites","acceptEventShareInvite","eventUserID","ignoreEventShareInvite","fetchGroupsForFilter","groupsForFilter","resetAllActions","resetAllActionsWithRegion","setHideMapFlag","hideMapFlag","getSelectedGroupByIDSetState","updateSelectedGroup","AlarmQueueFilterIDs","FilteredEventIds","changed","reversed","HoverEvent","NewFilterModalShown","ManualPatrolShown","ManualActionShown","ActivityLogShown","ChangedTreeNodes","selectedGroups","treeSelectedGroup","searchSelectedGroup","queueMapBounds","parked","patrols","inProcess","onTest","processingError","parentGroupID","lastEventHandled","RoutingGroups","AlarmTags","ServerEventTypes","filteredServerEventTypes","HandlingEvent","advancedTreeSearchCancelToken","JoiningEventID","TourNoteRequired","eventQueueUpdateInfoHistory","pendingEventPickup","peekEventId","bulkHandleShown","virtualOperatorControlPanelShown","allAlarmsSelected","selectedAlarms","refreshQueue","closingAction","ActionState","Undefined","eventQueuePriorityColors","setAlarmQueueFilters","setTourNotesRequired","setCurrentSort","sortOption","setCurrentSortChanged","hasChanged","setActiveAlarmCount","setAlarmQueueFilterAlarmCount","setAlarmQueueFilterIDs","setFilteredEvents","setFilteredEventIds","alarmFilter","setHoverEvent","setManualPatrolShown","shown","setActivityLogShown","setManualActionShown","setNewFilterModalShown","setSiteTree","siteTree","setSiteNodeContents","treeNode","isLoading","contents","loadingContents","contentsOpen","toggleSiteNodeContentsOpen","setTree","setSelected","setLocalProperties","setDevicesAndGroupsInSiteTree","devices","query","resursiveRemoveAllDevices","recursiveShowChild","recursiveShowGroups","toLocaleLowerCase","recursiveAddDevice","device","deviceAlreadyAdded","deviceId","setDevicesForGroupInSiteTree","setSiteTreeFilter","areaSearch","recursiveShow","isOpenDefault","recursiveSearchApply","thisHasTerm","lowerInTree","isEmptyOrSpaces","str","match","setSiteTreeFilterByState","areaState","groupHasState","setSiteTreeFilterOn","setSiteTreeFilterOff","setSiteTreeNodeValues","setTreeGroupSelected","multiSelect","setTreeGroupSelectedByGroupId","recursiveSetSelected","found","updateSiteTreeSelected","recursiveUpdateAll","selectedGroupToUpdateIndex","g","resetTree","toggleSiteTreeNodeContentsOpen","closeSiteTreeNodeContents","toggleSiteTreeNodeOpen","collapseSiteTreeNode","expandSiteTreeNode","setSearchGroupSelected","setQueueMapBounds","setCountByType","count","setEventQueueGetOverride","setProcessingError","setAlarmTags","setUserZone","setLastEventHandled","setServerEventTypes","addServerEventType","setFilteredServerEventTypes","setHandlingEvent","handling","setAdvancedTreeSearchCancelToken","cancelToken","setJoiningEventID","setBulkHandleShown","setVirtualOperatorControlPanelShown","setAllAlarmsSelected","allSelected","setSelectedAlarms","addSelectedAlarm","removeSelectedAlarm","alarmIndex","setRefreshQueue","refresh","setClosingAction","action","setLostConnectionCount","setEventQueueUpdateInfoHistory","pop","clearEventQueueUpdateInfoHistory","setDebugMode","setPendingEventPickup","pendingEvent","setPeekEventId","eventqueue","getLastActivity","getEventDetails","getEventLocationLastSet","getRequestingEventRecords","getEventRecords","getEventRecordsAwaitingAckCount","getEventRecordsAwaitingRestoreCount","getEventRecordsWithFiles","getActiveResponseIDs","getEventRecordFilters","getCurrentRecordFilter","EventRecordsFilterActiveIndex","EventRecordFilters","getEventRecordsNoFilterRenderIndex","getFilteredRecords","EventRecords","record","filterRecordIds","eventRecordTypeID","getLatestEventRecord","getEventCloseShown","getEventDetailsShown","getEventRaiseShown","getIncidentReportShown","getIncidentReportDownloaded","getEventShareShown","getEventLeaveShown","getPutEventOnTestShown","getInvolvedPartiesShown","getEventShare","getEventShareSet","getEventNoPermission","userShares","storeGetters","shares","user","isController","userID","ControllerUserID","shareWithPersons","getExternalUsersAllowed","getAdhocShareDetails","eventUserId","AdhocShareDetails","getSelectedEventRecord","getActiveMapItems","getMapCircleCenter","getIsController","getUserID","filterIndex","getAuditService","getMaskReasons","getEvents","getGroupMaskReasons","maskedAlarms","getEventOperators","areaNotesVisible","getForceRestoreEventRecord","getActiveMapItemsRequired","getIsUploadingFile","getIsCameraEnabled","SystemView","serverId","deviceServerDetails","firstOrDefault","details","applianceServer","applianceServerDetails","appServer","applianceId","isOnline","getApplianceOfflineNotification","notification","applianceTitle","getSystemViewApplianceNotification","eventOutcomesTree","eventOutcomes","eventOutcomesFlatList","fetchEventRecords","reviewMode","requestingEventRecords","fromRecord","loadEventRecords","events","EventDetails","initialEventRecordId","initialRecord","eventRecord","eventRecordID","userShare","colorIndex","initials","userName","errorResponse","ackEventRecord","awaitingAcknowledgement","eventRecordAcknowledgement","updateSharing","loadShareForEvent","myUserID","controllerUserID","shareUsers","users","share","mobileShares","removeShare","uniqueID","isMobile","eventShareRemove","fetchEventDetails","loadEventDetails","SelectedEventRecord","eventCaseId","setEventDetails","getEventRecordDetails","eventRecordId","loadEventRecordDetails","setEventRecordFilter","createAuditRecord","postAudit","createReviewRecord","auditReviewAction","loadRoutingGroupsByEvent","loadOutcomesForEvent","loadAllOutcomesForAlarms","changeEventRoutingGroup","loadMaskReasonsForAlarm","responseData","loadMaskReasonsForGroup","maskAlarm","maskRequest","loadMaskedAlarms","loadMaskedAlarmsForGroup","closeEvent","closeMultipleEvents","loadEventGroup","loadExternalUsersAllowed","loadExternalUserShareFlag","allow","setAreaNotesVisible","isVisible","loadEventOperators","loadHistoricalEventOperators","loadHistoricalShareForEvent","eventShareSearch","loadNotificationTemplate","addAdhocEventShare","shareLink","location","hash","shareID","shareEventWithUser","shareEventWithGroup","eventPassControl","EventPassControl","parkEvent","EventPark","leaveEvent","eventRecordAllAcknowledgement","unlinkCamera","createResponseActionForEventRecord","priority","flagEventForReview","flagged","preserveEvent","preserved","putEventOnTest","auditMode","onTestNote","fetchEventRecordDetails","removeAdhocUsersFromEvent","adhocUsers","EventShares","removed","adhocUser","pollApplianceServerAndDeviceServerDetails","applianceServerAndDeviceServerPollingStatus","isPolling","fetchApplianceServerAndDeviceServer","clearInterval","intervalHandlerId","setInterval","pollingStatus","stopPollingApplianceServerAndDeviceServerDetails","fetchApplianceServerDetails","getApplianceServerDetails","fetchDeviceServerDetails","deviceIds","existingDeviceIds","getDeviceServerDetails","refreshDeviceServerDetails","updateCurrentEventLocation","latLng","updateInitialAlarmLocation","latLong","minElevation","maxElevation","loadAllOutcomes","LastActivity","AreaNotesVisible","GroupID","UserID","IsController","AdhocLocationEventRecords","ActiveResponseIDs","EventRecordsAwaitingAck","EventRecordsAwaitingAckCount","EventRecordsAwaitingRestore","EventRecordsAwaitingRestoreCount","EventRecordsWithFiles","LatestEventRecordID","EventRecordsNoFilterRenderIndex","filterTitle","showNew","newCount","hasPriorityColumn","hasLinkedCameraColumn","filterRecords","renderIndex","enabled","hasVideoAvailableColumn","showMatrixGridLocation","EventRecordTypes","TaskAdded","TaskCompleted","TaskAssigned","AllEventActionsRemoved","ActionPlanOverride","clearNewOnView","EventDetailsOpen","EventRaiseOpen","EventSharingOpen","EventCloseOpen","EventLeaveOpen","PutEventOnTestOpen","InvolvedPartyOpen","ForceRestoreEventRecord","EventNoPermission","IncidentReportOpen","IncidentReportDownloaded","MobileEventShares","ShareWithPersons","EventSharesSet","ExternalUsersAllowed","activeMapItems","mapCircleCenter","eventLocationLastSet","MaskReasons","GroupMaskReasons","MaskedAlarms","Events","ActiveMapItemsRequired","IsUploadingFile","goToLocation","eventOutcomeTree","eventOutcomeFlatList","areaDetailsTabIndex","dateStringWithZeroHourOffset","largeEventSize","resetEventRecords","setEventRecordFilters","setEventRecordFilterRenderIndex","setEventRecordsNoFilterRenderIndex","setEventRecords","eventRecords","currentEventRecords","activeResponseIDs","recordsAwaitingRestore","recordsAwaitingAck","newAdhocLocationEventRecords","records","expanded","camerasExpanded","awaitingRestore","isRunaway","toUpperCase","objectID","SnapShot","RecordedVideoSnapShot","restoredAt","created","CaseCreated","regex","caseRecordId","exec","ex","eventRecordCount","retrieveAwaitingAckCountForEvent","eventRecordsAwaitingRestoreCount","updateFirstEventRecordLocation","setEventAckCount","setLatestEventRecordID","getAuditServiceAddress","setEventRecordExpanded","setEventRecordEventRecordDetails","EventRecordDetails","setGroupID","setEventCloseShown","setEventRaiseShown","setIncidentReportShown","setIncidentReportDownloaded","downloaded","setEventDetailsShown","setPutEventOnTestShown","setEventShare","sharing","setMobileEventShares","setAdHocShareDetails","setShareWithPersons","setEventShareShown","setInvolvedPartiesShown","setUserID","setСontrollerUserID","setIsСontroller","setEventLeaveShown","setExternalUsersAllowed","setForceRestoreEventRecord","forceRestore","displayCreatedMoment","setEventSharesSet","setRequestingEventRecords","requesting","setSelectedEventRecord","setGoToLocation","setLocation","setActiveMapItems","setEventNoPermission","noPermission","setMapCircleCenter","setEventRecordShares","setMaskReasons","setGroupMaskReasons","setMaskedAlarms","setActivity","setLastActivity","activityAt","setActiveMapItemsRequired","setEventRecordResponse","recordToUpdate","er","responsePriority","setFlaggedForReview","flaggedForReview","setIsUploadingFile","uploading","setApplianceServerDetails","applianceServers","setDeviceServerDetails","ids","Set","dev","has","setApplianceServerAndDeviceServerPollingStatus","setEventCaseId","setAuditService","setEventOutcomes","eventOutcomeResponse","setAreaDetailsTabIndex","tab","siteMonitor","getMediaMatrixCameras","getMediaMatrixLayers","getMediaMatrixClips","getAreaCameras","getDeviceControllerCameras","getDeviceControllerOutputs","getDeviceControllerClips","getLayoutIndex","getLayouts","getFilter","getMediaMatrixEventId","getAwaitingCamera","getAwaitingClip","getAllMatrixContents","getMediaMatrixLastChanged","getMatrixContents","matrixContents","getMatrixAssignedCameras","assignedCameras","objectId","camera","getMatrixPushContents","matrixPushContents","getRequiresEventDetails","getMediaMatrixIsNew","getFetchingMatrix","getHighlightCellIndex","getLinkRecord","getWaitingForEvents","areaCameras","searchedCameras","searchedOutputs","getShownAuditClips","activeMapItemsFromStorage","getItem","fetchAreaCameras","pageNumber","paginated","devicesByGroup","noCamRefOnly","deviceTypeId","Camera","newDevices","totalCameraCount","totalDeviceCount","camerasMapped","deviceID","itemType","lastError","lastInteractionHealthy","cameraList","serverID","fetchAreaOutputs","Relay","deviceOutputs","Output","outputsMapped","output","controlRequest","controlReason","controlError","sendingCommand","distance","imperial","deviceTypeID","isOutput","settings","RelayType","canPulse","settingsMeta","canOnOff","devicesList","areaOutputs","updateMediaMatrixContents","saveContents","clip","fileIdentifier","FileIdentifier","uniqueFileIdentifier","UniqueFileIdentifier","cellIndex","fetchDevicesByGroup","fetchAllDevicesByGroup","allDevicesByGroup","loadDeviceById","saveMatrix","fetchMatrixForEvent","searchDevicesNear","search","deviceSearchNear","LatLong","metersToFeet","searchForOutputs","searchForCameras","reset","groupDeviceCount","getAllDeviceDetails","deviceIDs","getMatrixDeviceDetails","deviceDetails","setCameraScreenshot","saveCameraScreenshot","isNetworkAddressReachable","networkAddress","isUrlReachable","meters","Math","round","layoutIndex","layouts","mediaMatrixCameras","mediaMatrixClips","mediaMatrixLayers","mediaMatrixLastChanged","deviceControllerCameras","deviceControllerOutputs","deviceControllerClips","deviceControllerAudioDevices","mediaMatrixIsNew","fetchingMatrix","mediaMatrixFilter","mediaMatrixEventId","awaitingCamera","awaitingClip","saveLink","linkRecord","requiresEventDetails","highlightCellIndex","waitingForEvent","shownAuditClips","areaCameraCount","searchedCameraCount","searchedGroupCameraCount","setMediaMatrixEventId","setMediaMatrixCameras","cameras","setDeviceControllerOutputs","setDeviceControllerAudioDevices","setAreaCameras","setAreaOutputs","setDeviceControllerCameras","matrixIndex","clearDeviceControllerCameras","setDeviceControllerClips","clips","setLayoutIndex","width","height","maxIndex","deletedCell","setAwaitingCamera","setAwaitingClip","setMatrixContents","setRequiresEventDetails","setPushContents","newContents","idx","currentContents","setMediaMatrixIsNew","isNew","setFetchingMatrix","clearMatrixContents","highlightCell","unhighlightCell","setLinkRecord","setSaveLink","save","setCameraLink","attachedCameras","existingLinks","linkedCamera","setWaitingForEvent","waiting","setSearchedCameras","mappedDevices","areaTitle","clearSearchedCameras","setAreaCameraCount","setSearchedCameraCount","setSearchedGroupCameraCount","setSearchedOutputs","cellContents","cameraObjectID","setShownAuditClips","siteMonitorCameras","tasksService","getEventTasks","responseToModel","getTasks","getTaskLibrary","getTaskTypes","getTaskLibraryByCategoryID","tasksByCategoryID","categoryKey","TaskLibrary","taskCategoryID","getSelectedActions","TaskCategories","category","tasks","getTaskTypesByTitle","taskTypes","getEnabledActionTypes","taskTypeID","getTaskCategories","getScriptCategoryLinks","getActionPlans","getOutstandingRequiredTasks","getOutstandingRequiredTaskCount","OutstandingRequiredTasks","toggleActionListModal","getNotificationServers","getNotificationTemplates","getEditTriggerAction","rootState","TaskTypes","TaskTypeIds","MassNotification","Choices","CallContact","DownloadSitRep","CCure","ShowAudit","DynamicDataList","ControlRelay","RaiseToCaseManagement","EventOutcome","Basic","Input","YesNo","getCallContacts","getDynamicDatalist","getDynamicData","hasEventOutcomeTask","Tasks","fetchEventTasks","loadTasksForEvent","allTasks","element","taskData","Ex","assignedToEventUserID","assignedToEventUser","assignTask","assignTaskToUser","assignAllTasks","fetchActionLibrary","loadTasks","fetchTaskTypes","loadTaskTypes","fetchTaskCategories","loadTaskCategories","taskCategories","fetchActionPlans","loadActionPlans","actionPlans","b","localeCompare","createActionPlan","updateActionPlan","deleteActionPlan","scriptId","bulkAddActionsToPlan","actionIDs","actionID","addActionToPlan","ScriptID","Required","TaskID","updateActionForPlan","removeActionFromPlan","addTaskToEvent","saveEventTask","addTaskToLibrary","newTask","createTask","deleteTaskFromLibrary","taskID","deleteTask","taskId","updatedTask","completeTask","EventID","createTaskCategory","saveTaskCategory","updateTaskCategory","deleteTaskCategory","categoryID","taskCategoryId","assignUserToTaskCategory","fetchNotificationServers","fetchNotificationTemplates","fetchTemplateDetails","templateId","loadEditTriggerAction","triggeredTasks","updateActionOrderInPlan","fetchCallContacts","CallType","GroupId","callContacts","getContactsForRole","contactRoleId","fetchDynamicDatalist","fetchDynamicDataList","fetchDynamicData","updateCategoryOrderInScript","ActionPlans","ToggleActionListModal","NotificationServers","NotificationTemplates","EditTriggerAction","CallContacts","DynamicData","ScriptCategoryLinks","newAction","taskCategoryTitle","setActionPlans","setTasks","setTaskLibrary","setTaskTypes","setTaskCategories","addNewTaskToGroup","taskGroup","addNewTaskToNewGroup","setOutstandingRequiredTasks","outstandingTasks","updateTaskAssignedToEventUser","setNotificationServers","setNotificationTemplates","setEditTriggerAction","setActionOrder","newOrder","relevantTasks","libraryIndex","associatedScripts","scripts","libraryItem","oldIndex","taskToReinsert","scriptIndex","order","setUpdatedTasks","tasksToUpdate","indexInLibrary","libTask","setCategorySelected","categoryId","cat","setActionSelected","resetTasksSelected","setCallContacts","setDynamicDataList","setDynamicData","setScriptCategories","setUpdatedTaskCategories","taskCategoryToUpdate","taskCategory","libTaskCat","getSession","resourceId","sessions","updateSession","sessionGet","sessionResponse","sessionId","authSessionID","clearSessions","2","3","requestStatus","setResourceSessionId","clearResourceSessionId","setResourceStatus","isPendingInitialAppData","getSortedElevations","mapData","elevations","elevationValue","getMapLayerItemTypes","excludeTypes","Guard","mapLayerItemTypes","x","triggerDefaultView","computeDefaultView","assets","areas","loadMapDataByBounds","mapBounds","getMapDataInBounds","loadMapLayersItemTypes","getMapItemTypes","mapItemTypes","mapItemType","visible","hideByDefault","assetIndex","assetType","mapLayerItemTypeId","layers","items","defaultMapBounds","north","south","east","west","mapSelectedElevation","mapItemIcons","advancedFilters","assetTypes","asset","filterType","filterCondition","trackedAsset","relay","audio","area","regions","filterChanged","defaultViewForUser","setMapData","setDefaultMapBounds","setSelectedMapElevation","elevation","setMapLayersItemTypes","setMapLayersItemType","setAdvancedFilters","setFilterChanged","setComputeDefaultView","defaultView","setAssetComputeDefaultView","compute","setAreaComputeDefaultView","extendDefaultViewBounds","bounds","google","maps","LatLngBounds","extend","mapLayers","userManagementGetters","getUserRoles","getUserGroupById","ur","getUserGroupTitle","userGroupDictionary","getUserRoleTitle","userRoleDictionary","userRoles","loadPermissions","permissionsGet","getUserGroup","fetchUserGroupDictionary","getUserGroupDictionary","fetchUserRoleDictionary","getUserRoleDictionary","fetchPermissionsState","Permissions","UserRoles","setPermissions","setUserRoles","setUserGroupDictionary","setUserRoleDictionary","userManagement","deviceSearch","searchTermsInAnyOrder","getDevicesByTitle","deviceTitles","getDeviceTypeCounts","endpoint","getDevicesForAllGroupsByType","cancelTokenSource","selectOutputs","includeReferenceShots","token","getDeviceTypes","getDevicesForGroupTree","searchDevicesForGroupTree","deviceTypeIds","createConfig","serverConfig","getConfig","file","urlTemplate","prefValue","host","port","password","extra","input1","input2","deviceExtra","site","urlBase","origin","getConfigBase","extraValue","addDevice","newDevice","updateDevice","updatedDevice","deleteDevice","devicesApi","objectToCamelCase","obj","constructor","deviceSearchSwipeAndShow","deviceSearchAndAppendToGroupTree","deviceSearchAndAppendToGroupTreeWithQuery","deviceQuickControl","reason","getServers","totalRecords","getFilteredServersPaginated","getServersWithEnabledDeviceTypes","getServer","fetchServerConfig","server","camelizedData","relays","audios","fetchServersByGroupId","fetchServers","searchServersByGroupId","addServer","newServer","newServerForStore","updateServer","updatedServer","serverForStore","deviceTypeCounts","currentServer","deleteServer","addOrUpdateSyncSystem","syncSystem","existing","syncSystems","syncSystemId","reloadCurrentServer","serversList","setServerFromSyncId","addDevicesForServer","serverConfigResponse","serverConfigs","deviceConfiguration","newDeviceTypeCountsForCurrentServer","diffDeviceTypeCountsForCurrentServer","doors","outputs","presets","presetPayload","preset","position","presetNumber","createOrUpdateCameraPresets","deviceTypeCountsForCurrentServer","notificationTitle","currentDeviceTypeIdentifier","Audio","Door","deviceTypes","fetchDevicesForAllGroupsByType","fetchAllSyncSystems","retrieveSyncSystems","fetchSyncSystems","fetchSyncSystemCount","retrieveSyncSystemsCount","fetchDevicesByType","getDevicesByType","fetchDevicesByTypeAndAppend","fetchDevicesByTypeAndAppendNoFilter","fetchDeviceById","getServerLineProfiles","fetchServerLineProfiles","getCameraPresets","createOrUpdateCameraPreset","presetConfigPayload","existingPreset","deleteCameraPreset","removeWhere","totalServers","filteredServersList","totalSyncSystems","totalDevices","serverTypes","deviceConfigurationErrors","deviceResponseRecordsRetrievalStatus","deleteChildDeviceModalVisible","editChildDeviceModalVisible","cameraPreviewModalVisible","notificationOptions","serverLineProfiles","gettingConfig","settingConfig","serverModalOpened","serverModalStartTab","Server","setCancelTokenSource","setDoors","setGettingConfig","setServersList","setServerConfig","setSettingConfig","setTotalServers","addServersNotAlreadyInStore","servers","existingServer","setFilteredServersList","setExtraValue","setCurrentServer","setDeviceConfigErrors","setServerModalVisible","addDeviceTypeCountsToCurrentServer","addAlarmCountsToCurrentServer","alarmCounts","setDevices","setTotalDevices","setDevice","setCurrentDeviceTypeIdentifier","deviceTypeIdentifier","setServerModalStartTab","setServerTypes","setDeviceTypeCounts","setAlarmCounts","addDevicesNotAlreadyInStore","existingDevice","updateSyncSystem","setDeleteChildDeviceModalVisibility","setEditChildDeviceModalVisibility","setCameraPreviewModalVisibility","setNotificationOptions","setServerLineProfiles","setSyncSystems","setTotalSyncSystems","setDevicePresets","getSortedServerTypes","getResponsesOrFilteredResponses","filteredResponses","getAllResponsesRetrieved","allFilteredResponsesRetrieved","allResponsesRetrieved","fetchResponses","pageIndex","filterPageIndex","refreshResponses","createNewResponse","updateResponse","deleteResponse","searchResponse","responseSearch","responseGet","failedResponse","responseTableIsBusy","alarmModalOpened","alarmSetupModalLoaded","setResponses","setFilteredResponses","resetResponses","resetFilteredResponses","addNewResponses","setfailedResponse","setAlarmModalVisible","setCurrentAlarm","setPageIndex","setFilter","setFilterPageIndex","setAllResponsesRetrieved","allRetrieved","setAllFilteredResponsesRetrieved","setResponseTableIsBusy","isBusy","setAlarmSetupModalLoaded","flag","setServerId","eventAlarmTypes","eventCategories","eventDeviceTypes","DeviceTypes","serverTypeID","eventOperators","searchableEventTypes","searching","currentDateFormatted","weekAgoDateFormatted","defaultSearchFilter","from","until","loadEvents","eventSearch","loadSearchableEventTypes","searchableEventsNotSet","SearchableEventTypes","loadDeviceTypes","loadOperators","loadAvailableEventOperators","operators","loadEventCategories","loadAvailableEventCategories","categories","loadAlarmTypes","alarmTypes","loadPaginatedEvents","newSearch","paginatedEventSearch","eventSearchResult","cacheKey","totalResults","AlarmTypes","Categories","Operators","EventTags","EventRecordsWithClips","CacheKey","TotalEvents","setEvents","setSearchableEventTypes","setDeviceTypes","setCategories","setAlarmTypes","setOperators","setSearching","setEventFlagged","setEventSearchIncidentReportShown","setEventSearchIncidentReportDownloaded","removeEventFromSearchResults","indexOfEvent","setEventRecordsWithClips","appendPaginatedEvents","setCacheKey","setTotalEvents","wait","ms","getLiveDeviceId","LiveDevice","getWatchedDeviceLocation","timeOut","elapsedTime","delayMs","DeviceLocation","getUserAssetMapDisplayName","UserAssetMapItem","getEventShareQueue","visibleStates","MobileEventShareStates","Sent","Accepted","EventShareItems","ActiveEventShareItem","getCanUserEventShare","UserAssetType","shareable","getCurrentLocationRegionGroupID","Regions","size","regionArray","reverse","region","geometry","poly","containsLocation","geoCoder","loadUserPermissions","registerUserDevice","_","deviceType","extendMobileSession","fetchAuditEndpoint","addNoteForEvent","guardNote","addEventRecordForGuard","eventRecordTypeId","loadStarredDevices","getAllStarredDevices","toggleDeviceStarred","loadQuickCloseOutcomes","getQuickCloseOutcomes","outcomes","loadUserMapOnlineStatus","getCurrentUserMobileStateId","currentStateId","setUserMapOnlineStatus","online","toggleCurrentMobileUserState","loadUserAssetMapItem","getAssetMapItemForUser","mapItem","assetTypeId","getAssetTypeByID","setUserAssetStatus","assetStatus","setAssetStatus","assetId","statusNote","userAssetMapItem","loadEventShareItems","getMobileEventShareQueueForUser","newItems","formattedItems","eventItemInState","eventLocation","eventAddress","decodeLocation","itemIndex","activeItem","setActiveEventShareItem","isRightSideBarOpen","isLeftSideBarOpen","showDirections","IsWatchingLocation","AuditEndpoint","MobileFeatures","isSOSEnabled","isBreakCoverEnabled","isLostModeEnabled","isManualRaiseEnabled","isClaimedEnabled","isFileUploadEnabled","UnavailableStatuses","MobileMode","MapEnabled","StarredDevices","UserPermissions","NotificationText","ManageDataLoading","ManageAlarmQueueFilters","ManageCurrentAlarmQueueFilters","MapGoto","QuickCloseList","UserMapOnlineStatus","FocusedEventID","NavigationMode","NavigateToActiveAlarm","NavigationLocation","ChatOpen","ChatTab","Map","ViewMode","setAuditEndpoint","setDeviceLocation","deviceLocation","setIsWatchingLocation","toggleRightSideBarVisibility","toggleLeftSideBarVisibility","setShowDirections","setLiveDevice","setMobileMode","setMapEnabled","setStarredDevices","setUserPermissions","setNotificationText","notificationText","setManageDataLoading","loading","setManageFilters","setManageCurrentFilters","setMapGoto","gotoFunction","setQuickCloseList","quickCloseList","onlineStatus","setUserAssetMapItem","setUserAssetType","setEventShareItems","setNavigationMode","setNavigateToActiveAlarm","navigateTo","setNavigationLocation","setFocusedEventID","setChatOpen","setChatTab","setRegions","mobile","getViews","getUserViews","getSelectedView","getPluginTypes","getViewMode","getSelectedTileType","getSideBarExtended","getSideBarPinned","getEvent","getDataServiceLocation","getContents","viewCellId","getViewSessionId","getViewsList","getViewDetails","viewId","getSharedAdhocView","addUserView","removeUserView","getViewPlugins","saveView","view","deleteView","fetchViewUpdateTime","saveViewCellContent","shareView","userIds","shareViewWithAdhoc","email","getViewSharesForView","removeUserShare","removeAdhocUserShare","fetchViewContentUpdateTime","fetchUpdatedCellContent","toggleLockedView","getUserGroupsFromView","setUserGroupsToView","viewsApi","loadPluginTypes","plugins","loadViews","viewData","views","cells","public","isPublic","ownerUserId","loadUserViews","userViews","locked","isLocked","loadAdhocUserView","getViewProperties","viewIndex","currentView","viewDetails","dateLoaded","pages","rowSpan","columnSpan","y","pluginTypeId","pluginId","defaultContents","viewDimentions","columns","rows","viewCells","cell","viewDTO","loadViewUpdateTime","loadViewContentUpdateTime","saveCellContent","toggleLock","loadUpdatedCellContent","updatedContent","newGuid","random","pluginTypes","selectedView","viewMode","selectedTileType","sideBarExtended","sideBarPinned","latestEvent","6","lat","lng","zoom","groupsList","eventHandlers","viewSessionId","setViews","setUserViews","setPluginTypes","setViewMode","setSelectedView","setSelectedViewCells","setSelectedViewPublic","setViewDimensions","dimensions","newCells","foundCell","setSelectedViewTitle","setSelectedTileType","tileType","setSideBarExtended","extended","setSideBarPinned","pinned","setViewSessionId","setContents","deleteCell","setUpdatedCellContents","viewCellData","cellData","getAvailableReports","getReport","getCurrentReportUrl","getResultCountNumber","getReportLoadingStatus","getReportErrorStatus","getReportApiEndpoint","getReportTypes","loadAvailableReports","runReport","dynamicLinksEnabled","linkParser","outcomeNote","parsed","curr","fetchReport","reportUrl","downloadReport","myRegexp","reportType","DownloadReport","disposition","matches","filename","link","download","click","fetchReportServiceEndpoint","getReportServiceEndpoint","fetchReportTypes","loadReportTypes","heartbeatToReportServer","heartbeatToServer","heartbeatToCurrentServer","getReportUrl","grouping","selectedFilters","report","reportEndpoint","filterOptions","filterSelectedValue","filterName","paramString","param","AvailableReports","Report","RelativeHoursToReport","CurrentReportUrl","ResultCount","ReportLoadingStatus","ReportErrorStatus","ReportApiEndpoint","ReportTypes","isDateRangeRelative","setAvailableReports","reports","setReport","setRelativeHoursToReport","setCurrentReportUrl","setResultCountNumber","setReportLoadingStatus","setReportErrorStatus","setReportApiEndpoint","setReportTypes","types","setIsDateRangeRelative","isRelative","getAreaNotes","getAreaNotesCount","areaNotes","getCurrentGroupId","getCurrentGroupTitle","getIsFormShown","getAreaNoteToEdit","getIsEditing","addAreaNote","note","noteRequest","startFrom","endAt","newAreaNoteResponse","mappedResponse","editAreaNote","editWasSuccessful","success","deleteAreaNote","noteId","fetchAreaNotesForEvent","loadAreaNotesForEvent","notes","fetchAreaNotesForGroup","loadAreaNotesForGroup","startEditingNote","cancelEditingNote","areaNoteToEdit","currentGroupId","currentGroupTitle","isFormShown","isEditing","setAreaNotes","updateNote","indexToUpdate","setEditingNote","setIsFormShown","setIsEditing","setAreaNoteGroupDetails","groupTitle","getActivityLog","queryStr","addActivityLog","newLog","editActivityLog","activityLog","hideActivityLog","activityLogId","unHideActivityLog","getActivityLogOutcomes","areaId","getActivityLogEntry","emptyState","areaGetters","getAreaList","getAreaTitle","areaDictionary","defaultPollingStatus","getTenants","tenant","isUsersTenant","fetchAreaDictionary","getAreaDictionary","pollAreaMaskingCount","areaMaskingCountPollingStatus","stopPollingAreaMaskingCount","fetchAreaMaskingCount","getAreaMaskingCount","areaMaskingCount","fetchFlatListWithState","getFlatAreaList","areasWithState","defaultFlatAreaList","totalAvailableGroups","groupsWithState","AreaList","totalGroups","masked","partiallyMasked","unmasked","flatAreaList","setAreaList","setAreaDictionary","setAreaMaskingCount","setAreaMaskingCountPollingStatus","setFlatAreaList","getAllTours","Tour","getDeviceList","DeviceList","getTour","tourId","getSearchDevices","searchedDeviceList","getPredefinedTour","PredefinedTour","getPrefinedTourCurrentCamera","currentCamera","currentCameraIndex","tourInProgress","isInTour","getActiveCell","fetchAllTours","functionality","fetchDeviceList","searchDeviceList","searchText","removeTour","deleteTour","triggerActiveCell","confirmed","triggerStreamingData","setAllTours","tours","setAllDevices","unsetTour","tourIndex","tourSteps","addSearchDevices","setPredefinedTour","setPredefinedTourDurtationType","isDurationBased","durationBasedCamera","updatePredefinedTourDuration","predefiendStep","durationTimer","setPredefinedTourDurationTimer","updatePredefinedTourTimeout","tourTimeout","addPredefinedTourTimeout","setPredefinedTourCamera","updatePredefinedTourPausedState","isPaused","isPausedTour","addPredefinedTourIteration","itergation","currentIteration","addPredefinedTourCameraIndex","cameraIndex","setTriggeredActiveCell","cellTrigger","activeCellDisable","activeCellEnable","setTriggeredIsStreaming","camerasStreaming","isStreaming","setIsInTourState","clearPredefinedStreamingCameras","GenericTableGetters","getModalRow","GenericTableModalRow","rowHasChanges","setModalRow","setRowHasChanges","hasChanges","GenericTable","setManualRaiseShown","manualRaiseShown","setOnCompleteHandler","handler","onCompleteHandler","setAreaMapBounds","areaMapBounds","setAlarmMarkerPosition","alarmMarkerPosition","areaNode","clearSettings","raiseManualAlarm","autoHandle","raiseAndJoin","raiseAndJoinManualAlarm","groupArmed","responseArmed","responseAutohandle","manualRaise","loadTemplates","templates","loadMobileRaises","raises","loadIconSets","iconSets","addMobileRaiseTemplate","template","newTemplate","updateMobileRaiseTemplate","deleteMobileRaiseTemplate","getTemplateGridRows","userGroupGetter","mapper","mobileRaiseTemplates","getTemplateModelById","mobileRaiseTemplateID","raiseGetter","getMobileRaiseByRaiseId","mobileRaises","getIconSetById","iconSetID","getIconSetByRaiseId","raiseId","searchIconSets","iconData","setMobileRaiseTemplates","setMobileRaises","setIconSets","loadTemplateProjections","projections","templateProjections","currentTemplateProjectionIdx","lastUsedTemplateId","isProjectionsLoaded","caseInsensitiveComparer","aLowerCase","bLowerCase","setTemplateProjections","templateIdx","setIsProjectionsLoaded","val","previousTemplateProjection","nextTemplateProjection","getSubscriptionType","isSubscriptionActive","isLoaded","isActiveState","fetchSubscription","getSubscription","subscriptionDetailsDto","reloadSubscription","fetchBilledUserPermissions","getBilledUserPermissions","billedUserPermissions","updateSubscription","subscriptionUpdateRequest","expirationDate","updatedAt","limitedSubscription","camerasPricePerUnit","camerasLimit","mobileOfficers","mobileOfficersPricePerUnit","mobileOfficersLimit","operatorsPricePerUnit","operatorsLimit","customer","firstName","lastName","billingPortalLink","expiresAt","hasSubscription","companyName","telephone","address1","address2","city","country","zipCode","setSubscriptionDetails","setBilledUserPermissions","currentStep","steps","route","isCreditCardRequired","number","saveContactInfo","contactInfo","fetchIsCreditCardRequired","isComplete","companyInfo","address","securityInfo","passwordConfirmation","addressLine1","addressLine2","currency","customerId","description","displayName","countryOptions","setContactInfo","setSecurityInfo","setCompanyInfo","advanceCurrentStep","nextStepRoute","setRegistrationComplete","setCustomerId","setIsCreditCardRequired","signup","getExternalMapLayers","getExternalMapLayerTypes","loadExternalMapLayers","externalMapLayers","loadExternalMapLayerTypes","externalMapLayerTypes","createOrUpdateExternalMapLayer","externalMapLayer","updatedExternalMapLayer","externalMapLayerID","deleteExternalMapLayer","updateExternalMapLayerVisibility","externalMapLayerUserLink","display","displaying","updateExternalMapLayerUserLink","updateExternalMapLayerVisibilityForDelete","externalMapLayerId","setExternalMapLayers","setExternalMapLayerTypes","updateExternalMapLayer","addNewExternalMapLayer","removeExternalMapLayer","caseTypes","caseTypesForUser","fetchCaseTypes","getTemplates","casesLogin","suiteSession","fetchCaseTypesForUser","getTemplatesForUser","setCaseTypes","setCaseTypesForUser","caseManagement","formattedByTitle","modalItems","mandatory","formattedByTitleValue","formattingValue","elementForm","modalItem","csvComponent","createFormData","csvData","validModalItems","validModalByTitle","rowId","indexCell","csvValue","uniqId","isValidForm","errorsForm","formattedErrorsByRowId","errorsColumn","errorsRow","errorList","Number","headersForm","validHeaders","formattedByUnitedKey","csvUnitedKey","unionData","isOrigin","formattedFormData","unionTitle","originalCsvData","formData","requiredFields","modalItemsCsv","csvExclude","setErrors","setModalItems","setCsvData","setOriginalCsvData","resetErrorsForm","setErrorsForm","deleteErrorById","isExist","updateCsvValue","localItem","localData","validateCells","array","existErrors","validationCell","csvValidation","validateOption","currentElement","validateResult","errorData","removeRow","currentCsvData","addNewRowCsv","firstElement","emptyElement","newCsvData","setModalItemsCsv","setDataCsv","setValue","validateAll","arr","newArr","validateCell","csvFormHandler","getMaskedAlarmCount","getUnmaskedAlarmCount","getAreaMaskingMode","isAreaMaskingMode","getIsUpdatingArea","isUpdatingArea","responsesByArea","groupResponses","setMaxAlarmsToShow","maxAlarmsToShow","setGroupId","setAreaMaskingMode","areaMaskingMode","setIsUpdatingArea","alarmMasking","startPolling","fetchOverview","getTenantOverview","tenantOverview","stopPolling","areaCount","groupMaskingOverview","maskedCount","partialMaskCount","unmaskedCount","isSet","setTenantOverview","setPollingStatus","getTenantSize","userContext","messages","numberOfUnread","twoWayMessages","twoWayNumberOfUnread","addMessages","removeMessages","addTwoWayMessages","setNumberOfUnread","setTwoWayNumberOfUnread","resetTwoWayState","loadMessages","afterId","getLastMessageId","newMessageCount","loadTwoWayMessages","chatUserId","getTwoWayLastMessageId","currentMessageIds","getMessages","OperatorMessage","GuardMessage","messageType","createdAtUtc","author","hasFiles","sm","AttachedFile","getTwoWayMessages","ChatMobileUserMessage","ChatOperatorMessage","guardChat","loadOnlineAssets","getMapLayerAssets","assetAndUsers","manuallyChangedAssets","ignoreAsset","mapLayerItem","checksRemaining","initAssetPoll","startAssetPoll","timer","timeNow","now","lastPollCall","activeSubscribers","addOrUpdateActiveSubscriber","subscriberExpiry","endTimer","loadAssetTypes","getCachedAssetTypes","assetTypesData","ut","updateAssetLocation","onlineAssets","cloneAsset","hideOnMap","updateAssetMapLayerItem","loadSituationalAwarenessEventQueue","getSituationalAwarenessQueue","situationalEventQueueData","viewingAssetId","situationalAwarenessEventQueue","selectedSituationalAwarenessEvent","setOnlineAssets","setAssetTypes","addOrUpdateManuallyChangedAsset","removeManuallyChangedAsset","updateAsset","subscriber","expiry","setTimer","setLastPollCall","pollCallTime","setViewingAssetId","cleanUpSubscribers","setSituationalAwarenessEventQueue","setSelectedSituationalAwarenessEvent","situationalAwarenessEvent","fieldOps","getAllFeatures","getHasCurrentArea","currentAreas","getResponseAlarmTypes","getAreaActionPlans","actionPlan","getAreaResponseAlarmTypes","responseAlarmTypes","responseAlarmType","loadAllFeatures","tenantId","toggleFeatures","fetchJsonConfig","loadJsonConfig","loadResponseAlarmTypes","groupIdSelected","groupsToRoot","groupIdSelectedChildren","subgroups","getIsFeaturesConfigControlledByFile","allFeatures","setAllFeatures","setResponseAlarmTypes","setCurrentAreas","setup","fetchSupportActionTypes","getSupportedActionTypes","responseActions","supportedActionTypes","setSupportedActionTypes","clearState","activePaginatedSearchCancelTokenSource","defaultPaginatedSearchParams","paginatedSearchExtendedMixins","methods","fetchAllResults","api","method","pageSizeLimit","results","generateNewPaginatedSearchQueryParamsCustomField","retrieveCustomFields","tableType","customFieldTableType","Area","Contact","areaCustomFields","contactCustomFields","alarmCustomFields","totalCustomFields","setAreaCustomFields","fields","setContactCustomFields","setAlarmCustomFields","customFields","getHealthStatus","getStatusFilter","selectedFilter","healthy","unhealthy","SelectedValueType","setHealthStatus","healthStatus","setStatusFilter","retrieveHealthStatuses","getSystemHealthStatus","healthStatuses","systemHealth","triggerExists","section","allowAnd","allowOr","readOnly","addRule","logicSteps","allowSubRules","rootText","stepUpdated","ruleValidationUpdated","stepDeleted","_l","rule","staticStyle","ruleValids","allowedLogic","subRules","updateValue","$forceUpdate","logicStepsUpdated","uuid","operator","condition","typeId","step","ruleId","ruleValid","RulesLogicBuilder","RulesLogicStep","getScopeCriteria","selectedCriteriaUpdated","selectedValue","scopeDetails","alarmTypeUpdated","validationChanged","alarmText","deviceTypeComponent","_b","serverTypeId","deviceTypeUpdated","props","serverOptions","serverIdUpdated","serverTypeEventOptions","serverTypeEventUpdated","placeholderText","numberInputFormatter","inputNumber","inputValidation","checkValueType","valueUpdate","allowNulls","minValueValid","maxValueValid","valueUpdated","validateInput","inputValid","RulesNumberInput","groupIdInput","alarmsForGroupId","selectedOptions","allowNull","valueSelected","RuleStore","setupOptionsFromParentCondition","ruleDropdownOption","retrieveOptionsForRuleDropdownOptions","optionType","parentCondition","validationUpdated","onOptionsChanged","deep","RuleGenericDropdown","configureExistingSelection","label","retrieveRuleAlarmsForGroupId","responseValueUpdated","RulesAlarmDropdown","resetScopeDetails","alarmTypeSelected","deviceTypeSelected","setDeviceComponent","retrieveComponentForTypeId","onRuleScopeChanged","serversForServerType","serverTypeEventsForServerType","retrieveRuleServersForServerType","retrieveRuleServerTypeEventsForServerType","onServersChanged","onServerTypeEvents","onSelectedValueChanged","deviceTypeComponentValid","onScopeDetailsChanged","serverTypeEvents","RulesScope","RulesText","isRegexValid","input","RegExp","getTriggerType","getActionType","getOperators","getComponentLinks","componentLinks","getTitleComponentConfig","fieldName","getActionBuilderConfig","getScopeBuilderConfig","getTriggerBuilderConfig","getGrouping","componentFor","valueComponents","valueComponentLinks","MAX_VALUE","actionsPlans","actionPlanId","actionPlanRegexFeatureEnabled","vc","validation","retrieveRules","selectorComponentLinks","possibleComponentLinks","valueComponentLinksForSection","vs","valueToComponent","componentSelector","ts","saveRule","triggers","ruleTriggers","ruleType","convertedTriggers","ruleActions","convertedActions","convertedRule","serverTypeEventNum","createOrUpdateRule","configureRuleForApi","configuredRuleTriggers","currentTrigger","triggerTypeId","subTriggers","ruleTrigger","configuredRuleActions","ruleAction","actionTypeId","configureRuleForUI","configureTriggerRuleForUI","configuredRuleStep","trigger","ruleStep","configureActionRuleForUI","configuredRuleSetup","currentAction","deleteRule","DeleteRule","ruleAlarms","retrieveRuleServerTypes","ruleServerTypes","ruleServers","ruleServerTypeEvents","retrieveRuleActionPlans","ruleActionPlans","rules","editingRule","setRules","defaultData","updateEditingRule","removeRule","setRuleAlarmsForGroupId","dropdownOptions","alarmItem","setRuleServerTypes","setRuleServersForServerType","setRuleServerTypeEventsForServerType","setRuleActionPlans","rulesEngine","setDistanceConfigurations","defaultdata","distanceConfigurations","setMaxRadius","maxRadius","retrieveDistanceConfigurations","retrieveMaxRadius","retrieveDistanceConfigurationMaxRadius","distanceConfiguration","scheduleStart","schedules","isScheduleTypeSelected","selectedScheduleTypes","filterSchedules","filterString","loadScheduleTypes","getAllScheduleTypes","createOrUpdateSchedule","setIsLoading","setSchedules","setScheduleTypes","isCreateModalVisible","isReloadRequired","setTempSchedule","setEndTimeForTempSchedule","endTime","setStartTimeForTempSchedule","startTime","updateSearchString","searchString","addSelectedScheduleType","selectedScheduleType","removeSelectedScheduleType","setEnabledScheduleFilter","enabledScheduleFilter","setAreaTimeZoneId","resetSelectedGroup","isInsights","fetchDisableAutomaticLoad","disableAutomaticLoad","setDisplayResponseId","apState","displayResponseId","setAlarmPointManagerOpen","alarmPointManagerOpen","setSelectedResponse","selectedResponse","setSelectedArea","armSelectedArea","armed","toggleArmAt","disarmReasonID","setDisableAutomaticLoad","alarmPoints","fetchAreaEventHistory","areaEventHistory","isPopoutModeEnabled","storedTimeZoneId","setIsPopoutModeEnabled","setAreaEventHistory","setTimeZone","setTotalRecords","debug","use","Store","mobileRaise","paths","strict","SiteMonitorState","UserContext","FieldOpsStore","expirationDateOffset","showActions","subscriberTimer","enhancedMapMode","mapScale","onCreate","icon","originalEventId","actionPlansCollapseIfEmpty","eventTasks","startPollingUserContext","mapEnabled","subscribeToPoll","$el","removeEventListener","destroyed","$store","resetRegion","focusActions","$refs","taskContainer","focus","scaleMapComponent","scaleUp","$route","siteMonitorMap","hideMaps","isHideMapsEnabled","SiteMonitorMixin","deleteNote","deletingNote","hasPermissionsToEditNotes","startDeleteAreaNote","onModalOpen","scopedSlots","_u","fn","proxy","slotProps","displayDateFromString","areaNoteIdToDelete","areaNote","convertDateToLocalDateTimeString","editNote","entry","AreaNotes","requiresAcknowledgement","AreaNotesTableItem","AreaNotesModule","defaultLocale","sortOrder","sortOrderReversed","searchable","dataType","isTermLabel","sortable","isSortedByDefault","useCustomCell","isFetchingNotes","finally","utcOffset","dateTimeFormat","fromJSDate","toFormat","AreaNotesTable","isShown","SiteMonitor","AreaNotesModal","AreaNotesForm","renderDistance","isImperial","isNaN","toFixed","truncateString","overflowText","truncatedString","parseTaskText","parsedData","choiceDescription","choiceOptions","selectedChoice","role","ref","tableClass","onDelete","onAddNew","onSave","term","modalTitle","dataList","deletePermissions","saveActionMessages","saveActionErrors","isSaveConfirmationEnabled","closeOnSave","idColumn","refreshAllowed","clearOnClose","modalClosed","_t","tableBodyClass","tableSearch","openModel","totalAvailableRows","showPaginationControls","removeNonDigitsFromString","debounceUpdateSearchFilter","resultsPerPageUpdated","scrollbarClass","onScrollBottom","visibleColumns","column","sortByColumn","sortKey","sortDirection","updateSorting","calculateSortingIcon","isManagedExternally","showFilter","getRenderData","rowIndex","filterByColumn","formatList","copyRowValueToClipboard","toolTipIdToShow","useModal","useSlotActions","checkPermissions","hideDelete","onDeleteRow","resultsPerPage","selectedPage","isRenderUpdating","closeDeleteModal","isDeleteConfirmDialogShown","isSafeDeleteEnabled","rowToDelete","getKeyColumn","cancelDelete","deleteActionMessageResult","deleteMessage","deleteMessageAlternativeText","renderData","defaultRenderCount","renderCount","resetPagination","resetPaginationOnRowCountChange","updateSearchFilter","updateRenderData","defaultSortColumn","SortDirectionAscending","renderList","filteredColumns","disable","SortDirectionDescending","searchFilterEventPayload","userHasPermission","canEditProperty","editPermissions","searchTable","addNew","returnValue","GenericUpdateModal","showUpdateDialog","previousSearchString","isAsyncSearching","hidden","columnEl","dataEl","hideAdd","deleteActionMessages","keyColumn","idToCopy","getElementById","range","createRange","selectNodeContents","getSelection","removeAllRanges","addRange","execCommand","hideFilterOption","digitFind","updateNewEntry","scrollbar","newAreaNote","maxNoteLength","isAreaNoteValid","isEndTimeOptional","newAreaNoteStartTime","clearStartDate","getDisabledEndDates","newAreaNoteEndTime","clearEndDate","onCancel","isSaving","defaultAreaNote","noteType","currentUserName","defaultTime","getTimeFromDate","getAreaNoteToEditUpdated","newVal","oldVal","isNewAreaNoteValid","wasSuccess","resetForm","$notify","newNote","removeUTCTimeOffset","hoursAndMinutes","isoFormatWithoutTimeZoneOffset","hour","minute","to","onNewAreaNoteChange","onNewAreaNoteStartFromChange","onNewAreaNoteEndAtChange","onNewNoteStartTimeChange","onNewNoteEndTimeChange","closeSharing","eventShareFind","addImmixShare","adhocName","addAdhocShare","adhocEmail","assetID","isUser","mobileAssetIDs","mobileShare","lastActive","fromNow","passControl","removeEventShare","adhocShareDetails","getMobileEventShareForUser","getMobileShareBackground","stateClass","assetShare","circleStateClass","assetTitle","stateText","lastUpdated","nested","EventSharingAsset","SessionStore","fieldOpsLicenced","loadAssets","getShareableAssets","ast","sharedWith","mobileEventShares","mobileAssetIDsCopy","shareEventWithAsset","eventid","assetSelect","clearSelection","iconColor","onEventCloseShownChanged","sharingModal","DeviceServiceSession","sharePromises","PassControl","routingGroupID","RoutingGroupID","shareResults","anyNotification","shareResult","notificationServerID","sendNotifications","FullName","Email","deviceService","getDeviceServiceAddress","devicesEndpoint","Key","Value","sharedBy","TemplateName","ServerID","Values","recipient","Fullname","ExternalID","externalID","Telephone","Content","Subject","subject","Parameters","sendNotification","EventSharing","multiselect","VuePerfectScrollbar","NotificationDocumentTypeId","arrayToQueryString","checkUserHasPermissionToGroup","permissionsAsQueryString","getKeyContactsByGroup","getContactRolesByGroup","userApi","UserApi","headerEmailData","fromEmail","toEmails","formattedDate","emailAttachments","isShowTextPlain","hasHtmlDataRendered","emailId","textPlain","urlHtmlData","onIframeLoad","triggerDownload","fromTo","EmailFromTo","image","attach","showAttachment","setElementIframe","setShowAttachment","showAttachmentsHTML","pdfs","videos","isImageListExist","isPdfExist","isVideoExist","attachmentsHTML","elementIframe","scrollHeight","contentWindow","bottomIndent","maxHeight","minHeight","immediate","EmailAttachments","emailData","htmlData","emailFrom","emailDate","iframe","iframeDocument","contentDocument","innerHTML","EmailHolder","IntervalType","PublicHolidaySetting","IntervalTypeOptions","Week","Month","Year","DayOfWeek","PublicHolidaySettingOptions","RunOnPublicHolidays","SkipPublicHolidays","AlwaysRun","CalendarRangeDay","CalendarRangeWeek","CalendarRangeMonth","CalendarRangeTypeOptions","areaDate","areaTime","timeStringArea","timeoutInterval","timeZoneOptions","hour12","second","dateOptions","setAreaDateTime","toLocaleDateString","AreaDateTimeDisplay","SessionResource","ResourceType","dynamicDataTypes","selectedTaskDataType","dynamicData","selectedTaskOutcome","dataTypeId","loadDependencys","DataTypeId","EventTaskId","eventTaskId","onselectedTaskData","onCompleteTask","outcome","refInFor","children","placeholder","titlePath","controls","optionTree","outcomeSelection","childrenPath","selectionControls","immediateFocus","focusOn","blur","outcomeSelect","querySelector","NestedSelect","viewAudit","SMCameras","Session","clipsFailed","clipsFailedStatus","noClipsAvailable","gettingClips","getClips","AuditServiceSession","getMediaList","rawClips","filterClips","checkIfAllClipsLoaded","loadClips","mediaList","DeviceID","DeviceTitle","StartTime","matrixClips","cellCount","AuditTask","containerOrientation","customFieldValueAndSettings","cf","setting","customField","allowHorizontalClass","customFieldStyling","maxCharacters","_f","isType","checkboxValue","getConvertedCustomFieldDateValue","convertCustomFieldDateValue","beforeMount","customFieldTypeId","isCustomFieldTypeTextOrTextArea","customFieldType","CustomDefinedField","IconUpload","CustomFieldDatePicker","CustomFields","unorderedFields","retrieveCustomFieldSettingForValue","orderedFields","field","customFieldValue","customFieldSettings","allowHorizontal","maxWidth","CustomDefinedFieldsDisplay","closeDetails","leaveModal","siteTitle","setTimeZoneId","onEventDetailsShownChanged","AreaDetails","authObj","tempQrURL","copySecretToClipboard","tempSecret","localAuthCode","submitSecret","preventDefault","mfaError","secret","generateSecret","issuer","toDataURL","otpauth_url","data_url","base32","otpURL","mfaRequestBody","pass","authCode","setMfa","textArea","top","left","mfaContainer","select","MFA","right","filteredItems","canCreateOption","onAddNewItem","lowerSearch","SearchDropDown","eventCategoriesMap","dataLoaded","eventCategoryInitialValueFromTaskData","outcomeChanged","outcomePathChanged","isLeafNode","maxOutcomeNote","catNote","down","computedTaskText","outcomeSelectKey","isEventOnAudit","completeDisabled","disabledText","initialEventOutcomeId","initialEventOutcomeNote","eventOutcomeId","eventOutcomePath","pendingComplete","ackAllAlarms","forceResAllAlarms","skipReqActions","skipCloseDialog","setCatNote","eventCloseEnabled","outcomesFlatList","eventOutcomeID","parentId","parentID","eventOutcomePresetsEnabled","initialValue","eventNoteRequired","outstandingTaskCount","gs","eventCloseErrors","isOutcomeNoteValid","awaitingAckCount","awaitingRestoreCount","formatCompleteTask","validateTask","emitTaskCompletion","emitCloseEvent","taskUpdated","onTaskReOpened","taskDataUpdated","forceRestoreAllAlarms","endEvent","eventOutcomeToCloseEvent","clearGuards","$router","EventOutcomeTask","EventOutcomeSelector","eventOutcomeResult","highlightNote","otherUserCount","sharedOperators","otherOperator","isParkingAnEventOptional","validateHours","parkHours","validateMinutes","parkMinutes","parkNote","isParkEventChecked","canLeave","ok","parkSeconds","parkNoteRequired","defaultPark","onEventRaiseShownChanged","isAutoFillEnabled","parkNotes","parkedNote","getDefaultParkToHoursAndMinutes","seconds","parkedByMap","floor","EventLeave","incidentReport","EventSearch","clicked","onEventSearchIncidentReportDownloadedChanged","onIncidentReportDownloadedChanged","SitRepTask","hideOverlay","ErrorWarning","NotificationTemplateTypeId","isModalShown","isMaskingFilterEnabled","groupFilter","groupBadgeSelected","selectedAreaNode","requiredPermissions","groupSelected","isMaskAreaEnabled","isChangeMaskActionEnabled","maskOptions","selectedMaskAction","dateAsLocalTime","dateAsUtc","isMaskButtonDisabled","areaMaskMethod","isAreaMaskingReasonsEnabled","maskDurationLimit","areaMaskDuration","isMaskingAdvancedEnabled","selectedAreaAlarms","unmaskAllAlarmsInArea","maskAllAlarmsInArea","maskAllDuration","unmaskAdvancedAlarms","selectedResponses","openAdvancedMaskModal","alarmFilterInput","filterBadgesLabel","selectedAlarmFilter","totalArmed","totalUnarmed","isUpdatingAlarmsInModal","recordsPageSizeMax","onRecordsPerPageClick","recordsPageSizeUpdated","getAlarmsToShow","visibleFields","calculateTableHeight","onSortChange","isAlarmSelected","toggleAlarmMasking","paginatedRowsCount","recordsPageSize","onPageClick","recordsPage","isMaskDurationConfirmationVisible","confirmMasking","cancelMasking","maxMaskInputFormatter","maxMaskDuration","localValue","getWarningTitle","maxMaskDurationLimit","Constants","MAX_MASKING_DURATION","onLocalValueChanged","maxMaskDurationWithNoExtendedPermissions","AlarmMaskDurationInput","Eventqueue","Areas","AlarmMasking","isLoadingAreaAlarms","isMaskingAlarm","isLoadingAreas","responsesWithInvalidMasking","maxMaskingDurationLimit","isSearchTermResponseId","performSearch","onVModelUpdated","clearFilter","forceUpdateAreaAlarms","updateSelectedAreaAlarms","updateSelectedAreaState","toggleAreaMasking","maskArea","unmaskArea","alarmMaskDurationInput","maskDurationInput","maxAlarmMaskDuration","alarmMaskDuration","disarmNote","maskType","MaskType","maskIsAutoHandle","unmaskAlarm","totalAlarmMaskCount","indexOfAlarmToUpdate","isLastAlarmToBeUnmasked","isLastAlarmToBeMasked","isFirstAlarmToBeUnmasked","isFirstAlarmToBeMasked","updateResponses","applyMaskingToAllAlarmsInArea","filteredAreaAlarms","clientHeight","local","setAlarmFilter","focusOnAlarmSearch","alarmFilterSearch","isAlarmMaskingEnabled","confirmAreaMaskingChange","newAreaMaskingCount","oldAreaMaskingCount","getLatestSelectedNode","getGroupTreeNode","isArmed","isMasked","onSelectedAlarmFilterChanged","keySort","alarmMaskingTableColumns","isResponseId","queryParams","filterMaskingType","getFilterMaskingType","cancellableQuery","generateNewPaginatedSearchRequest","getPagedResponsesByArea","Armed","Unarmed","All","isDisableMaskingEnabled","openAdvancedMaskModalAreaMode","unMaskArea","preSelectedAlarmChanged","preSelectedAlarmFilter","selectedAreaChanged","newArea","onGroupIdChanged","onAreaMaskDurationChanged","maxAreaMaskDuration","onModalShownChanged","onIsMaskingAlarmChanged","onIsUpdatingAreaChanged","onAreaMaskingCountChanged","MaskingModal","MaskingModalGroupBadge","MaskingModalFilteredAreas","PaginatedSearch","editingConfig","storedConfig","getDefaultConfig","showAllowDelete","AllowDelete","UpdateGroupId","UpdateSettingsMeta","MaskNewAlarmPoints","assignValue","pushConfigUpdate","editConfigWatch","GroupSyncConfig","baseURL","GeoCodeLookup","tryConvertStringToGeoCodeLocation","latLongParts","floatRegex","isLatLongTwoFloats","isLatLongComplete","isLatAndLngNotSet","isLatValueValid","isLngValueValid","isLatLongValid","mapKey","viewport","addressGeometry","northeast","southwest","parseILatLngToLocation","parseGoogleLatLngToLocation","locationJson","rad","PI","metersToKm","metersToMiles","getDistance","p1","p2","R","dLat","dLong","sin","cos","atan2","sqrt","darkMapStyle","elementType","stylers","color","visibility","featureType","saturation","lightMapStyle","satelliteMapStyle","styles","shortcut","legend","routingGroup","colourCode","displayModal","HTMLElement","ShortcutHelp","dateTimeDstOffsetStart","dateTimeDstOffsetEnd","getPublicHolidays","getPublicHolidaysBetweenDates","createOrUpdatePublicHoliday","publicHolidayDto","deletePublicHoliday","filteringSearch","filteringModel","enabledSchedules","getPaginatedSchedules","scheduleRequest","scheduleTaskId","schedulesApi","SchedulesApi","webpackContext","req","webpackContextResolve","SideBarState","tryCenterOnMarker","splitLines","line","stopPropagation","alertCountBadge","setAlertQueueSize","FieldOps","selectedItem","settingAssetLocation","isSituationalAwarenessEnabled","onMapClick","onItemSelected","wide","currentControlTabIndex","assetItems","ai","isTrackedAsset","setAction","currentActionTabIndex","canHaveStatusSet","findAndSetAsset","editAsset","cursor_disabled","assetStatusDisabled","isMobileUserSelected","unackedMessageCount","messagesListData","getLoadMessagesAction","onScrollToLastMessage","sendMessage","onMoveAssetToLatLong","isClosed","isWide","allowWide","isNarrow","toggleMovement","startState","grow","Closed","Wide","Narrow","Sidebar","selectedMoveAsset","filteredAssets","attributes","_g","clearSelected","updateLocation","gpsService","showSelected","showErrorNotification","moveAssetToLatLng","locationBounds","updateAreaLatLong","assetCopy","isLatAndLngSet","AssetMove","sliderIcon","fieldOpsMode","toggleAlertOrder","orderByDescending","onScroll","alert","situationalAwarenessEventQueueId","goToLocationForAlert","hasCanDismissPermission","hasCanPromotePermission","showDismissAlertModal","isInEventQueue","showPromoteAlertModal","alertConfirmation","actionType","requireNoteValidation","handleAlert","selectedAlert","clearAlertConfirmation","showConfirmation","openOriginalEmail","Emails","hasRawData","gettingRawDataStatus","checkForRawDataTimeout","timeoutDurationSeconds","maxRetryAttempts","retryAttempts","checkForRawData","retryCheckForData","MediaType","EmailRawDataControl","resetEventRecordId","downloadEmail","eventRecordIdAsString","getEventRecordIdToShowEmailFor","$bvModal","getAllFiles","fileName","EmailRawDataModal","queueCount","queueCountIncrement","situationalEventQueueTimeout","triggerEventQueueRefresh","isRequireNoteEnabled","timeoutFunction","updateSituationalAwarenessEventQueue","situationalAwarenessEventQueueEntry","promoteSituationalAwarenessQueueEntry","dismissSituationalAwarenessQueueEntry","alertQueue","scrollTop","alertCount","onAlertCountChange","alertsShown","SituationalAwarenessAlertsControl","DesktopLeftSidebar","stringToLatLng","coords","parseFloat","GuardChat","MapLayers","requestPending","editedAssetsId","refreshEditAsset","loadChat","scrollChatToLastMessage","isSuiteEnabled","logoutUser","FIELD_OPS_NO_LICENCE_ERROR","initaliseAssetPolling","removeZendeskIcon","zenDesk","classList","contains","viewedAssetChange","selectedAsset","u","mobileMap","centerOnPosition","setViewingAsset","assetWatcher","newAssets","oldAssets","getStatusNotificationChanges","History","auditHistory","reloadHistory","statusHistory","logoutPayload","preAssets","postAssets","changedAssets","beforeAsset","Status","isAsset","updatedAsset","notifyBody","getStatusChangeMessage","before","after","previousAssetState","newAssetState","defaultStatus","clearedStatus","defaultNote","clearedNote","updateMapItemLocation","clickLocation","assetListComp","isSettingLocation","centerOnAssetItem","actionRequest","SetLocation","CancelSetLocation","HideLocation","ShowLocation","selectedItemChange","actionTabIndexChange","Chat","messagesList","scrollToLastMessage","isMobileStatusUpdateEnabled","isChatShouldBeMounted","onMessagesVisibilityChange","restoreScrolling","storeScrolling","updated","closeHandler","centerOnEventQueueItem","isFeatureEnabled","alerts","NavHeader","MobileAssetList","MobileAssetHistory","AssetStatusInput","MessagesList","EnhancedSingleMap","EqStatusInfoBar","MapDataSources","extractFieldId","removeExtraSymbolsFromHtmlType","getMatchAllArray","regexp","matchAll","extractIdFromSrc","srcStrChar","srcStr","beginIndexId","substr","indexEnd","beginKeySrc","endKeySrc","getTagIndexEnd","beginDefaultIndex","beginImgString","endIndexSubstring","tagLengthDefault","endDefaultIndex","parseAllOpenTags","localHtml","regExp","lastIndexTemplate","extractImgFromHtml","images","extractLinksFromHtml","isUint8Array","Uint8Array","getImageExtension","contentType","ext","isOctetStream","isTextHtml","isTextPlain","isNessaryContentExist","isPdf","isVideo","convertToFile","getObjectUrl","isImage","isOctetStreamImage","isMultipartAlternative","getArrayLinksFromAttachments","attachments","getContentType","setImgSrc","imagesById","setLinksToHtml","newLinks","setAttributeBlankToLinks","setNewTagsToHtml","tags","beginStr","endStr","extractedLinks","setImagesToHTML","extractedImage","imagesWithNewLink","optionImage","parseMultiPartByType","part","filteredAttachments","isEmpty","getAttachmentsLinks","localFilteredAttachments","setContentTypeImgOctetType","getFormattedEmlData","cleanedEmailData","emlformat","read","processFormattedEmlData","invalidHtmlString","extension","isOctetStreamExtensionExist","btnDisabled","onTaskChanged","verdict","YesNoTask","SVButton","menuOpened","groupIndex","routeName","iconClass","iconMask","linkText","toCases","isGettingStartedShown","isSupportModalShown","webVersion","checkForSuiteUser","showAccountDetails","userInformation","BrowserTimeZone","userGroupMembershipTitles","isEditPersonalEnabled","resetUser","saveUserDetails","showMfaAddForm","showMfaClearForm","showPasswordForm","passwordRequest","saveIsEnabled","changePassword","closePasswordForm","showMfaForm","isSuiteUser","userMFASet","mfaClearSubmit","mfaAddSubmit","clearAuthCode","clearSecret","clearMfa","ClearMFA","getPasswordStrength","OldPassword","NewPassword","ConfirmPassword","successful","newPasswordValid","userInformationTemplate","mobileStatusID","isContact","permissionGroupIds","comment","registrationStatus","onNewPasswordChanged","getUserById","currentUserId","updatePersonalInfo","AccountDetails","verifyChange","redirectMFAUrl","mfaRedirectUrl","MyAccount","showTenantSelect","isUnitTest","originalTenant","currentTenantId","availableTenants","resetTenant","isSettingTenant","tenantsList","currentUser","getAvailableTenants","availableTenantsResponse","tenants","setTenant","SwitchTenant","menuOpen","NavMenuIcon","onModalChange","onValueChanged","GettingStartedModal","supportEngagements","tableFields","formatDate","startsFrom","engagementDurationOptions","selectedEngagementOption","customStartDate","customExpiryDate","addSupportEngagement","deleteSupportEngagement","supportEngagementToDelete","isConfirmDeleteVisible","tableHeight","updateTableHeight","updateSupportEngagements","onSelectedSupportEngagementUpdated","currentDate","setHours","supportEngagementRequest","convertDateStringToUtcDate","supportEngagement","supportEngagementsResponse","grantedByUser","dateString","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","Support","Datetime","CaseManagement","Subscription","routes","getRouteTarget","menuGroup","menuOrder","isSubscriptionLoaded","isFieldOpsLicensed","isResponseLicensed","fieldOpsAndResponseLicencedRoutes","fieldOpsOnlyRoutes","fieldOpsLicencedRoutes","openInNewTabRoutes","isCasesLicenced","encodeURIComponent","NavMenu","ZendeskHelp","iconOnly","toggleHelp","zE","choicesData","$each","choice","choiceListTypes","Listbox","loadFromTask","onValidationChange","onChoicesSettingsChange","onInput","ChoicesTaskSetup","disabledDates","newDataFilter","eventHistoryTypeOptions","eventTypeId","responsesForArea","isFilterDataValid","fetchHistoryWithNewData","liveDataDivClass","toggleLiveData","liveDataStatus","liveDataButtonClass","enablePopoutMode","validationErrorMessage","mapAreaEventHistoryData","poppedOut","updateData","showEventReview","userInitials","AreaEventHistoryStore","isDestroyed","fallbackUtcTimezoneId","fromDate","createFromDate","createToDate","eventHistoryTypeIds","includeAutohandled","internalFilter","eventTypeName","showLiveData","liveDataTimeoutId","setDate","getDate","getTimeZoneName","fetchTimeZone","getAreaEventHistory","currentMilliseconds","updateRowsWithNewTimeZone","updateFilterGroupId","paginationParams","mappedEvents","history","closed","nameToInitials","createdAreaTime","groupCreated","toLocaleString","createdLocalTime","closedAreaTime","groupClosed","closedLocalTime","pollLiveData","validateFilterDates","sanitiseDatePickerValues","absoluteDifference","differenceInDays","paginatedSearchQueryParams","words","word","charAt","AreaEventHistory","axiosInstance","withCredentials","Accept","axiosJsonInstance","axiosJsonDirectInstance","axiosNoContentTypeInstance","prop","setApiBaseUrl","_originalBaseUrl","startHeartbeatToOriginalServer","resetBackToOriginalBaseUrl","stopHeartbeatToOriginalServer","heartbeatIntervalHolder","getCurrentSupportEngagementExpiry","supportEngagementApi","SupportEngagementApi","MESSAGES_URL","TWO_WAY_MESSAGES_URL","TWO_WAY_UNACKED_URL","TWO_WAY_ACKNOWLEDGE_URL","buildUrl","buildTwoWayUrl","cmd","sendTwoWayMessage","getTwoWayUnackedCount","acknowledgeTwoWayOwn","acknowledgeTwoWayForUser","MapCustomFieldToModalItem","newModalItem","Text","TextArea","Hyperlink","MapAdditionalCustomFieldTypesToModalItem","fieldId","defaultValue","inputClass","Icon","customFieldId","mapIconForType","mapItemsHeaderIcon","showMapItems","toggleAdvancedFilter","isAlarmType","alarmFilterOptions","toggleRegionFilter","showRegions","assetHeaderIcon","showUsersAndAssets","checkAssetAvailable","toggleAssetTypeFilter","assetIcon","Asset","any","activeAlarm","inactiveAlarm","itemList","isAreaLocationEnabled","allAssetTypes","assetTypeArray","at","setupAssetList","resetAdvancedFilters","shownOnMap","advancedAlarmFilter","currentVisibility","advanced","currentFilters","TrackedAsset","assetMapItem","assetTypeExists","isAreaRegionsEnabled","canBeUser","mapIcons","assetTypeToggled","mapItemTypeId","isTrackedAssetsEnabled","AdvancedMapFilters","showExternalLayers","layer","toggleLayerDisplay","ExternalMapLayerStore","isExternalMapLayersEnabled","mapLayer","ExternalMapLayerSelector","DeviceType","isSamlAuthEnabled","authenticationState","AuthenticationStatus","isAudioAlertActive","ConfigureMfa","loggingIn","mfaSet","next","SAML","toPasswordStep","back","Password","LoginSteps","isLoadedInApp","mobileDevice","isiOS","isAndroid","iOS","notificationSettings","CCiOS","android","CCAndroid","MobileMixin","redirectPath","IsMFAEnabled","beforeCreate","removeQueryParam","decodeURI","suiteLogin","isOnPrem","redirectIfRequiresConfiguration","playSessionExpiryAudioAlertIfEnabled","sessionExpiredValue","playAudioAlertValue","audioAlertInterval","play","suiteSamlGenerate","generateSaml","suiteEndpoint","authorizationEndpoint","checkIfRedirect","redirect","loginUser","DisabledUser","LockedOut","PasswordExpired","redirectRoute","fetchOverviewUserContext","stack","SetRedirectCookie","expireTime","setTime","cookie","toUTCString","checkIfAccountAdminWithSaml","adminWithSamlResult","isMfaEnabled","isAccountAdminWithSaml","checkIfAccountSuite","skipAccountAdminCheck","loginProviderResult","isExternal","isMFAEnabled","decodedHash","decodeURIComponent","Login","beforeCreated","isSSOLoginEnabled","storedRedirectUrl","GetRedirectCookie","convertedPath","LoginSaml","isViewLoginLink","errorResult","TempLogin","isToggleMapEnabled","allAlarmsToggled","endSelectedAlarms","alarmQueueType","EventQueue","createPeekRecord","joinPeekedEvent","hidePeekModal","armedSitesCount","disarmedSitesCount","init","update","destroy","SiteStatus","isAreaNotesEnabled","areaNotesFinder","isAreaNotesMousedOver","isSystemViewHealthEnabled","alarmPointsOpen","toggleBulkHandle","manualActionOpen","virtualOperatorControlPanelOpen","processTopAlarm","currentFilterID","manualRaiseOpen","isActivityLogEnabled","activityLogOpen","isManualTourEnabled","manualPatrolOpen","logEventQueueHistory","lastUpdatedString","isModalVisible","showNotesForSelectedGroup","modalEvent","getGroupId","AreaNotesFinder","bannerClick","healthStatusCount","onSelectedFilterChanged","SystemHealth","SystemViewHealthRadioFilter","updateTimer","bannerMode","setupFilter","statusFilter","SystemViewHealthFilter","editedFilter","allAvailableFilters","setAllAvailableFilters","onCancelFilterEditing","modalShow","filterToDelete","deleteFilter","hideConfirmationModal","moveFilter","active","selectFilter","removeFilter","resetFilterSearch","filterSearch","newFilterSelected","canSaveFilters","editFilter","confirmDeleteFilter","newFilter","validateDuplicate","areaList","areaSelected","inherited","excluded","showAdvancedCriteria","priorityOperator","comparisonOperators","numberOfEventsOperator","alarmTag","alarmAgeOperator","submitButtonTitle","removeWhiteSpace","defaultFilter","priorityValue","numberOfEventsValue","alarmTagID","alarmAgeValue","shared","combinedFilters","prepareInitialData","modal","onCallsignChanged","responseAlarmTypeID","filterGroup","listGroup","saveFn","AlarmQueueFilterEdit","formTitle","isValidTitleEdit","addingFilter","priorityHigherThan","capitalizeFirstLetter","priorityHigherThanDDL","numberOfEvents","numberOfEventsDDL","olderThan","olderThanDDL","forward","activeFilters","indexOfCurrent","visibleFilters","filterLength","newIndex","titleWithRegion","availableFilters","first","queueFilter","AlarmQueueFilterTabs","ManualRaiseStore","AlarmPoints","stopped","isUpdateInProgress","lastUpdatedCheckTimer","hasAlarmSoundBeenTriggered","isAlarmSoundQueued","bulkHandleEnabled","bulkHandlePermission","onEventsChanged","makeAlarm","onActiveRegionChanged","newRegion","oldRegion","updateInterval","checkLastUpdated","timeToCheck","eventsLastUpdated","performance","timeTaken","activeEventsCount","clearSelectedAlarms","AlarmQueueHeader","MaskingModalLauncher","RegionalHandlerMixin","isQueueDetailShown","processingEventCount","parkedEventCount","patrolEventCount","onTestEventCount","regionalEventID","handleEventQueueItem","convertUtcDateTimeToLocalDateTimeString","filteredEvents","PatrolQueue","EventQueueAreaInfoIcon","ResetActionsCCure","hoverEvent","unhoverEvent","isEventPeekEnabled","peekEvent","ProcessingQueue","resetOnParkedEnabled","displayUnParkAt","ParkedQueue","OnTestQueue","disableProcessingActiveAlarms","AlarmQueueFooter","onProcessingErrorChange","ProcessingError","invite","acceptInvite","ignoreInvite","SharedBy","EventTitle","ignored","currentInvites","updateTimeout","InProcess","invites","allowAccess","unIgnoredInvites","InvitationCheck","manualPatrolShown","closeManualPatrol","handleError","patrolNote","setNoteRequired","validForm","isStartingTour","startManualPatrolForGroup","patrolGroup","eventObject","patrolResult","existingEventTypeID","ManualPatrol","tourNoteRequired","disableStyles","disableMapAlert","pinNeedsDrop","mapLayersForSelectedGroup","selectedLayer","selectedEventType","maxNotesLength","maxRaisedByLength","raisedBy","disableAutomaticClaim","claimCheckboxFocused","noteNotEntered","raiseTitle","isRaising","raise","MaxNotesLength","MaxRaisedByLength","groupSearchLoading","onSelectedMapElevationChanged","existingLayer","setSelectedAreaMapBounds","selectedGroupChanged","getBoundsForArea","isDefaultBounds","setSelectedAreaBounds","loadMapLayersByGroupId","geoCodeResponse","clear","clearManualRaiseSettings","selectedLayerInfo","mapLayerId","alarmLocation","noteRequiredForManualRaise","ManualRaise","HideMapMixin","focusDeviceFinder","manualActionShown","doorSearchLoading","asyncFind","manualActionRequest","pulsing","pulse","Devices","deviceSvce","deviceServerEndpoint","sendOutputCmd","deviceServiceSession","statusText","deviceFinder","ManualAction","inactivityWarningSeconds","cancelCountdown","checkTimer","countdownSeconds","startWarningAt","lastActivity","inactiveTime","QueueInactivityWarning","activityLogShown","createActivityLog","formatDateStr","getTimeNow","newActivityLog","areaID","categoryData","setSelectedCategory","activityLogIsValid","ActivityLog","mixin","activityLogID","logged","start","end","categoryTitle","viewedUserID","userTitle","hiddenFromUsers","onActivityLogAreaIDChanged","newAreaId","hoursMins","onActivityLogShownChanged","ActivityLogPopup","aiUIVirtualOperatorUrl","getAiUiUrl","aiUIUrl","getApiKey","aiAPIKey","Response","VirtualOperatorsPopUp","processAlarm","cancelAlarm","highestPriorityAlarm","alarmDesc","alarmArea","showModal","eventQueueItem","pendingEventWatch","ProcessAlarmConfirmation","getSelectedResponse","backToGroup","onMaskedAlarm","onUnmaskedAlarm","showMask","showOnTest","onAlarmMasked","displayDateFromISOString","disarmReasonTitle","unMaskAlarm","responseDetails","responseOnTestEvent","endTest","testAlarmsLoaded","loadOnTestRecords","testAlarms","showHistory","deviceTypeTitle","fetchingHistory","fetchingHistoryFailed","historyItems","historyItem","utcDateTime","getHistory","filterLower","onResponseChanged","canGetHistoryLatest","accessControlHistory","AccessControlHistory","filteredHistory","responseHistory","thClass","AlarmPointHistory","SureViewIcon","maxEventRecordID","Today","calendarDisabledDates","ScheduleType","ForPeriod","UntilDate","onTestRequest","onTestUntilDate","loadResponse","loadResponseOnTestEvent","today","defaultMinTime","selectedDate","onControlMaskedAlarm","rearmAt","onControlUnmaskedAlarm","maskReasons","disarmReasons","groupDisarmReasonID","startTest","testRequest","momentTime","loadGroupOnTestRecords","onTestRecords","groupToggleArmAt","updatedResponse","AlarmPoint","validateHourPermission","validateMaxTime","pattern","currentRequestDate","MaskingForm","PutOnTest","displayDate","areaPermissions","canDisarm","areaOnTestEvent","includeDisabled","minTimeForSelectedDate","alarmPoint","selectResponse","onTestUntil","areaAlarmPoints","onTestAudit","loadResponses","onSelectedAreaChanged","loadGroupOnTestEvent","loadGroupPermissions","AreaAlarms","disarmedResponses","responseSearchLoading","responseFilter","lowerFilter","selectedOption","viewMasked","responsesDisarmed","unviewMasked","selectDisarmedResponse","updateResponseStatus","responseIndex","disarmedResponse","AlarmPointFinder","onGetAlarmPointManagerOpen","alarmDialog","groupFind","matchingGroup","setTreeArmedStatus","responseGroup","treeResponse","alarmPointFinder","AlarmPointManagerDialog","isEventHistoryEnabled","disablePopoutMode","AreaEventHistoryPopout","currentFilter","reload","updateEventQueueDebugMode","peekModal","ae","stopPollingUserContext","PeekStarted","PeekEnded","EnhancedMapSidebar","EventClose","eventRecordComponentScale","eventRecordType","mapComponentScale","actionPlansEnabled","alarmPointDialogVisible","onDisplayResponseIdChanged","AlarmPointDialog","closeInvolvedParties","handleIncludeUsersChange","includeUsers","getUserTitle","calculateDropdownPositionAndSize","handleInvolvedPartySearchInput","selectedParties","noUsersFound","noContactsFound","involvementType","addInvolvedParty","involvedParty","added","involvedPartyId","removeInvolvedParty","maxUserLimit","involvedParties","currentSearchTerm","performInvolvedPartySearch","involvedPartySearchToken","getUsersInfoBySearchTerm","usersInfo","existingInvolvedParties","ip","onInvolvedPartiesShownChanged","updateInvolvedParties","clearInputs","involvedPartiesModal","excludeUsersEnabled","involvedPartiesToAdd","getInvolvedPartiesForEvent","userDisplay","dropdownList","minWidth","InvolvedParties","nearbyDevicePresent","mediaMatrixOpened","mapItemsWatcher","_oldValue","audioDevices","displayMediaMatrix","eventDetailsWatcher","canOpenMediaMatrix","shouldNotAutoOpen","onlyShowMatrixWithData","hasMediaItems","checkAnyDevicesAvailableForMediaMatrix","showMediaMatrix","canGetMediaList","hasLinkedCameras","hasAreaAudioDevices","filteredRecords","canGetAudioDevices","fetchAudioDevicesByGroupId","SiteMonitorHeader","EnhancedMap","EventTaskContainer","IncidentReport","EventEnded","ForceRestore","PutEventOnTestModal","auditServiceSessionResourceId","deviceServiceSessionResourceId","responseStatus","watch","Sessions","layoutHorizontal","layoutVertical","cameraColStyle","expand","contract","showMenu","layoutChanged","layout","clearAllMatrixCells","itemExpanded","displayMediaMatrixContent","isCellActive","isTourMaskInactiveCameras","mechanicalPtzByDefault","manualRaiseEnabled","manualRaiseRecordingEnabled","cameraSelected","onClipSelected","makeLinkRecord","ended","canUnmute","mediaHasVideo","mediaHasAudio","isMuted","muteUnMute","onClipTimeChanged","onClipDurationChanged","onVideoEnded","onVideoError","onMediaHasAudio","onMediaHasVideo","playing","togglePlaying","takeSnapShot","slowDown","playBackSpeed","speedUp","timestamp","dataSize","latestClipLength","onSliderSeek","seek","seekTo","endSeek","circleHover","seeking","setHover","startSeek","seekPosition","totalSize","playPercentage","seekToTime","downloadProgress","clientWidth","seekTime","hovered","ev","buttons","offsetX","BufferSeek","OnLoadedData","auditClip","MEDIA_ERR_ABORTED","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","currentURL","hasSetupVideoPlayer","newDataAdded","playCheck","lastCheckTime","videoControl","pause","videoControlDuration","endClip","revokeObjectURL","processRemainingData","hasDataToProcess","clearQueue","currentTime","playURL","onloadedmetadata","handleOnLoadedMetadata","ontimeupdate","backgroundColor","playBlob","mediaSource","onVideoControlError","onended","setSourceOpenHandler","playPromise","toBlob","paused","addVideoData","addData","videoElement","currentTarget","restart","updateDuration","totalSeconds","onTimeUpdate","ceil","setPlaybackSpeed","speed","playbackRate","currentImage","canvas","videoWidth","videoHeight","getContext","drawImage","webkitAudioDecodedByteCount","webkitVideoDecodedByteCount","muted","AuditVideo","currentFile","appendLock","appendTimeout","moreDataAvailable","playClip","stop","video","appendVideo","mediaUrl","auditDataGet","contentRange","rangeStr","maxSizeStr","rangeMaxStr","maxSize","byteLength","cameraSnapshotFeatureEnabled","cameraSnapshotPermissionEnabled","imageTimestamp","ImageURL","dateTimeString","clipFilename","auditSnapshot","snapshotImage","fetch","imageBlob","attachMediaDataToEventRecord","DeviceId","AuditControl","Tours","deviceTitle","_camera","hasClip","clipDetails","highlight","streamingData","_clip","border","borderRadius","backgroundSize","backgroundImage","zIndex","bottom","getWaitingForEvent","onMatrixUpdated","onPushContentsChanged","oldContents","groupCollapsed","groupEnd","onWaitingForEvent","oldWaitingForEvent","nextTick","onEventChanged","oldEventId","player","cameraControl","pushContents","startCamera","isVideoAuditingEnabled","selectedCamera","updateSavedContents","childElement","MatrixContainer","tourName","setTourName","resetCameraPageNumber","clipsRetrieved","cameraSearchQuery","searchCameras","isCameraEnabled","isSelectedCamera","cameraSelect","cameraIconColor","applianceOfflineNotification","showMoreSearchCameras","matrixContent","nearbyCameras","filteredNearbyCameras","fillEmptyCellsWithNearbyCameras","tourEnded","completeCameraReset","outputSearchQuery","pulseOutput","doPulseOutput","cancelPulse","setOutput","toggleAreasSection","showAreaCamera","showMoreAreaCameras","loadNearbyCameras","populateNearbyCamerasModal","getClipListItemStyle","clipSelect","isClipError","Subtitle","clipLocalDate","CreatedUTC","CreatedGroupTimezone","ellipseAfterX","previousClips","mediaEventID","currentEventRecordID","clearDownUpdateMediaListAndGetClipsTimeouts","onSelectedEventRecordChanged","onMediaMatrixIsNewChanged","selectedEventRecord","FileSizeError","isSelectedClip","EventRecordId","skipRecordChecks","_updateMediaListTimeout","addUpdatedClips","isAutoPopulateClipsEnabled","isPerformAutomations","checkForClipsInSeconds","filteredClips","firstRecord","secondRecord","clipsPerRecord","transformDeviceControllerClips","newClips","removeAuditClipsAlreadyInMatrix","clearDownGetClipsListTimeouts","_getClipsTimeout","auditProtocol","protocol","currentProtocol","clearDownUpdateMediaList","clipIdentifier","clipsToReturn","clipTitle","ClipsList","filterActive","showMoreCameras","setCamera","systemViewApplianceNotification","getLastError","onDeviceIdChanged","onAreaCamerasUpdated","SystemViewCameraIcon","searchPageSize","resetCameraList","getGroupCameras","onMatrixChanged","groupCameras","setCameraIndexes","deviceIndexes","resetPageSize","AreaCameras","visibleCameras","onOpened","aValue","bValue","compare","distinct","newArray","addedValues","removeIndex","removeFunction","where","TourOptionList","cam","onContentsChanged","onMapCircleCenterChanged","mapCircleChanged","camerasToFetch","currentCamDetails","updatedCameraDetails","newDetails","horizontalColumnCount","MatrixContent","areaToursOnly","selectedTourOption","NearbyCameras","PredefinedCameras","getAllToursByGroup","selectedPredefinedTour","isFailedCamera","cameraCount","isCellStreaming","tourStepComment","tourDefaultTimeout","atStart","camerasPrevious","stopTour","pauseTourToggle","atEnd","camerasNext","loadNextCell","camerasLeft","failedCamera","failedNote","confirmFailedCamera","startTour","showNearbyCameraChangeModal","updateNearbyCameras","AudioTypes","AudioX","loopCameras","useAreaCameras","showCameraToggle","acceptNearbyCameras","firstCellIndex","initialMatrix","initialLayoutIndex","tourOptions","nearbyCamerasBeforeChange","timePassed","wasTimeout","camerasList","totalCells","emptyCells","cameraStream","predefinedCameras","stepOrder","cellEmpty","onLayoutUpdate","loadPage","validateCameraData","nearbyCamerasOnChange","auditTour","resetTourDetails","useNearbyCameras","populateMediaMatrix","confirmCamera","nextCamera","empty","startIndex","cameraIdx","getCamContents","loadNextPage","loadPreviousPage","nextPageTotal","tourType","matrixColumnSize","matrixRowSize","matrixColumns","matrixRows","predefinedTourStep","predefinedTour","confirmationComment","countDownTimer","timePassedLastConfirmed","MatrixsOriginalState","objectlist","thisCamera","getDeviceServiceEndpoint","selectedAudioDevice","loadAudioControls","displayControlsWidth","triggerReceiveReload","nearbyDevices","audioDevice","groupDevices","toggleActiveState","audioReady","currentVariant","audioState","wsAudio","audioElement","queue","buffer","invalidAuth","audioContextTemplate","mimeType","playingState","audioContext","generateEventRecord","auditRequest","AudioEvent","setupAudio","listenAudio","setupAudioContext","autoplay","preload","MediaSource","onsourceopen","stopAudio","audioErrorHandler","onSourceOpen","addSourceBuffer","onupdateend","WebSocket","binaryType","onmessage","onMessage","bufferAddNext","ArrayBuffer","isPrototypeOf","ranges","buffered","bufferEnd","warn","appendBuffer","sourceBuffers","removeSourceBuffer","AudioMixin","audioOptionTypes","constructAddress","deviceServiceEndpoint","audioType","secure","AudioAddressMixin","deviceAuth","updateAudioUrl","unloadHook","audioReceive","auditAudioStop","audioDeviceChanged","oldDevice","receive","setAudio","getAuthState","Receive","toggleState","deviceProtocol","micPermissionStatus","variant","micReady","webSocketOpen","permissionError","protocolError","downsample","sampleRate","outSampleRate","sampleRateRatio","Int16Array","offsetResult","offsetBuffer","nextOffsetBuffer","accum","audioStream","wsMic","micSource","micContext","initialized","scriptNode","micContextTemplate","transmitContext","getAudioAuth","setupMic","closeMicContext","setupMicContext","AudioContext","setupWebsocket","toggleMic","onclose","onopen","wsOnOpen","createMediaStreamSource","createScriptProcessor","connect","destination","onaudioprocess","sendMicData","audioBuffer","inputBuffer","getChannelData","dSampledBuffer","readyState","OPEN","send","navigator","mediaDevices","getUserMedia","resume","suspend","getAudioTracks","track","disconnect","requestDeviceAuth","MicMixin","audioTransmit","transmit","setMic","requestPermission","errorMessageWatch","Transmit","listTitle","canReceive","canTransmit","canTwoway","setSelectedAudioDevice","AudioList","deviceServiceRegex","fetchNearbyAudio","fetchGroupAudio","ad","nearbyAudioDevices","fetchAudioDevicesByIds","audioDeviceInfo","nearby","filteredDevices","nd","AudioControl","openOutputs","emitPulse","ControlDevicesList","defaultDeviceControllerOutput","setInitialRecordForEventId","showArea","showOutput","selectedOutput","selectedOutputID","actionReason","initialEventRecordID","isLoadingAreaCameras","isAreaSearch","nearbyOutputs","mapItemsSet","fillStartIndex","clipsQueue","minimizeCollapseMenu","camerasToFilter","filterValue","resetCameraState","showAreas","openArea","checkCamerasComparison","newData","oldData","loadAlarmEvent","dataChanged","allowSpotlightScaling","loadNearbyCameraLayer","alarmEvent","patrolEvent","loadAreaCameras","nearbyCamerasEnabled","loadCameras","onPageNumberChanged","findCameras","onCameraSearchQueryChanged","onOutputSearchQueryChanged","findOutputs","setSearchCameraIndexes","onMapItemsChanged","setDevicesFromMapLayerItems","onAreaOutputsChanges","setNearByOutputs","mapItems","scrollToAreaScheduled","scrollTo","container","camerasToPush","ac","notAttached","fillCellsWithMapItems","getOutputsFromMapLayerItems","devicesAsMapLayerItems","newOutput","getDevicesByIds","missingOutputs","mOutput","addedCameras","getMatrixClipsSet","fetchingMediaMatrix","fillIfNew","fetchingMediaMatrixChanged","preventNearbyCamerasAutoPopulate","manuallyPopulateAreaCameras","emptyIndex","finalIndex","outputList","deviceAction","outputReason","maxtrixContents","loadPromises","sn","subnode","openPromises","treeSelectCamera","DeviceController","session","tour","loadedEventId","loadedMatrix","expandedItem","expandParent","eventClosed","matrix","auditRecord","hideMenuDefault","loadEvent","clipsLoaded","onIsControllerChanged","updateMatrix","matrixGet","allBlank","setMatrix","matrixSave","resetBaseUrl","nearbyCameraList","areaCameraList","haveNearbyCamera","haveAreaCamera","haveCameras","newLayoutIndex","hindex","vindex","margin","matrixElement","parentElement","expandedCamera","Cameras","cancelLink","LinkingCamera","onIsLoggedInChanged","onEventDetailsChanged","isCloseOnEventEndEnabled","SiteMonitorCameras","deviceSelected","searchOptions","toSearch","gotoEvent","eventGoto","isSearchCollapsed","selectedEventId","searchPending","onSearch","resultCount","makeSearchRequest","selectedEvent","eventSelect","isAdditionalEventSearchDetailsEnabled","isEventFlaggingEnabled","outcomeTitle","clearEventSelectAndRemoveFromResults","eventPreserveUpdated","onGoToEventPage","isEmptySearchResults","searchModel","setBounds","setMapLocation","isEventTagSearchEnabled","tagId","dt","searchableEventType","allSearchableEventTypes","allEventTypeFilterOption","checkIfEventTypeHasBeenCleared","isFeatureAlarmTagSearchEnabled","alarmTagOptions","clearClicked","raw","ne","sw","containerElement","center","zoomLevel","streetview","mapViewType","mapStyles","mobileMode","minLevelForFullIcons","minLevelForItems","currentViewState","viewportChangedTimeout","eventMap","ReferenceError","mapTypeId","MapTypeId","HYBRID","TERRAIN","ROADMAP","SATELLITE","mapTypeControl","zoomControl","scaleControl","streetViewControl","fullscreenControl","rotateControl","gestureHandling","setTilt","addListener","getMapTypeId","zoomLevelSet","getBounds","getNorthEast","getSouthWest","handleZoomLevelChanged","getZoom","handleBoundsChanged","currentZoomLevel","viewState","arg","registerEvent","buildBoundsForLayerOnPositions","NE","SW","neArray","neLat","neLng","swArray","swLat","swLng","trueNE","trueSW","getLatLngPolarity","getScript","async","defer","documentElement","searchType","findGroup","autocomplete","createdAutocomplete","onSearchTypeChanged","setAutocomplete","places","Autocomplete","setFields","place","getPlace","MapSearch","EventSearchStore","endOFDayFormatted","toStartOfDay","toEndOfDay","ProgressStatuses","isMapVisible","selectedMapArea","mapInitialized","defaultSearchFilters","boundaryPath","alarmType","flaggedEventsOnly","allTags","allAlarmTags","includeAutoHandled","onMapVisibilityChange","setMap","onMapFilterChange","zone","getZonePaths","onDeviceTypeChange","onGroupIdChange","initMap","mapPosition","mappingContainer","setOptions","LatLng","mapLayersBounds","fitBounds","drawingManager","drawing","DrawingManager","drawingMode","OverlayType","POLYGON","drawingControl","drawingControlOptions","ControlPosition","TOP_CENTER","drawingModes","polygonOptions","getPath","getArray","point","gpsData","setCenter","setZoom","toggleMapVisible","inputValue","userHasClearedSelection","eventTypeFilterSelector","isEventTypeFilteringEnabled","eventTags","isIncludeAutoHandledEnabled","strokeColor","colors","POLYGON_STROKE","strokeOpacity","strokeWeight","fillColor","POLYGON_FILL","fillOpacity","datetime","isPreserveEventsEnabled","preserve","filesPreservedUntil","preservedUntil","eventPreservationUpdated","openUpdateEventOutcomeModal","openEventEditInNewTab","downloadMediaKey","downloadMediaDisabledText","downloadingMedia","downloadMediaHoverText","startMediaDownload","downloadMediaButtonText","archiveProgressPercentage","reviewModalState","eventArea","clipSelected","selectedClip","showDownloadClipModal","currentEventId","eventDetailsAvailable","eventRecordSelected","markEventReviewed","processing","showDownloadClipModalFlag","downloadingMediaClipSystemName","downloadingMediaClipFriendlyName","downloadEventClipArchive","onUpdatedEventOutcome","eventPreservedUntil","eventFilesPreservedUntil","isPreserveEventModalShown","isPreserved","confirmEventPreservedUpdate","isPreservedDateInThePast","isPreservedUpdated","preservedUpdated","PreserveEventControl","archiveProgressCheckTimeout","archiveProgressCheckWaitTime","eventHasMedia","defaultDownloadButtonText","archivingMediaText","downloadingMediaText","downloadingMediaProgress","downloadPercentage","onEventDataReceive","checkEventHasMedia","onEventIDChanged","loadEventData","isClipPlaybackEnabled","eventRecordClip","FileSize","eventRecordsWithClips","flagRemoved","userAdded","renewAuditSession","doesEventHaveMedia","archiveEvent","checkArchiveProgress","archiveIsReady","complete","isReady","downloadEventMediaArchive","getArchive","uploadAttachments","useFriendlyName","auditDataGetFile","updatedEventDetails","EventReview","SiteMonitorStore","scrollBuffer","MAX_SAFE_INTEGER","loadEventDetailsDirect","searchFilter","totalEvents","EventSearchPage","addingNewActionCategory","onAddNewActionCategory","newActionCategory","onSaveActionCategory","onCancelAddingNewActionCategory","actionCategoriesExpandedState","collapseCategory","expandCategory","taskLibraryByCategoryID","actionPlanCollectionTypeahead","triggerAction","categoryInActionPlan","toggleCategoryInActionPlan","editedActionCategoryID","isValidEditedActionCategoryTitle","showEditedActionCategoryTitleErrorAnimation","editedActionCategoryTitle","onCancelEditingActionCategory","onUpdateActionCategory","onActionCategoryEdit","onDeleteActionCategory","deleteActionCategoryID","doDeleteActionCategory","cancelDeletingActionCategory","beforeActionPlanListItemLeave","inActionPlan","toggleInActionPlan","taskTypeIds","taskTypesByTitle","setTriggerAction","triggeredTaskCount","isEditedTask","onCancelEditingLibraryTask","onTaskEdit","onDeleteActionFromLibrary","editingTaskStates","onUpdateLibraryTask","addingNewTaskStates","onAddNewTaskToLibrary","onSaveNewTask","onCancelNewTask","onAddNewActionPlan","edit","onSaveActionPlan","onCancelEditingActionPlan","onEditActionPlan","deletingActionPlan","doDeleteActionPlan","scriptID","actionsInActionPlansByCategory","actionPlanCategories","areScriptCategoryLinksLoaded","scriptCategoryLinksBeingUpdated","onActionPlanCategoryOrderChanged","reorderingItem","actionPlanCategoryDragOptions","_cat_id","decoratedActionCategoriesInCurrentScript","isReorderCategoriesEnabled","numActionsAddedToScript","totalNumActions","orderedActionPlanByCategory","onActionPlanOrderChanged","actionPlanDragOptions","toggleRequiredTask","onRemoveTaskFromCollection","doDeleteActionFromLibrary","cancelDeletingActionFromLibrary","confirmTaskDeletionModalDetails","enabledActionTypes","taskTypeSelectPlaceholder","TaskTypeIdEnum","massNotificationEnabled","taskValidated","choicesEnabled","callContactsEnabled","controlsEnabled","eventOutcomeEnabled","taskToRender","1","isTaskValid","loadCorrectComponent","tt","taskType","componentFile","onTaskTypeChanged","valid","confirmUrlTaskHasTitle","AddNewTask","NotificationSetup","InputTask","UrlTask","CCureTask","CallContactSetup","RaiseToCasesTask","validationMessage","onTitleChanged","titleAlreadyExist","ap","EditActionPlan","newPlanCategory","checkActionCategory","Title","AddNewActionCategory","libraryTaskCategory","libraryTaskType","taskToEdit","Actions","onTaskValidated","Control","onSaveClicked","onLibraryTaskChanged","libraryTask","EditLibraryTask","UrlInputLine","triggerTaskID","yesNoOptions","removeTrigger","taskList","triggerIndex","triggersPayload","taskTrigger","triggeredTasksSave","TaskTriggerDialog","draggable","editingActionPlan","reorderTaskStates","deleteLibraryActionID","actionPlanActions","unEditedActionPlan","scriptCategoryLinksUpdateTimeout","activeScriptCategoryLinksUpdateTimeouts","draggableAnimation","relevantCategoryIDs","taskLibrary","self","animation","ghostClass","onTaskCollectionsChanged","initActionsInActionPlansByCategoryPlaceholder","initActionCategoriesExpandedState","onTaskLibraryChanged","waitForScriptCategoryLinks","onActionPlanSelected","scriptCategoryLinks","taskCat","shouldCollapseByDefault","confirmTaskDeletionModal","actionPlanID","actionCategoryID","col","clearTriggerAction","resultCondition","planCategory","removePlanActions","planAction","removeAction","unorderedActions","orderedActions","reorderEvent","reOrderPayload","moved","previousOrder","marginLeft","marginTop","offsetLeft","offsetTop","getScriptCategoryLinkById","scriptCategoryLink","actionPlanTasksInScript","unorderedActionPlanTasks","unorderedCategories","orderedCategories","actionPlanTask","unorderedCategoryToAdd","scriptCategoryLinkOrderDefault","scriptCategoryLinkOrder","orderedCategoryToAdd","ConfigureTasks","SiteAdminLanding","this$1","isPrototype","liveGpsTrack","mobileFeatures","sos","mainComponentName","isFieldOpsUserOnline","isMobileUsersEnabled","activeEvent","userLost","isTriggerMobileRaiseEnabled","isRaiseSelectVisible","isManualLocationEnabled","showFieldOps","eventShareCount","onRaise","isRaiseActivityLogVisible","isRaiseManualRaiseVisible","isManualRaiseDetailsVisible","createdEventId","isSubscriptionValid","triggerMenu","canViewCameras","modeClicked","Mobile","liveCameraEnabled","fieldOpsEnabled","MobileMenu","navLocInfo","navigationLocation","navigationMode","activeEventShareItem","panToCenter","latlng","eventAreaTitle","iconClassForNavMode","setSelectedItem","selectedItemImageUrl","panToAsset","getRegionBounds","getPolygonOptionsForRegion","mountingLocationInterval","defaultLocationInterval","mappingMarkers","enhancedMapping","minPatrolZones","lastUpdatedGuardLocation","userMarker","fieldOpsPoll","browserLocationUpdater","currentLocationInterval","eventItemMarkers","MapLabel","activeCircle","getIconForAssetType","panTo","userMapStatus","activeEventShareItemWatch","focusedEventIdWatch","focusedEventID","eventItems","setFocusedEvent","toggleNavigationToAlarm","hideDirections","changeNavigationMode","displayFieldOpsItems","assetMarkersToRemove","assetItemMarkers","trackedMarkersToRemove","trackedAssetItemMarkers","eventMarkersToRemove","assetAndUsersItems","userAssetId","trackedAssetId","marker","moveTo","createMarkerForAsset","clearAssetMarkers","createMarker","eventDescription","isClickable","Circle","radius","getMarkerType","setMarkerIconForItem","viewingAssetChanged","inApp","triggerGetCurrentPositionRefresh","beforeDispose","geolocation","clearWatch","geolocationWatchNumber","updateLocationTimeout","clearTimer","onRemove","mapStyleUpdated","mobileMapStyle","triggerGpsTracking","watchPosition","foundLocation","locationError","enableHighAccuracy","directionsService","DirectionsService","directionsDisplay","DirectionsRenderer","suppressMarkers","preserveViewport","polylineOptions","pos","setUserLocation","isMobileFieldOpsEnabled","loadRegions","getAllRegions","regionsToUpdate","regionPoly","Polygon","getCenter","areaDetails","fontSize","fontColor","labelInBackground","borderColor","dragend","manualSetLocationData","userPreviousLocation","travelMode","TravelMode","DirectionsStatus","OK","setDirections","legs","getMap","userPreviousDestination","centerPosition","parseLatLngToLocation","updateLocationHistory","triggerRecall","userMapOnlineStatus","deviceLocationString","setLocationForGuard","positionIsLatLng","latitude","longitude","deviceMarker","setPosition","spherical","computeDistanceBetween","markerIcon","scaledSize","Size","Point","anchor","Marker","setCurrentLocationInterval","getCurrentPosition","MobileMap","FieldOpsMixin","sideBarComponent","showRightSidebar","searchQuery","debouncedFilterSearch","searchForDebounce","querySearch","cameraDetails","MobileCameraSelect","Tree","LiveCameras","selectedAssetId","onAssetSelected","eventShareItems","showOverlay","setActiveOrLeaving","trySetActiveEvent","leaveActiveEvent","cancelPendingStateChange","activeEventVisible","eventShareQueueVisible","pendingActive","updateEvent","scrollRecords","unreadRecordCount","newRecords","toggleEventQueue","eventQueueSize","pendingUpdate","distanceFromUser","navMode","updateEventState","openChat","userLocation","distanceInMeters","eventShare","toggleRightSideBar","EventShareItem","getRaisedBy","eventUsers","recordPoll","rightSideBarOpen","loadEventRecordsForMobile","getEventUsersForEvent","eventRecordsWatch","oldRecords","sideBarWatcher","eventUser","MobileEventRecords","eventShareItemsWatch","setMobileEventShareItem","setActiveEvent","Rejected","Left","navigateToAlarm","activeEventWatch","mobileEventRecord","scroll","behavior","MobileEventShare","shouldFocusEventShare","userAssetStatus","mapViewingAssetChanged","assetAndUsersWatch","AssetControl","setDynamicComponent","onMobileModeChanged","RightSideBar","showLeftSidebar","suppressScrollX","onlineToggle","scrollToElement","selectedAssetsValue","currentAsset","multipleAssetsSelected","selectedAssetIds","MobileUsers","isFieldOpsEnabled","updateDisabled","updateUserAndOrAssets","formName","cancelUpdateName","updateName","editDisplayName","refreshStatus","userStatus","assetStatusActive","setStatusInput","hideStatusUpdateButton","userStatusUpdateDisabled","updateUserMapStatus","mountedDisplayName","userStatusPollingTimeout","refreshStatusRequired","statusInputsActive","currentUserStatus","userMapStatusWatch","setUserStatusFromCurrentUserStatus","setStatuses","statusChanged","setUserMapDisplayName","recentStatuses","reloadStatusList","populateUserData","UserDetails","vselect3","showUnavailablePicker","showBreakCard","pauseAssetPolling","directionsToggle","assetStatusPollingTimeout","pollAssetPauseTimeout","userMapStatusToggle","toggleUserOnlineStatus","userMapOnlineStatusWatch","assetStatusPollingEnabled","pollAssets","canUpdateUserStatus","userDetails","elementId","scrollIntoView","onLeftSideBarChanged","pickUnavailable","onDirectionsToggleChanged","onCurrentAssetStatusNoteChanged","suspendAssetPolling","onCurrentAssetStatusChanged","msgBoxConfirm","okTitle","cancelTitle","selectedAssets","assetObsObj","setMultiMapLayerAssetStatuses","assetupdate","assetStatusesDontMatch","assetChanged","LeftSideBar","notificationContainsError","showNotification","notificationDisplayTimeout","onNotificationChanged","setNotificationValue","notificationTimeToShow","NotificationBar","liveDeviceId","isStarredDevice","toggleStarredDevice","starredDevices","StarredCameras","isMobileLiveCamerasEnabled","onLiveDeviceIdChanged","CameraPlayer","onPrevious","onNext","onSearchUpdate","hasQuickRaises","selectMode","quickRaises","onLoadAll","onBack","raiseItemClass","titleList","highlightText","formattedTitle","slashRegexp","buildTitle","titles","processedTitles","getItemsClass","QuickSelect","manualRaiseType","raisePredicate","SearchSelect","MobileRaiseTemplates","previousTemplate","nextTemplate","gridSetSlot","RaiseSelect","isStartTimeValid","isAreaValid","isNotesValid","isFormValid","submit","typeID","RaiseActivityLog","isManualRaiseToAreaEnabled","raisingAlarm","onConfirm","getDevicePosition","posOptions","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","timeoutMs","loc","onRaiseFinished","regionGroupID","posString","shouldManualRaiseAndJoin","RaiseManualRaise","cancelUpload","onIsUploading","onUploadSuccess","triggerUpload","isUploading","onComplete","useIconBtn","onFileSelected","OPERATOR_NOTE_TYPE_ID","selectedFile","onIsVisibleChanged","onUploadCancelChanged","cameraInputElement","cameraInput","files","uploadFile","updateProgressBar","prog","emitUploadProgress","FormData","append","attatchedFileEventRecordType","onUploadProgress","progressEvent","percentCompleted","loaded","emitIsUploading","uploadFileForEventRecord","emitUploadSuccess","emitUploadError","progress","UploadFileButton","addNote","ManualRaiseDetails","chatExpanded","chatTab","eventShareNumberOfUnread","eventShareId","loadMessagesAction","eventShareMessages","updateModel","eventChatFileUploadEnabled","isSending","isSendMessageDisabled","onChatCollapse","chatWasOpen","chatContentVisible","isFirstExpand","chatExpandTimeoutId","chatCollapseTimeoutId","isDestroying","pollUnreadsTimer","startPollUnreads","rightSideWatcher","chatOpenWatch","onChatExpand","onChatExpandTransitionEnd","chatContainer","generalMessagesList","eventMessagesList","isAttachmentsFeatureEnabled","twoWay","loggedInUserId","chatTabWatch","shareIDWatch","isLoggedOut","eventPoll","deviceIdInterval","onGpsMode","startBackgroundLocationTracking","stopBackgroundLocationTracking","onOnlineStatusChange","enabledEventShare","isMobileEventShareEnabled","isMobileEnabled","MobileUserSession","pollForDeviceId","Id","mobileGuardLogout","trackingPayload","toggle","sendTrackingRequestToDevice","webkit","messageHandlers","trackingRequestHandler","postMessage","trackingPayloadSerialized","trackingRequest","MobileCore","updateUserDetails","deleteUserDetails","newUserDetails","openUpdateModal","getTableHeaders","getModalItems","userList","updateColumnFilters","inviteUser","isSendingInvite","userToInvite","uniqueModalItemsByTitle","defaultFile","progressBulk","bulkOnSubmit","onCloseBulk","resetProgress","userGroup","validate","selectedUserGroups","isBillingEnabled","isSubscriptionLimited","operatorUsage","mobileOfficerUsage","initialSelectedUserGroupIds","permissionIdsForInitialUserGroups","onSelectUserGroup","ug","getPermissionsForUserGroups","permissionsForInitialUserGroups","valueChanged","updateUserGroup","userGroupIds","userGroupsGroupById","isUserGroupsUnchanged","updateOperatorCount","updateMobileOfficerCount","permissionsForUserGroups","selectedUserGroupPermissionIds","permission","operatorPermissionId","up","permissionID","initialUserGroupsIncludesOperatorPermissions","selectedUserGroupIncludesOperatorPermissions","guardPermissionId","initialUserGroupsIncludesGuardPermissions","selectedUserGroupIncludesGuardPermissions","UserGroupInput","modalId","disabledButtonSubmit","submitForm","closeForm","isMultipleError","setCurrentData","downloadTemplate","disabledGridButton","downloadCSV","openFilesTree","localErrorsCSV","localIsDataEmpty","localBody","batchUploadErrors","uploadCompleted","localErrorsRow","isProgressError","localErrorsForm","localErrorsColumn","debounceSetData","localSetValue","formattedMultipleValue","localRemoveRow","bulkErrors","localErrorList","CSVParser","CSVFormHandler","errorProgressList","localValidateAll","localFormData","isCsvErrors","isSucceed","formValue","removeSuccessfulUploads","currentForm","uploadsWithErrors","rowError","changeLocalBody","setLocalData","removeRowById","isRemoveRow","initForm","CsvForm","variantSingleProgress","progressProcessValue","successfulMessage","RenderType","progressList","setProgressList","percentage","CsvProgress","erroredFormData","formattedDataToDownload","formDataToDownload","batchUploadErrorRowsForDownload","fileExtension","reader","FileReader","initDataForm","readAsText","stringCsv","CsvUploader","isErrorCsv","localIsValidForm","isInvalidForm","CsvUploaderWrapper","valueStyle","valueText","onClearClick","onUndoClick","isClearConfirmationShown","onClearConfirm","onClearCancel","GenericTableStore","displayUndoButton","currentAssetType","assetTypesList","clearable","isRemoveAssetTypeDialogOpen","confirmRemove","cancelRemove","AssetTypeSelect","emailAsUser","userGroupLookup","originalUserGroups","isEmailValid","withParams","re","isValidEmail","isEmailAlreadyExist","emailField","canEnableAD","newOnly","canSetUserType","readOnlyMethod","SuiteUserId","readOnlyMessage","componentHasValidation","updateOnly","areasField","areasByTitle","hideAreasFeature","useAD","userToUpdate","updateUser","mostRecentSearchParams","userToAdd","isADChecked","createUser","userToDelete","deleteUser","userIndex","getPermissionTitle","getRowId","getUsers","usersPaginatedResponse","formatUsers","isReadOnly","groupSyncId","formattedAssetTypesById","fetchUserGroup","selectedUserGroupPermissions","userHasOperatorPermissions","userHasGuardPermissions","invitedUser","onSaveBulk","prepareDataBulk","localUser","convertDataToRest","counterSucceed","convertedData","localContact","failedContact","visibleColumn","UserManagementSetup","contacts","openContactRoleModal","contactRoles","contactRoleGroups","ellipseAreaTitle","onContactRolesClose","showContactRoleModal","showHeader","updateContactRoleDetails","deleteContactRoleDetails","newContactRoleDetails","roleList","showIdColumn","taggable","appendToBody","multiple","syncSetupEnabled","SetContactRoleExternalIds","contactToUpdate","externalIds","externalIdsArray","updateContactRole","roleToAdd","createContactRole","newRole","roleToDelete","updateIndex","deleteContactRole","loadContactRoleList","contactRole","externalIdList","ContactsPage","contactList","roleIds","getRoleTitle","isInherited","onEditBtnClick","onAddBtnClick","selectedContact","thStyle","areaTitles","allRoles","closeOnSelect","getOptionLabel","contactFor","cl","currentRole","isReadonly","genericUpdateModal","contact","ContactsFor","mapArrayFieldsToObject","isRowSuiteUser","isContactInheritanceEnabled","formattingRoleList","isCustomFieldsEnabled","genericModalItem","customFieldValues","populatedCustomFields","customFieldModalItem","contactForDelete","formatRoleList","getUpdatedRoleRequest","isBulkUpload","contactForRequest","contactsFor","crg","cr","contactForItems","createOrUpdateContactUser","roleRequest","updateRole","contactToAdd","saveNewUser","newUser","contactToDelete","getContacts","contactsWithRolesResponse","formatContacts","contactsWithRoles","rg","newRoleList","friendlyRoleList","contactRoleGroupsValue","rolesValue","mi","csvHeaders","exception","ContactRoles","reportApiEndpoint","insightID","currentReportUrl","goToReport","renameReportTitle","getErrorMessage","templatable","filterLockStatus","filterApplied","filterModal","relativeHoursOptions","setSelectedRelativeHours","chartType","updateChartType","downloadReportCsv","copyReportLink","showPermalinkCopy","reportPermalink","chartObject","updatePermaLinkUrl","reportOptionsPayload","tZone","lockStatus","callReport","areaFilterUpdated","eventTypeFilterName","selectedTemplate","timeRanges","selectedTimeRange","generateReport","TimeZone","isInputFocused","deselectResponse","displayDropdown","onBlur","setSearchFocus","areaResponses","PAGE_SIZE","WAIT_DEBOUNCE_INTERVAL","TIMEOUT_INTERVAL","menuStyle","updateFromValue","updateSelectedResponses","alreadySelected","searchBox","toggleBox","offsetParent","getBoundingClientRect","offsetWidth","AlarmPointSelect","handleServerTypeSearchInput","maxServerTypeMessage","selectedServerType","noServerTypesFound","handleServerTypeEventsSearchInput","maxServerTypeEventMessage","selectedServerTypeEvents","noServerTypeEventsFound","noServerTypeSelectedMessage","maxServerTypeResultSize","maxServerTypeEventsResultSize","serverTypeSearchTerm","serverTypeEventsSearchTerm","serverTypeSearchToken","serverTypeEventsSearchToken","performServerTypeSearch","getServerTypeFilterOptions","performServerTypeEventsSearch","getServerTypeEventsFilterOptions","serverTypeChanged","serverTypeEventChanged","EventTypeReportFilter","areaIndex","ReportFilters","settingTimeRange","reportTemplateID","isCSVReport","timeRangeUpdated","newRange","newStartDate","dateFieldUpdated","newDate","oldDate","TemplateReportBuilder","customTitle","validGraphData","selectedRenderType","isPlugin","getChartData","chartEvents","packages","chartOptions","onChartReady","noReportResults","tile","getReportData","containsData","getTileResults","compatable","isPositive","calulatedPercentage","verifyData","historicalComparisonDirection","colour","background","com","positive","negitive","calPercentage","getPercentageChange","EPSILON","oldNumber","newNumber","decreaseValue","isFinite","TileReport","relativeHoursDateFormatted","queryReport","groupingType","reportData","renderType","heartbeatInterval","renderOptions","graph","legendPosition","referenceId","excludeAutoHandled","relativeHoursToReport","canDrilldown","table","gChart","selection","drillDownReport","drillDown","J","getColumnLabel","getValue","getLowerCaseKey","paramResult","lockFilters","idColumnName","drillDownUrl","idColumnType","complexObject","id2","emitDrilldownUrl","regionClick","chartArea","hAxis","textStyle","alignment","vAxis","gridlines","baselineColor","titleTextStyle","vaxisTitle","easing","startup","trendlines","0","visibleInLegend","showRowNumber","magnifyingGlass","datalessRegionColor","resolution","allowHtml","customText","updateChartTypeAndFilters","resetFilters","ready","applyFiltersFromRoute","onRelativeHoursToReportChanged","newHours","runV2Report","onRouteChanged","updateTimezone","parseurlObject","parsedUrlObject","labeltxt","exclude","dateobj","isoDateString","groupingTypeEnum","getJsonFromUrl","emitFilters","subpart","drilldownUrl","isDrillDown","overrideFilters","multiFilters","complexMultiFilters","stringMultiFilters","dateFilters","idFilters","urlFiltered","loadFilters","res","setSelectedFilters","chartContainer","populateFilteredUrlObject","requiresDefault","removedTitles","getChartDataPlugin","isTable","headings","none","metricColumns","tableColumns","propLower","findKey","foundKey","InsightsGraph","GChart","selectedUrl","onReportChanged","newReport","oldReport","h","insights","dateStr","fixDate","monthNames","day","monthIndex","getMonth","year","getFullYear","currentTz","stillUtc","createReportUrl","encode","pathname","paramLinkParams","ReportBuilder","Reports","selectedEventTypes","off","resetLiveStatus","FromDateTime","ShowAdvancedSearch","ToDateTime","triggerUpdate","onSetDate","updateLiveStatus","tmpFromDate","tmpToDate","setDateRange","reportDownloadAllowed","reportTemplates","selectedReportTemplate","setSelectedReportTemplate","reportEndPoint","downloadActivityLogReportURL","logNewActivity","showDetailedScreen","editingRecord","isActivityLogActionsEnabled","fontSizeClass","editRowData","save2","updateActivityLog","cancelLogUpdate","filteredTableData","currentActivityBeingEdited","eventUrl","collapse","truncateLogs","stringTruncateLength","toggleNotes","showActivityLogEditor","toggleHideFromUserStatus","liveData","paginate","totalPages","fromDateValue","toDateValue","tableData","onTriggerUpdateChanged","getActivityLogList","onLiveDataChanged","getActivityLogListLive","canViewActivityLogManagement","run","getAvailableReportTemplatesForArea","editorRow","setLoadingStatus","fromDateValueUTCString","toDateValueUTCString","et","activityLogs","currentPage","dates","minDate","maxDate","resetEditRowObject","logID","targetRow","setCategoryOptions","checkDateStringContainsZ","newobj","prepend","reportDownloadStartDate","reportDownloadFromDate","reportDownloadFilename","formattedSelectedEventTypesById","ActivityLogTable","MaxDateTime","CanViewActivityLogHistory","CanViewActivityLogManagment","canViewActivityLogHistory","isNonActivityLogEventsEnabled","setUpSearchableEventTypes","defaultEventType","startOfDay","setSeconds","setMilliseconds","endofDay","ActivityLogManagement","expandAllFeatures","getFeatures","featureChanged","downloadJson","saveButtonDisabled","changedFeaturesList","isFeaturesConfigControlledByFile","onTenantChange","loadAllTenants","feature","featuresToEnable","fullFeatureName","lastSplitIndex","lastIndexOf","changedFeature","firstFeature","childFeatures","ele","updateFeaturesLocally","updatedFeatures","featureTree","FeatureList","configDownload","toggleResult","mapEnabledChildFeatures","mappedFeatures","Feature","Children","filterFeatures","matchingFeatures","matchingFeature","findFeatures","matchedFeature","matchingChildFeature","matchFound","currentFeatureMatches","childFeature","lowerCaseSearchTerm","FeatureSetup","FeatureTree","addTourSetup","modalRemoveTour","editTourDetails","tourStepsCount","showDetailsModal","currentTour","tourModalVisible","validateSetup","isInvalid","confirmModalVisible","tourGroupTitle","removeTourFromList","detailsModalVisible","tourGroupId","matrixOptions","onMatrixInput","searchableGroupId","searchDevice","addDeviceToTour","addAllDevices","tourUsingDuration","drag","deletingIndex","removeDeviceFromTour","updateDeleteIndex","$iter","MIN_DURATION","MAX_DURATION","requiredValidator","minVal","maxVal","defaultMatrixOption","deviceSearchTimer","deviceSearchValue","tourOrder","tourStep","getDeviceArea","updateDevicesList","cloneTourTemplate","tourTemplate","addTour","updateTour","evaluateSetupValid","getLastStepDuration","lastDevice","TourSetupModal","tourSetupRef","TourSetup","triggerGroupSetupRefresh","roleColumns","roleModalItems","rolesList","updateUserRole","deleteUserRole","permissionGroup","permissionId","isPluginPermission","getPluginName","isViewPluginPermission","hasPermission","permissionChanged","secondPermission","extendedValueDataType","change","permissionChangedCheckBox","extendedValueTitle","permissionExtendedValueChanged","isEditSiteSetupPermitted","showAlarmQueueFilterRestrictions","filterRestriction","submitChange","valueChange","valueAsString","AlarmQueueFilterSelect","currentPermissions","_rolePermissions","fetchTenantAlarmQueueFilters","loadAlarmQueueFiltersForTenant","addRolePermission","removeRolePermission","rp","updateOrAddExtendedRolePermission","raiseValueChanged","toDictionary","valueDictionary","rolePermissions","permissionValue","tempPermission","billedPermission","getBilledPermission","pluginPerm","categoryName","mobileOfficerPermissionId","isAlarmQueueFilterRestrictionsEnabled","UserRolePermissions","userRole","saveUserRole","updateState","deleteRole","userRoleId","userRoleToSave","currentUserRole","getSubscriptionUsageForUserRole","rolesCurrentUserSubscriptionUsageCount","updatedRolesUserSubscriptionUsageCount","usageDifference","getUserCountForUserRole","totalNumberOfUsers","userRoleToDelete","UserRoleSetup","groupColumns","groupModalItems","userGroupsList","deleteUserGroup","userGroupRole","userGroupRoles","inherit","newUserGroup","userGroupRolesUpdated","UserGroupRoles","loadState","retrieveUserGroups","saveUserGroup","deleteGroup","userGroupToSave","currentUserGroup","getSubscriptionUsageForUserGroup","groupsCurrentUserSubscriptionUsageCount","updatedGroupsUserSubscriptionUsageCount","getUserCountForUserGroup","userGroupToDelete","UserGroupSetup","AreaStore","canEditUserGroups","go","userGroupSetup","PermissionSetup","isAlarmSetupEnabled","putAlarm","deleteAlarm","retrieveAutomationBadges","automations","rootResponseEmail","copyAlarmEmail","tooltipToShow","isCustomFieldAlarmsEnabled","hasCanViewCustomFieldsPermission","openCustomFieldModal","mapObjectFieldsToArray","validateSlaBreachSecondsValue","generateErrorMessage","responseScripts","alarmDecoderServers","alarmGroupingOptions","isRaiseIndividual","isRaiseGrouped","yesNoNotSet","actualValue","isEmailAlarms","addQuickCopy","showAutomations","hasMaskDurationLimit","hasAlarmSetupEditAreaFlag","showLinkedCamerasInModal","CameraSelect","readOnlyIfEdit","visibleMethod","requiredMethod","ah","isServiceLevelAgreementsEnabled","isSlaValueValid","ResponseActionSetup","shellModalItem","alarmCustomFieldModalItem","retrieveAlarmDecoderServers","getAlarmDecoderServerList","getResponseScripts","scriptTitle","yn","responseCode","updateAutomations","newAutomations","oldAutomations","newAutomation","responseActionID","createAlarmAutomation","oldAutomation","responseActionTypeID","updateAlarmAutomation","deleteAlarmAutomation","rs","selectedServerId","getResponses","ag","showOriginalEmail","getAlarmAutomations","customFieldTableView","showCustomFieldModal","AlarmSetupTable","AutomationMixin","httpReceiverApiKey","getSystemIdentifier","copySystemIdentifier","HttpAlarmConstants","AlarmDecoderResponseId","AutoGeneratedResponseId","showMaskDurationLimit","getSystemIdentifierOptions","systemIdentifier","isResponseCodeFieldVisible","getOrganizationSettings","organizationSettings","apiKeySettings","keyType","keyValue","createHttpAlarmReceiverApiKey","createNewHttpResponse","isFirstHttpResponse","getHttpResponses","systemIdentifierOptions","si","isUsingAlarmDecoder","HttpAlarmSetupTable","alarmDecoders","putAlarmDecoder","deleteAlarmDecoder","deleteAlarmDecoderMessage","loadDecoders","canDistanceFilter","localEvents","deleting","editingIndex","addOrEdit","deleteEventType","cancelEventType","setEditEventType","groupings","setDefaultGrouping","isSaveDisabled","saveEventType","addNewEventType","eventCode","defaultPriority","valueWatcher","setLocalEvents","setDelete","resultEventType","selectRow","AlarmDecoderEventSetup","selectedDecoder","groupingOptions","hasAlarmSetupLocationRegexFlag","hasAlarmSetupLatLngRegexFlag","hasAlarmSetupExtraTextRegexFlag","canDistanceFilterFlag","hasAlarmSetupURLRegexFlag","latRegex","lngRegex","urlRegex","decoder","rootServerId","rootResponseId","createOrUpdateAlarmDecoder","getAlarmDecoder","getAlarmDecoders","getAlarmDecodersPagedResponse","alarmDecoder","linkedAlarmCount","AlarmDecoderTable","userHasViewPermissions","userHasEditPermissions","dataWithActions","getMetersAsMiles","handleDeleteClick","handleEditClick","handleAddClick","selectedDistanceConfiguration","isDeleteModalShown","reloadDistanceConfigurations","isEditModalShown","closeEditModal","confirmation","isDeleteButtonEnabled","deleteDistanceConfiguration","distanceConfigurationId","DistanceConfigurationDeleteModal","distanceConfigurationInvalid","existingDistanceConfiguration","distanceConfigurationModified","onClose","handleSubmit","onGroupSelected","currentDistanceConfiguration","eventTypesPlaceholder","currentLocation","wholeNumberFormatter","currentRadius","asMiles","mapLightMode","convertMetersToMiles","decimalPlaces","milesMultiplier","miles","TemplateModalMode","circle","defaultRadius","setupRadius","onLocationChanged","clearMap","newLatLng","setMapArtifacts","scale","labelOrigin","fontFamily","fontWeight","editable","getRadius","setRadius","setupZoom","scrollwheel","mapModeWatch","radiusChanged","MapRadius","DistanceConfigurationStore","alarmDecoderServerTypeEvents","selectedAlarmDecoder","onDistanceConfigurationChanged","retrieveDistanceConfigurationAlarmDecoders","createOrUpdateDistanceConfiguration","setAlarmDecoder","onServerTypeIdChanged","onAlarmDecoderSelected","setLocationByLatLng","latLngStr","DistanceConfigurationEditModal","DistanceConfigurationTable","alarmDecoderTable","alarmSetupTable","isHttpAlarmsSetupEnabled","httpAlarmSetupTable","AlarmSetup","isReadlonly","openNewModal","openViewModal","openEditModal","isTemplateModalVisible","templateModalMode","onTemplateModalClose","onTemplateModalAdd","onTemplateModalSave","onTemplateModalDelete","confirmClosing","onAdd","isTitleValid","isViewMode","titleFeedback","editModel","mobileRaiseLinks","isMobileRaiseLinksValid","linksClicked","linkKey","getOptionsForSlot","getLinkByRaiseId","isSlotValid","getIconClassForSlot","slotInputHandler","removeSlot","addSlot","isLinksSelectorVisible","onLinksSelectorHide","linkedModels","onLinksApply","isDeleteConfirmationShown","deleteConfirmed","deleteCancelled","isCloseConfirmationShown","closeConfirmed","closeCancelled","onApplyClick","onHide","addedToTemplate","handleAddToTemplateToggle","autoShare","handleAutoShareToggle","onIconsButtonClick","iconSetTitle","isIconsSelectorVisible","onIconSelected","iconsSearchTerm","onIconResetToDefault","iconSet","onIconClick","onBtnClick","RoundIconButton","IconsSelector","buildTitleString","repeat","RaiseTitle","titleListFormatter","formatter","iconForRow","autoShareField","autoShareEnabled","templateLink","linkedRaises","lr","displayType","getIconTitle","LinksSelector","slotNumber","selectInputId","optionsFilter","RoundIcon","termLowerCase","QuickSelectSlot","onClick","raisesNumber","MobileRaisesLinksControl","getId","UserGroupsControl","invalidFeedback","TitleControl","maxLengthExceeded","nonUnique","EMPTY_ICON_CLASS","originalEditModel","onVisibilityChange","links","quickRaiseIds","qr","getIconClassForLink","getIconSetForLink","lm","isUnsavedChanges","isTitleNotUnique","TemplateModal","MobileRaiseSetup","isPageEnabled","isUserPermittedToViewPage","getSubscriptionDetailsCardTitle","subscriptionType","openEdit","getSubscriptionExpiryDate","getLastUpdatedDate","subscriptionFeaturesTableData","subscriptionFeaturesTableFields","isTenantSettingsEnabled","isAlarmAgeWarningEnabled","postUpdateSubscription","form","ssoUrl","copySSOUrl","certificate","metadataUrl","currentOrigin","loginUrl","redirectUrl","getOriginalApiUrl","getSamlSettings","setSamlSettings","SingleSignOnSettings","updateRequiresConfirmation","isConfirmationModalShown","confirmUpdateHousekeepingSettings","resetChanges","newDaysToKeepEvents","$anyError","newDaysToKeepEventFiles","haveSettingsChanged","housekeepingSettings","daysToKeepEventFiles","daysToKeepEvents","newHousekeepingSettings","setHousekeepingSettings","HousekeepingSettingsForm","integer","validateMin","newEnable","hasChildren","newEventOutcomeId","onOutcomeChanged","noteState","haveSettingsChangedOrHasChildren","isNoteInvalid","confirmUpdateQuickEndSettings","eventCategoriesTree","normalizer","onInputChanged","fetchEventOutcomeTree","childOutcomes","EventOutcomeSelect","quickEndSettings","eventOutcomeTitle","newQuickEndSettings","QuickEndSettingsForm","minIntPrefValeInteger","maskState","tenantSettingsFormatter","newDefaultMaskValue","maxParkValueInMinutes","parkState","newDefaultParkValue","maxIntPrefValeInteger","alarmAgeWarningState","newAlarmAgeWarningSeconds","newDefaultMaskAction","maxSlaValueValidator","maxSlaValueFormatter","newMaxResponseSlaDuration","slaNotifyThresholdValidator","newResponseSlaNotifyAtSecondsRemaining","confirmUpdateTenantSettings","enforceWholeNumber","tenantSettings","tenantSettingValue","maxSlaValue","newTenantSettings","TenantSystemPrefsForm","createEventQueuePriorityColor","updateEventQueuePriorityColor","deleteEventQueuePriorityColor","updatePaginationParameters","getPriorityStyle","examplePriority","lowestPriority","highestPriority","minPriorityNumberConverted","maxPriorityNumberConverted","debouncedValidateColorPriority","minPriority","maxPriority","foregroundColor","validateColorPriority","onPriorityChange","fullModel","ColorModalItem","GenericTableState","modalItemMinPriority","modalItemMaxPriority","modalItemMaxLength","retrieveEventQueuePriorityColors","eventColorsWithPagination","AlarmQueuePriorityColors","defaultSubscriptionFeaturesTableData","definition","usage","pricePerUnit","isSamlAuthEnabledEnv","isPricePerUnitEnabled","isLimitedBillingModeEnabled","isShowPortalEnabled","loadSubscriptionForTenant","updateSubscriptionDetailsTable","SubscriptionDetails","QuickEndSettings","lastStep","onPaymentStepComplete","Signup","contactInfoInput","validateEmail","mappedCountryOptions","stateOptions","isUserAgreement","validateContactInfo","validationResult","onContactInfoChanged","isAddressLine1Complete","isCountryComplete","isCityComplete","isZipCodeComplete","isAddressValid","co","countryStateOptions","countryStateFile","json","countryStateFileContents","ContactInfo","companyInfoInput","locationChanged","nativeOn","areaLocation","setLatLongBasedOnAddress","mapAreaRegion","drawRegion","regionPolygon","setPolygonEditState","removeRegion","isProvidingLocation","latLongOfAddress","updateAreaLocation","defaultPolygonOptions","defaultMapAreaRegion","isSettingLocationForFirstTime","drawRegionWatch","polygon","renderRegion","getPaths","setEditable","initializeAutocomplete","areaLocationLatLng","setAreaLocationPosition","onAreaLocationUpdated","regionAreaUpdated","targetElement","createAreaLocationMarker","retry","groupLocationDetails","locationMarker","draggableCursor","onIsProvidingLocationChanged","onLatLongUpdated","AreaLocationSetup","trimEnd","locationSetup","onCompanyInfoChange","createCustomer","customerDetails","putCustomer","newCustomer","CompanyInfo","securityInfoInput","passwordStrength","updatePasswordStrength","SecurityInfo","paymentInfoModel","cardInfo","cardNumber","yearOptions","isBillingAddressSameAsContactAddress","billingAddress","part1","part2","part3","part4","expirationMonth","expirationYear","cvc","cardNumberPart1Changed","ccNumP2","cardNumberPart2Changed","ccNumP3","cardNumberPart3Changed","ccNumP4","currentYear","isCardExpiryInTheFuture","currentMonth","onPaymentInfoChanged","isCardNumberComplete","isCvcComplete","isFirstNameComplete","isLastNameComplete","isCardValid","isBillingAddressValid","billingAddressSameAsContactAddressToggled","PaymentInfo","SignUpStore","paymentInfo","registrationModel","emailAddress","confirmPassword","companyAddress","paymentProfileId","redirectIfAlreadyConfigured","createPaymentProfileForCustomer","register","isSureViewSystemsEmail","postToHubSpot","cardNumberParts","fullCardNumber","paymentProfile","isIncludesSV","portalId","contactFields","formSelectorClasses","formSelectorId","formValues","Phone","TimezoneId","labelToNameMap","pageTitle","pageUrl","XMLHttpRequest","setRequestHeader","onreadystatechange","responseText","SignUp","updateOutcome","deleteOutcome","addOutcome","TableHeadings","GetModalItems","eventCategoriesList","getOutcomeLevel","showChildren","hideChildren","getTitleForTemplateId","raiseToCasesTemplate","autoPreserve","raiseDispatch","raiseIncidentReport","isAlarm","isPatrol","isIncident","isActivityLog","isMobileClose","caseType","entryChanged","caseTypeSelected","CaseTypeSelect","caseTypesForUserObj","caseManagementLoaded","isEventCategorySetupEnabled","fetchEventOutcomesForUser","eventOutcome","createEventOutcome","updateEventOutcome","deleteEventOutcome","level","parent","newLevel","toggleTreeIconState","getChildren","child","showChildrenRecur","hideChildrenRecur","outcomeId","isCaseManagementEnabled","isParentSelected","deleteActionMessagesArr","isQuickEndSettingsEnabled","EventCategorySetup","setPassword","hasSetPassword","SetPassword","wasSuccessful","resetPassword","ResetPassword","loadArea","loadHome","selectedAreaPath","onAddNewArea","isBulkAddEnabled","handleShortcut","thStylingForField","openSelectedArea","onDeleteAreaSelected","altKey","timeZoneForColumn","isParent","canEditArea","onEditAreaSelected","onViewAreaSelected","onAreaSelected","saveNewArea","updateArea","visibleAreas","selectedAreaRow","defaultGroupRow","isDeleteConfirmed","areaToDelete","onAreaClicked","areasInPath","indexClicked","AreaTreePath","areaIsDisabled","disableAction","areaProp","disabledAt","tmp","AreaSetupDisableAreaButton","regionArea","ploygon","setMapOnLocation","AreaRegionSetup","groupTypeID","viewPermissions","groupsWithEditPermissions","timeZonesFormatted","bulkNestedLevels","bulkUploadResults","batchCurrentValue","selectionHistory","currentSelectionHistoryIndex","areaTreePath","areaTreePathHistory","currentAreaTreePathHistoryIndex","shortcuts","navigateBackward","navigateForward","parentIsRequired","timeZoneList","isParentRequired","csvUniteData","currentRow","indexTitle","indexParentArea","currentTitle","findTitle","isTitleAlreadyExist","isSameName","linkedRows","isManualTourActionPlanEnabled","isMaxMaskDurationEnabled","isDisableOnTestEnabled","sortingBy","fetchTenantOverview","currentFocus","activeElement","getArea","loadChildGroups","currentFocusElement","onSelectedAreaUpdated","selectedAreaClone","getRegionForArea","loadInitialState","groupsWithPermission","getRootGroups","rootGroupsPagedResponse","groupResponse","keyContacts","updateFocus","onSearchQueryChanged","updateAreaTreePath","loadRootGroups","getChildGroupsListRequest","getChildGroups","childGroupsPagedResponse","onAreaPathChanged","currentArea","srcKey","goBack","goForward","row0","groupRow","groupRowDetailsToGroupRow","addArea","createOrUpdateRegion","telephone2","telephoneFire","telephonePolice","slaBreachSeconds","disableOnTest","sortedData","sortCsvData","createAreasFromCsv","tz","createAreaBatches","nestedLevel","depth","csvForm","areasWithExistingParents","uploadBatch","batchSize","batch","bulkAddAreas","uploadResult","areaListCount","defaultProgress","progressOptions","currentValue","refreshGroupCache","bulkErrorMessage","errorGroup","csvError","deleteArea","setSelectedAreaRow","canEditGroupSyncAreas","getRegionForGroup","AreaTable","AreaSetupPage","putAsset","disableAsset","cursor","initialColour","startColour","colourWatch","AssetColorPicker","syncAssetFeatureEnabled","groupSyncTitle","assetOnlyTypes","syncAssetEnabled","createOrUpdateAsset","getPagedStandaloneAssets","assetsWithPagination","AssetOnlySetup","putAssetType","deleteAssetType","externalId","selectedAssetType","hasLinkedAssets","externalIdsString","createOrUpdateAssetType","getAssetTypes","assetTypesWithPagination","mapAssetTypes","externalIdsList","suiteControlled","parseExternalIds","AssetTypeSetup","AssetSetup","showFilters","getMapItemIcon","selectedMapLayerItemTypes","mapDataInBounds","selectedLayerFilters","areaTreeSelectIsOpen","viewingGroupId","elevationValuesElevationsArray","selectedFloor","goToMapLayer","hiddenMapLayerIds","mapLayerImageStatusTitle","toggleMapLayerVisibility","startEditingMapLayer","startAddingNewLayer","closeLayerSetup","selectedMapLayerDimensions","selectedFloorForLayer","isAddingLayer","isEditingLayer","onLayerImageChanged","onLayerInfoChanged","onMapLayerDeleted","onMapLayerSaved","onMapLayerEditToggle","relocatedMapLayerItems","mapLayerItemId","openMapLayerItemSetupModal","saveChangesToMapLayerItems","cancelChangesToMapLayerItems","isNoAddressErrorShown","selectedAreaDetails","getShortKey","beginPlottingItem","getIcon","isDisabled","currentLabel","elevationSelected","isNumber","selectedElevation","setSelectElevation","providedElevations","useProvidedOnly","valueToAdd","needToAddDefaultOptionOnLoad","presetValue","foundOption","elevationLabel","char","fromCharCode","ElevationSelect","closeMapLayerSetup","layerInfoUpdate","updatedMapLayer","getDefaultValueForElevationOptions","isChangingImage","previewImgSrc","onMapLayerImageClick","rotation","deleteMapLayerDialog","showElevationError","saveMapLayerDetails","resetMapLayerData","isDeleteMapLayerVisible","deleteLayer","mapLayerTemplate","se","nw","calculatedNw","calculatedNe","calculatedSe","calculatedSw","IMAGE_SIZE_LIMIT","onMapLayerUpdated","viewingFloor","isValidElevation","onSelectedFloorUpdated","isMapSetupUseElevationLabels","isMapSetupElevationsEnabled","updatedLayer","dataURItoBlob","putMapLayer","errorTitle","permissionsErrorAction","notifyError","dataURI","byteString","atob","unescape","mimeString","ia","charCodeAt","deleteMapLayer","onFileChanged","fileReader","readAsDataURL","MapLayerSetup","updatedMapLayerItem","isEditModeEnabled","availableDevices","getDeviceSelectPlaceholder","debounceFilterQuery","selectedDevice","mapLayersInBounds","setLayerDisplay","selectedLayers","mapLayerDisplay","toggleEdit","deleteMapLayerItemDialog","resetMapItemData","saveMapItemDetails","deleteMapLayerItemDelegate","mapItemObject","getObjectId","Geofence","isEditMode","regionPath","mapLayerIds","typeDictionary","loadDevices","mapItemTemplate","setDefaultDevice","setDefaultLayer","currentFloor","availableDevicesContainsResponse","getDevicesByMapLayerItemType","availableDevicesContainsDevice","putMapLayerItem","deleteMapLayerItem","getDeviceTypeArticle","MapLayerItemSetup","addressNotFoundErrorDuration","defaultLocation","roofTopZoomLevel","areaZoomLevel","rectangleOptions","previouslySelectedAreas","selectedItemType","showMapLayerInfoBox","isPlotting","isLoadingArea","isSavingMapLayerItems","groupGeoCodeLocations","mapInstance","mapOverlays","mapMarkers","divOverlayContainer","infoWindow","newMarker","previewLayerOverlay","rotationContainer","rotationContainerCenter","rotationHandle","mapLayerPlaceholderRectangle","onMount","mountMap","getLatLongForGroup","latLongForSelectedArea","refreshMapData","createMap","mapViewportUpdated","mapClicked","RECTANGLE","onRectangleComplete","hideRotationElements","setRotationElementDimensions","itemLayer","onMapLayerItemPlot","newMapLayerItemTemplate","setCursor","previouslySelectedGroup","onViewingAreaUpdated","showNoAddressError","nwLatLng","seLatLng","latCenter","lngCenter","displayLayersAndItems","displayLayers","displayItems","filteredMapData","createOverlayForMapLayer","mapMarkerItem","isDraggable","vueThis","updateMarkerItemPosition","mapLayerItemCopy","mapLayerItemIndex","imageSrc","createOverlay","overlay","hideMapLayers","createPreviewOverlay","getNewGoogleMapsRectangle","onRectangleBoundsChanged","setVisible","loadRotationElement","Rectangle","updatePreviewOverlay","mapOverlay","mapMarker","rect","transform","len","rotate","deltaX","deltaY","angle","mousedown","mousemove","mouseup","pageX","pageY","closeMapLayerItemWindow","mapLayerItemDeleted","mapLayerItemSaved","mapLayerItemSetupModal","mapLayerSetupModalInstance","propsData","$mount","$on","eventData","InfoWindow","pixelOffset","setZIndex","panBy","rectangle","updateDimensions","rotationValue","setSelectedLayerBounds","toJSON","itemToUpdate","originalMapLayerItem","mapLayerToShow","indexToRemove","MapSetup","getGroupingTitle","isSetupModalShown","closeSetupModal","selectedDeleteRule","closeRulesEngineSetupModal","configureCurrentRule","currentRule","existingRule","ruleIsInvalid","saveCurrentRule","titleValid","scopeValid","scopeUpdated","groupingUpdated","ruleScope","triggersValid","actionsValid","validationClass","cardTitle","cardContent","hasValidation","componentValidation","checkHasChanged","valueA","valueB","RulesCard","titleIsValid","scopeIsValid","triggersIsValid","actionsIsValid","updateGrouping","onEditingRuleChanged","updateRuleScope","setDataForCloseModal","reloadSession","reloadSessionDebounced","StandardLoginSession","RulesEngineSetupModal","RulesEngineStore","RulesEngineDeleteModal","rulesWithPagination","ruleData","RulesEngineSetup","updateSelectedItem","advancedFilterId","updateSelectedArea","titleFilter","onAdvancedFilterInput","systemViewTree","requestParams","onTreeUpdated","rerenderKey","loadOptions","itemSelected","labelClassName","getNodeIcon","ExternalMapLayerTypeID","loadMoreLabel","onTreeChanged","updateNodeWithMoreOptions","totalResponses","objectTypeId","getSystemViewSetupEntities","healthFilters","updatedParent","totalChildItems","loadMoreNode","isExpandable","shouldDisplayData","css","GroupSync","loadMoreOptions","treeSelect","emitItemSelected","applianceNode","serverNode","groupSyncNode","TreePicker","VueTreeselect","BTooltip","dropdownShown","activeFilterName","advancedStatusFilterId","changeActiveFilter","canModifyFilter","createFilter","clearActiveFilter","createFilterModalShow","editingFilter","advancedStatusFilters","finishEditFilter","cancelEditFilter","confirmDeleteModalShow","getAdvancedStatusFilters","createAdvancedStatusFilter","advancedFilter","updateAdvancedStatusFilter","deleteAdvancedStatusFilter","systemViewAdvancedFiltersApi","getDeviceNameRule","updateFilterRule","getDeviceTypeRule","getLastTimeAlarmRule","getPeriodAlarmCountRule","disableSubmit","ruleSettings","filterRuleType","RuleIdentifier","deviceName","DeviceNameAdvancedFilter","ruleUpdated","DeviceTypeAdvancedFilter","comparisonOptions","ApplicableDeviceType","isRuleApplicable","period","greaterThan","LastTimeAlarmAdvancedFilter","updateApplicability","deviceTypeRule","PeriodAlarmCountAdvancedFilter","rulesCollection","emptyAreaAfterInput","resetNewFilter","onShow","combineFilters","filterRule","SystemViewAdvancedFilterEdit","getAvailableAdvancedFilters","isAdvancedFilteringEnabled","SystemViewAdvancedFilters","rootArea","selectedGroupId","previousAdvancedFilterId","excludeHealthyItems","excludeUnhealthyItems","excludeUntestedItems","onStatusFilterChange","setupAreas","onSelectedGroupIdChanged","getTree","onHealthStatusCountChanged","onTitleFilterChanged","updateTree","getSystemViewTree","setLeafNodes","isDefaultExpanded","addLoadMoreNode","updatedTree","SystemViewTree","OpsLinks","selectedNode","selectedComponentText","getComponentToLoad","performHealthHistoryRefresh","healthHistoryIteration","toggleCameraPreviewModal","setupResponse","getSystemOverviewCols","cameraSummary","shouldRefreshHistory","locationDetails","linkedAlarmInformation","serverTitle","isGroupSync","lastSyncedAt","lastAlarmedAt","SystemOverview","markers","noLocation","setupMap","setMarkerLocation","removeMarkers","locationArray","getLocationArray","markerLocation","SystemViewMap","visibleAlarmSetupFields","alarmInformation","autoHandled","ignore","lastOccurred","_showDetails","toggleDetails","alarmActions","alarmActionsFields","alarmAutomations","getDescriptionParts","descriptionPart","emphasised","rawString","boldPartRegEx","currentStringNumber","stringFormattedDictionary","descriptionBeginningPart","lastIndex","SystemViewAlarmAutomations","alarmSetupFields","SystemViewAlarmSetup","buttonVariant","tooltip","pingResult","debouncePing","performPing","isServer","fetchServerId","serversListFromStore","pingDevice","IsError","Message","Data","EventId","deviceInfos","PingButton","showPreviewModal","retrieveCameraDetails","canUseSystemView","getSetupSummary","summary","updateMapData","mapLayerItems","SetupOverviewCamera","CameraPreview","deviceSummary","retrieveDeviceDetails","SetupOverviewDevice","SetupOverviewAlarmSetup","applianceSummary","firstConnection","retrieveApplianceDetails","SetupOverviewAppliance","serverOverview","integration","showPassword","passwordButtonText","retrieveServerDetails","SetupOverviewServer","logs","fetchHealthHistory","loadMoreButtonText","hasNextPage","lastLogId","onNodeChange","getSystemLogs","logId","HealthHistory","BAlert","BTable","BButton","BCardFooter","groupSyncSummary","syncSystemTitle","identifier","additionalConfig","lastRun","nextRunDate","retrieveGroupSyncDetails","SetupOverviewGroupSync","alarmSummary","serverTypeEventTitle","alarmGrouping","customFieldsForObject","alarmCustomFieldType","defaultMaxCharacters","maxCharacterDivider","retrieveAlarmDetails","onWindowResized","retrieveCustomFieldsForObject","mapLocations","innerWidth","SetupOverviewAlarm","Appliance","SyncSystem","SetupOverview","isSystemViewEnabled","mapLayerModal","layersList","mapLayerTableIsBusy","ellipseUrl","setSelectMapLayer","setDeleteMapLayer","toggleLayerVisible","selectedMapLayer","getMapLayerTitles","enhancedMap","deleteLayerModal","getTableItems","getTableFields","canEditProperties","isSetup","isExternalMapLayerPropertiesEnabled","layerParameters","ExternalMapLayerPropertiesSetup","currentExternalMapLayer","saveExternalMapLayer","exl","externalMapLayerTypeId","typeChange","urlChangeDebounce","clickHandlerList","selectedClickHandler","refreshIntervalFormatter","secureChange","isSecure","externalMapLayerTypeID","parameters","properties","externalMapLayerParameterId","checkNameOrTitle","setDefaultValue","alias","DeleteExternalMapLayerModal","functionName","emlTemplate","dataObjectURL","customClickHandler","customClickHandlerAttribute","defaultVisible","tokenServiceUrl","refreshInterval","urlChange","modalToggle","ArcGIS","setArcGisParametersOnLayer","FirstTwo","getArcGisParameters","requestedLayer","parameter","emlp","newParam","ExternalMapLayerParameter","localParam","apiParam","filterParam","doesntExist","ExternalMapLayerModal","layerTitles","externalMapLayerType","ExternalMapLayerSetup","handleSearchString","showCreateModal","handleSelectedGroup","getScheduleTypeState","scheduleTypeToggled","getColor","enabledFilter","canDelete","onDeleteClick","onEditClick","updateToken","performGetSchedules","schedulesWithPagination","nextOccurrenceDisplay","nextOccurrenceAreaTimeDisplay","nextOccurrenceAreaTime","nextRunLocalTime","nextRunAreaTime","parentSchedule","triggerGetEvents","onReloadRequiredChanged","changeRequired","SchedulesTable","scheduleTypeSelect","triggerFiltering","reloadData","DefaultColour","ScheduleSetup","SchedulesCalendar","publicHolidays","putPublicHoliday","mapDtoToApiContract","publicHolidayId","publicHolidaysWithPagination","apiContractToPublicHolidayDto","mappedHoliday","publicHolidayDate","month","repeatYearly","PublicHolidaySetup","isSchedulesEnabled","canAccessSiteSetup","canAccessSchedules","NO_PERMISSION_TO_PAGE","Schedules","maskingReasons","putMaskingReason","deleteMaskingReason","postMaskingReason","deleteMaskingReasonMessage","loadMaskingReasons","isMaskingAdvancedFeature","getPagedMaskingReasons","getMaskingReasonsPagedResponse","maskingReason","createMaskingReason","updateMaskingReason","maskingReasonId","validateForm","isGroup","isResponse","MaskingReasonsSetup","isNotificationTemplatesEnabled","hasNotificationTemplatePermissions","notificationTemplates","updateNotificationTemplate","deleteNotificationTemplate","createNotificationTemplate","getPaginatedNotificationTemplates","concatContactGroupTitles","contactGroups","notificationTemplateId","contactGroup","contactGroupId","selectedNotificationTemplate","previewEventId","requestNotificationPreview","minHeightStyleString","applyMaxHeight","focusOut","clickAndFocus","manualFields","addManualField","addCustomManualField","placeholders","addPlaceholder","closeMarginModal","marginsValid","onMarginInput","marginModalOpen","editingMargin","debounceOnValueChanged","editor","focusWhenReady","currentMargin","currentFormatStyles","fontName","handleFormatUpdate","selectedContent","getContent","vars","updateEditorStyle","onEditorSetup","closest","stopImmediatePropagation","isPrintTemplate","ui","registry","addButton","onAction","openMarginSetup","initialiseTinyMCE","tinyMCEConfig","editorContainer","resize","toolbar","content_style","editorStyles","promotion","visualblocks_default_state","pagebreak_separator","noneditable_class","menubar","relatedTarget","setupStyles","formatMargin","formatStyles","iframeElement","insertContent","manualField","letter","onReadonlyChanged","RichTextEditor","contactGroupSearchToken","retrieveContactGroups","isContactGroupsEnabled","notificationTemplate","searchParams","notificationTemplateTypeId","Event","notificationDocumentTypeId","Pdf","manualInputFields","previewNotificationTemplate","getContactGroups","cg","contactGroupIdToTitle","matchingContactGroup","_columns","placeholderItems","isInvolvedPartiesEnabled","involvedPartyPlaceholder","NotificationTemplateSetup","loadFeatures","Contacts","canViewUserSetup","userHavePermission","featureEnabled","canViewAssetSetup","MaskingTypeEnum","PlatformTypeEnum","openEventQueue","inQueue","inProc","timeoutId","poll","getEventQueueState","statusWatcher","isNewAlarmAudioEnabled","oldValueTotal","newValueTotal","isMaskingReasonsFeatureEnabled","selectedMaskingReason","formatterForHoursAndMinutes","maskHours","validateRange","hoursRangeWarning","maskMinutes","validateMaxDuration","hoursMinutesDurationWarning","timeZoneIana","maskUntilDateTime","maximumMaskUntilDate","isMaskingReasonNoteFeatureEnabled","maskingNote","formInvalid","maskConfirm","getMaskingReasons","hasResponses","isMaskUntilFeatureEnabled","isMaskUntilValid","responsesMin","maxHours","maxMaskHoursDuration","onMaskTypeChange","onMaskDateTimeChanged","futureDate","evaluateMaskingFormValid","maskAlarms","getMaskDuration","showConfirmationButtons","validateMaskDuration","isHoursMinutesInputValid","maskDuration","isDateTimeInputEnabled","maxTime","asMinutes","Template","selectedCaseType","caseData","Summary","raiseToCaseManagement","raisingToCases","TemplateId","raiseToCases","treeShortcut","isClickableChildNode","selectedGroupIDs","mouseDown","selectNode","openNode","showState","nodeSelected","nodeDoubleClick","nodeOpened","scope","clicks","allowDoubleclick","clickTimer","args","nodeUpdated","badges","automation","badgeEntry","renderChoiceEnum","inputStylingClass","onChange","dateValue","EndTypes","EventColor","ScheduleTypes","DeletionType","ScheduleInfo","Cyan","Orange","Purple","setValues","drawCanvas_","draw","ctx","lineJoin","textBaseline","panes","getPanes","mapPane","projection","getProjection","fromLatLngToDivPixel","getVisible_","clearRect","strokeStyle","fillStyle","font","lineWidth","strokeText","fillText","textMeasure","measureText","textWidth","getMarginLeft_","minZoom","maxZoom","mapZoom","OverlayView","walkingIcon","starIcon","trackedAssetIcon","cachedTrackedAssetIcon","iconCache","getCachedIconUrl","activeEventShare","cachedIcon","isSelect","hasActiveShare","iconUrl","setCachedIconUrl","getAssetIcon","cachedUrl","svgString","getTrackedAssetIcon","isReportModalShown","eventSummary","onGenerateReportClick","downloadIncidentReport","selections","IncludeMap","IncludeAuditTrail","IncludeClips","ReportData","incidentReportID","reportID","downloadUrl","IncidentReportDownload","generatingReport","onIncidentReportShownChanged","onEventSearchIncidentReportShownChanged","onEventSummaryChanged","onSelectionChanged","elevationList","displayElevation","elevationOpt","gotoElevation","canGoDown","downLevel","canGoUp","upLevel","layersAdded","LayerMap","itemsAdded","ItemMap","markersByTypeAndObject","ItemTypeObjectMap","alarmsAdded","eventIcons","activeItems","activeAlarmIDs","activeItemIDs","adHocAlarmMarkers","pendingAdHocMarkers","mapCenter","clickCircleEventID","clickCircle","layersVisible","noMapData","cameraNearbyRadius","staticMapIcon","showMapToggle","onEventLocationChanged","elevationBounds","eventElevations","alarmElevation","gpsLocation","showCircle","loadRadius","onAdhocLocationEventRecordsChange","removeAdhocAlarmMarkers","createAdHocMarker","onActiveMapItemsRequiredChange","oldRequired","updateDisplayElevation","loadInBounds","layerId","layerItemId","eventrecordId","currentElevation","elevationFloor","isShowMarkerByEventDetail","setMarkerByEventDetails","itemLayerIDs","isElevated","formattedEventsByEventId","isProcessing","mapItemIDs","markerTypeVisibilityByID","LayerTypeMap","itemId","markerType","markerTypeVisible","ItemObjectMap","activeStatus","createCircle","nearbyCameraRadius","editted","getItemsInCircle","squareBounds","newActiveItems","itemDistances","activeMapLayerItems","uniqueDistances","higherFloors","updateElevation","lowerFloors","toggleVisibility","newMapItem","ByObject","isConfirmationShown","hideUpdateDialog","hideCloseConfirmationDialog","isAddingNew","getRow","warningMessage","newEntry","componentItemChanged","checkIsValid","componentChangeNewEntry","getValidationErrorForItem","isValidCustomComponents","confirmAdd","isCheckingEffectsOfSave","performSave","saveActionErrorsResult","isSaveConfirmDialogShown","isSaveConfirmButtonDisabled","confirmSave","cancelSave","saveActionMessageResult","saveMessage","modalItemRefresh","validationComponent","dataRow","clearNewEntryModelValues","setupEntry","showCloseConfirmationDialog","showDeleteConfirmationDialog","hideDeleteConfirmationDialog","itemToAdd","componentRef","isComponentWithRequiredFields","isAnArrayWithALeastOneItem","modelItem","itemClone","util","clearEntry","isEquivalent","aProps","getOwnPropertyNames","bProps","propName","getSelectedModalItem","current","onHasChangedUpdated","fieldParams","$model","propertyInModalItems","customPermissions","validationModel","handleModalHidden","deviceServiceAddress","Proxy","previewDetails","enforceModalButtonDismissal","singleEvent","eventCloseError","outcomeTree","useEventOutcomeTask","outcomeSelectionPath","outcomeChoice","http","isEventOutcomeValid","onConfirmClicked","confirmBtnText","cancelCloseEvent","getOutcomes","lastRecord","outcomeSelectionControls","SharedUsers","lastOutcome","resetData","eventOutcomeNote","eventCloseModal","isVirtualAssistSummaryEnabled","aiDataApiKey","getAiDataUrl","aiDataUrl","executivesummarywidget","mount","onSummaryGenerated","loadOutcomes","buildOutcomePath","triggerReload","closureResult","updateClosedEventOutcome","closeSingleEvent","isReloadEventQueueEnabled","getReloadEventQueuePref","isAutoFeedAlarmsEnabled","eventIds","closeEvents","getParent","nodeOutcome","findOutcome","recurseOutcome","IdToFind","checkOutcomeInPath","idToFind","closeText","Fail","AutoFeedAlarms","STRINGIFY_PAYLOADS","manifestRequest","apiUrl","credentials","mapViewport","getDefaultMapBounds","searchAssets","mapQuery","noUserAsset","getMapLayer","searchAssetTypes","assetIds","assetsUpdate","getAssetAuditHistory","beforeEventRecordId","maxRows","getAssetsStatusHistory","getRecentStatuses","getRecentStatusesMultiAssets","getMapLayerAssetStatus","statusId","AlarmQueueFilterID","loadAlarmQueueFiltersForGuards","mappedFilters","loadEventQueueFiltered","restoralReason","Reason","loadMore","allDevices","sample","devicesSearchNear","baseUrl","externalAxios","auditServiceEndpoint","getDevices","templateID","loadEventHandle","allowInProcessing","loadResponseStates","loadAlarmQueueFilterBounds","loadRaisedCaseNumber","ignoreDuplicates","EventRecordID","uniqueId","loadGroupSummary","extendTest","searchTasks","searchPhrase","TaskTypeID","TaskCategoryID","TaskData","TaskText","assignAllTask","categoryReorderRequest","loadActionPlanActions","loadTasksByCategory","loadGuards","loadGuardTypes","loadGuardsForFilter","addNewGuard","guard","assignGuardToZone","removeGuardFromZone","updateGuard","deleteGuard","dispatchGuardID","loadGuardsForEvent","loadDispatchedGuardsForEvent","dispatchGuard","dispatchGuardRequest","getGroupTreeNodeExtend","getGroupTreeNodeChildrenCount","getGroupPathToRoot","getGroupTreeNodes","groupIds","nodesAsQueryString","searchGroupTree","advancedSearchGroupTree","subtreeGroupId","searchGroupSubtree","subtreeRoot","searchUsingAdditionalFields","getFullGroupsTree","parentGroupId","searchGroupFull","eventTypeIdsAsQueryString","responseIdsAsQueryString","loadPatrolZones","addPatrolZone","updatePatrolZone","deletePatrolZone","PatrolZoneID","loadMobileGuardsForEvent","extendGuardSession","userDevicePayload","mobileLogout","guardID","GuardID","UserDevice","eventRecordPayload","Details","ObjectID","EventRecordTypeID","loadCallSigns","setGuardForUser","guardId","loadGuardForUser","loadGuardStatus","loadUnavailableStatuses","setUnavailableStatus","unavailableStatusId","unavailableReason","unavailableStatusPayload","GuardId","UnavailableStatusId","UnavailableReason","loadDispatchRequestsForGuard","claimDispatchRequest","dispatchQueueId","claimPayload","DispatchQueueId","unclaimDispatchRequest","unclaimPayload","activateDispatchRequest","activatePayload","inactivateDispatchRequest","inactivatePayload","guardArrived","statusPayload","guardAvailable","addDispatchRequest","preferredGuardId","patrolZoneId","requester","requesterDescription","dispatchRequestPayload","PreferredGuardID","Requester","RequesterDescription","Location","SiteTitle","finishDispatchRequest","finishPayload","loadNotesForEvent","loadEventNotes","updateMatrixCell","sessionRequestConfig","loadTemplateDetails","serverTypeGroupID","loadOrCreateMapLayersByGroupID","getMapLayerById","loadMapLayersItemsByMapLayerId","getMapLayerItemsByBounds","getContactRoles","fetchServersByGroup","getContactsForGroup","AuthCode","Token","getContactRole","getAvailableStatuses","setMobileUserState","getContactRoleGroups","updatedContactRole","newContactRole","personalInfo","getReportTemplates","reportKey","enableArea","disableArea","serverTypeEventUpdate","serverTypeEventDelete","retrieveServer","getServerTypes","getApplianceList","serversChangeAppliance","fromApplianceId","toApplianceId","updateSecondaryAppliance","secondaryApplianceId","fetchGuardTours","fetchGuardTour","guardTourId","addGuardTour","guardTour","deleteGuardTour","updateGuardTour","getWeeklyDisarmSchedule","createDeviceResponse","getDefaultResponseGrouping","getOnlineUserLocations","validatePinCode","validatePinCodeRequest","eventShareInfo","uri","getExtendedDevicesByType","getAllDevicesByType","sendEventNotification","idsAsQueryString","pagedServerTypeEvents","serverTypesAsQueryString","serverTypeIds","pageRequest","deleteSyncSystem","groupSyncsForSyncSystem","RetrieveLatestQueueStateForGroupSync","addOrUpdateGroupSync","groupSync","deleteGroupSync","queueGroupSync","retrieveLastSyncQueueStates","syncQueueForGroupSync","auditTrailForGroupSyncQueue","syncQueueId","latLngString","alarmId","responseAction","getAlarmAutomation","actionId","getAutomationLimit","healthCheckRequest","devicesToSkip","responsesToSkip","maxSystemLogId","promoteRequest","dismissRequest","getServerTypesForTenant","createNewCameraPreset","updateCameraPreset","presetPayloads","updateEventOutcomeByNotification","joinClosedEvent","userLimit","excludeUsers","ExcludeUsers","apiRoot","ImmixCloudV2ApiHttp","reachedEndOfHistory","assetHistory","selectedAssetID","endOfHistory","loadingHistory","showExactTime","tdClass","currentRows","loadAssetHistory","nextHistory","oldId","newId","rowCount","fromStart","lastEventRecordId","OnTestScheduleType","forPeriod","untilDate","$dirty","onValidate","hasErrors","OnTestScheduleForm","timeHasValue","dateHasValue","needsChecking","requestDate","selectedCameras","deselectCamera","selectCamera","DEBOUNCE_WAIT_TIME","cameraDeviceID","cameraDevice","isIconActive","launchModal","startDrag","containerPosition","clientX","clientY","movementX","movementY","onmousemove","dragging","onmouseup","endDrag","Draggable","svgClass","toggleFeature","featureHasChildren","isReleased","supportLink","parentName","localFeatures","localCopyFeatures","localFeature","onFeaturesChanged","onParentDisabled","EnhancedMapMode","MAXIMUM_INTEGER_VALUE","AreaDetailsIndexValues","CONTACTS","SCHEDULES","NOTES","HISTORY","GenericTableConstants","localSet","rowClass","onRowClicked","limitUnackedCount","maxUnackedCount","assetList","getTypeTitle","currentlySetting","typeTitle","unackedCount","CustomFieldRoute","createCustomField","tableTypeId","updateCustomField","deleteCustomField","customFieldsApi","CustomFieldsApi","eventAreaDetails","showHyperlinks","disableContacts","isContactsEnabled","areaContacts","phone","scheduleSearchFilter","selectedScheduleTypeOptions","areaCustomFieldType","showValidatePinCodeModal","modalVisible","resetModalValues","pinCodeToValidate","validating","UserId","PinCode","pinCodeIsValid","ValidatePinCodeModal","queryHasContacts","contactFilter","eventUniqueRoles","isLoadingContacts","eventActiveRole","roles","roleIndex","con","setFilterModalOpen","getCustomFieldCollapseState","hasPinCode","customFieldPriorities","contactCustomFieldType","showColumnModal","contactTableColumns","getCustomFieldType","customFieldCharacterLimit","CustomFieldPriorityDisplay","defaultMinPage","defaultRole","customFieldsColumnKey","pinColumnKey","customFieldsCollapseOpen","getAreaContacts","roleSearchTerm","mapEventUniqueRoles","mapCustomFieldPriorities","matchingCustomField","uniqueRoles","resetCustomFieldCollapseState","showContacts","AreaContacts","dataCyTag","prefixes","tel","dataCy","HyperlinkContact","scheduleCollapseOpen","loadEventAreaDetails","showSchedules","loadSchedules","onEnabledFilterChanged","onScheduleSearch","newScheduleTypes","getNewServerDetailsTemplate","logDisarmedAlarms","showEdge","edgePath","edgeUser","edgePassword","getDeviceTypeCountsDefaults","accountNumber","serverLineProfileId","getNewDeviceDetailsTemplate","quality","hasPtz","cameraSettings","audioSettings","relaySettings","orderNum","relayType","liveVideoDelay","supportsAudio","receivesAudio","transmitsAudio","transcodingAllowed","getAudioSettingsDefaults","receiveEnabled","transmitEnabled","getCameraSettingsDefaults","qual","telemServerId","telemSpeed","getDoorRelaySettingsDefaults","onOffEnabled","pulseEnabled","stateSwitchEnabled","stateSwitchDefaultState","getOutputRelaySettingsDefaults","getDeviceResponseRecordsRetrievalStatusDefaults","allAlarmsRetrieved","allServersRetrieved","allFilteredServersRetrieved","allCamerasRetrieved","allFilteredCamerasRetrieved","allAudiosRetrieved","allFilteredAudiosRetrieved","allDoorsRetrieved","allFilteredDoorsRetrieved","allOutputsRetrieved","allFilteredOutputsRetrieved","getDebouncePeriod","DeviceTypeIdentifier","ServerModalStartTab","showDeleteConfirmation","sidebarClass","operatorText","selectorCols","parentRuleCondition","selectorComponentValidationUpdated","logicStep","selectorComponentValidation","valueComponentSet","valueComponent","valueComponentValueUpdated","valueComponentValidationUpdated","valueComponentValidation","addSubRule","isRoute","subRule","ruleScopeLevel","subRuleUpdated","subRuleValidationUpdated","subRuleDeleted","selectorOptions","selectedValueUpdated","excludes","requires","defaultActionOptions","isActionPlanRegexEnabled","conditionSection","triggerOptions","parentTypeId","actionOptions","scopeOptions","optionMatch","so","RulesSelector","ruleValidation","subRulesValid","sr","conditionTypeChanged","hasValueCell","validateRule","logicStepUpdate","updateComponent","notValid","ActionType","logToCCure","ccureMessageInput","logTypes","logTypeID","logType","logTypeAll","postLogMessageAll","peekMode","filterOff","filterOn","getNewCount","awaitingAck","selectedEventRecordID","timeSincePeekUpdate","showAckAllBar","ackAll","ackingAll","hideMessages","newestMessagesAt","isMessagesFilter","onScrollToEnd","areaTimeZoneTitle","viewRecord","convertUtcDateTimeToLocalTimeString","displayCamera","CanLinkAlarmToCamera","linkCamera","canDeviceHaveClip","recordHasClips","recordClips","isAutoPopulateEnabled","getRestoredIconEnabled","setForceRestoreOpen","isOnTestEnabled","areEventFilesAvailable","checkCurrentlyDownloading","downloadAttachedFiles","launchMaskingModal","jumpToLocation","isEventRecordOfExpandableType","showEventRecordDetails","hideEventRecordDetails","deviceTime","getExpandedUrls","isDownloadRawEmailEnabled","isDetailsPopoutModalShown","poppedOutEventRecord","enableDetailsPopout","parsedEventRecords","fileAttachmentsEnabled","invalidNote","auditNote","savingRecord","filesChanged","fileListHasValue","selectedFileNames","resetErrorModal","errorExists","isSupplementalNotesEnabled","postSupplemental","selectedResponseId","onMaskingModalClose","isMaskingModalShown","disableDetailsPopout","createResponseDialog","responseBuilderForm","getDefaultResponseTitle","matchingEventType","shouldLinkCamera","CreateNewResponse","maxTitleCharacters","maxValueCharacters","customFieldsEmpty","customFieldAlarmTableType","customFieldObjectValues","retrieveCustomFieldValues","EventRecordDetailsPopout","messagesFilterTitle","fetchMutation","filteredTypeIds","firstUpdateEventId","fileList","fileListName","currentDownloadingRecord","peekLastUpdated","_renderedFilterIndex","_renderedIndex","_renderedRecords","rendering","awaitingNew","downloading","showRawDataModal","noFilterIndex","eventRecordsWithFiles","showVideoAvailableColumn","CameraEvent","isAcknowledgeAllEnabled","selectedRecord","timeZoneTitle","fileNamesUploaded","configureFilters","startRequestingEventRecords","onEventIdChanged","deviceFilter","isDevicesEnabled","messagesFilter","isMessagesEnabled","peekUser","createRecord","resetFileList","fileUploadForm","showMaskAlarmDialog","maskAlarmDialog","maskedAlarmForEvent","isAlarmMasked","sendUnlinkCameraRequest","arrayFiles","invalidFiles","fileSizeLimit","fileUploader","onAuditNoteChanged","onEventRecordsWithClipsChanged","parsedEventRecord","eventRecordDetails","httpRegex","internalRegex","httpsPrefix","internalPrefix","urls","urlPath","indexCalc","clipIndexes","indexes","currentClips","clipsForRecord","clipsExist","focusOnIncompletedGroup","loadingActions","focusTask","onSaveTask","addingNewTaskToNewGroup","onAddNewTaskToNewGroup","onAddNewTaskToGroupFromLibrary","openActionPlansModal","isTaskCategoryTitleValid","newTaskCategoryTitle","onCancelAddNewTaskToGroupFromLibrary","isNewTaskRequired","onAddTasksToGroupFromLibrary","showActionPlansModal","closeActionPlansModal","onNewActionPlanSelected","selectedTaskType","createId","onTaskTypeChange","newTaskType","resetValue","onNewTaskUpdated","AddNewEventTask","onCloseEventHandler","usersToAssign","assignedUser","onAssign","hideModal","multipleAssignControl","MultipleAssignToAction","selectCategory","filteredTasks","selectedCategories","canAddIndividualActionsOverride","categoryInFilter","filterLowerCase","categoryPrevState","ActionLibrarySimpleList","hasActiveTasks","completedTasks","EventUserID","onAssignAllTasks","addingNewTask","canCollapseCompletedTasks","showCompletedTasks","eventShares","onAssignTaskToUser","onTaskCloseEvent","onAddTask","onCancelAddingTask","taskHasComponent","passTask","passTaskEventClosure","onReOpenTask","showAdvanced","showUserSearch","removeUser","searchedUsers","isSearching","selectedUsers","totalUsers","notificationName","templateUsers","replaceKeywords","NotificationTask","taskOutcome","submitOutcome","Button","taskOutcomes","ChoicesTask","callList","callResultYes","callListIndex","fullname","callResultNo","callResultExit","callName","contactRoleRenderType","bothNumbers","isContactRoleRenderType","configureCallContacts","Parent","CallContactTask","controlActionType","control","controlAction","ControlTask","taskResult","availableGuards","actionTypeWatcher","loadTaskType","completedTask","CompleteTaskLine","sortedTasks","completedTaskLine","completeTaskPayload","EventTaskID","TaskComplete","Result","taskCompleted","EventTaskGroup","actionPlanSelected","confirmActionPlanSelectedConfirmed","confirmActionPlanSelectedClosed","selectedActionPlan","categoryLink","setDefaultSelectedActionPlan","decoratedActionCategories","onShowModalChanged","bvEvent","headerCloseTrigger","ActionPlansModal","ActionPlansOverrideModal","overrideActionPlan","eventTasksApi","focusedActionTask","actionLibrary","updateEventTasks","onTaskTitleChange","actionLibraryList","selectedActions","newEventTask","newGroup","taskGroupRef","incompleteTasks","currentActionTask","nextTask","groupRef","taskRef","plan","TaskContainer","autoFeedTooltipMessage","autoFeedVariantProp","toggleAutoFeed","autoFeedEnabledMessage","autoFeedDisabledMessage","predefinedMessage","freeFormMessage","PredefinedMessage","FreeFormMessage","postLogMessage","resetActions","ccureapi","ImmixCloudV2ApiHttpCCure","forceRestoreEventRecord","restoreModal","btnType","ahref","debouncedFunction","debounceTimeout","apiKeyApi","ApiKeyApi","disarmReasonId","durationInMinutes","maskingApi","MaskingApi","FriendlyStartTime","_data","dataQueue","sourceBufferUpdating","media","sourceBuffer","updateBufferFromQueue","endOfStream","dataQueueToProcess","dataQueueLength","buffersLengths","totalBufferlength","b1","b2","offset","poppedData","defaultEndpointAddress","containerisedEndpointAddress","allRecords","excludeAuditClips","fileId","Range","responseType","customFileName","upload","uploadEndpoint","videoBlob","imageFilename","getEndpointOrigin","showEventHistory","showEventDetails","siteTitleEllipse","showAreaNotesModal","isEventEdit","inactive","openSharing","showNotificationModal","openInvolvedParties","isRaiseCaseButtonEnabled","raisedEventHoverButtonText","processRaiseCaseRequest","raiseEventButtonText","onTestEnabled","eventFlaggingEnabled","showFlagEventModal","raiseEventEnabled","raiseEvent","unParkAtChanged","isQuickEndButtonEnabled","quickEndDto","closeTitle","canQuickClose","quickEndEvent","quickEndEventViaButton","quickEndSettingsExist","quickEndSettingsValid","onTooltipClose","canClose","isNotificationModalVisible","closeCaseManagementModal","addAdditionalInformation","isRaiseCaseModalShown","flagEventModalState","flagEvent","closeFlaggedEventModal","onSend","canSendNotification","emailsLoaded","addresses","addressesInvalidFeedback","createOption","selectedContactGroups","contactGroupsInvalidFeedback","noteInvalidFeedback","noteValidFeedback","attachSitRep","notificationTemplateFormats","selectedTemplateFormat","onPreviewTemplate","eventOutcomeDetailsChanged","availableManualFields","outcomeSelectionValid","noteStatus","SetEventOutcomeAndNote","MAX_NOTE_LENGTH","Png","loadContacts","loadNotificationTemplates","getAllNotificationTemplates","newOption","newContact","createContactGroupOption","newContactGroup","getContactGroupOptionLabel","feedbackString","invalidEmails","each","adrWord","charactersUsed","createNotificationDocument","contactGroupIds","createNotificationDocumentRequest","eventOutcomeAndNoteForm","eventOutcomeAndNote","override","eventOutcomeOverride","placeholderOverrides","updateAvailableManualFields","setDefaultTemplateFormat","defaultTemplateFormatIndex","NotificationModal","onValueUpdated","RaiseCaseModal","isQuickEndTooltipEnabled","submitQuickEnd","closeTooltip","QuickEndSettingsTooltipContent","defaultRaiseEventButtonText","defaultRaisedEventButtonText","casesWindow","hasUnacknowledgedAlarms","eventIDRouteChanged","caseNumber","eventIdWatcher","isSimultaneousProcessingEnabled","passedEventControl","isCurrentController","checkCurrentUserEventController","eventSharingEnabled","passEventToNextOperator","passedEvent","op","lastActiveDate","orderedOperators","opA","opB","shareUser","onRequiresEventDetailsChanged","raiseToCaseManagementEnabled","getQuickEnd","updateSharingAction","autoPassAlarmEnabled","leaveEventRequest","isQuickEnd","restoreCount","ackCount","quickCloseEvent","setAdjustedTabIndex","extendButton","areaNotesEnabled","areaEventHistoryEnabled","showCaseManagementModal","isAdditionalInformationEnabled","canMobileEventShare","getMobileShareNotificationText","Removed","mobileEventShareWatch","newMobileShares","oldEventShares","updatedEventShares","adjustedIndex","setRaiseCasesButton","encodedCaseNumber","casesUrl","formatDateMixin","isUTCFormat","endOf","subtract","relativeDaysDateFormatted","days","timeOnly","convertFromUTC","includePeriod","dateOnly","stringMixin","formatString","num","stringToEllipse","ellipseAfter","passwordValidationMixins","strongRegex","mediumRegex","apiFormattingMixins","parameterName","mapRegionMixins","numberFormattingMixins","serviceLevelAgreementMixins","limit","extendMode","onTestItemType","minutesRangeWarning","onTestUntilMaxDate","submitting","MaxOnTestDurationMinutes","MaxOnTestDurationHours","selectedAlarmPoint","onAreaOnTestEventChanged","extendRequest","eventQueueRow","DatePicker","CameraModalSize","openAlarmOverlay","openFieldOpsOverlay","overlayText","openAlarmInSiteMonitor","overlayAsset","openFieldOps","shareAssetToEvent","isEventQueueMode","isSiteMonitorMode","useAdvancedFilters","enabledMapItemTypes","addingAlarm","openSearch","goToEvent","toggleBasicVisibility","toggleRegions","eventMarker","canMoveEventLocation","saveEventMarkerLocation","resetEventMarkerLocation","closeCamera","isEventSearchMode","sizes","Large","increaseSize","Small","decreaseSize","Medium","showControls","showPtzOverlay","CameraModal","isSearchActive","isRegionsFilterActive","EnhancedSingleMapControls","formatDateMethod","eventQueueTimer","alarmToOpen","viewingCameras","areaMarkers","loadMapDataToken","eventActiveItems","eventActiveItemIDs","eventAdHocAlarmMarkers","pendingEventMarkerPos","originalEventLocation","alertMarkers","eventQueueMarkers","manualRaiseAlarmMarker","createdSearchAutocomplete","filterBoundsChanged","filterBounds","searchAutoComplete","advancedFiltersUpdated","cameraId","isFieldOpsMode","showOverlayAlarm","previousEvent","alarmStyle","dispose","clearAreaMarkers","clearAlertMarkers","filterConditionWithAssetType","showAsset","assetVisible","filterConditionWithTrackedAsset","displayAssetItems","clearEventMarkers","adHocItemId","performLoadMapDataByBounds","isSiteMonitorOrEventSearchMode","setManualRaiseAlarmMarkerPosition","staticEventMapIcon","getAreaMarkers","isSituationalAwarenessExternalAlertEnabled","displayAlertsWithLocation","updateEventMarkers","keepZoom","setElevationToDefault","excludeLayerImage","loadSucceeded","displayMapItems","displayAreaMarkers","nearbyEventCameraRadius","recordsAdded","doNotRemove","getEventMarkerProcessingState","mt","deviceIdsForIsEnabled","isActiveAlarmMapLayerItem","getTrackedAssetMarkerType","getMapItemTitle","au","mapDetails","areaMarkersToRemove","areaMapType","showAreaAssets","areaMarkerExists","setTitle","areaMarkerOnClick","groupsToRemove","setDefaultBounds","userType","trackedAssetType","showUsers","showAssets","showTrackedAssets","getMarkerTitleForAsset","canShowMarker","selectedAssetItemId","setIcon","activeEventShareAssets","alertMarkersToRemove","alertMarkerExists","alertMarkerItem","alertsToRemove","goToAlertLocation","alertMarker","am","centerOnMarker","currentSelectedAssetItemId","lastUpdatedInMinutes","lastLocationUpdate","assetMapLayerItem","assetClone","isFieldOpsLicenced","activeFieldOpsPage","setSearchAutocomplete","bindTo","selectedGroupWatch","searchAreaSelected","onCurrentFilterChange","setFilterBounds","onhoverEventChanged","oldEvent","revertState","openFilters","allBounds","anyBounds","onDisplayedEventChanged","onManualRaiseAreaMapBoundsChanged","onManualRaiseSelectedLayerChanged","onAddAlarmChanged","mapDataResponse","boundsSet","eventsWithNewLocation","existingLatLng","isResponseLicenced","manualRaiseAreaMapBounds","previousEvents","newEvents","msg","notificatinOptions","areaRegion","regionBounds","areaLayerBounds","geoCoderResponse","addingAssetLocation","setManualRaiseSelectedGroup","setExternalMapLayersList","externalLayersList","onExternalMapLayersListChanged","list","toggleExternalMapLayerVisibility","isMultiAsset","currentStatusUpdated","mapItemsUpdated","mapItemUpdated","filteredAreaSelected","isFilterModalShown","enforceWholeNumberFormatter","updatePerPageLimit","preferredRecordsPageSize","filteredFlatList","maxRecordsPageSize","initialSelectedFilter","getLatestState","onFlatAreaListChanged","onSearchTermChanged","modalGroupFilter","modalAlarmFilter","onModalClose","requestFilterModal","requestAdvancedModal","selectedAreaChosen","isAdvancedModalShown","advancedMaskModalClosed","maskingTitle","okMethod","validateMaskingForm","maskingForm","AdvancedMaskModal","pollMaskingCount","onFilterModalClose","onGroupFilterChanged","onAlarmFilterChanged","responseObject","defaultDistanceConfiguration","lastUpdate","maxRadiusAsMetersInMiles","metersAsMilesDecimalPlaces","resetting","resetActionsTooltip","resetActionsFailed","resetActionsTimeout","VApp","VSheet","calendar","setToday","getCalendarTypeLabel","VCalendar","getEventColor","triggerChange","mouseMove","cancelDrag","formatTime","eventParsed","isPublicHoliday","timestampStartDate","MinSlotPeriod","LeftMouseButton","createEvent","createStart","creatingEvent","filterToken","calendarViewStart","calendarViewEnd","performGetEvents","onChangesInSchedules","reSetEvents","onGroupChange","endDateOfCalendar","scopedYear","getEndTimestamp","timed","Green","Grey","showEvent","eventStart","nativeEvent","button","tms","mouseEvent","mouse","toTime","roundTime","mouseRounded","setNewEndDate","setDefaultToInterationVariables","newEndDate","newEndDateRounded","roundDownTime","searchStartDate","searchEndDate","calendarRangeType","confirmModal","expiryTime","refreshAccessDuration","accessExpiryDateTime","refreshCheckInterval","checkRemainingTime","currentTimeDifference","minuteDifference","AccessTimerModal","onRouteChange","renderZendeskWidget","activeModal","getElementsByClassName","taggedConfirmButton","okBtn","ImmixCloudAppV2","subscriptions","observable","getAll","unsubscribe","shouldDelete","deleteSubscription","unsubscribeAll","VueSubscriptionsStore","install","Vue","subscriptions$","VueSubscriptions$","observables$","defineProperties","defaultInterceptor","responseURL","interceptors","VueAppConfig","Vuetify","opts","theme","customProperties","icons","iconfont","beforeEach","app","authRequired","matched","authed","subscriptionState","productionTip","prevent","errorHandler","vm","newrelic","noticeError","vuetify","_escListener","validTagNames","srcElement","tagName","TEMPLATES_URL","PROJECTIONS_URL","MOBILE_RAISES_URL","ICONSETS_URL","getTemplateUrl","getByEventNumUrl","evtNum","addTemplate","saveTemplate","deleteTemplate","getTemplateNamesByEventNum","visiblePath","showDropdown","currentPathIndex","outcomeLevelChange","currentOutcomes","eventOutcomeSelectionChange","resetToLatestOutcome","selectedOutcome","outcomePath","showNextDropdown","nestedOutcomes","initialValueHasBeenSet","initialEventOutcome","setupInitialValue","newInitialValue","oldInitialValue","childCategories","latestChoice","outcomeIndex","childCats","onClearClicked","onDataLoaded","outcomePathString","pathString","siteMonitorMode","iconTypes","onIconTypeChange","selectedIconType","validImage","file1","clearIcon","feedbackMessage","previewIconClass","IconMixins","base64Encode","getIconImage","imageEncodeType","fileUploadType","urlType","fontAwesomeType","acceptedFileTypes","maxFileSizeInBytes","invalidFileTypeMessage","invalidFileSizeMessage","isFileValid","configureIcon","onImageSrcChange","useAltModelSearch","raiseIdsEqual","id1","newTemplateDetailsModel","createMapTemplateToRowMapper","quickSelectRaises","userGroupIDs","mapTemplateToEditModel","mapEditModelToTemplate","quickRaiseIdIndex","gridSet","regionalLogin","loginToken","bypassConfirmation","isProcessAlarmConfirmationEnabled","regionURL","loginSuccessful","handleResult","inputText","Function","getGuardTourByEvent","mobileNotePayload","Note","mobileApi","MobileApi","dataFetched","mb","mine","msgBlock","createdFromNow","updateFromNow","createdAt","intervalId","beforeUpdate","downloadFile","MessageBlock","scrollThreshold","stickToLastMessage","scrollOffsetFromFirstMessage","scrollHandler","processMessageUpdates","fetchingUpdate","newestAt","setupMessagesUpdate","timeOutId","uniqueMessages","currentBlock","createBlockFromMessage","blocks","getAbsTimeDiff","addElement","t1","t2","abs","scrollContainer","restoreScrollPosition","storeScrollPosition","isScrolledToLastMessage","onMessagesUpdate","scrollUpdateTask","updateScroll","newScrollTop","ResponseActionTypeId","showTable","displayAddAutomationForm","hasEditAutomations","triggerEditResponseAction","deleteResponseAction","maxAutomationsReached","addAutomationButtonText","getAutomationLimitLabel","submitResponseActon","availableCameras","numberOfSeconds","recordQuality","selectedRecordQuality","isPreAlarm","canPreAlarm","secondsToGoBack","isResponseActionEdit","editButtonValid","addButtonValid","updateTable","allowEdit","showConfirmDeleteResponseAction","onConfirmDelete","onCancelDelete","alarmActionTypeId","getActionTitle","filterByFormatted","responseActionToDelete","responseActionTypeId","onResponseActionsChange","ResponseActionTable","originalType","originalSelectedCamera","originalNumberOfSeconds","originalRecordQuality","originalSecondsToGoBack","responseActionToEdit","responseActionEditIndex","automationLimit","getAlarmActions","getCameras","editResponseAction","addResponse","generateActionDescription","recordPrefix","newResponseAction","getSettingsMeta","updatedResponseAction","isJson","recordPreAlarmFootage","responseActionIndexed","sat","setSettingsMetaFromResponseAction","setSettingsMetaFromXML","numOfSeconds","preAlarm","setSettingsMetaFromObject","settingsMetaObject","ra","raIndex","updatedSupportedActionTypes","onDisplayAddAutomationFormChanged","clearOriginals","clearForm","cameraUpdated","canTimeTravel","raiseError","selectedRoutingGroup","cancelRaiseEvent","eventRaiseModal","RoutingGroupId","isTableViewShown","hideCustomFieldModal","customFieldPage","updatePage","showAddView","showDeleteView","showUpdateView","customFieldTableTypeId","actionTitle","selectedCustomField","customFieldToUpdate","isUpdateViewShown","showTableView","isDeleteViewShown","CustomFieldModalSortBy","CustomFieldTypesForDisplay","typeName","Checkbox","addActionTitle","customFieldValid","editActionTitle","customFieldTypeOptions","customFieldsWithoutPlaceholder","customFieldOrderFormatter","orderValue","checkRequiredValid","CustomFieldUpdateView","CustomFieldDeleteView","customFieldList","customFieldListForDisplay","customFieldListPage","createEmptyCustomField","isDelete","resetCustomFieldState","retrieveCustomField","mapCustomFieldsForTable","customFieldForDisplay","sortOrderByNullLast","clearSelectedCustomField","getExistingCustomFieldValues","CustomFieldTableView","settingsApi","SettingsApi","RuleDropdownOptions","CustomFieldTableTypes","CustomFieldTypes","openModal","opsLinkModalShown","responseMessage","opsLinksList","tableLoading","serverCount","ol","opsLinkForSelect","setSelectedDetails","showSaveConfirmation","showFailoverConfirmation","currentOpsLink","secondaryOpsLink","failOver","confirmationMessageShown","closeOpsLinksModal","resetResponse","setSecondaryAppliance","saveConfirmationMessageShown","showResponseMessage","failOverDebounce","requestSuccess","loadAppliances","resetSelectedOpsLinks","updateSecondaryApplianceDebounce","failover","currentId","excludeApplianceId","isScalableTextBoxFeatureEnabled","inputTaskModel","handleTextAreaInput","maxExpandedHeight","textAreaElement","setTextAreaMaxHeight","updateInputTaskModel","targetClasses","useTextAreaElementVariable","textarea","overflowY","controlTaskSetup","controlActionTypes","controlType","controlTypeChange","controlTaskSetupChange","ControlSetup","areaCreated","areaStartFrom","areaEndAt","deletingNoteId","showAddNewNoteForm","selectedNote","updateDate","ampmList","ampm","open_calender","clearDate","addDate","dateValueParsed","isoString","which","isNoteEditing","noteTypes","notesModal","editNoteText","getInitialNewNote","dictionary","opacity","weight","imageUrl","fill","defaultState","states","stateGet","MarkerType","customFieldMixins","allCustomFields","idProp","valueProp","maintainType","convertedDate","MapLayerItemTypeIds","closingEvent","inactivityTimeout","isTemporaryMediaWallEnabled","isMediaWallEvent","inactivityWarning","isInactivitySoundEnabled","otherOperators","sortedOperators","joinedEvent","InactivityWarning","danger","okBtnText","cancelBtnText","emitBadgeSelected","onModalGroupFilter","onLabelChanged","onUrlValidate","urlLink","urlText","moveUrlToTaskData","notificationData","loadTemplatesForServer","isNameEmpty","onNotificationDataChange","selectedCaller","filteredContactRoles","debouncedContactRolesSearch","contactRoleSearchTimer","searchContactRoles","paramsToUse","callContactSettingsChange","buildPinnedTree","treeSelectId","areaTree","menuIsAlwaysOpen","isAsyncSearchEnabled","fullPathValue","valueFormat","groupOnly","searchValueChanged","deselect","shouldShowCount","pinArea","allSearchableAdditionalFields","lastAdvancedSearchQuery","isLastSearchAdvanced","isAdvancedSearchVisible","hideAdvancedSearch","showAdvancedSearch","isAdvancedSearchEnabled","advancedSearch","emitClose","isCheckboxCustomField","checkboxDropdownOptions","updateCheckboxValue","getMapValue","updateMap","telephonePrimary","telephoneSecondary","customFieldSearchQueries","customFieldCheckboxQueries","untrimmedArray","constructCustomFieldQueryMaps","filteredCustomFields","checkboxCustomFields","checkbox","AdvancedAreaSearch","breadcrumbs","trimBreadcrumbs","ascendBreadcrumbs","lowestLevelOfBreadcrumbs","clearBreadcrumbs","constructBreadcrumb","selectedNodeId","emitLastBreadcrumb","getLastItemInBreadcrumbs","breadcrumb","DrawdownBreadcrumbs","additionalSearchFields","badgeLimit","isCustomField","getAdditionalFieldName","titleField","customFieldTitle","buildDisplayOfAdditionalFields","updateFieldsToShow","fieldsToShow","isShowingAdvancedSearchResults","convertAdvancedSearchFields","allAdditionalSearchFields","additionalSearchField","convertedFields","AdditionalFields","isSearchComplete","hasJustPinnedNode","isDeselectingInMultiple","tabKeyIdentifier","loadAreaTree","applyAdditionalFunctionalityWatchers","isAdditionalSearchFieldsEnabled","fetchAdditionalSearchFields","isDrawdownSearchEnabled","checkClickOutside","fullComponent","checkTabKey","addTreeSelectClickWatcher","additionalFieldSettings","sf","useDrawdownSearch","useAdvancedAreaSearch","useAdditionalSearchFields","isUserContextSet","groupTreeNode","areaNodeSearchResult","searchWithExtraFeatures","additionalFieldTitles","breadcrumbComponent","cn","closeMenu","manuallyCloseTreeselectDropdown","nodeToRemove","areaNodes","incrementRerenderKey","focusElement","advancedSearchData","treeselectMultiple","multipleContainer","switchMode","inputs","notificationTemplateType","escapeSymbols","urlObject","notificationTemplatesApi","NotificationTemplateApi"],"mappings":"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O7T,EAAO,QCfV,GAA+B,KACtC,IAAsB,EAEf,GAA6D,CACzE4W,WAAU,GACV5W,MAAK,GACL4M,QAAO,GACP0E,UAAS,ICqCJipF,IAAQ,EAEd,aAAIC,IAAI,QAOO,WAAI,OAAKC,MAAM,CAC7Bz6F,MAAOa,IACP8O,QAAS,OAAF,OAAE,CAAF,GACH,GAEJ2B,UAAW,OAAF,OAAE,CAAF,GACL,GAEJ1E,QAAS,OAAF,OAAE,CAAF,GACH,GAEJpqB,QAAS,CACR0kG,SAAQ,GACR33D,WAAU,EACVwW,YAAW,GACXwM,MAAK,GACLyQ,eAAc,GACdxR,mBAAkB,GAClBiL,SAAQ,GACR+E,UAAS,GACTyP,YAAW,GACXzmC,QAAO,GACP9zB,UAAS,GACT8lE,OAAM,GACN2C,MAAK,GACLiI,QAAO,GACPyD,YAAW,GACX1sB,MAAK,GACL8wB,MAAK,GACL/G,UAAS,GACTyJ,aAAY,GACZmB,YAAW,GACXe,qBAAoB,GACpB6mB,YAAW,GACXttF,aAAY,GACZysE,OAAM,GACNhjE,OAAM,EACAojE,kBAAiB,GACjB8B,eAAc,GACpBniE,UAAS,EACTymE,eAAc,GACde,aAAY,GACZ8C,UAAS,GACT/B,YAAW,GACXwG,MAAK,GACLG,gBAAe,GACfwC,aAAY,GACZkL,YAAW,GACXS,sBAAqB,GACrBE,UAAS,GACT2C,YAAW,GACXrP,aAAY,GACZuP,iBAAgB,IAEjBh7B,QAAS,CAER,eAAqB,CACpB27B,MAAO,CACN,OACA,eACA,YACA,WACA,8BACA,yBACA,0BACA,eACA,2BACA,SACA,SACA,kCACA,qCACA,4BACA,2CACA,iCACA,kBACA,8BACA,4BACA,oBACA,eACA,mBACA,oBAGF,GACA,EAAsB,CACrBx7F,UAAW,CACV,SACA,kBACA,uBACA,eACA,kBACA,8BACA,gCACA,wCACA,iCACA,8BACA,qCACA,0BACA,+BACA,6CACA,uCACA,mCACA,mCACA,qCACA,wCACA,8CACA,oCACA,oBACA,kBACA,6BACA,uCACA,8BACA,oBACA,2BACA,4BACA,6BACA,2BACA,4BACA,iCACA,2BACA,kCACA,+BAC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AmB1a,KAAKyrI,gB,gCAtI7C,gBAAP,a,qCACqB,gBAArB,oBAAO,e,iCACmB,gBAA1B,oBAAO,oB,mCACyB,gBAAhC,oBAAO,0B,yCACyB,gBAAhC,oBAAO,0B,yCACsB,gBAA7B,oBAAO,uB,sCACyB,gBAAhC,oBAAO,0B,yCAC6B,gBAApC,oBAAO,8B,6CACwC,gBAA/C,oBAAO,yC,wDAEA,gBAAP,a,mCACO,gBAAP,a,6BAEsB,gBAAtBmQ,GAAexmI,Q,iCAET,gBAAN,Y,2BAEmB,gBAAnBymI,GAAa3mI,O,mCACkB,gBAA/B2mI,GAAa3mI,MAAM,a,2CAnBAynI,EAAO,gBAX5B,eAAU,CACTv3I,WAAY,CACX,gBAAiBq9H,EAAA,KACjB,aAAc,EACd,gBAAiB,EACjB,gBAAiB,GACjB,YAAgBma,GAAA,KAChB,wBAAyB,GACzB,QAAW,OAGQD,GA0IrB,EA1IA,CAAqC,QAAhB,MC9B2W,MCQ7X,I,UAAY,eACd,GACA/6I,EACA4C,GACA,EACA,KACA,WACA,OAIa,U,sECnBf,IAAKgwC,GAAL,SAAKA,GACJ,wBACA,sCACA,4CACA,oCACA,4CACA,0CACA,kCACA,kCACA,8CACA,yBACA,iCACA,6CACA,uCACA,qCACA,2CACA,2DACA,iDACA,yCACA,iCACA,mCACA,mDACA,qCACA,uCACA,6BACA,mDACA,6CACA,qDACA,uCACA,+BACA,yCACA,2CACA,qCACA,iCACA,uDACA,qDACA,uCACA,iCACA,qDACA,2CACA,mCACA,iDACA,2DACA,+CACA,2CACA,mCACA,6CACA,+CACA,2DACA,qDACA,qDACA,2CACA,iCACA,6CACA,+CACA,qDACA,kCACA,0CACA,wCACA,wCACA,oCACA,wCACA,4CACA,sCACA,wDACA,4DACA,8BACA,sCACA,kCACA,sDACA,kCACA,sCACA,sCACA,0CACA,8CACA,8CACA,0CACA,8CACA,8CACA,oCACA,4CACA,0BACA,sCACA,sCACA,8DACA,0EACA,0EACA,wEACA,sEACA,8CACA,8DACA,8DACA,wDACA,4DACA,sDACA,kDACA,sCACA,8CACA,wCACA,0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BACbklB,YAAY,EACZz/C,QAAS71D,KAAKg5G,eAAevhG,SAAS,WACtC89F,SAAU,QACVE,UAAU,GAEX,CACCxvG,MAAO,YACP9G,IAAK,YACLozD,MAAO,EACP6iD,UAAW,EACXC,mBAAmB,EACnBjlB,YAAa,yBACbklB,YAAY,EACZz/C,QAAS71D,KAAKg5G,eAAevhG,SAAS,aACtC89F,SAAU,YACVE,UAAU,GAEX,CACCxvG,MAAO,OACP9G,IAAK,SACLozD,MAAO,EACP6iD,UAAW,EACXC,mBAAmB,EACnBjlB,YAAa,wBACbklB,YAAY,EACZz/C,QAAS71D,KAAKg5G,eAAevhG,SAAS,UACtC89F,SAAU,YACVE,UAAU,EACV0D,QAAS,UAEV,CACClzG,MAAO,uBACP9G,IAAK,YACLozD,MAAO,EACP6iD,UAAW,EACXC,mBAAmB,EACnBjlB,YAAa,qCACbklB,YAAY,EACZz/C,QAAS71D,KAAKg5G,eAAevhG,SAAS,aACtC89F,SAAU,WACVE,UAAU,EACV0D,QAAS,sBAEV,CACClzG,MAAO,sBACP9G,IAAK,qBACLozD,MAAO,GACP6iD,UAAW,EACXC,mBAAmB,EACnBjlB,YAAa,wCACbklB,YAAY,EACZz/C,QAAS71D,KAAKg5G,eAAevhG,SAAS,sBACtC89F,SAAU,QACVI,eAAe,EACfF,UAAU,GAEX,CACCxvG,MAAO,UACP9G,IAAK,aACLozD,MAAO,GACP6iD,UAAW,EACXC,mBAAmB,EACnBjlB,YAAa,iCACbklB,YAAY,EACZz/C,QAAS71D,KAAKg5G,eAAevhG,SAAS,cACtC89F,SAAU,WACVE,UAAU,EACV0D,QAAS,oBAEV,CACClzG,MAAO,WACP9G,IAAK,cACLozD,MAAO,GACP6iD,UAAW,EACXC,mBAAmB,EACnBjlB,YAAa,2BACbklB,YAAY,EACZz/C,QAAS71D,KAAKg5G,eAAevhG,SAAS,eACtC89F,SAAU,WACVE,UAAU,EACV0D,QAAS,2BAKJ,YAAAguG,cAAR,sBACKh0H,EAAa,CAChB,CACCltF,MAAQjG,KAAKivN,YAA2B,QAAb,WAC3B9vN,IAAK,WACLo2G,SAAU,OACVjp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","file":"js/app.60555018.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-0a40549e\":\"c147ac7e\",\"chunk-2d0afe3e\":\"be9b06ae\",\"chunk-5841a3ec\":\"323e593c\",\"chunk-c58e177c\":\"36e281bf\",\"chunk-5dc9bb98\":\"f4be7a2b\",\"chunk-7d75d27f\":\"932282cd\",\"chunk-f62f9478\":\"8ff1f150\",\"chunk-cfd0a4d8\":\"f88cf443\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-0a40549e\":1,\"chunk-5841a3ec\":1,\"chunk-c58e177c\":1,\"chunk-5dc9bb98\":1,\"chunk-7d75d27f\":1,\"chunk-f62f9478\":1,\"chunk-cfd0a4d8\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-0a40549e\":\"d2a28782\",\"chunk-2d0afe3e\":\"31d6cfe0\",\"chunk-5841a3ec\":\"fd384fae\",\"chunk-c58e177c\":\"6767640e\",\"chunk-5dc9bb98\":\"2e2d2799\",\"chunk-7d75d27f\":\"7d52b37c\",\"chunk-f62f9478\":\"ac078b6e\",\"chunk-cfd0a4d8\":\"f271432a\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioControl.vue?vue&type=style&index=1&id=1193763a&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Receive.vue?vue&type=style&index=0&id=dbf03e64&prod&scoped=true&lang=scss\"","import { axiosInstance, axiosJsonInstance } from \"@/axios.instance\";\r\nimport { AxiosInstance } from \"axios\";\r\nimport { QuickEndSettingsDto } from \"@/types/organization-settings/QuickEndSettings\";\r\nimport { TenantSystemPrefs } from \"@/store/types\";\r\nimport { EventQueuePriorityColors } from \"@/store/eventqueue/types\";\r\nimport { PaginatedSearchRequest } from \"@/mixins/PaginatedSearch\";\r\nimport { AreaSearchAdditionalFieldsSettingResponse } from \"@/types/area-tree-select/AreaSearchAdditionalFieldsSettingResponse\";\r\n\r\nconst OrganizationQuickEndSettingsUrl = \"/OrganizationSettings/QuickEnd\";\r\nconst OrganizationSettingsURL = \"/OrganizationSettings\";\r\n\r\nclass OrganizationApi {\r\n\tprivate axios: AxiosInstance;\r\n\tprivate axiosJson: AxiosInstance;\r\n\r\n\tconstructor() {\r\n\t\tthis.axios = axiosInstance;\r\n\t\tthis.axiosJson = axiosJsonInstance;\r\n\t}\r\n\r\n\tpublic async retrieveTenantSystemPrefs(liveValue: boolean) : Promise {\r\n\t\tconst { data } = await this.axiosJson.get(`${OrganizationSettingsURL}/TenantPrefs?liveValue=${liveValue}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveAreaSearchAdditionalFieldsSetting(liveValue: boolean): Promise {\r\n\t\tconst { data } = await this.axiosJson.get(`${OrganizationSettingsURL}/TenantPrefs/AdditionalAreaSearchFields?liveValue=${liveValue}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdateTenantSystemPrefs(tenantSystemPrefs: TenantSystemPrefs) : Promise {\r\n\t\tconst { data } = await this.axiosJson.put(`${OrganizationSettingsURL}/TenantPrefs`, tenantSystemPrefs);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveQuickEndSettings(groupID: number, liveValue: boolean) : Promise {\r\n\t\tconst { data, status } = await this.axios.get(`${OrganizationQuickEndSettingsUrl}/?groupId=${groupID}&liveValue=${liveValue}`);\r\n\t\tif (status == 204){\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdateQuickEndSettings(quickEndSettingsRequest: QuickEndSettingsDto) : Promise {\r\n\t\tconst { data } = await this.axiosJson.put(OrganizationQuickEndSettingsUrl, quickEndSettingsRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteQuickEndSettings() : Promise {\r\n\t\tawait this.axios.delete(OrganizationQuickEndSettingsUrl);\r\n\t}\r\n\r\n\tpublic async createAlarmQueuePriorityColor(eventQueuePriorityColor: EventQueuePriorityColors): Promise{\r\n\t\tconst { data } = await this.axiosJson.post(`${OrganizationSettingsURL}/EventQueuePriorityColors`, eventQueuePriorityColor);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveAlarmQueuePriorityColors(paginatedSearchRequest: PaginatedSearchRequest): Promise{\r\n\t\tconst { data } = await this.axios.get(`${OrganizationSettingsURL}/EventQueuePriorityColors`, paginatedSearchRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateAlarmQueuePriorityColor(eventQueuePriorityColor: EventQueuePriorityColors): Promise{\r\n\t\tconst { data } = await this.axiosJson.put(`${OrganizationSettingsURL}/EventQueuePriorityColors`, eventQueuePriorityColor);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteAlarmQueuePriorityColor(eventQueuePriorityColorId: number): Promise{\r\n\t\tconst { data } = await this.axios.delete(`${OrganizationSettingsURL}/EventQueuePriorityColors/${eventQueuePriorityColorId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async validateAlarmQueuePriorityColors(eventQueuePriorityColor: EventQueuePriorityColors): Promise {\r\n\t\tconst response = await this.axiosJson.post(`${OrganizationSettingsURL}/EventQueuePriorityColorsValidate`, eventQueuePriorityColor);\r\n\t\treturn response.data;\r\n\t}\r\n}\r\n\r\nconst organizationApi = new OrganizationApi();\r\nexport default organizationApi;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.editing)?_c('div',{staticClass:\"flex-grow-1\",attrs:{\"data-cy\":\"basic-edit\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.task.taskText),expression:\"task.taskText\"}],class:[{invalid: _vm.hasValidationErrors, 'error-animated': _vm.showErrorAnimation}, 'form-control'],attrs:{\"placeholder\":\"Action text\",\"type\":\"text\"},domProps:{\"value\":(_vm.task.taskText)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.task, \"taskText\", $event.target.value)},_vm.onValidateTask]}})]):_c('div',{staticClass:\"task-line-content task-basic\",class:[_vm.isFocused ? 'focused': ''],attrs:{\"data-cy\":\"basic-task\"}},[_c('div',{staticClass:\"custom-control custom-checkbox\"},[(_vm.isFocused)?_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['space']),expression:\"['space']\",modifiers:{\"once\":true}}],staticClass:\"hidden\",on:{\"shortkey\":function($event){return _vm.updateTask(!_vm.task.completed)}}}):_vm._e(),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.basicTaskModel),expression:\"basicTaskModel\"}],staticClass:\"custom-checkbox custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":'customCheck' + _vm.task.eventTaskID,\"disabled\":!_vm.task.isMine,\"data-cy\":\"basic-task-checkbox\"},domProps:{\"checked\":Array.isArray(_vm.basicTaskModel)?_vm._i(_vm.basicTaskModel,null)>-1:(_vm.basicTaskModel)},on:{\"focus\":function($event){_vm.isFocused = true},\"blur\":function($event){_vm.isFocused = false},\"change\":function($event){var $$a=_vm.basicTaskModel,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.basicTaskModel=$$a.concat([$$v]))}else{$$i>-1&&(_vm.basicTaskModel=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.basicTaskModel=$$c}}}}),_c('label',{staticClass:\"custom-control-label task-text text-break\",style:([_vm.task.completed ? { 'text-decoration': 'line-through' } : {}]),attrs:{\"for\":'customCheck' + _vm.task.eventTaskID}},[_vm._v(_vm._s(_vm.task.taskText))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue, Watch, Emit } from \"vue-property-decorator\";\nimport { namespace, Getter, Mutation } from \"vuex-class\";\nimport { ActionPlanTask } from \"@/store/tasks/types\";\nimport { stringMixin } from \"@/mixins\";\n\nconst { isNullOrWhitespace } = stringMixin.methods;\n\n@Component({\n\tcomponents: {}\n})\nexport default class BasicTask extends Vue {\n\t@Prop(Boolean) public editing: Boolean;\n\n\t@Prop()\n\tpublic task!: ActionPlanTask;\n\n\tpublic hasValidationErrors: boolean = false;\n\tpublic showErrorAnimation: boolean = false;\n\tprivate updating: boolean = false;\n\tpublic get basicTaskModel() {\n\t\treturn this.task.completed;\n\t}\n\n\tpublic set basicTaskModel(checked: boolean) {\n\t\tthis.updateTask(checked);\n\t}\n\n\tpublic mounted() {\n\t\tthis.$nextTick(() => {\n\t\t\tif (this.editing) {\n\t\t\t\tthis.onValidateTask();\n\t\t\t}\n\t\t});\n\t}\n\n\t// Ensure the task was setup correctly.\n\t@Emit(\"validate-task\")\n\tpublic onValidateTask() {\n\t\tlet isValid = !isNullOrWhitespace(this.task.taskText);\n\n\t\tif (!isValid) {\n\t\t\tthis.hasValidationErrors = true;\n\t\t\tthis.showErrorAnimation = true;\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.showErrorAnimation = false;\n\t\t\t}, this.$config.ANIMATION_DURATION);\n\t\t} else {\n\t\t\tthis.hasValidationErrors = false;\n\t\t\tthis.showErrorAnimation = false;\n\t\t}\n\n\t\treturn isValid;\n\t}\n\n\tprivate isFocused: boolean = false;\n\n\tprivate updateTask(checked: boolean){\n\t\tif(this.updating)\n\t\t\treturn;\n\n\t\tthis.updating = true;\n\t\ttry{\n\t\t\tthis.$emit(\"complete-task\", {\n\t\t\t\t...this.task,\n\t\t\t\tcompleted: checked\n\t\t\t});\n\t\t} finally {\n\t\t\tthis.updating = false;\n\t\t}\n\t}\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BasicTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BasicTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./BasicTask.vue?vue&type=template&id=6ae4be54&scoped=true\"\nimport script from \"./BasicTask.vue?vue&type=script&lang=ts\"\nexport * from \"./BasicTask.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BasicTask.vue?vue&type=style&index=0&id=6ae4be54&prod&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 \"6ae4be54\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./generic-update-modal.vue?vue&type=style&index=0&id=36c0fe25&prod&lang=scss&scoped=true\"","export {};\r\n\r\ndeclare global {\r\n\tinterface String {\r\n\t\ttrimEndOf(remove: string[]): string;\r\n\t}\r\n}\r\n\r\nif (!String.prototype.trimEndOf) {\r\n\tString.prototype.trimEndOf = function trimEndOf (this: string, remove: string[]): string {\r\n\t\tlet newLength = this.length;\r\n\t\tfor (let i = this.length; i--; i > -1) {\r\n\t\t\tif (remove.indexOf(this[i]) > -1) {\r\n\t\t\t\tnewLength--;\r\n\t\t\t} else {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.substring(0, newLength);\r\n\t}\r\n}","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PutEventOnTestModal.vue?vue&type=style&index=0&id=7238ed6d&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RuleGenericDropdown.vue?vue&type=style&index=0&id=3c801106&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-modal',{staticClass:\"overflow-visible\",attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"title\":_vm.getTitle,\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"visible\":_vm.isScheduleModalVisible,\"body-class\":\"schedule-modal-body\",\"data-cy\":\"create-schedule-modal\"},on:{\"hidden\":function($event){return _vm.closeModal()}}},[_c('b-form',{staticClass:\"mr-2\",attrs:{\"id\":\"schedule-form\"}},[_c('b-form-group',{attrs:{\"id\":\"schedule-title\"}},[_c('b-row',[_c('b-col',{staticClass:\"pt-2\",attrs:{\"cols\":\"2\"}},[_c('label',{attrs:{\"for\":\"newScheduleTitle\"}},[_vm._v(\" Title: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-col',[_c('div',{staticClass:\"form-group\"},[_c('b-form-input',{class:[{ invalid: _vm.$v.schedule.title.$error }, 'dark'],attrs:{\"id\":\"newScheduleTitle\",\"required\":\"\",\"placeholder\":\"Enter a title...\",\"disabled\":!_vm.scheduleTypeEditEnabled,\"data-cy\":\"title-schedule-input\"},model:{value:(_vm.$v.schedule.title.$model),callback:function ($$v) {_vm.$set(_vm.$v.schedule.title, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.schedule.title.$model\"}}),(_vm.$v.schedule.title.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Title is required and should be at least \"+_vm._s(_vm.$v.schedule.title.$params.minLength.min)+\" and max \"+_vm._s(_vm.$v.schedule.title.$params.maxLength.max)+\" characters length. \")]):_vm._e()],1)])],1)],1),_c('b-form-group',{attrs:{\"id\":\"schedule-group\"}},[_c('b-row',[_c('b-col',{staticClass:\"pt-2\",attrs:{\"cols\":\"2\"}},[_c('label',{attrs:{\"for\":\"newScheduleGroup\"}},[_vm._v(\" Area: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-col',[_c('area-tree-select',{attrs:{\"id\":\"GroupsForSchedule\",\"clearable\":false,\"append-to-body\":\"\",\"invalid\":_vm.$v.schedule.groupId.$error,\"readonly\":!_vm.scheduleTypeEditEnabled,\"placeholder\":\"Select an area\",\"data-cy\":\"area-schedule-select\"},on:{\"blur\":_vm.$v.schedule.groupId.$touch},model:{value:(_vm.selectedArea),callback:function ($$v) {_vm.selectedArea=$$v},expression:\"selectedArea\"}}),(_vm.$v.schedule.groupId.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Area for schedule task is required. \")]):_vm._e()],1)],1)],1),_c('b-form-group',{attrs:{\"id\":\"schedule-type\"}},[_c('b-row',[_c('b-col',{staticClass:\"pt-2\",attrs:{\"cols\":\"2\"}},[_c('label',{attrs:{\"for\":\"newScheduleType\"}},[_vm._v(\" Schedule Type: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-col',[(_vm.scheduleTypeEditEnabled)?_c('div',{staticClass:\"form-group\"},[_c('v-select-3',{staticClass:\"dark\",class:[{ 'invalid-select': _vm.$v.schedule.scheduleTypeId.$error }],attrs:{\"id\":\"newScheduleType\",\"data-cy\":\"v-select-3-schedule-type\",\"placeholder\":\"Select a schedule type\",\"label\":\"title\",\"options\":_vm.filteredScheduleTypes,\"reduce\":function (type) { return type.scheduleTypeId; },\"append-to-body\":\"\"},model:{value:(_vm.schedule.scheduleTypeId),callback:function ($$v) {_vm.$set(_vm.schedule, \"scheduleTypeId\", $$v)},expression:\"schedule.scheduleTypeId\"}}),(_vm.selectedGroup !== null && _vm.isMaskingEnabled && _vm.selectedArea && _vm.selectedArea.disableMasking && _vm.schedule.scheduleTypeId == 2)?_c('p',{staticClass:\"text-danger\",attrs:{\"data-cy\":\"disable-masking-error\"}},[_vm._v(\"Masking is currently disabled for this area. Please enable masking in order to run masking schedules.\")]):_vm._e(),(_vm.$v.schedule.scheduleTypeId.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Schedule type is required. \")]):_vm._e()],1):_vm._e(),(!_vm.scheduleTypeEditEnabled)?_c('div',{staticClass:\"form-group\"},[_c('b-form-input',{attrs:{\"data-cy\":\"label-disabled-schedule-type\",\"disabled\":\"\"},model:{value:(_vm.scheduleTypeTitle),callback:function ($$v) {_vm.scheduleTypeTitle=$$v},expression:\"scheduleTypeTitle\"}})],1):_vm._e()])],1)],1),(_vm.isResponseExpected)?_c('b-form-group',{attrs:{\"id\":\"schedule-response\"}},[_c('b-row',[_c('b-col',{staticClass:\"pt-2\",attrs:{\"cols\":\"2\"}},[_c('label',{attrs:{\"for\":\"newScheduleResponse\"}},[_vm._v(\" Alarm: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-col',[(!_vm.isMaskingSchedule)?_c('v-select-3',{staticClass:\"dark\",attrs:{\"options\":_vm.alarmOptions,\"placeholder\":\"Search\",\"label\":\"title\",\"reduce\":function (response) { return response.responseID; },\"filterable\":true,\"append-to-body\":\"\",\"data-cy\":\"alarm-select\",\"disabled\":!_vm.scheduleTypeEditEnabled},on:{\"search\":function($event){return _vm.handleAlarmSearchInput($event)},\"blur\":_vm.$v.schedule.responseId.$touch},model:{value:(_vm.schedule.responseId),callback:function ($$v) {_vm.$set(_vm.schedule, \"responseId\", $$v)},expression:\"schedule.responseId\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"No alarms were found.\")])]):_vm._e(),(!_vm.isMaskingSchedule && _vm.$v.schedule.responseId.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Alarm for schedule task is required. \")]):_vm._e(),(_vm.isMaskingSchedule)?_c('v-select-3',{staticClass:\"dark\",attrs:{\"options\":_vm.alarmOptions,\"placeholder\":\"Search\",\"label\":\"title\",\"reduce\":function (response) { return response.responseID; },\"filterable\":true,\"append-to-body\":\"\",\"data-cy\":\"alarm-multi-select\",\"disabled\":!_vm.scheduleTypeEditEnabled || _vm.hideResponseSelector,\"multiple\":\"\"},on:{\"search\":function($event){return _vm.handleSearchInput($event)},\"blur\":_vm.$v.schedule.responseMaskingMeta.responseIds.$touch},model:{value:(_vm.schedule.responseMaskingMeta.responseIds),callback:function ($$v) {_vm.$set(_vm.schedule.responseMaskingMeta, \"responseIds\", $$v)},expression:\"schedule.responseMaskingMeta.responseIds\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"No alarms were found.\")])]):_vm._e(),(_vm.isMaskingSchedule && _vm.$v.schedule.responseMaskingMeta.responseIds.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Alarm for schedule task is required. \")]):_vm._e()],1)],1)],1):_vm._e(),(_vm.isMaskingSchedule)?_c('b-form-checkbox',{attrs:{\"id\":\"allAlarms\",\"unchecked-value\":false,\"data-cy\":\"allAlarms-checkbox\"},model:{value:(_vm.schedule.responseMaskingMeta.allAlarms),callback:function ($$v) {_vm.$set(_vm.schedule.responseMaskingMeta, \"allAlarms\", $$v)},expression:\"schedule.responseMaskingMeta.allAlarms\"}},[_vm._v(\" Mask Area \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Selecting this option will Mask the entire Area and it's alarms will not be raised during this period\")])]):_vm._e(),(_vm.isScheduleTypeRaiseEvent)?_c('b-form-group',{attrs:{\"id\":\"schedule-event-type\",\"data-cy\":\"group-schedule-event-type\"}},[_c('b-row',[_c('b-col',{staticClass:\"pt-2\",attrs:{\"cols\":\"2\"}},[_c('label',{attrs:{\"for\":\"newScheduleEventType\"}},[_vm._v(\" Event Type: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-col',[_c('v-select-3',{staticClass:\"dark\",attrs:{\"options\":_vm.eventTypes,\"placeholder\":\"Search\",\"label\":\"title\",\"reduce\":function (eventType) { return eventType.eventNum; },\"filterable\":true,\"append-to-body\":true,\"data-cy\":\"event-type-select\",\"disabled\":!_vm.scheduleTypeEditEnabled},on:{\"search\":function($event){return _vm.handleEventTypeSearchInput($event)},\"blur\":_vm.$v.schedule.serverTypeEvent.$touch},model:{value:(_vm.schedule.serverTypeEvent),callback:function ($$v) {_vm.$set(_vm.schedule, \"serverTypeEvent\", $$v)},expression:\"schedule.serverTypeEvent\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"No event types were found.\")])]),(_vm.$v.schedule.serverTypeEvent.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Event type for schedule task is required. \")]):_vm._e()],1)],1)],1):_vm._e(),_c('b-form-group',{attrs:{\"id\":\"schedule-start-date\"}},[_c('b-row',[_c('b-col',{staticClass:\"pt-2\",attrs:{\"cols\":\"2\"}},[_c('label',{attrs:{\"for\":\"newScheduleStartDate\",\"data-cy\":\"label-schedule-start-date\"}},[_vm._v(\" \"+_vm._s(_vm.isScheduleTypeRaiseEvent ? \"Trigger At\" : \"Start Date\")+\": \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-col',[_c('div',{staticClass:\"date-time-container\"},[_c('date-time',{staticClass:\"p-r-5\",class:{ 'invalid-select': _vm.$v.schedule.endDateTime.$error },attrs:{\"type\":\"datetime\",\"inputId\":\"StartDate\",\"data-cy\":\"schedule-modal-start-date-time\",\"value-zone\":null},model:{value:(_vm.schedule.startDateTime),callback:function ($$v) {_vm.$set(_vm.schedule, \"startDateTime\", $$v)},expression:\"schedule.startDateTime\"}},[_c('label',{attrs:{\"slot\":\"after\",\"for\":\"StartDate\"},slot:\"after\"},[_c('i',{staticClass:\"far fa-calendar-alt clickable-row medium-icon\"})])])],1),(this.timeZone)?_c('small',{staticClass:\"form-text text-muted\",attrs:{\"data-cy\":\"timezone-display-start-date\"}},[_vm._v(\" Times are displayed in \"+_vm._s(_vm.timeZone.id)+\". \")]):_vm._e(),(_vm.$v.schedule.startDateTime.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Start date should be less than end and expiry dates, if applicable. \")]):_vm._e()])],1)],1),(!_vm.isScheduleTypeRaiseEvent)?_c('b-form-group',{attrs:{\"id\":\"schedule-end-date\",\"data-cy\":\"group-schedule-end-date\"}},[_c('b-row',[_c('b-col',{staticClass:\"pt-2\",attrs:{\"cols\":\"2\"}},[_c('label',{attrs:{\"for\":\"newScheduleStartDate\"}},[_vm._v(\" End Date: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-col',[_c('div',{staticClass:\"date-time-container\"},[_c('date-time',{staticClass:\"p-r-5\",class:{ 'invalid-select': _vm.$v.schedule.endDateTime.$error },attrs:{\"type\":\"datetime\",\"inputId\":\"EndDate\",\"data-cy\":\"schedule-modal-end-date-time\",\"value-zone\":null},model:{value:(_vm.schedule.endDateTime),callback:function ($$v) {_vm.$set(_vm.schedule, \"endDateTime\", $$v)},expression:\"schedule.endDateTime\"}},[_c('label',{attrs:{\"slot\":\"after\",\"for\":\"EndDate\"},slot:\"after\"},[_c('i',{staticClass:\"far fa-calendar-alt clickable-row medium-icon\"})])])],1),(this.timeZone)?_c('small',{staticClass:\"form-text text-muted\",attrs:{\"data-cy\":\"timezone-display-end-date\"}},[_vm._v(\" Times are displayed in \"+_vm._s(_vm.timeZone.id)+\". \")]):_vm._e(),(_vm.$v.schedule.endDateTime.$error)?_c('div',{staticClass:\"error text-danger\"},[_vm._v(\" End date is required and should be greater than start date and less than expiry date, if applicable. \")]):_vm._e()])],1)],1):_vm._e(),_c('b-form-group',{attrs:{\"id\":\"schedule-interval\"}},[_c('b-row',[_c('b-col',{staticClass:\"pt-2\",attrs:{\"cols\":\"2\"}},[_c('label',[_vm._v(\" Repeat Every: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-col',[_c('div',{staticClass:\"form-group\"},[_c('b-row',[_c('b-col',[_c('b-form-input',{class:[{ invalid: _vm.$v.schedule.intervalValue.$error }],attrs:{\"id\":\"newScheduleIntervalValue\",\"required\":\"\",\"type\":\"number\",\"min\":\"0\",\"placeholder\":\"Interval value\",\"disabled\":!_vm.scheduleTypeEditEnabled,\"data-cy\":\"interval-value-schedule-input\"},on:{\"blur\":_vm.$v.schedule.intervalValue.$touch},model:{value:(_vm.schedule.intervalValue),callback:function ($$v) {_vm.$set(_vm.schedule, \"intervalValue\", _vm._n($$v))},expression:\"schedule.intervalValue\"}}),(_vm.$v.schedule.intervalValue.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Interval should be equal or greater than \"+_vm._s(_vm.$v.schedule.intervalValue.$params.minValue.min)+\" and less than or equal to \"+_vm._s(_vm.$v.schedule.intervalValue.$params.maxValue.max)+\". \")]):_vm._e()],1),_c('b-col',[_c('v-select-3',{staticClass:\"dark\",class:[{ invalid: _vm.$v.schedule.intervalTypeId.$error }],attrs:{\"id\":\"newScheduleIntervalType\",\"placeholder\":\"Interval type\",\"label\":\"title\",\"options\":_vm.intervalTypes,\"clearable\":false,\"reduce\":function (interval) { return interval.id; },\"append-to-body\":\"\",\"disabled\":!_vm.scheduleTypeEditEnabled,\"data-cy\":\"interval-type-schedule-select\"},on:{\"blur\":_vm.$v.schedule.intervalTypeId.$touch,\"input\":_vm.$v.schedule.intervalTypeId.$touch},model:{value:(_vm.schedule.intervalTypeId),callback:function ($$v) {_vm.$set(_vm.schedule, \"intervalTypeId\", $$v)},expression:\"schedule.intervalTypeId\"}}),(_vm.$v.schedule.intervalTypeId.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[(!_vm.$v.schedule.intervalTypeId.isValid)?_c('span',[_vm._v(\" Daily schedules cannot run for more than 24 hours. \")]):_c('span',[_vm._v(\"Interval Type is required.\")])]):_vm._e()],1)],1)],1)])],1)],1),_c('b-form-group',{attrs:{\"id\":\"schedule-reoccure\"}},[_c('b-row',[_c('b-col',{staticClass:\"pt-2\",attrs:{\"cols\":\"2\"}},[_c('label',[_vm._v(\" Expiry: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-col',[_c('b-row',[(_vm.isScheduleEndTypeNone)?_c('b-col',[_c('v-select-3',{staticClass:\"dark\",attrs:{\"id\":\"scheduleEndType\",\"clearable\":false,\"options\":_vm.getEndTypes,\"disabled\":!_vm.scheduleTypeEditEnabled,\"append-to-body\":\"\"},on:{\"input\":function($event){return _vm.onSelectedEndTypeChanged()}},model:{value:(_vm.selectedEndType),callback:function ($$v) {_vm.selectedEndType=$$v},expression:\"selectedEndType\"}})],1):_vm._e(),(!_vm.isScheduleEndTypeNone)?_c('b-col',{attrs:{\"cols\":\"3\"}},[_c('v-select-3',{staticClass:\"dark\",attrs:{\"id\":\"scheduleEndType\",\"clearable\":false,\"options\":_vm.getEndTypes,\"disabled\":!_vm.isReoccurenceAvailable() || !_vm.scheduleTypeEditEnabled,\"append-to-body\":\"\"},on:{\"input\":function($event){return _vm.onSelectedEndTypeChanged()}},model:{value:(_vm.selectedEndType),callback:function ($$v) {_vm.selectedEndType=$$v},expression:\"selectedEndType\"}})],1):_vm._e(),(_vm.isOnEndType)?_c('b-col',[_c('div',{staticClass:\"date-time-container\"},[_c('date-time',{class:{ 'invalid-select': _vm.$v.schedule.expiresOn.$error },attrs:{\"type\":\"datetime\",\"inputId\":\"ExpiresOn\",\"data-cy\":\"schedule-modal-end-date-time\",\"value-zone\":null},model:{value:(_vm.schedule.expiresOn),callback:function ($$v) {_vm.$set(_vm.schedule, \"expiresOn\", $$v)},expression:\"schedule.expiresOn\"}},[_c('label',{attrs:{\"slot\":\"after\",\"for\":\"ExpiresOn\"},slot:\"after\"},[_c('i',{staticClass:\"far fa-calendar-alt clickable-row medium-icon\"})])])],1),(this.timeZone)?_c('small',{staticClass:\"form-text text-muted\",attrs:{\"data-cy\":\"timezone-display-expiry-date\"}},[_vm._v(\" Times are displayed in \"+_vm._s(_vm.timeZone.id)+\". \")]):_vm._e(),(_vm.$v.schedule.expiresOn.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Expires should be greater than start and end dates, if applicable. \")]):_vm._e()]):_vm._e(),(_vm.isAfterOccurencesType)?_c('b-col',[_c('div',{staticClass:\"input-group\"},[_c('b-form-input',{class:[{ invalid: _vm.$v.schedule.maxOccurrences.$error }],attrs:{\"id\":\"newScheduleMaxOccurrences\",\"required\":\"\",\"type\":\"number\",\"min\":\"1\",\"placeholder\":\"Max Occurrences\",\"disabled\":!_vm.isReoccurenceAvailable() || !_vm.scheduleTypeEditEnabled},on:{\"blur\":_vm.triggerValidationOnEndType},model:{value:(_vm.schedule.maxOccurrences),callback:function ($$v) {_vm.$set(_vm.schedule, \"maxOccurrences\", _vm._n($$v))},expression:\"schedule.maxOccurrences\"}}),_c('span',{staticClass:\"pl-3 pt-3\"},[_vm._v(\" \"+_vm._s(_vm.schedule.maxOccurrences === 1 ? \"occurrence\" : \"occurrences\")+\" \")])],1),(_vm.$v.schedule.maxOccurrences.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Max Occurrences should be more than 1 and less than or equal to \"+_vm._s(_vm.$v.schedule.intervalValue.$params.maxValue.max)+\". \")]):_vm._e()]):_vm._e()],1)],1)],1)],1),_c('b-form-group',{attrs:{\"id\":\"schedule-public-holiday\"}},[_c('b-row',{attrs:{\"data-cy\":\"new-schedule-public-holidays\"}},[_c('b-col',{staticClass:\"pt-2 pr-1\",attrs:{\"cols\":\"2\"}},[_c('label',{attrs:{\"for\":\"newSchedulePublicHolidays\"}},[_vm._v(\" Public Holidays: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-col',[_c('div',{staticClass:\"form-group\"},[_c('v-select-3',{staticClass:\"dark\",class:[{ invalid: _vm.$v.schedule.publicHolidayTypeId.$error }],attrs:{\"id\":\"newSchedulePublicHolidayType\",\"placeholder\":\"Public holiday type\",\"label\":\"title\",\"options\":_vm.publicHolidayTypes,\"clearable\":false,\"reduce\":function (publicHoliday) { return publicHoliday.id; },\"append-to-body\":\"\",\"disabled\":!_vm.scheduleTypeEditEnabled,\"data-cy\":\"public-holiday-type-id-schedule-select\"},model:{value:(_vm.schedule.publicHolidayTypeId),callback:function ($$v) {_vm.$set(_vm.schedule, \"publicHolidayTypeId\", $$v)},expression:\"schedule.publicHolidayTypeId\"}}),(_vm.$v.schedule.publicHolidayTypeId.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Public Holiday Type is required. \")]):_vm._e()],1)])],1)],1),_c('b-form-checkbox',{attrs:{\"unchecked-value\":false,\"disabled\":!_vm.scheduleTypeEditEnabled},model:{value:(_vm.schedule.disabled),callback:function ($$v) {_vm.$set(_vm.schedule, \"disabled\", $$v)},expression:\"schedule.disabled\"}},[_vm._v(\" Disable Schedule \"),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Disabling the schedule will prevent the schedule from being run and will stop the current schedule if already in process.\")])]),(_vm.isMaskingSchedule)?_c('schedule-mask-duration',{attrs:{\"startMask\":_vm.schedule.startDateTime,\"endMask\":_vm.schedule.endDateTime}}):_vm._e()],1),_c('template',{slot:\"modal-footer\"},[_c('b-container',[_c('b-row',{attrs:{\"align-h\":\"between\"}},[_c('b-col',{staticClass:\"buttons-area\",attrs:{\"cols\":\"5\"}},[(_vm.isEdit && !!_vm.scheduleTypeEditEnabled)?_c('a',{staticClass:\"btn btn-danger\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"delete-schedule-btn\"},on:{\"click\":_vm.displayDeleteConfirmation}},[_c('span',[_vm._v(\"Delete\")])]):_vm._e()]),_c('b-col',{staticClass:\"buttons-area\",attrs:{\"cols\":\"5\"}},[(_vm.scheduleTypeEditEnabled)?_c('b-button',{staticClass:\"btn btn-primary ml-2 float-right\",attrs:{\"variant\":\"primary\",\"data-dismiss\":\"modal\",\"data-cy\":\"add-schedule-btn\",\"disabled\":_vm.isButtonDisabled()},on:{\"click\":_vm.onSubmit}},[_c('span',[_vm._v(_vm._s(_vm.isEdit ? \"Update\" : \"Add\"))])]):_vm._e(),_c('a',{staticClass:\"btn btn-secondary ml-2 float-right\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"close-btn\"},on:{\"click\":_vm.closeModal}},[_c('span',[_vm._v(\"Close\")])])],1)],1)],1)],1)],2),_c('confirmation-modal',{attrs:{\"visible\":_vm.isDeleteConfirmationVisible,\"okBtnText\":\"Delete\",\"cancelBtnText\":\"Cancel\",\"danger\":true,\"disabled\":!_vm.safeDeleteMatches,\"title\":\"Delete Schedule\",\"data-cy\":\"schedule-delete-confirmation\"},on:{\"ok\":_vm.confirmDelete,\"cancel\":_vm.cancelDeletion}},[_c('h5',{staticClass:\"default-error-message\"},[_vm._v(\" Are you sure you want to delete the Schedule \\\"\"),_c('strong',[_vm._v(_vm._s(_vm.schedule.title))]),_vm._v(\"\\\"? \")]),_c('div',{staticClass:\"safe-delete-container py-3\"},[_c('label',{staticClass:\"preserve-spaces\",attrs:{\"for\":\"safe-delete-input\"}},[_vm._v(\"To confirm this action, please type \\\"\"),_c('strong',[_vm._v(\"delete \"+_vm._s(_vm.schedule.title))]),_vm._v(\"\\\":\")]),_c('b-input',{attrs:{\"id\":\"safe-delete-input\",\"placeholder\":\"Type schedule title\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.confirmDelete($event)}},model:{value:(_vm.safeDeleteInput),callback:function ($$v) {_vm.safeDeleteInput=$$v},expression:\"safeDeleteInput\"}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"schedule-mask-container\",attrs:{\"data-cy\":\"mask-duration-info\"}},[_vm._m(0),_c('div',{staticClass:\"details-container\"},[(!_vm.maskOver24Hours)?_c('div',{staticClass:\"detail-section\"},[_c('div',[_vm._v(\"UnMasked Period\")]),_c('b-badge',{staticClass:\"mask-badge\",attrs:{\"variant\":\"primary\",\"data-cy\":\"unmasked-details\"}},[_vm._v(_vm._s(_vm.unMaskedEndTime)+\" : \"+_vm._s(_vm.unMaskedStartTime))])],1):_vm._e(),_c('div',{staticClass:\"detail-section\"},[_c('div',[_vm._v(\"Masked Period\")]),_c('b-badge',{staticClass:\"mask-badge\",attrs:{\"variant\":\"danger\",\"data-cy\":\"masked-details\"}},[_vm._v(_vm._s(_vm.maskedPeriod))])],1)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"overview-title\"},[_c('div',{staticClass:\"title\"},[_vm._v(\"Masking Overview\")]),_c('small',{staticClass:\"text-muted\"},[_vm._v(\"Summary of Masked and Unmasked periods this schedule will set\")])])}]\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport moment from \"moment\";\r\n\r\n@Component({})\r\nexport default class ScheduleMaskDuration extends Vue {\r\n\t@Prop({ type: String, required: true }) private startMask: string;\r\n\t@Prop({ type: String, required: true }) private endMask: string;\r\n\r\n\tprivate oneMinuteInMilliseconds: number = 60000;\r\n\r\n\tprivate get maskedStartTime(): string {\r\n\t\tconst startDate = new Date(this.startMask);\r\n\t\treturn this.formattedTime(startDate);\r\n\t}\r\n\r\n\tprivate get maskedEndTime(): string {\r\n\t\tconst endDate = new Date(this.endMask);\r\n\t\treturn this.formattedTime(endDate);\r\n\t}\r\n\r\n\tprivate get unMaskedStartTime(): string {\r\n\t\tconst startDate = new Date(this.startMask);\r\n\t\tstartDate.setMinutes(startDate.getMinutes() - 1);\r\n\t\treturn this.formattedTime(startDate);\r\n\t}\r\n\r\n\tprivate get unMaskedEndTime(): string {\r\n\t\tconst endDate = new Date(this.endMask);\r\n\t\tendDate.setMinutes(endDate.getMinutes() + 1);\r\n\t\treturn this.formattedTime(endDate);\r\n\t}\r\n\r\n\tprivate get maskedPeriod(): string {\r\n\t\tif (this.maskOver24Hours) {\r\n\t\t\treturn `${this.formattedMaskedOver24Hours(this.startMask)} : ${this.formattedMaskedOver24Hours(this.endMask)}`;\r\n\t\t}\r\n\r\n\t\treturn `${this.maskedStartTime} : ${this.maskedEndTime}`;\r\n\t}\r\n\r\n\tprivate get maskDurationInHours(): number {\r\n\t\tconst duration = moment.duration(moment(this.endMask).diff(moment(this.startMask)));\r\n\t\treturn duration.asHours();\r\n\t}\r\n\r\n\tprivate get maskOver24Hours(): boolean {\r\n\t\treturn this.maskDurationInHours > 24;\r\n\t}\r\n\r\n\tprivate formattedTime(dateTime: Date): string {\r\n\t\tconst dateTimeWithoutOffset = new Date(dateTime.getTime() - (dateTime.getTimezoneOffset() * this.oneMinuteInMilliseconds));\r\n\t\tconst formattedDateTime = dateTimeWithoutOffset.toISOString().replace('Z', '').replace('T', ' ');\r\n\t\tconst time = new Date(formattedDateTime).toTimeString().split(' ')[0].split(':');\r\n\r\n\t\treturn `${time[0]}:${time[1]}`;\r\n\t}\r\n\r\n\tprivate formattedMaskedOver24Hours(dateTimeAsString: string): string {\r\n\t\tconst dateTime = new Date(dateTimeAsString);\r\n\t\tconst dateTimeWithoutOffset = new Date(dateTime.getTime() - (dateTime.getTimezoneOffset() * this.oneMinuteInMilliseconds));\r\n\t\treturn dateTimeWithoutOffset.toISOString().replace('Z', '').replace('T', ' ').replace('.000', '');\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduleMaskDuration.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduleMaskDuration.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ScheduleMaskDuration.vue?vue&type=template&id=c1a757e8&scoped=true\"\nimport script from \"./ScheduleMaskDuration.vue?vue&type=script&lang=ts\"\nexport * from \"./ScheduleMaskDuration.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ScheduleMaskDuration.vue?vue&type=style&index=0&id=c1a757e8&prod&scoped=true&lang=css\"\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 \"c1a757e8\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Emit, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { Getter, namespace, State } from \"vuex-class\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { Schedule, ScheduleType, IntervalTypeOptions, PublicHolidaySettingOptions, IntervalType } from \"@/store/schedules/types\";\r\nimport { Response } from \"@/store/responses/types\";\r\nimport DatePicker from \"@sureview/vuejs-datepicker\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport moment from \"moment\";\r\nimport vSelect3 from \"vselect3\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport ConfirmationModal from \"@/components/mobile-raise-templates/ConfirmationModal.vue\";\r\nimport { maxLength, minLength, minValue, numeric, required, requiredIf, maxValue } from \"vuelidate/lib/validators\";\r\nimport { EndTypes, ScheduleTypes } from \"@/components/Schedules/ScheduleEnums\";\r\nimport { cloneDeep, debounce, isEmpty, isNil, isEqual } from \"lodash\";\r\nimport axios, { CancelTokenSource } from \"axios\";\r\nimport { UserPermissions, TimeZone } from \"@/store/types\";\r\nimport api from '@/services/api.service';\r\nimport ScheduleMaskDuration from \"./ScheduleMaskDuration.vue\";\r\nimport { EventType } from \"@/store/event-search/types\";\r\nimport { Datetime } from \"vue-datetime\";\r\nimport { AreaNode } from '@/types/sv-data/groups/AreaNode';\r\n\r\nconst SchedulesStore = namespace(\"schedules\");\r\nconst ResponseStore = namespace(\"responses\");\r\n\r\nconst debouncePeriod: number = process.env.NODE_ENV === \"test\" ? 1 : 500;\r\nconst minIntervalValue: number = 1;\r\nconst isoFormatWithoutDst: string = 'YYYY-MM-DDTHH:mm:ss';\r\n\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\tschedule: {\r\n\t\t\ttitle: {\r\n\t\t\t\trequired,\r\n\t\t\t\tminLength: minLength(1),\r\n\t\t\t\tmaxLength: maxLength(300),\r\n\t\t\t},\r\n\t\t\tscheduleTypeId: {\r\n\t\t\t\trequired,\r\n\t\t\t},\r\n\t\t\tgroupId: {\r\n\t\t\t\trequired,\r\n\t\t\t},\r\n\t\t\tresponseId: {\r\n\t\t\t\trequired: requiredIf(function () {\r\n\t\t\t\t\treturn this.schedule.scheduleTypeId == ScheduleTypes.ExpectedAlarm && isNil(this.schedule.responseId);\r\n\t\t\t\t}),\r\n\t\t\t},\r\n\t\t\tserverTypeEvent: {\r\n\t\t\t\trequired: requiredIf(function () {\r\n\t\t\t\t\treturn this.schedule.scheduleTypeId == ScheduleTypes.EventRaise && isNil(this.schedule.serverTypeEvent);\r\n\t\t\t\t}),\r\n\t\t\t},\r\n\t\t\tstartDateTime: {\r\n\t\t\t\trequired: requiredIf((value) => moment(value).isValid()),\r\n\t\t\t\tminTime: function (value) {\r\n\t\t\t\t\tif (this.schedule.scheduleTypeId == ScheduleTypes.EventRaise) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet isStartDateValid = moment(this.schedule.startDateTime).isBefore(this.schedule.endDateTime);\r\n\t\t\t\t\tif (this.isOnEndType) {\r\n\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\tisStartDateValid && moment(this.schedule.startDateTime).isBefore(this.schedule.expiresOn)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn isStartDateValid;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tendDateTime: {\r\n\t\t\t\trequired: requiredIf(function (value) {\r\n\t\t\t\t\tif (this.schedule.scheduleTypeId == ScheduleTypes.EventRaise) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet isValid = moment(value).isValid();\r\n\t\t\t\t\treturn isValid;\r\n\t\t\t\t}),\r\n\t\t\t\tminTime: function () {\r\n\t\t\t\t\tif (this.schedule.scheduleTypeId == ScheduleTypes.EventRaise) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet isEndDateValid = moment(this.schedule.endDateTime).isAfter(this.schedule.startDateTime);\r\n\t\t\t\t\tif (this.isOnEndType) {\r\n\t\t\t\t\t\treturn isEndDateValid && moment(this.schedule.endDateTime).isBefore(this.schedule.expiresOn);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn isEndDateValid;\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\texpiresOn: {\r\n\t\t\t\trequired: requiredIf(function () {\r\n\t\t\t\t\treturn this.isOnEndType && moment(this.schedule.expiresOn).isValid();\r\n\t\t\t\t}),\r\n\t\t\t\tminTime: function () {\r\n\t\t\t\t\tif (this.isOnEndType) {\r\n\t\t\t\t\t\treturn moment(this.schedule.expiresOn).isAfter(this.schedule.endDateTime) && moment(this.schedule.expiresOn).isAfter(this.schedule.startDateTime);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tintervalValue: {\r\n\t\t\t\tnumeric,\r\n\t\t\t\trequired,\r\n\t\t\t\tminValue: minValue(minIntervalValue),\r\n\t\t\t\tmaxValue: maxValue(2147483647),\r\n\t\t\t},\r\n\t\t\tintervalTypeId: {\r\n\t\t\t\trequired: requiredIf(function () {\r\n\t\t\t\t\treturn this.schedule.intervalValue > 0;\r\n\t\t\t\t}),\r\n\t\t\t\tisValid: function() {\r\n\t\t\t\t\treturn this.isScheduleLengthValid;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tmaxOccurrences: {\r\n\t\t\t\trequired: requiredIf(function () {\r\n\t\t\t\t\treturn this.isAfterOccurencesType;\r\n\t\t\t\t}),\r\n\t\t\t\tminValue: function() {\r\n\t\t\t\t\tif (this.isAfterOccurencesType) {\r\n\t\t\t\t\t\treturn this.schedule.maxOccurrences > 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t},\r\n\t\t\t\tmaxValue: maxValue(2147483647),\r\n\t\t\t},\r\n\t\t\tpublicHolidayTypeId: {\r\n\t\t\t\trequired\r\n\t\t\t},\r\n\t\t\tresponseMaskingMeta: {\r\n\t\t\t\tresponseIds: {\r\n\t\t\t\t\trequired: requiredIf(function () {\r\n\t\t\t\t\t\treturn this.schedule.responseMaskingMeta != null && !this.schedule.responseMaskingMeta.allAlarms;\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\thasDataChanged: {\r\n\t\t\tisValid: function() {\r\n\t\t\t\treturn !isEqual(this.originalSchedule, this.schedule);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tcomponents: {\r\n\t\t\"date-picker\": DatePicker,\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t\t\"v-select-3\": vSelect3,\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\t\"confirmation-modal\": ConfirmationModal,\r\n\t\t\"schedule-mask-duration\": ScheduleMaskDuration,\r\n\t\t\"date-time\": Datetime\r\n\t},\r\n})\r\n\r\nexport default class ScheduleModal extends Vue {\r\n\t// Root store\r\n\t@State private timeZones: TimeZone[];\r\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter getTimeZone: (timeZoneId: number) => TimeZone;\r\n\r\n\t@SchedulesStore.Getter getScheduleByIdAndDate: (id: string, start: Date) => Schedule;\r\n\t@SchedulesStore.State(\"isCreateModalVisible\") isScheduleModalVisible: boolean;\r\n\t@SchedulesStore.State isDeleteConfirmationVisible: boolean;\r\n\t@SchedulesStore.State selectedScheduleId!: string;\r\n\t@SchedulesStore.State selectedScheduleStart!: Date;\r\n\t@SchedulesStore.State tempSchedule!: Schedule;\r\n\t@SchedulesStore.State selectedGroup: number;\r\n\t@SchedulesStore.State areaTimeZoneId: number | null;\r\n\t@SchedulesStore.State scheduleTypes: ScheduleType[];\r\n\t@SchedulesStore.Mutation removeTempSchedule: () => void;\r\n\t@SchedulesStore.Mutation setIsScheduleModalVisible: (isVisible: boolean) => void;\r\n\t@SchedulesStore.Mutation setIsDeleteConfirmationVisible: (isVisible: boolean) => void;\r\n\t@SchedulesStore.Mutation setSelectedGroup: (selectedGroup: number) => void;\r\n\t@SchedulesStore.Mutation setSelectedScheduleId: ({ selectedScheduleId, selectedScheduleStart }: {selectedScheduleId: number, selectedScheduleStart: Date }) => void;\r\n\t@SchedulesStore.Mutation setIsReloadRequired: (isReloadRequired: boolean) => void;\r\n\t@SchedulesStore.Action addOrUpdateSchedule: (scheduleToAdd: Schedule) => void;\r\n\t@SchedulesStore.Action deleteSchedule: ({ scheduleId }: { scheduleId: string }) => Promise;\r\n\r\n\t// Response Store\r\n\t@ResponseStore.Action getResponseById: (responseId: number) => Promise;\r\n\t@ResponseStore.State(\"currentAlarm\") private currentAlarm;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tprivate readonly: boolean;\r\n\r\n\tprivate defaultSchedule: Schedule = this.getDefaultSchedule();\r\n\tprivate schedule: Schedule = { ...this.defaultSchedule };\r\n\tprivate selectedArea: AreaNode = null;\r\n\tprivate originalSchedule: Schedule | null = null;\r\n\tprivate selectedEndType: EndTypes = EndTypes.None;\r\n\tprivate scheduleToEdit: Schedule;\r\n\tpublic responseSearchToken: CancelTokenSource;\r\n\tprivate alarms: Response[] = [];\r\n\tprivate eventTypes: EventType[] = [];\r\n\tprivate safeDeleteInput: string | null = \"\";\r\n\tprivate currentTimeZoneId: number | null = null;\r\n\r\n\tprivate manualRaiseServerTypeId = 435;\r\n\r\n\t// Lifecycle methods\r\n\tpublic mounted(): void {\r\n\t\tthis.schedule = cloneDeep(this.defaultSchedule);\r\n\t\tthis.setDefaultToLocalFields();\r\n\t}\r\n\r\n\tbeforeDestroy(): void {\r\n\t\tthis.setIsScheduleModalVisible(false);\r\n\t}\r\n\r\n\t// Getters\r\n\tprivate get canEditSchedules(): boolean {\r\n\t\tif (this.readonly) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// feature flags\r\n\t\tif (!this.isMaskingEnabled && this.schedule.scheduleTypeId == ScheduleTypes.Masking){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!this.isEventRaiseEnabled && this.schedule.scheduleTypeId == ScheduleTypes.EventRaise){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// permissions\r\n\t\treturn this.permissions.isSystemAdmin || this.permissions.canEditSchedules;\r\n\t}\r\n\r\n\tprivate get isEdit(): boolean {\r\n\t\tif (!this.canEditSchedules) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.schedule !== null && !!this.schedule?.scheduleId;\r\n\t}\r\n\r\n\tprivate get getTitle(): string {\r\n\t\treturn this.isEdit ? \"Update Schedule\" : \"Add Schedule\";\r\n\t}\r\n\r\n\tprivate get getExpiresOn(): string {\r\n\t\tlet v = this.schedule.endDateTime;\r\n\t\treturn moment.utc(v).add(1, \"days\").toISOString();\r\n\t}\r\n\r\n\tprivate get intervalTypes(): { id: number, title: string }[] {\r\n\t\treturn IntervalTypeOptions;\r\n\t}\r\n\r\n\tprivate get publicHolidayTypes(): { id: number, title: string }[]{\r\n\t\treturn PublicHolidaySettingOptions;\r\n\t}\r\n\r\n\tprivate get getEndTypes(): EndTypes[] {\r\n\t\treturn [EndTypes.None, EndTypes.OnDate, EndTypes.After];\r\n\t}\r\n\r\n\tprivate get isOnEndType(): boolean {\r\n\t\treturn this.selectedEndType === EndTypes.OnDate;\r\n\t}\r\n\r\n\tprivate get isAfterOccurencesType(): boolean {\r\n\t\treturn this.selectedEndType === EndTypes.After;\r\n\t}\r\n\r\n\tprivate get isScheduleEndTypeNone(): boolean {\r\n\t\treturn this.selectedEndType === EndTypes.None;\r\n\t}\r\n\r\n\tprivate get scheduleTypeEditEnabled(): boolean {\r\n\t\treturn !!this.canEditSchedules;\r\n\t}\r\n\r\n\tprivate get alarmOptions(): Response[] {\r\n\t\tif (this.alarms && !!this.currentAlarm && !this.isAlarmInAlarmList(this.currentAlarm, this.alarms) && this.currentAlarm.groupId == this.schedule?.groupId) {\r\n\t\t\treturn [this.currentAlarm, ...this.alarms];\r\n\t\t}\r\n\t\treturn this.alarms ? this.alarms : [];\r\n\t}\r\n\r\n\tprivate get isResponseExpected(): boolean {\r\n\t\treturn this.isExpectedAlarmSchedule || this.isMaskingSchedule;\r\n\t}\r\n\r\n\tprivate get isScheduleTypeRaiseEvent(): boolean {\r\n\t\treturn this.isEventRaiseSchedule;\r\n\t}\r\n\r\n\tprivate get safeDeleteMatches(): boolean {\r\n\t\tlet expectedInput = `delete ${this.schedule.title}`;\r\n\t\treturn this.safeDeleteInput == expectedInput;\r\n\t}\r\n\r\n\tprivate get locale(): string {\r\n\t\tconst { locale } = Intl.DateTimeFormat().resolvedOptions();\r\n\t\treturn locale;\r\n\t}\r\n\r\n\tprivate get isScheduleLengthValid(): boolean {\r\n\t\t// RaiseEvent scheduletype has no enddatetime so is always valid\r\n\t\tif (this.isScheduleTypeRaiseEvent){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet isDailySchedule = this.schedule.intervalTypeId == IntervalType.Day;\r\n\r\n\t\tif (isDailySchedule) {\r\n\t\t\tlet duration = moment.duration(moment(this.schedule.endDateTime).diff(moment(this.schedule.startDateTime)));\r\n\t\t\treturn duration.asHours() < 24;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate get timeZoneId(): number | null {\r\n\t\t// If this brand new and Area has not been set yet, button pressed.\r\n\t\tif (!this.currentTimeZoneId) {\r\n\t\t\treturn this.areaTimeZoneId;\r\n\t\t}\r\n\r\n\t\t// Is new or existing and the Area has been changed within the modal.\r\n\t\tif (this.currentTimeZoneId) {\r\n\t\t\treturn this.currentTimeZoneId;\r\n\t\t}\r\n\r\n\t\t// Existing (clicked from Calendar) - gets timezone from schedule.\r\n\t\tif (this.schedule.timeZoneId) {\r\n\t\t\treturn this.schedule.timeZoneId;\r\n\t\t}\r\n\r\n\t\t// If new but is dragged.\r\n\t\treturn this.currentTimeZoneId;\r\n\t}\r\n\r\n\tprivate get timeZone(): TimeZone {\r\n\t\treturn this.getTimeZone(this.timeZoneId);\r\n\t}\r\n\r\n\tprivate get timeZoneIana(): string {\r\n\t\t// Get timezone based on selected area or browser if area not set\r\n\t\treturn this.timeZone?.iana ?? Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\t}\r\n\r\n\tprivate get hasScheduleChanged(): boolean {\r\n\t\tif (!this.isEdit) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet unchangedSchedule = this.getScheduleByIdAndDate(this.selectedScheduleId, this.selectedScheduleStart);\r\n\t\tlet currentSchedule = this.schedule;\r\n\r\n\t\tif (!unchangedSchedule || !currentSchedule) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn !(\r\n\t\t\tunchangedSchedule.title === currentSchedule.title &&\r\n\t\t\tunchangedSchedule.scheduleTypeId == currentSchedule.scheduleTypeId &&\r\n\t\t\tunchangedSchedule.responseId == currentSchedule.responseId &&\r\n\t\t\tunchangedSchedule.serverTypeEvent == currentSchedule.serverTypeEvent &&\r\n\t\t\tmoment(currentSchedule.startDateTime).isSame(moment(unchangedSchedule.startDateTime)) &&\r\n\t\t\tmoment(currentSchedule.endDateTime).isSame(moment(unchangedSchedule.endDateTime)) &&\r\n\t\t\tmoment(currentSchedule.expiresOn).isSame(moment(unchangedSchedule.expiresOn)) &&\r\n\t\t\tunchangedSchedule.groupId == currentSchedule.groupId &&\r\n\t\t\tunchangedSchedule.intervalTypeId == currentSchedule.intervalTypeId &&\r\n\t\t\tunchangedSchedule.intervalValue == currentSchedule.intervalValue &&\r\n\t\t\tunchangedSchedule.disabled == currentSchedule.disabled &&\r\n\t\t\tunchangedSchedule.publicHolidayTypeId == currentSchedule.publicHolidayTypeId\r\n\t\t);\r\n\t}\r\n\r\n\tprivate set alarmOptions(alarms: Response[]) {\r\n\t\tif (alarms && !!this.currentAlarm && !this.isAlarmInAlarmList(this.currentAlarm, this.alarms)) {\r\n\t\t\tthis.alarms = [this.currentAlarm, ...alarms];\r\n\t\t}\r\n\r\n\t\tthis.alarms = alarms;\r\n\t}\r\n\r\n\tprivate get isExpectedAlarmSchedule(): boolean {\r\n\t\treturn this.schedule.scheduleTypeId == ScheduleTypes.ExpectedAlarm;\r\n\t}\r\n\r\n\tprivate get isMaskingSchedule(): boolean {\r\n\t\treturn this.schedule.scheduleTypeId == ScheduleTypes.Masking;\r\n\t}\r\n\r\n\tprivate get isEventRaiseSchedule(): boolean {\r\n\t\treturn this.schedule.scheduleTypeId == ScheduleTypes.EventRaise;\r\n\t}\r\n\r\n\tprivate get hideResponseSelector(): boolean {\r\n\t\treturn this.isMaskingSchedule && this.schedule.responseMaskingMeta != null && this.schedule.responseMaskingMeta.allAlarms;\r\n\t}\r\n\r\n\tprivate set timeZoneId(timeZoneId: number) {\r\n\t\tthis.currentTimeZoneId = timeZoneId;\r\n\t}\r\n\r\n\tprivate get isMaskingEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Schedules\", \"Masking\"]);\r\n\t}\r\n\r\n\tprivate get isEventRaiseEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Schedules\", \"EventRaise\"]);\r\n\t}\r\n\r\n\tprivate get filteredScheduleTypes(): ScheduleType[] {\r\n\t\tlet schedulesTypeList = this.scheduleTypes;\r\n\r\n\t\tif (!this.isMaskingEnabled) {\r\n\t\t\tschedulesTypeList = schedulesTypeList.filter(st => st.scheduleTypeId != ScheduleTypes.Masking);\r\n\t\t}\r\n\r\n\t\tif (!this.isEventRaiseEnabled) {\r\n\t\t\tschedulesTypeList = schedulesTypeList.filter(st => st.scheduleTypeId != ScheduleTypes.EventRaise);\r\n\t\t}\r\n\r\n\t\treturn schedulesTypeList;\r\n\t}\r\n\r\n\tprivate get scheduleTypeTitle(): string {\r\n\t\tlet scheduleType = this.scheduleTypes.find(st => st.scheduleTypeId == this.schedule.scheduleTypeId);\r\n\r\n\t\tif (scheduleType){\r\n\t\t\treturn scheduleType.title;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Watchers\r\n\t@Watch(\"schedule.intervalValue\")\r\n\tprivate isReoccurenceAvailable(): boolean {\r\n\t\treturn this.schedule?.intervalValue > 0;\r\n\t}\r\n\r\n\t@Watch(\"isDeleteConfirmationVisible\")\r\n\tprivate async onDeleteModalVisibilityChange(): Promise {\r\n\t\tif (!this.isDeleteConfirmationVisible) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.tempSchedule) {\r\n\t\t\tawait this.updateScheduleForModal(this.tempSchedule);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"isScheduleModalVisible\")\r\n\tprivate async onModalVisibilityChange(): Promise {\r\n\t\tif (!this.isScheduleModalVisible) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If Schedule already exists\r\n\t\tif (this.selectedScheduleId) {\r\n\t\t\tthis.scheduleToEdit = this.getScheduleByIdAndDate(this.selectedScheduleId, this.selectedScheduleStart);\r\n\t\t\tawait this.updateScheduleForModal(this.scheduleToEdit);\r\n\t\t}\r\n\r\n\t\t// If we're dragging then set some defaults.\r\n\t\tif (this.tempSchedule) {\r\n\t\t\tawait this.updateScheduleForModal(this.tempSchedule);\r\n\t\t}\r\n\r\n\t\t// If the Schedule is new.\r\n\t\tif (!isEmpty(this.schedule)) {\r\n\t\t\tthis.selectedEndType = this.getSelectedEndType();\r\n\r\n\t\t\tthis.schedule.groupId = this.selectedGroup;\r\n\t\t\tthis.schedule.timeZoneId = this.areaTimeZoneId;\r\n\t\t}\r\n\r\n\t\tthis.originalSchedule = cloneDeep(this.schedule);\r\n\t}\r\n\r\n\t@Watch(\"schedule.groupId\")\r\n\tprivate async onGroupChanged(newGroupId?: number, oldGroupId?: number): Promise {\r\n\t\tif (!!newGroupId && newGroupId != oldGroupId) {\r\n\t\t\tawait this.performAlarmSearch(\"\");\r\n\t\t\tawait this.loadEventTypes(newGroupId);\r\n\r\n\t\t\t// Reset the alarm & event type.\r\n\t\t\tif (oldGroupId) {\r\n\t\t\t\tthis.schedule.responseId = null;\r\n\t\t\t\tthis.schedule.serverTypeEvent = null;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setAreaTimeZone();\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"schedule.startDateTime\")\r\n\tprivate onStartDateTimeChanged(): void {\r\n\t\tthis.triggerDatesValidation();\r\n\t}\r\n\r\n\t@Watch(\"schedule.endDateTime\")\r\n\tprivate onEndDateTimeChanged(): void {\r\n\t\tthis.triggerDatesValidation();\r\n\t}\r\n\r\n\t@Watch(\"schedule.expiresOn\")\r\n\tprivate onExpiresOnChanged(): void {\r\n\t\tthis.triggerDatesValidation();\r\n\t\tthis.triggerValidationOnEndType();\r\n\t}\r\n\r\n\t@Watch(\"schedule.responseMaskingMeta.allAlarms\")\r\n\tprivate onAllAlarmsChanged(newValue: boolean, oldValue: boolean): void {\r\n\t\tif (oldValue == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!oldValue && newValue) {\r\n\t\t\tthis.schedule.responseMaskingMeta.responseIds = [];\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"schedule.scheduleTypeId\")\r\n\tprivate onScheduleTypeChanged(newValue: number, oldValue: number): void {\r\n\t\tif (newValue == ScheduleTypes.Masking && newValue !== oldValue) {\r\n\t\t\tthis.schedule.responseMaskingMeta = this.schedule.responseMaskingMeta ?? { responseIds: [], allAlarms: false, disarmReason: \"\", disarmUntil: this.schedule.startDateTime };\r\n\t\t\tthis.schedule.responseId = null;\r\n\t\t\tthis.schedule.serverTypeEvent = null;\r\n\t\t}\r\n\t\telse if (newValue == ScheduleTypes.ExpectedAlarm) {\r\n\t\t\tthis.schedule.responseMaskingMeta = null;\r\n\t\t\tthis.schedule.serverTypeEvent = null;\r\n\t\t}\r\n\t\telse if (newValue == ScheduleTypes.EventRaise) {\r\n\t\t\tthis.schedule.responseMaskingMeta = null;\r\n\t\t\tthis.schedule.responseId = null;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"selectedArea\")\r\n\tprivate setScheduleId(): void {\r\n\t\tif(this.selectedArea != null) {\r\n\t\t\tthis.setSelectedGroup(this.selectedArea.id);\r\n\t\t\tthis.schedule.groupId = this.selectedGroup;\r\n\t\t}\r\n\t}\r\n\r\n\t// Emitters\r\n\t@Emit(\"close-modal\")\r\n\tprivate closeModal(): void {\r\n\t\tthis.schedule = cloneDeep(this.defaultSchedule);\r\n\t\tthis.originalSchedule = null;\r\n\t\tthis.scheduleToEdit = null;\r\n\t\tthis.setDefaultToLocalFields();\r\n\t\tthis.setSelectedScheduleId({ selectedScheduleId: null, selectedScheduleStart: null });\r\n\t\tthis.removeTempSchedule();\r\n\t\tthis.setIsScheduleModalVisible(false);\r\n\t\tthis.$v.$reset();\r\n\t}\r\n\r\n\t@Emit(\"submit\")\r\n\tpublic async onSubmit(): Promise {\r\n\t\tthis.$v.$touch();\r\n\r\n\t\tif (this.$v.$invalid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this.schedule.scheduleTypeId == ScheduleTypes.EventRaise){\r\n\t\t\tlet startDateTime = this.schedule.startDateTime;\r\n\t\t\tthis.schedule.endDateTime = moment(startDateTime).add(1, \"minutes\").format(isoFormatWithoutDst);\r\n\t\t}\r\n\r\n\t\tawait this.addOrUpdateSchedule(this.schedule);\r\n\t\tthis.setSelectedGroup(this.schedule.groupId);\r\n\t\tthis.closeModal();\r\n\t\tthis.setIsReloadRequired(true);\r\n\t}\r\n\r\n\tprivate setDefaultToLocalFields(): void {\r\n\t\tthis.selectedEndType = EndTypes.None;\r\n\t\tthis.scheduleToEdit = null;\r\n\t}\r\n\r\n\tprivate async updateScheduleForModal(scheduleToEdit: Schedule): Promise {\r\n\t\tif (!scheduleToEdit) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.schedule.scheduleId = scheduleToEdit.scheduleId;\r\n\t\tthis.schedule.title = scheduleToEdit.title;\r\n\t\tthis.schedule.startDateTime = scheduleToEdit.startDateTime;\r\n\t\tthis.schedule.endDateTime = scheduleToEdit.endDateTime;\r\n\t\tthis.schedule.scheduleTypeId = scheduleToEdit.scheduleTypeId;\r\n\t\tthis.schedule.intervalValue = scheduleToEdit.intervalValue;\r\n\t\tthis.schedule.expiresOn = scheduleToEdit.expiresOn;\r\n\t\tthis.schedule.maxOccurrences = scheduleToEdit.maxOccurrences;\r\n\t\tthis.schedule.intervalTypeId = scheduleToEdit.intervalTypeId;\r\n\t\tthis.schedule.publicHolidayTypeId = scheduleToEdit.publicHolidayTypeId;\r\n\t\tthis.schedule.responseId = scheduleToEdit.responseId;\r\n\t\tthis.schedule.groupId = scheduleToEdit.groupId;\r\n\t\tthis.schedule.disabled = scheduleToEdit.disabled;\r\n\t\tthis.schedule.responseMaskingMeta = scheduleToEdit.responseMaskingMeta ?? null;\r\n\t\tthis.schedule.timeZoneId = scheduleToEdit.timeZoneId;\r\n\t\tthis.schedule.serverTypeEvent = scheduleToEdit.serverTypeEvent;\r\n\r\n\t\tthis.selectedEndType = this.getSelectedEndType();\r\n\r\n\t\tif (!!this.schedule.responseId && this.isExpectedAlarmSchedule) {\r\n\t\t\tawait this.getResponseById(this.schedule.responseId);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getSelectedEndType(): EndTypes {\r\n\t\tif (this.schedule.maxOccurrences) {\r\n\t\t\treturn EndTypes.After;\r\n\t\t} else if (this.schedule.expiresOn) {\r\n\t\t\treturn EndTypes.OnDate;\r\n\t\t} else {\r\n\t\t\treturn EndTypes.None;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate calendarDateFormatter(date: string): string | null {\r\n\t\tif (date) {\r\n\t\t\tlet momentDate = moment(date).toDate();\r\n\t\t\tlet format = new Intl.DateTimeFormat(this.locale).format(momentDate);\r\n\t\t\treturn format;\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate combineDateWithTime(date: string, time: string): string | null {\r\n\t\tlet hours: number = +time.split(\":\")[0];\r\n\t\tlet minutes: number = +time.split(\":\")[1];\r\n\t\treturn moment(date).utc(true).set(\"hour\", hours).set(\"minute\", minutes).toISOString();\r\n\t}\r\n\r\n\tprivate displayDeleteConfirmation(): void {\r\n\t\tthis.setIsDeleteConfirmationVisible(true);\r\n\t}\r\n\r\n\tprivate async confirmDelete(): Promise {\r\n\t\tif (!this.safeDeleteMatches) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.deleteItem();\r\n\t}\r\n\r\n\tprivate async deleteItem(): Promise {\r\n\t\tthis.setIsDeleteConfirmationVisible(false);\r\n\t\tawait this.deleteSchedule({\r\n\t\t\tscheduleId: this.schedule.scheduleId\r\n\t\t});\r\n\t\tthis.safeDeleteInput = \"\";\r\n\t\tthis.setIsReloadRequired(true);\r\n\t\tthis.closeModal();\r\n\t}\r\n\r\n\tprivate cancelDeletion(): void {\r\n\t\tthis.setIsDeleteConfirmationVisible(false);\r\n\t\tthis.safeDeleteInput = \"\";\r\n\r\n\t\tif (!this.isScheduleModalVisible){\r\n\t\t\tthis.removeTempSchedule();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async handleAlarmSearchInput(searchTerm: string): Promise {\r\n\t\tawait this.performAlarmSearch(searchTerm);\r\n\t}\r\n\r\n\tprivate performAlarmSearch: (searchTeam: string) => Promise = debounce(\r\n\t\tasync function (searchTerm: string) {\r\n\t\t\tif (this.responseSearchToken) {\r\n\t\t\t\tthis.responseSearchToken.cancel(\"Cancel Search\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.responseSearchToken = axios.CancelToken.source();\r\n\t\t\tif (!this.schedule.groupId) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\ttry {\r\n\t\t\t\tlet responses = await api.getAllResponsesByArea(this.schedule.groupId, searchTerm);\r\n\t\t\t\tthis.alarmOptions = responses;\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn; //Return when past requests are cancelled\r\n\t\t\t}\r\n\t\t},\r\n\t\tdebouncePeriod,\r\n\t\t{ leading: false, trailing: true }\r\n\t);\r\n\r\n\tprivate onSelectedScheduleTypeChanged(): void {\r\n\t\tif (this.schedule.scheduleTypeId != ScheduleTypes.ExpectedAlarm) {\r\n\t\t\tthis.setDefaultResponseId();\r\n\t\t}\r\n\r\n\t\tif (this.schedule.scheduleTypeId != ScheduleTypes.EventRaise) {\r\n\t\t\tthis.setDefaultEventTypeId();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setDefaultResponseId(): void {\r\n\t\tthis.schedule.responseId = null;\r\n\t}\r\n\r\n\tprivate setDefaultEventTypeId(): void {\r\n\t\tthis.schedule.serverTypeEvent = null;\r\n\t}\r\n\r\n\tprivate onSelectedEndTypeChanged(): void {\r\n\t\tif (this.isScheduleEndTypeNone) {\r\n\t\t\tthis.clearExpiresOn();\r\n\t\t\tthis.setDefaultMaxOccurences();\r\n\t\t} else if (this.isOnEndType) {\r\n\t\t\tthis.setDefaultMaxOccurences();\r\n\t\t\tthis.setDefaultExpiresOn();\r\n\t\t} else if (this.isAfterOccurencesType) {\r\n\t\t\tthis.clearExpiresOn();\r\n\t\t\tthis.setDefaultMaxOccurences();\r\n\t\t}\r\n\t\tthis.triggerValidationOnEndType();\r\n\t}\r\n\r\n\t/*\r\n\t* Clear expiry ie. Expiry is set to 'None' so we dont want to limit the repeat value to a default expiry date.\r\n\t*/\r\n\tprivate clearExpiresOn(): void {\r\n\t\tthis.schedule.expiresOn = null;\r\n\t}\r\n\r\n\tprivate setDefaultExpiresOn(): void {\r\n\t\tthis.schedule.expiresOn = this.getExpiresOn;\r\n\t}\r\n\r\n\tprivate setDefaultMaxOccurences(): void {\r\n\t\tthis.schedule.maxOccurrences = 0;\r\n\t}\r\n\r\n\tprivate triggerValidationOnEndType(): void {\r\n\t\tthis.triggerDatesValidation();\r\n\t\tthis.$v!.schedule!.maxOccurrences!.$touch();\r\n\t}\r\n\r\n\tprivate triggerDatesValidation(): void {\r\n\t\tthis.$v!.schedule!.startDateTime!.$touch();\r\n\t\tthis.$v!.schedule!.endDateTime!.$touch();\r\n\r\n\t\tif (this.selectedEndType !== EndTypes.None) {\r\n\t\t\tthis.$v!.schedule!.expiresOn!.$touch();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getDefaultSchedule(): Schedule {\r\n\t\tlet startDateTime = new Date().toISOString();\r\n\t\tlet endDateTime = moment(startDateTime).add(1, \"days\").toDate().toISOString();\r\n\t\treturn {\r\n\t\t\tscheduleTypeId: null,\r\n\t\t\tgroupId: this.selectedGroup,\r\n\t\t\tscheduleId: null,\r\n\t\t\tstartDateTime: startDateTime,\r\n\t\t\tendDateTime: endDateTime,\r\n\t\t\ttitle: \"\",\r\n\t\t\tintervalValue: minIntervalValue,\r\n\t\t\tintervalTypeId: null,\r\n\t\t\tmaxOccurrences: null,\r\n\t\t\texpiresOn: null,\r\n\t\t\tresponseId: null,\r\n\t\t\tpublicHolidayTypeId: null,\r\n\t\t\tdaysToRun: \"\",\r\n\t\t\tdisabled: false,\r\n\t\t\tresponseMaskingMeta: null,\r\n\t\t\tserverTypeEvent: null,\r\n\t\t\tnextOccurrence: null\r\n\t\t}\r\n\t}\r\n\r\n\tprivate isAlarmInAlarmList(alarm: Response, alarmList: Response[]): boolean {\r\n\t\tif (!alarm || !alarmList) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn alarmList.findIndex((alarm) => alarm.responseID == alarm.responseID) > -1;\r\n\t}\r\n\r\n\tprivate async setAreaTimeZone(): Promise {\r\n\t\tif(!this.schedule.groupId){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet { timeZoneID } : { timeZoneID: number } = await api.loadGroup(this.schedule.groupId);\r\n\t\tthis.timeZoneId = timeZoneID;\r\n\t}\r\n\r\n\tprivate getDateOnly(date: Date): string {\r\n\t\treturn moment(date).utc(true).startOf(\"day\").toISOString();\r\n\t}\r\n\r\n\tprivate getTimeOnly(date: Date): string {\r\n\t\tlet hours = date.getHours().toString().padStart(2, \"0\");\r\n\t\tlet mins = date.getMinutes().toString().padStart(2, \"0\");\r\n\r\n\t\treturn `${hours}:${mins}`;\r\n\t}\r\n\r\n\tprivate async loadEventTypes(groupId: number){\r\n\t\tlet { data } = await api.loadServerEventTypes(this.manualRaiseServerTypeId, groupId);\r\n\t\tthis.eventTypes = data;\r\n\t}\r\n\r\n\r\n\tprivate isButtonDisabled(): boolean {\r\n\t\treturn (\r\n\t\t\t!this.hasScheduleChanged ||\r\n\t\t\tthis.$v.$invalid ||\r\n\t\t\t(this.selectedGroup !== null &&\r\n\t\t\tthis.isMaskingEnabled &&\r\n\t\t\tthis.selectedArea &&\r\n\t\t\tthis.selectedArea.disableMasking &&\r\n\t\t\tthis.schedule.scheduleTypeId === ScheduleTypes.Masking));\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduleModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduleModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ScheduleModal.vue?vue&type=template&id=6d35477d&scoped=true\"\nimport script from \"./ScheduleModal.vue?vue&type=script&lang=ts\"\nexport * from \"./ScheduleModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ScheduleModal.vue?vue&type=style&index=0&id=6d35477d&prod&lang=scss&scoped=true\"\nimport style1 from \"./ScheduleModal.vue?vue&type=style&index=1&id=6d35477d&prod&lang=css\"\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 \"6d35477d\",\n null\n \n)\n\nexport default component.exports","// TODO: Replace this with dependancy from https://github.com/xanf/vuex-shared-mutations\r\n// when bugs have been fixed.\r\n\r\nconst DEFAULT_SHARING_KEY = \"vuex-mutations-sharer\";\r\nconst DEFAULT_STORAGE_KEY = \"vuex-mutation-sharer-storage\";\r\n\r\nexport default ({ predicate, sharingKey, storageKey, excludedPages }: any) => (store: any) => {\r\n\tif (typeof window === \"undefined\" || !window.localStorage) {\r\n\t\tconsole.error(\r\n\t\t\t\"[vuex-shared-mutations] localStorage is not available. Disabling plugin\"\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (typeof predicate !== \"function\" && !Array.isArray(predicate)) {\r\n\t\tconsole.error(\r\n\t\t\t\"[vuex-shared-mutations] Predicate should be either array of mutation names or function. Disabling plugin\"\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n\r\n\ttry {\r\n\t\twindow.localStorage.setItem(\"vuex-mutations-sharer__test\", \"test\");\r\n\t\twindow.localStorage.removeItem(\"vuex-mutations-sharer__test\");\r\n\t} catch (e) {\r\n\t\tconsole.error(\r\n\t\t\t\"[vuex-shared-mutations] Unable to use setItem on localStorage. Disabling plugin\"\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n\r\n\tlet committing = false;\r\n\tconst key = sharingKey || DEFAULT_SHARING_KEY;\r\n\tconst storageKeyEntry = storageKey || DEFAULT_STORAGE_KEY;\r\n\r\n\tconst shouldShare =\r\n\t\ttypeof predicate === \"function\"\r\n\t\t\t? predicate\r\n\t\t\t: (mutation: any) => predicate.indexOf(mutation.type) !== -1;\r\n\r\n\tstore.subscribe((mutation: any, state: any) => {\r\n\t\tif (committing) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (shouldShare(mutation, state)) {\r\n\t\t\ttry {\r\n\t\t\t\t// IE11 does not produce storage event in case of big payload\r\n\t\t\t\t// We are hacking around this by using two entries - one to actually\r\n\t\t\t\t// store relevant data - and one for notifications\r\n\t\t\t\twindow.localStorage.setItem(\r\n\t\t\t\t\tstorageKeyEntry,\r\n\t\t\t\t\tJSON.stringify(mutation)\r\n\t\t\t\t);\r\n\t\t\t\twindow.localStorage.setItem(key, \"notification\");\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(\r\n\t\t\t\t\t\"[vuex-shared-mutations] Unable to use setItem on localStorage\"\r\n\t\t\t\t);\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t} finally {\r\n\t\t\t\twindow.localStorage.removeItem(key);\r\n\t\t\t\twindow.localStorage.removeItem(storageKeyEntry);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\twindow.addEventListener(\"storage\", event => {\r\n\t\tif (!event.newValue || event.key !== storageKeyEntry || excludedPages.some((page: string) => event.url.includes(page))) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst mutation = JSON.parse(event.newValue);\r\n\t\t\tif (mutation != null) {\r\n\t\t\t\tcommitting = true;\r\n\t\t\t\tstore.commit(mutation.type, mutation.payload);\r\n\t\t\t}\r\n\t\t} catch (error) {\r\n\t\t\tconsole.error(\r\n\t\t\t\t\"[vuex-shared-mutations] Unable to parse shared mutation data\"\r\n\t\t\t);\r\n\t\t\tconsole.error(event.newValue, error);\r\n\t\t} finally {\r\n\t\t\tcommitting = false;\r\n\t\t}\r\n\t});\r\n};\r\n","import { RootState } from \"./types\";\r\n\r\n// @ref https://github.com/kelektiv/node-uuid\r\nconst windowId = new Date().valueOf().toString();\r\n\r\nexport function getDefaultState(): RootState {\r\n\treturn {\r\n\t\tappInitialised: false,\r\n\t\tdataError: false,\r\n\t\tshowRoutingGroupsLegend: false,\r\n\t\twindowId,\r\n\t\tUser: {\r\n\t\t\tuserId: null,\r\n\t\t\tuserGroupId: null,\r\n\t\t\tloggedIn: false,\r\n\t\t\tusername: null,\r\n\t\t\tfullName: \"\",\r\n\t\t\terror: \"\",\r\n\t\t\tisFullUser: false,\r\n\t\t\tuserPermissions: {\r\n\t\t\t\tcanManageContactRoles: false,\r\n\t\t\t\tcanEditSettings: false,\r\n\t\t\t\tcanHandleAlarms: false,\r\n\t\t\t\tcanViewReports: false,\r\n\t\t\t\tcanAddIndividualActions: false,\r\n\t\t\t\tcanEditUserPermissions: false,\r\n\t\t\t\tcanViewSiteSetup: false,\r\n\t\t\t\tcanEditSiteSetup: false,\r\n\t\t\t\tcanRaiseActivityLog: false,\r\n\t\t\t\tcanToggleLogVisibility: false,\r\n\t\t\t\tcanEditOwnActivityLog: false,\r\n\t\t\t\tcanEditOtherActivityLogs: false,\r\n\t\t\t\tisSystemAdmin: false,\r\n\t\t\t\tcanDisarmSites: false,\r\n\t\t\t\tcanDisarmSitesExtended: false,\r\n\t\t\t\tcanSetResponseToMasked: false,\r\n\t\t\t\tcanSetSiteToOnTest: false,\r\n\t\t\t\tcanSetSiteToAuditMode: false,\r\n\t\t\t\tcanViewEvents: false,\r\n\t\t\t\tcanAccessQuickControl: false,\r\n\t\t\t\tcanViewMediaMatrixControls: false,\r\n\t\t\t\tcanAccessManualRaise: false,\r\n\t\t\t\tcanAccessManualTour: false,\r\n\t\t\t\tcanViewSitRep: false,\r\n\t\t\t\tcanUseMobile: false,\r\n\t\t\t\tcanViewMobileRaise: false,\r\n\t\t\t\tcanEditMobileRaise: false,\r\n\t\t\t\tcanDownloadEventSearchSitRep: false,\r\n\t\t\t\tcanDownloadEventSearchMedia: false,\r\n\t\t\t\tcanViewSubscriptionDetails: false,\r\n\t\t\t\tcanProcessActiveAlarms: false,\r\n\t\t\t\tcanDownloadSingleClip: false,\r\n\t\t\t\tisAccountAdmin: false,\r\n canViewExternalMapLayers: false,\r\n\t\t\t\tcanEditExternalMapLayers: false,\r\n\t\t\t\tcanEditInsightsTitle: false,\r\n\t\t\t\tcanExtendAlerts: false,\r\n\t\t\t\tcanEditMaps: false,\r\n\t\t\t\tcanEditSystemSettings: false,\r\n\t\t\t\tcanEditEventCategorySetup: false,\r\n\t\t\t\tcanEditGuardTours: false,\r\n\t\t\t\tcanAssignGuardTour: false,\r\n\t\t\t\tcanConductGuardTour: false,\r\n\t\t\t\tcanClaimFromMobileRaise: false,\r\n\t\t\t\tcanPreserveEvents: false,\r\n\t\t\t\tcanRequestSupport: false,\r\n\t\t\t\tcanEditAssetSetup: false,\r\n\t\t\t\tcanViewFieldOps: false,\r\n\t\t\t\tcanEditFieldOps: false,\r\n\t\t\t\tcanOverrideGroupSync: false,\r\n\t\t\t\tcanUpdateEventLocation: false,\r\n\t\t\t\tcanUpdateEndedEventLocation: false,\r\n\t\t\t\tcanEditAutomations: false,\r\n\t\t\t\tcanViewAutomations: false,\r\n\t\t\t\tcanViewSystemView: false,\r\n\t\t\t\tcanPromoteSituationalAwarenessEvent: false,\r\n\t\t\t\tcanDismissSituationalAwarenessEvent: false,\r\n\t\t\t\tcanViewSituationalAwarenessEvents: false,\r\n\t\t\t\tcanViewRulesEngine: false,\r\n\t\t\t\tcanEditRulesEngine: false,\r\n\t\t\t\tcanUpdateEventCategory: false,\r\n\t\t\t\tcanEditSchedules: false,\r\n\t\t\t\tcanViewSchedules: false,\r\n\t\t\t\tcanEndMultipleEvents: false,\r\n\t\t\t\tcanEditMaskReasons: false,\r\n\t\t\t\tcanViewMaskReasons: false,\r\n\t\t\t\tcanMaskUntilDateTime: false,\r\n\t\t\t\tcanEditPostEvent: false,\r\n\t\t\t\tcanChangeMaskAction: false,\r\n\t\t\t\tcanViewEventHistory: false,\r\n\t\t\t\tcanPutAlarmPointsOnTest: false,\r\n\t\t\t\tcanUseVirtualAssistSummary: false,\r\n\t\t\t\tcanViewNotificationTemplates: false,\r\n\t\t\t\tcanEditNotificationTemplates: false,\r\n\t\t\t\tcanConfigureSuiteSync: false,\r\n\t\t\t\tcanEditInvolvedParties: false,\r\n\t\t\t\tcanUseVirtualOperators: false,\r\n\t\t\t\tcanConfigureDeviceSync: false,\r\n\t\t\t\tcanViewCustomFields: false,\r\n\t\t\t\tcanEditCustomFields: false,\r\n\t\t\t\tcanViewAdvancedStatusFilters: false,\r\n\t\t\t\tcanEditAdvancedStatusFilters: false,\r\n\t\t\t\tcanViewSLAs: false,\r\n\t\t\t\tcanEditSLAs: false,\r\n\t\t\t\talarmQueueFilterRestrictions: false,\r\n\t\t\t\tcanFailOverAppliance: false,\r\n\t\t\t\tcanPerformMatrixSnapshot: false,\r\n\t\t\t\tcanOverrideEventActionPlan: false\r\n\t\t\t},\r\n\t\t\tdynamicLinkConfig: null,\r\n\t\t\tisFirstLogin: false,\r\n\t\t\ttenantGroupId: 0,\r\n\t\t\tuserPrefs: {\r\n\t\t\t\tuseImperialMeasurements: false\r\n\t\t\t},\r\n\t\t\tmobileAppEnabled: false,\r\n\t\t\tsuiteUserId: \"\",\r\n\t\t\tsuiteResponseLicenced: false,\r\n\t\t\tsuiteCasesLicenced: false\r\n\t\t},\r\n\t\tsystemPrefs: {\r\n\t\t\talarmAgeWarningSeconds: null,\r\n\t\t\talarmScreenTimeoutSeconds: null,\r\n\t\t\tcanUsersAddIndividualActions: false,\r\n\t\t\thideLabels: false,\r\n\t\t\trequireMapPin: false,\r\n\t\t\tmapType: \"\",\r\n\t\t},\r\n\t\tmobilePrefs: {\r\n\t\t\tmapStyle: \"\"\r\n\t\t},\r\n\t\ttimeZoneAbbr: \"\",\r\n\t\tUserGroups: [],\r\n\t\tkeyboardShortcuts: [],\r\n\t\tlegendKeys: [],\r\n\t\troutingGroups: [],\r\n\t\tactiveRegion: {\r\n\t\t\tregionId: 0, // 0 = default region\r\n\t\t\tregionUrl: process.env.VUE_APP_HTTP_API_URI // local API url\r\n\t\t},\r\n\t\tlocalUserData: null,\r\n\t\tfeaturesList: null,\r\n\t\ttimeZones: null,\r\n\t\tisSessionHeartBeatActive: false,\r\n\t\tisSystemAdminAccessTimeModalHidden: false,\r\n\t\televationLabels: [],\r\n\t\tappOptions: null,\r\n\t\trequiresConfiguration: null,\r\n\t\ttenantSystemPrefs: {\r\n\t\t\tdefaultMaskValue: 10,\r\n\t\t\tdefaultParkValue: 10,\r\n\t\t\talarmAgeWarningSeconds: null,\r\n\t\t\tdefaultMaskAction: false,\r\n\t\t\tmaxResponseSlaDuration: null,\r\n\t\t\tresponseSlaNotifyAtSecondsRemaining: null,\r\n\t\t},\r\n\t\treloadEventQueue: false,\r\n\t\tautoFeedAlarms: false\r\n\t};\r\n}\r\n","import { RootState } from \"./types\";\r\nimport { get } from \"lodash\";\r\n\r\nexport const getters = {\r\n\tisLoggedIn: (state: RootState) => state.User.loggedIn,\r\n\tisAppInitialised: (state: RootState) => state.appInitialised,\r\n\tgetUserName: (state: RootState) => state.User.fullName,\r\n\tgetUserEmail: (state: RootState) => state.User.username,\r\n\tgetLoginError: (state: RootState) => state.User.error,\r\n\tgetDataError: (state: RootState) => state.dataError,\r\n\tgetShortcuts: (state: RootState) => state.keyboardShortcuts,\r\n\tgetLegendKeys: (state: RootState) => state.legendKeys,\r\n\tisFullUser: (state: RootState) => state.User.isFullUser,\r\n\tgetTimeZoneAbbr: (state: RootState) => state.timeZoneAbbr,\r\n\tgetUserGroups: (state: RootState) => state.UserGroups,\r\n\tgetShowRoutingGroupsLegend: (state: RootState) => state.showRoutingGroupsLegend,\r\n\tgetPermissions: (state: RootState) => state.User.userPermissions,\r\n\tgetUseImperialMeasurements: (state: RootState) => state.User.userPrefs.useImperialMeasurements,\r\n\tgetMapType: (state: RootState) => state.systemPrefs.mapType,\r\n\tgetMapStyle: (state: RootState) => state.mobilePrefs.mapStyle,\r\n\tgetHideLabels: (state: RootState) => state.systemPrefs.hideLabels,\r\n\tgetRequireMapPin: (state: RootState) => state.systemPrefs.requireMapPin,\r\n\tgetRoutingGroups: (state: RootState) => state.routingGroups,\r\n\tgetAlarmScreenTimeoutSeconds: (state: RootState) => state.systemPrefs.alarmScreenTimeoutSeconds,\r\n\tgetAlarmAgeWarningSeconds: (state: RootState) => state.tenantSystemPrefs.alarmAgeWarningSeconds,\r\n\tgetMaxResponseSlaDuration: (state: RootState) => state.tenantSystemPrefs.maxResponseSlaDuration,\r\n\tgetResponseSlaNotifyAtSecondsRemaining: (state: RootState) => state.tenantSystemPrefs.responseSlaNotifyAtSecondsRemaining,\r\n\tgetActiveRegion: (state: RootState) => state.activeRegion,\r\n\tgetVersion: (state: RootState) => state.appOptions?.version,\r\n\tgetMapKey: (state: RootState) => process.env.VUE_APP_GOOGLE_MAPS_API_KEY,\r\n\tgetFeaturesList: (state: RootState) => state.featuresList,\r\n\tgetFeature: state => (featureNames: string[]) => {\r\n\t\treturn get(state.featuresList, featureNames, false);\r\n\t},\r\n\tgetUserId: (state: RootState) => state.User.userId,\r\n\tgetUserGroupId: (state: RootState) => state.User.userGroupId,\r\n\tgetUserTenantGroupId: (state: RootState) => state.User.tenantGroupId,\r\n\tgetUserSuiteTenantId:(state: RootState) => state.User.suiteTenantId,\r\n\tgetMaskMaxHours: (state: RootState) => {\r\n\t\tif (state.User.userPermissions.canDisarmSitesExtended) {\r\n\t\t\treturn 72;\r\n\t\t} else if (state.User.userPermissions.canDisarmSites) {\r\n\t\t\treturn 24;\r\n\t\t}\r\n\t},\r\n\tgetIsFieldOpsLicensed: (state: RootState) => {\r\n\t\treturn !state.User ||\r\n\t\t\t(state.User && (!state.User.suiteUserId || (state.User.suiteUserId && state.User.mobileAppEnabled)));\r\n\t},\r\n\tgetIsResponseLicensed: (state: RootState) => {\r\n\t\treturn !state.User ||\r\n\t\t(state.User && (!state.User.suiteUserId || (state.User.suiteUserId && state.User.suiteResponseLicenced)));\r\n\t},\r\n\tgetFieldOpsLicencedRoutes: (state: RootState) => {\r\n\t\t// Routes that can be accessed with just FieldOps Licence\r\n\t\treturn [\"assetSetup\", \"field-ops\", \"users\", \"map-setup\", \"login\", \"loginSaml\", \"mobile\", \"areas\", \"contacts\", \"activity-log\"];\r\n\t},\r\n\tgetFieldOpsOnlyRoutes: (state: RootState) => {\r\n\t\t// Routes which require the FieldOps Licence\r\n\t\treturn [\"assetSetup\", \"field-ops\", \"mobile\"];\r\n\t},\r\n\tgetFieldOpsAndResponseLicencedRoutes: (state: RootState) =>\r\n\t{\r\n\t\t// Routes which require both the FieldOps and Response Licence\r\n\t\treturn [\"mobile-raise-setup\"]\r\n\t},\r\n\tgetTimeZones: (state: RootState) => state.timeZones,\r\n\tgetCanAddIndividualActionsOverride: (state: RootState) => state.systemPrefs.canUsersAddIndividualActions,\r\n\tgetDynamicLinkConfig: (state: RootState) => state.User.dynamicLinkConfig,\r\n\tisSessionExpiryAudioSoundEnabled: (state: RootState) => state.featuresList?.Alarms?.SessionExpiryAudioSound,\r\n\tgetIsCasesLicenced: (state: RootState) =>\r\n\t{\r\n\t\treturn !state.User || (state.User && (!state.User.suiteUserId || (state.User.suiteUserId && state.User.suiteCasesLicenced)));\r\n\t},\r\n\tgetIsOnPrem: (state: RootState) => {\r\n\t\treturn state.appOptions == null ? null : state.appOptions.deployed === \"OnPrem\";\r\n\t},\r\n\tgetRequiresConfiguration: (state: RootState) => state.requiresConfiguration,\r\n\tgetDefaultMaskValue: (state: RootState) => state.tenantSystemPrefs.defaultMaskValue,\r\n\tgetDefaultParkValue: (state: RootState) => state.tenantSystemPrefs.defaultParkValue,\r\n\tgetTimeZone: state => (timeZoneId: number) => state.timeZones?.find(item => item.timeZoneID === timeZoneId),\r\n\tgetDefaultMaskAction: (state: RootState) => state.tenantSystemPrefs.defaultMaskAction,\r\n};\r\n","import router from \"@/router\";\r\nimport api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { get } from \"lodash\";\r\nimport {\r\n\tAuthenticationStatus,\r\n\tLoginRequest,\r\n\tLoginResult,\r\n\tRootState,\r\n\tLogoutPayload,\r\n\tElevationLabelType,\r\n\tAppOptions\r\n} from \"./types\";\r\nimport HealthCheckRequest from \"@/types/system-health/HealthCheckRequest\";\r\nimport organizationApi from \"@/services/api.organizationSettings\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync initApp({ dispatch, commit }, payload: any) {\r\n\t\tcommit(\"setTimeZoneAbbr\", new Date().toLocaleTimeString(\"en-us\", { timeZoneName: \"short\" }).split(\" \")[2]);\r\n\t\tcommit(\"setAppInitialisedFlag\", true);\r\n\t},\r\n\r\n\tasync login({ commit, dispatch }, data: LoginRequest) {\r\n\t\tlet response = await api.login(data);\r\n\t\tif (response.authenticationStatus === AuthenticationStatus.Success) {\r\n\t\t\tcommit(\"login\", response);\r\n\t\t\tif (response.subscription) {\r\n\t\t\t\tcommit(\"subscription/setSubscriptionDetails\", response.subscription);\r\n\t\t\t}\r\n\t\t\tdispatch(\"userContext/startPolling\");\r\n\t\t}\r\n\t\treturn response;\r\n\t},\r\n\r\n\tasync processLoginResponse({ commit }, response: LoginResult): Promise {\r\n\t\tif (response.authenticationStatus === 0) {\r\n\t\t\tcommit(\"login\", response);\r\n\t\t\tcommit(\"setFeaturesList\", response.features);\r\n\t\t}\r\n\t},\r\n\r\n\tasync getLoginSession({ commit, dispatch }, data: LoginRequest) {\r\n\t\tlet response = await api.getLoginSession();\r\n\t\tif (response.authenticationStatus === AuthenticationStatus.Success) {\r\n\t\t\tcommit(\"login\", response);\r\n\t\t\tif (response.subscription) {\r\n\t\t\t\tcommit(\"subscription/setSubscriptionDetails\", response.subscription);\r\n\t\t\t}\r\n\t\t\tdispatch(\"userContext/startPolling\");\r\n\t\t}\r\n\t\treturn response;\r\n\t},\r\n\r\n\tsingleEventLogin({ commit }, data: any) {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tconst loginData = {\r\n\t\t\t\tsessionID: data.sessionID,\r\n\t\t\t\taccessCode: data.accessCode\r\n\t\t\t};\r\n\r\n\t\t\tapi.singleEventLogin(loginData)\r\n\t\t\t\t.then(response => {\r\n\t\t\t\t\tconst loginResult = response.data;\r\n\r\n\t\t\t\t\tif (response.data.status === 0) {\r\n\t\t\t\t\t\tloginResult.isFullUser = false;\r\n\t\t\t\t\t\tcommit(\"login\", loginResult);\r\n\t\t\t\t\t\tresolve(loginResult);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treject(loginResult);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(error => {\r\n\t\t\t\t\treject({ error });\r\n\t\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\tlogout({ commit, dispatch }: any, payLoad: LogoutPayload) {\r\n\t\tcommit(\"setDataError\", false);\r\n\t\tcommit(\"logout\");\r\n\r\n\t\tconst currentRoute = router.currentRoute;\r\n\t\tif (currentRoute && currentRoute.meta && currentRoute.meta.closeOnLogout) {\r\n\t\t\twindow.close();\r\n\t\t} else if (currentRoute.meta.redirectOnLogin) {\r\n\t\t\tif(payLoad && payLoad.errorMessage) {\r\n\t\t\t\trouter.push({ path: `/login?redirect=${currentRoute.fullPath}&error=${payLoad.errorMessage}` });\r\n\t\t\t} else {\r\n\t\t\t\trouter.push({\r\n\t\t\t\t\tpath: `/login?redirect=${currentRoute.fullPath}`\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} else if (currentRoute.fullPath.startsWith(\"/login?redirect=\")) {\r\n\t\t\trouter.push({\r\n\t\t\t\tpath: `${currentRoute.fullPath}`\r\n\t\t\t});\r\n\t\t} else if (payLoad && payLoad.hasSessionExpired) {\r\n\t\t\tlet path = \"/login?hasSessionExpired=true\";\r\n\t\t\tif (payLoad.playAudioAlert) {\r\n\t\t\t\tpath = `${path}&playAudioAlert=true`;\r\n\t\t\t}\r\n\t\t\trouter.push({ path: path });\r\n\t\t} else if(payLoad && payLoad.errorMessage) {\r\n\t\t\trouter.push({ path: `/login?error=${payLoad.errorMessage}` });\r\n\t\t} else {\r\n\t\t\trouter.push({ path: \"/login\" });\r\n\t\t}\r\n\r\n\t\tapi.stopHeartbeat();\r\n\r\n\t\tdispatch(\"userContext/stopPolling\");\r\n\t\tdispatch(\"areas/stopPollingAreaMaskingCount\");\r\n\t\tdispatch(\"siteMonitor/stopPollingApplianceServerAndDeviceServerDetails\");\r\n\t\tdispatch(\"resetState\");\r\n\t},\r\n\r\n\tresetState({ commit }) {\r\n\t\tcommit(\"resetState\");\r\n\t\tcommit(\"areaNotes/resetState\");\r\n\t\tcommit(\"siteMonitor/resetState\");\r\n\t\tcommit(\"tasks/resetState\");\r\n\t\tcommit(\"userManagement/resetState\");\r\n\t\tcommit(\"siteMonitorCameras/resetState\");\r\n\t\tcommit(\"sessions/resetState\");\r\n\t\tcommit(\"mapLayers/resetState\");\r\n\t\tcommit(\"eventSearch/resetState\");\r\n\t\tcommit(\"devices/resetState\");\r\n\t\tcommit(\"mobile/resetState\");\r\n\t\tcommit(\"reports/resetState\");\r\n\t\tcommit(\"areas/resetState\");\r\n\t\tcommit(\"tours/resetState\");\r\n\t\tcommit(\"GenericTable/resetState\");\r\n\t\tcommit(\"eventqueue/resetState\");\r\n\t\tcommit(\"views/resetState\");\r\n\t\tcommit(\"mobileRaiseTemplates/resetState\");\r\n\t\tcommit(\"subscription/resetState\");\r\n\t\tcommit(\"caseManagement/resetState\");\r\n\t\tcommit(\"userContext/resetState\");\r\n\t\tcommit(\"manualRaise/resetState\");\r\n\t\tcommit(\"customFields/resetState\");\r\n\t\tcommit(\"areaEventHistory/resetState\");\r\n\t},\r\n\r\n\tasync serverLogout() {\r\n\t\treturn await api.serverLogout();\r\n\t},\r\n\r\n\tasync fetchUserGroups({ commit }: any) {\r\n\t\tconst userGroups = await api.loadUserGroups();\r\n\t\tcommit(\"setUserGroups\", userGroups);\r\n\t},\r\n\r\n\tasync searchGroup({ commit }, SearchTerm: string) {\r\n\t\tconst userGroups = await api.searchGroup(SearchTerm);\r\n\t\tcommit(\"setUserGroups\", userGroups);\r\n\t},\r\n\r\n\tnotInEvent() {\r\n\t\trouter.push({ path: \"/event-queue\" });\r\n\t},\r\n\r\n\tasync fetchRoutingGroups({ commit }: any) {\r\n\t\tconst { data } = await api.loadRoutingGroups(); // MOVE TO EVENT QUEUE STORE\r\n\t\tcommit(\"setRoutingGroups\", data);\r\n\t},\r\n\r\n\tsetMapType({ commit }, mapType) {\r\n\t\tcommit(\"setMapType\", mapType);\r\n\t},\r\n\r\n\tloginToRegion({ commit, state }: any, data: any) {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tconst loginData = data;\r\n\r\n\t\t\tapi.loginToRegion(loginData)\r\n\t\t\t\t.then(function(response: any) {\r\n\t\t\t\t\t// save the result\r\n\t\t\t\t\tconst loginResult = response.data;\r\n\r\n\t\t\t\t\t// check if login was successful\r\n\t\t\t\t\tif (loginResult.status === 0) {\r\n\t\t\t\t\t\t// we need to hold on to the current login details\r\n\t\t\t\t\t\tcommit(\"storeLocalLogin\");\r\n\r\n\t\t\t\t\t\t// set isFullUser for the remote login\r\n\t\t\t\t\t\tloginResult.isFullUser = true;\r\n\r\n\t\t\t\t\t\t// login with the remote region data\r\n\t\t\t\t\t\tcommit(\"login\", response.data);\r\n\t\t\t\t\t\tresolve(loginResult);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treject(loginResult);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconsole.log(\"loginToRegion complete\");\r\n\t\t\t\t\treturn response.data;\r\n\t\t\t\t})\r\n\t\t\t\t.catch(function(error: any) {\r\n\t\t\t\t\treject({\r\n\t\t\t\t\t\terror\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t});\r\n\t},\r\n\r\n\topenMediaMatrix({ getters }) {\r\n\t\tconst isEnabled = get(getters.getFeaturesList, [\"Alarms\", \"MediaMatrix\"]);\r\n\r\n\t\tif (isEnabled) {\r\n\t\t\tconst routeData = router.resolve({\r\n\t\t\t\tpath: \"/site-monitor-cameras\"\r\n\t\t\t});\r\n\t\t\twindow.open(\r\n\t\t\t\trouteData.href,\r\n\t\t\t\t\"site-monitor-cameras\",\r\n\t\t\t\t\"location=yes,scrollbars=yes,status=yes\"\r\n\t\t\t);\r\n\t\t}\r\n\t},\r\n\r\n\topenEventReview({ getters }, eventId: number) {\r\n\t\tconst routeData = router.resolve({\r\n\t\t\tpath: `/eventsearch/${eventId}?`,\r\n\t\t});\r\n\t\twindow.open(\r\n\t\t\trouteData.href,\r\n\t\t\t`eventsearch/${eventId}?`,\r\n\t\t\t\"location=yes,scrollbars=yes,status=yes\"\r\n\t\t);\r\n\t},\r\n\r\n\tstartApiHeartbeat() {\r\n\t\tapi.startHeartbeat();\r\n\t},\r\n\tstopApiHeartbeat() {\r\n\t\tapi.stopHeartbeat();\r\n\t},\r\n\r\n\tasync getInterDataServiceLoginToken(context, regionId: number) {\r\n\t\treturn await api.getInterDataServiceLoginToken(regionId);\r\n\t},\r\n\r\n\tupdateActiveRegion({ commit, state }, { regionId, regionUrl }) {\r\n\t\t// If we're setting the active region back to 0, and we've got\r\n\t\t// the original (local) user login cached, then restore it.\r\n\t\tif (regionId === 0 && state.localUserData != null) {\r\n\t\t\tcommit(\"resetUserData\");\r\n\t\t}\r\n\r\n\t\t// if the current url doesn't end with /api/ and isnt our local host... add api to the end.\r\n\t\tif (\r\n\t\t\t!regionUrl.toLowerCase().endsWith(\"/api/\") &&\r\n\t\t\t!regionUrl.toLowerCase().endsWith(\"/api\") &&\r\n\t\t\t!regionUrl.startsWith(\"http://local.sureviewops.com\")\r\n\t\t) {\r\n\t\t\tregionUrl = regionUrl + \"/api/\";\r\n\t\t}\r\n\r\n\t\tcommit(\"setActiveRegion\", { regionId, regionUrl });\r\n\t},\r\n\r\n\tasync loadFeaturesList({ commit }) {\r\n\t\tconst { data } = await api.fetchFeaturesList();\r\n\t\tcommit(\"setFeaturesList\", data);\r\n\t},\r\n\r\n\tasync getTimeZones({ commit }: any) {\r\n\t\tconst timeZones = await api.getTimeZones();\r\n\t\tcommit(\"setTimeZones\", timeZones);\r\n\t},\r\n\r\n\tasync getTenantSystemPrefs({ commit }, live ) {\r\n\t\tconst prefs = await organizationApi.retrieveTenantSystemPrefs(live);\r\n\t\tcommit(\"setTenantSystemPrefs\", prefs);\r\n\t},\r\n\r\n\tasync raiseSystemLog(context, data: HealthCheckRequest): Promise {\r\n\t\tif(!data.ObjectId || !data.ObjectTypeId)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tawait api.raiseSystemLog(data);\r\n\t\t}\r\n\t\tcatch(error)\r\n\t\t{\r\n\t\t\tconsole.error(\"Failed to Raise System Log\", error);\r\n\t\t}\r\n\t},\r\n\r\n\tasync getElevationLabels({ commit }) {\r\n\t\tlet elevationLabels : ElevationLabelType[] = []\r\n\r\n\t\ttry {\r\n\t\t\televationLabels = await api.getElevationLabels();\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error(`Get Elevation Labels - Error: ${err}`);\r\n\t\t} finally {\r\n\t\t\tcommit(\"setElevationLabels\", elevationLabels);\r\n\t\t}\r\n\t},\r\n\r\n\tasync fetchAppOptions({ commit, state }) : Promise\r\n\t{\r\n\t\tif(!state.appOptions)\r\n\t\t{\r\n\t\t\tlet appOptions: AppOptions;\r\n\r\n\t\t\ttry {\r\n\t\t\t\tappOptions = await api.getAppOptions();\r\n\t\t\t}\r\n\t\t\tcatch (err)\r\n\t\t\t{\r\n\t\t\t\tconsole.error(err);\r\n\t\t\t}\r\n\t\t\tfinally {\r\n\t\t\t\tcommit(\"setAppOptions\", appOptions);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tasync fetchRequiresConfig({ commit, state }) : Promise\r\n\t{\r\n\t\tif(state.requiresConfiguration === false)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst requiresConfig = await api.requiresConfiguration();\r\n\t\t// only set it\r\n\t\tif(requiresConfig === false)\r\n\t\t{\r\n\t\t\tcommit(\"setRequiresConfiguration\", requiresConfig);\r\n\t\t}\r\n\t},\r\n};\r\n","import { MutationTree } from \"vuex\";\r\nimport {\r\n\tRootState,\r\n\tKeyboardShortcut,\r\n\tFeaturesList,\r\n\tTimeZone,\r\n\tLoginResult,\r\n\tUserPermissions,\r\n\tElevationLabelType,\r\n\tAppOptions,\r\n\tTenantSystemPrefs\r\n} from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { get } from \"lodash\";\r\nimport api from \"@/services/api.service\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tlogin(state, loginResult: LoginResult) {\r\n\t\tstate.dataError = false;\r\n\t\tstate.User = {\r\n\t\t\tloggedIn: true,\r\n\t\t\tfullName: loginResult.fullName,\r\n\t\t\tuserId: loginResult.userId,\r\n\t\t\tusername: loginResult.username,\r\n\t\t\tuserGroupId: loginResult.groupId,\r\n\t\t\terror: \"\",\r\n\t\t\tisFullUser: true,\r\n\t\t\tuserPermissions: loginResult.permissions,\r\n\t\t\tuserPrefs: loginResult.userPrefs,\r\n\t\t\tisFirstLogin: loginResult.isFirstLogin,\r\n\t\t\ttenantGroupId: loginResult.tenantGroupId,\r\n\t\t\tsuiteTenantId: loginResult.suiteTenantId,\r\n\t\t\tsuiteUserId: loginResult.suiteUserId,\r\n\t\t\tsuiteResponseLicenced: loginResult.suiteResponseLicenced,\r\n\t\t\tsuiteCasesLicenced: loginResult.suiteCasesLicenced,\r\n\t\t\tmobileAppEnabled: loginResult.mobileAppEnabled\r\n\t\t};\r\n\t\tstate.systemPrefs = loginResult.systemPrefs;\r\n\t\tstate.featuresList = loginResult.features;\r\n\t\tstate.tenantSystemPrefs = loginResult.tenantSystemPrefs;\r\n\t},\r\n\tlogout(state) {\r\n\t\tstate.User = getDefaultState().User;\r\n\t\tstate.UserGroups = [];\r\n\t},\r\n\t// Stores the local login before we login to a different region\r\n\tstoreLocalLogin(state) {\r\n\t\tstate.localUserData = state.User;\r\n\t},\r\n\tsetAppInitialisedFlag(state, status: boolean) {\r\n\t\tstate.appInitialised = status;\r\n\t},\r\n\tsetDataError(state, hasError) {\r\n\t\tstate.dataError = hasError;\r\n\t},\r\n\tsetUserGroups(state, groups) {\r\n\t\tstate.UserGroups = groups;\r\n\t},\r\n\tsetShortcuts(state, shortCuts: KeyboardShortcut[]) {\r\n\t\t// Filter out any shortcuts that may be disabled via feature flagging\r\n\t\tconst validShortcuts = shortCuts.filter(sc => {\r\n\t\t\t// if the shortcut has no feature flag, always include it\r\n\t\t\tif (!sc.featureFlag) {\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\treturn get(state.featuresList, sc.featureFlag, false);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tstate.keyboardShortcuts = validShortcuts;\r\n\t},\r\n\tsetLegendKeys(state, legends) {\r\n\t\tstate.legendKeys = legends;\r\n\t},\r\n\tsetRoutingGroupsLegend(state, show: boolean) {\r\n\t\tstate.showRoutingGroupsLegend = show;\r\n\t},\r\n\tsetTimeZoneAbbr(state, timeZoneAbbr: string) {\r\n\t\tstate.timeZoneAbbr = timeZoneAbbr;\r\n\t},\r\n\tsetMapType(state, mapType: string) {\r\n\t\tstate.systemPrefs.mapType = mapType;\r\n\t},\r\n\tsetMapStyle(state, mapStyle: string){\r\n\t\tstate.mobilePrefs.mapStyle = mapStyle;\r\n\t},\r\n\tsetRoutingGroups(state, routeGroups) {\r\n\t\tstate.routingGroups = routeGroups;\r\n\t},\r\n\tsetActiveRegion(state, { regionId, regionUrl }) {\r\n\t\tstate.activeRegion.regionId = regionId;\r\n\t\tstate.activeRegion.regionUrl = regionUrl;\r\n\t\tapi.setBaseApiUrl(regionUrl);\r\n\t},\r\n\tsetUserAlarmScreenTimeoutSeconds(state, alarmScreenTimeoutSeconds) {\r\n\t\tstate.systemPrefs.alarmScreenTimeoutSeconds = alarmScreenTimeoutSeconds;\r\n\t},\r\n\tsetAppVersion(state, version: string) {\r\n\t\tstate.version = version;\r\n\t},\r\n\tsetFeaturesList(state, config: FeaturesList) {\r\n\t\tstate.featuresList = config;\r\n\t},\r\n\tsetTenantSystemPrefs(state, prefs: TenantSystemPrefs){\r\n\t\tstate.tenantSystemPrefs = prefs\r\n\t},\r\n\tsetTimeZones(state, config: TimeZone[]) {\r\n\t\tstate.timeZones = config;\r\n\t},\r\n\tsetElevationLabels(state, labels: ElevationLabelType[]) {\r\n\t\tstate.elevationLabels = labels;\r\n\t},\r\n\tsetisFirstLogin(state, newValue) {\r\n\t\tstate.User.isFirstLogin = newValue;\r\n\t},\r\n\tsetAppOptions(state, options: AppOptions)\r\n\t{\r\n\t\tstate.appOptions = options;\r\n\t},\r\n\tsetRequiresConfiguration(state, requiresConfiguration: boolean)\r\n\t{\r\n\t\tstate.requiresConfiguration = requiresConfiguration;\r\n\t},\r\n\ttoggleAutoFeedAlarms(state): void {\r\n\t\tstate.autoFeedAlarms = !state.autoFeedAlarms;\r\n\t},\r\n\thideSysAdminAccessTimerModal(state) {\r\n\t\tstate.isSystemAdminAccessTimeModalHidden = true;\r\n\t},\r\n\tresetState(state) {\r\n\r\n\t\tlet { appOptions, requiresConfiguration } = state;\r\n\r\n\t\tif (appOptions !== null && typeof appOptions !== \"undefined\") {\r\n\t\t\tlet appOptionsCopy;\r\n\t\t\tlet requiresConfigCopy;\r\n\t\t\tObject.assign(appOptionsCopy, appOptions);\r\n\t\t\tObject.assign(requiresConfigCopy, requiresConfiguration);\r\n\t\t\tstate.appOptions = appOptionsCopy;\r\n\t\t\tstate.requiresConfiguration = requiresConfigCopy;\r\n\t\t}\r\n\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n\tsetReloadEventQueue(state, reloadEventQueue: boolean) {\r\n\t\tstate.reloadEventQueue = reloadEventQueue;\r\n\t}\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { EmailData } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport {\r\n getEmailFrom,\r\n getAttachmentsLinks,\r\n isPdf,\r\n isVideo,\r\n isImage,\r\n isMultipartAlternative,\r\n filteredAttachments,\r\n parseMultiPartByType,\r\n extractFieldId,\r\n setImagesToHTML,\r\n getObjectUrl,\r\n removeExtraSymbolsFromHtmlType,\r\n extractImgFromHtml,\r\n setLinksToHtml\r\n} from \"@/utils/formatterEmailAttachments\";\r\nimport _ from \"lodash\"\r\n\r\nexport const getters: GetterTree = {\r\n\tmainHTMLWithImages: (state, getters) => (name:string) =>\r\n\t\tsetImagesToHTML(\r\n\t\t\tgetters.getMainHTML(name),\r\n\t\t\tgetters.formattedImagesById(name)\r\n\t\t),\r\n\r\n\tgetMainHTML: (state, getters) => (name:string) =>\r\n\t\tsetLinksToHtml(\r\n\t\t\tremoveExtraSymbolsFromHtmlType(\r\n\t\t\t\t_.get(getters.getEmail(name), \"html\") || \"\"\r\n\t\t\t)\r\n\t\t) || \"\",\r\n\r\n\tgetAllHTML: (state, getters) => name =>\r\n\t\t[\r\n\t\t\t...getters.getMultipartAlternativeHTMLs(name),\r\n\t\t\tgetters.getMainHTML(name),\r\n\t\t].filter(html => html),\r\n\r\n getExtraImages: (state, getters) => (name:string) =>\r\n (\r\n getters.areImagesExists(name) &&\r\n getters.getInlineImagesId(name) &&\r\n getters.getImages(name).filter(({ id }) => !getters.getInlineImagesId(name)[extractFieldId(id)])\r\n ),\r\n\r\n getInlineImagesId: (state, getters) => (name:string) =>\r\n getters.getIdsInlinesImages(name) && _.groupBy(getters.getIdsInlinesImages(name)),\r\n\r\n getIdsInlinesImages:(state, getters) => (name:string) =>\r\n\t\t\t\t\tgetters.getAllHTML(name)\r\n .map(html => extractImgFromHtml(removeExtraSymbolsFromHtmlType(html)).map(({ id }) => id))\r\n .flat(),\r\n\r\n formattedImagesById: (state, getters) => (name:string) =>\r\n getters.areImagesExists(name) &&\r\n getters.getImages(name).reduce((prev, cur) => ({\r\n ...prev,\r\n [extractFieldId(cur.id)]: cur,\r\n }), {}),\r\n\r\n getMultipartAlternativeHTMLWithImages: (state, getters) => (name:string) =>\r\n getters.getMultipartAlternativeHTMLs(name)\r\n .map(html => setLinksToHtml(html))\r\n .map(html =>\r\n setImagesToHTML(html, getters.formattedImagesById(name))\r\n ) || [],\r\n\r\n getMultipartAlternativeHTMLs: (state, getters) => (name:string) => getters.getMultipartAlternativeByType(name)\r\n .filter(({ type }) => type === \"text/html;\")\r\n .map(({ body }) => body),\r\n\r\n getMultipartAlternativeByType: (state, getters) => (name:string) =>\r\n getters.isAttachmentsArray &&\r\n getters.getMultipartAlternative(name)\r\n .map(attachment => parseMultiPartByType(attachment))\r\n .flat(),\r\n\r\n getMultipartAlternative: (state, getters) =>\r\n\t\t(name:string) =>\r\n\t\t\tgetters.isAttachmentsArray && filteredAttachments(getters.getAttachments(name), isMultipartAlternative),\r\n getImages: (state, getters) =>\r\n\t\t(name:string) =>\r\n\t\t\tgetters.isAttachmentsArray && getAttachmentsLinks(getters.getAttachments(name), isImage),\r\n getPdfs:(state, getters) =>\r\n\t\t(name:string) =>\r\n\t\t\tgetters.isAttachmentsArray && getAttachmentsLinks(getters.getAttachments(name), isPdf),\r\n getVideos: (state, getters) =>\r\n\t\t(name:string) =>\r\n\t\t\tgetters.isAttachmentsArray && getAttachmentsLinks(getters.getAttachments(name), isVideo),\r\n getAttachmentsHTML:(state, getters) =>\r\n\t\t(name:string) =>\r\n\t\t\tgetters.getMultipartAlternativeHTMLWithImages(name).map(html => getObjectUrl([html], \"text/html\")),\r\n isAttachmentObject: (state, getters) => (name:string) => _.isObject(getters.getAttachments(name)),\r\n isAttachmentsArray: (state, getters) => (name:string) => _.isArray(getters.getAttachments(name)),\r\n areImagesExists:(state, getters) => (name:string) => !!_.get(getters.getImages(name), \"length\"),\r\n getAttachments: (state, getters) => (name:string) => _.get(getters.getEmail(name), \"attachments\"),\r\n getEmailFrom: (state, getters) => (name:string) => getEmailFrom(getters.getEmail(name)),\r\n getEmail: state => (name:string) => state.emailsStorage[name],\r\n};\r\n","import { MutationTree } from \"vuex\";\r\nimport { EmailData } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tputEmail(state, { name, formattedData }) {\r\n\t\tstate.emailsStorage = {\r\n\t\t\t...state.emailsStorage,\r\n\t\t\t[name]: formattedData,\r\n\t\t}\r\n\t},\r\n\tsetEventRecordIdToShowEmailFor(state, eventRecordIdToShowEventEmailFor:number) {\r\n\t\tstate.eventRecordIdToShowEmailFor = eventRecordIdToShowEventEmailFor;\r\n\t}\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport { EmailData } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { AuditService } from \"@/services/auditService\";\r\nimport { getFormattedEmlData } from \"@/utils/formatterEmailAttachments\";\r\n\r\nexport const actions: ActionTree = {\r\n async loadEmailData({ commit, getters, rootGetters }, { auth, recordId }) {\r\n\r\n\t\tlet eventDetails = rootGetters[\"siteMonitor/getEventDetails\"];\r\n\t\tlet auditService: AuditService;\r\n\r\n if(getters.getEmail(recordId)) return;\r\n\r\n\t\tif(eventDetails.auditEndpoint) {\r\n\t\t\tauditService = new AuditService(null, eventDetails.auditEndpoint);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tauditService = rootGetters[\"siteMonitor/getAuditService\"];\r\n\t\t}\r\n\r\n const { data } = await auditService.downloadRawData(auth, recordId);\r\n const formattedData = await getFormattedEmlData(data);\r\n\r\n commit(\"putEmail\", { formattedData, name: recordId });\r\n }\r\n}\r\n","import { EmailData } from \"./types\";\r\n\r\nexport function getDefaultState(): EmailData {\r\n return {\r\n\t\temailsStorage: {},\r\n\t\teventRecordIdToShowEmailFor: -1,\r\n }\r\n}\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { mutations } from \"./mutations\";\r\nimport { actions } from \"./actions\";\r\nimport { EmailData } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: EmailData = getDefaultState();\r\nconst namespaced: boolean = true;\r\n\r\nexport const emails: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tmutations,\r\n\tactions\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { CSVParser } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nimport _ from \"lodash\"\r\n\r\nexport const getters: GetterTree = {\r\n\theaders: (state, getters) => name =>\r\n\t\tgetters.isContextExist(name) && getters.formattedHeaders(name),\r\n\tbody: (state, getters) => name =>\r\n\t\t(getters.isContextExist(name) && getters.formattedBody(name)) || [],\r\n\r\n\tisDataEmpty: (state, getters) => name => !getters.isContextExist(name),\r\n\r\n\t// Validations\r\n\tisTableValid: (state, getters) => name =>\r\n\t\tObject.values(getters.errorsCSV(name)).every(v => v === \"\"),\r\n\r\n\terrorsCSV: (state, getters) => name => {\r\n\t\tconst errors = [];\r\n\t\tif (!getters.isHeadersExits(name)) return { info: \"Data is empty\", error: \"\" };\r\n\t\tif (!getters.isValidHeadersKey(name))\r\n\t\t\terrors.push(`Not allowed header keys ${getters.notValidHeaderKey(name)}. `);\r\n\t\tif (getters.requiredHeaders(name).length)\r\n\t\t\terrors.push(\r\n\t\t\t\t`Headers keys aren't valid, required ${getters.requiredHeaders(name)} csv header(s)`\r\n\t\t\t);\r\n\t\treturn { info: \"\", error: errors.join(\"\") };\r\n\t},\r\n\r\n\trequiredHeaders: (state, getters) => name =>\r\n\t\t_.difference(Object.keys(state.mandatoryFields[name] || {}), getters.headers(name)),\r\n\r\n\tisValidHeadersKey: (state, getters) => name => !getters.notValidHeaderKey(name),\r\n\r\n\tnotValidHeaderKey: (state, getters) => name =>\r\n\t\tgetters.isHeadersExits(name) &&\r\n\t\tObject.keys(state.validHeadersName[name] || {}).length &&\r\n\t\tgetters.headers(name)\r\n\t\t\t.filter((header: string) => !state.validHeadersName[name][header])\r\n\t\t\t.join(\", \"),\r\n\r\n\tformattedBody: (state, getters) => name =>\r\n\t\tgetters.isBodyExits(name) &&\r\n\t\t_.get(state.csvParsed[name], \"body\")\r\n\t\t\t.map((row: string[]) =>\r\n\t\t\t\trow.reduce(\r\n\t\t\t\t\t(acc, cur, i) => ({\r\n\t\t\t\t\t\t...acc,\r\n\t\t\t\t\t\t[getters.headers(name)[i]]: cur\r\n\t\t\t\t\t}),\r\n\t\t\t\t\t{}\r\n\t\t\t\t)\r\n\t\t\t),\r\n\r\n\t// UTILS getters\r\n\tformattedHeaders: (state, getters) => name =>\r\n\t\tgetters.isHeadersExits(name) &&\r\n\t\t_.get(state.csvParsed[name], \"headers\").filter((head: string) => head),\r\n\r\n\tisContextExist: (state, getters) => name =>\r\n\t\tgetters.isHeadersExits(name) && getters.isBodyExits(name),\r\n\r\n\tisHeadersExits: state => name => !!_.get(state.csvParsed[name], \"headers\"),\r\n\tisBodyExits: state => name => !!_.get(state.csvParsed[name], \"body\"),\r\n\r\n\tgetCsvLinkDownloadByString: () => (text: string) => {\r\n\t\tconst blob = new Blob([text], { type: \"text/csv\" });\r\n\r\n\t\treturn window.URL.createObjectURL(blob);\r\n\t}\r\n};\r\n","import { MutationTree } from \"vuex\";\r\nimport { CSVParser } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tputCSVParsed(state, { headers, body, name }) {\r\n\t\tstate.csvParsed = {\r\n\t\t\t...state.csvParsed,\r\n\t\t\t[name]: {\r\n\t\t\t\theaders,\r\n\t\t\t\tbody\r\n\t\t\t}\r\n\t\t};\r\n\t},\r\n\r\n\tputMandatoryFields(state, { mandatoryFields, name }) {\r\n\t\tstate.mandatoryFields = {\r\n\t\t\t...state.mandatoryFields,\r\n\t\t\t[name]: mandatoryFields\r\n\t\t}\r\n\t},\r\n\r\n\tputValidHeadersName(state, { validHeadersName, name }) {\r\n\t\tstate.validHeadersName = {\r\n\t\t\t...state.validHeadersName,\r\n\t\t\t[name]: validHeadersName\r\n\t\t}\r\n\t}\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport { CSVParser } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport Papa from \"papaparse\"\r\n\r\nconst invalidKeys = {\r\n\tundefined: true,\r\n\tid: true\r\n}\r\n\r\nexport const actions: ActionTree = {\r\n\tsetValidHeadersName({ commit }, validHeadersName) {\r\n\t\tcommit(\"putValidHeadersName\", validHeadersName);\r\n\t},\r\n\r\n\tsetMandatoryFields({ commit }, mandatoryFields) {\r\n\t\tcommit(\"putMandatoryFields\", mandatoryFields);\r\n\t},\r\n\r\n\tloadSCVData({ commit }, { name, csvText }) {\r\n\t\tconst { data: csvContext } = Papa.parse(csvText, { skipEmptyLines: true });\r\n\t\tconst body = csvContext.slice(1);\r\n\t\tconst headers = csvContext[0];\r\n\r\n\t\tcommit(\"putCSVParsed\", {\r\n\t\t\tname,\r\n\t\t\theaders: headers && headers.length ? headers : null,\r\n\t\t\tbody: body.length ? body : null\r\n\t\t});\r\n\t},\r\n\r\n\tconvertToSCV(store, { body, headers }) {\r\n\t\tconst rowSeparator = \"\\r\\n\";\r\n\t\tconst header = headers.join(\",\");\r\n\t\tconst content = body\r\n\t\t\t.map((v: T) =>\r\n\t\t\t\tObject.entries(v)\r\n\t\t\t\t\t.reduce(\r\n\t\t\t\t\t\t(acc, [key, value]) => (invalidKeys[key] ? acc : [...acc, value]),\r\n\t\t\t\t\t\t[]\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.join(\",\")\r\n\t\t\t)\r\n\t\t\t.join(rowSeparator);\r\n\t\treturn `${header}${rowSeparator}${content}`;\r\n\t},\r\n\r\n\tasync linkDownloadCSV({ dispatch, getters }, option) {\r\n\t\tconst text = await dispatch(\"convertToSCV\", option);\r\n\t\treturn getters.getCsvLinkDownloadByString(text);\r\n\t},\r\n}\r\n","import { CSVParser } from \"./types\";\r\n\r\nexport function getDefaultState(): CSVParser {\r\n return {\r\n\t\tcsvParsed: {},\r\n\t\tmandatoryFields: {},\r\n\t\tvalidHeadersName: {},\r\n }\r\n}\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { mutations } from \"./mutations\";\r\nimport { actions } from \"./actions\";\r\nimport { CSVParser } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: CSVParser = getDefaultState();\r\nconst namespaced: boolean = true;\r\n\r\nexport const csvParser: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tmutations,\r\n\tactions\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { EventCountsByType, EventsQueueState, SiteTreeNode } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetActiveEvents: state => state.FilteredEvents,\r\n\tgetFilteredEvents: state => state.FilteredEvents,\r\n\tgetFilteredEventIds: state => state.FilteredEventIds,\r\n\tgetFilteredEventById: state => (id: number) => state.FilteredEvents.filter(event => event.eventID === id)[0],\r\n\tgetActiveFilterID: state => state.AlarmActiveFilter,\r\n\tgetCountByType: state => (countType: keyof EventCountsByType) => state.eventCountsByType[countType],\r\n\tgetAlarmQueueFilterIDs: state => state.AlarmQueueFilterIDs,\r\n\tgetLastUpdatedEvents: state => state.EventsLastUpdated,\r\n\tgetAlarmQueueFilters: state => state.AlarmQueueFilters,\r\n\tgetOpenAlarmQueueFilterIds: state => {\r\n\t\tif (!!state.AlarmQueueFilters && state.AlarmQueueFilters.length > 0) {\r\n\t\t\treturn state.AlarmQueueFilters.filter(aqf => !aqf.hide).map(f => f.alarmQueueFilterID)\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n\tgetHoverEvent: state => state.HoverEvent,\r\n\tDisplayedEvent: state => state.DisplayedEvent,\r\n\tgetManualPatrolShown: state => state.ManualPatrolShown,\r\n\tisNewFilterModalVisible: state => state.NewFilterModalShown,\r\n\tgetActivityLogShown: state => state.ActivityLogShown,\r\n\tgetManualActionShown: state => state.ManualActionShown,\r\n\tgetSiteTree: state => state.SiteTree,\r\n\tgetSiteTreeForSelectedTenant: state => (selectedTenant: number) => {\r\n\t\treturn state.SiteTree.filter(node => node.group.groupID === selectedTenant);\r\n\t},\r\n\tgetSiteTreeCount: state => {\r\n\t\tlet total = 0;\r\n\t\tconst recursiveCount = (tree: SiteTreeNode) => {\r\n\t\t\ttotal++;\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\ttree.subGroups.forEach((node: SiteTreeNode) => {\r\n\t\t\t\t\trecursiveCount(node);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t\tstate.SiteTree.forEach((node: SiteTreeNode) => {\r\n\t\t\trecursiveCount(node);\r\n\t\t});\r\n\t\treturn total;\r\n\t},\r\n\tgetSelectedGroups: state => state.selectedGroups,\r\n\tgetTreeSelectedGroup: state => state.treeSelectedGroup,\r\n\tgetSearchSelectedGroup: state => state.searchSelectedGroup,\r\n\tgetQueueMapBounds: state => state.queueMapBounds,\r\n\tgetCurrentSort: state => state.CurrentSort,\r\n\tgetProcessingError: state => state.processingError,\r\n\troutingGroups: state => state.RoutingGroups,\r\n\talarmTags: state => state.AlarmTags,\r\n\tgetLastEventHandled: state => state.lastEventHandled,\r\n\tgetUserZone: state => state.userZone,\r\n\tserverEventTypes: state => state.ServerEventTypes,\r\n\tgetHandlingEvent: state => state.HandlingEvent,\r\n\tgetJoiningEventID: state => state.JoiningEventID,\r\n\tgetTourNoteRequired: state => state.TourNoteRequired,\r\n\tgetHideMapFlag: state => state.hideMapFlag,\r\n\tgetMaxEventsToShow: state => state.maxEventsToShow,\r\n\tgetBulkHandleShown: state => state.bulkHandleShown,\r\n\tgetVirtualOperatorControlPanelShown: state => state.virtualOperatorControlPanelShown,\r\n\tgetAllAlarmsSelected: state => state.allAlarmsSelected,\r\n\tgetSelectedAlarms: state => state.selectedAlarms,\r\n\tgetRefreshQueue: state => state.refreshQueue,\r\n\tgetClosingAction: state => state.closingAction,\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport ccureapi from \"@/services/api.ccure.service\";\r\nimport { axiosInstance } from \"@/axios.instance\";\r\nimport axios from \"axios\";\r\nimport router from \"@/router\";\r\nimport { ActionTree } from \"vuex\";\r\nimport {\r\n\tEventsQueueState,\r\n\tAlarmQueueFilter,\r\n\tAlarmQueueFilterEditModel,\r\n\tSiteTreeNode,\r\n\tAlarmQueueFilterID,\r\n\tEventQueueInfo,\r\n\tSearchServerEventTypesParams,\r\n\tGroup\r\n} from \"./types\";\r\nimport { RootState, UserGroup } from \"../types\";\r\nimport Vue from \"vue\"; // Need to refactor this out to use store\r\nimport { get } from \"lodash\";\r\nimport EventTypes from \"@/types/sv-data/enums/EventTypes\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync fetchEventQueue({ dispatch, commit, state, getters, rootGetters }, data: any) {\r\n\t\tif (rootGetters.getPermissions.canProcessAlarms\r\n\t\t\t|| rootGetters.getPermissions.canHandleAlarms\r\n\t\t\t|| rootGetters.getPermissions.isSystemAdmin) {\r\n\r\n\t\t\tif (data == null) {\r\n\t\t\t\tdata = await getters.getAlarmQueueFilterIDs;\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tconst currentSort = state.CurrentSort;\r\n\t\t\t\tlet filteredEventsResponse: any = null;\r\n\r\n\t\t\t\t// define the url that will be hit to get the event queue\r\n\t\t\t\tlet eventQueueRequestUrl = \"/eventqueue\";\r\n\r\n\t\t\t\t// if another url is defined, use that.\r\n\t\t\t\tif (state.eventQueueGetOverride) {\r\n\t\t\t\t\teventQueueRequestUrl = state.eventQueueGetOverride;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst eventTypes = [EventTypes.Alarm, EventTypes.Patrol, EventTypes.SiteCheck];\r\n\r\n\t\t\t\tlet features = await rootGetters.getFeaturesList;\r\n\t\t\t\tlet alarmOnTestFeatureEnabled = get(features, [\"Alarms\", \"AlarmPoints\", \"OnTest\"]);\r\n\r\n\t\t\t\tif (alarmOnTestFeatureEnabled)\r\n\t\t\t\t{\r\n\t\t\t\t\teventTypes.push(EventTypes.OnTest, EventTypes.AuditTest);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// create payload to post to url defined above\r\n\t\t\t\tconst requestData = {\r\n\t\t\t\t\tfilters: data,\r\n\t\t\t\t\tsortBy: currentSort.sort,\r\n\t\t\t\t\tsortDesc: currentSort.desc,\r\n\t\t\t\t\tincludeAll: true,\r\n\t\t\t\t\tonlyWithLocation: false,\r\n\t\t\t\t\teventTypes: eventTypes\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// post as JSON, using the in-built transformRequest (outputs a JSON string)\r\n\t\t\t\tfilteredEventsResponse = await axiosInstance.post(eventQueueRequestUrl, requestData, {\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t\"Content-Type\": \"application/json\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\ttransformRequest: axios.defaults.transformRequest\r\n\t\t\t\t});\r\n\t\t\t\tconst alarmQueueFilters = state.AlarmQueueFilters;\r\n\t\t\t\tconst filterObj: any = {};\r\n\r\n\t\t\t\talarmQueueFilters.forEach((filter: any) => {\r\n\t\t\t\t\tlet name = filter.alarmQueueFilterID.toString();\r\n\r\n\t\t\t\t\tif (filter.regionID) {\r\n\t\t\t\t\t\tname = filter.alarmQueueFilterID.toString() + \"_\" + filter.regionID.toString();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfilterObj[name] = {\r\n\t\t\t\t\t\tactiveAlarmCount: 0\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (!filteredEventsResponse) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcommit(\"setActiveAlarmCount\", filteredEventsResponse.data.alarmCount ? filteredEventsResponse.data.alarmCount : 0);\r\n\t\t\t\tconst currentFilter = state.AlarmActiveFilter;\r\n\t\t\t\tconst openFilters = getters.getOpenAlarmQueueFilterIds;\r\n\t\t\t\tconst { eventQueue: eventsList } = filteredEventsResponse.data;\r\n\r\n\t\t\t\tconst filteredEvents: any[] = [];\r\n\t\t\t\tlet includeCurrentFilter: boolean;\r\n\r\n\t\t\t\teventsList.forEach(eventQueue => {\r\n\t\t\t\t\tlet inOpenFilters: boolean = false;\r\n\r\n\t\t\t\t\tinOpenFilters = eventQueue.inFilters != null &&\r\n\t\t\t\t\t\teventQueue.inFilters.some(el => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\topenFilters.includes(el.filterID)\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (currentFilter.filterId === -1) {\r\n\t\t\t\t\t\tincludeCurrentFilter = true;\r\n\t\t\t\t\t} else if(currentFilter.filterId === 0) {\r\n\t\t\t\t\t\tincludeCurrentFilter = inOpenFilters\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tincludeCurrentFilter = eventQueue.inFilters != null &&\r\n\t\t\t\t\t\t\teventQueue.inFilters.some(el => {\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t// We do an extra check here as region ID of 0 is 'local' for\r\n\t\t\t\t\t\t\t\t\t\t// event queue items.\r\n\t\t\t\t\t\t\t\t\t\t(el.regionID === 0 && currentFilter.regionId === null) ||\r\n\t\t\t\t\t\t\t\t\t\t(el.regionID === currentFilter.regionId && el.filterID === currentFilter.filterId)\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (includeCurrentFilter) {\r\n\t\t\t\t\t\tif (eventQueue.eventTitle === \"\") {\r\n\t\t\t\t\t\t\teventQueue.displayTitle = eventQueue.responseTitle;\r\n\t\t\t\t\t\t} else if (eventQueue.responseTitle === \"\") {\r\n\t\t\t\t\t\t\teventQueue.displayTitle = eventQueue.eventTitle;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\teventQueue.displayTitle = `${eventQueue.eventTitle} - ${eventQueue.responseTitle}`;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfilteredEvents.push(eventQueue);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (eventQueue.eventTypeID === 2) {\r\n\t\t\t\t\t\teventQueue.eventTitle = \"Tour\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!eventQueue.inProcessing && eventQueue.eventTypeID === 1 && eventQueue.unParkAt == null) {\r\n\t\t\t\t\t\tif (filterObj[\"-1\"] != null) {\r\n\t\t\t\t\t\t\tfilterObj[\"-1\"].activeAlarmCount++;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (eventQueue.inFilters != null) {\r\n\t\t\t\t\t\t\tif (inOpenFilters) {\r\n\t\t\t\t\t\t\t\tfilterObj[\"0\"].activeAlarmCount++;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\teventQueue.inFilters.forEach((filter: any) => {\r\n\t\t\t\t\t\t\t\tlet name = filter.filterID.toString();\r\n\r\n\t\t\t\t\t\t\t\tif (filter.regionID) {\r\n\t\t\t\t\t\t\t\t\tname = filter.filterID.toString() + \"_\" + filter.regionID.toString();\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (filterObj[name]) {\r\n\t\t\t\t\t\t\t\t\tfilterObj[name].activeAlarmCount++;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (eventQueue.regionID === 0 && eventQueue.regionTitle === null) {\r\n\t\t\t\t\t\teventQueue.regionTitle = \"Local\";\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcommit(\"setDataError\", false, { root: true });\r\n\r\n\t\t\t\t// @techdebt all this conditions should be removed after migrating to websockets\r\n\t\t\t\talarmQueueFilters.forEach((filter: any) => {\r\n\t\t\t\t\tlet name = filter.alarmQueueFilterID.toString();\r\n\r\n\t\t\t\t\tif (filter.regionID) {\r\n\t\t\t\t\t\tname = filter.alarmQueueFilterID.toString() + \"_\" + filter.regionID.toString();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst alarmCount = filterObj[name].activeAlarmCount;\r\n\r\n\t\t\t\t\tif (filter.activeAlarmCount !== alarmCount) {\r\n\t\t\t\t\t\tcommit(\"setAlarmQueueFilterAlarmCount\", {\r\n\t\t\t\t\t\t\tfilter,\r\n\t\t\t\t\t\t\talarmCount\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcommit(\"setFilteredEvents\", filteredEvents.slice(0, state.maxEventsToShow));\r\n\r\n\t\t\t\tcommit(\"setFilteredEventIds\", filteredEvents\r\n\t\t\t\t\t.filter(q => q.eventTypeID == 1 && q.inProcessing == false && q.unParkAt == null)\r\n\t\t\t\t\t.map(s => s.eventID)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif(state.debugMode){\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\t// previous event Queue Information\r\n\t\t\t\t\t\tconst listOfAlarms = eventsList.filter(evt => evt.eventTypeID == 1).map(evt => evt.eventID);\r\n\t\t\t\t\t\tconst listOfParked = eventsList.filter(evt => evt.eventTypeID == 1 && evt.inProcessing == 0 && evt.unParkAt != null).map(evt => evt.eventID);\r\n\t\t\t\t\t\tconst listOfPatrols = eventsList.filter(evt => evt.eventTypeID == 2).map(evt => evt.eventID);\r\n\t\t\t\t\t\tconst eventQueueInfo: EventQueueInfo = {\r\n\t\t\t\t\t\t\tCurrentUTC: new Date().toISOString(),\r\n\t\t\t\t\t\t\tEventsLastUpdate: new Date(state.EventsLastUpdated).toISOString(),\r\n\t\t\t\t\t\t\tAlarmList: listOfAlarms.toString(),\r\n\t\t\t\t\t\t\tParkedList: listOfParked.toString(),\r\n\t\t\t\t\t\t\tTourList: listOfPatrols.toString()\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\tcommit(\"setEventQueueUpdateInfoHistory\", eventQueueInfo);\r\n\t\t\t\t\t} catch (err) {\r\n\t\t\t\t\t\tthrow \"Error sorting previous event Queue info\" + err.message;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcommit(\"clearEventQueueUpdateInfoHistory\");\r\n\t\t\t\t}\r\n\r\n\t\t\t} catch (err) {\r\n\t\t\t\tconsole.log(err);\r\n\t\t\t\tif (err.response != null && err.response.status === 401) {\r\n\t\t\t\t\tdispatch(\"logout\");\r\n\t\t\t\t} else if(!err.message.includes(\"sorting previous\")) {\r\n\t\t\t\t\tcommit(\"setLostConnectionCount\", state.lostConnectionCount+1);\r\n\t\t\t\t\tif(state.lostConnectionCount > 2) {\r\n\t\t\t\t\t\tcommit(\"setLostConnectionCount\", 0);\r\n\t\t\t\t\t\tcommit(\"setDataError\", true, { root: true });\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\tsetMaxEventsToShow({ state, commit }, maxCount : number){\r\n\t\tcommit(\"setMaxEventsToShow\", maxCount);\r\n\t},\r\n\r\n\taddFilteredEvents({ getters, commit }, data: any) {\r\n\t\tdata.forEach(event => {\r\n\t\t\tconst storedEvent = getters.getFilteredEventById(event.eventID);\r\n\r\n\t\t\tcommit(\"addFilteredEvents\", { storedEvent, event });\r\n\t\t});\r\n\t},\r\n\r\n\tremoveFilteredEvents({ getters, commit, state }, data: any) {\r\n\t\tdata.forEach(event => {\r\n\t\t\tconst storedEvent = getters.getFilteredEventById(event.eventID);\r\n\t\t\tconst index = storedEvent ? state.FilteredEvents.indexOf(storedEvent) : null;\r\n\t\t\tcommit(\"removeFilteredEvents\", index);\r\n\t\t});\r\n\t},\r\n\r\n\tasync fetchAlarmQueueFilters({ dispatch, commit, state, rootGetters }) {\r\n\t\tconst response = await api.loadAlarmQueueFilters();\r\n\r\n\t\tconst filters: AlarmQueueFilter[] = response.data;\r\n\t\tconst filtersIds: AlarmQueueFilterID[] = [];\r\n\t\tconst activeFilter = state.AlarmActiveFilter;\r\n\r\n\t\tlet filterRestrictions = false;\r\n\t\tif(get(rootGetters.getFeaturesList, [\"Alarms\",\"AlarmQueueFilters\",\"AlarmQueueFilterRestrictions\"])){\r\n\t\t\tfilterRestrictions = rootGetters.getPermissions.alarmQueueFilterRestrictions;\r\n\t\t}\r\n\r\n\t\tconst allItem: AlarmQueueFilter = {\r\n\t\t\talarmQueueFilterID: -1,\r\n\t\t\ttitle: filterRestrictions ? \"All Filters\" : \"All\",\r\n\t\t\tisActive: activeFilter.filterId === -1,\r\n\t\t\tactiveAlarmCount: 0,\r\n\t\t\thide: false,\r\n\t\t\tregionID: 0,\r\n\t\t\tregionalFilterID: \"0_-1\", // _,\r\n\t\t\tisLocal: true\r\n\t\t};\r\n\r\n\t\tconst allFiltersItem: AlarmQueueFilter = {\r\n\t\t\talarmQueueFilterID: 0,\r\n\t\t\ttitle: \"All Open Filters\",\r\n\t\t\tisActive: activeFilter.filterId === 0 && filters.length > 0,\r\n\t\t\tactiveAlarmCount: 0,\r\n\t\t\thide: filters.length === 0,\r\n\t\t\tregionID: 0,\r\n\t\t\tregionalFilterID: \"0_0\",\r\n\t\t\tisLocal: true\r\n\t\t};\r\n\r\n\t\tfilters.forEach(filter => {\r\n\t\t\tfilter.isActive =\r\n\t\t\t\tactiveFilter.filterId === filter.alarmQueueFilterID && activeFilter.regionId === filter.regionID;\r\n\t\t\tfilter.activeAlarmCount = 0;\r\n\t\t\tfiltersIds.push({\r\n\t\t\t\tfilterId: filter.alarmQueueFilterID,\r\n\t\t\t\tregionId: filter.regionID\r\n\t\t\t});\r\n\r\n\t\t\tfilter.isLocal = (filter.regionID || 0) === 0;\r\n\r\n\t\t\tif (!filter.addedRegionTitle && !filter.isLocal) {\r\n\t\t\t\tfilter.title = `${filter.title} (${filter.regionTitle})`;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet anyActive = allFiltersItem.isActive || allItem.isActive;\r\n\t\tif (!anyActive) {\r\n\t\t\tfilters.forEach(filter => {\r\n\t\t\t\tif (filter.isActive) {\r\n\t\t\t\t\tanyActive = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (!anyActive) {\r\n\t\t\tallItem.isActive = true;\r\n\t\t\tdispatch(\"setActiveFilter\", { filterId: -1, regionId: null });\r\n\t\t}\r\n\r\n\t\tfilters.unshift(allFiltersItem);\r\n\t\tfilters.unshift(allItem);\r\n\r\n\t\tcommit(\"setAlarmQueueFilters\", filters);\r\n\t\tcommit(\"setAlarmQueueFilterIDs\", filtersIds);\r\n\r\n\t\tawait dispatch(\"updateFilteredEvents\", filtersIds);\r\n\t\treturn filtersIds;\r\n\t},\r\n\r\n\tupdateFilteredEvents({ dispatch, commit, state }, data: any) {\r\n\t\tconst activeId = data || [{ filterId: 0, regionId: null }];\r\n\t\tdispatch(\"fetchEventQueue\", activeId);\r\n\t},\r\n\r\n\tasync handleEvent({ dispatch, commit, state, getters, rootGetters }, { eventID, checkInProcessing, openInNewWindow, pickupMethod }: any) {\r\n\t\tif (getters.getHandlingEvent) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcommit(\"setHandlingEvent\", true);\r\n\t\tcommit(\"setJoiningEventID\", eventID);\r\n\t\tconsole.log(\"EventQueueHandleEvent\", pickupMethod)\r\n\t\ttry {\r\n\t\t\tconst eventHandledResult = await api.loadEventHandleAllowInProcessing(eventID, checkInProcessing);\r\n\r\n\t\t\tif (eventHandledResult.data.canProcess) {\r\n\t\t\t\tcommit(\"setLastEventHandled\");\r\n\r\n\t\t\t\t// check if HandleInNewTab feature is enabled\r\n\t\t\t\tlet features = await rootGetters.getFeaturesList;\r\n\t\t\t\tlet openInNewTabFeatureEnabled = get(features, [\"Alarms\", \"HandleInNewTab\"]);\r\n\t\t\t\tawait api.auditEventPickUp(eventID, pickupMethod);\r\n\t\t\t\t// only apply this logic if we are using the AlarmQueue in views\r\n\t\t\t\tif ((router.currentRoute && router.currentRoute.name == \"views\" && openInNewTabFeatureEnabled) || openInNewWindow) {\r\n\t\t\t\t\t// get the route data for the site monitor\r\n\t\t\t\t\tconst routeData = router.resolve({\r\n\t\t\t\t\t\tpath: \"/site-monitor\"\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// open the site monitor in a new window\r\n\t\t\t\t\twindow.open(routeData.href + `/${eventID}`, \"site-monitor\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\trouter.push({ path: `/site-monitor/${eventID}` }).catch(err => {});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (eventHandledResult.data.removedFromEvent) {\r\n\t\t\t\t\tcommit(\"setProcessingError\", \"Unable to process event - you have been removed from this event.\");\r\n\t\t\t\t} else if (!checkInProcessing && eventHandledResult.data.inProcessing) {\r\n\t\t\t\t\tcommit(\"setProcessingError\", \"Unable to process event - event is already being processed.\");\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcommit(\"setProcessingError\", \"Unable to process event\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// throw an error here so the caller knows to reset our region and base URL\r\n\t\t\t\tthrow new Error(\"Unable to process event\");\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tcommit(\"setHandlingEvent\", false);\r\n\t\t}\r\n\t},\r\n\r\n\tasync sitesTreeGet({ dispatch, commit, state, getters }, multiTenant?: boolean) {\r\n\t\tconst data = await api.loadGroupsTree(multiTenant);\r\n\t\t// @todo @refactor move store modifications to mutations\r\n\t\tconst setSelected = (node: SiteTreeNode) => {\r\n\t\t\tnode.group.selected = false;\r\n\r\n\t\t\tif (node.subGroups != null && node.subGroups.length > 0) {\r\n\t\t\t\tnode.subGroups = node.subGroups.map(setSelected);\r\n\t\t\t}\r\n\r\n\t\t\treturn node;\r\n\t\t};\r\n\r\n\t\tif (!data) {\r\n\t\t\tcommit(\"setSiteTree\", []);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst tree = data.map(setSelected);\r\n\t\tconst setLocalProperties = (node: SiteTreeNode) => {\r\n\t\t\tVue.set(node, \"show\", true);\r\n\t\t\tVue.set(node, \"contents\", null);\r\n\t\t\tVue.set(node, \"loadingContents\", false);\r\n\t\t\tVue.set(node, \"contentsOpen\", false);\r\n\r\n\t\t\tif (node.subGroups && node.subGroups.length > 0) {\r\n\t\t\t\tnode.subGroups.forEach(setLocalProperties);\r\n\t\t\t} else {\r\n\t\t\t\t// if there are no subGroups there may be contents of the child most group which should be closed initially\r\n\t\t\t\tnode.isOpen = false;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttree.forEach(setLocalProperties);\r\n\r\n\t\tcommit(\"setSiteTree\", tree);\r\n\t\tcommit(\"updateSiteTreeSelected\");\r\n\t},\r\n\r\n\tfindGroupInTreeById({ getters }, groupId: number) {\r\n\t\tconst recursiveFind = (tree: SiteTreeNode, groupId: number) => {\r\n\t\t\tif (tree.group.groupID === groupId) {\r\n\t\t\t\treturn tree.group;\r\n\t\t\t}\r\n\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\tfor (var i = 0; i < tree.subGroups.length; i++) {\r\n\t\t\t\t\tconst searchResult = recursiveFind(tree.subGroups[i], groupId);\r\n\t\t\t\t\tif (searchResult) return searchResult;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t};\r\n\r\n\t\tfor (var i = 0; i < getters.getSiteTree.length; i++) {\r\n\t\t\tconst searchResult = recursiveFind(getters.getSiteTree[i], groupId);\r\n\t\t\tif (searchResult) return searchResult;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\tasync loadAvailableAlarmQueueFilters() {\r\n\t\tconst { data } = await api.loadAvailableAlarmQueueFilters();\r\n\r\n\t\tdata.forEach(filter => {\r\n\t\t\tfilter.isLocal = (filter.regionID || 0) === 0;\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync addAlarmQueueFilter({ dispatch }, id: AlarmQueueFilterID) {\r\n\t\tawait api.addAlarmQueueFilter(id);\r\n\t\treturn await dispatch(\"fetchAlarmQueueFilters\");\r\n\t},\r\n\r\n\tasync removeAlarmQueueFilter({ dispatch }, id: AlarmQueueFilterID) {\r\n\t\tawait api.removeAlarmQueueFilter(id);\r\n\t\treturn await dispatch(\"fetchAlarmQueueFilters\");\r\n\t},\r\n\r\n\tasync eventHandleTop({ dispatch }, id: AlarmQueueFilterID) {\r\n\t\treturn await api.eventHandleTop(id);\r\n\t},\r\n\r\n\tasync createAlarmQueueFilter({ dispatch }, data: AlarmQueueFilterEditModel) {\r\n\t\tObject.keys(data).forEach(key => {\r\n\t\t\tif (key === \"groups\") {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (data[key] === null) {\r\n\t\t\t\tdelete data[key];\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (/Operator$/.test(key)) {\r\n\t\t\t\tdata[key] = data[key] && data[key].toLowerCase();\r\n\t\t\t}\r\n\t\t\tif (/Value$/.test(key)) {\r\n\t\t\t\t// Convert strings to numbers in \"*Value\" props\r\n\t\t\t\tdata[key] = data[key] && parseInt(data[key], 10);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst alarmQueueFilterID = await api.createAlarmQueueFilter(data);\r\n\t\tawait dispatch(\"fetchAlarmQueueFilters\");\r\n\r\n\t\treturn alarmQueueFilterID.data;\r\n\t},\r\n\r\n\tasync editAlarmQueueFilter({ dispatch }, data: AlarmQueueFilterEditModel) {\r\n\t\tObject.keys(data).forEach(key => {\r\n\t\t\tif (data[key] === null) {\r\n\t\t\t\tdelete data[key];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tawait api.editAlarmQueueFilter(data);\r\n\t\tawait dispatch(\"fetchAlarmQueueFilters\");\r\n\r\n\t\treturn data.alarmQueueFilterID;\r\n\t},\r\n\r\n\tasync deleteAlarmQueueFilter({ dispatch }, filterId: number) {\r\n\t\tawait api.deleteAlarmQueueFilter(filterId);\r\n\t\tawait dispatch(\"fetchAlarmQueueFilters\");\r\n\t},\r\n\r\n\tcollapseSiteTree({ dispatch, commit }, { groups, lvl, collapsedLevel }) {\r\n\t\tconst nextLvl = lvl + 1;\r\n\t\tgroups.forEach(group => {\r\n\t\t\tif (lvl === collapsedLevel) {\r\n\t\t\t\tcommit(\"collapseSiteTreeNode\", group);\r\n\t\t\t}\r\n\r\n\t\t\tif (lvl < collapsedLevel && group.subGroups.length) {\r\n\t\t\t\tcommit(\"expandSiteTreeNode\", group);\r\n\t\t\t\tdispatch(\"collapseSiteTree\", {\r\n\t\t\t\t\tgroups: group.subGroups,\r\n\t\t\t\t\tnextLvl,\r\n\t\t\t\t\tcollapsedLevel\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tasync loadRoutingGroups({ commit }) {\r\n\t\tconst { data } = await api.loadRoutingGroups();\r\n\t\tcommit(\"setRoutingGroups\", data);\r\n\t},\r\n\r\n\tasync loadAlarmTags({ commit }) {\r\n\t\tconst { data } = await api.loadAlarmTags();\r\n\t\tcommit(\"setAlarmTags\", data);\r\n\t},\r\n\r\n\tasync fetchUserZone({ commit }: any) {\r\n\t\tconst userZone = await api.loadUserZone();\r\n\t\tcommit(\"setUserZone\", userZone);\r\n\t},\r\n\r\n\tsetDisplayedEvent({ commit }, event) {\r\n\t\tcommit(\"setDisplayedEvent\", event);\r\n\t},\r\n\r\n\tasync eventControl(context, payload) {\r\n\t\tconst { data } = await api.eventControl(payload);\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync tourNotesRequired({ commit }) {\r\n\t\t// execute api tourNotesRequired Method.\r\n\t\tconst { data } = await api.tourNotesRequired();\r\n\t\t// Commit the returned data.\r\n\t\tcommit(\"setTourNotesRequired\", data);\r\n\t},\r\n\r\n\tasync loadServerEventTypes({ commit }, { serverType, groupID }: { serverType: number; groupID: number | null }) {\r\n\t\t// passing anything other than on object with 'serverType' as a property will cause this to be undefined\r\n\t\tif (serverType === undefined) {\r\n\t\t\tthrow new Error(\"Action:loadServerEventTypes - serverType parameter is invalid\");\r\n\t\t}\r\n\r\n\t\tconst { data } = await api.loadServerEventTypes(serverType, groupID);\r\n\t\tcommit(\"setServerEventTypes\", data);\r\n\t},\r\n\r\n\tasync searchServerEventTypes({ commit }, { serverType, groupID, filter, pageSize }: SearchServerEventTypesParams) {\r\n\t\tconst { data } = await api.loadServerEventTypes(serverType, groupID, pageSize, filter);\r\n\t\tcommit(\"setFilteredServerEventTypes\", data);\r\n\t},\r\n\r\n\tasync searchGroups(context, params) {\r\n\t\tconst { data } = await api.searchGroups(params);\r\n\t\treturn data as UserGroup[];\r\n\t},\r\n\r\n\tasync loadGroupsList({ commit }) {\r\n\t\treturn await api.loadGroupsList();\r\n\t},\r\n\r\n\tasync loadEventHandleAllowInProcessing({ commit }, id: number) {\r\n\t\tconst { data } = await api.loadEventHandleAllowInProcessing(id);\r\n\r\n\t\tif (!data.canProcess) {\r\n\t\t\tif (data.removedFromEvent) {\r\n\t\t\t\tcommit(\"setProcessingError\", \"Unable to process event - you have been removed from this event.\");\r\n\t\t\t} else {\r\n\t\t\t\tcommit(\"setProcessingError\", \"Unable to process event\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t},\r\n\r\n\tsetActiveFilter({ commit }, alarmQueueFilterID: AlarmQueueFilterID) {\r\n\t\tcommit(\"setActiveFilter\", alarmQueueFilterID);\r\n\t},\r\n\r\n\tasync loadEventShareInvites() {\r\n\t\tconst { data } = await api.loadEventShareInvites();\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync acceptEventShareInvite(context, eventUserID: number) {\r\n\t\tconst { data } = await api.acceptEventShareInvite(eventUserID);\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync ignoreEventShareInvite(context, eventUserID: number) {\r\n\t\tconst { data } = await api.ignoreEventShareInvite(eventUserID);\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync fetchGroupsForFilter(context, filterID: number) {\r\n\t\treturn await api.groupsForFilter(filterID);\r\n\t},\r\n\r\n\tasync resetAllActions(context, eventId: number) {\r\n\t\tconsole.log(eventId);\r\n\t\treturn await ccureapi.resetAllActions(eventId);\r\n\t},\r\n\r\n\tasync resetAllActionsWithRegion(context, data: any) {\r\n\t\treturn await ccureapi.resetAllActionsWithRegion(data.eventId, data.regionId);\r\n\t},\r\n\r\n\tsetHideMapFlag({ commit }, hideMapFlag: boolean) {\r\n\t\tcommit(\"setHideMapFlag\", hideMapFlag);\r\n\t},\r\n\r\n\tasync getSelectedGroupByIDSetState({ commit }, { groupID, state }: { groupID: number, state: string }): Promise {\r\n\t\tif (groupID) {\r\n\t\t\tlet data = await api.loadGroup(groupID);\r\n\t\t\tif (data) {\r\n\t\t\t\tdata = { ...data, state };\r\n\t\t\t}\r\n\t\t\tcommit(\"setSelectedGroup\", data);\r\n\t\t}\r\n\t},\r\n\tupdateSelectedGroup({ commit }, group: Group): void {\r\n\t\tcommit(\"setSelectedGroup\", group);\r\n\t}\r\n};\r\n","import ActionState from \"@/types/sv-data/events/ActionState\";\r\nimport { EventsQueueState } from \"./types\";\r\n\r\nexport function getDefaultState(): EventsQueueState {\r\n\treturn {\r\n\t\tAlarmQueueFilters: [],\r\n\t\tAlarmQueueFilterIDs: [],\r\n\t\tFilteredEvents: [],\r\n\t\tFilteredEventIds: [],\r\n\t\tCurrentSort: {\r\n\t\t\tsort: 0,\r\n\t\t\tdesc: false,\r\n\t\t\tchanged: false,\r\n\t\t\treversed: false\r\n\t\t},\r\n\t\tAlarmActiveFilter: {\r\n\t\t\tfilterId: -1,\r\n\t\t\tregionId: null\r\n\t\t},\r\n\t\tmaxEventsToShow: 200,\r\n\t\tEventsLastUpdated: 0,\r\n\t\tHoverEvent: null,\r\n\t\tDisplayedEvent: null,\r\n\t\tNewFilterModalShown: false,\r\n\t\tManualPatrolShown: false,\r\n\t\tManualActionShown: false,\r\n\t\tActivityLogShown: false,\r\n\t\tSiteTree: [],\r\n\t\tChangedTreeNodes: [],\r\n\t\tselectedGroups: [],\r\n\t\ttreeSelectedGroup: {},\r\n\t\tsearchSelectedGroup: {},\r\n\t\tqueueMapBounds: null,\r\n\t\tactiveAlarmCount: 0,\r\n\t\teventCountsByType: {\r\n\t\t\tparked: 0,\r\n\t\t\tpatrols: 0,\r\n\t\t\tinProcess: 0,\r\n\t\t\tonTest: 0\r\n\t\t},\r\n\t\teventQueueGetOverride: null,\r\n\t\tprocessingError: null,\r\n\t\tuserZone: {\r\n\t\t\tgroupID: 0,\r\n\t\t\tparentGroupID: 0,\r\n\t\t\ttitle: \"\",\r\n\t\t\ttimeZoneID: 0,\r\n\t\t\tselected: false\r\n\t\t},\r\n\t\tlastEventHandled: null,\r\n\t\tRoutingGroups: [],\r\n\t\tAlarmTags: [],\r\n\t\tServerEventTypes: [],\r\n\t\tfilteredServerEventTypes: null,\r\n\t\tHandlingEvent: false,\r\n\t\tadvancedTreeSearchCancelToken: null,\r\n\t\tJoiningEventID: null,\r\n\t\tTourNoteRequired: false,\r\n\t\thideMapFlag: false,\r\n\t\tlostConnectionCount: 0,\r\n\t\teventQueueUpdateInfoHistory: [],\r\n\t\tdebugMode: false,\r\n\t\tpendingEventPickup: null,\r\n\t\tselectedGroup: null,\r\n\t\tpeekEventId: null,\r\n\t\tbulkHandleShown: false,\r\n\t\tvirtualOperatorControlPanelShown: false,\r\n\t\tallAlarmsSelected: false,\r\n\t\tselectedAlarms: [],\r\n\t\trefreshQueue: false,\r\n\t\tclosingAction: ActionState.Undefined,\r\n\t\teventQueuePriorityColors: []\r\n\t};\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport {\r\n\tEventsQueueState,\r\n\tAlarmQueueFilter,\r\n\tFilteredEvent,\r\n\tGroup,\r\n\tSiteTreeNode,\r\n\tAlarmTag,\r\n\tServerEventType,\r\n\tAlarmQueueFilterID,\r\n\tEventQueueInfo,\r\n\tPendingEventPickup,\r\n} from \"./types\";\r\nimport { RoutingGroup } from \"@/store/types\";\r\nimport Vue from \"vue\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { ICamera } from \"../views/types\";\r\nimport ActionState from \"@/types/sv-data/events/ActionState\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetAlarmQueueFilters(state, data: AlarmQueueFilter[]) {\r\n\t\tstate.AlarmQueueFilters = data;\r\n\t},\r\n\r\n\tsetTourNotesRequired(state, data: any) {\r\n\t\tstate.TourNoteRequired = data; // Mutation to update argument data to state data.\r\n\t},\r\n\r\n\tsetCurrentSort(state, sortOption: any) {\r\n\t\tstate.CurrentSort.sort = sortOption.sort;\r\n\t\tstate.CurrentSort.desc = sortOption.desc;\r\n\t\tstate.CurrentSort.reversed = sortOption.reversed;\r\n\t},\r\n\r\n\tsetCurrentSortChanged(state, hasChanged: boolean) {\r\n\t\tstate.CurrentSort.changed = hasChanged;\r\n\t},\r\n\r\n\tsetActiveAlarmCount(state, alarmCount: number) {\r\n\t\tstate.activeAlarmCount = alarmCount;\r\n\t},\r\n\r\n\tsetAlarmQueueFilterAlarmCount(state, { filter, alarmCount }: any) {\r\n\t\tfilter.activeAlarmCount = alarmCount;\r\n\t},\r\n\r\n\tsetAlarmQueueFilterIDs(state, data: AlarmQueueFilterID[]) {\r\n\t\tstate.AlarmQueueFilterIDs = data;\r\n\t},\r\n\r\n\taddFilteredEvents(state, { storedEvent, event }) {\r\n\t\tif (storedEvent) {\r\n\t\t\tVue.set(state.FilteredEvents, state.FilteredEvents.indexOf(storedEvent), event);\r\n\t\t} else {\r\n\t\t\tstate.FilteredEvents.push(event);\r\n\t\t}\r\n\r\n\t\tstate.EventsLastUpdated = new Date().valueOf();\r\n\t},\r\n\r\n\tremoveFilteredEvents(state, index: number | null) {\r\n\t\tif (index !== null) {\r\n\t\t\tstate.FilteredEvents.splice(index, 1);\r\n\t\t\tstate.EventsLastUpdated = new Date().valueOf();\r\n\t\t}\r\n\t},\r\n\r\n\tsetMaxEventsToShow(state, maxCount : number){\r\n\t\tif(maxCount !== null) {\r\n\t\t\tstate.maxEventsToShow = maxCount;\r\n\t\t}\r\n\t},\r\n\r\n\tsetFilteredEvents(state, data: FilteredEvent[]) {\r\n\t\tstate.FilteredEvents = data;\r\n\t\tstate.EventsLastUpdated = new Date().valueOf();\r\n\t},\r\n\r\n\tsetFilteredEventIds(state, data: number[]) {\r\n\t\tstate.FilteredEventIds = data;\r\n\t},\r\n\r\n\tsetActiveFilter(state, alarmFilter: AlarmQueueFilterID) {\r\n\t\tif (state.AlarmQueueFilters === null || state.AlarmQueueFilters.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstate.AlarmQueueFilters.filter(filter => filter.isActive).forEach(filter => (filter.isActive = false));\r\n\r\n\t\tstate.AlarmQueueFilters.filter(\r\n\t\t\tfilter => filter.alarmQueueFilterID === alarmFilter.filterId && filter.regionID === alarmFilter.regionId\r\n\t\t).forEach(filter => (filter.isActive = true));\r\n\r\n\t\tstate.AlarmActiveFilter = alarmFilter;\r\n\t\tstate.EventsLastUpdated = new Date().valueOf();\r\n\t},\r\n\r\n\tsetHoverEvent(state, event: MouseEvent) {\r\n\t\tstate.HoverEvent = event;\r\n\t},\r\n\r\n\tsetDisplayedEvent(state, event: FilteredEvent) {\r\n\t\tstate.DisplayedEvent = event;\r\n\t},\r\n\r\n\tsetManualPatrolShown(state, shown: boolean) {\r\n\t\tstate.ManualPatrolShown = shown;\r\n\t},\r\n\r\n\tsetActivityLogShown(state, shown: boolean) {\r\n\t\tstate.ActivityLogShown = shown;\r\n\t},\r\n\r\n\tsetManualActionShown(state, shown: boolean) {\r\n\t\tstate.ManualActionShown = shown;\r\n\t},\r\n\r\n\tsetNewFilterModalShown(state, shown: boolean) {\r\n\t\tstate.NewFilterModalShown = shown;\r\n\t},\r\n\r\n\tsetSiteTree(state, siteTree: SiteTreeNode[]) {\r\n\t\tstate.SiteTree = siteTree;\r\n\t},\r\n\r\n\tsetSiteNodeContents(state, { treeNode, content, isLoading = false }) {\r\n\t\ttreeNode.contents = content;\r\n\t\tif (isLoading) {\r\n\t\t\ttreeNode.loadingContents = true;\r\n\t\t\ttreeNode.contentsOpen = true;\r\n\t\t\ttreeNode.isOpen = true;\r\n\t\t} else {\r\n\t\t\ttreeNode.loadingContents = false;\r\n\t\t}\r\n\t},\r\n\r\n\ttoggleSiteNodeContentsOpen(state, { treeNode }) {\r\n\t\ttreeNode.contentsOpen = !treeNode.contentsOpen;\r\n\t},\r\n\r\n\tsetTree(state, data) {\r\n\t\tconst setSelected = (node: SiteTreeNode) => {\r\n\t\t\tnode.group.selected = false;\r\n\r\n\t\t\tif (node.subGroups != null && node.subGroups.length > 0) {\r\n\t\t\t\tnode.subGroups = node.subGroups.map(setSelected);\r\n\t\t\t}\r\n\r\n\t\t\treturn node;\r\n\t\t};\r\n\r\n\t\tif (!data) {\r\n\t\t\tstate.SiteTree = [];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst tree = data.map(setSelected);\r\n\t\tconst setLocalProperties = (node: SiteTreeNode) => {\r\n\t\t\tVue.set(node, \"show\", true);\r\n\t\t\tVue.set(node, \"contents\", null);\r\n\t\t\tVue.set(node, \"loadingContents\", false);\r\n\t\t\tVue.set(node, \"contentsOpen\", false);\r\n\r\n\t\t\tif (node.subGroups && node.subGroups.length > 0) {\r\n\t\t\t\tnode.subGroups.forEach(setLocalProperties);\r\n\t\t\t} else {\r\n\t\t\t\t// if there are no subGroups there may be contents of the child most group which should be closed initially\r\n\t\t\t\tnode.isOpen = false;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttree.forEach(setLocalProperties);\r\n\r\n\t\tstate.SiteTree = tree;\r\n\t},\r\n\r\n\t// Updates the content of the group site tree adding the supplied devices to the relevant group\r\n\tsetDevicesAndGroupsInSiteTree(state, { devices, query }) {\r\n\t\t// Hides all nodes and removes all devices from the tree\r\n\t\tconst resursiveRemoveAllDevices = (tree: SiteTreeNode) => {\r\n\t\t\ttree.contents = null;\r\n\t\t\ttree.show = false;\r\n\t\t\ttree.isOpen = false;\r\n\t\t\ttree.contentsOpen = false;\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\tfor (var i = 0; i < tree.subGroups.length; i++) {\r\n\t\t\t\t\tresursiveRemoveAllDevices(tree.subGroups[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Shows all of the children of a given node\r\n\t\tconst recursiveShowChild = (tree: SiteTreeNode) => {\r\n\t\t\ttree.show = true;\r\n\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\tfor (var i = 0; i < tree.subGroups.length; i++) {\r\n\t\t\t\t\trecursiveShowChild(tree.subGroups[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Shows all the groups with a matching title\r\n\t\tconst recursiveShowGroups = (tree: SiteTreeNode, query: string) => {\r\n\t\t\t// Leaf first seach, check if title matches and enable if true\r\n\t\t\tquery = query.toLocaleLowerCase();\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\tfor (var i = 0; i < tree.subGroups.length; i++) {\r\n\t\t\t\t\t// Check the children first\r\n\t\t\t\t\trecursiveShowGroups(tree.subGroups[i], query);\r\n\r\n\t\t\t\t\t// If any of the children have been opened, open parent\r\n\t\t\t\t\tif (tree.subGroups[i].show) {\r\n\t\t\t\t\t\ttree.isOpen = true;\r\n\t\t\t\t\t\ttree.show = true;\r\n\t\t\t\t\t\ttree.contentsOpen = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If we match query enable the contents of that node and all its children\r\n\t\t\tif (tree.group.title.toLocaleLowerCase().includes(query)) {\r\n\t\t\t\ttree.show = true;\r\n\r\n\t\t\t\trecursiveShowChild(tree);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Adds the devices to the tree\r\n\t\tconst recursiveAddDevice = (tree: SiteTreeNode, device: ICamera) => {\r\n\t\t\t// Leaf first seach, check if\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\tfor (var i = 0; i < tree.subGroups.length; i++) {\r\n\t\t\t\t\trecursiveAddDevice(tree.subGroups[i], device);\r\n\r\n\t\t\t\t\t// If any of the children have been opened, open parent\r\n\t\t\t\t\tif (tree.subGroups[i].isOpen) {\r\n\t\t\t\t\t\ttree.isOpen = true;\r\n\t\t\t\t\t\ttree.show = true;\r\n\t\t\t\t\t\ttree.contentsOpen = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Add devices that belong to the current nodes group\r\n\t\t\tif (tree.group.groupID === device.groupId) {\r\n\t\t\t\tif (tree.contents && tree.contents.devices) {\r\n\t\t\t\t\tlet deviceAlreadyAdded = tree.contents.devices.some(d => d.deviceId == device.deviceID);\r\n\t\t\t\t\tif (!deviceAlreadyAdded) {\r\n\t\t\t\t\t\ttree.contents.devices.push(device);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tVue.set(tree, \"contents\", { devices: [device] });\r\n\t\t\t\t}\r\n\t\t\t\ttree.contentsOpen = true;\r\n\t\t\t\ttree.show = true;\r\n\t\t\t\ttree.isOpen = true;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Performs all the actions to set the tree\r\n\t\tstate.SiteTree.forEach(siteTree => {\r\n\t\t\tresursiveRemoveAllDevices(siteTree);\r\n\t\t\trecursiveShowGroups(siteTree, query);\r\n\t\t\tdevices.forEach(device => {\r\n\t\t\t\trecursiveAddDevice(siteTree, device);\r\n\t\t\t});\r\n\r\n\t\t\t// Ensure root node is open\r\n\t\t\tsiteTree.show = true;\r\n\t\t\tsiteTree.isOpen = true;\r\n\t\t});\r\n\t},\r\n\r\n\t// Updates the content of the group site tree adding the supplied devices to the relevant group\r\n\tsetDevicesForGroupInSiteTree(state, devices) {\r\n\t\tconst resursiveRemoveAllDevices = (tree: SiteTreeNode) => {\r\n\t\t\ttree.contents = null;\r\n\t\t\ttree.show = false;\r\n\t\t\ttree.isOpen = false;\r\n\t\t\ttree.contentsOpen = false;\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\tfor (var i = 0; i < tree.subGroups.length; i++) {\r\n\t\t\t\t\tresursiveRemoveAllDevices(tree.subGroups[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst recursiveAddDevice = (tree: SiteTreeNode, device) => {\r\n\t\t\tif (tree.group.groupID === device.groupId) {\r\n\t\t\t\tif (tree.contents && tree.contents.devices) {\r\n\t\t\t\t\tlet deviceAlreadyAdded = tree.contents.devices.some(d => d.deviceId == device.deviceId);\r\n\t\t\t\t\tif (!deviceAlreadyAdded) {\r\n\t\t\t\t\t\ttree.contents.devices.push(device);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tVue.set(tree, \"contents\", { devices: [device] });\r\n\t\t\t\t}\r\n\t\t\t\ttree.contentsOpen = true;\r\n\t\t\t\ttree.show = true;\r\n\t\t\t\ttree.isOpen = true;\r\n\t\t\t}\r\n\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\tfor (var i = 0; i < tree.subGroups.length; i++) {\r\n\t\t\t\t\trecursiveAddDevice(tree.subGroups[i], device);\r\n tree.isOpen = true;\r\n tree.show = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\tstate.SiteTree.forEach(siteTree => {\r\n\t\t\tresursiveRemoveAllDevices(siteTree);\r\n\t\t\tdevices.forEach(device => {\r\n\t\t\t\trecursiveAddDevice(siteTree, device);\r\n\t\t\t});\r\n\t\t\tif (devices.length > 0) {\r\n siteTree.show = true;\r\n siteTree.isOpen = true;\r\n }\r\n\t\t});\r\n\t},\r\n\r\n\tsetSiteTreeFilter(state, areaSearch: string) {\r\n\t\t// Sets show to true for entire tree. Used to reset search.\r\n\t\tconst recursiveShow = (tree: SiteTreeNode) => {\r\n\t\t\ttree.show = true;\r\n\t\t\tif (tree.isOpenDefault !== null) {\r\n\t\t\t\ttree.isOpen = tree.isOpenDefault;\r\n\t\t\t\ttree.isOpenDefault = null;\r\n\t\t\t}\r\n\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\ttree.subGroups.forEach((node: SiteTreeNode) => {\r\n\t\t\t\t\trecursiveShow(node);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Set show for anything that matches search term and any nodes higher in the tree\r\n\t\tconst recursiveSearchApply = (tree: SiteTreeNode, searchTerm: string): boolean => {\r\n\t\t\tlet thisHasTerm = tree.group!.title!.toLowerCase().indexOf(searchTerm) > -1;\r\n\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\ttree.subGroups.forEach((node: SiteTreeNode) => {\r\n\t\t\t\t\tconst lowerInTree = recursiveSearchApply(node, searchTerm);\r\n\t\t\t\t\tif (lowerInTree) {\r\n\t\t\t\t\t\tthisHasTerm = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttree.show = thisHasTerm;\r\n\t\t\tif (tree.isOpenDefault == null) {\r\n\t\t\t\ttree.isOpenDefault = tree.isOpen;\r\n\t\t\t}\r\n\t\t\ttree.isOpen = true;\r\n\r\n\t\t\treturn thisHasTerm;\r\n\t\t};\r\n\r\n\t\tconst isEmptyOrSpaces = (str: string) => str == null || str.match(/^ *$/) != null;\r\n\r\n\t\t// If the search string is empty, just return the tree directly\r\n\t\tif (isEmptyOrSpaces(areaSearch)) {\r\n\t\t\tstate.SiteTree.forEach((node: SiteTreeNode) => {\r\n\t\t\t\trecursiveShow(node);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// Filter the tree, setting show for nodes that match filter\r\n\t\t\tstate.SiteTree.forEach((node: SiteTreeNode) => {\r\n\t\t\t\trecursiveSearchApply(node, areaSearch.toLowerCase());\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tsetSiteTreeFilterByState(state, areaState: string) {\r\n\t\t// Sets show to true for entire tree. Used to reset search.\r\n\t\tconst recursiveShow = (tree: SiteTreeNode) => {\r\n\t\t\ttree.show = true;\r\n\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\ttree.subGroups.forEach((node: SiteTreeNode) => {\r\n\t\t\t\t\trecursiveShow(node);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// Set show for anything that matches search term and any nodes higher in the tree\r\n\t\tconst recursiveSearchApply = (tree: SiteTreeNode, areaState: string): boolean => {\r\n\t\t\tlet groupHasState = tree.group!.state === areaState;\r\n\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\ttree.subGroups.forEach((node: SiteTreeNode) => {\r\n\t\t\t\t\tconst lowerInTree = recursiveSearchApply(node, areaState);\r\n\t\t\t\t\tif (lowerInTree) {\r\n\t\t\t\t\t\tgroupHasState = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttree.show = groupHasState;\r\n\t\t\tif (tree.isOpenDefault == null) {\r\n\t\t\t\ttree.isOpenDefault = tree.isOpen;\r\n\t\t\t}\r\n\t\t\ttree.isOpen = true;\r\n\r\n\t\t\treturn groupHasState;\r\n\t\t};\r\n\r\n\t\t// If not filtering just return the tree directly\r\n\t\tif (areaState === \"All\") {\r\n\t\t\tstate.SiteTree.forEach((node: SiteTreeNode) => {\r\n\t\t\t\trecursiveShow(node);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// Filter the tree, setting show for nodes that match masking status\r\n\t\t\tstate.SiteTree.forEach((node: SiteTreeNode) => {\r\n\t\t\t\trecursiveSearchApply(node, areaState);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tsetSiteTreeFilterOn(state, { treeNode, shown }) {\r\n\t\t// : any { SiteTreeNode, boolean }\r\n\t\ttreeNode.show = shown;\r\n\t\tif (treeNode.isOpenDefault == null) {\r\n\t\t\ttreeNode.isOpenDefault = treeNode.isOpen;\r\n\t\t}\r\n\t\ttreeNode.isOpen = true;\r\n\t},\r\n\r\n\tsetSiteTreeFilterOff(state, treeNode) {\r\n\t\ttreeNode.show = true;\r\n\t\tif (treeNode.isOpenDefault !== null) {\r\n\t\t\ttreeNode.isOpen = treeNode.isOpenDefault;\r\n\t\t\ttreeNode.isOpenDefault = null;\r\n\t\t}\r\n\t},\r\n\r\n\tsetSiteTreeNodeValues(state, { treeNode, isOpen, selected, contents, loadingContents, contentsOpen }) {\r\n\t\tif (open !== undefined) {\r\n\t\t\ttreeNode.isOpen = open;\r\n\r\n\t\t\tif (treeNode.isOpenDefault == null) {\r\n\t\t\t\ttreeNode.isOpenDefault = treeNode.isOpen;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (selected !== undefined) {\r\n\t\t\ttreeNode.group.selected = selected;\r\n\t\t}\r\n\t\tif (contents !== undefined) {\r\n\t\t\ttreeNode.contents = contents;\r\n\t\t}\r\n\t\tif (loadingContents !== undefined) {\r\n\t\t\ttreeNode.loadingContents = loadingContents;\r\n\t\t}\r\n\t\tif (contentsOpen !== undefined) {\r\n\t\t\ttreeNode.contentsOpen = contentsOpen;\r\n\t\t}\r\n\r\n\t\tif (!state.ChangedTreeNodes.some(n => n.group.groupID === treeNode.group.groupID)) {\r\n\t\t\tstate.ChangedTreeNodes.push(treeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tsetTreeGroupSelected(state, { group, multiSelect }) {\r\n\t\tif (!multiSelect) {\r\n\t\t\tif (state.selectedGroups) {\r\n\t\t\t\tstate.selectedGroups.forEach((selectedGroup: any) => {\r\n\t\t\t\t\tif (selectedGroup) {\r\n\t\t\t\t\t\tselectedGroup.selected = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tstate.selectedGroups = [];\r\n\t\t}\r\n\r\n\t\tstate.selectedGroups.push(group);\r\n\r\n\t\t// state.searchSelectedGroup = {};\r\n\t\t// state.treeSelectedGroup = group;\r\n\t\tif (group) {\r\n\t\t\tgroup.selected = true;\r\n\t\t}\r\n\t},\r\n\r\n\tsetTreeGroupSelectedByGroupId(state, groupId) {\r\n\t\tif (!groupId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstate.selectedGroups = [];\r\n\r\n\t\tconst recursiveSetSelected = (treeNode: SiteTreeNode, groupId: number): boolean => {\r\n\t\t\tlet found = treeNode.group!.groupID === groupId;\r\n\t\t\tif (found) {\r\n\t\t\t\ttreeNode.group.selected = true;\r\n\t\t\t\tstate.selectedGroups.push(treeNode.group);\r\n\r\n\t\t\t\treturn found;\r\n\t\t\t}\r\n\r\n\t\t\tif (treeNode.subGroups && treeNode.subGroups.length > 0) {\r\n\t\t\t\ttreeNode.subGroups.forEach((treeNode: SiteTreeNode) => {\r\n\t\t\t\t\trecursiveSetSelected(treeNode, groupId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t\tstate.SiteTree.forEach((treeNode: SiteTreeNode) => {\r\n\t\t\tlet successful = recursiveSetSelected(treeNode, groupId);\r\n\t\t\tif (successful) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tupdateSiteTreeSelected(state) {\r\n\t\tconst recursiveUpdateAll = (tree: SiteTreeNode) => {\r\n\t\t\tlet selectedGroupToUpdateIndex = state.selectedGroups.findIndex(g => g.groupID == tree.group.groupID);\r\n\t\t\tif (selectedGroupToUpdateIndex !== -1) {\r\n\t\t\t\tstate.selectedGroups.splice(selectedGroupToUpdateIndex, 1, tree.group);\r\n\t\t\t}\r\n\r\n\t\t\tif (tree.subGroups && tree.subGroups.length > 0) {\r\n\t\t\t\ttree.subGroups.forEach((node: SiteTreeNode) => {\r\n\t\t\t\t\trecursiveUpdateAll(node);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tstate.SiteTree.forEach((node: SiteTreeNode) => {\r\n\t\t\trecursiveUpdateAll(node);\r\n\t\t});\r\n\t},\r\n\r\n\tresetTree(state) {\r\n\t\tstate.ChangedTreeNodes.forEach(treeNode => {\r\n\t\t\tif (treeNode.isOpenDefault !== null) {\r\n\t\t\t\ttreeNode.isOpen = treeNode.isOpenDefault;\r\n\t\t\t\ttreeNode.isOpenDefault = null;\r\n\t\t\t}\r\n\r\n\t\t\ttreeNode.contents = null;\r\n\t\t\ttreeNode.contentsOpen = false;\r\n\t\t});\r\n\r\n\t\tstate.ChangedTreeNodes = [];\r\n\t},\r\n\r\n\ttoggleSiteTreeNodeContentsOpen(state, treeNode: any) {\r\n\t\ttreeNode.contentsOpen = !treeNode.contentsOpen;\r\n\t},\r\n\r\n\tcloseSiteTreeNodeContents(state, treeNode: any) {\r\n\t\ttreeNode.contentsOpen = false;\r\n\t},\r\n\r\n\ttoggleSiteTreeNodeOpen(state, treeNode: any) {\r\n\t\ttreeNode.isOpen = !treeNode.isOpen;\r\n\t},\r\n\r\n\tcollapseSiteTreeNode(state, treeNode) {\r\n\t\ttreeNode.isOpen = false;\r\n\t},\r\n\r\n\texpandSiteTreeNode(state, treeNode) {\r\n\t\ttreeNode.isOpen = true;\r\n\t},\r\n\r\n\tsetSearchGroupSelected(state, group: Group) {\r\n\t\tif (typeof state.searchSelectedGroup.groupID !== \"undefined\") {\r\n\t\t\tstate.searchSelectedGroup.selected = false;\r\n\t\t}\r\n\r\n\t\tstate.selectedGroups.push(group);\r\n\t\tstate.treeSelectedGroup = {};\r\n\r\n\t\tstate.searchSelectedGroup = group;\r\n\t\tgroup.selected = true;\r\n\t},\r\n\r\n\tsetQueueMapBounds(state, queueMapBounds: google.maps.LatLngBoundsLiteral) {\r\n\t\tstate.queueMapBounds = queueMapBounds;\r\n\t},\r\n\r\n\tsetCountByType: (state, { countType, count }: any) => {\r\n\t\tstate.eventCountsByType[countType] = count;\r\n\t},\r\n\r\n\tsetEventQueueGetOverride: (state, path: string | null) => {\r\n\t\tstate.eventQueueGetOverride = path;\r\n\t},\r\n\r\n\tsetProcessingError: (state: EventsQueueState, error: string | null) => {\r\n\t\tstate.processingError = error;\r\n\t},\r\n\r\n\tsetAlarmTags(state, data: AlarmTag[]) {\r\n\t\tstate.AlarmTags = data;\r\n\t},\r\n\r\n\tsetRoutingGroups(state, data: RoutingGroup[]) {\r\n\t\tstate.RoutingGroups = data;\r\n\t},\r\n\r\n\tsetUserZone(state, group: Group) {\r\n\t\tstate.userZone = group;\r\n\t},\r\n\r\n\tsetLastEventHandled(state, date) {\r\n\t\tstate.lastEventHandled = date || new Date().valueOf();\r\n\t},\r\n\r\n\tsetServerEventTypes(state, data: ServerEventType[]) {\r\n\t\tstate.ServerEventTypes = data;\r\n\t},\r\n\r\n\taddServerEventType(state, data: ServerEventType) {\r\n\t\tstate.ServerEventTypes.push(data);\r\n\t},\r\n\r\n\tsetFilteredServerEventTypes(state, data: ServerEventType[]) {\r\n\t\tstate.filteredServerEventTypes = data;\r\n\t},\r\n\r\n\tsetHandlingEvent: (state, handling) => (state.HandlingEvent = handling),\r\n\tsetAdvancedTreeSearchCancelToken: (state, cancelToken) => (state.advancedTreeSearchCancelToken = cancelToken),\r\n\tsetJoiningEventID: (state, eventID) => (state.JoiningEventID = eventID),\r\n\tsetHideMapFlag: (state, hideMapFlag: boolean) => (state.hideMapFlag = hideMapFlag),\r\n\tsetBulkHandleShown:(state, shown: boolean) => (state.bulkHandleShown = shown),\r\n\tsetVirtualOperatorControlPanelShown:(state, shown: boolean) => (state.virtualOperatorControlPanelShown = shown),\r\n\tsetAllAlarmsSelected:(state, allSelected: boolean) => (state.allAlarmsSelected = allSelected),\r\n\tsetSelectedAlarms(state, data: number[]) {\r\n\t\tstate.selectedAlarms = data;\r\n\t},\r\n\taddSelectedAlarm(state, data: number) {\r\n\t\tstate.selectedAlarms.push(data);\r\n\t},\r\n\tremoveSelectedAlarm(state, data: number) {\r\n\t\tconst alarmIndex: number = state.selectedAlarms.indexOf(data);\r\n\t\tstate.selectedAlarms.splice(alarmIndex,1);\r\n\t},\r\n\tsetRefreshQueue:(state, refresh:boolean) => (state.refreshQueue = refresh),\r\n\tsetClosingAction:(state, action:ActionState) => (state.closingAction = action),\r\n\tsetLostConnectionCount: (state, count: number | null) => (state.lostConnectionCount = count),\r\n\tsetEventQueueUpdateInfoHistory: (state, info: EventQueueInfo) => {\r\n\t\tif(state.eventQueueUpdateInfoHistory.length >= 300) {\r\n\t\t\tstate.eventQueueUpdateInfoHistory.pop();\r\n\t\t}\r\n\t\tstate.eventQueueUpdateInfoHistory.unshift(info);\r\n\t},\r\n\tclearEventQueueUpdateInfoHistory:state => (state.eventQueueUpdateInfoHistory = []),\r\n\tsetDebugMode: (state, debugMode: boolean) => (state.debugMode = debugMode),\r\n\tsetPendingEventPickup: (state, pendingEvent: PendingEventPickup) => (state.pendingEventPickup = pendingEvent),\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n\tsetSelectedGroup: (state, selectedGroup: Group | null) => {\r\n\t\tstate.selectedGroup = selectedGroup\r\n\t},\r\n\tsetPeekEventId: (state, eventId: number | null) => {\r\n\t\tstate.peekEventId = eventId;\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { EventsQueueState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: EventsQueueState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const eventqueue: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { RootState } from \"@/store/types\";\r\nimport { GetterTree } from \"vuex\";\r\nimport { SiteMonitorState, EventShareUser } from \"./types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetLastActivity: state => state.LastActivity,\r\n\tgetEventDetails: state => state.EventDetails,\r\n\tgetEventLocationLastSet: state => state.eventLocationLastSet,\r\n\tgetRequestingEventRecords: state => state.requestingEventRecords,\r\n\tgetEventRecords: state => state.EventRecords,\r\n\tgetEventRecordsAwaitingAckCount: state => state.EventRecordsAwaitingAckCount,\r\n\tgetEventRecordsAwaitingRestoreCount: state => state.EventRecordsAwaitingRestoreCount,\r\n\tgetEventRecordsWithFiles: state => state.EventRecordsWithFiles,\r\n\tgetActiveResponseIDs: state => state.ActiveResponseIDs,\r\n\tgetEventRecordFilters: state => state.EventRecordFilters,\r\n\tgetCurrentRecordFilter: state => {\r\n\t\tif (state.EventRecordsFilterActiveIndex === -1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn state.EventRecordFilters[state.EventRecordsFilterActiveIndex];\r\n\t},\r\n\tgetEventRecordsNoFilterRenderIndex: state => state.EventRecordsNoFilterRenderIndex,\r\n\tgetFilteredRecords: state => {\r\n\t\tif (state.EventRecordsFilterActiveIndex === -1) {\r\n\t\t\treturn state.EventRecords;\r\n\t\t}\r\n\r\n\t\tconst activeFilter = state.EventRecordFilters[state.EventRecordsFilterActiveIndex];\r\n\t\treturn state.EventRecords.filter(\r\n\t\t\t(record: any) => activeFilter.filterRecordIds.indexOf(record.eventRecordTypeID) > -1\r\n\t\t);\r\n\t},\r\n\tgetLatestEventRecord: state => state.LatestEventRecordID,\r\n\tgetEventCloseShown: state => state.EventCloseOpen,\r\n\tgetEventDetailsShown: state => state.EventDetailsOpen,\r\n\tgetEventRaiseShown: state => state.EventRaiseOpen,\r\n\tgetIncidentReportShown: state => state.IncidentReportOpen,\r\n\tgetIncidentReportDownloaded: state => state.IncidentReportDownloaded,\r\n\tgetEventShareShown: state => state.EventSharingOpen,\r\n\tgetEventLeaveShown: state => state.EventLeaveOpen,\r\n\tgetPutEventOnTestShown: state => state.PutEventOnTestOpen,\r\n\tgetInvolvedPartiesShown: state => state.InvolvedPartyOpen,\r\n\tgetEventShare: state => state.EventShares,\r\n\tgetEventShareSet: state => state.EventSharesSet,\r\n\tgetEventNoPermission: state => state.EventNoPermission,\r\n\tuserShares: (state, storeGetters) => {\r\n\t\tconst shares: { [key: string]: EventShareUser } = {};\r\n\t\tstoreGetters.getEventShare.forEach((user: EventShareUser) => {\r\n\t\t\tshares[user.eventUserID] = {\r\n\t\t\t\tisController: user.userID === state.ControllerUserID,\r\n\t\t\t\t...user\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\treturn shares;\r\n\t},\r\n\tshareWithPersons: state => state.ShareWithPersons,\r\n\tgetExternalUsersAllowed: state => state.ExternalUsersAllowed,\r\n\tgetAdhocShareDetails: state => (eventUserId: string) => state.AdhocShareDetails[eventUserId],\r\n\tgroupID: state => state.GroupID,\r\n\tgetSelectedEventRecord: state => state.SelectedEventRecord,\r\n\tgetActiveMapItems: state => state.activeMapItems,\r\n\tgetMapCircleCenter: state => state.mapCircleCenter,\r\n\tgetIsController: state => state.IsController,\r\n\tgetUserID: state => state.UserID,\r\n\tfilterIndex: state => state.EventRecordsFilterActiveIndex,\r\n\tgetAuditService: state => state.auditService,\r\n\tgetMaskReasons: state => state.MaskReasons,\r\n\tgetEvents: state => state.Events,\r\n\tgetGroupMaskReasons: state => state.GroupMaskReasons,\r\n\tmaskedAlarms: state => state.MaskedAlarms,\r\n\tgetEventOperators: state => state.EventShares,\r\n\tareaNotesVisible: state => state.AreaNotesVisible,\r\n\tgetForceRestoreEventRecord: state => state.ForceRestoreEventRecord,\r\n\tgetActiveMapItemsRequired: state => state.ActiveMapItemsRequired,\r\n\tgetIsUploadingFile: state => state.IsUploadingFile,\r\n\tgetHideMapFlag: state => state.hideMapFlag,\r\n\tgetIsCameraEnabled: (state, getters, storeGetters) => (deviceId: number): boolean => {\r\n\t\tif (!!storeGetters && !!storeGetters.featuresList && !!storeGetters.featuresList.SystemView) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet isEnabled = true;\r\n\r\n\t\tif (!deviceId) {\r\n\t\t\treturn isEnabled;\r\n\t\t}\r\n\r\n\t\tconst serverId = state.deviceServerDetails.firstOrDefault(details => details.deviceId === deviceId)?.serverId;\r\n\t\tif (serverId) {\r\n\t\t\tconst applianceServer = state.applianceServerDetails.firstOrDefault(appServer => appServer.serverId === serverId);\r\n\t\t\tif (!!applianceServer && !!applianceServer.applianceId) {\r\n\t\t\t\tisEnabled = applianceServer.isOnline;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn isEnabled;\r\n\t},\r\n\tgetApplianceOfflineNotification: state => (deviceId: number): string => {\r\n\t\tif (!deviceId) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet notification = \"The Ops Link for this camera is currently offline.\";\r\n\r\n\t\tconst serverId = state.deviceServerDetails.firstOrDefault(details => details.deviceId === deviceId)?.serverId;\r\n\t\tif (serverId) {\r\n\t\t\tconst applianceServer = state.applianceServerDetails.firstOrDefault(appServer => appServer.serverId === serverId);\r\n\t\t\tif (!!applianceServer && !!applianceServer.applianceTitle) {\r\n\t\t\t\tnotification = `The Ops Link, '${applianceServer.applianceTitle}', for this camera is currently offline.`;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn notification;\r\n\t},\r\n\tgetSystemViewApplianceNotification: (state, getters: any) => (deviceId: number): string => {\r\n\t\tconst serverId = state.deviceServerDetails.firstOrDefault(details => details.deviceId === deviceId)?.serverId;\r\n\t\tif (serverId) {\r\n\t\t\tconst applianceServer = state.applianceServerDetails.firstOrDefault(appServer => {\r\n\t\t\t return appServer.serverId === serverId\r\n\t\t\t});\r\n\r\n\t\t\tif (!applianceServer || applianceServer.applianceId == null || applianceServer.isOnline) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\treturn `The Ops Link, '${applianceServer.applianceTitle}', for this camera is currently offline.`;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\teventOutcomesTree: state => state.eventOutcomes.eventOutcomeTree,\r\n\teventOutcomesFlatList: state => state.eventOutcomes.eventOutcomeFlatList\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport Vue from \"vue\";\r\nimport router from \"../../router\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { SiteMonitorState, EventShareUser, EventDetails, AuditReviewResponse } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { PollingStatus } from \"@/types/PollingStatus\";\r\nimport { EventOutcomeResponse } from \"@/types/EventOutcome\";\r\nimport { difference } from \"lodash\";\r\nimport CloseMultipleEventsDTO from \"@/types/sv-data/events/CloseMultipleEventsDTO\";\r\nimport CloseEventResultDTO from \"@/types/sv-data/events/CloseEventResultDTO\";\r\nimport maskingApi from \"@/services/api.masking.service\";\r\nimport { AuditRecordDTO } from \"@/store/site-monitor/types\";\r\n\r\ninterface UnlinkCameraDTO {\r\n\tobjectId: number;\r\n\tdeviceId: number;\r\n}\r\n\r\ninterface ParkEventDTO {\r\n\teventId: number;\r\n\thours: number;\r\n\tminutes: number;\r\n\tseconds: number;\r\n\tparkNote: string;\r\n\tparkedByMap: boolean;\r\n}\r\n\r\ninterface CloseEventDTO {\r\n\teventId: number;\r\n\teventOutcomeId: number;\r\n\toutcomeNote: string;\r\n\tclearGuards: boolean;\r\n}\r\n\r\ninterface RoutingGroupDTO {\r\n\teventId: number;\r\n\tRoutingGroupId: number;\r\n}\r\n\r\nexport const actions: ActionTree = {\r\n\tasync fetchEventRecords({ dispatch, commit, getters, state }, { eventID, reviewMode }) {\r\n\t\tconst requestingEventRecords = getters.getRequestingEventRecords;\r\n\t\tif (requestingEventRecords) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tcommit(\"setRequestingEventRecords\", true);\r\n\r\n\t\tlet fromRecord = getters.getLatestEventRecord;\r\n\r\n\t\treturn new Promise(function (resolve, reject) {\r\n\t\t\tapi.loadEventRecords(eventID, fromRecord).then(\r\n\t\t\t\tasync events => {\r\n\t\t\t\t\tconst eventDetails = state.EventDetails;\r\n\r\n\t\t\t\t\tconst initialEventRecordId =\r\n\t\t\t\t\t\teventDetails && eventDetails.initialEventRecordId ? eventDetails.initialEventRecordId : null;\r\n\t\t\t\t\tlet initialRecord = null;\r\n\r\n\t\t\t\t\tif (!initialEventRecordId) {\r\n\t\t\t\t\t\tconsole.log(\r\n\t\t\t\t\t\t\t\"initialEventRecordId not set for event ID \" +\r\n\t\t\t\t\t\t\teventID\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tconsole.log(`Event Details: ${eventDetails}`);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (events.data == null) {\r\n\t\t\t\t\t\tresolve(0);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tevents.data.forEach((eventRecord: any) => {\r\n\t\t\t\t\t\t\tif (fromRecord < eventRecord.eventRecordID) {\r\n\t\t\t\t\t\t\t\tfromRecord = eventRecord.eventRecordID;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (eventRecord.eventUserID != null) {\r\n\t\t\t\t\t\t\t\tconst userShare = getters.userShares[eventRecord.eventUserID];\r\n\r\n\t\t\t\t\t\t\t\tif (userShare != null) {\r\n\t\t\t\t\t\t\t\t\teventRecord.colorIndex = userShare.colorIndex;\r\n\t\t\t\t\t\t\t\t\teventRecord.initials = userShare.initials;\r\n\t\t\t\t\t\t\t\t\teventRecord.userName = userShare.name;\r\n\t\t\t\t\t\t\t\t\teventRecord.userId = userShare.userID;\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tVue.set(eventRecord, \"colorIndex\", null);\r\n\t\t\t\t\t\t\t\t\tVue.set(eventRecord, \"initials\", null);\r\n\t\t\t\t\t\t\t\t\tVue.set(eventRecord, \"userName\", null);\r\n\t\t\t\t\t\t\t\t\tVue.set(eventRecord, \"userId\", null);\r\n\r\n\t\t\t\t\t\t\t\t\tcommit(\"setEventSharesSet\", false);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (initialEventRecordId != null) {\r\n\t\t\t\t\t\t\t\tif (eventRecord.eventRecordID === initialEventRecordId) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(\"Set initial event record from event record refresh\");\r\n\t\t\t\t\t\t\t\t\tinitialRecord = eventRecord;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tcommit(\"setLatestEventRecordID\", fromRecord);\r\n\t\t\t\t\t\tcommit(\"setEventRecords\", events.data);\r\n\r\n\t\t\t\t\t\tcommit(\"setDataError\", false, { root: true });\r\n\r\n\t\t\t\t\t\tif (initialRecord) {\r\n\t\t\t\t\t\t\tcommit(\"setSelectedEventRecord\", initialRecord);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcommit(\"setRequestingEventRecords\", false);\r\n\r\n\t\t\t\t\t\tresolve(events.data.length);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\terrorResponse => {\r\n\t\t\t\t\tif (errorResponse.response != null && errorResponse.response.status === 401) {\r\n\t\t\t\t\t\trouter.push({ path: \"/event-queue\" });\r\n\t\t\t\t\t} else if (errorResponse.response != null && errorResponse.response.status === 403) {\r\n\t\t\t\t\t\tcommit(\"setEventNoPermission\", true);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcommit(\"setDataError\", true, { root: true });\r\n\t\t\t\t\t\tresolve(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcommit(\"setRequestingEventRecords\", false);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t},\r\n\tasync ackEventRecord({ commit }, eventRecord) {\r\n\t\tif (eventRecord && eventRecord.awaitingAcknowledgement) {\r\n\t\t\tawait api.eventRecordAcknowledgement(eventRecord.eventRecordID);\r\n\t\t\tcommit(\"ackEventRecord\", eventRecord.eventRecordID);\r\n\t\t}\r\n\t},\r\n\tasync updateSharing({ commit, getters }, { eventID }) {\r\n\t\tconst data = await api.loadShareForEvent(eventID);\r\n\r\n\t\tconst myUserID: number = data.myUserID;\r\n\t\tconst controllerUserID: number = data.controllerUserID;\r\n\t\tconst shareUsers: EventShareUser[] = data.users;\r\n\r\n\t\tshareUsers.forEach(share => {\r\n\t\t\tshare.isController = share.userID === controllerUserID;\r\n\t\t});\r\n\r\n\t\tcommit(\"setIsСontroller\", controllerUserID === myUserID);\r\n\t\tcommit(\"setUserID\", myUserID);\r\n\t\tcommit(\"setСontrollerUserID\", controllerUserID);\r\n\t\tcommit(\"setEventShare\", shareUsers);\r\n\t\tcommit(\"setMobileEventShares\", data.mobileShares);\r\n\r\n\t\tif (!getters.getEventShareSet) {\r\n\t\t\tconst userShares = getters.userShares;\r\n\r\n\t\t\tcommit(\"setEventRecordShares\", userShares);\r\n\t\t\tcommit(\"tasks/updateTaskAssignedToEventUser\", userShares, {\r\n\t\t\t\troot: true\r\n\t\t\t});\r\n\t\t\tcommit(\"setEventSharesSet\", true);\r\n\t\t}\r\n\r\n\t\t// const pollEventShares$ = timer(0, 5000).pipe(\r\n\t\t// switchMap(_ => api.loadShareForEvent(eventID)),\r\n\t\t// map((data: any) => {\r\n\t\t// const myUserID: number = data.myUserID;\r\n\t\t// const controllerUserID: number = data.controllerUserID;\r\n\t\t// const shareUsers: EventShareUser[] = data.users;\r\n\r\n\t\t// shareUsers.forEach((share) => {\r\n\t\t// share.isController = share.userID === controllerUserID;\r\n\t\t// });\r\n\r\n\t\t// commit('setIsСontroller', controllerUserID === myUserID);\r\n\t\t// commit('setUserID', myUserID);\r\n\t\t// commit('setСontrollerUserID', controllerUserID);\r\n\t\t// commit('setEventShare', shareUsers);\r\n\r\n\t\t// if (!getters.getEventShareSet) {\r\n\t\t// const userShares = getters.userShares;\r\n\r\n\t\t// commit('setEventRecordShares', userShares);\r\n\t\t// commit('tasks/updateTaskAssignedToEventUser', userShares, { root: true });\r\n\t\t// commit('setEventSharesSet', true);\r\n\t\t// }\r\n\t\t// })\r\n\t\t// ).subscribe();\r\n\r\n\t\t// (this as any)._vm.subscriptions$.set('pollEventShares$', pollEventShares$);\r\n\t},\r\n\tasync removeShare({ commit }, { eventID, uniqueID, isMobile }) {\r\n\t\tawait api.eventShareRemove(eventID, uniqueID, isMobile);\r\n\r\n\t\tconst shareUsers = await api.loadShareForEvent(eventID);\r\n\t\tcommit(\"setMobileEventShares\", shareUsers.mobileShares);\r\n\t\tcommit(\"setEventShare\", shareUsers.users);\r\n\t},\r\n\tasync fetchEventDetails({ commit, state, rootGetters }, eventId: number) {\r\n\t\tconst details = await api.loadEventDetails(eventId);\r\n\r\n\t\tif (details.data.initialEventRecordId && !state.SelectedEventRecord) {\r\n\t\t\tconsole.log(\"Setting SelectedEventRecord from event details\");\r\n\r\n\t\t\tconst initialRecord = state.EventRecords.find(\r\n\t\t\t\t(record: any) => record.eventRecordID === details.data.initialEventRecordId\r\n\t\t\t);\r\n\r\n\t\t\tif (initialRecord) {\r\n\t\t\t\tcommit(\"setSelectedEventRecord\", initialRecord);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (rootGetters[\"siteMonitorCameras/getRequiresEventDetails\"]) {\r\n\t\t\tcommit(\"siteMonitorCameras/setRequiresEventDetails\", false, {\r\n\t\t\t\troot: true\r\n\t\t\t});\r\n\t\t}\r\n\t\tcommit(\"setEventDetails\", details.data);\r\n\t\tcommit(\"siteMonitorCameras/setRequiresEventDetails\", false, {\r\n\t\t\troot: true\r\n\t\t});\r\n\t\tcommit(\"setEventCaseId\", details.data.eventCaseId)\r\n\r\n\t\treturn details.data;\r\n\t},\r\n\r\n\tasync setEventDetails({ commit }, data: EventDetails | null) {\r\n\t\tcommit(\"setEventDetails\", data);\r\n\t\tcommit(\"siteMonitorCameras/setRequiresEventDetails\", false, {\r\n\t\t\troot: true\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Gets the details of an event to be shown in an expanded event record.\r\n\t * @param context Vuex context.\r\n\t * @param eventRecordID The id of the event record that will be expanded.\r\n\t */\r\n\tasync getEventRecordDetails(context, { eventRecordId }) {\r\n\t\tconst result = await api.loadEventRecordDetails(eventRecordId);\r\n\t\treturn result;\r\n\t},\r\n\r\n\tasync setEventRecordFilter({ commit }, id: number) {\r\n\t\tcommit(\"setEventRecordFilter\", id);\r\n\t},\r\n\r\n\tasync eventRecordAcknowledgement(context, eventRecordID: number) {\r\n\t\tconst response = await api.eventRecordAcknowledgement(eventRecordID);\r\n\t\treturn response.data;\r\n\t},\r\n\r\n\t/**\r\n\t * Creates an event record attached to an event. The current user must be a part\r\n\t * of the event, otherwise an error will be returned.\r\n\t * @param context Vuex context.\r\n\t * @param data The data to include with the new event record.\r\n\t */\r\n\tasync createAuditRecord(context, payload: AuditRecordDTO) {\r\n\t\tconst { data } = await api.postAudit(payload);\r\n\t\treturn data;\r\n\t},\r\n\r\n\t/**\r\n\t * Like createAuditRecord, creates an event record with details attached to an event,\r\n\t * but does not require that the current user already be a part of the event.\r\n\t * @param context Vuex context.\r\n\t * @param param1 The eventId, eventRecordTypeId, and any details (string) to include with the new event record.\r\n\t */\r\n\tasync createReviewRecord(\r\n\t\tcontext,\r\n\t\tpayload: AuditRecordDTO\r\n\t): Promise {\r\n\t\tconst response = await api.auditReviewAction(payload);\r\n\t\treturn response.data;\r\n\t},\r\n\r\n\tasync loadRoutingGroupsByEvent(context, eventID: number) {\r\n\t\tconst response = await api.loadRoutingGroupsByEvent(eventID);\r\n\t\treturn response.data;\r\n\t},\r\n\r\n\tasync loadOutcomesForEvent({ commit }, eventID: number) : Promise {\r\n\t\tconst response = await api.loadOutcomesForEvent(eventID);\r\n\t\tcommit(\"setEventOutcomes\", response.data)\r\n\t\treturn response.data;\r\n\t},\r\n\r\n\tasync loadAllOutcomesForAlarms({ commit }) : Promise {\r\n\t\tconst response = await api.loadAllOutcomesForAlarms();\r\n\t\tcommit(\"setEventOutcomes\", response.data)\r\n\t\treturn response.data;\r\n\t},\r\n\r\n\tasync changeEventRoutingGroup(context, data: RoutingGroupDTO) {\r\n\t\tconst response = await api.changeEventRoutingGroup(data);\r\n\t\treturn response.data;\r\n\t},\r\n\r\n\tasync loadMaskReasonsForAlarm({ commit }, groupID: number) {\r\n\t\tconst responseData = await maskingApi.loadMaskReasonsForAlarm(groupID);\r\n\t\tcommit(\"setMaskReasons\", responseData);\r\n\t},\r\n\r\n\tasync loadMaskReasonsForGroup({ commit }, groupID: number) {\r\n\t\tconst responseData = await maskingApi.loadMaskReasonsForGroup(groupID);\r\n\t\tcommit(\"setGroupMaskReasons\", responseData);\r\n\t},\r\n\r\n\tasync maskAlarm(context, maskRequest: any) {\r\n\t\treturn await maskingApi.maskAlarm(maskRequest);\r\n\t},\r\n\r\n\tasync loadMaskedAlarms({ commit }, groupID: number) {\r\n\t\tconst response = await maskingApi.loadMaskedAlarmsForGroup(groupID);\r\n\t\tcommit(\"setMaskedAlarms\", response.data);\r\n\t},\r\n\r\n\tasync closeEvent(context, data: CloseEventDTO): Promise {\r\n\t\treturn await api.closeEvent(data);\r\n\t},\r\n\r\n\tasync closeMultipleEvents(context, data: CloseMultipleEventsDTO): Promise {\r\n return await api.closeMultipleEvents(data);\r\n },\r\n\r\n\tasync loadEventGroup(context, groupID: number) {\r\n\t\treturn await api.loadGroup(groupID);\r\n\t},\r\n\r\n\tasync loadExternalUsersAllowed({ commit }, eventId: number) {\r\n\t\tconst allow = await api.loadExternalUserShareFlag(eventId);\r\n\t\tcommit(\"setExternalUsersAllowed\", allow);\r\n\t},\r\n\r\n\tasync searchGroup(context, SearchTerm: string) {\r\n\t\treturn await api.searchGroup(SearchTerm);\r\n\t},\r\n\r\n\tsetAreaNotesVisible({ commit }, isVisible: boolean) {\r\n\t\tcommit(\"setAreaNotesVisible\", isVisible);\r\n\t},\r\n\r\n\tasync loadEventOperators({ commit }, eventID: number) {\r\n\t\tconst shareUsers = await api.loadShareForEvent(eventID);\r\n\t\tcommit(\"setEventShare\", shareUsers.users);\r\n\t\tcommit(\"setMobileEventShares\", shareUsers.mobileShares);\r\n\t},\r\n\r\n\tasync loadHistoricalEventOperators({ commit }, eventID: number) {\r\n\t\tconst shareUsers = await api.loadHistoricalShareForEvent(eventID);\r\n\t\tcommit(\"setEventShare\", shareUsers.users);\r\n\t\tcommit(\"setMobileEventShares\", shareUsers.mobileShares);\r\n\t},\r\n\r\n\tasync eventShareSearch({ commit }, query: string) {\r\n\t\tconst { data } = await api.eventShareSearch(query);\r\n\t\tcommit(\"setShareWithPersons\", data);\r\n\t},\r\n\r\n\tasync loadNotificationTemplate(context, payload: any) {\r\n\t\tconst { data } = await api.loadNotificationTemplate(payload);\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync addAdhocEventShare({ commit }, payload: any) {\r\n\t\tconst { data } = await api.addAdhocEventShare(payload);\r\n\t\tconst shareLink = window.location.toString().replace(window.location.hash, \"#/Access/\" + data.shareID);\r\n\r\n\t\tcommit(\"setAdHocShareDetails\", {\r\n\t\t\teventUserID: data.shareID,\r\n\t\t\taccessCode: data.accessCode,\r\n\t\t\tshareLink\r\n\t\t});\r\n\t\tdata.shareLink = shareLink;\r\n\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync shareEventWithUser(context, payload: any) {\r\n\t\treturn await api.shareEventWithUser(payload);\r\n\t},\r\n\r\n\tasync shareEventWithGroup(context, payload: any) {\r\n\t\treturn await api.shareEventWithGroup(payload);\r\n\t},\r\n\r\n\tasync eventPassControl(context, { eventID, userID }) {\r\n\t\treturn await api.EventPassControl(eventID, userID);\r\n\t},\r\n\r\n\tasync parkEvent(context, payload: ParkEventDTO) {\r\n\t\treturn await api.EventPark(payload);\r\n\t},\r\n\r\n\tasync leaveEvent(context, eventID: number) {\r\n\t\treturn await api.leaveEvent(eventID);\r\n\t},\r\n\r\n\tasync eventRecordAllAcknowledgement({ commit }, eventId: number) {\r\n\t\tawait api.eventRecordAllAcknowledgement(eventId);\r\n\t\tcommit(\"setEventAckCount\")\r\n\t},\r\n\r\n\tasync unlinkCamera(context, data: UnlinkCameraDTO) {\r\n\t\treturn await api.unlinkCamera(data);\r\n\t},\r\n\r\n\tasync createResponseActionForEventRecord({ commit }, { eventRecordId, title, priority, groupId }) {\r\n\t\tconst responseID = await api.createResponseActionForEventRecord({\r\n\t\t\teventRecordId,\r\n\t\t\ttitle,\r\n\t\t\tpriority,\r\n\t\t\tgroupId\r\n\t\t});\r\n\r\n\t\tcommit(\"setEventRecordResponse\", {\r\n\t\t\teventRecordID: eventRecordId,\r\n\t\t\ttitle,\r\n\t\t\tpriority,\r\n\t\t\tresponseID\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Flags the current event for review and returns true/false\r\n\t * depending on the success of the operation.\r\n\t * @param eventId The ID of the event currently being processed.\r\n\t */\r\n\tasync flagEventForReview({ commit }, { eventId, flagged }) {\r\n\t\tconst result = await api.flagEventForReview(eventId, flagged);\r\n\r\n\t\tif (result) {\r\n\t\t\tcommit(\"setFlaggedForReview\", flagged);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t},\r\n\r\n\t/**\r\n\t * preserves the current event and returns true/false\r\n\t * depending on the success of the operation.\r\n\t * @param eventId The ID of the event currently being processed.\r\n\t */\r\n\tasync preserveEvent({ commit }, { eventId, preserved }) {\r\n\t\tconst result = await api.preserveEvent(eventId, preserved);\r\n\t\treturn result;\r\n\t},\r\n\r\n\t/**\r\n\t * Puts an existing event into on test mode.\r\n\t * @param context Vuex context\r\n\t * @param param1 The necessary info to create the payload\r\n\t */\r\n\tasync putEventOnTest(context, { eventId, groupId, hours, minutes, date, scheduleType, auditMode, onTestNote }) {\r\n\t\tconst result = await api.putEventOnTest({\r\n\t\t\teventId,\r\n\t\t\tgroupId,\r\n\t\t\thours,\r\n\t\t\tminutes,\r\n\t\t\tdate,\r\n\t\t\tscheduleType,\r\n\t\t\tauditMode,\r\n\t\t\tonTestNote\r\n\t\t});\r\n\t},\r\n\r\n\tasync fetchEventRecordDetails({ commit }, { eventRecordID }) {\r\n\t\tconst result = await api.loadEventRecordDetails(eventRecordID);\r\n\t\treturn result;\r\n\t},\r\n\r\n\tasync removeAdhocUsersFromEvent({ commit, state }) {\r\n\t\tlet adhocUsers = state.EventShares.filter(\r\n\t\t\t(user: any) => user.userID == null && !user.removed && user.isActive\r\n\t\t);\r\n\r\n\t\tadhocUsers.forEach(adhocUser => {\r\n\t\t\tapi.eventShareRemove(adhocUser.eventID, adhocUser.eventUserID);\r\n\t\t});\r\n\t},\r\n\r\n\tsetHideMapFlag({ commit }, hideMapFlag: boolean) {\r\n\t\tcommit(\"setHideMapFlag\", hideMapFlag);\r\n\t},\r\n\r\n\tasync pollApplianceServerAndDeviceServerDetails({ dispatch, commit, state }) {\r\n\r\n\t\tif (!state.applianceServerAndDeviceServerPollingStatus.isPolling) {\r\n\t\t\tlet fetchApplianceServerAndDeviceServer = async () => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tawait dispatch(\"fetchApplianceServerDetails\");\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tconsole.error(err)\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tawait dispatch(\"refreshDeviceServerDetails\");\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tconsole.error(err)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tawait fetchApplianceServerAndDeviceServer();\r\n\r\n\t\t\tclearInterval(state.applianceServerAndDeviceServerPollingStatus.intervalHandlerId);\r\n\r\n\t\t\tlet intervalHandlerId = window.setInterval(fetchApplianceServerAndDeviceServer, 60000);\r\n\r\n\t\t\tlet pollingStatus: PollingStatus = {\r\n\t\t\t\tisPolling: true,\r\n\t\t\t\tintervalHandlerId: intervalHandlerId\r\n\t\t\t}\r\n\r\n\t\t\tcommit(\"setApplianceServerAndDeviceServerPollingStatus\", pollingStatus);\r\n\t\t}\r\n\t},\r\n\r\n\tstopPollingApplianceServerAndDeviceServerDetails({ commit, state }): void {\r\n\r\n\t\tif (state.applianceServerAndDeviceServerPollingStatus.isPolling) {\r\n\t\t\tclearInterval(state.applianceServerAndDeviceServerPollingStatus.intervalHandlerId);\r\n\r\n\t\t\tlet pollingStatus: PollingStatus = {\r\n\t\t\t\tisPolling: false,\r\n\t\t\t\tintervalHandlerId: 0\r\n\t\t\t};\r\n\t\t\tcommit(\"setApplianceServerAndDeviceServerPollingStatus\", pollingStatus);\r\n\t\t}\r\n\t},\r\n\r\n\tasync fetchApplianceServerDetails({ commit, state }): Promise {\r\n\t\tconst applianceServerDetails = await api.getApplianceServerDetails();\r\n\t\tcommit(\"setApplianceServerDetails\", applianceServerDetails);\r\n\t},\r\n\r\n\tasync fetchDeviceServerDetails({ commit, state }, deviceIds: number[]): Promise {\r\n\t\tif (!deviceIds || deviceIds.length == 0) {\r\n\t\t\tcommit(\"setDeviceServerDetails\", []);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst existingDeviceIds = state.deviceServerDetails && state.deviceServerDetails.length ? state.deviceServerDetails.map(details => {\r\n\t\t\treturn details.deviceId\r\n\t\t}) : [];\r\n\r\n\t\t// remove the existingIds from deviceIds\r\n\t\tdeviceIds = difference(deviceIds, existingDeviceIds);\r\n\r\n\t\tif(deviceIds.length > 0) {\r\n\t\t\tconst result = await api.getDeviceServerDetails(deviceIds);\r\n\t\t\tcommit(\"setDeviceServerDetails\", result);\r\n\t\t}\r\n\t},\r\n\r\n\tasync refreshDeviceServerDetails({ state, dispatch }): Promise {\r\n\t\tconst deviceIds = state.deviceServerDetails.map(details => {\r\n\t\t\treturn details.deviceId\r\n\t\t});\r\n\r\n\t\tif (deviceIds && deviceIds.length > 0) {\r\n\t\t\tawait dispatch(\"fetchDeviceServerDetails\", deviceIds);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Updates the Location of the current event\r\n\t * @param latLong The ID of the event currently being processed.\r\n\t */\r\n\tasync updateCurrentEventLocation({ state, commit }, latLng :string): Promise {\r\n\t\tawait api.updateInitialAlarmLocation(state.EventDetails.eventID, latLng);\r\n\t\tcommit(\"setLocation\", {\r\n\t\t\tlatLong: latLng,\r\n\t\t\tminElevation: state.EventDetails.minElevation,\r\n\t\t\tmaxElevation: state.EventDetails.maxElevation\r\n\t\t})\r\n\r\n\t},\r\n\r\n\tasync loadAllOutcomes({ commit }): Promise {\r\n\t\tconst response = await api.loadAllOutcomes();\r\n\t\tif (response.status != 200){\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tcommit(\"setEventOutcomes\", response.data)\r\n\t\treturn response.data;\r\n\t}\r\n};\r\n","import EventRecordTypes from \"@/types/sv-data/enums/EventRecordTypes\";\r\nimport { SiteMonitorState } from \"./types\";\r\n\r\nexport function getDefaultState(): SiteMonitorState {\r\n return {\r\n LastActivity: null,\r\n AreaNotesVisible: false,\r\n GroupID: null,\r\n EventDetails: null,\r\n EventRecords: [],\r\n UserID: 0,\r\n ControllerUserID: 0,\r\n IsController: false,\r\n requestingEventRecords: false,\r\n AdhocLocationEventRecords: [],\r\n ActiveResponseIDs: {},\r\n EventRecordsAwaitingAck: {},\r\n EventRecordsAwaitingAckCount: 0,\r\n EventRecordsAwaitingRestore: {},\r\n EventRecordsAwaitingRestoreCount: 0,\r\n EventRecordsWithFiles: [],\r\n SelectedEventRecord: null,\r\n LatestEventRecordID: 0,\r\n EventRecordsNoFilterRenderIndex: 0,\r\n EventRecordFilters: [\r\n {\r\n filterIndex: 0,\r\n filterTitle: \"Alarms\",\r\n filterRecordIds: [1],\r\n showNew: true,\r\n newCount: 0,\r\n hasPriorityColumn: true,\r\n hasLinkedCameraColumn: true,\r\n filterRecords: [],\r\n renderIndex: 0,\r\n enabled: true,\r\n\t\t\t\thasVideoAvailableColumn: true,\r\n\t\t\t\tshowMatrixGridLocation: true\r\n },\r\n {\r\n filterIndex: 1,\r\n filterTitle: \"Operator\",\r\n filterRecordIds: [13, 16, 21, 104, 105, 106],\r\n filterRecords: [],\r\n renderIndex: 0,\r\n enabled: true\r\n },\r\n {\r\n filterIndex: 2,\r\n filterTitle: \"Dispatch\",\r\n filterRecordIds: [48, 49, 50, 103, 112, 113],\r\n filterRecords: [],\r\n renderIndex: 0,\r\n enabled: false\r\n },\r\n {\r\n filterIndex: 3,\r\n filterTitle: \"Devices\",\r\n filterRecordIds: [4, 7, 8],\r\n filterRecords: [],\r\n renderIndex: 0,\r\n enabled: false,\r\n\t\t\t\thasVideoAvailableColumn: true\r\n },\r\n {\r\n filterIndex: 4,\r\n filterTitle: \"Actions\",\r\n filterRecordIds: [\r\n EventRecordTypes.TaskAdded,\r\n EventRecordTypes.TaskCompleted,\r\n EventRecordTypes.TaskAssigned,\r\n EventRecordTypes.AllEventActionsRemoved,\r\n EventRecordTypes.ActionPlanOverride,\r\n ],\r\n filterRecords: [],\r\n renderIndex: 0,\r\n enabled: true\r\n },\r\n {\r\n filterIndex: 5,\r\n filterTitle: \"Notes\",\r\n filterRecordIds: [17, 103],\r\n showNew: true,\r\n newCount: 0,\r\n clearNewOnView: true,\r\n filterRecords: [],\r\n renderIndex: 0,\r\n enabled: true\r\n },\r\n {\r\n filterIndex: 6,\r\n filterTitle: \"Messages\",\r\n filterRecordIds: [141, 142],\r\n showNew: true,\r\n newCount: 0,\r\n clearNewOnView: true,\r\n filterRecords: [],\r\n renderIndex: 0,\r\n enabled: true\r\n }\r\n ],\r\n EventRecordsFilterActiveIndex: -1,\r\n EventDetailsOpen: false,\r\n EventRaiseOpen: false,\r\n EventSharingOpen: false,\r\n EventCloseOpen: false,\r\n EventLeaveOpen: false,\r\n PutEventOnTestOpen: false,\r\n InvolvedPartyOpen: false,\r\n ForceRestoreEventRecord: null,\r\n EventNoPermission: false,\r\n IncidentReportOpen: false,\r\n IncidentReportDownloaded: false,\r\n EventShares: [],\r\n MobileEventShares: [],\r\n ShareWithPersons: [],\r\n AdhocShareDetails: {},\r\n EventSharesSet: false,\r\n userShares: {},\r\n ExternalUsersAllowed: false,\r\n activeMapItems: null,\r\n mapCircleCenter: null,\r\n eventLocationLastSet: 0,\r\n auditService: null,\r\n MaskReasons: [],\r\n GroupMaskReasons: [],\r\n MaskedAlarms: [],\r\n Events: [],\r\n ActiveMapItemsRequired: true,\r\n IsUploadingFile: false,\r\n hideMapFlag: false,\r\n\t\tdeviceServerDetails: [],\r\n\t\tapplianceServerDetails: [],\r\n\t\tapplianceServerAndDeviceServerPollingStatus: {\r\n\t\t\tisPolling: false,\r\n\t\t\tintervalHandlerId: 0\r\n\t\t},\r\n\t\teventCaseId: null,\r\n goToLocation: null,\r\n eventOutcomes: {\r\n eventOutcomeTree: [],\r\n eventOutcomeFlatList: []\r\n },\r\n areaDetailsTabIndex: 0,\r\n }\r\n}\r\n","import { PollingStatus } from \"@/types/PollingStatus\";\r\nimport { MutationTree } from \"vuex\";\r\nimport {\r\n\tSiteMonitorState,\r\n\tEventRecordFilter,\r\n\tApplianceServerDetails,\r\n\tDeviceServerDetails\r\n} from \"./types\";\r\nimport { AuditService } from \"../../services/auditService\";\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport { EventRecord, MaskReason, MaskedAlarm, ShareWithPerson } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport Vue from \"vue\";\r\nimport api from \"@/services/api.service\";\r\nimport EventRecordTypes from \"@/types/sv-data/enums/EventRecordTypes\";\r\nimport { EventOutcomeResponse } from \"@/types/EventOutcome\";\r\n\r\nconst { dateStringWithZeroHourOffset } = formatDateMixin.methods;\r\nconst largeEventSize: number = 150; // Number of eventRecords until an event is considered \"Large\"\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetAreaNotesVisible(state, isVisible: boolean) {\r\n\t\tstate.AreaNotesVisible = isVisible;\r\n\t},\r\n\tresetEventRecords(state) {\r\n\t\tstate.EventRecords = [];\r\n\t\tstate.LatestEventRecordID = 0;\r\n\t\tstate.AdhocLocationEventRecords = [];\r\n\t\tstate.ActiveResponseIDs = {};\r\n\r\n\t\tstate.EventRecordsAwaitingAck = {};\r\n\t\tstate.EventRecordsAwaitingAckCount = 0;\r\n\t\tstate.EventRecordsAwaitingRestore = {};\r\n\t\tstate.EventRecordsAwaitingRestoreCount = 0;\r\n\t\tstate.EventRecordsWithFiles = [];\r\n\r\n\t\tstate.EventNoPermission = false;\r\n\t\tstate.EventRecordsNoFilterRenderIndex = 0;\r\n\r\n\t\tstate.EventRecordFilters.forEach((filter: EventRecordFilter) => {\r\n\t\t\tif (filter.showNew) {\r\n\t\t\t\tfilter.newCount = 0;\r\n\t\t\t}\r\n\t\t\tfilter.renderIndex = 0;\r\n\t\t\tfilter.filterRecords = [];\r\n\t\t});\r\n\t},\r\n setEventRecordFilters(state, filters) {\r\n state.EventRecordFilters = filters;\r\n },\r\n\tsetEventRecordFilter(state, filterIndex: number) {\r\n\t\tstate.EventRecordsFilterActiveIndex = filterIndex;\r\n\t\tconst filter = state.EventRecordFilters[filterIndex];\r\n\t\tif (filter != null && filter.clearNewOnView) {\r\n\t\t\tfilter.newCount = 0;\r\n\t\t}\r\n\t},\r\n\tsetEventRecordFilterRenderIndex(state, { filterIndex, renderIndex }) {\r\n\t\tstate.EventRecordFilters[filterIndex].renderIndex = renderIndex;\r\n\t},\r\n\tsetEventRecordsNoFilterRenderIndex(state, renderIndex: number) {\r\n\t\tstate.EventRecordsNoFilterRenderIndex = renderIndex;\r\n\t},\r\n\tasync setEventRecords(state, eventRecords: EventRecord[]): Promise {\r\n\t\tif (eventRecords.length > 0) {\r\n\t\t\tconst currentFilterIndex = state.EventRecordsFilterActiveIndex;\r\n\t\t\tconst currentFilter = currentFilterIndex > -1 ? state.EventRecordFilters[currentFilterIndex] : null;\r\n\t\t\tconst filters = state.EventRecordFilters;\r\n\r\n\t\t\tconst newCheckingFilters = state.EventRecordFilters.filter(function(filter: any) {\r\n\t\t\t\treturn filter.showNew && (!filter.clearNewOnView || currentFilterIndex !== filter.filterIndex);\r\n\t\t\t});\r\n\r\n\t\t\tconst currentEventRecords = state.EventRecords;\r\n\t\t\tconst activeResponseIDs = state.ActiveResponseIDs;\r\n\r\n\t\t\tconst recordsAwaitingRestore = state.EventRecordsAwaitingRestore;\r\n\t\t\tconst recordsAwaitingAck = state.EventRecordsAwaitingAck;\r\n\t\t\tlet newAdhocLocationEventRecords = [];\r\n\r\n\t\t\tconst addedFilterCounts = {};\r\n\t\t\tfilters.forEach((filter: any) => {\r\n\t\t\t\taddedFilterCounts[filter.filterIndex.toString()] = {\r\n\t\t\t\t\tcount: 0,\r\n\t\t\t\t\trecords: []\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tfor (let i = 0; i < eventRecords.length; i++) {\r\n\t\t\t\tconst eventRecord = eventRecords[i];\r\n\t\t\t\teventRecord.selected = false;\r\n\t\t\t\teventRecord.expanded = false;\r\n\t\t\t\teventRecord.camerasExpanded = false;\r\n\r\n\t\t\t\tif (eventRecord.eventRecordTypeID === 1) {\r\n\t\t\t\t\tif (eventRecord.awaitingAcknowledgement) {\r\n\t\t\t\t\t\trecordsAwaitingAck[eventRecord.eventRecordID.toString()] = eventRecord;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (eventRecord.awaitingRestore != null) {\r\n\t\t\t\t\t\trecordsAwaitingRestore[eventRecord.eventRecordID.toString()] = eventRecord;\r\n\t\t\t\t\t\tVue.set(eventRecord, \"restoredAt\", null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (eventRecord.location !== \"\" && eventRecord.eventRecordID != eventRecords[0].eventRecordID) {\r\n\t\t\t\t\t\tnewAdhocLocationEventRecords.push(eventRecord)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (eventRecord.details != null) {\r\n\t\t\t\t\t\t// Detect if the alarm has been identified as a runaway\r\n\t\t\t\t\t\teventRecord.isRunaway = eventRecord.details.toUpperCase().startsWith(\"RUNAWAY\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (eventRecord.eventRecordTypeID === 21 && eventRecord.objectID !== null) {\r\n\t\t\t\t\tif (recordsAwaitingAck[eventRecord.objectID.toString()] != null) {\r\n\t\t\t\t\t\trecordsAwaitingAck[eventRecord.objectID.toString()].awaitingAcknowledgement = false;\r\n\t\t\t\t\t\tdelete recordsAwaitingAck[eventRecord.objectID.toString()];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\teventRecord.eventRecordTypeID === 23 &&\r\n\t\t\t\t\teventRecord.objectID !== null\r\n\t\t\t\t) {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\t!state.EventRecordsWithFiles.includes(\r\n\t\t\t\t\t\t\teventRecord.objectID\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\tstate.EventRecordsWithFiles.push(eventRecord.objectID);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (\r\n\t\t\t\t\t/* Accounts for uploading a file using the older Audit method called 'upload' */\r\n\t\t\t\t\teventRecord.eventRecordTypeID === 23 &&\r\n\t\t\t\t\teventRecord.objectID === null &&\r\n\t\t\t\t\teventRecord.details\r\n\t\t\t\t\t\t.toLocaleLowerCase()\r\n\t\t\t\t\t\t.startsWith(\"attached file:\")\r\n\t\t\t\t) {\r\n\t\t\t\t\tstate.EventRecordsWithFiles.push(eventRecord.eventRecordID);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (eventRecord.eventRecordTypeID === EventRecordTypes.SnapShot || eventRecord.eventRecordTypeID === EventRecordTypes.RecordedVideoSnapShot) {\r\n\t\t\t\t\tif (!state.EventRecordsWithFiles.includes(eventRecord.eventRecordID)) {\r\n\t\t\t\t\t\tstate.EventRecordsWithFiles.push(eventRecord.eventRecordID);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\t(eventRecord.eventRecordTypeID === 30 || eventRecord.eventRecordTypeID === 105) &&\r\n\t\t\t\t\teventRecord.objectID !== null\r\n\t\t\t\t) {\r\n\t\t\t\t\tif (recordsAwaitingRestore[eventRecord.objectID.toString()] != null) {\r\n\t\t\t\t\t\trecordsAwaitingRestore[eventRecord.objectID.toString()].awaitingRestore = false;\r\n\t\t\t\t\t\trecordsAwaitingRestore[\r\n\t\t\t\t\t\t\teventRecord.objectID.toString()\r\n\t\t\t\t\t\t].restoredAt = dateStringWithZeroHourOffset(eventRecord.created);\r\n\t\t\t\t\t\t// eventRecord.displayCreatedMoment;\r\n\r\n\t\t\t\t\t\tdelete recordsAwaitingRestore[eventRecord.objectID.toString()];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set eventCaseId when the event has been raised\r\n\t\t\t\tif (eventRecord.eventRecordTypeID === EventRecordTypes.CaseCreated && !state.eventCaseId) {\r\n\t\t\t\t\ttry\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t// We want everything after the first '#', e.g.\r\n\t\t\t\t\t\t// \"Raised to Case Management - Record Id: #123\" -> \"123\"\r\n\t\t\t\t\t\tconst regex: RegExp = /#([\\s\\S]*)/;\r\n\t\t\t\t\t\tconst caseRecordId = regex.exec(eventRecord.details)[1];\r\n\t\t\t\t\t\tstate.eventCaseId = caseRecordId;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch(ex)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconsole.error(ex);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilters.forEach((filter: EventRecordFilter) => {\r\n\t\t\t\t\tif (filter.filterRecordIds.indexOf(eventRecord.eventRecordTypeID) > -1) {\r\n\t\t\t\t\t\tif (filter.showNew) {\r\n\t\t\t\t\t\t\taddedFilterCounts[filter.filterIndex.toString()].count++;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\taddedFilterCounts[filter.filterIndex.toString()].records.push(eventRecord);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tfilters.forEach((filter: EventRecordFilter) => {\r\n\t\t\t\tif (filter.showNew) {\r\n\t\t\t\t\tfilter.newCount += addedFilterCounts[filter.filterIndex.toString()].count;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfilter.filterRecords.push(...addedFilterCounts[filter.filterIndex.toString()].records);\r\n\t\t\t});\r\n\r\n\t\t\tcurrentEventRecords.push(...eventRecords);\r\n\r\n\t\t\tstate.EventRecordsAwaitingAck = recordsAwaitingAck;\r\n\t\t\tif (state.EventDetails?.eventRecordCount >= largeEventSize){\r\n\t\t\t\ttry\r\n\t\t\t\t{\r\n\t\t\t\t\tstate.EventRecordsAwaitingAckCount = await api.retrieveAwaitingAckCountForEvent(state.EventDetails.eventID);\r\n\t\t\t\t}\r\n\t\t\t\tcatch(err)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.error(`Failed to retrieve ack count for event ${state.EventDetails?.eventID} ex: ${err}`)\r\n\t\t\t\t\tstate.EventRecordsAwaitingAckCount = Object.keys(recordsAwaitingAck).length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tstate.EventRecordsAwaitingAckCount = Object.keys(recordsAwaitingAck).length;\r\n\t\t\t}\r\n\r\n\t\t\tlet eventRecordsAwaitingRestoreCount = 0;\r\n\t\t\tfor (const eventRecordID in recordsAwaitingRestore) {\r\n\t\t\t\tif (recordsAwaitingRestore[eventRecordID].awaitingRestore) {\r\n\t\t\t\t\teventRecordsAwaitingRestoreCount++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// update adhoc location event records if any have been found\r\n\t\t\tif (newAdhocLocationEventRecords.length > 0) {\r\n\t\t\t\tstate.AdhocLocationEventRecords = state.AdhocLocationEventRecords.concat(newAdhocLocationEventRecords);\r\n\t\t\t}\r\n\r\n\t\t\tstate.EventRecordsAwaitingRestoreCount = eventRecordsAwaitingRestoreCount;\r\n\t\t\tstate.EventRecordsAwaitingRestore = recordsAwaitingRestore;\r\n\r\n\t\t\tstate.ActiveResponseIDs = activeResponseIDs;\r\n\t\t\tstate.EventRecords = currentEventRecords;\r\n\t\t}\r\n\t},\r\n\tupdateFirstEventRecordLocation(state, location: string)\r\n\t{\r\n\t\tstate.EventRecords[0].location = location;\r\n\t\tstate.EventRecords[0].latLong = location;\r\n\t},\r\n\tasync setEventAckCount(state): Promise {\r\n\t\tstate.EventRecordsAwaitingAckCount = await api.retrieveAwaitingAckCountForEvent(state.EventDetails.eventID);\r\n\t},\r\n\tsetLatestEventRecordID(state, eventRecordID: number) {\r\n\t\tstate.LatestEventRecordID = eventRecordID;\r\n\t},\r\n\tsetEventDetails(state, eventDetails: any | null) {\r\n\t\tstate.EventDetails = eventDetails;\r\n\r\n\t\tif (eventDetails == null) {\r\n\t\t\tstate.IsController = false;\r\n\t\t\tstate.auditService = null;\r\n\t\t\tstate.GroupID = null;\r\n\t\t\tstate.EventRecordsFilterActiveIndex = -1;\r\n\t\t\tstate.activeMapItems = null;\r\n\t\t\tstate.EventRecords = [];\r\n\t\t\tstate.EventRecordsNoFilterRenderIndex = 0;\r\n\t\t\tstate.SelectedEventRecord = null;\r\n\t\t\tstate.EventRecordFilters.forEach((filter: any) => {\r\n\t\t\t\tif (filter.showNew) {\r\n\t\t\t\t\tfilter.newCount = 0;\r\n\t\t\t\t}\r\n\t\t\t\tfilter.renderIndex = 0;\r\n\t\t\t\tfilter.filterRecords = [];\r\n\t\t\t});\r\n\r\n\t\t\tstate.LatestEventRecordID = 0;\r\n\t\t\tstate.LastActivity = null;\r\n\t\t} else {\r\n\t\t\tstate.auditService = new AuditService(api.getAuditServiceAddress(), eventDetails?.auditEndpoint);\r\n\r\n\t\t\tstate.GroupID = eventDetails.groupID;\r\n\t\t\tstate.LastActivity = new Date().valueOf();\r\n\r\n\t\t\tstate.EventRecordsFilterActiveIndex = eventDetails.eventTypeID === 1 ? 0 : -1;\r\n\t\t}\r\n\r\n\t\tstate.eventLocationLastSet = new Date().valueOf();\r\n\t},\r\n\tsetEventRecordExpanded(state, { eventRecordID, expanded }: any) {\r\n\t\tstate.EventRecords.find(e => e.eventRecordID == eventRecordID).expanded = expanded;\r\n\t},\r\n\tsetEventRecordEventRecordDetails(state, { eventRecordID, EventRecordDetails }: any) {\r\n\t\tstate.EventRecords.find(e => e.eventRecordID == eventRecordID).EventRecordDetails = EventRecordDetails;\r\n\t},\r\n\tsetGroupID(state, groupID: number) {\r\n\t\tstate.GroupID = groupID;\r\n\t},\r\n\tsetEventCloseShown(state, shown: boolean) {\r\n\t\tstate.EventCloseOpen = shown;\r\n\t},\r\n\tsetEventRaiseShown(state, shown: boolean) {\r\n\t\tstate.EventRaiseOpen = shown;\r\n\t},\r\n\tsetIncidentReportShown(state, shown: boolean) {\r\n\t\tstate.IncidentReportOpen = shown;\r\n\t},\r\n\tsetIncidentReportDownloaded(state, downloaded: boolean) {\r\n\t\tstate.IncidentReportDownloaded = downloaded;\r\n\t},\r\n\tsetEventDetailsShown(state, shown: boolean) {\r\n\t\tstate.EventDetailsOpen = shown;\r\n\t\tstate.LastActivity = new Date().valueOf();\r\n\t},\r\n\tsetPutEventOnTestShown(state, shown: boolean) {\r\n\t\tstate.PutEventOnTestOpen = shown;\r\n\t},\r\n\tsetEventShare(state, sharing: any[]) {\r\n\t\tstate.EventShares = sharing;\r\n\t},\r\n\tsetMobileEventShares(state, sharing: any[]) {\r\n\t\tstate.MobileEventShares = sharing;\r\n\t},\r\n\tsetAdHocShareDetails(state, { eventUserID, shareLink, accessCode }: any) {\r\n\t\tstate.AdhocShareDetails[eventUserID] = {\r\n\t\t\tshareLink,\r\n\t\t\taccessCode\r\n\t\t};\r\n\t},\r\n\tsetShareWithPersons(state, data: ShareWithPerson[]) {\r\n\t\tstate.ShareWithPersons = data;\r\n\t},\r\n\tsetEventShareShown(state, shown: boolean) {\r\n\t\tstate.EventSharingOpen = shown;\r\n\t},\r\n\tsetInvolvedPartiesShown(state, shown: boolean) {\r\n\t\tstate.InvolvedPartyOpen = shown;\r\n\t},\r\n\tsetUserID(state, UserID: number) {\r\n\t\tstate.UserID = UserID;\r\n\t},\r\n\tsetСontrollerUserID(state, id: number) {\r\n\t\tstate.ControllerUserID = id;\r\n\t},\r\n\tsetIsСontroller(state, isController: boolean) {\r\n\t\tstate.IsController = isController;\r\n\t},\r\n\tsetEventLeaveShown(state, shown: boolean) {\r\n\t\tstate.EventLeaveOpen = shown;\r\n\t},\r\n\tsetExternalUsersAllowed(state, allow: boolean) {\r\n\t\tstate.ExternalUsersAllowed = allow;\r\n\t},\r\n\tsetForceRestoreEventRecord(state, record: EventRecord) {\r\n\t\tstate.ForceRestoreEventRecord = record;\r\n\t},\r\n\tforceRestore(state) {\r\n\t\tconst recordsAwaitingRestore = state.EventRecordsAwaitingRestore;\r\n\r\n\t\tstate.ForceRestoreEventRecord.awaitingRestore = false;\r\n\t\tconst eventRecord = state.ForceRestoreEventRecord;\r\n\r\n\t\tif (recordsAwaitingRestore[eventRecord.eventRecordID.toString()] != null) {\r\n\t\t\trecordsAwaitingRestore[eventRecord.eventRecordID.toString()].awaitingRestore = false;\r\n\t\t\trecordsAwaitingRestore[eventRecord.eventRecordID.toString()].restoredAt = eventRecord.displayCreatedMoment;\r\n\r\n\t\t\tdelete recordsAwaitingRestore[eventRecord.eventRecordID.toString()];\r\n\t\t}\r\n\r\n\t\tlet eventRecordsAwaitingRestoreCount = 0;\r\n\t\tfor (const eventRecordID in recordsAwaitingRestore) {\r\n\t\t\tif (recordsAwaitingRestore[eventRecordID].awaitingRestore) {\r\n\t\t\t\teventRecordsAwaitingRestoreCount++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tstate.EventRecordsAwaitingRestoreCount = eventRecordsAwaitingRestoreCount;\r\n\t\tstate.EventRecordsAwaitingRestore = recordsAwaitingRestore;\r\n\r\n\t\tstate.ForceRestoreEventRecord = null;\r\n\t},\r\n\t/* setUserShares(state, userShares: any) {\r\n state.userShares = userShares;\r\n \t}, */\r\n\tsetEventSharesSet(state, set) {\r\n\t\tstate.EventSharesSet = set;\r\n\t},\r\n\tsetRequestingEventRecords(state, requesting: any) {\r\n\t\tstate.requestingEventRecords = requesting;\r\n\t},\r\n\tsetSelectedEventRecord(state, eventRecord: any) {\r\n\t\tif (state.SelectedEventRecord != null) {\r\n\t\t\tstate.SelectedEventRecord.selected = false;\r\n\t\t}\r\n\r\n\t\tstate.SelectedEventRecord = eventRecord;\r\n\t\tif (eventRecord != null) {\r\n\t\t\tstate.SelectedEventRecord!.selected = true;\r\n\t\t}\r\n\t},\r\n\tsetGoToLocation(state, location: string) {\r\n\t\tstate.goToLocation = location;\r\n\t},\r\n\tsetLocation(state, data: any) {\r\n\t\tstate.EventDetails!.latLong = data.latLong;\r\n\t\tstate.EventDetails!.minElevation = data.minElevation;\r\n\t\tstate.EventDetails!.maxElevation = data.maxElevation;\r\n\r\n\t\tstate.eventLocationLastSet = new Date().valueOf();\r\n\t},\r\n\tsetActiveMapItems(state, data: any) {\r\n\t\tstate.activeMapItems = data;\r\n\t},\r\n\tsetEventNoPermission(state, noPermission: boolean) {\r\n\t\tstate.EventNoPermission = noPermission;\r\n\t},\r\n\tsetMapCircleCenter(state, mapCircleCenter: string) {\r\n\t\tstate.mapCircleCenter = mapCircleCenter;\r\n\t},\r\n\tsetEventRecordShares(state, userShares) {\r\n\t\tstate.EventRecords.forEach(eventRecord => {\r\n\t\t\tif (eventRecord.eventUserID != null) {\r\n\t\t\t\tconst userShare = userShares[eventRecord.eventUserID];\r\n\r\n\t\t\t\tif (userShare) {\r\n\t\t\t\t\teventRecord.colorIndex = userShare.colorIndex;\r\n\t\t\t\t\teventRecord.initials = userShare.initials;\r\n\t\t\t\t\teventRecord.userName = userShare.name;\r\n\t\t\t\t} else {\r\n\t\t\t\t\teventRecord.colorIndex = null;\r\n\t\t\t\t\teventRecord.initials = null;\r\n\t\t\t\t\teventRecord.userName = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\tsetMaskReasons(state, data: MaskReason[]) {\r\n\t\tstate.MaskReasons = data;\r\n\t},\r\n\tsetGroupMaskReasons(state, data: MaskReason[]) {\r\n\t\tstate.GroupMaskReasons = data;\r\n\t},\r\n\tsetMaskedAlarms(state, data: MaskedAlarm[]) {\r\n\t\tstate.MaskedAlarms = data;\r\n\t},\r\n\tsetActivity(state, date) {\r\n\t\tstate.LastActivity = date || new Date().valueOf();\r\n\t},\r\n\tsetLastActivity(state, activityAt) {\r\n\t\tstate.LastActivity = activityAt;\r\n\t},\r\n\tsetActiveMapItemsRequired(state, required: boolean) {\r\n\t\tstate.ActiveMapItemsRequired = required;\r\n\t},\r\n\tsetEventRecordResponse(state, { eventRecordID, title, priority, responseID }: any) {\r\n\t\tconst recordToUpdate = state.EventRecords.find(er => er.eventRecordID === eventRecordID);\r\n\r\n\t\trecordToUpdate.details = title;\r\n\t\trecordToUpdate.responsePriority = priority;\r\n\t\trecordToUpdate.objectID = responseID;\r\n\t},\r\n\tackEventRecord(state, eventRecordID: number) {\r\n\t\tstate.LastActivity = new Date().valueOf();\r\n\t\tconst recordToUpdate = state.EventRecords.find(er => er.eventRecordID === eventRecordID);\r\n\t\trecordToUpdate.awaitingAcknowledgement = false;\r\n\t},\r\n\r\n\t/**\r\n\t * Sets the FlaggedForReview property for the current event (EventDetails).\r\n\t * @param state The vuex state.\r\n\t * @param flagged Whether or not the event has been flagged for review.\r\n\t */\r\n\tsetFlaggedForReview(state, flagged: boolean) {\r\n\t\tstate.EventDetails.flaggedForReview = flagged;\r\n\t},\r\n\r\n\tsetIsUploadingFile(state, uploading: boolean) {\r\n\t\tstate.IsUploadingFile = uploading;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n\tsetHideMapFlag(state, hideMapFlag: boolean) {\r\n\t\tstate.LastActivity = new Date().valueOf();\r\n\t\tstate.hideMapFlag = hideMapFlag;\r\n\t},\r\n\tsetApplianceServerDetails(state, applianceServers: ApplianceServerDetails[]) {\r\n\t\tstate.applianceServerDetails = applianceServers;\r\n\t},\r\n\tsetDeviceServerDetails(state, deviceServerDetails: DeviceServerDetails[]) {\r\n\t\tvar ids = new Set(deviceServerDetails.map(dev => dev.deviceId));\r\n\r\n\t\t// Take new over the existing as there may have been an update.\r\n\t\tstate.deviceServerDetails = [...deviceServerDetails, ...state.deviceServerDetails.filter(dev => !ids.has(dev.deviceId))];\r\n },\r\n\tsetApplianceServerAndDeviceServerPollingStatus(state, pollingStatus: PollingStatus) {\r\n\t\tstate.applianceServerAndDeviceServerPollingStatus = pollingStatus;\r\n\t},\r\n\tsetEventCaseId(state, id: string) {\r\n\t\tstate.eventCaseId = id;\r\n\t},\r\n\tsetAuditService(state) {\r\n\t\tstate.auditService = new AuditService(api.getAuditServiceAddress());\r\n\t},\r\n\r\n\tsetEventOutcomes(state, eventOutcomeResponse: EventOutcomeResponse) {\r\n\t\tstate.eventOutcomes = eventOutcomeResponse;\r\n\t},\r\n\tsetAreaDetailsTabIndex(state, tab: number) {\r\n\t\tstate.areaDetailsTabIndex = tab;\r\n\t},\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { SiteMonitorState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: SiteMonitorState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const siteMonitor: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { SiteMonitorCamerasState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport Vue from \"vue\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetMediaMatrixCameras: state => state.mediaMatrixCameras,\r\n\tgetMediaMatrixLayers: state => state.mediaMatrixLayers,\r\n\tgetMediaMatrixClips: state => state.mediaMatrixClips,\r\n\tgetAreaCameras: state => state.areaCameras,\r\n\tgetDeviceControllerCameras: state => state.deviceControllerCameras,\r\n\tgetDeviceControllerOutputs: state => state.deviceControllerOutputs,\r\n\tgetDeviceControllerClips: state => state.deviceControllerClips,\r\n\tgetLayoutIndex: state => state.layoutIndex,\r\n\tgetLayouts: state => state.layouts,\r\n\tgetFilter: state => state.mediaMatrixFilter,\r\n\tgetMediaMatrixEventId: state => state.mediaMatrixEventId,\r\n\tgetAwaitingCamera: state => state.awaitingCamera,\r\n\tgetAwaitingClip: state => state.awaitingClip,\r\n\tgetAllMatrixContents: state => state.matrixContents,\r\n\tgetMediaMatrixLastChanged: state => state.mediaMatrixLastChanged,\r\n\tgetMatrixContents: state => {\r\n\t\treturn (index: number) => {\r\n\t\t\treturn state.matrixContents[index.toString()];\r\n\t\t};\r\n\t},\r\n\tgetMatrixAssignedCameras: state => {\r\n\t\tif(!state.matrixContents){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar assignedCameras = [];\r\n\t\tfor (const [index, content] of Object.entries(state.matrixContents)) {\r\n\t\t\tlet objectId: number | null = content?.camera?.objectID ?? content?.camera?.objectId;\r\n\t\t\tif (content && content.camera && objectId && !assignedCameras.includes(objectId)) {\r\n\t\t\t\tassignedCameras.push(objectId)\r\n\t\t\t}\r\n\t \t}\r\n\t\treturn assignedCameras;\r\n\t},\r\n\tgetMatrixPushContents: state => {\r\n\t\treturn (index: number) => {\r\n\t\t\tif (state.matrixPushContents === undefined) {\r\n\t\t\t\tVue.set(state.matrixPushContents, index.toString(), null);\r\n\t\t\t}\r\n\r\n\t\t\treturn state.matrixPushContents[index.toString()];\r\n\t\t};\r\n\t},\r\n\tgetRequiresEventDetails: state => state.requiresEventDetails,\r\n\tgetMediaMatrixIsNew: state => state.mediaMatrixIsNew,\r\n\tgetFetchingMatrix: state => state.fetchingMatrix,\r\n\tgetHighlightCellIndex: state => state.highlightCellIndex,\r\n\tgetLinkRecord: state => state.linkRecord,\r\n\tgetWaitingForEvents: state => state.waitingForEvent,\r\n\tareaCameras: state => state.areaCameras,\r\n\tsearchedCameras: state => state.searchedCameras,\r\n\tsearchedOutputs: state => state.searchedOutputs,\r\n\tgetShownAuditClips: state => state.shownAuditClips,\r\n};\r\n","import { axiosInstance } from \"@/axios.instance\";\r\n\r\nimport { ActionTree } from \"vuex\";\r\nimport { SiteMonitorCamerasState, DeviceControllerOutput } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport api from \"@/services/api.service\";\r\nimport { DeviceType } from \"../devices/types\";\r\nimport { DeviceServerDetails } from \"./../site-monitor/types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tactiveMapItemsFromStorage() {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tconst activeMapItems = localStorage.getItem(\"activeMapItems\") as string;\r\n\r\n\t\t\tif (activeMapItems) {\r\n\t\t\t\tconst data = JSON.parse(activeMapItems);\r\n\t\t\t\tresolve(data);\r\n\t\t\t} else {\r\n\t\t\t\treject();\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\tasync fetchAreaCameras({ commit, state }, { groupID, pageNumber, paginated }) {\r\n\t\tconst newDevices = (\r\n\t\t\tawait api.devicesByGroup(groupID, {\r\n\t\t\t\tpageSize: 20,\r\n\t\t\t\tpage: pageNumber,\r\n\t\t\t\tnoCamRefOnly: false,\r\n\t\t\t\tdeviceTypeId: DeviceType.Camera,\r\n\t\t\t\tpaginated\r\n\t\t\t})\r\n\t\t).data;\r\n\t\tconst devices = newDevices.devices;\r\n\t\tconst totalCameraCount = newDevices.totalDeviceCount;\r\n\r\n\t\tcommit(\"setAreaCameraCount\", totalCameraCount);\r\n\r\n\t\tlet camerasMapped = devices\r\n\t\t\t.map(camera => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tobjectID: camera.deviceID,\r\n\t\t\t\t\titemType: DeviceType.Camera,\r\n\t\t\t\t\ttitle: camera.title,\r\n\t\t\t\t\tindex: null,\r\n\t\t\t\t\tlastError: camera.lastError,\r\n\t\t\t\t\tlastInteractionHealthy: camera.lastInteractionHealthy\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\tlet cameraList = [];\r\n\r\n\t\tif (paginated) {\r\n\t\t\tif (pageNumber == 1) {\r\n\t\t\t\tcameraList = camerasMapped;\r\n\t\t\t} else {\r\n\t\t\t\tcameraList = state.areaCameras.concat(camerasMapped);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcameraList = camerasMapped;\r\n\t\t}\r\n\r\n\t\tcommit(\"setAreaCameras\", cameraList);\r\n\r\n\t\tconst deviceServerDetails: DeviceServerDetails[] =\r\n\t\t\tdevices\r\n\t\t\t\t.map(dev => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdeviceId: dev.deviceID,\r\n\t\t\t\t\t\tserverId: dev.serverID\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\tcommit(\"siteMonitor/setDeviceServerDetails\", deviceServerDetails, { root: true });\r\n\t},\r\n\tasync fetchAreaOutputs({ commit, state }, { groupID, pageNumber, paginated }) {\r\n\t\tconst pageSize: number = 1;\r\n\r\n\t\tlet deviceOutputs = (\r\n\t\t\tawait api.devicesByGroup(groupID, {\r\n\t\t\t\tpageSize: pageSize,\r\n\t\t\t\tpage: pageNumber,\r\n\t\t\t\tdeviceTypeId: DeviceType.Relay,\r\n\t\t\t\tpaginated: paginated\r\n\t\t\t})\r\n\t\t).data;\r\n\r\n\t\tif (deviceOutputs.totalDeviceCount == 0)\r\n\t\t{\r\n\t\t\tdeviceOutputs = (\r\n\t\t\t\tawait api.devicesByGroup(groupID, {\r\n\t\t\t\t\tpageSize: pageSize,\r\n\t\t\t\t\tpage: pageNumber,\r\n\t\t\t\t\tdeviceTypeId: DeviceType.Output,\r\n\t\t\t\t\tpaginated: paginated\r\n\t\t\t\t})\r\n\t\t\t).data;\r\n\t\t}\r\n\r\n\t\tconst outputsMapped: DeviceControllerOutput[] = deviceOutputs.devices\r\n\t\t.map(output => {\r\n\t\t\treturn {\r\n\t\t\t\tcontrolRequest: false,\r\n\t\t\t\tcontrolReason: \"\",\r\n\t\t\t\tcontrolError: \"\",\r\n\t\t\t\tsendingCommand: false,\r\n\t\t\t\tdistance: output.distance,\r\n\t\t\t\timperial: output.imperial,\r\n\t\t\t\tdeviceTypeID: output.deviceTypeID,\r\n\t\t\t\tobjectId: output.deviceID,\r\n\t\t\t\ttitle: output.title,\r\n\t\t\t\tisOutput: output.settings.RelayType == \"Output\",\r\n\t\t\t\tcanPulse: output.settingsMeta.includes(\"\"),\r\n\t\t\t\tcanOnOff: output.settingsMeta.includes(\"1\"),\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet devicesList = [];\r\n\r\n\t\tif (paginated) {\r\n\t\t\tif (pageNumber == 1) {\r\n\t\t\t\tdevicesList = outputsMapped;\r\n\t\t\t} else {\r\n\t\t\t\tdevicesList = state.areaOutputs.concat(outputsMapped);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tdevicesList = outputsMapped;\r\n\t\t}\r\n\r\n\t\tcommit(\r\n\t\t\t\"setAreaOutputs\",\r\n\t\t\tdevicesList\r\n\t\t);\r\n\t},\r\n\tupdateMediaMatrixContents({ commit }, { index, eventID, contents, isController }: any) {\r\n\t\tcommit(\"updateMediaMatrixContents\", { contents, index });\r\n\r\n\t\tcommit(\"setMatrixContents\", {\r\n\t\t\tindex,\r\n\t\t\tcontents\r\n\t\t});\r\n\r\n\t\tif (isController && eventID > 0) {\r\n\t\t\tconst saveContents = {\r\n\t\t\t\tclip: null as any,\r\n\t\t\t\tcamera: null as any\r\n\t\t\t};\r\n\t\t\tif (contents.clip != null) {\r\n\t\t\t\tsaveContents.clip = {\r\n\t\t\t\t\tfileIdentifier: contents.clip.clip ? contents.clip.clip.FileIdentifier : \"\",\r\n\t\t\t\t\tuniqueFileIdentifier: contents.clip.clip ? contents.clip.clip.UniqueFileIdentifier : \"\",\r\n\t\t\t\t\teventRecordID: contents.clip.eventRecordID\r\n\t\t\t\t};\r\n\t\t\t} else if (contents.camera != null) {\r\n\t\t\t\tsaveContents.camera = { deviceId: contents.camera.objectID };\r\n\t\t\t}\r\n\r\n\t\t\taxiosInstance.post(\"/Matrix/Cell\", {\r\n\t\t\t\teventID,\r\n\t\t\t\tcellIndex: index,\r\n\t\t\t\tcontents: JSON.stringify(saveContents)\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tasync fetchDevicesByGroup({ commit }, { groupID, pageSize, page, noCamRefOnly, paginated }) {\r\n\t\tconst data = await api.devicesByGroup(groupID, { pageSize, page, noCamRefOnly, paginated });\r\n\t\treturn data;\r\n\t},\r\n\tasync fetchAllDevicesByGroup({ commit }, { groupID, pageSize, noCamRefOnly, paginated }) {\r\n\t\tconst devices = await api.allDevicesByGroup(groupID, { pageSize, noCamRefOnly, paginated });\r\n\t\treturn devices;\r\n\t},\r\n\tasync loadDeviceById(context, { deviceId, params }) {\r\n\t\treturn await api.loadDeviceById(deviceId, params);\r\n\t},\r\n\tasync saveMatrix(context, payload: any) {\r\n\t\tconst { data } = await api.saveMatrix(payload);\r\n\t\treturn data;\r\n\t},\r\n\tasync fetchMatrixForEvent(context, eventID: number) {\r\n\t\tconst { data } = await api.fetchMatrixForEvent(eventID);\r\n\t\treturn data;\r\n\t},\r\n\tasync searchDevicesNear({ rootGetters }, { search, deviceTypeID, groupID, page }) {\r\n\t\tconst { data } = await api.deviceSearchNear({\r\n\t\t\tLatLong: rootGetters[\"siteMonitor/getMapCircleCenter\"],\r\n\t\t\tsearch,\r\n\t\t\tdeviceTypeID,\r\n\t\t\tgroupID,\r\n\t\t\tpage\r\n\t\t});\r\n\r\n\t\tif (rootGetters.getUseImperialMeasurements) {\r\n\t\t\tdata.devices.forEach(distance => {\r\n\t\t\t\tif (distance.distance) {\r\n\t\t\t\t\tdistance.distance = metersToFeet(distance.distance);\r\n\t\t\t\t\tdistance.imperial = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t},\r\n\tasync searchForOutputs({ commit, dispatch }, { query, groupID }) {\r\n\t\tconst data = await dispatch(\"searchDevicesNear\", {\r\n\t\t\tsearch: query,\r\n\t\t\tdeviceTypeID: DeviceType.Relay,\r\n\t\t\tgroupID\r\n\t\t});\r\n\r\n\t\tdata.devices.forEach(output => {\r\n\t\t\toutput.controlRequest = false;\r\n\t\t\toutput.controlReason = \"\";\r\n\t\t\toutput.controlError = \"\";\r\n\t\t\toutput.sendingCommand = false;\r\n\t\t\toutput.isOutput = output.settingsMeta.includes(\"Output\");\r\n\t\t\toutput.canPulse = output.settingsMeta.includes(\"\");\r\n\t\t\toutput.canOnOff = output.settingsMeta.includes(\"1\");\r\n\t\t});\r\n\r\n\t\tcommit(\"setSearchedOutputs\", data);\r\n\t},\r\n\tasync searchForCameras({ commit, dispatch, state }, { query, groupID, page, reset }) {\r\n\t\tconst data = await dispatch(\"searchDevicesNear\", {\r\n\t\t\tsearch: query,\r\n\t\t\tdeviceTypeID: DeviceType.Camera,\r\n\t\t\tgroupID,\r\n\t\t\tpage\r\n\t\t});\r\n\r\n\t\tcommit(\"setSearchedCameraCount\", data.totalDeviceCount);\r\n\t\tcommit(\"setSearchedGroupCameraCount\", data.groupDeviceCount);\r\n\r\n\t\tif (data.devices.length < 1) {\r\n\t\t\tcommit(\"setSearchedCameras\", { devices: data.devices, reset: false });\r\n\t\t}\r\n\r\n\t\tcommit(\"setSearchedCameras\", { devices: data.devices, reset: reset });\r\n\r\n\t\tconst deviceServerDetails: DeviceServerDetails[] = data.devices.map(d => {\r\n\t\t\treturn {\r\n\t\t\t\tdeviceId: d.deviceId,\r\n\t\t\t\tserverId: d.serverId\r\n\t\t\t}\r\n\t\t});\r\n\t\tcommit(\"siteMonitor/setDeviceServerDetails\", deviceServerDetails, { root: true });\r\n\t},\r\n\tasync getAllDeviceDetails({ rootGetters }, { deviceIDs, eventID, latLong }) {\r\n\t\tconst details = await api.getMatrixDeviceDetails(deviceIDs, eventID, latLong);\r\n\r\n\t\tif (details !== null || details !== undefined) {\r\n\t\t\tfor (const deviceDetails of details) {\r\n\t\t\t\tif (rootGetters.getUseImperialMeasurements && deviceDetails.distance) {\r\n\t\t\t\t\tdeviceDetails.distance = metersToFeet(deviceDetails.distance);\r\n\t\t\t\t\tdeviceDetails.imperial = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn details;\r\n\t},\r\n\tasync setCameraScreenshot({ commit }, data: any) {\r\n\t\tapi.saveCameraScreenshot(data);\r\n\t},\r\n\tasync isNetworkAddressReachable(context, networkAddress: string): Promise {\r\n\t\tif (!networkAddress) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn await api.isUrlReachable(networkAddress, (networkAddress.endsWith(\"/\") ? \"\" : \"/\") + \"devices/info\");\r\n\t},\r\n};\r\n\r\n// Pure helper fn\r\nconst metersToFeet = (meters: number) => {\r\n\tif (meters < 0) {\r\n\t\treturn 0;\r\n\t} else {\r\n\t\treturn Math.round(meters / 0.3048);\r\n\t}\r\n};\r\n","import { SiteMonitorCamerasState } from \"./types\";\r\n\r\nexport function getDefaultState(): SiteMonitorCamerasState {\r\n return {\r\n layoutIndex: 3,\r\n layouts: [[1, 1], [2, 2], [2, 3], [3, 3], [4, 3], [4, 4]],\r\n matrixContents: {},\r\n matrixPushContents: {},\r\n mediaMatrixCameras: Array(16),\r\n mediaMatrixClips: [],\r\n mediaMatrixLayers: [],\r\n mediaMatrixLastChanged: 0,\r\n deviceControllerCameras: [],\r\n deviceControllerOutputs: [],\r\n deviceControllerClips: [],\r\n deviceControllerAudioDevices: [],\r\n areaCameras: [],\r\n searchedCameras: [],\r\n searchedOutputs: [],\r\n mediaMatrixIsNew: false,\r\n fetchingMatrix: false,\r\n mediaMatrixFilter: \"\",\r\n mediaMatrixEventId: null,\r\n awaitingCamera: null,\r\n awaitingClip: null,\r\n saveLink: false,\r\n linkRecord: null,\r\n requiresEventDetails: false,\r\n highlightCellIndex: null,\r\n waitingForEvent: false,\r\n shownAuditClips: [],\r\n\t\tareaOutputs: [],\r\n\t\tareaCameraCount: 0,\r\n\t\tsearchedCameraCount: 0,\r\n\t\tsearchedGroupCameraCount: 0,\r\n }\r\n}\r\n","import Vue from \"vue\";\r\nimport { MutationTree } from \"vuex\";\r\nimport { isEqual } from \"lodash\";\r\nimport { SiteMonitorCamerasState, DeviceControllerOutput } from \"./types\";\r\nimport { axiosInstance } from \"@/axios.instance\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetMediaMatrixEventId(state, eventId: number) {\r\n\t\tstate.mediaMatrixEventId = eventId;\r\n\t},\r\n\tsetMediaMatrixCameras(state, cameras: any[]) {\r\n\t\tstate.mediaMatrixCameras = cameras;\r\n\t},\r\n\tsetDeviceControllerOutputs(state, devices: any) {\r\n\t\tdevices.forEach(output => {\r\n\t\t\tVue.set(output, \"controlRequest\", false);\r\n\t\t\tVue.set(output, \"controlReason\", \"\");\r\n\t\t\tVue.set(output, \"controlError\", \"\");\r\n\t\t\tVue.set(output, \"sendingCommand\", false);\r\n\t\t});\r\n\t\tstate.deviceControllerOutputs = devices;\r\n\t},\r\n\tsetDeviceControllerAudioDevices(state, devices: any) {\r\n\t\tstate.deviceControllerAudioDevices = devices;\r\n\t},\r\n\tsetAreaCameras: (state, devices) => state.areaCameras = devices,\r\n\tsetAreaOutputs: (state, devices: DeviceControllerOutput[]) => state.areaOutputs = devices,\r\n\tsetDeviceControllerCameras(state, devices: any) {\r\n\t\tif (devices) {\r\n\t\t\tconst matrixDevices: { [deviceId: string]: number } = {};\r\n\t\t\tconst matrixContents = state.matrixContents;\r\n\r\n\t\t\tfor (const matrixIndex in matrixContents) {\r\n\t\t\t\tif (matrixContents[matrixIndex].camera !== undefined) {\r\n\t\t\t\t\tconst camera = matrixContents[matrixIndex].camera;\r\n\t\t\t\t\tif (camera != null) {\r\n\t\t\t\t\t\tmatrixDevices[camera.objectID.toString()] = parseInt(\r\n\t\t\t\t\t\t\tmatrixIndex,\r\n\t\t\t\t\t\t\t10\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdevices.forEach(item => {\r\n\t\t\t\tconst objectID = item.objectID ? item.objectID : item.objectId;\r\n\t\t\t\tif (objectID) {\r\n\t\t\t\t\tconst deviceID = objectID.toString();\r\n\r\n\t\t\t\t\tif (matrixDevices[deviceID] !== undefined) {\r\n\t\t\t\t\t\tVue.set(item, \"index\", matrixDevices[deviceID]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tVue.set(item, \"index\", null);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tstate.deviceControllerCameras = devices;\r\n\t},\r\n\tclearDeviceControllerCameras(state) {\r\n\t\tstate.deviceControllerCameras = [];\r\n\t},\r\n\tsetDeviceControllerClips(state, clips: any) {\r\n\t\tstate.deviceControllerClips = clips;\r\n\t},\r\n\tsetLayoutIndex(state, index: number) {\r\n\t\tstate.layoutIndex = index;\r\n\r\n\t\tconst width = state.layouts[index][0];\r\n\t\tconst height = state.layouts[index][1];\r\n\t\tconst maxIndex = width * height;\r\n\r\n\t\tstate.deviceControllerCameras.forEach(camera => {\r\n\t\t\tif (camera.index != null && camera.index > maxIndex) {\r\n\t\t\t\tcamera.index = null;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tstate.deviceControllerClips.forEach(clip => {\r\n\t\t\tif (clip.index != null && clip.index > maxIndex) {\r\n\t\t\t\tclip.index = null;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Remove any media matrix cells which will be clipped from view on resize\r\n\t\tlet deletedCell = false;\r\n\t\tfor (const cellIndex of Object.keys(state.matrixContents)) {\r\n\t\t\tif (parseInt(cellIndex, 10) > maxIndex) {\r\n\t\t\t\tVue.delete(state.matrixContents, cellIndex);\r\n\t\t\t\tdeletedCell = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Only update the last changed time if we've removed any cells\r\n\t\tif (deletedCell) {\r\n\t\t\tstate.mediaMatrixLastChanged = new Date().valueOf();\r\n\t\t}\r\n\t},\r\n\tsetAwaitingCamera(state, camera: any) {\r\n\t\tstate.awaitingCamera = camera;\r\n\t},\r\n\tsetAwaitingClip(state, clip: any) {\r\n\t\tstate.awaitingClip = clip;\r\n\t},\r\n\tsetMatrixContents(state, { index, contents }: any) {\r\n\t\tif (contents.camera) {\r\n\t\t\tVue.set(contents.camera, \"index\", index);\r\n\t\t} else if (contents.clip) {\r\n\t\t\tVue.set(contents.clip.clip, \"index\", index);\r\n\t\t}\r\n\r\n\t\tVue.set(state.matrixContents, index.toString(), contents);\r\n\t\tstate.mediaMatrixLastChanged = new Date().valueOf();\r\n\t},\r\n\tsetRequiresEventDetails(state, required: boolean) {\r\n\t\tstate.requiresEventDetails = required;\r\n\t},\r\n\tsetPushContents(state, { index, newContents }: { index: number, newContents: any }) {\r\n\t\tconst idx = index.toString();\r\n\t\tif (state.matrixPushContents) {\r\n\t\t\tconst currentContents = state.matrixPushContents[idx];\r\n\t\t\t// If the new contents are the same as the current, and also not empty, don't update the matrixPushContent\r\n\t\t\tif (isEqual(currentContents, newContents) && Object.keys(newContents).length !== 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tVue.set(state.matrixPushContents, idx, newContents);\r\n\t},\r\n\tsetMediaMatrixIsNew(state, isNew: boolean) {\r\n\t\tstate.mediaMatrixIsNew = isNew;\r\n\t\tstate.fetchingMatrix = false;\r\n\t},\r\n\tsetFetchingMatrix(state, fetchingMatrix: boolean) {\r\n\t\tstate.fetchingMatrix = fetchingMatrix;\r\n\t},\r\n\tclearMatrixContents(state) {\r\n\t\tstate.matrixContents = {};\r\n\t\tstate.matrixPushContents = {};\r\n\t},\r\n\thighlightCell(state, index: number) {\r\n\t\tstate.highlightCellIndex = index;\r\n\t},\r\n\tunhighlightCell(state) {\r\n\t\tstate.highlightCellIndex = null;\r\n\t},\r\n\tsetLinkRecord(state, record: any) {\r\n\t\tstate.linkRecord = record;\r\n\t},\r\n\tsetSaveLink(state, save) {\r\n\t\tstate.saveLink = save;\r\n\t},\r\n\tsetCameraLink(state, camera: any) {\r\n\t\t// @techdebt avoid api requests in mutations\r\n\t\tif (state.saveLink) {\r\n\t\t\tif (state.linkRecord.attachedCameras == null) {\r\n\t\t\t\tstate.linkRecord.attachedCameras = [];\r\n\t\t\t}\r\n\r\n\t\t\tconst existingLinks = state.linkRecord.attachedCameras.filter(\r\n\t\t\t\tlinkedCamera => linkedCamera.deviceID === camera.deviceId\r\n\t\t\t);\r\n\t\t\tif (existingLinks.length === 0) {\r\n\t\t\t\taxiosInstance\r\n\t\t\t\t\t.get(\r\n\t\t\t\t\t\t\"/Responses/Link/\" +\r\n\t\t\t\t\t\t\tstate.linkRecord.objectID +\r\n\t\t\t\t\t\t\t\"/\" +\r\n\t\t\t\t\t\t\tcamera.deviceId\r\n\t\t\t\t\t)\r\n\t\t\t\t\t.then(response => {\r\n\t\t\t\t\t\tif (response.data.deviceID) {\r\n\t\t\t\t\t\t\tstate.linkRecord.attachedCameras.push({\r\n\t\t\t\t\t\t\t\tdeviceID: response.data.deviceID,\r\n\t\t\t\t\t\t\t\ttitle: response.data.title\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tstate.linkRecord = null;\r\n\t\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tstate.linkRecord = null;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstate.linkRecord = null;\r\n\t\t}\r\n\t},\r\n\tsetWaitingForEvent(state, waiting: boolean) {\r\n\t\tstate.waitingForEvent = waiting;\r\n\t},\r\n\tsetSearchedCameras(state, payload: any) {\r\n\t\tlet mappedDevices = payload.devices.map(camera => {\r\n\t\t\treturn {\r\n\t\t\t\tobjectID: camera.deviceId,\r\n\t\t\t\titemType: 1,\r\n\t\t\t\ttitle: camera.title,\r\n\t\t\t\tdistance: camera.distance,\r\n\t\t\t\timperial: camera.imperial,\r\n\t\t\t\tareaTitle: camera.areaTitle,\r\n\t\t\t\tindex: null\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\t// If the state needs to be added to instead of overwritten, filter out duplicates keys for media matrix\r\n\t\tstate.searchedCameras = payload.reset ?\r\n\t\t\tmappedDevices :\r\n\t\t\tstate.searchedCameras.concat(mappedDevices.filter(({ objectID }) => !state.searchedCameras.find(c => c.objectID == objectID)));\r\n\t},\r\n\tclearSearchedCameras(state) {\r\n\t\tstate.searchedCameras = [];\r\n\t},\r\n\tsetAreaCameraCount(state, payload: number) {\r\n\t\tstate.areaCameraCount = payload;\r\n\t},\r\n\tsetSearchedCameraCount(state, payload: number) {\r\n\t\tstate.searchedCameraCount = payload;\r\n\t},\r\n\tsetSearchedGroupCameraCount(state, payload: number) {\r\n\t\tstate.searchedGroupCameraCount = payload;\r\n\t},\r\n\tsetSearchedOutputs(state, payload: any) {\r\n\t\tstate.searchedOutputs = payload.devices.map(output => {\r\n\t\t\treturn {\r\n\t\t\t\tobjectId: output.deviceId,\r\n\t\t\t\titemType: 3,\r\n\t\t\t\ttitle: output.title,\r\n\t\t\t\tdistance: output.distance,\r\n\t\t\t\timperial: output.imperial,\r\n\t\t\t\tareaTitle: output.areaTitle,\r\n\t\t\t\tcontrolRequest: output.controlRequest,\r\n\t\t\t\tcontrolReason: output.controlReason,\r\n\t\t\t\tcontrolError: output.controlError,\r\n\t\t\t\tisOutput: output.isOutput,\r\n\t\t\t\tcanPulse: output.canPulse,\r\n\t\t\t\tcanOnOff: output.canOnOff\r\n\t\t\t};\r\n\t\t});\r\n\t},\r\n\tupdateMediaMatrixContents(state, { contents, index }) {\r\n\t\tconst matrixContents = state.matrixContents;\r\n\r\n\t\tconst cellContents = matrixContents[index.toString()];\r\n\t\tif (cellContents != null) {\r\n\t\t\tif (cellContents.camera) {\r\n\t\t\t\tcellContents.camera.index = null;\r\n\t\t\t} else if (cellContents.clip) {\r\n\t\t\t\tcellContents.clip.clip.index = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst deviceControllerCameras = state.deviceControllerCameras;\r\n\t\tif (deviceControllerCameras != null) {\r\n\t\t\tdeviceControllerCameras.forEach(camera => {\r\n\t\t\t\tconst cameraObjectID = contents?.camera?.objectID ? contents?.camera?.objectID : contents?.camera?.objectId;\r\n\t\t\t\tif (camera.index === index) {\r\n\t\t\t\t\tcamera.index = null;\r\n\t\t\t\t}\r\n\t\t\t\tif (\r\n\t\t\t\t\tcontents.camera &&\r\n\t\t\t\t\tcamera.objectId === cameraObjectID\r\n\t\t\t\t) {\r\n\t\t\t\t\tcamera.index = index;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tconst deviceControllerClips = state.deviceControllerClips;\r\n\t\tif (deviceControllerClips != null) {\r\n\t\t\tdeviceControllerClips.forEach(clip => {\r\n\t\t\t\tif (clip.index === index) {\r\n\t\t\t\t\tclip.index = null;\r\n\t\t\t\t}\r\n\t\t\t\tif (\r\n\t\t\t\t\tcontents.clip &&\r\n\t\t\t\t\tcontents.clip.clip.UniqueFileIdentifier === clip.UniqueFileIdentifier\r\n\t\t\t\t) {\r\n\t\t\t\t\tclip.index = index;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tsetShownAuditClips(state, clips: string[]) {\r\n\t\tstate.shownAuditClips = clips;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { SiteMonitorCamerasState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: SiteMonitorCamerasState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const siteMonitorCameras: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { TasksState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { TasksService } from \"@/services/tasks.service\";\r\nimport TaskTypeIds from \"@/types/sv-data/enums/TaskTypeIds\";\r\nconst tasksService = new TasksService(); // @todo modify service to return instance not class\r\n\r\n// tslint:disable:no-shadowed-variable\r\nexport const getters: GetterTree = {\r\n\t// @refactor to be part of event state\r\n\tgetEventTasks: state => tasksService.responseToModel(state.Tasks),\r\n\tgetTasks: state => state.Tasks, // gets event-specific tasks\r\n\r\n\t// Tasks / Actions - related getters\r\n\tgetTaskLibrary: state => state.TaskLibrary,\r\n\tgetTaskTypes: state => state.TaskTypes,\r\n\tgetTaskLibraryByCategoryID: state => {\r\n\t\t// @todo refactor this entire getter\r\n\t\tconst tasksByCategoryID = {};\r\n\t\tlet categoryKey = null;\r\n\t\tstate.TaskLibrary.forEach((t: any) => {\r\n\t\t\tif (t.taskCategoryID === 0 || t.taskCategoryID === undefined) {\r\n\t\t\t\tcategoryKey = 0;\r\n\t\t\t} else {\r\n\t\t\t\tcategoryKey = t.taskCategoryID;\r\n\t\t\t}\r\n\t\t\tif (!tasksByCategoryID[categoryKey]) {\r\n\t\t\t\ttasksByCategoryID[categoryKey] = [];\r\n\t\t\t}\r\n\t\t\ttasksByCategoryID[categoryKey].push(t);\r\n\t\t});\r\n\t\treturn tasksByCategoryID;\r\n\t},\r\n\tgetSelectedActions: state => {\r\n\t\tconst selected: any[] = [];\r\n\r\n\t\tstate.TaskCategories.forEach((category: any) => {\r\n\t\t\tcategory.tasks.forEach((action: any) => {\r\n\t\t\t\tif (action.selected) {\r\n\t\t\t\t\tselected.push(action);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn selected;\r\n\t},\r\n\tgetTaskTypesByTitle: (state, getters) => {\r\n\t\tlet taskTypes: any = {};\r\n\t\tgetters.getEnabledActionTypes.forEach((type: any) => {\r\n\t\t\ttaskTypes[type.taskTypeID] = type.title;\r\n\t\t});\r\n\t\treturn taskTypes;\r\n\t},\r\n\r\n\t// Task / Action Categories - related getters\r\n\tgetTaskCategories: state => state.TaskCategories,\r\n\r\n\tgetScriptCategoryLinks: state => state.ScriptCategoryLinks,\r\n\r\n\t// Action Plan - related getters\r\n\tgetActionPlans: state => state.ActionPlans,\r\n\tgetOutstandingRequiredTasks: state => state.OutstandingRequiredTasks,\r\n\tgetOutstandingRequiredTaskCount: state => state.OutstandingRequiredTasks?.length,\r\n\ttoggleActionListModal: state => state.ToggleActionListModal,\r\n\tgetNotificationServers: state => state.NotificationServers,\r\n\tgetNotificationTemplates: state => state.NotificationTemplates,\r\n\tgetEditTriggerAction: state => state.EditTriggerAction,\r\n\tgetEnabledActionTypes: (state: TasksState, getters, rootState: RootState, rootGetters) => {\r\n\t\treturn state.TaskTypes.filter(task => {\r\n\t\t\tswitch (task.taskTypeID) {\r\n\t\t\t\tcase TaskTypeIds.MassNotification:\r\n\t\t\t\t\treturn rootGetters.getFeature([\"Actions\",\"MassNotification\"]);\r\n\t\t\t\tcase TaskTypeIds.Choices:\r\n\t\t\t\t\treturn rootGetters.getFeature([\"Actions\", \"Choices\"]);\r\n\t\t\t\tcase TaskTypeIds.CallContact:\r\n\t\t\t\t\treturn rootGetters.getFeature([\"Actions\",\"CallContacts\"]);\r\n\t\t\t\tcase TaskTypeIds.DownloadSitRep:\r\n\t\t\t\t\treturn rootGetters.getFeature([\"Actions\", \"SitRep\"]);\r\n\t\t\t\tcase TaskTypeIds.CCure:\r\n\t\t\t\t\treturn rootGetters.getFeature([\"Actions\", \"CCure\"]);\r\n\t\t\t\tcase TaskTypeIds.ShowAudit:\r\n\t\t\t\t\treturn rootGetters.getFeature([\"Actions\", \"ViewAudit\"])\r\n\t\t\t\tcase TaskTypeIds.DynamicDataList:\r\n\t\t\t\t\treturn rootGetters.getFeature([\"Actions\", \"DynamicDataList\"]);\r\n\t\t\t\tcase TaskTypeIds.ControlRelay:\r\n\t\t\t\t\treturn rootGetters.getFeature([\"Actions\", \"Control\"]);\r\n\t\t\t\tcase TaskTypeIds.RaiseToCaseManagement:\r\n\t\t\t\t\treturn rootGetters.getFeature([\"CaseManagement\", \"RaiseToCaseManagement\"]);\r\n\t\t\t\tcase TaskTypeIds.EventOutcome:\r\n\t\t\t\t\treturn rootGetters.getFeature([\"Actions\", \"EventOutcome\"]);\r\n\t\t\t\tcase TaskTypeIds.Basic:\r\n\t\t\t\tcase TaskTypeIds.Input:\r\n\t\t\t\tcase TaskTypeIds.YesNo:\r\n\t\t\t\tcase TaskTypeIds.URL:\r\n\t\t\t\t\treturn true;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\tgetCallContacts: state => state.CallContacts,\r\n\tgetDynamicDatalist: state => state.DynamicDataList,\r\n\tgetDynamicData: state => state.DynamicData,\r\n\thasEventOutcomeTask: (state: TasksState) => state.Tasks && state.Tasks.some(task => task.taskTypeID == TaskTypeIds.EventOutcome),\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport { TasksState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { CompleteTaskPayload } from \"@/services/api.service\";\r\nimport { TasksService } from \"@/services/tasks.service\";\r\nimport TaskCategory from \"@/models/task-category.model\";\r\nimport { CategoryReorderRequest } from \"@/store/tasks/types\";\r\n\r\nimport api from \"@/services/api.service\";\r\nimport Vue from \"vue\";\r\n\r\nconst tasksService = new TasksService();\r\n\r\nexport const actions: ActionTree = {\r\n\t// Fetch all actions for an event\r\n\tasync fetchEventTasks({ dispatch, commit, rootGetters }, payload: any) {\r\n\t\tconst allTasks = await tasksService.loadTasksForEvent(payload.eventId);\r\n\t\ttry {\r\n\t\t\tallTasks.forEach(element => {\r\n\t\t\t\telement.taskData = JSON.parse(element.taskData);\r\n\t\t\t});\r\n\t\t} catch (Ex) {\r\n\t\t\tconsole.log(\r\n\t\t\t\t\"Error occured fetching event\" + payload.eventId,\r\n\t\t\t\t+\"Is the response taskData an valid object?\" + Ex\r\n\t\t\t);\r\n\t\t}\r\n\t\tcommit(\"setOutstandingRequiredTasks\", allTasks.filter((task: any) => task.required && !task.completed));\r\n\r\n\t\t// @techdebt move to getter\r\n\t\tconst userShares = rootGetters[\"siteMonitor/userShares\"];\r\n\t\tif (userShares != null) {\r\n\t\t\tallTasks.forEach((task: any) => {\r\n\t\t\t\tif (task.assignedToEventUserID != null && userShares[task.assignedToEventUserID] !== undefined) {\r\n\t\t\t\t\ttask.assignedToEventUser = userShares[task.assignedToEventUserID];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// commit('setTasks', tasksService.responseToModel(allTasks));\r\n\t\tcommit(\"setTasks\", allTasks);\r\n\t},\r\n\r\n\tasync assignTask({ dispatch, commit, state, rootState }, payload: any) {\r\n\t\tawait tasksService.assignTaskToUser(payload);\r\n\r\n\t\t// @techdebt trigger `fetchEventTasks` action to load new data,\r\n\t\t// and remove line loading new data inside component method\r\n\t},\r\n\r\n\tasync assignAllTasks(context, payload: any) {\r\n\t\tawait tasksService.assignAllTasks(payload);\r\n\t},\r\n\r\n\t// all Actions (Action Library, used to configure Action Plans)\r\n\t// @note `Action` entity exists as `Task` in API\r\n\tasync fetchActionLibrary({ commit }) {\r\n\t\tconst allTasks = await tasksService.loadTasks();\r\n\t\ttry {\r\n\t\t\tallTasks.forEach((action: any) => {\r\n\t\t\t\taction.selected = false;\r\n\t\t\t\taction.taskData = JSON.parse(action.taskData);\r\n\t\t\t});\r\n\t\t} catch (Ex) {\r\n\t\t\tconsole.log(\"Error occured fetching action Library Is the response taskData an valid object?\" + Ex);\r\n\t\t}\r\n\r\n\t\tcommit(\"setTaskLibrary\", allTasks);\r\n\t},\r\n\r\n\tasync fetchTaskTypes({ commit }) {\r\n\t\tconst taskTypes = await tasksService.loadTaskTypes();\r\n\t\tcommit(\"setTaskTypes\", taskTypes);\r\n\t},\r\n\r\n\tasync fetchTaskCategories({ commit, getters }) {\r\n\t\tconst taskCategories = await tasksService.loadTaskCategories();\r\n\r\n\t\t// @todo refactor this entire getter\r\n\t\tconst tasksByCategoryID: { [index: string]: any[] } = {};\r\n\t\tlet categoryKey = null;\r\n\t\tgetters.getTaskLibrary.forEach((t: any) => {\r\n\t\t\tif (t.taskCategoryID === 0 || t.taskCategoryID === undefined) {\r\n\t\t\t\tcategoryKey = 0;\r\n\t\t\t} else {\r\n\t\t\t\tcategoryKey = t.taskCategoryID;\r\n\t\t\t}\r\n\t\t\tif (!tasksByCategoryID[categoryKey]) {\r\n\t\t\t\ttasksByCategoryID[categoryKey] = [];\r\n\t\t\t}\r\n\t\t\ttasksByCategoryID[categoryKey].push(t);\r\n\t\t});\r\n\r\n\t\ttaskCategories.forEach((category: any) => {\r\n\t\t\tcategory.selected = false;\r\n\t\t\tif (tasksByCategoryID[category.taskCategoryID]) {\r\n\t\t\t\tcategory.tasks = tasksByCategoryID[category.taskCategoryID];\r\n\t\t\t} else {\r\n\t\t\t\tcategory.tasks = [];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tcommit(\"setTaskCategories\", taskCategories);\r\n\t\t// @todo and load all associate tasks, too\r\n\t},\r\n\r\n\tasync fetchActionPlans({ commit }) {\r\n\t\tconst actionPlans = await tasksService.loadActionPlans();\r\n\t\tactionPlans.sort((a, b) => a.title.localeCompare(b.title));\r\n\r\n\t\tcommit(\"setActionPlans\", actionPlans);\r\n\t},\r\n\r\n\tasync createActionPlan({ dispatch }, payload: any) {\r\n\t\tconst response = await tasksService.createActionPlan(payload);\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchActionPlans\");\r\n\t\t}\r\n\r\n\t\treturn response.data;\r\n\t},\r\n\r\n\tasync updateActionPlan({ dispatch }, payload: any) {\r\n\t\tconst response = await tasksService.updateActionPlan(payload);\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchActionPlans\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync deleteActionPlan({ dispatch }, payload: any) {\r\n\t\tconst response = await tasksService.deleteActionPlan({\r\n\t\t\tscriptId: payload\r\n\t\t});\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchActionPlans\");\r\n\t\t\tdispatch(\"fetchActionLibrary\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync bulkAddActionsToPlan({ dispatch }, payload: any) {\r\n\t\tawait Promise.all([\r\n\t\t\tpayload.actionIDs.map(actionID => {\r\n\t\t\t\treturn tasksService.addActionToPlan({\r\n\t\t\t\t\tScriptID: payload.ScriptID,\r\n\t\t\t\t\tRequired: true,\r\n\t\t\t\t\tTaskID: actionID\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t]);\r\n\t\tdispatch(\"fetchActionLibrary\");\r\n\t},\r\n\r\n\tasync addActionToPlan({ dispatch }, payload: any) {\r\n\t\tconst response = await tasksService.addActionToPlan(payload);\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchActionLibrary\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync updateActionForPlan({ dispatch }, payload: any) {\r\n\t\tconst response = await tasksService.updateActionForPlan(payload);\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchActionLibrary\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync removeActionFromPlan({ dispatch }, payload: any) {\r\n\t\tconst response = await tasksService.removeActionFromPlan(payload);\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchActionLibrary\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync addTaskToEvent({ dispatch }, payload: any) {\r\n\t\t// @todo type\r\n\t\tconst response = await tasksService.saveEventTask(payload);\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchEventTasks\", { eventId: payload.eventId });\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync addTaskToLibrary({ dispatch }, newTask: any) {\r\n\t\tconst response = await tasksService.createTask(newTask);\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchActionLibrary\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync deleteTaskFromLibrary({ dispatch }, taskID: number) {\r\n\t\tconst response = await tasksService.deleteTask({\r\n\t\t\ttaskId: taskID\r\n\t\t});\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchActionLibrary\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync updateTask({ dispatch }, updatedTask: any) {\r\n\t\t// Stringify any task data we have\r\n\t\tif (updatedTask.taskData) {\r\n\t\t\tupdatedTask.taskData = JSON.stringify(updatedTask.taskData);\r\n\t\t}\r\n\r\n\t\tconst response = await tasksService.updateTask(updatedTask);\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchActionLibrary\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync completeTask({ dispatch }, payload: CompleteTaskPayload) {\r\n\t\tconst response = await tasksService.completeTask(payload);\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchEventTasks\", { eventId: payload.EventID });\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync createTaskCategory({ dispatch }, payload: TaskCategory) {\r\n\t\tconst response = await tasksService.saveTaskCategory(payload);\r\n\t\tif (response.status === 200) {\r\n\t\t\tawait dispatch(\"fetchTaskCategories\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync updateTaskCategory({ dispatch }, payload: TaskCategory) {\r\n\t\tconst response = await tasksService.updateTaskCategory(payload);\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchTaskCategories\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync deleteTaskCategory({ dispatch }, categoryID: number) {\r\n\t\tconst response = await tasksService.deleteTaskCategory({\r\n\t\t\ttaskCategoryId: categoryID\r\n\t\t});\r\n\t\tif (response.status === 200) {\r\n\t\t\tdispatch(\"fetchTaskCategories\");\r\n\t\t\tdispatch(\"fetchActionLibrary\");\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync assignUserToTaskCategory({ dispatch }, payload: any) {\r\n\t\tconst { status } = await tasksService.assignUserToTaskCategory(payload);\r\n\t\tif (status === 200) {\r\n\t\t\tdispatch(\"fetchEventTasks\", { eventId: payload.EventID });\r\n\t\t} else {\r\n\t\t\t// @todo error handling\r\n\t\t}\r\n\t},\r\n\r\n\tasync fetchNotificationServers({ commit }) {\r\n\t\tconst { data } = await tasksService.fetchNotificationServers();\r\n\t\tcommit(\"setNotificationServers\", data);\r\n\t},\r\n\r\n\tasync fetchNotificationTemplates({ commit }, serverId: number) {\r\n\t\tconst { data } = await tasksService.fetchNotificationTemplates(serverId);\r\n\t\tcommit(\"setNotificationTemplates\", data);\r\n\t},\r\n\r\n\tasync fetchTemplateDetails({ commit }, templateId: number) {\r\n\t\tconst { data } = await tasksService.fetchTemplateDetails(templateId);\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync loadEditTriggerAction({ commit }, action) {\r\n\t\tVue.set(action, \"trigger\", await api.triggeredTasks(action.taskID));\r\n\t\tcommit(\"setEditTriggerAction\", action);\r\n\t},\r\n\r\n\t/**\r\n\t * Updates the order of a Task Library item within an Action Plan (script).\r\n\t * @param param0 vuex methods.\r\n\t * @param payload the payload containing our task, script, category and new ordering.\r\n\t */\r\n\tasync updateActionOrderInPlan({ dispatch, commit }, payload: any) {\r\n\t\t// Perform the re-order in the front end so the animation is nice & smooth\r\n\t\tcommit(\"setActionOrder\", payload);\r\n\r\n\t\ttry {\r\n\t\t\t// Update the ordering in the back-end\r\n\t\t\tconst { data } = await api.updateActionOrderInPlan(payload);\r\n\r\n\t\t\t// The data returned will be the set of tasks that we need to update in our store\r\n\t\t\tcommit(\"setUpdatedTasks\", data);\r\n\t\t} catch (err) {\r\n\t\t\t// If an error occurs when we're re-ordering the action plan,\r\n\t\t\t// we need to revert our changes, so re-set our task library\r\n\t\t\tdispatch(\"fetchActionLibrary\");\r\n\r\n\t\t\t// Raise the error so we can give some feedback\r\n\t\t\tconsole.error(`Unable to re-order action plan: ${err}`);\r\n\t\t\tthrow err;\r\n\t\t}\r\n\t},\r\n\tasync fetchCallContacts({ commit }, payload: any) {\r\n\t\tlet callContacts;\r\n\r\n\t\tif (payload.CallType === \"Contact Role\") {\r\n\t\t\tif(!payload?.GroupId)\r\n\t\t\t{\r\n\t\t\t\tcallContacts = [];\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tcallContacts = await tasksService.getContactsForRole(payload.value.contactRoleId, payload.GroupId);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tcallContacts = (await tasksService.fetchCallContacts(payload)).data;\r\n\t\t}\r\n\r\n\t\tcommit(\"setCallContacts\", callContacts);\r\n\t},\r\n\tasync fetchDynamicDatalist({ commit }) {\r\n\t\tconst { data } = await api.fetchDynamicDataList();\r\n\t\tcommit(\"setDynamicDataList\", data);\r\n\t},\r\n\tasync fetchDynamicData({ commit }, payload: any) {\r\n\t\tconst { data } = await api.fetchDynamicData(payload);\r\n\t\tcommit(\"setDynamicData\", data);\r\n\t},\r\n\tasync getScriptCategoryLinks({ commit }) {\r\n\t\tconst data = await tasksService.getScriptCategoryLinks();\r\n\t\tcommit(\"setScriptCategories\", data)\r\n\t},\r\n\tasync updateCategoryOrderInScript({ dispatch, commit }, payload: CategoryReorderRequest){\r\n\t\ttry {\r\n\t\t\tconst data = await tasksService.updateCategoryOrderInScript(payload);\r\n\r\n\t\t\tcommit(\"setUpdatedTaskCategories\", data);\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.error(\"Unable to re-order action plan: ${ex}\");\r\n\r\n\t\t\tdispatch(\"getScriptCategoryLinks\");\r\n\r\n\t\t\tthrow ex;\r\n\t\t}\r\n\t}\r\n};\r\n","import { TasksState } from \"./types\";\r\n\r\nexport function getDefaultState(): TasksState {\r\n return {\r\n Tasks: [],\r\n TaskTypes: [],\r\n TaskCategories: [],\r\n TaskLibrary: [],\r\n ActionPlans: [],\r\n OutstandingRequiredTasks: [],\r\n ToggleActionListModal: false,\r\n NotificationServers: [],\r\n NotificationTemplates: [],\r\n EditTriggerAction: null,\r\n CallContacts: [],\r\n DynamicDataList: [],\r\n DynamicData: [],\r\n\t\tScriptCategoryLinks: []\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport Vue from \"vue\";\r\nimport { TasksState, TaskGroup, ActionPlanTask, UserContactDetails, Task } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { ScriptCategoryLink } from \"@/store/tasks/types\";\r\nimport { orderBy } from \"lodash\";\r\n\r\nconst newAction = {\r\n\teventID: \"\",\r\n\ttaskCategoryTitle: \"\",\r\n\ttaskText: \"\",\r\n\tcompleted: false\r\n};\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetActionPlans(state, data) {\r\n\t\tstate.ActionPlans = data;\r\n\t},\r\n\r\n\tsetTasks(state, data: any[]) {\r\n\t\tstate.Tasks = data;\r\n\r\n\t\t// @todo code below is prob related to this.updateEventTasks(); in EventTaskContainer component\r\n\t\t// disabling for now since it's broken: when navigating between different events old tasks persist,\r\n\t\t// new ones load but don't get written to store\r\n\t\t// const tasksGroups: any = {};\r\n\t\t// const tasksGroupsByID: any = {};\r\n\t\t// data.forEach((taskGroup: any) => {\r\n\t\t// const tasksByID: any = {};\r\n\t\t// taskGroup.tasks.forEach((task: any) => {\r\n\t\t// tasksByID[task.eventTaskID] = task;\r\n\t\t// });\r\n\t\t// tasksGroupsByID[taskGroup.title] = tasksByID;\r\n\t\t// tasksGroups[taskGroup.title] = taskGroup;\r\n\t\t// });\r\n\r\n\t\t// state.Tasks.forEach((taskGroup: any) => {\r\n\t\t// const updatedTaskGroup = tasksGroupsByID[taskGroup.title];\r\n\t\t// if (updatedTaskGroup != null) {\r\n\t\t// taskGroup.tasks.forEach((task: any) => {\r\n\t\t// const updatedTask = updatedTaskGroup[task.eventTaskID];\r\n\t\t// if (updatedTask != null) {\r\n\t\t// task.completed = updatedTask.completed;\r\n\t\t// task.assignedToEventUser = updatedTask.assignedToEventUser;\r\n\t\t// }\r\n\t\t// delete updatedTaskGroup[task.eventTaskID];\r\n\t\t// });\r\n\r\n\t\t// // tslint:disable-next-line:prefer-const\r\n\t\t// for (let newTaskID in updatedTaskGroup) {\r\n\t\t// taskGroup.tasks.push(updatedTaskGroup[newTaskID]);\r\n\t\t// }\r\n\r\n\t\t// delete tasksGroupsByID[taskGroup.title];\r\n\t\t// }\r\n\t\t// });\r\n\r\n\t\t// tslint:disable-next-line:prefer-const\r\n\t\t// for (let newTaskCategory in tasksGroupsByID) {\r\n\t\t// // console.log('New category: ' + newTaskCategory);\r\n\t\t// state.Tasks.push(tasksGroups[newTaskCategory]);\r\n\t\t// }\r\n\t},\r\n\r\n\tsetTaskLibrary(state, data: any) {\r\n\t\tstate.TaskLibrary = data;\r\n\t},\r\n\r\n\tsetTaskTypes(state, data: any) {\r\n\t\tstate.TaskTypes = data;\r\n\t},\r\n\r\n\tsetTaskCategories(state, data: any) {\r\n\t\tstate.TaskCategories = data;\r\n\t},\r\n\r\n\taddNewTaskToGroup(state, taskGroup: TaskGroup) {\r\n\t\t// @techdebt replace type any with type TaskGroup after tasksService.NEW_TASK refactoring\r\n\t\tstate.Tasks = state.Tasks.map((group: any) => {\r\n\t\t\tif (group.title === taskGroup.title) {\r\n\t\t\t\tgroup.tasks.push({\r\n\t\t\t\t\t...newAction,\r\n\t\t\t\t\t...{\r\n\t\t\t\t\t\tisNew: true,\r\n\t\t\t\t\t\tisMine: true,\r\n\t\t\t\t\t\ttaskCategoryTitle: taskGroup.title\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn group;\r\n\t\t});\r\n\t},\r\n\r\n\taddNewTaskToNewGroup(state) {\r\n\t\tstate.Tasks = [\r\n\t\t\t...state.Tasks,\r\n\t\t\t{\r\n\t\t\t\ttitle: \"\",\r\n\t\t\t\tisNew: true,\r\n\t\t\t\ttasks: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\t...newAction,\r\n\t\t\t\t\t\t...{\r\n\t\t\t\t\t\t\tisNew: true,\r\n\t\t\t\t\t\t\tisMine: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t} as any\r\n\t\t];\r\n\t},\r\n\r\n\t/* cancelAddingTask(state, taskGroup: TaskGroup) {\r\n\tconst groupIndex = state.Tasks.indexOf(taskGroup);\r\n\tif (groupIndex > -1) {\r\n\t state.Tasks[groupIndex].tasks = state.Tasks[groupIndex].tasks.filter(\r\n\t\t(task: any) => !task.isNew\r\n\t );\r\n\t}\r\n },\r\n\r\n cancelAddingGroup(state, taskGroup: TaskGroup) {\r\n\tconst index = state.Tasks.indexOf(taskGroup);\r\n\tif (index > -1) {\r\n\t state.Tasks.splice(index, 1);\r\n\t}\r\n }, */\r\n\r\n\tsetOutstandingRequiredTasks(state: TasksState, outstandingTasks: Task[]) {\r\n\t\tstate.OutstandingRequiredTasks = outstandingTasks;\r\n\t},\r\n\r\n\tupdateTaskAssignedToEventUser(state, userShares) {\r\n\t\t(state.Tasks || []).forEach(task => {\r\n\t\t\tif (\r\n\t\t\t\ttask.assignedToEventUserID != null &&\r\n\t\t\t\tuserShares[task.assignedToEventUserID]\r\n\t\t\t) {\r\n\t\t\t\tVue.set(\r\n\t\t\t\t\ttask,\r\n\t\t\t\t\t\"assignedToEventUser\",\r\n\t\t\t\t\tuserShares[task.assignedToEventUserID]\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\ttoggleActionListModal(state) {\r\n\t\tstate.ToggleActionListModal = !state.ToggleActionListModal;\r\n\t},\r\n\r\n\tsetNotificationServers(state, data: any[]) {\r\n\t\tstate.NotificationServers = data;\r\n\t},\r\n\r\n\tsetNotificationTemplates(state, data: any[]) {\r\n\t\tstate.NotificationTemplates = data;\r\n\t},\r\n\r\n\tsetEditTriggerAction(state, action) {\r\n\t\tstate.EditTriggerAction = action;\r\n\t},\r\n\r\n\t/**\r\n\t * This method will alter the ordering of tasks for a given script and category\r\n\t * in the front-end, without having to go back to the data service to do a full-reload.\r\n\t *\r\n\t * Effectively performs the same operation as we have going on in the Data Service when the\r\n\t * user alters the order of an item, but does it locally so we can avoid items jumping between\r\n\t * places while the POST is awaited.\r\n\t *\r\n\t * @param state the Vuex store state.\r\n\t * @param param1 the re-order payload.\r\n\t */\r\n\tsetActionOrder(state, { taskCategoryId, taskId, scriptId, newOrder }) {\r\n\t\t// Get all the tasks associated with this taskCategory and script,\r\n\t\t// and hold on to the original index of that task within the TaskLibrary array\r\n\t\t// so we can update it later.\r\n\t\tlet relevantTasks: {\r\n\t\t\ttask: ActionPlanTask;\r\n\t\t\tlibraryIndex: number;\r\n\t\t}[] = state.TaskLibrary.map((task, libraryIndex) => ({\r\n\t\t\ttask,\r\n\t\t\tlibraryIndex\r\n\t\t})).filter(({ task, libraryIndex }) => {\r\n\t\t\t// Get the script ID's this task is associated with\r\n\t\t\tconst associatedScripts = Object.keys(task.scripts);\r\n\r\n\t\t\t// Only include this task item if it is part of the script,\r\n\t\t\t// and matches the category we're working on.\r\n\t\t\treturn (\r\n\t\t\t\ttask.taskCategoryID === taskCategoryId &&\r\n\t\t\t\tassociatedScripts.includes(scriptId.toString())\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\t// Sort the array by the scripts 'order' property\r\n\t\trelevantTasks = orderBy(\r\n\t\t\trelevantTasks,\r\n\t\t\tlibraryItem => libraryItem.task.scripts[scriptId].order,\r\n\t\t\t[\"asc\"]\r\n\t\t);\r\n\r\n\t\t// Remove the task from it's old location in the array, and hold on to a copy of it\r\n\t\tconst oldIndex = relevantTasks.findIndex(\r\n\t\t\tlibraryItem => libraryItem.task.taskID === taskId\r\n\t\t);\r\n\t\tconst taskToReinsert = relevantTasks[oldIndex];\r\n\t\trelevantTasks.splice(oldIndex, 1);\r\n\r\n\t\t// Re-add the task at it's new position\r\n\t\t// (scripts are 1-indexed, so we need to subtract 1 to get it's place in the array)\r\n\t\trelevantTasks.splice(newOrder - 1, 0, taskToReinsert);\r\n\r\n\t\t// Create a new list of tasks, where each task has been assigned it's new order\r\n\t\tconst newTasks = relevantTasks.map((task, scriptIndex) => {\r\n\t\t\t// Assign the new order\r\n\t\t\ttask.task.scripts[scriptId].order = scriptIndex + 1;\r\n\t\t\treturn task;\r\n\t\t});\r\n\r\n\t\t// Update our task library with the modified task objects\r\n\t\trelevantTasks.forEach(({ task, libraryIndex }) => {\r\n\t\t\tVue.set(state.TaskLibrary, libraryIndex, task);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Updates a set of tasks within the TaskLibrary. Only touches the tasks specified in the parameters.\r\n\t * @param state the Vuex store state.\r\n\t * @param tasksToUpdate the array of Tasks to be updated.\r\n\t */\r\n\tsetUpdatedTasks(state, tasksToUpdate: ActionPlanTask[]) {\r\n\t\ttasksToUpdate.forEach(task => {\r\n\t\t\tconst indexInLibrary = state.TaskLibrary.findIndex(\r\n\t\t\t\tlibTask => libTask.taskID === task.taskID\r\n\t\t\t);\r\n\r\n\t\t\t// Parse any task data that this task might have\r\n\t\t\tif (task.taskData) {\r\n\t\t\t\ttask.taskData = JSON.parse(task.taskData);\r\n\t\t\t}\r\n\r\n\t\t\tVue.set(state.TaskLibrary, indexInLibrary, task);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Sets the selected state of a Task Category within the store.\r\n\t * @param state the Vuex store state.\r\n\t * @param param1 the category ID and the new selected state.\r\n\t */\r\n\tsetCategorySelected(state, { categoryId, selected }) {\r\n\t\tlet category = state.TaskCategories.find(\r\n\t\t\tcat => cat.taskCategoryID === categoryId\r\n\t\t);\r\n\r\n\t\tcategory.selected = selected;\r\n\t},\r\n\r\n\t/**\r\n\t * Sets the selected state of a Task Action within the store.\r\n\t * @param state the Vuex store state.\r\n\t * @param param1 the category ID, task ID, and the new selected state.\r\n\t */\r\n\tsetActionSelected(state, { categoryId, taskId, selected }) {\r\n\t\tlet task = state.TaskLibrary.find(\r\n\t\t\tt => t.taskCategoryID === categoryId && t.taskID === taskId\r\n\t\t);\r\n\r\n\t\ttask.selected = selected;\r\n\t},\r\n\r\n\t/**\r\n\t * Resets all the selected states of the categories/actions in the store.\r\n\t * @param state the Vuex store state.\r\n\t */\r\n\tresetTasksSelected(state) {\r\n\t\tstate.TaskCategories.forEach(category => {\r\n\t\t\tcategory.selected = false;\r\n\t\t\tstate.TaskLibrary.filter(\r\n\t\t\t\ttask => task.taskCategoryID === category.taskCategoryID\r\n\t\t\t).forEach(task => (task.selected = false));\r\n\t\t});\r\n\t},\r\n\r\n\tsetCallContacts(state, data: UserContactDetails[]) {\r\n\t\tstate.CallContacts = data;\r\n\t},\r\n\tsetDynamicDataList(state, data: any[]) {\r\n\t\tstate.DynamicDataList = data;\r\n\t},\r\n\tsetDynamicData(state, data : any[]) {\r\n\t\tstate.DynamicData = data;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n\tsetScriptCategories(state, data: ScriptCategoryLink[]) {\r\n\t\tstate.ScriptCategoryLinks = data;\r\n\t},\r\n\tsetUpdatedTaskCategories(state, taskCategoryToUpdate: ScriptCategoryLink[]){\r\n\t\ttaskCategoryToUpdate.forEach(taskCategory => {\r\n\t\t\tconst indexInLibrary = state.ScriptCategoryLinks.findIndex(\r\n\t\t\t\tlibTaskCat =>libTaskCat.scriptId === taskCategory.scriptId &&\r\n\t\t\t\tlibTaskCat.taskCategoryId === taskCategory.taskCategoryId\r\n\t\t\t);\r\n\r\n\t\t\tVue.set(state.ScriptCategoryLinks, indexInLibrary, taskCategory);\r\n\t\t})\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { TasksState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: TasksState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const tasks: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { SessionsState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetSession: state => (resourceId: number) => {\r\n\t\treturn typeof state.sessions[resourceId] === \"undefined\"\r\n\t\t\t? null\r\n\t\t\t: state.sessions[resourceId];\r\n\t}\r\n};\r\n","\r\nimport api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { SessionsState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync updateSession({ commit, rootState }, { resourceId, eventId }: any) {\r\n\t\treturn new Promise(function(resolve, reject) {\r\n\t\t\tif (resourceId === undefined) {\r\n\t\t\t\tconsole.log(\"Undefined resourceId\");\r\n\t\t\t\tresolve(404);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tapi.sessionGet(resourceId, eventId, rootState.activeRegion.regionUrl).then(\r\n\t\t\t\tsessionResponse => {\r\n\t\t\t\t\tif (sessionResponse.status === 200) {\r\n\t\t\t\t\t\tcommit(\"setResourceSessionId\", {\r\n\t\t\t\t\t\t\tresourceId,\r\n\t\t\t\t\t\t\tsessionId: sessionResponse.data.authSessionID\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcommit(\"setResourceStatus\", sessionResponse.status);\r\n\t\t\t\t\tresolve(sessionResponse.status);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t},\r\n\tclearSessions({ commit }) {\r\n\t\tcommit(\"clearResourceSessionId\", 2);\r\n\t\tcommit(\"clearResourceSessionId\", 3);\r\n\t}\r\n};\r\n","import { SessionsState } from \"./types\";\r\n\r\nexport function getDefaultState(): SessionsState {\r\n return {\r\n sessions: { 2: \"\", 3: \"\" },\r\n requestStatus: 0\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { SessionsState } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetResourceSessionId(state, { resourceId, sessionId }: any) {\r\n\t\tstate.sessions[resourceId.toString()] = sessionId;\r\n\t},\r\n\tclearResourceSessionId(state, resourceId: number) {\r\n\t\tdelete state.sessions[resourceId.toString()];\r\n\t},\r\n\tsetResourceStatus(state, status: number) {\r\n\t\tstate.requestStatus = status;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { SessionsState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: SessionsState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const sessions: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { RootState } from \"./types\";\r\n\r\nexport const postLoginAppBootstrap = async (store: any) => {\r\n\tlet isPendingInitialAppData = false;\r\n\tstore.subscribe(async (mutation: any, state: RootState) => {\r\n\t\tif (\r\n\t\t\tmutation.type === \"login\" ||\r\n\t\t\t(!state.appInitialised && !isPendingInitialAppData)\r\n\t\t) {\r\n\t\t\tisPendingInitialAppData = true;\r\n\t\t\tawait store.dispatch(\"initApp\");\r\n\t\t}\r\n\t});\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { MapLayerItemTypeIds, MapLayersState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetSortedElevations: state => state.mapData.elevations.slice().sort((a, b) => a.elevationValue - b.elevationValue),\r\n\tgetMapLayerItemTypes(state) {\r\n\t\t// For now only exclude Guard types as these are still needed to be enabled in the db for the guard feature until its fully removed\r\n\t\tconst excludeTypes = [MapLayerItemTypeIds.Guard];\r\n\t\treturn state.mapLayerItemTypes.filter(x => !excludeTypes.includes(x.mapLayerItemTypeId));\r\n\t},\r\n\ttriggerDefaultView(state): boolean {\r\n\t\treturn (state.computeDefaultView.assets === true && state.computeDefaultView.areas === true);\r\n\t}\r\n};\r\n","import api from \"../../services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { MapLayerItemType, MapLayersState, MapBounds } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadMapDataByBounds({ commit }, { mapBounds, cancelToken }): Promise {\r\n\t\tconst mapData = await api.getMapDataInBounds(mapBounds, cancelToken);\r\n\t\tcommit(\"setMapData\", mapData);\r\n\t},\r\n\r\n\tasync loadMapLayersItemTypes({ commit }) {\r\n\t\tlet mapItemTypes: MapLayerItemType[] = await api.getMapItemTypes();\r\n\r\n\t\tif (mapItemTypes) {\r\n\t\t\tmapItemTypes.forEach(mapItemType => {\r\n\t\t\t\tmapItemType.visible = !mapItemType.hideByDefault;\r\n\t\t\t});\r\n\r\n\t\t\tconst assetIndex = mapItemTypes.findIndex(x => x.title === \"Asset\");\r\n\t\t\tif (assetIndex > -1)\r\n\t\t\t{\r\n\t\t\t\tlet assetType = mapItemTypes[assetIndex];\r\n\t\t\t\tassetType.mapLayerItemTypeId = -1;\r\n\t\t\t\tmapItemTypes[assetIndex] = assetType;\r\n\t\t\t}\r\n\r\n\t\t\tcommit(\"setMapLayersItemTypes\", mapItemTypes);\r\n\t\t}\r\n\t},\r\n};\r\n","import { MapLayersState } from \"./types\";\r\nimport {\r\n MarkerIcons\r\n} from \"@sureview/v2-mapping-saas\";\r\n\r\nexport function getDefaultState(): MapLayersState {\r\n return {\r\n mapData: {\r\n \tlayers: [],\r\n\t\t\titems: [],\r\n elevations: [],\r\n\t\t\tareas: []\r\n },\r\n defaultMapBounds: {\r\n \tnorth: -90,\r\n\t\t\tsouth: 90,\r\n\t\t\teast: -180,\r\n \twest: 180\r\n\t\t},\r\n mapSelectedElevation: 1,\r\n mapItemIcons: MarkerIcons,\r\n mapLayerItemTypes: [],\r\n\t\tadvancedFilters: {\r\n\t\t\tassetTypes: [],\r\n\t\t\tasset: {\r\n\t\t\t\tfilterType: \"Basic\",\r\n\t\t\t\tfilterCondition: true,\r\n\t\t\t\tmapLayerItemTypeId: null\r\n\t\t\t},\r\n\t\t\ttrackedAsset: {\r\n\t\t\t\tfilterType: \"Basic\",\r\n\t\t\t\tfilterCondition: true,\r\n\t\t\t\tmapLayerItemTypeId: null\r\n\t\t\t},\r\n\t\t\tuser: {\r\n\t\t\t\tfilterType: \"Basic\",\r\n\t\t\t\tfilterCondition: true,\r\n\t\t\t\tmapLayerItemTypeId: null\r\n\t\t\t},\r\n\t\t\talarm: {\r\n\t\t\t\tfilterType: \"Basic\",\r\n\t\t\t\tfilterCondition: true,\r\n\t\t\t\tmapLayerItemTypeId: null\r\n\t\t\t},\r\n\t\t\trelay: {\r\n\t\t\t\tfilterType: \"Basic\",\r\n\t\t\t\tfilterCondition: true,\r\n\t\t\t\tmapLayerItemTypeId: null\r\n\t\t\t},\r\n\t\t\toutput: {\r\n\t\t\t\tfilterType: \"Basic\",\r\n\t\t\t\tfilterCondition: true,\r\n\t\t\t\tmapLayerItemTypeId: null\r\n\t\t\t},\r\n\t\t\taudio: {\r\n\t\t\t\tfilterType: \"Basic\",\r\n\t\t\t\tfilterCondition: true,\r\n\t\t\t\tmapLayerItemTypeId: null\r\n\t\t\t},\r\n\t\t\tcamera: {\r\n\t\t\t\tfilterType: \"Basic\",\r\n\t\t\t\tfilterCondition: true,\r\n\t\t\t\tmapLayerItemTypeId: null\r\n\t\t\t},\r\n\t\t\tarea: {\r\n\t\t\t\tfilterType: \"Basic\",\r\n\t\t\t\tfilterCondition: true,\r\n\t\t\t\tmapLayerItemTypeId: null\r\n\t\t\t},\r\n\t\t\tregions: {\r\n\t\t\t\tfilterType: \"Basic\",\r\n\t\t\t\tfilterCondition: true,\r\n\t\t\t\tmapLayerItemTypeId: null\r\n\t\t\t},\r\n\t\t},\r\n\t\tfilterChanged: null,\r\n\t\tdefaultViewForUser: null,\r\n\t\tcomputeDefaultView: {\r\n\t\t\tassets: false,\r\n\t\t\tareas: false\r\n\t\t}\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { MapLayersState, MapData, MapBounds, AdvancedFilters, DefaultViewTriggers } from \"./types\";\r\nimport Vue from \"vue\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetMapData(state, mapData: MapData) {\r\n\t\tstate.mapData = mapData;\r\n\t},\r\n\tsetDefaultMapBounds(state, defaultMapBounds: MapBounds) {\r\n\t\tstate.defaultMapBounds = defaultMapBounds;\r\n\t},\r\n\tsetSelectedMapElevation(state, elevation: number) {\r\n\t\tstate.mapSelectedElevation = elevation;\r\n\t},\r\n\tsetMapLayersItemTypes(state, data) {\r\n\t\tstate.mapLayerItemTypes = data;\r\n\t},\r\n\tsetMapLayersItemType(state, { id, data }) {\r\n\t\tlet idx = state.mapLayerItemTypes.findIndex(m => m.mapLayerItemTypeId === id);\r\n\t\tVue.set(state.mapLayerItemTypes, idx, data);\r\n\t},\r\n\tsetAdvancedFilters(state, filters: AdvancedFilters) {\r\n\t\tstate.advancedFilters = filters;\r\n\t},\r\n\tsetFilterChanged(state, filter: number) {\r\n\t\tstate.filterChanged = filter;\r\n\t},\r\n\tsetComputeDefaultView(state, defaultView: DefaultViewTriggers) {\r\n\t\tstate.computeDefaultView = defaultView;\r\n\t},\r\n\tsetAssetComputeDefaultView(state, compute: boolean) {\r\n\t\tstate.computeDefaultView.assets = compute;\r\n\t},\r\n\tsetAreaComputeDefaultView(state, compute: boolean) {\r\n\t\tstate.computeDefaultView.areas = compute;\r\n\t},\r\n\textendDefaultViewBounds(state, bounds: google.maps.LatLngLiteral) {\r\n\t\tif (!state.defaultViewForUser){\r\n\t\t\tstate.defaultViewForUser = new google.maps.LatLngBounds();\r\n\t\t}\r\n\t\tstate.defaultViewForUser.extend(bounds);\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { MapLayersState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: MapLayersState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const mapLayers: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { UserManagementState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\n\r\nexport const userManagementGetters: GetterTree = {\r\n\tgetPermissions: state => state.Permissions,\r\n\tgetUserRoles: state => state.UserRoles,\r\n\tgetUserGroupById: state => (id: number) => state.userGroups.find(ur => ur.userGroupId === id),\r\n\tgetUserGroupTitle: state => (id: number) => {\r\n\t\treturn state.userGroupDictionary[id];\r\n\t},\r\n\tgetUserRoleTitle: state => (id: number) => {\r\n\t\treturn state.userRoleDictionary[id];\r\n\t}\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { UserManagementState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\n\r\nexport const actions: ActionTree = {\r\n\r\n\tasync getUserRoles({ commit }) {\r\n\t\tconst userRoles = await api.getUserRoles();\r\n\t\tcommit(\"setUserRoles\", userRoles);\r\n\t\treturn userRoles;\r\n\t},\r\n\r\n\tasync loadPermissions({ commit }) {\r\n\t\tcommit(\"setPermissions\", await api.permissionsGet());\r\n\t},\r\n\r\n\tasync loadUserGroups({ commit }) {\r\n\t\tconst userGroups = await api.getUserGroup();\r\n\t\tcommit(\"setUserGroups\", userGroups);\r\n\t},\r\n\r\n\tasync fetchUserGroupDictionary({ commit }) {\r\n\t\tconst userGroupDictionary = await api.getUserGroupDictionary();\r\n\t\tcommit(\"setUserGroupDictionary\", userGroupDictionary);\r\n\t},\r\n\r\n\tasync fetchUserRoleDictionary({ commit }) {\r\n\t\tconst userRoleDictionary = await api.getUserRoleDictionary();\r\n\t\tcommit(\"setUserRoleDictionary\", userRoleDictionary);\r\n\t},\r\n\r\n\tasync fetchPermissionsState({ dispatch }) {\r\n\t\tdispatch(\"loadPermissions\");\r\n\t\tdispatch(\"loadUserGroups\");\r\n\t\tdispatch(\"fetchUserGroupDictionary\");\r\n\t\tdispatch(\"fetchUserRoleDictionary\");\r\n\t}\r\n\r\n};\r\n","import { UserManagementState } from \"./types\";\r\n\r\nexport function getDefaultState(): UserManagementState {\r\n return {\r\n Permissions: [],\r\n UserRoles: [],\r\n\t\tuserGroups: [],\r\n\t\tuserGroupDictionary: {},\r\n\t\tuserRoleDictionary: {}\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { UserManagementState, UserRole, Permission, UserGroup } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetPermissions: (state, permissions: Permission[]) => (state.Permissions = permissions),\r\n\tsetUserRoles: (state, userRoles: UserRole[]) => (state.UserRoles = userRoles),\r\n\tsetUserGroups: (state, userGroups: UserGroup[]) => state.userGroups = userGroups,\r\n\tsetUserGroupDictionary: (state, userGroupDictionary) => state.userGroupDictionary = userGroupDictionary,\r\n\tsetUserRoleDictionary: (state, userRoleDictionary) => state.userRoleDictionary = userRoleDictionary,\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { userManagementGetters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { UserManagementState, UserDetails } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: UserManagementState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const userManagement: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters: userManagementGetters,\r\n\tactions,\r\n\tmutations\r\n};","import { axiosJsonInstance, axiosInstance } from \"@/axios.instance\";\r\nimport { DeviceNode } from \"@/types/sv-data/devices/DeviceNode\";\r\nimport { AxiosInstance, AxiosResponse, CancelTokenSource } from \"axios\";\r\nimport { GetDevicesByTypeParams, DeviceTypeCounts, DeviceDetails, ServerConfiguration, ServerConfigurationResponse } from \"@/store/devices/types\";\r\n\r\nclass DevicesApi {\r\n\tprivate axios: AxiosInstance;\r\n\tprivate axiosJson: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.axios = axiosInstance;\r\n\t\tthis.axiosJson = axiosJsonInstance;\r\n\t}\r\n\r\n\tpublic async deviceSearch(\r\n\t\tdeviceTypeId: number,\r\n\t\tquery: string,\r\n\t\tcancelToken: any,\r\n\t\tsearchTermsInAnyOrder: boolean = false\r\n\t): Promise {\r\n\t\treturn this.axios.get(`/AdvancedDevices/search/${deviceTypeId}`, {\r\n\t\t\tparams: {\r\n\t\t\t\tsearch: query,\r\n\t\t\t\tsearchTermsInAnyOrder: searchTermsInAnyOrder\r\n\t\t\t},\r\n\t\t\tcancelToken\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async getDevicesByTitle(deviceTitles: string[]): Promise> {\r\n\t\treturn await this.axiosJson.post(\"/AdvancedDevices/GetDevicesByTitle\", deviceTitles);\r\n\t}\r\n\r\n\tpublic async getDeviceTypeCounts(serverId: number): Promise> {\r\n\t\tlet endpoint = \"/AdvancedDevices/TypeCounts\";\r\n\r\n\t\tif (serverId) {\r\n\t\t\tendpoint += `?serverId=${serverId}`;\r\n\t\t}\r\n\r\n\t\treturn await this.axiosJson.get(endpoint);\r\n\t}\r\n\r\n\tpublic async getDevicesForAllGroupsByType(\r\n\t\tparams: GetDevicesByTypeParams,\r\n\t\tcancelTokenSource: CancelTokenSource = null\r\n\t) {\r\n\t\tconst { deviceTypeId, serverId, page, pageSize, sortBy, sortDesc, searchTerm, selectOutputs, includeReferenceShots } = params;\r\n\t\tlet endpoint = `/AdvancedDevices/ByType/${deviceTypeId}?page=${page}&pageSize=${pageSize}&sortBy=${sortBy}&sortDesc=${sortDesc}`;\r\n\r\n\t\tif (serverId) {\r\n\t\t\tendpoint += `&serverId=${serverId}`;\r\n\t\t}\r\n\r\n\t\tif (searchTerm) {\r\n\t\t\tendpoint += `&searchTerm=${searchTerm}`;\r\n\t\t}\r\n\r\n\t\tif (selectOutputs === true || selectOutputs === false) {\r\n\t\t\tendpoint += `&selectOutputs=${selectOutputs}`;\r\n\t\t}\r\n\r\n\t\tif (includeReferenceShots) {\r\n\t\t\tendpoint += `&includeReferenceShots=true`;\r\n\t\t}\r\n\r\n\t\treturn await this.axiosJson.get(endpoint, { cancelToken: cancelTokenSource?.token });\r\n\t}\r\n\r\n\tpublic async getDeviceTypes(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/servers/IntegrationServerTypes\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the list of device nodes for a specified group in the group tree.\r\n\t * @param groupId The ID of the group.\r\n\t * @param deviceTypeId The type ID of the devices to get.\r\n\t * @returns An array of device nodes for the specified group.\r\n\t */\r\n\tpublic async getDevicesForGroupTree(\r\n\t\tgroupId: number,\r\n\t\tdeviceTypeId: number\r\n\t): Promise {\r\n\t\tconst { data } = await this.axios.get(`/AdvancedDevices/Tree/${groupId}/${deviceTypeId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\t/**\r\n\t * Searches for devices of a specified device type with a query string.\r\n\t * @param query The query string to search devices for.\r\n\t * @param deviceTypeId The type ID's of the devices to include in the search.\r\n\t * @param searchTermsInAnyOrder Whether or not to take the order of search terms (separated by spaces) into account.\r\n\t * @returns An object containing device nodes.\r\n\t */\r\n\tpublic async searchDevicesForGroupTree(\r\n\t\tquery: string,\r\n\t\tdeviceTypeIds: number[],\r\n\t\tsearchTermsInAnyOrder: boolean\r\n\t): Promise {\r\n\t\tconst { data } = await this.axios.post(\r\n\t\t\t\"/AdvancedDevices/Tree/Search\",\r\n\t\t\t{\r\n\t\t\t\tquery,\r\n\t\t\t\tdeviceTypeIds,\r\n\t\t\t\tsearchTermsInAnyOrder\r\n\t\t\t}\r\n\t\t);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createConfig(\r\n\t\tserverConfig: ServerConfiguration\r\n\t): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(\r\n\t\t\t\"DeviceConfig/Add\",\r\n\t\t\tserverConfig\r\n\t\t);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getConfig(\r\n\t\tfile: string,\r\n\t\ttype: string,\r\n\t\turlTemplate: string,\r\n\t\tprefValue: string,\r\n\t\thost: string,\r\n\t\tport: number,\r\n\t\tuser: string,\r\n\t\tpassword: string,\r\n\t\textra: string,\r\n\t\tinput1: string,\r\n\t\tinput2: string,\r\n\t\tdeviceExtra: string,\r\n\t\tsite: string,\r\n\t\tformat: string,\r\n\t\tauth: string\r\n\t\t): Promise {\r\n\t\tlet urlBase = window.location.origin;\r\n\t\tconst { data } = await this.axios.get(\r\n\t\t\t`${urlBase}/devices/config?file=${file}&type=${type}&urlTemplate=${urlTemplate}&prefValue=${prefValue}&host=${host}&port=${port}&user=${user}&password=${password}&extra=${extra}&input1=${input1}&input2=${input2}&deviceExtra=${deviceExtra}&site=${site}&format=${format}&auth=${auth}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getConfigBase(\r\n\t\tserverId: number,\r\n\t\textraValue: string,\r\n\t\tauth: string,\r\n\t\tformat: string,\r\n\t\t): Promise {\r\n\t\tlet urlBase = window.location.origin;\r\n\t\tconst { data } = await this.axios.get(\r\n\t\t\t`${urlBase}/devices/config?auth=${auth}&serverId=${serverId}&extra=${extraValue}&format=${format}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async addDevice(newDevice: any): Promise {\r\n\t\treturn await this.axios.post(\"/AdvancedDevices/AddDevice\", newDevice);\r\n\t}\r\n\r\n\tpublic async updateDevice(updatedDevice: any): Promise {\r\n\t\treturn await this.axios.post(\"/AdvancedDevices/UpdateDevice\", updatedDevice);\r\n\t}\r\n\r\n\tpublic async deleteDevice(deviceId: number): Promise {\r\n\t\treturn await this.axios.delete(`/AdvancedDevices/DeleteDevice/${deviceId}`);\r\n\t}\r\n}\r\n\r\nconst devicesApi = new DevicesApi();\r\nexport { devicesApi };\r\n","import { camelCase } from \"lodash\";\r\n\r\nconst objectToCamelCase = obj => {\r\n\tif (Array.isArray(obj)) {\r\n\t\treturn obj.map(v => objectToCamelCase(v));\r\n\t} else if (obj != null && obj.constructor === Object) {\r\n\t\treturn Object.keys(obj).reduce(\r\n\t\t\t(result, key) => ({\r\n\t\t\t\t...result,\r\n\t\t\t\t[camelCase(key)]: objectToCamelCase(obj[key]),\r\n\t\t\t}),\r\n\t\t\t{},\r\n\t\t);\r\n\t}\r\n\treturn obj;\r\n};\r\n\r\nexport default objectToCamelCase;","import { ActionTree } from \"vuex\";\r\nimport { DevicesState, DeviceSearchQuery, DeviceTypeCounts,\r\n\t ServerDetails, ServerType,\r\n\t\t GetDevicesByTypeParams, DeviceDetails,\r\n\t\t DeviceTypeIdentifier, ServersWithEnabledDeviceTypesParams,\r\n\t\t FetchServerByGroupParams, SearchServerByGroupParams, DeviceSearchSwipeAndShowQuery,\r\n\t\t GetDeviceForGroupByTypeParams, GetDeviceParams, ServerConfiguration,\r\n\t\t ServerConfigurationResponse, DeviceConfigurationRelay, FetchConfigForServerParams,\r\n\t\t SyncSystem, DeviceConfigurationPreset, DeviceType, DeviceConfigurationPresetPayload, DevicePreset } from \"./types\";\r\nimport { RootState, PaginatedSearchQueryParams, CancellableQuery } from \"@/store/types\";\r\nimport api from \"@/services/api.service\";\r\nimport axios from \"axios\";\r\nimport { ICamera } from \"../views/types\";\r\nimport { devicesApi } from \"@/services/api.devices.service\";\r\nimport QuickControlResponse from \"@/types/QuickControlResponse\";\r\nimport ServerDetailsPagedResponse from \"@/types/sv-data/devices/ServerDetailsPagedResponse\";\r\nimport DeviceDetailsPagedResponse from \"@/types/sv-data/devices/DeviceDetailsPagedResponse\";\r\nimport objectToCamelCase from \"@/utils/objectToCamelCase\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync deviceSearch({ commit }, query: string) {\r\n\t\tconst cancelTokenSource = axios.CancelToken.source();\r\n\t\tcommit(\"setCancelTokenSource\", cancelTokenSource);\r\n\t\tconst { data } = await api.deviceSearch(3, query, cancelTokenSource.token);\r\n\t\tcommit(\"setDoors\", data);\r\n\t},\r\n\r\n\tasync deviceSearchSwipeAndShow( { commit }, { query, searchTermsInAnyOrder }: DeviceSearchSwipeAndShowQuery ): Promise {\r\n\t\tconst cancelTokenSource = axios.CancelToken.source();\r\n\t\tcommit(\"setCancelTokenSource\", cancelTokenSource);\r\n\t\tconst { data } = await devicesApi.deviceSearch(3, query, cancelTokenSource.token, searchTermsInAnyOrder);\r\n\t\tcommit(\"setDoors\", data);\r\n\t},\r\n\r\n\tasync deviceSearchAndAppendToGroupTree({ commit }, { query, deviceTypeId }) {\r\n\t\tconst cancelTokenSource = axios.CancelToken.source();\r\n\t\tcommit(\"setCancelTokenSource\", cancelTokenSource);\r\n\t\tconst { data } = await api.deviceSearch(deviceTypeId, query, cancelTokenSource.token);\r\n\t\tcommit(\"eventqueue/setDevicesForGroupInSiteTree\", data, { root: true });\r\n\t},\r\n\r\n\tasync deviceSearchAndAppendToGroupTreeWithQuery({ commit }, { query, deviceTypeId }: DeviceSearchQuery) {\r\n\t\tconst cancelTokenSource = axios.CancelToken.source();\r\n\t\tcommit(\"setCancelTokenSource\", cancelTokenSource);\r\n\r\n\t\tconst { data } = await api.deviceSearch(deviceTypeId, query, cancelTokenSource.token);\r\n\r\n\t\t// remapping object as the property casing does not match what the camer plugin and other code is expecting\r\n\t\tlet devices = data.map(device => {\r\n\t\t\treturn {\r\n\t\t\t\tdeviceID: device.deviceId,\r\n\t\t\t\tdeviceTypeID: device.deviceTypeId,\r\n\t\t\t\ttitle: device.title,\r\n\t\t\t\tgroupId: device.groupId,\r\n\t\t\t\tsettingsMeta: device.settingsMeta\r\n\t\t\t} as ICamera;\r\n\t\t});\r\n\r\n\t\tcommit(\"eventqueue/setDevicesAndGroupsInSiteTree\", { devices, query }, { root: true });\r\n\t},\r\n\r\n\tasync deviceQuickControl(\r\n\t\tcontext,\r\n\t\t{\r\n\t\t\tdeviceId,\r\n\t\t\treason,\r\n\t\t\teventId\r\n\t\t}: { deviceId: number; reason: string; eventId: number; regionUrl?: string }\r\n\t): Promise {\r\n\t\tconst data = await api.deviceQuickControl(deviceId, reason);\r\n\t\treturn { device: data, eventId: eventId };\r\n\t},\r\n\r\n\tasync getServers({ commit }): Promise {\r\n\t\tconst response: ServerDetailsPagedResponse = await api.getServers();\r\n\t\tcommit(\"setServersList\", response.data);\r\n\t\tcommit(\"setTotalServers\", response.totalRecords);\r\n\t},\r\n\r\n\tasync getFilteredServersPaginated(\r\n\t\t{ commit, state },\r\n\t\t{ params, cancelTokenSource }: CancellableQuery\r\n\t): Promise {\r\n\t\tconst response: ServerDetailsPagedResponse = await api.getServers({ params, cancelToken: cancelTokenSource.token });\r\n\t\tcommit(\"setServersList\", response.data);\r\n\t\tcommit(\"setTotalServers\", response.totalRecords);\r\n\t},\r\n\r\n\tasync getServersWithEnabledDeviceTypes({ commit }, params: ServersWithEnabledDeviceTypesParams): Promise {\r\n\t\tconst { data }: { data: ServerDetails[] } = await api.getServersWithEnabledDeviceTypes(params);\r\n\t\tcommit(\"addServersNotAlreadyInStore\", data);\r\n\t},\r\n\r\n\tasync getServer({ commit }, serverId: number): Promise {\r\n\t\tconst { data }: { data: ServerDetails } = await api.getServer(serverId);\r\n\t\tcommit(\"addServersNotAlreadyInStore\", [data]);\r\n\t},\r\n\r\n\tasync getDeviceTypeCounts({ commit }, serverId: number | null): Promise {\r\n\t\tconst { data }: { data: DeviceTypeCounts } = await devicesApi.getDeviceTypeCounts(serverId);\r\n\r\n\t\tif (serverId) {\r\n\t\t\tcommit(\"addDeviceTypeCountsToCurrentServer\", data);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcommit(\"setDeviceTypeCounts\", data);\r\n\t},\r\n\r\n\tasync fetchServerConfig({ commit }, { server, serverType, auth }: FetchConfigForServerParams): Promise {\r\n\t\tcommit(\"setGettingConfig\", true);\r\n\t\tlet data = null;\r\n\t\ttry {\r\n\t\t\tdata = await devicesApi.getConfigBase(server.serverID, server.extraValue, auth, \"json\")\r\n\t\t} catch (err) {\r\n\t\t\tcommit(\"setGettingConfig\", false);\r\n\t\t}\r\n\r\n\t\tif (data == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar camelizedData = objectToCamelCase(data);\r\n\r\n\t\tif (camelizedData != null && camelizedData.length > 0 && camelizedData[0] != null) {\r\n\t\t\t// Sort arrays by name or title\r\n\t\t\tcamelizedData[0].cameras =\r\n\t\t\t\tcamelizedData[0].cameras != null && camelizedData[0].cameras.length > 0\r\n\t\t\t\t\t? camelizedData[0].cameras.sort((a, b) => (!a.name ? 1 : !b.name ? -1 : a.name.localeCompare(b.name)))\r\n\t\t\t\t\t: [];\r\n\t\t\tcamelizedData[0].alarms =\r\n\t\t\t\tcamelizedData[0].alarms != null && camelizedData[0].alarms.length > 0\r\n\t\t\t\t\t? camelizedData[0].alarms.sort((a, b) => (!a.title ? 1 : !b.title ? -1 : a.title.localeCompare(b.title)))\r\n\t\t\t\t\t: [];\r\n\t\t\tcamelizedData[0].relays =\r\n\t\t\t\tcamelizedData[0].relays != null && camelizedData[0].relays.length > 0\r\n\t\t\t\t\t? camelizedData[0].relays.sort((a, b) => (!a.name ? 1 : !b.name ? -1 : a.name.localeCompare(b.name)))\r\n\t\t\t\t\t: [];\r\n\t\t\tcamelizedData[0].audios =\r\n\t\t\t\tcamelizedData[0].audios != null && camelizedData[0].audios.length > 0\r\n\t\t\t\t\t? camelizedData[0].audios.sort((a, b) => (!a.name ? 1 : !b.name ? -1 : a.name.localeCompare(b.name)))\r\n\t\t\t\t\t: [];\r\n\t\t}\r\n\r\n\t\tcommit(\"setServerConfig\", camelizedData);\r\n\t\tcommit(\"setGettingConfig\", false);\r\n\t},\r\n\r\n\tasync fetchServersByGroupId({ commit }, { groupId, pageSize }: FetchServerByGroupParams): Promise {\r\n\t\tconst { data } = await api.fetchServers(groupId, pageSize);\r\n\t\tcommit(\"setServersList\", data);\r\n\t},\r\n\r\n\tasync searchServersByGroupId({ commit }, { groupId, pageSize, filter }: SearchServerByGroupParams): Promise {\r\n\t\tconst { data } = await api.fetchServers(groupId, pageSize, filter);\r\n\t\tcommit(\"setFilteredServersList\", data);\r\n\t},\r\n\r\n\tasync addServer({ commit }, newServer: ServerDetails): Promise {\r\n\t\tconst data = await api.addServer(newServer);\r\n\r\n\t\tnewServer.serverID = data;\r\n\r\n\t\tconst newServerForStore: ServerDetails = { ...newServer };\r\n\t\tcommit(\"addServer\", newServerForStore);\r\n\t\tcommit(\"setCurrentServer\", newServerForStore);\r\n\t\tcommit(\"setNotificationOptions\", {\r\n\t\t\ttype: \"success\",\r\n\t\t\ttitle: \"Device Created\",\r\n\t\t\ttext: `\"${newServer.title}\" was created.`\r\n\t\t});\r\n\t},\r\n\r\n\tasync updateServer({ commit, state }, updatedServer: ServerDetails): Promise {\r\n\t\ttry {\r\n\t\t\tawait api.updateServer(updatedServer);\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tvar errorMessage = ex.response?.data ? ex.response.data : \"An error occurred when updating the device.\";\r\n\t\t\tcommit(\"setNotificationOptions\", {\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Error\",\r\n\t\t\t\ttext: errorMessage\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst serverForStore = { ...updatedServer, deviceTypeCounts: state.currentServer.deviceTypeCounts };\r\n\t\tcommit(\"setCurrentServer\", serverForStore);\r\n\t\tcommit(\"updateServer\", serverForStore);\r\n\r\n\t\tcommit(\"setNotificationOptions\", {\r\n\t\t\ttype: \"success\",\r\n\t\t\ttitle: \"Device Updated\",\r\n\t\t\ttext: `\"${updatedServer.title}\" was updated.`\r\n\t\t});\r\n\t},\r\n\r\n\tasync deleteServer({ commit }, serverId: number): Promise {\r\n\t\tawait api.deleteServer(serverId);\r\n\r\n\t\tcommit(\"deleteServer\", serverId);\r\n\t\tcommit(\"setNotificationOptions\", { type: \"success\", title: \"Device Deleted\" });\r\n\t},\r\n\r\n\tasync addOrUpdateSyncSystem({ commit, dispatch, state }, syncSystem: SyncSystem): Promise {\r\n\t\ttry\r\n\t\t{\r\n\t\t\tlet id = await api.addOrUpdateSyncSystem(syncSystem);\r\n\t\t\tif (!id) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet existing = state.syncSystems.find(s => s.syncSystemId == id);\r\n\t\t\tif(!existing) {\r\n\t\t\t\tcommit(\"setNotificationOptions\", {\r\n\t\t\t\t\ttype: \"success\",\r\n\t\t\t\t\ttitle: \"Sync System Created\",\r\n\t\t\t\t\ttext: `\"${syncSystem.title}\" was created.`\r\n\t\t\t\t});\r\n\r\n\t\t\t\tawait dispatch(\"fetchAllSyncSystems\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcommit(\"setNotificationOptions\", {\r\n\t\t\t\t\ttype: \"success\",\r\n\t\t\t\t\ttitle: \"Sync System Updated\",\r\n\t\t\t\t\ttext: `\"${syncSystem.title}\" was updated.`\r\n\t\t\t\t});\r\n\r\n\t\t\t\tcommit(\"updateSyncSystem\", syncSystem);\r\n\t\t\t}\r\n\r\n\t\t\tawait dispatch(\"getServers\");\r\n\t\t\tawait dispatch(\"setServerFromSyncId\", id);\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tcommit(\"setNotificationOptions\", {\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Sync \" + (syncSystem.syncSystemId > 0 ? \"Update \" : \"Creation \") + \"Failed\",\r\n\t\t\t\ttext: ex.message\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\treloadCurrentServer({ commit, dispatch, state }): void {\r\n\t\tvar server = state.serversList.find(s => s.serverID == state.currentServer.serverID)\r\n\t\tif (server) {\r\n\t\t\tcommit(\"setCurrentServer\", { ...server })\r\n\t\t\tdispatch(\"getDeviceTypeCounts\", server.serverID);\r\n\t\t}\r\n\t},\r\n\r\n\tsetServerFromSyncId({ commit, dispatch, state }, syncSystemId: number): void {\r\n\t\tvar server = state.serversList.find(s => s.syncSystemId == syncSystemId)\r\n\t\tif (server) {\r\n\t\t\tcommit(\"setCurrentServer\", { ...server })\r\n\t\t\tdispatch(\"getDeviceTypeCounts\", server.serverID);\r\n\t\t}\r\n\t},\r\n\r\n\tasync addDevicesForServer({ commit, state }, serverConfig: ServerConfiguration): Promise {\r\n\t\tlet serverConfigResponse : ServerConfigurationResponse = null;\r\n\r\n\t\ttry {\r\n\t\t\tserverConfigResponse = await devicesApi.createConfig(serverConfig);\r\n\t\t} catch (err) {\r\n\t\t\tcommit(\"setSettingConfig\", false);\r\n\t\t}\r\n\r\n\t\tif (serverConfigResponse == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet serverConfigs = [];\r\n\t\tserverConfigs.push(serverConfig.deviceConfiguration);\r\n\r\n\t\tcommit(\"setServerConfig\", serverConfigs);\r\n\r\n\t\tconst deviceTypeCounts: DeviceTypeCounts = { ...state.deviceTypeCounts };\r\n\r\n\t\tconst newDeviceTypeCountsForCurrentServer = (await devicesApi.getDeviceTypeCounts(state.currentServer.serverID)).data;\r\n\r\n\t\tconst diffDeviceTypeCountsForCurrentServer: DeviceTypeCounts = state.currentServer && {\r\n\t\t\tdevices: newDeviceTypeCountsForCurrentServer.devices - state.currentServer.deviceTypeCounts.devices,\r\n\t\t\tcameras: newDeviceTypeCountsForCurrentServer.cameras - state.currentServer.deviceTypeCounts.cameras,\r\n\t\t\taudios: newDeviceTypeCountsForCurrentServer.audios - state.currentServer.deviceTypeCounts.audios,\r\n\t\t\tdoors: newDeviceTypeCountsForCurrentServer.doors - state.currentServer.deviceTypeCounts.doors,\r\n\t\t\toutputs: newDeviceTypeCountsForCurrentServer.outputs - state.currentServer.deviceTypeCounts.outputs,\r\n\t\t\talarms: newDeviceTypeCountsForCurrentServer.alarms - state.currentServer.deviceTypeCounts.alarms\r\n\t\t};\r\n\r\n\t\t// establish outputs and doors from relays - N.B. Assumption that this is dependent on the type property in the relay object\r\n\t\tlet outputs : DeviceConfigurationRelay[] = [];\r\n\t\tlet doors : DeviceConfigurationRelay[] = [];\r\n\t\tif (serverConfig.deviceConfiguration.relays != null) {\r\n\t\t\toutputs = serverConfig.deviceConfiguration.relays.filter(function (obj) {\r\n\t\t\t\treturn obj.type == 0;\r\n\t\t\t});\r\n\t\t\tdoors = serverConfig.deviceConfiguration.relays.filter(function (obj) {\r\n\t\t\t\treturn obj.type != 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// set device counts by taking away current device counts for server and then adding new device counts for server\r\n\t\tdeviceTypeCounts.audios = (deviceTypeCounts.audios + diffDeviceTypeCountsForCurrentServer.audios);\r\n\t\tdeviceTypeCounts.cameras = (deviceTypeCounts.cameras + diffDeviceTypeCountsForCurrentServer.cameras);\r\n\t\tdeviceTypeCounts.doors = (deviceTypeCounts.doors + diffDeviceTypeCountsForCurrentServer.doors);\r\n\t\tdeviceTypeCounts.outputs = (deviceTypeCounts.outputs + diffDeviceTypeCountsForCurrentServer.outputs);\r\n\t\tdeviceTypeCounts.alarms = (deviceTypeCounts.alarms + diffDeviceTypeCountsForCurrentServer.alarms);\r\n\r\n\t\tcommit(\"setDeviceTypeCounts\", deviceTypeCounts);\r\n\t\tcommit(\"setAlarmCounts\", deviceTypeCounts.alarms);\r\n\r\n\t\tif (state.currentServer) {\r\n\t\t\tcommit(\"addDeviceTypeCountsToCurrentServer\", newDeviceTypeCountsForCurrentServer);\r\n\t\t\tcommit(\"addAlarmCountsToCurrentServer\", newDeviceTypeCountsForCurrentServer.alarms);\r\n\t\t}\r\n\r\n\t\tcommit(\"setNotificationOptions\", {\r\n\t\t\ttype: \"success\",\r\n\t\t\ttitle: \"Device Config Created\",\r\n\t\t\ttext: `Config was created for \"${serverConfig.deviceConfiguration.name}\".`\r\n\t\t});\r\n\t\tcommit(\"setSettingConfig\", false);\r\n\r\n\t\tcommit(\"setDeviceConfigErrors\", serverConfigResponse.errors);\r\n\t},\r\n\r\n\tasync addDevice({ commit, state }, newDevice: DeviceDetails): Promise {\r\n\t\tconst { data }: { data: DeviceDetails } = await devicesApi.addDevice(newDevice);\r\n\t\tcommit(\"addDevice\", data);\r\n\r\n\t\tif(state.device.presets != null && state.device.presets.length > 0)\r\n\t\t{\r\n\t\t\tlet presetPayload = state.device.presets.map(preset => {\r\n\t\t\t\treturn { name: preset.title, groupId: state.device.groupID, deviceId: data.deviceID, position: preset.presetNumber } as DeviceConfigurationPresetPayload\r\n\t\t\t});\r\n\r\n\t\t\tawait api.createOrUpdateCameraPresets(presetPayload);\r\n\t\t}\r\n\r\n\t\tconst deviceTypeCounts: DeviceTypeCounts = { ...state.deviceTypeCounts };\r\n\t\tconst deviceTypeCountsForCurrentServer: DeviceTypeCounts = state.currentServer && {\r\n\t\t\t...state.currentServer.deviceTypeCounts\r\n\t\t};\r\n\r\n\t\tconst notificationTitle = `${DeviceTypeIdentifier[state.currentDeviceTypeIdentifier]} Created`;\r\n\r\n\t\tswitch (state.currentDeviceTypeIdentifier) {\r\n\t\t\tcase DeviceTypeIdentifier.Camera: {\r\n\t\t\t\tdeviceTypeCounts.cameras++;\r\n\r\n\t\t\t\tif (state.currentServer) {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.cameras++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase DeviceTypeIdentifier.Audio: {\r\n\t\t\t\tdeviceTypeCounts.audios++;\r\n\r\n\t\t\t\tif (state.currentServer) {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.audios++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase DeviceTypeIdentifier.Output: {\r\n\t\t\t\tdeviceTypeCounts.outputs++;\r\n\r\n\t\t\t\tif (state.currentServer) {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.outputs++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase DeviceTypeIdentifier.Door: {\r\n\t\t\t\tdeviceTypeCounts.doors++;\r\n\r\n\t\t\t\tif (state.currentServer) {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.doors++;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcommit(\"setDeviceTypeCounts\", deviceTypeCounts);\r\n\r\n\t\tif (state.currentServer) {\r\n\t\t\tcommit(\"addDeviceTypeCountsToCurrentServer\", deviceTypeCountsForCurrentServer);\r\n\t\t}\r\n\r\n\t\tcommit(\"setNotificationOptions\", {\r\n\t\t\ttype: \"success\",\r\n\t\t\ttitle: notificationTitle,\r\n\t\t\ttext: `\"${newDevice.title}\" was created.`\r\n\t\t});\r\n\t},\r\n\r\n\tasync updateDevice({ commit, state }, updatedDevice: DeviceDetails): Promise {\r\n\t\tconst { data }: { data: DeviceDetails } = await devicesApi.updateDevice(updatedDevice);\r\n\r\n\t\tif (state.device.presets && state.device.presets.length > 0)\r\n\t\t{\r\n\t\t\tlet presetPayload = state.device.presets.map(preset => {\r\n\t\t\t\treturn { name: preset.title, groupId: state.device.groupID, deviceId: data.deviceID, position: preset.presetNumber } as DeviceConfigurationPresetPayload\r\n\t\t\t});\r\n\r\n\t\t\tawait api.createOrUpdateCameraPresets(presetPayload);\r\n\t\t}\r\n\r\n\t\tif (state.currentServer && state.currentServer.serverID !== updatedDevice.serverID) {\r\n\t\t\tconst deviceTypeCountsForCurrentServer: DeviceTypeCounts = {\r\n\t\t\t\t...state.currentServer.deviceTypeCounts\r\n\t\t\t};\r\n\r\n\t\t\tswitch (state.currentDeviceTypeIdentifier) {\r\n\t\t\t\tcase DeviceTypeIdentifier.Camera: {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.cameras--;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase DeviceTypeIdentifier.Audio: {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.audios--;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase DeviceTypeIdentifier.Output: {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.outputs--;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase DeviceTypeIdentifier.Door: {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.doors--;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommit(\"addDeviceTypeCountsToCurrentServer\", deviceTypeCountsForCurrentServer);\r\n\t\t}\r\n\r\n\t\tcommit(\"updateDevice\", data);\r\n\r\n\t\tconst notificationTitle = `${DeviceTypeIdentifier[state.currentDeviceTypeIdentifier]} Updated`;\r\n\r\n\t\tcommit(\"setNotificationOptions\", {\r\n\t\t\ttype: \"success\",\r\n\t\t\ttitle: notificationTitle,\r\n\t\t\ttext: `\"${updatedDevice.title}\" was updated.`\r\n\t\t});\r\n\t},\r\n\r\n\tasync deleteDevice({ commit, state }, device: DeviceDetails): Promise {\r\n\t\tawait devicesApi.deleteDevice(device.deviceID);\r\n\t\tcommit(\"deleteDevice\", device.deviceID);\r\n\r\n\t\tconst deviceTypeCounts: DeviceTypeCounts = { ...state.deviceTypeCounts };\r\n\t\tconst deviceTypeCountsForCurrentServer: DeviceTypeCounts = state.currentServer && {\r\n\t\t\t...state.currentServer.deviceTypeCounts\r\n\t\t};\r\n\r\n\t\tconst notificationTitle = `${DeviceTypeIdentifier[state.currentDeviceTypeIdentifier]} Deleted`;\r\n\r\n\t\tswitch (state.currentDeviceTypeIdentifier) {\r\n\t\t\tcase DeviceTypeIdentifier.Camera: {\r\n\t\t\t\tdeviceTypeCounts.cameras--;\r\n\r\n\t\t\t\tif (state.currentServer) {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.cameras--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase DeviceTypeIdentifier.Audio: {\r\n\t\t\t\tdeviceTypeCounts.audios--;\r\n\r\n\t\t\t\tif (state.currentServer) {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.audios--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase DeviceTypeIdentifier.Output: {\r\n\t\t\t\tdeviceTypeCounts.outputs--;\r\n\r\n\t\t\t\tif (state.currentServer) {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.outputs--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase DeviceTypeIdentifier.Door: {\r\n\t\t\t\tdeviceTypeCounts.doors--;\r\n\r\n\t\t\t\tif (state.currentServer) {\r\n\t\t\t\t\tdeviceTypeCountsForCurrentServer.doors--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tcommit(\"setDeviceTypeCounts\", deviceTypeCounts);\r\n\r\n\t\tif (state.currentServer) {\r\n\t\t\tcommit(\"addDeviceTypeCountsToCurrentServer\", deviceTypeCountsForCurrentServer);\r\n\t\t}\r\n\r\n\t\tcommit(\"setNotificationOptions\", { type: \"success\", title: notificationTitle });\r\n\t},\r\n\r\n\tasync getDeviceTypes({ commit }): Promise {\r\n\t\tconst deviceTypes: ServerType[] = await devicesApi.getDeviceTypes();\r\n\t\tcommit(\"setServerTypes\", deviceTypes);\r\n\t},\r\n\r\n\tasync fetchDevicesForAllGroupsByType(\r\n\t\t{ commit },\r\n\t\t{ params, cancelTokenSource }: CancellableQuery\r\n\t): Promise {\r\n\t\tconst { data }: { data: DeviceDetailsPagedResponse } = await devicesApi.getDevicesForAllGroupsByType(params, cancelTokenSource);\r\n\t\tcommit(\"setDevices\", data.data);\r\n\t\tcommit(\"setTotalDevices\", data.totalRecords);\r\n\t},\r\n\r\n\tasync fetchAllSyncSystems({ commit }): Promise {\r\n\t\tconst response = await api.retrieveSyncSystems();\r\n\t\tcommit(\"setSyncSystems\", response.data);\r\n\t\tcommit(\"setTotalSyncSystems\", response.totalRecords);\r\n\t},\r\n\r\n\tasync fetchSyncSystems(\r\n\t\t{ commit, state },\r\n\t\t{ params, cancelTokenSource }: CancellableQuery\r\n\t): Promise {\r\n\t\tconst response = await api.retrieveSyncSystems({ params, cancelToken: cancelTokenSource.token });\r\n\t\tcommit(\"setSyncSystems\", response.data);\r\n\t\tcommit(\"setTotalSyncSystems\", response.totalRecords);\r\n\t},\r\n\r\n\tasync fetchSyncSystemCount({ commit }): Promise {\r\n\t\tconst response = await api.retrieveSyncSystemsCount();\r\n\t\tcommit(\"setTotalSyncSystems\", response);\r\n\t},\r\n\r\n\tasync fetchDevicesByType(\r\n\t\t{ commit },\r\n\t\t{ groupId, deviceTypeId, filter }: GetDeviceForGroupByTypeParams\r\n\t): Promise {\r\n\t\tconst data: DeviceDetails[] = await api.getDevicesByType(groupId, deviceTypeId, filter);\r\n\t\tcommit(\"setDevices\", data);\r\n\t},\r\n\r\n\tasync fetchDevicesByTypeAndAppend(\r\n\t\t{ commit },\r\n\t\t{ groupId, deviceTypeId, filter }: GetDeviceForGroupByTypeParams\r\n\t): Promise {\r\n\t\tconst data: DeviceDetails[] = await api.getDevicesByType(groupId, deviceTypeId, filter);\r\n\t\tcommit(\"appendDevices\", data);\r\n\t},\r\n\r\n\tasync fetchDevicesByTypeAndAppendNoFilter(\r\n\t\t{ commit }, { groupId, params }\r\n\t): Promise {\r\n\t\tconst { data }: { data: DeviceDetails[] } = await api.devicesByGroup(groupId, params);\r\n\t\tcommit(\"appendDevices\", data);\r\n\t},\r\n\r\n\tasync fetchDeviceById(\r\n\t\t{ commit },\r\n\t\t{ deviceId, params }: { deviceId: number; params: GetDeviceParams }\r\n\t): Promise {\r\n\t\tcommit(\"setDevice\", await api.loadDeviceById(deviceId, params));\r\n\t},\r\n\r\n\tasync getServerLineProfiles({ commit }): Promise {\r\n\t\tconst { data } = await api.fetchServerLineProfiles();\r\n\t\tcommit(\"setServerLineProfiles\", data);\r\n\t},\r\n\r\n\tasync getDevicesByTitle({ commit }, deviceTitles: string[]): Promise {\r\n\t\tconst { data } = await devicesApi.getDevicesByTitle(deviceTitles);\r\n\t\tcommit(\"setDevices\", data);\r\n\t},\r\n\r\n\tasync getCameraPresets({ commit }, device: DeviceDetails): Promise {\r\n\t\tif (device.deviceTypeID !== DeviceType.Camera) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst presets = await api.getCameraPresets(device);\r\n\t\treturn presets;\r\n\t},\r\n\r\n\tasync createOrUpdateCameraPreset({ commit, state }, presetConfigPayload: DeviceConfigurationPresetPayload): Promise {\r\n\t\tlet presets = !state.device.presets ? [] : [...state.device.presets];\r\n\r\n\t\tlet existingPreset = presets.find(p => p.presetNumber === presetConfigPayload.position) as DevicePreset;\r\n\r\n\t\tif (existingPreset)\r\n\t\t{\r\n\t\t\texistingPreset.title = presetConfigPayload.name;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tpresets.push({ title: presetConfigPayload.name, presetNumber: presetConfigPayload.position } as DevicePreset );\r\n\t\t}\r\n\r\n\t\tcommit(\"setDevicePresets\", presets);\r\n\t\treturn true;\r\n\t},\r\n\r\n\tasync deleteCameraPreset({ commit, state }, presetConfigPayload: DeviceConfigurationPresetPayload): Promise {\r\n\t\t// initially try and delete it from the record.\r\n\t\tlet result: boolean;\r\n\r\n\t\t// only try and delete the preset if the device has an ID - if it doesn't the Camera does not exist yet.\r\n\t\tif (state.device.deviceID){\r\n\t\t\tresult = await api.deleteCameraPreset(presetConfigPayload);\r\n\t\t}\r\n\r\n\t\tlet presets = !state.device.presets ? [] : [...state.device.presets];\r\n\t\tpresets.removeWhere(p => p.presetNumber === presetConfigPayload.position);\r\n\r\n\t\tcommit(\"setDevicePresets\", presets);\r\n\t\treturn result === true;\r\n\t},\r\n};\r\n","import { DevicesState, DeviceTypeIdentifier, ServerModalStartTab } from \"./types\";\r\nimport { getDeviceResponseRecordsRetrievalStatusDefaults } from \"./templates\";\r\n\r\nexport function getDefaultState(): DevicesState {\r\n return {\r\n cancelTokenSource: null,\r\n doors: [],\r\n serversList: [],\r\n totalServers: 0,\r\n filteredServersList: null,\r\n currentServer: null,\r\n devices: [],\r\n syncSystems: [],\r\n\t\ttotalSyncSystems: 0,\r\n totalDevices: 0,\r\n device: null,\r\n currentDeviceTypeIdentifier: DeviceTypeIdentifier.Camera,\r\n serverTypes: [],\r\n\t\tdeviceConfigurationErrors: null,\r\n\t\tdeviceResponseRecordsRetrievalStatus: getDeviceResponseRecordsRetrievalStatusDefaults(),\r\n deviceTypeCounts: null,\r\n deleteChildDeviceModalVisible: false,\r\n editChildDeviceModalVisible: false,\r\n cameraPreviewModalVisible: false,\r\n notificationOptions: null,\r\n serverLineProfiles: [],\r\n\t\tserverConfig: null,\r\n\t\tgettingConfig: false,\r\n\t\tsettingConfig: false,\r\n serverModalOpened: false,\r\n serverModalStartTab: ServerModalStartTab.Server\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { DevicesState, DeviceDetails, ServerDetails,\r\n\t DeviceTypeCounts,\r\n\t\t ServerType, ServerLineProfile,\r\n\t\t DeviceTypeIdentifier,\r\n\t\t DeviceConfiguration,\r\n\t\t DeviceConfigurationErrors,\r\n\t\t SyncSystem,\r\n\t\t ServerModalStartTab,\r\n\t\t DevicePreset} from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport Vue from \"vue\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetCancelTokenSource(state, cancelTokenSource) {\r\n\t\tstate.cancelTokenSource = cancelTokenSource;\r\n\t},\r\n\tsetDoors(state, doors: DeviceDetails[]) {\r\n\t\tstate.doors = doors;\r\n\t},\r\n\tsetGettingConfig(state: DevicesState, gettingConfig: boolean) {\r\n\t\tstate.gettingConfig = gettingConfig;\r\n\t},\r\n\tsetServersList(state: DevicesState, serversList: ServerDetails[]): void {\r\n\t\tstate.serversList = serversList;\r\n\t},\r\n\tsetServerConfig(state: DevicesState, serverConfig: DeviceConfiguration[]): void {\r\n\t\tstate.serverConfig = serverConfig;\r\n\t},\r\n\tsetSettingConfig(state: DevicesState, settingConfig: boolean) {\r\n\t\tstate.settingConfig = settingConfig;\r\n\t},\r\n\tsetTotalServers(state: DevicesState, totalServers: number): void {\r\n\t\tstate.totalServers = totalServers;\r\n\t},\r\n\taddServersNotAlreadyInStore(state: DevicesState, servers: ServerDetails[]): void {\r\n\t\tservers = servers.filter(\r\n\t\t\tnewServer => !state.serversList.some(existingServer => existingServer.serverID === newServer.serverID)\r\n\t\t);\r\n\r\n\t\tstate.serversList.push(...servers);\r\n\t},\r\n\tsetFilteredServersList(state: DevicesState, data: ServerDetails[]): void {\r\n\t\tstate.filteredServersList = data;\r\n\t},\r\n\tsetExtraValue(state: DevicesState, data: string): void {\r\n\t\tstate.currentServer.extraValue = data;\r\n\t},\r\n\tsetCurrentServer(state: DevicesState, server: ServerDetails): void {\r\n\t\tstate.currentServer = server;\r\n\t},\r\n\tsetDeviceConfigErrors(state: DevicesState, errors: DeviceConfigurationErrors) {\r\n\t\tstate.deviceConfigurationErrors = errors;\r\n\t},\r\n\tsetServerModalVisible(state: DevicesState, isVisible: boolean) {\r\n\t\tstate.serverModalOpened = isVisible;\r\n\t},\r\n\taddDeviceTypeCountsToCurrentServer(state: DevicesState, deviceTypeCounts: DeviceTypeCounts): void {\r\n\t\tVue.set(state.currentServer, \"deviceTypeCounts\", deviceTypeCounts);\r\n\t},\r\n\taddAlarmCountsToCurrentServer(state: DevicesState, alarmCounts: number): void {\r\n\t\tVue.set(state.currentServer, \"alarms\", alarmCounts);\r\n\t},\r\n\taddServer(state: DevicesState, data: ServerDetails): void {\r\n\t\tstate.serversList.push(data);\r\n\t},\r\n\tupdateServer(state: DevicesState, server: ServerDetails): void {\r\n\t\tlet index = state.serversList.findIndex(s => s.serverID == server.serverID);\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tVue.set(state.serversList, index, server);\r\n\t\t}\r\n\t},\r\n\tsetDevices(state: DevicesState, devices: DeviceDetails[]): void {\r\n\t\tstate.devices = devices;\r\n\t},\r\n\tsetTotalDevices(state: DevicesState, totalDevices: number): void {\r\n\t\tstate.totalDevices = totalDevices;\r\n\t},\r\n\tsetDevice(state: DevicesState, device: DeviceDetails): void {\r\n\t\tstate.device = device;\r\n\t},\r\n\tsetCurrentDeviceTypeIdentifier(state: DevicesState, deviceTypeIdentifier: DeviceTypeIdentifier): void {\r\n\t\tstate.currentDeviceTypeIdentifier = deviceTypeIdentifier;\r\n\t},\r\n\tsetServerModalStartTab(state: DevicesState, tab: ServerModalStartTab): void {\r\n\t\tstate.serverModalStartTab = tab;\r\n\t},\r\n\tsetServerTypes(state: DevicesState, serverTypes: ServerType[]): void {\r\n\t\tstate.serverTypes = serverTypes;\r\n\t},\r\n\tdeleteServer(state: DevicesState, serverId: number): void {\r\n\t\tstate.serversList = state.serversList.filter(x => x.serverID !== serverId);\r\n\t\tstate.devices = state.devices.filter(x => x.serverID !== serverId);\r\n\t},\r\n\tdeleteDevice(state: DevicesState, deviceId: number): void {\r\n\t\tstate.devices = state.devices.filter(x => x.deviceID !== deviceId);\r\n\t},\r\n\tsetDeviceTypeCounts(state: DevicesState, deviceTypeCounts: DeviceTypeCounts): void {\r\n\t\tstate.deviceTypeCounts = deviceTypeCounts;\r\n\t},\r\n\tsetAlarmCounts(state: DevicesState, alarmCounts: number): void {\r\n\t\tstate.alarms = alarmCounts;\r\n\t},\r\n\taddDevice(state: DevicesState, device: DeviceDetails): void {\r\n\t\tstate.devices.push(device);\r\n\t},\r\n\tupdateDevice(state: DevicesState, device: DeviceDetails): void {\r\n\t\tlet index = state.devices.findIndex(d => d.deviceID == device.deviceID);\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tVue.set(state.devices, index, device);\r\n\t\t}\r\n\t},\r\n\taddDevicesNotAlreadyInStore(state: DevicesState, devices: DeviceDetails[]): void {\r\n\t\tdevices = devices.filter(\r\n\t\t\tnewDevice => !state.devices.some(existingDevice => existingDevice.deviceID === newDevice.deviceID)\r\n\t\t);\r\n\r\n\t\tstate.devices.push(...devices);\r\n\t},\r\n\tupdateSyncSystem(state: DevicesState, syncSystem: SyncSystem): void {\r\n\t\tlet index = state.syncSystems.findIndex(s => s.syncSystemId == syncSystem.syncSystemId);\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tVue.set(state.syncSystems, index, syncSystem);\r\n\t\t}\r\n\t},\r\n\tsetDeleteChildDeviceModalVisibility(state: DevicesState, visible: boolean): void {\r\n\t\tstate.deleteChildDeviceModalVisible = visible;\r\n\t},\r\n\tsetEditChildDeviceModalVisibility(state: DevicesState, visible: boolean): void {\r\n\t\tstate.editChildDeviceModalVisible = visible;\r\n\t},\r\n\tsetCameraPreviewModalVisibility(state: DevicesState, visible: boolean): void {\r\n\t\tstate.cameraPreviewModalVisible = visible;\r\n\t},\r\n\tsetNotificationOptions(state: DevicesState, notificationOptions: NotificationOptions | null): void {\r\n\t\tstate.notificationOptions = notificationOptions;\r\n\t},\r\n\tsetServerLineProfiles(state: DevicesState, serverLineProfiles: ServerLineProfile[]): void {\r\n\t\tstate.serverLineProfiles = serverLineProfiles;\r\n\t},\r\n\tsetSyncSystems(state: DevicesState, syncSystems: SyncSystem[]): void {\r\n\t\tstate.syncSystems = syncSystems;\r\n\t},\r\n\tsetTotalSyncSystems(state: DevicesState, totalSyncSystems: number): void {\r\n\t\tstate.totalSyncSystems = totalSyncSystems;\r\n\t},\r\n\tsetDevicePresets(state: DevicesState, presets: DevicePreset[]) : void\r\n\t{\r\n\t\tstate.device.presets = presets;\r\n\t},\r\n\tresetState(state: DevicesState): void {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { DevicesState } from \"./types\";\r\n\r\nexport const getters: GetterTree = {\r\n getSortedServerTypes(state) {\r\n const serverTypes = state.serverTypes ? [...state.serverTypes] : [];\r\n\t\treturn serverTypes.sort(({ title: a }, { title: b }) => {\r\n\t\t\tif (a < b) return -1;\r\n\r\n\t\t\treturn b < a ? 1 : 0\r\n\t\t});\r\n\t}\r\n}\r\n","import { Module } from \"vuex\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { getters } from \"./getters\";\r\nimport { DevicesState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: DevicesState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const devices: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { ResponsesState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetResponsesOrFilteredResponses: state => {\r\n\t\treturn state.filter ? state.filteredResponses : state.responses;\r\n\t},\r\n\tgetAllResponsesRetrieved: state => {\r\n\t\treturn state.filter ? state.allFilteredResponsesRetrieved : state.allResponsesRetrieved;\r\n\t}\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport axios from \"axios\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { ResponsesState, Response, ResponseTestResult } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync fetchResponses({ commit, state }, cancelToken) {\r\n\t\tif (state.filter === \"\") {\r\n\t\t\tconst { data } = await api.fetchResponses(state.pageIndex, state.pageSize, state.serverId, state.filter, cancelToken);\r\n\r\n\t\t\tcommit(\"setResponses\", data);\r\n\r\n\t\t\tif (state.pageSize > data.length) {\r\n\t\t\t\tcommit(\"setAllResponsesRetrieved\", true);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar response = await api.fetchResponses(state.filterPageIndex, state.pageSize, state.serverId, state.filter, cancelToken);\r\n\r\n\t\t\tif(!response) return;\r\n\r\n\t\t\tcommit(\"setFilteredResponses\", response.data);\r\n\r\n\t\t\tif (state.pageSize > response.data.length) {\r\n\t\t\t\tcommit(\"setAllFilteredResponsesRetrieved\", true);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tasync refreshResponses({ commit, state }) {\r\n\t\tcommit(\"setResponseTableIsBusy\", true);\r\n\r\n\t\tif (state.filter === \"\") {\r\n\t\t\tconst pageSize = state.responses.length;\r\n\r\n\t\t\tcommit(\"resetResponses\");\r\n\r\n\t\t\tconst { data } = await api.fetchResponses(state.pageIndex, pageSize, state.serverId, state.filter, null);\r\n\r\n\t\t\tcommit(\"setResponses\", data);\r\n\t\t} else {\r\n\t\t\tconst pageSize = state.filteredResponses.length;\r\n\r\n\t\t\tcommit(\"resetFilteredResponses\");\r\n\r\n\t\t\tconst { data } = await api.fetchResponses(state.filterPageIndex, pageSize, state.serverId, state.filter, null);\r\n\r\n\t\t\tcommit(\"setFilteredResponses\", data);\r\n\t\t}\r\n\r\n\t\tcommit(\"setResponseTableIsBusy\", false);\r\n\t},\r\n\tasync createNewResponse({ commit }, response: Response) {\r\n\t\tconst { data } = await api.createNewResponse(response);\r\n\r\n\t\tif (data && data.responseID > 0) {\r\n\t\t\tcommit(\"addNewResponses\", data);\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\tcommit(\"setfailedResponse\", data);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t},\r\n\tasync updateResponse({ commit }, response: Response) {\r\n\t\tlet { data } = await api.updateResponse(response);\r\n\t\tif (data) {\r\n\t\t\tcommit(\"updateResponse\", data);\r\n\t\t}\r\n\t},\r\n\tasync deleteResponse({ commit }, responseId: number) {\r\n\t\tlet { data } = await api.deleteResponse(responseId);\r\n\t\tif (data) {\r\n\t\t\tcommit(\"deleteResponse\", responseId);\r\n\t\t}\r\n\t},\r\n\tasync searchResponse({ commit }, searchTerm: string) {\r\n\t\tconst cancelTokenSource = axios.CancelToken.source();\r\n\r\n\t\tcommit(\"setCancelTokenSource\", cancelTokenSource);\r\n\t\tcommit(\"setResponses\", await api.responseSearch(cancelTokenSource.token, searchTerm));\r\n\t},\r\n\tasync getResponseById({ commit }, responseId: number) {\r\n\t\tconst data = await api.responseGet(responseId);\r\n\t\tcommit(\"setCurrentAlarm\", data);\r\n\t}\r\n};\r\n","import { ResponsesState } from \"./types\";\r\n\r\nexport function getDefaultState(): ResponsesState {\r\n\treturn {\r\n\t\tresponses: [],\r\n\t\tfilteredResponses: [],\r\n\t\tfailedResponse: null,\r\n\t\tpageIndex: 1,\r\n\t\tpageSize: 30,\r\n\t\tfilter: \"\",\r\n\t\tfilterPageIndex: 1,\r\n\t\tallResponsesRetrieved: false,\r\n\t\tallFilteredResponsesRetrieved: false,\r\n\t\tresponseTableIsBusy: false,\r\n\t\talarmModalOpened: false,\r\n\t\tcurrentAlarm: null,\r\n\t\talarmSetupModalLoaded: false,\r\n\t\tserverId: null\r\n\t};\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { ResponsesState, Response, ResponseTestResult } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport Vue from \"vue\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetResponses(state: ResponsesState, data: Response[]) {\r\n\t\tconst responseIds = state.responses.map(x => x.responseID);\r\n\t\tstate.responses.push(...data.filter(x => !responseIds.includes(x.responseID)));\r\n\t},\r\n\tsetFilteredResponses(state: ResponsesState, data: Response[]) {\r\n\t\tstate.filteredResponses.push(...data);\r\n\t},\r\n\tresetResponses(state: ResponsesState) {\r\n\t\tstate.responses = [];\r\n\t\tstate.pageIndex = 1;\r\n\t},\r\n\tresetFilteredResponses(state: ResponsesState) {\r\n\t\tstate.filteredResponses = [];\r\n\t\tstate.filterPageIndex = 1;\r\n\t},\r\n\taddNewResponses(state: ResponsesState, response: Response) {\r\n\t\tstate.responses.push(response);\r\n\t},\r\n\tupdateResponse(state: ResponsesState, response: Response) {\r\n\t\tlet index = state.responses.findIndex(x => x.responseID == response.responseID);\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tVue.set(state.responses, index, response);\r\n\t\t}\r\n\r\n\t\tindex = state.filteredResponses.findIndex(x => x.responseID === response.responseID);\r\n\t\tif (index !== -1) {\r\n\t\t\tVue.set(state.filteredResponses, index, response);\r\n\t\t}\r\n\t},\r\n\tdeleteResponse(state: ResponsesState, responseId: number) {\r\n\t\tif (responseId <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet index = state.responses.findIndex(x => x.responseID === responseId);\r\n\t\tif (index !== -1) {\r\n\t\t\tstate.responses.splice(index, 1);\r\n\t\t}\r\n\r\n\t\tindex = state.filteredResponses.findIndex(x => x.responseID === responseId);\r\n\t\tif (index !== -1) {\r\n\t\t\tstate.filteredResponses.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\tsetfailedResponse(state: ResponsesState, response: Response | null) {\r\n\t\tstate.failedResponse = response;\r\n\t},\r\n\tsetAlarmModalVisible(state: ResponsesState, isVisible: boolean) {\r\n\t\tstate.alarmModalOpened = isVisible;\r\n\t},\r\n\tsetCurrentAlarm(state: ResponsesState, alarm: Response) {\r\n\t\tstate.currentAlarm = alarm;\r\n\t},\r\n\tsetPageIndex(state: ResponsesState, pageIndex: number) {\r\n\t\tstate.pageIndex = pageIndex;\r\n\t},\r\n\tsetFilter(state: ResponsesState, filter: string) {\r\n\t\tstate.filter = filter;\r\n\t},\r\n\tsetFilterPageIndex(state: ResponsesState, pageIndex: number) {\r\n\t\tstate.filterPageIndex = pageIndex;\r\n\t},\r\n\tsetAllResponsesRetrieved(state: ResponsesState, allRetrieved: boolean) {\r\n\t\tstate.allResponsesRetrieved = allRetrieved;\r\n\t},\r\n\tsetAllFilteredResponsesRetrieved(state: ResponsesState, allRetrieved: boolean) {\r\n\t\tstate.allFilteredResponsesRetrieved = allRetrieved;\r\n\t},\r\n\tsetResponseTableIsBusy(state: ResponsesState, isBusy: boolean) {\r\n\t\tstate.responseTableIsBusy = isBusy;\r\n\t},\r\n\tsetAlarmSetupModalLoaded(state: ResponsesState, flag: boolean) {\r\n\t\tstate.alarmSetupModalLoaded = flag;\r\n\t},\r\n\tsetServerId(state: ResponsesState, serverId: number | null) {\r\n\t\tstate.serverId = serverId;\r\n\t},\r\n\tresetState(state: ResponsesState) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { ResponsesState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: ResponsesState = getDefaultState();\r\nconst namespaced: boolean = true;\r\n\r\nexport const responses: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { EventSearchState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tevents: state => state.Events,\r\n\teventAlarmTypes: state => state.AlarmTypes,\r\n\teventCategories: state => state.Categories,\r\n\teventDeviceTypes: state => {\r\n\t\tvar deviceTypes = !state.DeviceTypes ? [] : [...state.DeviceTypes];\r\n\t\tdeviceTypes.unshift({ serverTypeID: 435, title: \"Manual Raise\" });\r\n\t\treturn deviceTypes;\r\n\t},\r\n\teventOperators: state => state.Operators,\r\n\tsearchableEventTypes: state => state.SearchableEventTypes,\r\n\tsearching: state => state.searching\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { EventSearchState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport { devicesApi } from \"@/services/api.devices.service\";\r\nimport { ServerType } from \"../devices/types\";\r\nconst { currentDateFormatted, weekAgoDateFormatted } = formatDateMixin.methods;\r\n\r\nconst defaultSearchFilter = {\r\n\tfrom: weekAgoDateFormatted(),\r\n\tuntil: currentDateFormatted(),\r\n\tgroupID: 1\r\n};\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadEvents({ commit }, filter = defaultSearchFilter) {\r\n\t\tcommit(\"setCacheKey\", null);\r\n\t\tcommit(\"setTotalEvents\", null);\r\n\t\tcommit(\"setEvents\", []);\r\n\t\tcommit(\"setSearching\", true);\r\n\t\tconst events = await api.eventSearch(filter);\r\n\t\tcommit(\"setEvents\", events);\r\n\t\tcommit(\"setSearching\", false);\r\n\t},\r\n\r\n\tasync loadSearchableEventTypes({ state, commit }) {\r\n\t\tconst searchableEventsNotSet = state.SearchableEventTypes.length === 0;\r\n\t\tif (searchableEventsNotSet) {\r\n\t\t\tconst searchableEventTypes = await api.loadSearchableEventTypes();\r\n\t\t\tcommit(\"setSearchableEventTypes\", searchableEventTypes);\r\n\t\t}\r\n\t\t// else we already loaded the event types from the api so there's nothing to do\r\n\t},\r\n\r\n\tasync loadDeviceTypes({ commit }) {\r\n\t\tconst deviceTypes: ServerType[] = await devicesApi.getDeviceTypes();\r\n\t\tcommit(\"setDeviceTypes\", deviceTypes);\r\n\t},\r\n\r\n\tasync loadOperators({ commit }) {\r\n\t\tconst operators = await api.loadAvailableEventOperators();\r\n\t\tcommit(\"setOperators\", operators);\r\n\t},\r\n\r\n\tasync loadEventCategories({ commit }) {\r\n\t\tconst categories = await api.loadAvailableEventCategories();\r\n\t\tcommit(\"setCategories\", categories);\r\n\t},\r\n\r\n\tasync loadAlarmTypes({ commit }, serverTypeID: number) {\r\n\t\tconst alarmTypes = await api.loadAlarmTypes(serverTypeID);\r\n\t\tcommit(\"setAlarmTypes\", alarmTypes);\r\n\t},\r\n\r\n\tasync loadPaginatedEvents({ commit }, { newSearch, filter }) {\r\n\t\tvar data = await api.paginatedEventSearch(filter);\r\n\t\tif (newSearch == true) {\r\n\t\t\tcommit(\"setEvents\", data.eventSearchResult);\r\n\t\t} else {\r\n\t\t\tcommit(\"appendPaginatedEvents\", data.eventSearchResult);\r\n\t\t}\r\n\t\tcommit(\"setCacheKey\", data.cacheKey);\r\n\t\tcommit(\"setTotalEvents\", data.totalResults);\r\n\t}\r\n};\r\n","\r\nimport { EventSearchState } from \"./types\";\r\n\r\nexport function getDefaultState(): EventSearchState {\r\n return {\r\n Events: [],\r\n SearchableEventTypes: [],\r\n AlarmTypes: [],\r\n Categories: [],\r\n DeviceTypes: [],\r\n Operators: [],\r\n EventTags: [],\r\n searching: false,\r\n IncidentReportOpen: false,\r\n IncidentReportDownloaded: false,\r\n\t\tEventRecordsWithClips: [],\r\n\t\tCacheKey: null,\r\n\t\tTotalEvents: null\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport {\r\n\tEventSearchState,\r\n\tEvent,\r\n\tEventType,\r\n\tDeviceType,\r\n\tCategory,\r\n\tAlarmType,\r\n\tOperator,\r\n\tEventRecordHasClipStatus\r\n} from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetEvents(state, data: Event[]) {\r\n\t\tstate.Events = data;\r\n\t},\r\n\tsetSearchableEventTypes(state, data: EventType[]) {\r\n\t\tstate.SearchableEventTypes = data;\r\n\t},\r\n\tsetDeviceTypes(state, data: DeviceType[]) {\r\n\t\tstate.DeviceTypes = data;\r\n\t},\r\n\tsetCategories(state, data: Category[]) {\r\n\t\tstate.Categories = data;\r\n\t},\r\n\tsetAlarmTypes(state, data: AlarmType[]) {\r\n\t\tstate.AlarmTypes = data;\r\n\t},\r\n\tsetOperators(state, data: Operator[]) {\r\n\t\tstate.Operators = data;\r\n\t},\r\n\tsetSearching(state, searching: boolean) {\r\n\t\tstate.searching = searching;\r\n\t},\r\n\tsetEventFlagged(state, { eventId, flagged }) {\r\n\t\tconst event = state.Events.filter(e => e.eventID === eventId);\r\n\t\tif (event[0]) {\r\n\t\t\tevent[0].flaggedForReview = flagged;\r\n\t\t}\r\n\t},\r\n\tsetEventSearchIncidentReportShown(state, shown: boolean) {\r\n\t\tstate.IncidentReportOpen = shown;\r\n\t},\r\n\tsetEventSearchIncidentReportDownloaded(state, downloaded: boolean) {\r\n\t\tstate.IncidentReportDownloaded = downloaded;\r\n\t},\r\n\tremoveEventFromSearchResults(state, eventId: number) {\r\n\t\tconst indexOfEvent = state.Events.findIndex(e => e.eventID === eventId);\r\n\t\tif (indexOfEvent !== -1) {\r\n\t\t\tstate.Events.splice(indexOfEvent, 1);\r\n\t\t}\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n\tsetEventRecordsWithClips(state, data: EventRecordHasClipStatus[]) {\r\n\t\tstate.EventRecordsWithClips = data;\r\n\t},\r\n\tappendPaginatedEvents(state, data: Event[]) {\r\n\t\tstate.Events = [...state.Events, ...data];\r\n\t},\r\n\tsetCacheKey(state, cacheKey: string) {\r\n\t\tstate.CacheKey = cacheKey;\r\n\t},\r\n\tsetTotalEvents(state, totalResults: number) {\r\n\t\tstate.TotalEvents = totalResults\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { EventSearchState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: EventSearchState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const eventSearch: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","const wait = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\r\nexport default wait\r\n","import { GetterTree } from \"vuex\";\r\nimport { Mobile } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport wait from \"@/utils/wait\";\r\nimport MobileEventShareStates from \"@/types/sv-data/enums/MobileEventShareStates\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetLiveDeviceId: state => state.LiveDevice.deviceID,\r\n\tgetWatchedDeviceLocation: state => async (timeOut: number) => {\r\n\t\tlet elapsedTime = 0;\r\n\t\tconst delayMs = 10;\r\n\r\n\t\tif(state.DeviceLocation) {\r\n\t\t\treturn state.DeviceLocation\r\n\t\t}\r\n\r\n\t\twhile (elapsedTime < timeOut) {\r\n\t\t\tawait wait(delayMs);\r\n\t\t\tif(state.DeviceLocation) {\r\n\t\t\t\treturn state.DeviceLocation\r\n\t\t\t}\r\n\t\t\telapsedTime += delayMs;\r\n\t\t}\r\n\r\n\t\tthrow new Error(\"getWatchedDeviceLocation timed out\");\r\n\t},\r\n\tgetUserAssetMapDisplayName: state => state.UserAssetMapItem ? state.UserAssetMapItem.title : null,\r\n\tgetEventShareQueue: state => {\r\n\t\tconst visibleStates = [MobileEventShareStates.Sent,MobileEventShareStates.Accepted];\r\n\t\treturn state.EventShareItems\r\n\t\t\t.filter(x => x.eventID != (state.ActiveEventShareItem ? state.ActiveEventShareItem.eventID : 0)\r\n\t\t\t\t\t&& visibleStates.includes(x.state)\r\n\t\t\t)\r\n\t},\r\n\tgetCanUserEventShare: state => state.UserAssetType ? state.UserAssetType.shareable : false,\r\n\tgetCurrentLocationRegionGroupID: state => {\r\n\t\tif(state.Regions && state.Regions.size && state.DeviceLocation){\r\n\t\t\t// The regions will be retrieved in the order of the group tree structure,\r\n\t\t\t// we need to work backwards to find the lowest level region the user is located within and set that to the group id\r\n\t\t\tlet regionArray = Array.from(state.Regions, ([name]) => (name));\r\n\t\t\tlet groupId = 0;\r\n\t\t\tregionArray.reverse().some(groupID => {\r\n\t\t\t\tconst region = state.Regions.get(groupID);\r\n\t\t\t\tif(google.maps.geometry.poly.containsLocation(\r\n\t\t\t\t\tstate.DeviceLocation,\r\n\t\t\t\t\tregion.poly\r\n\t\t\t\t\t)\r\n\t\t\t\t){\r\n\t\t\t\t\tgroupId = groupID;\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn groupId;\r\n\t\t}\r\n\t}\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport { Mobile, UserAssetStatus, MobileEventShareInfo } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport mobileApi from \"@/services/api.mobile.service\";\r\nimport api from \"@/services/api.service\";\r\nimport MobileEventShareStates from \"@/types/sv-data/enums/MobileEventShareStates\";\r\nimport GPSService from \"@/services/gps.service\";\r\nimport { convertStringToLatLng } from \"@sureview/v2-mapping-saas\";\r\n\r\nconst geoCoder = new GPSService();\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadUserPermissions({ commit }) {\r\n\t\tconst permissions = await mobileApi.loadUserPermissions();\r\n\t\tcommit(\"setUserPermissions\", permissions);\r\n\t},\r\n\r\n\tasync registerUserDevice(_, { deviceId, deviceType }) {\r\n\t\treturn await mobileApi.registerUserDevice(deviceId, deviceType);\r\n\t},\r\n\r\n\tasync extendMobileSession(_) {\r\n\t\tawait mobileApi.extendMobileSession();\r\n\t},\r\n\r\n\tasync fetchAuditEndpoint({ commit }) {\r\n\t\tconst endpoint = await api.getAuditServiceAddress();\r\n\t\tcommit(\"setAuditEndpoint\", endpoint);\r\n\t},\r\n\r\n\tasync addNoteForEvent({ state }, { guardNote, eventId }) {\r\n\t\tawait mobileApi.addNoteForEvent(guardNote, eventId);\r\n\t},\r\n\r\n\tasync addEventRecordForGuard(\r\n\t\t_,\r\n\t\t{ eventId, details, objectId, eventRecordTypeId }\r\n\t) {\r\n\t\treturn await mobileApi.addEventRecordForGuard(\r\n\t\t\teventId,\r\n\t\t\tdetails,\r\n\t\t\tobjectId,\r\n\t\t\teventRecordTypeId\r\n\t\t);\r\n\t},\r\n\r\n\tasync loadStarredDevices({ commit }) {\r\n\t\tconst devices = await mobileApi.getAllStarredDevices();\r\n\t\tcommit(\"setStarredDevices\", devices);\r\n\t},\r\n\r\n\tasync toggleDeviceStarred({ dispatch }, deviceId) {\r\n\t\tawait mobileApi.toggleDeviceStarred(deviceId);\r\n\t\tawait dispatch(\"loadStarredDevices\");\r\n\t},\r\n\r\n\tasync loadQuickCloseOutcomes({ commit }) {\r\n\t\tconst outcomes = await mobileApi.getQuickCloseOutcomes();\r\n\t\tcommit(\"setQuickCloseList\", outcomes);\r\n\t},\r\n\r\n\tasync loadUserMapOnlineStatus({ commit }, userId: number | null){\r\n\t\tif (userId){\r\n\t\t\tconst currentStateId = await api.getCurrentUserMobileStateId(userId);\r\n\t\t\t// stateId of 2 = offline,\r\n\t\t\tcommit(\"setUserMapOnlineStatus\", (!currentStateId || currentStateId === 2) ? false : true);\r\n\t\t}\r\n\t},\r\n\r\n\tasync setUserMapOnlineStatus({ commit }, online: boolean) {\r\n\t\tawait api.toggleCurrentMobileUserState(online);\r\n\t\tcommit(\"setUserMapOnlineStatus\", online);\r\n\t},\r\n\r\n\tasync loadUserAssetMapItem({ commit }){\r\n\t\tconst mapItem = await api.getAssetMapItemForUser();\r\n\t\tcommit(\"setUserAssetMapItem\", mapItem);\r\n\t\tif(mapItem && mapItem.assetTypeId){\r\n\t\t\tconst assetType = await api.getAssetTypeByID(mapItem.assetTypeId)\r\n\t\t\tcommit(\"setUserAssetType\", assetType)\r\n\t\t}\r\n\t},\r\n\r\n\tasync setUserAssetStatus({ state, commit }, assetStatus: UserAssetStatus){\r\n\t\tawait api.setAssetStatus(\r\n\t\t\t{\r\n\t\t\t\tassetId : assetStatus.assetId,\r\n\t\t\t\tstatus : assetStatus.status,\r\n\t\t\t\tstatusNote : assetStatus.statusNote\r\n\t\t\t});\r\n\r\n\t\tlet userAssetMapItem = { ...state.UserAssetMapItem };\r\n\t\tuserAssetMapItem.status = assetStatus.status;\r\n\t\tuserAssetMapItem.statusNote = assetStatus.statusNote;\r\n\t\tcommit(\"setUserAssetMapItem\", userAssetMapItem);\r\n\t},\r\n\tasync loadEventShareItems({ commit, state }){\r\n\t\tconst newItems = await api.getMobileEventShareQueueForUser();\r\n\r\n\t\tif(newItems){\r\n\t\t\tvar formattedItems = [];\r\n\t\t\tnewItems.forEach(async i => {\r\n\t\t\t\tvar latLng;\r\n\t\t\t\tvar eventItemInState = state.EventShareItems.find(x => x.eventID == i.eventID);\r\n\r\n\t\t\t\t// If we already have the event share, and the location or address hasn't change and we have a latLng use that rather than\r\n\t\t\t\t// call the google api again (which can cause a delay in rendering)\r\n\t\t\t\tif(eventItemInState\r\n\t\t\t\t\t&& eventItemInState.latLng\r\n\t\t\t\t\t&& eventItemInState.eventLocation == i.eventLocation\r\n\t\t\t\t\t&& eventItemInState.eventAddress == i.eventAddress)\r\n\t\t\t\t{\r\n\t\t\t\t\tlatLng = eventItemInState.latLng;\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\t// If we have a location converted it into a LatLng otherwise do an address lookup\r\n\t\t\t\t\tlatLng = i.eventLocation ?\r\n\t\t\t\t\tconvertStringToLatLng(i.eventLocation)\r\n\t\t\t\t\t: (i.eventAddress ? (await geoCoder.decodeLocation(i.eventAddress, process.env.VUE_APP_GOOGLE_MAPS_API_KEY)).location : \"\")\r\n\t\t\t\t}\r\n\r\n\t\t\t\tformattedItems.push({\r\n\t\t\t\t\t...i,\r\n\t\t\t\t\tlatLng: latLng\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\t);\r\n\r\n\t\t\tif(state.ActiveEventShareItem){\r\n\t\t\t\tconst itemIndex = formattedItems.findIndex(x => x.eventID === state.ActiveEventShareItem.eventID);\r\n\t\t\t\tif(itemIndex === -1 )\r\n\t\t\t\t\tcommit(\"setActiveEventShareItem\", null)\r\n\t\t\t}\r\n\r\n\t\t\tconst activeItem = formattedItems.find(x => x.state === MobileEventShareStates.Accepted);\r\n\t\t\tif(activeItem)\r\n\t\t\t\tcommit(\"setActiveEventShareItem\", activeItem)\r\n\r\n\t\t\tcommit(\"setEventShareItems\", formattedItems);\r\n\t\t} else {\r\n\t\t\tcommit(\"setActiveEventShareItem\", null)\r\n\t\t\tcommit(\"setEventShareItems\", []);\r\n\t\t}\r\n\r\n\t},\r\n\tasync setActiveEventShareItem({ commit, state }, item: MobileEventShareInfo){\r\n\t\tif(item){\r\n\t\t\t// check if item is in the event share list\r\n\t\t\tconst itemIndex = state.EventShareItems.findIndex(x => x.eventID == item.eventID);\r\n\t\t\tif(itemIndex === -1 )\r\n\t\t\t\tthrow \"selected item does not exist in the event share queue\";\r\n\t\t}\r\n\r\n\t\tcommit(\"setActiveEventShareItem\", item);\r\n\t}\r\n};\r\n","import { Mobile } from \"./types\";\r\nimport { ICamera } from \"@/store/views/types\";\r\nimport MapLabel from \"@/scripts/mapping/mapLabel\";\r\n\r\nexport function getDefaultState(): Mobile {\r\n return {\r\n \tisRightSideBarOpen: false,\r\n\t\tisLeftSideBarOpen: false,\r\n\t\tshowDirections: true,\r\n\t\tDeviceLocation: \"\",\r\n\t\tIsWatchingLocation: false,\r\n AuditEndpoint: \"\",\r\n MobileFeatures: {\r\n isSOSEnabled: false,\r\n isBreakCoverEnabled: true,\r\n isLostModeEnabled: false,\r\n isManualRaiseEnabled: false,\r\n isClaimedEnabled: false,\r\n isFileUploadEnabled: true\r\n },\r\n UnavailableStatuses: [],\r\n LiveDevice: { title: \"Live Cameras\" } as ICamera,\r\n MobileMode: \"\",\r\n MapEnabled: false,\r\n StarredDevices: [],\r\n UserPermissions: {},\r\n\t\tNotificationText: \"\",\r\n\t\tManageDataLoading: true,\r\n\t\tManageAlarmQueueFilters: [],\r\n\t\tManageCurrentAlarmQueueFilters: [],\r\n\t\tMapGoto: null,\r\n QuickCloseList: [],\r\n UserMapOnlineStatus: true, // ensure online is defaulted to true\r\n UserAssetMapItem: null,\r\n UserAssetType: null,\r\n EventShareItems: [],\r\n ActiveEventShareItem: null,\r\n FocusedEventID: null,\r\n NavigationMode: \"WALKING\",\r\n NavigateToActiveAlarm: false,\r\n NavigationLocation : null,\r\n ChatOpen: false,\r\n ChatTab: \"General\",\r\n Regions: new Map()\r\n }\r\n}\r\n","/* istanbul ignore file */\r\nexport class ViewEventHandler {\r\n\t[s: string]: (data) => void;\r\n}\r\n\r\nexport class ViewEventManager {\r\n\t[s: string]: ViewEventHandler;\r\n}\r\n\r\nexport interface Dimensions {\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\nexport interface MouseProperties {\r\n\tx: number;\r\n\ty: number;\r\n\twidth: number;\r\n\twidthPerColumn: number;\r\n\tcol: number;\r\n\theight: number;\r\n\theightPerRow: number;\r\n\trow: number;\r\n\theight2: number;\r\n\tcellAt: ViewCellObject;\r\n}\r\n\r\nexport interface ViewCellObject {\r\n\theight: number;\r\n\twidth: number;\r\n\tpluginTypeId: any;\r\n\tviewCellId: number;\r\n\tx: number;\r\n\ty: number;\r\n\tcontents: any;\r\n}\r\n\r\nexport interface ViewObject {\r\n\theight: number;\r\n\twidth: number;\r\n\ttitle: string;\r\n\tviewId: number;\r\n\tpublic: boolean;\r\n\tcells: ViewCellObject[];\r\n\tgroupId: number | null;\r\n\townerUserId: number;\r\n\tdateLoaded?: string;\r\n\tpages?: ViewPage[];\r\n\tlocked: boolean;\r\n}\r\n\r\nexport interface ViewPage {\r\n\tviewId: number;\r\n\tpageNumber: number;\r\n\tcolumns: number;\r\n\trows: number;\r\n\tcells: ViewCellObject[];\r\n\tlocked: boolean;\r\n}\r\n\r\nexport enum ViewMode {\r\n\tNone,\r\n\tEdit,\r\n\tAdd\r\n}\r\n\r\nexport interface ViewsState {\r\n\tpluginTypes: any[];\r\n\tviews: ViewObject[];\r\n\tuserViews: ViewObject[];\r\n\tselectedView: ViewObject;\r\n\tselectedTileType: any;\r\n\tviewMode: ViewMode;\r\n\tsideBarExtended: boolean;\r\n\tsideBarPinned: boolean;\r\n\tlatestEvent: any;\r\n\tcellContents: any;\r\n\tgroupsList: any[];\r\n\teventHandlers: ViewEventManager;\r\n\tviewSessionId: string;\r\n}\r\n\r\nexport interface UpdatedViewCellData {\r\n\tviewId: number;\r\n\tviewCellId: number;\r\n\tcontents: any;\r\n\tdefaultContents: any;\r\n}\r\n\r\nexport interface CellPosition {\r\n\twidth: number;\r\n\theight: number;\r\n\tx: number;\r\n\ty: number;\r\n}\r\n\r\nexport interface ICamera {\r\n\tdeviceID: number;\r\n\tdeviceTypeID: number;\r\n\tgroupId: number;\r\n\tsettingsMeta: string;\r\n\ttitle: string;\r\n}\r\n","import Vue from \"vue\";\r\nimport { MutationTree } from \"vuex\";\r\nimport { Mobile, MobileEventShareInfo } from \"./types\";\r\nimport { AlarmQueueFilter } from \"@/store/eventqueue/types\";\r\n\r\nimport { getDefaultState } from \"./state\";\r\n\r\nimport {\r\n\tILatLng\r\n} from \"@sureview/v2-mapping-saas\";\r\n\r\nimport \"@/scripts/dictionary\";\r\nimport { AssetMapLayerItem } from \"@/components/mobile-assets/types\";\r\nimport AssetType from \"@/types/sv-data/AssetType\";\r\nimport MapLabel from \"@/scripts/mapping/mapLabel\";\r\n\r\nexport const mutations: MutationTree = {\r\n\t// Called by async actions\r\n\tsetAuditEndpoint(state, auditEndpoint) {\r\n\t\tstate.AuditEndpoint = auditEndpoint;\r\n\t},\r\n\tsetDeviceLocation(state, deviceLocation) {\r\n\t\tstate.DeviceLocation = deviceLocation;\r\n\t},\r\n\tsetIsWatchingLocation(state, value: boolean) {\r\n\t\tstate.IsWatchingLocation = value;\r\n\t},\r\n\ttoggleRightSideBarVisibility(state) {\r\n\t\tstate.isRightSideBarOpen = !state.isRightSideBarOpen;\r\n\t},\r\n\ttoggleLeftSideBarVisibility(state) {\r\n\t\tstate.isLeftSideBarOpen = !state.isLeftSideBarOpen;\r\n\t},\r\n\tsetShowDirections(state, showDirections) {\r\n\t\tstate.showDirections = showDirections;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n\tsetLiveDevice(state, device) {\r\n\t\tstate.LiveDevice = device;\r\n\t},\r\n\tsetMobileMode(state, mode: string) {\r\n\t\tif (state.MobileMode !== mode) {\r\n\t\t\tstate.MobileMode = mode;\r\n\t\t}\r\n\t},\r\n\tsetMapEnabled(state, enabled: boolean) {\r\n\t\tstate.MapEnabled = enabled;\r\n\t},\r\n\tsetStarredDevices(state, devices) {\r\n\t\tstate.StarredDevices = devices;\r\n\t},\r\n\tsetUserPermissions(state, permissions) {\r\n\t\tstate.UserPermissions = permissions;\r\n\t},\r\n\tsetNotificationText(state, notificationText) {\r\n\t\tstate.NotificationText = notificationText;\r\n\t},\r\n\tsetManageDataLoading: (state, loading: boolean) => state.ManageDataLoading = loading,\r\n\tsetManageFilters: (state, filters: AlarmQueueFilter[]) => state.ManageAlarmQueueFilters = filters,\r\n\tsetManageCurrentFilters: (state, filters: AlarmQueueFilter[]) => state.ManageCurrentAlarmQueueFilters = filters,\r\n\tsetMapGoto: (state, gotoFunction: (latLng: ILatLng) => void) => state.MapGoto = gotoFunction,\r\n\tsetQuickCloseList(state, quickCloseList) {\r\n\t\tstate.QuickCloseList = quickCloseList;\r\n\t},\r\n\tsetUserMapOnlineStatus: (state, onlineStatus: boolean) => state.UserMapOnlineStatus = onlineStatus,\r\n\tsetUserAssetMapItem(state, mapItem: AssetMapLayerItem){\r\n\t\tstate.UserAssetMapItem = mapItem ? { ...mapItem } : null;\r\n\t},\r\n\tsetUserAssetType(state, assetType: AssetType){\r\n\t\tstate.UserAssetType = assetType;\r\n\t},\r\n\tsetEventShareItems(state, items: MobileEventShareInfo[]){\r\n state.EventShareItems = items;\r\n },\r\n setActiveEventShareItem(state, item: MobileEventShareInfo){\r\n\t\tif(!item){\r\n\t\t\tif(state.NavigateToActiveAlarm)\r\n\t\t\t\tstate.NavigationLocation = null;\r\n\t\t\tstate.NavigateToActiveAlarm = false;\r\n\t\t}\r\n\r\n\t\t// if the navigation is active, reset the nav location when changing alarm\r\n\t\tif(item && state.NavigateToActiveAlarm){\r\n\t\t\tstate.NavigationLocation = item.latLng;\r\n\t\t}\r\n state.ActiveEventShareItem = item;\r\n\r\n },\r\n\tsetNavigationMode(state, mode: string){\r\n\t\tstate.NavigationMode = mode;\r\n\t},\r\n\tsetNavigateToActiveAlarm(state, navigateTo: boolean) {\r\n\t\tif (navigateTo) {\r\n\t\t\tstate.isRightSideBarOpen = false;\r\n\t\t}\r\n\r\n\t\tstate.NavigateToActiveAlarm = navigateTo;\r\n\t\tstate.NavigationLocation = null;\r\n\t\tstate.NavigationLocation = state.ActiveEventShareItem ? state.ActiveEventShareItem.latLng : null;\r\n\t},\r\n\tsetNavigationLocation(state, location: boolean){\r\n\t\tstate.NavigationLocation = location;\r\n\t},\r\n\tsetFocusedEventID(state, eventID: number | null){\r\n\t\tstate.FocusedEventID = eventID;\r\n\t},\r\n\tsetChatOpen(state, open: boolean){\r\n\t\tstate.ChatOpen = open;\r\n\t},\r\n\tsetChatTab(state, tab: string){\r\n\t\tstate.ChatTab = tab;\r\n\t},\r\n\tsetRegions(state, regions: Map){\r\n\t\tstate.Regions = regions;\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { Mobile } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: Mobile = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const mobile: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { ViewsState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { axiosInstance } from \"@/axios.instance\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetViews: state => state.views,\r\n\tgetUserViews: state => state.userViews,\r\n\tgetSelectedView: state => state.selectedView,\r\n\tgetPluginTypes: state => state.pluginTypes,\r\n\tgetViewMode: state => state.viewMode,\r\n\tgetSelectedTileType: state => state.selectedTileType,\r\n\tgetSideBarExtended: state => state.sideBarExtended,\r\n\tgetSideBarPinned: state => state.sideBarPinned,\r\n\tgetEvent: state => state.latestEvent,\r\n\tgetDataServiceLocation: state => axiosInstance.defaults.baseURL,\r\n\tgetContents: state => (viewCellId: number) => {\r\n\t\tif (viewCellId) {\r\n\t\t\tconst contents = state.cellContents[viewCellId.toString()];\r\n\t\t\treturn contents;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\tgetViewSessionId: state => state.viewSessionId\r\n};\r\n","import { axiosJsonInstance } from \"@/axios.instance\";\r\nimport { AxiosInstance } from \"axios\";\r\nimport { UpdatedViewCellData } from \"@/store/views/types\";\r\n\r\nclass ViewsApi {\r\n\tprivate axios: AxiosInstance;\r\n\r\n\tconstructor() {\r\n\t\tthis.axios = axiosJsonInstance;\r\n\t}\r\n\r\n\tpublic async getViewsList(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/Views/List\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getViewDetails(viewId: number, userId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Views/GetDetails/${viewId}?userId=${userId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getUserViews(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/UserViews`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getSharedAdhocView(sessionId: string): Promise {\r\n\t\tconst { data } = await this.axios.get(`/UserViews/AdhocUserView/${sessionId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async addUserView(viewId: number): Promise {\r\n\t\tconst { data } = await this.axios.post(`/UserViews/Add`, viewId);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async removeUserView(viewId: number): Promise {\r\n\t\treturn await this.axios.delete(`/UserViews/Remove?viewId=${viewId}`);\r\n\t}\r\n\r\n\tpublic async getViewPlugins(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/Plugins\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async saveView(view: any): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/Views/Save\", view);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteView(viewId: number): Promise {\r\n\t\treturn await this.axios.delete(`/Views/Delete/${viewId}`);\r\n\t}\r\n\r\n\tpublic async fetchViewUpdateTime(viewId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Views/LastUpdated/${viewId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async saveViewCellContent(\r\n\t\tviewId: number,\r\n\t\tsessionId: string,\r\n\t\tviewCellId: number,\r\n\t\tcontent: any\r\n\t): Promise {\r\n\t\tawait this.axios.post(`/ViewCells/SetContents`, {\r\n\t\t\tviewId,\r\n\t\t\tviewCellId,\r\n\t\t\tsessionId,\r\n\t\t\tcontent\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async shareView(viewId: number, userIds: number[]): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/Views/Share/WithUsers\", { viewId, userIds });\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async shareViewWithAdhoc(viewId: number, fullName: string, email: string): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/Views/Share/WithAdhoc\", { viewId, fullName, email });\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getViewSharesForView(viewId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Views/Share/Details/${viewId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async removeUserShare(viewId: number, userId: number) {\r\n\t\tvar { status } = await this.axios.delete(`/Views/Share/RemoveUser/${viewId}/${userId}`);\r\n\t\tif (status != 200) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async removeAdhocUserShare(viewId: number, name: string) {\r\n\t\tvar { status } = await this.axios.delete(`/Views/Share/RemoveAdhocUser/${viewId}/${name}`);\r\n\t\tif (status != 200) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async fetchViewContentUpdateTime(viewId: number) {\r\n\t\tconst { data } = await this.axios.get(`/ViewCells/LastUpdated/${viewId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async fetchUpdatedCellContent(viewId: number, sessionId: string): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/ViewCells/GetContents\", {\r\n\t\t\tviewId,\r\n\t\t\tsessionId\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async toggleLockedView(viewId: number){\r\n\t\tvar { status } = await this.axios.get(`/Views/ToggleLock/${viewId}`);\r\n\t\tif (status != 200) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async getUserGroupsFromView(viewId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Views/UserGroups/${viewId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async setUserGroupsToView(viewId: number, userGroups: {}): Promise {\r\n\t\treturn await this.axios.post(`/Views/UserGroups/${viewId}`, userGroups);\r\n\t}\r\n}\r\n\r\nconst viewsApi = new ViewsApi();\r\nexport default viewsApi;\r\n","import api from \"../../services/api.views.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { ViewsState, ViewObject, ViewCellObject, Dimensions } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadPluginTypes({ commit }) {\r\n\t\t// get list of installed plugins from the data service\r\n\t\tlet plugins = await api.getViewPlugins();\r\n\t\tcommit(\"setPluginTypes\", plugins);\r\n\t},\r\n\r\n\tasync loadViews({ commit }) {\r\n\t\tlet viewData = [];\r\n\r\n\t\t// get a list of views that the user can see\r\n\t\t// the data service takes care of permissions and groups etc...\r\n\t\tlet views = await api.getViewsList();\r\n\r\n\t\tviewData = views.map(v => {\r\n\t\t\t// map view objects\r\n\t\t\treturn {\r\n\t\t\t\tviewId: v.viewId,\r\n\t\t\t\ttitle: v.title,\r\n\t\t\t\twidth: 1,\r\n\t\t\t\theight: 1,\r\n\t\t\t\tcells: [],\r\n\t\t\t\tgroupId: v.groupId,\r\n\t\t\t\tpublic: v.isPublic,\r\n\t\t\t\townerUserId: v.ownerUserId\r\n\t\t\t} as ViewObject;\r\n\t\t});\r\n\r\n\t\tcommit(\"setViews\", viewData);\r\n\t},\r\n\r\n\tasync loadUserViews({ commit }) {\r\n\t\tlet userViews = [];\r\n\r\n\t\t// get the list of views the user has choosen to persist on screen\r\n\t\tlet views = await api.getUserViews();\r\n\r\n\t\tuserViews = views.map(v => {\r\n\t\t\t// map view objects\r\n\t\t\treturn {\r\n\t\t\t\tviewId: v.viewId,\r\n\t\t\t\ttitle: v.title,\r\n\t\t\t\twidth: 1,\r\n\t\t\t\theight: 1,\r\n\t\t\t\tcells: [],\r\n\t\t\t\tgroupId: v.groupId,\r\n\t\t\t\tpublic: v.isPublic,\r\n\t\t\t\townerUserId: v.ownerUserId,\r\n\t\t\t\tlocked: v.isLocked\r\n\t\t\t} as ViewObject;\r\n\t\t});\r\n\r\n\t\tcommit(\"setUserViews\", userViews);\r\n\t},\r\n\r\n\tasync loadAdhocUserView({ commit }, sessionId) {\r\n\t\tlet view = await api.getSharedAdhocView(sessionId);\r\n\r\n\t\tvar views = [\r\n\t\t\t{\r\n\t\t\t\tviewId: view.viewId,\r\n\t\t\t\ttitle: view.title,\r\n\t\t\t\twidth: 1,\r\n\t\t\t\theight: 1,\r\n\t\t\t\tcells: [],\r\n\t\t\t\tgroupId: view.groupId,\r\n\t\t\t\tpublic: view.isPublic,\r\n\t\t\t\townerUserId: view.ownerUserId\r\n\t\t\t} as ViewObject\r\n\t\t];\r\n\r\n\t\tcommit(\"setUserViews\", views);\r\n\t},\r\n\r\n\tasync getViewProperties({ commit, state, rootGetters }, viewId) {\r\n\t\tlet userId = await rootGetters.getUserId;\r\n\r\n\t\t// go and get the details, pages, cells, plugins etc...\r\n\t\treturn await api.getViewDetails(viewId, userId);\r\n\r\n\t},\r\n\r\n\tasync getViewDetails({ commit, state, rootGetters }, viewId) {\r\n\t\t// current userId\r\n\t\tlet userId = await rootGetters.getUserId;\r\n\r\n\t\t// views currently in the store\r\n\t\tlet views = JSON.parse(JSON.stringify(state.userViews));\r\n\r\n\t\t// find the one we have selected\r\n\t\tlet viewIndex = views.findIndex(v => v.viewId == viewId);\r\n\r\n\t\tlet currentView = views[viewIndex];\r\n\r\n\t\t// go and get the details, pages, cells, plugins etc...\r\n\t\tlet viewDetails = await api.getViewDetails(viewId, userId);\r\n\r\n\t\t// update our copy of the view with the details\r\n\t\tcurrentView.groupId = viewDetails.groupId;\r\n\t\tcurrentView.public = viewDetails.isPublic;\r\n\t\tcurrentView.ownerUserId = viewDetails.ownerUserId;\r\n\t\tcurrentView.dateLoaded = viewDetails.dateLoaded;\r\n\r\n\t\t// TODO : handle pagination\r\n\r\n\t\t// map each cell\r\n\t\tlet cells = viewDetails.pages[0].cells.map(c => {\r\n\t\t\treturn {\r\n\t\t\t\theight: c.rowSpan,\r\n\t\t\t\twidth: c.columnSpan,\r\n\t\t\t\tx: c.x,\r\n\t\t\t\ty: c.y,\r\n\t\t\t\tpluginTypeId: c.pluginId,\r\n\t\t\t\tviewCellId: c.viewCellId,\r\n\t\t\t\tcontents: viewDetails.isPublic ? c.defaultContents : c.contents\r\n\t\t\t} as ViewCellObject;\r\n\t\t});\r\n\r\n\t\t// update the object\r\n\t\tviews[viewIndex] = currentView;\r\n\r\n\t\t// commit updated view data to the store\r\n\t\tcommit(\"setUserViews\", views);\r\n\r\n\t\t// update the selected view\r\n\t\tcommit(\"setSelectedView\", currentView);\r\n\r\n\t\t// update the cells\r\n\t\tcommit(\"setSelectedViewCells\", cells);\r\n\r\n\t\t// set our session id\r\n\t\tcommit(\"setViewSessionId\", viewDetails.sessionId);\r\n\r\n\t\tlet viewDimentions: Dimensions = {\r\n\t\t\tx: viewDetails.pages[0].columns,\r\n\t\t\ty: viewDetails.pages[0].rows\r\n\t\t};\r\n\r\n\t\tcommit(\"setViewDimensions\", viewDimentions);\r\n\t},\r\n\r\n\tasync deleteView({ commit }, viewId) {\r\n\t\tawait api.deleteView(viewId);\r\n\t},\r\n\r\n\tasync saveView({ commit }, view: ViewObject) {\r\n\t\tconst viewCells = view.cells.map(cell => {\r\n\t\t\treturn {\r\n\t\t\t\tviewCellId: cell.viewCellId < 0 ? 0 : cell.viewCellId,\r\n\t\t\t\tviewId: view.viewId || 0,\r\n\t\t\t\tpageNumber: 1,\r\n\t\t\t\tx: cell.x,\r\n\t\t\t\ty: cell.y,\r\n\t\t\t\tcolumnSpan: cell.width,\r\n\t\t\t\trowSpan: cell.height,\r\n\t\t\t\tpluginId: cell.pluginTypeId,\r\n\t\t\t\tcontents: cell.contents\r\n\t\t\t};\r\n\t\t});\r\n\r\n\t\tlet viewDTO = {\r\n\t\t\tpages: [\r\n\t\t\t\t{\r\n\t\t\t\t\tcells: viewCells,\r\n\t\t\t\t\tviewId: view.viewId || 0,\r\n\t\t\t\t\tpageNumber: 1,\r\n\t\t\t\t\tcolumns: view.width,\r\n\t\t\t\t\trows: view.height\r\n\t\t\t\t}\r\n\t\t\t],\r\n\t\t\tviewId: view.viewId || 0,\r\n\t\t\ttitle: view.title,\r\n\t\t\townerUserId: view.ownerUserId,\r\n\t\t\tisPublic: view.public,\r\n\t\t\tgroupId: view.groupId\r\n\t\t};\r\n\r\n\t\treturn await api.saveView(viewDTO);\r\n\t},\r\n\r\n\tasync addUserView({ commit }, viewId) {\r\n\t\t// add the view to the list of views the user would like to persist on screen\r\n\t\t// duplicates and permissions are handled by the data service\r\n\t\tawait api.addUserView(viewId);\r\n\t},\r\n\r\n\tasync removeUserView({ commit }, viewId) {\r\n\t\tawait api.removeUserView(viewId);\r\n\t},\r\n\r\n\tasync loadViewUpdateTime({ commit }, viewId) {\r\n\t\treturn await api.fetchViewUpdateTime(viewId);\r\n\t},\r\n\r\n\tasync loadViewContentUpdateTime({ commit }, viewId) {\r\n\t\treturn await api.fetchViewContentUpdateTime(viewId);\r\n\t},\r\n\r\n\tasync saveCellContent({ getters }, { viewId, viewCellId, content }) {\r\n\t\tlet sessionId = getters.getViewSessionId;\r\n\t\tawait api.saveViewCellContent(viewId, sessionId, viewCellId, content);\r\n\t},\r\n\r\n\tasync toggleLock({ commit }, viewId) {\r\n\t\tawait api.toggleLockedView(viewId);\r\n\t},\r\n\r\n\tasync loadUpdatedCellContent({ getters, commit }, viewId) {\r\n\t\tlet sessionId = getters.getViewSessionId;\r\n\t\tlet updatedContent = await api.fetchUpdatedCellContent(viewId, sessionId);\r\n\t\tcommit(\"setUpdatedCellContents\", updatedContent);\r\n\t}\r\n};\r\n\r\nclass Guid {\r\n\tstatic newGuid() {\r\n\t\treturn \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function(c) {\r\n\t\t\tvar r = (Math.random() * 16) | 0,\r\n\t\t\t\tv = c == \"x\" ? r : (r & 0x3) | 0x8;\r\n\t\t\treturn v.toString(16);\r\n\t\t});\r\n\t}\r\n}\r\n","import { ViewsState, ViewMode } from \"./types\";\r\n\r\nexport function getDefaultState(): ViewsState {\r\n return {\r\n pluginTypes: [],\r\n views: [],\r\n userViews: [],\r\n selectedView: null,\r\n viewMode: ViewMode.None,\r\n selectedTileType: {},\r\n sideBarExtended: false,\r\n sideBarPinned: false,\r\n latestEvent: null,\r\n cellContents: {\r\n 6: {\r\n lat: 37.476787168126386,\r\n lng: -122.14975492960721,\r\n zoom: 19,\r\n elevation: 1\r\n }\r\n },\r\n groupsList: [],\r\n eventHandlers: {},\r\n viewSessionId: \"\"\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { ViewsState, Dimensions, ViewMode, ViewCellObject, ViewObject, UpdatedViewCellData } from \"./types\";\r\nimport Vue from \"vue\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { isEqual } from \"lodash\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetViews(state, views) {\r\n\t\tstate.views = views;\r\n\t},\r\n\r\n\tsetUserViews(state, userViews) {\r\n\t\tstate.userViews = userViews;\r\n\t},\r\n\r\n\tsetPluginTypes(state, pluginTypes) {\r\n\t\tstate.pluginTypes = pluginTypes;\r\n\t},\r\n\r\n\tsetViewMode(state, viewMode: ViewMode) {\r\n\t\tstate.viewMode = viewMode;\r\n\t},\r\n\r\n\tsetSelectedView(state, view) {\r\n\t\tstate.selectedView = view;\r\n\t},\r\n\r\n\tsetSelectedViewCells(state, viewCells: ViewCellObject[]) {\r\n\t\tif (state.selectedView) {\r\n\t\t\tstate.selectedView.cells = viewCells;\r\n\r\n\t\t\t// Update the cell contents store\r\n\t\t\tviewCells.forEach(cell => {\r\n\t\t\t\tVue.set(state.cellContents, cell.viewCellId, cell.contents);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\tsetSelectedViewPublic(state, value: boolean) {\r\n\t\tif (state.selectedView) {\r\n\t\t\tstate.selectedView.public = value;\r\n\t\t}\r\n\t},\r\n\r\n\tsetViewDimensions(state, dimensions: Dimensions) {\r\n\t\tif (state.selectedView) {\r\n\t\t\t// Filter cells outside grid size\r\n\t\t\tlet newCells = state.selectedView.cells.filter(cell => cell.x < dimensions.x && cell.y < dimensions.y);\r\n\t\t\t// let yIncrease = 0;\r\n\r\n\t\t\tif (state.selectedView.width > dimensions.x) {\r\n\t\t\t\t// Resize cells which stretch outside grid width\r\n\t\t\t\tnewCells\r\n\t\t\t\t\t.filter(cell => cell.x + cell.width > dimensions.x)\r\n\t\t\t\t\t.forEach(foundCell => (foundCell.width -= foundCell.width + foundCell.x - dimensions.x));\r\n\t\t\t}\r\n\r\n\t\t\tif (state.selectedView.height > dimensions.y) {\r\n\t\t\t\t// Resize cells which stretch outside grid height\r\n\t\t\t\tnewCells\r\n\t\t\t\t\t.filter(cell => cell.y + cell.height > dimensions.y)\r\n\t\t\t\t\t.forEach(foundCell => (foundCell.height -= foundCell.height + foundCell.y - dimensions.y));\r\n\t\t\t}\r\n\r\n\t\t\tstate.selectedView.cells = newCells;\r\n\t\t\tstate.selectedView.width = dimensions.x;\r\n\t\t\tstate.selectedView.height = dimensions.y;\r\n\t\t}\r\n\t},\r\n\r\n\tsetSelectedViewTitle(state, title) {\r\n\t\tif (state.selectedView) {\r\n\t\t\tstate.selectedView.title = title;\r\n\t\t}\r\n\t},\r\n\r\n\tsetSelectedTileType(state, tileType) {\r\n\t\tstate.selectedTileType = tileType;\r\n\t},\r\n\r\n\tsetSideBarExtended(state, extended) {\r\n\t\tstate.sideBarExtended = extended;\r\n\t},\r\n\r\n\tsetSideBarPinned(state, pinned) {\r\n\t\tstate.sideBarPinned = pinned;\r\n\t},\r\n\r\n\tsetViewSessionId(state, sessionId) {\r\n\t\tstate.viewSessionId = sessionId;\r\n\t},\r\n\r\n\tsetContents(state, { viewCellId, contents }) {\r\n\t\tif (viewCellId) {\r\n\t\t\tstate.cellContents[viewCellId.toString()] = contents;\r\n\t\t}\r\n\t},\r\n\r\n\tdeleteCell(state, { viewCellId }) {\r\n\t\tlet cellIndex = state.selectedView.cells.findIndex(cell => cell.viewCellId === viewCellId);\r\n\r\n\t\tif (cellIndex < 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tVue.delete(state.selectedView.cells, cellIndex);\r\n\t},\r\n\r\n\tsetUpdatedCellContents(state, viewCellData: UpdatedViewCellData[]) {\r\n\t\tif (!viewCellData) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tviewCellData.forEach(cellData => {\r\n\t\t\tlet currentContents = state.cellContents[cellData.viewCellId];\r\n\t\t\tlet newContents = cellData.contents || cellData.defaultContents;\r\n\r\n\t\t\t// Diff the cell contents - we only want to do an update here if we have actually made changes\r\n\t\t\tif (!isEqual(newContents, currentContents)) {\r\n\t\t\t\tVue.set(state.cellContents, cellData.viewCellId, newContents);\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { ViewsState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: ViewsState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const views: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { ReportState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetAvailableReports: state => state.AvailableReports,\r\n\tgetReport: state => state.Report,\r\n\tgetCurrentReportUrl: state => state.CurrentReportUrl,\r\n\tgetResultCountNumber: state => state.ResultCount,\r\n\tgetReportLoadingStatus: state => state.ReportLoadingStatus,\r\n\tgetReportErrorStatus: state => state.ReportErrorStatus,\r\n\tgetReportApiEndpoint: state => state.ReportApiEndpoint,\r\n\tgetReportTypes: state => state.ReportTypes\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { ReportState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { LinkParser } from \"@sureview/v2-linkify\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadAvailableReports({ commit, getters }) {\r\n\t\tconst { data } = await api.loadAvailableReports(getters.getReportApiEndpoint);\r\n\t\tcommit(\"setAvailableReports\", data);\r\n\t},\r\n\r\n\tasync runReport({ commit, getters, rootGetters }, payload: any) {\r\n\t\tcommit(\"setReportLoadingStatus\", true);\r\n\t\tcommit(\"setReportErrorStatus\", false);\r\n\r\n\t\ttry {\r\n\t\t\tconst { data } = await api.runReport(getters.getReportApiEndpoint, getters.getCurrentReportUrl, payload);\r\n\r\n\t\t\t// If we're fetching the event list report, we need to linkify any dynamic\r\n\t\t\t// links that may have been put inside an events outcome note.\r\n\t\t\tif (getters.getCurrentReportUrl.startsWith(\"/AlarmEventList\")) {\r\n\t\t\t\t// Check if the dynamic link integration is enabled\r\n\t\t\t\tconst dynamicLinksEnabled = rootGetters.getFeature([\"Integration\", \"DynamicLink\"]);\r\n\t\t\t\tconst dynamicLinkConfig = rootGetters.getDynamicLinkConfig;\r\n\r\n\t\t\t\tif (dynamicLinksEnabled && dynamicLinkConfig) {\r\n\t\t\t\t\tlet linkParser = new LinkParser(dynamicLinkConfig);\r\n\t\t\t\t\tfor (let i = 0; i < data.data.length; i++) {\r\n\t\t\t\t\t\tconst element = data.data[i];\r\n\t\t\t\t\t\tconst outcomeNote = element.outcomeNote;\r\n\t\t\t\t\t\tconst parsed = linkParser.parse(outcomeNote);\r\n\t\t\t\t\t\tif (parsed) {\r\n\t\t\t\t\t\t\telement.outcomeNote = parsed.reduce((prev, curr) => prev + curr.toString(), \"\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommit(\"setReport\", data);\r\n\t\t} catch (err) {\r\n\t\t\tcommit(\"setReportLoadingStatus\", false);\r\n\t\t\tcommit(\"setReportErrorStatus\", true);\r\n\t\t\tthrow err;\r\n\t\t}\r\n\r\n\t\tcommit(\"setReportLoadingStatus\", false);\r\n\t},\r\n\tasync fetchReport({ getters }, payload: any) {\r\n\t\ttry {\r\n\t\t\tconst { data } = await api.runReport(getters.getReportApiEndpoint, payload.reportUrl, payload.payload);\r\n\t\t\treturn data;\r\n\t\t} catch (ex) {\r\n\t\t\t// in the event of an error (404,401,500) return null\r\n\t\t\t// a check is done in the returning function for a valid result based on the value not being null\r\n\t\t\treturn null;\r\n\t\t}\r\n\t},\r\n\tasync downloadReport({ commit, getters }, payload: any) {\r\n\t\tcommit(\"setReportLoadingStatus\", true);\r\n\t\tcommit(\"setReportErrorStatus\", false);\r\n\r\n\t\ttry {\r\n\t\t\tlet reportUrl = getters.getCurrentReportUrl;\r\n\t\t\t// extract the report type from the URL\r\n\t\t\tvar myRegexp = /^\\/([a-z]+)\\??/gim;\r\n\t\t\tvar match = myRegexp.exec(reportUrl);\r\n\t\t\tlet reportType = \"/\" + match[1];\r\n\r\n\t\t\t// request the export\r\n\t\t\tlet result = await api.DownloadReport(getters.getReportApiEndpoint, reportType, payload);\r\n\r\n\t\t\t// get the filename that has been generated by the Dataservice\r\n\t\t\tvar disposition = result.headers[\"content-disposition\"];\r\n\t\t\tvar matches = /\"([^\"]*)\"/.exec(disposition);\r\n\t\t\tvar filename = matches != null && matches[1] ? matches[1] : \"ReportExport.csv\";\r\n\r\n\t\t\t// create download file from the AJAX response\r\n\t\t\tvar blob = new Blob([result.data], { type: \"text/csv\" });\r\n\r\n\t\t\t// create a temporary link that will be clicked to initate the download then removed\r\n\t\t\tvar link = document.createElement(\"a\");\r\n\t\t\tlink.href = window.URL.createObjectURL(blob);\r\n\t\t\tlink.download = filename;\r\n\t\t\tdocument.body.appendChild(link);\r\n\t\t\tlink.click();\r\n\t\t\tdocument.body.removeChild(link);\r\n\t\t} catch (error) {\r\n\t\t\tcommit(\"setReportLoadingStatus\", false);\r\n\t\t\tcommit(\"setReportErrorStatus\", true);\r\n\t\t}\r\n\r\n\t\tcommit(\"setReportLoadingStatus\", false);\r\n\t},\r\n\r\n\tasync fetchReportServiceEndpoint({ commit }) {\r\n\t\tconst { data } = await api.getReportServiceEndpoint();\r\n\t\tcommit(\"setReportApiEndpoint\", data);\r\n\t},\r\n\r\n\tasync fetchReportTypes({ commit, getters }) {\r\n\t\tconst { data } = await api.loadReportTypes(getters.getReportApiEndpoint);\r\n\t\tcommit(\"setReportTypes\", data);\r\n\t},\r\n\r\n\tasync heartbeatToReportServer({ getters }) {\r\n\t\treturn await api.heartbeatToServer(getters.getReportApiEndpoint);\r\n\t},\r\n\r\n\tasync heartbeatToCurrentServer({ getters }) {\r\n\t\treturn await api.heartbeatToCurrentServer();\r\n\t},\r\n\r\n\tgetReportUrl({ getters }, { templateId, grouping, selectedFilters }) {\r\n\t\tconst report = getters.getReport;\r\n\r\n\t\tlet reportUrl = report.reportEndpoint;\r\n\t\tif (templateId) {\r\n\t\t\treportUrl += \"/\" + templateId;\r\n\t\t}\r\n\r\n\t\tlet params = [];\r\n\t\treport.filterOptions.forEach(filter => {\r\n\t\t\tconst filterSelectedValue = selectedFilters[filter.filterName];\r\n\t\t\tif (Array.isArray(filterSelectedValue)) {\r\n\t\t\t\tif (filterSelectedValue.length > 0) {\r\n\t\t\t\t\tparams.push({\r\n\t\t\t\t\t\tkey: filter.filterName,\r\n\t\t\t\t\t\tvalue: filterSelectedValue.map(item => item.id).join(\",\")\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else if (filterSelectedValue) {\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tkey: filter.filterName,\r\n\t\t\t\t\tvalue: filterSelectedValue\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tconst paramString = params.map(param => param.key + \"=\" + param.value).join(\"&\");\r\n\r\n\t\tif (grouping) {\r\n\t\t\treportUrl = reportUrl + \"?groupingTypeEnum=\" + grouping + \"&\" + paramString;\r\n\t\t} else {\r\n\t\t\treportUrl = reportUrl + \"?\" + paramString;\r\n\t\t}\r\n\r\n\t\treturn reportUrl;\r\n\t}\r\n};\r\n","import { ReportState } from \"./types\";\r\n\r\nexport function getDefaultState(): ReportState {\r\n return {\r\n AvailableReports: [],\r\n Report: {},\r\n RelativeHoursToReport : 168,\r\n CurrentReportUrl : \"\",\r\n ResultCount : 10,\r\n ReportLoadingStatus : false,\r\n ReportErrorStatus : false,\r\n ReportApiEndpoint : \"\",\r\n ReportTypes: [],\r\n isDateRangeRelative: true\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport {\r\n\tReportState\r\n} from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetAvailableReports(state, reports: any[]) {\r\n\t\tstate.AvailableReports = reports;\r\n\t},\r\n\r\n\tsetReport(state, report: any) {\r\n\t\tstate.Report = report;\r\n\t},\r\n\r\n\tsetRelativeHoursToReport(state, hours: number) {\r\n\t\tstate.RelativeHoursToReport = hours;\r\n\t\tstate.isDateRangeRelative = true;\r\n\t},\r\n\r\n\tsetCurrentReportUrl(state, url: string) {\r\n\t\tstate.CurrentReportUrl = url;\r\n\t},\r\n\r\n\tsetResultCountNumber(state, count: number) {\r\n\t\tstate.ResultCount = count;\r\n\t},\r\n\r\n\tsetReportLoadingStatus(state, status: boolean) {\r\n\t\tstate.ReportLoadingStatus = status;\r\n\t},\r\n\r\n\tsetReportErrorStatus(state, status: boolean) {\r\n\t\tstate.ReportErrorStatus = status;\r\n\t},\r\n\r\n\tsetReportApiEndpoint(state, endpoint: string) {\r\n\t\tstate.ReportApiEndpoint = endpoint;\r\n\t},\r\n\r\n\tsetReportTypes(state, types: []) {\r\n\t\tstate.ReportTypes = types;\r\n\t},\r\n\r\n\tsetIsDateRangeRelative(state, isRelative: boolean) {\r\n\t\tstate.isDateRangeRelative = isRelative;\r\n\t},\r\n\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { ReportState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: ReportState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const reports: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { AreaNotesState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetAreaNotes: state => state.areaNotes,\r\n\tgetAreaNotesCount: state => state.areaNotes.length,\r\n\tgetCurrentGroupId: state => state.currentGroupId,\r\n\tgetCurrentGroupTitle: state => state.currentGroupTitle,\r\n\tgetIsFormShown: state => state.isFormShown,\r\n\tgetAreaNoteToEdit: state => state.areaNoteToEdit,\r\n\tgetIsEditing: state => state.isEditing\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { AreaNotesState, AreaNote } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync addAreaNote({ commit }, note: AreaNote ) {\r\n\t\t// If dates are left as null the dataservice will fail to bind to the model\r\n\t\t// clone the note to leave the model in the UI unchanged\r\n\t\tlet noteRequest = { ... note };\r\n\t\tif (noteRequest.startFrom === null) {\r\n\t\t\tnoteRequest.startFrom = \"\";\r\n\t\t}\r\n\t\tif (noteRequest.endAt === null) {\r\n\t\t\tnoteRequest.endAt = \"\";\r\n\t\t}\r\n\t\tlet newAreaNoteResponse = await api.addAreaNote(noteRequest);\r\n\t\tconst mappedResponse = { ...newAreaNoteResponse.data, startFrom: noteRequest.startFrom, endAt: noteRequest.endAt };\r\n\t\tcommit(\"addAreaNote\", mappedResponse);\r\n\t\treturn mappedResponse;\r\n\t},\r\n\r\n\tasync editAreaNote({ commit }, note: AreaNote ) {\r\n\t\t// If dates are left as null the dataservice will fail to bind to the model\r\n\t\t// clone the note to leave the model in the UI unchanged\r\n\t\tlet noteRequest = { ... note };\r\n\t\tif (noteRequest.startFrom === null) {\r\n\t\t\tnoteRequest.startFrom = \"\";\r\n\t\t}\r\n\t\tif (noteRequest.endAt === null) {\r\n\t\t\tnoteRequest.endAt = \"\";\r\n\t\t}\r\n\t\tlet newAreaNoteResponse = await api.editAreaNote(noteRequest);\r\n\t\tlet editWasSuccessful = newAreaNoteResponse.data.success;\r\n\t\tif (editWasSuccessful) {\r\n\t\t\tcommit(\"updateNote\", note);\r\n\t\t\tcommit(\"setEditingNote\", null);\r\n\t\t\tcommit(\"setIsEditing\", false);\r\n\t\t}\r\n\t\treturn editWasSuccessful;\r\n\t},\r\n\r\n\tasync deleteAreaNote({ commit }, noteId: number) {\r\n\t\tawait api.deleteAreaNote(noteId);\r\n\t\tcommit(\"deleteAreaNote\", noteId);\r\n\t},\r\n\r\n\tasync fetchAreaNotesForEvent({ commit }, eventId: number) {\r\n\t\tconst notes = await api.loadAreaNotesForEvent(eventId);\r\n\t\tcommit(\"setAreaNotes\", notes);\r\n\t},\r\n\r\n\tasync fetchAreaNotesForGroup({ commit }, groupId: number) {\r\n\t\tconst notes = await api.loadAreaNotesForGroup(groupId);\r\n\t\tcommit(\"setAreaNotes\", notes);\r\n\t},\r\n\r\n\tstartEditingNote({ commit }, note: AreaNote) {\r\n\t\tcommit(\"setEditingNote\", note);\r\n\t\tcommit(\"setIsEditing\", true);\r\n\t\tcommit(\"setIsFormShown\", true);\r\n\t},\r\n\r\n\tcancelEditingNote({ commit }) {\r\n\t\tcommit(\"setEditingNote\", null);\r\n\t\tcommit(\"setIsEditing\", false);\r\n\t\tcommit(\"setIsFormShown\", false);\r\n\t},\r\n\r\n\tcloseModal({ commit }) {\r\n\t\tcommit(\"siteMonitor/setAreaNotesVisible\", false, { root: true });\r\n\t\tcommit(\"setEditingNote\", null);\r\n\t\tcommit(\"setIsEditing\", false);\r\n\t\tcommit(\"setIsFormShown\", false);\r\n\t}\r\n};\r\n","import { AreaNotesState } from \"./types\";\r\n\r\nexport function getDefaultState(): AreaNotesState {\r\n\treturn {\r\n\t\tareaNotes: [],\r\n\t\tareaNoteToEdit: null,\r\n\t\tcurrentGroupId: null,\r\n\t\tcurrentGroupTitle: \"\",\r\n\t\tisFormShown: false,\r\n\t\tisEditing: false\r\n\t}\r\n}","import { MutationTree } from \"vuex\";\r\nimport { AreaNotesState, AreaNote } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport Vue from \"vue\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetAreaNotes(state, notes) {\r\n\t\tstate.areaNotes = notes;\r\n\t},\r\n\taddAreaNote(state, note) {\r\n\t\tif (note) {\r\n\t\t\tstate.areaNotes.push(note);\r\n\t\t}\r\n\t},\r\n\tdeleteAreaNote(state, noteId) {\r\n\t\tVue.delete(state.areaNotes, state.areaNotes.findIndex(x => x.noteId === noteId));\r\n\t},\r\n\tupdateNote(state, note: AreaNote) {\r\n\t\tlet indexToUpdate = state.areaNotes.findIndex(n => n.noteId === note.noteId)\r\n\t\tVue.set(state.areaNotes, indexToUpdate, note);\r\n\t},\r\n\tsetEditingNote(state, note: AreaNote) {\r\n\t\tstate.areaNoteToEdit = note;\r\n\t},\r\n\tsetIsFormShown(state, isFormShown: boolean) {\r\n\t\tstate.isFormShown = isFormShown;\r\n\t},\r\n\tsetIsEditing(state, isEditing) {\r\n\t\tstate.isEditing = isEditing;\r\n\t},\r\n\t// @techdebt\r\n\t// This is accessed from outsite of this component in Event Queue and Site Monitor.\r\n\t// As a result, this mutation and its related state data should ideally live in a different module\r\n\tsetAreaNoteGroupDetails(state, { groupId, groupTitle }) {\r\n\t\tstate.currentGroupId = groupId;\r\n\t\tstate.currentGroupTitle = groupTitle;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { AreaNotesState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: AreaNotesState = getDefaultState();\r\n\r\nexport const areaNotes: Module = {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { ActivityLogState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { ActivityLogState, ActivityLogDTO } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync getActivityLog({ commit }, queryStr) {\r\n\t\treturn await api.getActivityLog(queryStr);\r\n\t},\r\n\tasync addActivityLog({ commit }, newLog: ActivityLogDTO) {\r\n\t\treturn await api.addActivityLog(newLog);\r\n\t},\r\n\tasync editActivityLog({ commit }, activityLog: ActivityLogDTO) {\r\n\t\treturn await api.editActivityLog(activityLog);\r\n\t},\r\n\tasync hideActivityLog({ commit }, activityLogId: number) {\r\n\t\treturn await api.hideActivityLog(activityLogId);\r\n\t},\r\n\tasync unHideActivityLog({ commit }, activityLogId: number) {\r\n\t\treturn await api.unHideActivityLog(activityLogId);\r\n\t},\r\n\tasync getActivityLogOutcomes({ commit }, areaId: null | boolean) {\r\n\t\treturn await api.getActivityLogOutcomes(areaId ? areaId : null);\r\n\t},\r\n\tasync getActivityLogEntry({ commit }, activityLogId: number): Promise {\r\n\t\treturn await api.getActivityLogEntry(activityLogId);\r\n\t},\r\n};\r\n","import { MutationTree } from \"vuex\";\r\nimport { ActivityLogState } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { ActivityLogState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const state: ActivityLogState = {\r\n\temptyState: true\r\n};\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const activityLog: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { AreaState, GroupWithPermissions } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\n\r\nexport const areaGetters: GetterTree = {\r\n\tgetAreaList: state => state.AreaList as GroupWithPermissions[],\r\n\tgetAreaTitle: state => (id: number) => {\r\n\t\treturn state.areaDictionary[id];\r\n\t}\r\n};\r\n","export interface PollingStatus {\r\n\tisPolling: boolean,\r\n\tintervalHandlerId: number\r\n}\r\n\r\nexport const defaultPollingStatus = (): PollingStatus => {\r\n\treturn {\r\n\t\tisPolling: false,\r\n\t\tintervalHandlerId: 0\r\n\t}\r\n}\r\n","import { FlatAreaListRequest } from \"./types\";\r\nimport { defaultPollingStatus, PollingStatus } from \"@/types/PollingStatus\";\r\nimport api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { AreaState, GroupWithPermissions } from \"@/store/areas/types\";\r\n\r\nexport const actions: ActionTree = {\r\n\t// deprecated\r\n\tasync getAreaList({ commit }) {\r\n\t\tconst data = (await api.getAreaList()) as GroupWithPermissions[];\r\n\t\tcommit(\"setAreaList\", data as GroupWithPermissions[]);\r\n\t},\r\n\r\n\tasync getTenants({ commit }) {\r\n\t\tconst { data } = await api.getTenants();\r\n\r\n\t\t// set the tenant id based on the isUsersTenant value\r\n\t\tdata.forEach(tenant => {\r\n\t\t\tif (tenant.isUsersTenant) {\r\n\t\t\t\tcommit(\"setCurrentTenantId\", tenant.groupID)\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync fetchAreaDictionary({ commit }) {\r\n\t\tconst areaDictionary = await api.getAreaDictionary();\r\n\t\tcommit(\"setAreaDictionary\", areaDictionary);\r\n\t},\r\n\r\n\tasync pollAreaMaskingCount({ state, dispatch, commit }) {\r\n\t\tawait dispatch(\"fetchAreaMaskingCount\");\r\n\r\n\t\tif (!state.areaMaskingCountPollingStatus) {\r\n\t\t\tstate.areaMaskingCountPollingStatus = defaultPollingStatus();\r\n\t\t}\r\n\r\n\t\tif (!state.areaMaskingCountPollingStatus.isPolling) {\r\n\t\t\tlet fetchAreaMaskingCountPoll = async () => {\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tawait dispatch(\"fetchAreaMaskingCount\");\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t} finally {\r\n\t\t\t\t\tclearTimeout(state.areaMaskingCountPollingStatus.intervalHandlerId);\r\n\r\n\t\t\t\t\tlet intervalHandlerId = window.setTimeout(fetchAreaMaskingCountPoll, 30000);\r\n\r\n\t\t\t\t\tlet pollingStatus: PollingStatus = {\r\n\t\t\t\t\t\tisPolling: true,\r\n\t\t\t\t\t\tintervalHandlerId: intervalHandlerId\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tcommit(\"setAreaMaskingCountPollingStatus\", pollingStatus);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tawait fetchAreaMaskingCountPoll();\r\n\t\t}\r\n\t},\r\n\r\n\tstopPollingAreaMaskingCount({ commit, state }): void {\r\n\t\tif (state.areaMaskingCountPollingStatus && state.areaMaskingCountPollingStatus.isPolling) {\r\n\t\t\tclearTimeout(state.areaMaskingCountPollingStatus.intervalHandlerId);\r\n\r\n\t\t\tlet pollingStatus: PollingStatus = {\r\n\t\t\t\tisPolling: false,\r\n\t\t\t\tintervalHandlerId: 0\r\n\t\t\t};\r\n\t\t\tcommit(\"setAreaMaskingCountPollingStatus\", pollingStatus);\r\n\t\t}\r\n\t},\r\n\r\n\tasync fetchAreaMaskingCount({ commit }) {\r\n\t\tconst areaMaskingCount = await api.getAreaMaskingCount();\r\n\t\tcommit(\"setAreaMaskingCount\", areaMaskingCount);\r\n\t},\r\n\r\n\tasync fetchFlatListWithState({ commit }, request: FlatAreaListRequest) {\r\n\t\tconst areasWithState = await api.getFlatAreaList(request);\r\n\t\tcommit(\"setFlatAreaList\", areasWithState);\r\n\t}\r\n};\r\n","import { PollingStatus } from \"@/types/PollingStatus\";\r\n\r\nexport interface AreaState {\r\n\tAreaList: GroupWithPermissions[];\r\n\tareaDictionary: Map;\r\n\tareaMaskingCount: AreaMaskingCount;\r\n\tareaMaskingCountPollingStatus: PollingStatus;\r\n\tflatAreaList: FlatAreaList;\r\n}\r\n\r\nexport interface Group {\r\n\taddress: string | null;\r\n\tarmed: boolean;\r\n\tdisabledAt: Date | null;\r\n\tdisarmReasonID: number | null;\r\n\tgroupID: number;\r\n\tgroupTypeID: number;\r\n\tlicenseTypeID: number;\r\n\tlicenseValid: boolean;\r\n\tnotes: string;\r\n\tonTest: boolean;\r\n\tparentGroupID: number | null;\r\n\ttelephone: string;\r\n\ttelephone2: string;\r\n\ttelephoneFire: string;\r\n\ttelephonePolice: string;\r\n\ttitle: string;\r\n\ttimeZoneID: number;\r\n\ttoggleArmAt: Date | null;\r\n\tlatLong: string;\r\n}\r\n\r\n// Deprecated.\r\nexport interface GroupWithPermissions extends Group {\r\n\thasChildren: boolean;\r\n\tisOpen: boolean;\r\n\tpermissions: any[] | null;\r\n}\r\n\r\nexport interface Tenant extends Group {\r\n\tisUsersTenant: boolean;\r\n}\r\n\r\nexport interface AreaMaskingCount {\r\n\ttotalGroups: number;\r\n\tmasked: number;\r\n\tpartiallyMasked:number;\r\n\tunmasked: number;\r\n}\r\n\r\nexport interface GroupWithState {\r\n\tgroupId: number;\r\n\ttitle: string;\r\n\tarmed: boolean;\r\n\tstate: string;\r\n}\r\n\r\nexport interface FlatAreaList {\r\n\ttotalAvailableGroups: number,\r\n\tgroupsWithState: GroupWithState[]\r\n}\r\n\r\nexport const defaultFlatAreaList = (): FlatAreaList => {\r\n\treturn {\r\n\t\ttotalAvailableGroups: null,\r\n\t\tgroupsWithState: Array()\r\n\t}\r\n}\r\n\r\nexport interface FlatAreaListRequest {\r\n\tpage: number,\r\n\tpageSize: number,\r\n\tsearchTerm: string,\r\n\tfilter: string\r\n}\r\n","import { defaultPollingStatus } from \"@/types/PollingStatus\";\r\nimport { AreaState, GroupWithPermissions, defaultFlatAreaList } from \"./types\";\r\n\r\nexport function getDefaultState(): AreaState {\r\n\treturn {\r\n\t\tAreaList: Array(),\r\n\t\tareaDictionary: new Map(),\r\n\t\tareaMaskingCount: {\r\n\t\t\ttotalGroups: 0,\r\n\t\t\tmasked: 0,\r\n\t\t\tpartiallyMasked: 0,\r\n\t\t\tunmasked: 0\r\n\t\t},\r\n\t\tareaMaskingCountPollingStatus: defaultPollingStatus(),\r\n\t\tflatAreaList: defaultFlatAreaList()\r\n\t}\r\n}\r\n","import { PollingStatus } from \"@/types/PollingStatus\";\r\nimport { MutationTree } from \"vuex\";\r\nimport { AreaMaskingCount, AreaState, FlatAreaList } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetAreaList(state, data: any[]) {\r\n\t\tstate.AreaList = data;\r\n\t},\r\n\tsetAreaDictionary(state, areaDictionary: Map) {\r\n\t\tstate.areaDictionary = areaDictionary;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n\tsetAreaMaskingCount(state, areaMaskingCount: AreaMaskingCount) {\r\n\t\tstate.areaMaskingCount = areaMaskingCount;\r\n\t},\r\n\tsetAreaMaskingCountPollingStatus(state, areaMaskingCountPollingStatus: PollingStatus) {\r\n\t\tstate.areaMaskingCountPollingStatus = areaMaskingCountPollingStatus;\r\n\t},\r\n\tsetFlatAreaList(state, flatAreaList: FlatAreaList){\r\n\t\tstate.flatAreaList = flatAreaList;\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { areaGetters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { AreaState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: AreaState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const areas: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters: areaGetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { TourState, Tour } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { get, cloneDeep } from \"lodash\";\r\nimport { State } from \"vuex-class\";\r\nimport moment from \"moment\";\r\n\r\nexport const userManagementGetters: GetterTree = {\r\n\t/** Tours Setup */\r\n\tgetAllTours: (state: TourState) => { return state.Tour; },\r\n\tgetDeviceList: (state: TourState) => { return cloneDeep( state.DeviceList ) },\r\n\tgetTour: (state: TourState) => (tourId: number) => {\r\n\t\treturn cloneDeep(state.Tour.find(x => x.tourId === tourId));\r\n\t},\r\n\tgetSearchDevices: (state: TourState) => {return state.searchedDeviceList; },\r\n\r\n\t/** Predefined Tours */\r\n\tgetPredefinedTour: (state: TourState) => { return state.PredefinedTour; },\r\n\tgetPrefinedTourCurrentCamera: (state: TourState) => {\r\n\t\treturn state.PredefinedTour.currentCamera[state.PredefinedTour.currentCameraIndex];\r\n\t},\r\n\ttourInProgress: (state: TourState) => { return state.isInTour; },\r\n\tgetActiveCell: (state: TourState) => { return state.PredefinedTour.isActive; }\r\n}","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { TourState, Tour } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\n\r\nexport const actions: ActionTree = {\r\n\t/** Tour Setup */\r\n\tasync fetchAllTours({ commit }) {\r\n\t\tlet { data } = await api.fetchAllTours();\r\n\r\n\t\t// Clear out\r\n\t\tcommit(\"setAllTours\", []);\r\n\r\n\t\tdata = data.map(obj => ({ ...obj, functionality: null }));\r\n\r\n\t\tif (data.length > 0) {\r\n\t\t\tcommit(\"setAllTours\", data);\r\n\t\t}\r\n\t},\r\n\tasync fetchDeviceList({ commit }, groupID: number) {\r\n\t\tconst { data } = await api.fetchDeviceList(groupID);\r\n\t\tcommit(\"setAllDevices\", data);\r\n\t},\r\n\tasync searchDeviceList({ commit }, query: any) {\r\n\t\tconst { data } = await api.searchDeviceList(query.groupID, query.searchText);\r\n\t\tcommit(\"addSearchDevices\", data);\r\n\t},\r\n\tasync removeTour({ commit }, tourId: number) {\r\n\t\tconst { data } = await api.deleteTour(tourId);\r\n\t\tif (data) {\r\n\t\t\tcommit(\"unsetTour\", tourId);\r\n\t\t}\r\n\t},\r\n\ttriggerActiveCell({ commit }, confirmed: boolean) {\r\n\t\tcommit(\"setTriggeredActiveCell\", confirmed);\r\n\t},\r\n\ttriggerStreamingData({ commit }, object: object) {\r\n\t\tcommit(\"setTriggeredIsStreaming\", object);\r\n\t}\r\n};\r\n","import { TourState, Tour, TourDevices } from \"./types\";\r\n\r\nexport function getDefaultState(): TourState {\r\n return {\r\n Tour: Array(),\r\n DeviceList: Array(),\r\n PredefinedTour: null,\r\n isInTour: false,\r\n searchedDeviceList: Array()\r\n }\r\n}","import { MutationTree } from \"vuex\";\r\nimport Vue from \"vue\";\r\nimport { TourState, Tour, PredefinedTour, cameraStreaming, isActiveCell } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\r\n\t/** Tour setup */\r\n\tsetAllTours(state, tours: any) {\r\n\t\tstate.Tour = tours;\r\n\t},\r\n\tsetAllDevices(state, devices: any) {\r\n\t\tstate.DeviceList = devices;\r\n\t},\r\n\tunsetTour(state, tourId: number) {\r\n\t\tconst tourIndex = state.Tour.findIndex(x => x.tourId === tourId);\r\n\t\tstate.Tour.splice(tourIndex, 1);\r\n\t},\r\n\taddDevice(state, data: any) {\r\n\t\tconst tourIndex = state.Tour.findIndex(x => x.tourId === data.tourId);\r\n\t\tstate.Tour[tourIndex].tourSteps.push(data.device);\r\n\t},\r\n\taddSearchDevices(state, data: any) {\r\n\t\tstate.searchedDeviceList = data;\r\n\t},\r\n\r\n\t/** Predefined Tours */\r\n\tsetPredefinedTour(state, data: PredefinedTour) {\r\n\t\tstate.PredefinedTour = data;\r\n\t},\r\n\tsetPredefinedTourDurtationType(state, isDurationBased: boolean) {\r\n\t\tstate.PredefinedTour.durationBasedCamera = isDurationBased;\r\n\t},\r\n\t/** Remove X time from current time */\r\n\tupdatePredefinedTourDuration(state, time: number) {\r\n\t\tstate.PredefinedTour.predefiendStep.durationTimer -= time;\r\n\t},\r\n\t/** Set current time to new time */\r\n\tsetPredefinedTourDurationTimer(state, time: number) {\r\n\t\tstate.PredefinedTour.predefiendStep.durationTimer = time;\r\n\t},\r\n\t/** Remove X time from current time */\r\n\tupdatePredefinedTourTimeout(state, time: number) {\r\n\t\tstate.PredefinedTour.tourTimeout -= time;\r\n\t},\r\n\t/** Set current time to new time */\r\n\taddPredefinedTourTimeout(state, time: number) {\r\n\t\tstate.PredefinedTour.tourTimeout = time;\r\n\t},\r\n\tsetPredefinedTourCamera(state, device: any) {\r\n\t\tstate.PredefinedTour.currentCamera = device;\r\n\t},\r\n\tupdatePredefinedTourPausedState(state, isPaused: boolean) {\r\n\t\tstate.PredefinedTour.isPausedTour = isPaused;\r\n\t},\r\n\taddPredefinedTourIteration(state, itergation: number) {\r\n\t\tstate.PredefinedTour.currentIteration += itergation;\r\n\t},\r\n\taddPredefinedTourCameraIndex(state, cameraIndex: number) {\r\n\t\tstate.PredefinedTour.currentCameraIndex = cameraIndex;\r\n\t},\r\n\tsetTriggeredActiveCell(state, confirmed: boolean) {\r\n\t\tstate.PredefinedTour.cellTrigger = confirmed;\r\n\t},\r\n\tactiveCellDisable(state) {\r\n\t\tstate.PredefinedTour.isActive = null;\r\n\t},\r\n\tactiveCellEnable(state, object: isActiveCell) {\r\n\t\tstate.PredefinedTour.isActive = object;\r\n\t},\r\n\tsetTriggeredIsStreaming(state, object: cameraStreaming) {\r\n\t\tvar index = state.PredefinedTour.camerasStreaming.findIndex(x => x.index == object.index)\r\n\t\tif(index == -1) {\r\n\t\t\tstate.PredefinedTour.camerasStreaming.push(object);\r\n\t\t} else {\r\n\t\t\tstate.PredefinedTour.camerasStreaming[index].isStreaming = object.isStreaming;\r\n\t\t}\r\n\t},\r\n\tsetIsInTourState(state, isInTour: boolean) {\r\n\t\tstate.isInTour = isInTour;\r\n\t},\r\n\tclearPredefinedStreamingCameras(state) {\r\n\t\tstate.PredefinedTour.camerasStreaming = [];\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n}","import { Module } from \"vuex\";\r\nimport { userManagementGetters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { TourState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: TourState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const tours: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters: userManagementGetters,\r\n\tactions,\r\n\tmutations\r\n};","import { GetterTree } from \"vuex\";\r\nimport { GenericTableState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\n\r\nexport const GenericTableGetters: GetterTree = {\r\n\tgetModalRow: state => state.GenericTableModalRow\r\n};\r\n","\r\nimport { GenericTableState } from \"./types\";\r\n\r\nexport function getDefaultState(): GenericTableState {\r\n\treturn {\r\n GenericTableModalRow: null,\r\n\t\trowHasChanges: false\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { GenericTableState } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetModalRow(state, data: any[]) {\r\n\t\tstate.GenericTableModalRow = data;\r\n\t},\r\n\tsetRowHasChanges(state, hasChanges) {\r\n\t\tstate.rowHasChanges = hasChanges;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { GenericTableGetters } from \"./getters\";\r\nimport { mutations } from \"./mutations\";\r\nimport { GenericTableState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: GenericTableState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const GenericTable: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters: GenericTableGetters,\r\n\tmutations\r\n};\r\n","import { MutationTree } from \"vuex\";\r\nimport { ManualRaiseState } from \"./types\";\r\nimport { getDefaultState } from \"./index\";\r\nimport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetManualRaiseShown: (state, visible) => {\r\n\t\tstate.manualRaiseShown = visible;\r\n\t},\r\n\tsetOnCompleteHandler: (state, handler) => {\r\n\t\tstate.onCompleteHandler = handler;\r\n\t},\r\n\tsetAreaMapBounds(state, bounds: any) {\r\n\t\tstate.areaMapBounds = bounds;\r\n\t},\r\n\tsetAlarmMarkerPosition(state, position) {\r\n\t\tstate.alarmMarkerPosition = position;\r\n\t},\r\n\tsetSelectedGroup(state, areaNode: AreaNode) {\r\n\t\tstate.selectedGroup = areaNode;\r\n\t},\r\n\tresetState: state => {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport { ManualRaiseResult, ManualRaiseState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport api from \"@/services/api.service\";\r\n\r\nexport const actions: ActionTree = {\r\n\tclearSettings({ commit }) {\r\n\t\tcommit(\"setOnCompleteHandler\", null);\r\n\t},\r\n\r\n\tasync raiseManualAlarm({ commit, dispatch, state }, { payload, autoHandle, raiseAndJoin = false, templateId = null })\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tlet result: ManualRaiseResult;\r\n\r\n\t\t\tif (raiseAndJoin)\r\n\t\t\t{\r\n\t\t\t\tresult = await api.raiseAndJoinManualAlarm(payload, templateId);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tresult = await api.raiseManualAlarm(payload);\r\n\t\t\t}\r\n\r\n\t\t\tlet errorMessage = \"\";\r\n\r\n\t\t\t// Set error message for multiple variants\r\n\t\t\tif (result == null)\r\n\t\t\t{\r\n\t\t\t\terrorMessage = \"Unable to raise alarm.\";\r\n\t\t\t}\r\n\t\t\telse if (result.eventID == null)\r\n\t\t\t{\r\n\t\t\t\tif (!result.groupArmed)\r\n\t\t\t\t{\r\n\t\t\t\t\terrorMessage = \"Alarm not raised - area is masked.\";\r\n\t\t\t\t}\r\n\t\t\t\telse if (!result.responseArmed)\r\n\t\t\t\t{\r\n\t\t\t\t\terrorMessage = \"Alarm not raised - alarm point is masked.\";\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\terrorMessage = \"Alarm not raised.\";\r\n\t\t\t\t}\r\n\t\t\t} else if (result.responseAutohandle)\r\n\t\t\t{\r\n\t\t\t\terrorMessage = \"Alarm raised, but marked as log-only.\";\r\n\t\t\t}\r\n\r\n\t\t\tif (errorMessage.length)\r\n\t\t\t{\r\n\t\t\t\t// Register error & stop processing\r\n\t\t\t\tcommit(\"eventqueue/setProcessingError\", errorMessage, { root: true });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// If we've got a hook to execute on complete...\r\n\t\t\tif (state.onCompleteHandler && typeof state.onCompleteHandler == \"function\")\r\n\t\t\t{\r\n\t\t\t\t// Run the hook and clear out the handler and any default values\r\n\t\t\t\tstate.onCompleteHandler(result);\r\n\t\t\t\tdispatch(\"clearSettings\");\r\n\t\t\t}\r\n\r\n\t\t\tif (autoHandle)\r\n\t\t\t{\r\n\t\t\t\tdispatch(\r\n\t\t\t\t\t\"eventqueue/handleEvent\",\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\teventID: result.eventID,\r\n\t\t\t\t\t\tcheckInProcessing: false,\r\n\t\t\t\t\t\tpickupMethod: \"Picked up from Manual Raise\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{ root: true }\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tcommit(\"setManualRaiseShown\", false);\r\n\t\t\t\tcommit(\"setAreaMapBounds\", null);\r\n\t\t\t}\r\n\t\t} catch (error)\r\n\t\t{\r\n\t\t\tcommit(\"setProcessingError\", \"Error - Event not raised\");\r\n\t\t}\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { ManualRaiseState } from \"./types\";\r\nimport { mutations } from \"./mutations\";\r\nimport { actions } from \"./actions\";\r\n\r\nexport function getDefaultState(): ManualRaiseState {\r\n\treturn {\r\n\t\tmanualRaiseShown: false,\r\n\t\tonCompleteHandler: null,\r\n\t\tareaMapBounds: null,\r\n\t\talarmMarkerPosition: null,\r\n\t\tselectedGroup: null,\r\n\t};\r\n}\r\n\r\nexport const manualRaise: Module = {\r\n\tstate: getDefaultState(),\r\n\tactions,\r\n\tmutations,\r\n\tnamespaced: true\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { MobileRaiseState, TemplateDetailsModel } from \"./types\";\r\nimport * as api from \"@/services/api.mobileRaiseTemplates.service\";\r\nimport { mapEditModelToTemplate } from \"./typesFunctions\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadTemplates({ commit }) {\r\n\t\tconst templates = await api.loadTemplates();\r\n\t\tcommit(\"setMobileRaiseTemplates\", templates);\r\n\t},\r\n\r\n\tasync loadMobileRaises({ commit }) {\r\n\t\tconst raises = await api.loadMobileRaises();\r\n\t\tcommit(\"setMobileRaises\", raises);\r\n\t},\r\n\r\n\tasync loadIconSets({ commit }) {\r\n\t\tconst iconSets = await api.loadIconSets();\r\n\t\tcommit(\"setIconSets\", iconSets);\r\n\t},\r\n\r\n\tasync addMobileRaiseTemplate({ commit }, model: TemplateDetailsModel) {\r\n\t\tconst template = mapEditModelToTemplate(model);\r\n\r\n\t\tconst newTemplate = await api.addTemplate(template);\r\n\t\tcommit(\"addMobileRaiseTemplate\", newTemplate);\r\n\t},\r\n\r\n\tasync updateMobileRaiseTemplate({ commit }, model: TemplateDetailsModel) {\r\n\t\tconst template = mapEditModelToTemplate(model);\r\n\r\n\t\tawait api.saveTemplate(template);\r\n\t\tcommit(\"updateMobileRaiseTemplate\", template);\r\n\t},\r\n\r\n\tasync deleteMobileRaiseTemplate({ commit }, templateId: number) {\r\n\t\tawait api.deleteTemplate(templateId);\r\n\t\tcommit(\"deleteMobileRaiseTemplate\", templateId);\r\n\t}\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { MobileRaiseState, RaiseId } from \"./types\";\r\nimport {\r\n\traiseIdsEqual,\r\n\tUserGroupGetter,\r\n\tcreateMapTemplateToRowMapper,\r\n\tmapTemplateToEditModel,\r\n\tRaiseGetter\r\n} from \"./typesFunctions\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetTemplateGridRows: (state, getters, rootState, rootGetters) => {\r\n\t\tconst userGroupGetter = rootGetters[\"userManagement/getUserGroupById\"] as UserGroupGetter;\r\n\t\tconst mapper = createMapTemplateToRowMapper(userGroupGetter);\r\n\t\treturn state.mobileRaiseTemplates.map(mapper);\r\n\t},\r\n\r\n\tgetTemplateModelById: (state, getters, rootState, rootGetters) => (templateId: number) => {\r\n\t\tconst template = state.mobileRaiseTemplates.find(t => t.mobileRaiseTemplateID === templateId);\r\n\t\tconst userGroupGetter = rootGetters[\"userManagement/getUserGroupById\"] as UserGroupGetter;\r\n\t\tconst raiseGetter = getters[\"getMobileRaiseByRaiseId\"] as RaiseGetter;\r\n\t\treturn mapTemplateToEditModel(template, userGroupGetter, raiseGetter);\r\n\t},\r\n\r\n\tgetMobileRaiseByRaiseId: state => (id: RaiseId) => state.mobileRaises.find(r => raiseIdsEqual(r, id)),\r\n\r\n\tgetIconSetById: state => (id: number) => state.iconSets.find(i => i.iconSetID === id),\r\n\tgetIconSetByRaiseId: state => (raiseId: RaiseId) => state.iconSets.find(i => raiseIdsEqual(i, raiseId)),\r\n\tsearchIconSets: state => (searchTerm: string) => {\r\n\t\tif (searchTerm) {\r\n\t\t\tconst term = searchTerm.toLowerCase();\r\n\t\t\treturn state.iconSets.filter(\r\n\t\t\t\ti => i.title.toLowerCase().includes(term) || i.iconData.toLowerCase().includes(term)\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn state.iconSets;\r\n\t}\r\n};\r\n","import { MobileRaiseState } from \"./types\";\r\n\r\nexport default function getDefaultState(): MobileRaiseState {\r\n\treturn {\r\n\t\tmobileRaiseTemplates: [],\r\n\t\tmobileRaises: [],\r\n\t\ticonSets: []\r\n\t};\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport getDefaultState from \"./state\";\r\nimport { MobileRaiseState, MobileRaiseTemplate, MobileRaise, IconSet } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetMobileRaiseTemplates(state, mobileRaiseTemplates: MobileRaiseTemplate[]) {\r\n\t\tstate.mobileRaiseTemplates = mobileRaiseTemplates;\r\n\t},\r\n\tsetMobileRaises(state, mobileRaises: MobileRaise[]) {\r\n\t\tstate.mobileRaises = mobileRaises;\r\n\t},\r\n\tsetIconSets(state, iconSets: IconSet[]) {\r\n\t\tstate.iconSets = iconSets;\r\n\t},\r\n\taddMobileRaiseTemplate(state, template: MobileRaiseTemplate) {\r\n\t\tstate.mobileRaiseTemplates.push(template);\r\n\t},\r\n\tupdateMobileRaiseTemplate(state, template: MobileRaiseTemplate) {\r\n\t\tconst index = state.mobileRaiseTemplates.findIndex(\r\n\t\t\tt => t.mobileRaiseTemplateID === template.mobileRaiseTemplateID\r\n\t\t);\r\n\t\tstate.mobileRaiseTemplates.splice(index, 1, template);\r\n\t},\r\n\tdeleteMobileRaiseTemplate(state, templateId: number) {\r\n\t\tconst index = state.mobileRaiseTemplates.findIndex(t => t.mobileRaiseTemplateID === templateId);\r\n\t\tstate.mobileRaiseTemplates.splice(index, 1);\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { actions } from \"./actions\";\r\nimport { getters } from \"./getters\";\r\nimport { mutations } from \"./mutations\";\r\nimport getDefaultState from \"./state\";\r\nimport { MobileRaiseState } from \"./types\";\r\n\r\nconst state: MobileRaiseState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nconst mobile: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n\r\nexport default mobile;\r\n","import { ActionTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { MobileRaiseState } from \"./types\";\r\nimport * as api from \"@/services/api.mobileRaiseTemplates.service\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadTemplateProjections({ commit }) {\r\n\t\tcommit(\"setIsProjectionsLoaded\", false);\r\n\t\tconst projections = await api.loadTemplateProjections();\r\n\t\tcommit(\"setTemplateProjections\", projections);\r\n\t\tcommit(\"setIsProjectionsLoaded\", true);\r\n\t}\r\n};\r\n","import { MobileRaiseState } from \"./types\";\r\n\r\nexport default function getDefaultState(): MobileRaiseState {\r\n\treturn {\r\n\t\ttemplateProjections: [],\r\n\t\tcurrentTemplateProjectionIdx: 0,\r\n\t\tlastUsedTemplateId: null,\r\n\t\tisProjectionsLoaded: false\r\n\t};\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport getDefaultState from \"./state\";\r\nimport { MobileRaiseState, MobileRaiseTemplateProjection } from \"./types\";\r\n\r\nconst caseInsensitiveComparer = (a: string, b: string) => {\r\n\tconst aLowerCase = a.toLowerCase();\r\n\tconst bLowerCase = b.toLowerCase();\r\n\tif (aLowerCase < bLowerCase) {\r\n\t\treturn -1;\r\n\t}\r\n\tif (aLowerCase > bLowerCase) {\r\n\t\treturn 1;\r\n\t}\r\n\treturn 0;\r\n};\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetTemplateProjections(state, projections: MobileRaiseTemplateProjection[]) {\r\n\t\tstate.templateProjections = projections;\r\n\r\n\t\tif (state.templateProjections.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tstate.templateProjections.sort((a, b) => caseInsensitiveComparer(a.title, b.title));\r\n\r\n\t\tconst templateIdx = state.templateProjections.findIndex(\r\n\t\t\tp => p.mobileRaiseTemplateID === state.lastUsedTemplateId\r\n\t\t);\r\n\t\tif (templateIdx !== -1) {\r\n\t\t\tstate.currentTemplateProjectionIdx = templateIdx;\r\n\t\t} else {\r\n\t\t\tstate.currentTemplateProjectionIdx = 0;\r\n\t\t\tstate.lastUsedTemplateId = state.templateProjections[0].mobileRaiseTemplateID;\r\n\t\t}\r\n\t},\r\n\tsetIsProjectionsLoaded(state, val) {\r\n\t\tstate.isProjectionsLoaded = val;\r\n\t},\r\n\tpreviousTemplateProjection(state) {\r\n\t\tif (state.templateProjections.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (state.currentTemplateProjectionIdx === 0) {\r\n\t\t\tstate.currentTemplateProjectionIdx = state.templateProjections.length - 1;\r\n\t\t} else {\r\n\t\t\tstate.currentTemplateProjectionIdx--;\r\n\t\t}\r\n\t\tstate.lastUsedTemplateId = state.templateProjections[state.currentTemplateProjectionIdx].mobileRaiseTemplateID;\r\n\t},\r\n\tnextTemplateProjection(state) {\r\n\t\tif (state.templateProjections.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (state.currentTemplateProjectionIdx === state.templateProjections.length - 1) {\r\n\t\t\tstate.currentTemplateProjectionIdx = 0;\r\n\t\t} else {\r\n\t\t\tstate.currentTemplateProjectionIdx++;\r\n\t\t}\r\n\t\tstate.lastUsedTemplateId = state.templateProjections[state.currentTemplateProjectionIdx].mobileRaiseTemplateID;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport getDefaultState from \"./state\";\r\nimport { MobileRaiseState } from \"./types\";\r\n\r\nconst state: MobileRaiseState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nconst module: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tactions,\r\n\tmutations\r\n};\r\n\r\nexport default module;\r\n","import { GetterTree } from \"vuex\";\r\nimport { SubscriptionState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetSubscriptionType: state => {\r\n\t\tswitch (state.subscription.type) {\r\n\t\t\tcase 0:\r\n\t\t\t\treturn \"Standard\";\r\n\t\t\tcase 1:\r\n\t\t\t\treturn \"Stubbed\";\r\n\t\t\tcase 2:\r\n\t\t\t\treturn \"System Admin\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"Custom\";\r\n\t\t}\r\n\t},\r\n\tisSubscriptionActive: state => {\r\n\t\tif(state.isLoaded && !state.subscription.isActiveState){\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { SubscriptionState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync fetchSubscription({ commit }, tenantGroupId: number) {\r\n\t\tlet subscriptionDetailsDto = await api.getSubscription(tenantGroupId);\r\n\t\tcommit(\"setSubscriptionDetails\", subscriptionDetailsDto);\r\n\t},\r\n\tasync reloadSubscription({ commit }) {\r\n\t\tlet subscriptionDetailsDto = await api.reloadSubscription();\r\n\t\tcommit(\"setSubscriptionDetails\", subscriptionDetailsDto);\r\n\t},\r\n\tasync fetchBilledUserPermissions({ commit }) {\r\n\t\tlet billedUserPermissions = await api.getBilledUserPermissions();\r\n\t\tcommit(\"setBilledUserPermissions\", billedUserPermissions);\r\n\t},\r\n\tasync updateSubscription({ commit }, subscriptionUpdateRequest: []) {\r\n\t\tlet subscriptionDetailsDto = await api.updateSubscription(subscriptionUpdateRequest);\r\n\t\tcommit(\"setSubscriptionDetails\", subscriptionDetailsDto);\r\n\t}\r\n};\r\n","import { SubscriptionState } from \"./types\";\r\n\r\nexport function getDefaultState(): SubscriptionState {\r\n\treturn {\r\n\t\tsubscription: {\r\n\t\t id: 0,\r\n\t\t\texpirationDate: new Date(),\r\n\t\t\tupdatedAt: new Date(),\r\n\t\t\tstate: \"\",\r\n\t\t\tlimitedSubscription: false,\r\n\t\t\tisActiveState: true,\r\n\t\t\tcameras: 0,\r\n\t\t\tcamerasPricePerUnit: \"\",\r\n\t\t\tcamerasLimit: 0,\r\n\t\t\tmobileOfficers: 0,\r\n\t\t\tmobileOfficersPricePerUnit: \"\",\r\n\t\t\tmobileOfficersLimit: 0,\r\n\t\t\toperators: 0,\r\n\t\t\toperatorsPricePerUnit: \"\",\r\n\t\t\toperatorsLimit: 0,\r\n\t\t\tcustomer: {\r\n\t\t\t\tid: 0,\r\n\t\t\t\temail: \"\",\r\n\t\t\t\tfirstName: \"\",\r\n\t\t\t\tlastName: \"\",\r\n\t\t\t\tbillingPortalLink: {\r\n\t\t\t\t\turl: \"\",\r\n\t\t\t\t\texpiresAt: new Date()\r\n\t\t\t\t},\r\n\t\t\t\thasSubscription: false,\r\n\t\t\t\tcompanyName: \"\",\r\n\t\t\t\ttelephone: \"\",\r\n\t\t\t\taddress1: \"\",\r\n\t\t\t\taddress2: \"\",\r\n\t\t\t\tcity: \"\",\r\n\t\t\t\tcountry: \"\",\r\n\t\t\t\tstate: \"\",\r\n\t\t\t\tzipCode: \"\"\r\n\t\t\t},\r\n\t\t\ttype: 0,\r\n\t\t},\r\n\t\tbilledUserPermissions: [],\r\n\t\tisLoaded: false,\r\n\t}\r\n}","import { MutationTree } from \"vuex\";\r\nimport { SubscriptionState, SubscriptionDto } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetSubscriptionDetails(state, subscription: SubscriptionDto) {\r\n\t\tstate.subscription = subscription;\r\n\t\tstate.isLoaded = true;\r\n\t},\r\n\tsetBilledUserPermissions(state, billedUserPermissions) {\r\n\t\tstate.billedUserPermissions = billedUserPermissions;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\"\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { SubscriptionState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: SubscriptionState = getDefaultState();\r\n\r\nexport const subscription: Module = {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { SignUpState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport router from \"@/router\"\r\n\r\nexport const getters: GetterTree = {\r\n\tcurrentStep: state => () => {\r\n let currentStep = state.steps.find(s => router.currentRoute.path.includes(s.route));\r\n if (!currentStep) {\r\n return state.steps[0];\r\n }\r\n return currentStep;\r\n\t},\r\n steps: state => {\r\n\t if (!state.isCreditCardRequired) {\r\n return state.steps.filter(s => s.number != 4);\r\n } else {\r\n return state.steps;\r\n }\r\n }\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { ContactInfoModel, SignUpState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n async saveContactInfo({ commit }, contactInfo: ContactInfoModel) {\r\n commit(\"setContactInfo\", contactInfo);\r\n commit(\"advanceCurrentStep\");\r\n },\r\n async fetchIsCreditCardRequired({ commit }) {\r\n let result = await api.isCreditCardRequired();\r\n commit(\"setIsCreditCardRequired\", result);\r\n }\r\n};\r\n","import { SignUpState } from \"./types\";\r\n\r\nexport function getDefaultState(): SignUpState {\r\n\treturn {\r\n\t isComplete: false,\r\n isCreditCardRequired: false,\r\n\t\tcompanyInfo: {\r\n\t\t name: \"\",\r\n address: \"\",\r\n latLong: \"\",\r\n timeZoneId: 35\r\n },\r\n securityInfo: {\r\n\t password: \"\",\r\n passwordConfirmation: \"\"\r\n },\r\n contactInfo: {\r\n\t\t firstName: \"\",\r\n lastName: \"\",\r\n telephone: \"\",\r\n email: \"\",\r\n addressLine1: \"\",\r\n addressLine2: \"\",\r\n city: \"\",\r\n country: \"\",\r\n state: \"\",\r\n zipCode: \"\",\r\n currency: \"\"\r\n },\r\n customerId: 0,\r\n steps: [\r\n {\r\n number: 1,\r\n title: \"Contact Information\",\r\n description: \"Submit your contact information to get started.\",\r\n route: \"/contactinfo\"\r\n },\r\n {\r\n number: 2,\r\n title: \"Security Information\",\r\n description: \"Secure your account.\",\r\n route: \"/securityinfo\"\r\n },\r\n {\r\n number: 3,\r\n title: \"Company Information\",\r\n description: \"Set your organization details.\",\r\n notes: \"These details will be used to configure your account.\",\r\n route: \"/companyinfo\"\r\n },\r\n {\r\n number: 4,\r\n title: \"Payment Information\",\r\n description: \"Set up your payment.\",\r\n notes: \"Your credit card will not be charged until your 30-day free trial has concluded.\",\r\n route: \"/paymentinfo\"\r\n }\r\n ],\r\n timeZones: [\r\n {\r\n timeZoneID: 1,\r\n id: \"Dateline Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-12:00) Dateline Standard Time\"\r\n },\r\n {\r\n timeZoneID: 2,\r\n id: \"UTC-11\",\r\n\t\t\t\tdisplayName: \"(UTC-11:00) Coordinated Universal Time\"\r\n },\r\n {\r\n timeZoneID: 3,\r\n id: \"Samoa Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-11:00) Samoa Standard Time\"\r\n },\r\n {\r\n timeZoneID: 4,\r\n id: \"Hawaiian Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-10:00) Hawaiian Standard Time\"\r\n },\r\n {\r\n timeZoneID: 5,\r\n id: \"Alaskan Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-09:00) Alaskan Standard Time\"\r\n },\r\n {\r\n timeZoneID: 6,\r\n id: \"Pacific Standard Time (Mexico)\",\r\n\t\t\t\tdisplayName: \"(UTC-08:00) Pacific Standard Time (Mexico)\"\r\n },\r\n {\r\n timeZoneID: 7,\r\n id: \"Pacific Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-08:00) Pacific Standard Time\"\r\n },\r\n {\r\n timeZoneID: 8,\r\n id: \"US Mountain Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-07:00) US Mountain Standard Time\"\r\n },\r\n {\r\n timeZoneID: 9,\r\n id: \"Mountain Standard Time (Mexico)\",\r\n\t\t\t\tdisplayName: \"(UTC-07:00) Mountain Standard Time (Mexico)\"\r\n },\r\n {\r\n timeZoneID: 10,\r\n id: \"Mountain Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-07:00) Mountain Standard Time\"\r\n },\r\n {\r\n timeZoneID: 11,\r\n id: \"Central America Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-06:00) Central America Standard Time\"\r\n },\r\n {\r\n timeZoneID: 12,\r\n id: \"Central Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-06:00) Central Standard Time\"\r\n },\r\n {\r\n timeZoneID: 13,\r\n id: \"Central Standard Time (Mexico)\",\r\n\t\t\t\tdisplayName: \"(UTC-06:00) Central Standard Time (Mexico)\"\r\n },\r\n {\r\n timeZoneID: 14,\r\n id: \"Canada Central Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-06:00) Canada Central Standard Time\"\r\n },\r\n {\r\n timeZoneID: 15,\r\n id: \"SA Pacific Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-05:00) SA Pacific Standard Time\"\r\n },\r\n {\r\n timeZoneID: 16,\r\n id: \"Eastern Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-05:00) Eastern Standard Time\"\r\n },\r\n {\r\n timeZoneID: 17,\r\n id: \"US Eastern Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-05:00) US Eastern Standard Time\"\r\n },\r\n {\r\n timeZoneID: 18,\r\n id: \"Venezuela Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-04:30) Venezuela Standard Time\"\r\n },\r\n {\r\n timeZoneID: 19,\r\n id: \"Paraguay Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-04:00) Paraguay Standard Time\"\r\n },\r\n {\r\n timeZoneID: 20,\r\n id: \"Atlantic Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-04:00) Atlantic Standard Time\"\r\n },\r\n {\r\n timeZoneID: 21,\r\n id: \"Central Brazilian Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-04:00) Central Brazilian Standard Time\"\r\n },\r\n {\r\n timeZoneID: 22,\r\n id: \"SA Western Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-04:00) SA Western Standard Time\"\r\n },\r\n {\r\n timeZoneID: 23,\r\n id: \"Pacific SA Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-04:00) Pacific SA Standard Time\"\r\n },\r\n {\r\n timeZoneID: 24,\r\n id: \"Newfoundland Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-03:30) Pacific SA Standard Time\"\r\n },\r\n {\r\n timeZoneID: 25,\r\n id: \"E. South America Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-03:00) E. South America Standard Time\"\r\n },\r\n {\r\n timeZoneID: 26,\r\n id: \"Argentina Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-03:00) Argentina Standard Time\"\r\n },\r\n {\r\n timeZoneID: 27,\r\n id: \"SA Eastern Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-03:00) SA Eastern Standard Time\"\r\n },\r\n {\r\n timeZoneID: 28,\r\n id: \"Greenland Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-03:00) Greenland Standard Time\"\r\n },\r\n {\r\n timeZoneID: 29,\r\n id: \"Montevideo Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-03:00) Montevideo Standard Time\"\r\n },\r\n {\r\n timeZoneID: 31,\r\n id: \"Mid-Atlantic Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-02:00) Atlantic Standard Time\"\r\n },\r\n {\r\n timeZoneID: 32,\r\n id: \"Azores Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-01:00) Azores Standard Time\"\r\n },\r\n {\r\n timeZoneID: 33,\r\n id: \"Cape Verde Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC-01:00) Cape Verde Standard Time\"\r\n },\r\n {\r\n timeZoneID: 34,\r\n id: \"Morocco Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC) Morocco Standard Time\"\r\n },\r\n {\r\n timeZoneID: 36,\r\n id: \"GMT Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC) GMT Standard Time\"\r\n },\r\n {\r\n timeZoneID: 37,\r\n id: \"Greenwich Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC) Greenwich Standard Time\"\r\n },\r\n {\r\n timeZoneID: 38,\r\n id: \"W. Europe Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+01:00) W. Europe Standard Time\"\r\n },\r\n {\r\n timeZoneID: 39,\r\n id: \"Central Europe Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+01:00) Central Europe Standard Time\"\r\n },\r\n {\r\n timeZoneID: 40,\r\n id: \"Romance Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+01:00) Romance Standard Time\"\r\n },\r\n {\r\n timeZoneID: 41,\r\n id: \"Central European Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+01:00) Central European Standard Time\"\r\n },\r\n {\r\n timeZoneID: 42,\r\n id: \"W. Central Africa Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+01:00) W. Central Africa Standard Time\"\r\n },\r\n {\r\n timeZoneID: 43,\r\n id: \"Namibia Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+01:00) Namibia Standard Time\"\r\n },\r\n {\r\n timeZoneID: 44,\r\n id: \"Jordan Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+02:00) Jordan Standard Time\"\r\n },\r\n {\r\n timeZoneID: 45,\r\n id: \"GTB Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+02:00) GTB Standard Time\"\r\n },\r\n {\r\n timeZoneID: 46,\r\n id: \"Middle East Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+02:00) Middle East Standard Time\"\r\n },\r\n {\r\n timeZoneID: 47,\r\n id: \"Egypt Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+02:00) Egypt Standard Time\"\r\n },\r\n {\r\n timeZoneID: 48,\r\n id: \"Syria Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+02:00) Syria Standard Time\"\r\n },\r\n {\r\n timeZoneID: 49,\r\n id: \"South Africa Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+02:00) South Africa Standard Time\"\r\n },\r\n {\r\n timeZoneID: 50,\r\n id: \"FLE Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+02:00) FLE Standard Time\"\r\n },\r\n {\r\n timeZoneID: 51,\r\n id: \"Israel Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+02:00) Israel Standard Time\"\r\n },\r\n {\r\n timeZoneID: 52,\r\n id: \"E. Europe Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+02:00) E. Europe Standard Time\"\r\n },\r\n {\r\n timeZoneID: 53,\r\n id: \"Arabic Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+03:00) Arabic Standard Time\"\r\n },\r\n {\r\n timeZoneID: 54,\r\n id: \"Arab Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+03:00) Arab Standard Time\"\r\n },\r\n {\r\n timeZoneID: 55,\r\n id: \"Russian Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+03:00) Russian Standard Time\"\r\n },\r\n {\r\n timeZoneID: 56,\r\n id: \"E. Africa Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+03:00) E. Africa Standard Time\"\r\n },\r\n {\r\n timeZoneID: 57,\r\n id: \"Iran Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+03:30) Iran Standard Time\"\r\n },\r\n {\r\n timeZoneID: 58,\r\n id: \"Arabian Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+04:00) Arabian Standard Time\"\r\n },\r\n {\r\n timeZoneID: 59,\r\n id: \"Azerbaijan Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+04:00) Azerbaijan Standard Time\"\r\n },\r\n {\r\n timeZoneID: 60,\r\n id: \"Mauritius Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+04:00) Mauritius Standard Time\"\r\n },\r\n {\r\n timeZoneID: 61,\r\n id: \"Georgian Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+04:00) Georgian Standard Time\"\r\n },\r\n {\r\n timeZoneID: 62,\r\n id: \"Caucasus Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+04:00) Caucasus Standard Time\"\r\n },\r\n {\r\n timeZoneID: 63,\r\n id: \"Afghanistan Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+04:30) Afghanistan Standard Time\"\r\n },\r\n {\r\n timeZoneID: 64,\r\n id: \"Ekaterinburg Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+05:00) Ekaterinburg Standard Time\"\r\n },\r\n {\r\n timeZoneID: 65,\r\n id: \"Pakistan Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+05:00) Pakistan Standard Time\"\r\n },\r\n {\r\n timeZoneID: 66,\r\n id: \"West Asia Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+05:00) West Asia Standard Time\"\r\n },\r\n {\r\n timeZoneID: 67,\r\n id: \"India Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+05:30) India Standard Time\"\r\n },\r\n {\r\n timeZoneID: 68,\r\n id: \"Sri Lanka Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+05:30) Sri Lanka Standard Time\"\r\n },\r\n {\r\n timeZoneID: 69,\r\n id: \"Nepal Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+05:45) Nepal Standard Time\"\r\n },\r\n {\r\n timeZoneID: 70,\r\n id: \"Central Asia Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+06:00) Central Asia Standard Time\"\r\n },\r\n {\r\n timeZoneID: 71,\r\n id: \"Bangladesh Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+06:00) Bangladesh Standard Time\"\r\n },\r\n {\r\n timeZoneID: 72,\r\n id: \"N. Central Asia Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+06:00) N. Central Asia Standard Time\"\r\n },\r\n {\r\n timeZoneID: 73,\r\n id: \"Myanmar Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+06:30) Myanmar Standard Time\"\r\n },\r\n {\r\n timeZoneID: 74,\r\n id: \"SE Asia Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+07:00) SE Asia Standard Time\"\r\n },\r\n {\r\n timeZoneID: 75,\r\n id: \"North Asia Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+07:00) North Asia Standard Time\"\r\n },\r\n {\r\n timeZoneID: 76,\r\n id: \"China Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+08:00) China Standard Time\"\r\n },\r\n {\r\n timeZoneID: 77,\r\n id: \"North Asia East Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+08:00) North Asia East Standard Time\"\r\n },\r\n {\r\n timeZoneID: 78,\r\n id: \"Singapore Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+08:00) Singapore Standard Time\"\r\n },\r\n {\r\n timeZoneID: 79,\r\n id: \"W. Australia Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+08:00) W. Australia Standard Time\"\r\n },\r\n {\r\n timeZoneID: 80,\r\n id: \"Taipei Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+08:00) Taipei Standard Time\"\r\n },\r\n {\r\n timeZoneID: 81,\r\n id: \"Ulaanbaatar Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+08:00) Ulaanbaatar Standard Time\"\r\n },\r\n {\r\n timeZoneID: 82,\r\n id: \"Tokyo Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+09:00) Tokyo Standard Time\"\r\n },\r\n {\r\n timeZoneID: 83,\r\n id: \"Korea Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+09:00) Korea Standard Time\"\r\n },\r\n {\r\n timeZoneID: 84,\r\n id: \"Yakutsk Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+09:00) Yakutsk Standard Time\"\r\n },\r\n {\r\n timeZoneID: 85,\r\n id: \"Cen. Australia Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+09:30) Cen. Australia Standard Time\"\r\n },\r\n {\r\n timeZoneID: 86,\r\n id: \"AUS Central Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+09:30) AUS Central Standard Time\"\r\n },\r\n {\r\n timeZoneID: 87,\r\n id: \"E. Australia Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+10:00) E. Australia Standard Time\"\r\n },\r\n {\r\n timeZoneID: 88,\r\n id: \"AUS Eastern Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+10:00) AUS Eastern Standard Time\"\r\n },\r\n {\r\n timeZoneID: 89,\r\n id: \"West Pacific Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+10:00) West Pacific Standard Time\"\r\n },\r\n {\r\n timeZoneID: 90,\r\n id: \"Tasmania Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+10:00) Tasmania Standard Time\"\r\n },\r\n {\r\n timeZoneID: 91,\r\n id: \"Vladivostok Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+10:00) Vladivostok Standard Time\"\r\n },\r\n {\r\n timeZoneID: 92,\r\n id: \"Magadan Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+11:00) Magadan Standard Time\"\r\n },\r\n {\r\n timeZoneID: 93,\r\n id: \"Central Pacific Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+11:00) Central Pacific Standard Time\"\r\n },\r\n {\r\n timeZoneID: 94,\r\n id: \"New Zealand Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+12:00) New Zealand Standard Time\"\r\n },\r\n {\r\n timeZoneID: 95,\r\n id: \"UTC+12:00\",\r\n\t\t\t\tdisplayName: \"(UTC+12:00) Fiji Standard Time\"\r\n },\r\n {\r\n timeZoneID: 96,\r\n id: \"Fiji Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+12:00) Fiji Standard Time\"\r\n },\r\n {\r\n timeZoneID: 97,\r\n id: \"Kamchatka Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+13:00) Kamchatka Standard Time\"\r\n },\r\n {\r\n timeZoneID: 98,\r\n id: \"Tonga Standard Time\",\r\n\t\t\t\tdisplayName: \"(UTC+13:00) Tonga Standard Time\"\r\n }\r\n ],\r\n\t\t// tslint:disable-next-line\r\n countryOptions: [[\"United States\",\"US\"],[\"United Kingdom\",\"GB\"],[\"Canada\",\"CA\"],[\"New Zealand\",\"NZ\"],[\"Australia\",\"AU\"],[\"South Africa\",\"ZA\"],[\"Singapore\",\"SG\"],[\"--\",\"--\"],[\"Afghanistan\",\"AF\"],[\"Albania\",\"AL\"],[\"Algeria\",\"DZ\"],[\"American Samoa\",\"AS\"],[\"Andorra\",\"AD\"],[\"Angola\",\"AO\"],[\"Anguilla\",\"AI\"],[\"Antarctica\",\"AQ\"],[\"Antigua and Barbuda\",\"AG\"],[\"Argentina\",\"AR\"],[\"Armenia\",\"AM\"],[\"Aruba\",\"AW\"],[\"Australia\",\"AU\"],[\"Austria\",\"AT\"],[\"Azerbaijan\",\"AZ\"],[\"Bahamas\",\"BS\"],[\"Bahrain\",\"BH\"],[\"Bangladesh\",\"BD\"],[\"Barbados\",\"BB\"],[\"Belarus\",\"BY\"],[\"Belgium\",\"BE\"],[\"Belize\",\"BZ\"],[\"Benin\",\"BJ\"],[\"Bermuda\",\"BM\"],[\"Bhutan\",\"BT\"],[\"Bolivia\",\"BO\"],[\"Bonaire, Sint Eustatius and Saba\",\"BQ\"],[\"Bosnia and Herzegovina\",\"BA\"],[\"Botswana\",\"BW\"],[\"Bouvet Island\",\"BV\"],[\"Brazil\",\"BR\"],[\"British Indian Ocean Territory\",\"IO\"],[\"Brunei Darussalam\",\"BN\"],[\"Bulgaria\",\"BG\"],[\"Burkina Faso\",\"BF\"],[\"Burundi\",\"BI\"],[\"Cambodia\",\"KH\"],[\"Cameroon\",\"CM\"],[\"Canada\",\"CA\"],[\"Canary Islands\",\"IC\"],[\"Cape Verde\",\"CV\"],[\"Cayman Islands\",\"KY\"],[\"Central African Republic\",\"CF\"],[\"Chad\",\"TD\"],[\"Chile\",\"CL\"],[\"China\",\"CN\"],[\"Christmas Island\",\"CX\"],[\"Cocos (Keeling) Islands\",\"CC\"],[\"Colombia\",\"CO\"],[\"Comoros\",\"KM\"],[\"Congo\",\"CG\"],[\"Congo, The Democratic Republic Of The\",\"CD\"],[\"Cook Islands\",\"CK\"],[\"Costa Rica\",\"CR\"],[\"Croatia\",\"HR\"],[\"Cuba\",\"CU\"],[\"Curaçao\",\"CW\"],[\"Cyprus\",\"CY\"],[\"Czech Republic\",\"CZ\"],[\"Côte D'Ivoire\",\"CI\"],[\"Denmark\",\"DK\"],[\"Djibouti\",\"DJ\"],[\"Dominica\",\"DM\"],[\"Dominican Republic\",\"DO\"],[\"Ecuador\",\"EC\"],[\"Egypt\",\"EG\"],[\"El Salvador\",\"SV\"],[\"Equatorial Guinea\",\"GQ\"],[\"Eritrea\",\"ER\"],[\"Estonia\",\"EE\"],[\"Ethiopia\",\"ET\"],[\"Falkland Islands (Malvinas)\",\"FK\"],[\"Faroe Islands\",\"FO\"],[\"Fiji\",\"FJ\"],[\"Finland\",\"FI\"],[\"France\",\"FR\"],[\"French Guiana\",\"GF\"],[\"French Polynesia\",\"PF\"],[\"French Southern Territories\",\"TF\"],[\"Gabon\",\"GA\"],[\"Gambia\",\"GM\"],[\"Georgia\",\"GE\"],[\"Germany\",\"DE\"],[\"Ghana\",\"GH\"],[\"Gibraltar\",\"GI\"],[\"Greece\",\"GR\"],[\"Greenland\",\"GL\"],[\"Grenada\",\"GD\"],[\"Guadeloupe\",\"GP\"],[\"Guam\",\"GU\"],[\"Guatemala\",\"GT\"],[\"Guernsey\",\"GG\"],[\"Guinea\",\"GN\"],[\"Guinea-Bissau\",\"GW\"],[\"Guyana\",\"GY\"],[\"Haiti\",\"HT\"],[\"Heard and McDonald Islands\",\"HM\"],[\"Holy See (Vatican City State)\",\"VA\"],[\"Honduras\",\"HN\"],[\"Hong Kong\",\"HK\"],[\"Hungary\",\"HU\"],[\"Iceland\",\"IS\"],[\"India\",\"IN\"],[\"Indonesia\",\"ID\"],[\"Iran, Islamic Republic Of\",\"IR\"],[\"Iraq\",\"IQ\"],[\"Ireland\",\"IE\"],[\"Isle of Man\",\"IM\"],[\"Israel\",\"IL\"],[\"Italy\",\"IT\"],[\"Jamaica\",\"JM\"],[\"Japan\",\"JP\"],[\"Jersey\",\"JE\"],[\"Jordan\",\"JO\"],[\"Kazakhstan\",\"KZ\"],[\"Kenya\",\"KE\"],[\"Kiribati\",\"KI\"],[\"Korea, Democratic People's Republic Of\",\"KP\"],[\"Korea, Republic of\",\"KR\"],[\"Kuwait\",\"KW\"],[\"Kyrgyzstan\",\"KG\"],[\"Lao People's Democratic Republic\",\"LA\"],[\"Latvia\",\"LV\"],[\"Lebanon\",\"LB\"],[\"Lesotho\",\"LS\"],[\"Liberia\",\"LR\"],[\"Libya\",\"LY\"],[\"Liechtenstein\",\"LI\"],[\"Lithuania\",\"LT\"],[\"Luxembourg\",\"LU\"],[\"Macao\",\"MO\"],[\"Macedonia, the Former Yugoslav Republic Of\",\"MK\"],[\"Madagascar\",\"MG\"],[\"Malawi\",\"MW\"],[\"Malaysia\",\"MY\"],[\"Maldives\",\"MV\"],[\"Mali\",\"ML\"],[\"Malta\",\"MT\"],[\"Marshall Islands\",\"MH\"],[\"Martinique\",\"MQ\"],[\"Mauritania\",\"MR\"],[\"Mauritius\",\"MU\"],[\"Mayotte\",\"YT\"],[\"Mexico\",\"MX\"],[\"Micronesia, Federated States Of\",\"FM\"],[\"Moldova, Republic of\",\"MD\"],[\"Monaco\",\"MC\"],[\"Mongolia\",\"MN\"],[\"Montenegro\",\"ME\"],[\"Montserrat\",\"MS\"],[\"Morocco\",\"MA\"],[\"Mozambique\",\"MZ\"],[\"Myanmar\",\"MM\"],[\"Namibia\",\"NA\"],[\"Nauru\",\"NR\"],[\"Nepal\",\"NP\"],[\"Netherlands\",\"NL\"],[\"Netherlands Antilles\",\"AN\"],[\"New Caledonia\",\"NC\"],[\"New Zealand\",\"NZ\"],[\"Nicaragua\",\"NI\"],[\"Niger\",\"NE\"],[\"Nigeria\",\"NG\"],[\"Niue\",\"NU\"],[\"Norfolk Island\",\"NF\"],[\"Northern Mariana Islands\",\"MP\"],[\"Norway\",\"NO\"],[\"Oman\",\"OM\"],[\"Pakistan\",\"PK\"],[\"Palau\",\"PW\"],[\"Palestine, State of\",\"PS\"],[\"Panama\",\"PA\"],[\"Papua New Guinea\",\"PG\"],[\"Paraguay\",\"PY\"],[\"Peru\",\"PE\"],[\"Philippines\",\"PH\"],[\"Pitcairn\",\"PN\"],[\"Poland\",\"PL\"],[\"Portugal\",\"PT\"],[\"Puerto Rico\",\"PR\"],[\"Qatar\",\"QA\"],[\"Romania\",\"RO\"],[\"Russian Federation\",\"RU\"],[\"Rwanda\",\"RW\"],[\"Réunion\",\"RE\"],[\"Saint Barthélemy\",\"BL\"],[\"Saint Helena\",\"SH\"],[\"Saint Kitts And Nevis\",\"KN\"],[\"Saint Lucia\",\"LC\"],[\"Saint Martin\",\"MF\"],[\"Saint Pierre And Miquelon\",\"PM\"],[\"Saint Vincent And The Grenedines\",\"VC\"],[\"Samoa\",\"WS\"],[\"San Marino\",\"SM\"],[\"Sao Tome and Principe\",\"ST\"],[\"Saudi Arabia\",\"SA\"],[\"Senegal\",\"SN\"],[\"Serbia\",\"RS\"],[\"Seychelles\",\"SC\"],[\"Sierra Leone\",\"SL\"],[\"Singapore\",\"SG\"],[\"Sint Maarten\",\"SX\"],[\"Slovakia\",\"SK\"],[\"Slovenia\",\"SI\"],[\"Solomon Islands\",\"SB\"],[\"Somalia\",\"SO\"],[\"South Africa\",\"ZA\"],[\"South Georgia and the South Sandwich Islands\",\"GS\"],[\"South Sudan\",\"SS\"],[\"Spain\",\"ES\"],[\"Sri Lanka\",\"LK\"],[\"Sudan\",\"SD\"],[\"Suriname\",\"SR\"],[\"Svalbard And Jan Mayen\",\"SJ\"],[\"Swaziland\",\"SZ\"],[\"Sweden\",\"SE\"],[\"Switzerland\",\"CH\"],[\"Syrian Arab Republic\",\"SY\"],[\"Taiwan, Republic Of China\",\"TW\"],[\"Tajikistan\",\"TJ\"],[\"Tanzania, United Republic of\",\"TZ\"],[\"Thailand\",\"TH\"],[\"Timor-Leste\",\"TL\"],[\"Togo\",\"TG\"],[\"Tokelau\",\"TK\"],[\"Tonga\",\"TO\"],[\"Trinidad and Tobago\",\"TT\"],[\"Tunisia\",\"TN\"],[\"Turkey\",\"TR\"],[\"Turkmenistan\",\"TM\"],[\"Turks and Caicos Islands\",\"TC\"],[\"Tuvalu\",\"TV\"],[\"Uganda\",\"UG\"],[\"Ukraine\",\"UA\"],[\"United Arab Emirates\",\"AE\"],[\"United Kingdom\",\"GB\"],[\"United States\",\"US\"],[\"United States Minor Outlying Islands\",\"UM\"],[\"Uruguay\",\"UY\"],[\"Uzbekistan\",\"UZ\"],[\"Vanuatu\",\"VU\"],[\"Venezuela, Bolivarian Republic of\",\"VE\"],[\"Vietnam\",\"VN\"],[\"Virgin Islands, British\",\"VG\"],[\"Virgin Islands, U.S.\",\"VI\"],[\"Wallis and Futuna\",\"WF\"],[\"Western Sahara\",\"EH\"],[\"Yemen\",\"YE\"],[\"Zambia\",\"ZM\"],[\"Zimbabwe\",\"ZW\"],[\"Åland Islands\",\"AX\"]]\r\n\t}\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { SignUpState, ContactInfoModel, CompanyInfoModel, SecurityInfoModel } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport router from \"@/router\"\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetContactInfo(state, contactInfo: ContactInfoModel) {\r\n\t state.contactInfo = contactInfo;\r\n\t},\r\n setSecurityInfo(state, securityInfo: SecurityInfoModel) {\r\n\t state.securityInfo = securityInfo;\r\n },\r\n\tsetCompanyInfo(state, companyInfo: CompanyInfoModel) {\r\n\t\tstate.companyInfo = companyInfo;\r\n\t},\r\n async advanceCurrentStep(state) {\r\n\t let currentStep = state.steps.find(s => router.currentRoute.path.includes(s.route));\r\n if (!currentStep) {\r\n currentStep = state.steps[0];\r\n }\r\n\r\n let nextStepRoute = state.steps.find(s => s.number === currentStep.number + 1).route;\r\n await router.push(\"/signup\" + nextStepRoute);\r\n },\r\n setRegistrationComplete(state, isComplete) {\r\n\t state.isComplete = isComplete;\r\n },\r\n setCustomerId(state, customerId: number) {\r\n\t state.customerId = customerId;\r\n },\r\n setIsCreditCardRequired(state, value) {\r\n\t state.isCreditCardRequired = value;\r\n },\r\n resetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { SignUpState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: SignUpState = getDefaultState();\r\n\r\nexport const signup: Module = {\r\n\tnamespaced: true,\r\n getters,\r\n\tstate,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { ExternalMapLayerState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetExternalMapLayers: state => state.externalMapLayers,\r\n\tgetExternalMapLayerTypes: state => state.externalMapLayerTypes\r\n};\r\n","import api from \"../../services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport {\r\n\tExternalMapLayerState,\r\n\tExternalMapLayer,\r\n\tExternalMapLayerUserLink\r\n} from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadExternalMapLayers({ commit }) {\r\n\t\tconst externalMapLayers = await api.getExternalMapLayers();\r\n\t\tlet data = externalMapLayers.data;\r\n\r\n\t\tcommit(\"setExternalMapLayers\", data);\r\n\t},\r\n\tasync loadExternalMapLayerTypes({ commit }) {\r\n\t\tconst externalMapLayerTypes = await api.getExternalMapLayerTypes();\r\n\t\tcommit(\"setExternalMapLayerTypes\", externalMapLayerTypes.data);\r\n\t},\r\n\tasync createOrUpdateExternalMapLayer({ commit, dispatch }, externalMapLayer: ExternalMapLayer) {\r\n\t\tconst { data } = await api.createOrUpdateExternalMapLayer(externalMapLayer);\r\n\t\tconst updatedExternalMapLayer: ExternalMapLayer = data;\r\n\r\n\t\tlet action = externalMapLayer.externalMapLayerID ? \"updateExternalMapLayer\" : \"addNewExternalMapLayer\";\r\n\r\n\t\tcommit(action, updatedExternalMapLayer);\r\n\t\tdispatch(\"loadExternalMapLayers\");\r\n\t},\r\n\tasync deleteExternalMapLayer({ commit }, externalMapLayerID: number) {\r\n\t\tawait api.deleteExternalMapLayer(externalMapLayerID);\r\n\t\tcommit(\"removeExternalMapLayer\", externalMapLayerID);\r\n\t},\r\n\tasync updateExternalMapLayerVisibility({ commit, dispatch }, externalMapLayer: ExternalMapLayer) {\r\n\t\t// create an externalMapLayerLink object to send to API\r\n\t\tlet externalMapLayerUserLink: ExternalMapLayerUserLink = {\r\n\t\t\texternalMapLayerID: externalMapLayer.externalMapLayerID,\r\n\t\t\tdisplay: !externalMapLayer.displaying,\r\n\t\t\tuserId: -1\r\n\t\t};\r\n\t\tlet data = await api.updateExternalMapLayerUserLink(externalMapLayerUserLink);\r\n\r\n\t\t// trigger pulling down the list of externalMapLayers again as the state will have changed.\r\n\t\tdispatch(\"loadExternalMapLayers\");\r\n\t\treturn data;\r\n\t},\r\n\tasync updateExternalMapLayerVisibilityForDelete({ dispatch }, externalMapLayerId: number) {\r\n\t\t// create an externalMapLayerLink object to send to API\r\n\t\tlet externalMapLayerUserLink: ExternalMapLayerUserLink = {\r\n\t\t\texternalMapLayerID: externalMapLayerId,\r\n\t\t\tdisplay: false,\r\n\t\t\tuserId: -1\r\n\t\t};\r\n\t\tawait api.updateExternalMapLayerUserLink(externalMapLayerUserLink);\r\n\r\n\t\t// trigger pulling down the list of externalMapLayers again as the state will have changed.\r\n\t\tdispatch(\"loadExternalMapLayers\");\r\n\t}\r\n};\r\n","import { ExternalMapLayerState, ExternalMapLayer, ExternalMapLayerType } from \"./types\";\r\n\r\nexport function getDefaultState(): ExternalMapLayerState {\r\n\treturn {\r\n\t\texternalMapLayers: [] as ExternalMapLayer[],\r\n\t\texternalMapLayerTypes: [] as ExternalMapLayerType[]\r\n\t};\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { ExternalMapLayerState, ExternalMapLayer, ExternalMapLayerType } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport Vue from \"vue\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetExternalMapLayers(state, externalMapLayers: ExternalMapLayer[]) {\r\n\t\tstate.externalMapLayers = externalMapLayers;\r\n\t},\r\n\tsetExternalMapLayerTypes(state, externalMapLayerTypes: ExternalMapLayerType[]) {\r\n\t\tstate.externalMapLayerTypes = externalMapLayerTypes;\r\n\t},\r\n\tupdateExternalMapLayer(state, updateExternalMapLayer: ExternalMapLayer) {\r\n\t\tconst index = state.externalMapLayers.findIndex(\r\n\t\t\t(item: ExternalMapLayer) => item.externalMapLayerID === updateExternalMapLayer.externalMapLayerID\r\n\t\t);\r\n\r\n\t\tif (index >= 0) {\r\n\t\t\tVue.set(state.externalMapLayers, index, updateExternalMapLayer);\r\n\t\t}\r\n\t},\r\n\taddNewExternalMapLayer(state, externalMapLayers: ExternalMapLayer) {\r\n\t\tif (\r\n\t\t\tstate.externalMapLayers.findIndex(\r\n\t\t\t\t(x: ExternalMapLayer) => x.externalMapLayerID == externalMapLayers.externalMapLayerID\r\n\t\t\t) == -1\r\n\t\t) {\r\n\t\t\tstate.externalMapLayers.push(externalMapLayers);\r\n\t\t}\r\n\t},\r\n\tremoveExternalMapLayer(state, externalMapLayerId: number) {\r\n\t\tconst index = state.externalMapLayers.findIndex(\r\n\t\t\t(item: ExternalMapLayer) => item.externalMapLayerID === externalMapLayerId\r\n\t\t);\r\n\t\tstate.externalMapLayers.splice(index, 1);\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { ExternalMapLayerState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: ExternalMapLayerState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const externalMapLayers: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { CaseManagementState } from \"./types\";\r\n\r\nexport function getDefaultState(): CaseManagementState {\r\n return {\r\n caseTypes: [],\r\n caseTypesForUser: []\r\n }\r\n}","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { CaseManagementState } from \"@/store/case-management/types\";\r\n\r\nexport const actions: ActionTree = {\r\n async fetchCaseTypes({ commit }, eventId: number) {\r\n let caseTypes = await api.getTemplates(eventId);\r\n if (caseTypes) {\r\n commit(\"setCaseTypes\", caseTypes.data);\r\n }\r\n },\r\n\r\n async casesLogin({ commit }, suiteSession: boolean) {\r\n return await api.casesLogin(suiteSession);\r\n },\r\n\r\n async fetchCaseTypesForUser({ commit }) {\r\n let caseTypes = await api.getTemplatesForUser();\r\n commit(\"setCaseTypesForUser\", caseTypes.data);\r\n }\r\n};\r\n","import { MutationTree } from \"vuex\";\r\nimport { CaseManagementState, CaseType } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetCaseTypes(state, caseTypes: CaseType[]) {\r\n\t\tstate.caseTypes = caseTypes;\r\n\t},\r\n\tsetCaseTypesForUser(state, caseTypes: CaseType[]) {\r\n\t\tstate.caseTypesForUser = caseTypes;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n}","import { getDefaultState } from \"./state\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { Module } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const state: any = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const caseManagement: Module = {\r\n namespaced,\r\n state,\r\n actions,\r\n mutations\r\n};","import { GetterTree } from \"vuex\";\r\nimport {\r\n\tCSVFormHandler,\r\n\tModalItemCSV,\r\n} from \"./types\";\r\n\r\nfunction formattedByTitle(modalItems) {\r\n\treturn modalItems.reduce(\r\n\t\t(mandatory, { title }) => ({\r\n\t\t\t...mandatory,\r\n\t\t\t[title]: true\r\n\t\t}),\r\n\t\t{}\r\n\t)\r\n}\r\n\r\nfunction formattedByTitleValue(modalItems) {\r\n\treturn modalItems.reduce(\r\n\t\t(mandatory, value) => ({\r\n\t\t\t...mandatory,\r\n\t\t\t[value.title]: value\r\n\t\t}),\r\n\t\t{}\r\n\t)\r\n}\r\n\r\nfunction formattingValue({ elementForm, key, modalItem }) {\r\n\tconst value = elementForm[key]\r\n\r\n\tif (modalItem.csvComponent === \"checkbox\") {\r\n\t\treturn `${value}`.toLowerCase() === \"true\"\r\n\t}\r\n\r\n\treturn value\r\n}\r\n\r\nfunction createFormData(csvData, validModalItems = []) {\r\n\tif(!csvData.length) return []\r\n\tconst validModalByTitle = Object.entries(formattedByTitleValue(validModalItems))\r\n\r\n\treturn csvData.map((elementForm, rowId) =>\r\n\t\tvalidModalByTitle\r\n\t\t\t.map(([key, value]: [string, ModalItemCSV & ModalItemCSV], indexCell) => ({\r\n\t\t\t\t...value,\r\n\t\t\t\tcsvValue: formattingValue({ elementForm, key, modalItem: value }),\r\n\t\t\t\trowId,\r\n\t\t\t\tuniqId: `Row=${rowId}indexCell=${indexCell}`,\r\n\t\t\t\tindexCell\r\n\t\t\t}))\r\n\t)\r\n}\r\n\r\nexport const getters: GetterTree = {\r\n\tisValidForm: state => name => Object.keys(state.errorsForm[name] || {}).length === 0,\r\n\r\n\tformattedErrorsByRowId: state => name => Object.values(state.errorsForm[name] || {})\r\n\t\t.reduce((acc, cur: T) => {\r\n\t\t\tif(acc[cur.rowId] !== undefined) acc[cur.rowId].push(cur)\r\n\t\t\telse acc[cur.rowId] = [cur]\r\n\r\n\t\t\treturn acc\r\n\t\t}, {}),\r\n\r\n\terrorsColumn: state => name => {\r\n\t\treturn Object.values(state.errorsForm[name] || {})\r\n\t\t\t.reduce((acc: T, { indexCell }) => ({\r\n\t\t\t\t...acc,\r\n\t\t\t\t[indexCell]: true\r\n\t\t\t}), {})\r\n\t},\r\n\r\n\terrorsRow: (state, getters) => name => {\r\n\t\treturn Object.values(getters.formattedErrorsByRowId(name))\r\n\t\t\t.reduce((acc: T, v:any[]) => {\r\n\t\t\t\tconst { rowId } = v[0]\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...acc,\r\n\t\t\t\t\t[rowId]: true\r\n\t\t\t\t}\r\n\t\t\t}, {})\r\n\t},\r\n\r\n\terrorList: (state, getters) => name => {\r\n\t\treturn Object.values(getters.formattedErrorsByRowId(name)).map((row:any[]) => {\r\n\t\t\tconst { rowId } = row[0]\r\n\t\t\treturn `Row ${Number(rowId) + 1}, ${row.map(({ message, title }) => message ? message : title).join(\", \")} not valid`\r\n\t\t})\r\n\t},\r\n\r\n\theadersForm: (state, getters) => name =>\r\n\t\tgetters.validModalItems(name).map(({ title }) => title),\r\n\r\n\tvalidHeaders: (state, getters): any => name =>\r\n\t\tgetters.validModalItems(name).reduce(\r\n\t\t\t(validHeaders, { title }) => ({\r\n\t\t\t\t...validHeaders,\r\n\t\t\t\t[title]: true\r\n\t\t\t}),\r\n\t\t\t{}\r\n\t\t),\r\n\r\n\tformattedByUnitedKey: (state, getters) => name => getters.validModalItems(name)\r\n\t\t.reduce((acc, { csvUnitedKey }) =>\r\n\t\t\tcsvUnitedKey\r\n\t\t\t\t? { ...acc, [csvUnitedKey]: csvUnitedKey }\r\n\t\t\t\t: acc, {}),\r\n\r\n\tunionData: (state, getters) => ({ name, isOrigin }) => {\r\n\t\treturn getters.formattedFormData({ name, isOrigin }).flat().reduce((acc, cur) => {\r\n\t\t\tconst unionTitle = getters.formattedByUnitedKey(name)[cur.title]\r\n\t\t\tconst { csvValue } = cur\r\n\r\n\t\t\tif(!unionTitle) return acc\r\n\r\n\t\t\tif(acc[unionTitle]) {\r\n\t\t\t\tacc[unionTitle].push(csvValue)\r\n\t\t\t} else {\r\n\t\t\t\tacc[unionTitle] = [csvValue]\r\n\t\t\t}\r\n\r\n\t\t\treturn acc\r\n\t\t}, {})\r\n\r\n\t},\r\n\r\n\tformattedFormData: (state, getters) => ({ name, isOrigin = false }) => {\r\n\t\tconst data = isOrigin ? state.originalCsvData[name] : state.csvData[name]\r\n\t\treturn data ? createFormData(data, getters.validModalItems(name)) : []\r\n\t},\r\n\r\n\tformData: (state, getters) => ({ name, isOrigin }) =>\r\n\t\tgetters.formattedFormData({ name, isOrigin })\r\n\t\t\t.map( v => v\r\n\t\t\t\t.map(el => {\r\n\t\t\t\t\tif (el.csvUnitedKey) {\r\n\t\t\t\t\t\tel.unionData = el.csvData.concat(getters.unionData({ name, isOrigin })[el.csvUnitedKey].filter(v => v) || [])\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn el\r\n\t\t\t\t})),\r\n\r\n\terrorsCSV: (state, getters, rootState, rootGetters) => name =>\r\n\t\trootGetters[\"csvParser/errorsCSV\"](name),\r\n\r\n\tmandatoryFields: (state, getters) => name => {\r\n\t\tconst validModalItems = getters.validModalItems(name) || []\r\n\t\tconst requiredFields = validModalItems.filter(({ required }) => required)\r\n\r\n\t\treturn formattedByTitle(requiredFields)\r\n\t},\r\n\r\n\tvalidModalItems: state => (name): ModalItemCSV[] => {\r\n\t\tconst modalItems = (state.modalItemsCsv[name]) || []\r\n\r\n\t\treturn modalItems.length ? modalItems.filter(({ csvExclude }) => !csvExclude) : []\r\n\t}\r\n\r\n};\r\n","import { MutationTree } from \"vuex\";\r\nimport { CSVFormHandler } from \"./types\";\r\nimport { get } from \"lodash\"\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetErrors(state, errors) {\r\n\t\tstate.errorsForm = {\r\n\t\t\t...state.errorsForm,\r\n\t\t\t...errors\r\n\t\t}\r\n\t},\r\n\r\n\tsetModalItems(state, { modalItemsCsv, name }) {\r\n\t\tstate.modalItemsCsv = {\r\n\t\t\t...state.modalItemsCsv,\r\n\t\t\t[name]: modalItemsCsv\r\n\t\t}\r\n\t},\r\n\r\n\tsetCsvData(state, { csvData, name }) {\r\n\t\tstate.csvData = {\r\n\t\t\t...state.csvData,\r\n\t\t\t[name]: csvData\r\n\t\t}\r\n\t},\r\n\r\n\tsetOriginalCsvData(state, { csvData, name }) {\r\n\t\tstate.originalCsvData = {\r\n\t\t\t...state.csvData,\r\n\t\t\t[name]: csvData\r\n\t\t}\r\n\t},\r\n\r\n\tresetErrorsForm(state, { name }) {\r\n\t\tstate.errorsForm[name] = {}\r\n\t},\r\n\r\n\tsetErrorsForm(state, { error, name }) {\r\n\t\tconst { uniqId } = error;\r\n\r\n\t\tstate.errorsForm = {\r\n\t\t\t...state.errorsForm,\r\n\t\t\t[name]: {\r\n\t\t\t\t...state.errorsForm[name],\r\n\t\t\t\t[uniqId]: error\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdeleteErrorById(state, { uniqId, name }) {\r\n\t\tif(!state.errorsForm[name]) {\r\n\t\t\tstate.errorsForm[name] = {}\r\n\t\t}\r\n\t\tconst isExist = state.errorsForm[name][uniqId];\r\n\t\tif (isExist) {\r\n\t\t\tstate.errorsForm = {\r\n\t\t\t\t...state.errorsForm,\r\n\t\t\t\t[name]: Object.entries(state.errorsForm[name]).reduce((acc, [key, value]) => {\r\n\t\t\t\t\treturn key === uniqId ? acc : { ...acc, [key]: value }\r\n\t\t\t\t}, {})\r\n\t\t\t};\r\n\t\t}\r\n\t},\r\n\r\n\tupdateCsvValue(state, { value, data, name }) {\r\n\t\tconst item = get(state.csvData, `${name}[${data.rowId}]`)\r\n\r\n\t\tif (item) {\r\n\t\t\tconst localItem = {\r\n\t\t\t\t...item,\r\n\t\t\t\t[data.title]: value\r\n\t\t\t}\r\n\t\t\tconst localData = state.csvData[name]\r\n\r\n\t\t\tlocalData[data.rowId] = localItem\r\n\r\n\t\t\tstate.csvData = {\r\n\t\t\t\t...state.csvData,\r\n\t\t\t\t[name]: localData\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport {\r\n\tCSVFormHandler,\r\n} from \"./types\";\r\nimport { cloneDeep, get }from \"lodash\"\r\n\r\nfunction validateCells({ array, name, isOrigin = false, formData, existErrors }) {\r\n\treturn array.reduce((errors, data) => {\r\n\t\tconst validationCell = data?.csvValidation?.validationCell\r\n\r\n\t\tconst validateOption = { currentElement: data, formData }\r\n\t\tconst validateResult = (validationCell && validationCell(validateOption)) || {};\r\n\r\n\t\tconst errorData = {\r\n\t\t\tmessage: \"\",\r\n\t\t\ttitle: data.title,\r\n\t\t\tisValid: true,\r\n\t\t\tuniqId: data.uniqId,\r\n\t\t\trowId: data.rowId,\r\n\t\t\tindexCell: data.indexCell,\r\n\t\t\t...validateResult\r\n\t\t};\r\n\r\n\t\tif (!errorData.isValid) {\r\n\t\t\tif(errors[name]) {\r\n\t\t\t\terrors[name][data.uniqId] = errorData\r\n\t\t\t} else {\r\n\t\t\t\terrors[name] = { [data.uniqId]: errorData }\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn errors\r\n\t}, cloneDeep(existErrors))\r\n}\r\n\r\nexport const actions: ActionTree = {\r\n\r\n\tasync resetErrorsForm({ commit },{ name }) {\r\n\t\tcommit(\"resetErrorsForm\", { name })\r\n\t},\r\n\r\n\tasync removeRow({ state, commit, dispatch }, { row, name }) {\r\n\t\tconst currentCsvData = get(state, `csvData[${name}]`)\r\n\t\tconst rowId = get(row, \"[0].rowId\")\r\n\r\n\t\tif(rowId === undefined) return\r\n\r\n\t\tawait dispatch(\"setDataCsv\", { csvData: currentCsvData.filter((el , i) => i !== rowId), name })\r\n\t\tawait dispatch(\"resetErrorsForm\", { name })\r\n\t},\r\n\r\n\tasync addNewRowCsv({ state, dispatch }, { name }) {\r\n\t\tconst currentCsvData = get(state, `csvData[${name}]`)\r\n\t\tconst firstElement = get(currentCsvData, \"[0]\")\r\n\t\tif(firstElement) {\r\n\t\t\tconst emptyElement = Object.keys(firstElement)\r\n\t\t\t\t\t\t\t\t\t\t.reduce((acc, cur) => ({\r\n\t\t\t\t\t\t\t\t\t\t\t...acc,\r\n\t\t\t\t\t\t\t\t\t\t\t[cur]: \"\"\r\n\t\t\t\t\t\t\t\t\t\t}) ,{})\r\n\r\n\t\t\tconst newCsvData = cloneDeep([...currentCsvData, emptyElement])\r\n\t\t\tawait dispatch(\"setDataCsv\", { csvData: newCsvData, name })\r\n\t\t}\r\n\t},\r\n\r\n\tsetModalItemsCsv({ commit }, option) {\r\n\t\tcommit(\"setModalItems\", option);\r\n\t},\r\n\r\n\tsetDataCsv({ commit }, { csvData, name }) {\r\n\t\tcommit(\"setCsvData\", { csvData: cloneDeep(csvData), name });\r\n\t\tcommit(\"setOriginalCsvData\", { csvData: cloneDeep(csvData), name });\r\n\t},\r\n\r\n\tasync setValue({ commit }, { value, data, name }) {\r\n\t\tcommit(\"updateCsvValue\", { value, data, name });\r\n\t},\r\n\r\n\tvalidateAll: ({ getters, state, commit }, { name, isOrigin }) => {\r\n\t\tconst arr = getters.formData({ name, isOrigin })\r\n\t\tconst newArr = arr.flat().filter(data => data?.csvValidation?.validationCell)\r\n\t\tconst errors = validateCells({\r\n\t\t\tarray: newArr,\r\n\t\t\tname,\r\n\t\t\t formData: getters.formData({ name }),\r\n\t\t\t existErrors: state.errorsForm\r\n\t\t\t})\r\n\r\n\t\tcommit(\"setErrors\", errors)\r\n\t},\r\n\r\n\tvalidateCell({ commit, getters }, { data, name, isOrigin }: any): void {\r\n\t\tconst validationCell = data?.csvValidation?.validationCell;\r\n\t\tconst validateOption = { currentElement: data, formData: getters.formData({ name, isOrigin }) }\r\n\t\tconst validateResult = (validationCell && validationCell(validateOption)) || {};\r\n\t\tconst errorData = {\r\n\t\t\tmessage: \"\",\r\n\t\t\ttitle: data.title,\r\n\t\t\tisValid: true,\r\n\t\t\tuniqId: data.uniqId,\r\n\t\t\trowId: data.rowId,\r\n\t\t\tindexCell: data.indexCell,\r\n\t\t\t...validateResult\r\n\t\t};\r\n\r\n\t\tif (errorData.isValid) {\r\n\t\t\tcommit(\"deleteErrorById\", { uniqId: data.uniqId, name });\r\n\t\t} else {\r\n\t\t\tcommit(\"setErrorsForm\", { error: errorData, name });\r\n\t\t}\r\n\t}\r\n};\r\n","import { CSVFormHandler, ModalItemCSV } from \"./types\";\r\n\r\nexport function getDefaultState(): CSVFormHandler {\r\n return {\r\n\t\tmodalItemsCsv: {},\r\n\t\tcsvData: {},\r\n\t\terrorsForm: {},\r\n\t\toriginalCsvData: {}\r\n\t}\r\n}\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { mutations } from \"./mutations\";\r\nimport { actions } from \"./actions\";\r\nimport { CSVFormHandler } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: CSVFormHandler = getDefaultState();\r\nconst namespaced: boolean = true;\r\n\r\nexport const csvFormHandler: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tmutations,\r\n\tactions\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { AlarmMaskingState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetMaskedAlarmCount: state => {\r\n\t\treturn state.responses.filter(r => !r.armed).length;\r\n\t},\r\n\tgetUnmaskedAlarmCount: state => {\r\n\t\treturn state.responses.filter(r => r.armed).length;\r\n\t},\r\n\tgetAreaMaskingMode: state => {\r\n\t\treturn state.isAreaMaskingMode;\r\n\t},\r\n\tgetIsUpdatingArea: state => {\r\n\t\treturn state.isUpdatingArea;\r\n\t},\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { AlarmMaskingState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadGroup({ commit }, groupId: number ) {\r\n\t\tlet groupResponses = await api.responsesByArea(groupId);\r\n\t\tcommit(\"setGroupId\", groupId);\r\n\t\tcommit(\"setResponses\", groupResponses);\r\n\t},\r\n\r\n\tsetMaxAlarmsToShow({ commit }, maxCount : number) {\r\n\t\tcommit(\"setMaxAlarmsToShow\", maxCount);\r\n\t},\r\n\r\n};\r\n","import { AlarmMaskingState } from \"./types\";\r\n\r\nexport function getDefaultState(): AlarmMaskingState {\r\n\treturn {\r\n\t\tgroupId: 0,\r\n\t\tresponses: [],\r\n\t\tmaxAlarmsToShow: 200,\r\n\t\tisAreaMaskingMode: false,\r\n\t\tisUpdatingArea: false,\r\n\t}\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { AlarmMaskingState, Response } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetGroupId(state, groupId: number) {\r\n\t\tstate.groupId = groupId;\r\n\t},\r\n\tsetResponses(state, responses: Response[]) {\r\n\t\tstate.responses = responses;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n\tsetMaxAlarmsToShow(state, maxCount: number) {\r\n\t\tif(maxCount !== null && maxCount >= 200) {\r\n\t\t\tstate.maxAlarmsToShow = maxCount;\r\n\t\t}\r\n\t},\r\n\tsetAreaMaskingMode(state, areaMaskingMode: boolean) {\r\n\t\tstate.isAreaMaskingMode = areaMaskingMode;\r\n\t},\r\n\tsetIsUpdatingArea(state, isUpdatingArea: boolean) {\r\n\t\tstate.isUpdatingArea = isUpdatingArea;\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { AlarmMaskingState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: AlarmMaskingState = getDefaultState();\r\n\r\nexport const alarmMasking: Module = {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { UserContextState, TenantOverview } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { PollingStatus } from \"@/types/PollingStatus\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync startPolling({ commit, state, rootState }) {\r\n\t\tif (rootState.User.loggedIn && !state.pollingStatus.isPolling) {\r\n\t\t\tlet fetchOverview = async () => {\r\n\t\t\t\tlet tenantOverview: TenantOverview = await api.getTenantOverview();\r\n\t\t\t\tcommit(\"setTenantOverview\", tenantOverview);\r\n\t\t\t}\r\n\r\n\t\t\tawait fetchOverview();\r\n\r\n\t\t\t// if we currently have an interval running, clear it\r\n\t\t\tclearInterval(state.pollingStatus.intervalHandlerId);\r\n\r\n\t\t\tlet intervalHandlerId = window.setInterval(fetchOverview, 30000);\r\n\r\n\t\t\tlet pollingStatus: PollingStatus = {\r\n\t\t\t\tisPolling: true,\r\n\t\t\t\tintervalHandlerId: intervalHandlerId\r\n\t\t\t}\r\n\r\n\t\t\tcommit(\"setPollingStatus\", pollingStatus);\r\n\t\t}\r\n\t},\r\n\tasync stopPolling({ commit, state }) {\r\n\t\tif (state.pollingStatus.isPolling) {\r\n\t\t\tclearInterval(state.pollingStatus.intervalHandlerId);\r\n\r\n\t\t\tlet pollingStatus: PollingStatus = {\r\n\t\t\t\tisPolling: false,\r\n\t\t\t\tintervalHandlerId: 0\r\n\t\t\t}\r\n\r\n\t\t\tcommit(\"setPollingStatus\", pollingStatus);\r\n\t\t}\r\n\t},\r\n\tasync fetchOverview({ commit, state }) {\r\n\t\tlet tenantOverview: TenantOverview = await api.getTenantOverview();\r\n\t\tcommit(\"setTenantOverview\", tenantOverview);\r\n\t}\r\n};\r\n","import { UserContextState } from \"./types\";\r\n\r\nexport function getDefaultState(): UserContextState {\r\n\treturn {\r\n\t\ttenantOverview: {\r\n\t\t\tareaCount: 9999,\r\n\t\t\tgroupMaskingOverview: {\r\n\t\t\t\tmaskedCount: 0,\r\n\t\t\t\tpartialMaskCount: 0,\r\n\t\t\t\tunmaskedCount: 0\r\n\t\t\t}\r\n\t\t},\r\n\t\tpollingStatus: {\r\n\t\t\tisPolling: false,\r\n\t\t\tintervalHandlerId: 0\r\n\t\t},\r\n\t\tisSet: false\r\n\t}\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { TenantOverview, UserContextState } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { PollingStatus } from \"@/types/PollingStatus\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetTenantOverview(state, tenantOverview: TenantOverview) {\r\n\t\tstate.tenantOverview = tenantOverview;\r\n\t\tstate.isSet = true;\r\n\t},\r\n\tsetPollingStatus(state, pollingStatus: PollingStatus) {\r\n\t\tstate.pollingStatus = pollingStatus;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { UserContextState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetTenantSize: state => {\r\n\t\tif (!state.isSet || !state.tenantOverview || !state.tenantOverview.areaCount || state.tenantOverview.areaCount < 1) {\r\n\t\t\t// user context not set, assume the worse case scenario\r\n\t\t\treturn \"large\";\r\n\t\t}\r\n\r\n\t\tif (state.tenantOverview.areaCount < 100) {\r\n\t\t\treturn \"small\";\r\n\t\t} else if (state.tenantOverview.areaCount < 500) {\r\n\t\t\treturn \"medium\";\r\n\t\t} else {\r\n\t\t\treturn \"large\";\r\n\t\t}\r\n\t}\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { getters } from \"./getters\";\r\nimport { UserContextState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: UserContextState = getDefaultState();\r\n\r\nexport const userContext: Module = {\r\n\tnamespaced: true,\r\n\tgetters,\r\n\tstate,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GuardChat } from \"./types\";\r\n\r\nexport default function getDefaultState(): GuardChat {\r\n\treturn {\r\n\t\tmessages: [],\r\n\t\tnumberOfUnread: 0,\r\n\t\ttwoWayMessages: [],\r\n\t\ttwoWayNumberOfUnread: 0\r\n\t};\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport getDefaultState from \"./state\";\r\nimport { GuardChat, Message } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n\taddMessages(state, messages: Message[]) {\r\n\t\tstate.messages.push(...messages);\r\n\t},\r\n\tremoveMessages(state) {\r\n\t\tstate.messages = [];\r\n\t},\r\n\taddTwoWayMessages(state, messages: Message[]) {\r\n\t\tstate.twoWayMessages.push(...messages);\r\n\t},\r\n\tsetNumberOfUnread(state, newValue: number) {\r\n\t\tstate.numberOfUnread = newValue;\r\n\t},\r\n\tsetTwoWayNumberOfUnread(state, newValue: number) {\r\n\t\tstate.twoWayNumberOfUnread = newValue;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n\tresetTwoWayState(state) {\r\n\t\tstate.twoWayMessages = [];\r\n\t\tstate.twoWayNumberOfUnread = 0;\r\n\t}\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { GuardChat } from \"./types\";\r\nimport * as api from \"@/services/api.guardChat.service\";\r\nimport EventRecordTypes from \"@/types/sv-data/enums/EventRecordTypes\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadMessages({ commit, state, getters }, eventId: number) {\r\n\t\tconst afterId = getters.getLastMessageId as number | undefined;\r\n\t\tlet messages = await api.loadMessages(eventId, afterId);\r\n\t\tif (messages) {\r\n\t\t\tconst currentMessageIds = state.messages.map(x => { return x.eventRecordId});\r\n\t\t\tmessages = messages.filter(x => !currentMessageIds.includes(x.eventRecordId));\r\n\t\t\tif (messages.length > 0) {\r\n\t\t\t\tcommit(\"addMessages\", messages);\r\n\t\t\t\tvar newMessageCount = messages.filter(x => x.eventRecordTypeId != EventRecordTypes.AttachedFile).length;\r\n\t\t\t\tcommit(\"setNumberOfUnread\", state.numberOfUnread + newMessageCount);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tasync loadTwoWayMessages({ commit, state, getters }, chatUserId: number) {\r\n\t\tconst afterId = getters.getTwoWayLastMessageId as number | undefined;\r\n\t\tlet messages = await api.loadTwoWayMessages(chatUserId, afterId);\r\n\t\tconst currentMessageIds = state.messages.map(x => { return x.eventRecordId});\r\n\t\tmessages = messages.filter(x => !currentMessageIds.includes(x.eventRecordId));\r\n\t\tif (messages && messages.length > 0) {\r\n\t\t\tcommit(\"addTwoWayMessages\", messages);\r\n\t\t\tvar newMessageCount = messages.filter(x => x.eventRecordTypeId != EventRecordTypes.AttachedFile).length;\r\n\t\t\tcommit(\"setTwoWayNumberOfUnread\", state.twoWayNumberOfUnread + newMessageCount);\r\n\t\t}\r\n\t}\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { GuardChat, Message, MessageWithAttachment } from \"./types\";\r\nimport { filter, map, some } from \"lodash\";\r\nimport EventRecordTypes from \"@/types/sv-data/enums/EventRecordTypes\";\r\n\r\nconst getLastMessageId = (messages: Message[]): number | undefined => {\r\n\tif (messages && messages.length > 0) {\r\n\t\treturn messages[messages.length - 1].eventRecordId;\r\n\t}\r\n}\r\n\r\nexport const getters: GetterTree = {\r\n\tgetMessages: (state): MessageWithAttachment[] => {\r\n\t\tconst messages = filter(\r\n\t\t\tstate.messages,\r\n\t\t\tm =>\r\n\t\t\t\tm.eventRecordTypeId === EventRecordTypes.OperatorMessage ||\r\n\t\t\t\tm.eventRecordTypeId === EventRecordTypes.GuardMessage\r\n\t\t);\r\n\t\tconst result = map(messages, m => ({\r\n\t\t\teventId: m.eventId,\r\n\t\t\teventRecordId: m.eventRecordId,\r\n\t\t\tdetails: m.details,\r\n\t\t\tmessageType: m.eventRecordTypeId === EventRecordTypes.OperatorMessage ? \"operator\" : \"guard\",\r\n\t\t\tcreatedAtUtc: m.createdAtUtc,\r\n\t\t\tauthor: m.author,\r\n\t\t\thasFiles: some(\r\n\t\t\t\tstate.messages,\r\n\t\t\t\tsm => sm.eventRecordTypeId === EventRecordTypes.AttachedFile && sm.objectId === m.eventRecordId\r\n\t\t\t)\r\n\t\t}));\r\n\t\treturn result;\r\n\t},\r\n\r\n\tgetTwoWayMessages: (state): MessageWithAttachment[] => {\r\n\t\tconst messages = filter(\r\n\t\t\tstate.twoWayMessages,\r\n\t\t\tm =>\r\n\t\t\t\tm.eventRecordTypeId === EventRecordTypes.ChatMobileUserMessage ||\r\n\t\t\t\tm.eventRecordTypeId === EventRecordTypes.ChatOperatorMessage\r\n\t\t);\r\n\t\tconst result = map(messages, m => ({\r\n\t\t\teventId: m.eventId,\r\n\t\t\teventRecordId: m.eventRecordId,\r\n\t\t\tdetails: m.details,\r\n\t\t\tmessageType: m.eventRecordTypeId === EventRecordTypes.ChatOperatorMessage ? \"operator\" : \"mobileUser\",\r\n\t\t\tcreatedAtUtc: m.createdAtUtc,\r\n\t\t\tauthor: m.author,\r\n\t\t\thasFiles: some(\r\n\t\t\t\tstate.messages,\r\n\t\t\t\tsm => sm.eventRecordTypeId === EventRecordTypes.AttachedFile && sm.objectId === m.eventRecordId\r\n\t\t\t)\r\n\t\t}));\r\n\t\treturn result;\r\n\t},\r\n\r\n\tgetLastMessageId: (state): number | undefined => getLastMessageId(state.messages),\r\n\r\n\tgetTwoWayLastMessageId: (state): number | undefined => getLastMessageId(state.twoWayMessages),\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { GuardChat } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport getDefaultState from \"./state\";\r\nimport { mutations } from \"./mutations\";\r\nimport { actions } from \"./actions\";\r\nimport { getters } from \"./getters\";\r\n\r\nexport const guardChat: Module = {\r\n\tnamespaced: true,\r\n\tstate: getDefaultState(),\r\n\tmutations,\r\n\tactions,\r\n\tgetters\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport { FieldOps } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport api from \"@/services/api.service\";\r\nimport {\r\n\tconvertStringToLatLng,\r\n} from \"@sureview/v2-mapping-saas\";\r\nimport { AssetMapLayerItem } from \"@/components/mobile-assets/types\";\r\nimport { SubscriberExpiry } from \"@/types/EnhancedSingleMapTypes\";\r\n\r\nexport const actions: ActionTree = {\r\n async loadOnlineAssets({ commit, state }){\r\n\t\tconst assets = await api.getMapLayerAssets();\r\n\t\tvar assetAndUsers = assets.map(i => ({\r\n\t\t\t\t...i,\r\n\t\t\t\tlatLng: i.latLong ? convertStringToLatLng(i.latLong) : i.latLong,\r\n\t\t\t}));\r\n\r\n\t\t// For every asset we have manually changed since the last poll\r\n\t\tstate.manuallyChangedAssets.forEach(ignoreAsset => {\r\n\t\t\t// if the asset exists in our update list, then set it to be our current state\r\n\t\t\tvar index = assetAndUsers.findIndex(i => i.assetId === ignoreAsset.mapLayerItem.assetId);\r\n\t\t\tif(index > -1) {\r\n\t\t\t\t// only map the location changes to ensure we don't suppress any other changes\r\n\t\t\t\tassetAndUsers[index] =\r\n\t\t\t\t{\r\n\t\t\t\t\t...assetAndUsers[index],\r\n\t\t\t\t\tlatLong :ignoreAsset.mapLayerItem.latLong,\r\n\t\t\t\t\tlatLng :ignoreAsset.mapLayerItem.latLng,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\t// If the item does not exist inside the array then the backend cache hasn't caught up. Add it\r\n\t\t\telse {\r\n\t\t\t\tassetAndUsers.push(ignoreAsset.mapLayerItem);\r\n\t\t\t}\r\n\r\n\t\t\t// Reduce our item 'lifespan' (we dont want to keep using the cached version forever)\r\n\t\t\tcommit(\"addOrUpdateManuallyChangedAsset\",\r\n\t\t\t{\r\n\t\t\t\t...ignoreAsset,\r\n\t\t\t\tchecksRemaining: ignoreAsset.checksRemaining -1\r\n\t\t\t});\r\n\r\n\t\t\t// Clear out the asset if it has expired (will be updated on next poll)\r\n\t\t\tif(ignoreAsset.checksRemaining < 1){\r\n\t\t\t\tcommit(\"removeManuallyChangedAsset\", ignoreAsset);\r\n\t\t\t}\r\n\t\t});\r\n\r\n commit(\"setOnlineAssets\", assetAndUsers)\r\n },\r\n\tasync initAssetPoll({ commit }){\r\n\t\tcommit(\"setTimer\", null);\r\n\t},\r\n async startAssetPoll({ commit, state, dispatch }){\r\n\t\tif(state.timer) {\r\n\t\t\t// If we get calls to start a new asset poll, check if the active timer\r\n\t\t\t// has got stuck, if it has spin clear it out and spin up a new one\r\n\t\t\tconst timeNow: any = Date.now() - 6000;\r\n\t\t\tif(state.lastPollCall && state.lastPollCall < timeNow){\r\n\t\t\t\tcommit(\"setTimer\", null);\r\n\t\t\t\tcommit(\"setLastPollCall\", null)\r\n\t\t\t} else {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n const poll = () => {\r\n\t\t\tvar timer = setTimeout(async () => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tcommit(\"setLastPollCall\", Date.now())\r\n\t\t\t\t\tif(!state.activeSubscribers || state.activeSubscribers.length === 0){\r\n\t\t\t\t\t\tthrow \"no active subscribers\"\r\n\t\t\t\t\t}\r\n\t\t\t\t\tawait dispatch(\"loadOnlineAssets\");\r\n\t\t\t\t\tawait dispatch(\"endTimer\");\r\n\t\t\t\t\tpoll();\r\n\t\t\t\t} catch(ex) {\r\n\t\t\t\t\tcommit(\"setTimer\", null);\r\n\t\t\t\t\tif(ex.message == \"no active subscribers\")\r\n\t\t\t\t\t\tconsole.log(ex)\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tthrow ex;\r\n\t\t\t\t}\r\n\t\t\t}, 5000)\r\n\t\t\tcommit(\"setTimer\", timer)\r\n\t\t};\r\n\t\tpoll();\r\n },\r\n\tasync addOrUpdateActiveSubscriber({ commit, dispatch }, subscriberExpiry: SubscriberExpiry){\r\n\t\tcommit(\"addOrUpdateActiveSubscriber\", subscriberExpiry);\r\n\t\tdispatch(\"startAssetPoll\");\r\n\t},\r\n\tasync endTimer({ commit, state }){\r\n\t\tcommit(\"cleanUpSubscribers\");\r\n\t\tif(!state.activeSubscribers || state.activeSubscribers.length === 0){\r\n\t\t\tcommit(\"setTimer\", null);\r\n\t\t}\r\n\t},\r\n async loadAssetTypes({ commit }){\r\n const assetTypesData = await api.getCachedAssetTypes();\r\n var assetTypes = new Map();\r\n\t\tassetTypesData.forEach(ut => {\r\n\t\t\tassetTypes.set(ut.assetTypeId.toString(), ut);\r\n\t\t});\r\n commit(\"setAssetTypes\", assetTypes);\r\n },\r\n\tasync updateAssetLocation({ commit, state }, asset: AssetMapLayerItem){\r\n // Create a clone to update so we can push all the UI changes in one call\r\n\t\tvar index = state.onlineAssets.findIndex(i => i.assetId === asset.assetId);\r\n\r\n if(index === -1){\r\n return;\r\n\t\t}\r\n\r\n\t\tvar cloneAsset = { ...state.onlineAssets.find(i => i.assetId === asset.assetId) };\r\n\r\n\t\t// Set location fields\r\n\t\tcloneAsset.latLng = asset.latLng;\r\n\t\tcloneAsset.latLong = asset.latLong;\r\n\t\tcloneAsset.hideOnMap = asset.hideOnMap;\r\n\r\n\t\tcommit(\"addOrUpdateManuallyChangedAsset\",{\r\n\t\t\tmapLayerItem: asset,\r\n\t\t\tchecksRemaining: 5\r\n\t\t});\r\n\r\n\t\tawait api.updateAssetMapLayerItem(cloneAsset);\r\n\r\n\t\tcommit(\"updateAsset\", cloneAsset);\r\n\t},\r\n\tasync loadSituationalAwarenessEventQueue({ commit }){\r\n\t\ttry{\r\n\t\t\tconst situationalEventQueueData = await api.getSituationalAwarenessQueue();\r\n\t\t\tcommit(\"setSituationalAwarenessEventQueue\", situationalEventQueueData);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(\"Failed to get Situational Awareness Event Queue\");\r\n\t\t}\r\n\t}\r\n};\r\n","import { FieldOps } from \"./types\";\r\nexport function getDefaultState(): FieldOps {\r\n return {\r\n assetTypes: new Map(),\r\n onlineAssets: [],\r\n manuallyChangedAssets: [],\r\n timer: null,\r\n lastPollCall: null,\r\n activeSubscribers: [],\r\n viewingAssetId: 0,\r\n\t\tsituationalAwarenessEventQueue: [],\r\n\t\tselectedSituationalAwarenessEvent: null\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { FieldOps } from \"./types\";\r\nimport { AssetMapLayerItem, MapLayerItemWithExpiry } from \"@/components/mobile-assets/types\";\r\nimport { SubscriberExpiry } from \"@/types/EnhancedSingleMapTypes\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { SituationalAwarenessEventQueue } from \"../situational-awareness/types\";\r\n\r\nexport const mutations: MutationTree = {\r\n setOnlineAssets(state, onlineAssets: AssetMapLayerItem[] | null){\r\n state.onlineAssets = onlineAssets;\r\n },\r\n setAssetTypes(state, assetTypes: Map){\r\n state.assetTypes = assetTypes;\r\n },\r\n addOrUpdateManuallyChangedAsset(state, asset: MapLayerItemWithExpiry){\r\n\t\tvar assetIndex = state.manuallyChangedAssets.findIndex(i=> i.mapLayerItem.assetId === asset.mapLayerItem.assetId);\r\n\r\n if(assetIndex >= 0)\r\n\t\t\tstate.manuallyChangedAssets = state.manuallyChangedAssets\r\n .filter(x => state.manuallyChangedAssets[assetIndex].mapLayerItem.assetId !== x.mapLayerItem.assetId);\r\n\r\n if(asset.checksRemaining < 1)\r\n return;\r\n\r\n state.manuallyChangedAssets.push(asset);\r\n },\r\n removeManuallyChangedAsset(state, asset: MapLayerItemWithExpiry){\r\n var assetIndex = state.manuallyChangedAssets.findIndex(i=>i.mapLayerItem.assetId === asset.mapLayerItem.assetId);\r\n\r\n if(assetIndex >= 0)\r\n\t\t\tstate.manuallyChangedAssets.remove(state.manuallyChangedAssets[assetIndex]);\r\n\r\n },\r\n updateAsset(state, item: AssetMapLayerItem){\r\n // Get our desired asset\r\n var index = state.onlineAssets.findIndex(i => i.assetId === item.assetId);\r\n if(!index)\r\n return;\r\n\r\n state.onlineAssets[index] = item;\r\n },\r\n addOrUpdateActiveSubscriber(state, subscriberExpiry: SubscriberExpiry){\r\n if(!state.activeSubscribers.length){\r\n state.activeSubscribers = [];\r\n }\r\n\r\n var index = state.activeSubscribers.findIndex(i => i.subscriber === subscriberExpiry.subscriber);\r\n if(index >= 0){\r\n state.activeSubscribers[index].expiry = subscriberExpiry.expiry;\r\n return;\r\n }\r\n state.activeSubscribers.push(subscriberExpiry);\r\n\r\n },\r\n setTimer(state, timer: any | null){\r\n // if the new timer is null, end the current timer or we have an active timer\r\n if(!timer || state.timer){\r\n\t\t\tclearTimeout(state.timer);\r\n }\r\n state.timer = timer;\r\n },\r\n setLastPollCall(state, pollCallTime) {\r\n\t\tstate.lastPollCall = pollCallTime;\r\n\t},\r\n setViewingAssetId(state, assetId: number | null){\r\n state.viewingAssetId = assetId\r\n },\r\n cleanUpSubscribers(state){\r\n state.activeSubscribers = state.activeSubscribers.filter(x => x.expiry > Date.now())\r\n },\r\n\tsetSituationalAwarenessEventQueue(state: FieldOps, situationalAwarenessEventQueue: SituationalAwarenessEventQueue[]){\r\n\t\tstate.situationalAwarenessEventQueue = situationalAwarenessEventQueue;\r\n\t},\r\n\tsetSelectedSituationalAwarenessEvent(state: FieldOps, situationalAwarenessEvent: SituationalAwarenessEventQueue){\r\n\t\tstate.selectedSituationalAwarenessEvent = situationalAwarenessEvent;\r\n\t},\r\n\tresetState(state) {\r\n // re-assign the state means we lose focus on the state timer (if active)\r\n // ensure we stop the timer before we lose focus\r\n if(state.timer)\r\n clearTimeout(state.timer);\r\n state.timer = null;\r\n Object.assign(state, getDefaultState());\r\n\t}\r\n}\r\n","import { Module } from \"vuex\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { FieldOps } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: FieldOps = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const fieldOps: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tactions,\r\n\tmutations\r\n};","import { GetterTree } from \"vuex\";\r\nimport { SetupState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetAllFeatures: state => state.allFeatures,\r\n\tgetActionPlans: state => {\r\n\t\treturn state.actionPlans;\r\n\t},\r\n\tgetHasCurrentArea: state => (state.currentAreas ? true : false),\r\n\tgetResponseAlarmTypes: state => state.responseAlarmTypes,\r\n\tgetAreaActionPlans: state => {\r\n\t\tif (!state.currentAreas) {\r\n\t\t\treturn state.actionPlans;\r\n\t\t}\r\n\r\n\t\treturn state.actionPlans.filter(\r\n\t\t\tactionPlan => !actionPlan.groupID || state.currentAreas.has(actionPlan.groupID)\r\n\t\t);\r\n\t},\r\n\tgetAreaResponseAlarmTypes: state => {\r\n\t\tif (!state.currentAreas) {\r\n\t\t\treturn state.responseAlarmTypes.filter(responseAlarmType => !responseAlarmType.groupId);\r\n\t\t}\r\n\r\n\t\treturn state.responseAlarmTypes.filter(\r\n\t\t\tresponseAlarmType => !responseAlarmType.groupId || state.currentAreas.has(responseAlarmType.groupId)\r\n\t\t);\r\n\t}\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { SetupState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync loadAllFeatures({ commit }, tenantId: number): Promise {\r\n\t\tconst { data } = await api.loadAllFeatures(tenantId);\r\n\t\tcommit(\"setAllFeatures\", data);\r\n\t},\r\n\r\n\tasync toggleFeatures({ commit }, { features, tenantId }): Promise {\r\n\t\tconst { data } = await api.toggleFeatures(features, tenantId);\r\n\t\treturn data ;\r\n\t},\r\n\r\n\tasync fetchJsonConfig({ commit }) {\r\n\t\tconst { data } = await api.loadJsonConfig();\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync loadActionPlans({ commit }) {\r\n\t\tconst data = await api.loadActionPlans();\r\n\t\tcommit(\"setActionPlans\", data);\r\n\r\n\t\treturn data;\r\n\t},\r\n\r\n\tasync loadResponseAlarmTypes({ commit }) {\r\n\t\tconst data = await api.responseAlarmTypes();\r\n\t\tcommit(\"setResponseAlarmTypes\", data);\r\n\r\n\t\treturn data;\r\n\t},\r\n\r\n\t/**\r\n\t * Sets the current areas to be the parents of the passed in group id.\r\n\t * If null is passed in sets it to null\r\n\t * @param commit\r\n\t * @param groupId The group to set the parents for\r\n\t */\r\n\tasync groupIdSelected({ commit }, groupId: number | null) {\r\n\t\tif (groupId) {\r\n\t\t\tconst groupsToRoot = await api.groupsToRoot(groupId);\r\n\t\t\tcommit(\"setCurrentAreas\", new Set(groupsToRoot));\r\n\t\t} else {\r\n\t\t\tcommit(\"setCurrentAreas\", null);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets the current areas to be the children of the passed in group id.\r\n\t * If null is passed in sets it to null\r\n\t * @param commit\r\n\t * @param groupId The group to set the children for\r\n\t */\r\n\tasync groupIdSelectedChildren({ commit }, groupId: number | null) {\r\n\t\tif (groupId) {\r\n\t\t\tconst subgroups = await api.subgroups(groupId);\r\n\t\t\tcommit(\"setCurrentAreas\", new Set(subgroups));\r\n\t\t} else {\r\n\t\t\tcommit(\"setCurrentAreas\", null);\r\n\t\t}\r\n\t},\r\n\r\n\tasync getIsFeaturesConfigControlledByFile(): Promise {\r\n\t\tconst { data } = await api.getIsFeaturesConfigControlledByFile();\r\n\t\treturn data;\r\n\t}\r\n};\r\n","import { SetupState } from \"./types\";\r\n\r\nexport function getDefaultState(): SetupState {\r\n return {\r\n allFeatures: [],\r\n actionPlans: [],\r\n responseAlarmTypes: [],\r\n currentAreas: null\r\n }\r\n}","import { MutationTree } from \"vuex\";\r\nimport { SetupState } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetAllFeatures(state, features: any[]) {\r\n\t\tstate.allFeatures = features;\r\n\t},\r\n\tsetActionPlans: (state: SetupState, actionPlans: any[]) => state.actionPlans = actionPlans,\r\n\tsetResponseAlarmTypes: (state: SetupState, responseAlarmTypes: any[]) => state.responseAlarmTypes = responseAlarmTypes,\r\n\tsetCurrentAreas: (state: SetupState, areas: Set | null) => state.currentAreas = areas,\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { SetupState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: SetupState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const setup: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { ResponseActionsState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync fetchSupportActionTypes({ commit }) {\r\n\t\tconst data = await api.getSupportedActionTypes();\r\n\t\tcommit(\"setSupportedActionTypes\", data);\r\n\t},\r\n};\r\n","import { ResponseActionsState } from \"./types\";\r\n\r\nexport function getDefaultState(): ResponseActionsState {\r\n\treturn {\r\n\t\tresponseActions: [],\r\n\t\tsupportedActionTypes: [],\r\n\t};\r\n}\r\n","import { getDefaultState } from \"./state\";\r\nimport { MutationTree } from \"vuex\";\r\nimport { ResponseActionsState, ResponseActionType } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetSupportedActionTypes(state: ResponseActionsState, data: ResponseActionType[]) {\r\n\t\tstate.supportedActionTypes = data;\r\n\t},\r\n\tclearState(state: ResponseActionsState) {\r\n\t\tstate = getDefaultState();\r\n\t},\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { ResponseActionsState } from \"./types\";\r\n\r\nexport const state: ResponseActionsState = getDefaultState();\r\nconst namespaced: boolean = true;\r\n\r\nexport const responseActions: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import PagedResponse from \"@/types/sv-data/PagedResponse\";\r\nimport { PaginatedSearchQueryParams, PaginatedSearchQueryParamsCustomField } from \"@/store/types\";\r\nimport axios, { CancelTokenSource } from \"axios\";\r\nimport { PaginatedSearchRequest, PaginatedSearchRequestCustomField } from \"@/mixins/PaginatedSearch\";\r\n\r\nlet activePaginatedSearchCancelTokenSource: CancelTokenSource = null;\r\nlet mostRecentSearchParams: PaginatedSearchQueryParams;\r\nconst defaultPaginatedSearchParams: PaginatedSearchQueryParams = {\r\n\tpage: 1,\r\n\tpageSize: 25\r\n};\r\n\r\nexport const paginatedSearchExtendedMixins = {\r\n\tmethods: {\r\n\t\tasync fetchAllResults(api: any, method: (paginatedSearchRequest: PaginatedSearchRequest) => Promise, request: PaginatedSearchRequest): Promise {\r\n\t\t\tconst pageSizeLimit: number = 200;\r\n\t\t\tlet data = [] as any[];\r\n\r\n\t\t\trequest.params.page = 1;\r\n\t\t\trequest.params.pageSize = pageSizeLimit;\r\n\r\n\t\t\t// Fetch first page\r\n\t\t\tlet results: Type = await method.call(api, request);\r\n\t\t\tdata.push(...results.data)\r\n\r\n\t\t\t// Fetch next pages until all data consumed\r\n\t\t\twhile (results.totalRecords > data.length) {\r\n\t\t\t\trequest.params.page += 1;\r\n\t\t\t\tresults = await method.call(api, request);\r\n\t\t\t\tdata.push(...results.data)\r\n\t\t\t}\r\n\r\n\t\t\tresults.pageNumber = 1;\r\n\t\t\tresults.pageSize = data.length;\r\n\t\t\tresults.totalRecords = data.length;\r\n\t\t\tresults.data = data;\r\n\t\t\treturn results;\r\n\t\t},\r\n\r\n\t\tgenerateNewPaginatedSearchQueryParamsCustomField(params?: PaginatedSearchQueryParamsCustomField): PaginatedSearchRequestCustomField {\r\n\t\t\tif (!params) {\r\n\t\t\t\tparams = defaultPaginatedSearchParams;\r\n\t\t\t}\r\n\r\n\t\t\tmostRecentSearchParams = params;\r\n\r\n\t\t\tif (activePaginatedSearchCancelTokenSource) {\r\n\t\t\t\tactivePaginatedSearchCancelTokenSource.cancel();\r\n\t\t\t}\r\n\r\n\t\t\tactivePaginatedSearchCancelTokenSource = axios.CancelToken.source();\r\n\t\t\treturn {\r\n\t\t\t\tparams,\r\n\t\t\t\tcancelToken: activePaginatedSearchCancelTokenSource.token\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import customFieldsApi from \"@/services/api.customField.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { PaginatedSearchQueryParamsCustomField, RootState } from \"../types\";\r\nimport { CustomFieldsState, CustomFieldTableTypes } from \"./types\";\r\nimport PagedResponse from \"@/types/sv-data/PagedResponse\";\r\nimport { paginatedSearchExtendedMixins } from \"@/mixins/paginatedSearchExtendedMixins\";\r\n\r\nconst { generateNewPaginatedSearchQueryParamsCustomField, fetchAllResults } =\r\n\t\tpaginatedSearchExtendedMixins.methods;\r\n\r\nexport const actions: ActionTree = {\r\n\tasync retrieveCustomFields({ commit }, { tableType, live }) {\r\n\t\tconst params: PaginatedSearchQueryParamsCustomField = {\r\n\t\t\tcustomFieldTableType: tableType,\r\n\t\t\tpage: 1,\r\n\t\t\tpageSize: 250,\r\n\t\t\tlive: live,\r\n\t\t}\r\n\r\n\t\tconst request = generateNewPaginatedSearchQueryParamsCustomField(params);\r\n\r\n\t\tconst results = await fetchAllResults(customFieldsApi, customFieldsApi.retrieveCustomFields, request);\r\n\r\n\t\tswitch(tableType) {\r\n\t\t\tcase CustomFieldTableTypes.Area:\r\n\t\t\t\tcommit(\"setAreaCustomFields\", results);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CustomFieldTableTypes.Contact:\r\n\t\t\t\tcommit(\"setContactCustomFields\", results);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CustomFieldTableTypes.Alarm:\r\n\t\t\t\tcommit(\"setAlarmCustomFields\", results);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t},\r\n};\r\n","import { CustomFieldsState } from \"./types\";\r\n\r\nexport function getDefaultState(): CustomFieldsState {\r\n\treturn {\r\n\t\tareaCustomFields: [],\r\n\t\tcontactCustomFields: [],\r\n\t\talarmCustomFields: [],\r\n\t\ttotalCustomFields: 0\r\n\t};\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { CustomFieldsState } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport PagedResponse from \"@/types/sv-data/PagedResponse\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetAreaCustomFields(state: CustomFieldsState, fields: PagedResponse) {\r\n\t\tstate.areaCustomFields = fields.data;\r\n\t\tstate.totalCustomFields = fields.totalRecords;\r\n\t},\r\n\tsetContactCustomFields(state: CustomFieldsState, fields: PagedResponse) {\r\n\t\tstate.contactCustomFields = fields.data;\r\n\t\tstate.totalCustomFields = fields.totalRecords;\r\n\t},\r\n\tsetAlarmCustomFields(state: CustomFieldsState, fields: PagedResponse) {\r\n\t\tstate.alarmCustomFields = fields.data;\r\n\t\tstate.totalCustomFields = fields.totalRecords;\r\n\t},\r\n\tresetState(state: CustomFieldsState): void {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { CustomFieldsState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\n\r\nexport const getters: GetterTree = {\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { CustomFieldsState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { getters } from \"./getters\";\r\n\r\nexport const state: CustomFieldsState = getDefaultState();\r\nconst namespaced: boolean = true;\r\n\r\nexport const customFields: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { SystemHealthState } from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetHealthStatus: state => {\r\n\t\treturn state.status;\r\n\t},\r\n\tgetStatusFilter: state => {\r\n\t\treturn state.selectedFilter;\r\n\t},\r\n};\r\n","import { SystemHealthState } from \"./types\";\r\n\r\nexport function getDefaultState(): SystemHealthState {\r\n\treturn {\r\n\t\tstatus: {\r\n\t\t\tall: 0,\r\n\t\t\thealthy: 0,\r\n\t\t\tunhealthy: 0\r\n\t\t},\r\n\t\tselectedFilter: \"All\"\r\n\t}\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { SystemHealthState, SystemViewHealthStatusCount } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetHealthStatus(state, healthStatus: SystemViewHealthStatusCount) {\r\n\t\tstate.status = healthStatus;\r\n\t},\r\n\tsetStatusFilter(state, selectedFilter: string) {\r\n\t\tstate.selectedFilter = selectedFilter;\r\n\t},\r\n\tresetState(state) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n};\r\n","\r\nimport { namespace } from \"vuex-class\";\r\nimport { Component, Vue, Watch, Emit, Prop } from \"vue-property-decorator\";\r\nimport vSelect from \"vue-select\";\r\nimport RulesText from \"@/components/rules-engine-setup/RulesText.vue\";\r\nimport RulesNumberInput from \"@/components/rules-engine-setup/data-components/RulesNumberInput.vue\";\r\nimport RulesAlarmDropdown from \"@/components/rules-engine-setup/data-components/RulesAlarmDropdown.vue\";\r\nimport {\r\n\tCardValidation,\r\n\tRuleGenericDropdownItem,\r\n\tRuleScope,\r\n\tRuleServer,\r\n\tRuleServerType,\r\n\tRuleServerTypeEvent,\r\n\tServersForServerType,\r\n\tServerTypeEventsForServerType\r\n} from '@/store/rules-engine/types';\r\nimport RuleGenericDropdown from '@/components/rules-engine-setup/data-components/RuleGenericDropdown.vue';\r\nimport { isEqual } from \"lodash\";\r\n\r\nconst RuleStore = namespace('rulesEngine');\r\n\r\nenum SelectedValueType {\r\n\tdevice = 1,\r\n\talarm = 2,\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"rules-text\": RulesText,\r\n\t\t\"rules-number-input\": RulesNumberInput,\r\n\t\t\"rules-alarm-dropdown\": RulesAlarmDropdown,\r\n\t\t\"rule-generic-dropdown\": RuleGenericDropdown\r\n\t}\r\n})\r\nexport default class RulesScope extends Vue {\r\n\t@RuleStore.Getter private getScopeCriteria: any[];\r\n\t@RuleStore.Action private retrieveComponentForTypeId: (request: {section: string, typeId: number}) => Promise;\r\n\t@RuleStore.Action private retrieveRuleServersForServerType :(serverTypeId: number) => Promise;\r\n\t@RuleStore.Action private retrieveRuleServerTypeEventsForServerType :(serverTypeId: number) => Promise;\r\n\t@RuleStore.State private serversForServerType: ServersForServerType[];\r\n\t@RuleStore.State private serverTypeEventsForServerType : ServerTypeEventsForServerType[];\r\n\t@RuleStore.State private serverTypes: RuleServerType[];\r\n\r\n\t@Prop()\r\n\tprivate value: RuleScope;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tprivate readOnly: boolean;\r\n\r\n private section: string = \"Scope\";\r\n\r\n\tprivate alarmText: string = \"\";\r\n private deviceTypeComponent: any = null;\r\n\tprivate serverOptions: RuleGenericDropdownItem[] = [];\r\n\tprivate serverTypeEventOptions: RuleGenericDropdownItem[] = [];\r\n\r\n\tprivate scopeDetails: RuleScope = {\r\n\t\tresponseId: null,\r\n\t\tserverId: null,\r\n\t\tserverTypeId: null,\r\n\t\teventNum: null,\r\n\t\tinput1: null,\r\n\t\tinput2: null\r\n\t};\r\n\r\n\tprivate selectedValue: string = null;\r\n\r\n private get deviceTypeComponentSet(): boolean\r\n {\r\n return !!this.deviceTypeComponent?.component;\r\n }\r\n\r\n\tprivate async selectedCriteriaUpdated(value): Promise\r\n {\r\n\t\tthis.resetScopeDetails();\r\n\t\tthis.selectedValue = value.title;\r\n\r\n\t\tif (value.id == SelectedValueType.alarm) {\r\n\t\t\tthis.alarmTypeSelected();\r\n\t\t} else {\r\n\t\t\tthis.deviceTypeSelected();\r\n\t\t\tawait this.setDeviceComponent();\r\n\t\t}\r\n }\r\n\r\n\tprivate async setDeviceComponent(): Promise {\r\n\t\tthis.deviceTypeComponent = null;\r\n\t\tthis.deviceTypeComponent = await this.retrieveComponentForTypeId({section: this.section, typeId: SelectedValueType.device});\r\n\t}\r\n\r\n\t@Watch(\"value\")\r\n\tprivate async onRuleScopeChanged(newValue: RuleScope, oldValue: RuleScope): Promise {\r\n\t\tif (!!this.value && !isEqual(newValue, oldValue)) {\r\n\t\t\tthis.scopeDetails.responseId = this.value.responseId;\r\n\t\t\tthis.scopeDetails.eventNum = this.value.eventNum;\r\n\t\t\tthis.scopeDetails.serverId = this.value.serverId;\r\n\t\t\tthis.scopeDetails.serverTypeId = this.value.serverTypeId;\r\n\t\t\tthis.scopeDetails.input1 = this.value.input1;\r\n\t\t\tthis.scopeDetails.input2 = this.value.input2;\r\n\r\n\t\t\tif (this.scopeDetails.responseId) {\r\n\t\t\t\tthis.selectedValue = this.getScopeCriteria.firstOrDefault(c => c.title == \"Alarm Type\").title;\r\n\t\t\t\tthis.alarmText = this.scopeDetails.responseId.toString();\r\n\t\t\t} else if (this.scopeDetails.serverTypeId) {\r\n\t\t\t\tthis.selectedValue = this.getScopeCriteria.firstOrDefault(c => c.title == \"Device Type\").title;\r\n\t\t\t\tthis.setDeviceComponent();\r\n\r\n\t\t\t\tconst server = this.serversForServerType?.find((s: ServersForServerType) => s.serverTypeId === this.scopeDetails.serverTypeId);\r\n\t\t\t\tconst event = this.serverTypeEventsForServerType?.find((s: ServerTypeEventsForServerType) => s.serverTypeId === this.scopeDetails.serverTypeId);\r\n\r\n\t\t\t\tif(!server) {\r\n\t\t\t\t\tawait this.retrieveRuleServersForServerType(this.scopeDetails.serverTypeId);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!event) {\r\n\t\t\t\t\tawait this.retrieveRuleServerTypeEventsForServerType(this.scopeDetails.serverTypeId);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.onServersChanged();\r\n\t\t\t\tthis.onServerTypeEvents();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"selectedValue\")\r\n\tprivate onSelectedValueChanged(): void {\r\n\t\tif(this.selectedValue === \"Device Type\") {\r\n\t\t\tthis.setDeviceComponent();\r\n\t\t}\r\n\t}\r\n\r\n\t@Emit(\"isValid\")\r\n\tprivate validationChanged(value: CardValidation): CardValidation {\r\n\t\treturn value;\r\n\t}\r\n\r\n\tprivate deviceTypeComponentValid(value: CardValidation): void {\r\n\t\tthis.validationChanged(value);\r\n\t}\r\n\r\n\tprivate alarmTypeSelected(): void {\r\n\t\tthis.resetScopeDetails();\r\n\t}\r\n\r\n\t@Emit(\"input\")\r\n\tprivate resetScopeDetails(): RuleScope {\r\n\t\tthis.alarmText = \"\";\r\n\r\n\t\tthis.scopeDetails = {\r\n\t\t\tresponseId: null,\r\n\t\t\tserverId: null,\r\n\t\t\tserverTypeId: null,\r\n\t\t\teventNum: null,\r\n\t\t\tinput1: null,\r\n\t\t\tinput2: null\r\n\t\t};\r\n\r\n\t\treturn this.scopeDetails;\r\n\t}\r\n\r\n\tprivate deviceTypeSelected(): void {\r\n\t\tthis.scopeDetails.responseId = null;\r\n\t}\r\n\r\n\t@Emit(\"input\")\r\n\tprivate alarmTypeUpdated(value: string): RuleScope {\r\n\t\tthis.scopeDetails.responseId = value ? parseInt(value) : null;\r\n\t\treturn this.scopeDetails;\r\n\t}\r\n\r\n\t@Emit(\"input\")\r\n\tprivate deviceTypeUpdated(value: number): RuleScope {\r\n\t\tthis.resetScopeDetails();\r\n\t\tthis.scopeDetails.serverTypeId = value;\r\n\t\tthis.retrieveRuleServersForServerType(this.scopeDetails.serverTypeId);\r\n\t\tthis.retrieveRuleServerTypeEventsForServerType(this.scopeDetails.serverTypeId);\r\n\r\n\t\treturn this.scopeDetails;\r\n\t}\r\n\r\n\t@Watch(\"scopeDetails\", {deep: true})\r\n\t@Emit(\"input\")\r\n\tprivate onScopeDetailsChanged(): RuleScope {\r\n\t\treturn this.scopeDetails;\r\n\t}\r\n\r\n\t@Watch(\"serversForServerType\")\r\n\tprivate onServersChanged(): void {\r\n\r\n\t\tif (!!this.scopeDetails.serverTypeId && !!this.serversForServerType) {\r\n\t\t\tconst servers = this.serversForServerType.firstOrDefault(\r\n\t\t\t\t(s: ServersForServerType) => s.serverTypeId === this.scopeDetails.serverTypeId)?.servers ?? [];\r\n\r\n\t\t\tthis.serverOptions = servers.map((s: RuleServer) => { return { id: s.serverId, title: s.title}});\r\n\t\t} else {\r\n\t\t\tthis.serverOptions = [];\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"serverTypeEventsForServerType\")\r\n\tprivate onServerTypeEvents(): void {\r\n\t\tif (!!this.scopeDetails.serverTypeId && !!this.serverTypeEventsForServerType) {\r\n\t\t\tconst events = this.serverTypeEventsForServerType?.firstOrDefault(\r\n\t\t\t\t(s: ServerTypeEventsForServerType) => s.serverTypeId === this.scopeDetails.serverTypeId)?.serverTypeEvents ?? [];\r\n\t\t\tthis.serverTypeEventOptions = events.map((s: RuleServerTypeEvent) => {return {id: s.eventNum, title: s.title}});\r\n\r\n\t\t} else {\r\n\t\t\tthis.serverTypeEventOptions = [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate serverIdUpdated(serverId: number): void {\r\n\t\tthis.scopeDetails.serverId = serverId;\r\n\t}\r\n\r\n\tprivate serverTypeEventUpdated(eventNum: number): void {\r\n\t\tthis.scopeDetails.eventNum = eventNum;\r\n\t}\r\n}\r\n","import api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { SystemHealthState } from \"./types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync retrieveHealthStatuses({ state, commit }, refresh :boolean = false): Promise {\r\n var healthStatuses = await api.getSystemHealthStatus(refresh);\r\n try\r\n {\r\n commit(\"setHealthStatus\", healthStatuses);\r\n }\r\n catch(ex)\r\n {\r\n console.error(ex);\r\n }\r\n\t},\r\n};","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\"\r\nimport { mutations } from \"./mutations\";\r\nimport { actions } from \"./actions\";\r\nimport { SystemHealthState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: SystemHealthState = getDefaultState();\r\n\r\nexport const systemHealth: Module = {\r\n\tnamespaced: true,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.triggerExists && this.section == 'Trigger')?_c('div',[(_vm.allowAnd || _vm.allowOr)?_c('b-button-group',{staticClass:\"float-right logic-button-group\"},[(_vm.allowAnd && !_vm.readOnly)?_c('b-button',{on:{\"click\":function($event){return _vm.addRule('AND')}}},[_vm._v(\"AND\")]):_vm._e(),(_vm.allowOr && !_vm.readOnly)?_c('b-button',{on:{\"click\":function($event){return _vm.addRule('OR')}}},[_vm._v(\"OR\")]):_vm._e()],1):_vm._e()],1):_c('div',[(_vm.allowAnd || _vm.allowOr)?_c('b-button-group',{staticClass:\"float-right logic-button-group\"},[(_vm.allowAnd && !_vm.readOnly && (this.section == 'Action' || this.section == 'Trigger'))?_c('b-button',{on:{\"click\":function($event){return _vm.addRule('AND')}}},[_vm._v(\"ADD \"+_vm._s(this.section))]):_vm._e()],1):_vm._e()],1),_c('br'),_c('br'),(_vm.logicSteps && _vm.logicSteps.length > 0)?_c('div',[_c('rules-logic-step',{attrs:{\"allowAnd\":_vm.allowSubRules.allowAnd,\"allowOr\":_vm.allowSubRules.allowOr,\"value\":_vm.logicSteps[0],\"nestedLevel\":1,\"isRoute\":\"\",\"rootText\":_vm.rootText,\"section\":_vm.section,\"readOnly\":_vm.readOnly},on:{\"input\":_vm.stepUpdated,\"isValid\":function (value) { return _vm.ruleValidationUpdated(value, _vm.logicSteps[0].id); },\"deleted-step\":_vm.stepDeleted}}),_vm._l((_vm.logicSteps.slice(1)),function(rule){return _c('rules-logic-step',{key:rule.id,attrs:{\"allowAnd\":_vm.allowSubRules.allowAnd,\"allowOr\":_vm.allowSubRules.allowOr,\"nestedLevel\":1,\"value\":rule,\"section\":_vm.section,\"readOnly\":_vm.readOnly},on:{\"input\":_vm.stepUpdated,\"isValid\":function (value) { return _vm.ruleValidationUpdated(value, rule.id); },\"deleted-step\":_vm.stepDeleted}})})],2):_c('div',[_c('h2',{staticStyle:{\"text-align\":\"center\",\"font-weight\":\"200\"}},[_c('i',[_vm._v(\"No \"+_vm._s(this.section)+\"s are configured.\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport RulesLogicSteps from './RulesLogicStep.vue'\r\nimport isEqual from 'lodash.isequal';\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { RulesLogicAllowed, RuleStep, CardValidation, CardValidationMap } from '@/store/rules-engine/types';\r\n\r\n@Component(\r\n {\r\n components:\r\n {\r\n \"rules-logic-step\": RulesLogicSteps\r\n }\r\n })\r\nexport default class RulesLogicBuilder extends Vue {\r\n //Props\r\n @Prop()\r\n private allowedLogic: RulesLogicAllowed;\r\n\r\n @Prop()\r\n private section: string;\r\n\r\n @Prop()\r\n private value: RuleStep[];\r\n\r\n @Prop()\r\n private rootText: string;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tprivate readOnly: boolean;\r\n\r\n //Variables\r\n private logicSteps: RuleStep[] = [];\r\n\tprivate ruleValids: CardValidationMap = new CardValidationMap();\r\n\r\n //Getters\r\n private get allowAnd(): boolean\r\n {\r\n return this.allowedLogic ? this.allowedLogic.allowAnd : false;\r\n }\r\n\r\n private get allowOr(): boolean\r\n {\r\n return this.allowedLogic ? this.allowedLogic.allowOr : false;\r\n }\r\n\r\n private get allowSubRules(): RulesLogicAllowed\r\n {\r\n return this.allowedLogic.subRules ? this.allowedLogic.subRules : { allowAnd: false, allowOr: false };\r\n }\r\n\r\n //Watchers\r\n @Watch(\"value\")\r\n private updateValue(): void\r\n {\r\n if(!this.value || this.value.length == 0)\r\n {\r\n if(this.section == \"Trigger\"){\r\n this.logicSteps = [];\r\n this.$emit(\"isValid\", {isValid: true, message:\"\"})\r\n }else{\r\n this.logicSteps = [{ id: uuidv4(), operator:\"And\", condition: { typeId: null, value: null }, subRules:[]}];\r\n }\r\n return;\r\n }\r\n\r\n if(!isEqual(this.logicSteps, this.value))\r\n {\r\n this.logicSteps = this.value;\r\n }\r\n\r\n this.$forceUpdate();\r\n this.logicStepsUpdated();\r\n }\r\n\r\n //Methods\r\n private mounted(): void\r\n {\r\n this.updateValue();\r\n }\r\n\r\n private logicStepsUpdated(): void\r\n {\r\n this.$emit(\"input\", this.logicSteps);\r\n this.$forceUpdate();\r\n }\r\n\r\n private addRule(operator: string): void\r\n {\r\n this.logicSteps.push({id: uuidv4(), operator: operator, condition: {typeId: null, value: null}, subRules: []});\r\n this.$forceUpdate();\r\n }\r\n\r\n private stepUpdated(step: RuleStep): void\r\n {\r\n var index = this.logicSteps.findIndex(c => c.id == step.id)\r\n if(index != null && index != undefined && index > -1)\r\n {\r\n this.logicSteps[index] = step;\r\n this.$forceUpdate();\r\n }\r\n else\r\n {\r\n console.error(\"match could not be found\")\r\n }\r\n\r\n this.logicStepsUpdated();\r\n }\r\n\r\n private stepDeleted(step: RuleStep): void\r\n {\r\n if(!this.logicSteps)\r\n {\r\n return;\r\n }\r\n\r\n this.logicSteps = this.logicSteps.filter(c => c.id != step.id)\r\n if(this.ruleValids[step.id])\r\n {\r\n delete this.ruleValids[step.id];\r\n }\r\n\r\n this.logicStepsUpdated();\r\n }\r\n\r\n @Emit(\"isValid\")\r\n private ruleValidationUpdated(isValid: CardValidation, ruleId: string): CardValidation\r\n {\r\n this.ruleValids[ruleId] = isValid;\r\n for (var ruleValid in this.ruleValids)\r\n {\r\n if(!this.ruleValids[ruleValid].isValid)\r\n {\r\n return {isValid: false, message: `One or more ${this.rootText}s are not valid`};\r\n }\r\n\t\t}\r\n\r\n return { isValid: true, message: \"\" };\r\n }\r\n\r\n\tprivate get triggerExists(): boolean {\r\n\t\treturn this.logicSteps?.length > 0;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesLogicBuilder.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesLogicBuilder.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RulesLogicBuilder.vue?vue&type=template&id=40e58ad1&scoped=true\"\nimport script from \"./RulesLogicBuilder.vue?vue&type=script&lang=ts\"\nexport * from \"./RulesLogicBuilder.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RulesLogicBuilder.vue?vue&type=style&index=0&id=40e58ad1&prod&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 \"40e58ad1\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mx-3\"},[_c('b-row',{staticClass:\"mb-2\"},[_c('b-col',{staticClass:\"d-flex bg-rule-left p-2 text-lg\",attrs:{\"cols\":1}},[_c('div',{staticClass:\"align-self-center text-center w-100\"},[_vm._v(\" Criteria \")])]),_c('b-col',{staticClass:\"d-flex p-1 border-all\",attrs:{\"cols\":5}},[_c('div',{staticClass:\"align-self-center w-100\"},[_c('vue-select',{staticClass:\"dark flex-search w-100\",attrs:{\"label\":\"title\",\"options\":_vm.getScopeCriteria,\"reduce\":function (val) { return val.id; },\"appendToBody\":\"\",\"disabled\":_vm.readOnly},on:{\"input\":_vm.selectedCriteriaUpdated},model:{value:(_vm.selectedValue),callback:function ($$v) {_vm.selectedValue=$$v},expression:\"selectedValue\"}})],1)]),_c('b-col',{staticClass:\"d-flex p-2 border-all border-left-0\"},[(_vm.selectedValue == 'Alarm Type')?_c('div',{staticClass:\"w-100\"},[_c('rules-alarm-dropdown',{attrs:{\"readOnly\":_vm.readOnly,\"allowNulls\":false,\"value\":_vm.scopeDetails.responseId},on:{\"input\":_vm.alarmTypeUpdated,\"isValid\":_vm.validationChanged},model:{value:(_vm.alarmText),callback:function ($$v) {_vm.alarmText=$$v},expression:\"alarmText\"}})],1):_vm._e(),(_vm.selectedValue == 'Device Type')?_c('div',{staticClass:\"w-100\"},[(_vm.deviceTypeComponentSet)?_c(_vm.deviceTypeComponent.component,_vm._b({tag:\"component\",attrs:{\"readOnly\":_vm.readOnly,\"value\":_vm.scopeDetails.serverTypeId},on:{\"input\":_vm.deviceTypeUpdated,\"isValid\":_vm.validationChanged}},'component',_vm.deviceTypeComponent.props,false)):_vm._e()],1):_vm._e()])],1),_c('b-row',[_c('b-col',{staticClass:\"margin-right-2px\",attrs:{\"cols\":6}},[(_vm.selectedValue == 'Device Type')?_c('div',[_c('b-row',[_c('b-col',{staticClass:\"d-flex bg-rule-left text-lg\"},[_c('div',{staticClass:\"align-self-center text-center w-100\"},[_vm._v(\" Device \")])]),_c('b-col',{staticClass:\"border-all border-bottom-0 p-1\",attrs:{\"cols\":\"9\"}},[_c('div',{staticClass:\"w-100\"},[_c('rule-generic-dropdown',{attrs:{\"readOnly\":_vm.readOnly,\"options\":_vm.serverOptions,\"placeholderText\":'Select a Device',\"allowNull\":\"\"},on:{\"input\":_vm.serverIdUpdated},model:{value:(_vm.scopeDetails.serverId),callback:function ($$v) {_vm.$set(_vm.scopeDetails, \"serverId\", $$v)},expression:\"scopeDetails.serverId\"}})],1)])],1),_c('b-row',[_c('b-col',{staticClass:\"d-flex bg-rule-left text-lg\"},[_c('div',{staticClass:\"align-self-center text-center w-100\"},[_vm._v(\" Event Type \")])]),_c('b-col',{staticClass:\"border-all border-bottom-0 p-1\",attrs:{\"cols\":\"9\"}},[_c('div',{staticClass:\"w-100\"},[_c('rule-generic-dropdown',{attrs:{\"readOnly\":_vm.readOnly,\"options\":_vm.serverTypeEventOptions,\"placeholderText\":'Select an Event Type',\"allowNull\":\"\"},on:{\"input\":_vm.serverTypeEventUpdated},model:{value:(_vm.scopeDetails.eventNum),callback:function ($$v) {_vm.$set(_vm.scopeDetails, \"eventNum\", $$v)},expression:\"scopeDetails.eventNum\"}})],1)])],1),_c('b-row',[_c('b-col',{staticClass:\"d-flex bg-rule-left text-lg\"},[_c('div',{staticClass:\"align-self-center text-center w-100\"},[_vm._v(\" Input1 \")])]),_c('b-col',{staticClass:\"border-all border-bottom-0\",attrs:{\"cols\":\"9\"}},[_c('div',{staticClass:\"w-100 pb-2\"},[_c('rules-number-input',{attrs:{\"allowNulls\":\"\",\"minValue\":-1,\"placeholderText\":\"Not Set\",\"readOnly\":_vm.readOnly},on:{\"isValid\":_vm.validationChanged},model:{value:(_vm.scopeDetails.input1),callback:function ($$v) {_vm.$set(_vm.scopeDetails, \"input1\", $$v)},expression:\"scopeDetails.input1\"}})],1)])],1),_c('b-row',[_c('b-col',{staticClass:\"d-flex bg-rule-left text-lg\"},[_c('div',{staticClass:\"align-self-center text-center w-100\"},[_vm._v(\" Input2 \")])]),_c('b-col',{staticClass:\"border-all\",attrs:{\"cols\":\"9\"}},[_c('div',{staticClass:\"w-100 pb-2\"},[_c('rules-number-input',{attrs:{\"allowNulls\":\"\",\"minValue\":-1,\"placeholderText\":\"Not Set\",\"readOnly\":_vm.readOnly},on:{\"isValid\":_vm.validationChanged},model:{value:(_vm.scopeDetails.input2),callback:function ($$v) {_vm.$set(_vm.scopeDetails, \"input2\", $$v)},expression:\"scopeDetails.input2\"}})],1)])],1)],1):_vm._e()]),_c('b-col',{attrs:{\"cols\":6}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-input',{attrs:{\"placeholder\":_vm.placeholderText,\"disabled\":_vm.readOnly,\"type\":\"number\",\"min\":this.minValue,\"max\":this.maxValue,\"formatter\":_vm.numberInputFormatter},model:{value:(_vm.inputNumber),callback:function ($$v) {_vm.inputNumber=$$v},expression:\"inputNumber\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { clone } from 'lodash';\r\nimport { CardValidation } from \"@/store/rules-engine/types\";\r\n\r\n@Component({})\r\nexport default class RulesNumberInput extends Vue {\r\n @Prop({type: [String, Number]})\r\n private value: number | string;\r\n\r\n\t@Prop({type: String})\r\n private placeholderText: string;\r\n\r\n\t@Prop({type: Number})\r\n private minValue: number;\r\n\r\n\t@Prop({type: Number})\r\n private maxValue: number;\r\n\r\n\t@Prop({type: Boolean})\r\n\tprivate allowDecimal: boolean;\r\n\r\n\t@Prop({type: Boolean})\r\n\tprivate allowNulls: boolean;\r\n\r\n\t@Prop({type: Boolean})\r\n\tprivate readOnly: boolean;\r\n\r\n private inputNumber: number = null;\r\n\r\n\tprivate inputValidation: CardValidation = { isValid: false, message: \"\"};\r\n\r\n private mounted(): void {\r\n\t\tthis.inputNumber = this.checkValueType();\r\n this.valueUpdate();\r\n }\r\n\r\n\tprivate checkValueType(): number {\r\n\t\tif (typeof this.value === \"string\") {\r\n\t\t\treturn parseInt(this.value);\r\n\t\t} else {\r\n\t\t\treturn clone(this.value);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get minValueValid(): boolean {\r\n\t\tif (this.minValue) {\r\n\t\t\treturn this.inputNumber ? this.inputNumber >= this.minValue : false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate get maxValueValid(): boolean {\r\n\t\tif (this.maxValue) {\r\n\t\t\treturn this.inputNumber ? this.inputNumber <= this.maxValue : false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate get inputValid(): boolean {\r\n\t\tif (this.allowNulls && this.inputNumber?.toString().length < 1) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn (this.minValueValid && this.maxValueValid && this.inputNumber?.toString().length > 0);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"inputNumber\")\r\n @Emit(\"input\")\r\n private valueUpdated(value: string): number\r\n {\r\n this.validateInput();\r\n return value ? parseInt(value) : null;\r\n }\r\n\r\n @Watch(\"value\")\r\n private valueUpdate(): void\r\n {\r\n this.inputNumber = this.value ? this.checkValueType() : null;\r\n this.validateInput();\r\n }\r\n\r\n\t@Emit(\"isValid\")\r\n private validateInput(): CardValidation\r\n {\r\n\t\tif(this.inputValid){\r\n\t\t\tthis.inputValidation.isValid = true;\r\n return this.inputValidation;\r\n } else {\r\n\t\t\tthis.inputValidation.isValid = false;\r\n\t\t\tthis.inputValidation.message = \"*Field must contain a valid value\";\r\n\t\t\treturn this.inputValidation;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate numberInputFormatter(value): number {\r\n\t\tif (value < this.minValue || value > this.maxValue) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesNumberInput.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesNumberInput.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RulesNumberInput.vue?vue&type=template&id=2dcfd6cd&scoped=true\"\nimport script from \"./RulesNumberInput.vue?vue&type=script&lang=ts\"\nexport * from \"./RulesNumberInput.vue?vue&type=script&lang=ts\"\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 \"2dcfd6cd\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-row',[_c('b-col',[_c('area-tree-select',{attrs:{\"append-to-body\":true,\"readonly\":_vm.readOnly},model:{value:(_vm.groupIdInput),callback:function ($$v) {_vm.groupIdInput=$$v},expression:\"groupIdInput\"}})],1),_c('b-col',[(_vm.groupIdInput)?_c('div',[_c('rule-generic-dropdown',{attrs:{\"readOnly\":_vm.readOnly,\"placeholderText\":'Select an Alarm',\"options\":_vm.alarmsForGroupId.get(_vm.groupIdInput.id) ? _vm.alarmsForGroupId.get(_vm.groupIdInput.id) : []},model:{value:(_vm.responseId),callback:function ($$v) {_vm.responseId=$$v},expression:\"responseId\"}})],1):_vm._e()])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!!_vm.selectedOptions)?_c('div',[_c('vue-select',{staticClass:\"dark grouping-select m-0 w-100\",attrs:{\"label\":\"title\",\"value\":_vm.selectedValue,\"options\":_vm.selectedOptions,\"placeholder\":_vm.placeholderText,\"appendToBody\":\"\",\"disabled\":_vm.readOnly,\"required\":!_vm.allowNull,\"clearable\":_vm.allowNull},on:{\"input\":_vm.valueSelected}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport vSelect from \"vue-select\";\r\nimport { CardValidation, RuleCondition, RuleDropdownOptions, RuleGenericDropdownItem } from \"@/store/rules-engine/types\";\r\nimport { namespace } from \"vuex-class\";\r\n\r\nconst RuleStore = namespace('rulesEngine');\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect\r\n\t}\r\n})\r\nexport default class RuleGenericDropdown extends Vue {\r\n\r\n\t@RuleStore.Action private retrieveOptionsForRuleDropdownOptions: (request: {optionType: RuleDropdownOptions, id: number}) => Promise\r\n\r\n\t@Prop({type: [Number, null], required: false, default: null})\r\n\tprivate value: number | null;\r\n\r\n @Prop({type:String, default: \"\"})\r\n private placeholderText: string;\r\n\r\n\t@Prop({type: Array, default: []})\r\n private options: RuleGenericDropdownItem[];\r\n\r\n\t@Prop({ type: Boolean, default: false})\r\n\tprivate allowNull: boolean;\r\n\r\n\t@Prop({ type: Boolean, default: false})\r\n\tprivate readOnly: boolean;\r\n\r\n\t@Prop({type: Object, default: null})\r\n\tprivate parentCondition: RuleCondition | null;\r\n\r\n\t@Prop()\r\n\tprivate ruleDropdownOption: RuleDropdownOptions;\r\n\r\n\tprivate selectedValue: string = null;\r\n\tprivate selectedOptions: RuleGenericDropdownItem[] = [];\r\n\tprivate inputValidation: CardValidation = { isValid: false, message: \"\"};\r\n\r\n private async mounted() {\r\n\t\tthis.valueUpdated();\r\n\t\tawait this.setupOptionsFromParentCondition();\r\n }\r\n\r\n\t@Watch(\"parentCondition\", {deep: true})\r\n\tprivate async setupOptionsFromParentCondition(): Promise {\r\n\t\tif (this.ruleDropdownOption) {\r\n\t\t\tthis.selectedOptions = await this.retrieveOptionsForRuleDropdownOptions({optionType: this.ruleDropdownOption, id: this.parentCondition.value});\r\n\t\t\tthis.selectedValue = this.selectedOptions.firstOrDefault((o: RuleGenericDropdownItem) => o.id === this.value)?.title;\r\n\t\t} else {\r\n\t\t\tthis.selectedOptions = this.options;\r\n\t\t}\r\n this.validationUpdated();\r\n\t}\r\n\r\n\t@Watch(\"options\")\r\n\tprivate onOptionsChanged(): void {\r\n\t\tif (!this.ruleDropdownOption) {\r\n\t\t\tthis.selectedOptions = this.options;\r\n\t\t\tthis.selectedValue = this.selectedOptions.firstOrDefault((o: RuleGenericDropdownItem) => o.id === this.value)?.title;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"value\")\r\n\tprivate valueUpdated(): void {\r\n\t\tif (!this.ruleDropdownOption) {\r\n\t\t\tthis.selectedOptions = this.options;\r\n\t\t\tthis.selectedValue = this.selectedOptions.firstOrDefault((o: RuleGenericDropdownItem) => o.id === this.value)?.title;\r\n\t\t}\r\n this.validationUpdated();\r\n\t}\r\n\r\n\t@Emit(\"isValid\")\r\n private validationUpdated(): CardValidation {\r\n\r\n if(!this.allowNull && (!this.selectedValue || this.selectedValue === \"\")) {\r\n\t\t\tthis.inputValidation.isValid=false;\r\n\t\t\tthis.inputValidation.message=\"Option must be selected\";\r\n } else {\r\n\t\t\tthis.inputValidation.isValid=true;\r\n\t\t\tthis.inputValidation.message=\"\";\r\n\t\t}\r\n\r\n\t\treturn this.inputValidation\r\n }\r\n\r\n @Emit(\"input\")\r\n private valueSelected(value: RuleGenericDropdownItem) {\r\n this.validationUpdated();\r\n\t\tthis.selectedValue = value?.title;\r\n return value?.id;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RuleGenericDropdown.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RuleGenericDropdown.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RuleGenericDropdown.vue?vue&type=template&id=3c801106&scoped=true\"\nimport script from \"./RuleGenericDropdown.vue?vue&type=script&lang=ts\"\nexport * from \"./RuleGenericDropdown.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RuleGenericDropdown.vue?vue&type=style&index=0&id=3c801106&prod&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 \"3c801106\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport { CardValidation, RuleGenericDropdownItem } from \"@/store/rules-engine/types\";\r\nimport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\r\nimport RuleGenericDropdown from \"@/components/rules-engine-setup/data-components/RuleGenericDropdown.vue\";\r\nimport { namespace } from \"vuex-class\";\r\nimport api from \"@/services/api.service\";\r\nimport { clone } from 'lodash';\r\n\r\nconst RuleStore = namespace(\"rulesEngine\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\t\"rule-generic-dropdown\": RuleGenericDropdown\r\n\t}\r\n})\r\nexport default class RulesAlarmDropdown extends Vue {\r\n\t@RuleStore.Action private retrieveRuleAlarmsForGroupId: (groupId: number) => Promise;\r\n\t@RuleStore.State private alarmsForGroupId: Map;\r\n\r\n\t@Prop({type: Boolean})\r\n\tprivate allowNulls: boolean;\r\n\r\n\t@Prop({type: Boolean})\r\n\tprivate readOnly: boolean;\r\n\r\n\t@Prop({type: [String, Number]})\r\n\tprivate value: number | string;\r\n\r\n\tprivate groupIdInput: AreaNode = null;\r\n\r\n\tprivate responseId: number = null;\r\n\r\n\tprivate inputValidation: CardValidation = { isValid: false, message: \"\" };\r\n\r\n\tprivate get inputValid(): boolean {\r\n\t\tif ((this.allowNulls && this.responseId?.toString().length < 1) || this.groupIdInput == null) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn !!this.responseId;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate mounted(): void {\r\n\t\tthis.responseId = this.checkValueType();\r\n\t\tthis.validateInput();\r\n\t\tthis.configureExistingSelection();\r\n\t}\r\n\r\n\tprivate checkValueType(): number {\r\n\t\tif (typeof this.value === \"string\") {\r\n\t\t\treturn parseInt(this.value);\r\n\t\t} else {\r\n\t\t\treturn clone(this.value);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async configureExistingSelection(): Promise {\r\n\t\tthis.groupIdInput = null;\r\n\r\n\t\tif (this.value) {\r\n\t\t\tconst data = await api.responseGet(this.value as number);\r\n\t\t\tlet area: AreaNode = {\r\n\t\t\t\tid: data.groupID,\r\n\t\t\t\tlabel: data.groupTitle\r\n\t\t\t}\r\n\t\t\tawait this.retrieveRuleAlarmsForGroupId(area.id);\r\n\t\t\tthis.groupIdInput = area;\r\n\t\t\tthis.responseId = clone(this.value as number);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"responseId\")\r\n @Emit(\"input\")\r\n private responseValueUpdated(value: RuleGenericDropdownItem): number\r\n {\r\n\t\tthis.validateInput();\r\n return value?.id;\r\n }\r\n\r\n\t@Watch(\"areaSelected\")\r\n private async valueUpdated(newValue: number, oldValue: number): Promise\r\n {\r\n\t\tif (!!oldValue && newValue != oldValue) {\r\n\t\t\tthis.responseId = null;\r\n\t\t}\r\n\r\n\t\tif (newValue) {\r\n\t\t\tawait this.retrieveRuleAlarmsForGroupId(newValue);\r\n\t\t\tthis.$forceUpdate();\r\n\t\t\tthis.validateInput();\r\n\t\t} else {\r\n\t\t\tthis.responseId = null;\r\n\t\t}\r\n }\r\n\r\n\tprivate get areaSelected(): number {\r\n\t\treturn this.groupIdInput?.id;\r\n\t}\r\n\r\n\t@Emit(\"isValid\")\r\n private validateInput(): CardValidation\r\n {\r\n\t\tif(this.inputValid){\r\n\t\t\tthis.inputValidation.isValid = true;\r\n return this.inputValidation;\r\n } else {\r\n\t\t\tthis.inputValidation.isValid = false;\r\n\t\t\tthis.inputValidation.message = \"*Field must contain a valid value\";\r\n\t\t\treturn this.inputValidation;\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesAlarmDropdown.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesAlarmDropdown.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RulesAlarmDropdown.vue?vue&type=template&id=bfc391da&scoped=true\"\nimport script from \"./RulesAlarmDropdown.vue?vue&type=script&lang=ts\"\nexport * from \"./RulesAlarmDropdown.vue?vue&type=script&lang=ts\"\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 \"bfc391da\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesScope.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesScope.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RulesScope.vue?vue&type=template&id=e2a6a11e&scoped=true\"\nimport script from \"./RulesScope.vue?vue&type=script&lang=ts\"\nexport * from \"./RulesScope.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RulesScope.vue?vue&type=style&index=0&id=e2a6a11e&prod&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 \"e2a6a11e\",\n null\n \n)\n\nexport default component.exports","import { TextValidationResult } from \"@/types/text-validation-result\";\r\n\r\n/**\r\n * Extracts a named property from XML content.\r\n * @param xml The xml content.\r\n * @param propertyName The name of the property to extract.\r\n */\r\nexport function extractPropertyFromXml(xml: string = \"\", propertyName: string): string {\r\n\tconst xmlToLower = xml.toLowerCase();\r\n\tconst propertyNameToLower = propertyName.toLowerCase();\r\n\r\n\tconst propertyStartTag = `<${propertyNameToLower}>`;\r\n\tconst propertyEndTag = ``;\r\n\r\n\treturn xml.substring(\r\n\t\txmlToLower.indexOf(propertyStartTag) + propertyStartTag.length,\r\n\t\txmlToLower.indexOf(propertyEndTag)\r\n\t);\r\n}\r\n\r\n/**\r\n * Extracts a named property from XML content - return \"\" if not found\r\n * @param xml The xml content.\r\n * @param propertyName The name of the property to extract.\r\n */\r\nexport function extractPropertyFromXmlWithContainsCheck(xml: string = \"\", propertyName: string): string {\r\n\tconst xmlToLower = xml.toLowerCase();\r\n\tconst propertyNameToLower = propertyName.toLowerCase();\r\n\tif (xmlToLower.includes(propertyNameToLower)) {\r\n\t\tconst propertyStartTag = `<${propertyNameToLower}>`;\r\n\t\tconst propertyEndTag = ``;\r\n\t\treturn xml.substring(\r\n\t\t\txmlToLower.indexOf(propertyStartTag) + propertyStartTag.length,\r\n\t\t\txmlToLower.indexOf(propertyEndTag)\r\n\t\t);\r\n\t}\r\n\treturn \"\";\r\n}\r\n\r\n/**\r\n * Confirms if the provided input is a valid regex pattern.\r\n * Return the valid status and an error message if invalid.\r\n * @param input The regex pattern to check\r\n */\r\nexport function isRegexValid(input: string): TextValidationResult {\r\n\ttry {\r\n\t\tnew RegExp(input);\r\n\t\treturn { isValid: true, message: \"\" };\r\n\t} catch {\r\n\t\treturn { isValid: false, message: \"Provided regex is invalid\" };\r\n\t}\r\n}\r\n","import { GetterTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { Grouping, RuleActionPlan, RuleDropdownOptions, RulesEngineState, RuleServerType } from \"./types\";\r\nimport RulesText from \"@/components/rules-engine-setup/RulesText.vue\";\r\nimport RulesLogicBuilder from \"@/components/rules-engine-setup/RulesLogicBuilder.vue\";\r\nimport RulesScope from \"@/components/rules-engine-setup/RulesScope.vue\";\r\nimport RulesNumberInput from \"@/components/rules-engine-setup/data-components/RulesNumberInput.vue\";\r\nimport RulesAlarmDropdown from \"@/components/rules-engine-setup/data-components/RulesAlarmDropdown.vue\";\r\nimport { ComponentToValue, CardComponent } from \"@/store/rules-engine/types\";\r\nimport RuleGenericDropdown from \"@/components/rules-engine-setup/data-components/RuleGenericDropdown.vue\";\r\nimport { get } from \"lodash\";\r\nimport { isRegexValid } from \"@/utils/string-utils\";\r\nimport { TextValidationResult } from \"@/types/text-validation-result\";\r\n\r\nexport const getters: GetterTree = {\r\n\tgetTriggerType(): any[] {\r\n return [\r\n {\r\n id: 1,\r\n title: \"Device Type\"\r\n },\r\n {\r\n id: 2,\r\n title: \"Alarm Type\"\r\n },\r\n {\r\n id: 3,\r\n title: \"Received After X Seconds\"\r\n }\r\n ];\r\n },\r\n\tgetActionType(): any[] {\r\n return [\r\n {\r\n id: 1,\r\n title: \"Raise Priority\"\r\n },\r\n {\r\n id: 2,\r\n title: \"Action Plan\"\r\n },\r\n {\r\n id: 3,\r\n title: \"Combine Alarms\"\r\n }\r\n ];\r\n },\r\n\tgetScopeCriteria(): any[] {\r\n return [\r\n {\r\n id: 1,\r\n title: \"Device Type\"\r\n },\r\n {\r\n id: 2,\r\n title: \"Alarm Type\"\r\n }\r\n ];\r\n },\r\n\tgetOperators(): string[] {\r\n\t\treturn [\"AND\", \"OR\"];\r\n\t},\r\n\tgetComponentLinks: (state, rootState, rootGetters) => {\r\n\t\tconst componentLinks = getDefaultComponentLinks(state);\r\n\r\n\t\t// Add ActionTypeRegex action\r\n\t\taddActionTypeRegexActionToComponentLinks(componentLinks, rootGetters);\r\n\r\n\t\treturn componentLinks;\r\n\t},\r\n\tgetTitleComponentConfig(): CardComponent\r\n {\r\n return {\r\n component: RulesText,\r\n props: {\r\n fieldName: \"Title\"\r\n }\r\n }\r\n },\r\n getActionBuilderConfig(): CardComponent\r\n {\r\n return {\r\n component: RulesLogicBuilder,\r\n props: {\r\n section: \"Action\",\r\n rootText: \"Action\",\r\n allowedLogic: {\r\n allowAnd: true,\r\n allowOr: false,\r\n subRules:\r\n {\r\n allowAnd: false,\r\n allowOr: false\r\n }\r\n },\r\n }\r\n }\r\n },\r\n getScopeBuilderConfig(): CardComponent\r\n {\r\n return {\r\n component: RulesScope,\r\n props: {\r\n section: \"Scope\",\r\n rootText: \"Scope\",\r\n allowedLogic: {\r\n allowAnd: true,\r\n allowOr: false,\r\n subRules:\r\n {\r\n allowAnd: false,\r\n allowOr: false\r\n }\r\n },\r\n }\r\n }\r\n },\r\n getTriggerBuilderConfig(): CardComponent\r\n {\r\n return {\r\n component: RulesLogicBuilder,\r\n props: {\r\n section: \"Trigger\",\r\n rootText: \"Trigger\",\r\n allowedLogic: {\r\n allowAnd: true,\r\n allowOr: true,\r\n subRules:\r\n {\r\n allowAnd: true,\r\n allowOr: true\r\n }\r\n },\r\n }\r\n }\r\n },\r\n\tgetGrouping(): Grouping[] {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\tid: 1,\r\n\t\t\t\ttitle: \"By Alarm\"\r\n\t\t\t}, {\r\n\t\t\t\tid: 2,\r\n\t\t\t\ttitle: \"By Area\"\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n}\r\n\r\nconst getDefaultComponentLinks = (state: RulesEngineState) => {\r\n\treturn [\r\n\t\t{\r\n\t\t\tcomponent: RulesText,\r\n\t\t\tcomponentFor: [\"Scope\",\"Trigger\",\"Action\"],\r\n\t\t\tvalueComponents:[\r\n\t\t\t\t{\r\n\t\t\t\t\tsection: \"Scope\",\r\n\t\t\t\t\tvalueComponentLinks:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 1, // Device Type\r\n\t\t\t\t\t\t\tcomponent: RuleGenericDropdown,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\toptions: state.serverTypes.map((s: RuleServerType) => {\r\n\t\t\t\t\t\t\t\t\treturn { id: s.serverTypeId, title: s.title }\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\tallowNull: false,\r\n\t\t\t\t\t\t\t\tplaceholderText: \"Select a Device Type\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 2, // Alarm Type\r\n\t\t\t\t\t\t\tcomponent: RulesAlarmDropdown,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tallowNulls: false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tsection: \"Action\",\r\n\t\t\t\t\tvalueComponentLinks:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 1, // Raise Priority\r\n\t\t\t\t\t\t\tcomponent: RulesNumberInput,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tallowNulls: false,\r\n\t\t\t\t\t\t\t\tminValue: 1,\r\n\t\t\t\t\t\t\t\tmaxValue: Number.MAX_VALUE,\r\n\t\t\t\t\t\t\t\tplaceholderText: \"Enter a Priority\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 2, // Action Plan Dropdown\r\n\t\t\t\t\t\t\tcomponent: RuleGenericDropdown,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\toptions: state.actionsPlans.map((s: RuleActionPlan) => {\r\n\t\t\t\t\t\t\t\t\treturn { id: s.actionPlanId, title: s.title }\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\tallowNull: false,\r\n\t\t\t\t\t\t\t\tplaceholderText: \"Select an Action Plan\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 3, // Combine Alarms\r\n\t\t\t\t\t\t\tcomponent: null\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 4, // Close Event\r\n\t\t\t\t\t\t\tcomponent: null\r\n\t\t\t\t\t\t} as ComponentToValue\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tsection: \"Trigger\",\r\n\t\t\t\t\tvalueComponentLinks:\r\n\t\t\t\t\t[\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 1, // Device Type\r\n\t\t\t\t\t\t\tcomponent: RuleGenericDropdown,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\toptions: state.serverTypes.map((s: RuleServerType) => {\r\n\t\t\t\t\t\t\t\t\treturn { id: s.serverTypeId, title: s.title }\r\n\t\t\t\t\t\t\t\t}),\r\n\t\t\t\t\t\t\t\tallowNull: false,\r\n\t\t\t\t\t\t\t\tplaceholderText: \"Select a Device Type\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 2, // Alarm Type\r\n\t\t\t\t\t\t\tcomponent: RulesAlarmDropdown,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tallowNulls: false\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 3, // Received After\r\n\t\t\t\t\t\t\tcomponent: RulesNumberInput,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tallowNulls: false,\r\n\t\t\t\t\t\t\t\tminValue: 1,\r\n\t\t\t\t\t\t\t\tmaxValue: 30,\r\n\t\t\t\t\t\t\t\tplaceholderText: \"Enter a value between 1 and 30\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 4,\r\n\t\t\t\t\t\t\tcomponent: RuleGenericDropdown,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\toptions: null,\r\n\t\t\t\t\t\t\t\truleDropdownOption: RuleDropdownOptions.server,\r\n\t\t\t\t\t\t\t\tallowNull: false,\r\n\t\t\t\t\t\t\t\tplaceholderText: \"Select a Device\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 5,\r\n\t\t\t\t\t\t\tcomponent: RuleGenericDropdown,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\toptions: null,\r\n\t\t\t\t\t\t\t\truleDropdownOption: RuleDropdownOptions.serverTypeEvent,\r\n\t\t\t\t\t\t\t\tallowNull: false,\r\n\t\t\t\t\t\t\t\tplaceholderText: \"Select an Event Type\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 6,\r\n\t\t\t\t\t\t\tcomponent: RulesNumberInput,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tallowNulls: false,\r\n\t\t\t\t\t\t\t\tminValue: -1,\r\n\t\t\t\t\t\t\t\tplaceholderText: \"Input 1\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 7,\r\n\t\t\t\t\t\t\tcomponent: RulesNumberInput,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tallowNulls: false,\r\n\t\t\t\t\t\t\t\tminValue: -1,\r\n\t\t\t\t\t\t\t\tplaceholderText: \"Input 2\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tvalue: 8,\r\n\t\t\t\t\t\t\tcomponent: RulesNumberInput,\r\n\t\t\t\t\t\t\tprops: {\r\n\t\t\t\t\t\t\t\tallowNulls: false,\r\n\t\t\t\t\t\t\t\tminValue: 1,\r\n\t\t\t\t\t\t\t\tmaxValue: 30,\r\n\t\t\t\t\t\t\t\tplaceholderText: \"Enter a value between 1 and 30\"\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} as ComponentToValue\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\r\nconst addActionTypeRegexActionToComponentLinks = (componentLinks, rootGetters) => {\r\n\r\n\tconst actionPlanRegexFeatureEnabled = get(rootGetters.featuresList, [\"RulesEngine\", \"ActionPlanRegex\"]);\r\n\r\n\tif (actionPlanRegexFeatureEnabled) {\r\n\t\tcomponentLinks.forEach(c => c.valueComponents.forEach(vc => {\r\n\r\n\t\tif (vc.section === \"Action\") {\r\n\t\t\tconst section = vc.valueComponentLinks;\r\n\t\t\tsection.push({\r\n\t\t\t\tvalue: 5,\r\n\t\t\t\tcomponent: RulesText,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tvalidation: (input: string): TextValidationResult => isRegexValid(input)\r\n\t\t\t\t}\r\n\t\t\t} as ComponentToValue);\r\n\t\t}\r\n\t\t}));\r\n\t}\r\n}\r\n","import { ActionTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport {\r\n\tEditingRule,\r\n\tRule,\r\n\tRuleTrigger,\r\n\tRuleAction,\r\n\tRulesEngineState,\r\n\tRulesWithPagination,\r\n\tRuleStep,\r\n\tServersForServerType,\r\n\tRuleDropdownOptions,\r\n\tRuleGenericDropdownItem,\r\n\tRuleServer,\r\n\tRuleServerTypeEvent,\r\n\tServerTypeEventsForServerType\r\n} from \"./types\";\r\nimport api from \"@/services/api.service\";\r\nimport { PaginatedSearchRequest } from \"@/mixins/PaginatedSearch\";\r\nimport { cloneDeep } from \"lodash\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync retrieveRules({ commit }, request: PaginatedSearchRequest) {\r\n\t\tconst data: RulesWithPagination = await api.retrieveRules(request);\r\n\t\tcommit(\"setRules\", data);\r\n\t},\r\n\tretrieveComponentForTypeId({ getters }, { section, typeId }): any {\r\n\t\tlet selectorComponentLinks = getters.getComponentLinks;\r\n var possibleComponentLinks = selectorComponentLinks.filter(link => link.componentFor.includes(section))\r\n if(possibleComponentLinks.length == 0){\r\n return null;\r\n }\r\n if(possibleComponentLinks.length > 1){\r\n console.error(\"duplicated links created\");\r\n return null;\r\n }\r\n\r\n var valueComponentLinksForSection = possibleComponentLinks[0].valueComponents.filter(vs => vs.section == section);\r\n if(valueComponentLinksForSection.length == 0){\r\n return null;\r\n }\r\n if(valueComponentLinksForSection.length > 1){\r\n console.error(\"duplicate value components set\");\r\n return null;\r\n }\r\n\r\n var valueToComponent = valueComponentLinksForSection.map(vs => vs.valueComponentLinks)[0];\r\n\r\n var componentSelector = valueToComponent.filter(ts => ts.value == typeId)\r\n return componentSelector[0];\r\n\t},\r\n\tasync saveRule({ dispatch }, rule: EditingRule): Promise {\r\n\t\t// Trigger and Actions back to their base type\r\n\t\tlet convertedTriggers: RuleTrigger[] = await dispatch(\"configureRuleForApi\", { triggers: rule.ruleTriggers, ruleType: \"triggers\" });\r\n\t\tlet convertedActions: RuleAction[] = await dispatch(\"configureRuleForApi\", { actions: rule.ruleActions, ruleType: \"actions\" });\r\n\r\n\t\tlet convertedRule: Rule = {\r\n\t\t\truleId: rule.ruleId,\r\n\t\t\ttitle: rule.title,\r\n\t\t\ttenantId: rule.tenantId,\r\n\t\t\tserverTypeId: rule.serverTypeId,\r\n\t\t\tgrouping: rule.grouping,\r\n\t\t\tresponseId: rule.responseId,\r\n\t\t\tserverId: rule.serverId,\r\n\t\t\tserverTypeEventNum: rule.serverTypeEventNum,\r\n\t\t\tinput1: rule.input1,\r\n\t\t\tinput2: rule.input2,\r\n\t\t\ttriggers: convertedTriggers,\r\n\t\t\tactions: convertedActions\r\n\t\t}\r\n\r\n\t\treturn await api.createOrUpdateRule(convertedRule);\r\n\t},\r\n\tasync configureRuleForApi({ dispatch }, payload: any): Promise {\r\n\t\tif(payload.ruleType == \"triggers\" && payload?.triggers){\r\n\t\t\tlet configuredRuleTriggers: RuleTrigger[] = [];\r\n\t\t\tfor(var i = 0; i < payload.triggers.length; i++)\r\n\t\t\t{\r\n\t\t\t\tvar currentTrigger = cloneDeep(payload.triggers[i]);\r\n\t\t\t\tlet ruleTrigger: RuleTrigger = {\r\n\t\t\t\t\tid: currentTrigger.id,\r\n\t\t\t\t\toperator: currentTrigger.operator,\r\n\t\t\t\t\tcondition: {\r\n\t\t\t\t\t\ttriggerTypeId: currentTrigger.condition.typeId,\r\n\t\t\t\t\t\tvalue: currentTrigger.condition.value,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsubTriggers: await dispatch(\"configureRuleForApi\", { triggers: currentTrigger.subRules, ruleType: \"triggers\" })\r\n\t\t\t\t}\r\n\t\t\t\tconfiguredRuleTriggers.push(ruleTrigger);\r\n\t\t\t}\r\n\r\n\t\t\treturn configuredRuleTriggers;\r\n\t\t} else if(payload?.actions) {\r\n\t\t\tlet configuredRuleActions: RuleAction[] = [];\r\n\r\n\t\t\tfor(var x = 0; x < payload.actions.length; x++)\r\n\t\t\t{\r\n\t\t\t\tvar action = cloneDeep(payload.actions[x]);\r\n\t\t\t\tlet ruleAction: RuleAction = {\r\n\t\t\t\t\t\tid: action.id,\r\n\t\t\t\t\t\tactionTypeId: action.condition.typeId,\r\n\t\t\t\t\t\tvalue: action.condition.value\r\n\t\t\t\t\t}\r\n\t\t\t\tconfiguredRuleActions.push(ruleAction);\r\n\t\t\t}\r\n\r\n\t\t\treturn configuredRuleActions;\r\n\t\t}\r\n\t\treturn [];\r\n\t},\r\n\tasync configureRuleForUI({ dispatch, commit }, rule: Rule): Promise {\r\n\t\t// First, we need to convert the RuleTriggers and RuleActions to objects.\r\n\t\tconst ruleTriggers: RuleTrigger[] = rule.triggers;\r\n\t\tconst ruleActions: RuleAction[] = rule.actions;\r\n\r\n\t\t// Next, we must convert the RuleTriggers and RuleActions to RuleSteps\r\n\t\tlet convertedTriggers: RuleStep[] = await dispatch(\"configureTriggerRuleForUI\", ruleTriggers);\r\n\t\tlet convertedActions: RuleStep[] = await dispatch(\"configureActionRuleForUI\", ruleActions);\r\n\r\n\t\t// Then, we need to create the EditingRule object\r\n\t\tlet convertedRule: EditingRule = {\r\n\t\t\truleId: rule.ruleId,\r\n\t\t\ttitle: rule.title,\r\n\t\t\ttenantId: rule.tenantId,\r\n\t\t\tserverTypeId: rule.serverTypeId,\r\n\t\t\tgrouping: rule.grouping,\r\n\t\t\tresponseId: rule.responseId,\r\n\t\t\tserverId: rule.serverId,\r\n\t\t\tserverTypeEventNum: rule.serverTypeEventNum,\r\n\t\t\tinput1: rule.input1,\r\n\t\t\tinput2: rule.input2,\r\n\t\t\truleTriggers: convertedTriggers,\r\n\t\t\truleActions: convertedActions,\r\n\t\t}\r\n\r\n\t\t// finally, we need to set the new EditingRule\r\n\t\tcommit(\"updateEditingRule\", convertedRule);\r\n\t},\r\n\tasync configureTriggerRuleForUI({ dispatch }, ruleTrigger: RuleTrigger[]) {\r\n\t\tlet configuredRuleStep: RuleStep[] = [];\r\n\r\n\t\tif (!!ruleTrigger && ruleTrigger.length > 0) {\r\n\r\n\t\t\tfor (var i = 0; i < ruleTrigger.length; i++) {\r\n\t\t\t\tconst trigger = ruleTrigger[i];\r\n\t\t\t\tvar currentTrigger = cloneDeep(trigger);\r\n\t\t\t\tlet ruleStep: RuleStep = {\r\n\t\t\t\t\tid: currentTrigger.id,\r\n\t\t\t\t\toperator: currentTrigger.operator,\r\n\t\t\t\t\tcondition: {\r\n\t\t\t\t\t\ttypeId: trigger.condition?.triggerTypeId ?? null,\r\n\t\t\t\t\t\tvalue: trigger.condition?.value ?? null\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsubRules: await dispatch(\"configureTriggerRuleForUI\", currentTrigger.subTriggers)\r\n\t\t\t\t}\r\n\t\t\t\tconfiguredRuleStep.push(ruleStep);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn configuredRuleStep;\r\n\t},\r\n\tasync configureActionRuleForUI({ dispatch }, ruleAction: RuleAction[]) {\r\n\t\tlet configuredRuleSetup: RuleStep[] = [];\r\n\r\n\t\tif (!!ruleAction && ruleAction.length > 0) {\r\n\r\n\t\t\tfor (var i = 0; i < ruleAction.length; i++) {\r\n\r\n\t\t\t\tconst action = ruleAction[i];\r\n\t\t\t\tvar currentAction = cloneDeep(action);\r\n\t\t\t\tlet ruleStep: RuleStep = {\r\n\t\t\t\t\tid: currentAction.id,\r\n\t\t\t\t\toperator: \"AND\", /* Always 'AND' */\r\n\t\t\t\t\tcondition: {\r\n\t\t\t\t\t\ttypeId: currentAction.actionTypeId,\r\n\t\t\t\t\t\tvalue: currentAction.value\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsubRules: []\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconfiguredRuleSetup.push(ruleStep);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn configuredRuleSetup;\r\n\t},\r\n\tasync deleteRule({ commit }, ruleId: number) {\r\n\t\tawait api.DeleteRule(ruleId).then(\r\n\t\t\tresult => {\r\n\t\t\t\tif (!!result && result.status === 200) {\r\n\t\t\t\t\tcommit(\"removeRule\", ruleId);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t},\r\n\tasync retrieveRuleAlarmsForGroupId({ commit, state }, groupId: number) {\r\n\t\tif (!state.alarmsForGroupId.has(groupId)) {\r\n\t\t\tconst ruleAlarms = await api.retrieveRuleAlarmsForGroupId(groupId);\r\n\t\t\tconst payload = {\r\n\t\t\t\truleAlarms,\r\n\t\t\t\tgroupId\r\n\t\t\t};\r\n\t\t\tcommit(\"setRuleAlarmsForGroupId\", payload);\r\n\t\t}\r\n\t},\r\n\tasync retrieveRuleServerTypes({ commit }) {\r\n\t\tconst ruleServerTypes = await api.retrieveRuleServerTypes();\r\n\t\tcommit(\"setRuleServerTypes\", ruleServerTypes);\r\n\t},\r\n\tasync retrieveRuleServersForServerType({ commit, state }, serverTypeId: number) {\r\n\t\t// If we already have the servers then return them\r\n\t\tif (state.serversForServerType) {\r\n\t\t\tconst servers = state.serversForServerType.firstOrDefault((s: ServersForServerType) => s.serverTypeId === serverTypeId)?.servers;\r\n\t\t\tif (servers) {\r\n\t\t\t\treturn servers;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Otherwise, we need to get them\r\n\t\tconst ruleServers = await api.retrieveRuleServersForServerType(serverTypeId);\r\n\t\tconst payload: ServersForServerType = {\r\n\t\t\tserverTypeId,\r\n\t\t\tservers: ruleServers\r\n\t\t};\r\n\t\tcommit(\"setRuleServersForServerType\", payload);\r\n\r\n\t\treturn ruleServers;\r\n\t},\r\n\tasync retrieveRuleServerTypeEventsForServerType({ commit, state }, serverTypeId: number) {\r\n\t\t// If we already have the serverTypeEvents then return them\r\n\t\tif (state.serversForServerType) {\r\n\t\t\tconst events = state.serverTypeEventsForServerType.firstOrDefault((s: ServersForServerType) => s.serverTypeId === serverTypeId)?.serverTypeEvents;\r\n\t\t\tif (events) {\r\n\t\t\t\treturn events;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst ruleServerTypeEvents = await api.retrieveRuleServerTypeEventsForServerType(serverTypeId);\r\n\t\tconst payload: ServerTypeEventsForServerType = {\r\n\t\t\tserverTypeId,\r\n\t\t\tserverTypeEvents: ruleServerTypeEvents\r\n\t\t};\r\n\t\tcommit(\"setRuleServerTypeEventsForServerType\", payload);\r\n\r\n\t\treturn ruleServerTypeEvents;\r\n\t},\r\n\tasync retrieveRuleActionPlans({ commit }) {\r\n\t\tconst ruleActionPlans = await api.retrieveRuleActionPlans();\r\n\t\tcommit(\"setRuleActionPlans\", ruleActionPlans);\r\n\t},\r\n\tasync retrieveOptionsForRuleDropdownOptions( { dispatch }, { optionType, id }): Promise{\r\n\t\tswitch(optionType as RuleDropdownOptions) {\r\n\t\t\tcase RuleDropdownOptions.server: {\r\n\t\t\t\tconst servers = await dispatch(\"retrieveRuleServersForServerType\", id);\r\n\t\t\t\treturn servers.map((s: RuleServer) => { return { id: s.serverId, title: s.title }});\r\n\t\t\t}\r\n\t\t\tcase RuleDropdownOptions.serverTypeEvent: {\r\n\t\t\t\tconst events = await dispatch(\"retrieveRuleServerTypeEventsForServerType\", id);\r\n\t\t\t\treturn events.map((s: RuleServerTypeEvent) => {return { id: s.eventNum, title: s.title }});\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [];\r\n\t}\r\n}\r\n","import { RulesEngineState, RuleGenericDropdownItem, RuleServer, RuleServerTypeEvent } from \"./types\";\r\n\r\nexport function getDefaultState(): RulesEngineState {\r\n\treturn {\r\n\t\trules: {\r\n\t\t\tpageNumber: 0,\r\n\t\t\tpageSize: 0,\r\n\t\t\ttotalRecords: 0,\r\n\t\t\tdata: [],\r\n\t\t},\r\n\t\teditingRule: null,\r\n\t\talarmsForGroupId: new Map(),\r\n\t\tserverTypes: [],\r\n\t\tactionsPlans: [],\r\n\t\tserverTypeEventsForServerType: [],\r\n\t\tserversForServerType: [],\r\n\t};\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { EditingRule, RulesEngineState, RulesWithPagination, RuleActionPlan, RuleServerType, RuleServer, ServersForServerType, ServerTypeEventsForServerType, RuleGenericDropdownItem } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport Vue from \"vue\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetRules(state: RulesEngineState, data: RulesWithPagination) {\r\n\t\tconst defaultData: RulesWithPagination = {\r\n\t\t\tpageNumber: 0,\r\n\t\t\tpageSize: 0,\r\n\t\t\ttotalRecords: 0,\r\n\t\t\tdata: []\r\n\t\t}\r\n\r\n\t\tstate.rules = data ? data : defaultData;\r\n\t},\r\n\tupdateEditingRule(state: RulesEngineState, editingRule: EditingRule) {\r\n\t\tstate.editingRule = editingRule;\r\n\t},\r\n\tremoveRule(state: RulesEngineState, ruleId: number) {\r\n\t\tstate.rules.data = state.rules.data.filter(rule => rule.ruleId !== ruleId);\r\n\t},\r\n\tsetRuleAlarmsForGroupId(state: RulesEngineState, payload: any) {\r\n\t\tlet dropdownOptions: RuleGenericDropdownItem[] = [];\r\n\t\tif (payload.ruleAlarms) {\r\n\t\t\tfor (let i = 0; i < payload.ruleAlarms.length; i++){\r\n\t\t\t\tlet alarmItem: RuleGenericDropdownItem = {\r\n\t\t\t\t\tid: payload.ruleAlarms[i].responseId,\r\n\t\t\t\t\ttitle: payload.ruleAlarms[i].title\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdropdownOptions.push(alarmItem);\r\n\t\t\t}\r\n\t\t}\r\n\t\tstate.alarmsForGroupId.set(payload.groupId, dropdownOptions);\r\n\t},\r\n\tsetRuleServerTypes(state: RulesEngineState, ruleServerTypes: RuleServerType[]) {\r\n\t\tstate.serverTypes = ruleServerTypes ? ruleServerTypes : [];\r\n\t},\r\n\tsetRuleServersForServerType(state: RulesEngineState, payload: ServersForServerType) {\r\n\t\tconst index = state.serversForServerType.findIndex((s: ServersForServerType) => s.serverTypeId === payload.serverTypeId);\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\t// Update if it exists.\r\n\t\t\tVue.set(state.serversForServerType, index, { serverTypeId: payload.serverTypeId, servers: payload.servers })\r\n\t\t} else {\r\n\t\t\t// Add if it does not\r\n\t\t\tstate.serversForServerType.push({ serverTypeId: payload.serverTypeId, servers: payload.servers });\r\n\t\t}\r\n\t},\r\n\tsetRuleServerTypeEventsForServerType(state: RulesEngineState, payload: ServerTypeEventsForServerType) {\r\n\t\tconst index = state.serverTypeEventsForServerType.findIndex((s: ServerTypeEventsForServerType) => s.serverTypeId === payload.serverTypeId);\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\t// Update if it exists.\r\n\t\t\tVue.set(state.serverTypeEventsForServerType, index, { serverTypeId: payload.serverTypeId, serverTypeEvents: payload.serverTypeEvents })\r\n\t\t} else {\r\n\t\t\t// Add if it does not\r\n\t\t\tstate.serverTypeEventsForServerType.push({ serverTypeId: payload.serverTypeId, serverTypeEvents: payload.serverTypeEvents });\r\n\t\t}\r\n\t},\r\n\tsetRuleActionPlans(state:RulesEngineState, ruleActionPlans: RuleActionPlan[]) {\r\n\t\tstate.actionsPlans = ruleActionPlans ? ruleActionPlans : [];\r\n\t},\r\n\tresetState(state: RulesEngineState) {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t}\r\n}\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { RulesEngineState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: RulesEngineState = getDefaultState();\r\nconst namespaced: boolean = true;\r\n\r\nexport const rulesEngine: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { DistanceConfigurationState } from \"./types\";\r\n\r\nexport const getters: GetterTree = {\r\n};\r\n","import { MutationTree } from \"vuex\";\r\nimport { DistanceConfigurationPagedResponse, DistanceConfigurationState } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetDistanceConfigurations(state: DistanceConfigurationState, data: DistanceConfigurationPagedResponse) {\r\n\t\tconst defaultdata: DistanceConfigurationPagedResponse = {\r\n\t\t\tpageNumber: 0,\r\n\t\t\tpageSize: 0,\r\n\t\t\ttotalRecords: 0,\r\n\t\t\tdata: []\r\n\t\t}\r\n\r\n\t\tstate.distanceConfigurations = data ? data : defaultdata;\r\n\t},\r\n\tsetMaxRadius(state: DistanceConfigurationState, maxRadius: number) {\r\n\t\tstate.maxRadius = maxRadius;\r\n\t}\r\n};\r\n","import { ActionTree } from \"vuex\";\r\nimport {\r\n\tDistanceConfigurationPagedResponse,\r\n\tDistanceConfigurationState\r\n} from \"./types\";\r\nimport { RootState } from \"@/store/types\";\r\nimport { PaginatedSearchRequest } from \"@/mixins/PaginatedSearch\";\r\nimport api from \"@/services/api.service\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync retrieveDistanceConfigurations({ commit }, request: PaginatedSearchRequest) {\r\n\t\tconst data: DistanceConfigurationPagedResponse = await api.retrieveDistanceConfigurations(request);\r\n\t\tcommit(\"setDistanceConfigurations\", data);\r\n\t},\r\n\tasync retrieveMaxRadius({ commit }) {\r\n\t\tconst data: number = await api.retrieveDistanceConfigurationMaxRadius();\r\n\t\tcommit(\"setMaxRadius\", data);\r\n\t}\r\n}","import { DistanceConfigurationState, maxRadiusAsMetersInMiles } from \"./types\";\r\n\r\nexport function getDefaultState(): DistanceConfigurationState {\r\n return {\r\n\t\tdistanceConfigurations: {\r\n\t\t\tpageNumber: 0,\r\n\t\t\tpageSize: 0,\r\n\t\t\ttotalRecords: 0,\r\n\t\t\tdata: [],\r\n\t\t},\r\n\t\tmaxRadius: maxRadiusAsMetersInMiles\r\n\t}\r\n}","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { mutations } from \"./mutations\";\r\nimport { actions } from \"./actions\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { DistanceConfigurationState } from \"./types\";\r\n\r\nexport const state: DistanceConfigurationState = getDefaultState();\r\nconst namespaced: boolean = true;\r\n\r\nexport const distanceConfiguration: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tmutations,\r\n\tactions\r\n};\r\n","import { GetterTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { Schedule, ScheduleState } from \"./types\";\r\n\r\nexport const getters: GetterTree = {\r\n getScheduleByIdAndDate: state => (scheduleId: string, scheduleStart: string) => {\r\n return state.schedules.find((schedule: Schedule) =>\r\n schedule.scheduleId === scheduleId && schedule.startDateTime === scheduleStart\r\n )},\r\n isScheduleTypeSelected: state => (scheduleTypeId: number) =>\r\n state.selectedScheduleTypes.find(x => x == scheduleTypeId) != null,\r\n};\r\n","import api from \"@/services/api.schedules.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { Schedule, ScheduleState } from \"./types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync filterSchedules({ commit }, { filterString, selectedGroup, selectedScheduleTypes, startDate, endDate, enabled, cancelToken }) {\r\n\t\tcommit(\"setIsLoading\", true);\r\n\t\tconst schedules = await api.filterSchedules(\r\n\t\t\tfilterString,\r\n\t\t\tselectedGroup,\r\n\t\t\tselectedScheduleTypes,\r\n\t\t\tstartDate,\r\n\t\t\tendDate,\r\n\t\t\tenabled,\r\n\t\t\tcancelToken);\r\n\t\tif (schedules) {\r\n\t\t\tlet data: Schedule[] = schedules;\r\n\t\t\tcommit(\"setSchedules\", data);\r\n\t\t}\r\n\t},\r\n\r\n\tasync loadScheduleTypes({ commit }) {\r\n\t\tconst scheduleTypes = await api.getAllScheduleTypes();\r\n\t\tif (scheduleTypes) {\r\n\t\t\tcommit(\"setScheduleTypes\", scheduleTypes);\r\n\t\t}\r\n\t},\r\n\r\n\tasync addOrUpdateSchedule({ commit }, schedule: Schedule) {\r\n\t\tawait api.createOrUpdateSchedule(schedule);\r\n\t},\r\n\r\n\tasync deleteSchedule({ commit }, { scheduleId }) {\r\n\t\tawait api.deleteSchedule(scheduleId);\r\n\t}\r\n};\r\n","import { MutationTree } from \"vuex\";\r\nimport { Schedule, ScheduleState, ScheduleType } from \"./types\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetIsLoading(state, isLoading: boolean){\r\n\t\tstate.isLoading = isLoading;\r\n\t},\r\n\r\n\tsetSchedules(state, schedules: Schedule[]) {\r\n\t\tstate.schedules = schedules;\r\n\t},\r\n\r\n\tsetScheduleTypes(state, scheduleTypes: ScheduleType[]) {\r\n\t\tstate.scheduleTypes = scheduleTypes;\r\n\t},\r\n\r\n\tsetIsScheduleModalVisible(state, isVisible: boolean) {\r\n\t\tstate.isCreateModalVisible = isVisible;\r\n\t},\r\n\r\n\tsetIsDeleteConfirmationVisible(state, isVisible: boolean) {\r\n\t\tstate.isDeleteConfirmationVisible = isVisible;\r\n\t},\r\n\r\n\tsetIsReloadRequired(state, isReloadRequired: boolean) {\r\n\t\tstate.isReloadRequired = isReloadRequired;\r\n\t},\r\n\r\n\tsetSelectedScheduleId(state, { selectedScheduleId, selectedScheduleStart }: { selectedScheduleId: string, selectedScheduleStart: Date }) {\r\n\t\tstate.selectedScheduleId = selectedScheduleId;\r\n\t\tstate.selectedScheduleStart = selectedScheduleStart;\r\n\t},\r\n\r\n\tsetTempSchedule(state, tempSchedule: Schedule) {\r\n\t\tstate.tempSchedule = tempSchedule;\r\n\t},\r\n\r\n\tremoveTempSchedule(state) {\r\n\t\tstate.tempSchedule = null;\r\n\t},\r\n\r\n\tsetEndTimeForTempSchedule(state, endTime: string) {\r\n\t\tif (state.tempSchedule !== null) {\r\n\t\t\tstate.tempSchedule.endDateTime = endTime;\r\n\t\t}\r\n\t},\r\n\r\n\tsetStartTimeForTempSchedule(state, startTime: string) {\r\n\t\tif (state.tempSchedule !== null) {\r\n\t\t\tstate.tempSchedule.startDateTime = startTime;\r\n\t\t}\r\n\t},\r\n\r\n\tupdateSearchString(state, searchString: string) {\r\n\t\tstate.searchString = searchString;\r\n\t},\r\n\r\n\taddSelectedScheduleType(state, selectedScheduleType: number) {\r\n\t\tstate.selectedScheduleTypes.push(selectedScheduleType);\r\n\t},\r\n\r\n\tremoveSelectedScheduleType(state, selectedScheduleType: number) {\r\n\t\tstate.selectedScheduleTypes = state.selectedScheduleTypes.filter(s => s != selectedScheduleType);\r\n\t},\r\n\r\n\tsetSelectedGroup(state, selectedGroup: number) {\r\n\t\tstate.selectedGroup = selectedGroup;\r\n\t},\r\n\r\n\tsetEnabledScheduleFilter(state, enabled: boolean | null) {\r\n\t\tstate.enabledScheduleFilter = enabled;\r\n\t},\r\n\r\n\tsetAreaTimeZoneId(state, timeZoneId: number | null) {\r\n\t\tstate.areaTimeZoneId = timeZoneId;\r\n\t},\r\n\r\n\tresetSelectedGroup(state) {\r\n\t\tstate.selectedGroup = null;\r\n\t}\r\n};\r\n","import { Schedule, ScheduleState, ScheduleType } from \"./types\";\r\n\r\nexport function getDefaultState(): ScheduleState {\r\n\treturn {\r\n\t\tisLoading: false,\r\n\t\tschedules: [] as Schedule[],\r\n\t\ttempSchedule: null,\r\n\t\tscheduleTypes: [] as ScheduleType[],\r\n\t\tisCreateModalVisible: false,\r\n\t\tisDeleteConfirmationVisible: false,\r\n\t\tisReloadRequired: false,\r\n\t\tselectedScheduleId: null,\r\n\t\tselectedScheduleStart: null,\r\n\t\tsearchString: \"\",\r\n\t\tselectedGroup: 0,\r\n\t\tselectedScheduleTypes: [],\r\n\t\tenabledScheduleFilter: true,\r\n\t\tareaTimeZoneId: null,\r\n\t};\r\n}\r\n","import { Module } from \"vuex\";\r\nimport { getters } from \"./getters\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { ScheduleState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: ScheduleState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const schedules: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tgetters,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import { RootState } from \"../types\";\r\nimport axios from \"axios\";\r\nimport api from \"@/services/api.service\";\r\nimport { ActionTree } from \"vuex\";\r\nimport { AlarmPointState } from \"./types\";\r\n\r\nexport const actions: ActionTree = {\r\n async responseSearch({ commit }, { groupId, query, isInsights }) {\r\n const cancelTokenSource = axios.CancelToken.source();\r\n\r\n commit(\"setCancelTokenSource\", cancelTokenSource);\r\n commit(\"setResponses\", await api.getAllResponsesByArea(groupId, query, isInsights));\r\n },\r\n async fetchDisableAutomaticLoad({ commit }) {\r\n const { data } = await api.disableAutomaticLoad();\r\n\r\n commit(\"setDisableAutomaticLoad\", data);\r\n }\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { AlarmPointState } from \"./types\";\r\nimport { getDefaultState } from \"./index\";\r\nimport { CancelTokenSource } from \"axios\";\r\n\r\nexport const mutations: MutationTree = {\r\n setDisplayResponseId: (apState: AlarmPointState, responseId: number) => {\r\n apState.displayResponseId = responseId;\r\n },\r\n setResponses: (apState: AlarmPointState, responses: any[]) => (apState.responses = responses),\r\n setAlarmPointManagerOpen: (apState: AlarmPointState, open: boolean) => {\r\n apState.alarmPointManagerOpen = open;\r\n },\r\n setCancelTokenSource: (apState: AlarmPointState, cancelToken: CancelTokenSource) => (apState.cancelTokenSource = cancelToken),\r\n setSelectedResponse: (apState: AlarmPointState, response: any) => (apState.selectedResponse = response),\r\n setSelectedArea: (apState: AlarmPointState, area: any) => (apState.selectedArea = area),\r\n armSelectedArea: apState => {\r\n apState.selectedArea.armed = true;\r\n apState.selectedArea.toggleArmAt = null;\r\n apState.selectedArea.disarmReasonID = null;\r\n },\r\n setDisableAutomaticLoad: (apState: AlarmPointState, data: boolean) => {\r\n apState.disableAutomaticLoad = data;\r\n },\r\n resetState: apState => {\r\n Object.assign(apState, getDefaultState());\r\n }\r\n}","import { Module } from \"vuex\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { RootState } from \"../types\";\r\nimport { AlarmPointState } from \"./types\";\r\n\r\nexport function getDefaultState(): AlarmPointState {\r\n\treturn {\r\n\t\tdisplayResponseId: null,\r\n\t\tresponses: [],\r\n\t\talarmPointManagerOpen: false,\r\n\t\tcancelTokenSource: null,\r\n\t\tselectedResponse: null,\r\n\t\tselectedArea: null,\r\n\t\tdisableAutomaticLoad: false,\r\n\t};\r\n}\r\n\r\nexport const state: AlarmPointState = getDefaultState();\r\n\r\nconst namespaced: boolean = true;\r\n\r\nexport const alarmPoints: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tmutations,\r\n\tactions\r\n};","import api from \"@/services/api.service\";\r\nimport { ActionContext, ActionTree } from \"vuex\";\r\nimport { RootState } from \"../types\";\r\nimport { AreaEventHistoryState } from \"./types\";\r\n\r\nexport const actions: ActionTree = {\r\n\tasync fetchAreaEventHistory({ commit, state }: ActionContext) : Promise {\r\n\t\tconst areaEventHistory = await api.fetchAreaEventHistory(state.filter);\r\n\t\tcommit(\"setAreaEventHistory\", (areaEventHistory).data);\r\n\t},\r\n};\r\n","import { AreaEventHistoryState } from \"./types\";\r\n\r\nexport function getDefaultState(): AreaEventHistoryState {\r\n\treturn {\r\n\t\tisPopoutModeEnabled: false,\r\n\t\tareaEventHistory: [],\r\n\t\tfilter: null,\r\n\t\tstoredTimeZoneId: null,\r\n\t\ttotalRecords: null,\r\n\t};\r\n}\r\n","import { MutationTree } from \"vuex\";\r\nimport { AreaEventHistoryState } from \"./types\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { AreaEventHistory, AreaEventHistoryPaginatedSearchParams } from \"@/types/sv-data/AreaEventHistory\";\r\n\r\nexport const mutations: MutationTree = {\r\n\tsetIsPopoutModeEnabled(state: AreaEventHistoryState, isEnabled: boolean) {\r\n\t\tstate.isPopoutModeEnabled = isEnabled;\r\n\t},\r\n\tsetAreaEventHistory(state: AreaEventHistoryState, areaEventHistory: AreaEventHistory[]) {\r\n\t\tstate.areaEventHistory = areaEventHistory;\r\n\t},\r\n\tsetFilter(state: AreaEventHistoryState, filter: AreaEventHistoryPaginatedSearchParams){\r\n\t\tstate.filter = filter;\r\n\t},\r\n\tsetTimeZone(state: AreaEventHistoryState, timeZoneId: number){\r\n\t\tstate.storedTimeZoneId = timeZoneId;\r\n\t},\r\n\tsetTotalRecords(state: AreaEventHistoryState, totalRecords: number){\r\n\t\tstate.totalRecords = totalRecords;\r\n\t},\r\n\tresetState(state: AreaEventHistoryState): void {\r\n\t\tObject.assign(state, getDefaultState());\r\n\t},\r\n};\r\n","import { Module } from \"vuex\";\r\nimport { actions } from \"./actions\";\r\nimport { mutations } from \"./mutations\";\r\nimport { AreaEventHistoryState } from \"./types\";\r\nimport { RootState } from \"../types\";\r\nimport { getDefaultState } from \"./state\";\r\n\r\nexport const state: AreaEventHistoryState = getDefaultState();\r\nconst namespaced: boolean = true;\r\n\r\nexport const areaEventHistory: Module = {\r\n\tnamespaced,\r\n\tstate,\r\n\tactions,\r\n\tmutations\r\n};\r\n","import Vue from \"vue\";\r\nimport Vuex from \"vuex\";\r\nimport createPersistedState from \"vuex-persistedstate\";\r\nimport createMutationsSharer from \"./vuex-shared-mutations\";\r\nimport { getDefaultState } from \"./state\";\r\nimport { getters as generalGetters } from \"./getters\";\r\nimport { actions as generalActions } from \"./actions\";\r\nimport { mutations as generalMutations } from \"./mutations\";\r\n\r\nimport { emails } from \"./emails/index\"\r\nimport { csvParser } from \"./csv-parser\";\r\nimport { eventqueue } from \"./eventqueue/index\";\r\nimport { siteMonitor } from \"./site-monitor/index\";\r\nimport { siteMonitorCameras } from \"./site-monitor-cameras/index\";\r\nimport { tasks } from \"./tasks/index\";\r\nimport { sessions } from \"./sessions/index\";\r\nimport { postLoginAppBootstrap } from \"./plugins\";\r\nimport { mapLayers } from \"./map-layers/index\";\r\nimport { userManagement } from \"./user-management/index\";\r\nimport { devices } from \"./devices/index\";\r\nimport { responses } from \"./responses/index\";\r\nimport { eventSearch } from \"./event-search/index\";\r\nimport { mobile } from \"./mobile/index\";\r\nimport { views } from \"./views/index\";\r\nimport { reports } from \"./reports/index\";\r\nimport { areaNotes } from \"./area-notes/index\";\r\nimport { activityLog } from \"./activity-log/index\";\r\nimport { areas } from \"./areas/index\";\r\nimport { tours } from \"./tours/index\";\r\nimport { GenericTable } from \"./generic-table/index\";\r\nimport { manualRaise } from \"./manual-raise/index\";\r\nimport mobileRaiseTemplates from \"./mobile-raise-templates\";\r\nimport mobileRaise from \"./mobile-raise\";\r\nimport { subscription } from \"./subscription/index\";\r\nimport { signup } from \"@/store/signup\";\r\nimport { externalMapLayers } from \"./external-map-layers/index\";\r\nimport { caseManagement } from \"./case-management/index\"\r\nimport { csvFormHandler } from \"./csv-form-handler\"\r\nimport { alarmMasking } from \"./alarm-masking/index\";\r\nimport { userContext } from \"./user-context/index\";\r\nimport { guardChat } from \"./guard-chat\";\r\nimport { fieldOps } from \"./field-ops/index\";\r\nimport { setup } from \"./setup/index\";\r\nimport { responseActions } from \"./response-actions/index\";\r\nimport { customFields } from \"./custom-fields/index\";\r\nimport { systemHealth } from \"./system-health\";\r\nimport { rulesEngine } from \"./rules-engine\";\r\nimport { distanceConfiguration } from \"./distance-configuration\";\r\nimport { schedules } from \"./schedules\";\r\nimport { alarmPoints } from \"./alarm-points\";\r\nimport { areaEventHistory } from \"./area-event-history\";\r\nconst debug = process.env.NODE_ENV !== \"production\";\r\n\r\nVue.use(Vuex);\r\n\r\n// @todo\r\n// 2. thinking we could have a section of state called `UI` that would represent the state of various UI elements\r\n// (e.g. look at all the state properties that end with `Open`)\r\n// 3. thinking about creating CCure, Groups, Event, EventShare modules\r\n\r\nexport default new Vuex.Store({\r\n\tstate: getDefaultState(),\r\n\tgetters: {\r\n\t\t...generalGetters\r\n\t},\r\n\tmutations: {\r\n\t\t...generalMutations\r\n\t},\r\n\tactions: {\r\n\t\t...generalActions\r\n\t},\r\n\tmodules: {\r\n\t\tfieldOps,\r\n\t\teventqueue,\r\n\t\tsiteMonitor,\r\n\t\ttasks,\r\n\t\tuserManagement,\r\n\t\tsiteMonitorCameras,\r\n\t\tsessions,\r\n\t\tmapLayers,\r\n\t\teventSearch,\r\n\t\tdevices,\r\n\t\tresponses,\r\n\t\tmobile,\r\n\t\tviews,\r\n\t\treports,\r\n\t\tactivityLog,\r\n\t\tareas,\r\n\t\ttours,\r\n\t\tareaNotes,\r\n\t\tGenericTable,\r\n\t\tmanualRaise,\r\n\t\tmobileRaiseTemplates,\r\n\t\tmobileRaise,\r\n\t\tsubscription,\r\n\t\tsignup,\r\n\t\temails,\r\n externalMapLayers,\r\n caseManagement,\r\n\t\tcsvParser,\r\n\t\tcsvFormHandler,\r\n\t\talarmMasking,\r\n\t\tguardChat,\r\n\t\tuserContext,\r\n\t\tsetup,\r\n\t\tresponseActions,\r\n\t\tsystemHealth,\r\n\t\trulesEngine,\r\n\t\tdistanceConfiguration,\r\n\t\tschedules,\r\n\t\talarmPoints,\r\n\t\tcustomFields,\r\n\t\tareaEventHistory,\r\n\t},\r\n\tplugins: [\r\n\t\t// @ref https://github.com/robinvdvleuten/vuex-persistedstate\r\n\t\tcreatePersistedState({\r\n\t\t\tpaths: [\r\n\t\t\t\t\"User\",\r\n\t\t\t\t\"featuresList\",\r\n\t\t\t\t\"timeZones\",\r\n\t\t\t\t\"fieldOps\",\r\n\t\t\t\t\"eventqueue.alarmQueueFooter\",\r\n\t\t\t\t\"eventqueue.hideMapFlag\",\r\n\t\t\t\t\"siteMonitor.hideMapFlag\",\r\n\t\t\t\t\"activeRegion\",\r\n\t\t\t\t\"siteMonitor.EventDetails\",\r\n\t\t\t\t\"signup\",\r\n\t\t\t\t\"mobile\",\r\n\t\t\t\t\"siteMonitor.deviceServerDetails\",\r\n\t\t\t\t\"siteMonitor.applianceServerDetails\",\r\n\t\t\t\t\"siteMonitor.eventOutcomes\",\r\n\t\t\t\t\"siteMonitorCameras.deviceControllerClips\",\r\n\t\t\t\t\"siteMonitorCameras.layoutIndex\",\r\n\t\t\t\t\"elevationLabels\",\r\n\t\t\t\t\"systemHealth.selectedFilter\",\r\n\t\t\t\t\"mapLayers.advancedFilters\",\r\n\t\t\t\t\"tenantSystemPrefs\",\r\n\t\t\t\t\"customFields\",\r\n\t\t\t\t\"areaEventHistory\",\r\n\t\t\t\t\"autoFeedAlarms\"\r\n\t\t\t]\r\n\t\t}),\r\n\t\tpostLoginAppBootstrap,\r\n\t\tcreateMutationsSharer({\r\n\t\t\tpredicate: [\r\n\t\t\t\t\"logout\",\r\n\t\t\t\t\"setFeaturesList\",\r\n\t\t\t\t\"setTenantSystemPrefs\",\r\n\t\t\t\t\"SetTimeZones\",\r\n\t\t\t\t\"setActiveRegion\",\r\n\t\t\t\t\"siteMonitor/setIsСontroller\",\r\n\t\t\t\t\"siteMonitor/setActiveMapItems\",\r\n\t\t\t\t\"siteMonitor/setActiveMapItemsRequired\",\r\n\t\t\t\t\"siteMonitor/setMapCircleCenter\",\r\n\t\t\t\t\"siteMonitor/setEventDetails\",\r\n\t\t\t\t\"siteMonitor/setSelectedEventRecord\",\r\n\t\t\t\t\"siteMonitor/setActivity\",\r\n\t\t\t\t\"siteMonitor/setEventOutcomes\",\r\n\t\t\t\t\"siteMonitorCameras/setRequiresEventDetails\",\r\n\t\t\t\t\"siteMonitorCameras/setAwaitingCamera\",\r\n\t\t\t\t\"siteMonitorCameras/setLinkRecord\",\r\n\t\t\t\t\"siteMonitorCameras/setCameraLink\",\r\n\t\t\t\t\"siteMonitorCameras/setPushContents\",\r\n\t\t\t\t\"siteMonitorCameras/setShownAuditClips\",\r\n\t\t\t\t\"siteMonitorCameras/setDeviceControllerClips\",\r\n\t\t\t\t\"siteMonitorCameras/setLayoutIndex\",\r\n\t\t\t\t\"tours/setAllTours\",\r\n\t\t\t\t\"tours/unsetTour\",\r\n\t\t\t\t\"fieldOps/setViewingAssetId\",\r\n\t\t\t\t\"fieldOps/addOrUpdateActiveSubscriber\",\r\n\t\t\t\t\"fieldOps/cleanUpSubscribers\",\r\n\t\t\t\t\"fieldOps/setTimer\",\r\n\t\t\t\t\"fieldOps/setLastPollCall\",\r\n\t\t\t\t\"mobile/setUserAssetStatus\",\r\n\t\t\t\t\"mobile/setUserAssetMapItem\",\r\n\t\t\t\t\"mobile/setDeviceLocation\",\r\n\t\t\t\t\"mobile/setEventShareItems\",\r\n\t\t\t\t\"mobile/setActiveEventShareItem\",\r\n\t\t\t\t\"mobile/setNavigationMode\",\r\n\t\t\t\t\"mobile/setNavigateToActiveAlarm\",\r\n\t\t\t\t\"mobile/setNavigationLocation\",\r\n\t\t\t\t\"mobile/setFocusedEventID\",\r\n\t\t\t\t\"mobile/setChatTab\",\r\n\t\t\t\t\"mobile/setChatOpen\",\r\n\t\t\t\t\"setElevationLabels\",\r\n\t\t\t\t\"systemHealth/setStatusFilter\",\r\n\t\t\t\t\"mapLayers/setAdvancedFilters\",\r\n\t\t\t\t\"customFields/setAreaCustomFields\",\r\n\t\t\t\t\"customFields/setContactCustomFields\",\r\n\t\t\t\t\"customFields/setAlarmCustomFields\",\r\n\t\t\t\t\"areaEventHistory/setIsPopoutModeEnabled\",\r\n\t\t\t\t\"areaEventHistory/setAreaEventHistory\",\r\n\t\t\t\t\"areaEventHistory/setFilter\",\r\n\t\t\t\t\"areaEventHistory/setTimeZone\",\r\n\t\t\t\t\"areaEventHistory/setTotalRecords\",\r\n\t\t\t\t\"autoFeedAlarms/toggleAutoFeedAlarms\"\r\n\t\t\t],\r\n\t\t\tsharingKey: \"vuex-mutations-sharer\",\r\n\t\t\tstorageKey: \"vuex-mutation-sharer-storage\",\r\n\t\t\texcludedPages: [\r\n\t\t\t\t\"eventsearch\"\r\n\t\t\t]\r\n\t\t})\r\n\t],\r\n\tstrict: debug\r\n});\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaCameras.vue?vue&type=style&index=0&id=56835fb2&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./email-holder.vue?vue&type=style&index=0&id=547faa0c&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduleModal.vue?vue&type=style&index=0&id=6d35477d&prod&lang=scss&scoped=true\"","import Component from \"vue-class-component\";\r\nimport { Mixins } from \"vue-property-decorator\";\r\nimport RegionalHandlerMixin from \"./RegionalHandlerMixin\";\r\nimport HideMapMixin from \"./HideMapMixin\";\r\nimport { get } from \"lodash\";\r\nimport { Getter, Mutation, namespace } from \"vuex-class\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport { EnhancedMapMode, SubscriberExpiry } from \"@/types/EnhancedSingleMapTypes\";\r\nimport { ActiveRegion, KeyboardShortcut, LegendKey } from \"@/store/types\";\r\n\r\nconst SiteMonitorState = namespace(\"siteMonitor\");\r\nconst UserContext = namespace(\"userContext\");\r\nconst FieldOpsStore = namespace(\"fieldOps\");\r\nconst Tasks = namespace(\"tasks\");\r\n\r\nconst expirationDateOffset: number = 5100;\r\n@Component\r\nexport default class SiteMonitorMixin extends Mixins(RegionalHandlerMixin, HideMapMixin) {\r\n\t@Getter private getActiveRegion: ActiveRegion;\r\n\t@Mutation private setLegendKeys: (legends: LegendKey[]) => void;\r\n\t@Mutation private setRoutingGroupsLegend: (show: boolean) => void;\r\n\t@Mutation private setShortcuts: (shortCuts: KeyboardShortcut[]) => void;\r\n\r\n\t@SiteMonitorState.Getter(\"getEventDetails\") public eventDetails: EventDetails;\r\n\t@SiteMonitorState.Mutation public setEventDetails: any;\r\n\t@SiteMonitorState.Mutation public setActivity;\r\n\r\n\t@UserContext.Action(\"startPolling\") private startPollingUserContext: () => Promise;\r\n\t@UserContext.Action(\"stopPolling\") private stopPollingUserContext: () => Promise;\r\n\r\n\t@FieldOpsStore.Action(\"addOrUpdateActiveSubscriber\") private subscribeToPoll: (subscriberExpiry: SubscriberExpiry) => void;\r\n\r\n\t@Tasks.Getter(\"getEventTasks\") private eventTasks: any; // @techdebt: no defined return value.\r\n\t@Tasks.Action private fetchEventTasks: (payload: { eventId: number }) => Promise;\r\n\r\n\t// Data variables\r\n\tpublic originalEventId: number;\r\n\tpublic showActions: boolean = true;\r\n\tpublic subscriberTimer: NodeJS.Timeout = null;\r\n\tpublic enhancedMapMode = EnhancedMapMode;\r\n\r\n\t// Getter and action for the flag for toggling the map.\r\n\tpublic mapScale: number = 0.5; // 0, 0.5, 0.75\r\n\r\n\t// Lifecycle methods\r\n\tpublic onCreate(): void {\r\n\t\t// Refresh proofing for region based requests\r\n\t\t// Our api.service can have its baseUrl updated to point at different servers\r\n\t\t// however when the api is initially loaded the baseUrl will be set based\r\n\t\t// on the server the user logged in with. Since we store the active region in the\r\n\t\t// vuex store, which is refresh proof, we update the active region with the value\r\n\t\t// from the store, which will update the api base url.\r\n\t\tthis.updateActiveRegion(this.getActiveRegion);\r\n\r\n\t\t// Set our shortcuts for the site monitor\r\n\t\tthis.setShortcuts([\r\n\t\t\t{ keys: \"Shift+E\", action: \"End event\" },\r\n\t\t\t{ keys: \"Shift+L\", action: \"Leave event\" },\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+N\",\r\n\t\t\t\taction: \"Incident Report\",\r\n\t\t\t\tfeatureFlag: \"Alarms.SiteMonitor.SitRep\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+D\",\r\n\t\t\t\taction: \"Dispatch\",\r\n\t\t\t\tfeatureFlag: \"Alarms.Dispatch\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+R\",\r\n\t\t\t\taction: \"Raise\",\r\n\t\t\t\tfeatureFlag: \"Alarms.SiteMonitor.Raise\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+S\",\r\n\t\t\t\taction: \"Share Event\",\r\n\t\t\t\tfeatureFlag: \"Alarms.SiteMonitor.EventSharing\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+I\",\r\n\t\t\t\taction: \"Area information\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+M\",\r\n\t\t\t\taction: \"Open Media Matrix\",\r\n\t\t\t\tfeatureFlag: \"Alarms.MediaMatrix\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+T\",\r\n\t\t\t\taction: \"Email Notification\",\r\n\t\t\t\tfeatureFlag: \"Alarms.SiteMonitor.Email\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+G\",\r\n\t\t\t\taction: \"Flag event for review\",\r\n\t\t\t\tfeatureFlag: \"Alarms.SiteMonitor.EventFlagging\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+C\",\r\n\t\t\t\taction: \"Acknowledge all events\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+A\",\r\n\t\t\t\taction: \"Open action tab and focus on uncompleted action task\",\r\n\t\t\t}\r\n\t\t]);\r\n\r\n\t\tthis.setLegendKeys([{ icon: \"\", details: \"None to show\" }]);\r\n\r\n\t\tthis.setRoutingGroupsLegend(false);\r\n\r\n\t\tthis.originalEventId = this.eventId;\r\n\t}\r\n\r\n\tpublic async mounted(): Promise {\r\n\t\t// Get our EventTasks (actions)\r\n\t\tawait this.fetchEventTasks({ eventId: this.eventId });\r\n\r\n\t\t// If we want to hide the actions pane if there are no actions\r\n\t\t// And there are no actions\r\n\t\tif(this.actionPlansCollapseIfEmpty &&\r\n\t\t\t(!this.eventTasks || this.eventTasks.length === 0)){\r\n\t\t\tthis.showActions = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If we are here, then we want to show the actions pane\r\n\t\tthis.showActions = true;\r\n\r\n\t\tawait this.startPollingUserContext();\r\n\r\n\t\tif(this.mapEnabled){\r\n\t\t\tthis.subscriberTimer = setInterval(async () => {\r\n\t\t\t\tthis.subscribeToPoll({ subscriber: \"SiteMonitor\", expiry: Date.now() + expirationDateOffset });\r\n\t\t\t}, 5000);\r\n\t\t}\r\n\r\n\t\tthis.$el.addEventListener(\"mousedown\", (_e: MouseEvent) => { this.setActivity(); })\r\n\t\tthis.$el.addEventListener(\"keydown\", (e:KeyboardEvent) => {\r\n\t\t\tif(e.key === \"Tab\"){\r\n\t\t\t\tthis.setActivity();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic beforeDestroy(): void {\r\n\t\tthis.$el.removeEventListener(\"mousedown\", (_e: MouseEvent) => { this.setActivity(); })\r\n\t\tthis.$el.removeEventListener(\"keydown\", (e:KeyboardEvent) => {\r\n\t\t\tif(e.key === \"Tab\"){\r\n\t\t\t\tthis.setActivity();\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.startPollingUserContext();\r\n\t\tif(this.subscriberTimer){\r\n\t\t\tclearInterval(this.subscriberTimer);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic destroyed(): void {\r\n\t\tthis.$store.dispatch(\"closeEvent\");\r\n\t\t// If we have changed to a different event don't clear the details.\r\n\t\tif (!!this.eventDetails && this.eventDetails.eventID === this.originalEventId) {\r\n\t\t\tthis.setEventDetails(null);\r\n\t\t}\r\n\r\n\t\tthis.resetRegion();\r\n\t}\r\n\r\n\t// Custom Methods\r\n\tpublic async focusActions(): Promise {\r\n\t\tif(this.showActions)\r\n\t\t\treturn;\r\n\r\n\t\tthis.showActions = true;\r\n\t\tawait this.$nextTick();\r\n\t\tif (this.$refs.taskContainer) {\r\n\t\t\t(this.$refs.taskContainer as any).focus();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic scaleMapComponent(scaleUp: boolean): void {\r\n\t\tif(scaleUp && this.mapScale < 0.75){\r\n\t\t\tthis.mapScale += 0.25;\r\n\t\t} else if(!scaleUp && this.mapScale > 0){\r\n\t\t\tthis.mapScale -= 0.25;\r\n\t\t}\r\n\t}\r\n\r\n\t// Getters\r\n\t/**\r\n\t * Returns the event ID passed in through our route as a number\r\n\t */\r\n\tpublic get eventId(): number | null {\r\n\t\treturn parseInt(this.$route.params.eventId) || null;\r\n\t}\r\n\r\n\tpublic get eventRecordType(): string {\r\n\t\treturn get(this.featuresList, [\"Integration\", \"CCure\", \"UI\"]) ? \"event-records-ccure\" : \"event-records\";\r\n\t}\r\n\r\n\tpublic get mapEnabled(): boolean {\r\n\t\tvar siteMonitorMap = get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"Map\"]);\r\n\t\tvar hideMaps = !this.isHideMapsEnabled\r\n\t\treturn siteMonitorMap && hideMaps;\r\n\t}\r\n\r\n\tpublic get newAreaNotesEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"AreaNotes\"]) && get(this.featuresList, [\"AreaNotes\", \"Icons\"]);\r\n\t}\r\n\r\n\tpublic get areaNotesEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"AreaNotes\"]) && !get(this.featuresList, [\"AreaNotes\", \"Icons\"]);\r\n\t}\r\n\r\n\tpublic get actionPlansEnabled(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Alarms\", \"ActionPlans\"]);\r\n\t}\r\n\r\n\tpublic get actionPlansCollapseIfEmpty(): boolean {\r\n\t\treturn get(this.featuresList, [\"Actions\", \"OnEmptyStartCollapsed\"]);\r\n\t}\r\n\r\n\t// Feature flag check for toggle maps.\r\n\tpublic get isToggleMapEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"Maps\", \"ToggleSiteMonitor\"]);\r\n\t}\r\n\r\n\tpublic get isStatusInfoBarEnabled(): boolean {\r\n\t\treturn this.getFeature([\"SystemInfoBar\"]);\r\n\t}\r\n\r\n\tpublic get isSituationalAwarenessEnabled(): boolean {\r\n\t\treturn this.getFeature([\"SituationalAwareness\"]);\r\n\t}\r\n\r\n\tpublic get eventRecordComponentScale(): string {\r\n\t\tif(!this.mapEnabled)\r\n\t\t\treturn \"event-records-container-full-height\";\r\n\r\n\t\tswitch(this.mapScale) {\r\n\t\t\tcase 0:\r\n\t\t\t\treturn \"event-records-container-full-height\";\r\n\t\t\tcase 0.25:\r\n\t\t\t\treturn \"event-records-container-medium-height\";\r\n\t\t\tcase 0.5:\r\n\t\t\t\treturn \"event-records-container\";\r\n\t\t\tcase 0.75:\r\n\t\t\t\treturn \"event-records-container-small-height\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"event-records-container\";\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get mapComponentScale(): string {\r\n\t\tif (!this.mapEnabled) {\r\n\t\t\treturn \"enhanced-map-container-zero-height\";\r\n\t\t}\r\n\r\n\t\tswitch(this.mapScale) {\r\n\t\t\tcase 0:\r\n\t\t\t\treturn \"enhanced-map-container-zero-height\";\r\n\t\t\tcase 0.25:\r\n\t\t\t\treturn \"enhanced-map-container-small-height\";\r\n\t\t\tcase 0.5:\r\n\t\t\t\treturn \"enhanced-map-container\";\r\n\t\t\tcase 0.75:\r\n\t\t\t\treturn \"enhanced-map-container-tall-height\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"enhanced-map-container\";\r\n\t\t}\r\n\t}\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column\",class:{'reduced-table-size' : _vm.getIsFormShown}},[_c('transition',{attrs:{\"name\":\"disarm-type-transition\",\"enter-active-class\":\"animated-fast slideInRight\",\"leave-active-class\":\"animated-fast fadeOut\"}},[(_vm.deletingNote)?_c('b-alert',{staticClass:\"delete-alert mb-0\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col delete-confirm-message\"},[_vm._v(\" Are you sure you wish to delete this note? \")]),_c('div',{staticClass:\"col-1\"},[_c('button',{staticClass:\"btn btn-primary fa fa-check\",attrs:{\"title\":\"Delete note\",\"data-cy\":\"confirm-delete-note-button\"},on:{\"click\":function($event){return _vm.deleteNote(_vm.deletingNote)}}})]),_c('div',{staticClass:\"col-1\"},[(_vm.hasPermissionsToEditNotes())?_c('button',{staticClass:\"btn btn-secondary fa fa-times\",attrs:{\"title\":\"Cancel\",\"data-cy\":\"cancel-delete-note-button\"},on:{\"click\":function($event){_vm.deletingNote = null}}}):_vm._e()])])]):_vm._e()],1),_c('generic-table',{staticClass:\"flex-grow-1\",attrs:{\"term\":'Area Note',\"tableClass\":null,\"tableBodyClass\":null,\"dataList\":_vm.areaNotes,\"columns\":_vm.columns,\"editPermissions\":['canViewSiteSetup'],\"hideAdd\":true,\"onDelete\":_vm.startDeleteAreaNote,\"onModalOpen\":_vm.onModalOpen,\"useModal\":false,\"useSlotActions\":true},scopedSlots:_vm._u([{key:\"custom-button\",fn:function(){return [_c('div',{staticClass:\"w-150\"})]},proxy:true},{key:\"created\",fn:function(slotProps){return [_c('p',[_vm._v(_vm._s(_vm.displayDateFromString(slotProps.row.created)))])]}},{key:\"startFrom\",fn:function(slotProps){return [_c('p',[_vm._v(_vm._s(_vm.displayDateFromString(slotProps.row.startFrom)))])]}},{key:\"endAt\",fn:function(slotProps){return [_c('p',[_vm._v(_vm._s(_vm.displayDateFromString(slotProps.row.endAt)))])]}},{key:\"actions\",fn:function(slotProps){return [(_vm.hasPermissionsToEditNotes())?_c('div',[_c('b-button-group',{staticClass:\"ml-4\",attrs:{\"size\":\"sm\",\"data-cy\":\"edit-delete-buttons\"}},[_c('b-button',{staticClass:\"action-button\",on:{\"click\":function($event){return _vm.startEditingNote(slotProps.row)}}},[_c('i',{staticClass:\"far fa-edit\"})]),_c('b-button',{staticClass:\"action-button\",on:{\"click\":function($event){return _vm.startDeleteAreaNote(slotProps.row)}}},[_c('i',{staticClass:\"far fa-trash\"})])],1)],1):_vm._e()]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column\",attrs:{\"data-cy\":\"notes-modal\"}},[_c('transition',{attrs:{\"name\":\"disarm-type-transition\",\"enter-active-class\":\"animated-fast slideInRight\",\"leave-active-class\":\"animated-fast fadeOut\"}},[_c('b-alert',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.areaNoteIdToDelete === _vm.areaNote.noteId),expression:\"areaNoteIdToDelete === areaNote.noteId\"}],staticClass:\"container delete-alert mb-0\",attrs:{\"show\":\"\",\"variant\":\"danger\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col delete-confirm-message\"},[_vm._v(\" Are you sure you wish to delete this note? \")]),_c('div',{staticClass:\"col-1\"},[_c('button',{staticClass:\"btn btn-primary fa fa-check\",attrs:{\"title\":\"Delete note\",\"data-cy\":\"confirm-delete-note-button\"},on:{\"click\":function($event){return _vm.deleteNote(_vm.areaNoteIdToDelete)}}})]),_c('div',{staticClass:\"col-1\"},[_c('button',{staticClass:\"btn btn-secondary fa fa-times\",attrs:{\"title\":\"Cancel\",\"data-cy\":\"cancel-delete-note-button\"},on:{\"click\":function($event){_vm.areaNoteIdToDelete = null}}})])])])],1),_c('div',{staticClass:\"mt-3 ml-3 mr-3\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('p',[_vm._v(_vm._s(_vm.convertDateToLocalDateTimeString(_vm.areaNote.created)))])]),_c('div',{staticClass:\"col\"},[_c('p',[_vm._v(_vm._s(_vm.areaNote.userName))])]),_c('div',{staticClass:\"col\"},[(_vm.areaNote.startFrom)?_c('p',[_vm._v(_vm._s(_vm.convertDateToLocalDateTimeString(_vm.areaNote.startFrom)))]):_vm._e(),(!_vm.areaNote.startFrom)?_c('p',[_vm._v(\"-\")]):_vm._e()]),_c('div',{staticClass:\"col\"},[(_vm.areaNote.endAt)?_c('p',[_vm._v(_vm._s(_vm.convertDateToLocalDateTimeString(_vm.areaNote.endAt)))]):_vm._e(),(!_vm.areaNote.endAt)?_c('p',[_vm._v(\"-\")]):_vm._e()]),(_vm.hasPermissionsToEditNotes())?_c('div',{staticClass:\"col-1\"},[(_vm.areaNoteIdToDelete !== _vm.areaNote.noteId)?_c('i',{staticClass:\"fa fa-trash clickable-row p-r-5\",attrs:{\"title\":\"Delete note\",\"data-cy\":\"delete-note-button\"},on:{\"click\":function($event){_vm.areaNoteIdToDelete = _vm.areaNote.noteId}}}):_vm._e(),(!_vm.getAreaNoteToEdit || _vm.getAreaNoteToEdit.noteId !== _vm.areaNote.noteId)?_c('i',{staticClass:\"fas fa-edit clickable-row\",attrs:{\"title\":\"Edit note\",\"data-cy\":\"edit-note-button\"},on:{\"click\":function($event){return _vm.editNote(_vm.areaNote)}}}):_vm._e()]):_vm._e()]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col p-0\"},[_c('div',{staticClass:\"note-entry-container\"},[_c('span',{staticClass:\"note-entry\"},[_vm._v(_vm._s(_vm.areaNote.entry))])])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Prop, Emit } from \"vue-property-decorator\";\nimport { Getter, namespace } from \"vuex-class\";\nimport { AreaNote } from \"@/store/area-notes/types\";\nimport { UserPermissions } from \"@/store/types\";\n\nconst AreaNotes = namespace(\"areaNotes\");\n\n@Component\nexport default class AreaNotesTableItem extends Vue {\n\t@Prop({ default: {\n\t\tentry: \"\",\n\t\tgroupId: 0,\n\t\tuserName: \"\",\n\t\tcreated: \"\",\n\t\trequiresAcknowledgement: false,\n\t\tstartFrom: \"\",\n\t\tendAt: \"\"\n\t}})\n\tpublic areaNote: AreaNote;\n\n\t@Getter getPermissions: UserPermissions;\n\t@AreaNotes.Action deleteAreaNote: any;\n\t@AreaNotes.Action startEditingNote: any;\n\t@AreaNotes.Getter getAreaNoteToEdit: AreaNote;\n\n\tprivate areaNoteIdToDelete: number | null = null;\n\n\tprivate deleteNote() {\n\t\tthis.deleteAreaNote(this.areaNoteIdToDelete);\n\t\tthis.areaNoteIdToDelete = null;\n\t}\n\n\tprivate editNote(note: AreaNote) {\n\t\tthis.startEditingNote(note);\n\t}\n\n\tprivate hasPermissionsToEditNotes() {\n\t\treturn this.getPermissions.canViewSiteSetup;\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesTableItem.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesTableItem.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaNotesTableItem.vue?vue&type=template&id=423537d9&scoped=true\"\nimport script from \"./AreaNotesTableItem.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaNotesTableItem.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaNotesTableItem.vue?vue&type=style&index=0&id=423537d9&prod&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 \"423537d9\",\n null\n \n)\n\nexport default component.exports","\n\timport { Component, Vue, Prop } from \"vue-property-decorator\";\n\timport GenericTable, { TableHeader } from \"../table/generic-table.vue\";\n\timport { Getter, namespace, State, Action } from \"vuex-class\";\n\timport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\n\timport { AreaNote } from \"@/store/area-notes/types\";\n\timport AreaNotesTableItem from \"@/components/area-notes/AreaNotesTableItem.vue\";\n\timport { UserPermissions, TimeZone } from \"@/store/types\";\n\timport { DateTime, Settings } from \"luxon\";\n\n\tconst AreaNotes = namespace(\"areaNotes\");\n\tconst AreaNotesModule = namespace(\"areaNotes\");\n\n\tSettings.defaultLocale = \"en\";\n\n\t@Component({\n\t\tcomponents: {\n\t\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\n\t\t\t\"area-notes-table-item\": AreaNotesTableItem,\n\t\t\t\"generic-table\": GenericTable\n\t\t}\n\t})\n\texport default class AreaNotesTable extends Vue {\n\t\t@AreaNotes.Action public fetchAreaNotesForGroup: any;\n\t\t@AreaNotes.Getter getCurrentGroupId: number;\n\t\t@AreaNotes.Getter getIsFormShown: number;\n\t\t@AreaNotes.Getter(\"getAreaNotes\") areaNotes: AreaNote[];\n\t\t@AreaNotes.Action startEditingNote: any;\n\n\t\t@AreaNotesModule.Action public deleteAreaNote: (noteId: number) => Promise;\n\n\t\t@Getter getPermissions: UserPermissions;\n\n\t\t// For delete confirmation\n\t\tprivate deletingNote: AreaNote | null = null;\n\n\t\tprivate columns: TableHeader[] = [\n\t\t{\n\t\t\ttitle: \"Note\",\n\t\t\tkey: \"entry\",\n\t\t\torder: 1,\n\t\t\tsortOrder: 0,\n\t\t\tsortOrderReversed: false,\n\t\t\tdescription: \"The note entry\",\n\t\t\tsearchable: true,\n\t\t\tvisible: true,\n\t\t\tdataType: \"title\",\n\t\t\tisTermLabel: true,\n\t\t\tsortable: true,\n\t\t\tisSortedByDefault: true,\n\t\t},\n\t\t{\n\t\t\ttitle: \"Created\",\n\t\t\tkey: \"created\",\n\t\t\torder: 2,\n\t\t\tsortOrder: 0,\n\t\t\tsortOrderReversed: false,\n\t\t\tdescription: \"The time the note was created\",\n\t\t\tsearchable: true,\n\t\t\tvisible: true,\n\t\t\tdataType: \"date\",\n\t\t\tisTermLabel: true,\n\t\t\tsortable: true,\n\t\t\tisSortedByDefault: true,\n\t\t\tuseCustomCell: true\n\t\t},\n\t\t{\n\t\t\ttitle: \"Created By\",\n\t\t\tkey: \"userName\",\n\t\t\torder: 3,\n\t\t\tsortOrder: 0,\n\t\t\tsortOrderReversed: false,\n\t\t\tdescription: \"The user who created the note\",\n\t\t\tsearchable: true,\n\t\t\tvisible: true,\n\t\t\tdataType: \"string\",\n\t\t\tisTermLabel: true,\n\t\t\tsortable: true,\n\t\t\tisSortedByDefault: true,\n\t\t},\n\t\t{\n\t\t\ttitle: \"Starts\",\n\t\t\tkey: \"startFrom\",\n\t\t\torder: 4,\n\t\t\tsortOrder: 0,\n\t\t\tsortOrderReversed: false,\n\t\t\tdescription: \"The start date and time of the note\",\n\t\t\tsearchable: true,\n\t\t\tvisible: true,\n\t\t\tdataType: \"date\",\n\t\t\tisTermLabel: true,\n\t\t\tsortable: true,\n\t\t\tisSortedByDefault: true,\n\t\t\tuseCustomCell: true\n\t\t},\n\t\t{\n\t\t\ttitle: \"Ends\",\n\t\t\tkey: \"endAt\",\n\t\t\torder: 5,\n\t\t\tsortOrder: 0,\n\t\t\tsortOrderReversed: false,\n\t\t\tdescription: \"The end date and time of the note\",\n\t\t\tsearchable: true,\n\t\t\tvisible: true,\n\t\t\tdataType: \"date\",\n\t\t\tisTermLabel: true,\n\t\t\tsortable: true,\n\t\t\tisSortedByDefault: true,\n\t\t\tuseCustomCell: true\n\t\t},\n\t];\n\n\t\tprivate isFetchingNotes: boolean = true;\n\n\t\tpublic async mounted(): Promise {\n\t\t\tthis.fetchAreaNotesForGroup(this.getCurrentGroupId)\n\t\t\t\t.finally(() => {\n\t\t\t\t\tthis.isFetchingNotes = false;\n\t\t\t\t});\n\t\t}\n\n\t\tprivate async onModalOpen(note: AreaNote): Promise {\n\t\t\tthis.startEditingNote(note);\n \t}\n\n\t\tprivate startDeleteAreaNote(note: AreaNote): void {\n\t\t\tthis.deletingNote = note;\n\t\t}\n\n\t\tprivate async deleteNote(note: AreaNote): Promise {\n\t\t\tawait this.deleteAreaNote(note.noteId);\n\t\t\tthis.deletingNote = null;\n\t\t}\n\n\t\tprivate hasPermissionsToEditNotes(): boolean {\n\t\t\treturn this.getPermissions.canViewSiteSetup;\n\t\t}\n\n\t\tprivate displayDateFromString(date: string): string {\n\t\t\tif (!date) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\tconst utcOffset = \"Z\";\n\t\t\tconst dateTimeFormat = \"MM/dd/yyyy hh:mm:ss a\";\n\n\t\t\tif (typeof(date) === \"string\") {\n\t\t\t\t// for areas in UTC timezone there is a 'Z' at the end of the DateTime string.\n\t\t\t\t// remove the offset from the string.\n\t\t\t\tif (date.endsWith(utcOffset)) {\n\t\t\t\t\tdate = date.replace(utcOffset, \"\");\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn DateTime.fromJSDate(new Date(date)).toFormat(dateTimeFormat);\n\t\t}\n\t}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaNotesTable.vue?vue&type=template&id=7886192a&scoped=true\"\nimport script from \"./AreaNotesTable.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaNotesTable.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaNotesTable.vue?vue&type=style&index=0&id=7886192a&prod&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 \"7886192a\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceController.vue?vue&type=style&index=0&id=5b5a1f1d&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"size\":\"lg\",\"title\":_vm.getCurrentGroupTitle,\"centered\":\"\",\"role\":\"dialog\",\"ok-only\":\"\",\"visible\":_vm.isShown},on:{\"hide\":_vm.closeModal}},[_c('area-notes-form'),_c('area-notes-table')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport { Getter, namespace } from \"vuex-class\";\nimport AreaNotesForm from \"@/components/area-notes/AreaNotesForm.vue\";\nimport AreaNotesTable from \"@/components/area-notes/AreaNotesTable.vue\";\n\nconst AreaNotes = namespace(\"areaNotes\");\nconst SiteMonitor = namespace(\"siteMonitor\");\n\n@Component({\n\tcomponents: {\n\t\t\"area-notes-form\": AreaNotesForm,\n\t\t\"area-notes-table\": AreaNotesTable\n\t}\n})\nexport default class AreaNotesModal extends Vue {\n\t@SiteMonitor.Getter(\"areaNotesVisible\") isShown: boolean;\n\t@AreaNotes.Getter getCurrentGroupTitle: string;\n\t@AreaNotes.Action closeModal: any;\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaNotesModal.vue?vue&type=template&id=4f8ca668&scoped=true\"\nimport script from \"./AreaNotesModal.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaNotesModal.vue?vue&type=script&lang=ts\"\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 \"4f8ca668\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=2cdc6828&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointHistory.vue?vue&type=style&index=0&id=3a1e5242&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdditionalFields.vue?vue&type=style&index=0&id=2c00473e&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InvolvedParties.vue?vue&type=style&index=0&id=b4c440c6&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecurityInfo.vue?vue&type=style&index=0&id=6338eff3&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplateModal.vue?vue&type=style&index=0&id=25fed21f&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactRoles.vue?vue&type=style&index=0&id=515d1dc2&prod&lang=scss&scoped=true\"","export function renderDistance(distance: number, isImperial: boolean) {\r\n\tif (distance === undefined || distance == null || isNaN(distance)) {\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tif (isImperial) {\r\n\t\tif (distance > 5280) {\r\n\t\t\treturn (distance / 5280).toFixed(2) + \" miles\";\r\n\t\t}\r\n\r\n\t\treturn distance.toFixed(2) + \" ft\";\r\n\t} else {\r\n\t\tif (distance > 1000) {\r\n\t\t\treturn (distance / 1000).toFixed(2) + \" km\";\r\n\t\t}\r\n\r\n\t\treturn distance.toFixed(2) + \" m\";\r\n\t}\r\n}\r\n\r\nexport function truncateString(\r\n\tinput: string,\r\n\tlength: number = 30,\r\n\toverflowText: string = \"...\"\r\n) {\r\n\tif (!input || input.length <= length) {\r\n\t\treturn input;\r\n\t}\r\n\tconst truncatedString = input.substring(0, length - overflowText.length);\r\n\treturn truncatedString + overflowText;\r\n}\r\n\r\n/** Function to parse the task data within the action setup list display */\r\nexport function parseTaskText(task) {\r\n\tif (!task) return \"\";\r\n\r\n\tvar parsedData;\r\n\r\n\ttry{\r\n\t\tparsedData = JSON.parse(task.taskData);\r\n\t} catch {\r\n\t\tparsedData = task.taskData;\r\n\t}\r\n\r\n\ttry {\r\n\t\tswitch (task.taskTypeID) {\r\n\t\t\tcase 6:\r\n\t\t\t\treturn `Title: ${parsedData.title}`;\r\n\t\t\tcase 7:\r\n\t\t\t\treturn `${parsedData.choiceDescription}: ${parsedData.choiceOptions.length} options, render type: ${parsedData.selectedChoice}`;\r\n\t\t\tcase 8:\r\n\t\t\t\treturn `Call ${parsedData.name}${parsedData.value.role ? ` : ${parsedData.value.role}` : \"\"}`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn task.taskText;\r\n\t\t}\r\n\t} catch (err) {\r\n\t\tconsole.error(`Could not parse text for task ID ${task.taskID}: `, err);\r\n\r\n\t\t// *Always* return something, at least\r\n\t\treturn task.taskText || \"Unknown\";\r\n\t}\r\n}\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingModalLauncher.vue?vue&type=style&index=0&id=761fb1d2&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichTextEditor.vue?vue&type=style&index=0&id=ce0e07e6&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventRecords.vue?vue&type=style&index=1&id=1b7d5e52&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopLeftSidebar.vue?vue&type=style&index=0&id=2f712a49&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"genericTable\",class:_vm.tableClass,attrs:{\"id\":\"genericTable\",\"data-cy\":\"generic-table\"}},[_c('generic-update-modal',{ref:\"GenericUpdateModal\",attrs:{\"onDelete\":_vm.onDelete,\"onAddNew\":_vm.onAddNew,\"onSave\":_vm.onSave,\"term\":_vm.term,\"title\":_vm.modalTitle,\"modalItems\":_vm.modalItems,\"dataList\":_vm.dataList,\"deletePermissions\":_vm.deletePermissions,\"saveActionMessages\":_vm.saveActionMessages,\"saveActionErrors\":_vm.saveActionErrors,\"isSaveConfirmationEnabled\":_vm.isSaveConfirmationEnabled,\"closeOnSave\":_vm.closeOnSave,\"idColumn\":_vm.idColumn,\"refreshAllowed\":this.refreshAllowed,\"clearOnClose\":this.clearOnClose},on:{\"closed\":_vm.modalClosed},scopedSlots:_vm._u([{key:\"additional-footer\",fn:function(slotProps){return [_vm._t(\"additional-footer\",null,{\"item\":slotProps.item})]}}],null,true)}),_c('div',{class:_vm.tableBodyClass},[(_vm.isShowSearch)?_c('div',{staticClass:\"d-flex top-bar\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.tableSearch),expression:\"tableSearch\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"table-search\",\"placeholder\":\"Search...\",\"data-cy\":\"search-input\"},domProps:{\"value\":(_vm.tableSearch)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.tableSearch=$event.target.value}}}),(_vm.isAddVisible)?_c('button',{staticClass:\"btn btn-primary add-btn\",on:{\"click\":function($event){return _vm.openModel(null, false, true)}}},[_vm._v(\"Add \"+_vm._s(_vm.term)+\" \")]):_vm._e(),_vm._t(\"custom-button\")],2):_vm._e(),(_vm.totalAvailableRows !== 0 && _vm.showPaginationControls)?_c('div',{staticClass:\"results-per-page-container\",attrs:{\"data-cy\":\"resultsPerPage\"}},[_c('label',{attrs:{\"for\":\"resultsPerPageInput\"}},[_vm._v(\" Results per page: \")]),_c('b-form-input',{attrs:{\"id\":\"resultsPerPageInput\",\"type\":\"text\",\"formatter\":_vm.removeNonDigitsFromString,\"size\":\"sm\",\"max\":\"200\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.debounceUpdateSearchFilter($event)}},model:{value:(_vm.resultsPerPageUpdated),callback:function ($$v) {_vm.resultsPerPageUpdated=$$v},expression:\"resultsPerPageUpdated\"}}),_c('b-button',{attrs:{\"variant\":\"primary\",\"size\":\"sm\"},on:{\"click\":function($event){return _vm.debounceUpdateSearchFilter()}}},[_vm._v(\"Update\")])],1):_vm._e(),_c('scrollbar',{staticClass:\"flex-grow-1 flex-shrink-1 generic-table-scroll\",class:_vm.scrollbarClass,on:{\"ps-y-reach-end\":_vm.onScrollBottom}},[_c('div',{staticClass:\"table-fixed-head\"},[_c('table',{staticClass:\"table table-striped table-hover table-sortable generic-table\"},[_c('thead',[_c('tr',[_vm._l((_vm.visibleColumns()),function(column){return _c('th',{key:column.sort,attrs:{\"role\":\"columnheader\",\"aria-sort\":!column.sortable ? false : _vm.sortByColumn !== (column.sortKey ? column.sortKey : column.key) ? 'none' : _vm.sortDirection},on:{\"click\":function($event){return _vm.updateSorting(column)}}},[_c('span',{staticClass:\"column-title\",attrs:{\"title\":column.description}},[_vm._v(\" \"+_vm._s(column.title)+\" \")]),(column.sortable)?_c('i',{staticClass:\"fad pt-1 pr-2\",class:_vm.calculateSortingIcon(column),staticStyle:{\"float\":\"right\",\"margin\":\"auto\",\"font-size\":\"11pt\"}}):_vm._e()])}),(_vm.isShowAction)?_c('th',{staticClass:\"actions\"},[_c('i',{staticClass:\"hover-icon fas fa-filter\",class:_vm.isManagedExternally ? '' : 'pr-2',on:{\"click\":function($event){_vm.showFilter = !_vm.showFilter}}})]):_vm._e()],2)]),_c('tbody',[(!_vm.isLoading && (_vm.getRenderData == null || _vm.getRenderData.length === 0))?_c('tr',{attrs:{\"id\":\"featureDisabledContainer\"}},[_vm._v(\"No \"+_vm._s(_vm.term)+\"s found \"),(_vm.tableSearch)?_c('span',[_vm._v(\"matching your search query.\")]):_vm._e()]):_c('b-overlay',{attrs:{\"show\":_vm.isLoading,\"variant\":\"dark\",\"no-wrap\":\"\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('div',{staticClass:\"text-center\",staticStyle:{\"font-size\":\"18px\"}},[_c('span',[_vm._v(\" Loading... \"),_c('i',{staticClass:\"fa fa-spin fa-spinner\"})])])]},proxy:true}])}),_vm._l((_vm.getRenderData),function(row,rowIndex){return _c('tr',{key:row.index,staticStyle:{\"width\":\"100%\"}},[_vm._l((_vm.filterByColumn(row)),function(data){return _c('td',{key:data.index,style:((\"\" + (data.width) + (data.style)))},[(data.useCustomCell)?_vm._t(data.key,null,{\"row\":row,\"index\":rowIndex,\"search\":_vm.tableSearch}):(data.type == 'list')?[_vm._v(_vm._s(_vm.formatList(data.value)))]:(data.type == 'telephone')?[_c('a',{attrs:{\"href\":(\"tel: \" + (data.value))}},[_c('text-highlight',{attrs:{\"queries\":_vm.tableSearch,\"highlightStyle\":(_vm.style = 'padding:0;border-radius: 0')}},[_vm._v(_vm._s(data.value)+\" \")])],1)]:(data.type == 'email')?[_c('a',{attrs:{\"href\":(\"mailto: \" + (data.value)),\"target\":\"_blank\"}},[_c('text-highlight',{attrs:{\"id\":((data.key) + \".\" + rowIndex),\"queries\":_vm.tableSearch,\"highlightStyle\":(_vm.style = 'padding:0;border-radius: 0')}},[_vm._v(_vm._s(data.value)+\" \")])],1),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.columns.find(function (c) { return c.key === data.key; }).addQuickCopy),expression:\"columns.find(c => c.key === data.key).addQuickCopy\"}],staticClass:\"fas fa-copy hover-icon ml-1 p-1\",attrs:{\"id\":(\"copy-to-clipboard-target-\" + (data.key) + \".\" + rowIndex),\"title\":\"Copy value to clipboard\"},on:{\"click\":function($event){return _vm.copyRowValueToClipboard(((data.key) + \".\" + rowIndex))}}}),_c('b-tooltip',{attrs:{\"target\":(\"copy-to-clipboard-target-\" + (data.key) + \".\" + rowIndex),\"title\":\"Copied!\",\"triggers\":\"manual\",\"placement\":\"top\",\"custom-class\":\"copiedTooltip\",\"no-fade\":true,\"show\":_vm.toolTipIdToShow === ((data.key) + \".\" + rowIndex)}})]:(data.type == 'checkbox')?[_c('div',{staticStyle:{\"text-align\":\"center\"}},[(data.value === true)?_c('i',{staticClass:\"fas fa-check align-items-center\"}):_c('i',{staticClass:\"fas fa-times align-content-center\"})])]:[_c('text-highlight',{attrs:{\"id\":((data.key) + \".\" + rowIndex),\"queries\":_vm.tableSearch,\"highlightStyle\":(_vm.style = 'padding:0;border-radius: 0')}},[_vm._v(_vm._s(data.value)+\" \")]),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.columns.find(function (c) { return c.key === data.key; }).addQuickCopy),expression:\"columns.find(c => c.key === data.key).addQuickCopy\"}],staticClass:\"fas fa-copy hover-icon ml-1 p-1\",attrs:{\"id\":(\"copy-to-clipboard-target-\" + (data.key) + \".\" + rowIndex),\"title\":\"Copy value to clipboard\"},on:{\"click\":function($event){return _vm.copyRowValueToClipboard(((data.key) + \".\" + rowIndex))}}}),_c('b-tooltip',{attrs:{\"target\":(\"copy-to-clipboard-target-\" + (data.key) + \".\" + rowIndex),\"title\":\"Copied!\",\"triggers\":\"manual\",\"placement\":\"top\",\"custom-class\":\"copiedTooltip\",\"no-fade\":true,\"show\":_vm.toolTipIdToShow === ((data.key) + \".\" + rowIndex)}})]],2)}),(_vm.useModal || _vm.useSlotActions)?_c('td',{staticClass:\"actions\"},[(_vm.useModal)?_c('div',[(!_vm.checkPermissions(row))?_c('i',{staticClass:\"hover-icon fas fa-eye pr-2\",attrs:{\"title\":(\"View \" + _vm.term)},on:{\"click\":function($event){return _vm.openModel(row, true)}}}):_c('div',[_vm._t(\"customActions\",null,{\"slotProps\":row}),(!_vm.isManagedExternally && !row.hideDelete)?_c('i',{staticClass:\"fas fa-trash hover-icon p-r-10\",attrs:{\"title\":(\"Delete \" + _vm.term)},on:{\"click\":function($event){return _vm.onDeleteRow(row)}}}):_vm._e(),(_vm.showEditButton)?_c('i',{staticClass:\"fas fa-edit hover-icon pr-2\",attrs:{\"title\":(\"Edit \" + _vm.term)},on:{\"click\":function($event){return _vm.openModel(row)}}}):_vm._e()],2)]):(_vm.useSlotActions)?_c('div',[_vm._t(\"actions\",null,{\"row\":row,\"index\":rowIndex,\"search\":_vm.tableSearch})],2):_vm._e()]):_vm._e()],2)})],2)])])])],1),(_vm.totalAvailableRows > 0 && _vm.showPaginationControls)?_c('b-pagination',{attrs:{\"total-rows\":_vm.totalAvailableRows,\"per-page\":_vm.resultsPerPage,\"align\":\"center\",\"data-cy\":\"pagination\",\"disabled\":_vm.totalAvailableRows < _vm.resultsPerPage},on:{\"input\":function($event){return _vm.debounceUpdateSearchFilter()}},model:{value:(_vm.selectedPage),callback:function ($$v) {_vm.selectedPage=$$v},expression:\"selectedPage\"}}):_vm._e(),(_vm.isRenderUpdating && _vm.getRenderData != null)?_c('b-list-group-item',{staticClass:\"loading-icon\"},[_c('div',{staticClass:\"fa\"},[_c('i',{staticClass:\"fas fa-spinner fa-spin\"})])]):_vm._e(),_c('b-modal',{attrs:{\"id\":\"filterTableModal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\"},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('div',[_c('h4',[_vm._v(\"Columns\")])])]},proxy:true},{key:\"modal-footer\",fn:function(){return [_c('a',{staticClass:\"btn btn-primary pull-right ksConfirm\",on:{\"click\":function($event){_vm.showFilter = false}}},[_vm._v(\"Done\")])]},proxy:true}]),model:{value:(_vm.showFilter),callback:function ($$v) {_vm.showFilter=$$v},expression:\"showFilter\"}},[_vm._l((_vm.filteredColumns),function(column){return _c('div',{key:column.key},[_c('b-form-group',{staticClass:\"custom-control custom-checkbox\"},[_c('span',{staticClass:\"left-filter-span\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(column.visible),expression:\"column.visible\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":column.key},domProps:{\"checked\":Array.isArray(column.visible)?_vm._i(column.visible,null)>-1:(column.visible)},on:{\"input\":function($event){return _vm.$emit('column-filter-updated', column)},\"change\":function($event){var $$a=column.visible,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(column, \"visible\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(column, \"visible\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(column, \"visible\", $$c)}}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":column.key}},[_vm._v(\"Show \"+_vm._s(column.title))])]),_c('span',{staticClass:\"right-filter-span\",attrs:{\"hidden\":\"\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(column.searchable),expression:\"column.searchable\"}],staticClass:\"custom-control-input\",attrs:{\"disabled\":!column.visible,\"type\":\"checkbox\",\"id\":'searchable' + column.key},domProps:{\"checked\":Array.isArray(column.searchable)?_vm._i(column.searchable,null)>-1:(column.searchable)},on:{\"change\":function($event){var $$a=column.searchable,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(column, \"searchable\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(column, \"searchable\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(column, \"searchable\", $$c)}}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"disabled\":!column.visible,\"for\":(\"searchable \" + (column.key))}},[_vm._v(\"Include in search \"+_vm._s(column.title))])])])],1)})],2),_c('b-modal',{attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"header-class\":\"delete-confirm-modal\"},on:{\"hidden\":_vm.closeDeleteModal},model:{value:(_vm.isDeleteConfirmDialogShown),callback:function ($$v) {_vm.isDeleteConfirmDialogShown=$$v},expression:\"isDeleteConfirmDialogShown\"}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header\"},[_c('i',{staticClass:\"fas fa-trash hover-icon\",attrs:{\"title\":(\"Delete \" + _vm.term + \" Icon\")}}),_c('h4',[_vm._v(\"Delete \"+_vm._s(_vm.term.toLowerCase()))])])]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"ksConfirm\",attrs:{\"variant\":\"danger\",\"disabled\":_vm.isSafeDeleteEnabled && _vm.safeDeleteInput !== (\"delete \" + (_vm.rowToDelete[_vm.getKeyColumn]))},on:{\"click\":function($event){return _vm.confirmDelete(_vm.rowToDelete)}}},[_vm._v(\" Delete \")]),_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.cancelDelete}},[_vm._v(\" Cancel \")])],1),_c('div',[_c('h5',{staticClass:\"default-error-message\"},[_vm._v(\" Are you sure you want to delete the \"+_vm._s(_vm.term.toLowerCase())+\" \\\"\"),_c('strong',[_vm._v(_vm._s(_vm.rowToDelete[_vm.getKeyColumn]))]),_vm._v(\"\\\"? \")]),(_vm.deleteActionMessageResult && _vm.deleteActionMessageResult.length > 0)?_c('div',{staticClass:\"delete-action-context\"},[_c('h5',[_vm._v(\"This action will:\")]),_c('ul',_vm._l((_vm.deleteActionMessageResult),function(deleteMessage,index){return _c('li',{key:index},[_vm._v(\" \"+_vm._s(typeof deleteMessage === \"function\" ? deleteMessage(_vm.rowToDelete) : deleteMessage)+\" \")])}),0)]):_vm._e(),_c('div',{staticClass:\"delete-action-alternatively-option\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.deleteMessageAlternativeText)+\" \")])]),(_vm.isSafeDeleteEnabled)?_c('div',{staticClass:\"safe-delete-container\"},[_c('label',{staticClass:\"row\",attrs:{\"for\":\"safe-delete-input\"}},[_vm._v(\"To confirm this action, please type \\\"\"),_c('strong',[_vm._v(\"delete \"+_vm._s(_vm.rowToDelete[_vm.getKeyColumn]))]),_vm._v(\"\\\":\")]),_c('b-input',{staticClass:\"row\",attrs:{\"id\":\"safe-delete-input\",\"placeholder\":(\"Type \" + (_vm.term.toLowerCase()) + \" \" + _vm.getKeyColumn)},model:{value:(_vm.safeDeleteInput),callback:function ($$v) {_vm.safeDeleteInput=$$v},expression:\"safeDeleteInput\"}})],1):_vm._e()])],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { Getter } from \"vuex-class\";\r\nimport TextHighlight from \"vue-text-highlight\";\r\nimport vSelect from \"vue-select\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport GenericUpdateModal, { ModalItem } from \"./generic-update-modal.vue\";\r\nimport { debounce } from \"lodash\";\r\nimport { PaginatedSearchQueryParams } from \"@/store/types\";\r\nimport { GenericTableConstants } from \"@/types/Constants\";\r\n\r\nexport interface TableHeader {\r\n\ttitle: string;\r\n\tkey: string;\r\n\torder: number;\r\n\tsortOrder: number;\r\n\tsortOrderReversed: boolean;\r\n\tdescription?: string;\r\n\tsearchable?: boolean;\r\n\tvisible?: boolean;\r\n\tdataType?: string;\r\n\tuseCustomCell?: boolean;\r\n\twidth?: string;\r\n\tisTermLabel?: boolean;\r\n\taddQuickCopy?: boolean;\r\n\tstyle?: string;\r\n\thideFilterOption?: boolean;\r\n\tsortable?: boolean;\r\n\tsortKey?: string;\r\n\tisSortedByDefault?: boolean;\r\n\tdisable?: boolean;\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"text-highlight\": TextHighlight,\r\n\t\t\"generic-update-modal\": GenericUpdateModal,\r\n\t\tscrollbar: VuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class GenericTable extends Vue {\r\n\t$refs!: {\r\n\t\tgenericTable: any;\r\n\t\tGenericUpdateModal: GenericUpdateModal;\r\n\t};\r\n\r\n\t@Prop() public columns!: TableHeader[];\r\n\t@Prop() public modalItems!: ModalItem[];\r\n\r\n\t@Prop() public editPermissions!: any[];\r\n\t@Prop() public deletePermissions!: any[];\r\n\t@Prop() public addPermissions!: any[];\r\n\t@Prop({ type: Boolean, default: true }) isShowSearch: boolean;\r\n\t@Prop({ type: Boolean, default: true }) isShowAction: boolean;\r\n\t@Prop({ type: Boolean, default: false }) isValidateTable: boolean;\r\n\r\n\t@Prop() public csvOption?: any;\r\n\r\n\t// When unset(undefined) - generic-table will proceed with existing checks\r\n\t// for add/edit controls.\r\n\t// When set, visibility of those controls will solely depends on readonly prop value\r\n\t@Prop() public readonly: boolean | undefined;\r\n\r\n\t@Prop({ type: String }) public canEditProperty;\r\n\t@Prop({ default: [] }) public dataList: any[];\r\n\t@Prop({ default: \"\" }) public term!: string;\r\n\t@Prop() public modalTitle!: string;\r\n\t@Prop({ type: Boolean, default: true }) useModal: boolean;\r\n\t@Prop({ type: Boolean, default: false }) useSlotActions: boolean;\r\n\t@Prop({ type: Boolean, default: false }) isSafeDeleteEnabled: boolean;\r\n\t@Prop({ type: Boolean, default: true }) showEditButton: boolean;\r\n\t@Prop() deleteActionMessages: any;\r\n\t@Prop({ type: String, default: \"\" }) deleteMessageAlternativeText!: string;\r\n\t@Prop({ type: Boolean, default: false }) isSaveConfirmationEnabled: boolean;\r\n\t@Prop() saveActionMessages: any;\r\n\t@Prop() saveActionErrors: any;\r\n\r\n\t@Prop({ type: Object, default: () => ({}) }) progress: any;\r\n\t@Prop() isProgress: boolean;\r\n\r\n\t@Prop() public onSave;\r\n\t@Prop() public onDelete;\r\n\t@Prop() public onAddNew;\r\n\t@Prop() public onModalOpen;\r\n\r\n\t@Prop({ type: Boolean, default: false}) public refreshAllowed: boolean;\r\n\t@Prop({ type: Boolean, default: false}) public clearOnClose: boolean;\r\n\r\n\t@Prop({ default: \"\" }) public idColumn!: string;\r\n\t@Prop({ type: Number, default: 0 }) totalAvailableRows: number;\r\n\t@Prop({ type: Boolean, default: false }) isLoading: boolean = false;\r\n\t@Prop({ type: Boolean, default: true }) closeOnSave: boolean = true;\r\n\t@Prop({ type: Boolean, default: false }) resetPaginationOnRowCountChange: boolean;\r\n\t@Prop({ type: Boolean, default: true }) showPaginationControls: boolean;\r\n\t@Prop({ type: String, default: \"card card-secondary table-container overflow-hidden\" })\r\n\tprivate tableClass: string;\r\n\r\n\t@Prop({ type: String, default: \"card-body d-flex flex-column overflow-hidden\" })\r\n\tprivate tableBodyClass: string;\r\n\r\n\t@Prop({ type: String, default: \"\" })\r\n\tprivate scrollbarClass: string;\r\n\r\n\t@Getter getPermissions: any;\r\n\r\n\t@Prop({ type: Boolean, default: false }) private isManagedExternally: boolean;\r\n\t@Prop({ type: Boolean, default: false }) private hideAdd: boolean;\r\n\r\n\tprivate renderData: any[] = null;\r\n\tprivate showFilter: boolean = false;\r\n\tprivate tableSearch: string = \"\";\r\n\tprivate safeDeleteInput = \"\";\r\n\tprivate deleteActionMessageResult = [];\r\n\r\n\t@Watch(\"totalAvailableRows\")\r\n\tprivate resetPagination(): void {\r\n\t\tif (!this.resetPaginationOnRowCountChange) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.resultsPerPage = \"25\";\r\n\t\tthis.resultsPerPageUpdated = \"25\";\r\n\t\tthis.selectedPage = 1;\r\n\t\tthis.tableSearch = \"\";\r\n\t\tthis.updateSearchFilter();\r\n\t}\r\n\r\n\tprivate mounted() {\r\n\t\tthis.updateRenderData(this.dataList);\r\n\r\n\t\tconst defaultSortColumn = this.columns.find(c => c.isSortedByDefault);\r\n\t\tif (defaultSortColumn) {\r\n\t\t\tthis.sortByColumn = defaultSortColumn.sortKey ? defaultSortColumn.sortKey : defaultSortColumn.key;\r\n\t\t\tthis.sortDirection = GenericTableConstants.SortDirectionAscending;\r\n\t\t}\r\n\r\n\t\tthis.debounceUpdateSearchFilter = debounce(() => {\r\n\t\t\tthis.updateSearchFilter();\r\n\t\t}, 250);\r\n\t\tthis.safeDeleteInput = \"\";\r\n\t}\r\n\r\n\tprivate defaultRenderCount: number = 50;\r\n\tprivate renderCount: number = this.defaultRenderCount;\r\n\r\n\tprivate isRenderUpdating: boolean = false;\r\n\r\n\tprivate rowToDelete: any = {};\r\n\tprivate isDeleteConfirmDialogShown: boolean = false;\r\n\r\n\tprivate resultsPerPage: string = \"25\";\r\n\tprivate resultsPerPageUpdated: string = \"25\";\r\n\tprivate selectedPage: number = 1;\r\n\tprivate debounceUpdateSearchFilter;\r\n\r\n\tprivate sortByColumn?: string = null;\r\n\tprivate sortDirection?: string = null;\r\n\r\n\t// Filter the data by the columns that are requested\r\n\tprivate filterByColumn(row: any[]) {\r\n\t\tlet renderList = [];\r\n\t\tfor (let key in row) {\r\n\t\t\tlet filteredColumns = this.columns.filter(function(el) {\r\n\t\t\t\treturn el.key == key && el.visible && !el.disable;\r\n\t\t\t});\r\n\t\t\tif (filteredColumns.length > 0) {\r\n\t\t\t\tconst width = filteredColumns[0].width;\r\n\t\t\t\trenderList.push({\r\n\t\t\t\t\tvalue: row[key],\r\n\t\t\t\t\tkey: key,\r\n\t\t\t\t\ttype: filteredColumns[0].dataType,\r\n\t\t\t\t\tuseCustomCell: filteredColumns[0].useCustomCell,\r\n\t\t\t\t\tsortOrder: filteredColumns[0].order,\r\n\t\t\t\t\twidth: width ? `width:${width};` : \"\",\r\n\t\t\t\t\tstyle: filteredColumns[0].style || \"\"\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn renderList.sort((a, b) => a.sortOrder - b.sortOrder);\r\n\t}\r\n\r\n\tprivate updateSearchFilter() {\r\n\t\tif (!this.sortDirection) {\r\n\t\t\tthis.sortDirection = GenericTableConstants.SortDirectionDescending;\r\n\t\t}\r\n\t\tif (this.resultsPerPageUpdated !== this.resultsPerPage) {\r\n\t\t\tthis.selectedPage = 1;\r\n\t\t}\r\n\t\tthis.resultsPerPage = this.resultsPerPageUpdated;\r\n\t\tconst searchFilterEventPayload: PaginatedSearchQueryParams = {\r\n\t\t\tsearchTerm: this.tableSearch,\r\n\t\t\tpage: this.selectedPage,\r\n\t\t\tpageSize: parseInt(this.resultsPerPage),\r\n\t\t\tsortBy: this.sortByColumn,\r\n\t\t\tsortDesc: this.sortDirection === GenericTableConstants.SortDirectionDescending\r\n\t\t};\r\n\t\tthis.$emit(\"search-filter-updated\", searchFilterEventPayload);\r\n\t}\r\n\r\n\tprivate checkPermissions(row) {\r\n\t\tif (this.readonly) {\r\n\t\t\treturn !this.readonly;\r\n\t\t}\r\n\r\n\t\tif (row.readOnly) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.canEditProperty) {\r\n\t\t\treturn row[this.canEditProperty];\r\n\t\t}\r\n\r\n\t\t// if required permission is blank, we dont need a specific permission\r\n\t\tif (this.editPermissions == null) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tlet userHasPermission;\r\n\r\n\t\t// if there is a permissions requirement against the row itself\r\n\t\tif (row.permissions) {\r\n\t\t\t// use the current rows permissions\r\n\t\t\tuserHasPermission = this.editPermissions.some(r => Object.keys(row.permissions).includes(r));\r\n\t\t} else {\r\n\t\t\t// use the users permissions to see if we have one that matches\r\n\t\t\tuserHasPermission = this.editPermissions.some(r => Object.keys(this.getPermissions).includes(r));\r\n\t\t}\r\n\r\n\t\treturn userHasPermission;\r\n\t}\r\n\r\n\t// Return the list of columns that are tagged as visible\r\n\tprivate visibleColumns() {\r\n\t\treturn this.columns\r\n\t\t\t.filter(function(el) {\r\n\t\t\t\treturn el.visible && !el.disable;\r\n\t\t\t})\r\n\t\t\t.sort(function(a, b) {\r\n\t\t\t\treturn a.order - b.order;\r\n\t\t\t});\r\n\t}\r\n\r\n\t@Watch(\"dataList\", { deep: true })\r\n\tprivate updateRenderData(value: any) {\r\n\t\tthis.searchTable(this.tableSearch, undefined);\r\n\t}\r\n\r\n\tprivate async openModel(row, readOnly?, addNew?) {\r\n\t\tif (this.onModalOpen) {\r\n\t\t\tlet returnValue = await this.onModalOpen(row);\r\n\t\t\tif (returnValue != null) {\r\n\t\t\t\trow = returnValue;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.$refs.GenericUpdateModal.showUpdateDialog(row, readOnly, addNew);\r\n\t}\r\n\r\n\tprivate formatList(data) {\r\n\t\tlet output = \"\";\r\n\t\tfor (let value in data) {\r\n\t\t\tif (output != \"\") {\r\n\t\t\t\toutput += \", \";\r\n\t\t\t}\r\n\t\t\toutput += data[value];\r\n\t\t}\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprivate get getRenderData() {\r\n\t\tif (this.renderData == null) {\r\n\t\t\treturn this.renderData;\r\n\t\t}\r\n\r\n\t\treturn this.renderData.slice(0, this.renderCount);\r\n\t}\r\n\r\n\t@Watch(\"tableSearch\")\r\n\t// Filter the searchable columns by search string\r\n\tprivate async searchTable(searchString, previousSearchString) {\r\n\t\tthis.renderCount = this.defaultRenderCount;\r\n\r\n\t\tif (previousSearchString !== undefined && searchString !== previousSearchString) {\r\n\t\t\tthis.selectedPage = 1;\r\n\t\t\tawait this.debounceUpdateSearchFilter();\r\n\t\t}\r\n\r\n\t\tconst isAsyncSearching = this.totalAvailableRows !== 0;\r\n\t\tif (searchString === \"\" || isAsyncSearching) {\r\n\t\t\t// Nothing to search. Show the whole results\r\n\t\t\tthis.renderData = this.dataList.filter(function(el) {\r\n\t\t\t\tif (el.hidden == true) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// Get all the columns that are searchable\r\n\t\t\tlet searchableColumns = this.columns.filter(function(columnEl) {\r\n\t\t\t\treturn columnEl.searchable == true && columnEl.visible && !columnEl.disable;\r\n\t\t\t});\r\n\t\t\t// Search the data that is searchable\r\n\t\t\tthis.renderData = this.dataList.filter(function(dataEl) {\r\n\t\t\t\tfor (let index in searchableColumns) {\r\n\t\t\t\t\tlet text = typeof searchString === \"string\" ? searchString : searchString.target.value; // keyboard event\r\n\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tsearchString &&\r\n\t\t\t\t\t\tdataEl[searchableColumns[index].key] &&\r\n\t\t\t\t\t\tdataEl[searchableColumns[index].key]\r\n\t\t\t\t\t\t\t.toString()\r\n\t\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t\t.includes(text.toLowerCase())\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onScrollBottom() {\r\n\t\tif (!this.isRenderUpdating && this.renderData != null && this.renderCount < this.renderData.length) {\r\n\t\t\tthis.isRenderUpdating = true;\r\n\t\t\tsetTimeout(\r\n\t\t\t\tfunction() {\r\n\t\t\t\t\tthis.renderCount += 25;\r\n\t\t\t\t\tif (this.renderCount > this.renderData.length) {\r\n\t\t\t\t\t\tthis.renderCount = this.renderData.length;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.isRenderUpdating = false;\r\n\t\t\t\t}.bind(this),\r\n\t\t\t\t500\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isAddVisible() {\r\n\t\tif (this.hideAdd || this.isManagedExternally) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.readonly !== undefined) {\r\n\t\t\treturn !this.readonly;\r\n\t\t}\r\n\t\treturn this.getPermissions.canEditSiteSetup && this.useModal;\r\n\t}\r\n\r\n\tprivate async onDeleteRow(row) {\r\n\t\tif (this.deleteActionMessages) {\r\n\t\t\tthis.deleteActionMessageResult = typeof this.deleteActionMessages === \"function\" ? await this.deleteActionMessages(row) : this.deleteActionMessages;\r\n\t\t}\r\n\t\tthis.isDeleteConfirmDialogShown = true;\r\n\t\tthis.rowToDelete = row;\r\n\t}\r\n\r\n\tprivate confirmDelete(row) {\r\n\t\tthis.isDeleteConfirmDialogShown = false;\r\n\t\tthis.onDelete(row);\r\n\t}\r\n\r\n\tprivate get getKeyColumn() {\r\n\t\tconst keyColumn = this.columns.find(c => c.isTermLabel == true);\r\n\t\tif (!keyColumn) {\r\n\t\t\tconsole.error(\"Error no table column term label set!\");\r\n\t\t\treturn \"\";\r\n\t\t} else {\r\n\t\t\treturn keyColumn.key;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate cancelDelete() {\r\n\t\tthis.isDeleteConfirmDialogShown = false;\r\n\t\tthis.safeDeleteInput = \"\";\r\n\t}\r\n\r\n\tprivate toolTipIdToShow = \"\";\r\n\r\n\tprivate copyRowValueToClipboard(idToCopy: string) {\r\n\t\tlet node = document.getElementById(idToCopy);\r\n\t\tlet range = document.createRange();\r\n\t\trange.selectNodeContents(node);\r\n\t\twindow.getSelection().removeAllRanges();\r\n\t\twindow.getSelection().addRange(range);\r\n\t\tdocument.execCommand(\"copy\");\r\n\t\tthis.toolTipIdToShow = idToCopy;\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.toolTipIdToShow = \"\";\r\n\t\t}, 2000);\r\n\t}\r\n\r\n\tprivate closeDeleteModal() {\r\n\t\tthis.safeDeleteInput = \"\";\r\n\t}\r\n\r\n\tprivate get filteredColumns() {\r\n\t\treturn this.columns.filter(({ hideFilterOption, disable }) => !hideFilterOption && !disable);\r\n\t}\r\n\r\n\tprivate calculateSortingIcon(column: TableHeader): string {\r\n return this.sortByColumn !== (column.sortKey ? column.sortKey : column.key) ? 'fa-sort' : this.sortDirection === GenericTableConstants.SortDirectionAscending ? 'fa-sort-up' : 'fa-sort-down'\r\n }\r\n\r\n\tprivate removeNonDigitsFromString(value: string): string {\r\n\t\tif (!value)\r\n\t\t\treturn \"\";\r\n\r\n\t\tconst digitFind = value.match(/\\d+/g);\r\n\t\tif (!digitFind)\r\n\t\t\treturn \"\";\r\n\r\n\t\tif (parseInt(digitFind.join(\"\")) > 200) {\r\n\t\t\tthis.resultsPerPageUpdated = \"200\";\r\n\t\t}\r\n\r\n\t\treturn digitFind.join(\"\");\r\n\t}\r\n\r\n\t// 1 column sorting\r\n\tprivate updateSorting(column: TableHeader): void {\r\n\t\tif (!column.sortable) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst sortByColumn = column.sortKey ? column.sortKey : column.key;\r\n\t\tif (!this.sortByColumn) {\r\n\t\t\tthis.sortByColumn = sortByColumn;\r\n\t\t\tthis.sortDirection = GenericTableConstants.SortDirectionAscending;\r\n\t\t\tthis.updateSearchFilter();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.sortByColumn === sortByColumn) {\r\n\t\t\tthis.sortDirection = this.sortDirection === GenericTableConstants.SortDirectionAscending ? GenericTableConstants.SortDirectionDescending : GenericTableConstants.SortDirectionAscending;\r\n\t\t} else {\r\n\t\t\tthis.sortDirection = this.sortDirection = GenericTableConstants.SortDirectionAscending;\r\n\t\t}\r\n\t\tthis.sortByColumn = sortByColumn;\r\n\r\n\t\tthis.updateSearchFilter();\r\n\t}\r\n\r\n\tpublic updateNewEntry(entry: any, keys: string[]): void {\r\n\t\tthis.$refs.GenericUpdateModal.updateNewEntry(entry, keys);\r\n\t}\r\n\r\n\tpublic modalClosed(): void {\r\n\t\tthis.$emit(\"genericUpdateModalClosed\");\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./generic-table.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./generic-table.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./generic-table.vue?vue&type=template&id=b01a454c&scoped=true\"\nimport script from \"./generic-table.vue?vue&type=script&lang=ts\"\nexport * from \"./generic-table.vue?vue&type=script&lang=ts\"\nimport style0 from \"./generic-table.vue?vue&type=style&index=0&id=b01a454c&prod&lang=scss&scoped=true\"\nimport style1 from \"./generic-table.vue?vue&type=style&index=1&id=b01a454c&prod&lang=css\"\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 \"b01a454c\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FeatureSetup.vue?vue&type=style&index=0&id=15f5d39f&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.getIsFormShown && _vm.hasPermissionsToEditNotes)?_c('b-button',{staticClass:\"btn btn-primary float-right add-area-note\",attrs:{\"variant\":\"primary\",\"data-cy\":\"show-add-note-form\"},on:{\"click\":function($event){return _vm.setIsFormShown(true)}}},[_vm._v(\" Add area note \")]):_vm._e(),(_vm.getIsFormShown)?_c('b-form',{staticClass:\"m-b-10\",attrs:{\"data-cy\":\"add-note-form\"},on:{\"submit\":_vm.onSave}},[_c('b-form-group',{attrs:{\"id\":\"newAreaNoteForm\"}},[_c('div',{staticClass:\"m-b-10\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model.trim\",value:(_vm.newAreaNote.entry),expression:\"newAreaNote.entry\",modifiers:{\"trim\":true}}],class:['form-control custom-textarea p-5', _vm.$v.newAreaNote.entry.$error ? 'invalid' : ''],attrs:{\"id\":\"newAreaNoteText\",\"placeholder\":\"Add New Note\",\"rows\":3,\"max-rows\":6,\"maxlength\":_vm.maxNoteLength,\"data-cy\":\"new-area-note-entry\"},domProps:{\"value\":(_vm.newAreaNote.entry)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newAreaNote, \"entry\", $event.target.value.trim())},\"blur\":function($event){return _vm.$forceUpdate()}}}),(!_vm.isAreaNoteValid)?_c('div',{staticClass:\"error text-danger pt-1\",attrs:{\"data-cy\":\"div-area-note-entry-warning\"}},[_vm._v(\" Note must be 1 to \"+_vm._s(this.maxNoteLength)+\" characters. \")]):_vm._e(),_c('span',{attrs:{\"data-cy\":\"note-length-check\"}},[_vm._v(\"(\"+_vm._s(_vm.newAreaNote.entry.length)+\" / \"+_vm._s(_vm.maxNoteLength)+\")\")])]),_c('div',{staticClass:\"container p-0\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"},[_c('label',{attrs:{\"for\":\"newAreaNoteStartDate\"}},[_vm._v(\" Start Date / Time (Optional): \")])]),_c('div',{staticClass:\"col-6\"},[_c('label',{attrs:{\"for\":\"newAreaNoteEndDate\"}},[_vm._v(\" End Date / Time\"+_vm._s(_vm.isEndTimeOptional() ? \" (Optional):\" : \":\")+\" \")])])]),_c('div',{staticClass:\"row m-b-10\"},[_c('div',{staticClass:\"col-5 input-group\",attrs:{\"id\":\"newAreaNoteStartDate\"}},[_c('date-picker',{attrs:{\"calendar-class\":\"calendar\",\"placeholder\":\"MM/DD/YYYY\",\"typeable\":true,\"bootstrap-styling\":true,\"monday-first\":true,\"format\":_vm.calendarDateFormatter,\"append-to-body\":true,\"data-cy\":\"new-area-note-start-date\"},model:{value:(_vm.newAreaNote.startFrom),callback:function ($$v) {_vm.$set(_vm.newAreaNote, \"startFrom\", $$v)},expression:\"newAreaNote.startFrom\"}}),_c('span',{staticClass:\"time-seperator p-l-5 p-r-5\"},[_vm._v(\"/\")]),_c('b-form-input',{attrs:{\"id\":\"new-area-note-end-time\",\"type\":\"time\",\"data-cy\":\"new-area-note-start-time\"},model:{value:(_vm.newAreaNoteStartTime),callback:function ($$v) {_vm.newAreaNoteStartTime=$$v},expression:\"newAreaNoteStartTime\"}})],1),_c('div',{staticClass:\"col-1 p-t-10 p-l-0\"},[_c('i',{staticClass:\"fa fa-times clickable-row\",attrs:{\"data-cy\":\"clear-start-date\"},on:{\"click\":_vm.clearStartDate}})]),_c('div',{staticClass:\"col-5 input-group\",attrs:{\"id\":\"newAreaNoteEndDate\"}},[_c('date-picker',{attrs:{\"calendar-class\":\"calendar\",\"placeholder\":\"MM/DD/YYYY\",\"typeable\":true,\"bootstrap-styling\":true,\"monday-first\":true,\"format\":_vm.calendarDateFormatter,\"append-to-body\":true,\"input-class\":'form-control ' + (_vm.$v.newAreaNote.endAt.$error ? 'invalid' : ''),\"disabled-dates\":_vm.getDisabledEndDates(),\"data-cy\":\"new-area-note-end-date\"},model:{value:(_vm.newAreaNote.endAt),callback:function ($$v) {_vm.$set(_vm.newAreaNote, \"endAt\", $$v)},expression:\"newAreaNote.endAt\"}}),_c('span',{staticClass:\"time-seperator p-l-5 p-r-5\"},[_vm._v(\"/\")]),_c('b-form-input',{class:[_vm.$v.newAreaNoteEndTime.$error ? 'invalid' : ''],attrs:{\"type\":\"time\",\"data-cy\":\"new-area-note-end-time\"},model:{value:(_vm.newAreaNoteEndTime),callback:function ($$v) {_vm.newAreaNoteEndTime=$$v},expression:\"newAreaNoteEndTime\"}})],1),_c('div',{staticClass:\"col-1 p-t-10 p-l-0\"},[_c('i',{staticClass:\"fa fa-times clickable-row\",attrs:{\"data-cy\":\"clear-end-date\"},on:{\"click\":_vm.clearEndDate}})])]),(_vm.$v.$error)?_c('div',{staticClass:\"row fadeInDown animated text-danger\"},[_c('div',{staticClass:\"col-12\"},[(!_vm.$v.newAreaNote.endAt.required)?_c('p',{staticClass:\"m-b-0\"},[_vm._v(\" End date is required when a start date is provided \")]):_vm._e(),(_vm.$v.newAreaNote.endAt.required && !_vm.$v.newAreaNote.endAt.minTime)?_c('p',{staticClass:\"m-b-0\"},[_vm._v(\" End date must be after start date \")]):_vm._e()])]):_vm._e()])]),(_vm.getIsFormShown)?_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-dismiss\":\"modal\",\"data-cy\":\"note-close-button\"},on:{\"click\":function($event){return _vm.onCancel()}}},[_vm._v(\" Cancel \")]):_vm._e(),(_vm.getIsFormShown)?_c('b-button',{staticClass:\"m-l-10\",class:_vm.$v.$error ? 'disabled' : '',attrs:{\"variant\":\"primary\",\"data-dismiss\":\"modal\",\"data-cy\":\"note-save-button\",\"disabled\":_vm.$v.$error},on:{\"click\":_vm.onSave}},[(_vm.isSaving)?_c('span',[_vm._v(\" Saving note... \"),_c('i',{staticClass:\"fa fas fa-spinner fa-spin\"})]):_vm._e(),(!_vm.isSaving)?_c('span',[_vm._v(\"Save\")]):_vm._e()]):_vm._e()],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\nimport moment from \"moment\";\r\nimport { DateTime, Settings } from \"luxon\";\r\nimport DatePicker from \"@sureview/vuejs-datepicker\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required, minLength, maxLength } from \"vuelidate/lib/validators\";\r\n\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport { AreaNote } from \"@/store/area-notes/types\";\r\n\r\nconst AreaNotes = namespace(\"areaNotes\");\r\n\r\nSettings.defaultLocale = \"en\";\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tcomponents: {\r\n\t\t\"date-picker\": DatePicker\r\n\t},\r\n\tvalidations: {\r\n\t\tnewAreaNote: {\r\n\t\t\tentry: {\r\n\t\t\t\trequired: function(value) {\r\n\t\t\t\t\treturn this.isAreaNoteValid;\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\tendAt: {\r\n\t\t\t\trequired: function(value) {\r\n\t\t\t\t\tif (this.isEndTimeOptional()) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn value !== null;\r\n\t\t\t\t},\r\n\t\t\t\tminTime: function(value) {\r\n\t\t\t\t\tif (this.isEndTimeOptional() || value == \"\") {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn moment(this.newAreaNote.endAt).isAfter(this.newAreaNote.startFrom);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\tnewAreaNoteEndTime: {\r\n\t\t\tminTime: function(value) {\r\n\t\t\t\tif (this.isEndTimeOptional()) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\treturn moment(this.newAreaNote.endAt).isAfter(this.newAreaNote.startFrom);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})\r\nexport default class AreaNotesForm extends Vue {\r\n\t@Getter(\"getUserName\")\r\n\tpublic currentUserName!: string;\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\t@AreaNotes.Action public addAreaNote: any;\r\n\t@AreaNotes.Action public cancelEditingNote: any;\r\n\t@AreaNotes.Action public editAreaNote: any;\r\n\t@AreaNotes.Getter public getCurrentGroupId: number;\r\n\t@AreaNotes.Getter public getCurrentGroupTitle: string;\r\n\t@AreaNotes.Getter public getIsFormShown: boolean;\r\n\t@AreaNotes.Getter public getAreaNoteToEdit: AreaNote;\r\n\t@AreaNotes.Getter public getIsEditing: boolean;\r\n\t@AreaNotes.Mutation public setIsFormShown: any;\r\n\r\n\tpublic mounted(): void {\r\n\t\tthis.defaultAreaNote.groupId = this.getCurrentGroupId;\r\n\r\n\t\tif (this.getIsEditing) {\r\n\t\t\tthis.newAreaNoteStartTime = this.getTimeFromDate(this.getAreaNoteToEdit.startFrom);\r\n\t\t\tthis.newAreaNoteEndTime = this.getTimeFromDate(this.getAreaNoteToEdit.endAt);\r\n\t\t\tthis.newAreaNote = { ...this.getAreaNoteToEdit };\r\n\t\t}\r\n\t\tthis.newAreaNote = { ...this.defaultAreaNote };\r\n\t}\r\n\r\n\t@Watch(\"getAreaNoteToEdit\")\r\n\tprivate getAreaNoteToEditUpdated(newVal, oldVal): void {\r\n\t\tif (newVal !== null) {\r\n\t\t\tthis.newAreaNoteStartTime = this.getTimeFromDate(newVal.startFrom);\r\n\t\t\tthis.newAreaNoteEndTime = this.getTimeFromDate(newVal.endAt);\r\n\t\t\tthis.newAreaNote = { ...newVal };\r\n\t\t}\r\n\t}\r\n\r\n\tprivate defaultAreaNote: AreaNote = {\r\n\t\tgroupId: this.getCurrentGroupId,\r\n\t\tentry: \"\",\r\n\t\trequiresAcknowledgement: false,\r\n\t\tnoteType: \"normal\",\r\n\t\tstartFrom: null,\r\n\t\tendAt: null,\r\n\t\tcreated: \"\",\r\n\t\tuserName: this.currentUserName\r\n\t};\r\n\tprivate newAreaNote: AreaNote = { ...this.defaultAreaNote };\r\n\r\n\tprivate defaultTime = \"00:00\";\r\n\tprivate newAreaNoteStartTime: string = this.defaultTime;\r\n\tprivate newAreaNoteEndTime: string = this.defaultTime;\r\n\tprivate maxNoteLength: number = 500;\r\n\tprivate isSaving = false;\r\n\r\n\tprivate async onSave(): Promise {\r\n\t\tthis.isSaving = true;\r\n\t\tif (this.isNewAreaNoteValid()) {\r\n\t\t\tif (this.getIsEditing) {\r\n\t\t\t\tthis.editAreaNote(this.newAreaNote)\r\n\t\t\t\t\t.then(wasSuccess => {\r\n\t\t\t\t\t\tif (wasSuccess) {\r\n\t\t\t\t\t\t\tthis.resetForm();\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\t\t\ttitle: \"Failed to edit note\",\r\n\t\t\t\t\t\t\t\ttext: \"Please drop the guard inside an existing patrol zone\"\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tthis.isSaving = false;\r\n\t\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.addAreaNote(this.newAreaNote)\r\n\t\t\t\t\t.then(newNote => {\r\n\t\t\t\t\t\t// If a note has been returned, adding the note was a success\r\n\t\t\t\t\t\tif (newNote) {\r\n\t\t\t\t\t\t\tthis.resetForm();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.finally(() => {\r\n\t\t\t\t\t\tthis.isSaving = false;\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onCancel(): void {\r\n\t\tif (this.getIsEditing) {\r\n\t\t\tthis.cancelEditingNote();\r\n\t\t} else {\r\n\t\t\tthis.setIsFormShown(false);\r\n\t\t}\r\n\t\tthis.resetForm();\r\n\t}\r\n\r\n\tprivate isNewAreaNoteValid(): boolean {\r\n\t\tthis.$v.$touch();\r\n\t\treturn !this.$v.$error;\r\n\t}\r\n\r\n\tprivate resetForm(): void {\r\n\t\tthis.setIsFormShown(false);\r\n\t\tthis.newAreaNote = { ...this.defaultAreaNote };\r\n\t\tthis.newAreaNote.groupId = this.getCurrentGroupId;\r\n\t\tthis.newAreaNoteStartTime = this.defaultTime;\r\n\t\tthis.newAreaNoteEndTime = this.defaultTime;\r\n\t\tthis.$v.$reset();\r\n\t}\r\n\r\n\tprivate combineDateWithTime(date: string, time: string): string {\r\n\t\tif (date === null || date === \"\") {\r\n\t\t\treturn date;\r\n\t\t}\r\n\r\n\t\tdate = this.removeUTCTimeOffset(date);\r\n\t\t// time is in format HH:mm\r\n\t\tconst hoursAndMinutes = time.split(\":\");\r\n\t\tconst isoFormatWithoutTimeZoneOffset = \"yyyy-MM-dd'T'HH:mm:ss\";\r\n\r\n\t\t// set the time and return DateTime as string.\r\n\t\treturn DateTime.fromJSDate(new Date(date))\r\n\t\t .set({ hour: hoursAndMinutes[0], minute: hoursAndMinutes[1] })\r\n\t\t\t\t\t .toFormat(isoFormatWithoutTimeZoneOffset);\r\n\t}\r\n\r\n\tprivate getTimeFromDate(date: string): string {\r\n\t\tif (!date) {\r\n\t\t\treturn this.defaultTime;\r\n\t\t}\r\n\r\n\t\tdate = this.removeUTCTimeOffset(date);\r\n\r\n\t\tconst time = DateTime.fromJSDate(new Date(date)).toFormat(\"HH:mm\");\r\n\t\tconst hoursAndMinutes = time.split(\":\");\r\n\r\n\t\treturn `${hoursAndMinutes[0]}:${hoursAndMinutes[1]}`;\r\n\t}\r\n\r\n\tprivate removeUTCTimeOffset(date: string): string {\r\n\t\tif (typeof(date) === \"string\") {\r\n\t\t\tconst utcOffset = \"Z\";\r\n\t\t\t// for areas in UTC timezone there is a 'Z' at the end of the DateTime string.\r\n\t\t\t// remove the offset from the string.\r\n\t\t\tif (date.endsWith(utcOffset)) {\r\n\t\t\t\tdate = date.replace(utcOffset, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn date;\r\n\t}\r\n\r\n\tprivate clearEndDate(): void {\r\n\t\tthis.newAreaNote.endAt = null;\r\n\t\tthis.newAreaNoteEndTime = this.defaultTime;\r\n\t\tthis.isNewAreaNoteValid();\r\n\t}\r\n\r\n\tprivate clearStartDate(): void {\r\n\t\tthis.newAreaNote.startFrom = null;\r\n\t\tthis.newAreaNoteStartTime = this.defaultTime;\r\n\t\tthis.isNewAreaNoteValid();\r\n\t}\r\n\r\n\t// Disables the selection of an end date that is before the start date\r\n\tprivate getDisabledEndDates() {\r\n\t\treturn {\r\n\t\t\tto: moment(this.calendarDateFormatter(this.newAreaNote.startFrom), \"MM/DD/YYYY\").toDate()\r\n\t\t};\r\n\t}\r\n\r\n\tprivate calendarDateFormatter(date: string): string {\r\n\t\tif (date) {\r\n\t\t\treturn moment(date).format(\"MM/DD/YYYY\");\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate isEndTimeOptional(): boolean {\r\n\t\treturn this.newAreaNote.startFrom === null || this.newAreaNote.startFrom === \"\";\r\n\t}\r\n\r\n\t@Watch(\"newAreaNote\", { deep: true })\r\n\tprivate onNewAreaNoteChange(newVal, oldVal): void {\r\n\t\tthis.isNewAreaNoteValid();\r\n\t}\r\n\r\n\t@Watch(\"newAreaNote.startFrom\")\r\n\tprivate onNewAreaNoteStartFromChange(newVal, oldVal): void {\r\n\t\tthis.newAreaNote.startFrom = this.combineDateWithTime(this.newAreaNote.startFrom, this.newAreaNoteStartTime);\r\n\t}\r\n\r\n\t@Watch(\"newAreaNote.endAt\")\r\n\tprivate onNewAreaNoteEndAtChange(newVal, oldVal): void {\r\n\t\tthis.newAreaNote.endAt = this.combineDateWithTime(this.newAreaNote.endAt, this.newAreaNoteEndTime);\r\n\t}\r\n\r\n\t@Watch(\"newAreaNoteStartTime\")\r\n\tprivate onNewNoteStartTimeChange(newVal, oldVal): void {\r\n\t\tthis.newAreaNote.startFrom = this.combineDateWithTime(this.newAreaNote.startFrom, newVal);\r\n\t\tthis.isNewAreaNoteValid();\r\n\t}\r\n\r\n\t@Watch(\"newAreaNoteEndTime\")\r\n\tprivate onNewNoteEndTimeChange(newVal, oldVal): void {\r\n\t\tthis.newAreaNote.endAt = this.combineDateWithTime(this.newAreaNote.endAt, newVal);\r\n\t\tthis.isNewAreaNoteValid();\r\n\t}\r\n\r\n\tprivate hasPermissionsToEditNotes(): boolean {\r\n\t\treturn this.getPermissions.canViewSiteSetup;\r\n\t}\r\n\r\n\tprivate get isAreaNoteValid(): boolean {\r\n\t\treturn !!this.newAreaNote && !!this.newAreaNote.entry && !!this.newAreaNote.entry.length && this.newAreaNote.entry.length > 0 && this.newAreaNote.entry.length <= this.maxNoteLength;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaNotesForm.vue?vue&type=template&id=584f19f2&scoped=true\"\nimport script from \"./AreaNotesForm.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaNotesForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaNotesForm.vue?vue&type=style&index=0&id=584f19f2&prod&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 \"584f19f2\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraPreview.vue?vue&type=style&index=0&id=2a7a5f0a&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"sharingModal\",attrs:{\"id\":\"sharingModal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\"},on:{\"hidden\":_vm.closeSharing}},[_c('template',{slot:\"modal-title\"},[_c('div',[_c('h4',[_vm._v(\"Sharing\")]),_c('small',[_vm._v(\"Temporarily share with other users\")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"d-flex flex-column\"},[_c('div',{staticClass:\"card card-secondary\"},[_c('div',{staticClass:\"card-body\"},[_c('form',{attrs:{\"role\":\"form\"}},[_c('div',{staticClass:\"form-group\"},[_vm._v(\" Share with users or groups: \"),_c('multiselect',{attrs:{\"id\":\"sharePersonSelect\",\"track-by\":\"userID\",\"label\":\"name\",\"placeholder\":\"Type to search\",\"options\":_vm.shareWithPersons,\"searchable\":true,\"allow-empty\":true,\"loading\":_vm.isLoading,\"internal-search\":false,\"multiple\":true,\"hideSelected\":true,\"showNoResults\":false,\"clear-on-select\":true,\"selectLabel\":\"\",\"deselectLabel\":\"\",\"selectedLabel\":\"\"},on:{\"search-change\":_vm.eventShareFind},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(ref){\nvar option = ref.option;\nreturn [_c('span',[_vm._v(_vm._s(option.name))])]}}]),model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},[_c('template',{slot:\"noOptions\"},[_c('span',[_vm._v(\"Search for a person or group\")])])],2)],1),_c('div',{staticClass:\"clear-fix\"},[_c('b-button',{staticClass:\"float-right rounded-circle\",class:{ disabled: _vm.selected.length == 0 },attrs:{\"variant\":\"secondary\",\"title\":\"Share\",\"disabled\":_vm.selected.length == 0},on:{\"click\":function($event){return _vm.addImmixShare()}}},[_vm._v(\"+\")])],1)])])]),(_vm.externalEventShare)?_c('div',{staticClass:\"card card-secondary mt-2\"},[_c('div',{staticClass:\"card-body\"},[_vm._v(\" Share with non-sureview users: \"),_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.adhocName),expression:\"adhocName\"}],staticClass:\"form-control\",attrs:{\"placeholder\":\"Name\",\"type\":\"text\"},domProps:{\"value\":(_vm.adhocName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.adhocName=$event.target.value}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.adhocEmail),expression:\"adhocEmail\"}],staticClass:\"form-control\",attrs:{\"placeholder\":\"Email\",\"type\":\"text\"},domProps:{\"value\":(_vm.adhocEmail)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.addAdhocShare()},\"input\":function($event){if($event.target.composing){ return; }_vm.adhocEmail=$event.target.value}}})]),_c('div',{staticClass:\"clear-fix\"},[_c('b-button',{staticClass:\"float-right rounded-circle\",class:{ disabled: _vm.adhocName == '' },attrs:{\"variant\":\"secondary\",\"title\":\"Share\",\"disabled\":_vm.adhocName == ''},on:{\"click\":function($event){return _vm.addAdhocShare()}}},[_vm._v(\"+\")])],1)])]):_vm._e(),(_vm.canMobileEventShare)?_c('div',{staticClass:\"card card-secondary mt-2\"},[_c('div',{staticClass:\"card-body\"},[_vm._v(\" Share with Mobile Users and Assets: \"),_c('div',{staticClass:\"form-group\"},[_c('v-select3',{ref:\"assetSelect\",staticClass:\"m-1\",attrs:{\"id\":\"assetSelect\",\"options\":this.assets,\"clearable\":true,\"appendToBody\":true,\"selectOnTab\":true,\"autoscroll\":true,\"placeholder\":\"Select Mobile User/Asset\",\"multiple\":\"\",\"label\":\"title\",\"reduce\":function (asset) { return asset.assetID; }},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(option){return [_c('i',{staticClass:\"fas fa-fw\",class:[option.isUser ? 'fa-walking' : 'fa-star']}),_vm._v(\" \"+_vm._s(option.title)+\" \")]}},{key:\"option\",fn:function(option){return [_c('i',{staticClass:\"fas fa-fw\",class:[option.isUser ? 'fa-walking' : 'fa-star']}),_vm._v(\" \"+_vm._s(option.title)+\" \"),(option.status)?_c('div',{staticClass:\"asset-status\"},[_c('small',[_c('i',[_vm._v(\"Status: \"+_vm._s(option.status))])])]):_vm._e()]}}],null,false,3609338827),model:{value:(_vm.mobileAssetIDs),callback:function ($$v) {_vm.mobileAssetIDs=$$v},expression:\"mobileAssetIDs\"}})],1),_c('div',{staticClass:\"clear-fix\"},[_c('b-button',{staticClass:\"float-right rounded-circle\",class:{ disabled: (!_vm.mobileAssetIDs || _vm.mobileAssetIDs.length == 0) },attrs:{\"variant\":\"secondary\",\"title\":\"Share\",\"disabled\":!_vm.mobileAssetIDs || _vm.mobileAssetIDs.length == 0},on:{\"click\":function($event){return _vm.mobileShare()}}},[_vm._v(\"+\")])],1)])]):_vm._e()])]),_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"card card-secondary\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Shared With\")]),_c('div',{staticClass:\"card-body no-padding\"},[_c('VuePerfectScrollbar',{staticClass:\"shared-list\"},[_c('div',{staticClass:\"list-group\"},[_vm._l((_vm.sharedWith),function(share,i){return _c('div',{key:i,staticClass:\"list-group-item\",class:{ disabled: share.removed }},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('div',{key:share.eventUserID,staticClass:\"circle flex-grow-0 m-r-5\",class:'user-' + share.colorIndex,attrs:{\"title\":share.name}},[_vm._v(_vm._s(share.initials))]),_c('div',{staticClass:\"flex-grow-1\"},[_c('div',[_vm._v(\" \"+_vm._s(share.name)+\" \"),(share.removed)?_c('span',{staticClass:\"m-l-5\"},[_vm._v(\"(Removed)\")]):_vm._e()]),(!share.isActive)?_c('div',[_c('small',[_vm._v(\" Last in event: \"),(share.lastActive == null)?_c('span',[_vm._v(\"Never\")]):_vm._e(),(share.lastActive != null)?_c('span',[_vm._v(_vm._s(_vm.fromNow(share.lastActive)))]):_vm._e()])]):_vm._e()]),_c('div',[(share.isController)?_c('span',{staticClass:\"badge badge-pill badge-primary\",attrs:{\"title\":\"Has control\"}},[_c('span',{staticClass:\"fas fa-star fa-sm\"})]):_vm._e(),(\n\t\t\t\t\t\t\t\t\t\t\t\t!share.isController &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tshare.userID !== null &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t!share.removed &&\n\t\t\t\t\t\t\t\t\t\t\t\t\tshare.isActive\n\t\t\t\t\t\t\t\t\t\t\t)?_c('span',{staticClass:\"span-link badge badge-pill dark-background badge-primary\",attrs:{\"title\":\"Pass control\",\"id\":\"passControl\"},on:{\"click\":function($event){return _vm.passControl(share)}}},[_c('span',{staticClass:\"fas fa-star fa-sm\"})]):_vm._e(),(!share.isController && share.userID !== null)?_c('span'):_vm._e(),(!share.isController && !share.removed)?_c('span',{staticClass:\"span-link badge badge-pill dark-background badge-danger\",attrs:{\"title\":\"Remove\",\"id\":\"removeShare\"},on:{\"click\":function($event){return _vm.removeEventShare(share)}}},[_c('span',{staticClass:\"fas fa-times fa-sm\"})]):_vm._e()])]),(!share.removed && _vm.adhocShareDetails(share.eventUserID) != null)?_c('div',{staticClass:\"m-t-5\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('span',{staticClass:\"flex-grow-0 m-r-5\"},[_vm._v(\"Share Link:\")]),_c('div',{staticClass:\"form-group flex-grow-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.adhocShareDetails(share.eventUserID).shareLink),expression:\"adhocShareDetails(share.eventUserID).shareLink\"}],staticClass:\"form-control\",attrs:{\"readonly\":\"\",\"placeholder\":\"\",\"type\":\"text\"},domProps:{\"value\":(_vm.adhocShareDetails(share.eventUserID).shareLink)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.adhocShareDetails(share.eventUserID), \"shareLink\", $event.target.value)}}})])]),_c('div',{staticClass:\"d-flex align-items-center\"},[_c('span',{staticClass:\"flex-grow-0 m-r-5\"},[_vm._v(\"Access Code:\")]),_c('div',{staticClass:\"form-group flex-grow-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.adhocShareDetails(share.eventUserID).accessCode),expression:\"adhocShareDetails(share.eventUserID).accessCode\"}],staticClass:\"form-control\",attrs:{\"readonly\":\"\",\"placeholder\":\"\",\"type\":\"text\"},domProps:{\"value\":(_vm.adhocShareDetails(share.eventUserID).accessCode)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.adhocShareDetails(share.eventUserID), \"accessCode\", $event.target.value)}}})])])]):_vm._e(),(_vm.getMobileEventShareForUser(share.userID))?_c('event-share-asset',{staticStyle:{\"padding-left\":\"15px\",\"margin-top\":\"5px\"},attrs:{\"assetShare\":_vm.getMobileEventShareForUser(share.userID),\"nested\":\"\",\"iconStyle\":_vm.getMobileShareBackground(_vm.getMobileEventShareForUser(share.userID))},on:{\"removeEventShare\":_vm.removeEventShare}}):_vm._e()],1)}),(_vm.canMobileEventShare)?_c('div',_vm._l((_vm.mobileEventShareAssets),function(share,i){return _c('div',{key:i,staticClass:\"list-group-item\"},[_c('event-share-asset',{key:share.assetID,attrs:{\"assetShare\":share,\"iconStyle\":_vm.getMobileShareBackground(share)},on:{\"removeEventShare\":_vm.removeEventShare}})],1)}),0):_vm._e()],2)])],1)])])]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"pull-right ksConfirm\",attrs:{\"variant\":\"secondary\",\"data-dismiss\":\"modal\"},on:{\"click\":function($event){return _vm.closeSharing()}}},[_vm._v(\"Close\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex align-items-center\",class:_vm.stateClass},[_c('div',{key:_vm.assetShare.assetId,staticClass:\"circle flex-grow-0 m-r-5\",class:_vm.circleStateClass,style:(_vm.iconStyle),attrs:{\"title\":_vm.assetShare.assetTitle}},[_c('i',{staticClass:\"fas\",class:_vm.assetShare.userID ? 'fa-walking' : 'fa-star',staticStyle:{\"color\":\"white!important\"}})]),_c('div',{staticClass:\"flex-grow-1\"},[_c('div',[_vm._v(\" \"+_vm._s(_vm.assetShare.assetTitle)+\" \"),_c('span',{staticClass:\"m-l-1\"},[_vm._v(\" ( \"+_vm._s(_vm.stateText(_vm.assetShare.state))+\" ) \")]),_c('br'),_c('small',[_vm._v(\" Last Updated: \"+_vm._s(_vm.fromNow(_vm.assetShare.lastUpdated))+\" \")])])]),_c('div',[(_vm.assetShare.state != 5 && _vm.assetShare.state != 4)?_c('span',{staticClass:\"span-link badge badge-pill dark-background badge-danger\",attrs:{\"title\":\"Remove\",\"id\":\"removeShare\"},on:{\"click\":function($event){return _vm.removeEventShare()}}},[_c('span',{staticClass:\"fas fa-times fa-sm\"})]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport MobileEventSharingStatus from '@/types/sv-data/MobileEventSharingStatus';\r\n\r\n\r\n@Component({\r\n\tcomponents: {}\r\n})\r\nexport default class EventSharingAsset extends Vue {\r\n\t@Prop()\r\n\tprivate assetShare: MobileEventSharingStatus\r\n\r\n\t@Prop()\r\n\tprivate iconStyle: string\r\n\r\n\t@Prop({default: false, type: Boolean})\r\n\tprivate nested: string\r\n\r\n\tprivate stateText(state: number): string {\r\n\t\tswitch(state){\r\n\t\t\tcase 1: //Maps to sent back we will use pending\r\n\t\t\t\treturn \"Pending\";\r\n\t\t\tcase 2:\r\n\t\t\t\treturn \"Accepted\";\r\n\t\t\tcase 3:\r\n\t\t\t\treturn \"Rejected\";\r\n\t\t\tcase 4:\r\n\t\t\t\treturn \"Left\";\r\n\t\t\tcase 5:\r\n\t\t\t\treturn \"Removed\"\r\n\t\t\tcase 6:\r\n\t\t\t\treturn \"Event Ended\";\r\n\t\t}\r\n\t}\r\n\r\n\t@Emit(\"removeEventShare\")\r\n\tprivate removeEventShare(){\r\n\t\treturn this.assetShare;\r\n\t}\r\n\r\n\tprivate get stateClass(): string {\r\n\t\tlet stateClass = this.nested ? \"smallText \" : \"\";\r\n\t\tif(this.assetShare.state != 1 && this.assetShare.state != 2){\r\n\t\t\tstateClass += \"disabled text-muted\"\r\n\t\t}\r\n\t\treturn stateClass;\r\n\t}\r\n\r\n\tprivate get circleStateClass() {\r\n\t\tlet stateClass = this.nested ? \"smallCirlce \" :\"circle \";\r\n\t\tif(this.assetShare.state != 1 && this.assetShare.state != 2){\r\n\t\t\tstateClass += \"disabled text-muted\"\r\n\t\t}\r\n\t\treturn stateClass;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSharingAsset.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSharingAsset.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventSharingAsset.vue?vue&type=template&id=6a3e5182&scoped=true\"\nimport script from \"./EventSharingAsset.vue?vue&type=script&lang=ts\"\nexport * from \"./EventSharingAsset.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventSharingAsset.vue?vue&type=style&index=0&id=6a3e5182&prod&scoped=true&lang=css\"\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 \"6a3e5182\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport Multiselect from \"vue-multiselect\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { DeviceService } from \"@sureview/camera\";\r\nimport { ShareWithPerson, EventDetails } from \"@/store/site-monitor/types\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport api from '@/services/api.service';\r\nimport vselect3 from \"vselect3\";\r\nimport ShareAsset from '@/types/sv-data/ShareAsset';\r\nimport EventSharingAsset from './EventSharingAsset.vue';\r\nimport MobileEventSharingStatus from '@/types/sv-data/MobileEventSharingStatus';\r\n\r\nconst SessionStore = namespace(\"sessions\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tmultiselect: Multiselect,\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar,\r\n\t\t\"v-select3\" : vselect3,\r\n\t\t\"event-share-asset\" : EventSharingAsset\r\n\t}\r\n})\r\nexport default class EventSharing extends Vue {\r\n\t@Prop(Number) eventid?: number;\r\n\r\n\t$refs!: {\r\n\t\tsharingModal: any;\r\n\t\tassetSelect: any;\r\n\t};\r\n\r\n\tpublic settings: any = {};\r\n\tpublic selected: any[] = [];\r\n\tpublic isLoading: boolean = false;\r\n\r\n\tpublic adhocName: string = \"\";\r\n\tpublic adhocEmail: string = \"\";\r\n\r\n\tprivate mobileAssetIDs: number[] = [];\r\n\r\n\t@SessionStore.Getter getSession: any;\r\n\t@SessionStore.Action updateSession: any;\r\n\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter(\"getIsFieldOpsLicensed\") private fieldOpsLicenced: boolean;\r\n\t@SiteMonitor.Action loadExternalUsersAllowed: any;\r\n\t@SiteMonitor.Action removeShare: any;\r\n\t@SiteMonitor.Action updateSharing: any;\r\n\t@SiteMonitor.Action eventShareSearch: any;\r\n\t@SiteMonitor.Action eventPassControl: any;\r\n\t@SiteMonitor.Action loadNotificationTemplate: any;\r\n\t@SiteMonitor.Action shareEventWithUser: any;\r\n\t@SiteMonitor.Action shareEventWithGroup: any;\r\n\t@SiteMonitor.Action addAdhocEventShare: any;\r\n\r\n\t@SiteMonitor.Getter(\"getExternalUsersAllowed\") externalEventShare!: boolean;\r\n\t@SiteMonitor.Getter(\"getEventShareShown\") eventShareShown!: boolean;\r\n\t@SiteMonitor.Getter(\"getEventShare\") sharedWith!: any[];\r\n\t@SiteMonitor.Getter shareWithPersons: ShareWithPerson[];\r\n\t@SiteMonitor.Getter(\"getAdhocShareDetails\") adhocShareDetails: any;\r\n\t@SiteMonitor.Getter getEventDetails: EventDetails;\r\n\t@SiteMonitor.State(\"MobileEventShares\") mobileEventShares: MobileEventSharingStatus[];\r\n\r\n\t@SiteMonitor.Mutation setEventShareShown: any;\r\n\t@SiteMonitor.Mutation setAdHocShareDetails: any;\r\n\t@SiteMonitor.Mutation setActivity: any;\r\n\r\n\tprivate assets: ShareAsset[] = [];\r\n\r\n\tprivate get canMobileEventShare() : boolean {\r\n\t\treturn this.getFeature([\"Mobile\", \"FieldOps\", \"EventShare\"]) && this.fieldOpsLicenced;\r\n\t}\r\n\r\n\tprivate async loadAssets() : Promise {\r\n\t\tconst assets = await api.getShareableAssets();\r\n\t\t//An asset can only be actively attached to one event at a time, filter out any assets that have an active event\r\n\t\tthis.assets = assets.filter(ast => ast.isUser || (!ast.isUser && !ast.hasActiveShare));\r\n\t}\r\n\r\n\tprivate get mobileEventShareAssets() {\r\n\t\tif(this.sharedWith && this.sharedWith.length > 0 && this.mobileEventShares){\r\n\t\t\treturn this.mobileEventShares.filter(x => !this.sharedWith.map(y => y.userID).includes(x.userID));\r\n\t\t}\r\n\t\treturn this.mobileEventShares;\r\n\t}\r\n\r\n\tprivate getMobileEventShareForUser(userID: number){\r\n\t\tif(!this.mobileEventShares || this.mobileEventShares.length == 0)\r\n\t\t\treturn null;\r\n\r\n\t\tconst mobileShare = this.mobileEventShares.find(x => x.userID === userID);\r\n\t\treturn mobileShare ? mobileShare : null;\r\n\t}\r\n\r\n\tprivate async mobileShare(): Promise {\r\n\t\tconst mobileAssetIDsCopy = [...this.mobileAssetIDs];\r\n\t\tfor (const assetID of mobileAssetIDsCopy) {\r\n\t\t\tawait api.shareEventWithAsset(this.eventid, assetID);\r\n\t\t}\r\n\t\tthis.updateSharing({ eventID: this.eventid });\r\n\r\n\t\tthis.$refs.assetSelect.clearSelection();\r\n\t\tthis.mobileAssetIDs = [];\r\n\t}\r\n\r\n\tprivate getMobileShareBackground(share: any): string {\r\n\t\treturn `background-color:${share.iconColor ? share.iconColor : 'grey' };`\r\n\t}\r\n\r\n\t@Watch(\"eventShareShown\")\r\n\tonEventCloseShownChanged(value: boolean) {\r\n\t\tif (value) {\r\n\t\t\tthis.loadAssets(); //reload the assets every time open the share\r\n\t\t\tthis.$refs.sharingModal.show();\r\n\t\t} else {\r\n\t\t\tthis.$refs.sharingModal.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tcreated() {\r\n\t\tthis.setEventShareShown(false);\r\n\t\tthis.updateSession({ resourceId: SessionResource.DeviceServiceSession }); // eventId?\r\n\t\tthis.loadExternalUsersAllowed(this.eventid);\r\n\t\tthis.loadAssets();\r\n\t}\r\n\r\n\tasync eventShareFind(query: any) {\r\n\t\tthis.isLoading = true;\r\n\t\ttry {\r\n\t\t\tawait this.eventShareSearch(query);\r\n\t\t\tthis.isLoading = false;\r\n\t\t} catch (e) {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t\t\tthis.setActivity();\r\n\t}\r\n\r\n\tasync addImmixShare() {\r\n\t\t\tthis.setActivity();\r\n\t\tlet sharePromises: Promise[] = [];\r\n\t\tthis.selected.forEach(share => {\r\n\t\t\tif (share.userID != null) {\r\n\t\t\t\tsharePromises.push(\r\n\t\t\t\t\tthis.shareEventWithUser({\r\n\t\t\t\t\t\tUserID: share.userID,\r\n\t\t\t\t\t\tEventID: this.eventid,\r\n\t\t\t\t\t\tPassControl: false\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t} else if (share.routingGroupID != null) {\r\n\t\t\t\tsharePromises.push(\r\n\t\t\t\t\tthis.shareEventWithGroup({\r\n\t\t\t\t\t\tRoutingGroupID: share.routingGroupID,\r\n\t\t\t\t\t\tEventID: this.eventid,\r\n\t\t\t\t\t\tPassControl: false\r\n\t\t\t\t\t})\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.selected = [];\r\n\r\n\t\tlet shareResults = [];\r\n\r\n\t\tfor (var i = 0; i < sharePromises.length; i++) {\r\n\t\t\tshareResults.push(await sharePromises[i]);\r\n\t\t}\r\n\r\n\t\tlet notification: any = {};\r\n\t\tlet anyNotification = false;\r\n\r\n\t\tshareResults.forEach(function(shareResult: any) {\r\n\t\t\tif (shareResult.notification != null && shareResult.notification.notificationServerID != null) {\r\n\t\t\t\tvar notificationServerID = shareResult.notification.notificationServerID.toString();\r\n\t\t\t\tif (notification[notificationServerID] == null) notification[notificationServerID] = [];\r\n\r\n\t\t\t\tnotification[notificationServerID].push(shareResult);\r\n\t\t\t\tanyNotification = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (anyNotification) {\r\n\t\t\tthis.sendNotifications(notification);\r\n\t\t}\r\n\r\n\t\tthis.updateSharing({ eventID: this.eventid });\r\n\t}\r\n\r\n\tasync addAdhocShare() {\r\n\t\tconst shareResult = await this.addAdhocEventShare({\r\n\t\t\tEventID: this.eventid,\r\n\t\t\tFullName: this.adhocName,\r\n\t\t\tEmail: this.adhocEmail\r\n\t\t});\r\n\r\n\t\tthis.adhocName = \"\";\r\n\t\tthis.adhocEmail = \"\";\r\n\r\n\t\tif (shareResult.notification.notificationServerID != null) {\r\n\t\t\tconst notification: any = {};\r\n\t\t\tnotification[shareResult.notification.notificationServerID] = [shareResult];\r\n\r\n\t\t\tawait this.updateSession({ resourceId: SessionResource.DeviceServiceSession, eventId: this.eventid });\r\n\t\t\tthis.sendNotifications(notification);\r\n\t\t}\r\n\t}\r\n\r\n\tsendNotifications(notification: any) {\r\n\t\tlet deviceService = new DeviceService(api.getDeviceServiceAddress(), this.getEventDetails?.devicesEndpoint);\r\n\t\tlet authSessionID = this.getSession(SessionResource.DeviceServiceSession);\r\n\r\n\t\tfor (var notificationServerID in notification) {\r\n\t\t\tnotification[notificationServerID].forEach(async (shareResult: any) => {\r\n\t\t\t\tlet values = [\r\n\t\t\t\t\t{ Key: \"FullName\", Value: shareResult.fullName },\r\n\t\t\t\t\t{ Key: \"EventID\", Value: this.eventid },\r\n\t\t\t\t\t{ Key: \"Email\", Value: shareResult.notification.email },\r\n\t\t\t\t\t{ Key: \"SharedBy\", Value: shareResult.sharedBy },\r\n\t\t\t\t\t{ Key: \"AccessCode\", Value: shareResult.accessCode },\r\n\t\t\t\t\t{ Key: \"ShareID\", Value: shareResult.shareID },\r\n\t\t\t\t\t{ Key: \"ShareLink\", Value: shareResult.shareLink }\r\n\t\t\t\t];\r\n\r\n\t\t\t\tconst template = await this.loadNotificationTemplate({\r\n\t\t\t\t\tTemplateName: \"Event Sharing Template\",\r\n\t\t\t\t\tServerID: notificationServerID,\r\n\t\t\t\t\tValues: JSON.stringify(values)\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst recipient = {\r\n\t\t\t\t\tFullname: shareResult.fullName,\r\n\t\t\t\t\tExternalID: shareResult.notification.externalID,\r\n\t\t\t\t\tEmail: shareResult.notification.email,\r\n\t\t\t\t\tTelephone: shareResult.notification.telephone\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst message = {\r\n\t\t\t\t\tContent: template.content,\r\n\t\t\t\t\tSubject: template.subject,\r\n\t\t\t\t\tParameters: []\r\n\t\t\t\t};\r\n\r\n\t\t\t\tdeviceService.sendNotification(authSessionID, parseInt(notificationServerID), [recipient], message);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tcloseSharing() {\r\n\t\t\tthis.setActivity();\r\n\t\tthis.setEventShareShown(false);\r\n\t}\r\n\r\n\tasync passControl(share: any) {\r\n\t\tawait this.eventPassControl({\r\n\t\t\teventID: this.eventid,\r\n\t\t\tuserID: share.userID\r\n\t\t});\r\n\t\tthis.closeSharing();\r\n\t}\r\n\r\n\tpublic removeEventShare(share: any) {\r\n\t\tthis.setActivity();\r\n\t\tif(share.assetID)\r\n\t\t\tthis.removeShare({ eventID: this.eventid, uniqueID: share.assetID, isMobile: true });\r\n\t\telse\r\n\t\t\tthis.removeShare({ eventID: this.eventid, uniqueID: share.eventUserID, isMobile: false });\r\n\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSharing.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSharing.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventSharing.vue?vue&type=template&id=18ba6843&scoped=true\"\nimport script from \"./EventSharing.vue?vue&type=script&lang=ts\"\nexport * from \"./EventSharing.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventSharing.vue?vue&type=style&index=0&id=18ba6843&prod&scoped=true&lang=scss\"\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 \"18ba6843\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewHealthFilter.vue?vue&type=style&index=0&id=09a60673&prod&scoped=true&lang=scss\"","enum NotificationDocumentTypeId {\r\n\tPdf = 1,\r\n\tPng = 2\r\n}\r\n\r\nexport default NotificationDocumentTypeId;\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompleteTaskLine.vue?vue&type=style&index=0&id=ab70100a&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaCameras.vue?vue&type=style&index=0&id=e848381c&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TourSetup.vue?vue&type=style&index=0&id=22df5bf8&prod&lang=scss&scoped=true\"","import { axiosInstance } from \"@/axios.instance\";\r\nimport { apiFormattingMixins } from \"@/mixins\";\r\nimport { AxiosInstance } from \"axios\";\r\nimport { PaginatedSearchRequest } from \"@/mixins/PaginatedSearch\";\r\nimport AreaContactsPagedResponse from \"@/types/sv-data/contacts/AreaContactsPaginatedResponse\";\r\nconst { arrayToQueryString } = apiFormattingMixins.methods;\r\n\r\nclass UserApi {\r\n\tprivate axios: AxiosInstance;\r\n\r\n\tconstructor() {\r\n\t\tthis.axios = axiosInstance;\r\n\t}\r\n\r\n\tpublic async checkUserHasPermissionToGroup(groupId: string, permissions: string[] = []): Promise {\r\n\t\tconst permissionsAsQueryString = arrayToQueryString(\"permissions\", permissions);\r\n\t\tconst { data } = await this.axios.get(`users/HasPermissions?groupId=${groupId}&${permissionsAsQueryString}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getKeyContactsByGroup(groupId: number, paginatedSearchRequest?: PaginatedSearchRequest) : Promise {\r\n\t\treturn (await this.axios.get(`/users/KeyContacts/Group/${groupId}`, paginatedSearchRequest)).data;\r\n\t}\r\n\r\n\tpublic async getContactRolesByGroup(groupId: number): Promise {\r\n\t\treturn (await this.axios.get(`/users/ContactRoles/Group/${groupId}`)).data;\r\n\t}\r\n}\r\n\r\nconst userApi = new UserApi();\r\nexport default userApi;\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FeatureTree.vue?vue&type=style&index=0&id=dd6ad71c&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetSetup.vue?vue&type=style&index=0&id=325f738f&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"email-holder\",staticClass:\"email-holder\"},[_c('ul',{staticClass:\"email-header\"},[_c('li',[_c('div',{staticClass:\"label\"},[_vm._v(\" from: \")]),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.headerEmailData.fromEmail)+\" \")])]),_c('li',[_c('div',{staticClass:\"label\"},[_vm._v(\" to: \")]),_c('div',{staticClass:\"content\"},[(_vm.headerEmailData.toEmails)?_c('email-from-to',{attrs:{\"value\":_vm.headerEmailData.toEmails}}):_vm._e()],1)]),_c('li',[_c('div',{staticClass:\"label\"},[_vm._v(\" date: \")]),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.formattedDate)+\" \")])]),_c('li',[_c('div',{staticClass:\"label\"},[_vm._v(\" subject: \")]),_c('div',{staticClass:\"content\"},[_vm._v(\" \"+_vm._s(_vm.headerEmailData.subject)+\" \")])])]),(_vm.emailAttachments || _vm.isShowTextPlain || _vm.hasHtmlDataRendered)?_c('div',{staticClass:\"text-holder\"},[(_vm.emailAttachments)?_c('email-attachments',{attrs:{\"email-id\":_vm.emailId}}):_vm._e(),(_vm.isShowTextPlain)?_c('span',{staticClass:\"text-plain\"},[_vm._v(_vm._s(_vm.textPlain))]):_vm._e(),(_vm.hasHtmlDataRendered && _vm.urlHtmlData)?_c('iframe',{ref:\"iframe\",attrs:{\"sandbox\":\"allow-forms allow-scripts allow-same-origin allow-popups\",\"src\":_vm.urlHtmlData},on:{\"load\":_vm.onIframeLoad}}):_vm._e()],1):_vm._e(),(!_vm.isShowTextPlain && !_vm.hasHtmlDataRendered)?_c('div',{staticClass:\"view-error\"},[_c('i',[_c('i',{staticClass:\"far fa-exclamation-triangle pr-2\"}),_vm._v(\"Unable to display email - Please \"),_c('a',{staticClass:\"clickable download\",on:{\"click\":_vm.triggerDownload}},[_vm._v(\"download\")]),_vm._v(\" to view\")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isValueArray)?_vm._l((_vm.value),function(fromTo){return _c('div',{key:fromTo.email},[_vm._v(\" \"+_vm._s(_vm.getEmail(fromTo))+\" \")])}):_vm._e(),(_vm.isValueObject)?[_c('span',[_vm._v(\" \"+_vm._s(_vm.getEmail(_vm.value))+\" \")])]:_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport _ from 'lodash'\r\n\r\nconst Emails = namespace(\"emails\");\r\n\r\n@Component\r\nexport default class EmailFromTo extends Vue {\r\n @Prop({\r\n type: [Object, Array],\r\n required: true,\r\n })\r\n value:object|any[];\r\n\r\n public get isValueArray() {\r\n\t\treturn _.isArray(this.value)\r\n }\r\n\r\n public get isValueObject() {\r\n\t\treturn !_.isArray(this.value) && _.isObject(this.value)\r\n }\r\n\r\n public get getEmail() {\r\n return fromTo => fromTo && fromTo.email\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./email-from-to.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./email-from-to.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./email-from-to.vue?vue&type=template&id=69b1afd6\"\nimport script from \"./email-from-to.vue?vue&type=script&lang=ts\"\nexport * from \"./email-from-to.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isAttachmentsExist)?_c('i',{staticClass:\"fas fa-paperclip\"}):_vm._e(),(_vm.isImageListExist)?[_c('div',{staticClass:\"img-container\"},_vm._l((_vm.extraImages),function(image,i){return _c('div',{key:i},[_c('a',{attrs:{\"target\":\"_blank\",\"href\":image.url}},[_vm._v(\" \"+_vm._s(image.name || 'IMG')+\" \")])])}),0)]:_vm._e(),(_vm.isPdfExist)?_vm._l((_vm.pdfs),function(option,i){return _c('div',{key:i + 'pdf'},[_c('a',{attrs:{\"target\":\"_blank\",\"href\":option.url}},[_vm._v(\" \"+_vm._s(option.name || 'PDF')+\" \")])])}):_vm._e(),(_vm.isVideoExist)?_vm._l((_vm.videos),function(option,i){return _c('div',{key:i + 'video'},[_c('a',{attrs:{\"target\":\"_blank\",\"href\":option.url}},[_vm._v(\" \"+_vm._s(option.name || 'Video')+\" \")])])}):_vm._e(),(_vm.showAttachmentsHTML)?_vm._l((_vm.showAttachmentsHTML),function(attach){return _c('iframe',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showAttachment[attach.key]),expression:\"showAttachment[attach.key]\"}],key:attach.key,attrs:{\"src\":attach.src,\"sandbox\":\"allow-forms allow-scripts allow-same-origin allow-popups\"},on:{\"load\":function($event){return _vm.setElementIframe($event, attach.key)}}})}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\n\r\nconst Emails = namespace(\"emails\");\r\n\r\n@Component\r\nexport default class EmailAttachments extends Vue {\r\n @Prop(String)\r\n emailId!:string;\r\n\r\n @Emails.Getter('getVideos') getVideos: any;\r\n @Emails.Getter('getPdfs') getPdfs: any;\r\n @Emails.Getter('areImagesExists') areImagesExists: any;\r\n @Emails.Getter('getAttachmentsHTML') getAttachmentsHTML: any;\r\n @Emails.Getter('getExtraImages') getExtraImages: any;\r\n\r\n showAttachment: object = {};\r\n\r\n\t@Watch(\"showAttachmentsHTML\", { deep: true, immediate: true })\r\n\tpublic setShowAttachment (showAttachmentsHTML) {\r\n\t\tif(!showAttachmentsHTML) return\r\n\r\n \tthis.showAttachment = Object.keys(showAttachmentsHTML)\r\n\t\t\t.reduce((prev, key) => ({\r\n\t\t\t\t...prev,\r\n\t\t\t\t[key]: false\r\n\t\t\t}), {})\r\n\t}\r\n\r\n public get extraImages() {\r\n return this.getExtraImages(this.emailId)\r\n }\r\n\r\n public get isPdfExist() {\r\n return this.pdfs && this.pdfs.length\r\n }\r\n\r\n public get isVideoExist() {\r\n return this.videos && this.videos.length\r\n }\r\n\r\n public get isAttachmentsExist() {\r\n return this.isImageListExist || this.isPdfExist || this.isVideoExist\r\n }\r\n\r\n public get pdfs() {\r\n return this.getPdfs(this.emailId)\r\n }\r\n\r\n public get videos() {\r\n return this.getVideos(this.emailId)\r\n }\r\n\r\n public get attachmentsHTML() {\r\n return this.getAttachmentsHTML(this.emailId)\r\n }\r\n\r\n\tpublic get showAttachmentsHTML() {\r\n\t\treturn this.attachmentsHTML\r\n\t\t\t&& this.attachmentsHTML.reduce((prev, src, i) => ({\r\n\t\t\t\t...prev,\r\n\t\t\t\t[`${i}-html-type`]: {\r\n\t\t\t\t\tkey: `${i}-html-type`,\r\n\t\t\t\t\tsrc,\r\n\t\t\t\t}\r\n\t\t\t}), {})\r\n\t}\r\n\r\n public get isImageListExist() {\r\n return !!this.areImagesExists(this.emailId)\r\n }\r\n\r\n\tpublic setElementIframe($event, key) {\r\n\t\tthis.showAttachment[key] = true\r\n\r\n\t\tthis.$nextTick(() => {\r\n\t\t\tconst elementIframe: HTMLIFrameElement = $event.target\r\n\t\t\tconst scrollHeight = elementIframe.contentWindow.document.body.scrollHeight\r\n\t\t\tconst bottomIndent = 10\r\n\t\t\tconst height = `${scrollHeight + bottomIndent}px`\r\n\r\n\t\t\telementIframe.style.maxHeight = height\r\n\t\t\telementIframe.style.minHeight = height\r\n\t\t})\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./email-attachments.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./email-attachments.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./email-attachments.vue?vue&type=template&id=0f073957\"\nimport script from \"./email-attachments.vue?vue&type=script&lang=ts\"\nexport * from \"./email-attachments.vue?vue&type=script&lang=ts\"\nimport style0 from \"./email-attachments.vue?vue&type=style&index=0&id=0f073957&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport _ from 'lodash'\r\n\r\nimport EmailFromTo from '@/components/emails/base/email-from-to.vue'\r\nimport EmailAttachments from '@/components/emails/base/email-attachments.vue'\r\nimport {\r\n getObjectUrl,\r\n} from '@/utils/formatterEmailAttachments'\r\nimport moment from \"moment\";\r\nconst Emails = namespace(\"emails\");\r\n\r\n@Component({\r\n components: {\r\n EmailFromTo,\r\n EmailAttachments\r\n }\r\n})\r\nexport default class EmailHolder extends Vue {\r\n @Prop(String)\r\n emailId!: string;\r\n\r\n @Emails.Getter getEmail: any;\r\n @Emails.Getter getEmailFrom: any;\r\n @Emails.Getter getAttachments: any;\r\n\t@Emails.Getter mainHTMLWithImages: any;\r\n\r\n public get emailData() {\r\n return this.getEmail(this.emailId)\r\n }\r\n\r\n\tpublic get textPlain() {\r\n\t\treturn _.get(this.emailData, 'text')\r\n\t}\r\n\r\n\tpublic get isShowTextPlain() {\r\n\t\treturn !this.htmlData && !!this.textPlain\r\n\t}\r\n\r\n public get emailFrom() {\r\n return this.getEmailFrom(this.emailId)\r\n }\r\n\r\n public get headerEmailData() {\r\n return {\r\n fromEmail: this.emailFrom,\r\n toEmails: _.get(this.emailData, 'to'),\r\n emailDate: _.get(this.emailData, 'date'),\r\n subject: _.get(this.emailData, 'subject'),\r\n }\r\n }\r\n\r\n public get htmlData() {\r\n return _.get(this.emailData, 'html')\r\n }\r\n\r\n public get hasHtmlDataRendered(): boolean\r\n {\r\n try\r\n {\r\n return this.urlHtmlData ? true : false;\r\n }\r\n catch(ex)\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n public get urlHtmlData(): any \r\n {\r\n try\r\n {\r\n return (\r\n this.mainHTMLWithImages(this.emailId) &&\r\n getObjectUrl(\r\n [this.mainHTMLWithImages(this.emailId)],\r\n 'text/html'\r\n )\r\n )\r\n }\r\n catch(ex)\r\n {\r\n console.error(ex);\r\n return null;\r\n }\r\n }\r\n\r\n public get emailAttachments() {\r\n return this.getAttachments(this.emailId)\r\n }\r\n\r\n public get formattedDate() {\r\n \tconst date = this.headerEmailData.emailDate\r\n return date ? moment(date).format(\"LLL\") : ''\r\n }\r\n\r\n onIframeLoad() {\r\n\t\tconst iframe = this.$refs.iframe as HTMLIFrameElement;\r\n\t\tconst iframeDocument = iframe.contentDocument;\r\n\t\tiframeDocument.body.innerHTML = iframeDocument.body.innerHTML + ``;\r\n\t}\r\n\r\n private triggerDownload(): void\r\n {\r\n this.$emit(\"downloadEmail\");\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./email-holder.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./email-holder.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./email-holder.vue?vue&type=template&id=547faa0c&scoped=true\"\nimport script from \"./email-holder.vue?vue&type=script&lang=ts\"\nexport * from \"./email-holder.vue?vue&type=script&lang=ts\"\nimport style0 from \"./email-holder.vue?vue&type=style&index=0&id=547faa0c&prod&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 \"547faa0c\",\n null\n \n)\n\nexport default component.exports","import PagedResponse from \"@/types/sv-data/PagedResponse\";\r\n\r\nexport interface PublicHolidayApiContract {\r\n\tpublicHolidayId: number;\r\n\ttitle: string;\r\n\tgroupTitle: string;\r\n\tday: number;\r\n\tmonth: number;\r\n\tyear: number;\r\n\tgroupId: number;\r\n\tinherited: boolean;\r\n}\r\n\r\nexport interface PublicHolidayDto extends PublicHolidayApiContract{\r\n\tpublicHolidayDate: string;\r\n\trepeatYearly: boolean;\r\n}\r\n\r\nexport interface Schedule {\r\n\tscheduleId: string;\r\n\tscheduleTypeId: number;\r\n\tgroupId?: number;\r\n\tresponseId?: number;\r\n\tstartDateTime: string;\r\n\tendDateTime?: string;\r\n\ttitle: string;\r\n\tintervalValue: number;\r\n\tintervalTypeId: number;\r\n\tmaxOccurrences: number;\r\n\tnextOccurrence: string;\r\n\texpiresOn: string;\r\n\tpublicHolidayTypeId: number;\r\n\tdaysToRun: string;\r\n\tdisabled: boolean | null;\r\n\ttimeZoneId?: number;\r\n\tresponseMaskingMeta?: ResponseMaskingMeta;\r\n\tserverTypeEvent?: number;\r\n}\r\n\r\nexport interface ScheduleTableDto extends Schedule{\r\n\tareaTitle: string;\r\n\tnextOccurrenceAreaTime: string;\r\n}\r\n\r\nexport interface ResponseMaskingMeta {\r\n\tresponseIds: number[];\r\n\tallAlarms: boolean;\r\n\tdisarmReason?: string;\r\n\tdisarmUntil?: string;\r\n}\r\n\r\nexport interface ScheduleType {\r\n\tscheduleTypeId: number;\r\n\ttitle: string;\r\n}\r\n\r\nexport interface ScheduleState {\r\n\tschedules: Schedule[];\r\n\ttempSchedule: Schedule;\r\n\tscheduleTypes: ScheduleType[];\r\n\tisCreateModalVisible: boolean;\r\n\tisDeleteConfirmationVisible: boolean;\r\n\tisReloadRequired: boolean;\r\n\tselectedScheduleId: string;\r\n\tselectedScheduleStart: Date;\r\n\tsearchString: string;\r\n\tselectedGroup: number;\r\n\tselectedScheduleTypes: number[];\r\n\tisLoading: boolean;\r\n\tenabledScheduleFilter: boolean | null;\r\n\tareaTimeZoneId: number | null;\r\n}\r\n\r\nexport interface SchedulesPagedResponse extends PagedResponse {\r\n\tdata: ScheduleTableDto[];\r\n}\r\n\r\nexport interface ScheduleTableRow {\r\n\tscheduleId: string;\r\n\ttitle: string;\r\n\tnextRunLocalTime: string;\r\n\tnextRunAreaTime: string;\r\n\tscheduleType: string;\r\n\tareaTitle: string;\r\n\tdisabled: boolean;\r\n\tparentSchedule: Schedule;\r\n}\r\n\r\nexport enum IntervalType {\r\n\tDay = 1,\r\n\tWeek = 2,\r\n\tMonth = 3,\r\n\tYear = 4\r\n}\r\n\r\nexport const IntervalTypeOptions = [\r\n\t{\r\n\t\tid: IntervalType.Day,\r\n\t\ttitle: \"Day\",\r\n\t},\r\n\t{\r\n\t\tid: IntervalType.Week,\r\n\t\ttitle: \"Week\",\r\n\t},\r\n\t{\r\n\t\tid: IntervalType.Month,\r\n\t\ttitle: \"Month\",\r\n\t},\r\n\t{\r\n\t\tid: IntervalType.Year,\r\n\t\ttitle: \"Year\"\r\n\t}\r\n];\r\n\r\nexport enum PublicHolidaySetting {\r\n\tRunOnPublicHolidays = 1,\r\n\tSkipPublicHolidays = 2,\r\n\tAlwaysRun = 3\r\n}\r\n\r\nexport const PublicHolidaySettingOptions = [\r\n\t{\r\n\t\tid: PublicHolidaySetting.RunOnPublicHolidays,\r\n\t\ttitle: \"Run on Public Holidays\"\r\n\t},\r\n\t{\r\n\t\tid: PublicHolidaySetting.SkipPublicHolidays,\r\n\t\ttitle: \"Skip Public Holidays\"\r\n\t},\r\n\t{\r\n\t\tid: PublicHolidaySetting.AlwaysRun,\r\n\t\ttitle: \"Always Run\"\r\n\t}\r\n];\r\n\r\nexport enum DayOfWeek {\r\n\tMonday = 1,\r\n\tTuesday = 2,\r\n\tWednesday = 3,\r\n\tThursday = 4,\r\n\tFriday = 5,\r\n\tSaturday = 6,\r\n\tSunday = 7\r\n}\r\n\r\nexport const CalendarRangeDay: string = \"day\";\r\nexport const CalendarRangeWeek: string = \"week\";\r\nexport const CalendarRangeMonth: string = \"month\";\r\n\r\nexport const CalendarRangeTypeOptions: string[] = [CalendarRangeDay, CalendarRangeWeek, CalendarRangeMonth];\r\n\r\nexport type CalendarRangeType = typeof CalendarRangeDay | typeof CalendarRangeWeek | typeof CalendarRangeMonth;\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaTreeSelect.vue?vue&type=style&index=0&id=5f5af1ca&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportBuilder.vue?vue&type=style&index=0&id=4addd478&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventClose.vue?vue&type=style&index=0&id=a4f3d6ca&prod&scoped=true&lang=scss\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DistanceConfigurationEditModal.vue?vue&type=style&index=0&id=57ad2707&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"text-center timeZone-display\",attrs:{\"data-cy\":\"timeZone-display\"}},[_c('i',{staticClass:\"fa fa-clock pr-2 pt-2\"}),(this.showDate)?_c('span',{attrs:{\"data-cy\":\"areaDateTimeDisplay-showDate\"}},[_vm._v(\" \"+_vm._s(this.areaDate)+\" \")]):_vm._e(),(this.showTime)?_c('span',{attrs:{\"data-cy\":\"areaDateTimeDisplay-showTime\"}},[_vm._v(\" \"+_vm._s(this.areaTime)+\" \")]):_vm._e(),(this.showTimeZone)?_c('span',{attrs:{\"data-cy\":\"areaDateTimeDisplay-showTimeZone\"}},[_vm._v(\" \"+_vm._s(this.timeZone && this.timeZone.id || null)+\" \")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { Getter, State, Action } from \"vuex-class\";\r\nimport { TimeZone } from \"@/store/types\";\r\n\r\n@Component({\r\n})\r\n\r\nexport default class AreaDateTimeDisplay extends Vue {\r\n\t@Prop({type: Number}) public timeZoneId: number;\r\n\t@Prop({type: Number}) public groupId: number;\r\n\t@Prop({type: Boolean, default: true}) showDate;\r\n\t@Prop({type: Boolean, default: true}) showTime;\r\n\t@Prop({type: Boolean, default: true}) showTimeZone;\r\n\r\n\t@State private timeZones: TimeZone[];\r\n\t@Getter getTimeZone: (timeZoneId: number) => TimeZone;\r\n\t@Action getTimeZones: () => Promise;\r\n\r\n\tprivate timeStringArea: string = \"en-US\";\r\n\tprivate areaTime: string = \"\";\r\n\tprivate areaDate: string = \"\";\r\n\tprivate timeZone: TimeZone;\r\n\tprivate timeZoneOptions: Intl.DateTimeFormatOptions;\r\n\tprivate dateOptions: Intl.DateTimeFormatOptions;\r\n\tprivate timeoutInterval: NodeJS.Timeout = null; // Used to stop updating the area time when no longer on the page\r\n\r\n\tpublic async mounted(): Promise {\r\n\t\tawait this.getTimeZones();\r\n\r\n\t\t// If the timezone does not yet have a value, set it\r\n\t\tif(this.timeZone == null)\r\n\t\t{\r\n\t\t\tthis.setTimeZone();\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"timeZoneId\")\r\n\tprivate setTimeZone(): void {\r\n\t\tthis.timeZone = this.getTimeZone(this.timeZoneId);\r\n\r\n\t\tif (!!this.timeZone && !!this.timeZone.iana){\r\n\t\t\tthis.timeZoneOptions = {\r\n\t\t\t\ttimeZone: this.timeZone.iana,\r\n\t\t\t\thour12: true,\r\n\t\t\t\thour: \"numeric\",\r\n\t\t\t\tminute: \"numeric\",\r\n\t\t\t\tsecond: \"numeric\",\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.dateOptions = {\r\n\t\t\t\ttimeZone: this.timeZone.iana,\r\n\t\t\t}\r\n\r\n\t\t\tthis.setAreaDateTime();\r\n\t\t}\r\n\t}\r\n\r\n\t// Sets the area time, using local time and applying timezone. Recursively calls every second.\r\n\tprivate setAreaDateTime(): void {\r\n\t\tconst date = new Date();\r\n\t\tthis.areaTime = date.toLocaleTimeString(this.timeStringArea, this.timeZoneOptions);\r\n\t\tthis.areaDate = date.toLocaleDateString(this.timeStringArea, this.dateOptions);\r\n\r\n\t\tthis.timeoutInterval = setTimeout(this.setAreaDateTime, 1000);\r\n\t}\r\n\r\n\tbeforeDestroy(): void {\r\n\t\t// Stop updating the area time when no longer on the page\r\n\t\tclearTimeout(this.timeoutInterval);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaDateTimeDisplay.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaDateTimeDisplay.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaDateTimeDisplay.vue?vue&type=template&id=3d856a66&scoped=true&v-if=this.timeZone\"\nimport script from \"./AreaDateTimeDisplay.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaDateTimeDisplay.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaDateTimeDisplay.vue?vue&type=style&index=0&id=3d856a66&prod&scoped=true&lang=scss\"\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 \"3d856a66\",\n null\n \n)\n\nexport default component.exports","export interface SessionsState {\r\n\tsessions: any;\r\n\trequestStatus: number;\r\n}\r\n\r\nexport enum SessionResource {\r\n\tAuditServiceSession = 2,\r\n\tDeviceServiceSession = 3,\r\n\tStandardLoginSession = 5,\r\n\tMobileUserSession = 6,\r\n}\r\n\r\nexport interface UpdateSessionParams {\r\n\tresourceId: ResourceType;\r\n\teventId?: number;\r\n\tregionId?: number | null;\r\n}\r\n\r\nexport enum ResourceType {\r\n\tReports = 1,\r\n\tAudit = 2,\r\n\tProxy = 3,\r\n\tAdmin = 4,\r\n\tOther = 5,\r\n\tMobile = 6\r\n}","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeriodAlarmCountAdvancedFilter.vue?vue&type=style&index=0&id=5fd30a73&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.editing)?_c('div',{staticClass:\"flex-grow-1\",attrs:{\"data-cy\":\"input-edit\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.task.taskText),expression:\"task.taskText\"}],class:[{invalid: _vm.hasValidationErrors, 'error-animated': _vm.showErrorAnimation}, 'form-control'],attrs:{\"placeholder\":\"Question?\",\"type\":\"text\"},domProps:{\"value\":(_vm.task.taskText)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.task, \"taskText\", $event.target.value)},_vm.onValidateTask]}}),_c('div',{staticClass:\"py-2\"},[_c('vue-select',{staticClass:\"dark col-12\",attrs:{\"options\":_vm.dynamicDataTypes,\"label\":\"name\",\"placeholder\":\"Please choose an option\"},model:{value:(_vm.selectedTaskDataType),callback:function ($$v) {_vm.selectedTaskDataType=$$v},expression:\"selectedTaskDataType\"}})],1)]):_c('div',{attrs:{\"data-cy\":\"input-task\"}},[(!_vm.task.completed)?_c('div',{attrs:{\"data-cy\":\"input-task-todo\"}},[_c('label',{staticStyle:{\"word-break\":\"break-word\"}},[_vm._v(_vm._s(_vm.task.taskText))]),_c('div',[_c('vue-select',{staticClass:\"dark col-12\",attrs:{\"options\":_vm.dynamicData,\"label\":\"value\",\"placeholder\":\"Please choose an option\",\"data-cy\":\"vSelectDynamicDataResults\"},model:{value:(_vm.selectedTaskOutcome),callback:function ($$v) {_vm.selectedTaskOutcome=$$v},expression:\"selectedTaskOutcome\"}})],1)]):_c('div',{staticStyle:{\"word-break\":\"break-word\"},attrs:{\"data-cy\":\"input-task-complete\"}},[_vm._v(\" Completed: \"+_vm._s(_vm.task.taskText)+\" \"),_c('br'),_vm._v(\" Result: \"+_vm._s(_vm.task.result)+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\timport { Component, Prop, Vue, Watch, Emit } from \"vue-property-decorator\";\n\timport { namespace, Getter, Mutation } from \"vuex-class\";\n import { ActionPlanTask } from \"@/store/tasks/types\";\n import vSelect from \"vue-select\";\n\timport { stringMixin } from \"@/mixins\";\n\n const { isNullOrWhitespace } = stringMixin.methods;\n const Tasks = namespace(\"tasks\");\n\n\t@Component({\n\t\tcomponents: {\n \"vue-select\": vSelect\n }\n\t})\n\texport default class DynamicDataList extends Vue {\n\n @Tasks.Action fetchDynamicDatalist: any;\n @Tasks.Getter getDynamicDatalist: any;\n\n @Tasks.Action fetchDynamicData: any;\n @Tasks.Getter getDynamicData: any;\n\n\t\t@Prop(Boolean) public editing: Boolean;\n\n\t\t@Prop() public task!: ActionPlanTask;\n\n\t\tpublic hasValidationErrors: boolean = false;\n\t\tpublic showErrorAnimation: boolean = false;\n\t\tpublic isValid: boolean = false;\n\n\t\t//Setup\n\t\tpublic dynamicDataTypes: any[] = [];\n\t\tpublic selectedTaskDataType: object = {};\n\n\t\t//View-Complete\n\t\tpublic dynamicData: any[] = [];\n\t\tpublic selectedTaskOutcome: object = {};\n\t\tprivate dataTypeId: number = 0;\n\n\t\tpublic async mounted() {\n\t\t\tthis.isValid = false;\n\t\t\tawait this.loadDependencys();\n\t\t}\n\n\t\tprivate async loadDependencys() {\n\t\t\tthis.dataTypeId = this.task.taskData[\"dataTypeId\"];\n\n\t\t\tif (this.editing) {\n this.onValidateTask();\n await this.fetchDynamicDatalist();\n this.dynamicDataTypes = this.getDynamicDatalist;\n\t\t\t} else {\n\t\t\t\tconst payload = {\n\t\t\t\t\tDataTypeId: this.dataTypeId,\n\t\t\t\t\tEventTaskId: this.task.eventTaskID\n\t\t\t\t}\n\t\t\t\tawait this.fetchDynamicData(payload);\n\n\n\t\t\t\tthis.getDynamicData.forEach(element => {\n\t\t\t\t\tif (this.task.eventTaskID == element.eventTaskId) {\n\t\t\t\t\t\tthis.dynamicData.push(element);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Used for Setup.\n\t\t/** Watcher, when data changes within 'selectedTaskDataType' call 'onselectedTaskData'*/\n @Watch(\"selectedTaskDataType\", { deep: true, immediate: true })\n public onselectedTaskData(newValue) {\n\t\t\tif(this.editing) {\n\t\t\t\tthis.task.taskData = this.selectedTaskDataType;\n\t\t\t\tthis.onValidateTask();\n\t\t\t}\n }\n\n\t\t// Used for Task view/complete\n\t\t@Emit(\"complete-task\")\n\t\tpublic onCompleteTask() {\n\t\t\tlet result = {\n\t\t\t\t...this.task,\n\t\t\t\tresult: this.selectedTaskOutcome[\"value\"],\n\t\t\t\ttaskData: this.selectedTaskOutcome[\"dataTypeId\"],\n\t\t\t\tcompleted: true };\n\t\t\treturn result;\n\t\t}\n\n\t\t// Ensure the task was setup correctly.\n @Watch(\"selectedTaskOutcome\", { deep: true, immediate: true })\n\t\t@Emit(\"validate-task\")\n\t\tpublic onValidateTask() {\n if(this.editing) {\n\t\t\t\tthis.isValid = !isNullOrWhitespace(this.task.taskText) && !isNullOrWhitespace(this.task.taskData[\"name\"]) ? true : false;\n } else {\n\t\t\t\t this.isValid = !isNullOrWhitespace(this.selectedTaskOutcome[\"value\"]);\n }\n\n if(!this.editing && this.isValid) {\n this.onCompleteTask();\n\t\t\t}\n\n\t\t\treturn this.isValid;\n\t\t}\n\t}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicDataList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DynamicDataList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DynamicDataList.vue?vue&type=template&id=e3c11804\"\nimport script from \"./DynamicDataList.vue?vue&type=script&lang=ts\"\nexport * from \"./DynamicDataList.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./email-attachments.vue?vue&type=style&index=0&id=0f073957&prod&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.selectionControls),function(outcome,i){return _c('b-form-group',{key:i},[_c('v-select-3',{ref:'outcomeSelect' + i,refInFor:true,attrs:{\"input-id\":(\"ms-event-close-outcome-\" + i),\"value\":_vm.value && _vm.value[i] ? _vm.value[i] : null,\"label\":\"title\",\"options\":outcome.children,\"placeholder\":_vm.placeholder,\"searchable\":true,\"clear-search-on-blur\":function () { return false; },\"clear-search-on-select\":true,\"disabled\":_vm.disabled,\"data-cy\":(\"ms-event-close-outcome-\" + i)},on:{\"input\":function (v) { return _vm.selected(i, v); }},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(ref){\nvar option = ref.option;\nreturn [_vm._t(\"singleLabel\",[_c('span',[_vm._v(_vm._s(option[_vm.titlePath]))])],null,option)]}}],null,true)})],1)}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch, Prop, Emit } from \"vue-property-decorator\";\r\n\r\nimport vSelect3 from \"vselect3\"\r\n\r\ninterface NestedValue {\r\n\ttitle: string\r\n\tchildren: any[]\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vSelect3\r\n\t}\r\n})\r\nexport default class NestedSelect extends Vue {\r\n\t// --- Props ---\r\n\t@Prop({ type: Array })\r\n\tvalue!: any[];\r\n\r\n\t@Prop({ type: Array, required: true })\r\n\toptionTree!: any[];\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tdisabled!: any[];\r\n\r\n\t@Prop({ type: String, default: \"\" })\r\n\tplaceholder!: string;\r\n\r\n\t@Prop({ type: String, default: \"title\" })\r\n\ttitlePath!: string;\r\n\r\n\t@Prop({ type: String, default: \"children\" })\r\n\tchildrenPath!: string;\r\n\r\n\t@Prop({type: Boolean, default: true, required: false})\r\n\timmediateFocus!: boolean;\r\n\r\n\t// --- Computed Properties ---\r\n\r\n\t/**\r\n\t * List of current selection controls\r\n\t * @returns {NestedValue[]} - Values for selection\r\n\t */\r\n\tprivate get selectionControls (): NestedValue[] {\r\n\t\tconst controls: NestedValue[] = [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"root\",\r\n\t\t\t\tchildren: this.optionTree ? this.optionTree : []\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\tif (this.value && this.value.length > 0) {\r\n\t\t\tfor (var outcomeSelection of this.value) {\r\n\t\t\t\t// Push additional control layers for value path\r\n\t\t\t\tif (outcomeSelection[this.childrenPath] && outcomeSelection[this.childrenPath].length > 0) {\r\n\t\t\t\t\tcontrols.push({\r\n\t\t\t\t\t\ttitle: outcomeSelection[this.titlePath],\r\n\t\t\t\t\t\tchildren: outcomeSelection[this.childrenPath]\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn controls;\r\n\t}\r\n\r\n\t// --- Lifecycle Hooks ---\r\n\r\n\tprivate mounted () {\r\n\t\tif (this.selectionControls.length > 0) {\r\n\r\n\t\t\t// Auto-open last control in list if immediate focus is enabled\r\n\t\t\tif(this.immediateFocus) {\r\n\t\t\t\tthis.focusOn(this.selectionControls.length - 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// --- Event Handlers ---\r\n\r\n\t/**\r\n\t * Sets the value of an item for the given index\r\n\t * @param {number} index - Index in path to apply\r\n\t * @param {any} item - Set item\r\n\t */\r\n\t@Emit(\"input\")\r\n\tprivate selected (index: number, item: any) {\r\n\t\tif (item) {\r\n\t\t\tif (item[this.childrenPath] && item[this.childrenPath].length > 0) {\r\n\t\t\t\tthis.focusOn(index + 1);\r\n\t\t\t} else {\r\n\t\t\t\tthis.blur(index);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.value[index]) {\r\n\t\t\tif (item) {\r\n\t\t\t\treturn [\r\n\t\t\t\t\t...this.value.slice(0, index),\r\n\t\t\t\t\titem\r\n\t\t\t\t];\r\n\t\t\t} else {\r\n\t\t\t\treturn this.value.slice(0, index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn [\r\n\t\t\t\t...this.value,\r\n\t\t\t\titem\r\n\t\t\t];\r\n\t\t}\r\n\t}\r\n\r\n\t// --- Utility ---\r\n\r\n\t/**\r\n\t * Focus on a control\r\n\t * @param index Index of control to focus on\r\n\t */\r\n\t private focusOn (index: number) {\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst outcomeSelect = this.$refs[\"outcomeSelect\" + index.toString()]?.[0];\r\n\t\t\tif (outcomeSelect) {\r\n\t\t\t\toutcomeSelect?.$el.querySelector(\"input\").focus();\r\n\t\t\t}\r\n\t\t}, 0.5 * this.$config.ANIMATION_DURATION);\r\n\t}\r\n\r\n\t/**\r\n\t * Blur a control\r\n\t * @param index Index of control to blur\r\n\t */\r\n\t private blur (index: number) {\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst outcomeSelect = this.$refs[\"outcomeSelect\" + index.toString()]?.[0];\r\n\t\t\tif (outcomeSelect) {\r\n\t\t\t\toutcomeSelect.$el.querySelector(\"input\").blur();\r\n\t\t\t}\r\n\t\t}, 0.5 * this.$config.ANIMATION_DURATION);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NestedSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NestedSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./NestedSelect.vue?vue&type=template&id=17fe737c\"\nimport script from \"./NestedSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./NestedSelect.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualPatrol.vue?vue&type=style&index=0&id=054bb136&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LastTimeAlarmAdvancedFilter.vue?vue&type=style&index=0&id=61799a53&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingModalFilteredAreas.vue?vue&type=style&index=0&id=6aab32d4&prod&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.featureEnabled)?_c('div',{attrs:{\"data-cy\":\"audit\"}},[(_vm.editing)?_c('div',{attrs:{\"data-cy\":\"audit-edit\"}},[_vm._v(\"View audit clips.\")]):_c('div',{staticClass:\"task-line-content task-audit\",attrs:{\"data-cy\":\"audit-task\"}},[(!_vm.task.completed)?_c('div',{attrs:{\"data-cy\":\"audit-task-todo\"}},[_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"data-cy\":\"audit-task-button\"},on:{\"click\":function($event){return _vm.viewAudit()}}},[_vm._v(\"View audit clips\")])]):_c('div',{attrs:{\"data-cy\":\"audit-task-completed\"}},[_vm._v(\"Completed action: Viewed audit clips.\")])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue, Watch, Emit } from \"vue-property-decorator\";\nimport { namespace, Getter, Mutation } from \"vuex-class\";\nimport api from \"@/services/api.service.ts\";\nimport { CameraType, ClipType } from \"@/store/site-monitor-cameras/types\";\nimport { EventDetails } from \"@/store/site-monitor/types\";\nimport { AuditService, MediaFile } from \"@/services/auditService\";\nimport { ActionPlanTask } from \"@/store/tasks/types\";\nimport { FeaturesList } from \"@/store/types\";\nimport { get } from \"lodash\";\nimport { SessionResource } from \"@/store/sessions/types\";\n\nconst SiteMonitor = namespace(\"siteMonitor\");\nconst SMCameras = namespace(\"siteMonitorCameras\");\nconst Session = namespace(\"sessions\");\n\n@Component({\n\tcomponents: {}\n})\nexport default class AuditTask extends Vue {\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\t@Session.Getter getSession: any;\n\n\t@SiteMonitor.Getter(\"getEventDetails\") getEventDetails: EventDetails;\n\t@SiteMonitor.Getter(\"getAuditService\") auditService: any;\n\t@SiteMonitor.Getter(\"getSelectedEventRecord\") selectedEventRecord: any;\n\n\t@SMCameras.Getter(\"getLayouts\") layouts!: number[][];\n\t@SMCameras.Getter(\"getMediaMatrixLayers\") layers!: any[];\n\t@SMCameras.Getter(\"getLayoutIndex\") layoutIndex!: number;\n\t@SMCameras.Getter(\"getDeviceControllerClips\") clips!: ClipType[];\n\t@SMCameras.Getter(\"getMediaMatrixClips\") getMediaMatrixClips: any;\n\t@SMCameras.Getter(\"getShownAuditClips\") getShownAuditClips: any;\n\n\t@SMCameras.Mutation setPushContents: any;\n\t@SMCameras.Mutation setAwaitingClip: any;\n\n\t@Prop(Boolean)\n\tpublic editing: Boolean;\n\n\t@Prop()\n\tpublic task!: ActionPlanTask;\n\n\tprivate clipsFailed: boolean = false;\n\tprivate clipsFailedStatus: string = \"\";\n\tprivate noClipsAvailable: boolean = false;\n\tprivate gettingClips: boolean = false;\n\n\tpublic mounted() {\n\t\tif (this.editing) {\n\t\t\t// No validation needed so call valid task by default.\n\t\t\tthis.task.taskText = \"Show Audit\";\n\t\t\tthis.onValidateTask();\n\t\t}\n\t}\n\n\t@Emit(\"validate-task\")\n\tpublic onValidateTask() {\n\t\treturn true;\n\t}\n\n\t@Emit(\"complete-task\")\n\tpublic onCompleteTask() {\n\t\treturn {\n\t\t\t...this.task,\n\t\t\tcompleted: true\n\t\t};\n\t}\n\n\t// Get the total number of cells in the media matrix.\n\tpublic get cellCount() {\n\t\treturn this.layouts[this.layoutIndex][0] * this.layouts[this.layoutIndex][1];\n\t}\n\n\t// Called when the ViewAudit button is clicked\n\tpublic async viewAudit() {\n\t\t// Get the event details.\n\t\tconst event = await api.loadEventRecords(this.task.eventID, 0);\n\n\t\t// Load audit clips to be displayed.\n\t\tawait this.getClips(event.data[0].eventRecordID);\n\n\t\t// Complete the task.\n\t\tthis.onCompleteTask();\n\t}\n\n\tpublic async getClips(eventRecordID: number) {\n\t\tvar auth = this.getSession(SessionResource.AuditServiceSession);\n\n\t\t// Ensure the audit service is available.\n\t\tif (!this.auditService) {\n\t\t\tconsole.error(\"No audit service available.\");\n\t\t\treturn;\n\t\t}\n\n\t\t// Ensure clips are not already being loaded.\n\t\tif (this.gettingClips) {\n\t\t\tconsole.info(\"Already fetching clips.\");\n\t\t\treturn;\n\t\t}\n\n\t\t// Mark that we're getting clips; prevent duplicate operations.\n\t\tthis.gettingClips = true;\n\n\t\t// Do request to audit service to get media list.\n\t\tlet rawClips = await this.getMediaList(auth, eventRecordID);\n\n\t\t// Ensure clips were found.\n\t\tif (rawClips) {\n\t\t\tthis.clipsFailed = false;\n\t\t\tthis.clipsFailedStatus = \"\";\n\t\t\tthis.noClipsAvailable = rawClips.length == 0;\n\t\t} else {\n\t\t\trawClips = [];\n\t\t\tthis.noClipsAvailable = true;\n\t\t\tthis.clipsFailed = false;\n\t\t\tthis.clipsFailedStatus = \"\";\n\t\t}\n\n\t\t// Filter the list of clips to ensure they have the data needed.\n\t\tlet clips = this.filterClips(rawClips);\n\n\t\t// Check if all the clips required are already on the media matrix.\n\t\tif (!this.checkIfAllClipsLoaded(clips)) {\n\t\t\t// Load the clips from audit.\n\t\t\tthis.loadClips(clips, eventRecordID);\n\t\t}\n\n\t\t// Reset flag as the process of loading clips is now done.\n\t\tthis.gettingClips = false;\n\t}\n\n\tprivate async getMediaList(auth, eventRecordID) {\n\t\ttry {\n\t\t\t// Use the audit service to try and get a list of all media attached to the event.\n\t\t\treturn (await this.auditService.mediaList(auth, eventRecordID)).data;\n\t\t} catch(e) {\n\t\t\tthis.gettingClips = false;\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate filterClips(rawClips: Array) {\n\t\t// Filter out any clips that do not have a unique file identifier and any other relevant information.\n\t\trawClips = rawClips.filter((clip) => {\n\t\t\treturn clip.UniqueFileIdentifier && (clip.DeviceID || clip.DeviceTitle || clip.StartTime)\n\t\t});\n\n\t\t// Check that there are still clips to be loaded.\n\t\tthis.noClipsAvailable = rawClips.length == 0;\n\t\treturn rawClips;\n\t}\n\n\tprivate checkIfAllClipsLoaded(clips: Array): boolean {\n\t\t// Get all the clips currently on the Media Matrix.\n\t\tlet matrixClips = this.getShownAuditClips;\n\n\t\t// Check if all the clips are currently loaded.\n\t\treturn clips.every((clip: any) => matrixClips.includes(clip.UniqueFileIdentifier));\n\t}\n\n\tprivate loadClips(clips: Array, eventRecordID: number) {\n\t\tlet index = 1;\n\n\t\t// Set clips\n\t\tclips.some((clip: any) => {\n\t\t\tthis.setPushContents({\n\t\t\t\tindex: index,\n\t\t\t\tnewContents: {\n\t\t\t\t\tclip: {\n\t\t\t\t\t\teventRecordID: eventRecordID,\n\t\t\t\t\t\tclip: clip\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\teventId: this.task.eventID\n\t\t\t});\n\n\t\t\tindex++;\n\t\t\t// Return true if there are no more cells in the media matrix.\n\t\t\treturn index > this.cellCount;\n\t\t});\n\t}\n\n\tprivate get featureEnabled() {\n\t\treturn get(this.featuresList, [\"Actions\", \"ViewAudit\"], false)\n\t}\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuditTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuditTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AuditTask.vue?vue&type=template&id=5bce332e\"\nimport script from \"./AuditTask.vue?vue&type=script&lang=ts\"\nexport * from \"./AuditTask.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StarredCameras.vue?vue&type=style&index=0&id=63532734&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['thin-scroll', _vm.containerOrientation]},[(!_vm.customFieldValueAndSettings || _vm.customFieldValueAndSettings.length == 0)?_c('div',[_c('h3',{staticClass:\"align-center-cf\"},[_vm._v(\"No Additional Information\")])]):_vm._l((_vm.customFieldValueAndSettings.filter(function (cf) { return cf.setting; })),function(customField,index){return _c('custom-field',{key:index,class:['custom-field-container', _vm.allowHorizontalClass],style:(_vm.customFieldStyling()),attrs:{\"value\":customField.value,\"setting\":customField.setting,\"maxCharacters\":_vm.maxCharacters}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.value)?_c('div',[_c('div',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"custom-field-title\",attrs:{\"title\":((_vm.setting.title) + \".\"),\"data-cy\":\"custom-field-title\"}},[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.setting.title,20))+\": \")]),(_vm.isType('Checkbox'))?_c('input',{staticClass:\"custom-field-value\",attrs:{\"data-cy\":\"custom-field-value-checkbox\",\"type\":\"checkbox\",\"disabled\":\"\"},domProps:{\"checked\":_vm.checkboxValue}}):(_vm.isType('Hyperlink'))?_c('a',{staticClass:\"break-word\",attrs:{\"href\":_vm.value.value,\"target\":\"_blank\",\"data-cy\":\"custom-field-value-hyperlink\"}},[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.value.value,_vm.maxCharacters))+\" \")]):(_vm.isType('Date'))?_c('div',{attrs:{\"data-cy\":\"custom-field-value-date\"}},[_vm._v(\" \"+_vm._s(_vm.getConvertedCustomFieldDateValue(this.value.value))+\" \")]):(_vm.isType('Icon'))?_c('icon-upload',{attrs:{\"customFieldId\":_vm.value.id,\"model\":_vm.value.value,\"readonly\":true,\"useAltModelSearch\":true,\"data-cy\":\"custom-field-value-icon\"}}):_c('div',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"break-word custom-field-value\",attrs:{\"title\":((_vm.value.value) + \".\"),\"data-cy\":\"custom-field-value-text\"}},[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.value.value,20))+\" \")])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { CustomFieldDto, CustomFieldTypes, CustomFieldValues } from \"@/store/custom-fields/types\";\r\nimport { truncateString } from \"@/filters\";\r\nimport IconUpload from \"@/components/IconUpload.vue\";\r\nimport CustomFieldDatePicker from \"@/components/custom-fields/CustomFieldDatePicker.vue\";\r\nimport { customFieldMixins } from \"@/mixins/customFieldMixins\";\r\n\r\nconst { convertCustomFieldDateValue } = customFieldMixins.methods;\r\n\r\n@Component({\r\n\tfilters: { truncateString },\r\n\tcomponents: {\r\n\t\t\"icon-upload\": IconUpload,\r\n\t\t\"custom-field-date-picker\": CustomFieldDatePicker\r\n\t}\r\n})\r\n\r\nexport default class CustomDefinedField extends Vue {\r\n\t@Prop({ type: Object, required: true }) public value: CustomFieldValues;\r\n\t@Prop({ type: Object, required: true }) public setting: CustomFieldDto;\r\n\t@Prop({ type: Number, default: 250 }) public maxCharacters: number;\r\n\r\n\tprivate type: string;\r\n\r\n\t@Watch(\"type\")\r\n\tprivate beforeMount(): void {\r\n\t\tthis.type = CustomFieldTypes[this.setting?.customFieldTypeId];\r\n\t}\r\n\r\n\tprivate get checkboxValue(): boolean {\r\n\t\treturn this.value.value == \"true\" ? true : false;\r\n\t}\r\n\r\n\tprivate isCustomFieldTypeTextOrTextArea(customFieldType: string): boolean {\r\n\t\treturn customFieldType == 'Text' || customFieldType == 'TextArea' || customFieldType == 'Number';\r\n\t}\r\n\r\n\tprivate getConvertedCustomFieldDateValue(date: string): string {\r\n\t\treturn convertCustomFieldDateValue(date);\r\n\t}\r\n\r\n\tprivate isType(customFieldType: string): boolean {\r\n\t\tif (!(customFieldType in CustomFieldTypes)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.type?.toLowerCase() === customFieldType?.toLowerCase();\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDefinedField.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDefinedField.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomDefinedField.vue?vue&type=template&id=9af4c82e&scoped=true\"\nimport script from \"./CustomDefinedField.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomDefinedField.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomDefinedField.vue?vue&type=style&index=0&id=9af4c82e&prod&scoped=true&lang=css\"\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 \"9af4c82e\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { CustomFieldDto, CustomFieldValues, CustomFieldValueAndSettings, CustomFieldTableTypes } from \"@/store/custom-fields/types\";\r\nimport CustomDefinedField from \"./CustomDefinedField.vue\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { orderBy } from \"lodash\";\r\n\r\nconst CustomFields = namespace(\"customFields\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"custom-field\": CustomDefinedField\r\n\t}\r\n})\r\nexport default class CustomDefinedFieldsDisplay extends Vue {\r\n\t@Prop({ type: Number, required: true }) public customFieldTableType: number; // links to an enum\r\n\t@Prop({ type: Array }) public values: CustomFieldValues[];\r\n\r\n\t@Prop({ type: Boolean, default: false }) public allowHorizontal: boolean;\r\n\t@Prop({ type: Number, default: 22 }) public maxWidth: number;\r\n\t@Prop({ type: Number, default: 250 }) public maxCharacters: number;\r\n\r\n\t@CustomFields.Action retrieveCustomFields: ({ tableType, live }: { tableType: number, live: boolean; }) => Promise;\r\n\t@CustomFields.State areaCustomFields: CustomFieldDto[];\r\n\t@CustomFields.State contactCustomFields: CustomFieldDto[];\r\n\t@CustomFields.State alarmCustomFields: CustomFieldDto[];\r\n\r\n\t@Watch(\"customFieldTableType\")\r\n\tprivate async mounted(): Promise {\r\n\t\tawait this.retrieveCustomFields({ tableType: this.customFieldTableType, live: true });\r\n\t}\r\n\r\n\tprivate get customFieldSettings(): CustomFieldDto[] {\r\n\t\tswitch (this.customFieldTableType) {\r\n\t\t\tcase CustomFieldTableTypes.Area:\r\n\t\t\t\treturn this.areaCustomFields;\r\n\t\t\tcase CustomFieldTableTypes.Contact:\r\n\t\t\t\treturn this.contactCustomFields;\r\n\t\t\tcase CustomFieldTableTypes.Alarm:\r\n\t\t\t\treturn this.alarmCustomFields;\r\n\t\t\tdefault:\r\n\t\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get customFieldValueAndSettings(): CustomFieldValueAndSettings[] {\r\n\t\tif (!this.values || this.values.length == 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet unorderedFields = this.values.map(v => { return { value: v, setting: this.retrieveCustomFieldSettingForValue(v) }; });\r\n\t\tunorderedFields = unorderedFields.filter(f => f.setting != null);\r\n\r\n\t\tlet orderedFields = orderBy(unorderedFields, field => field.setting.order, [\"asc\"]);\r\n\r\n\t\treturn orderedFields;\r\n\t}\r\n\r\n\tprivate retrieveCustomFieldSettingForValue(customFieldValue: CustomFieldValues): CustomFieldDto {\r\n\t\treturn this.customFieldSettings.firstOrDefault(cf => cf.id == customFieldValue.id);\r\n\t}\r\n\r\n\tprivate get allowHorizontalClass(): string {\r\n\t\treturn this.allowHorizontal ? \"allow-horizontal\" : \"disable-horizontal\";\r\n\t}\r\n\r\n\tprivate get containerOrientation(): string {\r\n\t\treturn this.allowHorizontal ? \"custom-field-display\" : \"custom-field-vertical-display\";\r\n\t}\r\n\r\n\tprivate customFieldStyling(): { \"min-width\": string, \"max-width\": string; } {\r\n\t\treturn {\r\n\t\t\t\"min-width\": this.maxWidth + \"rem\",\r\n\t\t\t\"max-width\": this.maxWidth + \"rem\",\r\n\t\t};\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDefinedFieldsDisplay.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDefinedFieldsDisplay.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomDefinedFieldsDisplay.vue?vue&type=template&id=f4fa7d80\"\nimport script from \"./CustomDefinedFieldsDisplay.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomDefinedFieldsDisplay.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomDefinedFieldsDisplay.vue?vue&type=style&index=0&id=f4fa7d80&prod&lang=css\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickEndSettings.vue?vue&type=style&index=0&id=200a6932&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InsightsGraph.vue?vue&type=style&index=1&id=6a1f2c32&prod&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapDataSources.vue?vue&type=style&index=0&id=6ec580ab&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"id\":\"leaveModal\",\"size\":\"xl\",\"body-class\":\"modal-overflow thin-scroll\",\"centered\":\"\",\"role\":\"dialog\"},on:{\"hidden\":_vm.closeDetails},model:{value:(_vm.leaveModal),callback:function ($$v) {_vm.leaveModal=$$v},expression:\"leaveModal\"}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',{attrs:{\"data-cy\":\"area-name\"}},[_vm._v(_vm._s(_vm.siteTitle)+\" Area Details\")])]),_c('div',{staticClass:\"pl-4 text-right\"},[_c('area-date-time-display',{attrs:{\"timeZoneId\":this.timeZoneId,\"data-cy\":\"area-date-time-display\"}})],1)]),_c('area-details',{attrs:{\"groupId\":_vm.groupId}}),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"tabindex\":\"0\",\"data-dismiss\":\"modal\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.closeDetails()},\"click\":function($event){return _vm.closeDetails()}}},[_c('span',{staticClass:\"glyphicon glyphicon-remove\"}),_vm._v(\" Close \")])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport api from \"@/services/api.service\";\r\nimport AreaDetails from \"./AreaDetails.vue\";\r\nimport AreaDateTimeDisplay from \"./AreaDateTimeDisplay.vue\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"area-details\": AreaDetails,\r\n\t\t\"area-date-time-display\": AreaDateTimeDisplay,\r\n\t}\r\n})\r\nexport default class EventDetails extends Vue {\r\n\t@SiteMonitor.Getter(\"getEventDetailsShown\") eventDetailsShown!: boolean;\r\n\t@SiteMonitor.Mutation setEventDetailsShown: any;\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t@Prop({ type: String }) siteTitle;\r\n\t@Prop({ type: Number }) groupId;\r\n\r\n\tprivate timeZoneId: number = null;\r\n\tprivate leaveModal: boolean = false;\r\n\r\n\tcreated() {\r\n\t\tthis.setEventDetailsShown(false);\r\n\t}\r\n\r\n\t@Watch(\"groupId\")\r\n\tprivate async setTimeZoneId(): Promise {\r\n\t\tif (this.groupId > 0) {\r\n\t\t\tlet { timeZoneID }: { timeZoneID: number; } = await api.loadGroup(this.groupId);\r\n\t\t\tthis.timeZoneId = timeZoneID;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"eventDetailsShown\")\r\n\tonEventDetailsShownChanged(value: boolean, oldValue: boolean) {\r\n\t\tif (value) {\r\n\t\t\tthis.leaveModal = true;\r\n\t\t} else {\r\n\t\t\tthis.leaveModal = false\r\n\t\t}\r\n\t}\r\n\r\n\tcloseDetails() {\r\n\t\tthis.setEventDetailsShown(false);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventDetails.vue?vue&type=template&id=39d3d30e\"\nimport script from \"./EventDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./EventDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventDetails.vue?vue&type=style&index=0&id=39d3d30e&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointSelect.vue?vue&type=style&index=0&id=d8c9d9c2&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaRegionSetup.vue?vue&type=style&index=0&id=09c11b9d&prod&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingModal.vue?vue&type=style&index=1&id=02d93632&prod&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\",staticStyle:{\"padding-top\":\"10px\"}},[_c('div',{ref:\"mfaContainer\"},[_c('p',[_vm._v(\"Please configure in preferred Authenticator (Microsoft, Google, etc):\")]),_c('img',{staticClass:\"img-thumbnail\",attrs:{\"src\":this.authObj ? this.authObj.tempQrURL : '',\"alt\":\"...\"}}),_c('b-button',{attrs:{\"disabled\":!this.authObj,\"variant\":\"secondary\"},on:{\"click\":_vm.copySecretToClipboard}},[_c('i',{staticClass:\"far fa-copy\"}),_vm._v(\" Secret - \"+_vm._s(this.authObj ? this.authObj.tempSecret : 'Not Set')+\" \")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.localAuthCode),expression:\"localAuthCode\"}],staticClass:\"form-control\",attrs:{\"id\":\"localAuthCode\",\"type\":\"text\",\"placeholder\":\"Please enter code as appears on Authenticator\"},domProps:{\"value\":(_vm.localAuthCode)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.localAuthCode=$event.target.value}}}),_vm._m(0),_c('b-button-toolbar',[_c('b-button',{staticClass:\"btn btn-primary\",attrs:{\"id\":\"testValidCode\",\"type\":\"submit\",\"disabled\":!_vm.localAuthCode},on:{\"click\":function($event){return _vm.submitSecret()}}},[_vm._v(\"Verify Two-Factor Authentication \")]),_c('b-button',{staticClass:\"btn\",on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('cancel')}}},[_vm._v(\"Cancel \")])],1)],1),(_vm.mfaError.length)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"id\":\"divError\"}},[_vm._v(_vm._s(_vm.mfaError))]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_vm._v(\"For more information please see our \"),_c('a',{attrs:{\"target\":\"_blank\",\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360018511298\"}},[_vm._v(\"support page\")])])}]\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue, Ref } from \"vue-property-decorator\";\r\nimport api from \"@/services/api.service\";\r\nimport QRCode from \"qrcode\";\r\nimport speakeasy from \"speakeasy\";\r\n\r\ninterface MfaAuth {\r\n\ttempSecret: string;\r\n\ttempQrURL: string;\r\n\totpURL: string;\r\n}\r\n\r\n@Component({\r\n\tcomponents: {}\r\n})\r\nexport default class MFA extends Vue {\r\n @Prop({ type: String }) public username: string;\r\n @Prop({ type: String }) public pass: string;\r\n\r\n\t@Ref() readonly mfaContainer: any;\r\n\r\n public localAuthCode: string = \"\";\r\n\tpublic mfaError: string = \"\";\r\n private authObj: MfaAuth = null;\r\n\r\n private async mounted() {\r\n // Create our MFA QR code\r\n var secret = speakeasy.generateSecret({\r\n length: 20,\r\n name: (\"Sureview Operations (\" + this.username + \")\"),\r\n issuer: \"Sureview Operations\"});\r\n QRCode.toDataURL(secret.otpauth_url, (err, data_url)=>{\r\n this.authObj = {\r\n tempSecret: secret.base32,\r\n tempQrURL: data_url,\r\n otpURL: secret.otpauth_url};\r\n });\r\n }\r\n\r\n private async submitSecret() {\r\n \tlet mfaRequestBody;\r\n \tif (this.username && this.pass) {\r\n\t\t\tmfaRequestBody = {\r\n\t\t\t\tusername: this.username,\r\n\t\t\t\tpassword: this.pass,\r\n\t\t\t\tauthCode: this.localAuthCode,\r\n\t\t\t\ttoken: this.authObj.tempSecret\r\n\t\t\t};\r\n\t\t}\r\n \telse {\r\n\t\t\tmfaRequestBody = {\r\n\t\t\t\tauthCode: this.localAuthCode,\r\n\t\t\t\ttoken: this.authObj.tempSecret\r\n\t\t\t};\r\n\t\t}\r\n\r\n try {\r\n\t\t\tawait api.setMfa(mfaRequestBody);\r\n\t\t\tthis.$emit('mfa-set');\r\n\t\t} catch (ex) {\r\n\t\t\tthis.mfaError = ex.response.data;\r\n\t\t}\r\n }\r\n\r\n\tprivate copySecretToClipboard() {\r\n\t\t// https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript\r\n\t\t// attaching temporary textarea to body works on login screen, but not works in account details\r\n\t\t// attaching it to container div works in both cases\r\n\t\tvar textArea = document.createElement(\"textarea\");\r\n\t\ttextArea.value = this.authObj.tempSecret;\r\n\t\ttextArea.style.top = \"0\";\r\n\t\ttextArea.style.left = \"0\";\r\n\t\ttextArea.style.position = \"fixed\";\r\n\t\tthis.mfaContainer.appendChild(textArea);\r\n\t\ttextArea.focus();\r\n\t\ttextArea.select();\r\n\r\n\t\tdocument.execCommand(\"copy\");\r\n\r\n\t\tthis.mfaContainer.removeChild(textArea);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MFA.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MFA.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MFA.vue?vue&type=template&id=6fe4a5c5\"\nimport script from \"./MFA.vue?vue&type=script&lang=ts\"\nexport * from \"./MFA.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscriptionDetails.vue?vue&type=style&index=0&id=ff66e8d0&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-dropdown',{attrs:{\"text\":_vm.text,\"size\":_vm.size,\"right\":_vm.right}},[(_vm.text)?_c('b-dropdown-header',{staticClass:\"search-dropdown-header\"},[_vm._v(_vm._s(_vm.text))]):_vm._e(),_c('b-dropdown-form',[_c('b-input-group',{staticClass:\"p-0 align-items-center\"},[_c('b-input-group-text',{staticClass:\"p-0\"},[_c('i',{staticClass:\"fa fa-magnifying-glass\"})]),_c('b-input',{attrs:{\"aria-label\":\"Search\",\"placeholder\":\"Search\",\"data-cy\":\"search-dropdown-input-search\"},on:{\"input\":function($event){return _vm.$emit('onSearch', _vm.searchTerm)}},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1)],1),_c('b-dropdown-divider'),_c('div',{staticClass:\"item-list\"},[(_vm.filteredItems.length < 1)?_c('div',{staticClass:\"text-center\",attrs:{\"data-cy\":\"noOptionsFound\"}},[_vm._v(\" No \"+_vm._s(_vm.term)+\"s found. \")]):_vm._e(),_vm._l((_vm.filteredItems),function(item,index){return _c('b-dropdown-item',{key:index,on:{\"click\":function($event){return _vm.$emit('itemClick', item)}}},[_vm._v(\" \"+_vm._s(item[_vm.label])+\" \")])})],2),(_vm.canCreateOption && _vm.searchTerm)?_c('div',{staticClass:\"pt-2 text-center\"},[_c('b-btn',{staticClass:\"add-custom-option-button\",attrs:{\"data-cy\":\"addCustomOptionButton\",\"size\":\"sm\"},on:{\"click\":_vm.onAddNewItem}},[_vm._v(_vm._s(_vm.text)+\": \"),_c('strong',[_vm._v(_vm._s(_vm.searchTerm))])])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\"\r\n\r\n@Component({})\r\nexport default class SearchDropDown extends Vue {\r\n\t@Prop({ type: Array, default: () => [] })\r\n\toptions!: any[]\r\n\r\n\t@Prop({ type: String, default: \"label\" })\r\n\tlabel!: string\r\n\r\n\t@Prop({ type: String, default: \"\" })\r\n\ttext!: string\r\n\r\n\t@Prop({ type: String, default: \"md\" })\r\n\tsize!: \"sm\" | \"md\" | \"lg\"\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tright!: boolean\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tcanCreateOption!: boolean;\r\n\r\n\t@Prop({ type: String, default: \"option\" })\r\n\tterm!: string;\r\n\r\n\tprivate searchTerm: string = \"\"\r\n\r\n\tget filteredItems(): any[] {\r\n\t\tconst lowerSearch = this.searchTerm.toLowerCase()\r\n\t\treturn this.options.filter(o => (o[this.label] as string).toLowerCase().includes(lowerSearch))\r\n\t}\r\n\r\n\tprivate onAddNewItem(): void {\r\n\t\tthis.$emit(\"addNewItem\", this.searchTerm);\r\n\t\tthis.searchTerm = \"\";\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchDropDown.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchDropDown.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SearchDropDown.vue?vue&type=template&id=720bada0\"\nimport script from \"./SearchDropDown.vue?vue&type=script&lang=ts\"\nexport * from \"./SearchDropDown.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SearchDropDown.vue?vue&type=style&index=0&id=720bada0&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OpsLinks.vue?vue&type=style&index=0&id=e6dc1f54&prod&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DrawdownBreadcrumbs.vue?vue&type=style&index=0&id=048e6942&prod&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.editing)?_c('div',{staticClass:\"flex-grow-1\",attrs:{\"data-cy\":\"event-outcome-task-edit\"}},[_vm._v(\" This task allows the event outcome to be set before ending the event. \"),(_vm.eventOutcomePresetsEnabled)?_c('div',[_c('br'),_c('event-outcome-select',{staticClass:\"w-100\",attrs:{\"id\":\"categoryFilter\",\"eventCategories\":_vm.eventCategoriesMap,\"dataLoaded\":_vm.dataLoaded,\"initialValue\":_vm.eventCategoryInitialValueFromTaskData,\"data-cy\":\"event-outcome-task-outcome-selector-edit-mode\"},on:{\"input\":_vm.outcomeChanged,\"outcome-path\":_vm.outcomePathChanged}}),_c('b-alert',{staticClass:\"m-2\",attrs:{\"variant\":\"danger\",\"show\":!this.isLeafNode}},[_vm._v(\"*A specific outcome must be selected\")])],1):_vm._e(),(_vm.eventCloseEnabled)?_c('div',{staticClass:\"mt-2\"},[_c('h6',[_vm._v(\"Advanced Options\")]),_c('div',{staticClass:\"ml-3 mt-2\"},[_c('b-form-checkbox',{staticClass:\"m-1\",model:{value:(_vm.taskData.ackAllAlarms),callback:function ($$v) {_vm.$set(_vm.taskData, \"ackAllAlarms\", $$v)},expression:\"taskData.ackAllAlarms\"}},[_vm._v(\" Acknowledge all Alarms \")]),_c('b-form-checkbox',{staticClass:\"m-1\",model:{value:(_vm.taskData.forceResAllAlarms),callback:function ($$v) {_vm.$set(_vm.taskData, \"forceResAllAlarms\", $$v)},expression:\"taskData.forceResAllAlarms\"}},[_vm._v(\" Force Restore all Alarms \")]),_c('b-form-checkbox',{staticClass:\"m-1\",model:{value:(_vm.taskData.skipReqActions),callback:function ($$v) {_vm.$set(_vm.taskData, \"skipReqActions\", $$v)},expression:\"taskData.skipReqActions\"}},[_vm._v(\" Skip Required Actions \")]),_c('b-form-checkbox',{staticClass:\"m-1\",model:{value:(_vm.taskData.skipCloseDialog),callback:function ($$v) {_vm.$set(_vm.taskData, \"skipCloseDialog\", $$v)},expression:\"taskData.skipCloseDialog\"}},[_vm._v(\" Skip Event End Dialog \")]),_c('b-form-checkbox',{staticClass:\"m-1\",model:{value:(_vm.taskData.setCatNote),callback:function ($$v) {_vm.$set(_vm.taskData, \"setCatNote\", $$v)},expression:\"taskData.setCatNote\"}},[_vm._v(\" Set Category Note \")]),(_vm.taskData.setCatNote)?_c('span',[_c('b-form-textarea',{staticClass:\"custom-textarea ml-4\",attrs:{\"id\":\"txt-event-close-outcome-note-edit\",\"placeholder\":\"Notes\",\"formatter\":_vm.maxOutcomeNote},model:{value:(_vm.taskData.catNote),callback:function ($$v) {_vm.$set(_vm.taskData, \"catNote\", $$v)},expression:\"taskData.catNote\"}}),_c('p',{staticClass:\"ml-4\"},[_vm._v(_vm._s(_vm.taskData.catNote ? _vm.taskData.catNote.length: 0)+\" | 5000\")])],1):_vm._e()],1)]):_vm._e()]):_c('div',{staticClass:\"input-task\",attrs:{\"data-cy\":\"event-outcome-task\"}},[_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'o']}),expression:\"{down: ['shift', 'o']}\"}],staticClass:\"hidden\",on:{\"shortkey\":function($event){return _vm.onCompleteTask()}}}),(!_vm.task.completed)?_c('div',{attrs:{\"data-cy\":\"event-outcome-task-todo\"}},[_c('label',{staticStyle:{\"word-break\":\"break-word\"}},[_vm._v(_vm._s(this.computedTaskText))]),(_vm.task.isMine)?_c('event-outcome-select',{key:_vm.outcomeSelectKey,staticClass:\"w-100\",attrs:{\"id\":\"categoryFilter\",\"eventCategories\":_vm.eventCategoriesMap,\"dataLoaded\":_vm.dataLoaded,\"initialValue\":_vm.eventCategoryInitialValueFromTaskData,\"data-cy\":\"event-outcome-task-outcome-selector\",\"disabled\":_vm.isEventOnAudit},on:{\"input\":_vm.outcomeChanged,\"outcome-path\":_vm.outcomePathChanged}}):_vm._e(),(_vm.eventCloseEnabled)?_c('div',[(_vm.taskData.setCatNote)?_c('span',[_c('b-form-textarea',{staticClass:\"custom-textarea\",attrs:{\"id\":\"txt-event-close-outcome-note\",\"placeholder\":\"Notes\",\"formatter\":_vm.maxOutcomeNote},model:{value:(_vm.taskData.catNote),callback:function ($$v) {_vm.$set(_vm.taskData, \"catNote\", $$v)},expression:\"taskData.catNote\"}}),_c('p',[_vm._v(_vm._s(_vm.taskData.catNote ? _vm.taskData.catNote.length: 0)+\" | 5000\")])],1):_vm._e(),(_vm.anyEventCloseOptionsEnabled)?_c('div',{staticClass:\"mt-2 mb-2\"},[_vm._v(\" Completing this action will:- \"),_c('ul',[(_vm.taskData.ackAllAlarms)?_c('li',[_vm._v(\"Acknowledge all Alarms\")]):_vm._e(),(_vm.taskData.forceResAllAlarms)?_c('li',[_vm._v(\"Trigger a Force Restore on all Alarms\")]):_vm._e(),(_vm.taskData.skipReqActions)?_c('li',[_vm._v(\"Skip any remaining Actions\")]):_vm._e(),(_vm.taskData.skipCloseDialog)?_c('li',[_vm._v(\"Skip the Event End Dialog\")]):_vm._e(),(_vm.taskData.setCatNote)?_c('li',[_vm._v(\"Set the Category Note\")]):_vm._e()])]):_vm._e()]):_vm._e(),_c('b-button',{staticClass:\"btn float-right\",attrs:{\"size\":\"md\",\"variant\":\"primary\",\"disabled\":_vm.completeDisabled,\"data-cy\":\"event-outcome-task-complete-button\",\"title\":_vm.disabledText},on:{\"click\":_vm.onCompleteTask}},[(this.pendingComplete)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e(),_vm._v(\" Complete \")]),(_vm.task.isMine)?_c('b-button',{staticClass:\"float-right mr-1\",attrs:{\"size\":\"md\",\"variant\":\"secondary\",\"data-cy\":\"event-outcome-task-reset\",\"disabled\":_vm.isEventOnAudit},on:{\"click\":_vm.reset}},[_vm._v(\" Reset \")]):_vm._e()],1):_c('div',{staticStyle:{\"word-break\":\"break-word\"},attrs:{\"data-cy\":\"event-outcome-task-complete\"}},[_vm._v(\" Completed: Event Outcome \"),_c('br'),_vm._v(\" Result: \"+_vm._s(_vm.task.result)+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { ActionPlanTask, Task } from \"@/store/tasks/types\";\r\nimport EventOutcomeSelector from \"@/components/EventOutcomeSelector.vue\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\nimport { requiredIf } from \"vuelidate/lib/validators\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { EventOutcome, EventOutcomeResponse } from \"@/types/EventOutcome\";\r\nimport { EventOutcome as EventOutcomeFilter } from \"@/types/reports/Filters\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport EventTypes from \"@/types/sv-data/enums/EventTypes\";\r\nimport { cloneDeep } from \"lodash\";\r\nimport isEqual from 'lodash.isequal';\r\nimport TaskTypeIds from \"@/types/sv-data/enums/TaskTypeIds\";\r\nimport api from '@/services/api.service';\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst Tasks = namespace(\"tasks\");\r\n\r\ninterface eventOutcomeTaskData\r\n{\r\n\teventOutcomeId: number,\r\n\tackAllAlarms: boolean,\r\n\tforceResAllAlarms: boolean,\r\n\tskipReqActions: boolean,\r\n\tskipCloseDialog: boolean,\r\n\tsetCatNote: boolean,\r\n\tcatNote: string,\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"event-outcome-select\": EventOutcomeSelector\r\n\t},\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\teventOutcomeResult: {\r\n\t\t\trequired: requiredIf(function () {\r\n\t\t\t\treturn this.task?.required;\r\n\t\t\t}),\r\n\t\t}\r\n\t}\r\n})\r\nexport default class EventOutcomeTask extends Vue {\r\n\t@SiteMonitor.Getter(\"eventOutcomesFlatList\") private outcomesFlatList: EventOutcome[];\r\n\t@SiteMonitor.Getter(\"getEventDetails\") private eventDetails: EventDetails;\r\n\t@SiteMonitor.Getter(\"getEventRecordsAwaitingAckCount\") private awaitingAckCount: number;\r\n\t@SiteMonitor.Getter(\"getEventRecordsAwaitingRestoreCount\") private awaitingRestoreCount: number;\r\n\t@Tasks.Getter private getOutstandingRequiredTasks: Task[];\r\n\t@Getter getFeature: (featureNames: string[]) => boolean;\r\n\r\n\t@SiteMonitor.Mutation setEventDetails: (event: null) => void;\r\n\t@SiteMonitor.Mutation resetEventRecords: () => void;\r\n\r\n\t@SiteMonitor.Action private loadOutcomesForEvent: (eventId: number) => Promise;\r\n\t@SiteMonitor.Action private loadAllOutcomes: () => Promise;\r\n\t@SiteMonitor.Action(\"closeEvent\") private closeEvent: (outcome: any) => Promise;\r\n\t@SiteMonitor.Action private eventRecordAllAcknowledgement: (eventId:number) => Promise;\r\n\r\n\t@Prop()\r\n\tprivate task!: ActionPlanTask;\r\n\r\n\t@Prop({ required: true, type: Boolean, default: false})\r\n\tprivate editing!: boolean;\r\n\r\n\tprivate initialEventOutcomeId: number = 0;\r\n\tprivate initialEventOutcomeNote: string = \"\";\r\n\tprivate eventOutcomeId: number = 0;\r\n\tprivate eventOutcomePath: string = \"\";\r\n\tprivate disabledText: string = \"\";\r\n\tprivate dataLoaded: boolean = false;\r\n\tprivate pendingComplete: boolean = false;\r\n\tprivate outcomeSelectKey: number = 0;\r\n\r\n\tpublic taskData: eventOutcomeTaskData = {\r\n\t\teventOutcomeId: null,\r\n\t\tackAllAlarms: false,\r\n\t\tforceResAllAlarms: false,\r\n\t\tskipReqActions: false,\r\n\t\tskipCloseDialog: false,\r\n\t\tsetCatNote: false,\r\n\t\tcatNote: \"\",\r\n\t};\r\n\r\n\tprivate get eventId(): number {\r\n\t\treturn this.eventDetails ? this.eventDetails.eventID : 0;\r\n\t}\r\n\r\n\tprivate get eventOutcomeToCloseEvent(): boolean {\r\n\t\treturn this.getFeature([\"Actions\", \"EventOutcome\", \"EventOutcomeToCloseEvent\"]) && !this.eventCloseEnabled;\r\n\t}\r\n\r\n\tprivate get eventOutcomePresetsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Actions\", \"EventOutcome\", \"EventOutcomePresets\"]);\r\n\t}\r\n\r\n\tprivate get eventCloseEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Actions\", \"EventOutcome\", \"EventOutcomePresets\", \"AdvancedOptions\"]);\r\n\t}\r\n\r\n\tprivate get isEventOnAudit(): boolean {\r\n\t\treturn this.eventDetails?.eventTypeID === EventTypes.AuditTest;\r\n\t}\r\n\r\n\tprivate get eventCategoriesMap(): EventOutcomeFilter[] {\r\n\t\tif (!this.outcomesFlatList) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn this.outcomesFlatList.map((category) => {\r\n\t\t\treturn {\r\n\t\t\t\tid: category.eventOutcomeID,\r\n\t\t\t\tparentId: category.parentID,\r\n\t\t\t\ttitle: category.title,\r\n\t\t\t};\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get eventCategoryInitialValueFromTaskData(): EventOutcomeFilter[] {\r\n\t\tif (!this.outcomesFlatList || !this.eventOutcomePresetsEnabled) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (this.task.taskData && !isNaN(this.task.taskData.eventOutcomeId as number) && this.outcomesFlatList && this.outcomesFlatList.length > 0) {\r\n\t\t\tlet initialValue: EventOutcome = this.outcomesFlatList.find((category) => category.eventOutcomeID === this.task.taskData.eventOutcomeId);\r\n\r\n\t\t\t// if the initial value has been changed, don't update it\r\n\t\t\tif(this.eventOutcomeId > 0 && this.initialEventOutcomeId != this.eventOutcomeId)\r\n\t\t\t{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tthis.eventOutcomeId = initialValue?.eventOutcomeID;\r\n\r\n\t\t\tif (initialValue) {\r\n\t\t\t\treturn [{\r\n\t\t\t\t\tid: initialValue.eventOutcomeID,\r\n\t\t\t\t\tparentId: initialValue.parentID,\r\n\t\t\t\t\ttitle: initialValue.title,\r\n\t\t\t\t}];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate get computedTaskText(): string {\r\n\t\tif (!this.eventOutcomePresetsEnabled || this.eventOutcomePresetsEnabled && !this.task.taskData)\r\n\t\t{\r\n\t\t\treturn \"Event Outcome\";\r\n\t\t}\r\n\r\n\t\treturn this.task.taskText;\r\n\t}\r\n\r\n\tprivate get isOutcomeNoteValid(): boolean {\r\n\t\treturn !this.eventDetails?.eventNoteRequired\r\n\t\t|| (this.eventDetails?.eventNoteRequired && this.taskData?.catNote?.length > 0);\r\n\t}\r\n\r\n\t/**\r\n\t * If the selected event outcome is a leaf node (i.e. it has no children)\r\n\t * @private\r\n\t */\r\n\tprivate get isLeafNode(): boolean {\r\n\t\treturn this.eventOutcomeId != 0 && this.eventCategoriesMap.filter(outcome => outcome.parentId === this.eventOutcomeId).length == 0\r\n\t}\r\n\r\n\tprivate get anyEventCloseOptionsEnabled(): boolean\r\n\t{\r\n\t\treturn !this.task\r\n\t\t|| !this.task.taskData\r\n\t\t|| this.task.taskData.ackAllAlarms\r\n\t\t|| this.task.taskData.forceResAllAlarms\r\n\t\t|| this.task.taskData.skipReqActions\r\n\t\t|| this.task.taskData.skipCloseDialog\r\n\t\t|| this.task.taskData.setCatNote;\r\n\t}\r\n\r\n\tprivate get completeDisabled(): boolean\r\n\t{\r\n\t\tif(this.pendingComplete)\r\n\t\t{\r\n\t\t\tthis.disabledText = \"The task is being completed.\";\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(!this.eventOutcomeId || this.eventOutcomeId == 0)\r\n\t\t{\r\n\t\t\tthis.disabledText = \"No outcome has been selected.\";\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(!this.isLeafNode)\r\n\t\t{\r\n\t\t\tthis.disabledText = \"A specific outcome must be selected\";\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar outstandingTaskCount: number = this.getOutstandingRequiredTasks ? this.getOutstandingRequiredTasks.filter(gs => gs.taskTypeID != TaskTypeIds.EventOutcome).length : 0;\r\n\r\n\t\tif(!this.eventCloseEnabled && outstandingTaskCount > 1)\r\n\t\t{\r\n\t\t\tthis.disabledText = \"There are outstanding required tasks.\"\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif(this.eventCloseEnabled)\r\n\t\t{\r\n\t\t\tvar eventCloseErrors: string = \"\";\r\n\t\t\tif(this.taskData.setCatNote && !this.isOutcomeNoteValid)\r\n\t\t\t{\r\n\t\t\t\teventCloseErrors = \"An event outcome note is required.\"\r\n\t\t\t}\r\n\r\n\t\t\tif(this.taskData.skipCloseDialog)\r\n\t\t\t{\r\n\t\t\t\tif(!this.taskData.ackAllAlarms && this.awaitingAckCount > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\teventCloseErrors = \"\\n There are alarms awaiting acknowledgement.\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!this.taskData.forceResAllAlarms && this.awaitingRestoreCount > 0)\r\n\t\t\t\t{\r\n\t\t\t\t\teventCloseErrors = \"\\n There are alarms awaiting restore.\"\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!this.taskData.skipReqActions && outstandingTaskCount > 1)\r\n\t\t\t\t{\r\n\t\t\t\t\teventCloseErrors += \"\\n Required Tasks must be completed.\"\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventCloseErrors.length > 0)\r\n\t\t\t{\r\n\t\t\t\tthis.disabledText = eventCloseErrors;\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.isEventOnAudit)\r\n\t\t{\r\n\t\t\tthis.disabledText = \"Event is on Audit.\"\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tthis.disabledText = \"\";\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tif (this.editing) {\r\n\t\t\tawait this.loadAllOutcomes();\r\n\t\t}\r\n\t\telse if (this.eventId) {\r\n\t\t\tawait this.loadOutcomesForEvent(this.eventId);\r\n\t\t}\r\n\r\n\t\tif(this.task?.taskData)\r\n\t\t{\r\n\t\t\tthis.initialEventOutcomeId = this.task.taskData.eventOutcomeId;\r\n\t\t\tthis.initialEventOutcomeNote = this.task.taskData.catNote;\r\n\t\t}\r\n\r\n\t\tthis.dataLoaded = true;\r\n\t}\r\n\r\n\tprivate formatCompleteTask(): ActionPlanTask {\r\n\t\tif(this.taskData)\r\n\t\t{\r\n\t\t\tthis.taskData.eventOutcomeId = this.eventOutcomeId;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\t...this.task,\r\n\t\t\ttaskData: this.taskData || null,\r\n\t\t\tresult: \"Path Set to: \" + this.eventOutcomePath,\r\n\t\t\tcompleted: true\r\n\t\t}\r\n\t}\r\n\r\n\t@Emit(\"validate-task\")\r\n\tprivate validateTask(): boolean {\r\n\t\tif(this.editing)\r\n\t\t{\r\n\t\t\treturn this.taskData && (this.eventOutcomePresetsEnabled ? this.isLeafNode : true);\r\n\t\t}\r\n\t\treturn this.isLeafNode;\r\n\t}\r\n\r\n\t@Emit(\"complete-task\")\r\n\tpublic emitTaskCompletion(): ActionPlanTask {\r\n\t\treturn this.formatCompleteTask();\r\n\t}\r\n\r\n\t@Emit(\"completed-task-now-close-event\")\r\n\tpublic emitCloseEvent(): ActionPlanTask {\r\n\t\treturn this.formatCompleteTask();\r\n\t}\r\n\r\n\t// Watch task and validate on change\r\n\t@Watch(\"task\", { immediate: true })\r\n\tprivate taskUpdated(newValue: any, oldValue: any): void {\r\n\t\tif(!this.task.taskData)\r\n\t\t{\r\n\t\t\tthis.taskData = {\r\n\t\t\t\teventOutcomeId: null,\r\n\t\t\t\tackAllAlarms: false,\r\n\t\t\t\tforceResAllAlarms: false,\r\n\t\t\t\tskipReqActions: false,\r\n\t\t\t\tskipCloseDialog: false,\r\n\t\t\t\tsetCatNote: false,\r\n\t\t\t\tcatNote: \"\",\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if(!isEqual(newValue, oldValue))\r\n\t\t{\r\n\t\t\tthis.taskData = cloneDeep(this.task.taskData);\r\n\t\t}\r\n\r\n\t\tthis.validateTask();\r\n\t}\r\n\r\n\tprivate outcomeChanged(value: number): void {\r\n\t\tthis.eventOutcomeId = value;\r\n\t\tif (!this.editing || !this.eventOutcomePresetsEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.taskData.eventOutcomeId = value;\r\n\t}\r\n\r\n\tprivate outcomePathChanged(value: string): void {\r\n\t\tthis.eventOutcomePath = value;\r\n\t}\r\n\r\n\tprivate reset(): void {\r\n\t\tthis.taskData.eventOutcomeId = this.initialEventOutcomeId;\r\n\t\tthis.eventOutcomeId = this.initialEventOutcomeId;\r\n\t\tthis.taskData.catNote = this.initialEventOutcomeNote;\r\n\t\tthis.outcomeSelectKey = this.outcomeSelectKey + 1;\r\n\t}\r\n\r\n\t@Watch(\"task.completed\")\r\n\tprivate onTaskReOpened(value: boolean, oldValue: boolean){\r\n\t\tif (!value && oldValue) {\r\n\t\t\tthis.eventOutcomeId = 0;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"taskData\", { deep: true })\r\n\tprivate taskDataUpdated(): void\r\n\t{\r\n\t\tif(!this.editing)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(!this.validateTask())\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.$emit(\"input\", {\r\n\t\t\t...this.task,\r\n\t\t\ttaskData: this.taskData || null,\r\n\t\t\ttaskText: (this.eventOutcomePresetsEnabled && this.taskData.eventOutcomeId)\r\n\t\t\t\t? `Event Outcome - Preset : ${this.eventOutcomePath}` : \"Event Outcome\"\r\n\t\t});\r\n\t}\r\n\r\n\tprivate maxOutcomeNote(note: string): string\r\n\t{\r\n\t\tif(!note)\r\n\t\t{\r\n\t\t\treturn note;\r\n\t\t}\r\n\r\n\t\treturn note.substring(0,5000);\r\n\t}\r\n\r\n\tpublic async onCompleteTask(): Promise {\r\n\t\tif(this.completeDisabled || this.pendingComplete)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.pendingComplete = true;\r\n\t\ttry\r\n\t\t{\r\n\t\t\tif(this.eventCloseEnabled)\r\n\t\t\t{\r\n\t\t\t\tif(this.taskData.ackAllAlarms)\r\n\t\t\t\t{\r\n\t\t\t\t\tawait this.eventRecordAllAcknowledgement(this.eventId);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.taskData.forceResAllAlarms)\r\n\t\t\t\t{\r\n\t\t\t\t\tawait api.forceRestoreAllAlarms(this.eventDetails.eventID, \"Force restored from action plan\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.taskData.skipCloseDialog)\r\n\t\t\t\t{\r\n\t\t\t\t\tsetTimeout(() => { this.endEvent(); }, 150);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar result =this.emitTaskCompletion();\r\n\r\n\t\t\tif (this.eventOutcomeToCloseEvent)\r\n\t\t\t{\r\n\t\t\t\tsetTimeout(() => { this.emitCloseEvent(); }, 250);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(ex)\r\n\t\t{\r\n\t\t\tconsole.error(ex);\r\n\t\t}\r\n\t\tthis.pendingComplete = false;\r\n\t}\r\n\r\n\tprivate async endEvent(): Promise\r\n\t{\r\n\t\tconst payload = {\r\n\t\t\t\t\teventId: this.eventId,\r\n\t\t\t\t\teventOutcomeId: this.eventOutcomeId,\r\n\t\t\t\t\toutcomeNote: this.taskData.catNote,\r\n\t\t\t\t\tclearGuards: true\r\n\t\t\t\t};\r\n\r\n\t\tthis.closeEvent(payload).then((result: any) => {\r\n\t\t\tif (result.success === true) {\r\n\t\t\t\tthis.setEventDetails(null);\r\n\t\t\t\tthis.resetEventRecords();\r\n\t\t\t\tthis.$router.push({ path: \"/event-queue\" });\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventOutcomeTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventOutcomeTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventOutcomeTask.vue?vue&type=template&id=01d12a4a&scoped=true\"\nimport script from \"./EventOutcomeTask.vue?vue&type=script&lang=ts\"\nexport * from \"./EventOutcomeTask.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventOutcomeTask.vue?vue&type=style&index=0&id=01d12a4a&prod&scoped=true&lang=css\"\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 \"01d12a4a\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventLeave.vue?vue&type=style&index=0&id=098357e8&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseActivityLog.vue?vue&type=style&index=0&id=66c0cf1b&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cameras.vue?vue&type=style&index=0&id=0eb094c4&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewAlarm.vue?vue&type=style&index=0&id=f152d7f8&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventTaskGroup.vue?vue&type=style&index=1&id=245ec5f5&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv-progress.vue?vue&type=style&index=0&id=e2e276b4&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Transmit.vue?vue&type=style&index=0&id=c01e407c&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearMFA.vue?vue&type=style&index=0&id=80f74c02&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileCore.vue?vue&type=style&index=0&id=74c5d35e&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteExternalMapLayerModal.vue?vue&type=style&index=1&id=302d648e&prod&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesScope.vue?vue&type=style&index=0&id=e2a6a11e&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleSignOnSettings.vue?vue&type=style&index=1&id=7d4fdbc4&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaSetupDisableAreaButton.vue?vue&type=style&index=0&id=3552eeb6&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=d9e36646&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupSyncConfig.vue?vue&type=style&index=1&id=0c86ccf4&prod&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPoint.vue?vue&type=style&index=0&id=7e62b193&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"leaveModal\",attrs:{\"id\":\"leaveModal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"static\":true},on:{\"hidden\":_vm.cancel,\"shown\":_vm.highlightNote}},[_c('template',{slot:\"modal-title\"},[_c('div',[_c('h4',[_vm._v(\"Leave event\")])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.getIsUploadingFile),expression:\"getIsUploadingFile\"}],staticClass:\"alert alert-danger\"},[_vm._v(\" One or more files are still uploading. Are you sure you wish to leave? \")]),(_vm.otherUserCount > 0)?_c('div',[_vm._v(\" You are about to leave the event - you must pass control to another operator \"),_c('multiselect',{attrs:{\"track-by\":\"userID\",\"label\":\"name\",\"selectLabel\":\"\",\"deselectLabel\":\"\",\"selectedLabel\":\"\",\"open-direction\":\"bottom\",\"options\":_vm.sharedOperators,\"allow-empty\":false,\"internal-search\":false,\"multiple\":false,\"hideSelected\":true,\"showNoResults\":false,\"clear-on-select\":true},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(ref){\nvar option = ref.option;\nreturn [_c('span',[_vm._v(_vm._s(option.name))])]}}],null,false,2811520532),model:{value:(_vm.otherOperator),callback:function ($$v) {_vm.otherOperator=$$v},expression:\"otherOperator\"}})],1):_vm._e(),(_vm.otherUserCount == 0)?_c('div',[(!_vm.isParkingAnEventOptional)?_c('div',{staticClass:\"form-group park-event-control\",attrs:{\"data-cy\":\"mandatory-park-event\"}},[_vm._v(\" Park event for \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.parkHours),expression:\"parkHours\"}],staticClass:\"form-control form-control-sm d-inline-block text-center\",attrs:{\"type\":\"number\",\"id\":\"hoursInput\",\"placeholder\":\"\",\"max\":\"24\"},domProps:{\"value\":(_vm.parkHours)},on:{\"blur\":_vm.validateHours,\"input\":function($event){if($event.target.composing){ return; }_vm.parkHours=$event.target.value}}}),_vm._v(\" hours, \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.parkMinutes),expression:\"parkMinutes\"}],staticClass:\"form-control form-control-sm d-inline-block text-center\",attrs:{\"type\":\"number\",\"id\":\"minutesInput\",\"placeholder\":\"\",\"max\":\"59\"},domProps:{\"value\":(_vm.parkMinutes)},on:{\"blur\":_vm.validateMinutes,\"input\":function($event){if($event.target.composing){ return; }_vm.parkMinutes=$event.target.value}}}),_vm._v(\" minutes \")]):_vm._e(),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"parkNotes\"}},[_vm._v(\"Notes\")]),(_vm.parkNoteRequired)?_c('span',{staticClass:\"text-danger\"},[_vm._v(\" *\")]):_vm._e(),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.parkNote),expression:\"parkNote\"}],ref:\"parkNotes\",staticClass:\"custom-textarea\",attrs:{\"id\":\"parkNotes\",\"placeholder\":\"Notes\",\"max\":\"500\",\"data-cy\":\"park-note-text\"},domProps:{\"value\":(_vm.parkNote)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.parkNote=$event.target.value}}}),_c('p',{class:{ 'text-danger': _vm.parkNote.length > 500 }},[_vm._v(_vm._s(_vm.parkNote.length)+\" | 500\")])]),(_vm.isParkingAnEventOptional)?_c('div',{attrs:{\"data-cy\":\"optional-park-event\"}},[_c('b-form-checkbox',{attrs:{\"value\":\"true\",\"data-cy\":\"park-event-checkbox\"},model:{value:(_vm.isParkEventChecked),callback:function ($$v) {_vm.isParkEventChecked=$$v},expression:\"isParkEventChecked\"}},[_vm._v(\" Park Event \"),(_vm.isParkEventChecked)?_c('span',[_vm._v(\" for \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.parkHours),expression:\"parkHours\"}],staticClass:\"form-control form-control-sm d-inline-block text-center park-time-input\",attrs:{\"type\":\"number\",\"id\":\"hoursInput\",\"placeholder\":\"\",\"max\":\"24\"},domProps:{\"value\":(_vm.parkHours)},on:{\"blur\":_vm.validateHours,\"input\":function($event){if($event.target.composing){ return; }_vm.parkHours=$event.target.value}}}),_vm._v(\" hours, \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.parkMinutes),expression:\"parkMinutes\"}],staticClass:\"form-control form-control-sm d-inline-block text-center park-time-input\",attrs:{\"type\":\"number\",\"id\":\"minutesInput\",\"placeholder\":\"\",\"max\":\"59\"},domProps:{\"value\":(_vm.parkMinutes)},on:{\"blur\":_vm.validateMinutes,\"input\":function($event){if($event.target.composing){ return; }_vm.parkMinutes=$event.target.value}}}),_vm._v(\" minutes \")]):_vm._e()])],1):_vm._e()]):_vm._e(),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"pull-right ksConfirm\",class:{ disabled: !_vm.canLeave },attrs:{\"variant\":\"primary\",\"id\":\"confirmBtn\",\"data-dismiss\":\"modal\",\"disabled\":!_vm.canLeave},on:{\"click\":function($event){return _vm.ok()}}},[_vm._v(\" OK \")]),_c('b-button',{staticClass:\"pull-right\",attrs:{\"variant\":\"secondary\",\"id\":\"closeBtn\",\"data-dismiss\":\"modal\"},on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(\"Cancel\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport Multiselect from \"vue-multiselect\";\r\nimport { get } from 'lodash';\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tmultiselect: Multiselect\r\n\t}\r\n})\r\nexport default class EventLeave extends Vue {\r\n\t$refs!: {\r\n\t\tleaveModal: any;\r\n\t\tparkNotes: HTMLInputElement;\r\n\t};\r\n\r\n\t@Getter getDefaultParkValue: number;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@SiteMonitor.Getter(\"getEventLeaveShown\") eventLeaveShown!: boolean;\r\n\t@SiteMonitor.Getter(\"getEventDetails\") eventDetails: EventDetails;\r\n\t@SiteMonitor.Getter\r\n\tgetEventShare!: any[];\r\n\t@SiteMonitor.Getter getUserID!: number;\r\n\t@SiteMonitor.Getter getIsUploadingFile: boolean;\r\n\t@SiteMonitor.Action parkEvent: any;\r\n\t@SiteMonitor.Action eventPassControl: any;\r\n\t@SiteMonitor.Action fetchEventDetails: any;\r\n\t@SiteMonitor.Action removeAdhocUsersFromEvent: any;\r\n\t@SiteMonitor.Mutation setEventLeaveShown: any;\r\n\r\n\t@Prop(Number) public eventid?: number;\r\n\r\n\tpublic otherOperator: any = null;\r\n\tpublic parkHours: number = 0;\r\n\tpublic parkMinutes: number = 10;\r\n\tpublic parkSeconds: number = 0;\r\n\tpublic parkNote: string = \"\";\r\n\tpublic parkNoteRequired: boolean = true;\r\n\tpublic defaultPark: number = 10;\r\n\r\n\tprivate isParkEventChecked: boolean = false;\r\n\r\n\tpublic get sharedOperators() {\r\n\t\treturn this.getEventShare.filter(\r\n\t\t\t(user: any) => user.userID != null && user.userID != this.getUserID && !user.removed && user.isActive\r\n\t\t);\r\n\t}\r\n\r\n\tpublic get otherUserCount() {\r\n\t\treturn this.sharedOperators == null ? 0 : this.sharedOperators.length;\r\n\t}\r\n\r\n\tpublic get canLeave() {\r\n\t\tif (this.otherOperator != null) return true;\r\n\r\n\t\tif (this.otherUserCount > 0) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\tif (this.parkNoteRequired) {\r\n\t\t\t\treturn this.parkNote.length > 0;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"eventLeaveShown\")\r\n\tprivate onEventRaiseShownChanged(value: boolean, oldValue: boolean) {\r\n\t\tif (value) {\r\n\t\t\tthis.$refs.leaveModal.show();\r\n\t\t} else {\r\n\t\t\tthis.$refs.leaveModal.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t// Triggered with @shown on b-modal to focus on and highlight parked notes\r\n\tprivate highlightNote(): void {\r\n\t\tif (this.isAutoFillEnabled && this.$refs.parkNotes) {\r\n\t\t\tthis.$refs.parkNotes.focus();\r\n\t\t\tthis.$refs.parkNotes.select();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async created() {\r\n\t\tthis.setEventLeaveShown(false);\r\n\t\tawait this.fetchEventDetails(this.eventid);\r\n\t\tthis.parkNoteRequired = this.eventDetails.parkNoteRequired;\r\n\r\n\t\tif (this.isAutoFillEnabled) {\r\n\t\t\tthis.parkNote = this.eventDetails.parkedNote;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async mounted(){\r\n\t\tawait this.getDefaultParkToHoursAndMinutes();\r\n\t}\r\n\r\n\tpublic async ok() {\r\n\t\tif (this.canLeave) {\r\n\t\t\tif (this.otherOperator != null) {\r\n\t\t\t\tawait this.eventPassControl({\r\n\t\t\t\t\teventID: this.eventid,\r\n\t\t\t\t\tuserID: this.otherOperator.userID\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.removeAdhocUsersFromEvent();\r\n\r\n\t\t\t\tif (this.parkNote.length > 500 || (this.parkNote.length == 0 && this.parkNoteRequired)) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.isParkEventChecked && this.isParkingAnEventOptional) {\r\n\t\t\t\t\tthis.parkHours = 0;\r\n\t\t\t\t\tthis.parkMinutes = 0;\r\n\t\t\t\t\tthis.parkSeconds = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!this.eventid){\r\n\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Park Event\",\r\n\t\t\t\t\ttext:\r\n\t\t\t\t\t\t\"Unable to Park Event - there is no valid event Id\"\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tawait this.parkEvent({\r\n\t\t\t\t\t\teventId: this.eventid,\r\n\t\t\t\t\t\thours: this.parkHours,\r\n\t\t\t\t\t\tminutes: this.parkMinutes,\r\n\t\t\t\t\t\tseconds: this.parkSeconds,\r\n\t\t\t\t\t\tparkNote: this.parkNote,\r\n\t\t\t\t\t\tparkedByMap: false\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.$router.push({ path: \"/event-queue\" });\r\n\t\t}\r\n\t}\r\n\r\n\tpublic cancel() {\r\n\t\tthis.isParkEventChecked = false;\r\n\t\tthis.setEventLeaveShown(false);\r\n\t}\r\n\r\n\tprivate validateHours(): void {\r\n\t\tif (this.parkHours < 0) {\r\n\t\t\tthis.parkHours = 0;\r\n\t\t} else if (this.parkHours >= 24) {\r\n\t\t\tthis.parkHours = 24;\r\n\t\t\tthis.parkMinutes = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate validateMinutes(): void {\r\n\r\n\t\tif (this.parkHours >= 24 ) {\r\n\t\t\tthis.parkMinutes = 0;\r\n\t\t}\r\n\t\telse if (this.parkMinutes < 0) {\r\n\t\t\tthis.parkMinutes = 0;\r\n\t\t} else if (this.parkMinutes > 59) {\r\n\t\t\tthis.parkMinutes = 59;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate get isParkingAnEventOptional() {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventQueue\", \"OptionalParkOnLeave\"]);\r\n\t}\r\n\r\n\tprivate get isAutoFillEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"Park\", \"AutoFill\"]);\r\n\t}\r\n\r\n\tprivate async getDefaultParkToHoursAndMinutes(): Promise {\r\n\t\tif(this.getDefaultParkValue == 10)\r\n\t\t{\r\n\t\t\tthis.parkHours = Math.floor(this.getDefaultParkValue / 60)\r\n\t\t\tthis.parkMinutes = (this.getDefaultParkValue % 60);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.parkHours = Math.floor(this.getDefaultParkValue / 60)\r\n\t\tthis.parkMinutes = (this.getDefaultParkValue % 60);\r\n\t}\r\n\r\n\t/* validateSeconds() {\r\n\t\t\t\t\t\t\t\t if (this.parkSeconds < 0) {\r\n\t\t\t\t\t\t\t\t this.parkSeconds = 0;\r\n\t\t\t\t\t\t\t\t } else if (this.parkSeconds > 59) {\r\n\t\t\t\t\t\t\t\t this.parkSeconds = 59;\r\n\t\t\t\t\t\t\t\t }\r\n\t\t\t\t\t\t\t\t } */\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventLeave.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventLeave.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventLeave.vue?vue&type=template&id=098357e8&scoped=true\"\nimport script from \"./EventLeave.vue?vue&type=script&lang=ts\"\nexport * from \"./EventLeave.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventLeave.vue?vue&type=style&index=0&id=098357e8&prod&scoped=true&lang=scss\"\nimport style1 from \"./EventLeave.vue?vue&type=style&index=1&id=098357e8&prod&lang=scss\"\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 \"098357e8\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaTreePath.vue?vue&type=style&index=0&id=d1204334&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduleModal.vue?vue&type=style&index=1&id=6d35477d&prod&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesFinder.vue?vue&type=style&index=0&id=83ede750&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointFinder.vue?vue&type=style&index=0&id=5a057b85&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventTaskContainer.vue?vue&type=style&index=0&id=7487bf44&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAdvancedFilters.vue?vue&type=style&index=0&id=0e8d8113&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.featureEnabled)?_c('div',{attrs:{\"data-cy\":\"sitrep\"}},[(_vm.editing)?_c('div',{attrs:{\"data-cy\":\"sitrep-edit\"}},[_vm._v(\"Download a situation report.\")]):_c('div',{staticClass:\"task-line-content task-sitrep\",attrs:{\"data-cy\":\"sitrep-task\"}},[(!_vm.task.completed)?_c('div',{attrs:{\"data-cy\":\"sitrep-task-todo\"}},[_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"sitrep-task-button\"},on:{\"click\":function($event){return _vm.incidentReport()}}},[_vm._v(\"Download Situation Report\")])],1):_c('div',{attrs:{\"data-cy\":\"sitrep-task-completed\"}},[_vm._v(\"Completed action: Situation report downloaded.\")])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue, Watch, Emit } from \"vue-property-decorator\";\nimport { namespace, Getter, Mutation } from \"vuex-class\";\nimport { ActionPlanTask } from \"@/store/tasks/types\";\nimport { FeaturesList } from \"@/store/types\";\nimport { get } from \"lodash\";\n\nconst SiteMonitor = namespace(\"siteMonitor\");\nconst EventSearch = namespace(\"eventSearch\");\n\n@Component({})\nexport default class SitRepTask extends Vue {\n\t@SiteMonitor.Getter(\"getIncidentReportShown\") incidentReportShown: any;\n\t@SiteMonitor.Getter(\"getIncidentReportDownloaded\") incidentReportDownloaded: any;\n\t@EventSearch.State IncidentReportOpen: boolean;\n\t@EventSearch.State IncidentReportDownloaded: boolean;\n\t@SiteMonitor.Mutation setIncidentReportShown: any;\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\n\t@Prop(Boolean)\n\tpublic editing: Boolean;\n\n\t@Prop()\n\tpublic task!: ActionPlanTask;\n\n\tprivate clicked = false;\n\n\tpublic mounted() {\n\t\tif (this.editing) {\n\t\t\tthis.task.taskText = \"Download SitRep\";\n\t\t\t// No validation needed so call valid task by default.\n\t\t\tthis.onValidateTask();\n\t\t}\n\t}\n\n\t@Emit(\"validate-task\")\n\tpublic onValidateTask() {\n\t\treturn true;\n\t}\n\n\t@Emit(\"complete-task\")\n\tpublic onCompleteTask() {\n\t\treturn {\n\t\t\t...this.task,\n\t\t\tcompleted: true\n\t\t};\n\t}\n\n\tpublic incidentReport() {\n\t\tthis.setIncidentReportShown(true);\n\t}\n\n\t@Watch(\"IncidentReportDownloaded\")\n\tpublic onEventSearchIncidentReportDownloadedChanged(value: boolean, oldValue: boolean) {\n\t\tif (value && !oldValue) {\n\t\t\tthis.onCompleteTask();\n\t\t}\n\t}\n\n\t@Watch(\"incidentReportDownloaded\")\n\tpublic onIncidentReportDownloadedChanged(value: boolean, oldValue: boolean) {\n\t\tif (value && !oldValue) {\n\t\t\tthis.onCompleteTask();\n\t\t}\n\t}\n\n\tprivate get featureEnabled() {\n\t\treturn get(this.featuresList, [\"Actions\", \"SitRep\"], false)\n\t}\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SitRepTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SitRepTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SitRepTask.vue?vue&type=template&id=ef42ee38\"\nimport script from \"./SitRepTask.vue?vue&type=script&lang=ts\"\nexport * from \"./SitRepTask.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"error-modal-wrapper\",class:{'hide': !_vm.hideOverlay}},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card text-white bg-danger mb-3\"},[_c('div',{staticClass:\"card-body\"},[_c('h4',{staticClass:\"card-title\"},[_vm._v(\"Error loading data\")]),_c('p',{staticClass:\"card-text\"},[_vm._v(\" Unable to load data. The server may be unconnectable or offline. \"),_c('br'),_vm._v(\" We will continue to attempt to reconnect to the server until it is back online. \")])])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport { Getter } from 'vuex-class';\n\n@Component({\n components: {\n }\n})\nexport default class ErrorWarning extends Vue {\n\n @Getter('getDataError') hideOverlay!: boolean;\n\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorWarning.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorWarning.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ErrorWarning.vue?vue&type=template&id=5bccbc12&scoped=true\"\nimport script from \"./ErrorWarning.vue?vue&type=script&lang=ts\"\nexport * from \"./ErrorWarning.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ErrorWarning.vue?vue&type=style&index=0&id=5bccbc12&prod&scoped=true&lang=scss\"\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 \"5bccbc12\",\n null\n \n)\n\nexport default component.exports","enum NotificationTemplateTypeId {\r\n\tEvent = 1\r\n}\r\n\r\nexport default NotificationTemplateTypeId;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isAlarmMaskingEnabled)?_c('b-modal',{attrs:{\"title\":\"Masking\",\"role\":\"dialog\",\"dialog-class\":\"full-page-modal\",\"hide-footer\":\"\",\"scrollable\":true,\"static\":\"\"},on:{\"close\":_vm.close,\"hidden\":_vm.close},model:{value:(_vm.isModalShown),callback:function ($$v) {_vm.isModalShown=$$v},expression:\"isModalShown\"}},[_c('div',{staticClass:\"row justify-content-center\",staticStyle:{\"margin-bottom\":\"10px\",\"margin-top\":\"-5px\"}},[_c('masking-modal-group-badge',{attrs:{\"disabled\":!_vm.isMaskingFilterEnabled,\"modalGroupFilter\":_vm.groupFilter,\"isModalShown\":true},on:{\"badgeSelected\":_vm.groupBadgeSelected}})],1),(_vm.isModalShown)?_c('b-container',{attrs:{\"data-cy\":\"masking-modal-container\"}},[_c('b-row',[_c('div',{staticClass:\"w-100\"},[_c('b-card',{staticClass:\"d-flex flex-column\",staticStyle:{\"margin-bottom\":\"5px\"},attrs:{\"title\":\"Choose Area\"}},[(_vm.isLoadingAreas)?_c('div',{staticClass:\"p-2 pl-4\"},[_c('i',{staticClass:\"fas fa-spinner fa-spin\"}),_c('span',{staticClass:\"pl-1\"},[_vm._v(\"Loading...\")])]):_c('span',[_c('area-tree-select',{attrs:{\"appendToBody\":true,\"showState\":true,\"value\":_vm.selectedAreaNode,\"requiredPermissions\":_vm.requiredPermissions},on:{\"input\":_vm.groupSelected}})],1)]),(_vm.selectedArea)?_c('b-card',{staticClass:\"d-flex flex-column\",attrs:{\"title\":(\"Chosen Area: \" + (_vm.selectedArea.title)),\"data-cy\":\"area-details-container\"}},[_c('div',{staticClass:\"scroll-area scroll-area-override thin-scroll\"},[_c('div',{staticClass:\"m-1\"},[(_vm.isMaskAreaEnabled && _vm.isChangeMaskActionEnabled)?_c('div',[_c('h5',{staticClass:\"display-inline\"},[_vm._v(\" Mask Action: \"),_c('span',[_c('v-select-3',{staticClass:\"display-inline pl-2 mask-action-dropdown\",attrs:{\"id\":\"maskAction\",\"required\":\"\",\"data-cy\":\"mask-action-input\",\"label\":\"title\",\"reduce\":function (option) { return option.value; },\"options\":_vm.maskOptions,\"clearable\":false,\"disabled\":!_vm.canChangeMaskAction},model:{value:(_vm.selectedMaskAction),callback:function ($$v) {_vm.selectedMaskAction=$$v},expression:\"selectedMaskAction\"}})],1)])]):_vm._e(),(_vm.isMaskAreaEnabled)?_c('div',[_c('h5',{staticClass:\"display-inline mt-3\"},[_vm._v(\" Area State: \"),(!_vm.getIsUpdatingArea)?_c('span',{staticClass:\"pl-2\",class:[\n\t\t\t\t\t\t\t\t\t\t\t{'active-color': _vm.selectedArea.state === 'Unmasked'},\n\t\t\t\t\t\t\t\t\t\t\t{'warning-color': _vm.selectedArea.state === 'Partially Masked'},\n\t\t\t\t\t\t\t\t\t\t\t{'danger-color': _vm.selectedArea.state === 'Masked'} ]},[_c('i',{class:[\n\t\t\t\t\t\t\t\t\t\t\t\t{'fas fa-shield': _vm.selectedArea.state === 'Unmasked'},\n\t\t\t\t\t\t\t\t\t\t\t\t{'fal fa-shield-alt': _vm.selectedArea.state === 'Partially Masked'},\n\t\t\t\t\t\t\t\t\t\t\t\t{'fal fa-shield': _vm.selectedArea.state === 'Masked'} ]}),_vm._v(\" \"+_vm._s(_vm.selectedArea.state === 'Unmasked' ? 'Active' : _vm.selectedArea.state)+\" \"),(_vm.isAreaMaskDurationDisplayed)?_c('span',{staticClass:\"masked-duration-info\"},[_vm._v(\" until \"+_vm._s(_vm.dateAsLocalTime(_vm.selectedArea.toggleArmAt))+\" \"),_c('i',{staticClass:\"fa fa-info-circle\",attrs:{\"title\":((_vm.dateAsUtc(_vm.selectedArea.toggleArmAt)) + \" UTC\")}})]):_vm._e(),(_vm.selectedArea.state === 'Masked' && _vm.selectedArea.armed)?_c('span',[_vm._v(\" by alarms \")]):_vm._e()]):_c('i',{staticClass:\"ml-1 fas fa-spinner fa-spin\"})]),_c('span',{attrs:{\"id\":\"mask-area-button-container\",\"tabindex\":\"0\"}},[(!_vm.getIsUpdatingArea)?_c('b-button',{staticClass:\"ml-3 mr-2\",attrs:{\"variant\":\"primary\",\"size\":\"sm\",\"disabled\":_vm.isMaskButtonDisabled(),\"data-cy\":\"mask-area-button\"},on:{\"click\":_vm.areaMaskMethod}},[_vm._v(\" \"+_vm._s(_vm.selectedArea.armed ? 'Mask' : 'Unmask')+\" \"),(_vm.selectedArea.state === 'Masked' && _vm.selectedArea.armed)?_c('span',[_vm._v(\" Area \")]):_vm._e()]):_vm._e()],1),(_vm.isMaskButtonDisabled())?_c('b-tooltip',{attrs:{\"target\":\"mask-area-button-container\",\"data-cy\":\"mask-area-button-tooltip\",\"variant\":\"warning\",\"triggers\":\"hover\"}},[_vm._v(\" Masking is currently disabled for this area. Please enable Masking to Mask Area. \")]):_vm._e(),(!_vm.isAreaMaskingReasonsEnabled && !_vm.getIsUpdatingArea && _vm.selectedArea.armed)?[_vm._v(\" for \"),_c('alarm-mask-duration-input',{attrs:{\"maxMaskDurationWithNoExtendedPermissions\":_vm.selectedArea.maskDurationLimit},model:{value:(_vm.areaMaskDuration),callback:function ($$v) {_vm.areaMaskDuration=$$v},expression:\"areaMaskDuration\"}})]:_vm._e()],2):_c('div',[_c('h5',{staticClass:\"display-inline\"},[_vm._v(\" Area State: \"),_c('span',{class:[\n\t\t\t\t\t\t\t\t\t\t\t{'active-color': _vm.selectedArea.state === 'Unmasked'},\n\t\t\t\t\t\t\t\t\t\t\t{'warning-color': _vm.selectedArea.state === 'Partially Masked'},\n\t\t\t\t\t\t\t\t\t\t\t{'danger-color': _vm.selectedArea.state === 'Masked'} ],attrs:{\"data-cy\":\"area-state\"}},[_c('i',{class:[\n\t\t\t\t\t\t\t\t\t\t\t\t{'fas fa-shield': _vm.selectedArea.state === 'Unmasked'},\n\t\t\t\t\t\t\t\t\t\t\t\t{'fas fa-shield-alt': _vm.selectedArea.state === 'Partially Masked'},\n\t\t\t\t\t\t\t\t\t\t\t\t{'fas fa-shield': _vm.selectedArea.state === 'Masked'} ]}),_vm._v(\" \"+_vm._s(_vm.selectedArea.state === 'Unmasked' ? 'Active' : _vm.selectedArea.state)+\" \")])])]),(_vm.isAreaAlarmsDisplayed)?_c('div',{staticClass:\"mt-3\",attrs:{\"data-cy\":\"area-alarms-section\"}},[_c('h5',{staticClass:\"display-inline\"},[_vm._v(\"Area Alarms\")]),(!_vm.isMaskingAdvancedEnabled && !_vm.getIsUpdatingArea && _vm.selectedAreaAlarms.length > 0)?_c('b-form-group',[(_vm.selectedArea.state !== 'Unmasked')?_c('b-button',{staticClass:\"mr-2\",attrs:{\"variant\":\"primary\",\"size\":\"sm\",\"data-cy\":\"unmask-all-button\"},on:{\"click\":_vm.unmaskAllAlarmsInArea}},[_vm._v(\" Unmask all \")]):_vm._e(),(_vm.selectedArea.state !== 'Masked')?[_c('b-button',{attrs:{\"variant\":\"primary\",\"size\":\"sm\",\"data-cy\":\"mask-all-button\"},on:{\"click\":function($event){return _vm.maskAllAlarmsInArea()}}},[_vm._v(\" Mask all \")]),_vm._v(\" for \"),_c('alarm-mask-duration-input',{attrs:{\"maxMaskDurationWithNoExtendedPermissions\":_vm.selectedArea.maskDurationLimit},model:{value:(_vm.maskAllDuration),callback:function ($$v) {_vm.maskAllDuration=$$v},expression:\"maskAllDuration\"}})]:_vm._e()],2):_vm._e(),(_vm.isMaskingAdvancedEnabled && !_vm.getIsUpdatingArea && _vm.selectedAreaAlarms.length > 0)?_c('b-form-group',[(_vm.selectedArea.state !== 'Unmasked')?_c('b-button',{staticClass:\"mr-2\",attrs:{\"variant\":\"primary\",\"size\":\"sm\",\"data-cy\":\"button-unmask-all-advanced\"},on:{\"click\":_vm.unmaskAdvancedAlarms}},[_vm._v(\" Unmask \"+_vm._s(this.selectedResponses.length > 0 ? \"Selected\" : \"All\")+\" \")]):_vm._e(),(_vm.selectedArea.state !== 'Masked')?[_c('b-button',{attrs:{\"variant\":\"primary\",\"size\":\"sm\",\"data-cy\":\"button-mask-all-advanced\"},on:{\"click\":function($event){return _vm.openAdvancedMaskModal()}}},[_vm._v(\" Mask \"+_vm._s(this.selectedResponses.length > 0 ? \"Selected\" : \"All\")+\" \")])]:_vm._e()],2):_vm._e(),_c('b-row',{attrs:{\"align-v\":\"end\"}},[_c('b-col',{attrs:{\"sm\":\"9\"}},[_c('b-form-group',{attrs:{\"label-for\":\"filterInput\"}},[_c('b-input-group',[_c('b-form-input',{ref:\"alarmFilterSearch\",attrs:{\"type\":\"search\",\"max\":\"250\",\"id\":\"filterInput\",\"placeholder\":\"Search...\",\"data-cy\":\"alarm-search-input\"},on:{\"input\":function($event){return _vm.handleSearchInput($event)}},model:{value:(_vm.alarmFilterInput),callback:function ($$v) {_vm.alarmFilterInput=$$v},expression:\"alarmFilterInput\"}})],1)],1)],1),_c('b-col',{attrs:{\"sm\":\"3\",\"data-cy\":\"alarm-filter-container\"}},[_c('b-form-group',{staticStyle:{\"float\":\"right\"},attrs:{\"label\":_vm.filterBadgesLabel}},[_c('b-form-radio-group',{attrs:{\"buttons\":\"\",\"data-cy\":\"alarm-filter\"},model:{value:(_vm.selectedAlarmFilter),callback:function ($$v) {_vm.selectedAlarmFilter=$$v},expression:\"selectedAlarmFilter\"}},[_c('b-form-radio',{attrs:{\"value\":\"All\",\"data-cy\":\"all-filter-button\"}},[_c('i',{staticClass:\"fal fa-shield\"}),_c('b-badge',{staticClass:\"ml-1\",attrs:{\"data-cy\":\"badge-total-all-count\"}},[_vm._v(_vm._s(_vm.totalRecords))])],1),_c('b-form-radio',{attrs:{\"value\":\"Unmasked\",\"data-cy\":\"unmasked-filter-button\"}},[_c('i',{staticClass:\"fas fa-shield active-color\"}),_c('b-badge',{staticClass:\"ml-1 unmasked-badge\",attrs:{\"data-cy\":\"badge-total-armed-count\"}},[_vm._v(_vm._s(_vm.totalArmed))])],1),_c('b-form-radio',{attrs:{\"value\":\"Masked\",\"data-cy\":\"masked-filter-button\"}},[_c('i',{staticClass:\"fal fa-shield danger-color\"}),_c('b-badge',{staticClass:\"ml-1 masked-badge\",attrs:{\"data-cy\":\"badge-total-unarmed-count\"}},[_vm._v(_vm._s(_vm.totalUnarmed))])],1)],1)],1)],1)],1),(_vm.totalRecords !== 0 && !_vm.isUpdatingAlarmsInModal)?_c('div',{staticClass:\"results-per-page-container\",attrs:{\"data-cy\":\"resultsPerPage\"}},[_c('label',{attrs:{\"for\":\"resultsPerPageInput\"}},[_vm._v(\" Results per page: \")]),_c('b-form-input',{attrs:{\"id\":\"resultsPerPageInput\",\"type\":\"text\",\"formatter\":_vm.removeNonDigitsFromString,\"size\":\"sm\",\"max\":_vm.recordsPageSizeMax},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onRecordsPerPageClick()}},model:{value:(_vm.recordsPageSizeUpdated),callback:function ($$v) {_vm.recordsPageSizeUpdated=$$v},expression:\"recordsPageSizeUpdated\"}}),_c('b-button',{attrs:{\"id\":\"resultsPerPageButton\",\"variant\":\"primary\",\"size\":\"sm\"},on:{\"click\":function($event){return _vm.onRecordsPerPageClick()}}},[_vm._v(\"Update\")])],1):_vm._e(),_c('b-table',{ref:\"alarmContentTable\",staticClass:\"thin-scroll\",attrs:{\"items\":_vm.getAlarmsToShow(),\"fields\":_vm.visibleFields,\"busy\":_vm.isUpdatingAlarmsInModal,\"hover\":\"\",\"sticky-header\":_vm.calculateTableHeight(),\"responsive\":true,\"no-border-collapse\":true,\"show-empty\":\"\",\"empty-text\":\"No alarms found with current filters.\",\"empty-filtered-text\":\"No alarms could be found matching your search.\",\"fixed\":\"\",\"no-local-sorting\":true,\"sort-by\":this.sortBy,\"sort-desc\":this.sortDesc},on:{\"sort-changed\":_vm.onSortChange},scopedSlots:_vm._u([{key:\"cell(isAlarmSelected)\",fn:function(data){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(data.item.isAlarmSelected),expression:\"data.item.isAlarmSelected\"}],staticClass:\"m-1\",attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(data.item.isAlarmSelected)?_vm._i(data.item.isAlarmSelected,null)>-1:(data.item.isAlarmSelected)},on:{\"change\":function($event){var $$a=data.item.isAlarmSelected,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(data.item, \"isAlarmSelected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(data.item, \"isAlarmSelected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(data.item, \"isAlarmSelected\", $$c)}}}})]}},{key:\"cell(name)\",fn:function(data){return [_vm._v(\" \"+_vm._s(data.item.title)+\" \")]}},{key:\"cell(toggleArmAt)\",fn:function(data){return [_c('span',{class:data.item.armed ? 'active-color' : 'danger-color'},[_c('i',{class:[\n\t\t\t\t\t\t\t\t\t\t\t{'fas fa-shield': data.item.armed},\n\t\t\t\t\t\t\t\t\t\t\t{'fal fa-shield': !data.item.armed} ]}),_vm._v(\" \"+_vm._s(data.item.armed ? 'Active' : 'Masked')+\" \"),(!data.item.armed)?_c('span',{staticClass:\"masked-duration-info-sm\"},[_vm._v(\" until \"+_vm._s(_vm.dateAsLocalTime(data.item.toggleArmAt))+\" \"),_c('i',{staticClass:\"fas fa-info-circle\",attrs:{\"title\":((_vm.dateAsUtc(data.item.toggleArmAt)) + \" UTC\")}})]):_vm._e()])]}},{key:\"cell(action)\",fn:function(data){return [_c('div',[_c('b-button',{attrs:{\"variant\":\"primary\",\"size\":\"sm\",\"title\":data.item.armed ? 'Mask' : 'Unmask',\"data-cy\":\"mask-alarm-button\"},on:{\"click\":function($event){return _vm.toggleAlarmMasking(data.item)}}},[_vm._v(\" \"+_vm._s(data.item.armed ? 'Mask' : 'Unmask')+\" \")]),(data.item.armed)?[_vm._v(\" for \"),_c('alarm-mask-duration-input',{attrs:{\"maxMaskDurationWithNoExtendedPermissions\":data.item.maskDurationLimit},model:{value:(data.item.maskDurationInput),callback:function ($$v) {_vm.$set(data.item, \"maskDurationInput\", $$v)},expression:\"data.item.maskDurationInput\"}})]:_vm._e()],2)]}}],null,false,2128153047)})],1):_vm._e()])]),(_vm.isAreaAlarmsDisplayed)?_c('b-card-footer',{staticClass:\"area-details-footer\",attrs:{\"data-cy\":\"area-alarms-footer\"}},[_c('b-pagination',{staticClass:\"pagination\",attrs:{\"total-rows\":_vm.paginatedRowsCount,\"per-page\":_vm.recordsPageSize,\"align\":\"center\",\"data-cy\":\"pagination\",\"disabled\":_vm.totalRecords < _vm.recordsPageSize},on:{\"input\":_vm.onPageClick},model:{value:(_vm.recordsPage),callback:function ($$v) {_vm.recordsPage=$$v},expression:\"recordsPage\"}})],1):_vm._e(),_c('b-overlay',{attrs:{\"show\":_vm.isUpdatingAlarmsInModal,\"variant\":\"dark\",\"no-wrap\":\"\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('div',{staticClass:\"text-center\",staticStyle:{\"font-size\":\"18px\"}},[_c('span',[_vm._v(\" Loading... \"),_c('i',{staticClass:\"fa fa-spin fa-spinner\"})])])]},proxy:true}],null,false,89047354)})],1):_c('b-card',{staticClass:\"d-flex flex-column\",attrs:{\"title\":\"No area selected\"}})],1)])],1):_vm._e()],1):_vm._e(),_c('confirmation-modal',{attrs:{\"visible\":_vm.isMaskDurationConfirmationVisible,\"okBtnText\":\"Confirm\",\"cancelBtnText\":\"Cancel\",\"title\":\"Masking All Responses\",\"data-cy\":\"masking-duration-warning-confirmation\"},on:{\"ok\":_vm.confirmMasking,\"cancel\":_vm.cancelMasking}},[_c('h5',{staticClass:\"default-error-message\"},[_vm._v(\" Mask duration is set to a value higher than some of the responses maximum mask time. This operation will mask all the responses for either the duration requested or their maximum mask time - whichever is smaller \")]),_c('div',{staticClass:\"py-3\"},[_c('label',{staticClass:\"preserve-spaces\"},[_vm._v(\"Responses affected:\")]),_c('b-table-simple',{ref:\"table\",attrs:{\"hover\":\"\",\"sticky-header\":\"\",\"no-border-collapse\":\"\",\"striped\":true}},[_c('b-thead',[_c('b-tr',[_c('b-th',[_vm._v(\"Name\")]),_c('b-th',[_vm._v(\"Max Mask Duration\")])],1)],1),_c('b-tbody',_vm._l((_vm.responsesWithInvalidMasking),function(response){return _c('b-tr',{key:response.responseID,attrs:{\"tabindex\":\"0\"}},[_c('b-td',[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(response.title,75))+\" \")]),_c('b-td',[_vm._v(\" \"+_vm._s(response.maskDurationLimit)+\" minutes \")])],1)}),1)],1)],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"duration-input-container\"},[_c('b-input',{staticClass:\"ml-1 duration-input\",attrs:{\"type\":\"number\",\"size\":\"sm\",\"formatter\":_vm.maxMaskInputFormatter,\"max\":_vm.maxMaskDuration,\"min\":\"1\",\"data-cy\":\"mask-input\"},model:{value:(_vm.localValue),callback:function ($$v) {_vm.localValue=$$v},expression:\"localValue\"}}),_vm._v(\" minutes \"),(_vm.isMaxMaskDuration)?_c('i',{staticClass:\"fa fa-info-circle pl-2 max-duration-icon\",attrs:{\"title\":_vm.getWarningTitle,\"data-cy\":\"i-permission-warning\"}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport { Constants } from \"@/types/Constants\";\r\n\r\n\t@Component\r\n\texport default class AlarmMaskDurationInput extends Vue {\r\n\t\t@Prop({default: 10}) public readonly value : number;\r\n\t\t@Prop({default: 1440}) public readonly maxMaskDurationWithNoExtendedPermissions : number;\r\n\r\n\t\t@Getter getPermissions: UserPermissions;\r\n\t\t@Getter getDefaultMaskValue: number;\r\n\r\n\t\tprivate localValue: string = \"10\";\r\n\t\tprivate maxMaskDurationLimit: number = Constants.MAX_MASKING_DURATION;\r\n\r\n\t\tprivate mounted() {\r\n\t\t\tthis.localValue = this.getDefaultMaskValue > this.maxMaskDuration ? this.maxMaskDuration.toString() : this.getDefaultMaskValue.toString();\r\n\t\t}\r\n\r\n\t\t@Watch(\"localValue\")\r\n\t\tprivate onLocalValueChanged() {\r\n\t\t\tthis.$emit(\"input\", this.localValue);\r\n\t\t}\r\n\r\n\t\tprivate get maxMaskDuration() {\r\n\t\t\treturn this.getPermissions.canDisarmSitesExtended ? this.maxMaskDurationLimit : this.maxMaskDurationWithNoExtendedPermissions;\r\n\t\t}\r\n\r\n\t\tprivate maxMaskInputFormatter(value): string {\r\n\t\t\tif (value > this.maxMaskDuration) {\r\n\t\t\t\treturn this.maxMaskDuration.toString();\r\n\t\t\t} else if (value < 1) {\r\n\t\t\t\treturn \"1\";\r\n\t\t\t} else {\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate get isMaxMaskDuration(): boolean {\r\n\t\t\treturn this.localValue === this.maxMaskDuration.toString();\r\n\t\t}\r\n\r\n\t\tprivate get getWarningTitle(): string {\r\n\t\t\treturn this.getPermissions.canDisarmSitesExtended ?\r\n\t\t\t\"Unable to mask an alarm for longer than \" + this.maxMaskDurationLimit + \" minutes\":\r\n\t\t\t \"You do not have permission to mask an alarm for longer than \" + this.maxMaskDuration + \" minutes\";\r\n\t\t}\r\n\t}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmMaskDurationInput.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmMaskDurationInput.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmMaskDurationInput.vue?vue&type=template&id=676ec72a\"\nimport script from \"./AlarmMaskDurationInput.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmMaskDurationInput.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmMaskDurationInput.vue?vue&type=style&index=0&id=676ec72a&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","\n\timport { Component, Vue, Prop, Watch, Emit, Mixins } from \"vue-property-decorator\";\n\timport moment from \"moment\";\n\timport { namespace, Getter, Action } from \"vuex-class\";\n\timport { get } from \"lodash\";\n\timport { Group } from \"@/store/eventqueue/types\";\n\timport { Response } from \"@/store/alarm-masking/types\";\n\timport api from \"@/services/api.service\";\n\timport { FeaturesList, UserPermissions, VueBootstrapField, VueBootstrapFieldTableSortEvent, VueBootstrapFieldEx, MaskingModalPaginatedSearchQueryParams, MaskingTypeEnum } from \"@/store/types\";\n\timport AlarmMaskDurationInput from \"@/components/alarm-masking/AlarmMaskDurationInput.vue\";\n\timport { debounce } from \"lodash\";\n import { truncateString } from '@/filters';\n\timport MaskingModalGroupBadge from '@/components/alarm-masking/MaskingModalGroupBadge.vue';\n\timport AreaTreeSelect from '@/components/form/AreaTreeSelect.vue';\n\timport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\n\timport { AreaMaskingCount } from \"@/store/areas/types\";\n\timport MaskingModalFilteredAreas from \"./MaskingModalFilteredAreas.vue\";\n\timport ConfirmationModal from \"@/components/mobile-raise-templates/ConfirmationModal.vue\";\n\timport maskingApi from \"@/services/api.masking.service\";\n\timport MaskType from \"@/types/sv-data/enums/MaskType\";\n\timport MaskingRequest from \"@/types/sv-data/masking/MaskingRequest\";\n\timport { MaskOption } from '@/store/alarm-masking/types';\n\timport vSelect3 from \"vselect3\";\n\n\timport { Constants } from \"@/types/Constants\";\n\timport PaginatedSearch from \"@/mixins/PaginatedSearch\";\n\timport ResponseDtoPagedResponse from \"@/types/sv-data/responses/ResponseDtoPagedResponse\";\n\timport { getDebouncePeriod } from '@/utils/debounce-helper';\n\n\tconst Eventqueue = namespace(\"eventqueue\");\n\tconst Areas = namespace(\"areas\");\n\tconst AlarmMasking = namespace(\"alarmMasking\");\n\n\t@Component({\n\t\tfilters: { truncateString },\n\t\tcomponents: {\n\t\t\t\"area-tree-select\": AreaTreeSelect,\n\t\t\t\"alarm-mask-duration-input\": AlarmMaskDurationInput,\n\t\t\t\"masking-modal-group-badge\": MaskingModalGroupBadge,\n\t\t\t\"masking-modal-filtered-areas\": MaskingModalFilteredAreas,\n\t\t\t\"confirmation-modal\": ConfirmationModal,\n\t\t\t\"v-select-3\": vSelect3\n\t\t}\n\t})\n\texport default class MaskingModal extends Mixins(PaginatedSearch) {\n\t\t@Prop({default: false, type: Boolean}) public readonly value;\n\t\t@Prop() public preSelectedAlarmFilter: string;\n\t\t@Prop() public groupId: number;\n\t\t@Prop() public eventId: number;\n\t\t@Prop() public responseId: number;\n\t\t@Prop({ default: () => { return [\"Any\"]} }) private requiredPermissions: string [];\n\n\t\t@Eventqueue.Action getSelectedGroupByIDSetState: ({groupID, state}: {groupID: number, state: string}) => Promise;\n\t\t@Eventqueue.State(\"selectedGroup\") selectedArea: Group;\n\t\t@Eventqueue.Action updateSelectedGroup: (selectedGroup: Group) => void;\n\n\t\t@Getter getPermissions: UserPermissions;\n\t\t@Getter getDefaultMaskValue: number;\n\t\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\n\t\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\t\t@Getter getDefaultMaskAction: boolean;\n\n\t\t@Action getTenantSystemPrefs: (live: boolean) => Promise;\n\n\t\t@Areas.Action fetchAreaMaskingCount: () => Promise;\n\t\t@Areas.State areaMaskingCount: AreaMaskingCount;\n\n\t\t@AlarmMasking.Getter getAreaMaskingMode: boolean;\n\t\t@AlarmMasking.Getter getIsUpdatingArea: boolean;\n\t\t@AlarmMasking.Mutation setAreaMaskingMode: (areaMaskingMode: boolean) => void;\n\t\t@AlarmMasking.Mutation setIsUpdatingArea: (isUpdatingArea: boolean) => void;\n\n\t\t// Private Fields\n\t\tprivate isModalShown = false;\n\t\tprivate selectedAlarmFilter: string = \"All\";\n\t\tprivate selectedAreaAlarms: Response[] = [];\n\t\tprivate groupFilter: string = \"\";\n\t\tprivate alarmFilter: string = \"\";\n\t\tprivate alarmFilterInput: string = \"\";\n\t\tprivate areaMaskDuration: number = 10;\n\t\tprivate maskAllDuration: number = 10;\n\t\tprivate isLoadingAreaAlarms: boolean = false;\n\t\tprivate isMaskingAlarm: boolean = false;\n\t\tprivate isLoadingAreas: boolean = false;\n\t\tprivate selectedAreaNode: AreaNode = null;\n\t\tprivate isMaskDurationConfirmationVisible: boolean = false;\n\t\tprivate responsesWithInvalidMasking: Response[] = [];\n\t\tprivate maskOptions: MaskOption[] = [{ title: `Ignore`, value: false }, { title: `AutoHandle`, value: true }];\n\t\tprivate selectedMaskAction: boolean = false;\n\t\tprivate maxMaskingDurationLimit: number = Constants.MAX_MASKING_DURATION\n\n\t\tprivate totalRecords: number = 0;\n\t\tprivate totalArmed: number = 0;\n\t\tprivate totalUnarmed: number = 0;\n\t\tprivate recordsPage: number = 1;\n\t\tprivate recordsPageSize: number = 25;\n\t\tprivate recordsPageSizeMax: string = \"200\";\n\t\tprivate recordsPageSizeUpdated: string = \"25\";\n\t\tprivate sortBy: string = \"title\";\n\t\tprivate sortDesc: boolean = false;\n\t\tprivate isSearchTermResponseId :boolean = false;\n\n\t\tprivate async mounted(): Promise {\n\t\t\tawait this.getTenantSystemPrefs(true);\n\t\t\tthis.areaMaskDuration = this.getDefaultMaskValue;\n\t\t\tthis.selectedMaskAction = this.getDefaultMaskAction;\n\t\t\tawait this.onVModelUpdated(this.value);\n\t\t}\n\n\t\tprivate destroyed() {\n\t\t\tthis.isModalShown = false;\n\t\t}\n\n\t\t// Public Methods\n\t\tpublic clearFilter(): void {\n\t\t\tthis.groupFilter = \"\";\n\t\t}\n\n\t\tpublic async forceUpdateAreaAlarms(): Promise {\n\t\t\tawait this.updateSelectedAreaAlarms();\n\t\t\tawait this.updateSelectedAreaState();\n\t\t}\n\n\t\tprivate async toggleAreaMasking(): Promise {\n\t\t\tthis.setIsUpdatingArea(true);\n\n\t\t\ttry {\n\t\t\t\tif (this.selectedArea.armed) {\n await maskingApi.maskArea(this.selectedArea.groupID, this.areaMaskDuration, null, \"\", this.selectedMaskAction);\n\t\t\t\t} else {\n\t\t\t\t\tawait maskingApi.unmaskArea(this.selectedArea.groupID);\n\t\t\t\t}\n\t\t\t} catch {\n\t\t\t\tthis.setIsUpdatingArea(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.setIsUpdatingArea(false);\n\t\t}\n\n\t\tprivate async toggleAlarmMasking(alarm: Response) {\n\t\t\tthis.isMaskingAlarm = true;\n\t\t\ttry {\n\t\t\t\tif (alarm.armed) {\n\t\t\t\t\tvar alarmMaskDurationInput = parseInt(alarm.maskDurationInput);\n\t\t\t\t\tvar maxAlarmMaskDuration = this.getPermissions.canDisarmSitesExtended ? this.maxMaskingDurationLimit : alarm.maskDurationLimit;\n\t\t\t\t\tvar alarmMaskDuration = alarmMaskDurationInput > maxAlarmMaskDuration ? maxAlarmMaskDuration : alarmMaskDurationInput;\n\n\t\t\t\t\tawait maskingApi.maskAlarm({\n\t\t\t\t\t\tresponseID: alarm.responseID,\n\t\t\t\t\t\tgroupID: alarm.groupID,\n\t\t\t\t\t\teventID: alarm.eventID,\n\t\t\t\t\t\tdisarmReasonID: null,\n\t\t\t\t\t\tdisarmNote: \"\",\n\t\t\t\t\t\tmaskType: MaskType.duration,\n\t\t\t\t\t\thours: 0,\n\t\t\t\t\t\tminutes: alarmMaskDuration,\n\t\t\t\t\t\tmaskIsAutoHandle: this.selectedMaskAction\n\t\t\t\t\t} as MaskingRequest);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tawait maskingApi.unmaskAlarm(alarm.eventID, alarm.responseID, alarm.groupID);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tthis.isMaskingAlarm = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst responses = await api.responsesByArea(this.selectedArea.groupID);\n\t\t\tconst totalAlarmMaskCount = responses.filter(r => !r.armed).length;\n\n\t\t\tlet indexOfAlarmToUpdate = this.selectedAreaAlarms.findIndex(a => a.responseID === alarm.responseID);\n\t\t\tif (indexOfAlarmToUpdate != -1) {\n\t\t\t\talarm.armed = !alarm.armed;\n\t\t\t\tif (!alarm.armed) {\n\t\t\t\t\talarm.toggleArmAt = moment.utc().add(alarm.maskDurationInput, 'm').toDate();\n\t\t\t\t} else {\n\t\t\t\t\talarm.toggleArmAt = null;\n\t\t\t\t}\n\n\t\t\t\tVue.set(this.selectedAreaAlarms, indexOfAlarmToUpdate, alarm);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.$notify({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\ttitle: \"Failed to toggle alarm masking\",\n\t\t\t\t\ttext: \"Could not find alarm to mask, please try again or contact support for assistance\"\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst isLastAlarmToBeUnmasked = totalAlarmMaskCount === 1 && alarm.armed;\n\t\t\tconst isLastAlarmToBeMasked = totalAlarmMaskCount === responses.length - 1 && !alarm.armed;\n\t\t\tconst isFirstAlarmToBeUnmasked = totalAlarmMaskCount === responses.length && alarm.armed;\n\t\t\tconst isFirstAlarmToBeMasked = totalAlarmMaskCount === 0;\n\n\t\t\tif (isLastAlarmToBeUnmasked || isFirstAlarmToBeMasked || isFirstAlarmToBeUnmasked || isLastAlarmToBeMasked) {\n\n\t\t\t\tif (isFirstAlarmToBeMasked || isFirstAlarmToBeUnmasked) {\n\t\t\t\t\tthis.updateSelectedGroup({...this.selectedArea, state: \"Partially Masked\"});\n\t\t\t\t}\n\n\t\t\t\tif (isLastAlarmToBeUnmasked) {\n\t\t\t\t\tthis.updateSelectedGroup({...this.selectedArea, state: \"Unmasked\"});\n\t\t\t\t}\n\n\t\t\t\tif (isLastAlarmToBeMasked) {\n\t\t\t\t\tthis.updateSelectedGroup({...this.selectedArea, state: \"Masked\"});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.selectedArea.groupID == this.groupId) {\n\t\t\t\tawait this.updateResponses(this.groupId);\n\t\t\t}\n\n\t\t\tthis.isMaskingAlarm = false;\n\t\t}\n\n\t\tprivate async unmaskAllAlarmsInArea() {\n\t\t\tthis.isMaskingAlarm = true;\n\n\t\t\ttry {\n\t\t\t\tawait maskingApi.unmaskAllAlarmsInArea(this.selectedArea.groupID);\n\t\t\t\tawait this.updateSelectedAreaAlarms();\n\t\t\t\tthis.updateSelectedGroup({...this.selectedArea, state: \"Unmasked\"});\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tthis.isMaskingAlarm = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isMaskingAlarm = false;\n\t\t}\n\n\t\tprivate async maskAllAlarmsInArea() {\n\t\t\tconst responses = await api.responsesByArea(this.selectedArea.groupID);\n\n\t\t\tthis.responsesWithInvalidMasking = responses.filter(response => this.maskAllDuration > response.maskDurationLimit)\n\t\t\tif (this.responsesWithInvalidMasking.length > 0 && !this.getPermissions.canDisarmSitesExtended)\n\t\t\t{\n\t\t\t\tthis.isMaskDurationConfirmationVisible = true;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait this.applyMaskingToAllAlarmsInArea();\n\t\t}\n\n\t\tprivate async applyMaskingToAllAlarmsInArea() {\n\t\t\tthis.isMaskingAlarm = true;\n\t\t\ttry {\n\t\t\t\tawait maskingApi.maskAllAlarmsInArea(this.selectedArea.groupID, this.maskAllDuration, 0, \"\", this.selectedMaskAction);\n\t\t\t\tawait this.updateSelectedAreaAlarms();\n\t\t\t\tthis.updateSelectedGroup({...this.selectedArea, state: \"Masked\"});\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tthis.isMaskingAlarm = false;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isMaskingAlarm = false;\n\t\t}\n\n\t\tprivate close() {\n\t\t\tthis.$emit(\"input\", false);\n\t\t\tthis.$emit(\"closed\");\n\t\t\tthis.isModalShown = false;\n\t\t\tthis.updateSelectedGroup(null);\n\t\t\tthis.selectedAreaAlarms = [];\n\t\t}\n\n\t\tprivate getAlarmsToShow(): Response[] {\n\t\t\tif(this.filteredAreaAlarms === null) {\n\t\t\t\treturn new Response[0];\n\t\t\t}\n\n\t\t\treturn this.filteredAreaAlarms.slice(0, this.recordsPageSize);\n\t\t}\n\n\t\tprivate calculateTableHeight() {\n\t\t\tlet result = document.body.clientHeight / 100 * 35;\n\t\t\treturn `${result}px`;\n\t\t}\n\n\t\tprivate dateAsLocalTime(date: Date): string {\n\t\t\tlet result;\n\t\t\tlet type = typeof(date);\n\t\t\tif (type === \"object\") {\n\t\t\t\tresult = moment(date).local().format(\"L LT\");\n\t\t\t}\n\t\t\telse {\n\t\t\t\tresult = moment(date + \"Z\").local().format(\"L LT\");\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tprivate dateAsUtc(date: Date): string {\n\t\t\tlet result;\n\t\t\tlet type = typeof(date);\n\t\t\tif (type === \"object\") {\n\t\t\t\tresult = moment.utc(date).format(\"L LT\");\n\t\t\t}\n\t\t\telse {\n\t\t\t\tresult = moment.utc(date + \"Z\").format(\"L LT\");\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\n\t\tprivate setAlarmFilter() {\n\t\t\tif (this.responseId) {\n\t\t\t\tthis.isSearchTermResponseId = true;\n\t\t\t\tthis.alarmFilterInput = this.responseId.toString();\n\t\t\t\tthis.alarmFilter = this.responseId.toString();\n\t\t\t\tthis.focusOnAlarmSearch();\n\t\t\t}\n\t\t}\n\n\t\tprivate focusOnAlarmSearch() {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\t(this.$refs.alarmFilterSearch as HTMLElement).focus();\n\t\t\t});\n\t\t}\n\n\t\tprivate async updateSelectedAreaAlarms(): Promise {\n\t\t\tif(!this.isAlarmMaskingEnabled){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoadingAreaAlarms = true;\n\n\t\t\ttry {\n\t\t\t\tawait this.updateResponses(this.selectedArea.groupID);\n\t\t\t}\n\t\t\tcatch {\n\t\t\t\tthis.isLoadingAreaAlarms = false;\n\t\t\t}\n\n\t\t\tthis.isLoadingAreaAlarms = false;\n\t\t}\n\n\t\tprivate async groupSelected(selectedGroup: AreaNode): Promise {\n\t\t\tif (selectedGroup && selectedGroup.id) {\n\t\t\t\tawait this.getSelectedGroupByIDSetState({groupID: selectedGroup.id, state: selectedGroup.state });\n\t\t\t\tif (this.selectedArea) {\n\t\t\t\t\tawait this.updateSelectedAreaAlarms();\n\t\t\t\t\tthis.$set(this, \"selectedAreaNode\", selectedGroup);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.updateSelectedGroup(null);\n\t\t\t}\n\t\t}\n\n\t\tprivate confirmAreaMaskingChange(newAreaMaskingCount: AreaMaskingCount, oldAreaMaskingCount: AreaMaskingCount): boolean {\n\t\t\tif (!newAreaMaskingCount || !oldAreaMaskingCount) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn (newAreaMaskingCount.totalGroups !== oldAreaMaskingCount.totalGroups) ||\n\t\t\t \t(newAreaMaskingCount.masked !== oldAreaMaskingCount.masked) ||\n\t\t\t \t(newAreaMaskingCount.partiallyMasked !== oldAreaMaskingCount.partiallyMasked) ||\n\t\t\t \t(newAreaMaskingCount.unmasked !== oldAreaMaskingCount.unmasked);\n\t\t}\n\n\t\tprivate async getLatestSelectedNode(): Promise {\n\t\t\tif (this.selectedArea && this.selectedArea.groupID) {\n\t\t\t\tconst node = await api.getGroupTreeNode(this.selectedArea.groupID, this.requiredPermissions);\n\t\t\t\tawait this.groupSelected(node);\n\t\t\t}\n\t\t}\n\n\t\tprivate async confirmMasking(): Promise {\n\t\t\tthis.isMaskDurationConfirmationVisible = false;\n\t\t\tthis.responsesWithInvalidMasking = [];\n\t\t\tawait this.applyMaskingToAllAlarmsInArea();\n\t\t}\n\n\t\tprivate cancelMasking(): void {\n\t\t\tthis.isMaskDurationConfirmationVisible = false;\n\t\t\tthis.responsesWithInvalidMasking = [];\n\t\t}\n\n\t\tprivate async unmaskAdvancedAlarms(): Promise {\n\n\t\t\tif (this.selectedResponses.length > 0){\n\t\t\t\tfor (var response of this.selectedResponses) {\n\t\t\t\t\tif (!response.armed){\n \t\t\t\t\tawait this.toggleAlarmMasking(response);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawait this.unmaskAllAlarmsInArea();\n\t\t\t}\n\t\t}\n\n\t\tprivate async updateSelectedAreaState(): Promise {\n\t\t\tconst responses = await api.responsesByArea(this.selectedArea.groupID);\n\t\t\tconst totalAlarmMaskCount = responses.filter(r => !r.armed).length;\n\n\t\t\tconst isArmed = totalAlarmMaskCount === 0;\n\t\t\tconst isMasked = totalAlarmMaskCount === responses.length;\n\n\t\t\tif (isMasked) {\n\t\t\t\tthis.updateSelectedGroup({...this.selectedArea, state: \"Masked\"});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (isArmed) {\n\t\t\t\tthis.updateSelectedGroup({...this.selectedArea, state: \"Unmasked\"});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.updateSelectedGroup({...this.selectedArea, state: \"Partially Masked\"});\n\t\t}\n\n\t\t// Getter Methods\n\t\tpublic get isAlarmMaskingEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Alarms\", \"Masking\"], false) &&\n\t\t\t\t(this.getPermissions.canDisarmSites || this.getPermissions.canDisarmSitesExtended);\n\t\t}\n\n\t\tpublic get isMaskAreaEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Alarms\", \"Masking\", \"Areas\"], false);\n\t\t}\n\n\t\tprivate get isMaskingAdvancedEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Alarms\", \"Masking\", \"Advanced\"], false);\n\t\t}\n\n\t\tprivate get isMaskingFilterEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Alarms\", \"Masking\", \"Filter\"], false);\n\t\t}\n\n\t\tprivate get isDisableMaskingEnabled(): boolean {\n\t\t\treturn this.getFeature([\"Areas\", \"DisableMasking\"]);\n\t\t}\n\n\t\tprivate get isUpdatingAlarmsInModal(): boolean {\n\t\t\treturn this.isLoadingAreaAlarms|| this.isMaskingAlarm || this.getIsUpdatingArea;\n\t\t}\n\n\t\tprivate get isAreaMaskingReasonsEnabled() : boolean {\n\t\t\treturn this.getFeature([\"Alarms\", \"Masking\", \"Advanced\", \"Reasons\", \"Areas\"]);\n\t\t}\n\n\t\tprivate get selectedResponses(): Response[] {\n\t\t\treturn this.filteredAreaAlarms.filter(response => response.isAlarmSelected);\n\t\t}\n\n\t\tprivate get filteredAreaAlarms() {\n\t\t\tlet result = [];\n\n\t\t\tif (!this.isModalShown) {\n\t\t\t\tthis.isLoadingAreaAlarms = false;\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tresult = [...this.selectedAreaAlarms];\n\n\t\t\tresult.forEach(a => {\n\t\t\t\ta.maskDurationInput = this.getDefaultMaskValue.toString();\n\t\t\t\ta.isMasked = !a.armed;\n\t\t\t});\n\n\t\t\treturn result;\n\t\t}\n\n\t\t@Watch(\"selectedAlarmFilter\")\n\t\tpublic async onSelectedAlarmFilterChanged(): Promise {\n\t\t\tthis.recordsPage = 1;\n\t\t\tthis.updateResponses(this.selectedArea.groupID);\n\t\t}\n\n\t\tprivate get maxAreaMaskDuration(): number {\n\t\t\treturn this.getPermissions.canDisarmSitesExtended ? this.maxMaskingDurationLimit : this.selectedArea.maskDurationLimit;\n\t\t}\n\n\t\tprivate get isAreaAlarmsDisplayed(): boolean {\n\t\t\tif (!this.selectedAreaAlarms) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (!this.isMaskAreaEnabled) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (this.isMaskAreaEnabled && !this.selectedArea.armed) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t}\n\n\t\tprivate get isAreaMaskDurationDisplayed(): boolean {\n\t\t\treturn this.isMaskAreaEnabled && this.selectedArea.state === \"Masked\" && !this.selectedArea.armed\n\t\t}\n\n\t\tprivate get alarmMaskingTableColumns(): VueBootstrapFieldEx[] {\n\t\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: 'Selected',\n\t\t\t\tkey: 'isAlarmSelected',\n\t\t\t\tvisible: this.isMaskingAdvancedEnabled\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'title',\n\t\t\t\tlabel: 'Name',\n\t\t\t\tsortable: true,\n\t\t\t\tvisible: true,\n\t\t\t\tkeySort: \"title\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'toggleArmAt',\n\t\t\t\tlabel: 'State',\n\t\t\t\tsortable: this.selectedAlarmFilter !== 'Unmasked',\n\t\t\t\tvisible: true,\n\t\t\t\tkeySort: \"toggleArmAt\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Action',\n\t\t\t\tkey: 'action',\n\t\t\t\tvisible: !this.isMaskingAdvancedEnabled\n\t\t\t}\n\t\t\t]\n\t\t}\n\n\t\tprivate get visibleFields(): VueBootstrapField[] {\n\t\t\treturn this.alarmMaskingTableColumns.filter(c => c.visible);\n\t\t}\n\n\t\tprivate get isChangeMaskActionEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"TenantSettings\", \"ChangeMaskAction\"], false);\n\t\t}\n\n\t\tprivate get canChangeMaskAction(): boolean {\n\t\t\treturn this.getPermissions.canChangeMaskAction;\n\t\t}\n\n\t\tprivate async updateResponses(groupId: number): Promise {\n\t\t\tif (this.isLoadingAreaAlarms) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar responseData: Response[] = null;\n\t\t\ttry\n\t\t\t{\n\t\t\t\tconst isResponseId = this.isSearchTermResponseId;\n\t\t\t\tthis.isLoadingAreaAlarms = true;\n\n\t\t\t\tconst sortBy = this.alarmMaskingTableColumns.find(f => f.key == this.sortBy)?.keySort;\n\n\t\t\t\tconst queryParams: MaskingModalPaginatedSearchQueryParams = {\n\t\t\t\t\tpage: this.recordsPage,\n\t\t\t\t\tpageSize: this.recordsPageSize,\n\t\t\t\t\tsortBy: sortBy,\n\t\t\t\t\tsortDesc: this.sortDesc,\n\t\t\t\t\tsearchTerm: this.alarmFilter,\n\t\t\t\t\tfilterMaskingType: this.getFilterMaskingType()\n\t\t\t\t};\n\n\t\t\t\tconst cancellableQuery = this.generateNewPaginatedSearchRequest(queryParams);\n\n\t\t\t\tif(this.isSearchTermResponseId) {\n\t\t\t\t\tcancellableQuery.params.isResponseId = true;\n\t\t\t\t}\n\n\t\t\t\tconst result: ResponseDtoPagedResponse = await api.getPagedResponsesByArea(groupId, cancellableQuery);\n\t\t\t\tconst responseData = result.data as Response[];\n\n\t\t\t\tthis.selectedAreaAlarms = responseData;\n\n\t\t\t\tthis.totalRecords = result.totalRecords;\n\t\t\t\tthis.totalArmed = result.totalArmed;\n\t\t\t\tthis.totalUnarmed = result.totalUnarmed;\n\n\n\t\t\t\tif(isResponseId && this.totalRecords == 1) {\n\t\t\t\t\tthis.alarmFilterInput = responseData[0].title;\n\t\t\t\t\tthis.alarmFilter = responseData[0].title;\n\t\t\t\t\tawait this.$nextTick();\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\tconsole.error(\"Unexpected error searching alarms: \" + ex);\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tthis.isLoadingAreaAlarms = false;\n\t\t\t\tthis.isSearchTermResponseId = false;\n\t\t\t}\n \t}\n\n\t\tprivate getFilterMaskingType(): MaskingTypeEnum {\n\t\t\tswitch(this.selectedAlarmFilter) {\n\t\t\t\tcase \"Unmasked\":\n\t\t\t\t\treturn MaskingTypeEnum.Armed\n\t\t\t\tcase \"Masked\":\n\t\t\t\t\treturn MaskingTypeEnum.Unarmed\n\t\t\t\tdefault:\n\t\t\t\t\treturn MaskingTypeEnum.All\n\t\t\t}\n\t\t}\n\n\t\tprivate handleSearchInput = debounce(async (searchTerm: string): Promise => {\n\t\t\tawait this.performSearch(searchTerm);\n\t\t}, getDebouncePeriod());\n\n\t\tprivate async performSearch(searchTerm: string): Promise {\n\t\t\tthis.alarmFilter = searchTerm;\n\t\t\tthis.recordsPage = 1;\n\t\t\tawait this.updateResponses(this.selectedArea.groupID);\n\t\t\tthis.focusOnAlarmSearch();\n\t\t}\n\n\t\tprivate removeNonDigitsFromString(value: string): string {\n\t\t\tif (!value)\n\t\t\t\treturn \"\";\n\n\t\t\tconst digitFind = value.match(/\\d+/g);\n\t\t\tif (!digitFind)\n\t\t\t\treturn \"\";\n\n\t\t\tif (parseInt(digitFind.join(\"\")) > parseInt(this.recordsPageSizeMax)) {\n\t\t\t\tthis.recordsPageSizeUpdated = this.recordsPageSizeMax;\n\t\t\t}\n\n\t\t\treturn digitFind.join(\"\");\n\t\t}\n\n\t\tprivate isMaskButtonDisabled(): boolean {\n\t\t\treturn (\n\t\t\t\tthis.getIsUpdatingArea ||\n\t\t\t\t(this.selectedArea.armed &&\n\t\t\t\tthis.isDisableMaskingEnabled &&\n\t\t\t\tthis.selectedAreaNode.disableMasking\n\t\t\t\t));\n\t\t}\n\n\t\tprivate async onRecordsPerPageClick(): Promise {\n\t\t\tif (parseInt(this.recordsPageSizeUpdated) !== this.recordsPageSize) {\n\t\t\t\tthis.recordsPage = 1;\n\t\t\t}\n\n\t\t\tthis.recordsPageSize = parseInt(this.recordsPageSizeUpdated);\n\t\t\tthis.onPageClick(this.recordsPage);\n\t\t}\n\n\t\tprivate async onPageClick(page: number): Promise {\n\t\t\tif (this.isLoadingAreaAlarms)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.recordsPage = page || this.recordsPage;\n\n\t\t\tawait this.updateResponses(this.selectedArea.groupID);\n\t\t}\n\n\t\tprivate async onSortChange(event: VueBootstrapFieldTableSortEvent): Promise {\n\t\t\tif (this.isLoadingAreaAlarms) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.sortBy = event.sortBy || this.sortBy;\n\t\t\tthis.sortDesc = event.sortDesc;\n\n\t\t\tawait this.updateResponses(this.selectedArea.groupID);\n\t\t}\n\n\t\tprivate openAdvancedMaskModalAreaMode(): void {\n\t\t\tthis.setAreaMaskingMode(true);\n\t\t\tthis.openAdvancedMaskModal()\n\t\t}\n\n\t\tprivate async unMaskArea(): Promise {\n\t\t\tthis.setIsUpdatingArea(true);\n\n\t\t\ttry {\n\t\t\t\tawait maskingApi.unmaskArea(this.selectedArea.groupID);\n\t\t\t} catch {\n\t\t\t\tthis.setIsUpdatingArea(false);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.setIsUpdatingArea(false);\n\t\t}\n\n\t\tprivate async areaMaskMethod(): Promise\n\t\t{\n\t\t\tif (this.isAreaMaskingReasonsEnabled) {\n\t\t\t\treturn this.selectedArea.armed ? this.openAdvancedMaskModalAreaMode() : await this.unMaskArea();\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn await this.toggleAreaMasking();\n\t\t\t}\n\t\t}\n\n\t\t// Watchers\n\t\t@Watch(\"value\")\n\t\tprivate async onVModelUpdated(newValue: boolean): Promise {\n\t\t\tthis.isModalShown = newValue;\n\n\t\t\tif (this.isModalShown) {\n\t\t\t\tif (this.groupId) {\n\t\t\t\t\tthis.setAlarmFilter();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Watch(\"preSelectedAlarmFilter\")\n\t\tprivate preSelectedAlarmChanged(): void {\n\t\t\tthis.selectedAlarmFilter = this.preSelectedAlarmFilter;\n\t\t}\n\n\t\t@Watch(\"selectedArea\")\n\t\tprivate async selectedAreaChanged(newArea: Group): Promise {\n\t\t\tif (!this.isModalShown) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!newArea) {\n\t\t\t\tthis.selectedAreaAlarms = [];\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait this.updateResponses(this.selectedArea.groupID);\n\t\t}\n\n\t\t@Watch(\"groupId\")\n\t\tprivate async onGroupIdChanged(): Promise {\n\t\t\tif (this.groupId) {\n\t\t\t\tconst node = await api.getGroupTreeNode(this.groupId, this.requiredPermissions);\n\t\t\t\tawait this.groupSelected(node);\n\t\t\t}\n\t\t}\n\n\t\t@Watch(\"areaMaskDuration\")\n\t\tprivate onAreaMaskDurationChanged(newValue): void {\n\t\t\tif (newValue > this.maxAreaMaskDuration) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.areaMaskDuration = this.maxAreaMaskDuration;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (newValue < 1) {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.areaMaskDuration = 1;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t@Watch(\"isModalShown\")\n\t\tprivate async onModalShownChanged(): Promise {\n\t\t\tif (!this.isModalShown) {\n\t\t\t\tthis.updateSelectedGroup(null);\n\t\t\t}\n\n\t\t\tif (this.isModalShown && this.groupId) {\n\t\t\t\tthis.isLoadingAreas = true;\n\t\t\t\tconst node = await api.getGroupTreeNode(this.groupId, this.requiredPermissions);\n\t\t\t\tthis.selectedAreaNode = node;\n\t\t\t\tthis.isLoadingAreas = false;\n\t\t\t\tawait this.groupSelected(this.selectedAreaNode);\n\t\t\t}\n\t\t}\n\n\t\t@Watch(\"isMaskingAlarm\")\n\t\tprivate async onIsMaskingAlarmChanged(): Promise {\n\t\t\tif (this.isMaskingAlarm || !this.isAlarmMaskingEnabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait this.getLatestSelectedNode();\n\t\t\tawait this.fetchAreaMaskingCount();\n\t\t}\n\n\t\t@Watch(\"getIsUpdatingArea\")\n\t\tprivate async onIsUpdatingAreaChanged(): Promise {\n\t\t\tif (this.getIsUpdatingArea || !this.isAlarmMaskingEnabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait this.getLatestSelectedNode();\n\t\t\tawait this.fetchAreaMaskingCount();\n\t\t}\n\n\t\t@Watch(\"areaMaskingCount\")\n\t\tprivate async onAreaMaskingCountChanged(newAreaMaskingCount: AreaMaskingCount, oldAreaMaskingCount: AreaMaskingCount): Promise {\n\t\t\tif (this.confirmAreaMaskingChange(newAreaMaskingCount, oldAreaMaskingCount)) {\n\t\t\t\tawait this.getLatestSelectedNode();\n\t\t\t}\n \t}\n\n\t\t// Emits\n\t\t@Emit(\"openFilterModal\")\n\t\tprivate groupBadgeSelected(result: string): string {\n\t\t\tthis.groupFilter = result;\n\t\t\treturn result;\n\t\t}\n\n\t\t@Emit(\"openAdvancedMaskingModal\")\n\t\tprivate openAdvancedMaskModal(): {responses: Response[], areaMaskingMode: boolean} {\n\t\t\treturn {\n\t\t\t\tresponses: this.selectedResponses,\n\t\t\t\tareaMaskingMode: this.getAreaMaskingMode\n\t\t\t};\n\t\t}\n\n\t\tprivate get paginatedRowsCount(): number {\n\t\t\tswitch(this.selectedAlarmFilter) {\n\t\t\t\tcase \"Unmasked\":\n\t\t\t\t\treturn this.totalArmed;\n\t\t\t\tcase \"Masked\":\n\t\t\t\t\treturn this.totalUnarmed;\n\t\t\t\tdefault:\n\t\t\t\t\treturn this.totalRecords;\n\t\t\t}\n\t\t}\n\n\t\tprivate get filterBadgesLabel(): string {\n\t\t\treturn `Filter${this.alarmFilterInput ? \" based on search\" : \"\"}`\n\t\t}\n\t}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MaskingModal.vue?vue&type=template&id=02d93632&scoped=true\"\nimport script from \"./MaskingModal.vue?vue&type=script&lang=ts\"\nexport * from \"./MaskingModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MaskingModal.vue?vue&type=style&index=0&id=02d93632&prod&lang=scss&scoped=true\"\nimport style1 from \"./MaskingModal.vue?vue&type=style&index=1&id=02d93632&prod&lang=scss\"\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 \"02d93632\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TaskTriggerDialog.vue?vue&type=style&index=0&id=533f2491&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TreePicker.vue?vue&type=style&index=0&id=67bee432&prod&lang=css&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueFooter.vue?vue&type=style&index=0&id=6920baa6&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerModal.vue?vue&type=style&index=1&id=350413fe&prod&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.editingConfig)?_c('div',{staticClass:\"edit-grid\"},[(_vm.showAllowDelete)?_c('div',[_c('b-form-group',{attrs:{\"label\":\"Allow Delete:\",\"label-for\":\"allowDelete\",\"label-cols-md\":\"6\",\"label-class\":\"groupsync-checkbox-label\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"allowDelete\",\"data-cy\":\"allowDelete-checkbox\",\"disabled\":_vm.readonly},model:{value:(_vm.editingConfig.AllowDelete),callback:function ($$v) {_vm.$set(_vm.editingConfig, \"AllowDelete\", $$v)},expression:\"editingConfig.AllowDelete\"}})],1),_c('small',{staticClass:\"form-text text-muted moveUp\"},[_vm._v(\"Allows the automated deletion of sync entities\")])],1):_vm._e(),_c('div',[_c('b-form-group',{attrs:{\"label\":\"Allow update Area:\",\"label-cols-md\":\"6\",\"label-for\":\"groupId\",\"label-class\":\"groupsync-checkbox-label\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"groupId\",\"data-cy\":\"groupId-checkbox\",\"disabled\":_vm.readonly},model:{value:(_vm.editingConfig.UpdateGroupId),callback:function ($$v) {_vm.$set(_vm.editingConfig, \"UpdateGroupId\", $$v)},expression:\"editingConfig.UpdateGroupId\"}})],1),_c('small',{staticClass:\"form-text text-muted moveUp\"},[_vm._v(\"Allows the Area of all sync entities to be updated\")])],1),_c('div',[_c('b-form-group',{attrs:{\"label\":\"Allow update Device Settings:\",\"label-for\":\"settingsMeta\",\"label-class\":\"groupsync-checkbox-label\",\"label-cols-md\":\"6\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"settingsMeta\",\"data-cy\":\"settingsMeta-checkbox\",\"disabled\":_vm.readonly},model:{value:(_vm.editingConfig.UpdateSettingsMeta),callback:function ($$v) {_vm.$set(_vm.editingConfig, \"UpdateSettingsMeta\", $$v)},expression:\"editingConfig.UpdateSettingsMeta\"}})],1),_c('small',{staticClass:\"form-text text-muted moveUp\"},[_vm._v(\"Allows the settings of devices to be updated\")])],1),(this.maskNewAlarmPointsEnabled)?_c('div',[_c('b-form-group',{attrs:{\"label\":\"Mask New Alarm Points:\",\"label-for\":\"maskNewAlarmPoints\",\"label-class\":\"groupsync-checkbox-label\",\"label-cols-md\":\"6\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"maskNewAlarmPoints\",\"data-cy\":\"maskNewAlarmPoints-checkbox\",\"disabled\":_vm.readonly},model:{value:(_vm.editingConfig.MaskNewAlarmPoints),callback:function ($$v) {_vm.$set(_vm.editingConfig, \"MaskNewAlarmPoints\", $$v)},expression:\"editingConfig.MaskNewAlarmPoints\"}})],1),_c('small',{staticClass:\"form-text text-muted moveUp\"},[_vm._v(\"New alarm points will be masked by default\")])],1):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue, Watch, Emit } from \"vue-property-decorator\";\r\nimport { GroupSyncAdditionalConfig } from '@/types/sv-data/devices/SyncSystem';\r\nimport { Getter } from \"vuex-class\";\r\n@Component({\r\n\tcomponents: {}\r\n})\r\nexport default class GroupSyncConfig extends Vue {\r\n @Getter getFeature: (featuresList: string[]) => boolean;\r\n\r\n @Prop()\r\n public value: string;\r\n\r\n @Prop()\r\n private readonly: boolean;\r\n\r\n private storedConfig: GroupSyncAdditionalConfig = this.getDefaultConfig();\r\n private editingConfig: GroupSyncAdditionalConfig = this.getDefaultConfig();\r\n\tprivate showAllowDelete: boolean = false;\r\n\r\n private getDefaultConfig(): GroupSyncAdditionalConfig {\r\n return {\r\n AllowDelete: false,\r\n UpdateGroupId: false,\r\n UpdateSettingsMeta: false,\r\n\t\t\tMaskNewAlarmPoints: false\r\n }\r\n }\r\n\r\n private created(): void {\r\n this.assignValue();\r\n }\r\n\r\n\tprivate get maskNewAlarmPointsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Devices\", \"AdvancedSetup\", \"SyncSystem\", \"MaskNewAlarmPoints\"]);\r\n\t}\r\n\r\n @Watch(\"value\", { deep: true })\r\n private assignValue(): void {\r\n if(!this.value){\r\n this.storedConfig = this.getDefaultConfig();\r\n this.editingConfig = this.getDefaultConfig();\r\n this.pushConfigUpdate();\r\n return;\r\n }\r\n this.storedConfig = JSON.parse(this.value);\r\n this.editingConfig = JSON.parse(this.value);\r\n }\r\n\r\n @Watch(\"editingConfig\", {deep:true})\r\n private editConfigWatch(): void {\r\n if(this.readonly ||(\r\n this.editingConfig.AllowDelete == this.storedConfig.AllowDelete\r\n && this.editingConfig.UpdateGroupId == this.storedConfig.UpdateGroupId\r\n && this.editingConfig.UpdateSettingsMeta == this.storedConfig.UpdateSettingsMeta\r\n\t\t\t\t&& this.editingConfig.MaskNewAlarmPoints == this.storedConfig.MaskNewAlarmPoints))\r\n {\r\n return;\r\n }\r\n this.pushConfigUpdate();\r\n }\r\n\r\n @Emit(\"input\")\r\n private pushConfigUpdate(): string {\r\n return `{\"AllowDelete\":${this.editingConfig.AllowDelete},\"UpdateGroupId\":${this.editingConfig.UpdateGroupId},\"UpdateSettingsMeta\":${this.editingConfig.UpdateSettingsMeta},\"MaskNewAlarmPoints\":${this.editingConfig.MaskNewAlarmPoints ?? false}}`;\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupSyncConfig.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupSyncConfig.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GroupSyncConfig.vue?vue&type=template&id=0c86ccf4&scoped=true\"\nimport script from \"./GroupSyncConfig.vue?vue&type=script&lang=ts\"\nexport * from \"./GroupSyncConfig.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GroupSyncConfig.vue?vue&type=style&index=0&id=0c86ccf4&prod&lang=css\"\nimport style1 from \"./GroupSyncConfig.vue?vue&type=style&index=1&id=0c86ccf4&prod&scoped=true&lang=css\"\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 \"0c86ccf4\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CaseTypeSelect.vue?vue&type=style&index=0&id=6052be48&prod&lang=css\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileEventShare.vue?vue&type=style&index=0&id=172973d4&prod&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SVButton.vue?vue&type=style&index=0&id=577bfa09&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingModal.vue?vue&type=style&index=0&id=02d93632&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmationModal.vue?vue&type=style&index=0&id=fc2fe4d4&prod&lang=scss&scoped=true\"","// `https://maps.googleapis.com/maps/api/js?key=${process.env.VUE_APP_GOOGLE_MAPS_API_KEY}&libraries=places`\r\n\r\nimport axios from \"axios\";\r\nimport { ILatLng } from \"@sureview/v2-mapping-saas\";\r\nimport { SVLocation } from \"@/store/mobile/types\";\r\nimport { convertStringToLatLng } from \"@sureview/v2-mapping-saas\";\r\n\r\nexport interface GeoCodeAddressComponent {\r\n\tlong_name: string;\r\n\tshort_name: string;\r\n\ttypes: string[];\r\n}\r\n\r\nexport interface GeoCodeLocation {\r\n\tlat: number;\r\n\tlng: number;\r\n}\r\n\r\nexport interface GeoCodeViewport {\r\n\tnortheast: GeoCodeLocation;\r\n\tsouthwest: GeoCodeLocation;\r\n}\r\n\r\nexport interface GeoCodeGeometry {\r\n\tlocation: GeoCodeLocation;\r\n\tlocation_type: string;\r\n\tviewport: GeoCodeViewport;\r\n}\r\n\r\nexport interface GeoCodeResult {\r\n\taddress_components: GeoCodeAddressComponent[];\r\n\tformatted_address: string;\r\n\tgeometry: GeoCodeGeometry;\r\n\tplace_id: string;\r\n\ttypes: string[];\r\n}\r\n\r\nexport interface GeoCodeResponse {\r\n\tresults: GeoCodeResult[];\r\n\tstatus: string;\r\n}\r\n\r\nexport class LocationBounds {\r\n\tpublic location: ILatLng;\r\n\tpublic viewport: {\r\n\t\tnortheast: ILatLng;\r\n\t\tsouthwest: ILatLng;\r\n\t};\r\n}\r\nexport default class GPSService {\r\n\tprivate axios: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.axios = axios.create({\r\n\t\t\tbaseURL: \"https://maps.googleapis.com/maps/api/geocode/json\"\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async GeoCodeLookup(\r\n\t\taddress: string,\r\n\t\tkey: string\r\n\t): Promise {\r\n\t\treturn (await this.axios.get(\"\", {\r\n\t\t\tparams: {\r\n\t\t\t\taddress,\r\n\t\t\t\tkey\r\n\t\t\t}\r\n\t\t})).data;\r\n\t}\r\n\r\n\tpublic tryConvertStringToGeoCodeLocation(latLong: string): GeoCodeLocation {\r\n \tconst error = \"Invalid Lat Long\";\r\n\t\tconst latLongParts = latLong.split(\" \");\r\n\t\tif (latLongParts.length !== 2) {\r\n\t\t\tthrow error;\r\n\t\t}\r\n\r\n\t\tconst floatRegex = /^-?\\d+(?:[.,]\\d*?)?$/;\r\n\t\tlet isLatLongTwoFloats = floatRegex.test(latLongParts[0]) && floatRegex.test(latLongParts[1]);\r\n\t\tif (!isLatLongTwoFloats) {\r\n\t\t\tthrow error;\r\n\t\t}\r\n\r\n\t\tconst isLatLongComplete = latLongParts[0].slice(latLongParts[0].length - 1) !== \".\" && latLongParts[1].slice(latLongParts[1].length - 1) !== \".\";\r\n\t\tif (!isLatLongComplete) {\r\n\t\t\tthrow error;\r\n\t\t}\r\n\r\n\t\tconst latLng = convertStringToLatLng(latLong);\r\n\t\tconst isLatAndLngNotSet = isNaN(latLng.lng) || isNaN(latLng.lat);\r\n\t\tif (isLatAndLngNotSet) {\r\n\t\t\tthrow error;\r\n\t\t}\r\n\r\n\t\tconst isLatValueValid = latLng.lat >= -85 && latLng.lat <= 85;\r\n\t\tconst isLngValueValid = latLng.lng >= -180 && latLng.lng <= 180;\r\n\t\tconst isLatLongValid = isLatValueValid && isLngValueValid;\r\n\r\n\t\tif (!isLatLongValid) {\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t\treturn latLng;\r\n\t}\r\n\r\n\tpublic async decodeLocation(location: string, mapKey: string): Promise {\r\n\t\ttry {\r\n\t\t\tif (/^-?[\\d.]+[NS]?,? -?[\\d.]+[WE]?($|,)/.test(location)) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tlocation: convertStringToLatLng(location),\r\n\t\t\t\t\tviewport: null\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tlet response = await this.GeoCodeLookup(location, mapKey);\r\n\r\n\t\t\t\tif (response.results.length == 0) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlocation: {\r\n\t\t\t\t\t\t\tlat: null,\r\n\t\t\t\t\t\t\tlng: null\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tviewport: null\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet addressGeometry = response.results[0].geometry;\r\n\r\n\t\t\t\tif (addressGeometry.viewport) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlocation: {\r\n\t\t\t\t\t\t\tlat: addressGeometry.location.lat,\r\n\t\t\t\t\t\t\tlng: addressGeometry.location.lng\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tviewport: {\r\n\t\t\t\t\t\t\tnortheast: addressGeometry.viewport.northeast,\r\n\t\t\t\t\t\t\tsouthwest: addressGeometry.viewport.southwest\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tlocation: {\r\n\t\t\t\t\t\t\tlat: addressGeometry.location.lat,\r\n\t\t\t\t\t\t\tlng: addressGeometry.location.lng\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tviewport: null\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch {\r\n\t\t\tconsole.log(\"geoCoder failed to decodeLocation\");\r\n\t\t\treturn {\r\n\t\t\t\tlocation: {\r\n\t\t\t\t\tlat: null,\r\n\t\t\t\t\tlng: null\r\n\t\t\t\t},\r\n\t\t\t\tviewport: null\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic parseILatLngToLocation(location: ILatLng): string {\r\n\t\tif (!location) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn location.lat + \" \" + location.lng;\r\n\t}\r\n\r\n\tpublic parseGoogleLatLngToLocation(location: google.maps.LatLng): string {\r\n\t\tif (!location) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet locationJson: SVLocation = {\r\n\t\t\tlat: location.lat(),\r\n\t\t\tlng: location.lng()\r\n\t\t};\r\n\r\n\t\treturn JSON.stringify(locationJson);\r\n\t}\r\n\r\n\tpublic rad(x: number) {\r\n\t\treturn (x * Math.PI) / 180;\r\n\t}\r\n\r\n\tpublic metersToKm(meters: number) {\r\n\t\treturn meters * 0.001;\r\n\t}\r\n\r\n\tpublic metersToMiles(meters: number){\r\n\t\treturn meters * 0.00062137119224;\r\n\t}\r\n\r\n\tpublic metersToFeet(meters) {\r\n\t\tif (meters < 0) return 0;\r\n\t\telse return Math.round(meters / 0.3048);\r\n\t}\r\n\r\n\tpublic getDistance(p1: any, p2: any): number {\r\n\t\tlet R = 6378137; // Earth's mean radius in meters\r\n\r\n\t\tlet dLat = this.rad(p2.lat - p1.lat);\r\n\t\tlet dLong = this.rad(p2.lng - p1.lng);\r\n\t\tlet a =\r\n\t\t\tMath.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n\t\t\tMath.cos(this.rad(p1.lat)) * Math.cos(this.rad(p2.lat)) * Math.sin(dLong / 2) * Math.sin(dLong / 2);\r\n\t\tlet c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n\t\tlet d = R * c;\r\n\r\n\t\treturn Math.round(d);\r\n\t}\r\n}\r\n","enum ActionState {\r\n InProcess = 1,\r\n Success = 2,\r\n Fail = 3,\r\n Undefined = 4 }\r\n\r\nexport default ActionState;","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverview.vue?vue&type=style&index=0&id=ea8a4b3c&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerSetup.vue?vue&type=style&index=0&id=414d4462&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EnhancedSingleMap.vue?vue&type=style&index=2&id=28331b7e&prod&scoped=true&lang=scss\"","const darkMapStyle = [\r\n\t{\r\n\t\telementType: \"geometry\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#242f3e\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\telementType: \"labels.text.fill\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#746855\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tvisibility: \"off\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\telementType: \"labels.text.stroke\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#9ca5b3\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"administrative.locality\",\r\n\t\telementType: \"labels.text.fill\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#d59563\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"landscape.man_made\",\r\n\t\telementType: \"geometry\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#1c1c31\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tsaturation: -60\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"poi\",\r\n\t\telementType: \"labels.text.fill\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#d59563\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"poi.park\",\r\n\t\telementType: \"geometry\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#263c3f\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"poi.park\",\r\n\t\telementType: \"labels.text.fill\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#6b9a76\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"road\",\r\n\t\telementType: \"geometry\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#38414e\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"road\",\r\n\t\telementType: \"geometry.stroke\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#212a37\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"road\",\r\n\t\telementType: \"labels.text.fill\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#9ca5b3\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"road.highway\",\r\n\t\telementType: \"geometry\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#746855\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"road.highway\",\r\n\t\telementType: \"geometry.stroke\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#1f2835\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"road.highway\",\r\n\t\telementType: \"labels.text.fill\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#f3d19c\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"transit\",\r\n\t\telementType: \"geometry\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#2f3948\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"transit.station\",\r\n\t\telementType: \"labels.text.fill\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#d59563\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"water\",\r\n\t\telementType: \"geometry\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#17263c\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"water\",\r\n\t\telementType: \"labels.text.fill\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#515c6d\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"water\",\r\n\t\telementType: \"labels.text.stroke\",\r\n\t\tstylers: [\r\n\t\t\t{\r\n\t\t\t\tcolor: \"#17263c\"\r\n\t\t\t}\r\n\t\t]\r\n\t},\r\n\t{\r\n\t\tfeatureType: \"poi\",\r\n\t\tstylers: [{ visibility: \"off\" }]\r\n\t}\r\n];\r\n\r\nconst lightMapStyle = [\r\n {\r\n elementType: \"geometry\",\r\n },\r\n {\r\n elementType: \"labels.text.fill\",\r\n },\r\n {\r\n elementType: \"labels.text.stroke\",\r\n },\r\n {\r\n featureType: \"administrative.locality\",\r\n elementType: \"labels.text.fill\",\r\n },\r\n {\r\n featureType: \"landscape.man_made\",\r\n elementType: \"geometry\",\r\n },\r\n {\r\n featureType: \"poi\",\r\n elementType: \"labels.text.fill\",\r\n },\r\n {\r\n featureType: \"poi.park\",\r\n elementType: \"geometry\",\r\n },\r\n {\r\n featureType: \"poi.park\",\r\n elementType: \"labels.text.fill\",\r\n },\r\n {\r\n featureType: \"road\",\r\n elementType: \"geometry\",\r\n },\r\n {\r\n featureType: \"road\",\r\n elementType: \"geometry.stroke\",\r\n },\r\n {\r\n featureType: \"road\",\r\n elementType: \"labels.text.fill\",\r\n },\r\n {\r\n featureType: \"road.highway\",\r\n elementType: \"geometry\",\r\n },\r\n {\r\n featureType: \"road.highway\",\r\n elementType: \"geometry.stroke\",\r\n },\r\n {\r\n featureType: \"road.highway\",\r\n elementType: \"labels.text.fill\",\r\n },\r\n {\r\n featureType: \"transit\",\r\n elementType: \"geometry\",\r\n },\r\n {\r\n featureType: \"transit.station\",\r\n elementType: \"labels.text.fill\",\r\n },\r\n {\r\n featureType: \"water\",\r\n elementType: \"geometry\",\r\n },\r\n {\r\n featureType: \"water\",\r\n elementType: \"labels.text.fill\",\r\n },\r\n {\r\n featureType: \"water\",\r\n elementType: \"labels.text.stroke\",\r\n },\r\n {\r\n featureType: \"poi\",\r\n stylers: [{ visibility: \"off\" }]\r\n }\r\n];\r\n\r\nconst satelliteMapStyle = [\r\n\t{\r\n\t\tfeatureType: \"poi\",\r\n\t\telementType: \"labels\",\r\n\t\tstylers: [{ visibility: \"off\" }]\r\n\t}\r\n];\r\n\r\nconst getMapStyle = (mapType: string, hideLabels: boolean, mapStyle: string = \"\") => {\r\n\tlet styles: any[] = [];\r\n\r\n\tif (mapType === \"roadmap\" || mapType === \"terrain\") {\r\n\t\tstyles = darkMapStyle;\r\n\t} else {\r\n\t\tstyles = satelliteMapStyle;\r\n\t}\r\n\r\n\t// if a map style has been provided ignore default\r\n\tswitch(mapStyle){\r\n\t\tcase \"light\":\r\n\t\t\tstyles = lightMapStyle;\r\n\t\t\tbreak;\r\n\t\tcase \"dark\" :\r\n\t\t\tstyles = darkMapStyle;\r\n\t\t\tbreak;\r\n\t\tcase \"satellite\":\r\n\t\t\tstyles = satelliteMapStyle;\r\n\t\t\tbreak;\r\n\t\tdefault:\r\n\t\t\tbreak;\r\n\t}\r\n\r\n\tif (!hideLabels) {\r\n\t\tconst labels = styles.filter(style => style.elementType === \"labels\");\r\n\t\tlabels.forEach(element => {\r\n\t\t\t(element.stylers[0] as any).visibility = \"on\";\r\n\t\t});\r\n\t}\r\n\r\n\treturn styles;\r\n};\r\n\r\nexport { darkMapStyle, satelliteMapStyle, lightMapStyle, getMapStyle };\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetOnlySetup.vue?vue&type=style&index=0&id=182de0d5&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesCard.vue?vue&type=style&index=0&id=40b2a860&prod&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventQueue.vue?vue&type=style&index=1&id=2ada4a1f&prod&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteMonitorHeader.vue?vue&type=style&index=0&id=e3f6cd40&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-inline-block\"},[_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['f1']),expression:\"['f1']\",modifiers:{\"once\":true}}],ref:\"shortCut\",attrs:{\"tabindex\":\"0\",\"variant\":\"secondary\"},on:{\"shortkey\":function($event){return _vm.open()},\"click\":_vm.open}}),_c('b-modal',{ref:\"displayModal\",attrs:{\"id\":\"displayModal\",\"size\":\"md\",\"centered\":\"\",\"hide-footer\":true,\"role\":\"dialog\",\"title\":\"Shortcuts\"}},[_c('div',[_c('table',{staticClass:\"w-100\"},_vm._l((_vm.shortCuts),function(shortcut,i){return _c('tr',{key:(\"shortcut-\" + i)},[_c('td',[_vm._v(_vm._s(shortcut.keys))]),_c('td',[_vm._v(_vm._s(shortcut.action))])])}),0)]),_c('br'),(_vm.showRoutingGroupsLegend)?_c('div',[_c('h5',[_vm._v(\"Legend\")]),_c('table',{staticClass:\"w-100\"},[_vm._l((_vm.legendKeys),function(legend,i){return _c('tr',{key:(\"legend-\" + i)},[_c('td',{staticClass:\"icon-column\",attrs:{\"align\":\"center\"}},[_c('span',{class:(\"fas \" + (legend.icon))})]),_c('td',{staticClass:\"details-column\"},[_vm._v(_vm._s(legend.details))])])}),_vm._l((_vm.routingGroups),function(routingGroup,i){return _c('tr',{key:(\"routing-\" + i)},[_c('td',{staticClass:\"icon-column\",attrs:{\"align\":\"center\"}},[_c('span',{staticClass:\"fas circle smaller text-muted\",style:({ 'background-color': '#' + routingGroup.colourCode })})]),_c('td',{staticClass:\"details-column\"},[_vm._v(_vm._s(routingGroup.title)+\" routing group alarms\")])])})],2)]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { namespace, Getter, Mutation } from \"vuex-class\";\nconst SiteMonitor = namespace(\"siteMonitor\");\n\n@Component({\n\tcomponents: {}\n})\nexport default class ShortcutHelp extends Vue {\n\t$refs: any = {\n\t\tdisplayModal: HTMLElement\n\t};\n\n\t@Getter(\"getShortcuts\") shortCuts!: any[];\n\t@Getter(\"getLegendKeys\") legendKeys!: any[];\n\t@Getter(\"getShowRoutingGroupsLegend\") showRoutingGroupsLegend!: boolean;\n\t@Getter(\"getRoutingGroups\") routingGroups!: any;\n\n\t@SiteMonitor.Mutation setActivity;\n\n\tpublic open(): void {\n\t\tthis.$refs.displayModal.show();\n\t\tthis.setActivity();\n\t}\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShortcutHelp.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShortcutHelp.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ShortcutHelp.vue?vue&type=template&id=48b910f6&scoped=true\"\nimport script from \"./ShortcutHelp.vue?vue&type=script&lang=ts\"\nexport * from \"./ShortcutHelp.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ShortcutHelp.vue?vue&type=style&index=0&id=48b910f6&prod&scoped=true&lang=scss\"\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 \"48b910f6\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionLibrarySimpleList.vue?vue&type=style&index=0&id=77c293af&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileMap.vue?vue&type=style&index=2&id=7457f122&prod&scoped=true&lang=scss\"","import { axiosInstance, axiosJsonInstance } from \"@/axios.instance\";\r\nimport { ResponseMaskingMeta, Schedule, ScheduleType, SchedulesPagedResponse } from \"@/store/schedules/types\";\r\nimport { PublicHolidayApiContract, PublicHolidayDto } from \"@/store/schedules/types\";\r\nimport { AxiosInstance, CancelTokenSource } from \"axios\";\r\nimport { PaginatedSearchRequest } from \"@/mixins/PaginatedSearch\";\r\nimport PublicHolidaysWithPagination from \"@/types/sv-data/schedule/PublicHolidaysWithPagination\";\r\nimport { apiFormattingMixins } from \"@/mixins\";\r\nconst { arrayToQueryString } = apiFormattingMixins.methods\r\n\r\ninterface FilterSchedulesApiRequest {\r\n\tfilterString: string;\r\n\tgroupId: number,\r\n\tscheduleTypes: number[],\r\n\tstartTime: Date,\r\n\tendTime: Date,\r\n\tenabledSchedules: boolean | null,\r\n}\r\n\r\ninterface ScheduleApiRequest {\r\n\tscheduleId: string;\r\n\tscheduleTypeId: number;\r\n\tgroupId: number;\r\n\tstartDate: string;\r\n\tendDate?: string;\r\n\ttitle: string;\r\n\tintervalValue: number;\r\n\tintervalTypeId: number;\r\n\texpiresOn?: string;\r\n\tmaxOccurences?: number;\r\n\tpublicHolidayTypeId: number;\r\n\tresponseId?: string;\r\n\tdisabled?: boolean;\r\n\tdaysToRun?: string;\r\n\tresponseMaskingMeta?: ResponseMaskingMeta;\r\n\tserverTypeEvent?: string;\r\n}\r\n\r\nclass SchedulesApi {\r\n\tprivate axios: AxiosInstance;\r\n\tprivate axiosJson: any;\r\n\tprivate dateTimeDstOffsetStart: number = 0;\r\n\tprivate dateTimeDstOffsetEnd: number = 19;\r\n\r\n\tconstructor() {\r\n\t\tthis.axios = axiosInstance;\r\n\t\tthis.axiosJson = axiosJsonInstance;\r\n\t}\r\n\r\n\tpublic async getPublicHolidays(paginatedSearchRequest: PaginatedSearchRequest) : Promise {\r\n\t\tconst { data } = await this.axios.get(\"/PublicHoliday/GetPublicHolidays\", paginatedSearchRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getPublicHolidaysBetweenDates(startDate: string, endDate: string, groupId: number) : Promise {\r\n\t\tconst { data } = await this.axios.get(`/PublicHoliday/GetHolidayBetweenDates?startDate=${startDate}&endDate=${endDate}&groupId=${groupId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdatePublicHoliday(publicHolidayDto: PublicHolidayApiContract) : Promise {\r\n\t\tconst { data } = await this.axiosJson.put(\"/PublicHoliday/CreateOrUpdatePublicHoliday\", publicHolidayDto);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deletePublicHoliday(request: number) : Promise {\r\n\t\tawait this.axios.delete(`/PublicHoliday/DeletePublicHoliday?publicHolidayId=${request}`);\r\n\t}\r\n\r\n\tpublic async filterSchedules(\r\n\t\tfilteringSearch: string,\r\n\t\tselectedGroup: number,\r\n\t\tselectedScheduleTypes: number[],\r\n\t\tstartDate: Date,\r\n\t\tendDate: Date,\r\n\t\tenabled: boolean | null,\r\n\t\tcancelToken?: CancelTokenSource)\r\n\t\t: Promise {\r\n\t\tvar filteringModel = {\r\n\t\t\tfilterString: filteringSearch,\r\n\t\t\tgroupId: selectedGroup,\r\n\t\t\tscheduleTypes: selectedScheduleTypes,\r\n\t\t\tstartTime: startDate,\r\n\t\t\tendTime: endDate,\r\n\t\t\tenabledSchedules: enabled,\r\n\t\t} as FilterSchedulesApiRequest\r\n\t\tlet { data } = await this.axiosJson.post(\"/Schedules/GetFilteredSchedules\",\r\n\t\t\tfilteringModel,\r\n\t\t\t{ cancelToken: cancelToken?.token });\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAllScheduleTypes(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/Schedules/GetScheduleTypes\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getPaginatedSchedules(\r\n\t\tpage: number,\r\n\t\tpageSize: number,\r\n\t\tsortBy: string,\r\n\t\tsortDesc: boolean,\r\n\t\tgroupId: number | null,\r\n\t\tsearchTerm: string,\r\n\t\tscheduleType: number[],\r\n\t\tenabledSchedules: boolean | null)\r\n\t\t: Promise {\r\n\r\n\t\tlet query = `/Schedules/GetPaginatedSchedules?` +\r\n\t\t `${arrayToQueryString(\"scheduleTypes\", scheduleType)}&` +\r\n\t\t\t`groupId=${groupId}&`+\r\n\t\t\t`page=${page}&`+\r\n\t\t\t`pageSize=${pageSize}&`+\r\n\t\t\t`sortBy=${sortBy}&`+\r\n\t\t\t`sortDesc=${sortDesc}&`+\r\n\t\t\t`searchTerm=${searchTerm}&` +\r\n\t\t\t`enabledSchedules=${enabledSchedules}`;\r\n\r\n\t\tconst { data } = await this.axiosJson.get(query);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdateSchedule(schedule: Schedule): Promise {\r\n\t\tlet scheduleRequest = {\r\n\t\t\tscheduleId: schedule.scheduleId,\r\n\t\t\tscheduleTypeId: schedule.scheduleTypeId,\r\n\t\t\tgroupId: schedule.groupId,\r\n\r\n\t\t\t// Due to moment being deprecated, to remove the DST offset given when converting\r\n\t\t\t// from DateTime to a string in ISO format, we must truncate the DST offset appended during the conversion.\r\n\t\t\tstartDate: schedule.startDateTime.slice(this.dateTimeDstOffsetStart, this.dateTimeDstOffsetEnd),\r\n\t\t\tendDate: schedule.endDateTime.slice(this.dateTimeDstOffsetStart, this.dateTimeDstOffsetEnd),\r\n\t\t\ttitle: schedule.title,\r\n\t\t\tintervalValue: schedule.intervalValue,\r\n\t\t\tintervalTypeId: schedule.intervalTypeId,\r\n\t\t\texpiresOn: schedule.expiresOn,\r\n\t\t\tmaxOccurrences: schedule.maxOccurrences,\r\n\t\t\tpublicHolidayTypeId: schedule.publicHolidayTypeId,\r\n\t\t\tdaysToRun: schedule.daysToRun,\r\n\t\t\tdisabled: schedule.disabled,\r\n\t\t\tresponseId: schedule.responseId?.toString(),\r\n\t\t\tserverTypeEvent: schedule.serverTypeEvent?.toString(),\r\n\t\t\tresponseMaskingMeta: schedule.responseMaskingMeta ?? null\r\n\t\t} as ScheduleApiRequest;\r\n\r\n\t\tconst { data } = await this.axiosJson.put(\"/Schedules/CreateOrUpdateSchedule\", scheduleRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteSchedule(scheduleTaskId: number): Promise {\r\n\t\tconst { data } = await this.axiosJson.delete(`/Schedules/DeleteSchedule?scheduleId=${scheduleTaskId}`);\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nconst schedulesApi = new SchedulesApi();\r\nexport default schedulesApi;\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SchedulesCalendar.vue?vue&type=style&index=1&id=9d2476f4&prod&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TempLogin.vue?vue&type=style&index=0&id=41c4adc5&prod&scoped=true&lang=scss\"","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-ps\": \"4c98\",\n\t\"./ar-ps.js\": \"4c98\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku-kmr\": \"7558\",\n\t\"./ku-kmr.js\": \"7558\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf755\",\n\t\"./tlh.js\": \"cf755\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaDateTimeDisplay.vue?vue&type=style&index=0&id=3d856a66&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraSelect.vue?vue&type=style&index=0&id=4a777123&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactInfo.vue?vue&type=style&index=0&id=176a7f67&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.getPermissions.canViewFieldOps || _vm.getPermissions.canEditFieldOps)?_c('div',{staticClass:\"card fill-body card-secondary d-flex\",staticStyle:{\"min-height\":\"600px\"}},[_c('notifications',{staticStyle:{\"min-width\":\"250px\",\"width\":\"30%\"},attrs:{\"group\":\"fieldOpsNotification\",\"position\":\"bottom left\"},scopedSlots:_vm._u([{key:\"body\",fn:function(ref){\nvar item = ref.item;\nvar close = ref.close;\nreturn [_c('div',{class:['default-notify', item.type],on:{\"click\":function($event){return _vm.tryCenterOnMarker(item.data, close)}}},[_c('i',{staticClass:\"fas fa-2x fa-exclamation-triangle icon\"}),_c('div',{staticClass:\"content\"},[_c('p',{staticClass:\"title\"},[_vm._v(\" \"+_vm._s(item.title)+\" \")]),_vm._l((_vm.splitLines(item.text)),function(line,index){return _c('p',{key:index},[_vm._v(_vm._s(line))])})],2),_c('a',{staticClass:\"close\",on:{\"click\":function($event){$event.stopPropagation();return close($event)}}},[_c('i',{staticClass:\"fas fa-fw fa-times\"})])])]}}],null,false,2272587627)}),_c('nav-header',{attrs:{\"title\":\"Field Ops\",\"data-cy\":\"navHeader\"}}),_c('div',{staticClass:\"d-flex flex-row\",staticStyle:{\"flex-grow\":\"1\",\"position\":\"relative\"}},[(_vm.isSituationalAwarenessExternalAlertEnabled)?_c('desktop-left-sidebar',{staticClass:\"fade-item h-100\",attrs:{\"startState\":1,\"sliderIcon\":['fas fa-sensor-alert'],\"data-cy\":\"desktop-alert-sidebar\"}},[_c('b-tabs',[_c('b-tab',{attrs:{\"title\":\"Alerts\",\"active\":\"\",\"href\":\"#Alerts\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Alerts \"),_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.alertCountBadge))])]},proxy:true}],null,false,494208477)}),_c('div',{staticClass:\"h-100 d-flex flex-column\"},[_c('situational-awareness-alerts',{attrs:{\"data-cy\":\"sa-alerts-control\",\"fieldOpsMode\":\"\"},on:{\"setAlertQueueSize\":_vm.setAlertQueueSize}})],1)],1)],1):_vm._e(),_c('enhanced-map-single',{ref:\"mobileMap\",staticClass:\"fade-item flex-grow-1 h-100 w-100\",attrs:{\"data-cy\":\"enhanced-map-single\",\"enhancedMapMode\":_vm.enhancedMapMode.FieldOps,\"selectedAssetItemId\":_vm.selectedItem ? _vm.selectedItem.assetId : null,\"addingAssetLocation\":_vm.settingAssetLocation != null,\"useAdvancedFilters\":_vm.isSituationalAwarenessEnabled},on:{\"setClickLocation\":_vm.onMapClick,\"markerClicked\":_vm.onItemSelected}}),_c('side-bar',{staticClass:\"fade-item h-100\",attrs:{\"startState\":1,\"allowWide\":\"\"},model:{value:(_vm.wide),callback:function ($$v) {_vm.wide=$$v},expression:\"wide\"}},[_c('b-tabs',{model:{value:(_vm.currentControlTabIndex),callback:function ($$v) {_vm.currentControlTabIndex=$$v},expression:\"currentControlTabIndex\"}},[_c('b-tab',{attrs:{\"title\":\"Assets\",\"active\":\"\",\"href\":\"#Assets\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Assets (\"+_vm._s(_vm.assetItems ? _vm.assetItems.filter(function (ai) { return !ai.isTrackedAsset; }).length : 0)+\") \")]},proxy:true}],null,false,961949490)}),_c('b-tab',{attrs:{\"title\":\"History\",\"href\":\"#History\"}}),(_vm.isSituationalAwarenessEnabled)?_c('b-tab',{attrs:{\"title\":\"Data Sources\",\"href\":\"#DataSources\",\"data-cy\":\"data-sources-tab\"}}):_vm._e()],1),_c('div',{class:[ _vm.currentControlTabIndex === 2 ? 'h-100 d-flex flex-column' : 'hidden']},[_c('data-sources')],1),_c('div',{class:[ _vm.currentControlTabIndex === 1 ? 'h-100 d-flex flex-column' : 'hidden']},[_c('asset-audit-history',{ref:\"statusHistory\",staticClass:\"h-100\",attrs:{\"showExactTime\":\"\"}})],1),_c('div',{class:[ _vm.currentControlTabIndex === 0 ? 'h-100 d-flex flex-column' : 'hidden']},[_c('mobile-asset-list',{ref:\"assetListComp\",staticClass:\"mobile-asset-list\",attrs:{\"data-cy\":\"mobile-asset-list\",\"assets\":_vm.assetItems,\"assetTypes\":_vm.assetTypes,\"selectedAssetID\":_vm.selectedItem ? _vm.selectedItem.assetId : null},on:{\"setAction\":_vm.setAction,\"itemSelected\":_vm.onItemSelected}}),(_vm.selectedItem)?_c('div',{staticClass:\"context-tabs mt-4\",attrs:{\"data-cy\":\"tabs-container\"}},[_c('h4',{staticClass:\"flex-fixed\"},[_vm._v(_vm._s(_vm.selectedItem ? _vm.selectedItem.title : \"\"))]),_c('b-tabs',{staticClass:\"flex-dynamic d-flex flex-column\",attrs:{\"nav-wrapper-class\":\"f-ops-flex-fixed\",\"content-class\":\"f-ops-flex-dynamic\"},model:{value:(_vm.currentActionTabIndex),callback:function ($$v) {_vm.currentActionTabIndex=$$v},expression:\"currentActionTabIndex\"}},[_c('b-tab',{staticClass:\"h-100\",attrs:{\"title\":\"Status\",\"active\":\"\",\"lazy\":\"\",\"href\":\"#status\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('i',{staticClass:\"fas fa-fw\",class:[(_vm.selectedItem ? _vm.canHaveStatusSet : false) ? 'fa-edit' : 'fa-eye']}),_vm._v(\" Status \")]},proxy:true}],null,false,3087584067)},[_c('transition',{attrs:{\"name\":\"fade\"}},[(this.editAsset)?_c('div',{staticClass:\"d-flex flex-column h-100\"},[_c('transition',{attrs:{\"name\":\"slide\"}},[(_vm.refreshEditAsset)?_c('b-alert',{staticClass:\"assetUpdateAlert\",attrs:{\"show\":\"\"}},[_c('div',{staticStyle:{\"pointer-events\":\"auto\",\"cursor\":\"pointer\"},on:{\"click\":function($event){return _vm.findAndSetAsset(_vm.editAsset.assetId)}}},[_vm._v(\" Status Updated, click \"),_c('i',{staticClass:\"fas fa-sync\",staticStyle:{\"color\":\"lightblue\"}}),_vm._v(\" to refresh \")])]):_vm._e()],1),_c('h5',{staticClass:\"mt-3\"},[_vm._v(\"Status: \")]),_c('asset-status-input',{ref:\"recentStatuses\",attrs:{\"assetId\":_vm.editAsset.assetId,\"disabled\":!_vm.getPermissions.canEditFieldOps || !_vm.canHaveStatusSet},model:{value:(_vm.editAsset.status),callback:function ($$v) {_vm.$set(_vm.editAsset, \"status\", $$v)},expression:\"editAsset.status\"}}),_c('h5',{staticClass:\"mt-3\"},[_vm._v(\"Status Note: \")]),_c('b-form-textarea',{staticClass:\"flex-dynamic m-1\",class:{cursor_disabled: !_vm.getPermissions.canEditFieldOps || !_vm.canHaveStatusSet},attrs:{\"name\":\"assetStatusNote\",\"id\":\"assetStatusNote\",\"type\":\"textarea\",\"placeholder\":\"Note\",\"disabled\":!_vm.getPermissions.canEditFieldOps || !_vm.canHaveStatusSet,\"no-resize\":\"\",\"rows\":\"3\",\"formatter\":function (v) { return !v ? v : v.substring(0,500); }},model:{value:(_vm.editAsset.statusNote),callback:function ($$v) {_vm.$set(_vm.editAsset, \"statusNote\", $$v)},expression:\"editAsset.statusNote\"}}),_c('b-button-toolbar',{staticClass:\"ml-auto\"},[(_vm.canHaveStatusSet)?_c('b-button',{staticClass:\"btn-smd mr-1\",class:{cursor_disabled: !_vm.getPermissions.canEditFieldOps},attrs:{\"variant\":\"primary\",\"id\":\"updateAssetStatus\",\"name\":\"updateAssetStatus\",\"disabled\":!_vm.getPermissions.canEditFieldOps},on:{\"click\":function($event){return _vm.findAndSetAsset(_vm.editAsset.assetId)}}},[_vm._v(\" Cancel \")]):_vm._e(),(_vm.canHaveStatusSet)?_c('b-button',{staticClass:\"btn-smd\",class:{cursor_disabled: !_vm.getPermissions.canEditFieldOps || _vm.assetStatusDisabled()},attrs:{\"variant\":\"primary\",\"id\":\"updateAssetStatus\",\"name\":\"updateAssetStatus\",\"disabled\":!_vm.getPermissions.canEditFieldOps || _vm.assetStatusDisabled()},on:{\"click\":function($event){return _vm.setAssetStatus()}}},[_vm._v(\" Update \"),(_vm.requestPending)?_c('i',{staticClass:\"fas fa-spinner fa-spin ml-1\"}):_vm._e()]):_vm._e()],1)],1):_vm._e()])],1),_c('b-tab',{staticClass:\"h-100\",attrs:{\"title\":\"Chat\",\"disabled\":!_vm.isMobileUserSelected},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('div',{class:{'disabledAction' : !_vm.isMobileUserSelected}},[_c('i',{staticClass:\"fas fa-fw fa-comments\"}),_vm._v(\" Chat \"),(_vm.unackedMessageCount && _vm.unackedMessageCount != '0')?_c('b-badge',{attrs:{\"pill\":\"\",\"variant\":\"danger\"}},[_vm._v(\" \"+_vm._s(_vm.unackedMessageCount)+\" \")]):_vm._e()],1)]},proxy:true}],null,false,1651159925)},[(_vm.isChatShouldBeMounted)?_c('div',{staticClass:\"chat h-100\",staticStyle:{\"overflow\":\"hidden\"},attrs:{\"href\":\"#chat\"}},[_c('messages-list',{ref:\"messagesList\",staticClass:\"messages-list flex-dynamic mt-2\",attrs:{\"newestAt\":'bottom',\"messages\":_vm.messagesListData,\"loadMessagesAction\":function () { return _vm.getLoadMessagesAction(); }},on:{\"onBeforeDestroy\":_vm.resetTwoWayState,\"onScrollToLastMessage\":_vm.onScrollToLastMessage}}),_c('b-input-group',{staticClass:\"flex-fixed mt-2\",attrs:{\"size\":\"lg\"}},[_c('b-form-input',{on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return (function () { return _vm.sendMessage(); })($event)}},model:{value:(_vm.message),callback:function ($$v) {_vm.message=$$v},expression:\"message\"}}),_c('b-input-group-append',[_c('b-button',{attrs:{\"variant\":\"primary\",\"disabled\":!_vm.message},on:{\"click\":_vm.sendMessage}},[_c('i',{staticClass:\"fas fa-paper-plane fa-md\"})])],1)],1)],1):_vm._e()]),_c('b-tab',{staticClass:\"h-100\",attrs:{\"title\":\"History\",\"href\":\"#history\",\"lazy\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('i',{staticClass:\"fas fa-fw fa-list-alt\"}),_vm._v(\" History \")]},proxy:true}],null,false,2631504818)},[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('asset-audit-history',{ref:\"auditHistory\",staticClass:\"h-100\",attrs:{\"selectedAssetID\":_vm.selectedItem ? _vm.selectedItem.assetId : null,\"showExactTime\":\"\"}})],1)],1),_c('b-tab',{staticClass:\"h-100\",attrs:{\"title\":\"Link\",\"href\":\"#link\",\"disabled\":_vm.isMobileUserSelected},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('div',{class:{'disabledAction' : _vm.isMobileUserSelected}},[_c('i',{staticClass:\"fas fa-fw fa-street-view\"}),_vm._v(\" Move\")])]},proxy:true}],null,false,1513306292)},[_c('asset-move',{ref:\"assetDispatch\",staticClass:\"h-100\",attrs:{\"selectedItem\":_vm.selectedItem,\"onlineAssets\":_vm.assetItems,\"disabled\":!_vm.getPermissions.canEditFieldOps},on:{\"moveAssetToLatLng\":_vm.onMoveAssetToLatLong}})],1)],1)],1):_vm._e()],1)],1)],1),(_vm.isStatusInfoBarEnabled)?_c('eq-status-info-bar'):_vm._e()],1):_c('div',{attrs:{\"data-cy\":\"no-permissions-container\"}},[_c('p',[_vm._v(\"You do not have permissions to view this page\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport _Vue from \"vue\";\r\nimport { Component, Vue, Watch, Emit, Prop } from \"vue-property-decorator\";\r\n\r\nexport const enum SideBarState {\r\n\tClosed = 0,\r\n\tNarrow = 1,\r\n\tWide = 2,\r\n}\r\n\r\n@Component({\r\n\tcomponents: {}\r\n})\r\nexport default class Sidebar extends Vue {\r\n\t@Prop({type: Boolean, default: false}) \r\n\tprivate allowWide: boolean;\r\n\r\n\t@Prop({type: Number, default: 1})\r\n\tprivate startState: number;\r\n\r\n\tprivate state: SideBarState = 1;\r\n\r\n\tprivate mounted(){\r\n\t\tthis.state = this.startState\r\n\t}\r\n\r\n\tprivate toggleMovement(grow: boolean){\r\n\t\tif(grow){\r\n\t\t\tif(this.state >= SideBarState.Closed && this.state != SideBarState.Wide){\r\n\t\t\t\tthis.state++;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(this.state <= SideBarState.Wide && this.state != SideBarState.Closed){\r\n\t\t\t\tthis.state--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isClosed() : boolean {\r\n\t\treturn this.state === SideBarState.Closed;\r\n\t}\r\n\r\n\tprivate get isWide(): boolean {\r\n\t\treturn this.state === SideBarState.Wide;\r\n\t}\r\n\r\n\tprivate get isNarrow(): boolean {\r\n\t\treturn this.state === SideBarState.Narrow;\r\n\t}\r\n}\r\n\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"expander-container\",class:[{'closed': _vm.isClosed}, {'wide': _vm.isWide}]},[((!_vm.allowWide && !_vm.isNarrow) || (_vm.allowWide && (_vm.isClosed || _vm.isNarrow)))?_c('div',{staticClass:\"expander expander-position btn btn-secondary\",on:{\"click\":function($event){return _vm.toggleMovement(true)}}},[_c('i',{staticClass:\"fas fa-chevron-left\"})]):_vm._e(),(!_vm.isClosed)?_c('div',{staticClass:\"expander btn btn-secondary expander-position\",on:{\"click\":function($event){return _vm.toggleMovement(false)}}},[_c('i',{staticClass:\"fas fa-chevron-right\"})]):_vm._e(),_c('div',{staticClass:\"floating-content\"},[_vm._t(\"floating\")],2)]),_c('div',{staticClass:\"slide-base\",class:[{'closed': _vm.isClosed}, {'wide': _vm.isWide}]},[_c('b-card',{staticClass:\"sidebar\"},[_vm._t(\"default\")],2),_c('div',{staticClass:\"floating-stretch-content\",class:[{'closed': _vm.isClosed}, {'wide': _vm.isWide}]},[_vm._t(\"floating-stretch\")],2)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport _Vue from \"vue\";\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport SituationalAwarenessAlertsControl from '@/components/situational-awareness/SituationalAwarenessAlertsControl.vue';\r\n\r\nexport const enum SideBarState {\r\n\tClosed = 0,\r\n\tNarrow = 1,\r\n\tWide = 2,\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"situational-awareness-alerts\": SituationalAwarenessAlertsControl,\r\n\t}\r\n})\r\nexport default class DesktopLeftSidebar extends Vue {\r\n\t@Prop({type: Boolean, default: false})\r\n\tprivate allowWide: boolean;\r\n\r\n\t@Prop({type: Number, default: 1})\r\n\tprivate startState: number;\r\n\r\n\t@Prop({type: String, default: [\"fas fa-chevron-right\", \"fas fa-chevron-left\"]})\r\n\tprivate sliderIcon: string[];\r\n\r\n\tprivate state: SideBarState = 1;\r\n\r\n\tprivate mounted(){\r\n\t\tthis.state = this.startState\r\n\t}\r\n\r\n\tprivate toggleMovement(grow: boolean){\r\n\t\tif(grow){\r\n\t\t\tif(this.state >= SideBarState.Closed && this.state != SideBarState.Wide){\r\n\t\t\t\tthis.state++;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif(this.state <= SideBarState.Wide && this.state != SideBarState.Closed){\r\n\t\t\t\tthis.state--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isClosed() : boolean {\r\n\t\treturn this.state === SideBarState.Closed;\r\n\t}\r\n\r\n\tprivate get isWide(): boolean {\r\n\t\treturn this.state === SideBarState.Wide;\r\n\t}\r\n\r\n\tprivate get isNarrow(): boolean {\r\n\t\treturn this.state === SideBarState.Narrow;\r\n\t}\r\n}\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Sidebar.vue?vue&type=template&id=647245e2&scoped=true\"\nimport script from \"./Sidebar.vue?vue&type=script&lang=ts\"\nexport * from \"./Sidebar.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Sidebar.vue?vue&type=style&index=0&id=647245e2&prod&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 \"647245e2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mt-1 mr-2\"},[_c('div',[_c('h5',{staticClass:\"mt-3\"},[_vm._v(\"Area:\")]),_c('div',{class:{cursor_disabled: _vm.disabled},attrs:{\"disabled\":_vm.disabled}},[_c('area-tree-select',{attrs:{\"clearable\":true,\"append-to-body\":true,\"placeholder\":'Select/Search for an Area',\"readonly\":(_vm.selectedMoveAsset ? true : false) || _vm.disabled},model:{value:(_vm.selectedGroup),callback:function ($$v) {_vm.selectedGroup=$$v},expression:\"selectedGroup\"}})],1)]),_c('div',[_c('h5',{staticClass:\"mt-3\"},[_vm._v(\"Other Assets:\")]),_c('v-select3',{class:{cursor_disabled: _vm.disabled},staticStyle:{\"width\":\"100%\"},attrs:{\"options\":_vm.filteredAssets,\"label\":\"title\",\"appendToBody\":true,\"selectOnTab\":true,\"disabled\":(this.selectedGroup ? true : false) || _vm.disabled,\"placeholder\":\"Search/Select a mapped Asset\"},scopedSlots:_vm._u([{key:\"search\",fn:function(ref){\nvar events = ref.events;\nvar attributes = ref.attributes;\nreturn [_c('input',_vm._g(_vm._b({staticClass:\"vs__search\",attrs:{\"maxlength\":\"100\"}},'input',attributes,false),events))]}}]),model:{value:(_vm.selectedMoveAsset),callback:function ($$v) {_vm.selectedMoveAsset=$$v},expression:\"selectedMoveAsset\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"No mapped Assets found.\")])])],1),_c('b-button-toolbar',{staticClass:\"float-right mt-2\"},[_c('b-button',{staticClass:\"btn-smd mr-1\",class:{cursor_disabled: _vm.disabled},attrs:{\"variant\":\"primary\",\"id\":\"updateAssetLocation\",\"name\":\"updateAssetLocation\",\"disabled\":((!this.selectedGroup) && (!this.selectedMoveAsset)) || _vm.disabled},on:{\"click\":_vm.clearSelected}},[_vm._v(\" Cancel \")]),_c('b-button',{staticClass:\"btn-smd\",class:{cursor_disabled: _vm.disabled},attrs:{\"variant\":\"primary\",\"id\":\"updateAssetLocation\",\"name\":\"updateAssetLocation\",\"disabled\":((!this.selectedGroup) && (!this.selectedMoveAsset)) || _vm.disabled},on:{\"click\":_vm.updateLocation}},[_vm._v(\" Update \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { convertStringToLatLng } from \"@sureview/v2-mapping-saas\";\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { AssetMapLayerItem } from \"../../mobile-assets/types\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\r\nimport GPSService from \"@/services/gps.service\";\r\nimport { ILatLng } from \"@sureview/v2-mapping-saas\";\r\nimport { Getter } from \"vuex-class\";\r\nimport vselect3 from \"vselect3\";\r\nimport api from \"@/services/api.service\";\r\n\r\n@Component({\r\n components:{\r\n \"area-tree-select\": AreaTreeSelect,\r\n \"v-select3\" : vselect3\r\n }\r\n})\r\n\r\nexport default class AssetMove extends Vue {\r\n @Getter(\"getMapKey\") public mapKey: any;\r\n\r\n @Prop() private onlineAssets: AssetMapLayerItem[] | null;\r\n @Prop() private selectedItem: AssetMapLayerItem | null;\r\n\t@Prop({ default: false }) private disabled: boolean;\r\n\r\n private gpsService: GPSService = null;\r\n public selectedMoveAsset: AssetMapLayerItem = null;\r\n public selectedGroup: AreaNode = null;\r\n\r\n public async mounted() {\r\n this.gpsService = new GPSService();\r\n }\r\n\r\n private get filteredAssets() : AssetMapLayerItem[] {\r\n return this.onlineAssets.filter(ast =>\r\n ast.assetId !== (this.selectedItem ? this.selectedItem.assetId : -1)\r\n && ast.latLong);\r\n }\r\n\r\n @Watch(\"selectedItem\", {deep:true})\r\n private async showSelected(item: AssetMapLayerItem | null){\r\n // Set our selected Item and clear out any existing selections\r\n this.selectedItem = item;\r\n this.clearSelected();\r\n }\r\n\r\n private async updateLocation(): Promise {\r\n\t\tconst showErrorNotification = () => {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttext: \"Issue decoding address for \" + this.selectedGroup.label + \"(\" + (this.selectedGroup.address ? this.selectedGroup.address : \"No Address Set\") + \") - asset \" + this.selectedItem.title + \" will not be moved\"\r\n\t\t\t})\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\t// if we are moving an asset to an area location\r\n\t\t\tif (this.selectedGroup) {\r\n\t\t\t\tif (this.selectedGroup.latLong) {\r\n\t\t\t\t\tthis.moveAssetToLatLng(this.selectedItem, this.selectedGroup.latLong);\r\n\t\t\t\t\tawait this.clearSelected();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.selectedGroup.address) {\r\n\t\t\t\t\tlet locationBounds = await this.gpsService.decodeLocation(this.selectedGroup.address, this.mapKey);\r\n\t\t\t\t\tif (!this.selectedGroup.latLong) {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tawait api.updateAreaLatLong(this.selectedGroup.id, { lat: locationBounds.location.lat, lng: locationBounds.location.lng });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcatch (e) {\r\n\t\t\t\t\t\t\t//ignore error\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveAssetToLatLng(this.selectedItem, locationBounds.location);\r\n\t\t\t\t\tawait this.clearSelected();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tshowErrorNotification();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// if we are moving an asset to a different assets location\r\n\t\t\telse if (this.selectedMoveAsset) {\r\n\t\t\t\tthis.moveAssetToLatLng(this.selectedItem, this.selectedMoveAsset.latLong);\r\n\t\t\t\tawait this.clearSelected();\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tshowErrorNotification();\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n }\r\n\r\n private moveAssetToLatLng(asset: AssetMapLayerItem, latLong: string | ILatLng): void {\r\n \t// create a copy of the asset to avoid updating mutating the selectedItem prop.\r\n\t\tlet assetCopy = { ...asset };\r\n\t\tif (typeof latLong !== \"string\"){\r\n\t\t\tassetCopy.latLong = latLong;\r\n\t\t} else {\r\n\t\t\tassetCopy.latLng = convertStringToLatLng(latLong);\r\n\t\t\tconst isLatAndLngSet = !isNaN(assetCopy.latLng.lat) && !isNaN(assetCopy.latLng.lng);\r\n\t\t\tif (!isLatAndLngSet) {\r\n\t\t\t\tthrow `Failed to get latLng from string ${latLong}`;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.$emit(\"moveAssetToLatLng\", assetCopy)\r\n\t}\r\n\r\n private async clearSelected(){\r\n // Clear out our selected group\r\n this.$set(this, \"selectedGroup\", null);\r\n this.$set(this, \"selectedMoveAsset\", null);\r\n }\r\n}\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetMove.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetMove.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AssetMove.vue?vue&type=template&id=1121df72&scoped=true\"\nimport script from \"./AssetMove.vue?vue&type=script&lang=ts\"\nexport * from \"./AssetMove.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AssetMove.vue?vue&type=style&index=0&id=1121df72&prod&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 \"1121df72\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"expander-container\",class:[{'closed': _vm.isClosed}, {'wide': _vm.isWide}]},[((!_vm.allowWide && !_vm.isNarrow) || (_vm.allowWide && (_vm.isClosed || _vm.isNarrow)))?_c('b-button',{staticClass:\"expander expander-position btn btn-secondary\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.toggleMovement(true)}}},[_c('i',{class:_vm.sliderIcon.length > 1 ? _vm.sliderIcon[0] : _vm.sliderIcon[0]})]):_vm._e(),(!_vm.isClosed)?_c('b-button',{staticClass:\"expander btn btn-secondary expander-position\",attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.toggleMovement(false)}}},[_c('i',{class:_vm.sliderIcon.length > 1 ? _vm.sliderIcon[1] : _vm.sliderIcon[0]})]):_vm._e(),_c('div',{staticClass:\"floating-content\"},[_vm._t(\"floating\")],2)],1),_c('div',{staticClass:\"slide-base\",class:[{'closed': _vm.isClosed}, {'wide': _vm.isWide}]},[_c('b-card',{staticClass:\"sidebar\"},[_vm._t(\"default\",[_c('situational-awareness-alerts',{attrs:{\"data-cy\":\"sa-alerts-control\"}})])],2),_c('div',{staticClass:\"floating-stretch-content\",class:[{'closed': _vm.isClosed}, {'wide': _vm.isWide}]},[_vm._t(\"floating-stretch\")],2)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"h-100 d-flex flex-column\"},[(!_vm.fieldOpsMode)?_c('div',{staticClass:\"card-header\"},[_c('h3',[_vm._v(\"Alerts\")])]):_vm._e(),(_vm.situationalAwarenessEventQueue.length > 1)?_c('div',{staticClass:\"queue-info\"},[_c('span',{staticClass:\"sort\",attrs:{\"data-cy\":\"alert-sort-icon\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleAlertOrder($event)}}},[_c('i',{staticClass:\"fas fa-clock sort-icons\"}),_c('i',{class:!this.orderByDescending ? 'fas fa-arrow-up' : 'fas fa-arrow-down'})])]):_vm._e(),_c('div',{staticClass:\"item-container thin-scroll\",on:{\"scrollend\":_vm.onScroll}},_vm._l((_vm.alertsForQueue),function(alert,index){return _c('b-card',{key:alert.situationalAwarenessEventQueueId,staticClass:\"text-center\"},[_c('b-card-body',{staticClass:\"alert-body\",staticStyle:{\"padding\":\"0.5em!important\"}},[_c('h5',{staticClass:\"card-title\"},[_vm._v(_vm._s(alert.description))]),_c('p',{staticClass:\"card-text\"},[_vm._v(\" \"+_vm._s(alert.details)+\" \")]),_c('span',{staticClass:\"text-muted time\"},[_vm._v(\" \"+_vm._s(_vm.fromNow(alert.created))+\" \"),(alert.location)?_c('b-button',{staticClass:\"map-pin-button\",attrs:{\"title\":\"Go to Location\",\"data-cy\":'map-pin-button-'+index},on:{\"click\":function($event){return _vm.goToLocationForAlert(alert)}}},[_c('i',{staticClass:\"fas fa-map-pin\"})]):_vm._e(),_c('email-raw-data-control',{attrs:{\"event-record-id\":alert.eventRecordId}})],1)]),(alert.hasCanDismissPermission || alert.hasCanPromotePermission)?_c('b-card-footer',{staticClass:\"text-center\",staticStyle:{\"padding\":\"0.5em!important\"}},[_c('b-button-group',{attrs:{\"size\":\"md\"}},[(alert.hasCanDismissPermission)?_c('b-button',{on:{\"click\":function($event){return _vm.showDismissAlertModal(alert)}}},[_vm._v(\"Dismiss\")]):_vm._e(),(alert.hasCanPromotePermission)?_c('span',[(!alert.isInEventQueue)?_c('b-button',{staticClass:\"alert-promote-btn\",attrs:{\"data-cy\":\"alert-promote-button\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.showPromoteAlertModal(alert)}}},[_vm._v(\"Promote\")]):_c('span',{attrs:{\"tabindex\":\"0\",\"title\":\"Cannot promote, alert already in event queue\"}},[_c('b-button',{staticClass:\"disabled-promote-btn\",attrs:{\"disabled\":\"\",\"data-cy\":\"alert-promoted-button\"}},[_vm._v(\" Promoted \")])],1)],1):_vm._e()],1)],1):_vm._e()],1)}),1),_c('b-modal',{attrs:{\"id\":\"alert-modal\",\"title\":_vm.alertConfirmation.title,\"okTitle\":_vm.alertConfirmation.actionType,\"buttonSize\":\"sm\",\"ok-disabled\":_vm.requireNoteValidation,\"hideHeaderClose\":\"\",\"data-cy\":\"alert-confirmation-modal\"},on:{\"ok\":function($event){return _vm.handleAlert(_vm.selectedAlert)},\"hidden\":_vm.clearAlertConfirmation},model:{value:(_vm.showConfirmation),callback:function ($$v) {_vm.showConfirmation=$$v},expression:\"showConfirmation\"}},[_c('p',[_vm._v(_vm._s(this.alertConfirmation.message))]),_c('label',{attrs:{\"for\":\"alertNote\"}},[_vm._v(\" Notes:\"),(_vm.isRequireNoteEnabled)?_c('span',{staticClass:\"alert-required-asterisk\",attrs:{\"data-cy\":\"alert-required-asterisk\"}},[_vm._v(\" *\")]):_vm._e()]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.alertConfirmation.note),expression:\"alertConfirmation.note\"}],staticClass:\"custom-textarea\",attrs:{\"id\":\"alertNote\",\"placeholder\":\"Notes\",\"data-cy\":\"alert-confirmation-note\"},domProps:{\"value\":(_vm.alertConfirmation.note)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.alertConfirmation, \"note\", $event.target.value)}}})]),_c('email-raw-data-modal')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.hasRawData)?_c('b-button',{staticClass:\"email-button\",attrs:{\"title\":\"Open Original Email\",\"data-cy\":'btn-raw-data'+_vm.eventRecordId},on:{\"click\":function($event){return _vm.openOriginalEmail()}}},[_c('i',{staticClass:\"fas fa-envelope-open-text hover-icon\",attrs:{\"id\":\"icon-open-original-email\"}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport { AuditService } from \"@/services/auditService\";\r\nimport { namespace } from \"vuex-class\";\r\nimport api from \"@/services/api.service\";\r\nimport { siteMonitor } from \"@/store/site-monitor\";\r\n\r\nconst SessionStore = namespace(\"sessions\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst Emails = namespace(\"emails\");\r\n\r\n@Component\r\nexport default class EmailRawDataControl extends Vue {\r\n\t@SessionStore.Getter getSession: any;\r\n\t@SiteMonitor.Getter(\"getAuditService\") auditService: AuditService;\r\n\t@SiteMonitor.Mutation(\"setAuditService\") private setAuditService: () => void;\r\n\t@Emails.Action loadEmailData: any;\r\n\t@Emails.Mutation(\"setEventRecordIdToShowEmailFor\") private setEventRecordIdToShowEmailFor: (number) => void;\r\n\r\n\t@Prop({type: Number, required: true, default: null}) private eventRecordId: number;\r\n\r\n\tprivate hasRawData: boolean = false;\r\n\tprivate gettingRawDataStatus: boolean = false;\r\n\tprivate checkForRawDataTimeout: NodeJS.Timeout = null;\r\n\tprivate timeoutDurationSeconds: number = 10;\r\n\tprivate readonly maxRetryAttempts: number = 5;\r\n\tprivate retryAttempts: number = 0;\r\n\r\n\tprivate mounted(): void {\r\n\t\tif (!this.auditService) {\r\n\t\t\tthis.setAuditService();\r\n\t\t}\r\n\t\tthis.checkForRawData();\r\n\t}\r\n\r\n\t/**\r\n\t * Check to see if this filestore contains a raw data .eml file for this event record\r\n\t * @param eventRecordID\r\n\t */\r\n\tprivate async checkForRawData(): Promise {\r\n\t\t// if we're already getting clips\r\n\t\tif (this.gettingRawDataStatus) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mark that we're getting clips; prevent duplicate operations.\r\n\t\tthis.gettingRawDataStatus = true;\r\n\t\tlet auth = this.getSession(SessionResource.AuditServiceSession);\r\n\t\t// do request to audit service to get media list.\r\n\t\t this.auditService.mediaList(auth, this.eventRecordId).then(\r\n\t\t\t(response: any) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// get the raw clips\r\n\t\t\t\t\tlet rawClips = response.data;\r\n\r\n\t\t\t\t\tif (response.data.length == 0) {\r\n\t\t\t\t\t\t// take a blank string as something we should retry\r\n\t\t\t\t\t\tthis.retryCheckForData();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// check if any of the items are `RAW DATA` / .eml items.\r\n\t\t\t\t\tthis.hasRawData = rawClips.some((clip) => {\r\n\t\t\t\t\t\treturn clip.MediaType == \"RAW DATA\";\r\n\t\t\t\t\t});\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\tthis.retryCheckForData();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.gettingRawDataStatus = false;\r\n\t\t\t},\r\n\t\t\t(errorResponse: any) => {\r\n\t\t\t\tthis.hasRawData = false;\r\n\t\t\t\tthis.gettingRawDataStatus = false;\r\n\t\t\t\tthis.retryCheckForData();\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tprivate retryCheckForData() : void {\r\n\t\tif (this.checkForRawDataTimeout !== null) {\r\n\t\t\tclearTimeout(this.checkForRawDataTimeout);\r\n\t\t}\r\n\r\n\t\tif (this.retryAttempts > this.maxRetryAttempts) {\r\n\t\t\t// we've done enough attempts; dont bother continuing here\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// exponential backoff retry\r\n\t\tthis.timeoutDurationSeconds = this.timeoutDurationSeconds + this.timeoutDurationSeconds;\r\n\r\n\t\tthis.retryAttempts++;\r\n\t\tthis.checkForRawDataTimeout = setTimeout(this.checkForRawData, this.timeoutDurationSeconds * 1000);\r\n\t}\r\n\r\n\tprivate destroyed() {\r\n\t\tif (this.checkForRawDataTimeout !== null) {\r\n\t\t\tclearTimeout(this.checkForRawDataTimeout);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate openOriginalEmail() : void {\r\n\t\tthis.setEventRecordIdToShowEmailFor(this.eventRecordId);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailRawDataControl.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailRawDataControl.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EmailRawDataControl.vue?vue&type=template&id=9d012a72&scoped=true\"\nimport script from \"./EmailRawDataControl.vue?vue&type=script&lang=ts\"\nexport * from \"./EmailRawDataControl.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EmailRawDataControl.vue?vue&type=style&index=0&id=9d012a72&prod&scoped=true&lang=scss\"\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 \"9d012a72\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-modal',{attrs:{\"id\":\"rawDataModal\",\"size\":\"lg\",\"dialog-class\":\"email-data-modal\",\"ok-only\":\"\",\"ok-variant\":\"secondary\",\"ok-title\":\"Close\"},on:{\"ok\":_vm.resetEventRecordId,\"hide\":_vm.resetEventRecordId},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(ref){\nvar close = ref.close;\nreturn [_c('h5',[_vm._v(\"Original Email\")]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":function($event){(_vm.resetEventRecordId(), close())}}},[_vm._v(\"×\")])]}},{key:\"modal-footer\",fn:function(ref){\nvar close = ref.close;\nreturn [_c('b-button',{attrs:{\"variant\":\"primary\",\"aria-label\":\"Download\"},on:{\"click\":function($event){return _vm.downloadEmail()}}},[_vm._v(\"Download\")]),_c('b-button',{attrs:{\"aria-label\":\"Close\"},on:{\"click\":function($event){_vm.resetEventRecordId(), close()}}},[_vm._v(\"Close\")])]}}])},[_c('email-holder',{attrs:{\"email-id\":_vm.eventRecordIdAsString},on:{\"downloadEmail\":_vm.downloadEmail}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport { AuditService } from \"@/services/auditService\";\r\nimport { namespace } from \"vuex-class\";\r\nimport EmailHolder from \"@/components/emails/email-holder.vue\";\r\n\r\nconst SessionStore = namespace(\"sessions\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst Emails = namespace(\"emails\");\r\n@Component({\r\n\tcomponents: {\r\n\t\tEmailHolder\r\n\t}\r\n})\r\nexport default class EmailRawDataModal extends Vue {\r\n\t@SessionStore.Getter getSession: (resourceId: number) => string;\r\n\t@SiteMonitor.Getter(\"getAuditService\") auditService: AuditService;\r\n\t@SiteMonitor.Mutation(\"setAuditService\") private setAuditService: AuditService;\r\n\t@Emails.Action loadEmailData: ({ auth, recordId }) => Promise;\r\n\t@Emails.State eventRecordIdToShowEmailFor: number;\r\n\t@Emails.Mutation(\"setEventRecordIdToShowEmailFor\") private setEventRecordIdToShowEmailFor: (number) => void;\r\n\r\n\t@Watch(\"eventRecordIdToShowEmailFor\")\r\n\tprivate getEventRecordIdToShowEmailFor(newVal: number, oldVal:number): void {\r\n\t\tif (!newVal || newVal < 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n this.eventRecordId = newVal;\r\n\t this.downloadRawData();\r\n\t}\r\n\r\n\tprivate eventRecordIdAsString:string = \"\";\r\n\tprivate eventRecordId: number;\r\n\t/**\r\n\t * Download the raw data and put it into rawDataHtml to be leverage in modal\r\n\t * @param eventRecordId\r\n\t */\r\n\tprivate async downloadRawData(): Promise {\r\n\t\tthis.eventRecordIdAsString = `${this.eventRecordId}`\r\n\t\tconst auth = this.getSession(SessionResource.AuditServiceSession);\r\n\r\n\t\tawait this.loadEmailData({ auth, recordId: this.eventRecordIdAsString })\r\n\t\tthis.$bvModal.show(\"rawDataModal\");\r\n\t}\r\n\r\n\tprivate async downloadEmail(): Promise {\r\n\t\tawait this.auditService\r\n\t\t\t.getAllFiles(this.getSession(SessionResource.AuditServiceSession), this.eventRecordId)\r\n\t\t\t.then(async (response: any) => {\r\n\t\t\t\tconst fileName = response.headers[\"x-suggested-filename\"];\r\n\t\t\t\tlet link = document.createElement(\"a\");\r\n\t\t\t\tlink.href = window.URL.createObjectURL(response.data);\r\n\t\t\t\tlink.download = fileName;\r\n\t\t\t\tlink.click();\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tconsole.error(`Download failed: ${err.response.data}`);\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate resetEventRecordId(): void {\r\n\t\tthis.setEventRecordIdToShowEmailFor(-1);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailRawDataModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EmailRawDataModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EmailRawDataModal.vue?vue&type=template&id=ab8ca7cc&scoped=true\"\nimport script from \"./EmailRawDataModal.vue?vue&type=script&lang=ts\"\nexport * from \"./EmailRawDataModal.vue?vue&type=script&lang=ts\"\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 \"ab8ca7cc\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport {\r\n\tSituationalAwarenessEventQueue,\r\n\tSituationalAwarenessEventQueueActionRequest,\r\n\tSituationalAwarenessEventQueueActionResult,\r\n} from \"@/store/situational-awareness/types\";\r\nimport api from \"@/services/api.service\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport EmailRawDataControl from \"@/components/emails/EmailRawDataControl.vue\";\r\nimport EmailRawDataModal from \"@/components/emails/EmailRawDataModal.vue\";\r\n\r\nconst FieldOpsStore = namespace(\"fieldOps\");\r\n\r\ninterface SituationalAwarenessAlertConfirmation {\r\n\tactionType: \"Promote\" | \"Dismiss\",\r\n\tmessage: string,\r\n\ttitle: string,\r\n\tnote: string\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t'email-raw-data-control': EmailRawDataControl,\r\n\t\t'email-raw-data-modal': EmailRawDataModal\r\n\t},\r\n})\r\nexport default class SituationalAwarenessAlertsControl extends Vue {\r\n\r\n\t@FieldOpsStore.Mutation private setSituationalAwarenessEventQueue: (situationalAwarenessEventQueue: SituationalAwarenessEventQueue[]) => void;\r\n\t@FieldOpsStore.Mutation private setSelectedSituationalAwarenessEvent: (situationalAwarenessEvent: SituationalAwarenessEventQueue) => void;\r\n\t@FieldOpsStore.State private situationalAwarenessEventQueue: SituationalAwarenessEventQueue[];\r\n\t@FieldOpsStore.State private selectedSituationalAwarenessEvent: SituationalAwarenessEventQueue;\r\n\t@FieldOpsStore.Action private loadSituationalAwarenessEventQueue: () => Promise;\r\n\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n\t@Prop({type: Boolean, default: false})\r\n\tprivate fieldOpsMode: boolean;\r\n\r\n\tprivate alertConfirmation: SituationalAwarenessAlertConfirmation = {\r\n\t\tactionType: null,\r\n\t\ttitle: \"\",\r\n\t\tmessage: \"\",\r\n\t\tnote: \"\"\r\n\t}\r\n\r\n\tprivate showConfirmation: boolean = false;\r\n\tprivate selectedAlert: SituationalAwarenessEventQueue = null;\r\n\tprivate orderByDescending: boolean = true;\r\n\tprivate queueCount: number = 50;\r\n\tprivate queueCountIncrement: number = 50;\r\n\r\n\tprivate situationalEventQueueTimeout: NodeJS.Timeout = null;\r\n\r\n\tpublic mounted(): void {\r\n\t\tthis.triggerEventQueueRefresh();\r\n\t}\r\n\r\n\tprivate get isRequireNoteEnabled(): boolean {\r\n\t\treturn this.getFeature([\"SituationalAwareness\", \"ExternalAlerts\", \"RequireNoteForPromoteAndDismiss\"]);\r\n\t}\r\n\r\n\tprivate get requireNoteValidation(): boolean {\r\n\t\tif(!this.isRequireNoteEnabled){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.alertConfirmation.note.length < 1\r\n\t}\r\n\r\n\tprivate triggerEventQueueRefresh() : void {\r\n\t\tlet timeoutFunction = async function() {\r\n\t\t\ttry {\r\n\t\t\t\tawait this.updateSituationalAwarenessEventQueue();\r\n\t\t\t} catch(e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\r\n\t\t\tthis.triggerEventQueueRefresh();\r\n\t\t}.bind(this);\r\n\r\n\t\tthis.clearTimeout();\r\n\t\tthis.situationalEventQueueTimeout = setTimeout(timeoutFunction, 5000);\r\n\t}\r\n\r\n\tprivate async updateSituationalAwarenessEventQueue() : Promise {\r\n\t\tawait this.loadSituationalAwarenessEventQueue();\r\n\t}\r\n\r\n\tprivate beforeDestroy(): void {\r\n\t\tthis.clearTimeout();\r\n\t\tthis.setSituationalAwarenessEventQueue([]);\r\n\t}\r\n\r\n\tprivate clearTimeout(): void {\r\n\t\tif (this.situationalEventQueueTimeout) {\r\n\t\t\tclearTimeout(this.situationalEventQueueTimeout);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate showDismissAlertModal(situationalAwarenessEventQueueEntry: SituationalAwarenessEventQueue) : void {\r\n\t\tthis.selectedAlert = situationalAwarenessEventQueueEntry;\r\n\t\tthis.alertConfirmation = {\r\n\t\t\tactionType: \"Dismiss\",\r\n\t\t\ttitle: \"Confirm Dismiss\",\r\n\t\t\tmessage: `Please confirm you want to dismiss alert '${situationalAwarenessEventQueueEntry.description}' and remove it from the alerts queue`,\r\n\t\t\tnote: \"\"\r\n\t\t}\r\n\t\tthis.showConfirmation = true;\r\n\t}\r\n\r\n\tprivate showPromoteAlertModal(situationalAwarenessEventQueueEntry: SituationalAwarenessEventQueue) : void {\r\n\t\tthis.selectedAlert = situationalAwarenessEventQueueEntry;\r\n\t\tthis.alertConfirmation = {\r\n\t\t\tactionType: \"Promote\",\r\n\t\t\ttitle: \"Confirm Promote\",\r\n\t\t\tmessage: `Please confirm you want to promote alert '${situationalAwarenessEventQueueEntry.description}' to an event to be processed`,\r\n\t\t\tnote: \"\"\r\n\t\t}\r\n\t\tthis.showConfirmation = true;\r\n\t}\r\n\r\n\tprivate async handleAlert(situationalAwarenessEventQueueEntry: SituationalAwarenessEventQueue): Promise {\r\n\t\ttry {\r\n\t\t\tlet request: SituationalAwarenessEventQueueActionRequest = {\r\n\t\t\t\tsituationalAwarenessEventQueueId: situationalAwarenessEventQueueEntry.situationalAwarenessEventQueueId,\r\n\t\t\t\tnote: this.alertConfirmation.note\r\n\t\t\t};\r\n\r\n\t\t\tlet result: SituationalAwarenessEventQueueActionResult;\r\n\r\n\t\t\tif(this.alertConfirmation.actionType == \"Promote\"){\r\n\t\t\t\tresult = await api.promoteSituationalAwarenessQueueEntry(request);\r\n\t\t\t} else if(this.alertConfirmation.actionType == \"Dismiss\"){\r\n\t\t\t\tresult = await api.dismissSituationalAwarenessQueueEntry(request);\r\n\t\t\t}\r\n\r\n\t\t\tif (!result.success) {\r\n\t\t\t\talert(result.message);\r\n\t\t\t}\r\n\t\t\tawait this.updateSituationalAwarenessEventQueue();\r\n\r\n\t\t} catch(err) {\r\n\t\t\tconsole.error(`AlertControl - Error: ${err}`);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate clearAlertConfirmation(): void {\r\n\t\tthis.alertConfirmation = {\r\n\t\t\tactionType: null,\r\n\t\t\ttitle: \"\",\r\n\t\t\tmessage: \"\",\r\n\t\t\tnote: \"\"\r\n\t\t}\r\n\r\n\t\tthis.selectedAlert = null;\r\n\t}\r\n\r\n\tprivate goToLocationForAlert(situationalAwarenessEventQueueEntry: SituationalAwarenessEventQueue) : void {\r\n\t\tif(situationalAwarenessEventQueueEntry.situationalAwarenessEventQueueId == this.selectedSituationalAwarenessEvent?.situationalAwarenessEventQueueId){\r\n\t\t\tthis.setSelectedSituationalAwarenessEvent(null);\r\n\t\t}\r\n\t\tthis.setSelectedSituationalAwarenessEvent(situationalAwarenessEventQueueEntry);\r\n\t}\r\n\r\n\t// Only render alerts within the queueCount limit and set the order\r\n\tprivate get alertsForQueue(): SituationalAwarenessEventQueue[] {\r\n\t\tlet alertQueue = [...this.situationalAwarenessEventQueue];\r\n\r\n\t\t// The queue is already ordered by date when retrieved so we only need to reverse, not sort manually\r\n\t\talertQueue = this.orderByDescending ? alertQueue : alertQueue.reverse();\r\n\r\n\t\t// If the queueCount is more than the length of the array, it will just take the length of the array\r\n\t\talertQueue = alertQueue.slice(0, this.queueCount);\r\n\t\treturn alertQueue;\r\n\t}\r\n\r\n\t// When the user scrolls to the bottom of the alerts container, render more events if available\r\n\tprivate onScroll({ target: { scrollTop, clientHeight, scrollHeight }}): void {\r\n\t\t// Calculate scroll position to load more if scroll is at the bottom. Add 10 for a smoother experience\r\n\t\tif (scrollTop + clientHeight + 10 >= scrollHeight && this.situationalAwarenessEventQueue.length > this.queueCount) {\r\n\t\t\tthis.queueCount += this.queueCountIncrement;\r\n\t\t}\r\n\t}\r\n\r\n\t// Calculate the number of alerts shown. If the queueCount exceeds the number of events, display the number of events\r\n\tprivate get alertsShown(): number {\r\n\t\tlet alertCount = this.situationalAwarenessEventQueue.length > this.queueCount ? this.queueCount : this.situationalAwarenessEventQueue.length;\r\n\t\treturn alertCount;\r\n\t}\r\n\r\n\t// When the alertsShown changes, emit the value to the fieldOps component to show on the alerts tab badge\r\n\t@Watch(\"alertsShown\")\r\n\tpublic onAlertCountChange(): void {\r\n\t\tthis.$emit(\"setAlertQueueSize\", this.alertsShown);\r\n\t}\r\n\r\n\t// Toggle the order to display the events\r\n\tpublic toggleAlertOrder(): void {\r\n\t\tthis.orderByDescending = !this.orderByDescending;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SituationalAwarenessAlertsControl.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SituationalAwarenessAlertsControl.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SituationalAwarenessAlertsControl.vue?vue&type=template&id=997362da&scoped=true\"\nimport script from \"./SituationalAwarenessAlertsControl.vue?vue&type=script&lang=ts\"\nexport * from \"./SituationalAwarenessAlertsControl.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SituationalAwarenessAlertsControl.vue?vue&type=style&index=0&id=997362da&prod&scoped=true&lang=scss\"\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 \"997362da\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopLeftSidebar.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DesktopLeftSidebar.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DesktopLeftSidebar.vue?vue&type=template&id=2f712a49&scoped=true\"\nimport script from \"./DesktopLeftSidebar.vue?vue&type=script&lang=ts\"\nexport * from \"./DesktopLeftSidebar.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DesktopLeftSidebar.vue?vue&type=style&index=0&id=2f712a49&prod&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 \"2f712a49\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Watch, Ref, Prop, Emit } from \"vue-property-decorator\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport api from \"@/services/api.service\";\r\n\r\nimport MobileAssetList from \"@/components/mobile-assets/MobileAssetList.vue\";\r\nimport { AssetMapLayerItem, AssetStatusInfo, ActionRequest, ActionType } from \"@/components/mobile-assets/types\";\r\nimport Sidebar from \"@/components/Sidebar.vue\";\r\nimport AssetStatusInput from '@/components/mobile/assets/AssetStatusInput.vue';\r\nimport MobileAssetHistory from '@/components/mobile-assets/MobileAssetHistory.vue';\r\nimport MessagesList from \"@/components/mobile/messages/MessagesList.vue\";\r\nimport MapDataSources from '@/components/situational-awareness/MapDataSources.vue';\r\nimport { Action, Getter, namespace } from \"vuex-class\";\r\nimport { MessageWithAttachment } from \"@/store/guard-chat/types\";\r\nimport * as messagesApi from \"@/services/api.guardChat.service\";\r\nimport EnhancedSingleMap from '@/components/EnhancedSingleMap.vue';\r\nimport AssetMove from \"@/components/mobile/assets/AssetMove.vue\";\r\nimport { SubscriberExpiry, EnhancedMapMode } from '@/types/EnhancedSingleMapTypes';\r\nimport EqStatusInfoBar from \"@/components/EqStatusInfoBar.vue\";\r\nimport { UserPermissions, LogoutPayload } from '@/store/types';\r\nimport { Constants } from '@/types/Constants';\r\nimport { DefaultViewTriggers } from '@/store/map-layers/types';\r\nimport DesktopLeftSidebar from '@/components/DesktopLeftSidebar.vue';\r\nimport SituationalAwarenessAlertsControl from '@/components/situational-awareness/SituationalAwarenessAlertsControl.vue';\r\nimport { SituationalAwarenessEventQueue } from '@/store/situational-awareness/types';\r\n\r\n\r\nconst stringToLatLng = (s: string) => {\r\n\r\n\t// if the lat long is null dont do anything with it\r\n\tif (!s) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst coords = s.split(\" \");\r\n\treturn {\r\n\t\tlat: parseFloat(coords[0]),\r\n\t\tlng: parseFloat(coords[1])\r\n\t};\r\n};\r\n\r\nconst GuardChat = namespace(\"guardChat\");\r\nconst FieldOpsStore = namespace(\"fieldOps\");\r\nconst MapLayers = namespace(\"mapLayers\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"mobile-asset-list\": MobileAssetList,\r\n\t\t\"side-bar\": Sidebar,\r\n\t\t\"asset-audit-history\" : MobileAssetHistory,\r\n\t\t\"asset-move\" : AssetMove,\r\n\t\t\"asset-status-input\" : AssetStatusInput,\r\n\t\t\"messages-list\": MessagesList,\r\n\t\t\"enhanced-map-single\" : EnhancedSingleMap,\r\n\t\t\"eq-status-info-bar\": EqStatusInfoBar,\r\n\t\t\"data-sources\": MapDataSources,\r\n\t\t\"situational-awareness-alerts\": SituationalAwarenessAlertsControl,\r\n\t\t\"desktop-left-sidebar\": DesktopLeftSidebar\r\n\t}\r\n})\r\nexport default class FieldOps extends Vue {\r\n\t@Ref() readonly messagesList: MessagesList;\r\n\t@Ref() auditHistory: MobileAssetHistory;\r\n\t@Ref() statusHistory: MobileAssetHistory;\r\n\r\n\t// logout\r\n\t@Action logout: (payload?: LogoutPayload) => void;\r\n\t@Action serverLogout: any;\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter getIsFieldOpsLicensed: boolean;\r\n\r\n\t@GuardChat.State(s => s.twoWayNumberOfUnread) numberOfUnread: number;\r\n\t@GuardChat.Getter(\"getTwoWayMessages\") messages: MessageWithAttachment[];\r\n\t@GuardChat.Mutation setTwoWayNumberOfUnread: (newValue: number) => void;\r\n\t@GuardChat.Mutation resetTwoWayState: () => void;\r\n\t@GuardChat.Action loadTwoWayMessages: (eventId: number) => Promise;\r\n\r\n\t@FieldOpsStore.Action(\"loadOnlineAssets\") private loadOnlineAssets: () => void;\r\n\t@FieldOpsStore.Action(\"initAssetPoll\") private initaliseAssetPolling: () => void;\r\n\t@FieldOpsStore.Action(\"addOrUpdateActiveSubscriber\") private subscribeToPoll: (subscriberExpiry: SubscriberExpiry) => string;\r\n\t@FieldOpsStore.Action(\"loadAssetTypes\") private loadAssetTypes: () => void;\r\n\t@FieldOpsStore.State(\"assetTypes\") private assetTypes: Map;\r\n\t@FieldOpsStore.State(\"onlineAssets\") private onlineAssets: AssetMapLayerItem[];\r\n\t@FieldOpsStore.State(\"viewingAssetId\") private viewingAssetId: number;\r\n\t@FieldOpsStore.Action(\"updateAssetLocation\") private updateAssetLocation: (asset: AssetMapLayerItem) => void;\r\n\t@FieldOpsStore.Mutation(\"setViewingAssetId\") private setViewingAsset: (assetId: number) => void;\r\n\t@FieldOpsStore.State private situationalAwarenessEventQueue: SituationalAwarenessEventQueue[];\r\n\r\n\t@MapLayers.Mutation private setComputeDefaultView: (computation: DefaultViewTriggers) => void;\r\n\r\n\tprivate assetItems: any[] = [];\r\n\tprivate wide: boolean = false;\r\n\tprivate selectedItem: AssetMapLayerItem = null;\r\n\tprivate editAsset: AssetMapLayerItem = null;\r\n\tprivate requestPending: boolean = false;\r\n\tprivate editedAssetsId: Set = new Set(); //Set only allows unique values\r\n\tprivate message: string = \"\";\r\n\tprivate currentActionTabIndex : number = 0;\r\n\tprivate currentControlTabIndex : number = 0;\r\n\tprivate refreshEditAsset: boolean = false;\r\n\tprivate settingAssetLocation: AssetMapLayerItem = null;\r\n\tprivate loadChat: boolean = true;\r\n\tprivate scrollChatToLastMessage: boolean = true;\r\n\tprivate subscriberTimer = null;\r\n\tprivate alertCount: number = 50;\r\n\r\n\tprivate enhancedMapMode = EnhancedMapMode;\r\n\r\n\tprivate async created() {\r\n\t\tif(this.isSuiteEnabled && !this.getIsFieldOpsLicensed) {\r\n\t\t\tthis.logoutUser(Constants.FIELD_OPS_NO_LICENCE_ERROR);\r\n\t\t}\r\n\t\tawait this.loadAssetTypes();\r\n\t\tawait this.loadOnlineAssets();\r\n\t\tthis.assetItems = [...this.onlineAssets];\r\n\r\n\t\tawait this.initaliseAssetPolling();\r\n\t\tthis.subscriberTimer = setInterval(async () => {\r\n\t\t\tthis.subscribeToPoll({ subscriber: \"FieldOps\", expiry: Date.now() + 5100});\r\n\t\t}, 5000);\r\n\t}\r\n\r\n\tmounted() {\r\n\t\tthis.removeZendeskIcon();\r\n\t\tthis.setComputeDefaultView({assets: false, areas: false});\r\n\t}\r\n\r\n\tprivate removeZendeskIcon() {\r\n\t\tlet zenDesk = document.getElementById(\"launcher\");\r\n\r\n\t\t// if we only do this action once it doesn't always add the class, so doing it on every update is required.\r\n\t\tif(zenDesk && !zenDesk.classList.contains(\"hideLauncher\")){\r\n\t\t\t// hide zendesk icon\r\n\t\t\tzenDesk.classList.add(\"hideLauncher\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isSuiteEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Suite\"]);\r\n\t}\r\n\r\n\tprivate get isMobileStatusUpdateEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Mobile\", \"FieldOps\", \"EditMobileStatus\"]);\r\n\t}\r\n\r\n\t@Watch(\"viewingAssetId\")\r\n\tprivate async viewedAssetChange(){\r\n\t\tif(this.viewingAssetId && this.assetItems && this.assetItems.length > 0){\r\n\t\t\tconst selectedAsset = this.assetItems.find(u => u.assetId === this.viewingAssetId);\r\n\t\t\tthis.selectedItem = selectedAsset;\r\n\r\n\t\t\tif(!this.$refs.mobileMap)\r\n\t\t\t\tawait this.$nextTick();\r\n\r\n\t\t\tif(this.$refs.mobileMap && selectedAsset){\r\n\t\t\t\t(this.$refs.mobileMap as any).centerOnPosition(selectedAsset.latLng,17,false);\r\n\t\t\t}\r\n\t\t\tthis.setViewingAsset(null);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"onlineAssets\", { deep:true })\r\n\tprivate async assetWatcher(newAssets: AssetMapLayerItem[] | null, oldAssets: AssetMapLayerItem[] | null){\r\n\t\tawait this.getStatusNotificationChanges(oldAssets, newAssets);\r\n\t\tthis.assetItems = [...newAssets];\r\n\t\tthis.viewedAssetChange();\r\n\t\tif(this.selectedItem !== null){\r\n\t\t\tconst selectedAsset = this.assetItems.find(u => u.assetId === this.selectedItem.assetId);\r\n\t\t\t// clear selected user, if it goes offline\r\n\t\t\tif (this.selectedItem && !selectedAsset) {\r\n\t\t\t\tthis.selectedItem = null;\r\n\t\t\t\tthis.editAsset = null;\r\n\t\t\t}\r\n\r\n\t\t} else if (this.currentActionTabIndex === ActionType.History && this.auditHistory){\r\n\t\t\tthis.auditHistory.reloadHistory();\r\n\t\t}\r\n\r\n\t\tif(this.statusHistory){\r\n\t\t\tthis.statusHistory.reloadHistory();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async logoutUser(errorMessage: string = null): Promise {\r\n\t\tawait this.serverLogout();\r\n\t\tif(errorMessage) {\r\n\t\t\tconst logoutPayload: LogoutPayload = {\r\n\t\t\t\thasSessionExpired: false,\r\n\t\t\t\tplayAudioAlert: false,\r\n\t\t\t\terrorMessage: errorMessage\r\n\t\t\t}\r\n\t\t\tawait this.logout(logoutPayload);\r\n\t\t} else {\r\n\t\t\tawait this.logout();\r\n\t\t}\r\n\t}\r\n\r\n\t// Checks a clone of the beforeAsset and currentAsset list and checks for any differences\r\n\tprivate async getStatusNotificationChanges(preAssets: AssetMapLayerItem[], postAssets: AssetMapLayerItem[]){\r\n\t\tif(preAssets && preAssets.length > 0){\r\n\t\t\t//Map the before assets into a status array\r\n\t\t\tconst beforeAssets = preAssets.map(x => { return {\r\n\t\t\t\tassetId : x.assetId,\r\n\t\t\t\ttitle: x.title,\r\n\t\t\t\tstatus: x.status,\r\n\t\t\t\tstatusNote: x.statusNote\r\n\t\t\t}});\r\n\r\n\t\t\t//Map the before assets into a status array\r\n\t\t\tconst afterAssets = postAssets.map(x => { return {\r\n\t\t\t\tassetId : x.assetId,\r\n\t\t\t\ttitle: x.title,\r\n\t\t\t\tstatus: x.status,\r\n\t\t\t\tstatusNote: x.statusNote\r\n\t\t\t}})\r\n\r\n\t\t\t//Find all the assets that have changed\r\n\t\t\tvar changedAssets = afterAssets.filter((asset) => {\r\n\t\t\t\tvar result = beforeAssets.find(x => x.assetId === asset.assetId\r\n && x.status === asset.status\r\n && x.statusNote === asset.statusNote);\r\n\t\t\t\tif(result)\r\n\t\t\t\t\treturn false;\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\r\n\t\t\t// If we have any create a notification for each one\r\n\t\t\tif(changedAssets){\r\n\t\t\t\tchangedAssets.forEach(asset => {\r\n\t\t\t\t\tif(this.editedAssetsId.has(asset.assetId)){\r\n\t\t\t\t\t\tthis.editedAssetsId.delete(asset.assetId);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//find what the asset state was so we can compare which properties have changed\r\n\t\t\t\t\tconst beforeAsset = beforeAssets.find(x => x.assetId === asset.assetId)\r\n\r\n\t\t\t\t\t// If the beforeAsset is undefined/null - it means we just came from offline to online\r\n\t\t\t\t\t//\tand as such have no appropriate previous state.\r\n\t\t\t\t\tif(!beforeAsset){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(this.selectedItem\r\n\t\t\t\t\t\t&& this.selectedItem.assetId === asset.assetId\r\n\t\t\t\t\t\t&& this.currentActionTabIndex === ActionType.Status) {\r\n\t\t\t\t\t\t//If the editAsset is set and has been edited, display the refresh notification\r\n\t\t\t\t\t\tif(this.editAsset && this.editAsset.isAsset &&\r\n\t\t\t\t\t\t\t(beforeAsset.statusNote !== this.editAsset.statusNote || beforeAsset.status !== this.editAsset.status))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.refreshEditAsset = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tconst updatedAsset = postAssets.find(u => u.assetId === this.selectedItem.assetId);\r\n\t\t\t\t\t\t\tif(updatedAsset){\r\n\t\t\t\t\t\t\t\tthis.editAsset = updatedAsset\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar notifyBody = asset.title;\r\n\t\t\t\t\tif (beforeAsset.status !== asset.status || beforeAsset.statusNote !== asset.statusNote) {\r\n\t\t\t\t\t\tnotifyBody += this.getStatusChangeMessage(beforeAsset, asset)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\t\tgroup: \"fieldOpsNotification\",\r\n\t\t\t\t\t\ttype: \"info\",\r\n\t\t\t\t\t\ttitle: \"Status change:\",\r\n\t\t\t\t\t\ttext : notifyBody,\r\n\t\t\t\t\t\tduration: 5000\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t//clean up edited ids\r\n\t\t\tif(this.editedAssetsId && this.editedAssetsId.size > 0) {\r\n\t\t\t\tlet newEditAssetIds: Set = new Set();\r\n\r\n\t\t\t\t//create a new edit list for any Ids which have not yet received the update\r\n\t\t\t\tthis.editedAssetsId.forEach(element => {\r\n\t\t\t\t\tconst before = beforeAssets.find(u => u.assetId === element);\r\n\t\t\t\t\tconst after = afterAssets.find(u => u.assetId === element);\r\n\t\t\t\t\tif(before.statusNote !== after.statusNote && before.status !== after.status){\r\n\t\t\t\t\t\tnewEditAssetIds.add(element);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.editedAssetsId = newEditAssetIds;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Creates the status notification message\r\n\tprivate getStatusChangeMessage(previousAssetState: AssetStatusInfo, newAssetState: AssetStatusInfo) : string {\r\n\t\t//Note same logic exists in Data asset update any updates must also be made here to the data\r\n\t\tconst defaultStatus = \"No status\";\r\n\t\tconst clearedStatus = \"Status cleared\";\r\n\t\tconst defaultNote = \"No status note\";\r\n\t\tconst clearedNote = \"Status note cleared\";\r\n\r\n\t\tvar message = \" : \"\r\n\t\t\t\t\t\t+ (newAssetState.status ? newAssetState.status\r\n\t\t\t\t\t\t\t: (previousAssetState.status ? clearedStatus : defaultStatus))\r\n\t\t\t\t\t\t+ \" - \"\r\n\t\t\t\t\t\t+ (newAssetState.statusNote ? newAssetState.statusNote\r\n\t\t\t\t\t\t\t: (previousAssetState.statusNote ? clearedNote : defaultNote))\r\n\r\n\t\treturn message;\r\n\t}\r\n\r\n\tbeforeDestroy() {\r\n\t\tclearInterval(this.subscriberTimer);\r\n\t}\r\n\r\n\t// Called when we manually update the location of a map pin\r\n\tprivate async updateMapItemLocation(item: AssetMapLayerItem){\r\n\t\tthis.updateAssetLocation(item);\r\n\t\tthis.$emit(\"selectedItem\", item);\r\n\t}\r\n\r\n\tprivate async onMoveAssetToLatLong(item: AssetMapLayerItem){\r\n\t\tawait this.updateMapItemLocation(item);\r\n\t\tif(this.$refs.mobileMap){\r\n\t\t\t(this.$refs.mobileMap as any).centerOnPosition(item.latLng,0,true);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async onMapClick(clickLocation: string){\r\n\t\t// If we are currently trying to add an asset to the map\r\n\t\tif (this.settingAssetLocation) {\r\n\t\t\t// Update our currently selected asset to house the new lat-long data\r\n\t\t\tthis.settingAssetLocation.latLng = stringToLatLng(clickLocation);\r\n\t\t\tthis.settingAssetLocation.latLong = clickLocation;\r\n\r\n\t\t\t// Update our map item location\r\n\t\t\tthis.updateMapItemLocation(this.settingAssetLocation);\r\n\r\n\t\t\t// Update the AssetList interface\r\n\t\t\t(this.$refs.assetListComp as any).isSettingLocation(false);\r\n\r\n\t\t\t// Clear out our currently selected asset to place (we just placed it)\r\n\t\t\tthis.settingAssetLocation = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async onItemSelected(item: AssetMapLayerItem) {\r\n\t\tthis.resetTwoWayState();\r\n\t\tthis.selectedItem = item;\r\n\t\tif(this.isMobileUserSelected){\r\n\t\t\tthis.loadChat = false;\r\n\t\t\tawait this.$nextTick();\r\n\t\t\tthis.loadChat = true;\r\n\t\t\tthis.scrollChatToLastMessage = true;\r\n\t\t}\r\n\r\n\t\tif(this.$refs.mobileMap && this.isMobileUserSelected){\r\n\t\t\t(this.$refs.mobileMap as any).centerOnAssetItem(this.selectedItem.assetId);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate assetStatusDisabled(){\r\n\t\tvar result = this.assetItems.find(\r\n x => x.assetId === this.editAsset.assetId\r\n && x.status === this.editAsset.status\r\n && x.statusNote === this.editAsset.statusNote\r\n );\r\n if (result\r\n\t\t\t|| this.requestPending\r\n\t\t\t|| !this.editAsset.status\r\n\t\t\t|| !this.editAsset.status.trim()) {\r\n return true;\r\n }\r\n return false;\r\n\t}\r\n\r\n\tprivate async setAssetStatus(){\r\n\t\ttry{\r\n\t\t\tthis.requestPending = true;\r\n\t\t\tawait api.setAssetStatus(this.editAsset);\r\n\t\t\tthis.editedAssetsId.add(this.editAsset.assetId);\r\n\t\t\t//Update the asset entry in the onlineAssets list\r\n\t\t\tvar index = this.assetItems.findIndex(\r\n\t\t\t\tx => x.assetId === this.editAsset.assetId\r\n\t\t\t);\r\n\t\t\tif (index !== -1){\r\n\t\t\t\tthis.assetItems[index] = {...this.editAsset};\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tthis.requestPending = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate findAndSetAsset(assetId: number){\r\n\t\tif(!assetId)\r\n\t\t\treturn;\r\n\r\n\t\tthis.refreshEditAsset = false;\r\n\t\tconst selectedAsset = this.assetItems.find(u => u.assetId === this.selectedItem.assetId);\r\n\t\tif (selectedAsset) {\r\n\t\t\tthis.selectedItem = selectedAsset;\r\n\t\t\tthis.editAsset = selectedAsset;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async setAction(actionRequest: ActionRequest | null) {\r\n\t\tif (actionRequest) {\r\n\t\t\t// Set our default state (not placing an item on the map)\r\n\t\t\tthis.settingAssetLocation = null;\r\n\r\n\t\t\t// If we want to set a location, then save our selected item\r\n\t\t\tif(actionRequest.action === ActionType.SetLocation){\r\n\t\t\t\tthis.settingAssetLocation = actionRequest.item;\r\n\t\t\t}\r\n\r\n\t\t\tif(actionRequest.action === ActionType.CancelSetLocation){\r\n\t\t\t\tthis.settingAssetLocation = null;\r\n\t\t\t}\r\n\r\n\t\t\tif(actionRequest.action === ActionType.HideLocation || actionRequest.action === ActionType.ShowLocation){\r\n\t\t\t\tthis.updateMapItemLocation(actionRequest.item);\r\n\t\t\t}\r\n\r\n\t\t\tif(actionRequest.asset){\r\n\t\t\t\tthis.findAndSetAsset(actionRequest.asset.assetId);\r\n\t\t\t}\r\n\r\n\t\t\tawait this.$nextTick();\r\n\t\t\tthis.currentActionTabIndex = actionRequest.action;\r\n\r\n\t\t} else {\r\n\t\t\tthis.editAsset = null;\r\n\t\t}\r\n\r\n\t\t// Update the AssetList interface\r\n\t\t(this.$refs.assetListComp as any).isSettingLocation((this.settingAssetLocation != null));\r\n\t}\r\n\r\n\t//assetListComp\r\n\r\n\t@Watch(\"selectedItem\")\r\n\tprivate selectedItemChange(){\r\n\t\tif(this.selectedItem){\r\n\t\t\tthis.actionTabIndexChange();\r\n\t\t\tthis.$emit(\"selectedItem\");\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"currentActionTabIndex\", { deep:true })\r\n\tprivate async actionTabIndexChange() {\r\n\t\tif (this.currentActionTabIndex === ActionType.Status) {\r\n\t\t\tconst selectedAsset = this.assetItems.find(u => u.assetId === this.selectedItem.assetId);\r\n\t\t\tif (selectedAsset) {\r\n\t\t\t\tthis.editAsset = {...selectedAsset};\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//When we access the chat tab scroll to bottom if required\r\n\t\tif(this.currentActionTabIndex === ActionType.Chat && this.scrollChatToLastMessage && this.isMobileUserSelected){\r\n\t\t\tthis.scrollChatToLastMessage = false;\r\n\t\t\tawait this.$nextTick();\r\n\t\t\tawait this.$nextTick();\r\n\t\t\tthis.messagesList.scrollToLastMessage();\r\n\t\t}\r\n\r\n\t\tthis.editAsset = null;\r\n\t}\r\n\r\n\tprivate get isMobileUserSelected() {\r\n\t\treturn this.selectedItem && !this.selectedItem.isAsset\r\n\t}\r\n\r\n\tprivate get canHaveStatusSet() {\r\n\t\tif (this.selectedItem.isAsset || this.isMobileStatusUpdateEnabled) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate get messagesListData() {\r\n\t\treturn this.isMobileUserSelected ? this.messages : [];\r\n\t}\r\n\r\n\tprivate get getLoadMessagesAction() {\r\n\t\treturn this.isMobileUserSelected ? () => this.loadTwoWayMessages(this.selectedItem.userId) : () => Promise.resolve();\r\n\t}\r\n\r\n\tprivate async sendMessage() {\r\n\t\tif(!this.message){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst message = this.message;\r\n\t\tthis.message = \"\";\r\n\t\tawait messagesApi.sendTwoWayMessage(this.selectedItem.userId, {\r\n\t\t\tmessageType: \"operator\",\r\n\t\t\tmessage\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get isChatShouldBeMounted() {\r\n\t\treturn this.isMobileUserSelected && this.loadChat;\r\n\t}\r\n\r\n\tprivate get isChatVisible() {\r\n\t\treturn this.isChatShouldBeMounted && this.currentActionTabIndex === ActionType.Chat;\r\n\t}\r\n\r\n\tprivate updatedTask: (() => void) | undefined;\r\n\r\n\t@Watch(\"isChatVisible\")\r\n\tprivate onMessagesVisibilityChange(newVal, oldVal) {\r\n\t\tif (newVal) {\r\n\t\t\tthis.updatedTask = () => {\r\n\t\t\t\tif(this.messagesList) this.messagesList.restoreScrolling();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this.messagesList) this.messagesList.storeScrolling();\r\n\t\t\tthis.updatedTask = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updated() {\r\n\t\tif (this.updatedTask) {\r\n\t\t\tthis.updatedTask();\r\n\t\t\tthis.updatedTask = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async onScrollToLastMessage() {\r\n\t\tif (this.selectedItem && this.currentActionTabIndex === ActionType.Chat) {\r\n\t\t\tconst chatUserId = this.selectedItem.userId;\r\n\t\t\tawait messagesApi.acknowledgeTwoWayForUser(chatUserId);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get unackedMessageCount() : string {\r\n\t\tif(!this.editAsset || (this.editAsset && this.editAsset.isAsset))\r\n\t\t\treturn \"\";\r\n\r\n\t\t//get the live unacked value\r\n\t\tconst liveValue = this.assetItems.find(x => x.assetId === this.editAsset.assetId)\r\n\t\tif(!liveValue)\r\n\t\t\treturn \"\";\r\n\r\n\t\treturn liveValue ? (liveValue.unackedMessageCount > 99 ? \"99+\" : liveValue.unackedMessageCount.toString()) : \"\";\r\n\t}\r\n\r\n\tprivate splitLines(str: string): string[] {\r\n\t\treturn str.split(\"\\n\");\r\n\t}\r\n\r\n\tprivate tryCenterOnMarker(data, closeHandler) {\r\n\t\tif (this.$refs.mobileMap && data && data.eventRecordId) {\r\n\t\t\t(this.$refs.mobileMap as any).centerOnEventQueueItem(data.eventRecordId);\r\n\t\t}\r\n\t\tcloseHandler();\r\n\t}\r\n\r\n\tprivate get isStatusInfoBarEnabled() {\r\n\t\treturn this.getFeature([\"SystemInfoBar\"]);\r\n\t}\r\n\r\n\tprivate get isSituationalAwarenessEnabled(): boolean {\r\n\t\treturn this.getFeature([\"SituationalAwareness\"]);\r\n\t}\r\n\r\n\tprivate get isSituationalAwarenessExternalAlertEnabled() : boolean {\r\n\t\tlet isFeatureEnabled: boolean = this.getFeature([\"SituationalAwareness\",\"ExternalAlerts\"]);\r\n\t\tlet userHasPermission: boolean = (this.getPermissions.canViewSituationalAwarenessEvents || this.getPermissions.canDismissSituationalAwarenessEvent || this.getPermissions.canPromoteSituationalAwarenessEvent) || this.getPermissions.isSystemAdmin;\r\n\r\n\t\treturn isFeatureEnabled && userHasPermission;\r\n\t}\r\n\r\n\tprivate get alertCountBadge(): string {\r\n\t\treturn this.situationalAwarenessEventQueue.length > 0 ? `${this.alertCount}/${this.situationalAwarenessEventQueue.length}` : \"0\";\r\n\t}\r\n\r\n\tpublic setAlertQueueSize(alerts: number): void {\r\n\t\tthis.alertCount = alerts;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FieldOps.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FieldOps.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FieldOps.vue?vue&type=template&id=084e4ba4&scoped=true\"\nimport script from \"./FieldOps.vue?vue&type=script&lang=ts\"\nexport * from \"./FieldOps.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FieldOps.vue?vue&type=style&index=0&id=084e4ba4&prod&lang=scss\"\nimport style1 from \"./FieldOps.vue?vue&type=style&index=1&id=084e4ba4&prod&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 \"084e4ba4\",\n null\n \n)\n\nexport default component.exports","enum EventTypes {\r\n Alarm = 1,\r\n Patrol = 2,\r\n SiteCheck = 3,\r\n SetupSession = 4,\r\n WorkstationSession = 5,\r\n OnTest = 6,\r\n ArmDisarm = 7,\r\n QuickControl = 9,\r\n AuditTest = 10,\r\n ActivityLog = 11,\r\n ViewSession = 12,\r\n VideoReport = 13,\r\n HighPriorityAudit = 14,\r\n GuardTour = 15,\r\n SystemLog = 16,\r\n EventChat = 17,\r\n AssetHistory = 18,\r\n}\r\n\r\nexport default EventTypes;","import _ from 'lodash'\r\nimport emlformat from 'eml-format'\r\n\r\nexport function extractFieldId(id) {\r\n\treturn id.replace(/\\<|\\>/g, '')\r\n}\r\n\r\nexport function uniteBase64String(contentType, stringBase64) {\r\n\treturn `data:${contentType};base64,${stringBase64}`\r\n}\r\n\r\nexport function removeExtraSymbolsFromHtmlType(html) {\r\n\t// remove '= \\n' symbols and cid \r\n\tvar result = html.replace(/(\\=\\s+\\n|cid:)/g, '')\r\n\r\n\t// replace '=3D' quoted-printable encoding for '='\r\n\treturn result.replace(/(\\=3D)/g, '=')\r\n}\r\n\r\nexport function getMatchAllArray(str, regexp) {\r\n\treturn Array.from(str.matchAll(regexp), v => v.index)\r\n}\r\n\r\nexport function extractIdFromSrc(template) {\r\n\ttry\r\n\t{\r\n\t\tlet srcStrChar = '\"';\r\n\t\tlet srcStr = 'src=';\r\n\t\tlet match = template.match(srcStr+srcStrChar);\r\n\t\r\n\t\tif(!match)\r\n\t\t{\r\n\t\t\tsrcStrChar = \"'\";\r\n\t\t\tmatch = template.match(srcStr+srcStrChar);\r\n\t\t}\r\n\t\r\n\t\tif(!match)\r\n\t\t{\r\n\t\t\treturn null\r\n\t\t}\r\n\t\r\n\t\tconst beginIndexId = template.match(srcStr).index + srcStr.length;\r\n\t\tconst substr = template.slice(beginIndexId);\r\n\t\tconst indexEnd = substr.match(srcStrChar).index;\r\n\t\tconst id = template.slice(beginIndexId, beginIndexId + indexEnd);\r\n\t\r\n\t\treturn {\r\n\t\t\tid,\r\n\t\t\tbeginKeySrc: beginIndexId,\r\n\t\t\tendKeySrc: beginIndexId + indexEnd,\r\n\t\t}\r\n\t}\r\n\tcatch\r\n\t{\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nexport function getTagIndexEnd(html, beginDefaultIndex) {\r\n\tconst beginImgString = html.slice(beginDefaultIndex)\r\n\tconst endIndexSubstring = beginImgString.match('>').index\r\n\tconst tagLengthDefault = endIndexSubstring + 1\r\n\tconst endDefaultIndex = beginDefaultIndex + tagLengthDefault\r\n\r\n\treturn endDefaultIndex\r\n}\r\n\r\nexport function parseAllOpenTags(localHtml, regExp) {\r\n return getMatchAllArray(localHtml, regExp).map(beginDefaultIndex => {\r\n const endDefaultIndex = getTagIndexEnd(localHtml, beginDefaultIndex)\r\n const template = localHtml.slice(beginDefaultIndex, endDefaultIndex)\r\n const lastIndexTemplate = template.indexOf('>')\r\n\r\n return {\r\n endDefaultIndex,\r\n beginDefaultIndex,\r\n template,\r\n lastIndexTemplate,\r\n }\r\n })\r\n}\r\n\r\nexport function extractImgFromHtml(localHtml) {\r\n const images = parseAllOpenTags(localHtml, / ({\r\n ...image,\r\n ...extractIdFromSrc(image.template)\r\n }))\r\n}\r\n\r\nexport function extractLinksFromHtml(localHtml) {\r\n return parseAllOpenTags(localHtml, /\r\n\t\tString.fromCharCode(uint8Array[i])\r\n\t).join('')\r\n}\r\n\r\nexport function isUint8Array(value) {\r\n\treturn value instanceof Uint8Array\r\n}\r\n\r\nexport function getImageExtension(contentType) {\r\n\treturn ['.png', '.jpg', '.jpeg'].find(ext => contentType.includes(ext))\r\n}\r\n\r\nexport function isOctetStream(contentType) {\r\n\tif (!contentType) return\r\n\treturn contentType.includes('octet-stream;')\r\n}\r\n\r\nexport function isTextHtml(contentType) {\r\n\tif (!contentType) return\r\n\treturn contentType.includes('text/html;')\r\n}\r\n\r\nexport function isTextPlain(contentType) {\r\n\tif (!contentType) return\r\n\treturn contentType.includes('text/plain;')\r\n}\r\n\r\nexport function isNessaryContentExist(contentType, type, data) {\r\n\treturn (\r\n\t\ttypeof contentType === 'string' &&\r\n\t\tcontentType.includes(type) &&\r\n\t\tisUint8Array(data)\r\n\t)\r\n}\r\n\r\nexport function isPdf(contentType, data) {\r\n\treturn isNessaryContentExist(contentType, 'application/pdf;', data)\r\n}\r\n\r\nexport function isVideo(contentType, data) {\r\n\treturn isNessaryContentExist(contentType, 'video/', data)\r\n}\r\n\r\nexport function convertToFile(data, type) {\r\n\treturn new Blob(data, { type })\r\n}\r\n\r\nexport function getObjectUrl(data, type) {\r\n\tconst blob = convertToFile(data, type)\r\n\treturn URL.createObjectURL(blob)\r\n}\r\n\r\nexport function isImage(contentType, data) {\r\n\treturn (\r\n\t\ttypeof contentType === 'string' &&\r\n\t\t(contentType.includes('image/') || isOctetStreamImage(contentType)) &&\r\n\t\tisUint8Array(data)\r\n\t)\r\n}\r\n\r\nexport function isOctetStreamImage(contentType) {\r\n\treturn isOctetStream(contentType) && getImageExtension(contentType)\r\n}\r\n\r\nexport function isMultipartAlternative(contentType) {\r\n\treturn contentType.includes('multipart/alternative;')\r\n}\r\n\r\nexport function getArrayLinksFromAttachments(attachments) {\r\n\treturn attachments.map(attach => {\r\n\t\tconst contentType = getContentType(attach.contentType)\r\n\t\treturn {\r\n\t\t\turl: getObjectUrl([attach.data], contentType),\r\n\t\t\tname: attach.name || '',\r\n\t\t\tid: attach.id || '',\r\n\t\t}\r\n\t})\r\n}\r\n\r\nexport function setImgSrc(option, imagesById) {\r\n\tconst image = imagesById[option.id]\r\n\tconst template = option.template\r\n\t\t.split(' ')\r\n\t\t.map(v => (v.match('src=') && image ? `src=\"${image.url}\"` : v))\r\n\t\t.join(' ')\r\n\r\n\treturn {\r\n\t\t...option,\r\n\t\ttemplate,\r\n\t}\r\n}\r\n\r\nexport function setLinksToHtml(html) {\r\n const newLinks = setAttributeBlankToLinks(html)\r\n\r\n if(newLinks && newLinks.length === 0) return html\r\n\r\n return setNewTagsToHtml(newLinks, html, extractLinksFromHtml)\r\n}\r\n\r\nexport function setNewTagsToHtml(tags, localHtml, handler) {\r\n return tags.reduce((html, { template }, i) => {\r\n const { beginDefaultIndex, endDefaultIndex } = handler(html)[i]\r\n\r\n const beginStr = html.slice(0, beginDefaultIndex)\r\n const endStr = html.slice(endDefaultIndex)\r\n\r\n return `${beginStr}${template}${endStr}`\r\n }, localHtml)\r\n}\r\n\r\nexport function setAttributeBlankToLinks(html){\r\n const localHtml = removeExtraSymbolsFromHtmlType(html)\r\n const extractedLinks = extractLinksFromHtml(localHtml)\r\n\r\n return extractedLinks.filter(({ template }) => !template.includes(`target=\"_blank\"`))\r\n .map(option => ({\r\n ...option,\r\n template: `${option.template.slice(0, option.lastIndexTemplate)} target=\"_blank\" >`\r\n }))\r\n}\r\n\r\nexport function setImagesToHTML(html, imagesById) {\r\n\tconst localHtml = removeExtraSymbolsFromHtmlType(html)\r\n\tconst extractedImage = extractImgFromHtml(localHtml)\r\n\tconst imagesWithNewLink = extractedImage.map(optionImage =>\r\n\t\tsetImgSrc(optionImage, imagesById)\r\n\t)\r\n\r\n\treturn setNewTagsToHtml(imagesWithNewLink, localHtml, extractImgFromHtml)\r\n}\r\n\r\nexport function parseMultiPartByType(attachment) {\r\n\treturn attachment.data.map(content => {\r\n\t\tconst { body, headers } = content.part\r\n\t\tconst contentType = headers['Content-Type']\r\n\r\n\t\tif (isTextHtml(contentType)) {\r\n\t\t\treturn {\r\n\t\t\t\ttype: 'text/html;',\r\n\t\t\t\tbody,\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isTextPlain(contentType)) {\r\n\t\t\treturn {\r\n\t\t\t\ttype: 'text/plain;',\r\n\t\t\t\tbody,\r\n\t\t\t}\r\n\t\t}\r\n\t})\r\n}\r\n\r\nexport function getContentType(contentType) {\r\n\treturn contentType.split(';')[0]\r\n}\r\n\r\nexport function getEmailFrom(email) {\r\n\tif (_.get(email, 'headers.From')) return _.get(email, 'headers.From')\r\n\tif (_.get(email, 'from.email') && _.get(email, 'from.name')) {\r\n\t\tconst email = _.get(email, 'from.email')\r\n\t\tconst name = _.get(email, 'from.name')\r\n\t\treturn `${name} ${email}`\r\n\t}\r\n}\r\n\r\n\r\nexport function filteredAttachments(attachments, condition) {\r\n\treturn _.isEmpty(attachments) ? [] : attachments.filter(attach => {\r\n\t\treturn (\r\n\t\t\tattach.contentType &&\r\n\t\t\tcondition(attach.contentType, attach.data)\r\n\t\t)\r\n\t})\r\n}\r\n\r\n\r\nexport function getAttachmentsLinks(attachments, condition) {\r\n\tconst localFilteredAttachments = filteredAttachments(attachments, condition)\r\n\r\n\treturn getArrayLinksFromAttachments(setContentTypeImgOctetType(localFilteredAttachments))\r\n}\r\n\r\nexport function getFormattedEmlData(data) {\r\n\t// Replace\r\n\t// Header-Name:(newline)(whitespace)header-value\r\n\t// With\r\n\t// Header-Name: header-value\r\n\t// This is to fix an issue with the email parser library merging multiple header values together if the value immediately starts with a newline character\r\n\tlet cleanedEmailData = data.replace(/^([\\w\\d\\-]+):+([\\r\\n]+)+([\\s\\t]+)*([^\\r\\n]+)/gm, \"$1: $4\");\r\n\r\n\t// Replace 'Content-type' header with 'Content-Type' as this doesnt get parsed correctly\r\n\tcleanedEmailData = cleanedEmailData.replace(\"Content-type:\", \"Content-Type:\");\r\n\r\n\t// Ensure there is a space after each 'Header-Name:' so that the emails can get parsed correctly ie, 'Header-Name: '\r\n\t// cleanedEmailData = cleanedEmailData.replace(/:[s]*/g, \": \");\r\n\tcleanedEmailData = cleanedEmailData.replace(/^([\\w\\d\\-]+):+(^[ ]+)*([^\\r\\n]+)/gm, \"$1: $3\");\r\n\r\n\treturn new Promise(function(resolve, reject) {\r\n\t\temlformat.read(cleanedEmailData, (error, formattedData) => {\r\n\t\t\tif (error)\r\n\t\t\t{\r\n\t\t\t\tconsole.error(\"Failed to parse email\");\r\n\t\t\t \treject();\r\n\t\t\t}\r\n\t\t\tprocessFormattedEmlData(formattedData);\r\n\t\t\tresolve(formattedData);\r\n\t\t})\r\n\t})\r\n}\r\n\r\n/**\r\n * Where eml data is not formatted as the eml-format lib being used expects the html property can come back as\r\n * \"\\u0000\\u0000\" which results in a blank email when displayed. However, the text property appears to hold the expected html \r\n * so can be used to set the html property. This is a work-around due to an seeming limitation in the library and should be \r\n * resolved in the future, potentially during the move to React.\r\n * @param formattedData The eml-format object\r\n */\r\nexport function processFormattedEmlData(formattedData) {\r\n\t// The specific string from eml-format that is invalid\r\n\tconst invalidHtmlString = \"\\u0000\\u0000\";\r\n\r\n\t// If the html string is invalid and we have html in the text property\r\n\tif (formattedData.html === invalidHtmlString && formattedData.text && formattedData.text.startsWith(\"\")) {\r\n\t\t// Use that as our HMTL\r\n\t\tformattedData.html = formattedData.text;\r\n\t}\r\n}\r\n\r\n\r\nexport function setContentTypeImgOctetType(attachments) {\r\n return attachments.map(attach => {\r\n const extension = getImageExtension(attach.contentType)\r\n const isOctetStreamExtensionExist = !isOctetStreamImage(attach.contentType) || !extension\r\n\r\n return isOctetStreamExtensionExist ?\r\n attach:\r\n {\r\n ...attach,\r\n contentType: `image/${extension.split('.').filter(v => v)[0]}`\r\n }\r\n\r\n })\r\n}\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InactivityWarning.vue?vue&type=style&index=0&id=969bc55c&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavMenu.vue?vue&type=style&index=0&id=64a69983&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSharingAsset.vue?vue&type=style&index=0&id=6a3e5182&prod&scoped=true&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.editing)?_c('div',{staticClass:\"flex-grow-1\",attrs:{\"data-cy\":\"yesno-edit\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.task.taskText),expression:\"task.taskText\"}],class:[{ invalid: _vm.hasValidationErrors, 'error-animated': _vm.showErrorAnimation }, 'form-control'],attrs:{\"placeholder\":\"Specify Yes/No question\",\"type\":\"text\"},domProps:{\"value\":(_vm.task.taskText)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.task, \"taskText\", $event.target.value)},_vm.onValidateTask]}})]):_c('div',{staticClass:\"task-line-content task-yes-no\",attrs:{\"data-cy\":\"yesno-task\"}},[(!_vm.task.completed)?_c('div',{attrs:{\"data-cy\":\"yesno-task-todo\"}},[_c('label',{staticClass:\"text-break\"},[_vm._v(_vm._s(_vm.task.taskText))]),(_vm.task.isMine)?_c('div',{},[_c('b-button',{attrs:{\"variant\":\"secondary\",\"title\":\"Yes\",\"data-cy\":\"yesno-task-todo-yes\",\"disabled\":_vm.btnDisabled},on:{\"click\":function($event){return _vm.onCompleteTask('Yes')}}},[_vm._v(\"Yes\")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"title\":\"No\",\"data-cy\":\"yesno-task-todo-no\",\"disabled\":_vm.btnDisabled},on:{\"click\":function($event){return _vm.onCompleteTask('No')}}},[_vm._v(\"No\")])],1):_vm._e()]):_c('div',{staticClass:\"text-break\",attrs:{\"data-cy\":\"yesno-task-complete\"}},[_vm._v(\" Completed action: \"+_vm._s(_vm.task.taskText)+\" \"),_c('br'),_vm._v(\" Result: \"+_vm._s(_vm.task.result)+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue, Watch, Emit } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Mutation } from \"vuex-class\";\r\nimport { ActionPlanTask } from \"@/store/tasks/types\";\r\nimport { stringMixin } from \"@/mixins\";\r\nimport SVButton from \"@/components/form/SVButton.vue\";\r\n\r\nconst { isNullOrWhitespace } = stringMixin.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"sv-button\": SVButton\r\n\t}\r\n})\r\nexport default class YesNoTask extends Vue {\r\n\t@Prop(Boolean)\r\n\tpublic editing: Boolean;\r\n\r\n\t@Prop()\r\n\tpublic task!: ActionPlanTask;\r\n\r\n\tpublic hasValidationErrors: boolean = false;\r\n\tpublic showErrorAnimation: boolean = false;\r\n\r\n\tprivate btnDisabled: boolean = false;\r\n\r\n\tpublic mounted() {\r\n\t\tif (this.editing) {\r\n\t\t\tthis.onValidateTask();\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"task\")\r\n\tprivate onTaskChanged(newVal: ActionPlanTask, oldVal: ActionPlanTask) {\r\n\t\t// re enable the button when our task status changes\r\n\t\tif (newVal.completed != oldVal.completed) {\r\n\t\t\tthis.btnDisabled = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic onCompleteTask(verdict: string) {\r\n\t\tif (!this.btnDisabled) {\r\n\t\t\t// disable the button until our task request has completed and the status changed\r\n\t\t\tthis.btnDisabled = true;\r\n\t\t\tthis.$emit(\"complete-task\", {\r\n\t\t\t\t...this.task,\r\n\t\t\t\tresult: verdict,\r\n\t\t\t\tcompleted: true\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t@Emit(\"validate-task\")\r\n\tprivate onValidateTask() {\r\n\t\tlet isValid = !isNullOrWhitespace(this.task.taskText);\r\n\r\n\t\tif (!isValid) {\r\n\t\t\tthis.hasValidationErrors = true;\r\n\t\t\tthis.showErrorAnimation = true;\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.showErrorAnimation = false;\r\n\t\t\t}, this.$config.ANIMATION_DURATION);\r\n\t\t}\r\n\r\n\t\treturn isValid;\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YesNoTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./YesNoTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./YesNoTask.vue?vue&type=template&id=127d2c69\"\nimport script from \"./YesNoTask.vue?vue&type=script&lang=ts\"\nexport * from \"./YesNoTask.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{\"display\":\"contents !important\"},attrs:{\"id\":\"menuBarParent\"}},[_c('zendeskHelp'),_c('div',{staticClass:\"nav-menu\",staticStyle:{\"display\":\"inline\"}},[_c('b-dropdown',{attrs:{\"right\":true,\"block\":true,\"toggle-class\":\"btn btn-secondary p-0 px-1\"},on:{\"show\":function($event){_vm.menuOpened = true;},\"hide\":function($event){_vm.menuOpened = false;}}},[_c('template',{slot:\"button-content\"},[_c('nav-menu-icon',{staticClass:\"logo\",attrs:{\"menu-open\":_vm.menuOpened}})],1),_vm._l((_vm.routeGroups),function(group,groupIndex){return _c('div',{key:group.group},[_c('b-dropdown-form',{staticStyle:{\"width\":\"250px\"},attrs:{\"form-class\":\"p-0 d-flex flex-wrap\"}},_vm._l((group.routes),function(route){return _c('router-link',{key:route.routeName,staticClass:\"route-button\",class:{\n\t\t\t\t\t\t\t\t'active-route': route.routeName == _vm.$route.name\n\t\t\t\t\t\t\t},attrs:{\"to\":{ name: route.routeName, params: {} },\"id\":'route-link-' + route.routeName,\"target\":route.target}},[(route.iconMask)?_c('span',{staticClass:\"fa-stack\"},[_c('i',{staticClass:\"route-icon fa-stack-1x\",class:route.iconClass,staticStyle:{\"transform\":\"translateX(-5px) translateY(-5px)\"}}),_c('i',{staticClass:\"route-icon fa-stack-1x\",class:route.iconMask,staticStyle:{\"transform\":\"translateX(5px) translateY(2px)\"}})]):_c('a',{staticClass:\"route-icon\",class:route.iconClass}),_c('div',[_c('span',[_vm._v(_vm._s(route.linkText))])])])}),1),(groupIndex < _vm.routeGroups.length - 1)?_c('b-dropdown-divider'):_vm._e()],1)}),_c('b-dropdown-group',[_c('b-dropdown-divider'),_c('my-account'),(_vm.getPermissions.isSystemAdmin)?_c('switch-tenant'):_vm._e(),(_vm.canOpenCaseManagement)?_c('b-dropdown-item',{attrs:{\"data-cy\":\"cases-btn\"},on:{\"click\":function($event){return _vm.toCases()}}},[_vm._v(\"Case Management\")]):_vm._e(),(_vm.isGettingStartedModalEnabled)?_c('b-dropdown-item',{on:{\"click\":function($event){_vm.isGettingStartedShown = true}}},[_vm._v(\"Getting Started\")]):_vm._e(),(_vm.getPermissions.canRequestSupport && !_vm.getPermissions.isSystemAdmin)?_c('b-dropdown-item',{on:{\"click\":function($event){_vm.isSupportModalShown = true}}},[_vm._v(\"SureView Engineer Support\")]):_vm._e(),_c('b-dropdown-item',{attrs:{\"id\":\"logout-btn\"},on:{\"click\":function($event){return _vm.logoutUser()}}},[_vm._v(\"Logout\")]),_c('b-dropdown-item',[_vm._v(\"Version \"+_vm._s(_vm.webVersion))])],1)],2),(_vm.isGettingStartedModalEnabled)?_c('getting-started-modal',{model:{value:(_vm.isGettingStartedShown),callback:function ($$v) {_vm.isGettingStartedShown=$$v},expression:\"isGettingStartedShown\"}}):_vm._e(),(_vm.getPermissions.canRequestSupport)?_c('support',{model:{value:(_vm.isSupportModalShown),callback:function ($$v) {_vm.isSupportModalShown=$$v},expression:\"isSupportModalShown\"}}):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.IsAccountDetailsEnabled)?_c('div',[_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\",\"id\":\"my-account-btn\"},on:{\"click\":function($event){return _vm.checkForSuiteUser()}}},[_vm._v(\"My Account\")]),_c('b-modal',{ref:\"passwordModal\",attrs:{\"visible\":_vm.showAccountDetails,\"id\":\"MyAccountModal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"body-class\":\"d-flex flex-column\"}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',[_vm._v(\"Account Details\")])])]),[_c('account-details')],_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn\",on:{\"click\":function($event){_vm.showAccountDetails = false}}},[_vm._v(\"Close\")])])],2)],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column account-details\"},[_vm._m(0),_c('b-card',{staticClass:\"container overflow-hidden\",attrs:{\"no-body\":\"\"}},[_c('b-tabs',{staticClass:\"tabs-min-height d-flex flex-nowrap\",attrs:{\"pills\":\"\",\"card\":\"\",\"vertical\":\"\"}},[_c('b-tab',{staticClass:\"h-100\",attrs:{\"title\":\"Personal Information\",\"title-link-class\":'personal-information',\"active\":\"\"}},[_c('vue-perfect-scrollbar',{staticClass:\"scrollbar\"},[_c('b-card-text',[_c('div',{staticClass:\"form-group\"},[_vm._v(\"Email: \"),_c('b',[_vm._v(_vm._s(_vm.userInformation.email))])])]),_c('b-card-text',[_c('div',{staticClass:\"form-group\"},[_vm._v(\"Browser Time Zone: \"),_c('b',[_vm._v(_vm._s(_vm.BrowserTimeZone))])])]),_c('b-card-text',[_c('div',{staticClass:\"form-group\"},[_vm._v(\"User Group: \"),_c('b',[_vm._v(_vm._s(this.userInformation.userGroupMembershipTitles.toString()))])])]),_c('b-card-text',[_c('div',{staticClass:\"form-group\"},[_vm._v(\" Name: \"),_c('b-input',{attrs:{\"id\":\"user-name\",\"data-cy\":\"user-name\",\"placeholder\":\"Name\",\"type\":\"text\",\"maxlength\":\"50\",\"readonly\":!_vm.isEditPersonalEnabled},model:{value:(_vm.userInformation.fullName),callback:function ($$v) {_vm.$set(_vm.userInformation, \"fullName\", $$v)},expression:\"userInformation.fullName\"}},[_vm._v(\">\")])],1)]),_c('b-card-text',[_c('div',{staticClass:\"form-group\"},[_vm._v(\" Telephone: \"),_c('b-input',{attrs:{\"id\":\"user-telephone\",\"data-cy\":\"user-telephone\",\"autocomplete\":\"tel\",\"placeholder\":\"Telephone\",\"type\":\"tel\",\"maxlength\":\"50\",\"readonly\":!_vm.isEditPersonalEnabled},model:{value:(_vm.userInformation.telephone),callback:function ($$v) {_vm.$set(_vm.userInformation, \"telephone\", $$v)},expression:\"userInformation.telephone\"}},[_vm._v(\">\")])],1)]),_c('b-card-text',[_c('div',{staticClass:\"form-group\"},[_vm._v(\" Mobile/Cell: \"),_c('b-input',{attrs:{\"id\":\"user-mobile\",\"autocomplete\":\"tel\",\"data-cy\":\"user-mobile\",\"placeholder\":\"Mobile\",\"type\":\"tel\",\"maxlength\":\"50\",\"readonly\":!_vm.isEditPersonalEnabled},model:{value:(_vm.userInformation.mobile),callback:function ($$v) {_vm.$set(_vm.userInformation, \"mobile\", $$v)},expression:\"userInformation.mobile\"}},[_vm._v(\">\")])],1)]),_c('b-card-text',[_c('div',{staticClass:\"form-group\"},[_vm._v(\" Address: \"),_c('b-input',{attrs:{\"id\":\"user-address\",\"data-cy\":\"user-address\",\"autocomplete\":\"street-address\",\"placeholder\":\"Address\",\"type\":\"text\",\"maxlength\":\"200\",\"readonly\":!_vm.isEditPersonalEnabled},model:{value:(_vm.userInformation.address),callback:function ($$v) {_vm.$set(_vm.userInformation, \"address\", $$v)},expression:\"userInformation.address\"}},[_vm._v(\">\")])],1)]),(_vm.isEditPersonalEnabled)?_c('div',[_c('div',[_c('b-button',{staticClass:\"btn btn-secondary ml-2 mb-2 float-right\",attrs:{\"variant\":\"secondary\",\"id\":\"cancel-user-changes\",\"cy-data\":\"cancel-user-changes\",\"disabled\":_vm.$v.userInformation.$invalid},on:{\"click\":function($event){$event.preventDefault();return _vm.resetUser()}}},[_vm._v(\"Cancel\")]),_c('b-button',{staticClass:\"btn btn-primary btn-right ml-2 mb-2 float-right\",attrs:{\"variant\":\"primary\",\"id\":\"save-user-changes\",\"cy-data\":\"save-user-changes\",\"disabled\":_vm.$v.userInformation.$invalid},on:{\"click\":function($event){$event.preventDefault();return _vm.saveUserDetails()}}},[_vm._v(\"Save\")])],1)]):_vm._e()],1)],1),_c('b-tab',{staticClass:\"h-100\",attrs:{\"title\":\"Security\",\"title-link-class\":'security'}},[_c('vue-perfect-scrollbar',{staticClass:\"scrollbar\"},[(!_vm.showMfaAddForm && !_vm.showMfaClearForm && !_vm.showPasswordForm)?_c('b-button',{staticClass:\"btn\",attrs:{\"id\":\"change-password-btn\"},on:{\"click\":function($event){$event.preventDefault();_vm.showPasswordForm = !_vm.showPasswordForm}}},[_vm._v(\"Change Password\")]):_vm._e(),(_vm.showPasswordForm && _vm.errorMessage)?_c('div',{staticClass:\"errors\"},[_vm._v(_vm._s(_vm.errorMessage))]):_vm._e(),(_vm.result.successful)?_c('div',{staticClass:\"success\"},[_vm._v(\"Your password has been changed.\")]):_vm._e(),(_vm.showPasswordForm)?_c('div',{staticClass:\"password-form\"},[_c('div',{staticClass:\"form-control\"},[_c('label',[_vm._v(\"Current Password:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.passwordRequest.OldPassword),expression:\"passwordRequest.OldPassword\"}],staticClass:\"form-control\",attrs:{\"id\":\"oldPassword\",\"type\":\"password\"},domProps:{\"value\":(_vm.passwordRequest.OldPassword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.passwordRequest, \"OldPassword\", $event.target.value)}}})]),_c('div',{staticClass:\"form-control\"},[_c('label',[_vm._v(\"New Password:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.passwordRequest.NewPassword),expression:\"passwordRequest.NewPassword\"}],staticClass:\"form-control\",attrs:{\"id\":\"newPassword\",\"type\":\"password\"},domProps:{\"value\":(_vm.passwordRequest.NewPassword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.passwordRequest, \"NewPassword\", $event.target.value)}}})]),_c('div',{staticClass:\"form-control\"},[_c('label',[_vm._v(\"Confirm Password:\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.passwordRequest.ConfirmPassword),expression:\"passwordRequest.ConfirmPassword\"}],staticClass:\"form-control\",attrs:{\"id\":\"confirmPassword\",\"type\":\"password\"},domProps:{\"value\":(_vm.passwordRequest.ConfirmPassword)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.passwordRequest, \"ConfirmPassword\", $event.target.value)}}})]),_c('div',{staticClass:\"buttons\"},[_c('b-button',{staticClass:\"btn btn-primary\",attrs:{\"variant\":\"primary\",\"id\":\"save-changes\",\"disabled\":!_vm.saveIsEnabled()},on:{\"click\":function($event){$event.preventDefault();return _vm.changePassword()}}},[_vm._v(\"Save\")]),_c('b-button',{staticClass:\"btn\",on:{\"click\":function($event){$event.preventDefault();return _vm.closePasswordForm()}}},[_vm._v(\"Cancel\")])],1)]):_vm._e(),_c('div',[_c('p'),(!_vm.showMfaAddForm && !_vm.showMfaClearForm && !_vm.showPasswordForm)?_c('b-button',{staticClass:\"btn\",attrs:{\"id\":\"mfa-btn\"},on:{\"click\":_vm.showMfaForm}},[_vm._v(_vm._s(_vm.userInformation.isSuiteUser ? \"Configure Two-Factor Authentication\" : _vm.userInformation.userMFASet ? ' Update Two Factor Authentication' : ' Add Two Factor Authentication')+\" \")]):_vm._e(),(_vm.showMfaClearForm)?_c('clear-mfa',{on:{\"cancel\":function($event){_vm.showMfaClearForm = false},\"mfa-cleared\":_vm.mfaClearSubmit}}):_vm._e(),(_vm.showMfaAddForm)?_c('add-mfa',{attrs:{\"username\":_vm.userInformation.username},on:{\"cancel\":function($event){_vm.showMfaAddForm = false},\"mfa-set\":_vm.mfaAddSubmit}}):_vm._e()],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"avatar\"},[_c('i',{staticClass:\"fas fa-user-alt\"})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group\",staticStyle:{\"padding-top\":\"10px\"}},[_c('div',[_c('p',[_vm._v(\"Please enter the valid authentication code for the two factor you already have configured. You will then be logged out and prompted to register a new two factor authentication account on your next login.\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.clearAuthCode),expression:\"clearAuthCode\"}],staticClass:\"form-control\",attrs:{\"id\":\"clearAuthCode\",\"type\":\"text\",\"placeholder\":\"Please enter code as appears on Authenticator\"},domProps:{\"value\":(_vm.clearAuthCode)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.clearAuthCode=$event.target.value}}}),_c('b-button-toolbar',{staticStyle:{\"margin-top\":\"10px\"}},[_c('b-button',{staticClass:\"btn btn-danger\",attrs:{\"id\":\"removeCode\",\"type\":\"submit\",\"disabled\":!_vm.clearAuthCode},on:{\"click\":function($event){return _vm.clearSecret(_vm.clearAuthCode)}}},[_vm._v(\"Remove Code and Logout \")]),_c('b-button',{staticClass:\"btn\",staticStyle:{\"margin-left\":\"10px\"},on:{\"click\":function($event){$event.preventDefault();return (function () { _vm.$emit('cancel'); })($event)}}},[_vm._v(\"Cancel \")])],1)],1),(_vm.mfaError.length)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"id\":\"divError\"}},[_vm._v(_vm._s(_vm.mfaError))]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport api from \"@/services/api.service\";\r\n\r\n@Component({\r\n\tcomponents: {},\r\n})\r\nexport default class ClearMFA extends Vue {\r\n public clearAuthCode: string = \"\";\r\n\tpublic mfaError: string = \"\";\r\n\r\n private async clearSecret(authCode: string) {\r\n \ttry {\r\n\t\t\tawait api.clearMfa(authCode);\r\n\t\t} catch (ex) {\r\n\t\t\tthis.mfaError = ex.response.message;\r\n\t\t}\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./clear-mfa.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./clear-mfa.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./clear-mfa.vue?vue&type=template&id=0aa3684f\"\nimport script from \"./clear-mfa.vue?vue&type=script&lang=ts\"\nexport * from \"./clear-mfa.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport { namespace, Getter, Action } from \"vuex-class\";\nimport api from \"@/services/api.service\";\nimport { PasswordModel, PasswordChangeResult } from \"@/store/my-account/types.ts\";\nimport { FeaturesList } from \"@/store/types\";\nimport { get, isEqual } from \"lodash\";\nimport { validationMixin } from \"vuelidate\";\nimport { maxLength } from \"vuelidate/lib/validators\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport { passwordValidationMixins } from \"@/mixins\";\nimport UserDTO from \"@/types/sv-data/users/UserDTO\";\nimport ClearMFA from \"./clear-mfa.vue\";\nimport AddMFA from \"@/views/MFA.vue\";\n\nconst { getPasswordStrength } = passwordValidationMixins.methods;\n\nconst UserManagement = namespace(\"userManagement\");\n\n@Component({\n\tmixins: [validationMixin],\n\tvalidations: {\n\t\tuserInformation: {\n\t\t\temail: {\n\t\t\t\tmaxLength: maxLength(150)\n\t\t\t},\n\t\t\taddress: {\n\t\t\t\tmaxLength: maxLength(200)\n\t\t\t},\n\t\t\ttelephone: {\n\t\t\t\tmaxLength: maxLength(50)\n\t\t\t},\n\t\t\tmobile: {\n\t\t\t\tmaxLength: maxLength(50)\n\t\t\t},\n\t\t\tverifyChange: function verifyChange() {\n\t\t\t\treturn !isEqual(this.userInformation, this.userInformationTemplate);\n\t\t\t}\n\t\t}\n\t},\n\tcomponents: {\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\n\t\t\"clear-mfa\": ClearMFA,\n\t\t\"add-mfa\": AddMFA,\n\t}\n})\nexport default class AccountDetails extends Vue {\n\t@Getter(\"getUserId\") currentUserId: number;\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\n\t@Action getTimeZones: any;\n\t@Action logout: () => void;\n\n\tprivate showMfaClearForm: boolean = false;\n\tprivate showMfaAddForm: boolean = false;\n\tprivate BrowserTimeZone: string = null;\n\tprivate showPasswordForm: boolean = false;\n\tprivate errorMessage = \"\";\n\t\n\tprivate passwordRequest: PasswordModel = {\n\t\tOldPassword: \"\",\n\t\tNewPassword: \"\",\n\t\tConfirmPassword: \"\"\n\t};\n\n\tprivate result: PasswordChangeResult = {\n\t\terrorMessage: null,\n\t\tsuccessful: false\n\t};\n\n\tprivate newPasswordValid: boolean = false;\n\n\tpublic get isEditPersonalEnabled() {\n\t\tif (get(this.featuresList, [\"AccountDetails\", \"EditPersonalInformation\"]) == null || this.isSuiteUser) {\n\t\t\treturn false;\n\t\t} else {\t\t\n\t\t\treturn get(this.featuresList, [\"AccountDetails\", \"EditPersonalInformation\"]);\n\t\t}\n\t}\n\n\tprivate get isSuiteEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Suite\"]);\n\t}\n\n\tprivate get isSuiteUser(): boolean {\n\t\treturn this.isSuiteEnabled && this.userInformation.isSuiteUser;\n\t}\n\n\tprivate async changePassword() {\n\t\tthis.errorMessage = null;\n\t\tthis.result = await api.changePassword(this.passwordRequest);\n\n\t\tif (this.result && this.result.successful) {\n\t\t\tthis.showPasswordForm = false;\n\t\t} else {\n\t\t\tthis.errorMessage = this.result.errorMessage;\n\t\t}\n\t}\n\n\t@Watch(\"passwordRequest.NewPassword\")\n\tprivate onNewPasswordChanged(newValue) {\n\t\tif (getPasswordStrength(newValue) === \"Weak\") {\n\t\t\tthis.errorMessage = \"A stronger password is required\";\n\t\t\tthis.newPasswordValid = false;\n\t\t} else {\n\t\t\tthis.errorMessage = \"\";\n\t\t\tthis.newPasswordValid = true;\n\t\t}\n\t}\n\n\tprivate saveIsEnabled() {\n\t\treturn (\n\t\t\tthis.passwordRequest.OldPassword != null &&\n\t\t\tthis.passwordRequest.OldPassword != \"\" &&\n\t\t\tthis.passwordRequest.NewPassword != null &&\n\t\t\tthis.passwordRequest.NewPassword != \"\" &&\n\t\t\tthis.passwordRequest.ConfirmPassword != null &&\n\t\t\tthis.passwordRequest.ConfirmPassword != \"\" &&\n\t\t\tthis.newPasswordValid\n\t\t);\n\t}\n\n\tprivate closePasswordForm() {\n\t\tthis.showPasswordForm = !this.showPasswordForm;\n\n\t\tthis.passwordRequest = {\n\t\t\tOldPassword: \"\",\n\t\t\tNewPassword: \"\",\n\t\t\tConfirmPassword: \"\"\n\t\t};\n\t}\n\n\tprivate userInformationTemplate: any = null;\n\n\tprivate userInformation: UserDTO = {\n\t\tuserID: 0,\n\t\tmobileStatusID: null,\n\t\tusername: \"\",\n\t\tfullName: \"\",\n\t\temail: \"\",\n\t\taddress: \"\",\n\t\ttelephone: \"\",\n\t\tmobile: \"\",\n\t\tgroupID: 0,\n\t\tisContact: false,\n\t\tpermissionGroupIds: [],\n\t\tcomment: \"\",\n\t\tuserGroupMembershipTitles: [],\n\t\ttimeZoneID: 0,\n\t\tregistrationStatus: \"\",\n\t\tuserMFASet: undefined,\n\t\tisSuiteUser: false,\n\t};\n\n\tasync mounted() {\n\t\tthis.userInformation = await api.getUserById(this.currentUserId);\n\t\tthis.userInformationTemplate = Object.assign({}, this.userInformation);\n\t\tthis.BrowserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t}\n\n\tprivate async saveUserDetails() {\n\t\tconst { fullName, telephone, mobile, address } = this.userInformation;\n\t\tawait api.updatePersonalInfo({ fullName, telephone, mobile, address });\n\t\tthis.userInformationTemplate = Object.assign({}, this.userInformation);\n\t}\n\n\tprivate resetUser() {\n\t\tthis.userInformation = Object.assign({}, this.userInformationTemplate);\n\t}\n\n\tpublic mfaClearSubmit() {\n\t\tthis.showMfaClearForm = false;\n\t\tthis.logout();\n\t}\n\n\tpublic mfaAddSubmit() {\n\t\tthis.showMfaAddForm = false;\n\t\tthis.userInformation.userMFASet = true;\n\t}\n\n\tpublic showMfaForm() {\n\t\tif (this.userInformation.userMFASet) {\n\t\t\tthis.showMfaClearForm = true;\n\t\t} else {\n\t\t\tthis.showMfaAddForm = true;\n\t\t} \n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./account-details.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./account-details.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./account-details.vue?vue&type=template&id=5d3ba72a&scoped=true\"\nimport script from \"./account-details.vue?vue&type=script&lang=ts\"\nexport * from \"./account-details.vue?vue&type=script&lang=ts\"\nimport style0 from \"./account-details.vue?vue&type=style&index=0&id=5d3ba72a&prod&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 \"5d3ba72a\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Mutation, Action } from \"vuex-class\";\r\nimport api from \"@/services/api.service\";\r\nimport {\r\n\tPasswordModel,\r\n\tPasswordChangeResult\r\n} from \"@/store/my-account/types.ts\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\nimport { BModal } from \"bootstrap-vue\";\r\nimport AccountDetails from \"./account-details.vue\";\r\nimport UserDTO from \"@/types/sv-data/users/UserDTO\";\r\n\r\nconst UserManagement = namespace(\"userManagement\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"account-details\": AccountDetails\r\n\t}\r\n})\r\nexport default class MyAccount extends Vue {\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter(\"getUserId\") currentUserId: number;\r\n\r\n\tprivate redirectMFAUrl = \"\";\r\n\tprivate isSuiteUser: boolean = false;\r\n\t\r\n\tasync mounted() {\r\n\t\tconst user = await api.getUserById(this.currentUserId);\r\n\t\tthis.isSuiteUser = user?.isSuiteUser;\r\n\t\tthis.redirectMFAUrl = await api.mfaRedirectUrl();\r\n\t}\r\n\r\n\tprivate showAccountDetails: boolean = false;\r\n\r\n\t// If feature is on / off\r\n\tpublic get IsAccountDetailsEnabled() {\r\n\t\treturn get(this.featuresList, [\"AccountDetails\"]);\r\n\t}\r\n\r\n\tprivate checkForSuiteUser() : void {\r\n\t\tif (this.isSuiteUser) {\r\n\t\t\twindow.location.href = this.redirectMFAUrl + \"?page=\" + window.location.href;\r\n\t\t} else {\r\n\t\t\tthis.showAccountDetails = !this.showAccountDetails;\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./my-account.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./my-account.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./my-account.vue?vue&type=template&id=153b1b28\"\nimport script from \"./my-account.vue?vue&type=script&lang=ts\"\nexport * from \"./my-account.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('a',{staticClass:\"dropdown-item\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.preventDefault();_vm.showTenantSelect = !_vm.showTenantSelect}}},[_vm._v(\" Change Tenant \")]),_c('b-modal',{attrs:{\"visible\":_vm.showTenantSelect,\"centered\":\"\",\"role\":\"dialog\",\"title\":\"Select tenant to administer\",\"size\":\"md\",\"static\":_vm.isUnitTest},on:{\"hidden\":function($event){_vm.showTenantSelect = false},\"show\":_vm.getTenants}},[(!_vm.isLoading)?_c('div',[(!_vm.originalTenant)?_c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":\"\",\"data-cy\":\"no-comment-alert\"}},[_vm._v(\" Cannot change tenant - No GroupID set in user comment row \")]):_vm._e(),_c('h6',[_vm._v(\" Current tenant \"+_vm._s(_vm.currentTenantId)+\" - \"+_vm._s(_vm.areaDictionary[_vm.currentTenantId])+\" \")]),_c('label',{staticClass:\"mt-2\"},[_vm._v(\"Switch to tenant:\")]),_c('v-select-3',{attrs:{\"options\":_vm.availableTenants,\"label\":\"title\",\"clearable\":false,\"appendToBody\":\"\"},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [_vm._v(\" \"+_vm._s(option.tenantId)+\" - \"+_vm._s(option.title)+\" \")]}},{key:\"selected-option\",fn:function(ref){\nvar tenantId = ref.tenantId;\nvar title = ref.title;\nreturn [_vm._v(\" \"+_vm._s(tenantId)+\" - \"+_vm._s(title)+\" \")]}}],null,false,3493937549),model:{value:(_vm.tenant),callback:function ($$v) {_vm.tenant=$$v},expression:\"tenant\"}})],1):_c('div',[_vm._v(\" Loading... \"),_c('i',{staticClass:\"fas fa-spinner fa-spin\"})]),_c('template',{slot:\"modal-footer\"},[_c('div',{staticClass:\"row modal-footer-btns\"},[_c('div',{staticClass:\"col-5 pl-0\"},[(_vm.originalTenant && _vm.originalTenant.groupID !== _vm.currentTenantId)?_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"reset-tenant-btn\"},on:{\"click\":_vm.resetTenant}},[_vm._v(\" Return to Tenant \"+_vm._s(_vm.originalTenant.groupID)+\" - \"+_vm._s(_vm._f(\"truncateString\")(_vm.originalTenant.title,20))+\" \")]):_vm._e()],1),_c('div',{staticClass:\"col-2\"}),_c('div',{staticClass:\"col-5 pr-0\",staticStyle:{\"left\":\"20px\"}},[_c('b-button',{staticClass:\"ml-4\",on:{\"click\":function($event){_vm.showTenantSelect = false}}},[_vm._v(\"Cancel\")]),_c('b-button',{staticClass:\"ml-1\",attrs:{\"variant\":\"primary\",\"disabled\":_vm.isSettingTenant || !_vm.originalTenant ||!_vm.tenant,\"data-cy\":\"ok-btn\"},on:{\"click\":_vm.ok}},[_vm._v(\" OK \")])],1)])])],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport vSelect3 from \"vselect3\";\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { Action, Getter, namespace } from \"vuex-class\";\r\nimport { Tenant } from \"@/store/areas/types\";\r\nimport api from \"@/services/api.service\";\r\nimport supportEngagementApi from \"@/services/api.supportEngagement.service\";\r\nimport { UserDetails } from \"@/store/user-management/types\";\r\nimport { truncateString } from \"@/filters\";\r\nimport AvailableTenantsResponse, { AvailableTenant } from \"@/types/sv-data/responses/AvailableTenantsResponse\";\r\n\r\nconst UserManagement = namespace(\"userManagement\");\r\nconst Areas = namespace(\"areas\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vSelect3\r\n\t},\r\n\tfilters: {\r\n\t\ttruncateString\r\n\t}\r\n})\r\nexport default class SwitchTenant extends Vue {\r\n\t@Action logout;\r\n\t@Getter(\"getUserId\") currentUserId: number;\r\n\t@Getter(\"getUserTenantGroupId\") currentTenantId: number;\r\n\r\n\t@Areas.Action fetchAreaDictionary: () => Promise;\r\n\t@Areas.State areaDictionary: Map;\r\n\r\n\r\n\tprivate showTenantSelect: boolean = false;\r\n\tprivate tenantsList: any[] = [];\r\n\tprivate availableTenants: AvailableTenant[] = [];\r\n\tprivate tenant: AvailableTenant = null;\r\n\tprivate isSettingTenant: boolean = false;\r\n\tprivate originalTenant: Tenant = null;\r\n\tprivate isLoading: boolean = false;\r\n\r\n\t// Can and should only be set when unit testing,\r\n\t// sets the modal to static so its content can be accessed from within a unit test.\r\n\t// Normally we can set modals to static without issue, but because this is used from within\r\n\t// the NavMenu, the modal pops up from within the menu if static is true.\r\n\tprivate isUnitTest: boolean = false;\r\n\r\n\tprivate async mounted() {\r\n\t\tif (this.areaDictionary.size === 0) {\r\n\t\t\tawait this.fetchAreaDictionary();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getTenants() {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.tenantsList = (await api.getTenants()).data;\r\n\t\t\tthis.tenantsList.sortBy(\"groupID\");\r\n\r\n\t\t\tlet currentUser = await api.getUserById(this.currentUserId);\r\n\r\n\t\t\tif (currentUser.comment) {\r\n\t\t\t\tlet originalTenantGroupId = parseInt(currentUser.comment);\r\n\t\t\t\tthis.originalTenant = this.tenantsList.find(t => t.groupID === originalTenantGroupId);\r\n\t\t\t}\r\n\r\n\t\t\tconst availableTenantsResponse: AvailableTenantsResponse = await supportEngagementApi.getAvailableTenants();\r\n\t\t\tthis.availableTenants = availableTenantsResponse.tenants;\r\n\t\t} catch {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Error\",\r\n\t\t\t\ttext: \"Failed to load tenant details.\",\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\tprivate async ok() {\r\n\t\tthis.isSettingTenant = true;\r\n\t\tawait api.setTenant(this.tenant.tenantId);\r\n\t\tthis.logout();\r\n\t\tthis.isSettingTenant = false;\r\n\t}\r\n\r\n\tprivate async resetTenant() {\r\n\t\tthis.isSettingTenant = true;\r\n\t\tawait api.resetTenant();\r\n\t\tthis.logout();\r\n\t\tthis.isSettingTenant = false;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SwitchTenant.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SwitchTenant.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SwitchTenant.vue?vue&type=template&id=2844a3cc\"\nimport script from \"./SwitchTenant.vue?vue&type=script&lang=ts\"\nexport * from \"./SwitchTenant.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SwitchTenant.vue?vue&type=style&index=0&id=2844a3cc&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{class:{ 'open': _vm.menuOpen },attrs:{\"version\":\"1.1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"preserveAspectRatio\":\"xMidYMid meet\",\"viewBox\":\"0 0 1536 1536\",\"width\":\"1536\",\"height\":\"1536\"}},[_c('defs',[_c('path',{attrs:{\"d\":\"M-0.7 0L1536 0L1536 1538.98L-0.7 1538.98L-0.7 0Z\",\"id\":\"container\"}}),_c('path',{attrs:{\"d\":\"M622.59 299.58L643.37 340.95L699.76 454.25L455.25 454.25L455.25 700.69L185 564.67L185 185.45L565.99 185.45L622.79 299.58L622.59 299.58Z\",\"id\":\"module-top-left\"}}),_c('path',{attrs:{\"d\":\"M904.79 1228.3L904.98 1228.3L884.21 1186.94L827.82 1073.63L1072.33 1073.63L1072.33 827.18L1342.58 963.21L1342.58 1342.42L961.59 1342.42L961.59 1342.42L904.79 1228.3Z\",\"id\":\"module-bottom-right\"}}),_c('path',{attrs:{\"d\":\"M827.82 453.8L884.2 340.5L904.98 299.13L904.79 299.13L961.59 185L1342.58 185L1342.58 564.21L1072.33 700.24L1072.33 453.8L1072.33 453.8L827.82 453.8Z\",\"id\":\"module-top-right\"}}),_c('path',{attrs:{\"d\":\"M623.48 1228.49L623.67 1228.49L566.88 1342.62L185.89 1342.62L185.89 963.41L456.14 827.38L456.14 1073.82L700.65 1073.82L644.26 1187.13L644.26 1187.13L623.48 1228.49Z\",\"id\":\"module-bottom-left\"}})]),_c('g',[_c('g',[_c('g',[_c('use',{attrs:{\"xlink:href\":\"#container\",\"opacity\":\"0\"}})]),_c('g',[_c('use',{attrs:{\"xlink:href\":\"#module-top-left\",\"opacity\":\"1\",\"fill\":\"#ffffff\",\"fill-opacity\":\"1\"}})]),_c('g',[_c('use',{attrs:{\"xlink:href\":\"#module-bottom-right\",\"opacity\":\"1\",\"fill\":\"#ffffff\",\"fill-opacity\":\"1\"}})]),_c('g',[_c('use',{attrs:{\"xlink:href\":\"#module-top-right\",\"opacity\":\"1\",\"fill\":\"#ffffff\",\"fill-opacity\":\"1\"}})]),_c('g',[_c('use',{attrs:{\"xlink:href\":\"#module-bottom-left\",\"opacity\":\"1\",\"fill\":\"#ffffff\",\"fill-opacity\":\"1\"}})])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* istanbul ignore file */\nimport { Vue, Prop, Component, Emit } from \"vue-property-decorator\";\n\n@Component({})\nexport default class NavMenuIcon extends Vue {\n\t@Prop({ default: false }) public menuOpen: boolean;\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavMenuIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavMenuIcon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./NavMenuIcon.vue?vue&type=template&id=114a83ec&scoped=true\"\nimport script from \"./NavMenuIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./NavMenuIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./NavMenuIcon.vue?vue&type=style&index=0&id=114a83ec&prod&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 \"114a83ec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"size\":\"lg\",\"title\":\"Getting Started\",\"centered\":\"\",\"role\":\"dialog\",\"hide-footer\":\"\"},on:{\"change\":_vm.onModalChange},model:{value:(_vm.isModalShown),callback:function ($$v) {_vm.isModalShown=$$v},expression:\"isModalShown\"}},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row intro-message\"},[_c('p',[_vm._v(\"Welcome to Sureview Operations - you're on your way to simplifying operations in your command centers.\")]),_c('p',[_vm._v(\"To help you get started follow the steps below.\")])]),_c('div',{staticClass:\"row\"},[_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360009923157-1-Create-Your-First-Area\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-2x fas fa-map-marker-alt\"}),_vm._v(\" 1. Adding your First Area \")])]),_c('div',{staticClass:\"row\"},[_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360009923277-2-Add-More-Users\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-2x fas fa-users\"}),_vm._v(\" 2. Adding more Users \")])]),_c('div',{staticClass:\"row\"},[_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360009923357-3-Who-Else-Needs-to-Know-Adding-Contacts-and-Key-Stakeholders\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-2x fas fa-address-book\"}),_vm._v(\" 3. Adding Contacts and Key Stakeholders \")])]),_c('div',{staticClass:\"row\"},[_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360009923397-4-Track-Comings-and-Goings-with-Activity-Log\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-2x fas fa-list-alt\"}),_vm._v(\" 4. Tracking Coming and Goings with the Activity Log \")])]),_c('div',{staticClass:\"row\"},[_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360009923577-5-Raise-an-Alarm\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-2x fas fa-bell\"}),_vm._v(\" 5. Raise an Alarm \")])]),_c('div',{staticClass:\"row\"},[_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360010007898-6-Simplifying-Response-with-Action-Plans\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-2x fas fa-clipboard-list\"}),_vm._v(\" 6. Simplifying Response with Action Plans \")])]),_c('div',{staticClass:\"row\"},[_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360010007938-7-Auditing-Every-Action\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-2x fas fa-search\"}),_vm._v(\" 7. Auditing - Search Previous Events \")])]),_c('div',{staticClass:\"row\"},[_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360010007958-8-Get-Insights-Into-Your-Operation\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-2x fas fa-chart-bar\"}),_vm._v(\" 8. Get insight into your Operation \")])]),_c('div',{staticClass:\"row\"},[_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360013406198-9-Add-your-first-email-alarm\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-2x fas fa-bell-school\"}),_vm._v(\" 9. Add your first email alarm \")])]),_c('a',{staticClass:\"row portal-card\",attrs:{\"href\":\"https://help.sureviewops.com/\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-2x fas fa-life-ring\"}),_c('p',{staticStyle:{\"margin-top\":\"1em\"}},[_vm._v(\" SureView Ops Support Portal\"),_c('br'),_vm._v(\" Help.SureViewOps.com \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\timport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\n import { State, Mutation } from \"vuex-class\";\n\n @Component\n export default class GettingStartedModal extends Vue {\n @Prop({default: false, type: Boolean}) public readonly value;\n\n @State User;\n @Mutation setisFirstLogin: any;\n\n private isModalShown = false;\n\n @Emit(\"input\")\n public onModalChange() {\n return this.isModalShown;\n }\n\n @Watch(\"value\")\n public onValueChanged(newValue) {\n this.isModalShown = newValue;\n\n // If this is a new user and the modal is being opened\n if (this.User.isFirstLogin && newValue) {\n // The User is no longer considered a new user as they have viewed the Getting Stated Guide\n this.setisFirstLogin(false);\n }\n }\n }\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GettingStartedModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GettingStartedModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GettingStartedModal.vue?vue&type=template&id=f75e4022&scoped=true\"\nimport script from \"./GettingStartedModal.vue?vue&type=script&lang=ts\"\nexport * from \"./GettingStartedModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GettingStartedModal.vue?vue&type=style&index=0&id=f75e4022&prod&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 \"f75e4022\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-modal',{attrs:{\"size\":\"lg\",\"title\":\"SureView Engineer Support\",\"centered\":\"\",\"role\":\"dialog\",\"hide-footer\":\"\",\"show-empty\":\"\",\"static\":\"\"},on:{\"change\":_vm.onModalChange},model:{value:(_vm.isModalShown),callback:function ($$v) {_vm.isModalShown=$$v},expression:\"isModalShown\"}},[_c('b-container',{staticClass:\"w-100\"},[_c('p',[_vm._v(\" If you require hands on support from our SureView Engineers you can setup an access period here. This will give our engineers full access to your account to help provide further assistance.\"),_c('br'),_c('strong',[_vm._v(\"This action is audited and your account admins will be notified.\")])]),_c('b-row',[_c('b-card',{staticClass:\"w-100\",attrs:{\"title\":\"Active SureView Engineer Access periods\"}},[_c('b-table',{attrs:{\"head-variant\":\"dark\",\"items\":_vm.supportEngagements,\"fields\":_vm.tableFields,\"busy\":_vm.isLoading,\"empty-text\":\"There are no active SureView Engineer access periods.\",\"hover\":\"\",\"sticky-header\":\"200px\",\"responsive\":\"\",\"no-border-collapse\":\"\",\"show-empty\":\"\"},scopedSlots:_vm._u([{key:\"cell(startsFrom)\",fn:function(data){return [_vm._v(\" \"+_vm._s(_vm.formatDate(data.item.startsFrom))+\" \")]}},{key:\"cell(expiresAt)\",fn:function(data){return [_vm._v(\" \"+_vm._s(_vm.formatDate(data.item.expiresAt))+\" \")]}},{key:\"cell(action)\",fn:function(data){return [_c('i',{staticClass:\"fas fa-trash hover-icon p-2\",attrs:{\"title\":\"Delete access period\",\"data-cy\":(\"delete-support-engagement-\" + (data.item.id))},on:{\"click\":function($event){return _vm.confirmDelete(data.item)}}})]}}])})],1)],1),_c('b-row',{staticClass:\"mt-2\"},[_c('b-card',{staticClass:\"w-100\",attrs:{\"title\":\"Grant access to SureView Engineers\"}},[_c('b-col',{staticClass:\"p-0\"},[_c('b-form',{attrs:{\"label\":\"Grant access to your system for SureView Support Engineers\"}},[_c('b-form-row',[_c('b-col',[_c('b-form-group',{attrs:{\"label\":\"Duration:\"}},[_c('v-select-3',{attrs:{\"options\":_vm.engagementDurationOptions,\"label\":\"title\",\"appendToBody\":\"\",\"clearable\":false,\"data-cy\":\"duration-select-input\"},model:{value:(_vm.selectedEngagementOption),callback:function ($$v) {_vm.selectedEngagementOption=$$v},expression:\"selectedEngagementOption\"}})],1)],1),(_vm.selectedEngagementOption.title === 'Custom')?_c('b-col',[_c('label',{staticClass:\"m-0\"},[_vm._v(\"Start date:\")]),_c('datetime',{attrs:{\"input-id\":\"foobar\",\"title\":\"Start date\",\"type\":\"datetime\",\"hide-backdrop\":\"\",\"data-cy\":\"custom-start-date-input\"},model:{value:(_vm.customStartDate),callback:function ($$v) {_vm.customStartDate=$$v},expression:\"customStartDate\"}})],1):_vm._e(),(_vm.selectedEngagementOption.title === 'Custom')?_c('b-col',[_c('label',{staticClass:\"m-0\"},[_vm._v(\"Expiry date:\")]),_c('datetime',{attrs:{\"title\":\"Expiry date\",\"type\":\"datetime\",\"hide-backdrop\":\"\",\"data-cy\":\"custom-expiry-date-input\"},model:{value:(_vm.customExpiryDate),callback:function ($$v) {_vm.customExpiryDate=$$v},expression:\"customExpiryDate\"}})],1):_vm._e()],1),_c('b-form-row',[_c('b-col',[_c('b-form-group',{staticClass:\"w-100\",attrs:{\"invalid-feedback\":\"Must be between 1 - 1000 characters\"}},[_c('span',{staticClass:\"flex-grow-0\"},[_vm._v(\"Reason: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('b-form-textarea',{attrs:{\"placeholder\":\"Enter a reason for granting access...\",\"required\":\"\",\"max-rows\":\"3\",\"state\":_vm.comment.length < 1000,\"data-cy\":\"reason-input\"},model:{value:(_vm.comment),callback:function ($$v) {_vm.comment=$$v},expression:\"comment\"}})],1)],1)],1),_c('b-button',{attrs:{\"type\":\"button\",\"variant\":\"primary\",\"disabled\":!_vm.comment || _vm.isLoading,\"data-cy\":\"grant-button\"},on:{\"click\":_vm.addSupportEngagement}},[_vm._v(\" Grant \"),(_vm.isLoading)?_c('i',{staticClass:\"fa fa-spin fa-spinner\"}):_vm._e()])],1)],1)],1)],1)],1)],1),(_vm.isConfirmDeleteVisible)?_c('b-modal',{attrs:{\"visible\":\"\",\"size\":\"lg\",\"centered\":\"\",\"header-class\":\"delete-confirm-modal\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"static\":\"\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"confirm-delete-button\"},on:{\"click\":_vm.deleteSupportEngagement}},[_vm._v(\" Delete \")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"cancel-delete-button\"},on:{\"click\":_vm.cancelDelete}},[_vm._v(\" Cancel \")])]},proxy:true}],null,false,1200878820)},[_c('template',{staticClass:\"d-flex align-items-center\",slot:\"modal-header\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('i',{staticClass:\"fas fa-trash text-danger mr-2\"}),_c('h4',[_vm._v(\"Are you sure you want to delete this SureView Engineer Access period?\")])])]),_c('b-form',[_c('b-form-row',{staticClass:\"mb-2\"},[_c('b-col',[_c('label',{staticClass:\"m-0\"},[_vm._v(\"Granted by:\")]),_c('b-form-input',{attrs:{\"title\":\"Granted by\",\"readonly\":\"\"},model:{value:(_vm.supportEngagementToDelete.grantedByUser),callback:function ($$v) {_vm.$set(_vm.supportEngagementToDelete, \"grantedByUser\", $$v)},expression:\"supportEngagementToDelete.grantedByUser\"}})],1)],1),_c('b-form-row',{staticClass:\"mb-2\"},[_c('b-col',[_c('label',{staticClass:\"m-0\"},[_vm._v(\"Start date:\")]),_c('b-form-input',{attrs:{\"readonly\":\"\",\"title\":\"Start date\",\"type\":\"datetime\"},model:{value:(_vm.supportEngagementToDelete.startsFrom),callback:function ($$v) {_vm.$set(_vm.supportEngagementToDelete, \"startsFrom\", $$v)},expression:\"supportEngagementToDelete.startsFrom\"}})],1),_c('b-col',[_c('label',{staticClass:\"m-0\"},[_vm._v(\"Expiry date:\")]),_c('b-form-input',{attrs:{\"readonly\":\"\",\"title\":\"Expiry date\",\"type\":\"datetime\"},model:{value:(_vm.supportEngagementToDelete.expiresAt),callback:function ($$v) {_vm.$set(_vm.supportEngagementToDelete, \"expiresAt\", $$v)},expression:\"supportEngagementToDelete.expiresAt\"}})],1)],1),_c('b-form-row',[_c('b-col',[_c('b-form-group',{staticClass:\"w-100\",attrs:{\"label\":\"Reason\"}},[_c('b-form-textarea',{attrs:{\"readOnly\":\"\"},model:{value:(_vm.supportEngagementToDelete.comment),callback:function ($$v) {_vm.$set(_vm.supportEngagementToDelete, \"comment\", $$v)},expression:\"supportEngagementToDelete.comment\"}})],1)],1)],1)],1)],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import { Datetime } from \"vue-datetime\";\n import { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\n import vSelect3 from \"vselect3\";\n import moment from \"moment\";\n import supportEngagementApi, { SupportEngagementRequest, SupportEngagementDto } from \"@/services/api.supportEngagement.service\";\n\n interface EngagementOption {\n title: string,\n duration()\n }\n\n export interface SupportEngagementRow {\n id: number;\n grantedByUser: string;\n startsFrom: Date;\n expiresAt: Date;\n comment: string;\n }\n\n @Component({\n components: {\n \"v-select-3\": vSelect3,\n Datetime\n }\n })\n export default class Support extends Vue {\n @Prop({default: false, type: Boolean}) public readonly value;\n\n private isModalShown = false;\n private engagementDurationOptions: EngagementOption[] = [\n {\n title: \"1 Hour\",\n duration: () => {\n return moment().add(\"hour\", 1).toDate();\n }\n },\n {\n title: \"1 Day\",\n duration: () => {\n return moment().add(\"day\", 1).toDate();\n }\n },\n {\n title: \"1 Week\",\n duration: () => {\n return moment().add(\"day\", 7).toDate();\n }\n },\n {\n title: \"1 Month\",\n duration: () => {\n return moment().add(\"month\", 1).toDate();\n }\n },\n {\n title: \"Custom\",\n duration: () => {}\n }\n ];\n private comment: string = \"\";\n private customStartDate: Date | string = null;\n private customExpiryDate: Date | string = null;\n private selectedEngagementOption: EngagementOption = {\n title: \"1 Hour\",\n duration: () => {\n return moment().add(\"hour\", 1).toDate();\n }\n };\n private supportEngagements: SupportEngagementRow[] = [];\n\n private tableFields: any[] = [\n {\n key: 'grantedByUser',\n label: 'Granted By',\n sortable: true,\n },\n {\n key: 'startsFrom',\n sortable: true\n },\n {\n key: 'expiresAt',\n sortable: true\n },\n {\n key: 'comment',\n label: 'Reason',\n sortable: true\n },\n {\n key: 'action',\n label: ''\n }\n ];\n\n private supportEngagementToDelete: SupportEngagementRow = null;\n private isConfirmDeleteVisible: boolean = false;\n private isLoading: boolean = false;\n\n private tableHeight: string = \"\";\n\n private async mounted(): Promise {\n this.tableHeight = this.calculateTableHeight();\n window.addEventListener('resize', this.updateTableHeight);\n }\n\n private destroyed(): void {\n window.removeEventListener('resize', this.updateTableHeight);\n }\n\n private updateTableHeight(): void {\n this.tableHeight = this.calculateTableHeight();\n }\n\n private calculateTableHeight(): string {\n const minHeight = 50;\n let result = document.body.clientHeight - 1000;\n if (result < minHeight) {\n result = minHeight;\n }\n return `${result}px`;\n }\n\n @Watch(\"isModalShown\")\n public onModalChange(): void {\n this.$emit(\"input\", this.isModalShown);\n this.comment = \"\";\n }\n\n @Watch(\"value\")\n public async onValueChanged(newValue: boolean): Promise {\n this.isModalShown = newValue;\n if (this.isModalShown) {\n this.selectedEngagementOption = this.engagementDurationOptions[0];\n await this.updateSupportEngagements();\n }\n }\n\n @Watch(\"selectedSupportEngagement\")\n private onSelectedSupportEngagementUpdated(): void {\n if (this.selectedEngagementOption.title === \"Custom\") {\n const currentDate = new Date(Date.now());\n this.customStartDate = currentDate;\n currentDate.setHours(currentDate.getHours() + 1);\n this.customExpiryDate = currentDate;\n }\n }\n\n public async addSupportEngagement(): Promise {\n\t\t\ttry\n\t\t\t{\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tlet supportEngagementRequest: SupportEngagementRequest;\n\t\t\t\tif (this.selectedEngagementOption.title === \"Custom\")\n\t\t\t\t{\n\t\t\t\t\tsupportEngagementRequest = {\n\t\t\t\t\t\t\tcomment: this.comment,\n\t\t\t\t\t\t\texpiresAt: this.convertDateStringToUtcDate(this.customExpiryDate as string),\n\t\t\t\t\t\t\tstartsFrom: this.convertDateStringToUtcDate(this.customStartDate as string),\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tsupportEngagementRequest = {\n\t\t\t\t\t\tcomment: this.comment,\n\t\t\t\t\t\texpiresAt: this.selectedEngagementOption.duration(),\n\t\t\t\t\t\tstartsFrom: new Date(Date.now())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tawait supportEngagementApi.create(supportEngagementRequest);\n\t\t\t\tthis.selectedEngagementOption = {\n\t\t\t\t\ttitle: \"1 Hour\",\n\t\t\t\t\tduration: () => {\n\t\t\t\t\t\treturn moment().add(\"hour\", 1).toDate();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.comment = \"\";\n\t\t\t\tawait this.updateSupportEngagements();\n\t\t\t}\n\t\t\tcatch\n\t\t\t{\n\t\t\t\tthis.isLoading = false;\n\t\t\t}\n }\n\n public confirmDelete(supportEngagement: SupportEngagementRow): void {\n this.supportEngagementToDelete = supportEngagement;\n this.isConfirmDeleteVisible = true;\n }\n\n public cancelDelete(): void {\n this.isConfirmDeleteVisible = false;\n this.supportEngagementToDelete = null;\n }\n\n public async deleteSupportEngagement(): Promise {\n if (!this.supportEngagementToDelete) {\n this.isConfirmDeleteVisible = false;\n return;\n }\n await supportEngagementApi.delete(this.supportEngagementToDelete.id);\n this.isConfirmDeleteVisible = false;\n await this.updateSupportEngagements();\n }\n\n\t\tprivate formatDate(date: Date): string {\n return moment(date).local().format(\"MMM Do YYYY, h:mm:ss A\");\n\t\t}\n\n private async updateSupportEngagements(): Promise {\n this.isLoading = true;\n try {\n const supportEngagementsResponse: SupportEngagementDto[] = await supportEngagementApi.get();\n this.supportEngagements = supportEngagementsResponse.map(s => {\n return {\n id: s.id,\n startsFrom: s.startsFrom,\n expiresAt: s.expiresAt,\n comment: s.comment,\n grantedByUser: s.grantedByUser\n }\n });\n } catch {\n this.$notify({\n type: \"error\",\n title: \"Error\",\n text: \"Failed to load Active SureView Engineer Access periods. Please try again and contact support if the problem persists.\",\n });\n }\n this.isLoading = false;\n }\n\n private convertDateStringToUtcDate(dateString: string): Date {\n let date = new Date(dateString);\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(),\n date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()));\n }\n }\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Support.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Support.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Support.vue?vue&type=template&id=3344e648&scoped=true\"\nimport script from \"./Support.vue?vue&type=script&lang=ts\"\nexport * from \"./Support.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Support.vue?vue&type=style&index=0&id=3344e648&prod&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 \"3344e648\",\n null\n \n)\n\nexport default component.exports","\r\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Action, State } from \"vuex-class\";\r\nimport { get, groupBy, sortBy } from \"lodash\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport ShortcutHelp from \"./ShortcutHelp.vue\";\r\n\r\nimport MyAccount from \"../components/my-account/my-account.vue\";\r\nimport SwitchTenant from \"../components/system-admin/SwitchTenant.vue\";\r\nimport NavMenuIcon from \"@/components/NavMenuIcon.vue\";\r\nimport GettingStartedModal from \"@/components/GettingStartedModal.vue\";\r\nimport ZendeskHelp from \"./ZendeskHelp.vue\";\r\nimport { SubscriptionDto } from '@/store/subscription/types';\r\nimport Support from \"@/components/Support.vue\";\r\n\r\nconst CaseManagement = namespace(\"caseManagement\");\r\nconst Subscription = namespace(\"subscription\");\r\n\r\n@Component({\r\n\t\tcomponents: {\r\n\t\t\t\"shortcut-help\": ShortcutHelp,\r\n\t\t\t\"my-account\": MyAccount,\r\n\t\t\t\"switch-tenant\": SwitchTenant,\r\n\t\t\t\"nav-menu-icon\": NavMenuIcon,\r\n\t\t\t\"zendeskHelp\" : ZendeskHelp,\r\n\t\t\t\"getting-started-modal\": GettingStartedModal,\r\n\t\t\t\"support\": Support\r\n\t\t}\r\n\t})\r\n\texport default class NavMenu extends Vue {\r\n\t\t@Getter getPermissions: UserPermissions;\r\n\t\t@Getter(\"getVersion\") webVersion;\r\n\t\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t\t@Getter(\"getIsFieldOpsLicensed\") private isFieldOpsLicensed: () => boolean;\r\n\t\t@Getter(\"getIsResponseLicensed\") private isResponseLicensed: () => boolean;\r\n\t\t@Getter(\"getIsCasesLicenced\") private isCasesLicenced: () => boolean;\r\n\t\t@Getter(\"getFieldOpsOnlyRoutes\") private fieldOpsOnlyRoutes: string[];\r\n\t\t@Getter(\"getFieldOpsLicencedRoutes\") private fieldOpsLicencedRoutes: string[];\r\n\t\t@Getter(\"getFieldOpsAndResponseLicencedRoutes\") private fieldOpsAndResponseLicencedRoutes: string[];\r\n\r\n\t\t@Action serverLogout: any;\r\n\t\t@Action logout: () => void;\r\n\r\n\t\t@CaseManagement.Action casesLogin: (suiteSession: boolean) => Promise<{ url: string, token: string | null, suiteTenantId: string | null }>;\r\n\r\n\t\t@State User;\r\n\r\n\t\t@Subscription.State private subscription: SubscriptionDto;\r\n\t\t@Subscription.State(\"isLoaded\") private isSubscriptionLoaded: Boolean;\r\n\r\n\t\tprivate menuOpened: boolean = false;\r\n\t\tprivate isGettingStartedShown: boolean = false;\r\n\t\tprivate isSupportModalShown: boolean = false;\r\n\r\n\t\tprivate mounted() {\r\n\t\t\tif (this.getPermissions.isAccountAdmin && this.User.isFirstLogin) {\r\n\t\t\t\tthis.isGettingStartedShown = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tget routes(): any[] {\r\n\t\t\tlet routes = (this.$router as any).options.routes\r\n\t\t\t\t.filter(\r\n\t\t\t\t\troute =>\r\n\t\t\t\t\t\troute.meta &&\r\n\t\t\t\t\t\troute.meta.title &&\r\n\t\t\t\t\t\t(!route.meta.show || route.meta.show(this.getPermissions, this.featuresList))\r\n\t\t\t\t)\r\n\t\t\t\t.map(route => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\trouteName: route.name,\r\n\t\t\t\t\t\tlinkText: route.meta.title,\r\n\t\t\t\t\t\tshow: route.meta.show,\r\n\t\t\t\t\t\ticonClass: route.meta.iconClass,\r\n\t\t\t\t\t\ticonMask: route.meta.iconMask,\r\n\t\t\t\t\t\ttarget: this.getRouteTarget(route.name), // if the link should open in a new window or not\r\n\t\t\t\t\t\tgroup: route.meta.menuGroup,\r\n\t\t\t\t\t\torder: route.meta.menuOrder,\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\r\n\t\t\t// sort the list alphabetically;\r\n\t\t\troutes = routes.sort((a, b) => a.linkText.localeCompare(b.linkText));\r\n\r\n\t\t\tif(this.isSubscriptionLoaded && !this.subscription.isActiveState){\r\n\t\t\t\troutes = routes.filter(route => [\"organization\", \"event-queue\"].includes(route.routeName));\r\n\t\t\t}\r\n\r\n\t\t\tif(this.isSuiteEnabled) {\r\n\t\t\t\tif(!this.isFieldOpsLicensed || !this.isResponseLicensed)\r\n\t\t\t\t{\r\n\t\t\t\t\troutes = routes.filter(route => !this.fieldOpsAndResponseLicencedRoutes.includes(route.routeName))\r\n\t\t\t\t}\r\n\t\t\t\tif(this.isResponseLicensed && !this.isFieldOpsLicensed){\r\n\t\t\t\t\troutes = routes.filter(route => !this.fieldOpsOnlyRoutes.includes(route.routeName))\r\n\t\t\t\t}\r\n\t\t\t\tif(this.isFieldOpsLicensed && !this.isResponseLicensed){\r\n\t\t\t\t\troutes = routes.filter(route => this.fieldOpsLicencedRoutes.includes(route.routeName));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn routes;\r\n\t\t}\r\n\r\n\t\tprivate get isSuiteEnabled(): boolean {\r\n\t\t\treturn get(this.featuresList, [\"Suite\"]);\r\n\t\t}\r\n\r\n\t\tprivate get routeGroups(): any[] {\r\n\t\t\tconst routeGroups = [];\r\n\t\t\tconst groups = groupBy(this.routes, route => route.group);\r\n\t\t\tfor (let key in groups) {\r\n\t\t\t\trouteGroups.push({ group: key, routes: sortBy(groups[key], g => g.order) });\r\n\t\t\t}\r\n\t\t\treturn routeGroups;\r\n\t\t}\r\n\r\n\t\tprivate getRouteTarget(routeName) {\r\n\t\t\t// default to open in same window\r\n\t\t\tlet target = \"_self\";\r\n\r\n\t\t\t// get any OpenInNewTab settings\r\n\t\t\tlet openInNewTabRoutes = get(this.featuresList, [\"NavMenu\", \"OpenInNewTab\"]);\r\n\r\n\t\t\t// if there are some, look for one that matches our link name\r\n\t\t\tif (openInNewTabRoutes) {\r\n\t\t\t\tif (\r\n\t\t\t\t\t// if there is one that matched the route name (lower cased)\r\n\t\t\t\t\topenInNewTabRoutes[\r\n\t\t\t\t\t\tObject.keys(openInNewTabRoutes).find(key => key.toLowerCase() === routeName.toLowerCase())\r\n\t\t\t\t\t]\r\n\t\t\t\t) {\r\n\t\t\t\t\t// open the link in a new window\r\n\t\t\t\t\ttarget = \"_blank\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\tasync logoutUser() {\r\n\t\t\tawait this.serverLogout();\r\n\t\t\tthis.logout();\r\n\t\t}\r\n\r\n\t\tget canOpenCaseManagement() {\r\n\t\t\treturn !!get(this.featuresList, [\"CaseManagement\"]) &&\r\n\t\t\t\t!!this.getPermissions[\"canAccessCaseManagement\"] &&\r\n\t\t\t\t!!this.isCasesLicenced;\r\n\t\t}\r\n\r\n\t\tasync toCases() {\r\n\t\t\tconst loginResult = await this.casesLogin(this.isSuiteEnabled);\r\n\t\t\tlet url = loginResult.url + (loginResult.url.endsWith(\"/\") ? \"\" : \"/\");\r\n\t\t\tif (loginResult.suiteTenantId) {\r\n\t\t\t\t// Login to Cases - this may redirect to Suite\r\n\t\t\t\twindow.open(`${url}login/VerifySuiteLogin?email=${encodeURIComponent(this.User.username)}&tenantId=${loginResult.suiteTenantId}`)\r\n\t\t\t} else {\r\n\t\t\t\twindow.open(`${url}login/withToken/${loginResult.token}`);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate get isGettingStartedModalEnabled(): boolean\r\n\t\t{\r\n\t\t\treturn this.getPermissions?.isAccountAdmin && !this.isSuiteEnabled\r\n\t\t}\r\n\r\n\t}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavMenu.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavMenu.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./NavMenu.vue?vue&type=template&id=64a69983&scoped=true\"\nimport script from \"./NavMenu.vue?vue&type=script&lang=ts\"\nexport * from \"./NavMenu.vue?vue&type=script&lang=ts\"\nimport style0 from \"./NavMenu.vue?vue&type=style&index=0&id=64a69983&prod&scoped=true&lang=scss\"\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 \"64a69983\",\n null\n \n)\n\nexport default component.exports","enum EventRecordTypes {\r\n\tAlarm=1,\r\n\tPatrolRaised=2,\r\n\tProcessingEvent=3,\r\n\tCameraEvent=4,\r\n\tAutoPatrolEvent=5,\r\n\tMultiViewEvent=6,\r\n\tRelayEvent=7,\r\n\tAudioEvent=8,\r\n\tMultiViewStopped=9,\r\n\tRelay=10,\r\n\tUserEvent=11,\r\n\tCompletionEvent=12,\r\n\tIncidentText=13,\r\n\tDataChanged=14,\r\n\tArmDisarmEvent=15,\r\n\tProcessingStartedEvent=16,\r\n\tSupplementaryData=17,\r\n\tDispatchEvent=18,\r\n\tUserLogin=19,\r\n\tUserLogout=20,\r\n\tAlarmHandlingEvent=21,\r\n\tScriptEvent=22,\r\n\tAttachedFile=23,\r\n\tOutcome=24,\r\n\tEdgeDeviceLaunched=25,\r\n\tServerArmDisarm=26,\r\n\tInputArmDisarmEvent=27,\r\n\tEventTimeOut=28,\r\n\tBookmark=29,\r\n\tAlarmRestored=30,\r\n\tEventPreserved=31,\r\n\tEventHidden=32,\r\n\tMapViewed=33,\r\n\tRaisedToRoutingGroup=34,\r\n\tSitePasswordChecked=35,\r\n\tProblemEvent=36,\r\n\tNoteEvent=37,\r\n\tPlaybackReviewEvent=38,\r\n\tRemoteDataSync=39,\r\n\tSetupEvent=40,\r\n\tNotificationEvent=41,\r\n\tFailsafeThresholdEvent=42,\r\n\tAlarmVideoViewed=43,\r\n\tAlarmMapViewed=44,\r\n\tUserUpdate=45,\r\n\tReportGenerated=46,\r\n\tClickToDialEvent=47,\r\n\tInvestigatorDispatched=48,\r\n\tInvestigatorArrived=49,\r\n\tInvestigatorLeaving=50,\r\n\tRequestControl=51,\r\n\tParkEvent=52,\r\n\tCCureLogMessage=53,\r\n\tCCureResetAction=54,\r\n\tCCureResetAllAction=55,\r\n\tTaskAdded=100,\r\n\tTaskCompleted=101,\r\n\tTaskAssigned=102,\r\n\tOperatorNote=103,\r\n\tEventShare=104,\r\n\tForceRestore=105,\r\n\tAcknowledgeAll=106,\r\n\tActivityLog=107,\r\n\tReviewedFlaggedEvent=108,\r\n\tFlaggingEventforReview=109,\r\n\tChoices=110,\r\n\tCallcontact=111,\r\n\tGuardNote=112,\r\n\tInvestigatorEnRoute=113,\r\n\tViewAdded=114,\r\n\tViewUpdated=115,\r\n\tViewDeleted=116,\r\n\tViewCellAdded=117,\r\n\tViewCellUpdated=118,\r\n\tViewCellDeleted=119,\r\n\tViewPageAdded=120,\r\n\tViewPageUpdated=121,\r\n\tViewPageDeleted=122,\r\n\tViewOpened=123,\r\n\tViewDuplicated=124,\r\n\tTours=125,\r\n\tViewSession=126,\r\n\tVideoReport=127,\r\n\tVideoReportCenterDevice=128,\r\n\tVideoReportCameraStateSuccess=129,\r\n\tVideoReportCameraStatePartial=130,\r\n\tVideoReportCameraStateNoClip=131,\r\n\tVideoReportCameraStateError=132,\r\n\tDownloadedMedia=133,\r\n\tHighPriorityAlarmSwitch=134,\r\n\tHighPriorityAlarmIgnore=135,\r\n\tThirdPartyTaskLinked=136,\r\n\tThirdPartyTaskUnlinked=137,\r\n\tSetUserGroupsToView=138,\r\n\tGuardTourWaypoint=139,\r\n\tCaseCreated=140,\r\n\tOperatorMessage=141,\r\n\tGuardMessage=142,\r\n\tChatMobileUserMessage = 143,\r\n\tChatOperatorMessage = 144,\r\n\tPeekStarted = 156,\r\n\tPeekEnded = 157,\r\n\tSnapShot = 169,\r\n\tRecordedVideoSnapShot = 170,\r\n\tAllEventActionsRemoved = 171,\r\n\tActionPlanOverride = 172\r\n}\r\n\r\nexport default EventRecordTypes;\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetMove.vue?vue&type=style&index=0&id=1121df72&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IncidentReport.vue?vue&type=style&index=0&id=0adccdc9&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RightSideBar.vue?vue&type=style&index=0&id=2ec3d519&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuditControl.vue?vue&type=style&index=0&id=43a7785d&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Permissions.vue?vue&type=style&index=0&id=4ea6f9ea&prod&scoped=true&lang=scss\"","enum MobileEventShareStates {\r\n Sent = 1,\r\n Accepted = 2,\r\n Rejected = 3,\r\n Left = 4,\r\n Removed = 5,\r\n EventEnded = 6,\r\n}\r\nexport default MobileEventShareStates;","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewActionCategory.vue?vue&type=style&index=0&id=48d6a36a&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.iconOnly)?_c('b-button',{staticClass:\"zenButton\",attrs:{\"title\":\"Help\"},on:{\"click\":function($event){return _vm.toggleHelp()}}},[_c('i',{staticClass:\"fas fa-question\"})]):(_vm.iconOnly)?_c('b-button',{staticClass:\"zenButtonMini\",attrs:{\"title\":\"Help\"},on:{\"click\":function($event){return _vm.toggleHelp()}}},[_c('i',{staticClass:\"fas fa-question fa-xs\",staticStyle:{\"float\":\"left\"}})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\timport { Component, Prop, Vue } from \"vue-property-decorator\";\n\t@Component({\n\t\t\tcomponents: {}\n\t\t})\n\texport default class ZendeskHelp extends Vue {\n\t\t@Prop({ type: Boolean, default: false }) public iconOnly: boolean;\n\n\t\tprivate toggleHelp():void {\n\t\t\tif(document.querySelector(\"#webWidget\")){\n\t\t\t\t// hide the widget\n\t\t\t\twindow.zE('webWidget', 'close');\t\n\t\t\t}\n\t\t\telse{\n\t\t\t\twindow.zE('webWidget', 'helpCenter:setSuggestions', {\n\t\t\t\t\turl: true\n\t\t\t\t});\n\t\t\t\twindow.zE(\"webWidget\", \"show\");\n\t\t\t\twindow.zE(\"webWidget\", \"open\");\n\t\t\t}\n\t\t}\n }\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ZendeskHelp.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ZendeskHelp.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ZendeskHelp.vue?vue&type=template&id=2f9b5200&scoped=true\"\nimport script from \"./ZendeskHelp.vue?vue&type=script&lang=ts\"\nexport * from \"./ZendeskHelp.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ZendeskHelp.vue?vue&type=style&index=0&id=2f9b5200&prod&scoped=true&lang=scss\"\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 \"2f9b5200\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileAssetHistory.vue?vue&type=style&index=0&id=0634d8cd&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesTableItem.vue?vue&type=style&index=0&id=423537d9&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParkedQueue.vue?vue&type=style&index=0&id=4da6b27b&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-grow-1 form-group p-0 m-0\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{attrs:{\"id\":\"ChoiceDescriptionGroup\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.choicesData.choiceDescription),expression:\"choicesData.choiceDescription\"}],class:[\n\t\t\t\t\t\t'form-control',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tinvalid:\n\t\t\t\t\t\t\t\t_vm.$v.choicesData.choiceDescription.$invalid,\n\t\t\t\t\t\t\t'error-animated':\n\t\t\t\t\t\t\t\t_vm.$v.choicesData.choiceDescription.$error\n\t\t\t\t\t\t}\n\t\t\t\t\t],attrs:{\"id\":\"questionInput\",\"type\":\"text\",\"placeholder\":\"Enter the task name\"},domProps:{\"value\":(_vm.choicesData.choiceDescription)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.choicesData, \"choiceDescription\", $event.target.value)}}}),(_vm.$v.choicesData.choiceDescription.$invalid)?_c('span',{staticClass:\"small text-danger py-1\"},[_vm._v(\"Task name required\")]):_vm._e()])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},_vm._l((_vm.choicesData.choiceOptions.length),function(index,i){return _c('div',{key:i,attrs:{\"id\":(\"questionOption\" + i)}},[_c('div',{attrs:{\"id\":\"ChoiceDescriptionGroup\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-lg\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.choicesData.choiceOptions[i]),expression:\"choicesData.choiceOptions[i]\"}],class:[\n\t\t\t\t\t\t\t\t\t'form-control',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tinvalid:\n\t\t\t\t\t\t\t\t\t\t\t_vm.$v.choicesData.choiceOptions\n\t\t\t\t\t\t\t\t\t\t\t\t.$each[i] &&\n\t\t\t\t\t\t\t\t\t\t\t_vm.$v.choicesData.choiceOptions\n\t\t\t\t\t\t\t\t\t\t\t\t.$each[i].$invalid,\n\t\t\t\t\t\t\t\t\t\t'error-animated':\n\t\t\t\t\t\t\t\t\t\t\t_vm.$v.choicesData.choiceOptions\n\t\t\t\t\t\t\t\t\t\t\t\t.$each[i] &&\n\t\t\t\t\t\t\t\t\t\t\t_vm.$v.choicesData.choiceOptions\n\t\t\t\t\t\t\t\t\t\t\t\t.$each[i].$error\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],attrs:{\"type\":\"text\",\"placeholder\":(\"Enter option \" + index)},domProps:{\"value\":(_vm.choicesData.choiceOptions[i])},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.choicesData.choiceOptions, i, $event.target.value)}}}),(\n\t\t\t\t\t\t\t\t\t_vm.$v.choicesData.choiceOptions.$each[i] &&\n\t\t\t\t\t\t\t\t\t\t_vm.$v.choicesData.choiceOptions.$each[\n\t\t\t\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t\t\t\t\t].$invalid\n\t\t\t\t\t\t\t\t)?_c('small',{staticClass:\"text-danger small form-text\"},[_vm._v(\"One or more characters are required.\")]):_vm._e()]),_c('div',{staticClass:\"col-auto px-1 py-2\"},[(i >= 2)?_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"id\":(\"removeOption\" + index)},on:{\"click\":function($event){return _vm.choicesData.choiceOptions.splice(i, 1)}}},[_c('i',{staticClass:\"fas fa-minus fa-1x text-white\"})]):_vm._e()])])])])}),0)]),_c('div',{staticClass:\"p-2\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"data-cy\":\"addChoiceOption\"},on:{\"click\":function($event){return _vm.choicesData.choiceOptions.push('')}}},[_c('i',{staticClass:\"fas fa-plus fa-1x text-white\"})]),_c('b-dropdown',{staticClass:\"mx-2\",attrs:{\"id\":\"ddlChoices\",\"boundary\":\"viewport\",\"text\":(\" \" + (_vm.choicesData.selectedChoice))}},_vm._l((this.choiceListTypes),function(choice){return _c('b-dropdown-item',{key:choice,attrs:{\"id\":(\"dropdownOptions\" + choice)},on:{\"click\":function($event){_vm.choicesData.selectedChoice = choice}}},[_vm._v(_vm._s(choice))])}),1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Watch, Vue, Emit } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport vSelect from \"vue-select\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport {\r\n\trequired,\r\n\trequiredIf,\r\n\tminLength,\r\n\tnumeric\r\n} from \"vuelidate/lib/validators\";\r\nimport { renderChoiceEnum } from \"@/models/Tasks/renderType\";\r\nimport { ActionPlanTask } from \"../../../store/tasks/types\";\r\n\r\nconst Tasks = namespace(\"tasks\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect\r\n\t},\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\tchoicesData: {\r\n\t\t\tchoiceDescription: {\r\n\t\t\t\trequired\r\n\t\t\t},\r\n\t\t\tchoiceOptions: {\r\n\t\t\t\trequired,\r\n\t\t\t\tminLength: minLength(2),\r\n\t\t\t\t$each: {\r\n\t\t\t\t\trequired\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})\r\nexport default class ChoicesTaskSetup extends Vue {\r\n\t@Prop() public value!: ActionPlanTask;\r\n\r\n\tprivate choiceListTypes: string[] = [];\r\n\r\n\tpublic choicesData: any = {\r\n\t\tchoiceDescription: \"\",\r\n\t\tchoiceOptions: [\"\", \"\"],\r\n\t\tselectedChoice: renderChoiceEnum.Listbox\r\n\t};\r\n\r\n\tpublic mounted() {\r\n\t\t// Get types from Enum and put them within choicesList string array. Couldn't directly use enum within template\r\n\t\tfor (let item in renderChoiceEnum) {\r\n\t\t\tthis.choiceListTypes.push(item);\r\n\t\t}\r\n\r\n\t\tthis.loadFromTask();\r\n\t\tthis.onValidationChange(this.$v.$invalid);\r\n\t}\r\n\r\n\t/** Watcher, when data changes within 'ChoicesData' call 'ChoicesSettingsChange'*/\r\n\t@Watch(\"choicesData\", { deep: true, immediate: true })\r\n\tpublic onChoicesSettingsChange(newValue) {\r\n\t\tthis.$v.$touch();\r\n\r\n\t\tif (!this.$v.$error) {\r\n\t\t\tthis.onInput();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Fires an input event containing the new task.\r\n\t */\r\n\t@Emit(\"input\")\r\n\tprivate onInput() {\r\n\t\treturn {\r\n\t\t\t...this.value,\r\n\t\t\ttaskText: this.choicesData.choiceDescription,\r\n\t\t\ttaskData: {\r\n\t\t\t\t...this.choicesData\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Watcher/emitter for the validation state of this component,\r\n\t * bubbles up vuelidate's validation state when it changes.\r\n\t */\r\n\t@Watch(\"$v.$invalid\")\r\n\tprivate onValidationChange($invalid: boolean) {\r\n\t\tthis.$emit(\"validate-task\", !$invalid);\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the choice data from the current task\r\n\t */\r\n\tprivate loadFromTask() {\r\n\t\tif (\r\n\t\t\tthis.value &&\r\n\t\t\tthis.value.taskData !== null &&\r\n\t\t\tthis.value.taskData !== undefined\r\n\t\t) {\r\n\t\t\tthis.choicesData = {\r\n\t\t\t\t...this.value.taskData\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChoicesTaskSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChoicesTaskSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ChoicesTaskSetup.vue?vue&type=template&id=154f1b80&scoped=true\"\nimport script from \"./ChoicesTaskSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./ChoicesTaskSetup.vue?vue&type=script&lang=ts\"\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 \"154f1b80\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingModalGroupBadge.vue?vue&type=style&index=0&id=213fa310&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventQueue.vue?vue&type=style&index=0&id=2ada4a1f&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileMap.vue?vue&type=style&index=1&id=7457f122&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventLeave.vue?vue&type=style&index=1&id=098357e8&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EnhancedMapSidebar.vue?vue&type=style&index=0&id=1894ddb6&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HealthHistory.vue?vue&type=style&index=0&id=0a9204ee&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"area-event-history-tab-content\"},[_c('div',{staticClass:\"history-filter-container\"},[_c('div',{staticClass:\"area-event-history-item\",attrs:{\"data-cy\":\"area-event-history-from-container\"}},[_c('span',{staticClass:\"label\"},[_vm._v(\"From:\")]),_c('date-picker',{attrs:{\"disabled-dates\":_vm.disabledDates,\"placeholder\":\"Date\",\"bootstrap-styling\":true,\"lang\":\"en\",\"calendar-class\":\"calendar\",\"data-cy\":\"area-event-history-from-date-picker\",\"append-to-body\":\"\"},model:{value:(_vm.newDataFilter.fromDate),callback:function ($$v) {_vm.$set(_vm.newDataFilter, \"fromDate\", $$v)},expression:\"newDataFilter.fromDate\"}})],1),_c('div',{staticClass:\"area-event-history-item\",attrs:{\"data-cy\":\"area-event-history-to-container\"}},[_c('span',{staticClass:\"label\"},[_vm._v(\"To:\")]),_c('date-picker',{attrs:{\"disabled-dates\":_vm.disabledDates,\"placeholder\":\"Date\",\"bootstrap-styling\":true,\"lang\":\"en\",\"calendar-class\":\"calendar\",\"data-cy\":\"area-event-history-to-date-picker\",\"append-to-body\":\"\"},model:{value:(_vm.newDataFilter.toDate),callback:function ($$v) {_vm.$set(_vm.newDataFilter, \"toDate\", $$v)},expression:\"newDataFilter.toDate\"}})],1),_c('div',{staticClass:\"area-event-history-item\",attrs:{\"data-cy\":\"area-event-history-type-container\"}},[_c('span',{staticClass:\"label\"},[_vm._v(\"Show:\")]),_c('v-select3',{attrs:{\"options\":_vm.eventHistoryTypeOptions,\"label\":\"eventTypeName\",\"placeholder\":\"Event Types\",\"reduce\":function (a) { return a.eventTypeId; },\"data-cy\":\"area-event-history-type-select\",\"multiple\":\"\"},model:{value:(_vm.newDataFilter.eventHistoryTypeIds),callback:function ($$v) {_vm.$set(_vm.newDataFilter, \"eventHistoryTypeIds\", $$v)},expression:\"newDataFilter.eventHistoryTypeIds\"}})],1),_c('div',{staticClass:\"area-event-history-item\",attrs:{\"data-cy\":\"area-event-history-auto-handled-container\"}},[_c('span',{staticClass:\"label\"},[_vm._v(\"Include Auto-handled:\")]),_c('b-form-checkbox',{staticClass:\"auto-handled-label\",attrs:{\"label\":\"Auto-handled\",\"id\":\"auto-handle-checkbox\",\"data-cy\":\"area-event-history-auto-handled\"},model:{value:(_vm.newDataFilter.includeAutohandled),callback:function ($$v) {_vm.$set(_vm.newDataFilter, \"includeAutohandled\", $$v)},expression:\"newDataFilter.includeAutohandled\"}})],1),_c('div',{staticClass:\"area-event-history-item\",attrs:{\"data-cy\":\"area-event-history-alarms-container\"}},[_c('span',{staticClass:\"label\"},[_vm._v(\"Alarms:\")]),_c('v-select3',{attrs:{\"options\":_vm.responsesForArea,\"label\":\"title\",\"placeholder\":\"All Alarms\",\"multiple\":\"\",\"reduce\":function (a) { return a.responseID; },\"data-cy\":\"area-event-history-alarms-select\"},on:{\"search\":_vm.handleSearchInput},model:{value:(_vm.newDataFilter.responseIds),callback:function ($$v) {_vm.$set(_vm.newDataFilter, \"responseIds\", $$v)},expression:\"newDataFilter.responseIds\"}})],1),_c('button',{staticClass:\"item btn btn-primary search-button\",attrs:{\"disabled\":!this.isFilterDataValid,\"data-cy\":\"area-event-history-search-button\"},on:{\"click\":_vm.fetchHistoryWithNewData}},[_vm._v(\"Search \")]),_c('div',{class:_vm.liveDataDivClass,on:{\"click\":_vm.toggleLiveData}},[_c('span',{staticClass:\"live-data-toggle\"},[_vm._v(_vm._s(this.liveDataStatus)+\" \"),_c('i',{class:_vm.liveDataButtonClass})])]),(!_vm.isPopoutModeEnabled)?_c('b-button',{staticClass:\"area-event-history-popout fas fa-expand\",on:{\"click\":_vm.enablePopoutMode}}):_vm._e()],1),_c('div',{staticClass:\"error-container\"},[(!_vm.isFilterDataValid)?_c('p',{staticClass:\"invalid-alert mb-0 mt-1 alert alert-danger\",attrs:{\"variant\":\"danger\",\"data-cy\":\"area-event-history-validation-message\"}},[_vm._v(_vm._s(this.validationErrorMessage))]):_vm._e()]),_c('generic-table',{staticClass:\"flex-grow-1 event-history-table\",attrs:{\"term\":'event',\"dataList\":this.mapAreaEventHistoryData,\"columns\":this.columns,\"modalItems\":this.modalItems,\"useModal\":false,\"useSlotActions\":\"\",\"totalAvailableRows\":_vm.totalRecords,\"isLoading\":_vm.isLoading,\"editPermissions\":['canEditAssetSetup'],\"hideAdd\":\"\",\"isShowSearch\":false,\"data-cy\":\"area-event-history-table\",\"tableClass\":_vm.poppedOut ? 'event-history-popout-table' : '',\"tableBodyClass\":''},on:{\"search-filter-updated\":_vm.updateData},scopedSlots:_vm._u([{key:\"eventId\",fn:function(slotProps){return [(slotProps.row.eventId)?_c('span',{staticClass:\"event-link\",attrs:{\"data-cy\":(\"area-event-history-event-\" + (slotProps.row.eventId))},on:{\"click\":function($event){return _vm.showEventReview(slotProps.row.eventId)}}},[_vm._v(\" \"+_vm._s(slotProps.row.eventId)+\" \")]):_c('span',{attrs:{\"data-cy\":\"area-event-history-event-none\"}})]}},{key:\"user\",fn:function(slotProps){return [(slotProps.row.user)?_c('div',{staticClass:\"circle small\",class:'user-' + 1,attrs:{\"title\":slotProps.row.user,\"data-cy\":(\"area-event-history-user-\" + (slotProps.row.user))}},[_vm._v(\" \"+_vm._s(slotProps.row.userInitials)+\" \")]):_c('span',{attrs:{\"data-cy\":\"area-event-history-user-none\"}})]}},{key:\"note\",fn:function(slotProps){return [_c('div',{attrs:{\"title\":slotProps.row.note}},[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(slotProps.row.note,250))+\" \")])]}},{key:\"actions\",fn:function(){return [_c('span')]},proxy:true}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport { Mixins, Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport { TimeZone, PaginatedQueryParams, PaginatedSearchQueryParams, UserPermissions } from \"@/store/types\";\r\nimport { Getter, Action, namespace } from \"vuex-class\";\r\nimport {\r\n\tAreaEventHistoryPaginatedSearchParams,\r\n\tAreaEventHistory as AreaEventHistoryType\r\n} from \"@/types/sv-data/AreaEventHistory\";\r\nimport DatePicker from \"@sureview/vuejs-datepicker\";\r\nimport vselect3 from \"vselect3\";\r\nimport GenericTable, { TableHeader } from \"../table/generic-table.vue\";\r\nimport { ModalItem } from \"../table/generic-update-modal.vue\";\r\nimport api from \"@/services/api.service\";\r\nimport { truncateString } from \"@/filters\";\r\nimport axios, { CancelTokenSource } from \"axios\";\r\nimport { debounce } from \"lodash\";\r\nimport { getDebouncePeriod } from \"@/utils/debounce-helper\";\r\nimport { Response } from \"@/store/responses/types\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst AreaEventHistoryStore = namespace(\"areaEventHistory\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"date-picker\": DatePicker,\r\n\t\t\"v-select3\": vselect3,\r\n\t\t\"generic-table\": GenericTable,\r\n\t},\r\n\tfilters: {\r\n\t\ttruncateString\r\n\t}\r\n})\r\nexport default class AreaEventHistory extends Mixins(PaginatedSearch) {\r\n\t@Getter getTimeZone: (timeZoneId: number) => TimeZone;\r\n\t@Action openEventReview: (eventId: number) => void;\r\n\r\n\t@SiteMonitor.Mutation setActivity: () => void;\r\n\t@SiteMonitor.Mutation setIncidentReportShown: (shown: boolean) => void;\r\n\r\n\t@AreaEventHistoryStore.Mutation setIsPopoutModeEnabled: (isEnabled: boolean) => void;\r\n\t@AreaEventHistoryStore.Mutation setFilter: (filter: AreaEventHistoryPaginatedSearchParams) => void;\r\n\t@AreaEventHistoryStore.Mutation setTimeZone: (timeZoneId: number) => void;\r\n\t@AreaEventHistoryStore.Mutation setTotalRecords: (totalRecords: number) => void;\r\n\t@AreaEventHistoryStore.Mutation resetState: () => void;\r\n\r\n\t@AreaEventHistoryStore.State areaEventHistory: AreaEventHistoryType[];\r\n\t@AreaEventHistoryStore.State totalRecords: number;\r\n\t@AreaEventHistoryStore.State isPopoutModeEnabled: boolean;\r\n\t@AreaEventHistoryStore.State filter: AreaEventHistoryPaginatedSearchParams;\r\n\r\n\t@AreaEventHistoryStore.Action fetchAreaEventHistory: () => Promise;\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n\t@Prop({ type: Number, required: true }) groupId: number;\r\n\t@Prop({ type: Number, required: false }) timeZoneId: number;\r\n\t@Prop({ type: Boolean, required: false }) poppedOut: boolean;\r\n\r\n private isDestroyed: boolean = false;\r\n private readonly fallbackUtcTimezoneId: number = 35;\r\n\r\n\tprivate newDataFilter: AreaEventHistoryPaginatedSearchParams = {\r\n\t\tfromDate: this.createFromDate(),\r\n\t\ttoDate: this.createToDate(),\r\n\t\tgroupId: this.groupId,\r\n\t\teventHistoryTypeIds: [1],\r\n\t\tincludeAutohandled: false,\r\n\t\tresponseIds: [],\r\n\t\tpage: 1,\r\n\t\tpageSize: 25\r\n\t};\r\n\r\n\tprivate internalFilter: AreaEventHistoryPaginatedSearchParams = {\r\n\t\t...this.newDataFilter,\r\n\t};\r\n\r\n\tprivate responsesForArea: Response[] = [];\r\n\tprivate paginationParams: PaginatedQueryParams;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate isFilterDataValid: boolean = true;\r\n\tprivate validationErrorMessage: string = \"\";\r\n\tprivate modalItems: ModalItem[] = [];\r\n\r\n\tprivate responseSearchToken: CancelTokenSource;\r\n\r\n\tprivate get disabledDates(): any {\r\n\t\tlet date = new Date();\r\n\t\tdate.setDate(date.getDate() - 31);\r\n\t\treturn { to: date };\r\n\t}\r\n\r\n\tprivate get getTimeZoneName(): string {\r\n\t\tif (this.timeZone) {\r\n\t\t\treturn this.timeZone.id;\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate handleSearchInput = debounce(async (searchTerm: string): Promise => {\r\n\t\t\tawait this.fetchResponses(searchTerm);\r\n\t\t},\r\n\t\tgetDebouncePeriod(),\r\n\t\t{ leading: false, trailing: true });\r\n\r\n\tprivate async fetchResponses(searchTerm: string): Promise {\r\n\t\tif (this.responseSearchToken) {\r\n\t\t\tthis.responseSearchToken.cancel(\"Cancel Search\");\r\n\t\t}\r\n\r\n\t\tthis.responseSearchToken = axios.CancelToken.source();\r\n\r\n\t\tif (!this.groupId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tthis.responsesForArea = await api.getAllResponsesByArea(this.groupId, searchTerm);\r\n\t\t} catch (e) {\r\n\t\t\treturn; // Return when past requests are cancelled\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get columns(): TableHeader[]\r\n\t{\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Created (Area Time)\",\r\n\t\t\t\tkey: \"createdAreaTime\",\r\n\t\t\t\torder: 1,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: this.getTimeZoneName,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tsortable: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Created (Local)\",\r\n\t\t\t\tkey: \"createdLocalTime\",\r\n\t\t\t\torder: 2,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: false,\r\n\t\t\t\tsortable: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Closed (Area Time)\",\r\n\t\t\t\tkey: \"closedAreaTime\",\r\n\t\t\t\torder: 3,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: this.getTimeZoneName,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tsortable: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Closed (Local)\",\r\n\t\t\t\tkey: \"closedLocalTime\",\r\n\t\t\t\torder: 4,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: false,\r\n\t\t\t\tsortable: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Type\",\r\n\t\t\t\tkey: \"type\",\r\n\t\t\t\torder: 5,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisTermLabel: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"User\",\r\n\t\t\t\tkey: \"user\",\r\n\t\t\t\torder: 6,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tuseCustomCell: true,\r\n\t\t\t\tisTermLabel: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Details\",\r\n\t\t\t\tkey: \"details\",\r\n\t\t\t\torder: 7,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tstyle: \"max-width:10vw!important;\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Priority\",\r\n\t\t\t\tkey: \"priority\",\r\n\t\t\t\torder: 8,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisTermLabel: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Category\",\r\n\t\t\t\tkey: \"category\",\r\n\t\t\t\torder: 9,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tstyle: \"max-width:8vw!important;\",\r\n\t\t\t\tisTermLabel: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Note\",\r\n\t\t\t\tkey: \"note\",\r\n\t\t\t\torder: 10,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tstyle: \"max-width:10vw!important;\",\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tuseCustomCell: true,\r\n\t\t\t\tisTermLabel: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Event Id\",\r\n\t\t\t\tkey: \"eventId\",\r\n\t\t\t\torder: 11,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tuseCustomCell: true,\r\n\t\t\t\tisTermLabel: true\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\tprivate timeZone: TimeZone =\r\n\t\t{\r\n\t\t\ttimeZoneID: 35,\r\n\t\t\tid: \"UTC\",\r\n\t\t\tiana: \"Etc/Utc\",\r\n\t\t\tdisplayName: \"\"\r\n\t\t};\r\n\r\n\tprivate eventHistoryTypeOptions = [\r\n\t\t{\r\n\t\t\teventTypeId: 1,\r\n\t\t\teventTypeName: \"Event\"\r\n\t\t},\r\n\t\t{\r\n\t\t\teventTypeId: 2,\r\n\t\t\teventTypeName: \"Masking\"\r\n\t\t}\r\n\t];\r\n\r\n\tprivate showLiveData: boolean = false;\r\n\tprivate liveDataTimeoutId: NodeJS.Timeout = null;\r\n\r\n\tpublic get sitRepEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"SiteMonitor\", \"SitRep\"]) && this.getPermissions.canViewSitRep;\r\n\t}\r\n\r\n\tprivate created(): void {\r\n\t\tthis.fetchTimeZone();\r\n\t}\r\n\r\n\tprivate fetchTimeZone(): void {\r\n\t\ttry {\r\n\t\t\tthis.timeZone = this.getTimeZone(this.timeZoneId ? this.timeZoneId : this.fallbackUtcTimezoneId);\r\n\t\t\tif (!this.timeZone) {\r\n\t\t\t\tthis.timeZone = this.getTimeZone(this.fallbackUtcTimezoneId);\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error(\"Failed to get timezone.\", err);\r\n\t\t\tthis.timeZone = this.getTimeZone(this.fallbackUtcTimezoneId);\r\n\t\t}\r\n\t}\r\n\r\n private async mounted(): Promise {\r\n try {\r\n\t\t\tif (!this.filter) {\r\n\r\n\t\t\t\tthis.internalFilter = {\r\n\t\t\t\t\t...this.newDataFilter\r\n\t\t\t\t};\r\n\t\t\t\tawait this.getAreaEventHistory();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.newDataFilter = {\r\n\t\t\t\t\t...this.filter,\r\n\t\t\t\t}\r\n\t\t\t}\r\n await this.fetchResponses(\"\");\r\n } catch (err) {\r\n console.error(\"Failed to load Area Event History data.\", err);\r\n }\r\n }\r\n\r\n\tprivate beforeDestroy(): void {\r\n\t\tthis.isDestroyed = true;\r\n\t\tclearTimeout(this.liveDataTimeoutId);\r\n\r\n\t\tif (!this.isPopoutModeEnabled) {\r\n\t\t\tthis.resetState();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate createToDate(): Date {\r\n\t\tvar toDate = new Date(Date.now());\r\n\t\t// Set date to 23:59:59.999 for today's date\r\n\t\ttoDate.setHours(23, 59, 59, 999);\r\n\t\treturn toDate;\r\n\t}\r\n\r\n\tprivate createFromDate(): Date {\r\n\t\tlet currentMilliseconds = Date.now();\r\n\t\t// Set date to 12:00AM, 7 days before current date/time\r\n\t\tlet fromDate = new Date(currentMilliseconds - 7 * 24 * 60 * 60 * 1000);\r\n\t\tfromDate.setHours(0, 0, 0, 0);\r\n\t\treturn fromDate;\r\n\t}\r\n\r\n\tprivate incidentReport(): void {\r\n\t\tthis.setIncidentReportShown(true);\r\n\t\tthis.setActivity();\r\n\t}\r\n\r\n\tprivate showEventReview(eventId: number): void {\r\n\t\tthis.openEventReview(eventId);\r\n\t}\r\n\r\n\t@Watch(\"timeZoneId\")\r\n\tprivate async updateRowsWithNewTimeZone(): Promise {\r\n\t\tthis.fetchTimeZone();\r\n\t}\r\n\r\n\t@Watch(\"groupId\")\r\n\tprivate async updateFilterGroupId() {\r\n\t\tthis.filter.groupId = this.groupId;\r\n\t\tthis.newDataFilter.groupId = this.groupId;\r\n\t\tawait this.getAreaEventHistory();\r\n\t\tthis.responsesForArea = await api.responsesByArea(this.groupId);\r\n\t}\r\n\r\n private async fetchHistoryWithNewData(): Promise {\r\n\t\tthis.internalFilter = { ...this.newDataFilter };\r\n await this.getAreaEventHistory();\r\n }\r\n\r\n\tprivate async getAreaEventHistory(): Promise {\r\n\t\tif (!this.showLiveData) {\r\n\t\t\tthis.isLoading = true;\r\n\t\t}\r\n\r\n try {\r\n if (this.internalFilter.groupId) {\r\n var request: AreaEventHistoryPaginatedSearchParams = {\r\n ...this.internalFilter,\r\n ...this.paginationParams\r\n }\r\n this.setFilter(request);\r\n await this.fetchAreaEventHistory();\r\n this.setTotalRecords(this.areaEventHistory.length);\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to retrieve Area Event History.\", err);\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n\tprivate get mapAreaEventHistoryData(): AreaEventHistoryType[] {\r\n\t\tlet mappedEvents: AreaEventHistoryType[] = this.areaEventHistory.map(history => {\r\n\t\t\tif (history.closed && !history.category) {\r\n history.category = \"No Category Assigned\";\r\n }\r\n\r\n\t\t\treturn ({\r\n\t\t\t\t...history,\r\n\t\t\t\tuserInitials: this.nameToInitials(history.user),\r\n\t\t\t\tcreatedAreaTime: history.groupCreated ? new Date(history.groupCreated).toLocaleString(undefined).toUpperCase() : \"\",\r\n\t\t\t\tcreatedLocalTime: history.created ? new Date(history.created).toLocaleString(undefined).toUpperCase() : \"\",\r\n\t\t\t\tclosedAreaTime: history.groupClosed? new Date(history.groupClosed).toLocaleString(undefined).toUpperCase() : \"\",\r\n\t\t\t\tclosedLocalTime: history.closed ? new Date(history.closed).toLocaleString(undefined).toUpperCase() : \"\",\r\n\t\t\t\tactions: null\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn mappedEvents;\r\n\t}\r\n\r\n\tprivate get liveDataStatus(): string {\r\n\t\treturn this.showLiveData ? \"Live Data On\" : \"Live Data Off\";\r\n\t}\r\n\r\n\tprivate get liveDataDivClass(): string {\r\n\t\treturn this.poppedOut ? \"live-data-popped-out\" : \"live-data\";\r\n\t}\r\n\r\n\tprivate get liveDataButtonClass(): string {\r\n\t\treturn this.showLiveData ? \"fas fa-toggle-on\" : \"fas fa-toggle-off\";\r\n\t}\r\n\r\n\tprivate toggleLiveData(): void {\r\n\t\tthis.showLiveData = !this.showLiveData;\r\n\t\tif (this.showLiveData) {\r\n\t\t\tthis.pollLiveData();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate enablePopoutMode(): void {\r\n\t\tthis.$bvModal.hide(\"leaveModal\");\r\n\t\tthis.setTimeZone(this.timeZoneId);\r\n\t\tthis.setIsPopoutModeEnabled(true);\r\n\t}\r\n\r\n\t@Watch(\"isDestroyed\")\r\n\tprivate async pollLiveData(): Promise {\r\n\t\tif (!this.showLiveData || this.isDestroyed) {\r\n\t\t\tclearTimeout(this.liveDataTimeoutId);\r\n\t\t} else {\r\n\t\t\tawait this.getAreaEventHistory();\r\n\t\t\tthis.liveDataTimeoutId = setTimeout(this.pollLiveData, 10000);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"newDataFilter.fromDate\")\r\n\t@Watch(\"newDataFilter.toDate\")\r\n\t@Watch(\"newDataFilter.eventHistoryTypeIds\")\r\n\tprivate validateFilterDates(): void {\r\n\t\tif (!this.newDataFilter.fromDate || !this.newDataFilter.toDate) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.sanitiseDatePickerValues();\r\n\r\n\t\tif (this.newDataFilter.eventHistoryTypeIds.length < 1) {\r\n\t\t\tthis.newDataFilter.eventHistoryTypeIds.push(1);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.newDataFilter.fromDate > this.newDataFilter.toDate) {\r\n\t\t\tthis.isFilterDataValid = false;\r\n\t\t\tthis.validationErrorMessage = \"'To' date cannot be before the 'From' date\";\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet absoluteDifference = this.newDataFilter.toDate.getTime() - this.newDataFilter.fromDate.getTime();\r\n\t\tlet differenceInDays = absoluteDifference / (1000 * 60 * 60 * 24);\r\n\t\tif (differenceInDays >= 32) {\r\n\t\t\tthis.isFilterDataValid = false;\r\n\t\t\tthis.validationErrorMessage = \"Date range cannot exceed 31 days\";\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isFilterDataValid = true;\r\n\t\tthis.validationErrorMessage = \"\";\r\n\t}\r\n\r\n\tprivate sanitiseDatePickerValues(): void {\r\n\t\ttry {\r\n\t\t\tif (typeof(this.newDataFilter.fromDate) == \"string\")\r\n\t\t\t{\r\n\t\t\t\tthis.newDataFilter.fromDate = new Date(this.newDataFilter.fromDate);\r\n\t\t\t\tif (isNaN(this.newDataFilter.fromDate.getTime())) {\r\n\t\t\t\t\tthis.newDataFilter.fromDate = this.createFromDate();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch {\r\n\t\t\tthis.newDataFilter.fromDate = this.createFromDate();\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tif (typeof(this.newDataFilter.toDate) == \"string\")\r\n\t\t\t{\r\n\t\t\t\tthis.newDataFilter.toDate = new Date(this.newDataFilter.toDate);\r\n\t\t\t\tif (isNaN(this.newDataFilter.toDate.getTime())) {\r\n\t\t\t\t\tthis.newDataFilter.toDate = this.createToDate();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch {\r\n\t\t\tthis.newDataFilter.toDate = this.createToDate();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async updateData(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\tthis.paginationParams = paginatedSearchQueryParams;\r\n\t\tawait this.getAreaEventHistory();\r\n\t}\r\n\r\n\tprivate nameToInitials(userName: string): string {\r\n\t\tif (!userName) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\tconst words = userName.split(\" \");\r\n\t\tconst initials = words.map(word => word.charAt(0).toUpperCase());\r\n\r\n return initials.join(\"\");\r\n }\r\n\r\n\tprivate get selectedEventHistoryTypes(): number[] {\r\n\t\treturn this.newDataFilter.eventHistoryTypeIds;\r\n\t}\r\n\r\n\tprivate set selectedEventHistoryTypes(types: number[]) {\r\n\t\tthis.newDataFilter.eventHistoryTypeIds = types;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaEventHistory.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaEventHistory.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaEventHistory.vue?vue&type=template&id=2332a878&scoped=true\"\nimport script from \"./AreaEventHistory.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaEventHistory.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaEventHistory.vue?vue&type=style&index=0&id=2332a878&prod&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 \"2332a878\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportFilters.vue?vue&type=style&index=0&id=b91797e2&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerSelector.vue?vue&type=style&index=0&id=1759b367&prod&lang=scss&scoped=true\"","import axios from \"axios\";\r\nimport { stringify } from \"qs\";\r\n// import store from '@/store';\r\n\r\nconst axiosInstance = axios.create({\r\n\tbaseURL: process.env.VUE_APP_HTTP_API_URI,\r\n\twithCredentials: true,\r\n\theaders: {\r\n\t\tAccept: \"application/json, text/javascript, */*; q=0.01\",\r\n\t\t\"Content-Type\": \"application/x-www-form-urlencoded\"\r\n\t}\r\n});\r\n\r\nconst axiosJsonInstance = axios.create({\r\n\tbaseURL: process.env.VUE_APP_HTTP_API_URI,\r\n\twithCredentials: true,\r\n\theaders: {\r\n\t\tAccept: \"application/json, text/javascript, */*; q=0.01\",\r\n\t\t\"Content-Type\": \"application/json\"\r\n\t}\r\n});\r\n\r\nconst axiosJsonDirectInstance = axios.create({\r\n\tbaseURL: process.env.VUE_APP_HTTP_API_URI,\r\n\twithCredentials: true,\r\n\theaders: {\r\n\t\tAccept: \"application/json, text/javascript, */*; q=0.01\",\r\n\t\t\"Content-Type\": \"application/json\",\r\n\t}\r\n});\r\n\r\n// When uploading files we must create an axios instance with no content type set,\r\n// axios will then correctly set the appropraite headers when uploading files.\r\nconst axiosNoContentTypeInstance = axios.create({\r\n\tbaseURL: process.env.VUE_APP_HTTP_API_URI,\r\n\twithCredentials: true,\r\n\theaders: {\r\n\t\tAccept: \"application/json, text/javascript, */*; q=0.01\"\r\n\t}\r\n});\r\n\r\naxiosInstance.defaults.transformRequest = function(data, headers) {\r\n\tfor (let prop in data) {\r\n\t\tif (data[prop] == null) {\r\n\t\t\tdelete data[prop];\r\n\t\t}\r\n\t}\r\n\treturn stringify(data);\r\n};\r\n\r\naxiosInstance.defaults.headers.post[\"Content-Type\"] =\r\n\t\"application/x-www-form-urlencoded\";\r\n\r\naxiosInstance.prototype.setApiBaseUrl = function(url: string) {\r\n\taxiosInstance.defaults.baseURL = url;\r\n\taxiosJsonInstance.defaults.baseURL = url;\r\n\taxiosJsonDirectInstance.defaults.baseURL = url\r\n\r\n\t// if the current url doesn't end with /api/ and isnt our local host... add api to the end.\r\n\tif (\r\n\t\t!axiosInstance.defaults.baseURL.toLowerCase().endsWith(\"/api/\") &&\r\n\t\t!axiosInstance.defaults.baseURL.toLowerCase().endsWith(\"/api\") &&\r\n\t\t!axiosInstance.defaults.baseURL.startsWith(\r\n\t\t\t\"http://local.sureviewops.com\"\r\n\t\t)\r\n\t) {\r\n\t\taxiosInstance.defaults.baseURL =\r\n\t\t\taxiosInstance.defaults.baseURL + \"/api/\";\r\n\t\taxiosJsonInstance.defaults.baseURL =\r\n\t\t\taxiosJsonInstance.defaults.baseURL + \"/api/\";\r\n\t\taxiosJsonDirectInstance.defaults.baseURL =\r\n\t\t\taxiosJsonDirectInstance.defaults.baseURL + \"/api/\";\r\n\t}\r\n\r\n\tif (\r\n\t\taxiosInstance.defaults.baseURL !==\r\n\t\taxiosInstance.prototype._originalBaseUrl\r\n\t) {\r\n\t\taxiosInstance.prototype.startHeartbeatToOriginalServer();\r\n\t}\r\n};\r\n\r\naxiosInstance.prototype._originalBaseUrl = axiosInstance.defaults.baseURL;\r\n\r\naxiosInstance.prototype.resetBackToOriginalBaseUrl = function() {\r\n\taxiosJsonInstance.defaults.baseURL =\r\n\t\taxiosInstance.prototype._originalBaseUrl;\r\n\taxiosInstance.defaults.baseURL = axiosInstance.prototype._originalBaseUrl;\r\n\taxiosJsonDirectInstance.defaults.baseURL = axiosInstance.prototype._originalBaseUrl;\r\n\r\n\taxiosInstance.prototype.stopHeartbeatToOriginalServer();\r\n};\r\n\r\naxiosInstance.prototype.heartbeatIntervalHolder = null;\r\n\r\naxiosInstance.prototype.startHeartbeatToOriginalServer = function() {\r\n\t/// begin heart beating the original data service to keep login session alive\r\n\r\n\t// if there is already a timeout running, clear it.\r\n\taxiosInstance.prototype.stopHeartbeatToOriginalServer();\r\n\r\n\t// set new timeout to hit session handler.\r\n\taxiosInstance.prototype.heartbeatIntervalHolder = setInterval(() => {\r\n\t\t// hit heartbeat action in session handler\r\n\t\taxiosInstance\r\n\t\t\t.get(\"/session/HeartbeatLoginSession\", {\r\n\t\t\t\t// set the base url to be the original one, don't change what we're currently looking at.\r\n\t\t\t\tbaseURL: axiosInstance.prototype._originalBaseUrl\r\n\t\t\t})\r\n\t\t\t.then(result => {\r\n\t\t\t\t// if the result is not a success code\r\n\t\t\t\tif (result.status !== 200) {\r\n\t\t\t\t\t// somethings gone wrong so alert (don't know if there's a better dialog to use) TODO - Revisit.\r\n\t\t\t\t\talert(\"Login session in local region has expired\");\r\n\r\n\t\t\t\t\t// stop the interval as this will keep happening.\r\n\t\t\t\t\taxiosInstance.prototype.stopHeartbeatToOriginalServer();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}, 5000);\r\n};\r\n\r\naxiosInstance.prototype.stopHeartbeatToOriginalServer = function() {\r\n\tif (axiosInstance.prototype.heartbeatIntervalHolder != null) {\r\n\t\tclearInterval(axiosInstance.prototype.heartbeatIntervalHolder);\r\n\t}\r\n};\r\n\r\nexport { axiosInstance, axiosJsonInstance, axiosJsonDirectInstance, axiosNoContentTypeInstance };\r\n","import { axiosInstance, axiosJsonInstance } from \"@/axios.instance\";\r\nimport { AxiosInstance } from \"axios\";\r\nimport AvailableTenantsResponse from \"@/types/sv-data/responses/AvailableTenantsResponse\";\r\n\r\nexport interface SupportEngagementRequest {\r\n\tstartsFrom: Date;\r\n\texpiresAt: Date;\r\n\tcomment: string;\r\n}\r\n\r\nexport interface SupportEngagementDto {\r\n\tid: number;\r\n\tgrantedByUser: string;\r\n\tstartsFrom: Date;\r\n\texpiresAt: Date;\r\n\tcomment: string;\r\n}\r\n\r\nclass SupportEngagementApi {\r\n\tprivate axios: AxiosInstance;\r\n\tprivate axiosJson: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.axios = axiosInstance;\r\n\t\tthis.axiosJson = axiosJsonInstance;\r\n\t}\r\n\r\n\tpublic async getAvailableTenants(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/SupportEngagement/AvailableTenants`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async create(supportEngagementRequest: SupportEngagementRequest): Promise {\r\n\t\tawait this.axiosJson.post(`/SupportEngagement`, supportEngagementRequest);\r\n\t}\r\n\r\n\tpublic async get(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/SupportEngagement`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async delete(id: number) {\r\n\t\tawait this.axiosJson.delete(`/SupportEngagement/${id}`);\r\n\t}\r\n\r\n\tpublic async getCurrentSupportEngagementExpiry() {\r\n\t\tconst { data } = await this.axiosJson.get(\"/SupportEngagement/CurrentSupportEngagementExpiry\");\r\n\t\treturn data;\r\n\t}\r\n\r\n}\r\n\r\nconst supportEngagementApi = new SupportEngagementApi();\r\nexport default supportEngagementApi;\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteAdminLanding.vue?vue&type=style&index=0&id=5b29d7a6&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerSetup.vue?vue&type=style&index=0&id=460ee798&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionPlansModal.vue?vue&type=style&index=0&id=a31b23bc&prod&lang=scss&scoped=true\"","import { axiosJsonInstance as axios } from \"@/axios.instance\";\r\nimport { Message } from \"@/store/guard-chat/types\";\r\n\r\nconst MESSAGES_URL = \"/Messages\";\r\nconst TWO_WAY_MESSAGES_URL = \"/Messages/TwoWay\";\r\nconst TWO_WAY_UNACKED_URL = `${TWO_WAY_MESSAGES_URL}/UnackedCount`;\r\nconst TWO_WAY_ACKNOWLEDGE_URL = `${TWO_WAY_MESSAGES_URL}/Acknowledge`;\r\n\r\ninterface CreateMessageCommand {\r\n\tmessage: string;\r\n\tmessageType: \"operator\" | \"guard\";\r\n\teventId: number;\r\n}\r\n\r\ninterface CreateTwoWayMessageCommand {\r\n\tmessage: string;\r\n\tmessageType: \"operator\" | \"mobileUser\";\r\n}\r\n\r\nconst buildUrl = (eventId: number, afterId?: number) => {\r\n\tif (afterId) {\r\n\t\treturn `${MESSAGES_URL}?eventId=${eventId}&afterId=${afterId}`;\r\n\t} else {\r\n\t\treturn `${MESSAGES_URL}?eventId=${eventId}`;\r\n\t}\r\n};\r\n\r\nconst buildTwoWayUrl = (chatUserId: number, afterId?: number) => {\r\n\tif (afterId) {\r\n\t\treturn `${TWO_WAY_MESSAGES_URL}?chatUserId=${chatUserId}&afterId=${afterId}`;\r\n\t} else {\r\n\t\treturn `${TWO_WAY_MESSAGES_URL}?chatUserId=${chatUserId}`;\r\n\t}\r\n};\r\n\r\nexport const loadMessages = async (eventId: number, afterId?: number): Promise => {\r\n\tconst url = buildUrl(eventId, afterId);\r\n\tconst { data } = await axios.get(url);\r\n\treturn data;\r\n};\r\n\r\nexport const sendMessage = async (cmd: CreateMessageCommand): Promise => {\r\n\tconst { data } = await axios.post(MESSAGES_URL, cmd);\r\n\treturn data;\r\n};\r\n\r\nexport const loadTwoWayMessages = async (chatUserId: number, afterId?: number): Promise => {\r\n\tconst url = buildTwoWayUrl(chatUserId, afterId);\r\n\tconst { data } = await axios.get(url);\r\n\treturn data;\r\n};\r\n\r\nexport const sendTwoWayMessage = async (chatUserId: number, cmd: CreateTwoWayMessageCommand): Promise => {\r\n\tconst url = buildTwoWayUrl(chatUserId);\r\n\tconst { data } = await axios.post(url, cmd);\r\n\treturn data;\r\n};\r\n\r\nexport const getTwoWayUnackedCount = async (): Promise => {\r\n\tconst { data } = await axios.get(TWO_WAY_UNACKED_URL);\r\n\treturn data;\r\n}\r\n\r\nexport const acknowledgeTwoWayOwn = async (): Promise => {\r\n\tawait axios.post(TWO_WAY_ACKNOWLEDGE_URL);\r\n}\r\n\r\nexport const acknowledgeTwoWayForUser = async (chatUserId: number): Promise => {\r\n\tconst url = `${TWO_WAY_ACKNOWLEDGE_URL}?chatUserId=${chatUserId}`;\r\n\tawait axios.post(url);\r\n}\r\n","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmDecoderTable.vue?vue&type=style&index=0&id=7437bcc7&prod&scoped=true&lang=scss\"","import { CustomFieldDto, CustomFieldTypes } from \"@/store/custom-fields/types\";\r\n\r\n// @ts-ignore\r\nimport { ModalItem } from \"@/components/table/generic-update-modal.vue\";\r\nimport IconUpload from \"@/components/IconUpload.vue\";\r\nimport CustomFieldDatePicker from \"@/components/custom-fields/CustomFieldDatePicker.vue\";\r\n\r\nexport function MapCustomFieldToModalItem(field: CustomFieldDto, modalItem: ModalItem): ModalItem {\r\n\tconst newModalItem: ModalItem = {\r\n\t\tkey: \"cf\" + field.id.toString(),\r\n\t\ttitle: field.title,\r\n\t\tdataType: CustomFieldTypes[field.customFieldTypeId.toString()].toLowerCase(),\r\n\t\tmaxLength: field.customFieldTypeId == CustomFieldTypes.Text ? 1000 :\r\n\t\t\tfield.customFieldTypeId == CustomFieldTypes.TextArea ? 10000 :\r\n\t\t\tfield.customFieldTypeId == CustomFieldTypes.Hyperlink ? 10000 : 10,\r\n\t\tmin: field.customFieldTypeId == CustomFieldTypes.Number ? -2147483647 : 10,\r\n\t\tmax: field.customFieldTypeId == CustomFieldTypes.Number ? 2147483647 : 10,\r\n\t\torder: modalItem.order + (field.order != null ? field.order : 999),\r\n\t\tplaceholder: field.placeholder ? field.placeholder : modalItem.placeholder,\r\n\t\trequired: field.required,\r\n\t\treadOnly: modalItem.readOnly\r\n\t}\r\n\r\n\tMapAdditionalCustomFieldTypesToModalItem(field.customFieldTypeId, newModalItem, field.id.toString());\r\n\r\n\treturn newModalItem\r\n}\r\n\r\nfunction MapAdditionalCustomFieldTypesToModalItem(type: number, newModalItem: ModalItem, fieldId: string): void {\r\n\tswitch (type) {\r\n\t\tcase CustomFieldTypes.Date:\r\n\t\t\tnewModalItem.dataType = \"component\";\r\n\t\t\tnewModalItem.data = CustomFieldDatePicker;\r\n\t\t\tnewModalItem.defaultValue = new Date().toISOString();\r\n\t\t\tnewModalItem.props = { type: \"date\", inputClass: \"datetime-input\" };\r\n\t\t\tbreak;\r\n\t\tcase CustomFieldTypes.Icon:\r\n\t\t\tnewModalItem.dataType = \"component\";\r\n\t\t\tnewModalItem.data = IconUpload;\r\n\t\t\tnewModalItem.props = { customFieldId: fieldId }\r\n\t\t\tbreak;\r\n\t}\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sources-container thin-scroll\"},[_c('div',{staticClass:\"card-body\"},[_c('advanced-filter',{attrs:{\"data-cy\":\"advanced-filter\"}}),(_vm.isExternalMapLayersEnabled)?_c('external-map-layer-selector',{attrs:{\"data-cy\":\"external-map-layer-selector\"}}):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"filter-container\"},[_c('div',{staticClass:\"filter-row filter-heading\"},[_c('h6',{staticClass:\"mb-0\"},[_c('img',{staticClass:\"legend-icon\",attrs:{\"alt\":\"\",\"src\":_vm.mapIconForType(_vm.mapItemsHeaderIcon)}}),_vm._v(\" Map Items \"),_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.collapseMapItems\",modifiers:{\"collapseMapItems\":true}}],staticClass:\"chevron-button\",attrs:{\"data-cy\":\"map-item-collapse-toggle\"}},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:this.showMapItems ? '' : 'closed',attrs:{\"data-cy\":\"map-item-chevron-icon\"}})])],1)]),_c('b-collapse',{staticClass:\"h-100\",attrs:{\"id\":\"collapseMapItems\",\"data-cy\":\"map-item-collapse\"},model:{value:(_vm.showMapItems),callback:function ($$v) {_vm.showMapItems=$$v},expression:\"showMapItems\"}},[_vm._l((_vm.enabledMapItemTypes),function(mapItemType){return _c('div',{key:mapItemType.title,staticClass:\"filter-row\",attrs:{\"data-cy\":\"map-filter-option\"}},[_c('b-form-checkbox',{staticClass:\"filter-checkbox\",attrs:{\"data-cy\":'filter-checkbox-'+mapItemType.title.toLowerCase()},on:{\"change\":function($event){return _vm.toggleAdvancedFilter(mapItemType)}},model:{value:(mapItemType.visible),callback:function ($$v) {_vm.$set(mapItemType, \"visible\", $$v)},expression:\"mapItemType.visible\"}}),_c('img',{staticClass:\"legend-icon\",attrs:{\"alt\":\"\",\"src\":_vm.mapIconForType(mapItemType)}}),_vm._v(\" \"+_vm._s(mapItemType.title)+\" \"),(_vm.isAlarmType(mapItemType.mapLayerItemTypeId))?_c('v-select-3',{staticClass:\"filter-advanced-dropdown\",attrs:{\"id\":\"alarm-filter\",\"options\":_vm.alarmFilterOptions,\"placeholder\":\"All\",\"appendToBody\":\"\",\"data-cy\":\"alarm-filter-select\",\"disabled\":!mapItemType.visible,\"clearable\":false},on:{\"input\":function($event){return _vm.toggleAdvancedFilter(mapItemType, true)}},model:{value:(_vm.selectedAlarmFilter),callback:function ($$v) {_vm.selectedAlarmFilter=$$v},expression:\"selectedAlarmFilter\"}}):_vm._e()],1)}),(_vm.isAreaRegionsEnabled)?_c('div',{staticClass:\"filter-row\",attrs:{\"data-cy\":\"map-filter-option\"}},[_c('b-form-checkbox',{staticClass:\"filter-checkbox\",attrs:{\"data-cy\":\"filter-checkbox\"},on:{\"change\":function($event){return _vm.toggleRegionFilter()}},model:{value:(_vm.showRegions),callback:function ($$v) {_vm.showRegions=$$v},expression:\"showRegions\"}}),_c('i',{staticClass:\"fad fa-2x fa-fw fa-hexagon\",staticStyle:{\"vertical-align\":\"middle\",\"margin-left\":\"-5px\",\"color\":\"orange\"}}),_vm._v(\" Region \")],1):_vm._e()],2),_c('div',{staticClass:\"filter-row filter-heading\"},[_c('h6',{staticClass:\"mb-0\"},[_c('img',{staticClass:\"legend-icon\",attrs:{\"alt\":\"\",\"src\":_vm.mapIconForType(this.assetHeaderIcon)}}),_vm._v(\" Users And Assets \"),_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.collapseUsersAndAssets\",modifiers:{\"collapseUsersAndAssets\":true}}],staticClass:\"chevron-button\",attrs:{\"data-cy\":\"users-assets-collapse-toggle\"}},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:this.showUsersAndAssets ? '' : 'closed',attrs:{\"data-cy\":\"users-assets-chevron-icon\"}})])],1)]),_c('b-collapse',{staticClass:\"h-100\",attrs:{\"id\":\"collapseUsersAndAssets\",\"data-cy\":\"users-assets-collapse\"},model:{value:(_vm.showUsersAndAssets),callback:function ($$v) {_vm.showUsersAndAssets=$$v},expression:\"showUsersAndAssets\"}},[_vm._l((_vm.trackedMapItemType),function(asset){return _c('div',{key:asset.title,staticClass:\"filter-row\",attrs:{\"data-cy\":\"map-filter-option-tracked-asset\"}},[_c('b-form-checkbox',{staticClass:\"filter-checkbox\",attrs:{\"data-cy\":\"filter-checkbox\"},on:{\"change\":function($event){return _vm.toggleAdvancedFilter(asset)}},model:{value:(asset.visible),callback:function ($$v) {_vm.$set(asset, \"visible\", $$v)},expression:\"asset.visible\"}}),_c('img',{staticClass:\"legend-icon\",attrs:{\"alt\":\"\",\"src\":_vm.mapIconForType(asset)}}),_vm._v(\" Tracked Asset \")],1)}),_vm._l((_vm.assetTypes),function(assetType){return _c('div',{key:assetType.assetTypeId,staticClass:\"filter-row\",attrs:{\"data-cy\":\"map-filter-option\"}},[_c('b-form-checkbox',{staticClass:\"filter-checkbox\",attrs:{\"checked\":_vm.checkAssetAvailable(assetType),\"data-cy\":\"filter-checkbox\"},on:{\"change\":function($event){return _vm.toggleAssetTypeFilter(assetType)}}}),_c('img',{staticClass:\"legend-icon\",attrs:{\"alt\":\"\",\"src\":_vm.assetIcon(assetType)}}),_vm._v(\" \"+_vm._s(assetType.title)+\" \")],1)})],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { AdvancedFilters, MapLayerItemType, MapLayerItemTypeIds } from '@/store/map-layers/types';\r\nimport { MarkerIcons, IMarker } from \"@sureview/v2-mapping-saas\";\r\nimport { getAssetIcon, getTrackedAssetIcon } from '@/assets/svgIcons';\r\nimport vselect3 from \"vselect3\";\r\nimport AssetType from '@/types/sv-data/AssetType';\r\n\r\nconst MapLayers = namespace(\"mapLayers\");\r\nconst FieldOpsStore = namespace(\"fieldOps\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vselect3,\r\n\t}\r\n})\r\nexport default class AdvancedMapFilters extends Vue {\r\n\t@MapLayers.State(\"advancedFilters\") private advancedFilters: AdvancedFilters;\r\n\t@MapLayers.State(\"mapItemIcons\") private mapIcons!: MarkerIcons;\r\n\t@MapLayers.Getter(\"getMapLayerItemTypes\") private mapItemTypes: MapLayerItemType[];\r\n\t@MapLayers.Mutation(\"setAdvancedFilters\") private setAdvancedFilters: (filters: AdvancedFilters) => void;\r\n\t@MapLayers.Mutation(\"setFilterChanged\") private setFilterChanged: (filter: number) => void;\r\n\t@MapLayers.Mutation(\"resetState\") private resetAdvancedFilters: () => void;\r\n\r\n\t@FieldOpsStore.State(\"assetTypes\") private allAssetTypes: Map;\r\n\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n\tprivate alarmFilterOptions: string[] = [\"All\", \"Active\", \"Inactive\"];\r\n\tprivate selectedAlarmFilter: string = \"All\";\r\n\tprivate showRegions: boolean = true;\r\n\r\n\tprivate showMapItems: boolean = false;\r\n\tprivate showUsersAndAssets: boolean = false;\r\n\r\n\t//Object to be passed to icon function for \"Assets\" header\r\n\tprivate assetHeaderIcon: MapLayerItemType = {\r\n\t\tmapLayerItemTypeId: MapLayerItemTypeIds.Asset,\r\n\t\ttitle: \"Asset\",\r\n\t\tgroupID: null,\r\n\t\tisAsset: true,\r\n\t\tvisible: true,\r\n\t\tany: true,\r\n\t\thideByDefault: false,\r\n\t\ticon: null\r\n\t}\r\n\r\n\t//Object to be passed to icon function for \"Map Items\" header\r\n\tprivate mapItemsHeaderIcon: MapLayerItemType = {\r\n\t\tmapLayerItemTypeId: MapLayerItemTypeIds.Camera,\r\n\t\ttitle: \"Camera\",\r\n\t\tgroupID: null,\r\n\t\tisAsset: true,\r\n\t\tvisible: true,\r\n\t\tany: true,\r\n\t\thideByDefault: false,\r\n\t\ticon: null\r\n\t}\r\n\r\n\tprivate get isAreaLocationEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Areas\", \"ShowOnMap\"]);\r\n\t}\r\n\r\n\tprivate get isAreaRegionsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Areas\", \"Regions\"]);\r\n\t}\r\n\r\n\tprivate get isTrackedAssetsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Mobile\", \"FieldOps\", \"TrackedAssets\"]);\r\n\t}\r\n\r\n\tprivate get enabledMapItemTypes(): MapLayerItemType[] {\r\n\t\tif(!this.mapItemTypes || this.mapItemTypes.length < 1){\r\n\t\t\treturn []\r\n\t\t}\r\n\r\n\t\tlet itemList = [...this.mapItemTypes];\r\n\r\n\t\titemList = itemList.filter(i => i.title != \"Asset\" && i.title != \"User\" && i.title != \"TrackedAsset\");\r\n\r\n\t\tif(!this.isAreaLocationEnabled){\r\n\t\t\titemList = itemList.filter(t => t.mapLayerItemTypeId != MapLayerItemTypeIds.Area);\r\n\t\t}\r\n\r\n\t\treturn itemList;\r\n\t}\r\n\r\n\tprivate get assetTypes(): AssetType[]\r\n\t{\r\n\t\tif(!this.allAssetTypes || this.allAssetTypes.size < 1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet assetTypeArray = Array.from(this.allAssetTypes, ([name, value]) => value);\r\n\t\treturn assetTypeArray.filter(at => at.shownOnMap);\r\n\t}\r\n\r\n\tprivate mounted(): void {\r\n\t\t//Set up the asset type list\r\n\t\tthis.setupAssetList();\r\n\t}\r\n\r\n\tprivate beforeDestroy(): void {\r\n\t\t//Reset advancedFilter state\r\n\t\tthis.resetAdvancedFilters();\r\n\t}\r\n\r\n\tprivate setupAssetList(): void {\r\n\t\tif(!this.assetTypes || this.assetTypes.length < 1){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.assetTypes.forEach(asset => {\r\n\t\t\tif(asset.shownOnMap){\r\n\t\t\t\tthis.toggleAssetTypeFilter(asset);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate advancedAlarmFilter(currentVisibility: boolean): Function | boolean {\r\n\t\t//Assigns the relevant function depending on the advanced alarm dropdown selected\r\n\t\tif(this.selectedAlarmFilter == \"Active\"){\r\n\t\t\treturn this.activeAlarm;\r\n\t\t} else if (this.selectedAlarmFilter == \"Inactive\") {\r\n\t\t\treturn this.inactiveAlarm;\r\n\t\t} else {\r\n\t\t\treturn currentVisibility;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate activeAlarm = (mapItem: IMarker) => mapItem && mapItem.state && mapItem.state.includes(\"active\");\r\n\tprivate inactiveAlarm = (mapItem: IMarker) => mapItem && mapItem.state && mapItem.state.includes(\"processing\");\r\n\r\n\tprivate toggleAdvancedFilter(mapItemType: MapLayerItemType, advanced: boolean = false): void {\r\n\t\t//configures the advancedFilters state depending on the options selected\r\n\t\tif(this.advancedFilters == null || this.advancedFilters == undefined){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet currentFilters = {...this.advancedFilters};\r\n\r\n\t\tswitch (mapItemType.mapLayerItemTypeId) {\r\n\t\t\tcase MapLayerItemTypeIds.Alarm:\r\n\t\t\t\tif(advanced){\r\n\t\t\t\t\tcurrentFilters.alarm.filterType = this.selectedAlarmFilter == \"All\" ? \"Basic\" : \"Advanced\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcurrentFilters.alarm.filterType = \"Basic\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentFilters.alarm.filterCondition = advanced ? this.advancedAlarmFilter(mapItemType.visible) : mapItemType.visible;\r\n\t\t\t\tthis.selectedAlarmFilter = !mapItemType.visible ? \"All\" : this.selectedAlarmFilter;\r\n\r\n\t\t\t\tthis.setFilterChanged(MapLayerItemTypeIds.Alarm.valueOf());\r\n\t\t\t\tthis.setAdvancedFilters(currentFilters);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MapLayerItemTypeIds.Camera:\r\n\t\t\t\tcurrentFilters.camera.filterType = advanced ? \"Advanced\" : \"Basic\";\r\n\t\t\t\tcurrentFilters.camera.filterCondition = mapItemType.visible;\r\n\r\n\t\t\t\tthis.setFilterChanged(MapLayerItemTypeIds.Camera.valueOf());\r\n\t\t\t\tthis.setAdvancedFilters(currentFilters);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MapLayerItemTypeIds.Audio:\r\n\t\t\t\tcurrentFilters.audio.filterType = advanced ? \"Advanced\" : \"Basic\";\r\n\t\t\t\tcurrentFilters.audio.filterCondition = mapItemType.visible;\r\n\r\n\t\t\t\tthis.setFilterChanged(MapLayerItemTypeIds.Audio.valueOf());\r\n\t\t\t\tthis.setAdvancedFilters(currentFilters);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MapLayerItemTypeIds.Relay:\r\n\t\t\t\tcurrentFilters.relay.filterType = advanced ? \"Advanced\" : \"Basic\";\r\n\t\t\t\tcurrentFilters.relay.filterCondition = mapItemType.visible;\r\n\r\n\t\t\t\tthis.setFilterChanged(MapLayerItemTypeIds.Relay.valueOf());\r\n\t\t\t\tthis.setAdvancedFilters(currentFilters);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MapLayerItemTypeIds.Output:\r\n\t\t\t\tcurrentFilters.output.filterType = advanced ? \"Advanced\" : \"Basic\";\r\n\t\t\t\tcurrentFilters.output.filterCondition = mapItemType.visible;\r\n\r\n\t\t\t\tthis.setFilterChanged(MapLayerItemTypeIds.Output.valueOf());\r\n\t\t\t\tthis.setAdvancedFilters(currentFilters);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MapLayerItemTypeIds.Asset:\r\n\t\t\t\tcurrentFilters.asset.filterType = advanced ? \"Advanced\" : \"Basic\";\r\n\t\t\t\tcurrentFilters.asset.filterCondition = mapItemType.visible;\r\n\r\n\t\t\t\tthis.setFilterChanged(MapLayerItemTypeIds.Asset.valueOf());\r\n\t\t\t\tthis.setAdvancedFilters(currentFilters);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MapLayerItemTypeIds.TrackedAsset:\r\n\t\t\t\tcurrentFilters.trackedAsset.filterType = advanced ? \"Advanced\" : \"Basic\";\r\n\t\t\t\tcurrentFilters.trackedAsset.filterCondition = mapItemType.visible;\r\n\r\n\t\t\t\tthis.setFilterChanged(MapLayerItemTypeIds.TrackedAsset.valueOf());\r\n\t\t\t\tthis.setAdvancedFilters(currentFilters);\r\n\t\t\t\tbreak;\r\n\t\t\tcase MapLayerItemTypeIds.Area:\r\n\t\t\t\tif (this.isAreaLocationEnabled){\r\n\t\t\t\t\tcurrentFilters.area.filterType = advanced ? \"Advanced\" : \"Basic\";\r\n\t\t\t\t\tcurrentFilters.area.filterCondition = mapItemType.visible;\r\n\r\n\t\t\t\t\tthis.setFilterChanged(MapLayerItemTypeIds.Area.valueOf());\r\n\t\t\t\t\tthis.setAdvancedFilters(currentFilters);\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate toggleAssetTypeFilter(assetMapItem: AssetType): void {\r\n\t\t//Configures the assetTypes array in the store depending on the toggled asset type\r\n\t\tif(this.advancedFilters == null || this.advancedFilters == undefined){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet currentFilters = {...this.advancedFilters};\r\n\r\n\t\tlet assetTypeExists = currentFilters.assetTypes.filter(at => at == assetMapItem.assetTypeId);\r\n\r\n\t\tif (assetTypeExists.length > 0){\r\n\t\t\tcurrentFilters.assetTypes = currentFilters.assetTypes.filter(at => at != assetMapItem.assetTypeId);\r\n\t\t} else {\r\n\t\t\tcurrentFilters.assetTypes.push(assetMapItem.assetTypeId);\r\n\t\t}\r\n\r\n\t\tthis.setFilterChanged(-1);\r\n\t\tthis.setAdvancedFilters(currentFilters);\r\n\t}\r\n\r\n\tprivate toggleRegionFilter(): void {\r\n\t\tif(this.isAreaRegionsEnabled){\r\n\t\t\tlet currentFilters = {...this.advancedFilters};\r\n\r\n\t\t\tcurrentFilters.regions.filterType = \"Basic\";\r\n\t\t\tcurrentFilters.regions.filterCondition = this.showRegions;\r\n\r\n\t\t\t//Set the filterChanged to null which tells EnhancedSingleMap that regions have been toggled, not an asset/map item type\r\n\t\t\tthis.setFilterChanged(-2);\r\n\t\t\tthis.setAdvancedFilters(currentFilters);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate assetIcon(asset: AssetType): string {\r\n\t\t//Check if the toggled asset is a user asset and assigns the relevant SVG\r\n\t\tif(asset.canBeUser){\r\n\t\t\tconst assetType = this.allAssetTypes.get(asset.assetTypeId.toString());\r\n\t\t\tconst iconColor = asset.iconColor ? asset.iconColor : (assetType ? assetType.iconColor : \"#000000\");\r\n\t\t\treturn getAssetIcon(iconColor, false, false);\r\n\t\t} else {\r\n\t\t\treturn getAssetIcon(asset.iconColor, true, false);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate mapIconForType(mapItemType: MapLayerItemType, iconColor: string = \"black\"): string {\r\n\t\tif (mapItemType.title === \"Asset\") {\r\n\t\t\treturn getAssetIcon(iconColor, true, false, false);\r\n\t\t}\r\n\r\n\t\tif (mapItemType.title === \"TrackedAsset\") {\r\n\t\t\treturn getTrackedAssetIcon();\r\n\t\t}\r\n\r\n\t\tif (mapItemType.mapLayerItemTypeId === MapLayerItemTypeIds.User) {\r\n\t\t\treturn getAssetIcon(iconColor, false, false, false);\r\n\t\t}\r\n\r\n\t\treturn this.mapIcons[mapItemType.mapLayerItemTypeId];\r\n\t}\r\n\r\n\tprivate checkAssetAvailable(asset: AssetType): boolean {\r\n\t\t//Assigns the checkbox state of assets depending on the assetType array in the store\r\n\t\tlet assetTypeToggled = this.advancedFilters.assetTypes.filter(at => at == asset.assetTypeId);\r\n\r\n\t\tif(assetTypeToggled.length > 0){\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate isAlarmType(mapItemTypeId: number): boolean {\r\n\t\treturn mapItemTypeId == MapLayerItemTypeIds.Alarm;\r\n\t}\r\n\r\n\tprivate get trackedMapItemType(): MapLayerItemType[] {\r\n\t\tif(this.isTrackedAssetsEnabled){\r\n\t\t\treturn this.mapItemTypes.filter(t => t.mapLayerItemTypeId == MapLayerItemTypeIds.TrackedAsset);\r\n\t\t} else {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdvancedMapFilters.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdvancedMapFilters.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AdvancedMapFilters.vue?vue&type=template&id=29f8ad88&scoped=true\"\nimport script from \"./AdvancedMapFilters.vue?vue&type=script&lang=ts\"\nexport * from \"./AdvancedMapFilters.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AdvancedMapFilters.vue?vue&type=style&index=0&id=29f8ad88&prod&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 \"29f8ad88\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isExternalMapLayersEnabled)?_c('div',{staticClass:\"filter-container\",attrs:{\"data-cy\":\"external-map-layer-selector-container\"}},[_c('div',{staticClass:\"filter-row filter-heading\"},[_c('h6',{staticClass:\"mb-0\"},[_c('i',{staticClass:\"fas fa-layer-group fa-2x m-r-10\"}),_vm._v(\" External Layers \"),_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.collapseExternalLayers\",modifiers:{\"collapseExternalLayers\":true}}],staticClass:\"chevron-button\"},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:this.showExternalLayers ? '' : 'closed'})])],1)]),_c('b-collapse',{staticClass:\"h-100\",attrs:{\"id\":\"collapseExternalLayers\"},model:{value:(_vm.showExternalLayers),callback:function ($$v) {_vm.showExternalLayers=$$v},expression:\"showExternalLayers\"}},_vm._l((_vm.layers),function(layer){return _c('div',{key:layer.externalMapLayerID,staticClass:\"filter-row\",attrs:{\"data-cy\":\"external-map-layer-filter-option\"}},[_c('b-form-checkbox',{staticClass:\"filter-checkbox\",attrs:{\"checked\":layer.displaying,\"data-cy\":\"external-map-layer-filter-checkbox\"},on:{\"change\":function($event){return _vm.toggleLayerDisplay(layer)}}}),_vm._v(\" \"+_vm._s(layer.title)+\" \")],1)}),0)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { ExternalMapLayer } from \"@/store/external-map-layers/types\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\n\r\nconst ExternalMapLayerStore = namespace(\"externalMapLayers\");\r\n\r\n@Component({})\r\nexport default class ExternalMapLayerSelector extends Vue {\r\n\r\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@ExternalMapLayerStore.State(\"externalMapLayers\") layers: ExternalMapLayer[];\r\n\t@ExternalMapLayerStore.Action loadExternalMapLayers: () => Promise;\r\n\t@ExternalMapLayerStore.Action updateExternalMapLayerVisibility: (externalMapLayer: ExternalMapLayer) => Promise;\r\n\r\n\tprivate showExternalLayers: boolean = false;\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tif (this.isExternalMapLayersEnabled) {\r\n\t\t\tawait this.loadExternalMapLayers();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isExternalMapLayersEnabled(): boolean {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"ExternalMapLayers\"]) &&\r\n\t\t\t(this.permissions.canViewExternalMapLayers || this.permissions.canEditExternalMapLayers)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate async toggleLayerDisplay(mapLayer: ExternalMapLayer): Promise {\r\n\t\tawait this.updateExternalMapLayerVisibility(mapLayer);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerSelector.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ExternalMapLayerSelector.vue?vue&type=template&id=1759b367&scoped=true\"\nimport script from \"./ExternalMapLayerSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./ExternalMapLayerSelector.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ExternalMapLayerSelector.vue?vue&type=style&index=0&id=1759b367&prod&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 \"1759b367\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport AdvancedMapFilters from \"./AdvancedMapFilters.vue\";\r\nimport ExternalMapLayerSelector from \"@/components/external-map-layer/ExternalMapLayerSelector.vue\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"advanced-filter\": AdvancedMapFilters,\r\n\t\t\"external-map-layer-selector\" : ExternalMapLayerSelector\r\n\t}\r\n})\r\nexport default class MapDataSources extends Vue {\r\n\r\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\tprivate get isExternalMapLayersEnabled(): boolean {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"ExternalMapLayers\"]) &&\r\n\t\t\t(this.permissions.canViewExternalMapLayers || this.permissions.canEditExternalMapLayers)\r\n\t\t);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapDataSources.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapDataSources.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MapDataSources.vue?vue&type=template&id=6ec580ab&scoped=true\"\nimport script from \"./MapDataSources.vue?vue&type=script&lang=ts\"\nexport * from \"./MapDataSources.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MapDataSources.vue?vue&type=style&index=0&id=6ec580ab&prod&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 \"6ec580ab\",\n null\n \n)\n\nexport default component.exports","import { ICamera } from \"@/store/views/types\";\r\nimport { AlarmQueueFilterID, AlarmQueueFilter } from \"@/store/eventqueue/types\";\r\n\r\nimport {\r\n\tILatLng\r\n} from \"@sureview/v2-mapping-saas\";\r\nimport { AssetMapLayerItem } from \"@/components/mobile-assets/types\";\r\nimport AssetType from \"@/types/sv-data/AssetType\";\r\nimport MapLabel from \"@/scripts/mapping/mapLabel\";\r\n\r\nexport interface Mobile {\r\n\tisRightSideBarOpen: boolean;\r\n\tisLeftSideBarOpen: boolean;\r\n\tshowDirections: boolean;\r\n\tDeviceLocation: any;\r\n\tIsWatchingLocation: boolean;\r\n\tAuditEndpoint: string;\r\n\tMobileFeatures: MobileFeatures;\r\n\tUnavailableStatuses: UnavailableStatus[];\r\n\tLiveDevice: ICamera;\r\n\tMobileMode: string;\r\n\tMapEnabled: boolean;\r\n\tStarredDevices: StarredDevice[];\r\n\tUserPermissions: { [permission: string]: number };\r\n\tNotificationText: string;\r\n\tManageDataLoading: boolean;\r\n\tManageAlarmQueueFilters: AlarmQueueFilter[];\r\n\tManageCurrentAlarmQueueFilters: AlarmQueueFilter[];\r\n\tMapGoto: (latLng: ILatLng) => void;\r\n\tQuickCloseList: QuickClose[];\r\n\tUserMapOnlineStatus: boolean,\r\n\tUserAssetMapItem: AssetMapLayerItem,\r\n\tUserAssetType: AssetType,\r\n\tEventShareItems: MobileEventShareInfo[],\r\n\tActiveEventShareItem: MobileEventShareInfo,\r\n\tFocusedEventID: number,\r\n\tNavigationMode: string,\r\n\tNavigateToActiveAlarm: boolean,\r\n\tNavigationLocation: ILatLng,\r\n\tChatOpen: boolean,\r\n\tChatTab: string,\r\n\tRegions: Map\r\n}\r\n\r\nexport interface MobileEventShareInfo {\r\n\teventID: number;\r\n assetId: number;\r\n eventAreaTitle: string,\r\n areaGroupID: number,\r\n eventDescription: string,\r\n eventLocation: string,\r\n\tlatLng?: ILatLng,\r\n\teventAddress: string,\r\n created: Date,\r\n lastUpdated: Date,\r\n state: number,\r\n\tpriority?: number\r\n}\r\n\r\nexport interface UserAssetStatus {\r\n\tassetId: number,\r\n\tstatus: string,\r\n\tstatusNote: string\r\n}\r\n\r\nexport interface MobileFeatures {\r\n\tisManualRaiseEnabled: boolean;\r\n\tisSOSEnabled: boolean;\r\n\tisLostModeEnabled: boolean;\r\n\tisBreakCoverEnabled: boolean;\r\n\tisClaimedEnabled: boolean;\r\n\tisFileUploadEnabled: boolean;\r\n}\r\n\r\nexport interface UnavailableStatus {\r\n\tstatusID: number;\r\n\tname: string;\r\n}\r\n\r\nexport interface StarredDevice {\r\n\tdeviceID: number;\r\n\ttitle: string;\r\n\tarea: string;\r\n}\r\n\r\nexport interface SVLocation {\r\n\tlat: number;\r\n\tlng: number;\r\n}\r\n\r\nexport interface QuickClose {\r\n\teventOutcomeID: number;\r\n\ttitle: string;\r\n\tisMobileClose: boolean;\r\n\tgroupID: number;\r\n}\r\n\r\nexport enum DeviceType {\r\n\tUnknown = 0,\r\n\tLegacyiOS = 1,\r\n\tLegacyAndroid = 2,\r\n\tCCiOS = 3,\r\n\tCCAndroid = 4,\r\n}\r\nexport interface TrackingToggle {\r\n\ttoggle: string;\r\n}\r\nexport interface ScanType {\r\n\ttype: string;\r\n}\r\nexport interface WebAppInterface {\r\n\t// IMPORTANT: Android WebAppInterfaces can only take primitive types as a parameter\r\n\ttrackingRequest(trackingToggle: string) : any;\r\n\tscanRequest(type: string) : any;\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"loginBackground\"}},[_c('div',{staticClass:\"container\",staticStyle:{\"z-index\":\"10\"}},[_c('div',{staticClass:\"row justify-content-center align-items-center\"},[_c('div',[_c('img',{staticClass:\"logo mb-4\",attrs:{\"alt\":\"SureView Operations Logo\",\"src\":\"images/branding/sureview_logo.png\"}}),_c('br'),_c('div',{staticClass:\"card mb-3 border-0 bg-transparent shadow-none\"},[(!_vm.isSamlAuthEnabled)?_c('div',{staticClass:\"card-body\"},[(_vm.$route.query.hasSetPassword)?_c('div',{staticClass:\"alert alert-success\",attrs:{\"data-cy\":\"password-set-message\"}},[_vm._v(\" Password has been set, please login using your new password. \")]):_vm._e(),(_vm.$route.query.hasSessionExpired && _vm.authenticationState === _vm.AuthenticationStatus.None)?_c('b-alert',{ref:\"session-expired-alert\",attrs:{\"variant\":\"danger\",\"dismissible\":\"\"},on:{\"dismissed\":function($event){_vm.isAudioAlertActive = false}}},[(_vm.isAudioAlertActive)?_c('i',{staticClass:\"fa fa-volume-up\",attrs:{\"data-cy\":\"session-expired-audio-icon\"}}):_vm._e(),_vm._v(\" Your login session has expired. \")]):_vm._e(),(_vm.authenticationState !== _vm.AuthenticationStatus.ConfigureMfa)?_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.login($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],staticClass:\"form-control\",attrs:{\"id\":\"username\",\"name\":\"username\",\"type\":\"email\",\"autocomplete\":\"username\",\"spellcheck\":\"false\",\"placeholder\":\"Email\"},domProps:{\"value\":(_vm.user)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}})]),_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],staticClass:\"form-control\",attrs:{\"id\":\"password\",\"name\":\"password\",\"type\":\"password\",\"autocomplete\":\"current-password\",\"spellcheck\":\"false\",\"placeholder\":\"Password\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.authCode),expression:\"authCode\"}],staticClass:\"form-control mb-1\",attrs:{\"id\":\"authCode\",\"type\":\"text\",\"autocomplete\":\"off\",\"placeholder\":\"Authentication Code\"},domProps:{\"value\":(_vm.authCode)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.authCode=$event.target.value}}}),_c('i',{staticClass:\"fa fa-info-circle pr-1\",staticStyle:{\"color\":\"#fff\"},attrs:{\"title\":\"Required for accounts secured with MFA.\"}}),_c('label',{staticStyle:{\"color\":\"#aeaeae\"},attrs:{\"for\":\"authCode\"}},[_vm._v(\"Required for accounts secured with MFA.\")])]),(_vm.error.length)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"id\":\"divError\"}},[_vm._v(_vm._s(_vm.error))]):_vm._e(),_c('button',{staticClass:\"btn btn-primary login\",attrs:{\"id\":\"login\",\"type\":\"submit\",\"disabled\":_vm.loggingIn || !_vm.user || !_vm.password},on:{\"click\":function($event){return _vm.login()}}},[(!_vm.loggingIn)?_c('span',[_vm._v(\"Login\")]):_vm._e(),(_vm.loggingIn)?_c('span',[_vm._v(\"Logging you in ...\")]):_vm._e(),(_vm.loggingIn)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]),_c('small',{staticClass:\"pt-1 font-italic d-block\",attrs:{\"data-cy\":\"login-small-eula\"}},[_vm._v(\" By logging in, you agree to the terms in our \"),_c('b-link',{attrs:{\"href\":\"https://sureviewsystems.com/eula\"}},[_vm._v(\"EULA\")])],1),_c('a',{staticClass:\"btn btn-link create-account\",attrs:{\"href\":\"#\",\"title\":\"Reset password\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$router.push('resetPassword')}}},[_vm._v(\"Forgot your password?\")])]):_vm._e(),(_vm.authenticationState === _vm.AuthenticationStatus.ConfigureMfa)?_c('mfa',{attrs:{\"id\":\"Auth\",\"username\":_vm.user,\"pass\":_vm.password},on:{\"mfa-set\":function($event){return _vm.mfaSet()},\"cancel\":function($event){_vm.authenticationState = _vm.AuthenticationStatus.None}}}):_vm._e()],1):_vm._e(),(_vm.isSamlAuthEnabled && _vm.step === _vm.steps.Email)?_c('div',{staticClass:\"card-body\"},[(_vm.$route.query.hasSetPassword)?_c('div',{staticClass:\"alert alert-success\",attrs:{\"data-cy\":\"password-set-message\"}},[_vm._v(\" Password has been set, please login using your new password. \")]):_vm._e(),_c('b-alert',{ref:\"session-expired-alert\",attrs:{\"variant\":\"danger\",\"show\":_vm.$route.query.hasSessionExpired && _vm.authenticationState === _vm.AuthenticationStatus.None,\"dismissible\":\"\"},on:{\"dismissed\":function($event){_vm.isAudioAlertActive = false}}},[(_vm.isAudioAlertActive)?_c('i',{staticClass:\"fa fa-volume-up\",attrs:{\"data-cy\":\"session-expired-audio-icon\"}}):_vm._e(),_vm._v(\" Your login session has expired. \")]),(_vm.authenticationState !== _vm.AuthenticationStatus.ConfigureMfa)?_c('div',[_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],staticClass:\"form-control\",attrs:{\"id\":\"username\",\"name\":\"username\",\"type\":\"email\",\"autocomplete\":\"username\",\"spellcheck\":\"false\",\"placeholder\":\"Email\"},domProps:{\"value\":(_vm.user)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}}),_c('input',{staticClass:\"hidden-input\",attrs:{\"type\":\"password\",\"name\":\"hiddenPassword\",\"tabindex\":\"-1\",\"aria-hidden\":\"true\",\"spellcheck\":\"false\"}})]),(_vm.error.length)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"id\":\"divError\"}},[_vm._v(_vm._s(_vm.error))]):_vm._e(),_c('button',{staticClass:\"btn btn-primary login\",attrs:{\"id\":\"next\",\"type\":\"submit\",\"disabled\":_vm.loggingIn || !_vm.user},on:{\"click\":function($event){return _vm.next()}}},[(!_vm.loggingIn && _vm.step === _vm.steps.Email)?_c('span',[_vm._v(\"Next\")]):_vm._e(),(_vm.loggingIn)?_c('span',[_vm._v(\"Processing ...\")]):_vm._e(),(_vm.loggingIn)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]),_c('small',{staticClass:\"pt-1 font-italic d-block\",attrs:{\"data-cy\":\"login-small-eula\"}},[_vm._v(\" By logging in, you agree to the terms in our \"),_c('b-link',{attrs:{\"href\":\"https://sureviewsystems.com/eula\"}},[_vm._v(\"EULA\")])],1),_c('a',{staticClass:\"btn btn-link create-account\",attrs:{\"href\":\"#\",\"title\":\"Reset password\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$router.push('resetPassword')}}},[_vm._v(\"Forgot your password?\")])]):_vm._e()],1):_vm._e(),(_vm.isSamlAuthEnabled && _vm.step === _vm.steps.SAML)?_c('div',{staticClass:\"card-body\"},[(_vm.authenticationState !== _vm.AuthenticationStatus.ConfigureMfa)?_c('div',[_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.user),expression:\"user\"}],staticClass:\"form-control\",attrs:{\"id\":\"username\",\"name\":\"username\",\"type\":\"email\",\"autocomplete\":\"username\",\"spellcheck\":\"false\",\"placeholder\":\"Email\",\"disabled\":\"disabled\"},domProps:{\"value\":(_vm.user)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.user=$event.target.value}}}),_c('input',{staticClass:\"hidden-input\",attrs:{\"type\":\"password\",\"name\":\"hiddenPassword\",\"tabindex\":\"-1\",\"aria-hidden\":\"true\",\"spellcheck\":\"false\"}})]),(_vm.error.length)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"id\":\"divError\"}},[_vm._v(_vm._s(_vm.error))]):_vm._e(),_c('button',{staticClass:\"btn btn-primary login\",attrs:{\"id\":\"next\",\"type\":\"submit\",\"disabled\":_vm.loggingIn || !_vm.user},on:{\"click\":function($event){return _vm.next(true)}}},[(!_vm.loggingIn)?_c('span',[_vm._v(\"Login with SSO\")]):_vm._e(),(_vm.loggingIn)?_c('span',[_vm._v(\"Processing ...\")]):_vm._e(),(_vm.loggingIn)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]),_c('a',{staticClass:\"btn btn-link create-account\",attrs:{\"href\":\"#\",\"title\":\"Login with Sureview\"},on:{\"click\":function($event){return _vm.toPasswordStep()}}},[_vm._v(\"Login with Sureview\")]),_c('br'),_c('a',{staticClass:\"btn btn-link create-account\",attrs:{\"id\":\"backToEmail\",\"href\":\"#\",\"title\":\"Go back to email\"},on:{\"click\":function($event){$event.preventDefault();return _vm.back()}}},[_vm._v(\"Back to email\")])]):_vm._e()]):_vm._e(),(_vm.isSamlAuthEnabled && _vm.step === _vm.steps.Password)?_c('div',{staticClass:\"card-body\"},[(_vm.authenticationState !== _vm.AuthenticationStatus.ConfigureMfa)?_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.login($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('input',{staticClass:\"form-control\",attrs:{\"id\":\"username\",\"name\":\"username\",\"type\":\"email\",\"placeholder\":\"Email\",\"disabled\":\"disabled\"},domProps:{\"value\":_vm.user}})]),_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],staticClass:\"form-control\",attrs:{\"id\":\"password\",\"name\":\"password\",\"type\":\"password\",\"autocomplete\":\"current-password\",\"spellcheck\":\"false\",\"placeholder\":\"Password\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}})]),(_vm.IsMFAEnabled)?_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.authCode),expression:\"authCode\"}],staticClass:\"form-control mb-1\",attrs:{\"id\":\"authCode\",\"type\":\"text\",\"autocomplete\":\"off\",\"placeholder\":\"Authentication Code\"},domProps:{\"value\":(_vm.authCode)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.authCode=$event.target.value}}})]):_vm._e(),(_vm.error.length)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"id\":\"divError\"}},[_vm._v(_vm._s(_vm.error))]):_vm._e(),_c('button',{staticClass:\"btn btn-primary login\",attrs:{\"id\":\"login\",\"type\":\"submit\",\"disabled\":_vm.loggingIn || !_vm.user || !_vm.password},on:{\"click\":function($event){return _vm.login()}}},[(!_vm.loggingIn)?_c('span',[_vm._v(\"Login\")]):_vm._e(),(_vm.loggingIn)?_c('span',[_vm._v(\"Logging you in ...\")]):_vm._e(),(_vm.loggingIn)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]),_c('a',{staticClass:\"btn btn-link create-account\",attrs:{\"id\":\"back\",\"href\":\"#\",\"title\":\"Go back to email\"},on:{\"click\":function($event){$event.preventDefault();return _vm.back()}}},[_vm._v(\"Back to email\")])]):_vm._e(),(_vm.authenticationState === _vm.AuthenticationStatus.ConfigureMfa)?_c('mfa',{attrs:{\"id\":\"Auth\",\"username\":_vm.user,\"pass\":_vm.password},on:{\"mfa-set\":function($event){return _vm.mfaSet()},\"cancel\":function($event){_vm.authenticationState = _vm.AuthenticationStatus.None}}}):_vm._e()],1):_vm._e()])])])]),_c('div',{staticClass:\"version-label\"},[_vm._v(\"v\"+_vm._s(_vm.webVersion))]),_c('img',{staticClass:\"background-branding d-none d-xl-block d-lg-block d-md-block\",attrs:{\"alt\":\"\",\"src\":\"images/branding/background_logo.png\"}}),(_vm.isAudioAlertActive)?_c('audio',{attrs:{\"id\":\"sessionExpiredAlert\"}},[_c('source',{attrs:{\"src\":\"media/ping.mp3\"}})]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Vue, Component } from \"vue-property-decorator\";\r\nimport { DeviceType } from \"@/store/mobile/types\";\r\n@Component({})\r\nexport default class MobileMixin extends Vue {\r\n\tpublic isLoadedInApp() {\r\n\t\tvar mobileDevice = this.isiOS() || this.isAndroid();\r\n\t\treturn mobileDevice;\r\n\t}\r\n\tpublic isiOS() {\r\n\t\tvar iOS = window.notificationSettings?.DeviceType === DeviceType.CCiOS;\r\n\t\treturn iOS;\r\n\t}\r\n\tpublic isAndroid() {\r\n\t\tvar android = window.notificationSettings?.DeviceType === DeviceType.CCAndroid;\r\n\t\treturn android;\r\n\t}\r\n}\r\n","\r\nimport { Component, Mixins, Watch } from \"vue-property-decorator\";\r\nimport { Action, Getter, State, namespace } from \"vuex-class\";\r\nimport { AuthenticationStatus, FeaturesList, LoginResult, User } from \"@/store/types\";\r\nimport MFA from \"./MFA.vue\";\r\nimport axios from \"axios\";\r\nimport api from \"@/services/api.service\";\r\nimport MobileMixin from \"@/mixins/MobileMixin\";\r\n\r\nconst UserContext = namespace(\"userContext\");\r\n\r\nexport enum LoginSteps {\r\n\tEmail = 0,\r\n\tPassword = 1,\r\n\tSAML = 2,\r\n}\r\n\r\n@Component({\r\n\tcomponents: { \"mfa\" : MFA },\r\n\tdata() { return { AuthenticationStatus } },\r\n})\r\nexport default class Login extends Mixins(MobileMixin) {\r\n\tpublic readonly steps = LoginSteps;\r\n\tpublic readonly isSamlAuthEnabled: boolean = process.env.VUE_APP_AUTHENTICATION_SAML_ENABLED === \"true\";\r\n\r\n\tpublic user: string = \"\";\r\n\tpublic password: string = \"\";\r\n\tpublic loggingIn: boolean = false;\r\n\tpublic error: string = \"\";\r\n\tpublic redirectPath: string = \"\";\r\n\tpublic authenticationState: AuthenticationStatus = AuthenticationStatus.None;\r\n\tpublic authCode: string = \"\";\r\n\r\n\tpublic step: LoginSteps = this.steps.Email;\r\n\tprivate IsMFAEnabled: boolean = false;\r\n\tprivate isAudioAlertActive: boolean = false;\r\n\tprivate audioAlertInterval;\r\n\r\n\tprivate axiosInstance;\r\n\r\n\t@Action(\"login\") private loginUser: (LoginRequest) => Promise;\r\n\t@Action serverLogout: any;\r\n\t@Action logout: () => void;\r\n\t@State private User: User;\r\n\r\n\t@Getter(\"getVersion\") private webVersion;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Action startApiHeartbeat: any;\r\n\t@UserContext.Action(\"fetchOverview\") fetchOverviewUserContext: () => Promise;\r\n\t@Getter getUserEmail: string;\r\n\t@Getter (\"getIsOnPrem\") private isOnPrem: boolean;\r\n\t@Getter(\"getRequiresConfiguration\") private requiresConfiguration: boolean;\r\n\t@Action fetchAppOptions: () => Promise;\r\n\t@Action fetchRequiresConfig: () => Promise;\r\n\r\n\t@Action getElevationLabels: () => Promise;\r\n\r\n\tprivate async beforeCreate(): Promise {\r\n\r\n\t\t// We create a new axios instance here so we can bi-pass the interceptors.\r\n\t\t// Otherwise when viewing the login page an error would be displayed information the user that their session has expired.\r\n\t\tthis.axiosInstance = axios.create({\r\n\t\t\tbaseURL: process.env.VUE_APP_HTTP_API_URI,\r\n\t\t\twithCredentials: true,\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: \"application/json, text/javascript, */*; q=0.01\",\r\n\t\t\t\t\"Content-Type\": \"application/x-www-form-urlencoded\"\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\ttry {\r\n\t\t\tlet result = await this.axiosInstance.get(\"/session/HeartbeatLoginSession\");\r\n\t\t\tif (result.status === 200) {\r\n\t\t\t\tthis.authenticationState = AuthenticationStatus.Success;\r\n\t\t\t\tthis.$router.push(\"event-queue\");\r\n\t\t\t}\r\n\t\t} catch (ex) {\r\n\t\t\tif (ex.response.status !== 401) {\r\n\t\t\t\tconsole.log(ex);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async created() {\r\n\t\t// display error on ui and remove error param from query string\r\n\t\tif (this.$route.query.error) {\r\n\t\t\tthis.error = this.$route.query.error.toString();\r\n\t\t\tthis.removeQueryParam(\"error\");\r\n\t\t}\r\n\r\n\t\tconst username = this.$route.query.user as string;\r\n\t\tif(username)\r\n\t\t{\r\n\t\t\tif(username.toLowerCase() === this.getUserEmail?.toLowerCase()){\r\n\t\t\t\tthis.$router.push(\"event-queue\");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.user = decodeURI(username);\r\n\t\t\t\tawait this.suiteLogin(this.user);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.isOnPrem == null)\r\n\t\t{\r\n\t\t\tawait this.fetchAppOptions();\r\n\r\n\t\t\tif(this.isOnPrem)\r\n\t\t\t{\r\n\t\t\t\tawait this.fetchRequiresConfig();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.redirectIfRequiresConfiguration();\r\n\t}\r\n\r\n\tprivate mounted(): void {\r\n\t\tthis.playSessionExpiryAudioAlertIfEnabled();\r\n\t}\r\n\r\n\tprivate playSessionExpiryAudioAlertIfEnabled(): void {\r\n\t\tconst sessionExpiredValue = this.$route.query.hasSessionExpired;\r\n\t\tconst playAudioAlertValue = this.$route.query.playAudioAlert;\r\n\t\tthis.isAudioAlertActive = sessionExpiredValue && sessionExpiredValue === \"true\" && playAudioAlertValue && playAudioAlertValue === \"true\";\r\n\t\tif (this.isAudioAlertActive) {\r\n\t\t\tthis.audioAlertInterval = setInterval(() => {\r\n\t\t\t\tconst audio = document.getElementById(\"sessionExpiredAlert\");\r\n\t\t\t\taudio && (audio as HTMLAudioElement).play();\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate destroyed() {\r\n\t\tclearInterval(this.audioAlertInterval);\r\n\t}\r\n\r\n\tprivate async suiteLogin(user: string): Promise {\r\n\t\tthis.loggingIn = true;\r\n\t\tlet generateSaml = await api.suiteSamlGenerate(user, this.isLoadedInApp());\r\n\t\ttry\r\n\t\t{\r\n\t\t\tconst suiteEndpoint = generateSaml.data.authorizationEndpoint;\r\n\t\t\tif (suiteEndpoint)\r\n\t\t\t{\r\n\t\t\t\tthis.checkIfRedirect();\r\n\t\t\t\twindow.location.href=suiteEndpoint;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tthis.loggingIn = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch\r\n\t\t{\r\n\t\t\tthis.error = \"Unknown error occurred\"\r\n\t\t\tthis.loggingIn = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async login() {\r\n\t\tthis.loggingIn = true;\r\n\r\n\t\tif (this.isAudioAlertActive) {\r\n\t\t\tthis.isAudioAlertActive = false;\r\n\t\t\tclearInterval(this.audioAlertInterval);\r\n\t\t}\r\n\r\n\t\t// Save our redirect path once we've successfully logged in\r\n\t\tif (this.$route.query.redirect && this.$route.query.redirect !== \"\") {\r\n\t\t\tthis.redirectPath = this.$route.query.redirect.toString();\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tlet loginResult: LoginResult = await this.loginUser({\r\n\t\t\t\tusername: this.user,\r\n\t\t\t\tpassword: this.password,\r\n\t\t\t\tauthCode: this.authCode\r\n\t\t\t});\r\n\r\n\t\t\tlet redirectPath = \"event-queue\";\r\n\r\n\t\t\tswitch (loginResult.authenticationStatus) {\r\n\t\t\t\tcase AuthenticationStatus.Success:\r\n\t\t\t\t\t// If we saved a redirect when this page was first loaded, now we've logged in, go to the redirect path\r\n\t\t\t\t\tif (this.redirectPath && this.redirectPath !== \"\") {\r\n\t\t\t\t\t\tredirectPath = this.redirectPath;\r\n\t\t\t\t\t} else if (loginResult.redirectRoute) {\r\n\t\t\t\t\t\tredirectPath = loginResult.redirectRoute;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.startApiHeartbeat();\r\n\r\n\t\t\t\t\t// don't await this as it could take a while to return\r\n\t\t\t\t\tthis.fetchOverviewUserContext();\r\n\r\n\t\t\t\t\tthis.$router.push(redirectPath);\r\n\r\n\t\t\t\t\tawait this.getElevationLabels();\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase AuthenticationStatus.DisabledUser:\r\n\t\t\t\t\tthis.error = \"Your account has been disabled.\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase AuthenticationStatus.LockedOut:\r\n\t\t\t\t\tthis.error = \"You have been locked out due to too many password attempts.\";\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\tcase AuthenticationStatus.PasswordExpired:\r\n\t\t\t\t\tthis.error = \"Your account credentials are expired.\";\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase AuthenticationStatus.ConfigureMfa:\r\n\t\t\t\t\tthis.authenticationState = AuthenticationStatus.ConfigureMfa;\r\n\t\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t} catch (ex) {\r\n\t\t\tif (ex.response && ex.response.status === 401) {\r\n\t\t\t\tthis.error = \"Username, Password, or MFA token are missing or incorrect.\"\r\n\t\t\t} else {\r\n\t\t\t\tif (ex.message === \"Network Error\") {\r\n\t\t\t\t\tthis.error = \"Error establishing connection to SureView Operations.\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log(`Unexpected error occurred: ${ex.message}. Stack trace - ${ex.stack || ex}`);\r\n\t\t\t\t\tthis.error = \"Something went wrong, please try again later and contact support if the issue persists\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} finally {\r\n\t\t\tthis.loggingIn = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async SetRedirectCookie(url: string) {\r\n\t\tconst now = new Date();\r\n\t\tconst time = now.getTime();\r\n\t\tconst expireTime = time + 1000 * 360; // 5 mins\r\n\t\tnow.setTime(expireTime);\r\n\t\tdocument.cookie = `SsoRedirect=${url};expires=${now.toUTCString()};path=/`;\r\n\t}\r\n\r\n\tprivate mfaSet() {\r\n\t\tthis.authenticationState = AuthenticationStatus.None\r\n\t\tthis.IsMFAEnabled = true;\r\n\t}\r\n\r\n\tprivate async checkIfAccountAdminWithSaml(): Promise {\r\n\t\tlet adminWithSamlResult = await this.axiosInstance.get(\"/login/IsAccountAdminWithSaml?username=\" + encodeURIComponent(this.user));\r\n\t\tif (adminWithSamlResult.status === 200) {\r\n\t\t\tthis.IsMFAEnabled = adminWithSamlResult.data.isMfaEnabled;\r\n\t\t\tif (adminWithSamlResult.data.isAccountAdminWithSaml) {\r\n\t\t\t\t//if the account is a account admin with saml, move to the SAML Step\r\n\t\t\t\tthis.step = this.steps.SAML;\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate async checkIfAccountSuite(): Promise {\r\n\t\ttry\r\n\t\t{\r\n\t\t\tlet response = await this.axiosInstance.get(\"/login/IsAccountSuite?username=\" + encodeURIComponent(this.user));\r\n\t\t\tif (response.status === 200) {\r\n\t\t\t\treturn response.data;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(err)\r\n\t\t{\r\n\t\t\tconsole.error(err)\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate async next(skipAccountAdminCheck: boolean = false) {\r\n\t\tthis.loggingIn = true;\r\n\r\n\t\tif (this.$route.query.hasSessionExpired) {\r\n\t\t\tthis.removeQueryParam(\"hasSessionExpired\");\r\n\t\t}\r\n\t\tthis.error = \"\";\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tif (await this.checkIfAccountSuite())\r\n\t\t\t{\r\n\t\t\t\tawait this.suiteLogin(this.user);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t//If we don't skip the admin saml check and the account is an admin with saml don't try logging in just yet\r\n\t\t\tif (!skipAccountAdminCheck && await this.checkIfAccountAdminWithSaml()) {\r\n\t\t\t\tthis.loggingIn = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet loginProviderResult = await this.axiosInstance.get(\"/login/provider?username=\" + encodeURIComponent(this.user));\r\n\t\t\tif (loginProviderResult.status === 200) {\r\n\t\t\t\tif (loginProviderResult.data.isExternal) {\r\n\t\t\t\t\tthis.checkIfRedirect();\r\n\t\t\t\t\tlocation.href = loginProviderResult.data.authorizationEndpoint;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.step = this.steps.Password;\r\n\t\t\t\t\tthis.IsMFAEnabled = loginProviderResult.data.isMFAEnabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (ex) {\r\n\t\t\tthis.error = \"Something went wrong, please try again later and contact support if the issue persists\";\r\n\t\t}\r\n\t\tthis.loggingIn = false;\r\n\t}\r\n\r\n\tprivate checkIfRedirect(): void {\r\n\t\t// Get the desired root before we change pages, so we can reset it after login\r\n\t\tif (window.location.hash) {\r\n\t\t\tconst decodedHash = decodeURIComponent(window.location.hash);\r\n\t\t\tlet route = undefined;\r\n\t\t\tif (window.location.hash.includes(\"redirect=\")) {\r\n\t\t\t\troute = decodedHash.split(\"redirect=\");\r\n\t\t\t} else {\r\n\t\t\t\troute = decodedHash.split(\"#/\");\r\n\t\t\t}\r\n\r\n\t\t\tif (route && route[1] && route[1] != \"\" && route[1] != \" \" && route[1] != \"undefined\") {\r\n\t\t\t\t// set a short life cookie that will store the intended destination, so we can redirect after successful login\r\n\t\t\t\tthis.SetRedirectCookie(route[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate back() {\r\n\t\tthis.step = this.steps.Email;\r\n\t}\r\n\r\n\tprivate toPasswordStep(): void {\r\n\t\tthis.step = this.steps.Password;\r\n\t}\r\n\r\n\tprivate removeQueryParam(param: string): void {\r\n\t\tconst query = Object.assign({}, this.$route.query);\r\n\t\tdelete query[param];\r\n\t\tthis.$router.replace({ query });\r\n\t}\r\n\r\n\t@Watch(\"requiresConfiguration\")\r\n\tprivate redirectIfRequiresConfiguration(): void\r\n\t{\r\n\t\tif(this.isOnPrem && this.requiresConfiguration !== false)\r\n\t\t{\r\n\t\t\tthis.$router.push( {path: \"/signup\"} );\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=2be2dbf8&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=ts\"\nexport * from \"./Login.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=2be2dbf8&prod&scoped=true&lang=scss\"\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 \"2be2dbf8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"loginBackground\"}},[_c('i',{staticClass:\"fas fa-spinner fa-spin\"}),_c('img',{staticClass:\"background-branding d-none d-xl-block d-lg-block d-md-block\",attrs:{\"src\":\"images/branding/background_logo.png\"}})])}]\n\nexport { render, staticRenderFns }","\n\timport { Component, Vue } from \"vue-property-decorator\";\n\timport { Action, namespace, Getter } from \"vuex-class\";\n\timport { AuthenticationStatus, LoginResult, FeaturesList } from \"@/store/types\";\n\n\tconst UserContext = namespace(\"userContext\");\n\n@Component({\n\tdata() { return { AuthenticationStatus } }\n})\nexport default class LoginSaml extends Vue {\n\n\tprivate error: string = \"\";\n\tprivate authenticationState: AuthenticationStatus = AuthenticationStatus.None;\n\n\t@Action(\"getLoginSession\") private getLoginSession: () => Promise;\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\t\n\t@Action startApiHeartbeat: any;\n\t@Action getElevationLabels: () => Promise;\n\n\t@UserContext.Action(\"fetchOverview\") fetchOverviewUserContext: () => Promise;\n\n\tprivate get isSSOLoginEnabled() {\n\t\treturn process.env.VUE_APP_AUTHENTICATION_SAML_ENABLED === \"true\";\n\t}\n\n\tprivate async beforeCreated() {\n\t\tif (!this.isSSOLoginEnabled) {\n\t\t\tthis.$router.push(\"/login\");\n\t\t}\n\t}\n\n\tprivate async created() {\n\t\ttry {\n\n\t\t\tlet loginResult = await this.getLoginSession();\n\t\t\tlet redirectPath = \"/event-queue\";\n\t\t\t\n\t\t\tconst storedRedirectUrl = this.GetRedirectCookie();\n\t\t\t\n\t\t\tif (storedRedirectUrl) {\n\t\t\t\tlet convertedPath = decodeURIComponent(await storedRedirectUrl);\n\t\t\t\tif(convertedPath !== \"login\" && !convertedPath.includes(\"login\")){\n\t\t\t\t\tredirectPath = convertedPath;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch (loginResult.authenticationStatus) {\n\t\t\t\tcase AuthenticationStatus.Success:\n\t\t\t\t\t//If we have a redirect route and we aren't on mobile use that route\n\t\t\t\t\tif (loginResult.redirectRoute) {\n\t\t\t\t\t\tredirectPath = loginResult.redirectRoute;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.startApiHeartbeat();\n\n\t\t\t\t\t// dont await this as it could take a while to return\n\t\t\t\t\tthis.fetchOverviewUserContext();\n\n\t\t\t\t\tthis.$router.push(redirectPath);\n\n\t\t\t\t\tawait this.getElevationLabels();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase AuthenticationStatus.DisabledUser:\n\t\t\t\t\tthis.error = \"Your account has been disabled.\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase AuthenticationStatus.LockedOut:\n\t\t\t\t\tthis.error = \"You have been locked out due to too many password attempts.\";\n\t\t\t\t\treturn;\n\n\t\t\t\tcase AuthenticationStatus.PasswordExpired:\n\t\t\t\t\tthis.error = \"Your account credentials are expired.\";\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase AuthenticationStatus.ConfigureMfa:\n\t\t\t\t\tthis.authenticationState = AuthenticationStatus.ConfigureMfa;\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t} catch (ex) {\n\t\t\tthrow ex;\n\t\t}\n\t}\n\n\tprivate async GetRedirectCookie() {\n\t\tvar match = document.cookie.match(new RegExp(\"(^| )\" + \"SsoRedirect\" + \"=([^;]+)\"));\n\t\tif (match) {\n\t\t\treturn match[2];\n\t\t}\n\t}\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginSaml.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginSaml.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LoginSaml.vue?vue&type=template&id=9c41988a&scoped=true\"\nimport script from \"./LoginSaml.vue?vue&type=script&lang=ts\"\nexport * from \"./LoginSaml.vue?vue&type=script&lang=ts\"\nimport style0 from \"./LoginSaml.vue?vue&type=style&index=0&id=9c41988a&prod&scoped=true&lang=scss\"\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 \"9c41988a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-grow-1 d-flex align-items-center justify-content-center\"},[_c('div',{staticClass:\"card mb-3\"},[_vm._m(0),_c('div',{staticClass:\"card-body\"},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.accessCode),expression:\"accessCode\"}],staticClass:\"form-control\",attrs:{\"id\":\"password\",\"type\":\"password\",\"placeholder\":\"Access Code\",\"data-cy\":\"login-access-code-input\"},domProps:{\"value\":(_vm.accessCode)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.accessCode=$event.target.value}}})]),(_vm.error.length)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"data-cy\":\"login-error-message\"}},[_vm._v(\" \"+_vm._s(_vm.error)+\" \")]):_vm._e(),_c('button',{staticClass:\"btn btn-primary\",attrs:{\"type\":\"submit\",\"disabled\":_vm.loggingIn,\"data-cy\":\"login-submit-button\"},on:{\"click\":function($event){return _vm.login()}}},[(!_vm.loggingIn)?_c('span',[_vm._v(\"Login\")]):_vm._e(),(_vm.loggingIn)?_c('span',[_vm._v(\"Logging you in ... \")]):_vm._e(),(_vm.loggingIn)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header\"},[_c('h4',[_vm._v(\"Login\")])])}]\n\nexport { render, staticRenderFns }","\n import { Component, Vue } from 'vue-property-decorator';\n import { Action } from 'vuex-class';\n\n@Component({\n components: {\n },\n})\nexport default class TempLogin extends Vue {\n @Action singleEventLogin: any;\n\n public accessCode: string = '';\n public loggingIn: boolean = false;\n public error: string = '';\n\n public login() {\n this.loggingIn = true;\n\n this.singleEventLogin({\n sessionID: this.$route.params.sessionID, \n accessCode: this.accessCode\n }).then((loginResult: any) => {\n this.loggingIn = false;\n var isViewLoginLink = this.$router.currentRoute.path.includes(\"view\");\n if (isViewLoginLink) {\n this.$router.push({ path: `/views/`, query: { sessionId: this.$route.params.sessionID } });\n return;\n }\n\n this.$router.push({ path: '/site-monitor/' + loginResult.eventID });\n }, (errorResult: any) => {\n this.loggingIn = false;\n\n if (errorResult.error != null && errorResult.error != \"\") {\n this.error = errorResult.error;\n } else {\n switch (errorResult.status) {\n case 1:\n this.error = \"Invalid session or access code.\";\n break;\n case 2:\n this.error = \"You have been locked out due to too many password attempts.\";\n break;\n case 3:\n this.error = \"Your account has been disabled.\";\n break;\n case 5:\n this.error = \"This event has ended or your access has been removed.\";\n break;\n default:\n this.error = \"Error during login\";\n }\n }\n });\n }\n\n public onSubmit() {\n\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TempLogin.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TempLogin.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TempLogin.vue?vue&type=template&id=41c4adc5&scoped=true\"\nimport script from \"./TempLogin.vue?vue&type=script&lang=ts\"\nexport * from \"./TempLogin.vue?vue&type=script&lang=ts\"\nimport style0 from \"./TempLogin.vue?vue&type=style&index=0&id=41c4adc5&prod&scoped=true&lang=scss\"\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 \"41c4adc5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"eventqueue-container\"},[_c('div',{staticClass:\"card events-list\"},[_c('alarm-queue-header',{attrs:{\"router\":_vm.$router}}),_c('div',{staticClass:\"card-body p-10\",attrs:{\"id\":\"eventQueues\"}},[(_vm.getPermissions.canHandleAlarms)?_c('div',{staticClass:\"tab-content flex-grow-1 d-flex flex-column overflow-hidden\"},[_c('div',{staticClass:\"queueBox d-flex\"},[_c('div',{staticClass:\"alarm-handling\",class:{ 'w-100': !_vm.isSubscriptionActive || (_vm.hideMapFlag && _vm.isToggleMapEnabled) || _vm.isHideMapsEnabled },attrs:{\"data-cy\":\"div-alarm-handling\"}},[(_vm.eventBulkHandleAllowed)?_c('div',{staticClass:\"bulkprocess-container\",attrs:{\"data-cy\":\"bulk-process\",\"tabindex\":\"-1\"}},[_c('div',{staticClass:\"selectallalarms-container\",attrs:{\"id\":\"selectAllAlarms\"}},[_c('b-form-checkbox',{staticClass:\"mr-2\",on:{\"change\":function($event){return _vm.allAlarmsToggled()}},model:{value:(_vm.allSelected),callback:function ($$v) {_vm.allSelected=$$v},expression:\"allSelected\"}},[_vm._v(\" Select All \")])],1),_c('div',{staticClass:\"endalarms-container\",attrs:{\"id\":\"endAlarms\"}},[_c('button',{staticClass:\"btn btn-secondary m-r-10\",attrs:{\"data-cy\":\"btn-end-selected-alarms\",\"data-id\":\"endSelectedAlarms\",\"onclick\":\"this.blur()\",\"disabled\":_vm.selectedAlarms.length === 0},on:{\"shortkey\":_vm.endSelectedAlarms,\"click\":function($event){return _vm.endSelectedAlarms()}}},[_vm._v(\" End Selected Alarms \")])])]):_vm._e(),_c(_vm.alarmQueueType,{tag:\"component\",attrs:{\"router\":_vm.$router}}),_c('manual-raise',{staticClass:\"manual-raise\"}),(_vm.isActivityLogEnabled)?_c('activity-log'):_vm._e(),(_vm.virtualOperatorsEnabled)?_c('vo-control-panel'):_vm._e()],1),(_vm.isSubscriptionActive && _vm.isToggleMapEnabled)?_c('b-button',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hideMapFlag && _vm.isToggleMapEnabled),expression:\"hideMapFlag && isToggleMapEnabled\"}],staticClass:\"show-map-btn\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.setHideMapFlag(false)}}},[_c('i',{staticClass:\"fas fa-chevron-left\"})]):_vm._e(),(_vm.isSubscriptionActive && !_vm.isHideMapsEnabled)?_c('div',{staticClass:\"flex-grow=0 flex-shrink-0 resizer\",attrs:{\"id\":\"resize\",\"data-cy\":\"div-resizer\"}}):_vm._e(),(!_vm.isHideMapsEnabled)?_c('div',{staticClass:\"d-flex flex-row enhanced-single-map-container\",attrs:{\"data-cy\":\"div-enhanced-single-map\"}},[(_vm.isSubscriptionActive)?_c('enhanced-single-map',{staticClass:\"flex-grow-1 map-alarms\",class:{ 'map-alarms-zero-width': _vm.hideMapFlag && _vm.isToggleMapEnabled },attrs:{\"router\":_vm.$router,\"showMapToggle\":true,\"enhancedMapMode\":_vm.enhancedMapMode.EventQueue,\"useAdvancedFilters\":_vm.isSituationalAwarenessEnabled}}):_vm._e(),(_vm.isSituationalAwarenessEnabled)?_c('enhanced-map-side-bar',{staticClass:\"h-100\",attrs:{\"startState\":0}}):_vm._e()],1):_vm._e()],1),_c('div',{staticClass:\"queueBox smallBox flex-shrink-0\"},[_c('alarm-queue-footer')],1)]):_vm._e()])],1),_c('b-modal',{ref:\"peekModal\",attrs:{\"id\":\"peekModal\",\"content-class\":\"peek-modal\",\"size\":\"xl\",\"centered\":\"\",\"role\":\"dialog\",\"static\":true,\"data-cy\":\"peek-modal\"},on:{\"show\":function($event){return _vm.createPeekRecord('enter')},\"hide\":function($event){return _vm.createPeekRecord('exit')}}},[_c('template',{slot:\"modal-title\"},[_c('div',[_c('h4',[_vm._v(\"Event Peek\")])])]),_c('event-records',{staticClass:\"peekRecords\",attrs:{\"eventid\":_vm.peekEventId,\"eventDetailsAvailable\":\"\",\"peekMode\":\"\",\"peekUser\":_vm.User.fullName,\"showVideoAvailableColumn\":\"\"}}),_c('template',{slot:\"modal-footer\"},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"process-event\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.joinPeekedEvent}},[_c('span',[_vm._v(\"Process\")])]),_c('b-button',{attrs:{\"data-cy\":\"peek-close\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.hidePeekModal}},[_c('span',[_vm._v(\"Close\")])])],1)],2),_c('event-details',{attrs:{\"siteTitle\":_vm.currentGroupTitle,\"groupId\":_vm.currentGroupId}}),_c('invitation-check'),(_vm.getPermissions.canHandleAlarms)?_c('manual-patrol'):_vm._e(),_c('error-warning'),(_vm.getPermissions.canHandleAlarms)?_c('manual-action'):_vm._e(),_c('processing-error'),_c('inactivity-warning'),(_vm.isPopoutModeEnabled)?_c('area-event-history-popout',{attrs:{\"groupId\":_vm.currentGroupId}}):_vm._e(),_c('alarm-points'),(_vm.isProcessAlarmConfirmationEnabled)?_c('alarm-confirmation'):_vm._e(),_c('event-close',{attrs:{\"singleEvent\":false}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{'hide': _vm.hide}},[_c('a',{staticClass:\"text-success\"},[_vm._v(_vm._s(_vm.armedSitesCount)+\" Armed Sites\")]),_vm._v(\" | \"),_c('a',{staticClass:\"text-danger\"},[_vm._v(_vm._s(_vm.disarmedSitesCount)+\" Disarmed Sites\")]),_vm._v(\" | \"),_c('a',{staticClass:\"text-warning\"},[_vm._v(\"0 ECare Failed\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from 'vue-property-decorator';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class SiteStatus extends Vue {\r\n public armedSitesCount: number = 0;\r\n public disarmedSitesCount: number = 0;\r\n public hide: boolean = false;\r\n\r\n created () {\r\n this.init();\r\n this.update();\r\n }\r\n\r\n init () {\r\n // @refactor interval\r\n // setTimeout(function() { this.update() }.bind(this), 10);\r\n // this.updateInterval = setInterval(function() {\r\n // this.update()\r\n // }.bind(this), 20000);\r\n }\r\n \r\n destroy () {\r\n // clearInterval(this.updateInterval);\r\n } \r\n \r\n update () {\r\n // DataService.getData(\"EventQueue/GroupSummary\").done(function(status) {\r\n // this.armedSitesCount = status.armed;\r\n // this.disarmedSitesCount = status.disarmed;\r\n\r\n // this.hide = false;\r\n // }.bind(this)).fail(function() {\r\n // this.hide = true;\r\n // }.bind(this));\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteStatus.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteStatus.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SiteStatus.vue?vue&type=template&id=0bbf8b46&scoped=true\"\nimport script from \"./SiteStatus.vue?vue&type=script&lang=ts\"\nexport * from \"./SiteStatus.vue?vue&type=script&lang=ts\"\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 \"0bbf8b46\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('nav-header',[_c('template',{slot:\"title\"},[_c('h4',[_vm._v(_vm._s(\"Alarms - \" + _vm.userZone.title))]),(_vm.isAreaNotesEnabled && _vm.isSubscriptionActive)?_c('div',{staticClass:\"p-l-10 clickable-row\",attrs:{\"title\":\"Area Notes\",\"data-cy\":\"area-notes-finder\"},on:{\"click\":function($event){return _vm.$refs.areaNotesFinder.show()}}},[_c('i',{staticClass:\"fas fa-info-circle\",class:_vm.isAreaNotesMousedOver ? 'fa-info-circle-active' : '',on:{\"mouseover\":function($event){_vm.isAreaNotesMousedOver = true},\"mouseout\":function($event){_vm.isAreaNotesMousedOver = false}}})]):_vm._e(),_c('div',{staticClass:\"flex-grow-1\"}),(_vm.isSubscriptionActive && _vm.isAlarmMaskingEnabled)?_c('masking-modal-launcher',{attrs:{\"variant\":\"event-queue\",\"groupId\":_vm.groupId,\"data-cy\":\"masking-modal-launcher\"}}):_vm._e(),_c('div',{staticClass:\"flex-grow-1\"}),(_vm.isSystemViewHealthEnabled && _vm.isSubscriptionActive)?_c('system-view-health-filter',{attrs:{\"bannerMode\":\"\"}}):_vm._e(),_c('div',{staticClass:\"flex-grow-1\"})],1),(_vm.isSubscriptionActive)?_c('template',{slot:\"controls\"},[(_vm.isOnTestEnabled)?_c('a',{staticClass:\"btn btn-secondary m-r-10\",attrs:{\"id\":\"alarmPointsButton\",\"data-id\":\"alarmPoints\",\"data-cy\":\"btn-alarm-points\"},on:{\"shortkey\":_vm.alarmPointsOpen,\"click\":_vm.alarmPointsOpen}},[_vm._v(\" Alarm Points \")]):_vm._e(),(this.eventBulkHandleAllowed)?_c('a',{staticClass:\"btn m-r-10 fas fa-bell-slash bulk-handle-button\",class:_vm.bulkHandleShown ? 'btn-primary' : 'btn-secondary',attrs:{\"id\":\"bulkHandleButton\",\"data-cy\":\"btn-bulk-handle\",\"data-id\":\"bulkHandle\",\"aria-label\":\"Bulk close events\"},on:{\"shortkey\":function($event){return _vm.toggleBulkHandle()},\"click\":function($event){return _vm.toggleBulkHandle()}}}):_vm._e(),(_vm.isQuickControlEnabled)?_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'q']}),expression:\"{down: ['shift', 'q']}\"}],staticClass:\"btn btn-secondary m-r-10\",attrs:{\"data-id\":\"manualAction\"},on:{\"shortkey\":function($event){return _vm.manualActionOpen()},\"click\":function($event){return _vm.manualActionOpen()}}},[_vm._v(\" Quick Control \")]):_vm._e(),(_vm.getPermissions.canHandleAlarms)?_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\",\"aria-label\":\"Process\"}},[(_vm.virtualOperatorsEnabled)?_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'v']}),expression:\"{down: ['shift', 'v']}\"}],staticClass:\"btn btn-secondary\",attrs:{\"id\":\"btn-header-virtual-operators\",\"data-cy\":\"virtual-operators-btn\"},on:{\"shortkey\":function($event){return _vm.virtualOperatorControlPanelOpen()},\"click\":function($event){return _vm.virtualOperatorControlPanelOpen()}}},[_vm._v(\" Virtual Operators \")]):_vm._e(),(_vm.siteMonitorEnabled)?_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'p']}),expression:\"{down: ['shift', 'p']}\"}],staticClass:\"btn btn-secondary\",class:{'disabled': _vm.getHandlingEvent},attrs:{\"id\":\"topAlarmButton\",\"title\":_vm.getHandlingEvent ? 'Loading event' : ''},on:{\"shortkey\":function($event){return _vm.processTopAlarm(_vm.currentFilterID, 'shortkey')},\"~click\":function($event){return _vm.processTopAlarm(_vm.currentFilterID, 'clicked')}}},[_vm._v(\" Process Top Priority \"),(_vm.getHandlingEvent)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]):_vm._e(),(_vm.getPermissions.canAccessManualRaise)?_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'r']}),expression:\"{down: ['shift', 'r']}\"}],staticClass:\"btn btn-secondary\",attrs:{\"id\":\"btn-header-manual-raise\"},on:{\"shortkey\":function($event){return _vm.manualRaiseOpen()},\"click\":function($event){return _vm.manualRaiseOpen()}}},[_vm._v(\" Manual Raise \")]):_vm._e(),(_vm.isActivityLogEnabled && _vm.getPermissions.canRaiseActivityLog)?_c('a',{staticClass:\"btn btn-secondary\",on:{\"shortkey\":function($event){return _vm.activityLogOpen()},\"click\":function($event){return _vm.activityLogOpen()}}},[_vm._v(\" Activity Log \")]):_vm._e(),(_vm.isManualTourEnabled && _vm.getPermissions.canAccessManualTour)?_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'm']}),expression:\"{down: ['shift', 'm']}\"}],staticClass:\"btn btn-secondary\",attrs:{\"id\":\"btn-header-manual-tour\"},on:{\"shortkey\":function($event){return _vm.manualPatrolOpen()},\"click\":function($event){return _vm.manualPatrolOpen()}}},[_vm._v(\" Manual Tour \")]):_vm._e()]):_vm._e(),_c('shortcut-help')],1):_vm._e()],2),_c('area-notes-finder',{ref:\"areaNotesFinder\"}),_c('div',{staticStyle:{\"background-color\":\"#1B1B1B\",\"margin-top\":\"-10px\"},on:{\"click\":_vm.logEventQueueHistory}},[_c('label',{staticStyle:{\"padding-left\":\"12px\",\"font-size\":\"0.75em\",\"color\":\"grey\",\"margin-top\":\"-15px\"}},[_vm._v(\"Last Updated: \"+_vm._s(this.lastUpdatedString)+\" - \"+_vm._s(_vm.activeAlarmCount)+\" Alarms \")])]),_c('alarm-queue-filter-tabs',{attrs:{\"clearSelectedAlarm\":\"clearSelectedAlarm\"}}),_vm._m(0)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('audio',{attrs:{\"id\":\"alarmSound\"}},[_c('source',{attrs:{\"src\":\"media/alarm.wav\"}})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isEnabled)?_c('div',[_c('b-modal',{attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"visible\":_vm.isModalVisible,\"ok-title\":\"Show Details\",\"ok-disabled\":!_vm.selectedGroup,\"id\":\"areaNotesModal\",\"static\":\"\",\"data-cy\":\"area-details-finder\"},on:{\"hide\":function($event){_vm.isModalVisible = false},\"ok\":_vm.showNotesForSelectedGroup}},[_c('template',{slot:\"modal-title\"},[_vm._v(\"Area Details Finder\")]),_c('div',{staticClass:\"d-flex flex-column p-0\"},[(_vm.isModalVisible)?_c('area-tree-select',{attrs:{\"value\":_vm.selectedGroup,\"appendToBody\":\"\"},on:{\"input\":_vm.groupSelected}}):_vm._e()],1)],2)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { namespace, Getter } from \"vuex-class\";\nimport AreaTreeSelect from '@/components/form/AreaTreeSelect.vue';\nimport { FeaturesList } from \"@/store/types\";\nimport { get } from 'lodash';\nimport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\nimport EventDetails from \"@/components/EventDetails.vue\";\n\nconst AreaNotes = namespace(\"areaNotes\");\nconst SiteMonitor = namespace(\"siteMonitor\");\n\n@Component({\n\tcomponents: {\n\t\t\"area-tree-select\": AreaTreeSelect,\n\t\t\"event-details\": EventDetails\n\t}\n})\nexport default class AreaNotesFinder extends Vue {\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\t@AreaNotes.Mutation setAreaNoteGroupDetails: any;\n\t@SiteMonitor.Mutation setEventDetailsShown: any;\n\t@SiteMonitor.Mutation setAreaDetailsTabIndex: any;\n\t@AreaNotes.State currentGroupId: number;\n\t@AreaNotes.State currentGroupTitle: string;\n\n\tprivate isModalVisible: boolean = false;\n\tprivate selectedGroup: AreaNode = null;\n\n\tpublic async show(): Promise {\n\t\tthis.isModalVisible = true;\n\t}\n\n\tprivate get isEnabled(): boolean {\n\t\treturn (get(this.featuresList, [\"AreaNotes\"])\n\t\t\t&& get(this.featuresList, [\"AreaNotes\", \"Icons\"]));\n\t}\n\n\tpublic get siteTitle(): string {\n\t\treturn this.selectedGroup ? this.selectedGroup.label : \"\";\n\t}\n\n\tpublic get getGroupId(): Number {\n\t\treturn this.selectedGroup ? this.selectedGroup.id : null;\n\t}\n\n\tprivate groupSelected(selectedGroup: AreaNode): void {\n\t\tthis.selectedGroup = selectedGroup;\n\t}\n\n\tprivate showNotesForSelectedGroup(modalEvent): void {\n\t\t// Prevent the default modal OK button event handling\n\t\t// stops the modal being hidden when 'Show Notes' (OK) button is clicked\n\t\tmodalEvent.preventDefault();\n\n\t\tthis.setEventDetailsShown(true);\n\t\tthis.setAreaDetailsTabIndex(0);\n\t\tthis.setAreaNoteGroupDetails({ groupId: this.getGroupId, groupTitle: this.siteTitle });\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesFinder.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesFinder.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaNotesFinder.vue?vue&type=template&id=83ede750&scoped=true\"\nimport script from \"./AreaNotesFinder.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaNotesFinder.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaNotesFinder.vue?vue&type=style&index=0&id=83ede750&prod&scoped=true&lang=scss\"\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 \"83ede750\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.bannerMode)?_c('div',[_c('b-button',{attrs:{\"id\":\"health-filter-btn\",\"data-cy\":\"health-filter-btn\"},on:{\"click\":_vm.bannerClick}},[(_vm.healthStatusCount.unhealthy)?_c('span',[_c('span',{staticClass:\"danger-color\"},[_c('i',{staticClass:\"fa far pr-2 fa-briefcase-medical\"})]),_c('b-badge',{staticClass:\"ml-1 unhealthy-badge\"},[_vm._v(_vm._s(_vm.healthStatusCount.unhealthy))])],1):_c('span',[_c('span',{staticClass:\"active-color\"},[_c('i',{staticClass:\"fa far pr-2 fa-briefcase-medical\"})]),_c('b-badge',{staticClass:\"ml-1 healthy-badge\"},[_vm._v(_vm._s(_vm.healthStatusCount.healthy))])],1)])],1):_c('div',[_c('health-radio-filter',{attrs:{\"data-cy\":\"health-filter-radio-group\"},on:{\"change\":_vm.onSelectedFilterChanged},model:{value:(_vm.selectedFilter),callback:function ($$v) {_vm.selectedFilter=$$v},expression:\"selectedFilter\"}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-radio-group',{attrs:{\"buttons\":\"\",\"data-cy\":\"health-filter-radio-group\"},on:{\"change\":_vm.onSelectedFilterChanged},model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}},[_c('b-form-radio',{attrs:{\"value\":\"All\"}},[_c('span',[_vm._v(\"All\")]),_c('b-badge',{staticClass:\"ml-1\"},[_vm._v(_vm._s(_vm.healthStatusCount.all))])],1),_c('b-form-radio',{attrs:{\"value\":\"Healthy\"}},[_c('span',{staticClass:\"active-color\"},[_vm._v(\"Healthy\")]),_c('b-badge',{staticClass:\"ml-1 healthy-badge\"},[_vm._v(_vm._s(_vm.healthStatusCount.healthy))])],1),_c('b-form-radio',{attrs:{\"value\":\"Unhealthy\"}},[_c('span',{staticClass:\"danger-color\"},[_vm._v(\"Unhealthy\")]),_c('b-badge',{staticClass:\"ml-1 unhealthy-badge\"},[_vm._v(_vm._s(_vm.healthStatusCount.unhealthy))])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\timport SystemViewHealthStatusCount from '@/types/sv-data/system-view/SystemViewHealthStatusCount';\n\timport { Component, Vue, Emit, Prop } from \"vue-property-decorator\";\n\timport { namespace } from \"vuex-class\";\n\n\tconst SystemHealth = namespace(\"systemHealth\");\n\n\t@Component\n\texport default class SystemViewHealthRadioFilter extends Vue {\n\t\t@SystemHealth.Getter('getHealthStatus') private healthStatusCount: SystemViewHealthStatusCount;\n\t\t@SystemHealth.Getter('getStatusFilter') private statusFilter: string;\n\t\t@SystemHealth.Mutation setHealthStatus: (status: SystemViewHealthStatusCount) => void;\n\t\t@SystemHealth.Mutation setStatusFilter: (filter: string) => void;\n\n @Prop({type: String, required: true})\n private value: string;\n \n\t\tprivate selectedFilter: string = null;\n\n @Emit(\"change\")\n\t\tprivate onSelectedFilterChanged(filter: string): string {\n return filter;\n\t\t}\n\t}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewHealthRadioFilter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewHealthRadioFilter.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemViewHealthRadioFilter.vue?vue&type=template&id=616ab3eb&scoped=true\"\nimport script from \"./SystemViewHealthRadioFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemViewHealthRadioFilter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemViewHealthRadioFilter.vue?vue&type=style&index=0&id=616ab3eb&prod&scoped=true&lang=scss\"\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 \"616ab3eb\",\n null\n \n)\n\nexport default component.exports","\r\nimport SystemViewHealthStatusCount from '@/types/sv-data/system-view/SystemViewHealthStatusCount';\r\nimport { Component, Emit, Prop, Vue } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport SystemViewHealthRadioFilter from './SystemViewHealthRadioFilter.vue';\r\n\r\nconst SystemHealth = namespace(\"systemHealth\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"health-radio-filter\": SystemViewHealthRadioFilter\r\n\t}\r\n})\r\nexport default class SystemViewHealthFilter extends Vue {\r\n\t@Prop({type: Boolean, default: false}) private bannerMode: Boolean;\r\n\t@SystemHealth.Getter('getHealthStatus') private healthStatusCount: SystemViewHealthStatusCount;\r\n\t@SystemHealth.Getter('getStatusFilter') private statusFilter: string;\r\n\t@SystemHealth.Mutation setHealthStatus: (status: SystemViewHealthStatusCount) => void;\r\n\t@SystemHealth.Mutation setStatusFilter: (filter: string) => void;\r\n\t@SystemHealth.Action retrieveHealthStatuses: () => Promise;\r\n\r\n\tprivate selectedFilter: string = null;\r\n\tprivate updateTimer: NodeJS.Timeout = null;\r\n\r\n\tprivate onSelectedFilterChanged(filter: string): void {\r\n\t\tthis.setStatusFilter(filter);\r\n\r\n\t\tif (this.bannerMode) {\r\n\t\t\twindow.open(this.$router.resolve('system-view').href, '_blank', \"location=yes, scrollbars=yes, status=yes\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate bannerClick(): void\r\n\t{\r\n\t\tthis.onSelectedFilterChanged(this.healthStatusCount?.unhealthy ? \"Unhealthy\": \"Healthy\")\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tawait this.retrieveHealthStatuses();\r\n\r\n\t\tif (this.bannerMode) {\r\n\t\t\tthis.setStatusFilter(null);\r\n\t\t\tthis.selectedFilter = null;\r\n\t\t\tthis.updateTimer = setInterval(() => this.retrieveHealthStatuses(), 60000);\r\n\t\t} else {\r\n\t\t\tthis.setupFilter();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupFilter(): void {\r\n\t\tif (this.statusFilter == null) {\r\n\t\t\tthis.setStatusFilter(\"All\");\r\n\t\t}\r\n\t\tthis.selectedFilter = this.statusFilter;\r\n\t}\r\n\r\n\tpublic beforeDestroy() {\r\n\t\tif (this.updateTimer != null) {\r\n\t\t\tclearTimeout(this.updateTimer);\r\n\t\t\tthis.updateTimer = null;\r\n\t\t}\r\n\r\n\t\tif (!this.bannerMode) {\r\n\t\t\tthis.setStatusFilter(\"All\");\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewHealthFilter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewHealthFilter.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemViewHealthFilter.vue?vue&type=template&id=09a60673&scoped=true\"\nimport script from \"./SystemViewHealthFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemViewHealthFilter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemViewHealthFilter.vue?vue&type=style&index=0&id=09a60673&prod&scoped=true&lang=scss\"\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 \"09a60673\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('alarm-queue-filter-edit',{attrs:{\"filter\":_vm.editedFilter,\"allAvailableFilters\":_vm.allAvailableFilters},on:{\"submit\":_vm.setAllAvailableFilters,\"cancel\":_vm.onCancelFilterEditing}}),_c('b-modal',{attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"header-class\":\"delete-confirm-modal\"},model:{value:(_vm.modalShow),callback:function ($$v) {_vm.modalShow=$$v},expression:\"modalShow\"}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header\"},[_c('i',{staticClass:\"fas fa-trash hover-icon\",attrs:{\"title\":\"Delete Alarm Queue Filter Icon\"}}),_c('h4',[_vm._v(\"Delete Alarm Queue Filter\")])])]),_c('div',{attrs:{\"data-cy\":\"delete-filter-popup\"}},[_c('h5',{staticClass:\"confirmation-text default-error-message\"},[_vm._v(\" Are you sure you want to delete this filter \\\"\"+_vm._s(_vm.filterToDelete.title)+\"\\\"? \")])]),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-danger ksConfirm\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"delete-filter-btn\"},on:{\"click\":function($event){return _vm.deleteFilter(_vm.filterToDelete.alarmQueueFilterID)}}},[_c('span',[_vm._v(\"Delete\")])]),_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"data-dismiss\":\"modal\"},on:{\"click\":_vm.hideConfirmationModal}},[_c('span',[_vm._v(\"Cancel\")])])])],2),(_vm.getPermissions.canHandleAlarms)?_c('ul',{staticClass:\"nav nav-tabs\",attrs:{\"data-cy\":\"filter-tabs\"}},[_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'arrowleft']}),expression:\"{down: ['shift', 'arrowleft']}\"}],on:{\"shortkey\":function($event){return _vm.moveFilter(false)}}}),_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'arrowright']}),expression:\"{down: ['shift', 'arrowright']}\"}],on:{\"shortkey\":function($event){return _vm.moveFilter(true)}}}),_vm._l((_vm.visibleFilters),function(filter){return _c('li',{key:filter.regionalFilterID,staticClass:\"nav-item\"},[_c('a',{staticClass:\"nav-link\",class:{ active: filter.isActive },on:{\"click\":function($event){return _vm.selectFilter(filter)}}},[_vm._v(\" \"+_vm._s(filter.title)+\" \"),(filter.activeAlarmCount > 0)?_c('span',{staticClass:\"badge badge-secondary\",attrs:{\"title\":filter.activeAlarmCount + ' alarms awaiting handling'}},[_vm._v(\" \"+_vm._s(filter.activeAlarmCount)+\" \")]):_vm._e(),_vm._v(\" \"),(filter.alarmQueueFilterID > 0)?_c('span',{staticClass:\"span-link badge badge-pill dark-background badge-danger\",attrs:{\"title\":\"Close Filter\"},on:{\"click\":function($event){return _vm.removeFilter(filter)}}},[_c('span',{staticClass:\"fas fa-times fa-sm\"})]):_vm._e()])])}),(_vm.addingFilter)?_c('li',{staticClass:\"nav-item\"},[_c('i',{staticClass:\"fas fa-circle-notch fa-spin loader-icon\"})]):_vm._e(),(_vm.isSubscriptionActive)?_c('li',{staticClass:\"nav-item\"},[_c('b-dropdown',{attrs:{\"data-cy\":\"add-filter-btn\",\"toggle-class\":\"nav-link add-filter-btn rounded-0\"},on:{\"show\":function($event){return _vm.resetFilterSearch()}},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('span',{staticClass:\"badge badge-pill dark-background badge-success\",attrs:{\"title\":\"Add Filter\"}},[_vm._v(\"+\")])]},proxy:true}],null,false,729934162)},[_c('form',{staticClass:\"p-1\",staticStyle:{\"min-width\":\"200px\"}},[_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filterSearch),expression:\"filterSearch\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Search\"},domProps:{\"value\":(_vm.filterSearch)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.filterSearch=$event.target.value}}})]),(_vm.getPermissions.canSaveFilters)?_c('div',{staticClass:\"list-group-item list-group-item-action add-new-item-row\",attrs:{\"data-cy\":\"create-filter-btn\"},on:{\"click\":function($event){return _vm.setNewFilterModalShown(true)}}},[_c('i',{staticClass:\"fas fa-plus-circle p-r-5\"}),_c('span',[_vm._v(\"Create New Filter\")])]):_vm._e(),_c('VuePerfectScrollbar',{staticClass:\"filters-list\"},[_c('div',{staticClass:\"list-group\",attrs:{\"data-cy\":\"available-filters-list\"}},_vm._l((_vm.filteredFilters),function(filter){return _c('div',{key:filter.regionalFilterID,staticClass:\"list-group-item list-group-item-action d-flex pr-3\",on:{\"click\":function($event){return _vm.newFilterSelected(filter)}}},[_c('span',{staticClass:\"flex-grow-1 filter-title pr-4\"},[_vm._v(\" \"+_vm._s(filter.regionID > 0 ? ((filter.title) + \" (\" + (filter.regionTitle) + \")\") : filter.title)+\" \")]),(_vm.getPermissions.canSaveFilters && filter.isLocal)?_c('i',{staticClass:\"fas fa-edit pt-1 mr-1\",attrs:{\"title\":\"Edit Filter\",\"data-cy\":\"edit-filter-btn\"},on:{\"click\":function($event){return _vm.editFilter(filter)}}}):_vm._e(),(_vm.getPermissions.canSaveFilters && filter.isLocal)?_c('i',{staticClass:\"fas fa-trash hover-icon pt-1\",attrs:{\"title\":\"Delete Filter\",\"data-cy\":\"show-delete-filter-popup\"},on:{\"click\":function($event){return _vm.confirmDeleteFilter(filter)}}}):_vm._e()])}),0)])],1)])],1):_vm._e(),(_vm.getHandlingEvent)?_c('li',{staticClass:\"nav-item\"},[_c('i',{staticClass:\"fas fa-spinner fa-spin loader-icon\"})]):_vm._e()],2):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"modal\",attrs:{\"data-cy\":\"alarqueue-filter-form\",\"id\":\"modal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\"},on:{\"hidden\":_vm.onCancel}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',[_vm._v(\"Add New Filter\")])])]),_c('b-card',{staticClass:\"new-filter-form\"},[_c('b-form',{on:{\"submit\":_vm.onSubmit}},[_c('label',[_vm._v(\"Filter Name:\")]),_c('div',{staticClass:\"form-group d-flex flex-column\",staticStyle:{\"max-height\":\"70vh\"},attrs:{\"id\":\"newFilterForm\"}},[_c('p',{staticClass:\"d-flex\"},[_c('b-form-input',{class:[{ invalid: _vm.$v.newFilter.title.$error, 'error-animated': _vm.showErrorAnimation }],attrs:{\"id\":\"newFilterTitle\",\"placeholder\":\"My Filter\",\"data-cy\":\"filter-title\",\"maxlength\":\"250\"},model:{value:(_vm.newFilter.title),callback:function ($$v) {_vm.$set(_vm.newFilter, \"title\", $$v)},expression:\"newFilter.title\"}}),(_vm.getPermissions.canShareFilters)?_c('b-form-checkbox',{staticClass:\"mr-2\",model:{value:(_vm.newFilter.shared),callback:function ($$v) {_vm.$set(_vm.newFilter, \"shared\", $$v)},expression:\"newFilter.shared\"}},[_vm._v(\" Shared \")]):_vm._e()],1),(_vm.$v.newFilter.title.$error && !_vm.$v.newFilter.title.validateDuplicate)?_c('sub',{staticClass:\"small text-danger mb-3\"},[_vm._v(\" A filter with the title \"+_vm._s(_vm.newFilter.title)+\" already exists, please choose another \")]):_vm._e(),_c('label',[_vm._v(\"Areas:\")]),_c('area-tree-select',{attrs:{\"value\":_vm.areaList,\"append-to-body\":true,\"multiple\":\"\"},on:{\"input\":_vm.areaSelected}}),_c('br'),_c('b-form-group',[(_vm.areaList.length > 0)?_c('b-row',[_c('VuePerfectScrollbar',{staticClass:\"flex-grow-1 flex-shrink-1 third-vh\"},[_c('b-col',{staticClass:\"no-max-width\",attrs:{\"md\":\"11\",\"sm\":\"11\",\"xs\":\"11\"}},_vm._l((_vm.areaList),function(area){return _c('div',{key:area.id,staticClass:\"btn-group queue-filter-edit-group p-b-5 m-r-20\",attrs:{\"role\":\"group\"}},[_c('b-btn-group',[_c('b-button',{staticClass:\"btn btn-noclick w-75 t-align-left\",attrs:{\"title\":area.label,\"data-cy\":\"label-area-noclick-button\"}},[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(area.label,40))+\" \")]),_c('b-button',{attrs:{\"variant\":area.inherited ? 'primary' : '',\"title\":\"Include Sub-areas\",\"data-cy\":\"inherit-area-button\",\"id\":\"inherit-button\"},on:{\"click\":function($event){area.inherited = !area.inherited}}},[_c('i',{staticClass:\"fad fa-sitemap\"})]),_c('b-tooltip',{attrs:{\"target\":\"inherit-button\",\"triggers\":\"hover\"}},[_vm._v(\" Include Sub-areas \")]),(_vm.excludedFeatureEnabled)?_c('b-button',{attrs:{\"variant\":!area.excluded ? 'success' : 'danger',\"title\":\"Exclude Area\",\"data-cy\":\"exclude-area-button\",\"id\":\"excluded-button\"},on:{\"click\":function($event){area.excluded = !area.excluded}}},[(!area.excluded)?_c('i',{staticClass:\"fad fa-check\"}):_vm._e(),(area.excluded)?_c('i',{staticClass:\"fad fa-times\"}):_vm._e()]):_vm._e(),_c('b-tooltip',{attrs:{\"target\":\"excluded-button\",\"triggers\":\"hover\"}},[_vm._v(\" Exclude Area \")])],1)],1)}),0)],1)],1):_vm._e()],1),_c('div',{staticClass:\"mt-2 text-right\"},[(_vm.showAdvancedCriteria)?_c('i',{staticClass:\"clickable-row fas fa-chevron-circle-up medium-icon\",attrs:{\"title\":\"Show Less Criteria\",\"data-cy\":\"less-btn\"},on:{\"click\":function($event){_vm.showAdvancedCriteria = !_vm.showAdvancedCriteria}}}):_c('i',{staticClass:\"clickable-row fas fa-chevron-circle-down medium-icon\",attrs:{\"title\":\"Show More Criteria\",\"data-cy\":\"more-btn\"},on:{\"click\":function($event){_vm.showAdvancedCriteria = !_vm.showAdvancedCriteria}}})]),(_vm.showAdvancedCriteria)?_c('div',{staticClass:\"mt-4\",attrs:{\"data-cy\":\"advanced-criteria\"}},[_c('b-form-group',[_c('b-row',[_c('b-col',{attrs:{\"md\":\"3\",\"sm\":\"3\"}},[_c('label',{attrs:{\"for\":\"priority-filter\"}},[_vm._v(\"Priority:\")])]),_c('b-col',{attrs:{\"md\":\"5\",\"sm\":\"5\"}},[_c('vue-select',{class:[{ 'invalid-select': _vm.$v.newFilter.priorityOperator.$error }, 'dark'],attrs:{\"options\":_vm.comparisonOperators},model:{value:(_vm.newFilter.priorityOperator),callback:function ($$v) {_vm.$set(_vm.newFilter, \"priorityOperator\", $$v)},expression:\"newFilter.priorityOperator\"}})],1),_c('b-col',{attrs:{\"md\":\"3\",\"sm\":\"3\"}},[_c('b-form-input',{attrs:{\"name\":\"priority-filter\",\"id\":\"priority-filter\",\"type\":\"number\",\"placeholder\":\"0 - 9999+\"},model:{value:(_vm.newFilter.priorityValue),callback:function ($$v) {_vm.$set(_vm.newFilter, \"priorityValue\", $$v)},expression:\"newFilter.priorityValue\"}})],1)],1),(_vm.$v.newFilter.priorityOperator.$error)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\" Operator is Required \")]):_vm._e()],1),_c('b-form-group',[_c('b-row',[_c('b-col',{attrs:{\"md\":\"3\",\"sm\":\"3\"}},[_c('label',{attrs:{\"for\":\"numberOfAlarms-filter\"}},[_vm._v(\"Number of Alarms:\")])]),_c('b-col',{attrs:{\"md\":\"5\",\"sm\":\"5\"}},[_c('vue-select',{class:[\n\t\t\t\t\t\t\t\t\t\t{ 'invalid-select': _vm.$v.newFilter.numberOfEventsOperator.$error },\n\t\t\t\t\t\t\t\t\t\t'dark'\n\t\t\t\t\t\t\t\t\t],attrs:{\"options\":_vm.comparisonOperators},model:{value:(_vm.newFilter.numberOfEventsOperator),callback:function ($$v) {_vm.$set(_vm.newFilter, \"numberOfEventsOperator\", $$v)},expression:\"newFilter.numberOfEventsOperator\"}})],1),_c('b-col',{attrs:{\"md\":\"3\",\"sm\":\"3\"}},[_c('b-form-input',{attrs:{\"name\":\"numberOfAlarms-filter\",\"id\":\"numberOfAlarms-filter\",\"type\":\"number\",\"placeholder\":\"1\"},model:{value:(_vm.newFilter.numberOfEventsValue),callback:function ($$v) {_vm.$set(_vm.newFilter, \"numberOfEventsValue\", $$v)},expression:\"newFilter.numberOfEventsValue\"}})],1)],1),(_vm.$v.newFilter.numberOfEventsOperator.$error)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\" Operator is Required \")]):_vm._e()],1),_c('b-form-group',[_c('b-row',[_c('b-col',{attrs:{\"md\":\"3\",\"sm\":\"3\"}},[_c('label',{attrs:{\"for\":\"alarmTag-filter\"}},[_vm._v(\"Alarm Tag:\")])]),_c('b-col',{attrs:{\"md\":\"9\",\"sm\":\"9\"}},[_c('vue-select',{staticClass:\"dark\",attrs:{\"name\":\"alarmTag-filter\",\"id\":\"alarmTag-filter\",\"label\":\"title\",\"options\":_vm.alarmTags},model:{value:(_vm.alarmTag),callback:function ($$v) {_vm.alarmTag=$$v},expression:\"alarmTag\"}})],1)],1)],1),_c('b-form-group',[_c('b-row',[_c('b-col',{attrs:{\"md\":\"3\",\"sm\":\"3\"}},[_c('label',{attrs:{\"for\":\"alarmAge-filter\"}},[_vm._v(\"Alarm Age (in seconds):\")])]),_c('b-col',{attrs:{\"md\":\"5\",\"sm\":\"5\"}},[_c('vue-select',{class:[{ 'invalid-select': _vm.$v.newFilter.alarmAgeOperator.$error }, 'dark'],attrs:{\"options\":_vm.comparisonOperators},model:{value:(_vm.newFilter.alarmAgeOperator),callback:function ($$v) {_vm.$set(_vm.newFilter, \"alarmAgeOperator\", $$v)},expression:\"newFilter.alarmAgeOperator\"}})],1),_c('b-col',{attrs:{\"md\":\"3\",\"sm\":\"3\"}},[_c('b-form-input',{attrs:{\"name\":\"alarmAge-filter\",\"id\":\"alarmAge-filter\",\"type\":\"number\",\"placeholder\":\"10\"},model:{value:(_vm.newFilter.alarmAgeValue),callback:function ($$v) {_vm.$set(_vm.newFilter, \"alarmAgeValue\", $$v)},expression:\"newFilter.alarmAgeValue\"}})],1)],1),(_vm.$v.newFilter.alarmAgeOperator.$error)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\" Operator is Required \")]):_vm._e()],1),_c('b-form-group',[_c('b-row',[_c('b-col',{attrs:{\"md\":\"3\",\"sm\":\"3\"}},[_c('label',{attrs:{\"for\":\"combine-filter\"}},[_vm._v(\" Combine Filters: \"),_c('i',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover.v-primary\",modifiers:{\"hover\":true,\"v-primary\":true}}],staticClass:\"fas fa-question-circle m-1 fa-md\",attrs:{\"title\":\"Combining filters ensures the events returned match all criteria selected\"}})])]),_c('b-col',{attrs:{\"md\":\"7\",\"sm\":\"7\"}},[_c('b-form-checkbox',{model:{value:(_vm.newFilter.combinedFilters),callback:function ($$v) {_vm.$set(_vm.newFilter, \"combinedFilters\", $$v)},expression:\"newFilter.combinedFilters\"}})],1)],1)],1)],1):_vm._e()],1)])],1),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"pull-right ksConfirm\",attrs:{\"variant\":\"primary\",\"data-cy\":\"submit-alarmqueue-filter\",\"data-dismiss\":\"modal\",\"disabled\":_vm.isLoading},on:{\"click\":_vm.onSubmit}},[_c('span',[_vm._v(_vm._s(_vm.submitButtonTitle))]),(_vm.isLoading)?_c('i',{staticClass:\"fas fa-spinner fa-spin ml-1\"}):_vm._e()]),_c('b-button',{staticClass:\"pull-right\",attrs:{\"variant\":\"secondary\",\"data-cy\":\"cancel-alarmqueue-filter-creation\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.onCancel}},[_c('span',[_vm._v(\"Close\")])])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Emit, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required, requiredIf, minLength, maxLength } from \"vuelidate/lib/validators\";\r\nimport vSelect from \"vue-select\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { UserPermissions, RoutingGroup } from \"@/store/types\";\r\nimport { AlarmQueueFilterEditModel, AlarmTag } from \"@/store/eventqueue/types\";\r\nimport { get } from 'lodash'\r\nimport { AreaNode } from '@/types/sv-data/groups/AreaNode';\r\nimport AreaTreeSelect from './form/AreaTreeSelect.vue';\r\nimport { truncateString } from '@/filters';\r\nconst Eventqueue = namespace(\"eventqueue\");\r\n\r\nconst removeWhiteSpace = (value: string) => {\r\n\treturn value.toLowerCase().replace(/\\s/g, \"\")\r\n}\r\n\r\ninterface AreaFilterItem {\r\n\tid: number,\r\n\tlabel: string,\r\n\tinherited: boolean,\r\n\texcluded: boolean\r\n}\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tfilters: { truncateString },\r\n\tvalidations() {\r\n\t\treturn {\r\n\t\t\tnewFilter: {\r\n\t\t\t\ttitle: {\r\n\t\t\t\t\trequired,\r\n\t\t\t\t\tminLength: minLength(1),\r\n\t\t\t\t\tmaxLength: maxLength(250),\r\n\t\t\t\t\tvalidateDuplicate: formTitle => {\r\n\t\t\t\t\t\tconst title: undefined | string = get(this.filter, 'title')?.toLowerCase()\r\n\t\t\t\t\t\tconst isValidTitleEdit = title !== undefined\r\n\t\t\t\t\t\t\t && (!formTitle || removeWhiteSpace(formTitle) === removeWhiteSpace(title))\r\n\t\t\t\t\t\tif(isValidTitleEdit) return true\r\n\r\n\t\t\t\t\t\treturn this.allAvailableFilters\r\n\t\t\t\t\t\t\t.every(({ title }) => removeWhiteSpace(title) !== removeWhiteSpace(formTitle))\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t// if value is not empty - the operator is required\r\n\t\t\t\tpriorityOperator: {\r\n\t\t\t\t\trequired: requiredIf(function() {\r\n\t\t\t\t\t\treturn !isNaN(parseInt(this.newFilter.priorityValue, 10));\r\n\t\t\t\t\t})\r\n\t\t\t\t},\r\n\t\t\t\tnumberOfEventsOperator: {\r\n\t\t\t\t\trequired: requiredIf(function() {\r\n\t\t\t\t\t\treturn !isNaN(parseInt(this.newFilter.numberOfEventsValue, 10));\r\n\t\t\t\t\t})\r\n\t\t\t\t},\r\n\t\t\t\talarmAgeOperator: {\r\n\t\t\t\t\trequired: requiredIf(function() {\r\n\t\t\t\t\t\treturn !isNaN(parseInt(this.newFilter.alarmAgeValue, 10));\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\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\tVuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class AlarmQueueFilterEdit extends Vue {\r\n\t$refs!: {\r\n\t\tmodal: any;\r\n\t};\r\n\r\n\t@Prop(Object) filter: any;\r\n\t@Prop({ type: Array, default: () => [] }) allAvailableFilters: any[];\r\n\r\n\t@Eventqueue.Getter isNewFilterModalVisible: boolean;\r\n\t@Eventqueue.Getter routingGroups: RoutingGroup[];\r\n\t@Eventqueue.Getter alarmTags: AlarmTag[];\r\n\t@Eventqueue.Mutation setNewFilterModalShown: any;\r\n\t@Eventqueue.Action createAlarmQueueFilter: any;\r\n\t@Eventqueue.Action editAlarmQueueFilter: any;\r\n\t@Eventqueue.Action loadRoutingGroups: any;\r\n\t@Eventqueue.Action loadAlarmTags: any;\r\n\t@Eventqueue.Action setActiveFilter: any;\r\n\t@Eventqueue.Action fetchGroupsForFilter: any;\r\n\r\n \t// Getters\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n\tpublic defaultFilter: AlarmQueueFilterEditModel = {\r\n\t\ttitle: \"\",\r\n\t\tgroups: [],\r\n\t\tgroupID: null,\r\n\t\tpriorityValue: null,\r\n\t\tpriorityOperator: \"Greater than\",\r\n\t\tnumberOfEventsValue: null,\r\n\t\tnumberOfEventsOperator: \"Greater than\",\r\n\t\talarmTagID: null,\r\n\t\talarmAgeValue: null,\r\n\t\talarmAgeOperator: \"Greater than\",\r\n\t\tshared: false,\r\n\t\tcombinedFilters: false\r\n\t};\r\n\r\n\tpublic newFilter: any = {};\r\n\tpublic comparisonOperators: string[] = [\"Greater than\", \"Less than\", \"Equal to\"];\r\n\tpublic hasValidationErrors: boolean = false;\r\n\tpublic showErrorAnimation: boolean = false;\r\n\tpublic showAdvancedCriteria: boolean = false;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate areaList: AreaFilterItem[] = [];\r\n\r\n\t@Watch(\"isNewFilterModalVisible\")\r\n\tpublic onEventDetailsShownChanged(value: boolean) {\r\n\t\tif (value) {\r\n\t\t\tthis.prepareInitialData().then(() => {});\r\n\t\t\tthis.$refs.modal.show();\r\n\t\t} else {\r\n\t\t\tthis.$refs.modal.hide();\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"newFilter.title\")\r\n\tpublic onCallsignChanged(title: string) {\r\n\t\tthis.hasValidationErrors = !title.length;\r\n\t}\r\n\r\n\r\n\tprivate areaSelected(selectedArea: AreaNode): void {\r\n\t\tif (!selectedArea) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar groupIndex = this.areaList.findIndex((area: any) => area.id == selectedArea.id);\r\n\t\tif (groupIndex < 0 || groupIndex === null || groupIndex === undefined) {\r\n\t\t\tthis.areaList.push({\r\n\t\t\t\tid: selectedArea.id,\r\n\t\t\t\tlabel: selectedArea.label,\r\n\t\t\t\tinherited: !!selectedArea.children,\r\n\t\t\t\texcluded: false\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.areaList.splice(groupIndex, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get submitButtonTitle() {\r\n\t\treturn this.filter ? \"Save\" : \"Add\";\r\n\t}\r\n\r\n\tpublic get alarmTag() {\r\n\t\treturn typeof this.newFilter.alarmTagID === \"number\"\r\n\t\t\t? this.alarmTags.filter(tag => tag.responseAlarmTypeID === this.newFilter.alarmTagID)[0]\r\n\t\t\t: null;\r\n\t}\r\n\r\n\tpublic set alarmTag(value: AlarmTag | null) {\r\n\t\tthis.newFilter.alarmTagID = value ? value.responseAlarmTypeID : value;\r\n\t}\r\n\r\n\tpublic mounted() {\r\n\t\tthis.$v.$reset();\r\n\t\tthis.setNewFilterModalShown(false);\r\n\t\tthis.loadRoutingGroups();\r\n\t\tthis.loadAlarmTags();\r\n\t}\r\n\r\n\tpublic async prepareInitialData() {\r\n\t\tthis.newFilter = { ...this.defaultFilter };\r\n\r\n\t\tthis.areaList = [];\r\n\t\tif (this.filter) {\r\n\t\t\tthis.newFilter = {\r\n\t\t\t\t...this.newFilter,\r\n\t\t\t\t...this.filter\r\n\t\t\t};\r\n\r\n\t\t\tif (this.newFilter.groups) {\r\n\t\t\t\tconst filterGroups = await this.fetchGroupsForFilter(this.newFilter.alarmQueueFilterID);\r\n\t\t\t\tif (filterGroups) {\r\n\t\t\t\t\tthis.newFilter.groups.forEach((filterGroup: any) => {\r\n\t\t\t\t\t\tlet groups = filterGroups.filter((listGroup: { groupID: any; }) => listGroup.groupID == filterGroup.groupID);\r\n\t\t\t\t\t\tif (groups && groups.length > 0) {\r\n\t\t\t\t\t\t\tthis.areaList.push({\r\n\t\t\t\t\t\t\t\tid: filterGroup.groupID,\r\n\t\t\t\t\t\t\t\tlabel: groups[0].title,\r\n\t\t\t\t\t\t\t\tinherited: filterGroup.inherited,\r\n\t\t\t\t\t\t\t\texcluded: filterGroup.excluded\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.showAdvancedCriteria = true;\r\n\t\t}\r\n\t}\r\n\r\n\t@Emit(\"submit\")\r\n\tpublic async onSubmit() {\r\n\t\tif (this.isLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isLoading = true;\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.$v.$touch();\r\n\r\n\t\t\tif (this.$v.newFilter.$error) {\r\n\t\t\t\tthis.showErrorAnimation = true;\r\n\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.showErrorAnimation = false;\r\n\t\t\t\t}, this.$config.ANIMATION_DURATION);\r\n\t\t\t} else {\r\n\t\t\t\t//Map the groups to the required Api format\r\n\t\t\t\tthis.newFilter.groups = this.areaList.map((area: {id: number, inherited: boolean, excluded:boolean}) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tgroupID: area.id,\r\n\t\t\t\t\t\tinherited: area.inherited,\r\n\t\t\t\t\t\texcluded: area.excluded\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.newFilter.created = new Date().toISOString();\r\n\r\n\t\t\t\tconst saveFn = this.filter ? \"editAlarmQueueFilter\" : \"createAlarmQueueFilter\";\r\n\t\t\t\tconst alarmQueueFilterID = await this[saveFn](this.newFilter);\r\n\t\t\t\tthis.setNewFilterModalShown(false);\r\n\r\n\t\t\t\tthis.setActiveFilter({\r\n\t\t\t\t\tfilterId: alarmQueueFilterID,\r\n\t\t\t\t\tregionId: null\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn alarmQueueFilterID;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(ex)\r\n\t\t{\r\n\t\t\tthrow ex;\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\t@Emit(\"cancel\")\r\n\tpublic onCancel() {\r\n\t\tthis.setNewFilterModalShown(false);\r\n\t\tthis.$v.$reset()\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Getter Methods\r\n\tprivate get excludedFeatureEnabled(): boolean {\r\n\t\t\treturn this.getFeature([\"Alarms\", \"EventQueue\", \"ExcludedFilters\"]);\r\n\t\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueFilterEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueFilterEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmQueueFilterEdit.vue?vue&type=template&id=367688bc&scoped=true\"\nimport script from \"./AlarmQueueFilterEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmQueueFilterEdit.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmQueueFilterEdit.vue?vue&type=style&index=0&id=367688bc&prod&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 \"367688bc\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\nimport { AlarmQueueFilter, AlarmQueueFilterEditModel } from \"@/store/eventqueue/types\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport AlarmQueueFilterEdit from \"@/components/AlarmQueueFilterEdit.vue\";\r\n\r\nconst EventQueue = namespace(\"eventqueue\");\r\nconst Subscription = namespace(\"subscription\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"alarm-queue-filter-edit\": AlarmQueueFilterEdit,\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class AlarmQueueFilterTabs extends Vue {\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getFeaturesList: FeaturesList;\r\n\r\n\t@Subscription.Getter isSubscriptionActive: boolean;\r\n\t@EventQueue.Getter(\"getAlarmQueueFilters\") activeFilters!: AlarmQueueFilter[];\r\n\t@EventQueue.Getter getHandlingEvent: boolean;\r\n\t@EventQueue.Action fetchAlarmQueueFilters: () => Promise;\r\n\t@EventQueue.Action loadAvailableAlarmQueueFilters: () => Promise;\r\n\t@EventQueue.Action addAlarmQueueFilter: (params: object) => Promise;\r\n\t@EventQueue.Action removeAlarmQueueFilter: (params: object) => Promise;\r\n\t@EventQueue.Action deleteAlarmQueueFilter: (id: number) => Promise;\r\n\t@EventQueue.Action setActiveFilter: (params: object) => Promise;\r\n\r\n\t@EventQueue.Mutation setNewFilterModalShown: any;\r\n\r\n\t// Public to expose to tests\r\n\tpublic allAvailableFilters: AlarmQueueFilter[] = [];\r\n\tpublic filterSearch: string = \"\";\r\n\tpublic addingFilter = false;\r\n\tpublic filterToDelete = {};\r\n\tpublic editedFilter: AlarmQueueFilterEditModel = null;\r\n\tpublic modalShow = false;\r\n\r\n\tpublic async mounted(): Promise {\r\n\t\tthis.hideConfirmationModal();\r\n\t\tawait this.fetchAlarmQueueFilters();\r\n\t\tawait this.setAllAvailableFilters();\r\n\t}\r\n\r\n\tpublic async removeFilter(filter: AlarmQueueFilter): Promise {\r\n\t\tconst filterId = filter.alarmQueueFilterID;\r\n\t\tconst regionId = filter.regionID || 0;\r\n\r\n\t\tawait this.removeAlarmQueueFilter({ filterId, regionId });\r\n\t}\r\n\r\n\tprivate async setAllAvailableFilters(): Promise {\r\n\t\tconst filters = await this.loadAvailableAlarmQueueFilters();\r\n\t\tthis.$set(this, \"allAvailableFilters\", filters);\r\n\t}\r\n\r\n\tpublic editFilter(filter: AlarmQueueFilter): void {\r\n\t\t// @techdebt @todo delete after serverside implemetation\r\n\t\tconst editedFilter: AlarmQueueFilterEditModel = {\r\n\t\t\talarmQueueFilterID: filter.alarmQueueFilterID,\r\n\t\t\ttitle: filter.title,\r\n\t\t\tpriorityValue: filter.priorityHigherThan,\r\n\t\t\tpriorityOperator: this.capitalizeFirstLetter(filter.priorityHigherThanDDL),\r\n\t\t\tnumberOfEventsValue: filter.numberOfEvents,\r\n\t\t\tnumberOfEventsOperator: this.capitalizeFirstLetter(filter.numberOfEventsDDL),\r\n\t\t\talarmAgeValue: filter.olderThan,\r\n\t\t\talarmAgeOperator: this.capitalizeFirstLetter(filter.olderThanDDL),\r\n\t\t\talarmTagID: filter.responseAlarmTypeID,\r\n\t\t\tgroupID: filter.groups.length ? filter.groups[0].groupID : null,\r\n\t\t\tshared: filter.shared,\r\n\t\t\tcreated: filter.created,\r\n\t\t\tcombinedFilters: filter.combinedFilters,\r\n\t\t\tgroups: filter.groups\r\n\t\t};\r\n\r\n\t\tthis.$set(this, \"editedFilter\", editedFilter);\r\n\t\tthis.setNewFilterModalShown(true);\r\n\t}\r\n\r\n\tpublic async deleteFilter(id: number): Promise {\r\n\t\tawait this.deleteAlarmQueueFilter(id);\r\n\t\tthis.hideConfirmationModal();\r\n\t\tawait this.setAllAvailableFilters();\r\n\t}\r\n\r\n\tpublic selectFilter(filter: AlarmQueueFilter): void {\r\n\t\t// when changing filters clear out any selected rows\r\n\t\tthis.$emit('clearSelectedAlarms');\r\n\r\n\t\t// Update the store with the details of the filter\r\n\t\tconst data = {\r\n\t\t\tfilterId: filter.alarmQueueFilterID,\r\n\t\t\tregionId: filter.regionID\r\n\t\t};\r\n\t\tthis.setActiveFilter(data);\r\n\t}\r\n\r\n\tpublic resetFilterSearch(): void {\r\n\t\tthis.filterSearch = \"\";\r\n\t}\r\n\r\n\tpublic moveFilter(forward: boolean): void {\r\n\t\tif (!this.activeFilters || !this.activeFilters.length || this.activeFilters.length == 1)\r\n\t\t\treturn;\r\n\r\n\t\tconst indexOfCurrent = this.visibleFilters.findIndex(x => x.isActive);\r\n\t\tconst filterLength = this.visibleFilters.length - 1;\r\n\t\tlet newIndex = forward ? (indexOfCurrent + 1) : (indexOfCurrent - 1);\r\n\t\tnewIndex = newIndex < 0 ? (0) : (newIndex > filterLength ? filterLength : newIndex);\r\n\t\tthis.selectFilter(this.activeFilters[newIndex]);\r\n\t}\r\n\r\n\tpublic confirmDeleteFilter(filter: AlarmQueueFilter): void {\r\n\t\tthis.filterToDelete = filter;\r\n\t\tthis.modalShow = true;\r\n\t}\r\n\r\n\t// Gets the filters and sorts then alphabetically\r\n\tpublic get filteredFilters(): AlarmQueueFilter[] {\r\n\t\tconst titleWithRegion = (filter: AlarmQueueFilter) =>\r\n\t\t\tfilter.regionID > 0 ? `${filter.title} (${filter.regionTitle})` : filter.title;\r\n\t\tconst search = this.filterSearch.toLowerCase();\r\n\t\treturn this.availableFilters\r\n\t\t\t.filter(\r\n\t\t\t\tfilter =>\r\n\t\t\t\t\ttitleWithRegion(filter)\r\n\t\t\t\t\t\t.toLowerCase()\r\n\t\t\t\t\t\t.indexOf(search) > -1\r\n\t\t\t)\r\n\t\t\t.sort(function(a, b) {\r\n\t\t\t\tconst first = a.title.toUpperCase();\r\n\t\t\t\tconst second = b.title.toUpperCase();\r\n\t\t\t\treturn first < second ? -1 : first > second ? 1 : 0;\r\n\t\t\t});\r\n\t}\r\n\r\n\tpublic get visibleFilters(): AlarmQueueFilter[] {\r\n\t\treturn this.activeFilters.filter(filter => !filter.hide);\r\n\t}\r\n\r\n\tpublic get availableFilters(): AlarmQueueFilter[] {\r\n\t\treturn this.allAvailableFilters.filter(queueFilter => {\r\n\t\t\treturn (\r\n\t\t\t\tthis.activeFilters.findIndex(\r\n\t\t\t\t\tactiveFilter =>\r\n\t\t\t\t\t\tactiveFilter.alarmQueueFilterID === queueFilter.alarmQueueFilterID &&\r\n\t\t\t\t\t\tactiveFilter.regionID === queueFilter.regionID\r\n\t\t\t\t) == -1\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async newFilterSelected(filter: AlarmQueueFilter): Promise {\r\n\t\tthis.addingFilter = true;\r\n\r\n\t\tawait this.addAlarmQueueFilter({\r\n\t\t\tfilterId: filter.alarmQueueFilterID,\r\n\t\t\tregionId: filter.regionID || null\r\n\t\t});\r\n\r\n\t\tthis.addingFilter = false;\r\n\r\n\t\tthis.activeFilters.forEach(activeFilter => {\r\n\t\t\tif (activeFilter.alarmQueueFilterID == filter.alarmQueueFilterID &&\r\n\t\t\t\tactiveFilter.regionID == filter.regionID) {\r\n\t\t\t\tthis.selectFilter(activeFilter);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic onCancelFilterEditing(): void {\r\n\t\tthis.editedFilter = null;\r\n\t}\r\n\r\n\tpublic hideConfirmationModal(): void {\r\n\t\tthis.modalShow = false;\r\n\t}\r\n\r\n\tpublic capitalizeFirstLetter(str: string): string {\r\n\t\treturn str ? str.charAt(0).toUpperCase() + str.slice(1) : str;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueFilterTabs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueFilterTabs.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmQueueFilterTabs.vue?vue&type=template&id=6f125b8d\"\nimport script from \"./AlarmQueueFilterTabs.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmQueueFilterTabs.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Watch, Mixins } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Action } from \"vuex-class\";\r\nimport Multiselect from \"vue-multiselect\";\r\nimport ShortcutHelp from \"./ShortcutHelp.vue\";\r\nimport AlarmQueueFilterEdit from \"@/components/AlarmQueueFilterEdit.vue\";\r\nimport NavMenu from \"@/components/NavMenu.vue\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { UserPermissions, FeaturesList } from \"@/store/types\";\r\nimport RegionalHandlerMixin from \"@/mixins/RegionalHandlerMixin\";\r\nimport { get } from \"lodash\";\r\nimport {\r\n\tAlarmQueueFilterID,\r\n\tFilteredEvent,\r\n\tAlarmQueueFilter,\r\n\tEventQueueInfo,\r\n} from \"@/store/eventqueue/types\";\r\nimport AreaNotesFinder from \"@/components/area-notes/AreaNotesFinder.vue\";\r\nimport MaskingModalLauncher from \"@/components/alarm-masking/MaskingModalLauncher.vue\";\r\nimport SystemViewHealthFilter from '@/components/system-view/SystemViewHealthFilter.vue';\r\nimport AlarmQueueFilterTabs from \"@/components/AlarmQueueFilterTabs.vue\";\r\nimport userApi from \"@/services/api.user.service\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst ManualRaiseStore = namespace(\"manualRaise\");\r\nconst Subscription = namespace(\"subscription\");\r\nconst AlarmPoints = namespace(\"alarmPoints\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tmultiselect: Multiselect,\r\n\t\t\"shortcut-help\": ShortcutHelp,\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar,\r\n\t\t\"nav-menu\": NavMenu,\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"area-notes-finder\": AreaNotesFinder,\r\n\t\t\"masking-modal-launcher\": MaskingModalLauncher,\r\n\t\t\"system-view-health-filter\": SystemViewHealthFilter,\r\n\t\t\"alarm-queue-filter-tabs\": AlarmQueueFilterTabs,\r\n\t}\r\n})\r\nexport default class AlarmQueueHeader extends Mixins(RegionalHandlerMixin) {\r\n\r\n\t$refs!: {\r\n\t\tdeleteFilterConfirmation: any;\r\n\t\tareaNotesFinder: AreaNotesFinder;\r\n\t};\r\n\r\n\t@Getter getFeature: (featuresList: string[]) => boolean;\r\n\r\n\t@Eventqueue.Getter(\"getActiveEvents\") events!: FilteredEvent[];\r\n\t@Eventqueue.Getter(\"getActiveFilterID\") currentFilterID!: AlarmQueueFilterID;\r\n\t@Eventqueue.Getter(\"getAlarmQueueFilters\") activeFilters!: AlarmQueueFilter[];\r\n\t@Eventqueue.Getter(\"getLastUpdatedEvents\") eventsLastUpdated!: number;\r\n\t@Eventqueue.Getter(\"getUserZone\") userZone!: any;\r\n\t@Eventqueue.Getter getHandlingEvent: boolean;\r\n\t@Eventqueue.Getter(\"getBulkHandleShown\") bulkHandleShown!: boolean;\r\n\r\n\t@Eventqueue.State(\"activeAlarmCount\") private activeAlarmCount: number;\r\n\t@Eventqueue.State(\"eventQueueUpdateInfoHistory\") private eventQueueInfo: EventQueueInfo[];\r\n\r\n\t@Eventqueue.Mutation setActivityLogShown: any;\r\n\t@Eventqueue.Mutation setManualPatrolShown: any;\r\n\t@Eventqueue.Mutation setManualActionShown: any;\r\n\t@Eventqueue.Mutation setBulkHandleShown: (shown: boolean) => void;\r\n\t@Eventqueue.Mutation setSelectedAlarms: (data: number[]) => void;\r\n\t@Eventqueue.Mutation setAllAlarmsSelected: (allSelected: boolean) => void;\r\n\t@Eventqueue.Mutation setVirtualOperatorControlPanelShown: (open: boolean) => void;\r\n\r\n\t@Eventqueue.Action fetchEventQueue: any;\r\n\t@Eventqueue.Action loadAvailableAlarmQueueFilters: any;\r\n\t@Eventqueue.Action addAlarmQueueFilter: any;\r\n\t@Eventqueue.Action removeAlarmQueueFilter: any;\r\n\t@Eventqueue.Action eventHandleTop: any;\r\n\t@Eventqueue.Action deleteAlarmQueueFilter: any;\r\n\r\n\t// Getter and action for toggling the map' display.\r\n\t@Eventqueue.Action setHideMapFlag: any;\r\n\t@Eventqueue.Getter(\"getHideMapFlag\") hideMapFlag: boolean;\r\n\r\n\t@ManualRaiseStore.Mutation setManualRaiseShown: (visible: boolean) => void;\r\n\r\n\t@AlarmPoints.Mutation setAlarmPointManagerOpen: (open: boolean) => void;\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter(\"getActiveRegion\") activeRegion: any;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter getUserTenantGroupId: number;\r\n\r\n\t@Action serverLogout: any;\r\n\t@Action logout: () => void;\r\n\r\n\t@Subscription.Getter isSubscriptionActive: boolean;\r\n\t@Subscription.Action fetchSubscription: (id: number) => Promise;\r\n\r\n\tpublic updateInterval: any;\r\n\tpublic stopped = false;\r\n\r\n\tprivate isUpdateInProgress = false;\r\n\tprivate isAreaNotesMousedOver = false;\r\n\tprivate lastUpdatedCheckTimer: any = null;\r\n\tprivate hasAlarmSoundBeenTriggered: boolean = false;\r\n\tprivate isAlarmSoundQueued: boolean = false;\r\n\r\n\tprivate groupId: number | null = null;\r\n\r\n\tprivate get isQuickControlEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"QuickControl\"]) && this.getPermissions.canAccessQuickControl;\r\n\t}\r\n\r\n\tprivate get isSystemViewHealthEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"SystemView\",\"EventQueueFilter\"]) && (this.getPermissions.canViewSystemView || this.getPermissions.isSystemAdmin);\r\n\t}\r\n\r\n\tpublic get debugMode() {\r\n\t\treturn get(this.featuresList, [\"DebugMode\"]);\r\n\t}\r\n\r\n\tget activeEventsCount(): number {\r\n\t\treturn this.activeFilters.length ? this.activeFilters[0].activeAlarmCount : 0;\r\n\t}\r\n\r\n\tpublic get virtualOperatorsEnabled() {\r\n\t\treturn get(this.featuresList, [\"AI\", \"VirtualOperators\"]) && this.getPermissions.canUseVirtualOperators;\r\n\t}\r\n\r\n\tpublic get siteMonitorEnabled() {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\"]);\r\n\t}\r\n\r\n\tpublic get isActivityLogEnabled() {\r\n\t\treturn get(this.featuresList, [\"ActivityLog\"]);\r\n\t}\r\n\r\n\tpublic get isManualTourEnabled() {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventQueue\", \"ManualTour\"]);\r\n\t}\r\n\r\n\tprivate get isAreaNotesEnabled() {\r\n\t\treturn get(this.featuresList, [\"AreaNotes\"]) && get(this.featuresList, [\"AreaNotes\", \"Icons\"]);\r\n\t}\r\n\r\n\t// Feature flag for map display toggling functionality.\r\n\tprivate get isToggleMapEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"Maps\", \"ToggleEventQueue\"]);\r\n\t}\r\n\r\n\tpublic get bulkHandleEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventQueue\", \"EndMultipleEvents\"]);\r\n\t}\r\n\r\n\tpublic get bulkHandlePermission(): boolean {\r\n\t\treturn this.getPermissions.canEndMultipleEvents;\r\n\t}\r\n\r\n\tpublic get eventBulkHandleAllowed(): boolean {\r\n\t\treturn this.bulkHandleEnabled && this.bulkHandlePermission;\r\n\t}\r\n\r\n\t@Watch(\"eventsLastUpdated\")\r\n\tpublic onEventsChanged() {\r\n\t\tif (this.events == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.events.filter(q => q.eventTypeID == 1 && !q.inProcessing && q.unParkAt == null).length > 0) {\r\n\t\t\tthis.makeAlarm();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.hasAlarmSoundBeenTriggered = false;\r\n\t\t\tthis.isAlarmSoundQueued = false;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"activeRegion\", { deep: true })\r\n\tpublic onActiveRegionChanged(newRegion: any, oldRegion: any) {\r\n\t\t// If we're switching to a non-local region (regionID not 0)\r\n\t\tif (newRegion.regionId !== 0) {\r\n\t\t\t// Stop polling, as we don't have perms to fetch the event queue\r\n\t\t\tthis.stopped = true;\r\n\t\t} else {\r\n\t\t\tthis.stopped = false;\r\n\t\t\tthis.updateInterval = setTimeout(this.update, 2000);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async mounted(): Promise {\r\n\t\tthis.stopped = false;\r\n\r\n\t\t// @refactor messy as hell, investigate a single call to `this.update` and\r\n\t\t// reduce number of mutaitons, re-work state to be less \"flat\",\r\n\t\t// complicated selections can be done with getters.\r\n\t\tthis.updateInterval = setTimeout(this.update, 2000);\r\n\t\tthis.lastUpdatedCheckTimer = setInterval(() => this.checkLastUpdated(), 5000);\r\n\r\n\t\tawait this.fetchSubscription(this.getUserTenantGroupId);\r\n\t\tawait this.onGroupIdChanged();\r\n\t}\r\n\r\n\tprivate checkLastUpdated(): void {\r\n\t\t//Throw if the events haven't been updated in the last 5 seconds\r\n\t\tconst timeToCheck = Date.now() - 5000;\r\n\t\tif(this.eventsLastUpdated && (this.eventsLastUpdated < timeToCheck))\r\n\t\t\tthrow \"EventQueueDelay [\" + new Date().toUTCString() + \"] \" + this.lastUpdatedString;\r\n\t}\r\n\r\n\tprivate get lastUpdatedString(): string {\r\n\t\treturn new Date(this.eventsLastUpdated).toLocaleDateString() + \" \" + new Date(this.eventsLastUpdated).toLocaleTimeString()\r\n\t}\r\n\r\n\tprivate beforeDestroy(): void {\r\n\t\tclearInterval(this.lastUpdatedCheckTimer);\r\n\t\tthis.lastUpdatedCheckTimer = null;\r\n\t}\r\n\r\n\tpublic async update(): Promise {\r\n\t\tif (!this.stopped && !this.isUpdateInProgress) {\r\n\t\t\tconst before = performance.now();\r\n\t\t\ttry {\r\n\t\t\t\tthis.isUpdateInProgress = true;\r\n\t\t\t\tawait this.fetchEventQueue();\r\n\t\t\t\tthis.isUpdateInProgress = false;\r\n\t\t\t} catch (ex) {\r\n\t\t\t\tconsole.error(ex);\r\n\t\t\t}\r\n\r\n\t\t\tconst after = performance.now();\r\n\t\t\tconst timeTaken = after - before;\r\n\r\n\t\t\tthis.updateInterval = setTimeout(this.update, Math.max(10, 2000 - timeTaken));\r\n\t\t} else {\r\n\t\t\tif (this.updateInterval != null) {\r\n\t\t\t\tclearTimeout(this.updateInterval);\r\n\t\t\t\tthis.updateInterval = null;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic makeAlarm(): void {\r\n\t\tif (process.env.VUE_APP_ALARM_BLINKING_ENABLED) {\r\n\t\t\tdocument.body.classList.add(\"alarm-body\");\r\n\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tif (document.body.classList.contains(\"alarm-body\")) {\r\n\t\t\t\t\tdocument.body.classList.remove(\"alarm-body\");\r\n\t\t\t\t}\r\n\t\t\t}, 1000);\r\n\t\t}\r\n\r\n\t\tif (process.env.VUE_APP_ALARM_AUDIO_ENABLED && this.activeEventsCount) {\r\n\t\t\ttry {\r\n\t\t\t\tconst audio = document.getElementById(\"alarmSound\");\r\n\t\t\t\tif (this.hasAlarmSoundBeenTriggered) {\r\n\t\t\t\t\taudio && (audio as HTMLAudioElement).play()\r\n\t\t\t\t}\r\n\t\t\t\tif (!this.hasAlarmSoundBeenTriggered && !this.isAlarmSoundQueued) {\r\n\t\t\t\t\tthis.isAlarmSoundQueued = true;\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tif (this.isAlarmSoundQueued) {\r\n\t\t\t\t\t\t\taudio && (audio as HTMLAudioElement).play();\r\n\t\t\t\t\t\t\tthis.hasAlarmSoundBeenTriggered = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, 5000);\r\n\t\t\t\t}\r\n\t\t\t} catch {\r\n\t\t\t\tconsole.log(\"Error playing alarm sound\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic destroyed(): void {\r\n\t\tthis.stopped = true;\r\n\t\tthis.isAlarmSoundQueued = false;\r\n\t\tif (this.updateInterval != null) {\r\n\t\t\tclearInterval(this.updateInterval);\r\n\t\t\tthis.updateInterval = null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async logoutUser(): Promise {\r\n\t\tawait this.serverLogout();\r\n\t\tthis.logout();\r\n\t}\r\n\r\n\t// Clears the selectedAlarms\r\n\tpublic clearSelectedAlarms(): void {\r\n\t\tthis.setSelectedAlarms([]);\r\n\t\t// not totally needed but ensure no lag in the UI updating the SelectAll checkbox\r\n\t\tthis.setAllAlarmsSelected(false);\r\n\t}\r\n\r\n\t// Called when the BulkHandle button is clicked.\r\n\t// calls the store action, inverting the value currently stored in the store state\r\n\tpublic toggleBulkHandle(): void {\r\n\t\tthis.setBulkHandleShown(!this.bulkHandleShown);\r\n\r\n\t\t// when either showing or hiding the bulk realted controls\r\n\t\t// clear out any selected rows\r\n\t\tthis.clearSelectedAlarms();\r\n\t}\r\n\r\n\tpublic manualPatrolOpen(): void {\r\n\t\tthis.setManualPatrolShown(true);\r\n\t}\r\n\r\n\tpublic virtualOperatorControlPanelOpen() {\r\n\t\tthis.setVirtualOperatorControlPanelShown(true);\r\n\t}\r\n\r\n\tpublic manualRaiseOpen() {\r\n\t\t// Show map if hidden.\r\n\t\tif(this.isToggleMapEnabled) {\r\n\t\t this.setHideMapFlag(false);\r\n\t\t}\r\n\t\tthis.setManualRaiseShown(true);\r\n\t}\r\n\r\n\tpublic activityLogOpen() {\r\n\t\tthis.setActivityLogShown(true);\r\n\t}\r\n\r\n\tpublic manualActionOpen() {\r\n\t\tthis.setManualActionShown(true);\r\n\t}\r\n\r\n\tprivate logEventQueueHistory(): void {\r\n\t\tif(!this.debugMode)\r\n\t\t\treturn;\r\n\t\tthrow \"EventQueueHistory \" + JSON.stringify(this.eventQueueInfo);\r\n\t}\r\n\r\n\tprivate alarmPointsOpen(): void {\r\n\t\tthis.setAlarmPointManagerOpen(true);\r\n\t}\r\n\r\n\tprivate get isOnTestEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"AlarmPoints\", \"OnTest\"]) && !!this.getPermissions.canPutAlarmPointsOnTest;\r\n\t}\r\n\r\n\tprivate get isAlarmMaskingEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"Masking\"]) &&\r\n\t\t\t(this.getPermissions.canDisarmSites || this.getPermissions.canDisarmSitesExtended);\r\n\t}\r\n\r\n\t@Watch(\"userZone.GroupID\")\r\n\tprivate async onGroupIdChanged() : Promise {\r\n\t\tif (!this.userZone || !this.userZone.groupID) {\r\n\t\t\tthis.groupId = null;\r\n\t\t}\r\n\r\n\t\tconst userHasPermission = await userApi.checkUserHasPermissionToGroup(this.userZone.groupID);\r\n\t\tthis.groupId = userHasPermission ? this.userZone.groupID : null;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueHeader.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmQueueHeader.vue?vue&type=template&id=252d91bc&scoped=true\"\nimport script from \"./AlarmQueueHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmQueueHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmQueueHeader.vue?vue&type=style&index=0&id=252d91bc&prod&scoped=true&lang=scss\"\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 \"252d91bc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"footer-container\"},[_c('b-button',{staticClass:\"m-b-10 m-t-10 toggle-button\",attrs:{\"size\":\"sm\",\"block\":\"\",\"variant\":_vm.isQueueDetailShown ? 'secondary' : 'primary'},on:{\"click\":function($event){_vm.isQueueDetailShown = !_vm.isQueueDetailShown}}},[_c('i',{staticClass:\"fa\",class:_vm.isQueueDetailShown ? 'fa-angle-double-down' : 'fa-angle-double-up'})]),_c('b-tabs',{staticClass:\"max-h-30\",attrs:{\"content-class\":\"footer-content\"}},[(_vm.isProcessingTabEnabled)?_c('b-tab',{attrs:{\"data-cy\":\"tab-processing\"},on:{\"click\":function($event){_vm.isQueueDetailShown = true}},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Processing \"),(_vm.processingEventCount > 0)?_c('b-badge',{attrs:{\"title\":_vm.processingEventCount + ' events in processing'}},[_vm._v(\" \"+_vm._s(_vm.processingEventCount)+\" \")]):_vm._e()]},proxy:true}],null,false,1018109827)},[_c('b-collapse',{attrs:{\"visible\":\"\",\"id\":\"footer-collapse\"},model:{value:(_vm.isQueueDetailShown),callback:function ($$v) {_vm.isQueueDetailShown=$$v},expression:\"isQueueDetailShown\"}},[_c('processing-queue',{staticClass:\"queueBox\",attrs:{\"id\":\"ProcessingQueue\"}})],1)],1):_vm._e(),_c('b-tab',{on:{\"click\":function($event){_vm.isQueueDetailShown = true}},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Parked \"),(_vm.parkedEventCount > 0)?_c('b-badge',{attrs:{\"title\":_vm.parkedEventCount + ' events parked'}},[_vm._v(\" \"+_vm._s(_vm.parkedEventCount)+\" \")]):_vm._e()]},proxy:true}])},[_c('b-collapse',{attrs:{\"visible\":\"\",\"id\":\"footer-collapse\"},model:{value:(_vm.isQueueDetailShown),callback:function ($$v) {_vm.isQueueDetailShown=$$v},expression:\"isQueueDetailShown\"}},[_c('parked-queue',{attrs:{\"id\":\"ParkedQueue\"}})],1)],1),(_vm.isTourTabEnabled)?_c('b-tab',{attrs:{\"data-cy\":\"alarm-queue-footer-tab-manual-tours\"},on:{\"click\":function($event){_vm.isQueueDetailShown = true}},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Tours \"),(_vm.patrolEventCount > 0)?_c('b-badge',{attrs:{\"title\":_vm.patrolEventCount + ' events parked'}},[_vm._v(\" \"+_vm._s(_vm.patrolEventCount)+\" \")]):_vm._e()]},proxy:true}],null,false,3565395965)},[_c('b-collapse',{attrs:{\"visible\":\"\",\"id\":\"footer-collapse\"},model:{value:(_vm.isQueueDetailShown),callback:function ($$v) {_vm.isQueueDetailShown=$$v},expression:\"isQueueDetailShown\"}},[_c('patrol-queue',{staticClass:\"queueBox\",attrs:{\"id\":\"PatrolsQueue\"}})],1)],1):_vm._e(),(_vm.isOnTestEnabled)?_c('b-tab',{attrs:{\"data-cy\":\"alarm-queue-footer-tab-on-test\"}},[_c('template',{slot:\"title\"},[_vm._v(\" On Test \"),(_vm.onTestEventCount > 0)?_c('span',{staticClass:\"badge badge-secondary\",attrs:{\"title\":_vm.onTestEventCount + ' tests'}},[_vm._v(\" \"+_vm._s(_vm.onTestEventCount)+\" \")]):_vm._e()]),_c('b-collapse',{attrs:{\"visible\":\"\",\"id\":\"footer-collapse\"}},[_c('ontest-queue',{staticClass:\"queueBox\",attrs:{\"id\":\"OnTestQueue\"}})],1)],2):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VuePerfectScrollbar',[_c('table',{staticClass:\"table table-striped table-hover\"},[_c('thead',[_c('tr',[_c('th',{staticClass:\"time\"},[_vm._v(\"Time\")]),_c('th',[_vm._v(\"Location\")]),_c('th',[_vm._v(\"Status\")]),(_vm.resetOnTourEnabled)?_c('th',[_vm._v(\"Actions\")]):_vm._e()])]),_c('tbody',[_vm._l((_vm.events),function(event){return _c('tr',{key:event.regionalEventID,staticClass:\"clickable-row\",attrs:{\"id\":event.eventID,\"eventid\":event.eventID},on:{\"click\":function($event){return _vm.handleEventQueueItem(event, undefined, undefined, 'Picked up from patrol queue')}}},[_c('td',[_vm._v(_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(event.created)))]),_c('td',[_vm._v(\" \"+_vm._s(event.groupTitle)+\" \"),(event.regionID === 0)?_c('event-queue-area-info-icon',{attrs:{\"event\":event,\"groupId\":event.groupID}}):_vm._e()],1),_c('td',[_vm._v(_vm._s(event.inProcessing ? \"Active\" : \"Paused\"))]),(_vm.resetOnTourEnabled)?_c('td',[_c('div',{staticClass:\"m-r-10 d-inline-flex\"},[_c('span',[_c('reset-actions-ccure',{attrs:{\"event\":event}})],1)])]):_vm._e()])}),(_vm.noEvents)?_c('tr',[_c('td',{attrs:{\"colspan\":\"5\"}},[_vm._v(\"There are no tours.\")])]):_vm._e()],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport RegionalHandlerMixin from \"@/mixins/RegionalHandlerMixin\";\r\nimport { FilteredEvent } from \"@/store/eventqueue/types\";\r\nimport EventQueueAreaInfoIcon from \"@/components/event-queue/EventQueueAreaInfoIcon.vue\";\r\nimport ResetActionsCCure from \"@/components/ResetActionsCCure.vue\";\r\nimport { get } from \"lodash\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar,\r\n\t\t\"event-queue-area-info-icon\": EventQueueAreaInfoIcon,\r\n\t\t\"reset-actions-ccure\": ResetActionsCCure\r\n\t}\r\n})\r\nexport default class PatrolQueue extends Mixins(RegionalHandlerMixin) {\r\n\t@Eventqueue.Getter getActiveEvents!: FilteredEvent[];\r\n\t@Eventqueue.Mutation setCountByType: any;\r\n\r\n\tpublic get events(): FilteredEvent[] {\r\n\t\tlet events = this.getActiveEvents;\r\n\r\n\t\tif (events == null) return null;\r\n\r\n\t\tlet filteredEvents = events.filter((q: any) => q.eventTypeID == 2 || q.eventTypeID == 3);\r\n\t\tthis.setCountByType({ countType: \"patrols\", count: filteredEvents.length });\r\n\r\n\t\treturn filteredEvents;\r\n\t}\r\n\r\n\tpublic get noEvents() {\r\n\t\treturn typeof this.events == \"undefined\" || this.events == null || this.events.length == 0;\r\n\t}\r\n\r\n\tpublic get resetOnTourEnabled() {\r\n\t\t// We use lodash here as native ES does not have null propagation\r\n\t\treturn get(this.featuresList, [\"Integration\", \"CCure\", \"UI\", \"ResetOnTour\"]);\r\n\t}\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PatrolQueue.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PatrolQueue.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PatrolQueue.vue?vue&type=template&id=1c8544e3&scoped=true\"\nimport script from \"./PatrolQueue.vue?vue&type=script&lang=ts\"\nexport * from \"./PatrolQueue.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PatrolQueue.vue?vue&type=style&index=0&id=1c8544e3&prod&scoped=true&lang=scss\"\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 \"1c8544e3\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('table',{staticClass:\"table table-striped table-hover\"},[_c('thead',[_c('tr',[_c('th',{staticClass:\"time\"},[_vm._v(\"Time\")]),_c('th',[_vm._v(\"Location\")]),_c('th',[_vm._v(\"Event\")]),_c('th',[_vm._v(\"User\")]),(_vm.isEventPeekEnabled)?_c('th',[_vm._v(\"Actions\")]):_vm._e()])]),(_vm.isSubscriptionActive)?_c('tbody',{attrs:{\"data-cy\":\"processing-queue-tbody\"}},[_vm._l((_vm.events),function(event){return _c('tr',{key:event.regionalEventID,staticClass:\"clickable-row\",attrs:{\"id\":event.eventID,\"eventid\":event.eventID},on:{\"click\":function($event){return _vm.handleEventQueueItem(event, true, undefined, 'Picked up from processing queue')},\"mouseover\":function($event){return _vm.hoverEvent(event)},\"mouseleave\":function($event){return _vm.unhoverEvent(event)}}},[_c('td',[_vm._v(_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(event.created)))]),_c('td',[_vm._v(\" \"+_vm._s(event.groupTitle)+\" \"),(event.regionID === 0)?_c('event-queue-area-info-icon',{attrs:{\"event\":event,\"groupId\":event.groupID}}):_vm._e()],1),_c('td',[_vm._v(_vm._s(event.eventTitle))]),_c('td',[_vm._v(_vm._s(event.username))]),(_vm.isEventPeekEnabled)?_c('td',[(_vm.isEventPeekEnabled && event.eventID)?_c('i',{staticClass:\"far fa-file-search icon-label clickable\",attrs:{\"id\":'peek-icon' + event.eventID,\"tabindex\":\"0\",\"title\":\"Peek\",\"data-cy\":\"peek-icon\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.peekEvent(event.eventID)}}}):_vm._e(),(_vm.isEventPeekEnabled && event.eventID)?_c('b-tooltip',{attrs:{\"target\":'peek-icon' + event.eventID,\"triggers\":\"hover\",\"variant\":\"primary\",\"placement\":\"left\"}},[_vm._v(\" Peek \")]):_vm._e()],1):_vm._e()])}),(_vm.noEvents)?_c('tr',[_c('td',{attrs:{\"colspan\":\"6\"}},[_vm._v(\"There are no events being processed.\")])]):_vm._e()],2):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport RegionalHandlerMixin from \"../mixins/RegionalHandlerMixin\";\r\nimport { FilteredEvent } from \"@/store/eventqueue/types\";\r\nimport EventQueueAreaInfoIcon from \"@/components/event-queue/EventQueueAreaInfoIcon.vue\";\r\nimport { get } from \"lodash\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst Subscription = namespace(\"subscription\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"event-queue-area-info-icon\": EventQueueAreaInfoIcon\r\n\t}\r\n})\r\nexport default class ProcessingQueue extends Mixins(RegionalHandlerMixin) {\r\n\r\n\t@Eventqueue.Getter getActiveEvents!: FilteredEvent[];\r\n\t@Eventqueue.Action loadEventHandleAllowInProcessing: any;\r\n\t@Eventqueue.Mutation setCountByType: any;\r\n\t@Eventqueue.Mutation setHoverEvent: any;\r\n\t@Eventqueue.Mutation setPeekEventId: (eventId: number | null) => void;\r\n\t@Subscription.Getter isSubscriptionActive: boolean;\r\n\r\n\tprivate peekEvent(eventId: number): void {\r\n\t\tthis.setPeekEventId(eventId);\r\n\t}\r\n\r\n\tpublic get events(): FilteredEvent[] {\r\n\t\tif (this.getActiveEvents == null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet filteredEvents = this.getActiveEvents.filter((q: any) => q.eventTypeID == 1 && q.inProcessing == 1);\r\n\t\tthis.setCountByType({\r\n\t\t\tcountType: \"inProcess\",\r\n\t\t\tcount: filteredEvents.length\r\n\t\t});\r\n\r\n\t\treturn filteredEvents;\r\n\t}\r\n\r\n\tpublic hoverEvent(event: FilteredEvent) {\r\n\t\tthis.setHoverEvent(event);\r\n\t}\r\n\r\n\tpublic unhoverEvent(event: FilteredEvent) {\r\n\t\tthis.setHoverEvent({});\r\n\t}\r\n\r\n\tpublic get noEvents() {\r\n\t\treturn typeof this.events == \"undefined\" || this.events == null || this.events.length == 0;\r\n\t}\r\n\r\n\tprivate get isEventPeekEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventQueue\", \"Peek\"], false);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessingQueue.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessingQueue.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProcessingQueue.vue?vue&type=template&id=068f1cee&scoped=true\"\nimport script from \"./ProcessingQueue.vue?vue&type=script&lang=ts\"\nexport * from \"./ProcessingQueue.vue?vue&type=script&lang=ts\"\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 \"068f1cee\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VuePerfectScrollbar',[_c('table',{staticClass:\"table table-striped table-hover\"},[_c('thead',[_c('tr',[_c('th',{staticClass:\"time\"},[_vm._v(\"Time\")]),_c('th',[_vm._v(\"Location\")]),_c('th',[_vm._v(\"Event\")]),_c('th',[_vm._v(\"Parked Until\")]),_c('th',[_vm._v(\"Parked By\")]),(_vm.parkedNoteEnabled)?_c('th',[_vm._v(\"Parked Note\")]):_vm._e(),(_vm.resetOnParkedEnabled || _vm.isEventPeekEnabled)?_c('th',[_vm._v(\"Actions\")]):_vm._e()])]),(_vm.isSubscriptionActive)?_c('tbody',{attrs:{\"data-cy\":\"parked-queue-tbody\"}},[_vm._l((_vm.events),function(event){return _c('tr',{key:event.regionalEventID,staticClass:\"clickable-row\",attrs:{\"id\":event.eventID,\"eventid\":event.eventID},on:{\"mouseover\":function($event){return _vm.hoverEvent(event)},\"mouseleave\":function($event){return _vm.unhoverEvent(event)},\"click\":function($event){return _vm.handleEventQueueItem(event, undefined, undefined, 'Picked up from parked queue')}}},[_c('td',[_vm._v(_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(event.created)))]),_c('td',[_vm._v(\" \"+_vm._s(event.groupTitle)+\" \"),(event.regionID === 0)?_c('event-queue-area-info-icon',{attrs:{\"event\":event,\"groupId\":event.groupID}}):_vm._e()],1),_c('td',[_vm._v(_vm._s(event.eventTitle))]),_c('td',[_vm._v(_vm._s(_vm.displayUnParkAt(event.unParkAt)))]),_c('td',[_vm._v(_vm._s(event.username))]),(_vm.parkedNoteEnabled)?_c('td',{attrs:{\"title\":event.parkedNote}},[_vm._v(_vm._s(event.parkedNote))]):_vm._e(),_c('td',[_c('div',{staticClass:\"m-r-10 d-inline-flex\"},[_c('span',[(_vm.resetOnParkedEnabled)?_c('reset-actions-ccure',{attrs:{\"event\":event}}):_vm._e(),(_vm.isEventPeekEnabled && event.eventID)?_c('i',{staticClass:\"far fa-file-search icon-label clickable\",attrs:{\"id\":'peek-icon' + event.eventID,\"tabindex\":\"0\",\"title\":\"Peek\",\"data-cy\":\"peek-icon\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.peekEvent(event.eventID)}}}):_vm._e(),(_vm.isEventPeekEnabled && event.eventID)?_c('b-tooltip',{attrs:{\"target\":'peek-icon' + event.eventID,\"triggers\":\"hover\",\"variant\":\"primary\",\"placement\":\"left\"}},[_vm._v(\" Peek \")]):_vm._e()],1)])])])}),(_vm.noEvents)?_c('tr',[_c('td',{attrs:{\"colspan\":\"8\"}},[_vm._v(\"There are no parked events.\")])]):_vm._e()],2):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport RegionalHandlerMixin from \"@/mixins/RegionalHandlerMixin\";\r\nimport EventQueueAreaInfoIcon from \"@/components/event-queue/EventQueueAreaInfoIcon.vue\";\r\nimport ResetActionsCCure from \"@/components/ResetActionsCCure.vue\";\r\nimport { FilteredEvent } from \"@/store/eventqueue/types\";\r\nimport { get } from \"lodash\";\r\nimport { FeaturesList } from \"@/store/types\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst Subscription = namespace(\"subscription\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar,\r\n\t\t\"event-queue-area-info-icon\": EventQueueAreaInfoIcon,\r\n\t\t\"reset-actions-ccure\": ResetActionsCCure\r\n\t}\r\n})\r\nexport default class ParkedQueue extends Mixins(RegionalHandlerMixin) {\r\n\t@Eventqueue.Getter getActiveEvents!: FilteredEvent[];\r\n\t@Eventqueue.Mutation setCountByType: any;\r\n\t@Eventqueue.Mutation setHoverEvent: any;\r\n\t@Eventqueue.Mutation setPeekEventId: (eventId: number | null) => void;\r\n\t@Subscription.Getter isSubscriptionActive: boolean;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\tprivate peekEvent(eventId: number): void {\r\n\t\tthis.setPeekEventId(eventId);\r\n\t}\r\n\r\n\tpublic get parkedNoteEnabled() {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventQueue\", \"ParkedNote\"]);\r\n\t}\r\n\r\n\tpublic get events(): FilteredEvent[] {\r\n\t\tlet events = this.getActiveEvents;\r\n\r\n\t\tif (events == null) return null;\r\n\r\n\t\tlet filteredEvents = events.filter((q: any) => q.eventTypeID == 1 && q.inProcessing == 0 && q.unParkAt != null);\r\n\t\tthis.setCountByType({\r\n\t\t\tcountType: \"parked\",\r\n\t\t\tcount: filteredEvents.length\r\n\t\t});\r\n\r\n\t\treturn filteredEvents;\r\n\t}\r\n\r\n\tpublic hoverEvent(event: FilteredEvent) {\r\n\t\tthis.setHoverEvent(event);\r\n\t}\r\n\r\n\tpublic unhoverEvent(event: FilteredEvent) {\r\n\t\tthis.setHoverEvent({});\r\n\t}\r\n\r\n\tpublic get noEvents() {\r\n\t\treturn typeof this.events == \"undefined\" || this.events == null || this.events.length == 0;\r\n\t}\r\n\r\n\tpublic get resetOnParkedEnabled() {\r\n\t\t// We use lodash here as native ES does not have null propagation\r\n\t\treturn get(this.featuresList, [\"Integration\", \"CCure\", \"UI\", \"ResetOnParked\"]);\r\n\t}\r\n\r\n\tprivate get isEventPeekEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventQueue\", \"Peek\"], false);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParkedQueue.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ParkedQueue.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ParkedQueue.vue?vue&type=template&id=4da6b27b&scoped=true\"\nimport script from \"./ParkedQueue.vue?vue&type=script&lang=ts\"\nexport * from \"./ParkedQueue.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ParkedQueue.vue?vue&type=style&index=0&id=4da6b27b&prod&scoped=true&lang=scss\"\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 \"4da6b27b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VuePerfectScrollbar',[_c('table',{staticClass:\"table table-striped table-hover\"},[_c('thead',[_c('tr',[_c('th',{staticClass:\"time\"},[_vm._v(\"Started\")]),_c('th',[_vm._v(\"Location\")]),_c('th',[_vm._v(\"Alarm Point\")]),_c('th',[_vm._v(\"On Test Until\")]),_c('th',[_vm._v(\"Test Type\")]),_c('th',[_vm._v(\"Test Note\")])])]),_c('tbody',[_vm._l((_vm.events),function(event){return _c('tr',{key:event.eventID,staticClass:\"clickable-row\",attrs:{\"id\":event.eventID,\"eventid\":event.eventID},on:{\"mouseover\":function($event){return _vm.hoverEvent(event)},\"mouseleave\":function($event){return _vm.unhoverEvent(event)},\"click\":function($event){return _vm.handleEventQueueItem(event, undefined, undefined, 'Picked up from on test queue')}}},[_c('td',[_vm._v(_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(event.created)))]),_c('td',[_vm._v(\" \"+_vm._s(event.groupTitle)+\" \"),(event.regionID === 0)?_c('event-queue-area-info-icon',{attrs:{\"event\":event,\"groupId\":event.groupID}}):_vm._e()],1),_c('td',[_vm._v(_vm._s(event.responseTitle == \"\" ? \"All\" : event.responseTitle))]),_c('td',[_vm._v(_vm._s(_vm.displayUnParkAt(event.unParkAt)))]),_c('td',[_vm._v(_vm._s(event.eventTypeID == 10 ? \"Audit\" : \"Test\"))]),_c('td',[_vm._v(_vm._s(_vm._f(\"truncateString\")(event.eventTitle,60)))])])}),(_vm.noEvents)?_c('tr',[_c('td',{attrs:{\"colspan\":\"6\"}},[_vm._v(\"There are currently no tests active.\")])]):_vm._e()],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport RegionalHandlerMixin from \"@/mixins/RegionalHandlerMixin\";\r\nimport { FilteredEvent } from \"@/store/eventqueue/types\";\r\nimport { truncateString } from \"@/filters\";\r\nimport EventQueueAreaInfoIcon from \"@/components/event-queue/EventQueueAreaInfoIcon.vue\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar,\r\n\t\t\"event-queue-area-info-icon\": EventQueueAreaInfoIcon\r\n\t},\r\n\tfilters: {\r\n\t\ttruncateString\r\n\t}\r\n})\r\nexport default class OnTestQueue extends Mixins(RegionalHandlerMixin) {\r\n\t@Eventqueue.Getter getActiveEvents!: FilteredEvent[];\r\n\t@Eventqueue.Mutation setCountByType: any;\r\n\t@Eventqueue.Action handleEvent: any;\r\n\t@Eventqueue.Mutation setHoverEvent: any;\r\n\r\n\tget events(): FilteredEvent[] {\r\n\t\tlet events = this.getActiveEvents;\r\n\r\n\t\tif (events == null) return null;\r\n\r\n\t\tlet filteredEvents = events.filter((q: any) => q.eventTypeID == 6 || q.eventTypeID == 10);\r\n\t\tthis.setCountByType({ countType: \"onTest\", count: filteredEvents.length });\r\n\r\n\t\treturn filteredEvents;\r\n\t}\r\n\r\n\thoverEvent(event: FilteredEvent) {\r\n\t\tthis.setHoverEvent(event);\r\n\t}\r\n\r\n\tunhoverEvent(event: FilteredEvent) {\r\n\t\tthis.setHoverEvent({});\r\n\t}\r\n\r\n\tpublic get noEvents() {\r\n\t\treturn typeof this.events == \"undefined\" || this.events == null || this.events.length == 0;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnTestQueue.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnTestQueue.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./OnTestQueue.vue?vue&type=template&id=4dd332db&scoped=true\"\nimport script from \"./OnTestQueue.vue?vue&type=script&lang=ts\"\nexport * from \"./OnTestQueue.vue?vue&type=script&lang=ts\"\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 \"4dd332db\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport PatrolQueue from \"@/components/event-queue/PatrolQueue.vue\";\r\nimport ProcessingQueue from \"@/components/ProcessingQueue.vue\";\r\nimport ParkedQueue from \"@/components/ParkedQueue.vue\";\r\nimport OnTestQueue from \"@/components/event-queue/OnTestQueue.vue\";\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport { EventCountsByType } from \"@/store/eventqueue/types\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"PatrolQueue\": PatrolQueue,\r\n\t\t\"ProcessingQueue\": ProcessingQueue,\r\n\t\t\"ParkedQueue\": ParkedQueue,\r\n\t\t\"ontest-queue\": OnTestQueue\r\n\t}\r\n})\r\nexport default class AlarmQueueFooter extends Vue {\r\n\t@Eventqueue.Getter getCountByType: (countType: keyof EventCountsByType) => number;\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getFeature: (featuresList: string[]) => boolean;\r\n\r\n\tprivate isQueueDetailShown: boolean = true;\r\n\r\n\tprivate get patrolEventCount(): number {\r\n\t\treturn this.getCountByType(\"patrols\");\r\n\t}\r\n\r\n\tprivate get parkedEventCount(): number {\r\n\t\treturn this.getCountByType(\"parked\");\r\n\t}\r\n\r\n\tprivate get processingEventCount(): number {\r\n\t\treturn this.getCountByType(\"inProcess\");\r\n\t}\r\n\r\n\tprivate get onTestEventCount(): number {\r\n\t\treturn this.getCountByType(\"onTest\");\r\n\t}\r\n\r\n\tprivate get isProcessingTabEnabled(): boolean {\r\n\t\tconst disableProcessingActiveAlarms = this.getFeature([\"Alarms\", \"EventQueue\", \"DisableProcessingActiveAlarms\"]);\r\n\t\treturn disableProcessingActiveAlarms ? this.getPermissions.canProcessActiveAlarms : true;\r\n\t}\r\n\r\n\tprivate get isTourTabEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"EventQueue\", \"ManualTour\"]);\r\n\t}\r\n\r\n\tprivate get isOnTestEnabled() {\r\n\t\treturn this.getFeature([\"Alarms\", \"AlarmPoints\", \"OnTest\"]) && !!this.getPermissions.canPutAlarmPointsOnTest;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueFooter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueFooter.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmQueueFooter.vue?vue&type=template&id=6920baa6&scoped=true\"\nimport script from \"./AlarmQueueFooter.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmQueueFooter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmQueueFooter.vue?vue&type=style&index=0&id=6920baa6&prod&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 \"6920baa6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"invitations-card\",class:{'hide': !_vm.getProcessingError},attrs:{\"id\":\"invitations\"}},[_c('div',{staticClass:\"card bg-danger\"},[_c('div',{staticClass:\"card-body\"},[_vm._v(\" \"+_vm._s(_vm.getProcessingError)+\" \")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport { namespace } from 'vuex-class';\n\nconst Eventqueue = namespace('eventqueue');\n\n@Component({\n components: {\n }\n})\nexport default class ProcessingError extends Vue {\n\n @Eventqueue.Getter getProcessingError: any;\n @Eventqueue.Mutation setProcessingError: any;\n\n @Watch(\"getProcessingError\")\n onProcessingErrorChange(value: string, oldValue: string) {\n if (value) {\n setTimeout(() => {\n this.setProcessingError(null);\n }, 5 * this.$config.ANIMATION_DURATION);\n }\n }\n\n}\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessingError.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessingError.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProcessingError.vue?vue&type=template&id=2523bd7a&scoped=true\"\nimport script from \"./ProcessingError.vue?vue&type=script&lang=ts\"\nexport * from \"./ProcessingError.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ProcessingError.vue?vue&type=style&index=0&id=2523bd7a&prod&scoped=true&lang=scss\"\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 \"2523bd7a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"invitation-container\",class:{'hide': _vm.hide},attrs:{\"id\":\"invitations\"}},[_c('div',{staticClass:\"card bg-primary\"},[_c('div',{staticClass:\"card-body invite-list\"},_vm._l((_vm.unIgnoredInvites),function(invite,i){return _c('div',{key:i,staticClass:\"d-flex align-items-center\"},[_c('span',{staticClass:\"flex-grow-1 m-r-10\"},[_vm._v(_vm._s(invite.sharedBy)+\" has requested assistance with \"+_vm._s(invite.eventTitle))]),_c('div',{staticClass:\"btn-group\"},[_c('span',{staticClass:\"btn btn-secondary btn-accept\",on:{\"click\":function($event){return _vm.acceptInvite(invite)}}},[_vm._v(\"Join\")]),(invite.routingGroupID != null && invite.userID == null)?_c('span',{staticClass:\"btn btn-secondary btn-reject\",on:{\"click\":function($event){return _vm.ignoreInvite(invite)}}},[_vm._v(\"Ignore\")]):_vm._e(),(invite.userID != null)?_c('span',{staticClass:\"btn btn-secondary btn-reject\",on:{\"click\":function($event){return _vm.ignoreInvite(invite)}}},[_vm._v(\"Decline\")]):_vm._e()])])}),0)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport ActionState from \"@/types/sv-data/events/ActionState\";\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from 'vuex-class';\r\n\r\nconst Eventqueue = namespace('eventqueue');\r\n\r\nexport class Invitation {\r\n\tpublic eventUserID: string = \"\";\r\n\tpublic SharedBy: string | null = null;\r\n\tpublic EventTitle: string = \"\";\r\n\tpublic ignored: boolean = false;\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t}\r\n})\r\nexport default class InvitationCheck extends Vue {\r\n\t@Getter('getActiveRegion') activeRegion: any;\r\n\r\n\t@Eventqueue.Action loadEventShareInvites: any;\r\n\t@Eventqueue.Action acceptEventShareInvite: any;\r\n\t@Eventqueue.Action ignoreEventShareInvite: any;\r\n\t@Eventqueue.Getter(\"getClosingAction\") closingAction: ActionState;\r\n\r\n\tpublic isDestroyed: boolean = false;\r\n\tpublic currentInvites: Invitation[] = [];\r\n\tpublic hide: boolean = true;\r\n\tpublic updateTimeout: NodeJS.Timeout = null;\r\n\r\n\t@Watch('activeRegion', { deep: true })\r\n\tpublic onActiveRegionChanged(newRegion: any, oldRegion: any) {\r\n\t\tif (newRegion.regionId !== 0) {\r\n\t\t\tthis.isDestroyed = true;\r\n\t\t} else {\r\n\t\t\tthis.isDestroyed = false;\r\n\t\t\tthis.update();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get unIgnoredInvites() {\r\n\t\treturn this.currentInvites.filter(invite => !invite.ignored);\r\n\t}\r\n\r\n\tpublic mounted() {\r\n\t\tthis.isDestroyed = false;\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tpublic destroyed() {\r\n\t\tthis.isDestroyed = true;\r\n\r\n\t\tif (this.updateTimeout != null) {\r\n\t\t\tclearTimeout(this.updateTimeout!);\r\n\t\t\tthis.updateTimeout = null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async update() {\r\n\t\tif (this.isDestroyed) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// if the closing action is in progress then don't show the invites.\r\n\t\tif (this.closingAction == ActionState.InProcess){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tlet invites: Invitation[] = await this.loadEventShareInvites();\r\n\r\n\t\t\tinvites.forEach((invite) => {\r\n\t\t\t\tinvite.ignored = false;\r\n\t\t\t});\r\n\r\n\t\t\tthis.hide = invites.length == 0;\r\n\r\n\t\t\tthis.$set(this, \"currentInvites\", invites);\r\n\r\n\t\t\tif (this.updateTimeout != null) {\r\n\t\t\t\tclearTimeout(this.updateTimeout);\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateTimeout = setTimeout(() => this.update(), 5000);\r\n\t\t} catch (err) {\r\n\t\t\t//On error, wait longer before retry.\r\n\t\t\tthis.updateTimeout = setTimeout(() => this.update(), 10000);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async acceptInvite(invite: Invitation) {\r\n\t\tconst result = await this.acceptEventShareInvite(invite.eventUserID);\r\n\t\tif (result.allowAccess) {\r\n\t\t\t\tthis.$router.push({ path: '/site-monitor/' + result.eventID });\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async ignoreInvite(invite: Invitation) {\r\n\t\tawait this.ignoreEventShareInvite(invite.eventUserID);\r\n\r\n\t\tinvite.ignored = true;\r\n\t\t/* let unignoredCount =\r\n\t\t\tthis.currentInvites.filter(invite => !invite.ignored).length; */\r\n\r\n\t\tif (this.unIgnoredInvites.length == 0) {\r\n\t\t\t\tthis.hide = true;\r\n\t\t} \r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InvitationCheck.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InvitationCheck.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./InvitationCheck.vue?vue&type=template&id=56b0f4d7&scoped=true\"\nimport script from \"./InvitationCheck.vue?vue&type=script&lang=ts\"\nexport * from \"./InvitationCheck.vue?vue&type=script&lang=ts\"\nimport style0 from \"./InvitationCheck.vue?vue&type=style&index=0&id=56b0f4d7&prod&scoped=true&lang=scss\"\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 \"56b0f4d7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"id\":\"patrolModal\",\"centered\":\"\",\"role\":\"dialog\",\"visible\":_vm.manualPatrolShown && _vm.permissions.canAccessManualTour},on:{\"hidden\":_vm.closeManualPatrol}},[_c('template',{slot:\"modal-title\"},[_vm._v(\"Manual Tour\")]),_c('div',{staticClass:\"patrol-modal-body d-flex flex-column\"},[(_vm.handleError != null)?_c('div',{staticClass:\"alert alert-primary\"},[_vm._v(\"Unable to create a manual tour for \"+_vm._s(_vm.handleError.groupTitle)+\" - there is already a \"+_vm._s(_vm.handleError.eventType)+\" taking place.\")]):_vm._e(),_c('h5',[_vm._v(\"Area:\")]),_c('area-tree-select',{attrs:{\"append-to-body\":true},model:{value:(_vm.selectedArea),callback:function ($$v) {_vm.selectedArea=$$v},expression:\"selectedArea\"}}),_c('br'),_c('h5',[_vm._v(\"Notes:\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.patrolNote),expression:\"patrolNote\"}],staticClass:\"form-control flex-shrink-0\",class:{ 'invalid': _vm.$v.patrolNote.$error },staticStyle:{\"font-size\":\"13px\",\"padding-left\":\"6px\"},attrs:{\"rows\":\"3\",\"maxlength\":\"25000\",\"type\":\"text\",\"id\":\"TourNote\",\"aria-describedby\":\"TourNote\",\"placeholder\":\"Notes...\"},domProps:{\"value\":(_vm.patrolNote)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.patrolNote=$event.target.value},function($event){return _vm.setNoteRequired($event.target.value)}]}})],1),_c('template',{slot:\"modal-footer\"},[(!_vm.$v.patrolNote.required)?_c('p',{staticClass:\"error text-danger\",attrs:{\"id\":\"patrolNoteError\"}},[_vm._v(\"this field is required\")]):_vm._e(),_c('b-button',{staticClass:\"btn pull-right ksConfirm\",class:{'disabled': !_vm.validForm},attrs:{\"data-cy\":\"cy-confirmBtn\",\"variant\":\"primary\",\"id\":\"confirmBtn\",\"data-dismiss\":\"modal\",\"disabled\":!_vm.validForm,\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.onSubmit()}}},[_vm._v(\"OK\")]),_c('b-button',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"variant\":\"secondary\",\"id\":\"cancelBtn\",\"data-dismiss\":\"modal\",\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.closeManualPatrol()}}},[_vm._v(\"Cancel\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch, Emit } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { requiredIf } from \"vuelidate/lib/validators\";\r\nimport Multiselect from \"vue-multiselect\";\r\nimport { UserPermissions } from \"../store/types\";\r\nimport { AreaNode } from '@/types/sv-data/groups/AreaNode';\r\nimport AreaTreeSelect from './form/AreaTreeSelect.vue';\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tmultiselect: Multiselect,\r\n\t\t\"area-tree-select\": AreaTreeSelect\r\n\t},\r\n\t// Validation for the patrol Note.\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\tpatrolNote: {\r\n\t\t\trequired: requiredIf(function() {\r\n\t\t\t\treturn this.tourNoteRequired;\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n})\r\nexport default class ManualPatrol extends Vue {\r\n\tprivate handleError: any = null;\r\n\r\n\t@Eventqueue.Getter(\"getManualPatrolShown\") manualPatrolShown!: boolean;\r\n\t@Eventqueue.Getter(\"getTourNoteRequired\") tourNoteRequired: boolean; // returned value from action 'tourNotesRequired', true or false.\r\n\t@Eventqueue.Mutation setManualPatrolShown: any;\r\n\t@Eventqueue.Mutation setLastEventHandled: () => void;\r\n\t@Eventqueue.Action eventControl: any;\r\n\t@Eventqueue.Action tourNotesRequired: any; // Action to call API to get required true or false.\r\n\r\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\r\n\r\n\tprivate isStartingTour: boolean = false;\r\n\tprivate patrolNote: string = \"\";\r\n\tprivate selectedArea: AreaNode = null\r\n\r\n\tprivate created(): void {\r\n\t\tthis.setManualPatrolShown(false);\r\n\t\t// call action to check if the required for note is true or false.\r\n\t\tthis.tourNotesRequired();\r\n\t}\r\n\r\n\t//// Validate the form, check if the 'group and note' is required and if so, validate correctly.\r\n\tprivate get validForm(): boolean {\r\n\t\t// check if the note is required and groupID is undefined.\r\n\t\tif (!this.$v.patrolNote.required && !this.selectedArea) {\r\n\t\t\t// return false if either patrol is required (and note is not filled) or GroupID is undefineid... or both.\r\n\t\t\treturn false;\r\n\t\t} else if (this.$v.patrolNote.required && this.selectedArea && this.selectedArea.id) {\r\n\t\t\t// return true if BOTH GroupID is not undefined and required is true or false, but there is something in the field if set to true.\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setNoteRequired(value: string): void {\r\n\t\tthis.patrolNote = value;\r\n\t\tthis.$v.patrolNote.$touch();\r\n\t}\r\n\r\n\t//// On submit of the model 'Ok' button.\r\n\t@Emit(\"submit\")\r\n\tprivate onSubmit(): void {\r\n\t\tif (!this.validForm) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// to update the validation to check, sets all it's children to true for validation.\r\n\t\tthis.$v.$touch();\r\n\t\tif (!this.$v.patrolNote.$error) {\r\n\t\t\tthis.$v.$reset();\r\n\t\t\t// Start manual Patrol.\r\n\t\t\tthis.startManualPatrolForGroup(this.selectedArea);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async startManualPatrolForGroup(patrolGroup: AreaNode): Promise {\r\n\t\tthis.handleError = null;\r\n\r\n\t\t// If we are already processing a tour request, don't retrigger\r\n\t\tif (this.isStartingTour) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// We are processing a tour request\r\n\t\tthis.isStartingTour = true;\r\n\r\n\t\t// Payload object, to send via the action to the API.\r\n\t\tconst eventObject = {\r\n\t\t\tgroupId: patrolGroup.id,\r\n\t\t\tpatrolNote: this.patrolNote\r\n\t\t};\r\n\r\n\t\t// Call action with payload, gets a returned value.\r\n\t\tconst patrolResult = await this.eventControl(eventObject);\r\n\r\n\t\tif (patrolResult && patrolResult.eventID != null) {\r\n\t\t\tthis.setLastEventHandled();\r\n\t\t\tthis.setManualPatrolShown(false);\r\n\t\t\tthis.$router.push({\r\n\t\t\t\tpath: `/site-monitor/${patrolResult.eventID}`\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tlet eventType = \"\";\r\n\t\t\tswitch (patrolResult.existingEventTypeID) {\r\n\t\t\t\tcase 1:\r\n\t\t\t\t\teventType = \"alarm\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 2:\r\n\t\t\t\t\teventType = \"tour\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 3:\r\n\t\t\t\t\teventType = \"site check\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase 6:\r\n\t\t\t\t\teventType = \"test\";\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.handleError = {\r\n\t\t\t\tgroupTitle: patrolGroup.label,\r\n\t\t\t\teventType: eventType\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t// We have finished the request\r\n\t\tthis.isStartingTour = false;\r\n\t}\r\n\r\n\tpublic closeManualPatrol() {\r\n\t\tthis.setManualPatrolShown(false);\r\n\t\t// Clear tree and note on close.\r\n\t\tthis.patrolNote = \"\";\r\n\t\tthis.selectedArea = null;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualPatrol.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualPatrol.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ManualPatrol.vue?vue&type=template&id=054bb136&scoped=true\"\nimport script from \"./ManualPatrol.vue?vue&type=script&lang=ts\"\nexport * from \"./ManualPatrol.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ManualPatrol.vue?vue&type=style&index=0&id=054bb136&prod&scoped=true&lang=scss\"\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 \"054bb136\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.manualRaiseShown && _vm.permissions.canAccessManualRaise)?_c('b-modal',{attrs:{\"hide-backdrop\":!_vm.disableStyles,\"modal-class\":_vm.disableStyles ? '' : 'manual-raise-modal',\"body-class\":\"d-flex flex-column\",\"content-class\":\"mx-5\",\"static\":true,\"centered\":true,\"size\":\"lg\",\"visible\":_vm.manualRaiseShown && _vm.permissions.canAccessManualRaise},on:{\"hidden\":function($event){return _vm.setManualRaiseShown(false)}}},[_c('template',{slot:\"modal-title\"},[_vm._v(\"Manual Raise\")]),(!_vm.disableMapAlert)?_c('div',{staticClass:\"alert\",class:{\n\t\t\t'alert-danger': this.pinNeedsDrop(),\n\t\t\t'alert-primary': !this.pinNeedsDrop()\n\t\t}},[_vm._v(\"Drop a pin on the map to set alarm location\")]):_vm._e(),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1 d-flex flex-column mt-1 mr-2 area-select\"},[_c('span',{staticClass:\"flex-grow-0\"},[_vm._v(\" Area: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('area-tree-select',{attrs:{\"value\":_vm.selectedGroup,\"clearable\":false,\"append-to-body\":\"\"},on:{\"input\":_vm.setSelectedGroup}})],1),(_vm.selectedGroup != null)?_c('div',{staticClass:\"flex-grow-1 d-flex flex-column floor-dropdown\"},[_c('span',{staticClass:\"flex-grow-0\"},[_vm._v(\"Floor:\")]),(_vm.mapLayersForSelectedGroup.length > 0)?_c('div',[_c('v-select-3',{attrs:{\"label\":\"title\",\"placeholder\":\"Alarm Floor\",\"data-cy\":\"alarm-floor-dropdown\",\"max-height\":150,\"options\":_vm.mapLayersForSelectedGroup,\"searchable\":true,\"clearable\":false},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(ref){\n\t\tvar option = ref.option;\nreturn [_c('span',[_vm._v(\"Floor: \"+_vm._s(option))])]}}],null,false,2620855188),model:{value:(_vm.selectedLayer),callback:function ($$v) {_vm.selectedLayer=$$v},expression:\"selectedLayer\"}},[_c('template',{slot:\"noOptions\"},[_c('span',[_vm._v(\"No floors available\")])])],2)],1):_vm._e(),(_vm.mapLayersForSelectedGroup.length === 0)?_c('div',{staticClass:\"flex-grow-1 d-flex justify-content-center flex-column\"},[_c('span',[_vm._v(\"No floors available\")])]):_vm._e()]):_vm._e()])]),_c('div',{staticClass:\"form-group\"},[_vm._v(\" Event Type: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_c('v-select-3',{attrs:{\"id\":\"ms-manual-raise-event-type\",\"label\":\"title\",\"placeholder\":\"Select event type\",\"data-cy\":\"event-type-dropdown\",\"max-height\":150,\"options\":_vm.eventTypes,\"searchable\":true,\"clearable\":false},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(ref){\n\t\tvar option = ref.option;\nreturn [_c('span',[_vm._v(\"Event Type: \"+_vm._s(option))])]}}],null,false,1090672504),model:{value:(_vm.selectedEventType),callback:function ($$v) {_vm.selectedEventType=$$v},expression:\"selectedEventType\"}})],1),_c('div',{staticClass:\"text-container\"},[_c('label',{attrs:{\"for\":\"tbNotes\"}},[_vm._v(\"Notes:\")]),(_vm.noteRequiredForManualRaise)?_c('span',{staticClass:\"text-danger\",attrs:{\"data-cy\":\"note-required-icon\"}},[_vm._v(\" *\")]):_vm._e(),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.notes),expression:\"notes\"}],staticClass:\"custom-textarea\",attrs:{\"id\":\"tbNotes\",\"rows\":\"5\",\"placeholder\":\"Notes\",\"data-cy\":\"notes-txt\",\"maxlength\":_vm.maxNotesLength},domProps:{\"value\":(_vm.notes)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.notes=$event.target.value}}}),_c('label',{staticClass:\"text-wordcount\",class:{ 'text-danger': _vm.notes.length > _vm.maxNotesLength }},[_vm._v(_vm._s(_vm.notes.length)+\" | \"+_vm._s(_vm.maxNotesLength))])]),_c('div',{staticClass:\"text-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.raisedBy),expression:\"raisedBy\"}],staticClass:\"form-control\",staticStyle:{\"font-size\":\"inherit\"},attrs:{\"id\":\"tbRaisedBy\",\"type\":\"text\",\"placeholder\":\"Requested by\",\"data-cy\":\"requested-by-txt\",\"maxlength\":_vm.maxRaisedByLength},domProps:{\"value\":(_vm.raisedBy)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.raisedBy=$event.target.value}}}),_c('label',{staticClass:\"text-wordcount\",class:{\n\t\t\t\t\t'text-danger': _vm.raisedBy.length > _vm.maxRaisedByLength\n\t\t\t\t}},[_vm._v(_vm._s(_vm.raisedBy.length)+\" | \"+_vm._s(_vm.maxRaisedByLength))])]),_c('template',{slot:\"modal-footer\"},[(_vm.error)?_c('div',{staticClass:\"alert alert-primary\"},[_vm._v(_vm._s(_vm.error))]):_vm._e(),(!_vm.disableAutomaticClaim)?_c('div',{staticClass:\"custom-control custom-checkbox\",class:[_vm.claimCheckboxFocused ? 'focused':'']},[(_vm.claimCheckboxFocused)?_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['space']),expression:\"['space']\",modifiers:{\"once\":true}}],staticClass:\"hidden\",on:{\"shortkey\":function($event){_vm.autoHandle = !_vm.autoHandle}}}):_vm._e(),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.autoHandle),expression:\"autoHandle\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"data-cy\":\"automatically-claim-checkbox\",\"id\":\"customCheck1\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(_vm.autoHandle)?_vm._i(_vm.autoHandle,null)>-1:(_vm.autoHandle)},on:{\"focus\":function($event){_vm.claimCheckboxFocused = true},\"blur\":function($event){_vm.claimCheckboxFocused = false},\"change\":function($event){var $$a=_vm.autoHandle,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.autoHandle=$$a.concat([$$v]))}else{$$i>-1&&(_vm.autoHandle=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.autoHandle=$$c}}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":\"customCheck1\"}},[_vm._v(\"Automatically claim\")])]):_vm._e(),_c('b-button',{staticClass:\"pull-right ksConfirm\",class:{ disabled: _vm.noteNotEntered },attrs:{\"variant\":\"primary\",\"id\":\"confirmBtn\",\"data-cy\":\"confirm-button\",\"data-dismiss\":\"modal\",\"title\":_vm.raiseTitle,\"disabled\":_vm.$v.$invalid || _vm.isRaising || _vm.noteNotEntered},on:{\"click\":function($event){return _vm.raise()}}},[_vm._v(\"OK\")]),_c('button',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"cancel-button\",\"id\":\"cancelBtn\"},on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(\"Cancel\")])],1)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Mixins, Watch, Prop } from \"vue-property-decorator\";\nimport { namespace, Getter } from \"vuex-class\";\nimport { ServerEventType } from \"@/store/eventqueue/types\";\nimport GPSService from \"@/services/gps.service\";\nimport Multiselect from \"vue-multiselect\";\nimport { validationMixin } from \"vuelidate\";\nimport { required, requiredIf, maxLength } from \"vuelidate/lib/validators\";\nimport SVButton from \"@/components/form/SVButton.vue\";\nimport { UserPermissions } from \"../store/types\";\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\nimport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\nimport api from \"@/services/api.service\";\nimport { MapBounds, MapLayer } from \"@/store/map-layers/types\";\nimport { convertStringToLatLng } from \"@sureview/v2-mapping-saas\";\nimport vSelect3 from \"vselect3\";\nimport HideMapMixin from \"@/mixins/HideMapMixin\";\n\nconst Eventqueue = namespace(\"eventqueue\");\nconst MapLayers = namespace(\"mapLayers\");\nconst ManualRaiseStore = namespace(\"manualRaise\");\n\nconst MaxNotesLength = 1000;\nconst MaxRaisedByLength = 50;\n\n@Component({\n\tmixins: [validationMixin],\n\tvalidations: {\n\t\tselectedGroup: {\n\t\t\trequired: requiredIf(function() {\n\t\t\t\treturn !this.selectedLayer;\n\t\t\t})\n\t\t},\n\t\tselectedLayer: {\n\t\t\trequired: requiredIf(function() {\n\t\t\t\treturn !this.selectedGroup;\n\t\t\t})\n\t\t},\n\t\talarmMarkerPosition: {\n\t\t\trequired: requiredIf(function() {\n\t\t\t\treturn this.pinNeedsDrop();\n\t\t\t})\n\t\t},\n\t\tselectedEventType: {\n\t\t\teventNum: {\n\t\t\t\trequired\n\t\t\t}\n\t\t},\n\t\tnotes: {\n\t\t\tmaxLength: maxLength(MaxNotesLength)\n\t\t},\n\t\traisedBy: {\n\t\t\tmaxLength: maxLength(MaxRaisedByLength)\n\t\t}\n\t},\n\tcomponents: {\n\t\tmultiselect: Multiselect,\n\t\tSVButton: SVButton,\n\t\t\"area-tree-select\": AreaTreeSelect,\n\t\t\"v-select-3\": vSelect3,\n\t}\n})\nexport default class ManualRaise extends Mixins(HideMapMixin) {\n\t// Manual raise store\n\t@ManualRaiseStore.State manualRaiseShown: boolean;\n\t@ManualRaiseStore.State alarmMarkerPosition: string;\n\t@ManualRaiseStore.State selectedGroup: AreaNode;\n\n\t@ManualRaiseStore.Mutation setManualRaiseShown: (visible: boolean) => void;\n\t@ManualRaiseStore.Mutation(\"setAreaMapBounds\") setSelectedAreaMapBounds: (bounds: MapBounds) => void;\n\t@ManualRaiseStore.Mutation setAlarmMarkerPosition: (position: string) => void;\n\t@ManualRaiseStore.Mutation setSelectedGroup: (areaNode: AreaNode) => void;\n\n\t@ManualRaiseStore.Action(\"clearSettings\") clearManualRaiseSettings: () => void;\n\t@ManualRaiseStore.Action raiseManualAlarm: ({ payload, autoHandle }) => Promise;\n\n\t// Event queue\n\t@Eventqueue.Getter(\"serverEventTypes\") eventTypes: ServerEventType[];\n\t@Eventqueue.Getter(\"getProcessingError\") error: string;\n\n\t@Eventqueue.Action loadServerEventTypes: (params: object) => Promise;\n\t@Eventqueue.Action searchGroups: any;\n\n\t// Map layers\n\t@MapLayers.State selectedMapElevation: number;\n\t@MapLayers.State defaultMapBounds: MapBounds;\n\n\t@Getter getRequireMapPin: any;\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\n\t@Getter getFeature: any;\n\n\t@Prop({ default: false }) public disableStyles: boolean;\n\t@Prop({ default: false }) public disableAutomaticClaim: boolean;\n\t@Prop({ default: false }) public disableMapAlert: boolean;\n\n\tpublic readonly maxNotesLength = MaxNotesLength;\n\tpublic readonly maxRaisedByLength = MaxRaisedByLength;\n\n\t// Payload properties\n\tpublic raisedBy: string = \"\";\n\tpublic notes: any = \"\";\n\tpublic selectedEventType: any = null;\n\tpublic mapLayersForSelectedGroup: MapLayer[] = [];\n\tpublic autoHandle: boolean = true;\n\tpublic isRaising: boolean = false;\n\n\tpublic settings: any = {};\n\tpublic groupSearchLoading = false;\n\tpublic selectedLayer: MapLayer = null;\n\tpublic gpsService: GPSService = null;\n\n\tprivate claimCheckboxFocused: boolean = false;\n\tprivate manualRaiseServerTypeId = 435;\n\n\n\tpublic get raiseTitle() {\n\t\tif (this.pinNeedsDrop()) {\n\t\t\treturn \"You must drop a pin on the map\";\n\t\t}\n\n\t\tif (this.selectedGroup == null && this.selectedLayer == null) return \"You must select an area\";\n\n\t\tif (this.selectedEventType == null || this.selectedEventType.eventNum == null)\n\t\t\treturn \"You must select an event type\";\n\n\t\treturn \"Raise alarm\";\n\t}\n\n\tprivate pinNeedsDrop() {\n\t\treturn !this.alarmMarkerPosition && this.getRequireMapPin;\n\t}\n\n\t@Watch(\"selectedMapElevation\")\n\tpublic onSelectedMapElevationChanged(value: any, oldValue: any) {\n\t\tlet existingLayer = this.mapLayersForSelectedGroup.find(layer => layer.minElevation == value);\n\n\t\tif (existingLayer) {\n\t\t\tthis.selectedLayer = existingLayer;\n\t\t}\n\t}\n\n\tpublic async created() {\n\t\tawait this.loadServerEventTypes({ serverType: this.manualRaiseServerTypeId, groupID: null });\n\t}\n\n\tpublic async mounted() : Promise {\n\n\t\tthis.setSelectedAreaMapBounds(null);\n\t\tthis.setAlarmMarkerPosition(null);\n\t\tthis.setSelectedGroup(null);\n\t\tthis.$set(this, \"selectedLayer\", null);\n\n\t\t// Turn off auto handle if we've disabled it\n\t\tif (this.disableAutomaticClaim) {\n\t\t\tthis.autoHandle = false;\n\t\t}\n\n\t\tthis.gpsService = new GPSService();\n\t}\n\n\t@Watch(\"selectedGroup\")\n\tpublic async selectedGroupChanged(area: any) {\n\t\tif(!area)\n\t\t\treturn;\n\n\t\tawait this.loadServerEventTypes({ serverType: this.manualRaiseServerTypeId, groupID: area.id });\n\n\t\tconst bounds = await api.getBoundsForArea(area.id);\n\t\tconst isDefaultBounds = bounds.north === this.defaultMapBounds.north &&\n\t\t\tbounds.south === this.defaultMapBounds.south &&\n\t\t\tbounds.east === this.defaultMapBounds.east &&\n\t\t\tbounds.west === this.defaultMapBounds.west;\n\n\t\tif (isDefaultBounds) {\n\t\t\tif (area.latLong) {\n\t\t\t\tconst latLng = convertStringToLatLng(area.latLong);\n\t\t\t\tconst isLatAndLngSet = !isNaN(latLng.lat) && !isNaN(latLng.lng);\n\t\t\t\tif (isLatAndLngSet) {\n\t\t\t\t\tthis.setSelectedAreaMapBounds({\n\t\t\t\t\t\tnorth: latLng.lat,\n\t\t\t\t\t\teast: latLng.lng,\n\t\t\t\t\t\tsouth: latLng.lat,\n\t\t\t\t\t\twest: latLng.lng\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// fallback to using the address if the lat long is invalid.\n\t\t\t\t\tawait this.setSelectedAreaBounds(area);\n\t\t\t\t}\n\t\t\t} else if (area.address) {\n\t\t\t\tawait this.setSelectedAreaBounds(area);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.setSelectedAreaMapBounds(bounds);\n\t\t}\n\n\t\tthis.mapLayersForSelectedGroup = await api.loadMapLayersByGroupId(area.id);\n\n\t\tif (this.mapLayersForSelectedGroup && this.mapLayersForSelectedGroup.length > 0) {\n\t\t\tthis.selectedLayer = this.mapLayersForSelectedGroup[0];\n\t\t}\n\t}\n\n\tpublic async setSelectedAreaBounds(area: AreaNode): Promise {\n\t\tif (this.isHideMapsEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst geoCodeResponse = await this.gpsService.GeoCodeLookup(\n\t\t\t\tarea.address,\n\t\t\t\tprocess.env.VUE_APP_GOOGLE_MAPS_API_KEY\n\t\t\t);\n\n\t\t\tif (geoCodeResponse.results && geoCodeResponse.results.length > 0) {\n\t\t\t\tlet addressGeometry = geoCodeResponse.results[0].geometry;\n\n\t\t\t\tif (addressGeometry.viewport) {\n\t\t\t\t\tthis.setSelectedAreaMapBounds({\n\t\t\t\t\t\tnorth: addressGeometry.viewport.northeast.lat,\n\t\t\t\t\t\teast: addressGeometry.viewport.northeast.lng,\n\t\t\t\t\t\tsouth: addressGeometry.viewport.southwest.lat,\n\t\t\t\t\t\twest: addressGeometry.viewport.southwest.lng\n\t\t\t\t\t});\n\t\t\t\t} else if (addressGeometry.location) {\n\t\t\t\t\tthis.setSelectedAreaMapBounds({\n\t\t\t\t\t\tnorth: addressGeometry.location.lat,\n\t\t\t\t\t\teast: addressGeometry.location.lng,\n\t\t\t\t\t\tsouth: addressGeometry.location.lat,\n\t\t\t\t\t\twest: addressGeometry.location.lng\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (addressGeometry.location && !area.latLong) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait api.updateAreaLatLong(area.id, { lat: addressGeometry.location.lat, lng: addressGeometry.location.lng });\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t//ignore error\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tthis.$notify({\n\t\t\t\ttype: \"error\",\n\t\t\t\ttitle: \"Manual Raise - Address Lookup\",\n\t\t\t\ttext: \"Unable to lookup the address you have entered, please ensure the address is valid.\"\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic clear() {\n\t\tthis.$set(this, \"selectedLayer\", null);\n\t\tthis.setSelectedGroup(null);\n\t\tthis.$set(this, \"selectedEventType\", null);\n\t\tthis.$set(this, \"notes\", \"\");\n\t\tthis.$set(this, \"raisedBy\", \"\");\n\t\tthis.clearManualRaiseSettings();\n\t}\n\n\tpublic async raise() {\n\t\tthis.$v.$touch();\n\t\tif (this.$v.$error) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.isRaising) {\n\t\t\tthis.isRaising = true;\n\t\t\tconst location = this.alarmMarkerPosition;\n\t\t\tconst selectedLayerInfo =\n\t\t\t\tthis.selectedLayer == null ? \"\" : `, MapLayerID: ${this.selectedLayer.mapLayerId}`;\n\t\t\tconst alarmLocation = location ? location + selectedLayerInfo : \"\";\n\t\t\tconst groupID = !this.selectedLayer ? this.selectedGroup.id : this.selectedLayer.groupId;\n\t\t\tconst payload = {\n\t\t\t\tmapLayerId: this.selectedLayer\n\t\t\t\t\t? this.selectedLayer.mapLayerId\n\t\t\t\t\t: null,\n\t\t\t\tserverTypeEvent: this.selectedEventType.eventNum,\n\t\t\t\tnotes: this.notes,\n\t\t\t\traisedBy: this.raisedBy,\n\t\t\t\tlocation: alarmLocation,\n\t\t\t\tgroupID: groupID\n\t\t\t};\n\t\t\tawait this.raiseManualAlarm({\n\t\t\t\tpayload,\n\t\t\t\tautoHandle: this.autoHandle\n\t\t\t});\n\t\t\tthis.isRaising = false;\n\t\t\tthis.setManualRaiseShown(false);\n\t\t\tthis.clear();\n\t\t}\n\t}\n\n\tpublic cancel() {\n\t\tthis.clear();\n\t\tthis.setManualRaiseShown(false);\n\t\tthis.setSelectedAreaMapBounds(null);\n\t}\n\n\tpublic get noteRequiredForManualRaise() {\n\t\treturn this.getFeature([\"Alarms\", \"EventQueue\", \"ManualRaise\", \"RequireNote\"])\n\t}\n\n\tpublic get noteNotEntered() {\n\n\t\tif (!this.noteRequiredForManualRaise) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn this.notes.length == 0;\n\t}\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualRaise.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualRaise.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ManualRaise.vue?vue&type=template&id=659481a4&scoped=true\"\nimport script from \"./ManualRaise.vue?vue&type=script&lang=ts\"\nexport * from \"./ManualRaise.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ManualRaise.vue?vue&type=style&index=0&id=659481a4&prod&scoped=true&lang=scss\"\nimport style1 from \"./ManualRaise.vue?vue&type=style&index=1&id=659481a4&prod&lang=css\"\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 \"659481a4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"id\":\"actionModal\",\"size\":\"md\",\"centered\":\"\",\"role\":\"dialog\",\"title\":\"Quick Control\"},on:{\"hidden\":_vm.cancel,\"shown\":_vm.focusDeviceFinder},model:{value:(_vm.manualActionShown),callback:function ($$v) {_vm.manualActionShown=$$v},expression:\"manualActionShown\"}},[_c('div',[_c('label',[_vm._v(\" Device: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('multiselect',{ref:\"deviceFinder\",attrs:{\"id\":\"quick-control-device-finder\",\"track-by\":\"deviceId\",\"label\":\"title\",\"placeholder\":\"Type to search\",\"options\":_vm.doors,\"searchable\":true,\"allow-empty\":false,\"loading\":_vm.doorSearchLoading,\"internal-search\":false,\"multiple\":false,\"hideSelected\":false,\"clear-on-select\":false,\"selectLabel\":\"\",\"deselectLabel\":\"\",\"showLabels\":false,\"selectedLabel\":\"\"},on:{\"search-change\":_vm.asyncFind},scopedSlots:_vm._u([{key:\"option\",fn:function(ref){\nvar option = ref.option;\nreturn [_c('span',{staticStyle:{\"white-space\":\"pre-wrap\",\"margin\":\"0\",\"word-break\":\"break-all\"}},[_vm._v(_vm._s(option.title))])]}},{key:\"singleLabel\",fn:function(ref){\nvar option = ref.option;\nreturn [_c('span',{staticStyle:{\"white-space\":\"pre-wrap\",\"margin\":\"0\",\"word-break\":\"break-all\"}},[_vm._v(_vm._s(option.title))])]}}]),model:{value:(_vm.manualActionRequest.device),callback:function ($$v) {_vm.$set(_vm.manualActionRequest, \"device\", $$v)},expression:\"manualActionRequest.device\"}},[_c('template',{slot:\"noOptions\"},[_c('span',[_vm._v(\"Search for door\")])])],2),_c('div',{staticClass:\"form-group mt-3\"},[_c('label',[_vm._v(\" Reason: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.manualActionRequest.reason),expression:\"manualActionRequest.reason\"}],staticClass:\"custom-textarea\",attrs:{\"placeholder\":\"Reason for action\",\"max\":\"5000\"},domProps:{\"value\":(_vm.manualActionRequest.reason)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.manualActionRequest, \"reason\", $event.target.value)}}})])],1),_c('template',{slot:\"modal-footer\"},[(_vm.pulsing)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e(),_c('a',{staticClass:\"btn btn-secondary ksConfirm\",class:{ disabled: _vm.$v.$invalid || _vm.pulsing },attrs:{\"data-dismiss\":\"modal\",\"disabled\":_vm.$v.$invalid || _vm.pulsing,\"id\":\"confirmBtn\"},on:{\"click\":function($event){return _vm.pulse()}}},[_vm._v(\" Momentary Unlock \")]),_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"id\":\"cancelBtn\",\"data-dismiss\":\"modal\"},on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(\"Cancel\")])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport Multiselect from \"vue-multiselect\";\r\nimport { DeviceDetails, DeviceService } from \"@sureview/camera\";\r\n\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required, requiredIf } from \"vuelidate/lib/validators\";\r\nimport api from \"@/services/api.service\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\tmanualActionRequest: {\r\n\t\t\tdevice: {\r\n\t\t\t\tdeviceId: {\r\n\t\t\t\t\trequired\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\treason: {\r\n\t\t\t\trequired\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tcomponents: {\r\n\t\tmultiselect: Multiselect\r\n\t}\r\n})\r\nexport default class ManualAction extends Vue {\r\n\t$refs!: {\r\n\t\tactionModal: any;\r\n\t\tdeviceFinder: Multiselect;\r\n\t};\r\n\r\n\t@Eventqueue.Getter(\"getManualActionShown\") manualActionShown!: boolean;\r\n\t@Eventqueue.Mutation setManualActionShown: any;\r\n\r\n\t@Devices.State(\"cancelTokenSource\") source: any;\r\n\t@Devices.State doors: DeviceDetails[];\r\n\t@Devices.Action deviceSearch: (query: string) => Promise;\r\n\r\n\t/**\r\n\t * Holds the request data for the quick control action\r\n\t */\r\n\tpublic manualActionRequest = {\r\n\t\tdevice: null,\r\n\t\treason: \"\"\r\n\t};\r\n\r\n\t// Indicates that we're loading the search results\r\n\tpublic doorSearchLoading = false;\r\n\r\n\t// Indicates that we're currently pulsing a relay\r\n\tpublic pulsing: boolean = false;\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t */\r\n\tpublic created() {\r\n\t\t// Set the modal to hidden on creation\r\n\t\tthis.setManualActionShown(false);\r\n\t}\r\n\r\n\t/**\r\n\t * Async handler for the vue-multiselect. Handles the real time search.\r\n\t */\r\n\tpublic async asyncFind(query: string) {\r\n\t\tif (this.source) {\r\n\t\t\tthis.source.cancel(\"Operation canceled by the user.\");\r\n\t\t}\r\n\r\n\t\tthis.doorSearchLoading = true;\r\n\t\tawait this.deviceSearch(query);\r\n\t\tthis.doorSearchLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Reset the modal/form back to it's original state.\r\n\t */\r\n\tpublic reset() {\r\n\t\tthis.manualActionRequest = {\r\n\t\t\tdevice: null,\r\n\t\t\treason: \"\"\r\n\t\t};\r\n\r\n\t\tthis.pulsing = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a note in the system indicating that the user has pulsed the selected device,\r\n\t * and attaches the reason. Then we issue a command to the device service indicating we wish\r\n\t * to pulse a relay.\r\n\t */\r\n\tpublic async pulse() {\r\n\t\t// Trigger validation\r\n\t\tthis.$v.$touch();\r\n\t\tif (this.$v.$error) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.pulsing = true;\r\n\r\n\t\ttry {\r\n\t\t\t// Get the details reqd to trigger the relay, and attach the note\r\n\t\t\tconst device = await api.deviceQuickControl(\r\n\t\t\t\tthis.manualActionRequest.device.deviceId,\r\n\t\t\t\tthis.manualActionRequest.reason\r\n\t\t\t);\r\n\r\n\t\t\t// If we got a device back, we can trigger it with the device service\r\n\t\t\tif (device && device.eventRecordID) {\r\n\t\t\t\tconst deviceSvce = new DeviceService(api.getDeviceServiceAddress(), device.deviceServerEndpoint);\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// Pulse the relay\r\n\t\t\t\t\tawait deviceSvce.sendOutputCmd(\r\n\t\t\t\t\t\tdevice.deviceServiceSession,\r\n\t\t\t\t\t\tdevice.deviceID,\r\n\t\t\t\t\t\tnull, // outputType does not exist in device model so pass null at the moment\r\n\t\t\t\t\t\t\"pulse\"\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tthis.reset();\r\n\t\t\t\t\tthis.setManualActionShown(false);\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tthis.pulsing = false;\r\n\r\n\t\t\t\t\t// Notify the user that an error has occurred\r\n\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\ttitle: \"Quick Control\",\r\n\t\t\t\t\t\ttext: err\r\n\t\t\t\t\t\t\t? err.statusText\r\n\t\t\t\t\t\t\t: \"Unable to trigger the relay - please contact support if this problem persists.\"\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// We haven't got any specific errors, so just throw null here\r\n\t\t\t\t// so we can hit the catch block and notify the user that something\r\n\t\t\t\t// has gone wrong\r\n\t\t\t\tthrow null;\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\tthis.pulsing = false;\r\n\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Quick Control\",\r\n\t\t\t\ttext: err\r\n\t\t\t\t\t? err.statusText\r\n\t\t\t\t\t: \"Unable to trigger the relay - please contact support if this problem persists.\"\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic focusDeviceFinder() {\r\n\t\t(this.$refs.deviceFinder.$el as HTMLElement).focus();\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the modal back to it's original state and hides it.\r\n\t */\r\n\tpublic cancel() {\r\n\t\tthis.reset();\r\n\t\tthis.setManualActionShown(false);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualAction.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualAction.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ManualAction.vue?vue&type=template&id=63e0ad5a&scoped=true\"\nimport script from \"./ManualAction.vue?vue&type=script&lang=ts\"\nexport * from \"./ManualAction.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ManualAction.vue?vue&type=style&index=0&id=63e0ad5a&prod&scoped=true&lang=scss\"\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 \"63e0ad5a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"warning-container\",class:{'hide': _vm.hide},attrs:{\"id\":\"inactivityWarning\"}},[_c('div',{staticClass:\"card bg-danger\"},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('span',{staticClass:\"flex-grow-1 m-r-10 ml-2\"},[_vm._v(\"Warning: You will automatically be logged out due to inactivity in \"+_vm._s(_vm.inactivityWarningSeconds)+\" seconds.\")]),_c('span',{staticClass:\"btn btn-secondary\",on:{\"click\":_vm.cancelCountdown}},[_vm._v(\"Cancel\")])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport { namespace, Getter, Action } from \"vuex-class\";\nimport { axiosInstance } from \"@/axios.instance\";\nimport api from \"@/services/api.service\";\nimport { EventDetails, EventShareUser } from \"@/store/site-monitor/types\";\nimport { retry } from \"rxjs/operators\";\n\nconst EventQueue = namespace(\"eventqueue\");\n\n@Component({\n\tcomponents: {}\n})\nexport default class QueueInactivityWarning extends Vue {\n\t@Getter(\"getAlarmScreenTimeoutSeconds\") alarmScreenTimeoutSeconds: any;\n\t@EventQueue.Getter(\"getLastEventHandled\") lastEventHandled;\n\t@EventQueue.Mutation setLastEventHandled: () => void;\n\t@Action logout: () => void;\n\n\tpublic hide: boolean = true;\n\tpublic checkTimer: NodeJS.Timeout = null;\n\tpublic countdownSeconds: number = 20;\n\tpublic inactivityWarningSeconds: number = 20;\n\n\tmounted() {\n\t\tif (!this.alarmScreenTimeoutSeconds) return;\n\n\t\tif (this.alarmScreenTimeoutSeconds < this.countdownSeconds)\n\t\t\tthis.countdownSeconds = this.alarmScreenTimeoutSeconds;\n\n\t\tlet startWarningAt =\n\t\t\tthis.alarmScreenTimeoutSeconds * 1000 -\n\t\t\tthis.countdownSeconds * 1000 +\n\t\t\t1000;\n\n\t\tthis.checkTimer = setInterval(() => {\n\t\t\tlet lastActivity = this.lastEventHandled;\n\t\t\tif (lastActivity) {\n\t\t\t\tlet inactiveTime = new Date().valueOf() - lastActivity;\n\n\t\t\t\tif (inactiveTime > startWarningAt) {\n\t\t\t\t\tif (this.hide) {\n\t\t\t\t\t\tthis.inactivityWarningSeconds = this.countdownSeconds;\n\t\t\t\t\t\tthis.hide = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (this.inactivityWarningSeconds <= 0) {\n\t\t\t\t\t\t\tapi.logout().then(() => {\n\t\t\t\t\t\t\t\tthis.logout();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.inactivityWarningSeconds--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!this.hide) {\n\t\t\t\t\t\tthis.hide = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 1000);\n\t}\n\n\tbeforeDestroy() {\n\t\tclearInterval(this.checkTimer);\n\t\tthis.checkTimer = null;\n\t}\n\n\tcancelCountdown() {\n\t\tthis.setLastEventHandled();\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InactivityWarning.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InactivityWarning.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./InactivityWarning.vue?vue&type=template&id=969bc55c&scoped=true\"\nimport script from \"./InactivityWarning.vue?vue&type=script&lang=ts\"\nexport * from \"./InactivityWarning.vue?vue&type=script&lang=ts\"\nimport style0 from \"./InactivityWarning.vue?vue&type=style&index=0&id=969bc55c&prod&scoped=true&lang=scss\"\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 \"969bc55c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"visible\":_vm.activityLogShown,\"centered\":\"\",\"static\":\"\",\"body-class\":\"d-flex flex-column\",\"content-class\":\"mx-5\",\"size\":\"lg\",\"modal-class\":\"activity-raise-modal\",\"title\":\"Activity Log Raise\"},on:{\"hidden\":function($event){return _vm.cancel()},\"ok\":function($event){return _vm.createActivityLog()}}},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-6\"},[_vm._v(\" Start: \"),_c('input',{attrs:{\"type\":\"time\",\"pattern\":\"[0-9]{2}:[0-9]{2}\",\"id\":\"startTime\"},domProps:{\"value\":_vm.formatDateStr(_vm.getTimeNow, true, false, false)},on:{\"change\":function($event){return _vm.setTime($event, 'start')}}})]),_c('div',{staticClass:\"col-md-6\"},[_vm._v(\" End: \"),_c('input',{attrs:{\"type\":\"time\",\"pattern\":\"[0-9]{2}:[0-9]{2}\",\"id\":\"endTime\"},on:{\"change\":function($event){return _vm.setTime($event, 'end')}}})])])]),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1 d-flex flex-column\",staticStyle:{\"width\":\"50%\"}},[_c('span',{staticClass:\"flex-grow-0\"},[_vm._v(\" Area: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('area-tree-select',{attrs:{\"value\":{ id: _vm.newActivityLog.areaID, label: _vm.newActivityLog.areaTitle }},on:{\"input\":_vm.areaSelected}})],1)])]),(_vm.newActivityLog && _vm.newActivityLog.areaID && this.categoryData.length > 0)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1 d-flex flex-column\",staticStyle:{\"width\":\"50%\"}},[_c('span',{staticClass:\"flex-grow-0\"},[_vm._v(\" Category: \")]),_c('vue-select',{staticClass:\"dark flex-grow-1\",attrs:{\"id\":\"category\",\"label\":\"title\",\"options\":_vm.categoryData,\"placeholder\":'Category',\"value\":_vm.categoryData.find(function (obj) { return obj.eventOutcomeID == _vm.newActivityLog.categoryID; })},on:{\"input\":_vm.setSelectedCategory}},[_c('div',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Please choose an Area first\")])])],1)])]):_vm._e(),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1 d-flex flex-column\",staticStyle:{\"width\":\"50%\"}},[_c('span',{staticClass:\"flex-grow-0\"},[_vm._v(\" Notes: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newActivityLog.outcomeNote),expression:\"newActivityLog.outcomeNote\"}],staticClass:\"form-control\",attrs:{\"id\":\"tbNotes\",\"rows\":\"5\",\"placeholder\":\"Enter a description of the activity...\"},domProps:{\"value\":(_vm.newActivityLog.outcomeNote)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newActivityLog, \"outcomeNote\", $event.target.value)}}})])])]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"data-dismiss\":\"modal\"},on:{\"click\":function($event){return _vm.cancel()}}},[_c('span',[_vm._v(\"Cancel\")])]),_c('b-button',{staticClass:\"ksConfirm\",attrs:{\"data-dismiss\":\"modal\",\"disabled\":!_vm.activityLogIsValid,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.createActivityLog()}}},[_c('span',[_vm._v(\"Add\")])])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Mutation, Action, Getter } from \"vuex-class\";\r\nimport vSelect from \"vue-select\";\r\nimport { Datetime } from \"vue-datetime\";\r\n\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport { ActivityLogDTO } from \"../../store/activity-log/types\";\r\nimport AreaTreeSelect from '../form/AreaTreeSelect.vue';\r\nimport { AreaNode } from '@/types/sv-data/groups/AreaNode';\r\nimport { UserGroup } from '@/store/types';\r\n\r\nconst ActivityLog = namespace(\"activityLog\");\r\nconst Eventqueue = namespace(\"eventqueue\");\r\n\r\nVue.mixin(formatDateMixin);\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\tDatetime\r\n\t}\r\n})\r\nexport default class ActivityLogPopup extends Vue {\r\n\t@Getter(\"getUserGroups\") groups: UserGroup[];\r\n\t@Action fetchUserGroups: () => Promise;\r\n\r\n\t@Eventqueue.Mutation setActivityLogShown: (shown: boolean) => void;\r\n\t@Eventqueue.Getter(\"getActivityLogShown\") activityLogShown!: boolean;\r\n\r\n\t@ActivityLog.Action addActivityLog: (log: ActivityLogDTO) => Promise;\r\n\t@ActivityLog.Action getActivityLogOutcomes: (areaId: number) => Promise;\r\n\r\n\tprivate newActivityLog: ActivityLogDTO = {\r\n\t\tactivityLogID: 0,\r\n\t\teventTypeID: null,\r\n\t\tlogged: new Date().toISOString(),\r\n\t\tstart: new Date().toISOString(),\r\n\t\tend: new Date().toISOString(),\r\n\t\tcategoryID: null,\r\n\t\tcategoryTitle: \"\",\r\n\t\tareaID: 0,\r\n\t\tareaTitle: \"\",\r\n\t\tviewedUserID: null,\r\n\t\toutcomeNote: \"\",\r\n\t\tuserTitle: \"\",\r\n\t\thiddenFromUsers: false\r\n\t};\r\n\r\n\tprivate categoryData = [];\r\n\r\n\tprivate setSelectedCategory(category: any): void {\r\n\t\tthis.newActivityLog.categoryID = category.eventOutcomeID;\r\n\t\tthis.newActivityLog.categoryTitle = category.title;\r\n\t}\r\n\r\n\t@Watch(\"newActivityLog.areaID\")\r\n\tprivate async onActivityLogAreaIDChanged(newAreaId: number): Promise {\r\n\t\tawait this.getActivityLogOutcomes(newAreaId).then(result => {\r\n\t\t\tthis.categoryData = result.data;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get activityLogIsValid(): boolean {\r\n\t\treturn !!(\r\n\t\t\tthis.newActivityLog &&\r\n\t\t\tthis.newActivityLog.areaID &&\r\n\t\t\tthis.newActivityLog.outcomeNote\r\n\t\t);\r\n\t}\r\n\r\n\tprivate async createActivityLog(activityLog: ActivityLogDTO): Promise {\r\n\t\tawait this.addActivityLog(this.newActivityLog).then(() => {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.setActivityLogShown(false);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate reset(): void {\r\n\t\tthis.newActivityLog.activityLogID = 0;\r\n\t\tthis.newActivityLog.eventTypeID = 0;\r\n\t\tthis.newActivityLog.logged = new Date().toISOString();\r\n\t\tthis.newActivityLog.start = new Date().toISOString();\r\n\t\tthis.newActivityLog.end = new Date().toISOString();\r\n\t\tthis.newActivityLog.categoryID = null;\r\n\t\tthis.newActivityLog.categoryTitle = \"\";\r\n\t\tthis.newActivityLog.areaID = 0;\r\n\t\tthis.newActivityLog.areaTitle = \"\";\r\n\t\tthis.newActivityLog.viewedUserID = null;\r\n\t\tthis.newActivityLog.outcomeNote = \"\";\r\n\t\tthis.newActivityLog.hiddenFromUsers = false;\r\n\r\n\t\tthis.categoryData = [];\r\n\t}\r\n\r\n\tprivate cancel(): void {\r\n\t\tthis.reset();\r\n\t\tthis.setActivityLogShown(false);\r\n\t}\r\n\r\n\tprivate get getTimeNow(): string {\r\n\t\treturn new Date().toISOString();\r\n\t}\r\n\r\n\tprivate setTime(event: any, field:any): void {\r\n\t\tlet time = event.target.value;\r\n\t\tlet dateTime = new Date();\r\n\r\n\t\tlet hoursMins = time.split(\":\");\r\n\r\n\t\tdateTime.setHours(hoursMins[0]);\r\n\t\tdateTime.setMinutes(hoursMins[1]);\r\n\r\n\t\tlet startTime = dateTime.toISOString();\r\n\r\n\t\tthis.newActivityLog[field] = startTime;\r\n\t}\r\n\r\n\t@Watch(\"activityLogShown\")\r\n\tprivate async onActivityLogShownChanged(newValue: boolean): Promise {\r\n\t\tif (newValue) {\r\n\t\t\tawait this.fetchUserGroups();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate areaSelected(area: AreaNode): void {\r\n\t\tif (!this.newActivityLog) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!area) {\r\n\t\t\tthis.newActivityLog.areaID = null;\r\n\t\t\tthis.newActivityLog.areaTitle = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.newActivityLog.areaID = area.id;\r\n\t\tthis.newActivityLog.areaTitle = area.label;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityLogPopup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityLogPopup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ActivityLogPopup.vue?vue&type=template&id=421cd554&scoped=true\"\nimport script from \"./ActivityLogPopup.vue?vue&type=script&lang=ts\"\nexport * from \"./ActivityLogPopup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ActivityLogPopup.vue?vue&type=style&index=0&id=421cd554&prod&scoped=true&lang=scss\"\nimport style1 from \"./ActivityLogPopup.vue?vue&type=style&index=1&id=421cd554&prod&lang=css\"\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 \"421cd554\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.virtualOperatorControlPanelShown)?_c('b-modal',{attrs:{\"visible\":_vm.virtualOperatorControlPanelShown,\"centered\":\"\",\"static\":\"\",\"body-class\":\"d-flex flex-column vo-control-panel\",\"content-class\":\"mx-5\",\"size\":\"lg\",\"modal-class\":\"vo-control-panel-modal\",\"title\":\"Virtual Operator Control Panel\"},on:{\"hidden\":function($event){return _vm.cancel()},\"ok\":function($event){return _vm.cancel()}}},[(this.errorMessage)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"data-cy\":\"virtual-control-panel-error\",\"id\":\"virtual-operator-control-panel-error\"}},[_vm._v(_vm._s(this.errorMessage))]):_vm._e(),(!this.errorMessage)?_c('iframe',{attrs:{\"id\":\"virtual-operator-control-panel-iframe\",\"height\":\"100%\",\"src\":this.aiUIVirtualOperatorUrl}}):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport settingsApi from \"@/services/api.settings.service\";\r\nimport apiKeyApi from \"@/services/api.apiKey.service\";\r\nimport { PlatformTypeEnum } from \"@/store/types\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\n\r\n@Component({\r\n})\r\n\r\nexport default class VirtualOperatorsPopUp extends Vue {\r\n\t@Eventqueue.Mutation setVirtualOperatorControlPanelShown: (shown: boolean) => void;\r\n\t@Eventqueue.Getter(\"getVirtualOperatorControlPanelShown\") virtualOperatorControlPanelShown!: boolean;\r\n\t@Getter getUserTenantGroupId: number;\r\n\r\n\tprivate aiUIVirtualOperatorUrl: string;\r\n\tprivate aiUIUrl: string;\r\n\tprivate aiAPIKey: string;\r\n\tprivate errorMessage: string;\r\n\r\n\tpublic async mounted() : Promise {\r\n\t\tconst tenantId = this.getUserTenantGroupId;\r\n\t\ttry {\r\n\t\t\tthis.aiUIUrl = await settingsApi.getAiUiUrl();\r\n\t\t\tthis.aiAPIKey = await apiKeyApi.getApiKey(\"VirtualOperator\");\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tthis.errorMessage = \"Error fetching control panel\";\r\n\t\t\tconsole.error(this.errorMessage)\r\n\t\t}\r\n\r\n\t\tthis.aiUIVirtualOperatorUrl = `${this.aiUIUrl}/vo-control-panel?platform=${PlatformTypeEnum.Response}&apiKey=${this.aiAPIKey}&externalKey=${tenantId}`;\r\n\t}\r\n\r\n\tprivate cancel(): void {\r\n\t\tthis.setVirtualOperatorControlPanelShown(false);\r\n\t}\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualOperatorsPopup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualOperatorsPopup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./VirtualOperatorsPopup.vue?vue&type=template&id=46ff93a5\"\nimport script from \"./VirtualOperatorsPopup.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualOperatorsPopup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./VirtualOperatorsPopup.vue?vue&type=style&index=0&id=46ff93a5&prod&lang=css\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-modal',{attrs:{\"id\":\"processAlarmConfirmationModal\",\"data-cy\":\"Process-Alarm-Confirmation-modal\",\"title\":\"Process Alarm Confirmation\",\"centered\":\"\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"hide-header-close\":\"\",\"ok-title\":\"confirm\"},on:{\"ok\":function($event){return _vm.processAlarm()},\"cancel\":function($event){return _vm.cancelAlarm()}},model:{value:(_vm.pendingEventPickup),callback:function ($$v) {_vm.pendingEventPickup=$$v},expression:\"pendingEventPickup\"}},[(this.pendingEventPickup && this.pendingEventPickup.highestPriorityAlarm)?_c('span',[_vm._v(\"You are about to process the highest priority alarm?\")]):_c('span',[_vm._v(\"You are about to process the alarm \"),_c('b',[_vm._v(_vm._s(_vm.alarmDesc))]),_vm._v(\" for the area - \"),_c('b',[_vm._v(_vm._s(_vm.alarmArea))]),_vm._v(\"?\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Mixins, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { FilteredEvent, PendingEventPickup } from \"@/store/eventqueue/types\";\r\nimport { get } from \"lodash\";\r\nimport RegionalHandlerMixin from '@/mixins/RegionalHandlerMixin';\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\n\r\n@Component({components: {}})\r\nexport default class ProcessAlarmConfirmation extends Mixins(RegionalHandlerMixin) {\r\n @Getter(\"getFeature\") private getFeature: (featureName: string[]) => boolean;\r\n\t@Eventqueue.State(\"pendingEventPickup\") private pendingEventPickup: PendingEventPickup;\r\n\r\n private showModal: boolean = false;\r\n private alarmDesc: string = \"\";\r\n private alarmArea: string = \"\";\r\n\r\n private async processAlarm(): Promise{\r\n if(this.pendingEventPickup.highestPriorityAlarm) {\r\n await this.processTopAlarm(this.pendingEventPickup.currentFilterID, this.pendingEventPickup.pickupMethod, true);\r\n } else {\r\n await this.handleEventQueueItem(\r\n this.pendingEventPickup.eventQueueItem,\r\n this.pendingEventPickup.checkInProcessing,\r\n this.pendingEventPickup.openInNewWindow,\r\n this.pendingEventPickup.pickupMethod,\r\n true //bypass the confirmation as we have already confirmed\r\n );\r\n }\r\n }\r\n\r\n private cancelAlarm(): void {\r\n this.setPendingEventPickup(null);\r\n }\r\n\r\n @Watch(\"pendingEventPickup\", {deep: true})\r\n private pendingEventWatch(){\r\n if(this.pendingEventPickup){\r\n this.showModal = true;\r\n if(this.pendingEventPickup.eventQueueItem){\r\n this.alarmDesc = this.pendingEventPickup.eventQueueItem?.eventTitle;\r\n this.alarmArea = this.pendingEventPickup.eventQueueItem?.groupTitle;\r\n }\r\n\r\n return;\r\n }\r\n this.showModal = false;\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessAlarmConfirmation.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ProcessAlarmConfirmation.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ProcessAlarmConfirmation.vue?vue&type=template&id=58be915a&scoped=true\"\nimport script from \"./ProcessAlarmConfirmation.vue?vue&type=script&lang=ts\"\nexport * from \"./ProcessAlarmConfirmation.vue?vue&type=script&lang=ts\"\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 \"58be915a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"alarmDialog\",attrs:{\"data-cy\":\"alarm-point-dialog\",\"id\":\"alarmDialog\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"body-class\":\"modal-overflow thin-scroll\"},on:{\"hidden\":_vm.cancel}},[_c('template',{slot:\"modal-header\"},[_c('h4',[_vm._v(\"Alarm Points\")])]),_c('div',{staticClass:\"d-flex flew-row\",staticStyle:{\"height\":\"15vh\",\"margin\":\"-15px\"}},[_c('div',{staticClass:\"form-group\"},[_c('alarm-point-finder',{ref:\"alarmPointFinder\"})],1)]),_c('div',{staticClass:\"d-flex flex-row\",staticStyle:{\"height\":\"45vh\",\"margin\":\"-15px\"}},[_c('div',{staticClass:\"form-group\",staticStyle:{\"width\":\"100%\"}},[(_vm.getSelectedResponse)?_c('div',{staticClass:\"card\",staticStyle:{\"margin\":\"5px\",\"width\":\"100%\"}},[_c('div',{staticClass:\"card-header small-padding-header\"},[_vm._v(\" \"+_vm._s(_vm.getSelectedResponse.title)+\" \"),(_vm.selectedArea)?_c('span',[_c('br'),_c('a',{staticClass:\"btn btn-link\",on:{\"click\":_vm.backToGroup}},[_c('small',[_c('i',{staticClass:\"fas fa-chevron-left\"}),_vm._v(\" \"+_vm._s(_vm.selectedArea.label))])])]):_vm._e()]),_c('alarm-point',{staticClass:\"card-body\",attrs:{\"response\":_vm.getSelectedResponse},on:{\"onMaskedAlarm\":_vm.onMaskedAlarm,\"onUnmaskedAlarm\":_vm.onUnmaskedAlarm}})],1):(_vm.selectedArea)?_c('div',{staticClass:\"card\",staticStyle:{\"margin\":\"5px\",\"width\":\"100%\"}},[_c('div',{staticClass:\"card-header\"},[_vm._v(\" \"+_vm._s(_vm.selectedArea.label)+\" \")]),_c('area-alarm-points',{staticClass:\"card-body p-1\"})],1):_vm._e()])]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"close-history-btn\"},on:{\"click\":_vm.cancel}},[_c('span',[_vm._v(\"Close\")])])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.response)?_c('div',{staticClass:\"d-flex flex-column p-1\",staticStyle:{\"overflow\":\"hidden\"}},[_c('div',{staticClass:\"card flex-shrink-0\",staticStyle:{\"margin\":\"5px\"}},[_c('div',{staticClass:\"card-body no-padding\"},[_c('ul',{staticClass:\"list-group\"},[(_vm.maskingEnabled)?_c('li',{staticClass:\"list-group-item\",class:{ 'list-group-item-action': !_vm.showMask },attrs:{\"data-cy\":\"alarm-show-masking\"},on:{\"click\":function($event){if (!_vm.showMask) {\n\t\t\t\t\t\t\t_vm.showMask = true;\n\t\t\t\t\t\t\t_vm.showOnTest = false;\n\t\t\t\t\t\t}}}},[_c('div',{staticClass:\"m-b-5\"},[_c('b',{staticClass:\"flex-grow-1\"},[_vm._v(_vm._s(_vm.response.armed ? \"Mask alarm point\" : \"Unmask alarm point\"))])]),(_vm.showMask && _vm.response.armed)?_c('div',[_c('masking-form',{attrs:{\"selectedResponses\":[_vm.response],\"showConfirmationButtons\":\"\"},on:{\"close\":function($event){_vm.showMask = false;},\"masked-alarm\":_vm.onAlarmMasked}})],1):_vm._e(),(!_vm.response.armed)?_c('div',[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('span',{staticClass:\"flex-grow-1\"},[_vm._v(\" Masked \"),(_vm.response.toggleArmAt)?_c('span',[_vm._v(\" until \"+_vm._s(_vm.displayDateFromISOString(_vm.response.toggleArmAt + \"Z\"))+\" \")]):_vm._e(),(_vm.response.disarmReasonID && _vm.response.disarmReasonTitle)?_c('span',[_vm._v(\" due to \"+_vm._s(_vm.response.disarmReasonTitle)+\" \")]):_vm._e(),(_vm.response.disarmNote)?_c('span',[_vm._v(\" \"+_vm._s(_vm.response.disarmNote)+\" \")]):_vm._e()]),_c('div',{staticClass:\"flex-shrink-0\"},[_c('button',{staticClass:\"btn btn-secondary\",staticStyle:{\"margin-left\":\"5px\"},attrs:{\"data-cy\":\"unmask-alarm-button\"},on:{\"click\":function($event){return _vm.unMaskAlarm()}}},[_vm._v(\"Unmask \")])])])]):_vm._e()]):_vm._e(),(_vm.onTestEnabled)?_c('put-on-test',{attrs:{\"data-cy\":\"alarm-show-ontest\",\"selectedAlarmPoint\":_vm.responseDetails,\"showOnTest\":_vm.showOnTest},on:{\"open\":function($event){_vm.showMask = false; _vm.showOnTest = true},\"close\":function($event){_vm.showOnTest = false}}}):_vm._e(),(_vm.responseOnTestEvent)?_c('li',{staticClass:\"list-group-item\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('span',{staticClass:\"flex-grow-1\"},[_vm._v(\" On test until \"+_vm._s(_vm.displayDateFromISOString(_vm.responseOnTestEvent.unParkAt + \"Z\"))+\" \"),(_vm.responseOnTestEvent.eventTypeID == 10)?_c('span',[_c('br'),_vm._v(\"Audit mode test \")]):_vm._e(),(_vm.responseOnTestEvent.eventTitle)?_c('span',[_c('br'),_vm._v(\" \"+_vm._s(_vm.responseOnTestEvent.eventTitle)+\" \")]):_vm._e()]),_c('b-button',{staticClass:\"btn btn-secondary\",attrs:{\"data-cy\":\"end-test-button\"},on:{\"click\":function($event){return _vm.endTest()}}},[_vm._v(\"End Test\")])],1)]):_vm._e(),(_vm.responseOnTestEvent && !_vm.testAlarmsLoaded)?_c('li',{staticClass:\"list-group-item\",class:{ 'list-group-item-action': !_vm.testAlarmsLoaded },on:{\"click\":function($event){return _vm.loadOnTestRecords()}}},[_c('b',[_vm._v(\"View Test Alarms\")])]):_vm._e(),(_vm.responseOnTestEvent && _vm.testAlarmsLoaded)?_c('li',{staticClass:\"list-group-item\"},[(_vm.testAlarmsLoaded)?_c('VuePerfectScrollbar',{ref:\"ps\",staticStyle:{\"max-height\":\"30vh\"}},[_c('ul',{staticClass:\"list-group\",attrs:{\"data-cy\":\"on-test-records\"}},[_vm._l((_vm.testAlarms),function(alarm,index){return _c('li',{key:index,staticClass:\"list-group-item\"},[_c('span',{staticClass:\"date-span\"},[_vm._v(_vm._s(_vm.displayDateFromISOString(alarm.created)))]),_c('span',[_vm._v(_vm._s(alarm.details))])])}),(_vm.testAlarms.length == 0)?_c('li',{staticClass:\"list-group-item\"},[_vm._v(\"No alarms received\")]):_vm._e(),_c('li',{staticClass:\"list-group-item list-group-item-action\",on:{\"click\":function($event){return _vm.loadOnTestRecords()}}},[_c('b',[_vm._v(\"Load More\")])])],2)]):_vm._e()],1):_vm._e()],1)])]),(_vm.disableAutomaticLoad)?_c('div',{class:[_vm.showHistory ? 'd-flex flex-grow-1 flex-shrink-1 card card-secondary' : 'card flex-shrink-0'],staticStyle:{\"overflow\":\"hidden\",\"margin\":\"5px\"}},[_c('div',{staticClass:\"card-body no-padding\",staticStyle:{\"overflow\":\"hidden\"}},[_c('li',{staticClass:\"list-group-item\",class:[_vm.showHistory ? 'history-table' : 'list-group-item-action'],on:{\"click\":function($event){_vm.showHistory = true}}},[_c('div',{staticClass:\"d-flex\"},[_c('b',{staticClass:\"flex-grow-1\",class:{ 'card-header': _vm.showHistory }},[_vm._v(\" \"+_vm._s(_vm.showHistory ? \"History - Most recent 50 alarms for this alarm point\" : \"Load event history\")+\" \")])]),_c('transition',{attrs:{\"name\":\"history\"}},[(_vm.showHistory)?_c('div',{staticStyle:{\"overflow\":\"hidden\",\"height\":\"100%\"}},[(_vm.responseDetails.canGetHistoryLatest)?_c('div',{staticClass:\"d-flex flex-column\",staticStyle:{\"height\":\"100%\"}},[_c('b-tabs',{staticClass:\"flex-tabs\",staticStyle:{\"max-height\":\"100%\"}},[_c('b-tab',{attrs:{\"title\":\"History\"}},[_c('alarm-point-history',{staticStyle:{\"height\":\"100%\",\"max-height\":\"100%\"}})],1),_c('b-tab',{attrs:{\"title\":_vm.responseDetails.deviceTypeTitle,\"active\":\"\"}},[_c('access-history',{staticStyle:{\"height\":\"100%\",\"max-height\":\"100%\"}})],1)],1)],1):_c('alarm-point-history',{staticStyle:{\"height\":\"100%\",\"max-height\":\"100%\"}})],1):_vm._e()])],1)])]):(_vm.responseDetails)?_c('div',{staticClass:\"d-flex flex-grow-1 flex-shrink-1 card card-secondary\",staticStyle:{\"margin\":\"5px\",\"overflow\":\"hidden\"}},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"History - Most recent 50 alarms for this alarm point\")]),_c('div',{staticClass:\"card-body no-padding\",staticStyle:{\"overflow\":\"hidden\"}},[(_vm.responseDetails.canGetHistoryLatest)?_c('div',{staticClass:\"d-flex flex-column\",staticStyle:{\"height\":\"100%\"}},[_c('b-tabs',{staticClass:\"flex-tabs\",staticStyle:{\"max-height\":\"100%\"}},[_c('b-tab',{attrs:{\"title\":\"Immix\"}},[_c('alarm-point-history',{staticStyle:{\"height\":\"100%\",\"max-height\":\"100%\"}})],1),_c('b-tab',{attrs:{\"title\":_vm.responseDetails.deviceTypeTitle,\"active\":\"\"}},[_c('access-history',{staticStyle:{\"height\":\"100%\",\"max-height\":\"100%\"}})],1)],1)],1):_c('alarm-point-history',{staticStyle:{\"height\":\"100%\",\"max-height\":\"100%\"}})],1)]):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column flex-grow-1 flex-shrink-1\",staticStyle:{\"overflow\":\"hidden\"}},[_c('div',{staticClass:\"search-control\"},[(_vm.fetchingHistory)?_c('div',{staticClass:\"alert alert-secondary\"},[_c('i',{staticClass:\"fas fa-spinner fa-spin\"}),_vm._v(\" Getting history ... \")]):_vm._e(),(!_vm.fetchingHistory && !_vm.fetchingHistoryFailed && _vm.historyItems.length == 0)?_c('div',{staticClass:\"alert alert-secondary\"},[_vm._v(\"No history available for \"+_vm._s(_vm.response.title))]):_vm._e(),(!_vm.fetchingHistory && _vm.fetchingHistoryFailed)?_c('div',{staticClass:\"alert alert-secondary\"},[_vm._v(\"Unable to retrieve history for \"+_vm._s(_vm.response.title))]):_vm._e(),(!_vm.fetchingHistory && _vm.historyItems.length > 0)?_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filter),expression:\"filter\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Search history\"},domProps:{\"value\":(_vm.filter)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.filter=$event.target.value}}})]):_vm._e()]),(!_vm.fetchingHistory && _vm.historyItems.length > 0)?_c('VuePerfectScrollbar',{ref:\"ps\",staticClass:\"flex-grow-1 flex-shrink-1\"},[_c('ul',{staticClass:\"list-group\",attrs:{\"data-cy\":\"access-history-items\"}},_vm._l((_vm.filteredHistory),function(historyItem,index){return _c('li',{key:index,staticClass:\"list-group-item access-history-item d-flex\"},[_c('span',{staticClass:\"date-span\"},[_vm._v(_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(historyItem.utcDateTime)))]),_c('span',[_vm._v(_vm._s(historyItem.text))])])}),0)]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport { namespace } from \"vuex-class\";\nimport api from \"../../services/api.service\";\n\nconst AlarmPoints = namespace(\"alarmPoints\");\n\n@Component({\n\tcomponents: {\n\t\tVuePerfectScrollbar\n\t}\n})\nexport default class AccessControlHistory extends Vue {\n\t$refs!: {\n\t\taccessHistory: any;\n\t};\n\n\tpublic fetchingHistory: boolean = false;\n\tpublic fetchingHistoryFailed: boolean = false;\n\tpublic historyItems: any[] = [];\n\n\tpublic filter: string = \"\";\n\n\t@AlarmPoints.State(\"selectedResponse\") response;\n\n\tpublic mounted(): void {\n\t\tif (this.response != null) {\n\t\t\tthis.getHistory(this.response.responseID);\n\t\t}\n\t}\n\n\tpublic get filteredHistory(): any[] {\n\t\tif (this.filter == \"\") return this.historyItems;\n\n\t\tvar filterLower = this.filter.toLowerCase();\n\n\t\treturn this.historyItems.filter(\n\t\t\thistoryItem => historyItem.text.toLowerCase().indexOf(filterLower) > -1\n\t\t);\n\t}\n\n\t@Watch(\"response\")\n\tpublic async onResponseChanged(value: any, oldValue: any) {\n\t\tif (value && value.canGetHistoryLatest) {\n\t\t\tthis.getHistory(value.responseID);\n\t\t} else {\n\t\t\tthis.historyItems = [];\n\t\t}\n\t}\n\n\tpublic async getHistory(responseID): Promise {\n\t\tthis.fetchingHistory = true;\n\t\tthis.fetchingHistoryFailed = false;\n\n\t\ttry {\n\t\t\tvar history = await api.accessControlHistory(responseID);\n\n\t\t\tthis.historyItems = history;\n\t\t\tthis.fetchingHistory = false;\n\t\t} catch (err) {\n\t\t\tthis.fetchingHistoryFailed = true;\n\t\t\tthis.fetchingHistory = false;\n\t\t}\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./History.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./History.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./History.vue?vue&type=template&id=0b3276da&scoped=true\"\nimport script from \"./History.vue?vue&type=script&lang=ts\"\nexport * from \"./History.vue?vue&type=script&lang=ts\"\nimport style0 from \"./History.vue?vue&type=style&index=0&id=0b3276da&prod&scoped=true&lang=scss\"\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 \"0b3276da\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column flex-grow-2 flex-shrink-1\",staticStyle:{\"overflow\":\"hidden\"}},[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('b-col',[_c('b-form-input',{staticClass:\"form-control\",attrs:{\"placeholder\":\"Search history\",\"type\":\"search\"},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}})],1)],1),_c('b-row',[_c('b-col',[_c('b-table',{attrs:{\"striped\":\"\",\"show-empty\":\"\",\"items\":_vm.filteredHistory,\"hover\":\"\",\"primary-key\":\"\",\"head-variant\":\"dark\",\"fields\":_vm.tableFields,\"busy\":_vm.fetchingHistory},scopedSlots:_vm._u([{key:\"cell(created)\",fn:function(row){return [_vm._v(\" \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(row.item.created))+\" \")]}},{key:\"table-busy\",fn:function(){return [_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1)]},proxy:true}])})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport { namespace } from \"vuex-class\";\nimport api from \"../../services/api.service\";\nimport { VueBootstrapField } from '@/store/types';\nimport SureViewIcon from '../SureViewIcon.vue';\n\nconst AlarmPoints = namespace(\"alarmPoints\");\n\n@Component({\n\tcomponents: {\n\t\tVuePerfectScrollbar,\n\t\t\"sureview-icon\": SureViewIcon,\n\t}\n})\nexport default class AlarmPointHistory extends Vue {\n\t$refs!: {\n\t\taccessHistory: any;\n\t};\n\n\tpublic fetchingHistory = false;\n\tpublic historyItems: any[] = [];\n\n\tpublic filter: string = \"\";\n\n\t@AlarmPoints.State(\"selectedResponse\") response;\n\n\tasync mounted() {\n\t\tif (this.response != null) {\n\t\t\tthis.fetchingHistory = true;\n\t\t\tthis.historyItems = await api.responseHistory(this.response.responseID);\n\t\t\tthis.fetchingHistory = false;\n\t\t}\n\t}\n\n\tget filteredHistory(): any[] {\n\t\tif (this.filter == \"\") return this.historyItems;\n\n\t\tvar filterLower = this.filter.toLowerCase();\n\n\t\treturn this.historyItems.filter(\n\t\t\thistoryItem =>\n\t\t\t\thistoryItem.details &&\n\t\t\t\thistoryItem.details.toLowerCase().indexOf(filterLower) > -1\n\t\t);\n\t}\n\n\tprivate get tableFields() {\n\t\tlet fields: VueBootstrapField[] = [];\n\t\tfields.push({ key: \"created\", label: \"Created\" });\n\t\tfields.push({ key: \"eventId\", label: \"Event ID\", thClass: \"text-nowrap\" });\n\t\tfields.push({ key: \"details\", label: \"Details\" });\n\t\tfields.push({ key: \"eventOutcome\", label: \"Outcome\" });\n\n\t\treturn fields;\n\t}\n\n\t@Watch(\"response\")\n\tasync onResponseChanged(value: any, oldValue: any) {\n\t\tif (value) {\n\t\t\tthis.fetchingHistory = true;\n\n\t\t\tconst history = await api.responseHistory(value.responseID);\n\t\t\tthis.historyItems = history;\n\t\t\tthis.fetchingHistory = false;\n\t\t} else {\n\t\t\tthis.historyItems = [];\n\t\t}\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointHistory.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointHistory.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmPointHistory.vue?vue&type=template&id=3a1e5242&scoped=true\"\nimport script from \"./AlarmPointHistory.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmPointHistory.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmPointHistory.vue?vue&type=style&index=0&id=3a1e5242&prod&scoped=true&lang=scss\"\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 \"3a1e5242\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue, Prop, Watch, Emit, Mixins } from \"vue-property-decorator\";\nimport { namespace, Getter, Action } from \"vuex-class\";\n\nimport { validationMixin } from \"vuelidate\";\nimport { required, requiredIf, minValue, maxValue, numeric, minLength } from \"vuelidate/lib/validators\";\n\nimport moment from \"moment\";\nimport DatePicker from \"@sureview/vuejs-datepicker\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\n\nimport { EventRecord, MaskReason, EventDetails } from \"@/store/site-monitor/types\";\n\nimport api from \"@/services/api.service\";\n\nimport AccessControlHistory from \"@/components/access-control/History.vue\";\nimport AlarmPointHistory from \"./AlarmPointHistory.vue\";\nimport MaskingForm from \"@/components/alarm-masking/MaskingForm.vue\";\nimport PutOnTest from \"./PutOnTest.vue\";\nimport { UserPermissions, FeaturesList } from \"@/store/types\";\nimport { get } from \"lodash\";\nimport maskingApi from '@/services/api.masking.service';\n\nconst AlarmPoints = namespace(\"alarmPoints\");\nconst SiteMonitor = namespace(\"siteMonitor\");\n\nclass ResponseOnTestRequest {\n\tresponseID: number;\n\thours: number | null;\n\tminutes: number | null;\n\tdate: string;\n\tonTestUntilDate: Date;\n\ttime: string;\n\tscheduleType: number;\n\tauditMode: boolean;\n\tonTestNote: string;\n}\n\n@Component({\n\tmixins: [validationMixin],\n\tvalidations: {\n\t\tonTestRequest: {\n\t\t\thours: {\n\t\t\t\tnumeric,\n\t\t\t\trequired: requiredIf(function() {\n\t\t\t\t\treturn this.onTestRequest.scheduleType == this.ScheduleType.ForPeriod;\n\t\t\t\t}),\n\t\t\t\tminValue: minValue(0),\n\t\t\t\tvalidateHourPermission: function(hours) {\n\t\t\t\t\treturn hours <= this.getMaskMaxHours;\n\t\t\t\t},\n\t\t\t\tvalidateMaxTime: function(hours) {\n\t\t\t\t\treturn this.getMaskMaxHours == hours && this.onTestRequest.minutes > 0 ? false : true;\n\t\t\t\t}\n\t\t\t},\n\t\t\tminutes: {\n\t\t\t\tnumeric,\n\t\t\t\trequired: requiredIf(function() {\n\t\t\t\t\treturn this.onTestRequest.scheduleType == this.ScheduleType.ForPeriod;\n\t\t\t\t}),\n\t\t\t\tminValue: minValue(0),\n\t\t\t\tmaxValue: maxValue(59)\n\t\t\t},\n\t\t\tonTestUntilDate: {\n\t\t\t\trequired: requiredIf(function() {\n\t\t\t\t\treturn this.onTestRequest.scheduleType == this.ScheduleType.UntilDate;\n\t\t\t\t}),\n\t\t\t\tminValue: minValue(new Date().setHours(0, 0, 0, 0))\n\t\t\t},\n\t\t\ttime: {\n\t\t\t\tpattern: function(value) {\n\t\t\t\t\tif (typeof value == \"undefined\" || value == null || value == \"\") return true;\n\t\t\t\t\treturn /^[0-9]{2}:[0-9]{2}$/.test(value);\n\t\t\t\t},\n\t\t\t\tminTime: function(value) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Validator to ensure that the time entered by the user is in the future\n\t\t\t\t\t */\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof value == \"undefined\" ||\n\t\t\t\t\t\tvalue == null ||\n\t\t\t\t\t\tvalue == \"\" ||\n\t\t\t\t\t\ttypeof this.onTestRequest.onTestUntilDate == \"undefined\" ||\n\t\t\t\t\t\tthis.onTestRequest.onTestUntilDate == null ||\n\t\t\t\t\t\tthis.onTestRequest.scheduleType !== this.ScheduleType.UntilDate\n\t\t\t\t\t)\n\t\t\t\t\t\treturn true;\n\n\t\t\t\t\tconst now = new Date().setHours(0, 0, 0, 0);\n\t\t\t\t\tconst currentRequestDate = new Date(this.onTestRequest.onTestUntilDate).setHours(0, 0, 0, 0);\n\n\t\t\t\t\tif (now == currentRequestDate) {\n\t\t\t\t\t\t// If the user has chosen today as the re-arm date, we need to make sure that the time they've\n\t\t\t\t\t\t// entered is greater than the current time.\n\t\t\t\t\t\tvar momentTime = moment(value, \"HH:mm\", true).toDate();\n\t\t\t\t\t\treturn momentTime > new Date();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If the user hasn't chosen today, just make sure that the date they've entered is in the future.\n\t\t\t\t\t\treturn currentRequestDate > now;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\trequired: requiredIf(function() {\n\t\t\t\t\treturn this.onTestRequest.scheduleType == this.ScheduleType.UntilDate;\n\t\t\t\t})\n\t\t\t},\n\t\t\tonTestNote: {\n\t\t\t\trequired,\n\t\t\t\tminLength: minLength(1)\n\t\t\t}\n\t\t}\n\t},\n\tcomponents: {\n\t\tVuePerfectScrollbar,\n\t\t\"access-history\": AccessControlHistory,\n\t\t\"masking-form\": MaskingForm,\n\t\t\"alarm-point-history\": AlarmPointHistory,\n\t\t\"date-picker\": DatePicker,\n\t\t\"put-on-test\": PutOnTest\n\t},\n\tfilters: {\n\t\tdisplayDate: function(value: Date) {\n\t\t\treturn moment(value).format(\"LL LT\");\n\t\t}\n\t}\n})\nexport default class AlarmPoint extends Vue {\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\n\n\t@AlarmPoints.State(\"selectedResponse\") response;\n\t@AlarmPoints.State(\"disableAutomaticLoad\") disableAutomaticLoad;\n\t@AlarmPoints.Action fetchDisableAutomaticLoad: () => Promise;\n\t@AlarmPoints.State(\"displayResponseId\") displayResponseId;\n\t@AlarmPoints.Mutation setDisplayResponseId: any;\n\t@AlarmPoints.Mutation setSelectedResponse: any;\n\n\t@SiteMonitor.Getter getEventDetails: EventDetails;\n\t@SiteMonitor.State(\"MaskReasons\") maskReasons!: MaskReason[];\n\t@SiteMonitor.Getter getGroupMaskReasons: any;\n\t@SiteMonitor.Action loadMaskReasonsForAlarm: any;\n\t@SiteMonitor.Action loadMaskReasonsForGroup: any;\n\n\t@Getter getMaskMaxHours: number;\n\n\tpublic responseDetails: any = null;\n\tpublic responseOnTestEvent: any = null;\n\n\tpublic testAlarmsLoaded: boolean = false;\n\tpublic testAlarms: any[] = [];\n\tpublic maxEventRecordID: number = 0;\n\n\tpublic showOnTest: boolean = false;\n\tpublic showMask: boolean = false;\n\tpublic showHistory: boolean = false;\n\n\tpublic async mounted() {\n\t\tif (this.response) {\n\t\t\tthis.loadResponse();\n\t\t}\n\t\tawait this.fetchDisableAutomaticLoad();\n\t}\n\n\t@Watch(\"response\")\n\tpublic onResponseChanged(value: any) {\n\t\tif (value) this.loadResponse();\n\t}\n\n\tpublic async loadResponse() {\n\t\tif (this.response) {\n\t\t\tawait this.loadMaskReasonsForAlarm(this.response.groupID);\n\t\t\tawait this.loadMaskReasonsForGroup(this.response.groupID);\n\n\t\t\tthis.responseDetails = await api.responseGet(this.response.responseID);\n\t\t\tthis.responseOnTestEvent = await api.loadResponseOnTestEvent(this.response.responseID);\n\t\t} else this.responseOnTestEvent = null;\n\t}\n\n\t// == Consts == //\n\tpublic Today = new Date();\n\n\tpublic calendarDisabledDates = { to: new Date(this.Today.setDate(this.Today.getDate() - 1)) };\n\t/**\n\t * May not be entirely required - this is just used to set the min property for the HTML5 time input,\n\t * but we don't actually use HTML5 validation.\n\t */\n\tpublic get minTimeForSelectedDate() {\n\t\tconst today = new Date().setHours(0, 0, 0, 0);\n\t\tconst defaultMinTime = \"00:00\";\n\n\t\tif (typeof this.onTestRequest.onTestUntilDate == \"undefined\" || this.onTestRequest.onTestUntilDate == null)\n\t\t\treturn defaultMinTime;\n\t\tvar selectedDate = this.onTestRequest.onTestUntilDate.setHours(0, 0, 0, 0);\n\n\t\tif (selectedDate == today) {\n\t\t\treturn moment().format(\"HH:mm\");\n\t\t} else {\n\t\t\treturn defaultMinTime;\n\t\t}\n\t}\n\n\tpublic get maskingEnabled() {\n\t\treturn this.getFeature([\"Alarms\", \"Masking\"]) && (!!this.permissions.canDisarmSites || !!this.permissions.canDisarmSitesExtended);\n\t}\n\n\tpublic get onTestEnabled() {\n\t\treturn this.getFeature([\"Alarms\", \"AlarmPoints\", \"OnTest\"]) && !!this.permissions.canPutAlarmPointsOnTest;\n\t}\n\n\tpublic calendarDateFormatter(date: string) {\n\t\treturn moment(date).format(\"L\");\n\t}\n\n\tpublic ScheduleType = {\n\t\tForPeriod: 1,\n\t\tUntilDate: 2\n\t};\n\n\tpublic onTestRequest = {\n\t\tresponseID: null,\n\t\thours: null,\n\t\tminutes: null,\n\t\tonTestUntilDate: new Date(),\n\t\tdate: null,\n\t\ttime: moment()\n\t\t\t.add({ hours: 1 })\n\t\t\t.format(\"HH:mm\"),\n\t\tscheduleType: this.ScheduleType.ForPeriod,\n\t\tonTestNote: \"\"\n\t} as ResponseOnTestRequest;\n\n\t@Emit(\"onMaskedAlarm\")\n\tpublic onControlMaskedAlarm(result) {\n\t\tthis.showMask = false;\n\n\t\tthis.response.armed = false;\n\t\tthis.response.toggleArmAt = result.result.rearmAt\n\t\t\t? result.result.rearmAt.substring(0, result.result.rearmAt.length - 1)\n\t\t\t: result.result.rearmAt; //Remove trailing Z\n\n\t\tapi.responseGet(this.response.responseID).then(details => {\n\t\t\tthis.responseDetails = details;\n\t\t});\n\n\t\treturn result;\n\t}\n\n\t@Emit(\"onUnmaskedAlarm\")\n\tpublic onControlUnmaskedAlarm(result) {\n\t\tthis.showMask = false;\n\t\tthis.response.armed = true;\n\n\t\tapi.responseGet(this.response.responseID).then(details => {\n\t\t\tthis.responseDetails = details;\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tpublic get responseMaskedReason() {\n\t\tif (this.responseDetails.disarmReasonID && this.maskReasons) {\n\t\t\tlet disarmReasons = this.maskReasons.filter(\n\t\t\t\treason => reason.disarmReasonID == this.responseDetails.disarmReasonID\n\t\t\t);\n\t\t\tif (disarmReasons.length > 0) return disarmReasons[0].title;\n\t\t\telse return \"Unknown reason\";\n\t\t}\n\n\t\treturn \"\";\n\t}\n\t\n\tpublic get groupMaskedReason() {\n\t\tif (this.responseDetails.groupDisarmReasonID && this.getGroupMaskReasons) {\n\t\t\tlet disarmReasons = this.getGroupMaskReasons.filter(\n\t\t\t\treason => reason.disarmReasonID == this.responseDetails.groupDisarmReasonID\n\t\t\t);\n\t\t\tif (disarmReasons.length > 0) return disarmReasons[0].title;\n\t\t\telse return \"Unknown reason\";\n\t\t}\n\n\t\treturn \"\";\n\t}\n\n\tpublic async startTest() {\n\t\tthis.$v.$reset();\n\n\t\tthis.$nextTick(async () => {\n\t\t\t// force re-validation\n\t\t\tthis.$v.$touch();\n\n\t\t\t// if there are validation errors, stop the submission\n\t\t\tif (this.$v.$error) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.onTestRequest.responseID = this.response.responseID;\n\n\t\t\tvar testRequest = this.onTestRequest;\n\t\t\tif (this.onTestRequest.scheduleType == this.ScheduleType.UntilDate) {\n\t\t\t\t// Get the hours and minutes out of the time value\n\t\t\t\tvar momentTime = moment(this.onTestRequest.time, \"HH:mm\", true);\n\t\t\t\tvar hours = momentTime.hours();\n\t\t\t\tvar minutes = momentTime.minutes();\n\n\t\t\t\t// Calculate the datetime when this alarm is to be un-masked, and convert it to UTC\n\t\t\t\tvar formattedDate = moment(this.onTestRequest.onTestUntilDate)\n\t\t\t\t\t.set({ hours, minutes, seconds: 0 })\n\t\t\t\t\t.utc()\n\t\t\t\t\t.format();\n\n\t\t\t\t// Update the date value within our mask request, set hours and mins to 0\n\t\t\t\t// (nulls don't work - unsure why, probably because we're posting the form and not a JSON object)\n\t\t\t\ttestRequest = { ...this.onTestRequest, date: formattedDate, hours: 0, minutes: 0 };\n\n\t\t\t\tdelete testRequest.hours;\n\t\t\t\tdelete testRequest.minutes;\n\t\t\t} else {\n\t\t\t\tdelete testRequest.date;\n\t\t\t}\n\n\t\t\tthis.responseOnTestEvent = await api.startTest(testRequest);\n\t\t});\n\t}\n\n\tpublic async endTest() {\n\t\tif (this.responseOnTestEvent) {\n\t\t\tawait api.endTest(this.responseOnTestEvent.eventID);\n\t\t\tthis.responseOnTestEvent = null;\n\n\t\t\tthis.testAlarms = [];\n\t\t\tthis.testAlarmsLoaded = false;\n\t\t}\n\t}\n\n\tpublic async loadOnTestRecords() {\n\t\tif (this.responseOnTestEvent) {\n\t\t\tvar onTestRecords = await api.loadGroupOnTestRecords(this.responseOnTestEvent.eventID, 0);\n\n\t\t\tthis.maxEventRecordID = onTestRecords.maxEventRecordID;\n\t\t\tthis.testAlarms = onTestRecords.records;\n\t\t\tthis.testAlarmsLoaded = true;\n\t\t}\n\t}\n\n\tpublic async unMaskAlarm() {\n\t\tawait maskingApi.unmaskAlarm(this.response.eventID, this.response.responseID, this.response.groupID);\n\t\tthis.onControlUnmaskedAlarm({ response: this.response });\n\n\t\tthis.response.armed = true;\n\t\tthis.responseDetails.armed = true;\n\t\tthis.responseDetails.toggleArmAt = null;\n\t\tthis.responseDetails.disarmReasonID = null;\n\t}\n\n\tpublic async unMaskArea() {\n\t\tawait maskingApi.unmaskArea(this.responseDetails.groupID);\n\n\t\tthis.response.groupArmed = true;\n\t\tthis.responseDetails.groupArmed = true;\n\t\tthis.responseDetails.groupToggleArmAt = null;\n\t\tthis.responseDetails.groupDisarmReasonID = null;\n\t}\n\n\tprivate async onAlarmMasked(): Promise {\n\t\tvar updatedResponse = await api.responseGet(this.response.responseID);\n\t\tthis.setSelectedResponse(updatedResponse);\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPoint.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPoint.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmPoint.vue?vue&type=template&id=7e62b193&scoped=true\"\nimport script from \"./AlarmPoint.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmPoint.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmPoint.vue?vue&type=style&index=0&id=7e62b193&prod&scoped=true&lang=scss\"\nimport style1 from \"./AlarmPoint.vue?vue&type=style&index=1&id=7e62b193&prod&lang=scss\"\nimport style2 from \"./AlarmPoint.vue?vue&type=style&index=2&id=7e62b193&prod&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 \"7e62b193\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selectedArea)?_c('div',{staticClass:\"d-flex flex-column\",attrs:{\"data-cy\":\"area-alarms\"}},[(_vm.areaPermissions && _vm.areaPermissions.canDisarm)?_c('div',{staticClass:\"card flex-shrink-0\",staticStyle:{\"margin\":\"5px\"}},[_c('div',{staticClass:\"card-header\"},[_vm._v(\" On Test \")]),_c('div',{staticClass:\"card-body no-padding\"},[_c('ul',{staticClass:\"list-group\"},[(!_vm.areaOnTestEvent)?_c('li',{staticClass:\"list-group-item\",class:{'list-group-item-action' : !_vm.showOnTest},attrs:{\"data-cy\":\"show-on-test\"},on:{\"click\":function($event){_vm.showOnTest = true}}},[_c('div',{staticClass:\"d-flex\"},[_c('b',{staticClass:\"flex-grow-1\"},[_vm._v(\"Put area on test\")]),(_vm.showOnTest)?_c('b-button',{staticClass:\"btn btn-secondary \",on:{\"click\":function($event){$event.stopPropagation();_vm.showOnTest = false}}},[_vm._v(\" Cancel \")]):_vm._e()],1),(_vm.showOnTest && !_vm.selectedArea.armed)?_c('div',{staticClass:\"alert alert-danger d-flex alert-margin\"},[_c('span',{staticClass:\"flex-grow-1\"},[_vm._v(\"This area currently masked. No alarms will come in while it is in this state.\")]),_c('b-button',{staticClass:\"btn btn-secondary flex-grow-0\",staticStyle:{\"margin-left\":\"10px\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.unMaskArea($event)}}},[_vm._v(\" Unmask Area \")])],1):_vm._e(),(_vm.showOnTest)?_c('div',{staticClass:\"d-flex align-items-center\"},[_c('div',[_c('b-form-radio-group',{attrs:{\"id\":\"mask-alarm-type-controls\"},model:{value:(_vm.onTestRequest.scheduleType),callback:function ($$v) {_vm.$set(_vm.onTestRequest, \"scheduleType\", $$v)},expression:\"onTestRequest.scheduleType\"}},[_c('b-form-radio',{staticClass:\"custom-control-sm\",attrs:{\"value\":1}},[_vm._v(\"On test for a Fixed Period\")]),_c('b-form-radio',{staticClass:\"custom-control-sm\",attrs:{\"value\":2}},[_vm._v(\"On test until Date/Time\")])],1),_c('transition',{attrs:{\"name\":\"disarm-type-transition\",\"enter-active-class\":\"animated-fast fadeInDown\",\"leave-active-class\":\"animated-fast fadeOutUp\"}},[(_vm.onTestRequest.scheduleType == _vm.ScheduleType.ForPeriod)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"mt-1 form-row align-items-center\"},[_c('div',{staticClass:\"col-sm-6\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.onTestRequest.hours),expression:\"onTestRequest.hours\",modifiers:{\"number\":true}}],class:['form-control', 'form-control-sm', _vm.$v.onTestRequest.hours.$error ? 'invalid' : ''],attrs:{\"id\":\"mask-for-period-hours\",\"type\":\"number\",\"placeholder\":\"Hours\"},domProps:{\"value\":(_vm.onTestRequest.hours)},on:{\"blur\":[_vm.$v.onTestRequest.hours.$touch,function($event){return _vm.$forceUpdate()}],\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.onTestRequest, \"hours\", _vm._n($event.target.value))}}}),(_vm.$v.onTestRequest.hours.$error && !_vm.$v.onTestRequest.hours.required)?_c('sub',{staticClass:\"small text-danger fadeInDown animated\"},[_vm._v(\"Required\")]):_vm._e()]),_c('div',{staticClass:\"col-sm-6\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.onTestRequest.minutes),expression:\"onTestRequest.minutes\",modifiers:{\"number\":true}}],class:['form-control', 'form-control-sm', _vm.$v.onTestRequest.minutes.$error ? 'invalid' : ''],attrs:{\"id\":\"mask-for-period-minutes\",\"type\":\"number\",\"placeholder\":\"Minutes\"},domProps:{\"value\":(_vm.onTestRequest.minutes)},on:{\"blur\":[_vm.$v.onTestRequest.minutes.$touch,function($event){return _vm.$forceUpdate()}],\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.onTestRequest, \"minutes\", _vm._n($event.target.value))}}}),(_vm.$v.onTestRequest.minutes.$error && !_vm.$v.onTestRequest.minutes.required)?_c('sub',{staticClass:\"small text-danger fadeInDown animated\"},[_vm._v(\"Required\")]):_vm._e()])])]):(_vm.onTestRequest.scheduleType == _vm.ScheduleType.UntilDate)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"form-row-align-items-center mt-1 row\"},[_c('div',{staticClass:\"col-sm-6 pr-1\"},[_c('date-picker',{ref:\"datePicker\",attrs:{\"id\":\"mask-until-date-picker\",\"placeholder\":\"Date\",\"lang\":\"en\",\"calendar-class\":\"calendar\",\"typeable\":true,\"input-class\":'form-control-sm ' + (_vm.$v.onTestRequest.onTestUntilDate.$error ? 'invalid' : ''),\"bootstrap-styling\":true,\"disabled-dates\":_vm.calendarDisabledDates,\"highlighted\":{ includeDisabled: true },\"format\":_vm.calendarDateFormatter,\"monday-first\":true},model:{value:(_vm.onTestRequest.onTestUntilDate),callback:function ($$v) {_vm.$set(_vm.onTestRequest, \"onTestUntilDate\", $$v)},expression:\"onTestRequest.onTestUntilDate\"}}),(_vm.$v.onTestRequest.onTestUntilDate.$error)?_c('span',{staticClass:\"fadeInDown animated\"},[(!_vm.$v.onTestRequest.onTestUntilDate.required)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\"Required\")]):_vm._e(),(!_vm.$v.onTestRequest.onTestUntilDate.minValue)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\"Cannot be in the past\")]):_vm._e()]):_vm._e()],1),_c('div',{staticClass:\"col-sm-6 pl-1\"},[_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.onTestRequest.time),expression:\"onTestRequest.time\"}],class:['time-input', 'form-control', 'form-control-sm', _vm.$v.onTestRequest.time.$error ? 'invalid' : ''],attrs:{\"id\":\"mask-until-date-time\",\"placeholder\":\"HH:mm\",\"type\":\"time\",\"pattern\":\"[0-9]{2}:[0-9]{2}\",\"min\":_vm.minTimeForSelectedDate},domProps:{\"value\":(_vm.onTestRequest.time)},on:{\"blur\":_vm.$v.onTestRequest.time.$touch,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.onTestRequest, \"time\", $event.target.value)}}})]),(_vm.$v.onTestRequest.time.$error)?_c('span',{staticClass:\"fadeInDown animated\"},[(!_vm.$v.onTestRequest.time.minTime)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\"Cannot be in the past\")]):(!_vm.$v.onTestRequest.time.pattern)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\"Must be in the format HH:mm\")]):(!_vm.$v.onTestRequest.time.required)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\"Required\")]):_vm._e()]):_vm._e()])])]):_vm._e()]),(_vm.getPermissions.canSetSiteToAuditMode)?_c('div',{staticClass:\"form-group\"},[_c('b-form-checkbox',{staticClass:\"mr-2\",attrs:{\"data-cy\":\"audit-library-tasks-required\",\"title\":\"In audit mode, on test alarms will not raise actions\"},model:{value:(_vm.onTestRequest.auditMode),callback:function ($$v) {_vm.$set(_vm.onTestRequest, \"auditMode\", $$v)},expression:\"onTestRequest.auditMode\"}},[_vm._v(\"Audit Mode\")])],1):_vm._e(),_c('div',{staticClass:\"form-group\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.onTestRequest.onTestNote),expression:\"onTestRequest.onTestNote\"}],staticClass:\"custom-textarea\",class:['form-control', _vm.$v.onTestRequest.onTestNote.$error ? 'invalid' : ''],attrs:{\"placeholder\":\"On test note\",\"max\":\"500\",\"data-cy\":\"on-test-note\"},domProps:{\"value\":(_vm.onTestRequest.onTestNote)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.onTestRequest, \"onTestNote\", $event.target.value)}}}),(_vm.$v.onTestRequest.onTestNote.$error && !_vm.$v.onTestRequest.onTestNote.required)?_c('sub',{staticClass:\"small text-danger fadeInDown animated\"},[_vm._v(\"Required\")]):_vm._e()])],1),_c('div',{staticClass:\"flex-shrink-0\"},[_c('b-button',{staticClass:\"btn btn-secondary\",staticStyle:{\"margin-left\":\"5px\"},attrs:{\"data-cy\":\"btn-start-test\"},on:{\"click\":_vm.startTest}},[_vm._v(\" Start test \")])],1)]):_vm._e()]):_vm._e(),(_vm.areaOnTestEvent)?_c('li',{staticClass:\"list-group-item\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('span',{staticClass:\"flex-grow-1\"},[_vm._v(\" On test until \"+_vm._s(_vm.displayDateFromISOString(_vm.areaOnTestEvent.unParkAt + 'Z'))+\" \"),(_vm.areaOnTestEvent.eventTypeID == 10)?_c('span',[_c('br'),_vm._v(\"Audit mode test\")]):_vm._e(),(_vm.areaOnTestEvent.eventTitle)?_c('span',[_c('br'),_vm._v(_vm._s(_vm._f(\"truncateString\")(_vm.areaOnTestEvent.eventTitle,60)))]):_vm._e()]),_c('b-button',{staticClass:\"btn btn-secondary\",attrs:{\"data-cy\":\"area-end-test\"},on:{\"click\":function($event){return _vm.endTest()}}},[_vm._v(\" End Test \")])],1)]):_vm._e(),(_vm.areaOnTestEvent && !_vm.testAlarmsLoaded)?_c('li',{staticClass:\"list-group-item\",class:{'list-group-item-action' : !_vm.testAlarmsLoaded},attrs:{\"data-cy\":\"view-on-test-alarms\"},on:{\"click\":function($event){return _vm.loadOnTestRecords()}}},[_c('b',[_vm._v(\"View Test Alarms\")])]):_vm._e(),(_vm.areaOnTestEvent && _vm.testAlarmsLoaded)?_c('li',{staticClass:\"list-group-item\"},[(_vm.testAlarmsLoaded)?_c('VuePerfectScrollbar',{ref:\"ps\",staticStyle:{\"max-height\":\"30vh\"}},[_c('ul',{staticClass:\"list-group\",attrs:{\"data-cy\":\"on-test-records\"}},[_vm._l((_vm.testAlarms),function(alarm,index){return _c('li',{key:index,staticClass:\"list-group-item\"},[_c('span',{staticClass:\"date-span\"},[_vm._v(_vm._s(_vm.displayDateFromISOString(alarm.created)))]),_c('span',[_vm._v(_vm._s(alarm.details))])])}),(_vm.testAlarms.length == 0)?_c('li',{staticClass:\"list-group-item\"},[_vm._v(\" No alarms received \")]):_vm._e(),_c('li',{staticClass:\"list-group-item list-group-item-action\",on:{\"click\":function($event){return _vm.loadOnTestRecords()}}},[_c('b',[_vm._v(\"Load More\")])])],2)]):_vm._e()],1):_vm._e()])])]):_vm._e(),_c('div',{staticClass:\"d-flex flex-grow-1 card card-secondary\",staticStyle:{\"margin\":\"5px\",\"overflow\":\"hidden\"}},[_c('div',{staticClass:\"card-header\"},[_vm._v(\" Alarm Points \")]),(_vm.areaAlarmPoints)?_c('div',{staticClass:\"card-body p-10 d-flex flex-column\",staticStyle:{\"overflow\":\"hidden\"}},[_c('div',{staticClass:\"search-control\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filter),expression:\"filter\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Search alarm points\"},domProps:{\"value\":(_vm.filter)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.filter=$event.target.value}}})]),_c('VuePerfectScrollbar',{staticClass:\"flex-grow-1 flex-shrink-1 m-2\"},[_c('ul',{staticClass:\"list-group\",attrs:{\"data-cy\":\"alarm-point-items\"}},_vm._l((_vm.filteredAlarmPoints),function(alarmPoint){return _c('li',{key:alarmPoint.responseID,staticClass:\"list-group-item list-group-item-action alarm-point-item d-flex align-items-center\",on:{\"click\":function($event){return _vm.selectResponse(alarmPoint)}}},[_c('span',{staticClass:\"flex-grow-1\"},[_vm._v(_vm._s(alarmPoint.title))]),(alarmPoint.onTest)?_c('i',{staticClass:\"fas fa-clipboard-check text-primary flex-grow-0\",attrs:{\"title\":'On Test' + (alarmPoint.onTestUntil ? ' until ' + _vm.displayDateFromISOString(alarmPoint.onTestUntil + 'Z') : '')}}):_vm._e(),(!alarmPoint.armed)?_c('i',{staticClass:\"far fa-eye-slash text-danger flex-grow-0\",attrs:{\"title\":'Alarm masked' + (alarmPoint.toggleArmAt ? ' until ' + _vm.displayDateFromISOString(alarmPoint.toggleArmAt + 'Z') : '') + (alarmPoint.disarmReasonTitle ? ' due to ' + alarmPoint.disarmReasonTitle : '')}}):_vm._e()])}),0)])],1):_vm._e()]),(false)?_c('div',{staticClass:\"d-flex flex-grow-1 card card-secondary\",staticStyle:{\"margin\":\"5px\",\"display\":\"none\"}},[_c('div',{staticClass:\"card-header\"},[_vm._v(\" History - Most recent 50 alarms for this area \")]),_c('div',{staticClass:\"card-body no-padding\",staticStyle:{\"overflow\":\"hidden\"}})]):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import { Component, Vue, Prop, Watch, Emit, Mixins } from \"vue-property-decorator\";\n import VuePerfectScrollbar from 'vue-perfect-scrollbar';\n import { validationMixin } from 'vuelidate';\n\timport { required, requiredIf, minValue, maxValue, numeric, minLength } from 'vuelidate/lib/validators';\n import { namespace, Getter } from 'vuex-class';\n import moment from \"moment\";\n import DatePicker from \"@sureview/vuejs-datepicker\";\n\n import api from '../../services/api.service';\n\timport { EventDetails } from \"@/store/site-monitor/types\";\n import AccessControlHistory from '../access-control/History.vue';\n import AlarmPointHistory from './AlarmPointHistory.vue';\n import MaskingForm from '../alarm-masking/MaskingForm.vue';\n\n import { truncateString } from \"@/filters\";\n\n import { UserPermissions } from \"@/store/types\";\n import maskingApi from '@/services/api.masking.service';\n\n const AlarmPoints = namespace('alarmPoints');\n const SiteMonitor = namespace(\"siteMonitor\");\n\n\tclass OnTestRequest {\n\t\tgroupID: number;\n\t\thours: number | null;\n\t\tminutes: number | null;\n\t\tdate: string;\n\t\tonTestUntilDate: Date;\n\t\ttime: string;\n\t\tscheduleType: number;\n\t\tauditMode: boolean;\n\t\tonTestNote: string;\n\t}\n\n @Component({\n\t\tmixins: [validationMixin],\n components: {\n VuePerfectScrollbar,\n 'access-history': AccessControlHistory,\n \"maskingForm\": MaskingForm,\n 'alarm-point-history': AlarmPointHistory,\n \"DatePicker\": DatePicker\n },\n validations: {\n onTestRequest: {\n hours: {\n numeric,\n required: requiredIf(function () {\n return this.onTestRequest.scheduleType == this.ScheduleType.ForPeriod;\n }),\n minValue: minValue(0)\n },\n minutes: {\n numeric,\n required: requiredIf(function () {\n return this.onTestRequest.scheduleType == this.ScheduleType.ForPeriod;\n }),\n minValue: minValue(0)\n },\n\t\t\t\tonTestUntilDate: {\n required: requiredIf(function () {\n return this.onTestRequest.scheduleType == this.ScheduleType.UntilDate;\n }),\n minValue: minValue(new Date().setHours(0, 0, 0, 0))\n },\n time: {\n pattern: function (value) {\n if (typeof (value) == \"undefined\" || value == null || value == \"\") return true;\n return /^[0-9]{2}:[0-9]{2}$/.test(value);\n },\n minTime: function (value) {\n /**\n * Validator to ensure that the time entered by the user is in the future\n */\n if (typeof (value) == \"undefined\"\n || value == null\n || value == \"\"\n\t\t\t\t\t\t\t|| typeof (this.onTestRequest.onTestUntilDate) == \"undefined\"\n\t\t\t\t\t\t\t|| this.onTestRequest.onTestUntilDate == null\n || this.onTestRequest.scheduleType !== this.ScheduleType.UntilDate) return true;\n\n const now = new Date().setHours(0, 0, 0, 0);\n\t\t\t\t\t\tconst currentRequestDate = new Date(this.onTestRequest.onTestUntilDate).setHours(0, 0, 0, 0);\n\n if (now == currentRequestDate) {\n // If the user has chosen today as the re-arm date, we need to make sure that the time they've\n // entered is greater than the current time.\n var momentTime = moment(value, \"HH:mm\", true).toDate();\n return momentTime > (new Date());\n } else {\n // If the user hasn't chosen today, just make sure that the date they've entered is in the future.\n return currentRequestDate > now;\n }\n },\n required: requiredIf(function () {\n return this.onTestRequest.scheduleType == this.ScheduleType.UntilDate;\n })\n\t\t\t\t},\n\t\t\t\tonTestNote: {\n\t\t\t\t\trequired,\n\t\t\t\t\tminLength: minLength(1)\n\t\t\t\t}\n }\n },\n filters: {\n displayDate: function (value: Date) {\n return moment(value).format(\"LL LT\");\n },\n truncateString\n }\n })\n export default class AreaAlarms extends Vue {\n\n @AlarmPoints.State(\"selectedArea\") selectedArea;\n\n @AlarmPoints.State(\"displayResponseId\") getDisplayResponseId;\n @AlarmPoints.Mutation setDisplayResponseId: any;\n @AlarmPoints.Mutation setSelectedResponse: any;\n @AlarmPoints.Mutation armSelectedArea: any;\n\n @SiteMonitor.Getter getEventDetails: EventDetails;\n\n @Getter getPermissions: UserPermissions;\n\n showOnTest: boolean = false;\n\n public areaAlarmPoints: any[] = null;\n public areaPermissions: any = null;\n public areaOnTestEvent: any = null;\n\n public testAlarmsLoaded: boolean = false;\n public testAlarms: any[] = [];\n public maxEventRecordID: number = 0;\n\n filter: string = \"\";\n get filteredAlarmPoints(): any[] {\n if (this.filter == \"\")\n return this.areaAlarmPoints;\n\n var filterLower = this.filter.toLowerCase();\n\n return this.areaAlarmPoints.filter((alarmPoint) => alarmPoint.title.toLowerCase().indexOf(filterLower) > -1);\n }\n\n public ScheduleType = {\n ForPeriod: 1,\n UntilDate: 2\n }\n\n // == Consts == //\n public Today = new Date();\n\n public calendarDisabledDates = { to: new Date(this.Today.setDate(this.Today.getDate() - 1)) };\n /**\n * May not be entirely required - this is just used to set the min property for the HTML5 time input,\n * but we don't actually use HTML5 validation.\n */\n public get minTimeForSelectedDate() {\n const today = (new Date()).setHours(0, 0, 0, 0);\n const defaultMinTime = \"00:00\";\n\n\t\t\tif (typeof (this.onTestRequest.onTestUntilDate) == \"undefined\" || this.onTestRequest.date == null)\n return defaultMinTime;\n\t\t\tvar selectedDate = this.onTestRequest.onTestUntilDate.setHours(0, 0, 0, 0);\n\n if (selectedDate == today) {\n return moment().format(\"HH:mm\");\n } else {\n return defaultMinTime;\n }\n }\n\n calendarDateFormatter(date: string) {\n return moment(date).format(\"L\");\n }\n\n onTestAudit: boolean = false;\n\t\tpublic onTestRequest = {\n\t\t\tgroupID: null,\n\t\t\thours: null,\n\t\t\tminutes: null,\n\t\t\tonTestUntilDate: new Date(),\n\t\t\tdate: null,\n\t\t\ttime: moment().add({ minutes: 5 }).format(\"HH:mm\"),\n\t\t\tscheduleType: this.ScheduleType.ForPeriod,\n\t\t\tauditMode: false,\n\t\t\tonTestNote: ''\n\t\t} as OnTestRequest;\n\n mounted() {\n if (this.selectedArea) {\n this.loadResponses(this.selectedArea);\n }\n }\n\n @Watch(\"selectedArea\")\n async onSelectedAreaChanged(value: any) {\n if (value) {\n await this.loadResponses(value);\n }\n }\n\n async loadResponses(area: any) {\n this.showOnTest = false;\n\n this.areaOnTestEvent = null;\n this.areaPermissions = null;\n this.areaAlarmPoints = null;\n\n this.maxEventRecordID = 0;\n this.testAlarms = [];\n this.testAlarmsLoaded = false;\n\n this.areaOnTestEvent = await api.loadGroupOnTestEvent(area.id);\n this.areaPermissions = await api.loadGroupPermissions(area.id);\n this.areaAlarmPoints = await api.responsesByArea(area.id);\n }\n\n selectResponse(alarmPoint: any) {\n this.setSelectedResponse(alarmPoint);\n }\n\n async startTest() {\n this.$v.$reset();\n\n this.$nextTick(async () => {\n // force re-validation\n this.$v.$touch();\n\n // if there are validation errors, stop the submission\n if (this.$v.$error) {\n console.log(\"Validation error: Hours: \" + this.$v.onTestRequest.hours.$error +\n \", Minutes: \" + this.$v.onTestRequest.minutes.$error +\n\t\t\t\t\t\t\", Date: \" + this.$v.onTestRequest.onTestUntilDate.$error);\n return;\n\t\t\t\t}\n\n this.onTestRequest.groupID = this.selectedArea.groupID;\n\n var testRequest = this.onTestRequest;\n\t\t\t\tif (this.onTestRequest.scheduleType == this.ScheduleType.UntilDate) {\n\t\t\t\t\t// Get the hours and minutes out of the time value\n\t\t\t\t\tvar momentTime = moment(this.onTestRequest.time, \"HH:mm\", true);\n\t\t\t\t\tvar hours = momentTime.hours();\n\t\t\t\t\tvar minutes = momentTime.minutes();\n\n\t\t\t\t\t// Calculate the datetime when this alarm is to be un-masked, and convert it to UTC\n\t\t\t\t\tvar formattedDate = moment(this.onTestRequest.onTestUntilDate)\n\t\t\t\t\t\t.set({ hours, minutes, seconds: 0 })\n\t\t\t\t\t\t.utc().format();\n\n\t\t\t\t\t// Update the date value within our mask request, set hours and mins to 0\n\t\t\t\t\t// (nulls don't work - unsure why, probably because we're posting the form and not a JSON object)\n\t\t\t\t\ttestRequest = { ...this.onTestRequest, date: formattedDate, hours: 0, minutes: 0 };\n\t\t\t\t} else {\n\t\t\t\t\ttestRequest = { ...this.onTestRequest };\n\n\t\t\t\t\tdelete testRequest.date;\n\t\t\t\t\tdelete testRequest.time;\n\t\t\t\t}\n\n this.areaOnTestEvent = await api.startTest(testRequest);\n });\n\n }\n\n async endTest() {\n if (this.areaOnTestEvent) {\n await api.endTest(this.areaOnTestEvent.eventID);\n this.areaOnTestEvent = null;\n\n this.testAlarms = [];\n this.testAlarmsLoaded = false;\n }\n }\n\n async loadOnTestRecords() {\n if (this.areaOnTestEvent) {\n var onTestRecords = await api.loadGroupOnTestRecords(this.areaOnTestEvent.eventID, 0);\n\n this.maxEventRecordID = onTestRecords.maxEventRecordID;\n this.testAlarms = onTestRecords.records;\n this.testAlarmsLoaded = true;\n }\n }\n\n async unMaskArea() {\n await maskingApi.unmaskArea(this.selectedArea.groupID);\n this.armSelectedArea();\n }\n }\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaAlarms.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaAlarms.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaAlarms.vue?vue&type=template&id=753c8984&scoped=true\"\nimport script from \"./AreaAlarms.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaAlarms.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaAlarms.vue?vue&type=style&index=0&id=753c8984&prod&scoped=true&lang=scss\"\nimport style1 from \"./AreaAlarms.vue?vue&type=style&index=1&id=753c8984&prod&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 \"753c8984\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column\",attrs:{\"id\":\"finderColumn\"}},[(!_vm.disarmedResponses)?_c('div',{staticClass:\"card flex-grow-1\",staticStyle:{\"height\":\"0px\"}},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Find in Area\")]),_c('area-tree-select',{attrs:{\"appendToBody\":\"\"},on:{\"input\":_vm.areaSelected}})],1):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {\n\tComponent,\n\tVue,\n\tProp,\n\tWatch,\n\tEmit,\n\tMixins\n} from \"vue-property-decorator\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport { validationMixin } from \"vuelidate\";\nimport {\n\trequired,\n\trequiredIf,\n\tminValue,\n\tmaxValue,\n\tnumeric\n} from \"vuelidate/lib/validators\";\nimport { namespace } from \"vuex-class\";\nimport moment from \"moment\";\n\nimport vselect3 from \"vselect3\";\nimport AreaTreeSelect from '../form/AreaTreeSelect.vue';\n\nimport api from \"../../services/api.service\";\nimport { Group } from '@/store/eventqueue/types';\n\nconst AlarmPoints = namespace(\"alarmPoints\");\nconst SiteMonitor = namespace(\"siteMonitor\");\nconst Eventqueue = namespace(\"eventqueue\");\n\n@Component({\n\tcomponents: {\n\t\tVuePerfectScrollbar,\n\t\t\"v-select-3\": vselect3,\n\t\t\"area-tree-select\": AreaTreeSelect\n\t}\n})\nexport default class AlarmPointFinder extends Vue {\n\t@AlarmPoints.State(\"cancelTokenSource\") source: any;\n\t@AlarmPoints.State(\"responses\") responses: any[];\n\t@AlarmPoints.Action responseSearch: any;\n\t@AlarmPoints.Mutation setSelectedResponse: any;\n\t@AlarmPoints.Mutation setSelectedArea: any;\n\n\t@AlarmPoints.Mutation setDisplayResponseId: any;\n\n\t@SiteMonitor.Action loadMaskReasonsForAlarm: any;\n\n\t@Eventqueue.Action getSelectedGroupByIDSetState: ({groupID, state}: {groupID: number, state: string}) => Promise;\n\t@Eventqueue.Action updateSelectedGroup: (selectedGroup: Group) => void;\n\n\tpublic responseSearchLoading: boolean = false;\n\tpublic selectedResponse: any = null;\n\tpublic disarmedResponses: any[] = null;\n\tpublic responseFilter: string = \"\";\n\n\tpublic get filteredDisarmedResponses() {\n\t\tif (!this.disarmedResponses) return null;\n\n\t\tif (this.responseFilter == \"\") return this.disarmedResponses;\n\n\t\tconst lowerFilter = this.responseFilter.toLowerCase();\n\n\t\treturn this.disarmedResponses.filter(\n\t\t\tresponse =>\n\t\t\t\tresponse.title.toLowerCase().includes(lowerFilter) ||\n\t\t\t\tresponse.groupTitle.toLowerCase().includes(lowerFilter)\n\t\t);\n\t}\n\n\tpublic async selected(selectedOption, id) {\n\t\tvar responseDetails = await api.responseGet(selectedOption.responseID);\n\t\tthis.setSelectedResponse(responseDetails);\n\t\tthis.setSelectedArea(null);\n\n\t\tthis.loadMaskReasonsForAlarm(responseDetails.groupID);\n\t}\n\n\tpublic async areaSelected(selectedAreaNode: any) {\n\t\tthis.setSelectedArea(selectedAreaNode);\n\t\tthis.setSelectedResponse(null);\n\n\t\tif (selectedAreaNode && selectedAreaNode.id) {\n\t\t\tawait this.getSelectedGroupByIDSetState({groupID: selectedAreaNode.id, state: selectedAreaNode.state });\n\t\t} else {\n\t\t\tthis.updateSelectedGroup(null);\n\t\t}\n\t}\n\n\tpublic async viewMasked() {\n\t\tthis.disarmedResponses = await api.responsesDisarmed();\n\t}\n\n\tpublic async unviewMasked() {\n\t\tthis.disarmedResponses = null;\n\t}\n\n\tpublic async selectDisarmedResponse(response: any) {\n\t\tvar responseDetails = await api.responseGet(response.responseID);\n\t\tthis.setSelectedResponse(responseDetails);\n\t\tthis.setSelectedArea(null);\n\n\t\tthis.loadMaskReasonsForAlarm(responseDetails.groupID);\n\t}\n\n\tpublic async updateResponseStatus(response: any) {\n\t\tif (this.disarmedResponses) {\n\t\t\tif (response.armed) {\n\t\t\t\tlet responseIndex = this.disarmedResponses.findIndex(\n\t\t\t\t\tdisarmedResponse =>\n\t\t\t\t\t\tdisarmedResponse.responseID == response.responseID\n\t\t\t\t);\n\t\t\t\tif (responseIndex > -1) {\n\t\t\t\t\tthis.disarmedResponses.splice(responseIndex, 1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.disarmedResponses = await api.responsesDisarmed();\n\t\t\t}\n\t\t}\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointFinder.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointFinder.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmPointFinder.vue?vue&type=template&id=5a057b85&scoped=true\"\nimport script from \"./AlarmPointFinder.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmPointFinder.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmPointFinder.vue?vue&type=style&index=0&id=5a057b85&prod&scoped=true&lang=scss\"\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 \"5a057b85\",\n null\n \n)\n\nexport default component.exports","\n import { Component, Vue, Prop, Watch, Emit, Mixins } from \"vue-property-decorator\";\n import VuePerfectScrollbar from 'vue-perfect-scrollbar';\n import { validationMixin } from 'vuelidate';\n import { required, requiredIf, minValue, maxValue, numeric } from 'vuelidate/lib/validators';\n import { namespace } from 'vuex-class';\n import moment from \"moment\";\n\n import api from '../../services/api.service';\n import { SiteTreeNode, Group } from '@/store/eventqueue/types'\n\n import AlarmPoint from './AlarmPoint.vue'\n import AreaAlarmPoints from './AreaAlarms.vue'\n import AlarmPointFinder from './AlarmPointFinder.vue'\n\n const Eventqueue = namespace('eventqueue');\n const AlarmPoints = namespace('alarmPoints');\n const SiteMonitor = namespace(\"siteMonitor\");\n\n @Component({\n components: {\n VuePerfectScrollbar,\n 'alarm-point': AlarmPoint,\n 'alarm-point-finder': AlarmPointFinder,\n 'area-alarm-points': AreaAlarmPoints\n }\n })\n export default class AlarmPointManagerDialog extends Vue {\n $refs!: {\n\t\t\talarmDialog: any;\n\t\t\talarmPointFinder: AlarmPointFinder\n };\n\n @Eventqueue.Getter('getSiteTree') tree: SiteTreeNode[];\n @Eventqueue.Action sitesTreeGet: any;\n\n @AlarmPoints.State(\"selectedResponse\") getSelectedResponse;\n @AlarmPoints.State(\"alarmPointManagerOpen\") getAlarmPointManagerOpen;\n @AlarmPoints.Mutation setAlarmPointManagerOpen;\n @AlarmPoints.Mutation setSelectedResponse: any;\n\n @AlarmPoints.Mutation setSelectedArea: any;\n @AlarmPoints.State(\"selectedArea\") selectedArea;\n\n @AlarmPoints.State(\"displayResponseId\") getDisplayResponseId;\n\n public mounted(): void {\n this.setAlarmPointManagerOpen(false);\n this.setSelectedResponse(null);\n this.setSelectedArea(null);\n }\n\n @Watch(\"getAlarmPointManagerOpen\")\n\t\tpublic async onGetAlarmPointManagerOpen(value: boolean, oldValue: boolean | null): Promise {\n if (value) {\n this.setSelectedArea(null);\n this.setSelectedResponse(null);\n if (this.$refs.alarmDialog && this.$refs.alarmDialog.show)\n this.$refs.alarmDialog.show();\n } else {\n this.setSelectedResponse(null);\n if (this.$refs.alarmDialog && this.$refs.alarmDialog.hide)\n this.$refs.alarmDialog.hide();\n }\n }\n \n public cancel(): void {\n this.setAlarmPointManagerOpen(false);\n }\n\n public groupFind(groupID: number): SiteTreeNode {\n const recursiveFind = (tree: SiteTreeNode) => {\n if (tree.group.groupID == groupID)\n return tree;\n\n if (tree.subGroups && tree.subGroups.length > 0) {\n let matchingSubgroup = null;\n tree.subGroups.forEach((node: SiteTreeNode) => {\n if (matchingSubgroup == null)\n matchingSubgroup = recursiveFind(node);\n });\n\n return matchingSubgroup;\n }\n }\n\n let matchingGroup = null;\n this.tree.forEach((node: SiteTreeNode) => {\n if (matchingGroup == null)\n matchingGroup = recursiveFind(node);\n });\n\n return matchingGroup;\n }\n\n public setTreeArmedStatus(response: any): void {\n let responseGroup = this.groupFind(response.groupID);\n if (responseGroup && responseGroup.contents && responseGroup.contents.responses) {\n\n let responses = responseGroup.contents.responses.filter((treeResponse) => treeResponse.responseID == response.responseID);\n\n responses.forEach((treeResponse) => {\n treeResponse.armed = response.armed;\n });\n }\n }\n\n\t\tpublic onMaskedAlarm(result: any): void {\n if (result && result.response) {\n\t\t\t\tthis.setTreeArmedStatus(result.response);\n\n\t\t\t\tif (this.$refs.alarmPointFinder) {\n\t\t\t\t\tthis.$refs.alarmPointFinder.updateResponseStatus(result.response);\n\t\t\t\t}\n }\n }\n\n public onUnmaskedAlarm(result: any): void {\n if (result && result.response) {\n\t\t\t\tthis.setTreeArmedStatus(result.response);\n\n\t\t\t\tif (this.$refs.alarmPointFinder) {\n\t\t\t\t\tthis.$refs.alarmPointFinder.updateResponseStatus(result.response);\n\t\t\t\t}\n }\n }\n\n public backToGroup(): void {\n this.setSelectedResponse(null);\n }\n }\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointManagerDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointManagerDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmPointManagerDialog.vue?vue&type=template&id=e29d5602\"\nimport script from \"./AlarmPointManagerDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmPointManagerDialog.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmPointManagerDialog.vue?vue&type=style&index=0&id=e29d5602&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isEventHistoryEnabled && _vm.isPopoutModeEnabled)?_c('draggable',{staticClass:\"z-index-test\"},[_c('template',{slot:\"content\"},[_c('div',{staticClass:\"card\"},[(_vm.isPopoutModeEnabled)?_c('b-button',{staticClass:\"area-event-history-close fas fa-times\",on:{\"click\":_vm.disablePopoutMode}}):_vm._e(),_c('div',{staticClass:\"card-body\"},[_c('area-event-history',{attrs:{\"groupId\":this.groupId,\"timeZoneId\":this.timeZoneId,\"poppedOut\":true}})],1)],1)])],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop } from 'vue-property-decorator';\r\nimport { Getter, namespace } from 'vuex-class';\r\nimport AreaEventHistory from './AreaEventHistory.vue';\r\nimport Vue from 'vue';\r\nimport Draggable from \"../utilities/draggable.vue\";\r\nimport { UserPermissions } from '@/store/types';\r\n\r\nconst AreaEventHistoryStore = namespace(\"areaEventHistory\");\r\n\r\n@Component({\r\n components: {\r\n \"area-event-history\": AreaEventHistory,\r\n \"draggable\": Draggable,\r\n }\r\n})\r\nexport default class AreaEventHistoryPopout extends Vue {\r\n @Prop({ type: Number, required: false }) groupId: number;\r\n @Prop({ type: Number, required: false }) timeZoneId: number;\r\n\r\n @AreaEventHistoryStore.Mutation setIsPopoutModeEnabled: (isEnabled: boolean) => void;\r\n\r\n @AreaEventHistoryStore.State isPopoutModeEnabled: boolean;\r\n @AreaEventHistoryStore.State storedTimeZoneId: number;\r\n\r\n @Getter getFeature: (featureName: string[]) => boolean;\r\n @Getter getPermissions: UserPermissions;\r\n\r\n private created(): void {\r\n if (this.storedTimeZoneId != null) {\r\n this.timeZoneId = this.storedTimeZoneId;\r\n }\r\n }\r\n\r\n private get isEventHistoryEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Areas\", \"AreaEventHistory\"]) && this.getPermissions.canViewEventHistory;\r\n\t}\r\n\r\n private disablePopoutMode(): void {\r\n this.setIsPopoutModeEnabled(false);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaEventHistoryPopout.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaEventHistoryPopout.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaEventHistoryPopout.vue?vue&type=template&id=79700106&scoped=true\"\nimport script from \"./AreaEventHistoryPopout.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaEventHistoryPopout.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaEventHistoryPopout.vue?vue&type=style&index=0&id=79700106&prod&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 \"79700106\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Mixins, Watch } from \"vue-property-decorator\";\r\nimport { Mutation, namespace, Getter, Action, State } from \"vuex-class\";\r\nimport { get } from \"lodash\";\r\nimport SiteStatus from \"@/components/SiteStatus.vue\";\r\nimport AlarmQueueHeader from \"@/components/AlarmQueueHeader.vue\";\r\nimport AlarmQueueFooter from \"@/components/AlarmQueueFooter.vue\";\r\nimport PatrolQueue from \"@/components/event-queue/PatrolQueue.vue\";\r\nimport ParkedQueue from \"@/components/ParkedQueue.vue\";\r\nimport ProcessingQueue from \"@/components/ProcessingQueue.vue\";\r\nimport ProcessingError from \"@/components/ProcessingError.vue\";\r\nimport InvitationCheck from \"@/components/InvitationCheck.vue\";\r\nimport ManualPatrol from \"@/components/ManualPatrol.vue\";\r\nimport ManualRaise from \"@/components/ManualRaise.vue\";\r\nimport ErrorWarning from \"@/components/ErrorWarning.vue\";\r\nimport ManualAction from \"@/components/ManualAction.vue\";\r\nimport { UserPermissions, FeaturesList, User, LogoutPayload } from \"@/store/types\";\r\nimport QueueInactivityWarning from \"@/components/event-queue/InactivityWarning.vue\";\r\nimport ActivityLog from \"@/components/activity-log/ActivityLogPopup.vue\";\r\nimport VirtualOperatorsPopUp from \"@/components/ai-virtual-operator/VirtualOperatorsPopup.vue\";\r\n\r\nconst UserContext = namespace(\"userContext\");\r\n\r\nimport RegionalHandlerMixin from \"@/mixins/RegionalHandlerMixin.ts\";\r\nimport EnhancedSingleMap from '@/components/EnhancedSingleMap.vue';\r\nimport { SubscriberExpiry, EnhancedMapMode } from '@/types/EnhancedSingleMapTypes';\r\nimport ProcessAlarmConfirmation from '@/components/event-queue/ProcessAlarmConfirmation.vue';\r\nimport EventRecords from \"@/components/EventRecords.vue\";\r\nimport EventRecordTypes from \"@/types/sv-data/enums/EventRecordTypes\";\r\nimport MobileMixin from '@/mixins/MobileMixin';\r\nimport EnhancedMapSidebar from \"@/components/EnhancedMapSidebar.vue\";\r\nimport { FilteredEvent } from '@/store/eventqueue/types';\r\nimport EventClose from \"@/components/EventClose.vue\";\r\nimport HideMapMixin from \"@/mixins/HideMapMixin\";\r\nimport EventDetails from '@/components/EventDetails.vue';\r\nimport AlarmPointManagerDialog from \"@/components/alarm-points/AlarmPointManagerDialog.vue\";\r\nimport AreaEventHistoryPopout from \"@/components/area-event-history/AreaEventHistoryPopout.vue\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst FieldOpsStore = namespace(\"fieldOps\");\r\nconst Subscription = namespace(\"subscription\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst AreaNotes = namespace(\"areaNotes\");\r\nconst AreaEventHistory = namespace(\"areaEventHistory\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"site-status\": SiteStatus,\r\n\t\t\"alarm-queue-header\": AlarmQueueHeader,\r\n\t\t\"alarm-queue\": () => import(\"../components/AlarmQueue.vue\"),\r\n\t\t\"alarm-queue-ccure\": () => import(\"../components/AlarmQueueCCure.vue\"),\r\n\t\t\"alarm-queue-footer\": AlarmQueueFooter,\r\n\t\t\"enhanced-single-map\": EnhancedSingleMap,\r\n\t\t\"patrol-queue\": PatrolQueue,\r\n\t\t\"parked-queue\": ParkedQueue,\r\n\t\t\"processing-queue\": ProcessingQueue,\r\n\t\t\"invitation-check\": InvitationCheck,\r\n\t\t\"manual-patrol\": ManualPatrol,\r\n\t\t\"manual-raise\": ManualRaise,\r\n\t\t\"error-warning\": ErrorWarning,\r\n\t\t\"manual-action\": ManualAction,\r\n\t\t\"processing-error\": ProcessingError,\r\n\t\t\"inactivity-warning\": QueueInactivityWarning,\r\n\t\t\"activity-log\": ActivityLog,\r\n\t\t\"vo-control-panel\": VirtualOperatorsPopUp,\r\n\t\t\"alarm-confirmation\" : ProcessAlarmConfirmation,\r\n\t\t\"event-records\": EventRecords,\r\n\t\t\"enhanced-map-side-bar\": EnhancedMapSidebar,\r\n\t\t\"event-close\": EventClose,\r\n\t\t\"event-details\": EventDetails,\r\n\t\t\"alarm-points\": AlarmPointManagerDialog,\r\n\t\t\"area-event-history-popout\": AreaEventHistoryPopout,\r\n\t}\r\n})\r\nexport default class EventQueue extends Mixins(RegionalHandlerMixin, MobileMixin, HideMapMixin) {\r\n\tpublic events: any[] = [];\r\n\tpublic error: string = \"\";\r\n\tpublic activeFilters: any = null;\r\n\tpublic currentFilter: number = -1;\r\n\tpublic updating: boolean = false;\r\n\tprivate subscriberTimer = null;\r\n\r\n\tprivate enhancedMapMode = EnhancedMapMode;\r\n\r\n\t@Eventqueue.Action fetchUserZone: any;\r\n\r\n\t@Eventqueue.Getter getCountByType: any;\r\n\t@Eventqueue.Getter(\"getActivityLogShown\") activityLogShown!: boolean;\r\n\t@Eventqueue.Getter(\"getVirtualOperatorControlPanelShown\") virtualOperatorControlPanelShown!: boolean;\r\n\t@Eventqueue.Getter(\"getBulkHandleShown\") bulkHandleShown!: boolean;\r\n\t@Eventqueue.Getter(\"getAllAlarmsSelected\") allAlarmsSelected!: boolean;\r\n\t@Eventqueue.Getter(\"getSelectedAlarms\") selectedAlarms: number[];\r\n\r\n\t@Eventqueue.Mutation setLastEventHandled: () => void;\r\n\t@Eventqueue.Mutation(\"setDebugMode\") private setDebugMode: (debugMode: boolean) => void;\r\n\t@Eventqueue.Mutation setPeekEventId: (peekEventId: number | null) => void;\r\n\t@Eventqueue.Mutation setAllAlarmsSelected: (allSelected: boolean) => void;\r\n\t@Eventqueue.Mutation setSelectedAlarms: (data: number[]) => void;\r\n\r\n\t@Eventqueue.State peekEventId: number;\r\n\t@AreaNotes.State currentGroupId: number;\r\n\t@AreaNotes.State currentGroupTitle: string;\r\n\r\n\t@AreaEventHistory.State isPopoutModeEnabled: boolean;\r\n\r\n\t// Flag for toggling the map.\r\n\t@Eventqueue.Action setHideMapFlag: any;\r\n\t@Eventqueue.Getter(\"getHideMapFlag\") hideMapFlag: boolean;\r\n\t@Eventqueue.Getter getActiveEvents!: FilteredEvent[];\r\n\r\n\t@Action fetchRoutingGroups: any;\r\n\t@UserContext.Action(\"startPolling\") startPollingUserContext: () => Promise;\r\n\t@UserContext.Action(\"stopPolling\") stopPollingUserContext: () => Promise;\r\n\r\n\t@FieldOpsStore.Action(\"addOrUpdateActiveSubscriber\") private subscribeToPoll: (subscriberExpiry: SubscriberExpiry) => void;\r\n\r\n\t@Mutation setShortcuts: any;\r\n\t@Mutation setLegendKeys: any;\r\n\t@Mutation setRoutingGroupsLegend: any;\r\n\t@Mutation setActiveRegion: any;\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getAlarmScreenTimeoutSeconds: number | null;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter getIsFieldOpsLicensed: boolean;\r\n\t@Getter getFeature: (featureName: string[]) => boolean;\r\n\r\n\t@Subscription.Getter isSubscriptionActive: boolean;\r\n\t@SiteMonitor.Action createAuditRecord: (request: any) => Promise;\r\n\r\n\t@SiteMonitor.Mutation setEventCloseShown: any;\r\n\r\n\t@State User: User;\r\n\t@State reloadEventQueue: boolean;\r\n\r\n\t@Mutation setReloadEventQueue: (boolean) => void;\r\n\r\n\t@Action serverLogout: () => Promise;\r\n\t@Action logout: (payload?: LogoutPayload) => Promise;\r\n\r\n\tpublic created() {\r\n\t\tif (this.reloadEventQueue)\r\n\t\t{\r\n\t\t\tthis.setReloadEventQueue(false);\r\n\t\t\tlocation.reload(true);\r\n\t\t}\r\n\r\n\t\tthis.resetRegion();\r\n\t\tthis.fetchUserZone();\r\n\t\tthis.fetchRoutingGroups();\r\n\t\tthis.setLastEventHandled();\r\n\t}\r\n\r\n\t$refs!: {\r\n\t\tpeekModal: any;\r\n\t};\r\n\r\n\tprivate get isSuiteEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Suite\"]);\r\n\t}\r\n\r\n\tprivate get isSituationalAwarenessEnabled(): boolean {\r\n\t\treturn this.getFeature([\"SituationalAwareness\"]);\r\n\t}\r\n\r\n\tpublic async mounted(): Promise {\r\n\t\tif (this.isSuiteEnabled && this.isLoadedInApp())\r\n\t\t{\r\n\t\t\tif(this.getIsFieldOpsLicensed)\r\n\t\t\t{\r\n\t\t\t\tthis.$router.push({\r\n\t\t\t\t\tpath: `/mobile`\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tawait this.serverLogout();\r\n\t\t\t\tconst logoutPayload: LogoutPayload = {\r\n\t\t\t\t\thasSessionExpired: false,\r\n\t\t\t\t\tplayAudioAlert: false,\r\n\t\t\t\t\terrorMessage: \"User does not have a Field Ops Licence\"\r\n\t\t\t\t};\r\n\t\t\t\tawait this.logout(logoutPayload);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setShortcuts([\r\n\t\t\t{ keys: \"Shift+R\", action: \"Manual Raise\" },\r\n\t\t\t{ keys: \"Shift+M\", action: \"Manual Tour\" },\r\n\t\t\t{\r\n\t\t\t\tkeys: \"Shift+P\",\r\n\t\t\t\taction: \"Process Top Alarm\",\r\n\t\t\t\tfeatureFlag: \"Alarms.SiteMonitor\"\r\n\t\t\t},\r\n\t\t\t{ keys: \"Shift+Q\", action: \"Quick Control\", featureFlag: \"Alarms.QuickControl\" },\r\n\t\t\t{ keys: \"Shift+[1-0]\", action: \"Change between first 10 filters\" },\r\n\t\t\t{ keys: \"Shift+Enter\", action: \"Triggers the confirm event on a pop up\" },\r\n\t\t]);\r\n\t\tthis.setLegendKeys([\r\n\t\t\t{\r\n\t\t\t\ticon: \"fa-bell text-danger\",\r\n\t\t\t\tdetails: \"Alarms are awaiting a response\"\r\n\t\t\t},\r\n\t\t\t{ icon: \"fa-hourglass-end\", details: \"Previously parked event\" }\r\n\t\t]);\r\n\t\tthis.setRoutingGroupsLegend(true);\r\n\t\tthis.startPollingUserContext();\r\n\t\tthis.updateEventQueueDebugMode();\r\n\t\tthis.subscriberTimer = setInterval(async () => {\r\n\t\t\tthis.subscribeToPoll({ subscriber: \"EventQueue\", expiry: Date.now() + 5100});\r\n\t\t}, 5000);\r\n\t}\r\n\r\n\t@Watch(\"debugMode\")\r\n\tprivate updateEventQueueDebugMode() {\r\n\t\tthis.setDebugMode(this.debugMode);\r\n\t}\r\n\r\n\t@Watch('peekEventId')\r\n\tprivate peekEvent(): void{\r\n\t\tif (this.$refs.peekModal && this.peekEventId == null) {\r\n\t\t\tthis.$refs.peekModal.hide();\r\n\t\t} else {\r\n\t\t\tthis.$refs.peekModal.show();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate joinPeekedEvent(): void\r\n\t{\r\n\t\tif(!this.peekEventId)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar event: FilteredEvent = this.getActiveEvents.firstOrDefault(ae => ae.eventID == this.peekEventId);\r\n\t\tif(!event)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.handleEventQueueItem(event, undefined, undefined, \"Picked up from peek\");\r\n\t}\r\n\r\n\tpublic beforeDestroy() {\r\n\t\tthis.stopPollingUserContext();\r\n\t\tclearInterval(this.subscriberTimer);\r\n\t}\r\n\r\n\tpublic get patrolEventCount() {\r\n\t\treturn this.getCountByType(\"patrols\");\r\n\t}\r\n\r\n\tpublic get parkedEventCount() {\r\n\t\treturn this.getCountByType(\"parked\");\r\n\t}\r\n\r\n\tpublic get processingEventCount() {\r\n\t\treturn this.getCountByType(\"inProcess\");\r\n\t}\r\n\r\n\tpublic get debugMode() {\r\n\t\treturn get(this.featuresList, [\"DebugMode\"]);\r\n\t}\r\n\r\n\tpublic get alarmQueueType() {\r\n\t\t// We use lodash here as native ES does not have null propagation\r\n\t\treturn get(this.featuresList, [\"Integration\", \"CCure\", \"UI\"]) ? \"alarm-queue-ccure\" : \"alarm-queue\";\r\n\t}\r\n\r\n\tpublic get isActivityLogEnabled() {\r\n\t\treturn get(this.featuresList, [\"ActivityLog\"]);\r\n\t}\r\n\r\n\t// Feature flag check for toggle maps.\r\n\tprivate get isToggleMapEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"Maps\", \"ToggleEventQueue\"]);\r\n\t}\r\n\r\n\tpublic get virtualOperatorsEnabled() {\r\n\t\treturn get(this.featuresList, [\"AI\", \"VirtualOperators\"]) && this.getPermissions.canUseVirtualOperators;\r\n\t}\r\n\r\n\t// Audit when a user peeks an event and when they leave\r\n\t// An exit record is put on the peek modal @hide attribute to ensure a record is created regardless of how the modal was closed (button or clicking outside)\r\n\tprivate async createPeekRecord(action: string): Promise {\r\n\t\tswitch(action){\r\n\t\t\tcase \"enter\":\r\n\t\t\t\tawait this.createAuditRecord({\r\n\t\t\t\t\teventId: this.peekEventId,\r\n\t\t\t\t\teventRecordTypeId: EventRecordTypes.PeekStarted,\r\n\t\t\t\t\tdetails: `Event peeked by user: ${this.User.fullName}`\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"exit\":\r\n\t\t\t\tawait this.createAuditRecord({\r\n\t\t\t\t\teventId: this.peekEventId,\r\n\t\t\t\t\teventRecordTypeId: EventRecordTypes.PeekEnded,\r\n\t\t\t\t\tdetails: `${this.User.fullName} has ended peek`\r\n\t\t\t\t});\r\n\t\t\t\tthis.setPeekEventId(null);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate hidePeekModal(): void {\r\n\t\tif(this.$refs.peekModal) {\r\n\t\t\tthis.$refs.peekModal.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isEventHistoryEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Areas\", \"AreaEventHistory\"]) && this.getPermissions.canViewEventHistory;\r\n\t}\r\n\r\n\tpublic get bulkHandleEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventQueue\", \"EndMultipleEvents\"]);\r\n\t}\r\n\r\n\tpublic get bulkHandlePermission(): boolean {\r\n\t\treturn this.getPermissions.canEndMultipleEvents;\r\n\t}\r\n\r\n\tpublic get eventBulkHandleAllowed(): boolean {\r\n\t\treturn this.bulkHandleEnabled && this.bulkHandlePermission && this.bulkHandleShown;\r\n\t}\r\n\r\n\t// public get / set that wrapper the store to avoid warnings binding to the checkbox\r\n\t// get\r\n\tpublic set allSelected(allAlarmsSelected:boolean) {\r\n\t\tthis.setAllAlarmsSelected(allAlarmsSelected);\r\n\t}\r\n\r\n\t// set\r\n\tpublic get allSelected(): boolean {\r\n\t\treturn this.allAlarmsSelected;\r\n\t}\r\n\r\n\t// Controls the state when 'SelectAll' toggled\r\n\tpublic allAlarmsToggled(): void {\r\n\t\t// if all selected checkbox is not selected clear the selected alarms\r\n\t\tif (!this.allSelected){\r\n\t\t\tthis.setSelectedAlarms([]);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic endSelectedAlarms(): void {\r\n\t\tthis.setEventCloseShown(true);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventQueue.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventQueue.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventQueue.vue?vue&type=template&id=2ada4a1f&scoped=true\"\nimport script from \"./EventQueue.vue?vue&type=script&lang=ts\"\nexport * from \"./EventQueue.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventQueue.vue?vue&type=style&index=0&id=2ada4a1f&prod&lang=scss&scoped=true\"\nimport style1 from \"./EventQueue.vue?vue&type=style&index=1&id=2ada4a1f&prod&lang=css\"\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 \"2ada4a1f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'm']}),expression:\"{down: ['shift', 'm']}\"}],on:{\"shortkey\":function($event){return _vm.openMediaMatrix()}}},[_c('div',{staticClass:\"card main-content\"},[_c('div',{staticClass:\"card-header\"},[_c('site-monitor-header',{attrs:{\"eventid\":_vm.eventId}})],1),_c('div',{staticClass:\"card-body d-flex flex-row\"},[_c('div',{staticClass:\"d-flex flex-column flex-grow-1 flex-shrink-1 left-column\"},[_c('div',{class:[\n\t\t\t\t\t\t\t'flex-grow-1',\n\t\t\t\t\t\t\t'flex-shrink-1',\n\t\t\t\t\t\t\t_vm.eventRecordComponentScale,\n\t\t\t\t\t\t\t_vm.mapEnabled ? '' : 'max-h-none' ]},[_c(_vm.eventRecordType,{tag:\"component\",attrs:{\"eventid\":_vm.eventId}})],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isToggleMapEnabled),expression:\"isToggleMapEnabled\"}],staticClass:\"flex-grow-1 flex-shrink-1 map-btn-container\"},[_c('button',{staticClass:\"btn btn-sm btn-secondary grow-map-btn\",attrs:{\"disabled\":_vm.mapScale === 0.75},on:{\"click\":function($event){return _vm.scaleMapComponent(true)}}},[_c('i',{staticClass:\"fas fa-chevron-up\"})]),_c('button',{staticClass:\"btn btn-sm btn-secondary shrink-map-btn\",attrs:{\"disabled\":!_vm.mapScale},on:{\"click\":function($event){return _vm.scaleMapComponent(false)}}},[_c('i',{staticClass:\"fas fa-chevron-down\"})])]),(_vm.mapEnabled)?_c('div',{staticClass:\"flex-grow-1 flex-shrink-1 enhanced-map-container\",class:[this.mapComponentScale],style:({'margin-top' : (!_vm.isToggleMapEnabled ? '' : '-30px'), })},[_c('div',{staticClass:\"card map-container\"},[_c('div',{staticClass:\"card-body d-flex no-padding\"},[_c('div',{staticClass:\"d-flex flex-row\",staticStyle:{\"flex-grow\":\"1\",\"position\":\"relative\"}},[_c('enhanced-single-map',{staticClass:\"flex-grow-1 position-relative\",attrs:{\"showMapToggle\":false,\"enhancedMapMode\":_vm.enhancedMapMode.SiteMonitor,\"useAdvancedFilters\":_vm.isSituationalAwarenessEnabled},on:{\"onCameraIconClick\":_vm.openMediaMatrix}}),(_vm.isSituationalAwarenessEnabled)?_c('enhanced-map-side-bar',{staticClass:\"h-100\",attrs:{\"siteMonitorMode\":this.mapScale === 0.75 ? 'site-monitor-large-height' : 'site-monitor-small-height',\"startState\":0}}):_vm._e()],1)])])]):_vm._e()]),_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down:['shift', 'a']}),expression:\"{down:['shift', 'a']}\"}],staticStyle:{\"display\":\"none\"},on:{\"shortkey\":function($event){return _vm.focusActions()}}}),(_vm.showActions && _vm.actionPlansEnabled)?_c('div',{ref:\"taskContainer\",staticClass:\"flex-grow-1 flex-shrink-1 right-column card actions-container ml-1 card-fill\",attrs:{\"tabindex\":\"-1\",\"id\":\"taskContainer\"}},[_c('div',{staticClass:\"card-header clickable\",on:{\"click\":function($event){_vm.showActions = false}}},[_c('i',{staticClass:\"fas fa-chevron-right mr-1\"}),_vm._v(\"Actions\")]),_c('div',{staticClass:\"card-body p-2\"},[_c('task-container',{staticStyle:{\"height\":\"100%\"},attrs:{\"router\":this.$router}})],1)]):(_vm.actionPlansEnabled)?_c('div',{staticClass:\"card\",on:{\"click\":function($event){_vm.showActions = true}}},[_vm._m(0)]):_vm._e()]),(_vm.isStatusInfoBarEnabled)?_c('eq-status-info-bar',{attrs:{\"readonly\":\"\"}}):_vm._e()],1),_c('event-close',{attrs:{\"router\":_vm.$router,\"eventid\":_vm.eventId}}),_c('event-raise',{attrs:{\"router\":_vm.$router,\"eventid\":_vm.eventId}}),(_vm.areaNotesEnabled)?_c('area-notes',{attrs:{\"eventid\":_vm.eventId}}):_vm._e(),(_vm.newAreaNotesEnabled)?_c('area-notes-modal'):_vm._e(),_c('event-sharing',{attrs:{\"eventid\":_vm.eventId}}),_c('incident-report',{attrs:{\"eventid\":_vm.eventId}}),_c('event-leave',{attrs:{\"eventid\":_vm.eventId}}),_c('error-warning'),_c('event-ended'),_c('force-restore'),_c('inactivity-warning'),_c('alarm-point-dialog'),_c('put-event-on-test-modal'),_c('involved-parties',{attrs:{\"eventId\":_vm.eventId}}),(_vm.eventDetails)?_c('area-event-history-popout',{attrs:{\"groupId\":_vm.eventDetails.groupID}}):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"fas fa-chevron-left m-2 clickable\"})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"data-cy\":\"alarm-point-dialog\",\"id\":\"alarmPointDialog\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\"},on:{\"hidden\":_vm.cancel},model:{value:(_vm.alarmPointDialogVisible),callback:function ($$v) {_vm.alarmPointDialogVisible=$$v},expression:\"alarmPointDialogVisible\"}},[_c('template',{slot:\"modal-header\"},[(_vm.response)?_c('h4',[_vm._v(\"Reviewing \"+_vm._s(_vm.response.title))]):_vm._e()]),_c('alarm-point',{staticStyle:{\"height\":\"75vh\"}}),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"close-history-btn\"},on:{\"click\":_vm.cancel}},[_c('span',[_vm._v(\"Close\")])])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {\n\tComponent,\n\tVue,\n\tProp,\n\tWatch,\n\tEmit,\n\tMixins\n} from \"vue-property-decorator\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport { validationMixin } from \"vuelidate\";\nimport {\n\trequired,\n\trequiredIf,\n\tminValue,\n\tmaxValue,\n\tnumeric\n} from \"vuelidate/lib/validators\";\nimport { namespace } from \"vuex-class\";\nimport moment from \"moment\";\nimport { EventDetails } from \"@/store/site-monitor/types\";\nimport api from \"../../services/api.service\";\n\nimport AlarmPoint from \"./AlarmPoint.vue\";\n\nconst AlarmPoints = namespace(\"alarmPoints\");\nconst SiteMonitor = namespace(\"siteMonitor\");\n\n@Component({\n\tcomponents: {\n\t\tVuePerfectScrollbar,\n\t\t\"alarm-point\": AlarmPoint\n\t}\n})\nexport default class AlarmPointDialog extends Vue {\n\t@AlarmPoints.State(\"displayResponseId\") displayResponseId;\n\n\t@AlarmPoints.Mutation setDisplayResponseId: any;\n\t@AlarmPoints.Mutation setSelectedResponse: any;\n\n\t@SiteMonitor.Getter getEventDetails: EventDetails;\n\n\tprivate response: any = null;\n\tprivate fetchingHistory: boolean = false;\n\tprivate alarmPointDialogVisible: boolean = false;\n\n\tpublic mounted(): void {\n\t\tthis.setDisplayResponseId(null);\n\t\tthis.setSelectedResponse(null);\n\t}\n\n\t@Watch(\"displayResponseId\")\n\tpublic async onDisplayResponseIdChanged(\n\t\tvalue: number | null,\n\t\toldValue: number | null\n\t): Promise {\n\t\tif (value) {\n\t\t\tthis.response = await api.responseGet(value);\n\t\t\tthis.setSelectedResponse(this.response);\n\t\t\tthis.alarmPointDialogVisible = true;\n\t\t} else {\n\t\t\tthis.alarmPointDialogVisible = false;\n\t\t\tthis.setSelectedResponse(null);\n\t\t}\n\t}\n\n\tpublic cancel(): void {\n\t\tthis.alarmPointDialogVisible = false;\n\n\t\tthis.setDisplayResponseId(null);\n\t\tthis.setSelectedResponse(null);\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmPointDialog.vue?vue&type=template&id=9e4ddc58\"\nimport script from \"./AlarmPointDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmPointDialog.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"involvedPartiesModal\",attrs:{\"id\":\"involvedPartiesModal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"data-cy\":\"involved-parties-modal\"},on:{\"hidden\":_vm.closeInvolvedParties}},[_c('template',{slot:\"modal-title\"},[_c('div',[_c('h4',[_vm._v(\"Involved Parties\")])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"d-flex flex-column\"},[_c('div',{staticClass:\"card card-secondary\"},[_c('div',{staticClass:\"card-body\"},[_c('form',{attrs:{\"role\":\"form\"}},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"d-flex\"},[_c('label',[_vm._v(\"Selected affected parties:\")]),_c('span',{staticClass:\"text-danger pr-5\"},[_vm._v(\"*\")]),(_vm.excludeUsersEnabled)?_c('b-form-checkbox',{attrs:{\"data-cy\":\"include-users-checkbox\"},on:{\"change\":function($event){return _vm.handleIncludeUsersChange()}},model:{value:(_vm.includeUsers),callback:function ($$v) {_vm.includeUsers=$$v},expression:\"includeUsers\"}},[_vm._v(\" Include Users \")]):_vm._e()],1),_c('v-select-3',{staticClass:\"dark\",attrs:{\"options\":_vm.users,\"getOptionLabel\":function (user) { return _vm.getUserTitle(user); },\"placeholder\":\"Search\",\"label\":\"title\",\"filterable\":true,\"append-to-body\":\"\",\"data-cy\":\"involved-party-select\",\"disabled\":!_vm.canEditInvolvedParties,\"multiple\":\"\",\"calculate-position\":_vm.calculateDropdownPositionAndSize},on:{\"search\":function($event){return _vm.handleInvolvedPartySearchInput($event)}},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(option){return [_vm._v(\" \"+_vm._s(option.fullName)+\" \")]}}]),model:{value:(_vm.selectedParties),callback:function ($$v) {_vm.selectedParties=$$v},expression:\"selectedParties\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(_vm._s(this.includeUsers ? this.noUsersFound : this.noContactsFound))])])],1),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Involvement:\")]),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_vm._v(\" \"),_c('b-form-input',{attrs:{\"required\":\"\",\"maxlength\":100,\"data-cy\":\"involvement-type\",\"type\":\"text\",\"disabled\":!_vm.canEditInvolvedParties},model:{value:(_vm.involvementType),callback:function ($$v) {_vm.involvementType=$$v},expression:\"involvementType\"}})],1),(_vm.canEditInvolvedParties)?_c('div',{staticClass:\"clear-fix\"},[_c('b-button',{staticClass:\"float-right rounded-circle\",class:{ disabled: !_vm.isValid },attrs:{\"variant\":\"secondary\",\"title\":\"Add involved party\",\"disabled\":!_vm.isValid,\"data-cy\":\"add-involved-party-button\"},on:{\"click\":function($event){return _vm.addInvolvedParty()}}},[_vm._v(\"+\")])],1):_vm._e()])])])])]),_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"card card-secondary\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Affected parties\")]),_c('div',{staticClass:\"card-body no-padding\"},[_c('VuePerfectScrollbar',{staticClass:\"involved-party-list\"},[_c('div',{staticClass:\"list-group\"},_vm._l((_vm.involvedParties),function(involvedParty,i){return _c('div',{key:i,staticClass:\"list-group-item\",class:{ disabled: !involvedParty.added }},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('div',{key:involvedParty.involvedPartyId,staticClass:\"circle flex-grow-0 m-r-5\",class:'user-' + (i + 1),attrs:{\"title\":involvedParty.fullName}},[_vm._v(_vm._s(involvedParty.initials))]),_c('div',{staticClass:\"flex-grow-1\"},[_c('div',[_vm._v(\" \"+_vm._s(involvedParty.fullName)+\" \"),(!involvedParty.added)?_c('span',{staticClass:\"m-l-5\"},[_vm._v(\"(Removed)\")]):_vm._e()]),_c('div',[_c('small',[_vm._v(\" \"+_vm._s(involvedParty.involvementType)+\" \")])])]),_c('div',[(involvedParty.added && _vm.canEditInvolvedParties)?_c('span',{staticClass:\"span-link badge badge-pill dark-background badge-danger\",attrs:{\"title\":\"Remove\",\"data-cy\":\"remove-involved-party-button\"},on:{\"click\":function($event){return _vm.removeInvolvedParty(involvedParty)}}},[_c('span',{staticClass:\"fas fa-times fa-sm\"})]):_vm._e()])])])}),0)])],1)])])]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"pull-right ksConfirm\",attrs:{\"variant\":\"secondary\",\"data-dismiss\":\"modal\",\"data-cy\":\"close-involved-party-modal-button\"},on:{\"click\":function($event){return _vm.closeInvolvedParties()}}},[_vm._v(\" Close \")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Prop, Watch, Component } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from 'vuex-class';\r\nimport vSelect3 from \"vselect3\";\r\nimport axios, { CancelTokenSource } from \"axios\";\r\nimport { debounce, isEqual, unionWith, differenceBy } from \"lodash\";\r\nimport api from '@/services/api.service';\r\nimport { UserInfo, UserPermissions, VueSelectDropdownProperties } from '@/store/types';\r\nimport { AddInvolvedPartyRequest, InvolvedParty, RemoveInvolvedPartyRequest } from '@/store/site-monitor/types';\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\n@Component({\r\n components: {\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar,\r\n \"v-select-3\": vSelect3\r\n }\r\n})\r\nexport default class InvolvedParties extends Vue {\r\n @Prop(Number)\r\n eventId?: number;\r\n\r\n\t$refs!: {\r\n\t\tinvolvedPartiesModal: any;\r\n\t};\r\n\r\n\tprivate readonly debouncePeriod: number = process.env.NODE_ENV === \"test\" ? 1 : 500;\r\n\tprivate readonly maxUserLimit: number = 100;\r\n\tprivate readonly maxWidth: string = '50vw';\r\n\r\n\tprivate readonly noContactsFound: string = 'No contacts were found';\r\n\tprivate readonly noUsersFound: string = 'No users or contacts were found';\r\n\r\n private selectedParties: UserInfo[] = [];\r\n\tprivate involvedPartySearchToken: CancelTokenSource;\r\n\tprivate users: UserInfo[] = [];\r\n\tprivate involvementType: string | null = null;\r\n\tprivate involvedParties: InvolvedParty[] = [];\r\n\tprivate includeUsers: boolean = false;\r\n\tprivate currentSearchTerm: string = \"\";\r\n\r\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n @SiteMonitor.Getter(\"getInvolvedPartiesShown\") involvedPartiesShown!: boolean;\r\n\r\n @SiteMonitor.Mutation setInvolvedPartiesShown: (shown: boolean) => void;\r\n\r\n @Watch(\"involvedPartiesShown\")\r\n private async onInvolvedPartiesShownChanged(value: boolean): Promise {\r\n if (value) {\r\n\t\t\tawait this.updateInvolvedParties();\r\n\t\t\tthis.clearInputs();\r\n this.$refs.involvedPartiesModal.show();\r\n } else {\r\n this.$refs.involvedPartiesModal.hide();\r\n }\r\n }\r\n\r\n\tprivate get canEditInvolvedParties(): boolean {\r\n\t\treturn !!this.permissions.canEditInvolvedParties;\r\n\t}\r\n\r\n\tprivate get isValid(): boolean {\r\n\t\tif (this.selectedParties.length == 0)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!this.involvementType || this.involvementType.trim() === \"\")\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n public created(): void {\r\n this.setInvolvedPartiesShown(false);\r\n\t\tif (!this.excludeUsersEnabled) {\r\n\t\t\tthis.includeUsers = true;\r\n\t\t}\r\n }\r\n\r\n\tpublic destroy(): void {\r\n\t\tthis.currentSearchTerm = \"\";\r\n\t}\r\n\r\n\tprivate get excludeUsersEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"SiteMonitor\", \"InvolvedParties\",\"ExcludeUsers\"]);\r\n\t}\r\n\r\n public closeInvolvedParties(): void {\r\n this.setInvolvedPartiesShown(false);\r\n }\r\n\r\n\tprivate async handleIncludeUsersChange(): Promise {\r\n\t\tthis.users = [];\r\n\t\tawait this.performInvolvedPartySearch(this.currentSearchTerm);\r\n\t}\r\n\r\n\tprivate async handleInvolvedPartySearchInput(searchTerm: string): Promise {\r\n\t\tthis.currentSearchTerm = searchTerm;\r\n\t\tawait this.performInvolvedPartySearch(searchTerm);\r\n\t}\r\n\r\n\tprivate performInvolvedPartySearch: (searchTeam: string) => Promise = debounce(\r\n\t\tasync function (searchTerm: string) {\r\n\t\t\tif (this.involvedPartySearchToken) {\r\n\t\t\t\tthis.involvedPartySearchToken.cancel(\"Cancel Search\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.involvedPartySearchToken = axios.CancelToken.source();\r\n\r\n\t\t\ttry {\r\n\t\t\t\tlet usersInfo = await api.getUsersInfoBySearchTerm(searchTerm, this.maxUserLimit, !this.includeUsers);\r\n\t\t\t\tthis.users = unionWith(usersInfo, this.selectedParties, isEqual);\r\n\t\t\t\tlet existingInvolvedParties = this.involvedParties.filter(ip => ip.added);\r\n\t\t\t\tthis.users = differenceBy(this.users, existingInvolvedParties, 'userId');\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn; //Return when past requests are cancelled\r\n\t\t\t}\r\n\t\t},\r\n\t\tthis.debouncePeriod,\r\n\t\t{ leading: false, trailing: true }\r\n\t);\r\n\r\n\tprivate async addInvolvedParty(): Promise {\r\n\t\tlet involvedPartiesToAdd: AddInvolvedPartyRequest[] = [];\r\n\r\n\t\tthis.selectedParties.forEach(involvedParty => {\r\n\t\t\tinvolvedPartiesToAdd.push({\r\n\t\t\t\teventId: this.eventId,\r\n\t\t\t\tuserId: involvedParty.userId,\r\n\t\t\t\tinvolvementType: this.involvementType\r\n\t\t\t\t} as AddInvolvedPartyRequest)\r\n\t\t});\r\n\r\n\t\tfor (var i = 0; i < involvedPartiesToAdd.length; i++) {\r\n\t\t\tawait api.addInvolvedParty(involvedPartiesToAdd[i]);\r\n\t\t}\r\n\r\n\t\tthis.selectedParties = [];\r\n\t\tthis.users = [];\r\n\t\tthis.involvementType = null;\r\n\r\n\t\tawait this.updateInvolvedParties();\r\n\t}\r\n\r\n\tprivate async updateInvolvedParties(): Promise {\r\n\t\tthis.involvedParties = await api.getInvolvedPartiesForEvent(this.eventId);\r\n\t}\r\n\r\n\tprivate clearInputs(): void {\r\n\t\tthis.selectedParties = [];\r\n\t\tthis.involvementType = null;\r\n\t}\r\n\r\n\tprivate async removeInvolvedParty(involvedParty: InvolvedParty): Promise {\r\n\t\tawait api.removeInvolvedParty({ eventId: this.eventId, userId: involvedParty.userId } as RemoveInvolvedPartyRequest);\r\n\t\tawait this.updateInvolvedParties();\r\n\t}\r\n\r\n\tprivate getUserTitle(user: UserInfo): string {\r\n\t\tvar userDisplay = user.fullName;\r\n\r\n\t\tif (user.notes != \"\") {\r\n\t\t\tuserDisplay += ` [${user.notes}]`;\r\n\t\t}\r\n\r\n\t\tif (user.email && user.email != \"\") {\r\n\t\t\tuserDisplay += ` (${user.email})`;\r\n\t\t}\r\n\r\n\t\treturn userDisplay;\r\n\t}\r\n\r\n\tprivate calculateDropdownPositionAndSize(dropdownList: HTMLUListElement, component: Vue, { width, top, left }: VueSelectDropdownProperties): void {\r\n dropdownList.style.top = top;\r\n dropdownList.style.left = left;\r\n dropdownList.style.width = 'auto';\r\n\t\tdropdownList.style.minWidth = width;\r\n\t\tdropdownList.style.maxWidth = this.maxWidth;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InvolvedParties.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InvolvedParties.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./InvolvedParties.vue?vue&type=template&id=b4c440c6&scoped=true\"\nimport script from \"./InvolvedParties.vue?vue&type=script&lang=ts\"\nexport * from \"./InvolvedParties.vue?vue&type=script&lang=ts\"\nimport style0 from \"./InvolvedParties.vue?vue&type=style&index=0&id=b4c440c6&prod&scoped=true&lang=scss\"\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 \"b4c440c6\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Watch } from \"vue-property-decorator\";\r\nimport { Getter, Action, namespace } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport SiteMonitorHeader from \"@/components/SiteMonitorHeader.vue\";\r\nimport EnhancedMap from \"@/components/EnhancedMap.vue\";\r\nimport EventTaskContainer from \"@/components/tasks/EventTaskContainer.vue\";\r\nimport EventClose from \"@/components/EventClose.vue\";\r\nimport EventRaise from \"@/components/EventRaise.vue\";\r\nimport AreaNotes from \"@/components/AreaNotes.vue\";\r\nimport EventSharing from \"@/components/EventSharing.vue\";\r\nimport EventLeave from \"@/components/EventLeave.vue\";\r\nimport IncidentReport from \"@/components/IncidentReport.vue\";\r\nimport ErrorWarning from \"@/components/ErrorWarning.vue\";\r\nimport EventEnded from \"@/components/EventEnded.vue\";\r\nimport ForceRestore from \"@/components/ForceRestore.vue\";\r\nimport InactivityWarning from \"@/components/site-monitor/InactivityWarning.vue\";\r\nimport AreaNotesModal from \"@/components/area-notes/AreaNotesModal.vue\";\r\nimport PutEventOnTestModal from \"@/components/site-monitor/PutEventOnTestModal.vue\";\r\nimport FieldOps from './FieldOps.vue';\r\nimport EnhancedSingleMap from '@/components/EnhancedSingleMap.vue';\r\nimport EqStatusInfoBar from '@/components/EqStatusInfoBar.vue';\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport { AuditService } from \"@/services/auditService\";\r\nimport { EventDetails, EventRecord } from \"@/store/site-monitor/types\";\r\nimport { CameraType, DeviceControllerOutput } from \"@/store/site-monitor-cameras/types\";\r\nimport { MapLayerItemTypeIds } from \"@/store/map-layers/types\";\r\nimport api from \"@/services/api.service\";\r\nimport EnhancedMapSidebar from '@/components/EnhancedMapSidebar.vue';\r\nimport SiteMonitorMixin from \"@/mixins/SiteMonitorMixin\";\r\nimport AlarmPointDialog from \"@/components/alarm-points/AlarmPointDialog.vue\";\r\nimport InvolvedParties from \"@/components/site-monitor/InvolvedParties.vue\";\r\nimport AreaEventHistoryPopout from \"@/components/area-event-history/AreaEventHistoryPopout.vue\";\r\n\r\nconst UserContext = namespace(\"userContext\");\r\nconst SiteMonitorState = namespace(\"siteMonitor\");\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst Tasks = namespace(\"tasks\");\r\nconst FieldOpsStore = namespace(\"fieldOps\");\r\nconst Session = namespace(\"sessions\");\r\nconst SMCameras = namespace(\"siteMonitorCameras\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t\t\"site-monitor-header\": SiteMonitorHeader,\r\n\t\t\"event-records\": () => import(\"@/components/EventRecords.vue\"),\r\n\t\t\"event-records-ccure\": () => import(\"@/components/EventRecordsCCure.vue\"),\r\n\t\t\"enhanced-map\": EnhancedMap,\r\n\t\t\"enhanced-single-map\": EnhancedSingleMap,\r\n\t\t\"task-container\": EventTaskContainer,\r\n\t\t\"event-close\": EventClose,\r\n\t\t\"event-raise\": EventRaise,\r\n\t\t\"area-notes\": AreaNotes,\r\n\t\t\"area-notes-modal\": AreaNotesModal,\r\n\t\t\"event-sharing\": EventSharing,\r\n\t\t\"event-leave\": EventLeave,\r\n\t\t\"incident-report\": IncidentReport,\r\n\t\t\"error-warning\": ErrorWarning,\r\n\t\t\"event-ended\": EventEnded,\r\n\t\t\"force-restore\": ForceRestore,\r\n\t\t\"inactivity-warning\": InactivityWarning,\r\n\t\t\"put-event-on-test-modal\": PutEventOnTestModal,\r\n\t\t\"field-ops\": FieldOps,\r\n\t\t\"eq-status-info-bar\": EqStatusInfoBar,\r\n\t\t\"enhanced-map-side-bar\": EnhancedMapSidebar,\r\n\t\t\"alarm-point-dialog\": AlarmPointDialog,\r\n\t\t\"involved-parties\": InvolvedParties,\r\n\t\t\"area-event-history-popout\": AreaEventHistoryPopout,\r\n\t}\r\n})\r\nexport default class SiteMonitor extends SiteMonitorMixin {\r\n\t@SiteMonitorState.Getter(\"getActiveMapItems\") mapItems: any;\r\n\t@SiteMonitorState.Getter(\"getFilteredRecords\") filteredRecords!: EventRecord[];\r\n\r\n\t@Eventqueue.Mutation setJoiningEventID: any;\r\n\t@Eventqueue.Getter getJoiningEventID: any;\r\n\r\n\t@Action openMediaMatrix: any;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n\t@SMCameras.Action fetchAreaCameras: (params: { groupID: number, pageNumber: number, paginated: boolean }) => Promise;\r\n\t@SMCameras.Action fetchAreaOutputs: (params: { groupID: number, pageNumber: number, paginated: boolean }) => Promise;\r\n\t@SMCameras.Getter(\"getDeviceControllerCameras\") nearbyCameras!: CameraType[];\r\n\t@SMCameras.Getter(\"getAreaCameras\") areaCameras!: CameraType[];\r\n\t@SMCameras.State(\"areaOutputs\") areaOutputs!: DeviceControllerOutput[];\r\n\t@Session.Getter getSession: (resourceId: number) => string;\r\n\tprivate auditService: AuditService;\r\n\tprivate nearbyDevicePresent: boolean | null = null;\r\n\tprivate mediaMatrixOpened: boolean = false;\r\n\r\n\tpublic created(): void {\r\n\t\t// Call the base created method.\r\n\t\tthis.onCreate();\r\n\r\n\t\tif (this.getJoiningEventID != this.$route.params.eventId) {\r\n\t\t\t// If a user navigates directly to this event, ensure the event is being handled\r\n\t\t\tthis.handleEvent({\r\n\t\t\t\teventID: parseInt(this.$route.params.eventId),\r\n\t\t\t\tpickupMethod: \"Direct navigation to event\"\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// Otherwise we have already handled this event, clear out the joining variable\r\n\t\t\tthis.setJoiningEventID(null);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"mapItems\")\r\n\tprivate mapItemsWatcher(value: any | null, _oldValue: any | null): void {\r\n\t\tlet cameras = value.filter(device => device.itemType === MapLayerItemTypeIds.Camera);\r\n\t\tlet audioDevices = value.filter(device => device.itemType === MapLayerItemTypeIds.Audio);\r\n\t\tlet outputs = value.filter(device =>\r\n\t\t\t\t\t\t\tdevice.itemType === MapLayerItemTypeIds.Relay ||\r\n\t\t\t\t\t\t\tdevice.itemType === MapLayerItemTypeIds.Output);\r\n\r\n\t\tthis.nearbyDevicePresent = cameras.length > 0 || audioDevices.length > 0 || outputs.length > 0;\r\n\r\n // If we already have the EventDetails and haven't opened MediaMatrix\r\n\t\t// any nearby devices will open it so check again.\r\n\t\tif (this.nearbyDevicePresent && this.eventDetails && !this.mediaMatrixOpened) {\r\n\t\t\tthis.displayMediaMatrix(this.eventDetails.groupID);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"eventDetails\")\r\n\tprivate async eventDetailsWatcher(newValue: EventDetails | null, _oldValue: EventDetails | null): Promise {\r\n\t\tif (!!newValue && !!newValue.groupID && _oldValue?.groupID != newValue?.groupID) {\r\n\t\t\tawait this.displayMediaMatrix(newValue.groupID);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async displayMediaMatrix(groupId: number): Promise {\r\n\t\tconst canOpenMediaMatrix = this.getFeature([\"Alarms\", \"MediaMatrix\"]);\r\n\t\tconst shouldNotAutoOpen = this.getFeature([\"Alarms\", \"MediaMatrix\", \"NoAutoOpen\"]);\r\n\r\n\t\tif (!canOpenMediaMatrix || shouldNotAutoOpen) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.fetchAreaCameras({ groupID: groupId, pageNumber: 1, paginated: true });\r\n\t\tawait this.fetchAreaOutputs({ groupID: groupId, pageNumber: 1, paginated: true });\r\n\r\n\t\tconst onlyShowMatrixWithData = this.getFeature(['Alarms', 'MediaMatrix', 'OnlyShowMatrixWithData']);\r\n\r\n\t\tif (onlyShowMatrixWithData) {\r\n\t\t\ttry {\r\n\t\t\t\tif (!(await this.hasMediaItems()) && !(await this.checkAnyDevicesAvailableForMediaMatrix())) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t} catch(err) {\r\n\t\t\t\tthis.showMediaMatrix();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.showMediaMatrix();\r\n\t}\r\n\r\n\tprivate showMediaMatrix(): void {\r\n\t\tif (!this.mediaMatrixOpened){\r\n\t\t\tthis.mediaMatrixOpened = true;\r\n\t\t\tthis.openMediaMatrix();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async hasMediaItems(): Promise {\r\n\t\tconst canGetMediaList = this.getFeature(['Alarms', 'MediaMatrix', 'ClipsList']);\r\n\t\tlet hasMediaItems = false;\r\n\r\n\t\tif (canGetMediaList) {\r\n\t\t\tconst response = await this.getMediaList();\r\n\t\t\thasMediaItems = response?.data?.length > 0 ?? false;\r\n\t\t}\r\n\r\n\t\treturn hasMediaItems;\r\n\t}\r\n\r\n\tprivate async checkAnyDevicesAvailableForMediaMatrix(): Promise {\r\n\t\treturn this.nearbyDevicePresent ||\r\n\t\t\tthis.hasLinkedCameras() ||\r\n\t\t\t(this.areaCameras && this.areaCameras.length > 0 ) ||\r\n\t\t\t(await this.hasAreaAudioDevices()) ||\r\n\t\t\t(this.areaOutputs && this.areaOutputs.length > 0)\r\n\t}\r\n\r\n\tprivate hasLinkedCameras(): boolean {\r\n\t\tif (this.filteredRecords) {\r\n\t\t\tconst record = this.filteredRecords.firstOrDefault(record => record.attachedCameras && record.attachedCameras.length > 0);\r\n\t\t\treturn !!record;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate async hasAreaAudioDevices(): Promise {\r\n\t\tconst canGetAudioDevices = this.getFeature([\"Alarms\", \"MediaMatrix\", \"AudioList\"]);\r\n\r\n\t\tif (canGetAudioDevices) {\r\n\t\t\tconst result = await api.fetchAudioDevicesByGroupId(this.eventDetails.groupID);\r\n\t\t\treturn result?.length > 0 ?? false;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate async getMediaList(): Promise {\r\n\t\tconst auth = this.getSession(SessionResource.AuditServiceSession);\r\n\t\tthis.auditService = this.getAuditService();\r\n\t\treturn await this.auditService.mediaList(auth, this.eventDetails.initialEventRecordId);\r\n\t}\r\n\r\n\tprivate getAuditService(): AuditService {\r\n\t\treturn new AuditService(api.getAuditServiceAddress(), this.eventDetails?.auditEndpoint);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteMonitor.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteMonitor.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SiteMonitor.vue?vue&type=template&id=cd25d928&scoped=true\"\nimport script from \"./SiteMonitor.vue?vue&type=script&lang=ts\"\nexport * from \"./SiteMonitor.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SiteMonitor.vue?vue&type=style&index=0&id=cd25d928&prod&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 \"cd25d928\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.mediaMatrixEnabled)?_c('div',[_c('cameras'),_c('session',{attrs:{\"resourceId\":_vm.auditServiceSessionResourceId,\"eventId\":_vm.eventId}}),_c('session',{attrs:{\"resourceId\":_vm.deviceServiceSessionResourceId,\"eventId\":_vm.eventId}}),(_vm.linkedCamerasEnabled)?_c('link-camera'):_vm._e(),_c('manual-raise',{attrs:{\"disable-automatic-claim\":true,\"disable-styles\":true,\"disable-map-alert\":true}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from 'vue-property-decorator';\r\nimport { namespace, Getter } from 'vuex-class';\r\n\r\nconst SessionStore = namespace('sessions');\r\n\r\n@Component({\r\n components: {}\r\n})\r\nexport default class Sessions extends Vue {\r\n // on the assumption that 0 can't be used as default value since it might be a valid ID,\r\n // else get rid of null in type and replace default value\r\n @Prop(Number)\r\n public resourceId!: number;\r\n\r\n @Prop(Number)\r\n public eventId!: number | null;\r\n\r\n public updateTimeout: NodeJS.Timer | null = null;\r\n\r\n @SessionStore.Action updateSession: any;\r\n @SessionStore.Mutation clearResourceSessionId: any;\r\n\r\n @Getter('getActiveRegion') activeRegion: any;\r\n\r\n public mounted() {\r\n this.update();\r\n }\r\n\r\n public destroyed() {\r\n if (this.updateTimeout != null) {\r\n clearTimeout(this.updateTimeout);\r\n }\r\n } \r\n\r\n public async update() {\r\n // Remove the existing update timeout\r\n if (this.updateTimeout != null) {\r\n clearTimeout(this.updateTimeout);\r\n }\r\n\r\n if (this.resourceId != null && this.resourceId != undefined && this.eventId != undefined) {\r\n var responseStatus = await this.updateSession({ resourceId: this.resourceId, eventId: this.eventId });\r\n\r\n if (responseStatus == 401) {\r\n const unwatch = this.$store.watch(state => this.$store.getters.isLoggedIn, n => {\r\n this.update();\r\n unwatch();\r\n });\r\n } else {\r\n this.updateTimeout = setTimeout(() => { this.update() }, 60000);\r\n }\r\n } else {\r\n this.updateTimeout = setTimeout(() => { this.update() }, 1000);\r\n }\r\n }\r\n\r\n /**\r\n * Watches for when the current region is changed, clears out the current resource session \r\n * ID and fetches a new key from the new region.\r\n * \r\n * @todo: We may not need this, however there have been situations during testing\r\n * where the session keys are not immediately refreshed when changing regions. \r\n * This watcher ensures that we don't encounter that situation.\r\n */\r\n @Watch('activeRegion', { deep: true })\r\n public async onActiveRegionChanged(newRegion: any) {\r\n this.clearResourceSessionId(this.resourceId);\r\n await this.$nextTick();\r\n this.update();\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sessions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sessions.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Sessions.vue?vue&type=template&id=174a15c6&scoped=true\"\nimport script from \"./Sessions.vue?vue&type=script&lang=ts\"\nexport * from \"./Sessions.vue?vue&type=script&lang=ts\"\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 \"174a15c6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fill-body\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.displayMediaMatrixContent),expression:\"displayMediaMatrixContent\"}],staticClass:\"card card-primary cardPrimary\"},[_c('div',{staticClass:\"card-body cardBody d-flex flex-row\"},[_c('div',{staticClass:\"flex-grow-1\",style:(_vm.cameraRowStyle)},_vm._l((_vm.layoutHorizontal * _vm.layoutVertical),function(index){return _c('div',{key:index,staticClass:\"card\",style:(_vm.cameraColStyle(index - 1))},[_c('matrix-container',{staticClass:\"card-body d-flex camera\",attrs:{\"index\":index},on:{\"expand\":_vm.expand,\"contract\":_vm.contract}})],1)}),0),_c('div',{staticClass:\"d-flex flex-column flex-shrink-0\"},[(_vm.featureHideMenuEnabled)?_c('div',{staticClass:\"pl-1\",on:{\"click\":function($event){_vm.showMenu = !_vm.showMenu}}},[_c('i',{class:(_vm.showMenu ? 'fas fa-times fa-lg mr-1 mt-2' : 'closed fas fa-chevron-left fa-lg mr-1 mt-2'),attrs:{\"data-cy\":\"show-hide-side-bar-icon\"}})]):_vm._e(),(_vm.isController && _vm.showMenu)?_c('div',{staticClass:\"layout-selector\"},[_c('span',{staticClass:\"float-left p-5\"},[_vm._v(\"Event ID: \"+_vm._s(_vm.eventId))]),_c('span',{staticClass:\"float-right p-5\"},[_c('zendesk-help',{staticClass:\"float-right p-5\",staticStyle:{\"margin-left\":\"5px\"},attrs:{\"iconOnly\":true}}),_c('select',{domProps:{\"value\":_vm.layoutIndex},on:{\"input\":_vm.layoutChanged}},_vm._l((_vm.layouts),function(layout,index){return _c('option',{key:index,domProps:{\"value\":index}},[_vm._v(_vm._s(layout[0] +'x' + layout[1] + ' layout'))])}),0)],1),(_vm.isClearEnabled)?_c('span',{staticClass:\"float-right p-5\"},[_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":\"primary\",\"id\":\"clear\"},on:{\"click\":_vm.clearAllMatrixCells}},[_vm._v(\" Clear \")])],1):_vm._e()]):_vm._e(),_c('device-controller',{staticClass:\"flex-shrink-1 flex-grow-1 overflow-y-hidden h-100\",class:{'hide-device-controller': !_vm.showMenu },staticStyle:{\"width\":\"350px\",\"overflow-y\":\"hidden\"},attrs:{\"data-cy\":\"device-controller\"}})],1),_c('div',{ref:\"expandedCamera\",staticClass:\"expanded-camera\",class:{'show': _vm.itemExpanded}})])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.displayMediaMatrixContent),expression:\"!displayMediaMatrixContent\"}],staticClass:\"card card-primary cardPrimary justify-content-center align-items-center\"},[_c('h4',[_vm._v(\"Waiting for event ...\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"childElement\",staticClass:\"flex-grow-1 matrix-container\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.deviceId > 0),expression:\"deviceId > 0\"}],staticClass:\"card border\",class:{ 'notActive-overlay' : !_vm.isCellActive && _vm.isTourMaskInactiveCameras },style:(_vm.cameraBackground),attrs:{\"id\":_vm.deviceId,\"data-cy\":\"matrixContainer\"}},[(_vm.eventDetails)?_c('camera-control',{ref:\"cameraControl\",attrs:{\"index\":_vm.index,\"eventid\":_vm.eventId,\"defaultMechanicalPtz\":_vm.eventDetails.mechanicalPtzByDefault,\"show-manual-raise\":_vm.manualRaiseEnabled,\"manual-raise-recording\":_vm.manualRaiseRecordingEnabled}}):_vm._e()],1),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hasClip),expression:\"hasClip\"}],staticClass:\"card clip-background\",style:(_vm.auditClipStyle)},[_c('audit-control',{ref:\"player\",staticClass:\"flex-grow-1\",attrs:{\"index\":_vm.index}})],1),_c('div',{staticClass:\"cameraOverlay\",style:(_vm.displayStyle)},[_c('div',{staticClass:\"backing\"}),_c('div',{staticClass:\"cameraIcon camera-icon btn btn-primary\",attrs:{\"droppable\":\"true\"},on:{\"dragover\":function($event){$event.preventDefault();},\"drop\":function($event){return _vm.cameraSelected()},\"click\":function($event){return _vm.cameraSelected()}}})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.awaitingClip),expression:\"awaitingClip\"}],staticClass:\"cameraOverlay\"},[_c('div',{staticClass:\"backing\"}),_c('div',{staticClass:\"alarmIcon btn btn-danger\",attrs:{\"droppable\":\"true\"},on:{\"dragover\":function($event){$event.preventDefault();},\"drop\":function($event){return _vm.onClipSelected()},\"click\":function($event){return _vm.onClipSelected()}}})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.linkRecord && _vm.deviceId > 0),expression:\"linkRecord && deviceId > 0\"}],staticClass:\"cameraOverlay\"},[_c('div',{staticClass:\"backing\"}),_c('div',{staticClass:\"linkIcon btn btn-primary justify-content-center align-items-center\",on:{\"click\":function($event){return _vm.makeLinkRecord()}}},[_c('i',{staticClass:\"fas fa-link\"})])]),(_vm.hasContents)?_c('div',{staticClass:\"close-overlay\"},[_c('a',{staticClass:\"fas fa-expand fa-2x span-link\",attrs:{\"title\":\"Fullscreen\"},on:{\"click\":function($event){return _vm.expand()}}}),(_vm.isController && !_vm.tourInProgress)?_c('a',{staticClass:\"fas fa-times fa-2x span-link m-l-5\",attrs:{\"title\":\"Close\",\"data-cy\":\"closeMatrixContainer\"},on:{\"click\":function($event){return _vm.clear(true)}}}):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card audit-player\"},[_c('div',{staticClass:\"card-body d-flex no-padding\"},[(!_vm.ended)?_c('div',{staticClass:\"flex-grow-1 flex-shrink-1 audit-video-wrapper\"},[(_vm.canUnmute && !_vm.mediaHasVideo && _vm.mediaHasAudio)?_c('div',{staticClass:\"audio-status hover-span\",class:{ 'no-video': !_vm.mediaHasVideo },attrs:{\"title\":_vm.isMuted ? 'Audio is muted, click to unmute' : 'Audio is active',\"data-cy\":\"audio-mute-unmute-button-no-video\"},on:{\"click\":function($event){return _vm.muteUnMute()}}},[_c('i',{class:{ 'fas fa-volume': !_vm.isMuted, 'fas fa-volume-mute': _vm.isMuted }})]):_vm._e(),_c('audit-video',{ref:\"video\",on:{\"timeChanged\":_vm.onClipTimeChanged,\"durationChanged\":_vm.onClipDurationChanged,\"onVideoEnded\":_vm.onVideoEnded,\"onVideoError\":_vm.onVideoError,\"mediaHasAudio\":_vm.onMediaHasAudio,\"mediaHasVideo\":_vm.onMediaHasVideo}})],1):_vm._e()]),_c('div',{staticClass:\"audit-controls no-padding\"},[_c('div',{staticClass:\"audit-controls-background\"}),_c('div',{staticClass:\"d-flex align-items-center m-5\"},[_c('span',{staticClass:\"fas m-r-5 hover-span\",class:[_vm.playing ? 'fa-pause-circle' : 'fa-play-circle'],on:{\"click\":function($event){return _vm.togglePlaying()}}}),(_vm.cameraSnapshotEnabled)?_c('span',{staticClass:\"fas fa-camera m-r-5 hover-span\",attrs:{\"data-cy\":\"snapshot-button\"},on:{\"click\":function($event){return _vm.takeSnapShot()}}}):_vm._e(),(_vm.canUnmute && _vm.mediaHasAudio)?_c('span',{staticClass:\"m-r-5\",class:{ 'fas fa-volume': !_vm.isMuted, 'fas fa-volume-mute': _vm.isMuted },attrs:{\"title\":_vm.isMuted ? 'Audio is muted' : 'Audio is active',\"data-cy\":\"toolbar-audio-mute-unmute-button\"},on:{\"click\":function($event){return _vm.muteUnMute()}}}):_vm._e(),_c('div',{staticClass:\"flex-grow-0 m-r-10 speed-controls\"},[_c('span',{staticClass:\"fas fa-minus m-r-5 hover-span\",on:{\"click\":function($event){return _vm.slowDown()}}}),_c('span',{staticClass:\"m-r-5\"},[_vm._v(_vm._s(_vm.playBackSpeed.toFixed(1))+\"x\")]),_c('span',{staticClass:\"fas fa-plus m-r-5 hover-span\",on:{\"click\":function($event){return _vm.speedUp()}}})]),(_vm.timestamp != null)?_c('span',{staticClass:\"flex-grow-0\"},[_vm._v(\" \"+_vm._s(_vm.timestamp.minutes.toString().padStart(2, \"0\"))+\":\"+_vm._s(_vm.timestamp.seconds.toString().padStart(2, \"0\"))+\" \")]):_vm._e(),_c('div',{staticClass:\"flex-grow-1 m-r-10 m-l-10\"}),(_vm.duration != null)?_c('span',{staticClass:\"flex-grow-0\"},[_vm._v(\" \"+_vm._s(_vm.duration.minutes.toString() == \"Infinity\" ? \"00\" : _vm.duration.minutes.toString().padStart(2, \"0\"))+\":\"+_vm._s(isNaN(_vm.duration.seconds.toString()) ? \"00\" : _vm.duration.seconds.toString().padStart(2, \"0\"))+\" \")]):_vm._e(),(_vm.moreDataAvailable)?_c('span',{staticStyle:{\"padding-left\":\"5px\"}},[_c('i',{staticClass:\"fas fa-spinner fa-spin\"})]):_vm._e()]),_c('div',{staticClass:\"d-flex align-items-center m-5\"},[_c('div',{staticClass:\"flex-grow-1\"},[_c('buffer-seek',{staticClass:\"bufferSeek\",attrs:{\"downloaded\":_vm.dataSize,\"totalSize\":_vm.latestClipLength,\"duration\":_vm.duration.time},on:{\"change\":_vm.onSliderSeek},model:{value:(_vm.timestamp.time),callback:function ($$v) {_vm.$set(_vm.timestamp, \"time\", $$v)},expression:\"timestamp.time\"}})],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"progress\",staticStyle:{\"position\":\"relative\",\"overflow\":\"visible\"}},[_c('div',{ref:\"downloadProgress\",staticClass:\"progress-bar progress-bar-download\",staticStyle:{\"position\":\"relative\",\"overflow\":\"visible\"},style:(_vm.downloadProgressStyle),attrs:{\"id\":\"downloadProgressBar\",\"role\":\"progressbar\"},on:{\"mousemove\":_vm.seek,\"click\":_vm.seekTo,\"mouseup\":_vm.endSeek}}),_c('div',{staticClass:\"play-progress\"},[_c('div',{staticClass:\"progress-bar progress-bar-play\",style:(_vm.playProgressStyle),attrs:{\"id\":\"playProgress\",\"role\":\"progressbar\"}}),_c('div',{staticClass:\"seek-circle\",class:{ 'hovered': _vm.circleHover || _vm.seeking },style:(_vm.seekCircleStyle),attrs:{\"id\":\"seekCircle\"},on:{\"mouseover\":function($event){return _vm.setHover(true)},\"mouseleave\":function($event){return _vm.setHover(false)},\"mousedown\":_vm.startSeek,\"mouseup\":_vm.endSeek}})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\n\n@Component\nexport default class BufferSeek extends Vue {\n\t$refs!: {\n\t\tdownloadProgress: HTMLElement\n\t}\n\n\t/**\n\t * Amount of data downloaded\n\t */\n\t@Prop({ type: Number, default: 0 })\n\tpublic downloaded: number;\n\n\t/**\n\t * Total data available\n\t */\n\t@Prop({ type: Number, default: 0 })\n\tpublic totalSize: number;\n\n\t/**\n\t * Current play time\n\t */\n\t@Prop({ type: Number, default: 0 })\n\tpublic value: number;\n\n\t/**\n\t * Clip duration\n\t */\n\t@Prop({ type: Number, default: 0 })\n\tpublic duration: number;\n\n\tcircleHover: boolean = false;\n\tseeking: boolean = false;\n\tseekPosition: number = 0;\n\n\t/**\n\t * Reset seek bar state\n\t */\n\tpublic reset(): void {\n\t\tthis.seeking = false;\n\t}\n\n\tpublic get downloadProgressStyle(): any {\n\t\treturn {\n\t\t\twidth: ((this.downloaded / this.totalSize) * 100) +\"%\"\n\t\t}\n\t}\n\n\tprivate get playPercentage(): number {\n\t\treturn (this.downloaded / this.totalSize) * (this.value / this.duration) * 100;\n\t}\n\n\tpublic get playProgressStyle(): any {\n\t\treturn {\n\t\t\twidth: this.playPercentage +\"%\"\n\t\t}\n\t}\n\n\tpublic get seekCircleStyle(): any {\n\t\tif (this.seeking) {\n\t\t\treturn {\n\t\t\t\tleft: (this.seekPosition - 7) + \"px\"\n\t\t\t}\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tleft: \"calc(\" + this.playPercentage +\"% \" +\n\t\t\t\t\t(this.circleHover ? \"- 7px\" : \"- 4px\") +\")\"\n\t\t\t}\n\t\t}\n\t}\n\n\t@Emit(\"input\")\n\tseekToTime(seekPosition: number) {\n\t\t// Find proportion of seek bar, then multiply by duration to find time to seek to\n\t\tlet width = this.$refs.downloadProgress.clientWidth;\n\t\tlet seekTime = (seekPosition / width) * this.duration;\n\n\t\tthis.$emit(\"change\", seekTime);\n\n\t\treturn seekTime;\n\t}\n\n\tsetHover(hovered: boolean) {\n\t\tthis.circleHover = hovered;\n\t}\n\n\tpublic startSeek() {\n\t\tthis.seeking = true;\n\t}\n\n\tpublic endSeek() {\n\t\tif (this.seeking) {\n\t\t\tthis.seeking = false;\n\t\t\tthis.seekToTime(this.seekPosition);\n\t\t}\n\t}\n\n\tseek(ev: MouseEvent) {\n\t\tif (this.seeking && ev.buttons === 1) {\n\t\t\tthis.seekPosition = ev.offsetX;\n\t\t}\n\t\tev.preventDefault();\n\t}\n\n\tseekTo(ev: MouseEvent) {\n\t\tif ((ev.target as HTMLElement).id === \"downloadProgressBar\") {\n\t\t\tthis.seekToTime(ev.offsetX);\n\t\t\tthis.seeking = false;\n\t\t} else if ((ev.target as HTMLElement).id === \"seekCircle\") {\n\t\t\tev.stopPropagation();\n\t\t\tev.preventDefault();\n\t\t}\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BufferSeek.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BufferSeek.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./BufferSeek.vue?vue&type=template&id=6a44dff8&scoped=true\"\nimport script from \"./BufferSeek.vue?vue&type=script&lang=ts\"\nexport * from \"./BufferSeek.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BufferSeek.vue?vue&type=style&index=0&id=6a44dff8&prod&scoped=true&lang=scss\"\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 \"6a44dff8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"video-player\"},[_c('video',{ref:\"videoControl\",staticClass:\"video-player\",attrs:{\"autoplay\":\"\",\"muted\":\"\"},domProps:{\"muted\":true},on:{\"loadeddata\":_vm.OnLoadedData}}),_c('video',{ref:\"videoControlDuration\",staticClass:\"video-player-hidden\",attrs:{\"autoplay\":\"\",\"muted\":\"\"},domProps:{\"muted\":true}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Vue } from \"vue-property-decorator\";\r\nimport { AuditClip } from \"@/services/auditService\";\r\n\r\n@Component({\r\n\tcomponents: {}\r\n})\r\nexport default class AuditVideo extends Vue {\r\n\t$refs!: {\r\n\t\tvideoControl: HTMLVideoElement;\r\n\t\tvideoControlDuration: HTMLVideoElement;\r\n\t};\r\n\r\n\tpublic auditClip: AuditClip | null = null;\r\n\r\n\tprivate readonly MEDIA_ERR_ABORTED = 1;\r\n\tprivate readonly MEDIA_ERR_NETWORK = 2;\r\n\tprivate readonly MEDIA_ERR_DECODE = 3;\r\n\tprivate readonly MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\r\n\r\n\tprivate currentURL: string | null = null;\r\n\tprivate hasSetupVideoPlayer: boolean = false;\r\n\tprivate newDataAdded: boolean = false;\r\n\r\n\tprivate playCheck: NodeJS.Timeout = null;\r\n\tprivate lastCheckTime: number | null = null;\r\n\r\n\t/**\r\n\t * Gets the playback ended state.\r\n\t * @returns True if the video player has ended.\r\n\t */\r\n\tpublic get ended(): boolean {\r\n\t\treturn this.$refs.videoControl.ended;\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes the audit video player.\r\n\t */\r\n\tpublic open() {\r\n\t\tthis.auditClip = new AuditClip();\r\n\t}\r\n\r\n\t/**\r\n\t * Resets the audit video player.\r\n\t */\r\n\tpublic close() {\r\n\t\tif (this.playCheck) {\r\n\t\t\tclearInterval(this.playCheck);\r\n\t\t\tthis.playCheck = null;\r\n\t\t}\r\n\r\n\t\tif (this.$refs.videoControl) {\r\n\t\t\tthis.$refs.videoControl.pause();\r\n\t\t\tthis.$refs.videoControl.src = \"\";\r\n\t\t}\r\n\t\tif (this.$refs.videoControlDuration) {\r\n\t\t\tthis.$refs.videoControlDuration.src = \"\";\r\n\t\t}\r\n\r\n\t\tthis.hasSetupVideoPlayer = false;\r\n\r\n\t\tif (this.auditClip) {\r\n\t\t\tthis.auditClip.endClip();\r\n\t\t\tthis.auditClip = null;\r\n\t\t}\r\n\t\tif (this.currentURL) {\r\n\t\t\twindow.URL.revokeObjectURL(this.currentURL);\r\n\t\t\tthis.currentURL = null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Starts playing the video from it's current position.\r\n\t */\r\n\tpublic play() {\r\n\t\ttry {\r\n\t\t\tthis.$refs.videoControl.play();\r\n\t\t} catch (err) {\r\n\t\t\t// play can sometimes throw an exception when the video player is given an incorrectly\r\n\t\t\t// formatted MP4 (looking at you, genetec).\r\n\t\t\tconsole.log(\"AuditVideo - Error: Media type is unsupported, playback may be affected\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Pauses the video.\r\n\t */\r\n\tpublic pause() {\r\n\t\tthis.$refs.videoControl.pause();\r\n\t}\r\n\r\n\t/**\r\n\t * Appends remaining video data to the player\r\n\t */\r\n\tpublic processRemainingData(): void {\r\n\t\tif (this.auditClip.hasDataToProcess()) {\r\n\t\t\tthis.auditClip.clearQueue();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Seeks to a specified time in the video.\r\n\t * @param time the time, in seconds, to seek to.\r\n\t */\r\n\tpublic seek(time: number) {\r\n\t\tthis.$refs.videoControl.currentTime = time;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the video player to play a video at a specific URL.\r\n\t * @param url the url of the video to play.\r\n\t */\r\n\tpublic playURL(url: string) {\r\n\t\tthis.$refs.videoControl.src = url;\r\n\t\tthis.$refs.videoControl.onloadedmetadata = () => this.handleOnLoadedMetadata(this.$refs.videoControl);\r\n\t\tthis.$refs.videoControl.ontimeupdate = () => this.onTimeUpdate();\r\n\t\tthis.$refs.videoControl.style.backgroundColor = \"#000000\";\r\n\t\tthis.$refs.videoControl.play();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up the video player to stream video, appended with the addVideoData method.\r\n\t */\r\n\tprivate playBlob() {\r\n\t\ttry {\r\n\t\t\tif (!this.hasSetupVideoPlayer) {\r\n\t\t\t\tthis.hasSetupVideoPlayer = true;\r\n\r\n\t\t\t\tthis.$refs.videoControl.src = window.URL.createObjectURL(this.auditClip.mediaSource);\r\n\t\t\t\tthis.$refs.videoControl.onerror = ev => this.onVideoControlError(ev as Event);\r\n\t\t\t\tthis.$refs.videoControl.ontimeupdate = () => this.onTimeUpdate();\r\n\t\t\t\tthis.$refs.videoControl.onended = () => this.onVideoEnded();\r\n\t\t\t\tthis.$refs.videoControl.style.backgroundColor = \"#000000\";\r\n\t\t\t\tthis.auditClip.setSourceOpenHandler();\r\n\r\n\t\t\t\tlet playPromise = this.$refs.videoControl.play();\r\n\r\n\t\t\t\tif (playPromise) {\r\n\t\t\t\t\tplayPromise.catch(error => {\r\n\t\t\t\t\t\tthis.$refs.videoControl.src = window.URL.createObjectURL(this.auditClip.toBlob());\r\n\t\t\t\t\t\tthis.$refs.videoControl.play();\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.playCheck) {\r\n\t\t\t\t\tclearInterval(this.playCheck);\r\n\t\t\t\t\tthis.playCheck = null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.playCheck = setInterval(() => {\r\n\t\t\t\t\tif (!this.$refs.videoControl) {\r\n\t\t\t\t\t\tif (this.playCheck) {\r\n\t\t\t\t\t\t\tclearInterval(this.playCheck);\r\n\t\t\t\t\t\t\tthis.playCheck = null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else if (!this.$refs.videoControl.paused) {\r\n\t\t\t\t\t\tif (this.lastCheckTime === this.$refs.videoControl.currentTime) {\r\n\t\t\t\t\t\t\tthis.$refs.videoControl.currentTime = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.lastCheckTime = this.$refs.videoControl.currentTime;\r\n\t\t\t\t\t}\r\n\t\t\t\t}, 1000);\r\n\t\t\t}\r\n\r\n\t\t\tthis.newDataAdded = false;\r\n\r\n\t\t\t// Duration video gets video as blob files, and can read duration where media source can't.\r\n\t\t\tthis.currentURL = window.URL.createObjectURL(this.auditClip.toBlob());\r\n\t\t\tthis.$refs.videoControlDuration.src = this.currentURL;\r\n\t\t\tthis.$refs.videoControlDuration.onloadedmetadata = () => {\r\n\t\t\t\tthis.handleOnLoadedMetadata(this.$refs.videoControlDuration);\r\n\t\t\t};\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(`AuditVideo - Error: ${err}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Appends video data to the player.\r\n\t * @param data the byte array containing the video data to append.\r\n\t */\r\n\tpublic addVideoData(data: ArrayBuffer) {\r\n\t\ttry {\r\n\t\t\tthis.auditClip.addData(data);\r\n\t\t\tthis.newDataAdded = true;\r\n\t\t\tthis.playBlob();\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(`AuditVideo - Error: ${err}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for when the video control raises an error.\r\n\t * @param event this is the error event raised by the video control.\r\n\t */\r\n\tpublic onVideoControlError(event: Event) {\r\n\t\tconst videoElement = event.currentTarget as HTMLVideoElement;\r\n\t\tconst { code, message } = videoElement.error;\r\n\r\n\t\tswitch (code) {\r\n\t\t\tcase this.MEDIA_ERR_ABORTED:\r\n\t\t\tcase this.MEDIA_ERR_NETWORK:\r\n\t\t\tcase this.MEDIA_ERR_SRC_NOT_SUPPORTED: {\r\n\t\t\t\t// Unlikely that a reset will help us here, so we'll have to notify the control we've finished streaming.\r\n\t\t\t\tconsole.log(`AuditVideo - Error: ${message}`);\r\n\t\t\t\tthis.onVideoEnded();\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase this.MEDIA_ERR_DECODE: {\r\n\t\t\t\tif (message == \"PIPELINE_ERROR_DECODE: Failed to send video packet for decoding: EOS\") {\r\n\t\t\t\t\t// We don't need to reset, the video likely streamed fine but no EOS packet was sent. Note: This is\r\n\t\t\t\t\t// unreliable as it relies on a Chrome-specific error message. We need to either remove this logic, or\r\n\t\t\t\t\t// investigate a browser-agnostic solution.\r\n\t\t\t\t\tconsole.log(\"AuditVideo - Error: End of sequence not found.\");\r\n\t\t\t\t\tthis.onVideoEnded();\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// If we reach this point, there's a pretty good chance that we've been sent an incomplete packet\r\n\t\t\t\t\t// (ie, Genetec), so emit an error event and request a restart in 5 seconds when we may have more data.\r\n\t\t\t\t\tconsole.log(`AuditVideo - Error: ${message}`);\r\n\t\t\t\t\tthis.$emit(\"onVideoError\", { restart: true });\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for when the video control raises an end event.\r\n\t */\r\n\tpublic onVideoEnded() {\r\n\t\ttry {\r\n\t\t\t// If new data has been added since the end event, and the player hasn't encountered an error,\r\n\t\t\t// attempt to resume playback.\r\n\t\t\tif (this.newDataAdded) {\r\n\t\t\t\tthis.playBlob();\r\n\t\t\t} else {\r\n\t\t\t\t// Otherwise, emit an end event, including the error state\r\n\t\t\t\tthis.hasSetupVideoPlayer = false;\r\n\t\t\t\tclearInterval(this.playCheck);\r\n\t\t\t\tthis.$emit(\"onVideoEnded\");\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(`AuditVideo - Error: ${err}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for when metadata is loaded by the player, updates the video duration\r\n\t * and emits an event.\r\n\t * @param videoElement the video element that raised the event.\r\n\t */\r\n\tprivate handleOnLoadedMetadata(videoElement: HTMLVideoElement) {\r\n\t\ttry {\r\n\t\t\tthis.updateDuration(videoElement);\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(err);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Re-calculates the video duration in minutes and seconds, and emits them\r\n\t * in an event.\r\n\t * @param videoElement the video element to calculate the duration for.\r\n\t */\r\n\tprivate updateDuration(videoElement: HTMLVideoElement) {\r\n\t\ttry {\r\n\t\t\tvar duration = videoElement.duration;\r\n\t\t\tvar minutes = Math.floor(duration / 60);\r\n\t\t\tvar seconds = Math.round(duration % 60);\r\n\r\n\t\t\tthis.$emit(\"durationChanged\", {\r\n\t\t\t\ttime: duration,\r\n\t\t\t\tminutes: minutes,\r\n\t\t\t\tseconds: seconds,\r\n\t\t\t\ttotalSeconds: minutes * 60 + seconds\r\n\t\t\t});\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(`AuditVideo - Error: ${err}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for when the video player raises a time updated event. Calculates the\r\n\t * current time in minutes and seconds, and emits them in an event.\r\n\t */\r\n\tprivate onTimeUpdate() {\r\n\t\tif (!this.$refs.videoControl)\r\n\t\t\treturn;\r\n\r\n\t\ttry {\r\n\t\t\tvar currentTime = this.$refs.videoControl.currentTime;\r\n\t\t\tvar minutes = Math.floor(currentTime / 60);\r\n\t\t\tvar seconds = Math.ceil(currentTime % 60);\r\n\r\n\t\t\tthis.$emit(\"timeChanged\", {\r\n\t\t\t\ttime: currentTime,\r\n\t\t\t\tminutes: minutes,\r\n\t\t\t\tseconds: seconds,\r\n\t\t\t\ttotalSeconds: minutes * 60 + seconds\r\n\t\t\t});\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(`AuditVideo - Error: ${err}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the current playback speed of the video.\r\n\t * @param speed the percentage playback rate, where 1 is the default speed.\r\n\t */\r\n\tpublic setPlaybackSpeed(speed: number) {\r\n\t\tthis.$refs.videoControl.playbackRate = speed;\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the current image in the video player, and returns it.\r\n\t * @returns a data URL to the image.\r\n\t */\r\n\tpublic currentImage(): string {\r\n\t\tvar canvas = document.createElement(\"canvas\");\r\n\t\tcanvas.width = this.$refs.videoControl.videoWidth;\r\n\t\tcanvas.height = this.$refs.videoControl.videoHeight;\r\n\t\tcanvas.getContext(\"2d\")!.drawImage(this.$refs.videoControl, 0, 0, canvas.width, canvas.height);\r\n\r\n\t\tvar image = canvas.toDataURL(\"image/jpeg\");\r\n\t\treturn image;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks the current media for video and audio tracks\r\n\t * @returns a data URL to the image.\r\n\t */\r\n\tpublic OnLoadedData(e: any): void {\r\n\t\t//any used as cannot find correct event type\r\n\t\tconst mediaHasAudio = e.target.webkitAudioDecodedByteCount && e.target.webkitAudioDecodedByteCount > 0;\r\n\t\tconst mediaHasVideo = e.target.webkitVideoDecodedByteCount && e.target.webkitVideoDecodedByteCount > 0;\r\n\r\n\t\tthis.$emit(\"mediaHasAudio\", mediaHasAudio);\r\n\t\tthis.$emit(\"mediaHasVideo\", mediaHasVideo);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the current mute status of the video.\r\n\t * @param muted muted status\r\n\t */\r\n\tpublic muteUnMute(muted: boolean) {\r\n\t\tthis.$refs.videoControl.muted = muted;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuditVideo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuditVideo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AuditVideo.vue?vue&type=template&id=832e7d0a&scoped=true\"\nimport script from \"./AuditVideo.vue?vue&type=script&lang=ts\"\nexport * from \"./AuditVideo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AuditVideo.vue?vue&type=style&index=0&id=832e7d0a&prod&scoped=true&lang=scss\"\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 \"832e7d0a\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\n\r\nimport BufferSeek from \"./media/BufferSeek.vue\";\r\nimport AuditVideo from \"./AuditVideo.vue\";\r\nimport { MediaFile, AuditTimeStamp, AuditService } from \"@/services/auditService\";\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport { EventRecord } from '@/store/site-monitor/types';\r\nimport { AuditRecordDTO } from \"@/store/site-monitor/types\";\r\nimport EventRecordTypes from \"@/types/sv-data/enums/EventRecordTypes\";\r\n\r\nconst SessionStore = namespace(\"sessions\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"audit-video\": AuditVideo,\r\n\t\t\"buffer-seek\": BufferSeek\r\n\t}\r\n})\r\nexport default class AuditControl extends Vue {\r\n\t$refs!: {\r\n\t\tvideo: AuditVideo;\r\n\t};\r\n\r\n\t@SiteMonitor.Action createAuditRecord: (request: AuditRecordDTO) => Promise;\r\n\r\n\t@Getter(\"getUserName\") public currentUserName!: string;\r\n\r\n\t@SessionStore.Getter private getSession: (resourceId: number) => string;\r\n\t@Getter private getFeature: (featureName: string[]) => boolean;\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\tpublic currentFile: MediaFile | null = null;\r\n\r\n\tprivate auditService: AuditService | null = null;\r\n\tprivate eventRecordID: number | null = null;\r\n\tprivate eventID: number | null = null;\r\n\r\n\tprivate playing: boolean = false;\r\n\tprivate ended: boolean = false;\r\n\tprivate playBackSpeed: number = 1.0;\r\n\r\n\tprivate duration: AuditTimeStamp = {\r\n\t\ttime: 0,\r\n\t\tminutes: 0,\r\n\t\tseconds: 0,\r\n\t\ttotalSeconds: 0\r\n\t};\r\n\r\n\tprivate timestamp: AuditTimeStamp = {\r\n\t\ttime: 0,\r\n\t\tminutes: 0,\r\n\t\tseconds: 0,\r\n\t\ttotalSeconds: 0\r\n\t};\r\n\r\n\tprivate dataSize: number = 0;\r\n\tprivate appendLock: boolean = false;\r\n\tprivate appendTimeout: NodeJS.Timeout = null;\r\n\tprivate moreDataAvailable: boolean = false;\r\n\tprivate latestClipLength: number | null = null;\r\n\r\n\tprivate isMuted: boolean = true;\r\n\tprivate mediaHasAudio: boolean = false;\r\n\tprivate mediaHasVideo: boolean = false;\r\n\r\n\t/**\r\n\t * Stops current playback, stops fetching data, resets the control and begins playing a new clip.\r\n\t */\r\n\tpublic async playClip(auditService: AuditService, eventRecordID: number, clip: any, eventID: number = -1) {\r\n\t\tthis.stop();\r\n\r\n\t\tthis.auditService = auditService;\r\n\t\tthis.eventRecordID = eventRecordID;\r\n\t\tthis.eventID = eventID;\r\n\t\tthis.currentFile = clip;\r\n\t\tthis.ended = false;\r\n\t\tthis.playBackSpeed = 1.0;\r\n\r\n\t\tawait this.$nextTick();\r\n\r\n\t\tthis.playing = true;\r\n\t\tthis.$refs.video.open();\r\n\t\tthis.appendVideo();\r\n\t}\r\n\r\n\t/**\r\n\t * Clears our append timeout, and resets the state of the video control.\r\n\t */\r\n\tpublic stop() {\r\n\t\tclearTimeout(this.appendTimeout);\r\n\r\n\t\tif (this.$refs.video) {\r\n\t\t\tthis.$refs.video.close();\r\n\t\t}\r\n\r\n\t\tthis.moreDataAvailable = true;\r\n\t\tthis.dataSize = 0;\r\n\t\tthis.appendLock = false;\r\n\t\tthis.latestClipLength = null;\r\n\t\tthis.ended = true;\r\n\t\tthis.playing = false;\r\n\r\n\t\tthis.$set(this, \"duration\", {\r\n\t\t\ttime: 0,\r\n\t\t\tminutes: 0,\r\n\t\t\tseconds: 0,\r\n\t\t\ttotalSeconds: 0\r\n\t\t});\r\n\r\n\t\tthis.$set(this, \"timestamp\", {\r\n\t\t\ttime: 0,\r\n\t\t\tminutes: 0,\r\n\t\t\tseconds: 0,\r\n\t\t\ttotalSeconds: 0\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Attempts to fetch new video data from the audit service, and if any is returned, streams it to our\r\n\t * video player.\r\n\t */\r\n\tprivate async appendVideo() {\r\n\t\tif (this.ended || this.appendLock || !this.auditService) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.appendLock = true;\r\n\r\n\t\t// Stop any further video data requests until this one is finished.\r\n\t\tclearTimeout(this.appendTimeout);\r\n\r\n\t\t// Get our audit service url.\r\n\t\tconst auth = this.getSession(2);\r\n\t\tconst mediaUrl = this.auditService.mediaUrl(\r\n\t\t\tauth,\r\n\t\t\tthis.eventRecordID,\r\n\t\t\tthis.currentFile!.FileIdentifier,\r\n\t\t);\r\n\r\n\t\ttry {\r\n\t\t\t// Fetch the next packet of video data from the audit service.\r\n\t\t\tconst { headers, data } = await this.auditService.auditDataGet(mediaUrl, this.dataSize);\r\n\t\t\tconst contentRange: string = headers[\"content-range\"];\r\n\r\n\t\t\tif (contentRange) {\r\n\t\t\t\t// If audit returned a content range, extract stream sizes.\r\n\t\t\t\tconst [rangeStr, maxSizeStr] = contentRange.split(\"/\"); // x-y/z -> [x-y, z]\r\n\t\t\t\tconst [rangeMinStr, rangeMaxStr] = rangeStr.split(\"-\"); // x-y -> [x, y]\r\n\r\n\t\t\t\t// size = the end offset of this data packet range.\r\n\t\t\t\tconst size = parseInt(rangeMaxStr);\r\n\r\n\t\t\t\t// maxSize = the maximum size of the video stream.\r\n\t\t\t\tconst maxSize = parseInt(maxSizeStr);\r\n\r\n\t\t\t\t// Update our latest clip length for the seek bar.\r\n\t\t\t\tthis.latestClipLength = maxSize;\r\n\r\n\t\t\t\tif (data && data.byteLength > 0) {\r\n\t\t\t\t\t// If we've got data, add it to the video.\r\n\t\t\t\t\tthis.dataSize = size;\r\n\t\t\t\t\tthis.$refs.video.addVideoData(data);\r\n\t\t\t\t\tthis.moreDataAvailable = this.latestClipLength > size;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.$refs.video.processRemainingData();\r\n\t\t\t\t\tthis.moreDataAvailable = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(`AuditControl - Error fetching audit data: ${err}`);\r\n\t\t\tthis.moreDataAvailable = false;\r\n\t\t}\r\n\r\n\t\t// Setup next timeout to fetch video data.\r\n\t\tthis.appendTimeout = setTimeout(\r\n\t\t\t() => {\r\n\t\t\t\tthis.appendLock = false;\r\n\t\t\t\tthis.appendVideo();\r\n\t\t\t},\r\n\t\t\tthis.moreDataAvailable ? 100 : 2000\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for when the video player raises an ended event.\r\n\t */\r\n\tprivate onVideoEnded() {\r\n\t\ttry {\r\n\t\t\tif (this.playing) {\r\n\t\t\t\tif (this.moreDataAvailable) {\r\n\t\t\t\t\t// Wait - we don't have the full clip yet ...\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.$refs.video.seek(0);\r\n\t\t\t\t\tthis.$refs.video.play();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(`AuditControl - Error: ${err}`);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for when the audit video component throws an error. If required, we'll\r\n\t * attempt to restart the stream.\r\n\t */\r\n\tprivate onVideoError({ restart }: { restart: boolean }) {\r\n\t\tclearTimeout(this.appendTimeout);\r\n\r\n\t\tif (restart) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.stop();\r\n\t\t\t\tthis.playClip(this.auditService, this.eventRecordID, this.currentFile, this.eventID);\r\n\t\t\t}, 5000);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for when the current clip duration is updated.\r\n\t */\r\n\tprivate onClipDurationChanged(duration: AuditTimeStamp) {\r\n\t\tthis.$set(this, \"duration\", duration);\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for when the current clip time is updated.\r\n\t */\r\n\tprivate onClipTimeChanged(timestamp: AuditTimeStamp) {\r\n\t\tthis.$set(this, \"timestamp\", timestamp);\r\n\t}\r\n\r\n\t/**\r\n\t * Handler for when the user updates the video seek bar.\r\n\t */\r\n\tprivate onSliderSeek(seekTo: number) {\r\n\t\tthis.$refs.video.seek(seekTo);\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles playback of the video control.\r\n\t */\r\n\tprivate togglePlaying() {\r\n\t\tif (this.playing) {\r\n\t\t\tthis.playing = false;\r\n\t\t\tthis.$refs.video.pause();\r\n\t\t} else {\r\n\t\t\tthis.playing = true;\r\n\t\t\tthis.$refs.video.play();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Increases playback speed of the video control.\r\n\t */\r\n\tprivate speedUp() {\r\n\t\tif (this.playBackSpeed + 0.5 <= 5.0) {\r\n\t\t\tthis.playBackSpeed += 0.5;\r\n\t\t\tthis.$refs.video.setPlaybackSpeed(this.playBackSpeed);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Decreases playback speed of the video control.\r\n\t */\r\n\tprivate slowDown() {\r\n\t\tif (this.playBackSpeed - 0.5 >= 0.5) {\r\n\t\t\tthis.playBackSpeed -= 0.5;\r\n\t\t\tthis.$refs.video.setPlaybackSpeed(this.playBackSpeed);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get canUnmute():boolean{\r\n\t\treturn this.getFeature([\"Alarms\", \"MediaMatrix\", \"UnmuteAudio\"]);\r\n\t}\r\n\r\n\tprivate get cameraSnapshotFeatureEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"MediaMatrix\", \"SnapShot\"]);\r\n\t}\r\n\r\n\tprivate get cameraSnapshotPermissionEnabled(): boolean {\r\n\t\treturn this.getPermissions.canPerformMatrixSnapshot;\r\n\t}\r\n\r\n\tprivate get cameraSnapshotEnabled(): boolean {\r\n\t\treturn this.cameraSnapshotFeatureEnabled && this.cameraSnapshotPermissionEnabled;\r\n\t}\r\n\r\n\tmuteUnMute(): void {\r\n\t\tthis.isMuted = !this.isMuted;\r\n\t\tthis.$refs.video.muteUnMute(this.isMuted);\r\n\t}\r\n\r\n\tprivate onMediaHasAudio(mediaHasAudio): void {\r\n\t\tthis.mediaHasAudio = mediaHasAudio;\r\n\t}\r\n\r\n\tprivate onMediaHasVideo(mediaHasVideo): void {\r\n\t\tthis.mediaHasVideo = mediaHasVideo;\r\n\t}\r\n\r\n\tprivate async takeSnapShot(): Promise {\r\n\t\tconst imageTimestamp =\r\n\t\t\tthis.timestamp.minutes.toString().padStart(2, \"0\") + this.timestamp.seconds.toString().padStart(2, \"0\");\r\n\t\tconst ImageURL = this.$refs.video.currentImage();\r\n\r\n\t\tlet link = document.createElement(\"a\");\r\n\t\tlink.href = ImageURL;\r\n\r\n\t\tconst dateTime = new Date();\r\n\t\tdateTime.setTime(dateTime.getTime() - dateTime.getTimezoneOffset() * 60 * 1000);\r\n\r\n\t\tconst dateTimeString =\r\n\t\t\tdateTime.getUTCFullYear().toString() +\r\n\t\t\t\"-\" +\r\n\t\t\t(dateTime.getUTCMonth() + 1).toString() +\r\n\t\t\t\"-\" +\r\n\t\t\tdateTime.getUTCDate().toString() +\r\n\t\t\t\"_\" +\r\n\t\t\tdateTime.getUTCHours().toString() +\r\n\t\t\t\"-\" +\r\n\t\t\tdateTime.getUTCMinutes().toString() +\r\n\t\t\t\"-\" +\r\n\t\t\tdateTime.getUTCSeconds().toString();\r\n\r\n\t\tlet clipFilename = \"Snapshot_\";\r\n\t\tclipFilename = clipFilename + this.eventID + \"_\" + dateTimeString + \"_\" + imageTimestamp + \".jpg\";\r\n\t\tlink.download = clipFilename;\r\n\r\n\t\tlink.click();\r\n\r\n\t\tawait this.auditSnapshot(ImageURL, clipFilename);\r\n\t}\r\n\r\n\tprivate async auditSnapshot(snapshotImage: string, fileName: string): Promise {\r\n\t\tconst eventRecord = await this.createAuditRecord({\r\n\t\t\teventId: this.eventID,\r\n\t\t\teventRecordTypeId: EventRecordTypes.RecordedVideoSnapShot,\r\n\t\t\tdetails: `User ${this.currentUserName} took snapshot of a clip - ${fileName}`,\r\n\t\t\tobjectId: this.eventRecordID\r\n\t\t});\r\n\r\n\t\tconst auth = this.getSession(SessionResource.AuditServiceSession);\r\n\t\tconst imageBlob = await (await fetch(snapshotImage)).blob();\r\n\r\n\t\tawait this.auditService.attachMediaDataToEventRecord(\r\n\t\t\tauth,\r\n\t\t\teventRecord.eventID,\r\n\t\t\teventRecord.eventRecordID,\r\n\t\t\tthis.currentFile.DeviceId,\r\n\t\t\tnull,\r\n\t\t\timageBlob,\r\n\t\t\tfileName\r\n\t\t);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuditControl.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AuditControl.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AuditControl.vue?vue&type=template&id=43a7785d&scoped=true\"\nimport script from \"./AuditControl.vue?vue&type=script&lang=ts\"\nexport * from \"./AuditControl.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AuditControl.vue?vue&type=style&index=0&id=43a7785d&prod&scoped=true&lang=scss\"\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 \"43a7785d\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\n\r\nimport AuditControl from \"@/components/AuditControl.vue\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport { get } from \"lodash\";\r\n\r\n/* import { AuditService, MediaFile } from \"@/services/auditService\"; */\r\n// @note Breaking Vue reactivity when not using this.$set with\r\n// nonprimitive data may cause errors & nasty bugs\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst SiteMonitorCameras = namespace(\"siteMonitorCameras\");\r\nconst Tours = namespace(\"tours\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"audit-control\": AuditControl\r\n\t}\r\n})\r\nexport default class MatrixContainer extends Vue {\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.created = Date.now().toString();\r\n\t}\r\n\r\n\t$refs!: {\r\n\t\tcameraControl: any;\r\n\t\tplayer: AuditControl;\r\n\t\tchildElement: HTMLDivElement;\r\n\t};\r\n\r\n\t@Prop(Number) index?: any;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t@SiteMonitorCameras.Getter getLayoutIndex: any;\r\n\t@SiteMonitorCameras.Getter getAwaitingCamera: any;\r\n\t@SiteMonitorCameras.Getter(\"getAwaitingClip\") awaitingClip: any;\r\n\t@SiteMonitorCameras.Getter(\"getLinkRecord\") linkRecord: any;\r\n\t@SiteMonitorCameras.Getter getMatrixPushContents: any;\r\n\t@SiteMonitorCameras.Getter getMatrixContents: any;\r\n\t@SiteMonitorCameras.Getter getHighlightCellIndex: number | null;\r\n\t@SiteMonitorCameras.Getter(\"getWaitingForEvents\") getWaitingForEvent: any;\r\n\r\n\t@SiteMonitorCameras.Action updateMediaMatrixContents: any;\r\n\t@SiteMonitorCameras.Mutation setAwaitingCamera: any;\r\n\t@SiteMonitorCameras.Mutation setAwaitingClip: any;\r\n\t@SiteMonitorCameras.Mutation setPushContents: any;\r\n\r\n\t@SiteMonitor.Getter(\"getIsController\") isController: any;\r\n\t@SiteMonitor.Getter(\"getAuditService\") auditService: any;\r\n\r\n\t@SiteMonitor.Getter(\"getEventDetails\") eventDetails: EventDetails;\r\n\r\n\t@SiteMonitor.Mutation setActivity: () => void;\r\n\r\n\t@SiteMonitorCameras.Mutation setLinkRecord: any;\r\n\t@SiteMonitorCameras.Mutation setCameraLink: any;\r\n\r\n\t@Tours.Getter tourInProgress: any;\r\n\t@Tours.Getter getActiveCell: any;\r\n\t@Tours.Getter getPredefinedTour: any;\r\n\r\n\tpublic deviceId: number = 0;\r\n\tpublic deviceTitle: string | null = null;\r\n\tpublic created: string;\r\n\tpublic _camera: any = null;\r\n\tpublic _clip: any;\r\n\tpublic hasClip: boolean = false;\r\n\tpublic clipDetails: any = {};\r\n\tpublic highlight: boolean = false;\r\n\tprivate streamingData: boolean = false;\r\n\tprivate isActive: boolean = false;\r\n\r\n\tprivate get camera() {\r\n\t\treturn this._camera;\r\n\t}\r\n\r\n\tprivate set camera(value: any) {\r\n\t\tif (value == undefined) {\r\n\t\t\tthis._camera = null;\r\n\t\t\tthis.deviceId = -2;\r\n\t\t\tthis.deviceTitle = null;\r\n\t\t} else {\r\n\t\t\tif (value == null) {\r\n\t\t\t\tthis.deviceId = -1;\r\n\t\t\t\tthis.deviceTitle = null;\r\n\t\t\t} else {\r\n\t\t\t\tthis.deviceId = value.objectId ? value.objectId : value.objectID;\r\n\t\t\t\tthis.deviceTitle = value.title;\r\n\t\t\t}\r\n\r\n\t\t\tthis._camera = value;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get clip() {\r\n\t\treturn this._clip;\r\n\t}\r\n\r\n\tprivate set clip(value: any) {\r\n\t\tif (value == null) {\r\n\t\t\tthis.hasClip = false;\r\n\t\t\tthis.clipDetails = {};\r\n\t\t} else {\r\n\t\t\tthis.hasClip = true;\r\n\t\t\tthis.clipDetails = value;\r\n\t\t}\r\n\r\n\t\tthis._clip = value;\r\n\t}\r\n\r\n\tprivate get isTourMaskInactiveCameras(): boolean {\r\n\t\tif (!this.tourInProgress || !this.getPredefinedTour) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tconst result = get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"VideoTours\", \"MaskInActiveCamera\"]);\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate get isCellActive() {\r\n\t\tif (!this.tourInProgress || this.getPredefinedTour == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tif (this.getActiveCell.index == this.index && this.getActiveCell.isActive) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate get displayBg() {\r\n\t\treturn {\r\n\t\t\tdisplay: this.camera || this.clip ? \"none\" : \"flex\",\r\n\t\t\tborder: \"2px solid #dee2e6 !important\",\r\n\t\t\tborderRadius: \"5px\",\r\n\t\t\tbackgroundSize: \"cover\",\r\n\t\t\tbackgroundImage: \"url(/images/placeholder_blank.jpg)\",\r\n\t\t\tzIndex: 100\r\n\t\t};\r\n\t}\r\n\r\n\tprivate get cameraBackground() {\r\n\t\tlet style: any = {\r\n\t\t\tposition: \"absolute\",\r\n\t\t\ttop: \"0px\",\r\n\t\t\tleft: \"0px\",\r\n\t\t\tright: \"0px\",\r\n\t\t\tbottom: \"0px\",\r\n\t\t\tzIndex: 99\r\n\t\t};\r\n\r\n\t\tif (this.getAwaitingCamera) {\r\n\t\t\tstyle = {\r\n\t\t\t\t...style,\r\n\t\t\t\tborder: \"2px solid #dee2e6 !important\",\r\n\t\t\t\tbackgroundSize: \"cover\",\r\n\t\t\t\tbackgroundImage: \"url(/images/placeholder_blank.jpg)\"\r\n\t\t\t};\r\n\t\t} else if (this.getHighlightCellIndex == this.index) {\r\n\t\t\tstyle = {\r\n\t\t\t\t...style,\r\n\t\t\t\tborder: \"2px solid #eee !important\"\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tstyle = {\r\n\t\t\t\t...style,\r\n\t\t\t\tborder: \"none !important\"\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t}\r\n\r\n\tprivate get auditClipStyle() {\r\n\t\tlet style: any = { display: this.clip ? \"flex\" : \"none\" };\r\n\r\n\t\tif (this.getHighlightCellIndex == this.index) {\r\n\t\t\tstyle = {\r\n\t\t\t\t...style,\r\n\t\t\t\tborder: \"2px solid #eee !important\"\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t}\r\n\r\n\tprivate get pushContents() {\r\n\t\treturn this.getMatrixPushContents(this.index);\r\n\t}\r\n\r\n\tprivate get waitingForEvent() {\r\n\t\treturn this.getWaitingForEvent;\r\n\t}\r\n\r\n\tprivate get matrixContent() {\r\n\t\treturn this.getMatrixContents(this.index);\r\n\t}\r\n\r\n\tprivate get contents() {\r\n\t\treturn this.getMatrixContents(this.index);\r\n\t}\r\n\r\n\tprivate get hasContents() {\r\n\t\treturn this.deviceId > 0 || this.hasClip;\r\n\t}\r\n\r\n\tprivate get eventId() {\r\n\t\treturn this.eventDetails ? this.eventDetails.eventID : 0;\r\n\t}\r\n\r\n\tprivate get displayStyle() {\r\n\t\treturn { display: this.getAwaitingCamera ? \"flex\" : \"none\" };\r\n\t}\r\n\r\n\tprivate get manualRaiseEnabled() {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"ManualRaise\"], false);\r\n\t}\r\n\r\n\tprivate get manualRaiseRecordingEnabled() {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"ManualRaise\", \"Recording\"], false);\r\n\t}\r\n\r\n\tprivate get isVideoAuditingEnabled() {\r\n\t\treturn get(this.featuresList, [\"VideoAuditing\"], false);\r\n\t}\r\n\r\n\t@Watch(\"matrixContent\")\r\n\tprivate onMatrixUpdated() {\r\n\t\tthis.setContents(this.getMatrixContents(this.index));\r\n\t}\r\n\r\n\t@Watch(\"pushContents\")\r\n\tprivate onPushContentsChanged(contents: any, oldContents: any) {\r\n\t\tif (contents != null) {\r\n\t\t\tconsole.groupCollapsed(\"pushContents \" + this.index);\r\n\t\t\tconsole.log(contents);\r\n\t\t\tconsole.groupEnd();\r\n\r\n\t\t\tlet changed = this.setContents(contents);\r\n\r\n\t\t\tif (changed) {\r\n\t\t\t\tthis.updateMediaMatrixContents({\r\n\t\t\t\t\tindex: this.index,\r\n\t\t\t\t\tcontents,\r\n\t\t\t\t\tisController: this.isController,\r\n\t\t\t\t\teventID: this.eventId\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"waitingForEvent\")\r\n\tprivate onWaitingForEvent(waitingForEvent: any, oldWaitingForEvent: any) {\r\n\t\t// if we're waiting for an event\r\n\t\tif (waitingForEvent == true) {\r\n\t\t\tVue.nextTick(() => {\r\n\t\t\t\t// clear down any content we currently have (and stop cameras recording!)\r\n\t\t\t\tthis.clear(false);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"eventId\")\r\n\tprivate onEventChanged(eventId: number, oldEventId: number): void {\r\n\t\tif (eventId != oldEventId) {\r\n\t\t\tif (this.clip != null && this.$refs.player)\r\n\t\t\t\tthis.$refs.player.stop();\r\n\r\n\t\t\tif (this.camera != null && this.$refs.cameraControl)\r\n\t\t\t\tthis.$refs.cameraControl.stop();\r\n\r\n\t\t\tthis.clip = null;\r\n\t\t\tthis.camera = null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic mounted() {\r\n\t\tif (this.pushContents != null) {\r\n\t\t\tif (this.pushContents.eventId === this.eventId) {\r\n\t\t\t\tthis.setContents(this.pushContents);\r\n\r\n\t\t\t\tthis.updateMediaMatrixContents({\r\n\t\t\t\t\tindex: this.index,\r\n\t\t\t\t\tcontents: this.pushContents,\r\n\t\t\t\t\tisController: false,\r\n\t\t\t\t\teventID: this.eventId\r\n\t\t\t\t});\r\n\r\n\t\t\t\t//Clear push contents\r\n\t\t\t\tthis.setPushContents({\r\n\t\t\t\t\tindex: this.index,\r\n\t\t\t\t\tnewContents: null,\r\n\t\t\t\t\teventId: null\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.setPushContents({\r\n\t\t\t\t\tindex: this.index,\r\n\t\t\t\t\tnewContents: null,\r\n\t\t\t\t\teventId: null\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setContents(contents: any): boolean {\r\n\t\tlet changed = false;\r\n\t\tif (contents) {\r\n\t\t\tif (contents.camera) {\r\n\t\t\t\tif (this.hasClip) {\r\n\t\t\t\t\tthis.$refs.player.stop();\r\n\t\t\t\t\tthis.$set(this, \"clip\", null);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Need to confirm if the Id for the camera is either 'objectId' or 'objectID'.\r\n\t\t\t\tlet objectId: number = contents.camera.objectID ? contents.camera.objectID : contents.camera.objectId;\r\n\r\n\t\t\t\tif (this.deviceId <= 0 || this.deviceId != objectId) {\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t\tif (this.deviceId > 0) {\r\n\t\t\t\t\t\tthis.$refs.cameraControl.stop();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.$set(this, \"camera\", contents.camera);\r\n\t\t\t\t\tthis.deviceId = objectId;\r\n\r\n\t\t\t\t\tthis.deviceTitle = contents.camera.title;\r\n\r\n\t\t\t\t\tthis.$refs.cameraControl.startCamera(this.deviceId, this.eventId, this.isVideoAuditingEnabled ? this.isController : false);\r\n\t\t\t\t}\r\n\t\t\t} else if (contents.clip) {\r\n\t\t\t\tif (this.deviceId > 0) {\r\n\t\t\t\t\tthis.$set(this, \"camera\", null);\r\n\t\t\t\t\tthis.$refs.cameraControl.stop();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.hasClip || this.clipDetails.clip.UniqueFileIdentifier != contents.clip.clip.UniqueFileIdentifier) {\r\n\t\t\t\t\tchanged = true;\r\n\r\n\t\t\t\t\tif (this.hasClip) {\r\n\t\t\t\t\t\tthis.$refs.player.stop();\r\n\t\t\t\t\t\tthis.$set(this, \"clip\", null);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.$set(this, \"clip\", contents.clip);\r\n\r\n\t\t\t\t\tif (this.auditService == null || this.auditService.mediaUrl == null) {\r\n\t\t\t\t\t\t//TODO: Add a watch on the audit service, then remove it when it's not null.\r\n\r\n\t\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\t\tthis.$refs.player.playClip(this.auditService, contents.clip.eventRecordID, contents.clip.clip, this.eventId);\r\n\t\t\t\t\t\t}, 1.5 * this.$config.ANIMATION_DURATION);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.$refs.player.playClip(this.auditService, contents.clip.eventRecordID, contents.clip.clip, this.eventId);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (this.hasClip) {\r\n\t\t\t\t\tthis.$refs.player.stop();\r\n\t\t\t\t\tthis.$set(this, \"clip\", null);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.deviceId > 0) {\r\n\t\t\t\t\tthis.$set(this, \"camera\", null);\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t\tthis.$refs.cameraControl.stop();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn changed;\r\n\t\t}\r\n\r\n\t\treturn this.contents;\r\n\t}\r\n\r\n\tprivate cameraSelected() {\r\n\t\tif (this.isController) {\r\n\t\t\tthis.setActivity();\r\n\r\n\t\t\tif (this.hasClip) {\r\n\t\t\t\tthis.$refs.player.stop();\r\n\t\t\t\tthis.clip = null;\r\n\t\t\t}\r\n\r\n\t\t\tlet selectedCamera = this.getAwaitingCamera;\r\n\r\n\t\t\tif (selectedCamera) {\r\n\t\t\t\tthis.setAwaitingCamera(null);\r\n\t\t\t\tthis.deviceId = selectedCamera.objectId ? selectedCamera.objectId : selectedCamera.objectID;\r\n\r\n\t\t\t\tthis.updateMediaMatrixContents({\r\n\t\t\t\t\tindex: this.index,\r\n\t\t\t\t\tcontents: {\r\n\t\t\t\t\t\tcamera: selectedCamera\r\n\t\t\t\t\t},\r\n\t\t\t\t\tisController: this.isController,\r\n\t\t\t\t\teventID: this.eventId\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.$refs.cameraControl.startCamera(this.deviceId, this.eventId, this.isVideoAuditingEnabled);\r\n\t\t\t\tthis.camera = selectedCamera;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onClipSelected() {\r\n\t\tif (this.isController) {\r\n\t\t\tthis.setActivity();\r\n\r\n\t\t\tif (this.deviceId > 0) {\r\n\t\t\t\tthis.camera = null;\r\n\t\t\t\tthis.$refs.cameraControl.stop();\r\n\t\t\t}\r\n\t\t\tif (this.hasClip) {\r\n\t\t\t\tthis.$refs.player.stop();\r\n\t\t\t\tthis.clip = null;\r\n\t\t\t}\r\n\r\n\t\t\tlet awaitingClip = this.awaitingClip;\r\n\t\t\tthis.clipDetails = awaitingClip;\r\n\r\n\t\t\tthis.setAwaitingClip(null);\r\n\r\n\t\t\tthis.updateMediaMatrixContents({\r\n\t\t\t\tindex: this.index,\r\n\t\t\t\tcontents: {\r\n\t\t\t\t\tclip: awaitingClip\r\n\t\t\t\t},\r\n\t\t\t\tisController: this.isController,\r\n\t\t\t\teventID: this.eventId\r\n\t\t\t});\r\n\r\n\t\t\tthis.$refs.player.playClip(this.auditService, awaitingClip.eventRecordID, awaitingClip.clip, this.eventId);\r\n\t\t\tthis.clip = awaitingClip;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate clear(updateSavedContents: boolean) {\r\n\t\tthis.$emit(\"contract\", this.$refs.childElement);\r\n\r\n\t\ttry {\r\n\t\t\tif (this.$refs.cameraControl != null) {\r\n\t\t\t\tthis.$refs.cameraControl.stop();\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(err);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tif (this.$refs.player != null) {\r\n\t\t\t\tthis.$refs.player.stop();\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(err);\r\n\t\t}\r\n\r\n\t\tthis.setContents({});\r\n\t\tthis.updateMediaMatrixContents({\r\n\t\t\tindex: this.index,\r\n\t\t\tcontents: {},\r\n\t\t\tisController: this.isController,\r\n\t\t\teventID: updateSavedContents ? this.eventId : 0\r\n\t\t});\r\n\t}\r\n\r\n\tprivate expand() {\r\n\t\tthis.$emit(\"expand\", this.$refs.childElement);\r\n\t}\r\n\r\n\tprivate makeLinkRecord() {\r\n\t\tthis.setCameraLink({\r\n\t\t\tdeviceId: this.deviceId,\r\n\t\t\ttitle: this.deviceTitle\r\n\t\t});\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MatrixContainer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MatrixContainer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MatrixContainer.vue?vue&type=template&id=4693b3e9&scoped=true\"\nimport script from \"./MatrixContainer.vue?vue&type=script&lang=ts\"\nexport * from \"./MatrixContainer.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MatrixContainer.vue?vue&type=style&index=0&id=4693b3e9&prod&scoped=true&lang=scss\"\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 \"4693b3e9\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column\"},[_c('div',{staticClass:\"d-flex flex-grow-1 flex-shrink-1 flex-column\",attrs:{\"id\":\"deviceAccordion\"}},[(_vm.toursEnabled)?_c('div',{staticClass:\"flex-shrink-0\",class:(_vm.open.tours ? 'overflow-y-auto' : ''),attrs:{\"id\":\"TourTreeContainer\"}},[_c('div',{staticClass:\"card-header card-header-clickable\",on:{\"click\":function($event){_vm.open.tours = !_vm.open.tours}}},[_c('h5',{staticClass:\"mb-0\"},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:(_vm.open.tours ? '' : 'closed')}),_vm._v(\" \"+_vm._s(_vm.tourName ? _vm.tourName : \"Video Tour\")+\" \")])]),_c('b-collapse',{model:{value:(_vm.open.tours),callback:function ($$v) {_vm.$set(_vm.open, \"tours\", $$v)},expression:\"open.tours\"}},[_c('tour',{attrs:{\"id\":\"Tour\",\"cameras\":_vm.cameras},on:{\"tourName\":_vm.setTourName,\"tourStopped\":_vm.resetCameraPageNumber}})],1)],1):_vm._e(),(_vm.showClipsList)?_c('div',{staticClass:\"card flex-shrink-1\",class:_vm.open.clips ? 'd-flex' : '',staticStyle:{\"min-height\":\"45px\"},attrs:{\"data-cy\":\"clipsList\"}},[_c('div',{staticClass:\"card-header card-header-clickable row d-block\",on:{\"click\":function($event){_vm.open.clips = !_vm.open.clips}}},[_c('h5',{staticClass:\"mb-0 col-8 d-inline-block\"},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:_vm.open.clips ? '' : 'closed'}),_vm._v(\" Clips (\"+_vm._s(_vm.clips.length)+\") \")])]),_c('b-collapse',{staticClass:\"overflow-y-auto h-100\",attrs:{\"id\":\"collapseClips\"},model:{value:(_vm.open.clips),callback:function ($$v) {_vm.$set(_vm.open, \"clips\", $$v)},expression:\"open.clips\"}},[_c('clips-list',{on:{\"clipsRetrieved\":_vm.clipsRetrieved}})],1)],1):_vm._e(),(_vm.devicesEnabled)?_c('div',{staticClass:\"card flex-shrink-1\",class:_vm.open.cameras ? 'd-flex' : '',staticStyle:{\"min-height\":\"45px\"},attrs:{\"data-cy\":\"cameras-section\"}},[_c('div',{staticClass:\"card-header card-header-clickable row d-block\",attrs:{\"id\":\"headingOne\"},on:{\"click\":function($event){_vm.open.cameras = !_vm.open.cameras}}},[_c('h5',{staticClass:\"mb-0 col-8 d-inline-block\"},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:_vm.open.cameras ? '' : 'closed'}),_vm._v(\" Cameras (\"+_vm._s(_vm.cameras.length + (_vm.searchedCameras == null ? 0 : _vm.searchedCameras.length))+\") \")])]),_c('b-collapse',{staticClass:\"overflow-y-auto h-100\",attrs:{\"id\":\"collapse-cameras\"},model:{value:(_vm.open.cameras),callback:function ($$v) {_vm.$set(_vm.open, \"cameras\", $$v)},expression:\"open.cameras\"}},[_c('div',{staticClass:\"card-body\",staticStyle:{\"padding\":\"0\"}},[_c('div',{staticClass:\"form-group\",staticStyle:{\"margin\":\"4px 10px\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.cameraSearchQuery),expression:\"cameraSearchQuery\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Search for cameras\"},domProps:{\"value\":(_vm.cameraSearchQuery)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.cameraSearchQuery=$event.target.value}}})]),(_vm.cameraSearchQuery && _vm.cameraSearchQuery.length > 0)?_c('div',{staticClass:\"list-group\"},[_c('div',{staticClass:\"list-group-item list-group-item-action\",on:{\"click\":function($event){_vm.open.searchCameras = !_vm.open.searchCameras}}},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:_vm.open.searchCameras ? '' : 'closed'}),_c('b',{staticStyle:{\"word-break\":\"all\"}},[_vm._v(\"Search Results for \"+_vm._s(_vm.cameraSearchQuery)+\" (\"+_vm._s(this.searchedCameras.length)+\"/\"+_vm._s(this.searchedCameraCount)+\")\")])]),_c('b-collapse',{attrs:{\"visible\":\"\",\"id\":\"search-collapse\"},model:{value:(_vm.open.searchCameras),callback:function ($$v) {_vm.$set(_vm.open, \"searchCameras\", $$v)},expression:\"open.searchCameras\"}},[(_vm.searchedCameras.length == 0)?_c('div',{staticClass:\"list-group-item\"},[_vm._v(\"No cameras found\")]):_vm._e(),_vm._l((_vm.searchedCameras),function(camera){return _c('div',{key:camera.objectID},[(_vm.isCameraEnabled(camera.objectID))?_c('div',[_c('a',{staticClass:\"list-group-item list-group-item-action d-flex\",class:_vm.isSelectedCamera(camera),attrs:{\"draggable\":\"true\"},on:{\"!dragstart\":function($event){return _vm.cameraSelect(camera)},\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.cameraSelect(camera)}}},[_c('div',{staticClass:\"flex-grow-1\"},[_c('div',[(_vm.isSystemViewEnabled)?_c('system-view-camera-icon',{attrs:{\"deviceId\":camera.objectID,\"data-cy\":\"searchCamerasListContainer\"}}):_vm._e(),_vm._v(\" \"+_vm._s(camera.title)+\" \"),(camera.index !== null && !isNaN(camera.index))?_c('table',{key:_vm.layoutIndex,staticClass:\"cameraIndicator\",on:{\":mouseover\":function($event){return _vm.highlightCell(camera.index)},\":mouseout\":function($event){return _vm.unhighlightCell()}}},_vm._l((_vm.layoutVertical),function(i){return _c('tr',{key:i},_vm._l((_vm.layoutHorizontal),function(j){return _c('td',{key:j,class:_vm.cameraIconColor(camera, i, j)})}),0)}),0):_vm._e()],1),_c('div',[_c('small',[_vm._v(_vm._s(camera.areaTitle))])])]),(camera.distance)?_c('div',{staticClass:\"flex-shrink-0\"},[_vm._v(_vm._s(_vm._f(\"renderDistance\")(camera.distance,camera.imperial)))]):_vm._e()])]):_c('div',{staticClass:\"list-group-item d-flex disabled\",attrs:{\"disabled\":\"\"}},[_c('span',{attrs:{\"title\":_vm.applianceOfflineNotification(camera.objectID)}},[_c('span',{staticClass:\"fas fa-wifi-slash\"}),_c('span',[_vm._v(_vm._s(camera.title))])])])])}),(this.showSearchLoadMoreButton)?_c('div',{staticClass:\"show-more-container\"},[_c('b-button',{staticClass:\"secondary\",on:{\"click\":function($event){return _vm.showMoreSearchCameras()}}},[_vm._v(\"Show more\")])],1):_vm._e()],2)],1):_vm._e(),(_vm.showMatrixCameras)?_c('matrix-content',{attrs:{\"open\":_vm.open.matrixContent,\"searchText\":_vm.cameraSearchQuery},on:{\"on-opened\":function($event){_vm.open.matrixContent = !_vm.open.matrixContent}}}):_vm._e(),(_vm.nearbyCamerasEnabled)?_c('div',{staticClass:\"list-group\",attrs:{\"data-cy\":\"nearbyCamerasListContainer\"}},[_c('div',{staticClass:\"list-group-item list-group-item-action\",on:{\"click\":function($event){_vm.open.nearbyCameras = !_vm.open.nearbyCameras}}},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:_vm.open.nearbyCameras ? '' : 'closed'}),_c('b',[_vm._v(\"Nearby (\"+_vm._s(_vm.filteredNearbyCameras.length)+\")\")]),(_vm.fillMatrixNearby)?_c('b-button',{staticClass:\"float-right\",attrs:{\"data-cy\":\"populate-matrix-nearby-camera-button\",\"variant\":\"primary\",\"size\":\"sm\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.fillEmptyCellsWithNearbyCameras()}}},[_vm._v(\" Populate Matrix \")]):_vm._e()],1),_c('b-collapse',{attrs:{\"visible\":\"\",\"id\":\"nearby-collapse\"},model:{value:(_vm.open.nearbyCameras),callback:function ($$v) {_vm.$set(_vm.open, \"nearbyCameras\", $$v)},expression:\"open.nearbyCameras\"}},[(_vm.filteredNearbyCameras.length == 0)?_c('div',{staticClass:\"list-group-item\"},[_vm._v(_vm._s(_vm.cameraSearchQuery == \"\" ? \"No nearby cameras\" : \"No matched cameras nearby\"))]):_vm._e(),_vm._l((_vm.filteredNearbyCameras),function(camera){return _c('div',{key:camera.objectId},[(_vm.isCameraEnabled(camera.objectId))?_c('div',[_c('a',{staticClass:\"list-group-item list-group-item-action d-flex\",class:_vm.isSelectedCamera(camera),attrs:{\"draggable\":\"true\"},on:{\"!dragstart\":function($event){return _vm.cameraSelect(camera)},\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.cameraSelect(camera)}}},[_c('div',{staticClass:\"flex-grow-1\"},[_c('div',[(_vm.isSystemViewEnabled)?_c('system-view-camera-icon',{attrs:{\"deviceId\":camera.objectId,\"data-cy\":\"nearbyCamerasListContainer\"}}):_vm._e(),_vm._v(\" \"+_vm._s(camera.title)+\" \"),(camera.index !== null && !isNaN(camera.index))?_c('table',{key:_vm.layoutIndex,staticClass:\"cameraIndicator\",on:{\":mouseover\":function($event){return _vm.highlightCell(camera.index)},\":mouseout\":function($event){return _vm.unhighlightCell()}}},_vm._l((_vm.layoutVertical),function(i){return _c('tr',{key:i},_vm._l((_vm.layoutHorizontal),function(j){return _c('td',{key:j,class:_vm.cameraIconColor(camera, i, j)})}),0)}),0):_vm._e()],1)]),_c('div',{staticClass:\"flex-shrink-0\"},[_vm._v(_vm._s(_vm._f(\"renderDistance\")(camera.distance,camera.imperial)))])])]):_c('div',{staticClass:\"list-group-item d-flex disabled\",attrs:{\"disabled\":\"\"}},[_c('span',{attrs:{\"title\":_vm.applianceOfflineNotification(camera.objectId)}},[_c('span',{staticClass:\"fas fa-wifi-slash\"}),_c('span',[_vm._v(_vm._s(camera.title))])])])])})],2)],1):_vm._e(),_c('area-cameras',{attrs:{\"filter\":_vm.cameraSearchQuery,\"tourEnd\":_vm.tourEnded},on:{\"expandSearch\":_vm.showMoreSearchCameras,\"completeCameraReset\":_vm.completeCameraReset}})],1)])],1):_vm._e(),(_vm.isAudioEnabled)?_c('div',{staticClass:\"card matrix-sidebar-item flex-shrink-0\",attrs:{\"data-cy\":\"audio-container\"}},[_c('div',{staticClass:\"card-header card-header-clickable\",on:{\"click\":function($event){_vm.open.audio = !_vm.open.audio}}},[_c('h5',{staticClass:\"mb-0\"},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:_vm.open.audio ? '' : 'closed'}),_vm._v(\" Audio (\"+_vm._s(_vm.audioDevices ? _vm.audioDevices.length : 0)+\") \")])]),_c('b-collapse',{staticClass:\"matrix-sidebar-content\",model:{value:(_vm.open.audio),callback:function ($$v) {_vm.$set(_vm.open, \"audio\", $$v)},expression:\"open.audio\"}},[_c('audio-control')],1)],1):_vm._e(),(_vm.showOutputs)?_c('div',{staticClass:\"card flex-shrink-1\",class:_vm.open.outputs ? 'd-flex' : '',staticStyle:{\"min-height\":\"45px\"},attrs:{\"id\":\"device-controls-container\"}},[_c('div',{staticClass:\"card-header card-header-clickable\",attrs:{\"id\":\"headingOne\"},on:{\"click\":function($event){_vm.open.outputs = !_vm.open.outputs}}},[_c('h5',{staticClass:\"mb-0\"},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:_vm.open.outputs ? '' : 'closed'}),_vm._v(\" Controls (\"+_vm._s(_vm.outputs.length + (_vm.searchedOutputs == null ? 0 : _vm.searchedOutputs.length))+\") \")])]),_c('b-collapse',{staticClass:\"overflow-y-auto h-100\",attrs:{\"id\":\"collapse-controls\"},model:{value:(_vm.open.outputs),callback:function ($$v) {_vm.$set(_vm.open, \"outputs\", $$v)},expression:\"open.outputs\"}},[_c('div',{staticClass:\"card-body\",staticStyle:{\"padding\":\"0\"}},[_c('div',{staticClass:\"form-group\",staticStyle:{\"margin\":\"4px 10px\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.outputSearchQuery),expression:\"outputSearchQuery\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Search for controls\"},domProps:{\"value\":(_vm.outputSearchQuery)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.outputSearchQuery=$event.target.value}}})]),(_vm.outputSearchQuery && _vm.outputSearchQuery.length > 0)?_c('div',{staticClass:\"list-group\",staticStyle:{\"margin-bottom\":\"10px\"}},[_c('div',{staticClass:\"list-group-item \"},[_c('b',{staticStyle:{\"word-break\":\"all\"}},[_vm._v(\"Search Results for \"+_vm._s(_vm.outputSearchQuery))])]),(_vm.searchedOutputs.length == 0)?_c('div',{staticClass:\"list-group-item\"},[_vm._v(\"No outputs found\")]):_vm._e(),_vm._l((_vm.searchedOutputs),function(output){return _c('a',{key:output.objectID,staticClass:\"list-group-item\",class:{ 'list-group-item-action': !output.controlRequest },on:{\"click\":function($event){return _vm.pulseOutput(output)}}},[_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1\"},[_c('div',[_vm._v(_vm._s(output.title))]),_c('div',[_c('small',[_vm._v(_vm._s(output.areaTitle))])])]),(output.distance)?_c('div',{staticClass:\"flex-shrink-0\"},[_vm._v(_vm._s(_vm._f(\"renderDistance\")(output.distance,output.imperial)))]):_vm._e()]),(output.controlRequest)?_c('div',[_c('div',{staticClass:\"form-group\",staticStyle:{\"margin-top\":\"15px\"}},[_c('label',[_vm._v(\"Reason:\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(output.controlReason),expression:\"output.controlReason\"}],staticClass:\"custom-textarea\",staticStyle:{\"height\":\"150px\"},attrs:{\"placeholder\":\"Reason for action\",\"max\":\"5000\"},domProps:{\"value\":(output.controlReason)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(output, \"controlReason\", $event.target.value)}}})]),(output.controlError)?_c('div',{staticClass:\"alert alert-danger\"},[_vm._v(_vm._s(output.controlError))]):_vm._e(),_c('a',{staticClass:\"btn btn-secondary\",class:{ disabled: output.controlReason.length == 0 },attrs:{\"disabled\":output.controlReason.length == 0},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.doPulseOutput(output)}}},[(!output.sendingCommand)?_c('span',[_vm._v(_vm._s(output.isOutput ? 'Pulse' : 'Momentary Unlock'))]):_vm._e(),(output.sendingCommand)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]),_c('a',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.cancelPulse(output)}}},[_vm._v(\"Cancel\")]),_c('div',[(output.canOnOff)?_c('a',{staticClass:\"btn btn-secondary\",class:{ disabled: output.controlReason.length == 0 },attrs:{\"disabled\":output.controlReason.length == 0},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setOutput(output, true)}}},[(!output.sendingCommand)?_c('span',[_vm._v(\"On\")]):_vm._e(),(output.sendingCommand)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]):_vm._e(),(output.canOnOff)?_c('a',{staticClass:\"btn btn-secondary\",class:{ disabled: output.controlReason.length == 0 },attrs:{\"disabled\":output.controlReason.length == 0},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setOutput(output, false)}}},[(!output.sendingCommand)?_c('span',[_vm._v(\"Off\")]):_vm._e(),(output.sendingCommand)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]):_vm._e()])]):_vm._e()])})],2):_vm._e(),(_vm.outputs && _vm.outputs.length > 0)?_c('control-devices-list',{attrs:{\"outputs\":_vm.outputs,\"title\":'Nearby'},on:{\"doPulseOutput\":_vm.doPulseOutput,\"setOutput\":_vm.setOutput}}):_vm._e(),(_vm.areaOutputs && _vm.areaOutputs.length > 0)?_c('control-devices-list',{attrs:{\"outputs\":_vm.areaOutputs,\"title\":_vm.getEventDetails.siteTitle},on:{\"doPulseOutput\":_vm.doPulseOutput,\"setOutput\":_vm.setOutput}}):_vm._e()],1)])],1):_vm._e(),(_vm.showAreas)?_c('div',{staticClass:\"card flex-shrink-1\",class:_vm.open.areas ? 'd-flex' : '',staticStyle:{\"min-height\":\"45px\"},attrs:{\"id\":\"areaTreeContainer\"}},[_c('div',{staticClass:\"card-header card-header-clickable\",on:{\"click\":_vm.toggleAreasSection}},[_c('h5',{staticClass:\"mb-0\"},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:_vm.open.areas ? '' : 'closed'}),_vm._v(\" Areas \")])]),_c('b-collapse',{staticClass:\"overflow-y-auto h-100\",attrs:{\"id\":\"collapse-areas\"},model:{value:(_vm.open.areas),callback:function ($$v) {_vm.$set(_vm.open, \"areas\", $$v)},expression:\"open.areas\"}},[(_vm.isLoadingAreas)?_c('div',{staticClass:\"p-2 pl-4\"},[_c('i',{staticClass:\"fas fa-spinner fa-spin\"}),_c('span',{staticClass:\"pl-1\"},[_vm._v(\"Loading...\")])]):_c('div',{staticClass:\"card-body\",staticStyle:{\"padding\":\"0\"}},[_c('div',{staticStyle:{\"margin\":\"4px 10px\"}},[_c('area-tree-select',{attrs:{\"appendToBody\":true},on:{\"input\":_vm.areaSelected}}),(_vm.isLoadingAreaCameras)?_c('div',[_c('i',{staticClass:\"fas fa-spinner fa-spin\"}),_c('span',{staticStyle:{\"margin-left\":\"10px\"}},[_vm._v(\"Loading cameras ...\")])]):_c('div',[(_vm.selectedArea)?_c('div',[_c('b',[_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.selectedArea.cameras && _vm.selectedArea.cameras.length > 0 ? (\"Cameras (\" + (_vm.selectedArea.cameras.length) + \"/\" + (this.areaCameraCount) + \")\") : 'No cameras for ' + _vm.selectedArea.label,40))+\" \")]),(_vm.selectedArea.cameras)?_c('div',{staticStyle:{\"margin-left\":\"15px\"}},[_vm._l((_vm.selectedArea.cameras),function(camera){return _c('div',{key:camera.deviceID},[(_vm.isCameraEnabled(camera.deviceID))?_c('div',[_c('div',{staticClass:\"list-group-item-action\",on:{\"click\":function($event){return _vm.showAreaCamera(camera, true)}}},[_vm._v(\" \"+_vm._s(camera.title)+\" \")])]):_c('div',{staticClass:\"list-group-item-action-disabled\",attrs:{\"disabled\":\"\"}},[_c('span',{attrs:{\"title\":_vm.applianceOfflineNotification(camera.deviceID)}},[_c('span',{staticClass:\"fas fa-wifi-slash\"}),_c('span',{staticClass:\"disabled\"},[_vm._v(_vm._s(camera.title))])])])])}),(this.showAreaLoadMoreButton)?_c('div',{staticClass:\"show-more-container\",attrs:{\"data-cy\":\"load-more-button\"}},[_c('b-button',{staticClass:\"secondary\",on:{\"click\":function($event){return _vm.showMoreAreaCameras()}}},[_vm._v(\"Show more\")])],1):_vm._e()],2):_vm._e()])]):_vm._e()])],1)])])],1):_vm._e()]),_c('b-modal',{attrs:{\"id\":\"modal-1\",\"title\":\"Update Media Matrix\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('b-button',{staticClass:\"btn btn-primary ksConfirm\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.loadNearbyCameras()}}},[_vm._v(\"Update media matrix\")]),_c('b-button',{staticClass:\"btn btn-warning\",attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){_vm.populateNearbyCamerasModal = false}}},[_vm._v(\"Cancel\")])]},proxy:true}]),model:{value:(_vm.populateNearbyCamerasModal),callback:function ($$v) {_vm.populateNearbyCamerasModal=$$v},expression:\"populateNearbyCamerasModal\"}},[_c('p',[_vm._v(\"Would you like to update the media matrix with the nearby cameras or keep the current cameras\")]),_c('small',[_vm._v(\"Note: if you choose cancel and resize or change the spotlight, this will be asked again.\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-body\",staticStyle:{\"padding\":\"0\"}},[_c('div',{staticClass:\"list-group\"},[_vm._l((_vm.filteredClips),function(clip,i){return _c('a',{key:i,staticClass:\"list-group-item list-group-item-action\",class:_vm.getClipListItemStyle(clip),on:{\"!dragstart\":function($event){return _vm.clipSelect(clip)},\"click\":function($event){return _vm.clipSelect(clip)}}},[_c('div',{staticClass:\"flex-grow-1\"},[_c('div',{staticClass:\"clip-row\",on:{\"click\":function($event){$event.preventDefault();return _vm.clipSelect(clip)}}},[_c('div',{staticClass:\"clip-details\"},[(_vm.isClipError(clip))?_c('i',{staticClass:\"fas fa-exclamation-triangle\",staticStyle:{\"padding-right\":\"2px\"}}):_vm._e(),_c('div',{staticClass:\"headline\"},[_c('div',[_c('div',{attrs:{\"id\":'clip-item-' + i}},[_vm._v(_vm._s(_vm._f(\"truncateString\")(clip.DeviceTitle,40)))]),_c('b-tooltip',{attrs:{\"target\":'clip-item-' + i,\"triggers\":\"hover\"}},[_vm._v(_vm._s(clip.DeviceTitle))])],1),_c('small',{staticClass:\"clip-subtitle\"},[_vm._v(_vm._s(clip.Subtitle))])]),_c('small',[_c('strong',[_vm._v(\"My Time:\")]),_vm._v(\" \"+_vm._s(_vm.clipLocalDate(_vm.convertUtcDateTimeToLocalDateTimeString(clip.CreatedUTC))))]),_c('small',[_c('strong',[_vm._v(\"Area Time:\")]),_vm._v(\" \"+_vm._s(clip.CreatedGroupTimezone))])]),(clip.index !== null && !isNaN(clip.index))?_c('table',{key:_vm.layoutIndex,staticClass:\"cameraIndicator\",on:{\"mouseover\":function($event){return _vm.highlightCell(clip.index)},\"mouseout\":function($event){return _vm.unhighlightCell()}}},_vm._l((_vm.layoutVertical),function(i){return _c('tr',{key:i},_vm._l((_vm.layoutHorizontal),function(j){return _c('td',{key:j,class:_vm.cameraIconColor(clip, i, j)})}),0)}),0):_vm._e(),((clip.MediaType && clip.MediaType != 'Unknown'))?_c('div',{staticClass:\"clipMediaType\"},[_vm._v(\" \"+_vm._s(clip.MediaType)+\" \")]):_vm._e()])])])}),(_vm.noClipsAvailable)?_c('a',{staticClass:\"list-group-item\",attrs:{\"data-cy\":\"no-clips-available\"}},[_vm._v(\" No clips available. \")]):_vm._e(),(_vm.clipsFailed)?_c('a',{staticClass:\"list-group-item bg-danger\",attrs:{\"data-cy\":\"clips-error\"}},[_vm._v(\" Error retrieving clips - \"+_vm._s(_vm.clipsFailedStatus)+\" \")]):_vm._e()],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { ClipType } from \"@/store/site-monitor-cameras/types\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport { FeaturesList} from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\nimport { stringMixin, formatDateMixin } from '@/mixins';\r\nimport moment from \"moment\";\r\nimport { truncateString } from '@/filters';\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst SMCameras = namespace(\"siteMonitorCameras\");\r\nconst Session = namespace(\"sessions\");\r\nconst { ellipseAfterX } = stringMixin.methods;\r\nconst { convertUtcDateTimeToLocalDateTimeString } = formatDateMixin.methods;\r\n\r\n@Component({\r\n\tfilters: { truncateString },\r\n\tcomponents: {}\r\n})\r\nexport default class ClipsList extends Vue {\r\n\t@SiteMonitor.Getter(\"getEventDetails\") getEventDetails: EventDetails;\r\n\t@SiteMonitor.Getter(\"getAuditService\") auditService: any;\r\n\t@SiteMonitor.Getter(\"getSelectedEventRecord\") selectedEventRecord: any;\r\n\t@SiteMonitor.Getter(\"getIsController\") isController: any;\r\n\r\n\t@SMCameras.Getter(\"getLayoutIndex\") layoutIndex!: number;\r\n\t@SMCameras.Getter(\"getLayouts\") layouts!: number[][];\r\n\r\n\t@SMCameras.Getter(\"getAllMatrixContents\") getAllMatrixContents: any;\r\n\t@SMCameras.Getter(\"getMediaMatrixIsNew\") mediaMatrixIsNew: any;\r\n\r\n\t@SMCameras.Getter(\"getDeviceControllerClips\") clips!: ClipType[];\r\n\r\n\t@SMCameras.Mutation setDeviceControllerClips: any;\r\n\r\n\t@SMCameras.Mutation setAwaitingClip: any;\r\n\t@SMCameras.Mutation highlightCell: any;\r\n\t@SMCameras.Mutation unhighlightCell: any;\r\n\r\n\t@SMCameras.Action updateMediaMatrixContents: any;\r\n\r\n\t@Session.Getter getSession: any;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\tprivate _getClipsTimeout: NodeJS.Timeout | null;\r\n\tprivate _updateMediaListTimeout: NodeJS.Timeout | null;\r\n\r\n\tprivate clipsFailed: boolean = false;\r\n\tprivate clipsFailedStatus: string = \"\";\r\n\tprivate noClipsAvailable: boolean = false;\r\n\tprivate previousClips: string[] = [];\r\n\r\n\tprivate filter: string = \"\";\r\n\r\n\topen: boolean = true;\r\n\r\n\tpublic get eventId() {\r\n\t\treturn this.getEventDetails ? this.getEventDetails.eventID : 0;\r\n\t}\r\n\r\n\t@Watch(\"eventId\")\r\n\tpublic onEventChanged(eventId: number, oldEventId: number) {\r\n\t\t// stop loop for getting clips list\r\n\t\tthis.clearDownUpdateMediaListAndGetClipsTimeouts();\r\n\r\n\t\t// reset media information\r\n\t\tthis.mediaEventID = 0;\r\n\t\tthis.currentEventRecordID = 0;\r\n\t}\r\n\r\n\t@Watch(\"selectedEventRecord\")\r\n\tpublic onSelectedEventRecordChanged(value: any, oldValue: any) {\r\n\t\tthis.clipsFailed = false;\r\n\t\tthis.clipsFailedStatus = \"\";\r\n\t\tthis.noClipsAvailable = false;\r\n\t\tthis.previousClips = [];\r\n\r\n\t\tthis.clearDownUpdateMediaListAndGetClipsTimeouts();\r\n\r\n\t\tif (value) {\r\n\t\t\t// set media id to -1 to get clips from other event records\r\n\t\t\tthis.mediaEventID = -1;\r\n\t\t\tthis.getMediaList(value.eventRecordID, value.attachedCameras);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"mediaMatrixIsNew\")\r\n\tpublic onMediaMatrixIsNewChanged(value: any, oldValue: any) {\r\n\t\tif (value && !oldValue) {\r\n\t\t\tif (this.selectedEventRecord) {\r\n\t\t\t\tthis.getMediaList(this.selectedEventRecord.eventRecordID, this.selectedEventRecord.attachedCameras);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmounted() {\r\n\t\tthis.gettingClips = false;\r\n\t\tif (this.selectedEventRecord != null) {\r\n\t\t\tthis.getMediaList(this.selectedEventRecord.eventRecordID, this.selectedEventRecord.attachedCameras);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic beforeDestroy() {\r\n\t\tthis.clearDownUpdateMediaListAndGetClipsTimeouts();\r\n\t}\r\n\r\n\tpublic get layoutHorizontal() {\r\n\t\treturn this.layouts[this.layoutIndex][0];\r\n\t}\r\n\r\n\tpublic get layoutVertical() {\r\n\t\treturn this.layouts[this.layoutIndex][1];\r\n\t}\r\n\r\n\tpublic get filteredClips() {\r\n\t\tif (this.filter == null || this.filter == \"\") {\r\n\t\t\treturn this.clips;\r\n\t\t}\r\n\r\n\t\tconst filter = this.filter.toLowerCase();\r\n\t\treturn this.clips.filter((c: any) => c.DeviceTitle.toLowerCase().includes(filter));\r\n\t}\r\n\r\n\t// Gets the class for the clip list item\r\n\tpublic getClipListItemStyle(clip: any) {\r\n\t\tif (clip.FileSizeError) return \"redClip\";\r\n\r\n\t\tif (clip.Error != null) return \"orangeClip\";\r\n\r\n\t\tif (this.isSelectedClip(clip)) return \"selectedCamera\";\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t// Returns true if there is any errors in the clip or if it's below the minimum filesize\r\n\tpublic isClipError(clip: any) {\r\n\t\tif (clip.Error != null || clip.FileSizeError) return true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic isSelectedClip(clip: any) {\r\n\t\treturn !!clip && clip.index !== null && !isNaN(clip.index);\r\n\t}\r\n\r\n\tprivate get isAutoPopulateClipsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"AutoPopulate\"]);\r\n\t}\r\n\r\n\tprivate get isPerformAutomations(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]);\r\n\t}\r\n\r\n\tpublic cameraIconColor(camera: any, i: number, j: number) {\r\n\t\tif ((i - 1) * this.layoutHorizontal + j === camera.index) return \"redCameraIndicator\";\r\n\r\n\t\tif (camera.FileSizeError) return \"redClip\";\r\n\r\n\t\tif (camera.Error != null) return \"orangeClip\";\r\n\r\n\t\treturn \"greyCameraIndicator\";\r\n\t}\r\n\r\n\tpublic clipSelect(clip: any) {\r\n\t\tif (this.isController) {\r\n\t\t\tthis.setAwaitingClip({\r\n\t\t\t\teventRecordID: clip.EventRecordId,\r\n\t\t\t\tclip: clip\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate mediaEventID: number = 0;\r\n\tprivate currentEventRecordID: number = 0;\r\n\tpublic getMediaList(eventRecordID: number, cameras: any[], skipRecordChecks: boolean = false) {\r\n\t\tif (this.eventId == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!skipRecordChecks) {\r\n\t\t\tif (eventRecordID == this.currentEventRecordID) {\r\n\t\t\t\tconsole.log(\r\n\t\t\t\t\t\"Already fetching for record \" + eventRecordID + \" (Skip checks: \" + skipRecordChecks + \")\"\r\n\t\t\t\t);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconsole.log(\"Set event record to \" + eventRecordID + \" (EventID: \" + this.eventId + \")\");\r\n\t\t\tthis.currentEventRecordID = eventRecordID;\r\n\t\t}\r\n\r\n\t\tthis.clearDownUpdateMediaListAndGetClipsTimeouts();\r\n\t\tlet auth = this.getSession(SessionResource.AuditServiceSession);\r\n\t\tif (auth) {\r\n\t\t\tthis.mediaEventID = this.eventId;\r\n\t\t\tthis.getClips(eventRecordID, cameras, true);\r\n\t\t} else {\r\n\t\t\tconsole.log(\"Auth not available\");\r\n\t\t\tthis.currentEventRecordID = 0;\r\n\t\t\t//Auth not ready yet - wait.\r\n\t\t\tthis._updateMediaListTimeout = setTimeout(() => {\r\n\t\t\t\tconsole.log(\"Retrying with auth ... \");\r\n\t\t\t\tthis.getMediaList(eventRecordID, cameras);\r\n\t\t\t}, 400);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate gettingClips: boolean = false;\r\n\tpublic getClips(eventRecordID: number, cameras: any[], addUpdatedClips: boolean) {\r\n\t\tvar auth = this.getSession(SessionResource.DeviceServiceSession);\r\n\r\n\t\tif (!this.auditService) {\r\n\t\t\tconsole.log(\"No audit service available.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.selectedEventRecord == null || eventRecordID != this.selectedEventRecord.eventRecordID) {\r\n\t\t\tif (this.selectedEventRecord == null) console.log(\"No selected event record.\");\r\n\t\t\telse\r\n\t\t\t\tconsole.log(\r\n\t\t\t\t\t\"Incorrect record request - Selected \" +\r\n\t\t\t\t\t\tthis.selectedEventRecord.eventRecordID +\r\n\t\t\t\t\t\t\", but requested \" +\r\n\t\t\t\t\t\teventRecordID\r\n\t\t\t\t);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// if we're already getting clips\r\n\t\tif (this.gettingClips) {\r\n\t\t\tconsole.log(\"Already fetching clips.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mark that we're getting clips; prevent duplicate operations.\r\n\t\tthis.gettingClips = true;\r\n\r\n\t\t// do request to audit service to get media list.\r\n\t\tthis.auditService.mediaList(auth, eventRecordID, this.isAutoPopulateClipsEnabled, !this.isPerformAutomations).then(\r\n\t\t\t(response: any) => {\r\n\t\t\t\tlet checkForClipsInSeconds = 5;\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// get the raw clips\r\n\t\t\t\t\tvar rawClips = response.data;\r\n\r\n\t\t\t\t\tif (rawClips) {\r\n\t\t\t\t\t\tthis.clipsFailed = false;\r\n\t\t\t\t\t\tthis.clipsFailedStatus = \"\";\r\n\t\t\t\t\t\tthis.noClipsAvailable = rawClips.length == 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\trawClips = [];\r\n\t\t\t\t\t\tthis.noClipsAvailable = true;\r\n\t\t\t\t\t\tthis.clipsFailed = false;\r\n\t\t\t\t\t\tthis.clipsFailedStatus = \"\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar filteredClips = [];\r\n\t\t\t\t\t// iterate over the raw clips to filter out anything that doesnt have the info we need.\r\n\t\t\t\t\tfor (var i = 0; i < rawClips.length; i++) {\r\n\t\t\t\t\t\tvar clip = rawClips[i];\r\n\t\t\t\t\t\t// filter out any clips that dont have deviceid OR Device Title OR StartTime OR MediaType\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\tclip.MediaType != \"RAW DATA\" &&\r\n\t\t\t\t\t\t\tclip.FileIdentifier &&\r\n\t\t\t\t\t\t\t(clip.DeviceID || clip.DeviceTitle || clip.StartTime)\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t// add clip to filtered list\r\n\t\t\t\t\t\t\tfilteredClips.push(clip);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.noClipsAvailable = filteredClips.length == 0;\r\n\r\n\t\t\t\t\t// Create the uniqueFileIdentifiers and sort by EventRecordId\r\n\t\t\t\t\tlet clips: ClipType[] = filteredClips.map(clip =>{ return {...clip, UniqueFileIdentifier: clip.FileIdentifier + clip.EventRecordId}})\r\n\t\t\t\t\t\t.sort((firstRecord, secondRecord) => (firstRecord.EventRecordId > secondRecord.EventRecordId) ? 1 : (firstRecord.EventRecordId < secondRecord.EventRecordId) ? -1 : 0);\r\n\r\n\r\n\t\t\t\t\t// Configure the DateTime and the clip count\r\n\t\t\t\t\tclips.forEach((clip) => {\r\n\t\t\t\t\t\tlet clipsPerRecord = clips.filter(c => c.EventRecordId == clip.EventRecordId);\r\n\t\t\t\t\t\tclip.Subtitle = `(${clipsPerRecord.map(c => c.UniqueFileIdentifier).indexOf(clip.UniqueFileIdentifier) + 1}/${clipsPerRecord.length})`;\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// setup matrix\r\n\t\t\t\t\tthis.transformDeviceControllerClips(clips);\r\n\r\n\t\t\t\t\t// filter out any clips already on the matrix\r\n\t\t\t\t\tvar newClips = this.removeAuditClipsAlreadyInMatrix(clips);\r\n\r\n\t\t\t\t\t// populate matrix with any new clips or cameras\r\n\t\t\t\t\tthis.$emit(\"clipsRetrieved\", { eventRecordID, cameras, newClips });\r\n\r\n\t\t\t\t\t// if nothing returned, check again in 2s else check in 5\r\n\t\t\t\t\t// this has changed to account for threaded flv conversion\r\n\t\t\t\t\tif (clips.length == 0) {\r\n\t\t\t\t\t\tcheckForClipsInSeconds = 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.gettingClips = false;\r\n\r\n\t\t\t\tthis.clearDownGetClipsListTimeouts();\r\n\t\t\t\tthis._getClipsTimeout = setTimeout(() => {\r\n\t\t\t\t\tthis.getClips(eventRecordID, cameras, addUpdatedClips);\r\n\t\t\t\t}, checkForClipsInSeconds * 1000);\r\n\t\t\t},\r\n\t\t\t(errorResponse: any) => {\r\n\t\t\t\tlet checkForClipsInSeconds = 5;\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\terrorResponse != null &&\r\n\t\t\t\t\terrorResponse.response &&\r\n\t\t\t\t\terrorResponse.response.status == 500 &&\r\n\t\t\t\t\terrorResponse.response.data.toLowerCase().indexOf(\"system.io.directorynotfoundexception\") > -1\r\n\t\t\t\t) {\r\n\t\t\t\t\tthis.noClipsAvailable = true;\r\n\t\t\t\t\tthis.clipsFailed = false;\r\n\t\t\t\t\tthis.clipsFailedStatus = \"\";\r\n\r\n\t\t\t\t\tcheckForClipsInSeconds = 2; // If the call succeeded, but got an error with no clips, then re-request sooner\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.noClipsAvailable = false;\r\n\t\t\t\t\tthis.clipsFailed = true;\r\n\r\n\t\t\t\t\tif (errorResponse && errorResponse.response && errorResponse.response.statusText) {\r\n\t\t\t\t\t\tthis.clipsFailedStatus = errorResponse.response.statusText;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar auditProtocol = this.auditService.protocol;\r\n\t\t\t\t\t\tvar currentProtocol = location.protocol;\r\n\r\n\t\t\t\t\t\tif (currentProtocol.toLowerCase() == \"https:\" && auditProtocol.toLowerCase() == \"http:\") {\r\n\t\t\t\t\t\t\tthis.clipsFailedStatus = \"Unable to access clips due to security restrictions\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.clipsFailedStatus = \"Failed to retrieve clips\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// on error\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// blank down matrix\r\n\t\t\t\t\tthis.transformDeviceControllerClips([]);\r\n\t\t\t\t\tthis.$emit(\"clipsRetrieved\", {\r\n\t\t\t\t\t\teventRecordID,\r\n\t\t\t\t\t\tcameras,\r\n\t\t\t\t\t\tnewClips: []\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tthis.gettingClips = false;\r\n\r\n\t\t\t\t\tthis.clearDownGetClipsListTimeouts();\r\n\t\t\t\t\tthis._getClipsTimeout = setTimeout(() => {\r\n\t\t\t\t\t\tthis.getClips(eventRecordID, cameras, addUpdatedClips);\r\n\t\t\t\t\t}, checkForClipsInSeconds * 1000);\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tconsole.log(err);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tprivate clearDownUpdateMediaListAndGetClipsTimeouts() {\r\n\t\t/// Clear any timeouts set for update media list or get clips\r\n\t\tthis.clearDownUpdateMediaList();\r\n\t\tthis.clearDownGetClipsListTimeouts();\r\n\t}\r\n\r\n\tprivate clearDownUpdateMediaList() {\r\n\t\t/// Clear any timeouts set for update media list\r\n\t\tif (this._updateMediaListTimeout) {\r\n\t\t\tclearTimeout(this._updateMediaListTimeout);\r\n\t\t\tthis._updateMediaListTimeout = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate clearDownGetClipsListTimeouts() {\r\n\t\t/// Clear any timeouts set for get clips\r\n\t\tif (this._getClipsTimeout) {\r\n\t\t\tclearTimeout(this._getClipsTimeout);\r\n\t\t\tthis._getClipsTimeout = null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get matrixClips(): { [clipIdentifier: string]: number } {\r\n\t\tlet matrixClips: { [clipIdentifier: string]: number } = {};\r\n\r\n\t\tlet matrixContents = this.getAllMatrixContents;\r\n\t\t// iterate over current cells in the matrix\r\n\t\tfor (var matrixIndex in matrixContents) {\r\n\t\t\tif (matrixContents[matrixIndex].clip !== undefined) {\r\n\t\t\t\t// get the cells clip\r\n\t\t\t\tlet clip = matrixContents[matrixIndex].clip.clip;\r\n\t\t\t\tif (clip != null) {\r\n\t\t\t\t\t// add index value to the array under the clips unique file identifier\r\n\t\t\t\t\tlet clipIdentifier = clip.UniqueFileIdentifier;\r\n\t\t\t\t\tmatrixClips[clipIdentifier] = parseInt(matrixIndex);\r\n\t\t\t\t\tthis.previousClips.push(clipIdentifier);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn matrixClips;\r\n\t}\r\n\r\n\tprivate removeAuditClipsAlreadyInMatrix(clips: any) {\r\n\t\t/// Looks at the unique file identifiers and removes any that are already in the matrixes content\r\n\t\t/// array of new clips to parse\r\n\r\n\t\tlet clipsToReturn = [];\r\n\t\tif (clips) {\r\n\t\t\tlet matrixClips: { [clipIdentifier: string]: number } = this.matrixClips;\r\n\r\n\t\t\t// iterate over each clip\r\n\t\t\tfor (var i = 0; i < clips.length; i++) {\r\n\t\t\t\tlet item = clips[i];\r\n\t\t\t\tlet clipIdentifier = item.UniqueFileIdentifier;\r\n\r\n\t\t\t\t// if we cant find a cell with this unique file identifier\r\n\t\t\t\tif (matrixClips[clipIdentifier] == undefined && !this.previousClips.includes(clipIdentifier)) {\r\n\t\t\t\t\t// add this clip to the clips to return.\r\n\t\t\t\t\tclipsToReturn.push(item);\r\n\r\n\t\t\t\t\tthis.previousClips.push(clipIdentifier);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn clipsToReturn;\r\n\t}\r\n\r\n\tpublic transformDeviceControllerClips(clips: ClipType[]) {\r\n\t\tif (clips) {\r\n\t\t\tlet matrixClips: { [fileIdentifier: string]: number } = {};\r\n\t\t\tlet matrixContents = this.getAllMatrixContents;\r\n\r\n\t\t\tfor (var matrixIndex in matrixContents) {\r\n\t\t\t\tif (matrixContents[matrixIndex].clip !== undefined) {\r\n\t\t\t\t\tlet clip = matrixContents[matrixIndex].clip.clip;\r\n\t\t\t\t\tlet clipIdentifier = clip.UniqueFileIdentifier;\r\n\t\t\t\t\tif (clip != null) {\r\n\t\t\t\t\t\tmatrixClips[clipIdentifier] = parseInt(matrixIndex);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tclips.forEach((item: any) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tlet clipIdentifier = item.UniqueFileIdentifier;\r\n\t\t\t\t\tif (matrixClips[clipIdentifier]) {\r\n\t\t\t\t\t\tVue.set(item, \"index\", matrixClips[clipIdentifier]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Checks if there is a placeholder view that the video can replace.\r\n\t\t\t\t\t\t// If not, it will be pushed to the end. (This should only happen on first load)\r\n\r\n\t\t\t\t\t\tfor (let i = 0; i < clips.length; i++) {\r\n\t\t\t\t\t\t\tif (matrixClips[\"Placeholder\" + i]) {\r\n\t\t\t\t\t\t\t\tVue.set(item, \"index\", i + 1);\r\n\t\t\t\t\t\t\t\tdelete matrixClips[\"Placeholder\" + i];\r\n\r\n\t\t\t\t\t\t\t\tthis.updateMediaMatrixContents({\r\n\t\t\t\t\t\t\t\t\tindex: i + 1,\r\n\t\t\t\t\t\t\t\t\tcontents: {\r\n\t\t\t\t\t\t\t\t\t\tclip: {\r\n\t\t\t\t\t\t\t\t\t\t\teventRecordID: item.EventRecordId,\r\n\t\t\t\t\t\t\t\t\t\t\tclip: item\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\tisController: true,\r\n\t\t\t\t\t\t\t\t\teventID: this.eventId\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tVue.set(item, \"index\", null);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.setDeviceControllerClips(clips);\r\n\t}\r\n\r\n\tpublic clipTitle(title: string): string {\r\n\t\treturn ellipseAfterX(title, 30);\r\n\t}\r\n\r\n\tpublic clipLocalDate(date: string): string {\r\n\t\tlet momentDate = moment(new Date(date));\r\n\t\treturn momentDate.format(\"DD MMMM YYYY hh:mm:ss A\");\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClipsList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClipsList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ClipsList.vue?vue&type=template&id=7247041a&scoped=true\"\nimport script from \"./ClipsList.vue?vue&type=script&lang=ts\"\nexport * from \"./ClipsList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ClipsList.vue?vue&type=style&index=0&id=7247041a&prod&scoped=true&lang=scss\"\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 \"7247041a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.groupCameras)?_c('div',{staticClass:\"list-group\",attrs:{\"data-cy\":\"group-cameras-container\"}},[_c('div',{staticClass:\"list-group-item list-group-item-action\",on:{\"click\":function($event){_vm.open = !_vm.open}}},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:(_vm.open ? '' : 'closed')}),_c('b',[_vm._v(_vm._s(_vm.siteTitle)+\" (\"+_vm._s(_vm.areaCameras.length)+\"/\"+_vm._s(this.filterActive ? this.searchedGroupCameraCount : this.areaCameraCount)+\")\")])]),_c('b-collapse',{attrs:{\"id\":\"area-collapse\"},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},[(_vm.areaCameras.length == 0)?_c('div',{staticClass:\"list-group-item\"},[_vm._v(\"No cameras in area\")]):_vm._e(),_vm._l((_vm.areaCameras),function(camera){return _c('div',{key:camera.objectID},[(_vm.isCameraEnabled(camera.objectID))?_c('div',[_c('a',{staticClass:\"list-group-item list-group-item-action d-flex\",class:_vm.isSelectedCamera(camera),attrs:{\"draggable\":\"true\"},on:{\"!dragstart\":function($event){return _vm.cameraSelect(camera)},\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.cameraSelect(camera)}}},[_c('div',{staticClass:\"flex-grow-1\"},[(_vm.isSystemViewEnabled)?_c('system-view-camera-icon',{attrs:{\"deviceId\":camera.objectID,\"data-cy\":\"areasCamerasListContainer\"}}):_vm._e(),_vm._v(\" \"+_vm._s(camera.title)+\" \"),(camera.index !== null && !isNaN(camera.index))?_c('table',{key:_vm.layoutIndex,staticClass:\"cameraIndicator\",on:{\":mouseover\":function($event){return _vm.highlightCell(camera.index)},\":mouseout\":function($event){return _vm.unhighlightCell()}}},_vm._l((_vm.layoutVertical),function(i){return _c('tr',{key:i},_vm._l((_vm.layoutHorizontal),function(j){return _c('td',{key:j,class:_vm.cameraIconColor(camera, i, j)})}),0)}),0):_vm._e()],1)])]):_c('div',{staticClass:\"list-group-item d-flex disabled\",attrs:{\"disabled\":\"\"}},[_c('span',{attrs:{\"title\":_vm.applianceOfflineNotification(camera.objectID)}},[_c('span',{staticClass:\"fas fa-wifi-slash\"}),_c('span',[_vm._v(_vm._s(camera.title))])])])])}),(this.showLoadMoreButton)?_c('div',{staticClass:\"show-more-container\",attrs:{\"data-cy\":\"load-more-button\"}},[_c('b-button',{staticClass:\"secondary\",on:{\"click\":function($event){return _vm.showMoreCameras()}}},[_vm._v(\"Show more\")])],1):_vm._e()],2)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('i',{staticClass:\"fa fa-cctv\",class:_vm.iconColor,attrs:{\"title\":_vm.lastError}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { CameraType } from \"@/store/site-monitor-cameras/types\";\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport { namespace } from \"vuex-class\";\n\nconst SiteMonitor = namespace(\"siteMonitor\");\nconst SMCameras = namespace(\"siteMonitorCameras\");\n\n@Component({})\nexport default class SystemViewCameraIcon extends Vue {\n\t@Prop({required: true}) private deviceId: number;\n\n\t@SMCameras.Getter areaCameras: CameraType[];\n\t@SiteMonitor.Getter(\"getSystemViewApplianceNotification\") private systemViewApplianceNotification: (deviceId: number) => string;\n\n\tprivate lastInteractionHealthy: boolean = null;\n\tprivate lastError: string = null;\n\n\tprivate mounted(): void {\n\t\tthis.setCamera();\n\t}\n\n\tprivate setCamera(): void {\n\t\tvar notification = this.systemViewApplianceNotification(this.deviceId)\n\n\t\tif (notification) {\n\t\t\tthis.lastInteractionHealthy = false;\n\t\t\tthis.lastError = notification;\n\t\t\tthis\n\t\t} else {\n\t\t\tvar camera = this.areaCameras.firstOrDefault(c => {\n\t\t\t\treturn c.objectID === this.deviceId\n\t\t\t});\n\n\t\t\tif (camera) {\n\t\t\t\tthis.lastInteractionHealthy = camera.lastInteractionHealthy;\n\t\t\t\tthis.lastError = this.getLastError(camera);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate getLastError(camera: CameraType): string {\n\t\tif (camera.lastInteractionHealthy) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn camera.lastError ? camera.lastError : \"*No information available\";\n\t}\n\n\t@Watch(\"deviceId\")\n\tprivate onDeviceIdChanged(): void {\n\t\tthis.setCamera();\n\t}\n\n\t@Watch(\"areaCameras\")\n\tprivate onAreaCamerasUpdated(): void {\n\t\tthis.setCamera();\n\t}\n\n\tprivate get iconColor(): string {\n\t\tif (this.lastInteractionHealthy !== null) {\n\t\t\treturn this.lastInteractionHealthy ? \"healthy-item\" : \"unhealthy-item\";\n\t\t}\n\t\treturn \"\";\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewCameraIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewCameraIcon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemViewCameraIcon.vue?vue&type=template&id=242241f3&scoped=true\"\nimport script from \"./SystemViewCameraIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemViewCameraIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemViewCameraIcon.vue?vue&type=style&index=0&id=242241f3&prod&lang=css&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 \"242241f3\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport { Getter, namespace } from \"vuex-class\";\nimport { CameraType, SearchedCamera, NearbyCameraType } from \"@/store/site-monitor-cameras/types\";\nimport { EventDetails } from \"@/store/site-monitor/types\";\nimport SystemViewCameraIcon from \"@/components/system-view/SystemViewCameraIcon.vue\";\nimport { FeaturesList } from \"@/store/types\";\nimport { get } from \"lodash\";\n\nconst SiteMonitor = namespace(\"siteMonitor\");\nconst SMCameras = namespace(\"siteMonitorCameras\");\nconst Session = namespace(\"sessions\");\n\n@Component({\n\tcomponents: {\n\t\t\"system-view-camera-icon\": SystemViewCameraIcon\n\t}\n})\nexport default class AreaCameras extends Vue {\n\t@SiteMonitor.Getter(\"getEventDetails\") getEventDetails: EventDetails;\n\t@SiteMonitor.Getter(\"getAuditService\") auditService: any;\n\t@SiteMonitor.Getter(\"getSelectedEventRecord\") selectedEventRecord: any;\n\t@SiteMonitor.Getter(\"getIsController\") isController: any;\n\n\t@SMCameras.Getter(\"getLayoutIndex\") layoutIndex!: number;\n\t@SMCameras.Getter(\"getLayouts\") layouts!: number[][];\n\n\t@SMCameras.Getter(\"getMediaMatrixLastChanged\") mediaMatrixLastChanged: any;\n\n\t@SMCameras.Getter(\"getAllMatrixContents\") getAllMatrixContents: any;\n\t@SMCameras.Getter(\"getMediaMatrixIsNew\") mediaMatrixIsNew: any;\n\n\t@SMCameras.Mutation setAwaitingCamera: any;\n\n\t@SMCameras.Mutation highlightCell: any;\n\t@SMCameras.Mutation unhighlightCell: any;\n\n\t@SMCameras.Action fetchAreaCameras: (params: { groupID: number, pageNumber: number, paginated: boolean }) => Promise;\n\t@SMCameras.Getter(\"getAreaCameras\") groupCameras: CameraType[];\n\t@SMCameras.Mutation setAreaCameras: any;\n\t@SMCameras.Getter searchedCameras: SearchedCamera[];\n\t@SMCameras.State(\"areaCameraCount\") public areaCameraCount: number;\n\t@SMCameras.State(\"searchedGroupCameraCount\") public searchedGroupCameraCount: number;\n\n\t@Session.Getter getSession: any;\n\n\t@SiteMonitor.Getter(\"getIsCameraEnabled\") isCameraEnabled: (deviceId: number) => boolean;\n\t@SiteMonitor.Getter(\"getApplianceOfflineNotification\") private applianceOfflineNotification: (deviceId: number) => string;\n\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\n\t@Prop(String)\n\tpublic filter: string = \"\";\n\n\t@Prop()\n\tpublic tourEnded: boolean = false;\n\n\topen: boolean = false;\n\n\tpublic isLoading: boolean = false;\n\n\tpublic pageNumber: number = 1;\n\tpublic searchPageSize: number = 20;\n\n\tpublic get eventId() {\n\t\treturn this.getEventDetails ? this.getEventDetails.eventID : 0;\n\t}\n\n\tsiteTitle: string = \"\";\n\n\t@Watch(\"tourEnded\")\n\tpublic async resetCameraList(): Promise {\n\t\tif (this.tourEnded) {\n\t\t\tthis.pageNumber = 1;\n\t\t\tthis.getGroupCameras(this.getEventDetails.groupID, this.pageNumber);\n\t\t\tthis.$emit(\"completeCameraReset\");\n\t\t}\n\t}\n\n\t@Watch(\"eventId\")\n\tpublic async onEventChanged(eventId: number, oldEventId: number) {\n\t\tif (this.getEventDetails) {\n\t\t\tthis.siteTitle = this.getEventDetails.siteTitle;\n\t\t\tthis.getGroupCameras(this.getEventDetails.groupID, this.pageNumber);\n\t\t} else {\n\t\t\tthis.siteTitle = \"\";\n\t\t\tthis.setAreaCameras([]);\n\t\t}\n\t}\n\n\tmounted() {\n\t\tif (this.getEventDetails) {\n\t\t\tthis.siteTitle = this.getEventDetails.siteTitle;\n\t\t\tthis.getGroupCameras(this.getEventDetails.groupID, this.pageNumber);\n\t\t}\n\t}\n\n\tbeforeDestroy() {\n\t\tthis.setAreaCameras([]);\n\t}\n\n\tpublic get layoutHorizontal() {\n\t\treturn this.layouts[this.layoutIndex][0];\n\t}\n\n\tpublic get layoutVertical() {\n\t\treturn this.layouts[this.layoutIndex][1];\n\t}\n\n\tisSelectedCamera(camera: CameraType) {\n\t\treturn camera.index !== null && !isNaN(camera.index)\n\t\t\t? \"selectedCamera\"\n\t\t\t: \"\";\n\t}\n\n\tpublic cameraIconColor(camera: any, i: number, j: number) {\n\t\treturn (i - 1) * this.layoutHorizontal + j === camera.index\n\t\t\t? \"redCameraIndicator\"\n\t\t\t: \"greyCameraIndicator\";\n\t}\n\n\tcameraSelect(camera: CameraType | NearbyCameraType) {\n\t\tif (this.isController) {\n\t\t\tthis.setAwaitingCamera(camera);\n\t\t}\n\t}\n\n\t@Watch(\"mediaMatrixLastChanged\")\n\tonMatrixChanged(value: any) {\n\t\tif (this.groupCameras && this.groupCameras.length > 0) {\n\t\t\tthis.setCameraIndexes();\n\t\t}\n\t}\n\n\tsetCameraIndexes() {\n\t\tlet deviceIndexes = {};\n\t\tlet matrixContents = this.getAllMatrixContents;\n\n\t\tfor (var matrixIndex in matrixContents) {\n\t\t\tif (\n\t\t\t\tmatrixContents[matrixIndex] != null &&\n\t\t\t\tmatrixContents[matrixIndex].camera != null\n\t\t\t) {\n\t\t\t\tdeviceIndexes[matrixContents[matrixIndex].camera.objectID] = parseInt(\n\t\t\t\t\tmatrixIndex\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tthis.groupCameras.forEach(camera => {\n\t\t\tVue.set(\n\t\t\t\tcamera,\n\t\t\t\t\"index\",\n\t\t\t\tdeviceIndexes[camera.objectID] != null\n\t\t\t\t\t? deviceIndexes[camera.objectID]\n\t\t\t\t\t: null\n\t\t\t);\n\t\t});\n\t}\n\n\tasync getGroupCameras(groupID: number, pageNumber: number): Promise {\n\t\tawait this.fetchAreaCameras({ groupID, pageNumber, paginated: true });\n\t\tthis.setCameraIndexes();\n\t}\n\n\tget areaCameras(): any[] {\n\t\tif (!this.filterActive) return this.groupCameras;\n\n\t\treturn this.searchedCameras.filter(\n\t\t\tcamera => camera.areaTitle == this.getEventDetails.siteTitle\n\t\t).slice(0, this.searchPageSize);\n\t}\n\n\tpublic showMoreCameras(): void {\n\t\tif (!this.filterActive) {\n\t\t\tthis.pageNumber++;\n\t\t\tthis.getGroupCameras(this.getEventDetails.groupID, this.pageNumber);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.$emit(\"expandSearch\");\n\t\t\tthis.pageNumber = 1;\n\t\t\tthis.searchPageSize += 20;\n\t\t}\n\t}\n\n\tprivate get filterActive(): boolean {\n\t\treturn !!this.filter;\n\t}\n\n\t@Watch(\"filterActive\")\n\tprivate resetPageSize(): void {\n\t\tthis.pageNumber = 1;\n\t\tthis.searchPageSize = 20;\n\t}\n\n\tprivate get showLoadMoreButton(): boolean {\n\t\tif (this.filterActive) {\n\t\t\treturn this.areaCameras.length < this.searchedGroupCameraCount;\n\t\t} else {\n\t\t\treturn this.groupCameras.length < this.areaCameraCount;\n\t\t}\n\t}\n\n\tprivate get isSystemViewEnabled() {\n\t\treturn get(this.featuresList, [\"SystemView\"]);\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaCameras.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaCameras.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaCameras.vue?vue&type=template&id=e848381c&scoped=true\"\nimport script from \"./AreaCameras.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaCameras.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaCameras.vue?vue&type=style&index=0&id=e848381c&prod&scoped=true&lang=scss\"\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 \"e848381c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visibleCameras && _vm.visibleCameras.length > 0)?_c('div',{staticClass:\"list-group\"},[_c('div',{staticClass:\"list-group-item list-group-item-action\",on:{\"click\":function($event){return _vm.onOpened();}}},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:(_vm.open ? '' : 'closed')}),_c('b',[_vm._v(\"Matrix Cameras\")])]),_c('b-collapse',{attrs:{\"visible\":\"\",\"id\":\"matrix-cameras-collapse\"},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},_vm._l((_vm.filteredVisibleCameras),function(camera){return _c('a',{key:camera.index,staticClass:\"list-group-item list-group-item-action d-flex align-items-center selectedCamera\"},[_c('div',{staticClass:\"col-1 p-0 m-0\"},[(camera.index !== null && !isNaN(camera.index))?_c('table',{key:_vm.layoutIndex,staticClass:\"cameraIndicator\",on:{\"mouseover\":function($event){return _vm.highlightCell(camera.index)},\"mouseout\":function($event){return _vm.unhighlightCell()}}},_vm._l((_vm.verticalColumnCount),function(i){return _c('tr',{key:i},_vm._l((_vm.horizontalColumnCount),function(j){return _c('td',{key:j,class:_vm.cameraIconColor(camera, i, j)})}),0)}),0):_vm._e()]),_c('div',{staticClass:\"col-7 p-0 m-0\"},[(_vm.isSystemViewEnabled)?_c('system-view-camera-icon',{attrs:{\"deviceId\":camera.deviceId,\"data-cy\":\"matrixCamerasListContainer\"}}):_vm._e(),_vm._v(\" \"+_vm._s(camera.title)+\" \"),_c('div',[_c('small',[_vm._v(_vm._s(camera.areaTitle))])])],1),_c('div',{staticClass:\"col-4 p-0 m-0 text-right\"},[_vm._v(_vm._s(_vm._f(\"renderDistance\")(camera.distance,camera.imperial)))])])}),0)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export {};\r\n\r\ndeclare global {\r\n\tinterface Array {\r\n\t\tremove(removeItme: T): void;\r\n\t\tremoveWhere(removeFunction: (T) => boolean): void;\r\n\t\tfirstOrDefault(where: (T) => boolean): T;\r\n\r\n\t\t/*\r\n\t\t* Sorts arrray by key (Optionally descending)\r\n\t\t*/\r\n\t\tsortBy(key: keyof T, desc?: boolean): T[];\r\n\r\n\t\t/*\r\n\t\t* Creates new array with only distinct members of other array\r\n\t\t*/\r\n\t\tdistinct(key: keyof T): T[];\r\n\t}\r\n}\r\n\r\nif (!Array.prototype.sortBy) {\r\n\tArray.prototype.sortBy = function sortBy (this: T[], key: keyof T, desc: boolean = false): T[] {\r\n\t\treturn this.sort((a: T, b: T) => {\r\n\t\t\tconst aValue = a[key] as any;\r\n\t\t\tconst bValue = b[key] as any;\r\n\r\n\t\t\tif (typeof a[key] === \"string\") {\r\n\t\t\t\tconst compare = aValue.localeCompare(bValue);\r\n\t\t\t\treturn desc ? compare * -1 : compare;\r\n\t\t\t} else {\r\n\t\t\t\tif (desc) {\r\n\t\t\t\t\treturn bValue - aValue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn aValue - bValue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n}\r\n\r\nif (!Array.prototype.distinct) {\r\n\tArray.prototype.distinct = function distinct (this: T[], key: keyof T): T[] {\r\n\t\tconst newArray = [];\r\n\t\tconst addedValues = new Set();\r\n\r\n\t\tvar i = 0;\r\n\t\twhile (i < this.length) {\r\n\t\t\tif (!addedValues.has(this[i][key])) {\r\n\t\t\t\taddedValues.add(this[i][key]);\r\n\t\t\t\tnewArray.push(this[i]);\r\n\t\t\t}\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\treturn newArray\r\n\t}\r\n}\r\n\r\nif (!Array.prototype.remove) {\r\n\tArray.prototype.remove = function remove (this: T[], removeItem: T): void {\r\n\t\tconst removeIndex = this.indexOf(removeItem);\r\n\t\tif (removeIndex > -1) {\r\n\t\t\tthis.splice(removeIndex, 1);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nif (!Array.prototype.removeWhere) {\r\n\tArray.prototype.removeWhere = function removeWhere (this: T[], removeFunction: (T) => boolean): void {\r\n\t\tvar i = 0;\r\n\t\twhile (i < this.length) {\r\n\t\t\tif (removeFunction(this[i])) {\r\n\t\t\t\tthis.splice(i, 1);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nif (!Array.prototype.firstOrDefault) {\r\n\tArray.prototype.firstOrDefault = function T (this: T[], where: (T) => boolean): T {\r\n\t\tif (where) {\r\n\t\t\tvar i = 0;\r\n\t\t\twhile (i < this.length) {\r\n\t\t\t\tif (where(this[i])) {\r\n\t\t\t\t\treturn this[i];\r\n\t\t\t\t}\r\n\t\t\t\ti++;\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn this.length > 0 ? this[0] : null;\r\n\t\t}\r\n\t}\r\n}","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport {\r\n\tVue,\r\n\tComponent,\r\n\tProp,\r\n\tWatch,\r\n\tEmit\r\n} from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport {\r\n\tMatrixContents,\r\n\tMatrixCamera\r\n} from \"@/store/site-monitor-cameras/types.ts\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport { renderDistance } from \"@/filters\";\r\nimport { stringMixin } from \"@/mixins\";\r\nimport SystemViewCameraIcon from \"@/components/system-view/SystemViewCameraIcon.vue\";\r\n\r\nconst SMCameras = namespace(\"siteMonitorCameras\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\nconst { isNullOrWhitespace } = stringMixin.methods;\r\n\r\n// Utility extensions\r\nimport \"@/scripts/array-operations\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\n\r\n/**\r\n * Represents a camera that is visible within the media matrix\r\n */\r\ninterface VisibleMatrixCamera {\r\n\tareaTitle: string;\r\n\tdeviceId: number;\r\n\tdistance: number;\r\n\tgroupId: number;\r\n\timperial: boolean | null | undefined;\r\n\tindex: number;\r\n\tlatLong: string;\r\n\ttitle: string;\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"system-view-camera-icon\": SystemViewCameraIcon\r\n\t},\r\n\tfilters: {\r\n\t\trenderDistance\r\n\t}\r\n})\r\nexport default class MatrixContent extends Vue {\r\n\t@SiteMonitor.Getter(\"getEventDetails\") eventDetails: EventDetails;\r\n\t@SiteMonitor.Getter(\"getMapCircleCenter\") mapCircleCenter: string;\r\n\r\n\t@SMCameras.Getter(\"getAllMatrixContents\") contents!: MatrixContents;\r\n\t@SMCameras.Getter(\"getLayouts\") layouts!: number[][];\r\n\t@SMCameras.Getter(\"getLayoutIndex\") layoutIndex!: number;\r\n\r\n\t@SMCameras.Action getAllDeviceDetails: ({\r\n\t\tdeviceIDs,\r\n\t\teventID,\r\n\t\tlatLong\r\n\t}) => Promise;\r\n\r\n\t@SMCameras.Mutation highlightCell: (index: number) => void;\r\n\t@SMCameras.Mutation unhighlightCell: () => void;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t// Props\r\n\t@Prop() open!: boolean;\r\n\t@Prop() searchText!: string;\r\n\r\n\t/**\r\n\t * List of cameras (+ details) that are visible in the media matrix.\r\n\t */\r\n\tpublic visibleCameras: VisibleMatrixCamera[] = [];\r\n\r\n\t/**\r\n\t * Gets the number of columns in the matrix.\r\n\t */\r\n\tpublic get horizontalColumnCount() {\r\n\t\treturn this.layouts[this.layoutIndex][0];\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the number of rows in the matrix.\r\n\t */\r\n\tpublic get verticalColumnCount() {\r\n\t\treturn this.layouts[this.layoutIndex][1];\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the visible cameras list, sorted by index and filtered by the search query.\r\n\t */\r\n\tpublic get filteredVisibleCameras () {\r\n\t\treturn this.visibleCameras\r\n\t\t\t.distinct(\"index\")\r\n\t\t\t.filter(\r\n\t\t\t\tcam => isNullOrWhitespace(this.searchText) ||\r\n\t\t\t\t\tcam.title.toLowerCase().indexOf(this.searchText.toLowerCase()) > -1\r\n\t\t\t)\r\n\t\t\t.sortBy(\"index\");\r\n\t}\r\n\r\n\t/**\r\n\t * Called on component mount. Triggers a refresh of the visibleCameras list\r\n\t * (only ever necessary when doing hot-reload during development).\r\n\t */\r\n\tpublic mounted() {\r\n\t\tthis.onContentsChanged(this.contents, null, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Trigger an update of device data when the map circle is moved, as this will mean\r\n\t * distance needs to be re-calculated.\r\n\t */\r\n\t@Watch(\"mapCircleCenter\")\r\n\tpublic async onMapCircleCenterChanged() {\r\n\t\tawait this.onContentsChanged(this.contents, null, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles the update of device details, usually triggered when the matrix contents\r\n\t * is changed (ie camera deleted/added, etc).\r\n\t */\r\n\t@Watch(\"contents\", { deep: true })\r\n\tpublic async onContentsChanged(\r\n\t\tnewContents: MatrixContents,\r\n\t\toldContents: MatrixContents,\r\n\t\tmapCircleChanged: boolean = false\r\n\t) {\r\n\r\n\t\t// If the contents are empty then clear the visible cameras list and return.\r\n\t\tif (!this.contents) {\r\n\t\t\tthis.visibleCameras = [];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Fetch all cameras within the matrix contents\r\n\t\tlet cameras = Object.values(this.contents)\r\n\t\t\t.filter(item => item.camera !== undefined && item.camera !== null)\r\n\t\t\t.map(item => item.camera)\r\n\t\t\t.filter(camera => camera.index !== undefined && camera.index !== null && (camera.objectID !== undefined || camera.objectId !== undefined));\r\n\r\n\t\tlet camerasToFetch: number[] = [];\r\n\r\n\t\tfor (let camera of cameras) {\r\n\t\t\tconst cameraObjectID = camera.objectID ? camera.objectID : camera.objectId;\r\n\t\t\t// Search the current visible cameras to see if we've already fetched details for this camera.\r\n\t\t\tlet currentCamDetails = this.visibleCameras.find(\r\n\t\t\t\tcam => cam.deviceId == cameraObjectID\r\n\t\t\t);\r\n\r\n\t\t\t// If the map circle *has* changed, then we need to re-fetch as the distance needs to be recalculated.\r\n\t\t\tif (!mapCircleChanged && currentCamDetails) {\r\n\t\t\t\tif (currentCamDetails.index != camera.index) {\r\n\t\t\t\t\t// If just the index has changed, then set the new index and continue.\r\n\t\t\t\t\tcurrentCamDetails.index == camera.index;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If the map circle has changed, or the camera doesn't already have a title, areaTitle and distance,\r\n\t\t\t// then we need to add this camera to the list of devices to fetch updated details for.\r\n\t\t\tif (\r\n\t\t\t\tmapCircleChanged ||\r\n\t\t\t\t((isNullOrWhitespace(camera.title) ||\r\n\t\t\t\t\tisNullOrWhitespace(camera.areaTitle) ||\r\n\t\t\t\t\tcamera.distance === undefined ||\r\n\t\t\t\t\tcamera.distance === null) &&\r\n\t\t\t\t\tcameraObjectID !== undefined)\r\n\t\t\t) {\r\n\t\t\t\t// Push this cameras ID\r\n\t\t\t\tcamerasToFetch.push(cameraObjectID);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet updatedCameraDetails = [];\r\n\r\n\t\t// If we've got any cameras to fetch...\r\n\t\tif (camerasToFetch.length > 0) {\r\n\t\t\ttry {\r\n\t\t\t\t// Make the call to the back-end\r\n\t\t\t\tupdatedCameraDetails = await this.getAllDeviceDetails({\r\n\t\t\t\t\tdeviceIDs: camerasToFetch,\r\n\t\t\t\t\teventID: this.eventDetails.eventID,\r\n\t\t\t\t\tlatLong: this.mapCircleCenter\r\n\t\t\t\t});\r\n\t\t\t} catch (err) {\r\n\t\t\t\tconsole.error(`Unable to fetch camera details: ${err}`);\r\n\r\n\t\t\t\tthis.visibleCameras = [];\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update the visible cameras list\r\n\t\tthis.visibleCameras = cameras.map(camera => {\r\n\t\t\tconst cameraObjectID = camera.objectID ? camera.objectID : camera.objectId;\r\n\t\t\t// Check to see if there are *new* details for this camera within our updatedCameraDetails array.\r\n\t\t\t// If there aren't, we'll just use the data we currently have for it from the matrix content.\r\n\t\t\tlet newDetails = updatedCameraDetails.find(\r\n\t\t\t\tdetails => details.deviceId == cameraObjectID\r\n\t\t\t);\r\n\r\n\t\t\tif (newDetails) {\r\n\t\t\t\t// If we've got updated details for the current camera, then return them\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...newDetails,\r\n\t\t\t\t\tindex: camera.index,\r\n\t\t\t\t\tobjectID: cameraObjectID\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\t// Otherwise, return the current data for the camera... failing that,\r\n\t\t\t\t// we'll just return the camera data we got from the matrix itself\r\n\t\t\t\tlet currentCamDetails = this.visibleCameras.find(\r\n\t\t\t\t\tcam => cam.deviceId == cameraObjectID\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (currentCamDetails) {\r\n\t\t\t\t\tcurrentCamDetails.index = camera.index;\r\n\t\t\t\t\treturn currentCamDetails;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn camera;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the icon colour for the given camera and column/row.\r\n\t */\r\n\tpublic cameraIconColor(camera: MatrixCamera, i: number, j: number) {\r\n\t\treturn (i - 1) * this.horizontalColumnCount + j === camera.index\r\n\t\t\t? \"redCameraIndicator\"\r\n\t\t\t: \"greyCameraIndicator\";\r\n\t}\r\n\r\n\tprivate get isSystemViewEnabled() {\r\n\t\treturn get(this.featuresList, [\"SystemView\"]);\r\n\t}\r\n\r\n\t// Events\r\n\t@Emit()\r\n\tpublic onOpened() {}\r\n}\r\n","\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport { namespace, Getter } from \"vuex-class\";\nimport { CameraType } from \"@/store/site-monitor-cameras/types\";\nimport { EventDetails } from \"@/store/site-monitor/types\";\nimport vSelect from \"vue-select\";\nimport { FeaturesList } from \"@/store/types\";\nimport { MatrixContents } from \"@/store/site-monitor-cameras/types\";\nimport { PredefinedTour, PredefinedTourStep, isActiveCell } from \"@/store/tours/types\";\nimport { get, clone } from \"lodash\";\nimport { validationMixin } from 'vuelidate';\nimport { required, requiredIf, minLength } from 'vuelidate/lib/validators'\n\nconst SiteMonitor = namespace(\"siteMonitor\");\nconst SMCameras = namespace(\"siteMonitorCameras\");\nconst Tours = namespace(\"tours\");\n\nenum TourOptionList {\n\tAreaCameras = 1,\n\tNearbyCameras = 2,\n\tPredefinedCameras = 3\n}\n\n@Component({\n\tcomponents: {\n\t\t\"vue-select\": vSelect,\n\t},\n\tmixins: [validationMixin],\n\tvalidations: {\n\t\tselectedPredefinedTour: {\n\t\t\trequired: requiredIf(function(){\n\t\t\t\tif (this.selectedTourOption == TourOptionList.PredefinedCameras)\n\t\t\t\t{\n\t\t\t\t\tif (!this.selectedPredefinedTour) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t})\n\t\t},\n\t\tfailedCamera: {\n\t\t\tfailedNote: {\n\t\t\t\trequired,\n\t\t\t\tminLength: minLength(2)\n\t\t\t}\n\t\t}\n\n\t}\n})\nexport default class Tour extends Vue {\n\t/** Vuex Methods */\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\t@Getter getUserName!: string;\n\n\t@SiteMonitor.Getter(\"groupID\") groupId!: number | null;\n\t@SiteMonitor.Getter getEventDetails: EventDetails;\n\t@SiteMonitor.Action createAuditRecord: any;\n\n\t@SMCameras.Action saveMatrix: (matrixData: any) => Promise;\n\t@SMCameras.Action fetchAreaCameras: any;\n\t@SMCameras.Getter(\"getLayoutIndex\") layoutIndex!: number;\n\t@SMCameras.Getter(\"getLayouts\") layouts!: number[][];\n\t@SMCameras.Getter(\"getAreaCameras\") groupCameras: CameraType[];\n\t@SMCameras.Getter(\"getDeviceControllerCameras\") nearbyCameras: CameraType[];\n\t@SMCameras.Getter getAllMatrixContents: MatrixContents;\n\t@SMCameras.Getter getMatrixPushContents: any;\n\t@SMCameras.State(\"areaCameraCount\") public areaCameraCount: number;\n\n\t@SMCameras.Mutation setPushContents: any;\n\t@SMCameras.Mutation setLayoutIndex: any;\n\n\t@Tours.Action fetchAllTours: any;\n\n\t@Tours.Getter getAllTours: any;\n\t@Tours.Getter getPredefinedTour: PredefinedTour;\n\t@Tours.Getter tourInProgress: any;\n\n\t@Tours.Mutation setIsInTourState: any;\n\t@Tours.Mutation clearPredefinedStreamingCameras: any;\n\t@Tours.Mutation activeCellDisable: any;\n\t@Tours.Mutation activeCellEnable: any;\n\t@Tours.Mutation addPredefinedTourCameraIndex: any;\n\t@Tours.Mutation addPredefinedTourIteration: any;\n\t@Tours.Mutation updatePredefinedTourPausedState: any;\n\t@Tours.Mutation setPredefinedTourCamera: any;\n\t@Tours.Mutation addPredefinedTourTimeout: any;\n\t@Tours.Mutation updatePredefinedTourTimeout: any;\n\t@Tours.Mutation updatePredefinedTourDuration: any;\n\t@Tours.Mutation setPredefinedTourDurationTimer: any;\n\t@Tours.Mutation setPredefinedTour: any;\n\n\t@Prop(Array) cameras: CameraType[];\n\n\tprivate loopCameras: boolean = false;\n\tprivate useAreaCameras: boolean = true;\n\tprivate showCameraToggle: boolean = false;\n\tprivate showNearbyCameraChangeModal: boolean = false;\n\tprivate acceptNearbyCameras: boolean = false;\n\tprivate firstCellIndex: number = 0;\n\tprivate pageNumber: number = 1;\n\n\tprivate initialMatrix: any = [];\n\tprivate initialLayoutIndex: number = 0;\n\n\tprivate TourOptionList: any = TourOptionList;\n\tprivate selectedTourOption: number = 1;\n\tprivate selectedPredefinedTour: any = null;\n\tprivate tourOptions: any = [\n\t\t{ text: \"Area Cameras\", value: TourOptionList.AreaCameras },\n\t\t{ text: \"Nearby Cameras\", value: TourOptionList.NearbyCameras },\n\t\t{ text: \"Predefined Cameras\", value: TourOptionList.PredefinedCameras }\n\t];\n\n\tprivate nearbyCamerasBeforeChange: any = [];\n\n\tprivate timePassed: number = 0;\n\tprivate tourDefaultTimeout: number = 10;\n\n\tprivate failedCamera: any = { camera: null, failedNote: \"\" };\n\tprivate isFailedCamera: boolean = false;\n\tprivate wasTimeout: boolean = false;\n\n\tprivate get eventId() {\n\t\treturn this.getEventDetails ? this.getEventDetails.eventID : 0;\n\t}\n\n\tprivate get getAllToursByGroup() {\n\t\treturn this.getAllTours.filter((x: any) => x.groupId == this.groupId);\n\t}\n\n\tprivate get camerasLeft() {\n\t\tif (this.selectedTourOption == this.TourOptionList.PredefinedCameras) {\n\t\t\treturn this.camerasList.length - this.getPredefinedTour.currentIteration - 1;\n\t\t} else {\n\t\t\treturn this.camerasList.length - (this.firstCellIndex + this.totalCells);\n\t\t}\n\t}\n\n\tprivate get atEnd() {\n\t\treturn this.camerasLeft + this.totalCells <= this.totalCells ? true : false;\n\t}\n\n\tprivate get atStart() {\n\t\treturn this.camerasLeft + this.totalCells == this.camerasList.length ? true : false;\n\t}\n\n\tprivate get isAdvancedTourEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"VideoTours\", \"PredefiendTour\"]);\n\t}\n\n\tprivate get areaToursOnly(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"VideoTours\", \"AreaToursOnly\"]);\n\t}\n\n\tprivate get cameraCount() {\n\t\tif (this.selectedTourOption == this.TourOptionList.PredefinedCameras && this.getPredefinedTour) {\n\t\t\treturn `${ this.getPredefinedTour.currentIteration+1 } / ${ this.camerasList.length }`;\n\t\t} else {\n\t\t\treturn `${ this.firstCellIndex + this.totalCells - this.emptyCells.length } / ${ this.selectedTourOption == TourOptionList.NearbyCameras ? this.camerasList.length : this.areaCameraCount }`;\n\t\t}\n\t}\n\n\tprivate get isCellStreaming() {\n\t\tconst cameraStream = this.getPredefinedTour.camerasStreaming.find(x => x.index == this.getPredefinedTour.currentCameraIndex);\n\t\tif (cameraStream == null) {\n\t\t\treturn false;\n\t\t}\n\t\treturn cameraStream.isStreaming;\n\t}\n\n\tpublic get camerasList() {\n\t\tswitch(this.selectedTourOption) {\n\t\t\tcase TourOptionList.NearbyCameras: {\n\t\t\t\treturn this.filteredNearbyCameras;\n\t\t\t}\n\t\t\tcase TourOptionList.PredefinedCameras: {\n\t\t\t\tlet PredefinedTour = clone(this.selectedPredefinedTour);\n\t\t\t\tif (!PredefinedTour || !PredefinedTour.tourSteps) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tlet predefinedCameras = PredefinedTour.tourSteps;\n\n\t\t\t\tpredefinedCameras.sort(function(x, y){\n\t\t\t\t\treturn x.stepOrder - y.stepOrder;\n\t\t\t\t});\n\n\t\t\t\treturn predefinedCameras;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\treturn this.groupCameras;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic get loadedCameras() {\n\t\treturn Object.values(this.getAllMatrixContents)\n\t\t\t.filter(m => m && m.camera)\n\t\t\t.map(c => c.camera)\n\t\t\t.filter(g => g.objectID)\n\t\t\t.map(c => c.objectID);\n\t}\n\n\t/** Checks if each cell has contents and if not, return the index of that cell. */\n\tpublic get emptyCells() {\n\t\treturn Array.from(Array(this.totalCells).keys()).map(\n\t\t\tx => ++x\n\t\t).filter(\n\t\t\tx => this.cellEmpty(this.getAllMatrixContents[x]) ? true : !Object.keys(this.getAllMatrixContents).includes(x.toString())\n\t\t);\n\t}\n\n\tpublic get tourStepComment() {\n\t\tif (!this.getPredefinedTour) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn this.camerasList[this.getPredefinedTour.currentIteration] !== undefined ? this.camerasList[this.getPredefinedTour.currentIteration].comment : \"\";\n\t}\n\n\tpublic get totalCells() {\n\t\treturn (\n\t\t\tthis.layouts[this.layoutIndex][0] * this.layouts[this.layoutIndex][1]\n\t\t);\n\t}\n\n\tprivate get filteredNearbyCameras() {\n\t\tif (!this.tourInProgress) {\n\t\t\treturn this.nearbyCameras;\n\t\t}\n\n\t\tif (this.acceptNearbyCameras) {\n\t\t\tthis.acceptNearbyCameras = false;\n\t\t\tthis.nearbyCamerasBeforeChange = this.nearbyCameras;\n\t\t\treturn this.nearbyCameras;\n\t\t}\n\t\treturn this.nearbyCamerasBeforeChange;\n\t}\n\n\t@Watch(\"layoutIndex\")\n\tprivate onLayoutUpdate() {\n\t\tif (this.tourInProgress) {\n\t\t\tthis.loadPage(this.firstCellIndex, this.totalCells);\n\t\t}\n\t}\n\n\t/** Used to evalulate data if other components pushed contents to it.\n\t * Checking if the user clicked the active cell etc.\n\t */\n\t@Watch(\"getPredefinedTour\", { deep:true })\n\tprivate async validateCameraData() {\n\t\tif (!this.getPredefinedTour && !this.getPredefinedTour.cellTrigger && !this.getPredefinedTour.durationBasedCamera) {\n\t\t\tawait this.loadNextCell(this.getPredefinedTour.cellTrigger);\n\t\t\tthis.getPredefinedTour.cellTrigger = null;\n\t\t}\n\t}\n\n\t@Watch(\"nearbyCameras\")\n\tprivate nearbyCamerasOnChange() {\n\t\tif (this.tourInProgress && this.selectedTourOption == TourOptionList.NearbyCameras) {\n\t\t\tthis.showNearbyCameraChangeModal = true;\n\t\t\tthis.auditTour(`Nearby cameras have been changed`);\n\t\t}\n\t}\n\n\t@Watch(\"eventId\")\n\tpublic async onEventChanged(eventId: number, oldEventId: number) {\n\t\tif (this.getEventDetails) {\n\t\t\tthis.tourInProgress = false;\n\t\t\tthis.setIsInTourState(false);\n\t\t\tawait this.resetTourDetails();\n\t\t}\n\t}\n\n\tasync mounted() {\n\t\tawait this.fetchAllTours();\n\t\tif (this.getEventDetails) {\n\t\t\tawait this.fetchAreaCameras({ groupID: this.getEventDetails.groupID, pageNumber: this.pageNumber, paginated: true });\n\n\t\t\tif (this.getEventDetails.useAreaCameras && this.getEventDetails.useNearbyCameras) {\n\t\t\t\tthis.showCameraToggle = true;\n\t\t\t} else {\n\t\t\t\tthis.useAreaCameras = this.getEventDetails.useAreaCameras;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate updateNearbyCameras() {\n\t\tif (this.tourInProgress && this.selectedTourOption == TourOptionList.NearbyCameras) {\n\t\t\tthis.showNearbyCameraChangeModal = false;\n\t\t\tthis.auditTour(`User: ${ this.getUserName } accepted Nearby Cameras updates`);\n\t\t\tthis.populateMediaMatrix(this.nearbyCameras);\n\t\t\tthis.firstCellIndex = 0;\n\t\t\tthis.acceptNearbyCameras = true;\n\t\t}\n\t}\n\n\tprivate async resetTourDetails() {\n\t\tthis.$emit('tourName', \"\");\n\t\tthis.$emit('tourStopped');\n\t\tthis.pageNumber = 1;\n\t\tawait this.fetchAreaCameras({ groupID: this.getEventDetails.groupID, pageNumber: this.pageNumber, paginated: true });\n\t\tthis.firstCellIndex = 0;\n\t\tthis.selectedTourOption = TourOptionList.AreaCameras;\n\t\tif (this.selectedTourOption == this.TourOptionList.PredefinedCameras) {\n\t\t\tthis.selectedPredefinedTour = null;\n\t\t\tthis.activeCellDisable();\n\t\t\tthis.setPredefinedTour(null);\n\t\t\tthis.setPredefinedTourCamera({});\n\t\t}else if (this.selectedTourOption == this.TourOptionList.AreaCameras) {\n\t\t\tthis.acceptNearbyCameras = false;\n\t\t\tthis.showNearbyCameraChangeModal = false;\n\t\t}\n\t}\n\n\tprivate async loadNextCell(confirmed: boolean, timeout: boolean = false) {\n\t\tthis.addPredefinedTourIteration(1);\n\t\tthis.wasTimeout = timeout;\n\n\t\t//Check we are at the end of our tour.\n\t\tif (this.camerasLeft == -1) {\n\t\t\tthis.confirmCamera(confirmed);\n\t\t\treturn;\n\t\t}\n\n\t\tconst nextCamera = this.camerasList.find(x => x.stepOrder == this.getPredefinedTour.currentIteration + 1);\n\t\tthis.addPredefinedTourTimeout(this.tourDefaultTimeout);\n\n\t\tif (this.getPredefinedTour.isPausedTour) {\n\t\t\tthis.updatePredefinedTourPausedState(false);\n\t\t}\n\n\t\tif (this.getPredefinedTour.currentCameraIndex == this.totalCells && this.getPredefinedTour.currentCameraIndex !== this.camerasList.length) {\n\t\t\tthis.addPredefinedTourCameraIndex(1);\n\t\t\tawait this.camerasNext();\n\t\t\tthis.clearPredefinedStreamingCameras();\n\t\t\tthis.setPredefinedTourCamera(nextCamera);\n\t\t} else {\n\t\t\tthis.addPredefinedTourCameraIndex(this.getPredefinedTour.currentCameraIndex + 1);\n\t\t}\n\n\t\tawait this.confirmCamera(confirmed, nextCamera);\n\n\t}\n\n\tprivate async confirmCamera(confirmed: boolean, nextCamera: any = null) {\n\t\tif (confirmed) {\n\t\t\tif (this.getPredefinedTour.durationBasedCamera) {\n\t\t\t\tthis.auditTour(`Camera ${ this.getPredefinedTour.currentCamera.title } has been auto-approved`,\n\t\t\t\tthis.getPredefinedTour.currentCamera.objectID);\n\t\t\t} else {\n\t\t\t\tthis.auditTour(`Camera: ${ this.getPredefinedTour.currentCamera.title } has been approved by User: ${ this.getUserName }. time taken: ${ this.timePassed }seconds.`,\n\t\t\t\tthis.getPredefinedTour.currentCamera.objectID);\n\t\t\t\tthis.timePassed = 0;\n\t\t\t}\n\n\t\t\tif (this.camerasLeft == -1) {\n\t\t\t\tawait this.stopTour();\n\t\t\t} else {\n\t\t\t\tthis.setPredefinedTourCamera(nextCamera);\n\t\t\t\tthis.activeCellEnable({ isActive: true, index: this.getPredefinedTour.currentCameraIndex });\n\t\t\t}\n\t\t} else {\n\n\t\t\tthis.isFailedCamera = true;\n\t\t\tthis.failedCamera = { camera: this.getPredefinedTour.currentCamera, failedNote: \"\" };\n\t\t\tthis.updatePredefinedTourPausedState(true);\n\n\t\t\tif (this.wasTimeout) {\n\t\t\t\tawait this.confirmFailedCamera();\n\t\t\t}\n\t\t}\n\n\t}\n\n\tprivate cellEmpty(cellContents: any) {\n\t\tlet empty = true;\n\n\t\tif (cellContents !== undefined &&\n\t\t\t\tcellContents.camera !== undefined &&\n\t\t\t\tcellContents.camera.objectID !== undefined) {\n\t\t\t\t\tempty = false;\n\t\t}\n\t\treturn empty;\n\t}\n\n\tprivate loadPage(startIndex: number, pageSize: number) {\n\t\tfor (let i = 0; i < pageSize; i++) {\n\t\t\tconst cameraIdx = startIndex + i;\n\t\t\tconst newContents = this.getCamContents(cameraIdx);\n\t\t\tconst pushContents = {\n\t\t\t\tindex: i+1,\n\t\t\t\tnewContents\n\t\t\t};\n\t\t\tthis.setPushContents(pushContents);\n\t\t}\n\t}\n\n\tprivate getCamContents(cameraIdx: number) {\n\t\tif (cameraIdx < this.camerasList.length) {\n\t\t\treturn {\n\t\t\t\tcamera: {\n\t\t\t\t\tindex: cameraIdx,\n\t\t\t\t\tobjectID: this.camerasList[cameraIdx].objectID ?? this.camerasList[cameraIdx].objectId,\n\t\t\t\t\ttitle: this.camerasList[cameraIdx].title,\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\treturn {};\n\t}\n\n\tprivate loadNextPage() {\n\t\tif (this.firstCellIndex >= this.camerasList.length - this.totalCells) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.firstCellIndex += this.totalCells;\n\n\t\tthis.loadPage(this.firstCellIndex, this.totalCells);\n\t}\n\n\tprivate loadPreviousPage() {\n\t\tif (this.firstCellIndex === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.firstCellIndex = this.firstCellIndex <= this.totalCells ? 0 : this.firstCellIndex - this.totalCells;\n\n\t\tthis.loadPage(this.firstCellIndex, this.totalCells);\n\t}\n\n\tprivate async camerasNext() {\n\t\tif (!this.tourInProgress) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet nextPageTotal = this.firstCellIndex + (this.totalCells * 2);\n\t\tif (nextPageTotal >= this.groupCameras.length && this.groupCameras.length < this.areaCameraCount) {\n\t\t\tthis.pageNumber++;\n\t\t\tawait this.fetchAreaCameras({ groupID: this.getEventDetails.groupID, pageNumber: this.pageNumber, paginated: true });\n\t\t}\n\n\t\tthis.loadNextPage();\n\t\tthis.auditTour( `Video Tour: ${ this.tourType } has loaded next ${ this.cameraCount } cameras`);\n\t}\n\n\tprivate get tourType() {\n\t\tswitch(this.selectedTourOption) {\n\t\t\tcase TourOptionList.NearbyCameras: {\n\t\t\t\treturn \"Nearby Cameras\"\n\t\t\t}\n\t\t\tcase TourOptionList.PredefinedCameras: {\n\t\t\t\treturn `${ this.selectedPredefinedTour.title }`\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\treturn \"Area Cameras\"\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate camerasPrevious() {\n\t\tif (this.atStart || !this.tourInProgress) return;\n\t\tthis.loadPreviousPage();\n\t\tthis.auditTour( `Video Tour: ${ this.tourType } has loaded the previous ${ this.cameraCount } cameras`);\n\t}\n\n\tprivate async startTour() {\n\t\tif (this.tourInProgress) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.selectedTourOption === this.TourOptionList.PredefinedCameras) {\n\t\t\tvar layoutIndex = this.layouts.findIndex(layout =>\n\t\t\t\t\tlayout[0] == this.selectedPredefinedTour.matrixColumnSize\n\t\t\t\t\t&& layout[1] == this.selectedPredefinedTour.matrixRowSize\n\t\t\t);\n\n\t\t\tif (layoutIndex > -1) {\n\t\t\t\tawait this.setLayoutIndex(layoutIndex)\n\t\t\t\tlet [matrixColumns, matrixRows] = this.layouts[layoutIndex];\n\t\t\t\tawait this.saveMatrix({\n\t\t\t\t\teventID: this.eventId,\n\t\t\t\t\tmatrixColumns,\n\t\t\t\t\tmatrixRows\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tawait this.$nextTick();\n\n\t\tthis.initialLayoutIndex = this.layoutIndex;\n\t\tthis.initialMatrix = Object.values(\n\t\t\tJSON.parse(JSON.stringify(this.getAllMatrixContents))\n\t\t).map(x => x[Object.keys(x)[0]]);\n\n\t\tif (this.selectedTourOption == this.TourOptionList.PredefinedCameras) {\n\t\t\tif (this.camerasList.length < 1) {\n\t\t\t\tawait this.stopTour();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet predefinedTourStep: PredefinedTourStep = {\n\t\t\t\tdurationTimer: this.camerasList[0].durationTimer\n\t\t\t};\n\t\t\tconst isActiveCell: isActiveCell = { isActive: true, index: 1 } // DEFAULT FIRST CELL.\n\n\t\t\tlet predefinedTour: PredefinedTour = {\n\t\t\t\tpredefiendStep: predefinedTourStep,\n\t\t\t\tcamerasStreaming: [],\n\t\t\t\tselectedTourOption: 3,\n\t\t\t\tcellTrigger: null,\n\t\t\t\tselectedPredefinedTour: this.selectedPredefinedTour,\n\t\t\t\tisPausedTour: false,\n\t\t\t\ttourTimeout: this.tourDefaultTimeout,\n\t\t\t\tconfirmationComment: \"\",\n\t\t\t\tdurationBasedCamera: false,\n\t\t\t\tcurrentCamera: this.camerasList[0],\n\t\t\t\tcurrentCameraIndex: 1,\n\t\t\t\tcurrentIteration: 0,\n\t\t\t\tisActive: { isActive: true, index: 1 } // DEFAULT FIRST CELL.\n\t\t\t};\n\n\t\t\tthis.$emit('tourName', `Video Tour: ${ predefinedTour.selectedPredefinedTour.title }`);\n\n\t\t\tif (predefinedTour.currentCamera.duration > 0 ) {\n\t\t\t\tpredefinedTour.durationBasedCamera = true;\n\t\t\t\tpredefinedTour.predefiendStep.durationTimer = this.camerasList[0].duration;\n\t\t\t} else {\n\t\t\t\tpredefinedTour.durationBasedCamera = false;\n\t\t\t}\n\n\t\t\tthis.auditTour(`User: ${ this.getUserName } started Video Tour: ${ this.selectedPredefinedTour.title }`);\n\t\t\tthis.setPredefinedTour(predefinedTour);\n\t\t\tthis.loadPage(this.firstCellIndex, this.totalCells);\n\t\t\tthis.setIsInTourState(true);\n\n\n\t\t\tif (this.getPredefinedTour.durationBasedCamera) {\n\t\t\t\tawait this.countDownTimer();\n\t\t\t} else {\n\t\t\t\tawait this.timePassedLastConfirmed();\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t} else if (this.selectedTourOption == TourOptionList.NearbyCameras) {\n\t\t\tthis.$emit('tourName', \"Video Tour: Nearby Cameras\");\n\t\t\tthis.auditTour(`User: ${ this.getUserName } started Video Tour: Nearby Cameras`);\n\t\t\tthis.auditTour(`Video Tour: ${ this.tourType } has loaded first ${ this.cameraCount } cameras`);\n\t\t\tthis.nearbyCamerasBeforeChange = this.nearbyCameras;\n\t\t}\n\t\telse {\n\t\t\tthis.$emit('tourName', \"Video Tour: Area Cameras\");\n\t\t\tthis.auditTour(`User: ${ this.getUserName } started Video Tour: Area Cameras`);\n\t\t\tthis.auditTour(`Video Tour: ${ this.tourType } has loaded first ${ this.cameraCount } cameras`);\n\t\t}\n\n\t\tthis.loadPage(this.firstCellIndex, this.totalCells);\n\t\tthis.setIsInTourState(true);\n\t}\n\n\tprivate async stopTour() {\n\t\tthis.auditTour(`User: ${ this.getUserName }, completed Video Tour: ${ this.tourType }`);\n\t\tawait this.resetTourDetails();\n\n\t\tawait this.MatrixsOriginalState();\n\t}\n\n\tprivate pauseTourToggle(): void {\n\t\tthis.updatePredefinedTourPausedState(!this.getPredefinedTour.isPausedTour);\n\t\tthis.auditTour(`User: ${ this.getUserName } ${this.getPredefinedTour.isPausedTour ? `Paused` : `Resumed` } Video Tour: ${ this.selectedPredefinedTour.title } at Camera: ${ this.getPredefinedTour.currentCamera.title }`);\n\t}\n\n\t/** Helper method to populate the Media Matrix */\n\tprivate populateMediaMatrix(objectlist: any) {\n\t\tfor (let index = 0; index < this.totalCells; index++) {\n\t\t\tlet newContents = {};\n\t\t\tif (index < objectlist.length) {\n\t\t\t\t\tnewContents = {\n\t\t\t\t\t\tcamera: {\n\t\t\t\t\t\t\tobjectID: objectlist[index].objectID,\n\t\t\t\t\t\t\ttitle: objectlist[index].title,\n\t\t\t\t\t\t\tindex: index + 1\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\tthis.setPushContents({\n\t\t\t\tindex: index+1,\n\t\t\t\tnewContents: newContents\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate async confirmFailedCamera() {\n\t\tif (!this.isFailedCamera) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.wasTimeout) {\n\t\t\tthis.auditTour(\n\t\t\t\t`Camera ${ this.failedCamera.camera.title } failed to load while User: ${ this.getUserName } was conducting a Video Tour.`,\n\t\t\t\tthis.getPredefinedTour.currentCamera.objectID);\n\t\t} else {\n\t\t\tthis.auditTour(\n\t\t\t\t`Camera ${ this.getPredefinedTour.currentCamera.title } has been unconfirmed by User: ${ this.getUserName }. Note: ${ this.failedCamera.failedNote }`,\n\t\t\t\tthis.getPredefinedTour.currentCamera.objectID);\n\t\t}\n\n\n\t\tconst nextCamera = this.camerasList.find(x => x.stepOrder == this.getPredefinedTour.currentIteration + 1);\n\t\tthis.setPredefinedTourCamera(nextCamera);\n\t\tif (this.getPredefinedTour.durationBasedCamera) {\n\t\t\tthis.setPredefinedTourDurationTimer(this.failedCamera.camera.duration);\n\t\t}\n\n\t\tthis.activeCellEnable({ isActive: true, index: this.getPredefinedTour.currentCameraIndex });\n\t\tthis.updatePredefinedTourPausedState(false);\n\t\tthis.failedCamera = { camera: null, failedNote: \"\" };\n\t\tthis.isFailedCamera = false;\n\n\t\tif (this.camerasLeft == -1) {\n\t\t\tawait this.stopTour();\n\t\t}\n\t}\n\n\t/** Return matrix to its origional State */\n\tprivate MatrixsOriginalState() {\n\t\tif (!this.tourInProgress) {\n\t\t\treturn;\n\t\t}\n\t\tthis.tourInProgress = false;\n\t\tthis.setIsInTourState(false);\n\t\tthis.setLayoutIndex(this.initialLayoutIndex);\n\t\tthis.populateMediaMatrix(this.initialMatrix);\n\t}\n\n\t/** Timer for duration based defined cameras */\n\tprivate async countDownTimer() {\n\t\tif (this.getPredefinedTour.predefiendStep.durationTimer > 0 && this.tourInProgress && this.selectedTourOption == TourOptionList.PredefinedCameras) {\n\t\t\tsetTimeout(async () => {\n\t\t\t\t// If paused, repear after timeout.\n\t\t\t\tif (this.getPredefinedTour.isPausedTour)\n\t\t\t\t{\n\t\t\t\t\tawait this.countDownTimer();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.isCellStreaming) {\n\t\t\t\t\tthis.updatePredefinedTourDuration(1);\n\t\t\t\t\tawait this.countDownTimer();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse if (!this.isCellStreaming) {\n\t\t\t\t\tif (this.getPredefinedTour.tourTimeout <= 1 && this.camerasLeft != -1) {\n\t\t\t\t\t\tawait this.loadNextCell(false, true);\n\t\t\t\t\t\tthis.addPredefinedTourTimeout(this.tourDefaultTimeout);\n\t\t\t\t\t\tconst thisCamera = this.camerasList.find(x => x.stepOrder == this.getPredefinedTour.currentCameraIndex);\n\t\t\t\t\t\tthis.setPredefinedTourDurationTimer(thisCamera.duration);\n\t\t\t\t\t\tawait this.countDownTimer();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else if (this.camerasLeft == -1) {\n\t\t\t\t\t\tawait this.stopTour();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.updatePredefinedTourTimeout(1);\n\t\t\t\t\t\tawait this.countDownTimer();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t} else {\n\t\t\t// Check to see if there is another camera within the list.\n\t\t\tif (this.tourInProgress && this.camerasLeft != -1) {\n\t\t\t\t// Load next cell.\n\t\t\t\tawait this.loadNextCell(true);\n\t\t\t\tconst thisCamera = this.camerasList.find(x => x.stepOrder == this.getPredefinedTour.currentCameraIndex);\n\t\t\t\tthis.setPredefinedTourDurationTimer(thisCamera.duration);\n\n\t\t\t\tif (this.getPredefinedTour.predefiendStep.durationTimer > 0) {\n\t\t\t\t\tawait this.countDownTimer();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tawait this.stopTour();\n\t\t\t}\n\t\t}\n\t}\n\n\t/** Timer for duration based defined cameras */\n\tprivate async timePassedLastConfirmed() {\n\t\tif (this.tourInProgress && this.selectedTourOption == TourOptionList.PredefinedCameras && !this.getPredefinedTour.durationBasedCamera) {\n\t\t\tsetTimeout(async () => {\n\t\t\t\tthis.timePassed++;\n\t\t\t\tawait this.timePassedLastConfirmed();\n\t\t\t}, 1000);\n\t\t}\n\t}\n\n\t/** Audit based logic */\n\tprivate async auditTour(details: any, objectId: number = null) {\n\t\t// Create audit saying that the user didn't pick up the phone.\n\t\tawait this.createAuditRecord({\n\t\t\teventId: this.getEventDetails.eventID,\n\t\t\teventRecordTypeId: 125,\n\t\t\tdetails: details,\n\t\t\tobjectID: objectId > 0 ? objectId : null\n\t\t});\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MatrixContent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MatrixContent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MatrixContent.vue?vue&type=template&id=9a780c94&scoped=true\"\nimport script from \"./MatrixContent.vue?vue&type=script&lang=ts\"\nexport * from \"./MatrixContent.vue?vue&type=script&lang=ts\"\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 \"9a780c94\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.groupCameras)?_c('div',{staticClass:\"list-group-item\",attrs:{\"id\":\"tourContainer\"}},[_c('div',{attrs:{\"id\":\"tourPanel\"}},[(!_vm.tourInProgress && !_vm.areaToursOnly)?_c('b-form-group',[_c('b-form-radio-group',{staticClass:\"radio-buttons\",attrs:{\"stacked\":\"\",\"name\":\"radio-inline\",\"data-cy\":\"selectedTourOptions\"},model:{value:(_vm.selectedTourOption),callback:function ($$v) {_vm.selectedTourOption=$$v},expression:\"selectedTourOption\"}},[_c('b-form-radio',{staticClass:\"custom-control-md\",attrs:{\"data-cy\":\"selectedTourAreaCameraOption\",\"value\":_vm.TourOptionList.AreaCameras}},[_vm._v(\"Area Cameras\")]),_c('b-form-radio',{staticClass:\"custom-control-md mt-1\",attrs:{\"data-cy\":\"selectedTourNearbyCameraOption\",\"value\":_vm.TourOptionList.NearbyCameras}},[_vm._v(\"Nearby Cameras\")]),(_vm.isAdvancedTourEnabled)?_c('b-form-radio',{staticClass:\"custom-control-md mt-1\",attrs:{\"data-cy\":\"selectedTourPredefinedCameraOption\",\"value\":_vm.TourOptionList.PredefinedCameras}},[_vm._v(\"Predefined Cameras\")]):_vm._e()],1)],1):_vm._e(),(_vm.selectedTourOption == _vm.TourOptionList.PredefinedCameras && !_vm.tourInProgress)?_c('div',{staticClass:\"py-2\"},[_c('p',[_vm._v(\"Select a Video Tour\")]),_c('vue-select',{staticClass:\"dark flex-search w-90\",attrs:{\"options\":_vm.getAllToursByGroup,\"label\":\"title\",\"placeholder\":\"Tours\",\"data-cy\":\"predefinedTourList\",\"max-height\":\"55px\"},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [_vm._v(\" \"+_vm._s(option.title)+\" \")]}}],null,false,3194577329),model:{value:(_vm.selectedPredefinedTour),callback:function ($$v) {_vm.selectedPredefinedTour=$$v},expression:\"selectedPredefinedTour\"}})],1):_vm._e(),(_vm.tourInProgress && !_vm.isFailedCamera)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"}),_c('div',{staticClass:\"col-6\"},[_c('p',[_vm._v(\" Cameras : \"+_vm._s(_vm.cameraCount))])])]),_c('div',{staticClass:\"thin-line mb-2\"}),(_vm.selectedTourOption == _vm.TourOptionList.PredefinedCameras)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"text-center\"},[_c('i',{staticClass:\"fas fa-camera px-1 fa-lg\"}),(_vm.getPredefinedTour.currentCamera && _vm.getPredefinedTour.currentCamera.title)?_c('span',{staticClass:\"h5\"},[_vm._v(\" \"+_vm._s(_vm.getPredefinedTour.currentCamera.title)+\" \"),(_vm.getPredefinedTour.durationBasedCamera && !_vm.isCellStreaming)?_c('i',{staticClass:\"fas fa-spinner fa-spin fa-1x px-2\"}):_vm._e()]):_vm._e()])]),_c('div',{staticClass:\"col-12 font-weight-light py-1\"},[_c('div',{staticClass:\"thin-line pt-2\"}),_c('div',{staticClass:\"pt-4\"},[(_vm.tourStepComment)?_c('p',[_vm._v(_vm._s(_vm.tourStepComment))]):_c('p',{staticClass:\"text-warning\"},[_vm._v(\"No comments available\")])])])]):_vm._e(),(_vm.selectedTourOption == _vm.TourOptionList.PredefinedCameras &&\n\t\t\t\t_vm.getPredefinedTour.durationBasedCamera &&\n\t\t\t\t_vm.isCellStreaming)?_c('div',{staticClass:\"h5 text-center\"},[_c('p',[_vm._v(\"Wait duration: \"+_vm._s(_vm.getPredefinedTour.predefiendStep.durationTimer))])]):(_vm.selectedTourOption == _vm.TourOptionList.PredefinedCameras &&\n\t\t\t\t!_vm.isCellStreaming &&\n\t\t\t\t_vm.getPredefinedTour.durationBasedCamera)?_c('div',{staticClass:\"text-center\"},[_c('p',{staticClass:\"h5 text-warning\"},[_vm._v(\"Waiting for camera\")]),(_vm.getPredefinedTour.tourTimeout < _vm.tourDefaultTimeout-5)?_c('p',{staticClass:\"h6 text-danger\"},[_vm._v(\"Timeout in: \"+_vm._s(_vm.getPredefinedTour.tourTimeout))]):_vm._e()]):_vm._e(),(_vm.tourInProgress && !_vm.isFailedCamera)?_c('div',{staticClass:\"text-center\"},[(!_vm.tourInProgress || _vm.selectedTourOption !== _vm.TourOptionList.PredefinedCameras)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'arrowleft']}),expression:\"{down: ['shift', 'arrowleft']}\"}],staticClass:\"btn btn-secondary mt-2 mx-1 btn-lg\",attrs:{\"disabled\":_vm.atStart,\"data-cy\":\"tourPrevious\",\"id\":\"btnPrev\"},on:{\"click\":function($event){return _vm.camerasPrevious()},\"shortkey\":_vm.camerasPrevious}},[_c('i',{staticClass:\"fas fa-backward fa-1x\"})]):_vm._e(),(_vm.tourInProgress)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'backspace']}),expression:\"{down: ['shift', 'backspace']}\"}],staticClass:\"btn btn-secondary mt-2 mx-1 btn-lg\",attrs:{\"id\":\"btnReset\",\"data-cy\":\"tourStop\"},on:{\"click\":function($event){return _vm.stopTour()},\"shortkey\":_vm.stopTour}},[_c('i',{staticClass:\"fas fa-stop fa-1x\"})]):_vm._e(),(_vm.tourInProgress && _vm.selectedTourOption == _vm.TourOptionList.PredefinedCameras && _vm.getPredefinedTour.durationBasedCamera)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['enter']),expression:\"['enter']\",modifiers:{\"once\":true}}],staticClass:\"btn mt-2 mx-1 btn-lg\",class:[_vm.getPredefinedTour.isPausedTour ? 'btn-warning' : 'btn-primary'],attrs:{\"id\":\"btnPause\",\"data-cy\":\"tourPause\",\"disabled\":!_vm.tourInProgress},on:{\"click\":function($event){return _vm.pauseTourToggle()},\"shortkey\":_vm.pauseTourToggle}},[(_vm.getPredefinedTour.isPausedTour)?_c('i',{staticClass:\"fas fa-play fa-1x\"}):_c('i',{staticClass:\"fas fa-pause fa-1x\"})]):_vm._e(),(!_vm.tourInProgress || _vm.selectedTourOption !== _vm.TourOptionList.PredefinedCameras)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'arrowright']}),expression:\"{down: ['shift', 'arrowright']}\"}],staticClass:\"btn btn-secondary mt-2 mx-1 btn-lg\",attrs:{\"id\":\"btnNext\",\"disabled\":_vm.atEnd,\"data-cy\":\"tourNext\"},on:{\"click\":function($event){return _vm.camerasNext()},\"shortkey\":_vm.camerasNext}},[_c('i',{staticClass:\"fas fa-forward fa-1x\"})]):_vm._e(),(_vm.tourInProgress && _vm.selectedTourOption == _vm.TourOptionList.PredefinedCameras)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'x']}),expression:\"{down: ['shift', 'x']}\"}],staticClass:\"btn mt-2 mx-1 btn-lg btn-danger\",attrs:{\"id\":\"btnConfirm\",\"data-cy\":\"tourDecline\"},on:{\"click\":function($event){return _vm.loadNextCell(false)},\"shortkey\":function($event){return _vm.loadNextCell(false)}}},[_c('i',{staticClass:\"fas fa-times fa-1x\"})]):_vm._e(),(_vm.tourInProgress && _vm.selectedTourOption == _vm.TourOptionList.PredefinedCameras && !_vm.getPredefinedTour.durationBasedCamera)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'enter']}),expression:\"{down: ['shift', 'enter']}\"}],staticClass:\"btn mt-2 mx-1 btn-lg\",class:[_vm.camerasLeft ? 'btn-success' : 'btn-primary'],attrs:{\"id\":\"btnConfirm\",\"data-cy\":\"tourConfirm\"},on:{\"click\":function($event){return _vm.loadNextCell(true)},\"shortkey\":function($event){return _vm.loadNextCell(true)}}},[_c('i',{staticClass:\"fas fa-check fa-1x\"})]):_vm._e()]):_vm._e()]):(_vm.tourInProgress && _vm.selectedTourOption == _vm.TourOptionList.PredefinedCameras && _vm.isFailedCamera && _vm.failedCamera.camera)?_c('div',{attrs:{\"data-cy\":\"rejectedCamera\"}},[_c('h5',{staticClass:\"text-center pb-2\"},[_vm._v(\"Contains failed cameras\")]),_c('div',{staticClass:\"py-2\",attrs:{\"role\":\"group\"}},[_c('label',{attrs:{\"for\":\"input-live\"}},[_vm._v(\"Failed Camera - \"+_vm._s(_vm.failedCamera.camera.title))]),_c('b-form-input',{attrs:{\"aria-describedby\":\"input-live-help input-live-feedback\",\"placeholder\":\"Reason for camera above\",\"data-cy\":\"failedCameraNote\",\"trim\":\"\"},model:{value:(_vm.failedCamera.failedNote),callback:function ($$v) {_vm.$set(_vm.failedCamera, \"failedNote\", $$v)},expression:\"failedCamera.failedNote\"}})],1),_c('button',{staticClass:\"btn btn-primary mx-1 btn-md my-4\",attrs:{\"id\":\"btnConfirm\",\"data-cy\":\"confirmRejectedCamera\",\"disabled\":_vm.$v.failedCamera.failedNote.$invalid},on:{\"click\":function($event){return _vm.confirmFailedCamera()}}},[_vm._v(\" Confirm acknowledgment \")])]):_c('div',{staticClass:\"text-center\"},[(!_vm.tourInProgress)?_c('button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'space']}),expression:\"{down: ['shift', 'space']}\"}],staticClass:\"btn btn-primary mt-2 mx-1 btn-md\",attrs:{\"id\":\"btnStart\",\"data-cy\":\"startTour\",\"disabled\":_vm.$v.selectedPredefinedTour.$invalid},on:{\"click\":function($event){return _vm.startTour()},\"shortkey\":_vm.startTour}},[_vm._v(\" Start Video Tour \")]):_vm._e()])],1),_c('b-modal',{attrs:{\"data-cy\":\"tour-nearby-dialog\",\"id\":\"nearbyChangeModal\",\"size\":\"md\",\"centered\":\"\",\"role\":\"modal\"},scopedSlots:_vm._u([{key:\"modal-title\",fn:function(){return [_c('div',[_c('h4',[_vm._v(\"Nearby cameras changed\")])])]},proxy:true}],null,false,2888880727),model:{value:(_vm.showNearbyCameraChangeModal),callback:function ($$v) {_vm.showNearbyCameraChangeModal=$$v},expression:\"showNearbyCameraChangeModal\"}},[_c('div',{staticClass:\"modal-body\"},[_c('form',[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12 text-center\"},[_c('h5',[_vm._v(\"Nearby cameras has recently been changed\")])])])])])]),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"close-history-btn\"},on:{\"click\":function($event){_vm.showNearbyCameraChangeModal = !_vm.showNearbyCameraChangeModal}}},[_c('span',[_vm._v(\"Use current cameras\")])]),_c('a',{staticClass:\"btn btn-primary pull-right\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"close-history-btn\"},on:{\"click\":function($event){return _vm.updateNearbyCameras()}}},[_vm._v(\" Update current cameras \")])])],2)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { DeviceDetails } from \"@/store/devices/types\";\r\n\r\nexport interface AudioDevice extends DeviceSpec {\r\n eventRecordId?: number | null;\r\n canReceive: boolean;\r\n canTransmit: boolean;\r\n canTwoway: boolean;\r\n}\r\n\r\nexport interface DeviceSpec {\r\n deviceId?: number;\r\n title?: string;\r\n dllFile?: string;\r\n dllDeviceType?: string;\r\n urlTemplate?: string;\r\n host?: string;\r\n port?: string | number;\r\n user?: string;\r\n password?: string;\r\n extra?: string;\r\n input1?: string | number;\r\n input2?: string | number;\r\n deviceExtra?: string;\r\n}\r\n\r\nexport enum AudioTypes {\r\n receive,\r\n transmit,\r\n}\r\n\r\nexport enum AudioX {\r\n transmit = \"audioTx\",\r\n receive = \"audioRx\"\r\n}","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tour.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tour.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Tour.vue?vue&type=template&id=2aac8bbe\"\nimport script from \"./Tour.vue?vue&type=script&lang=ts\"\nexport * from \"./Tour.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Tour.vue?vue&type=style&index=0&id=2aac8bbe&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-row',{attrs:{\"no-gutters\":\"\",\"data-cy\":\"audio-control-container\"}},[(!_vm.getDeviceServiceEndpoint)?_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('p',{staticClass:\"text-center\"},[_vm._v(\"Device service endpoint isn't configured.\")])]):_vm._e(),(!!_vm.selectedAudioDevice)?_c('b-col',{staticClass:\"w-100 bg-color-audio pt-1\",attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"ml-2\"},[_vm._v(_vm._s(this.selectedAudioDevice.title))]),_c('div',{staticClass:\"float-right\"},[(_vm.canReceiveAudio)?_c('i',{staticClass:\"fas fa-speaker fa-md m-1 ml-2\",attrs:{\"data-cy\":\"receive-audio-icon\"}}):_vm._e(),(_vm.canTransmitAudio)?_c('i',{staticClass:\"fas fa-microphone fa-md m-1\",attrs:{\"data-cy\":\"transmit-audio-icon\"}}):_vm._e()])]):_vm._e(),(_vm.canReceiveAudio)?_c('b-col',{class:{ 'audio-container-divider' : (_vm.loadAudioControls && _vm.selectedAudioDevice) },staticStyle:{\"border\":\"none!important\"},attrs:{\"cols\":_vm.displayControlsWidth}},[_c('receive',{attrs:{\"data-cy\":\"audio-control-receive\",\"eventId\":_vm.eventId,\"deviceAuth\":_vm.auth,\"deviceServiceEndpoint\":_vm.getDeviceServiceEndpoint,\"audioReceive\":_vm.selectedAudioDevice},on:{\"trigger-reload\":function($event){return _vm.triggerReceiveReload()}}})],1):_vm._e(),(_vm.canTransmitAudio)?_c('b-col',{staticStyle:{\"border\":\"none!important\"},attrs:{\"cols\":_vm.displayControlsWidth}},[_c('transmit',{attrs:{\"data-cy\":\"audio-control-transmit\",\"eventId\":_vm.eventId,\"deviceAuth\":_vm.auth,\"deviceServiceEndpoint\":_vm.getDeviceServiceEndpoint,\"audioTransmit\":_vm.selectedAudioDevice}})],1):_vm._e(),_c('b-col',[_c('div',{staticClass:\"form-group\",staticStyle:{\"margin\":\"4px 10px\"}},[_c('b-form-input',{staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Search for devices\"},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}})],1)]),_c('b-col',{attrs:{\"cols\":\"12\"}},[_c('audio-list',{attrs:{\"data-cy\":\"audio-control-nearby-audiolist\",\"listTitle\":\"Nearby Devices\",\"audioDevices\":_vm.nearbyDevices,\"selectedAudioDevice\":_vm.selectedAudioDevice},on:{\"set-selected-device\":function (audioDevice) { return _vm.selectedAudioDevice = audioDevice; }}}),_c('audio-list',{attrs:{\"data-cy\":\"audio-control-group-audiolist\",\"listTitle\":\"Area Devices\",\"audioDevices\":_vm.groupDevices,\"selectedAudioDevice\":_vm.selectedAudioDevice},on:{\"set-selected-device\":function (audioDevice) { return _vm.selectedAudioDevice = audioDevice; }}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"h-100 audio-container bg-color-audio pt-4\"},[_c('div',{staticClass:\"h-75 d-flex justify-content-center align-items-center\"},[(_vm.audioReceive)?_c('div',{staticClass:\"d-flex flex-column clickable\",on:{\"click\":function($event){return _vm.toggleActiveState()}}},[_vm._m(0),_c('div',{staticClass:\"d-flex justify-content-center pt-2\",attrs:{\"id\":\"receive-audio-container\"}},[_c('div',{attrs:{\"id\":\"players\"}}),_c('b-button',{attrs:{\"disabled\":!_vm.audioReady,\"size\":\"sm\",\"variant\":_vm.currentVariant}},[_vm._v(\" Receive \"),(_vm.active)?_c('i',{staticClass:\"fas fa-volume fa-md\"}):_c('i',{staticClass:\"fas fa-volume-mute fa-md\"})]),(!_vm.audioReady)?_c('b-tooltip',{attrs:{\"target\":\"receive-audio-container\",\"triggers\":\"hover\",\"variant\":\"primary\"}},[_vm._v(\" \"+_vm._s(_vm.audioState)+\" \")]):_vm._e()],1)]):_vm._e()])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex justify-content-center\"},[_c('i',{staticClass:\"fas fa-speaker fa-3x\"})])}]\n\nexport { render, staticRenderFns }","import api from \"@/services/api.service\";\r\nimport EventRecordTypes from \"@/types/sv-data/enums/EventRecordTypes\";\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\n\r\nexport interface SvAudioContext {\r\n id?: string,\r\n url: string,\r\n dataType?: BinaryType,\r\n mimeType?: string,\r\n playingState: boolean\r\n}\r\n\r\n/**\r\n * Mixin which adds helper and default methods to audio components.\r\n */\r\n@Component({})\r\nexport default class AudioMixin extends Vue {\r\n private wsAudio: WebSocket = null;\r\n private audioElement: HTMLAudioElement = null;\r\n private stopped: boolean = false;\r\n private queue: Uint8Array[] = [];\r\n private buffer: SourceBuffer = null;\r\n private source: MediaSource = null;\r\n private playing: boolean = false;\r\n private invalidAuth: boolean = false;\r\n\r\n public eventRecordId: number = null;\r\n\r\n public async generateEventRecord(eventId: number, deviceId: number, message: string): Promise {\r\n if (!eventId) {\r\n return;\r\n }\r\n\r\n // Create an EventRecord for the device\r\n var auditRequest = {\r\n eventId: eventId,\r\n eventRecordTypeId: EventRecordTypes.AudioEvent,\r\n details: message,\r\n objectId: deviceId,\r\n };\r\n\r\n var eventRecord = (await api.postAudit(auditRequest)).data;\r\n return eventRecord.eventRecordID\r\n }\r\n\r\n private audioContextTemplate: SvAudioContext = {\r\n url: \"\",\r\n dataType: \"arraybuffer\",\r\n mimeType: \"audio/mp4;codecs=\\\"mp4a.40.2\\\"\",\r\n id: \"1\",\r\n playingState: false\r\n };\r\n\r\n private audioContext: SvAudioContext = { ...this.audioContextTemplate };\r\n\r\n /**\r\n * @summary Method which setups the websocket, audio context and any identional stuff for audio!\r\n * @param context our audio context\r\n */\r\n public async setupAudio(context: SvAudioContext): Promise {\r\n this.invalidAuth = false;\r\n await this.listenAudio(false);\r\n\r\n // Setup our audio context.\r\n if (!context || !this.setupAudioContext(context)) {\r\n // Failed to setup desired data\r\n this.audioContext = { ...this.audioContextTemplate };\r\n return;\r\n }\r\n\r\n // make an audio element.\r\n this.audioElement = document.createElement(\"audio\");\r\n this.audioElement.autoplay = true;\r\n this.audioElement.preload = \"none\";\r\n this.audioElement.id = this.audioContext.id;\r\n\r\n // create a media source\r\n this.source = new window.MediaSource();\r\n\r\n // on source open + adding source to src.\r\n this.source.onsourceopen = () => this.onSourceOpen();\r\n this.audioElement.src = URL.createObjectURL(this.source);\r\n }\r\n\r\n /**\r\n * @summary beforeDestory hook to close down ws and audio\r\n * @summary Vue Lifecycle hook\r\n */\r\n public beforeDestroy(): void {\r\n this.stopAudio();\r\n }\r\n\r\n /**\r\n * @summary method to setup audio Context data.\r\n * @param context Current audio context\r\n */\r\n private setupAudioContext(context: SvAudioContext): boolean {\r\n if (!context || !context.url) {\r\n this.audioErrorHandler(\r\n {\r\n message: \"url was not provided when trying to connect to audio device\",\r\n type: \"error\",\r\n title: \"Missing ws url\"\r\n }\r\n );\r\n return false;\r\n }\r\n this.audioContext.url = context.url;\r\n this.audioContext.dataType = context.dataType ?? this.audioContext.dataType;\r\n this.audioContext.id = context.id ?? this.audioContext.id;\r\n this.audioContext.mimeType = context.mimeType ?? this.audioContext.mimeType;\r\n this.audioContext.playingState = context.playingState ?? this.audioContext.playingState;\r\n return true;\r\n }\r\n\r\n private audioErrorHandler({ message, type, title }: { message: string, type: string, title: string }) {\r\n console.error(`error occurred with audio: ${title}. ${message}`);\r\n this.$notify({\r\n type: type,\r\n title: title,\r\n text: message\r\n });\r\n }\r\n\r\n /**\r\n * @summary callback which is called when the media source is ready\r\n */\r\n private onSourceOpen() {\r\n this.buffer = this.source.addSourceBuffer(this.audioContext.mimeType);\r\n\r\n this.buffer.onupdateend = () => this.bufferAddNext();\r\n\r\n this.wsAudio = new WebSocket(this.audioContext.url);\r\n\r\n // Setup the data type\r\n this.wsAudio.binaryType = this.audioContext.dataType;\r\n this.wsAudio.onmessage = (evt: MessageEvent) => this.onMessage(evt);\r\n\r\n this.listenAudio(this.audioContext.playingState);\r\n\r\n // Kick it all off.\r\n this.bufferAddNext();\r\n }\r\n\r\n /**\r\n * @summary method which is called when an event is received from our websocket.\r\n * @param evt our current event.\r\n */\r\n private onMessage(evt: MessageEvent): void {\r\n try {\r\n if (window.ArrayBuffer.prototype.isPrototypeOf(evt.data)) {\r\n // only process the data if the tab is not hidden the player will\r\n // be stopped and so won't be throwing away data from the SourceBuffer\r\n // so we'll cause it to get full and error out if we keep adding to it)\r\n\r\n // check the queue size - if it's very large then we are receiving\r\n // more data than we can process and need to dump the old data\r\n // (then the jumping further down will bring us up to real time)\r\n if (this.queue.length > 1000) {\r\n this.queue.length = 0;\r\n }\r\n\r\n // get the bytes from the array and add them to the queue\r\n const data = new window.Uint8Array(evt.data);\r\n this.queue.push(data);\r\n // restart adding if needed\r\n if (this.stopped) this.bufferAddNext();\r\n\r\n // start the element playing if it is not yet\r\n if (this.playing) this.audioElement.play();\r\n\r\n // check the current play position against what we have buffered ahead -\r\n // if there is too much of a gap jump to the end so we're not lagging behind\r\n // NOTE: cannot make it too small or it'll be constantly jumping, appearing\r\n // to the user as choppy. Also note Edge constantly\r\n // sits about 3.5s behind which must be its buffer (Chrome and Firefox are usually a\r\n // fraction of a second behind so their buffers must be smaller)\r\n const ranges = this.audioElement.buffered.length;\r\n if (ranges >= 1) {\r\n const bufferEnd = this.audioElement.buffered.end(ranges - 1);\r\n if (bufferEnd - this.audioElement.currentTime > 5) {\r\n this.audioElement.currentTime = bufferEnd;\r\n }\r\n }\r\n } else if (typeof evt.data === \"string\") {\r\n if (!evt.data.includes(\"PID=\") && (evt.data.includes(\"40\") || evt.data.includes(\"500\"))) {\r\n console.warn(`error occurred while fetching data: ${evt.data}`);\r\n this.invalidAuth = true;\r\n this.stopAudio();\r\n } else {\r\n // message is text data\r\n console.log(evt.data);\r\n }\r\n }\r\n } catch (ex){\r\n this.stopAudio();\r\n console.error(ex);\r\n }\r\n }\r\n\r\n /**\r\n * @summary when a new buffer is ready to be added\r\n */\r\n private bufferAddNext(): void {\r\n // start off assuming we are in the normal endless loop of being fired each time a buffer\r\n // update finishes then adding the next chunk of data (and being fired again when that ends and so on)\r\n this.stopped = false;\r\n\r\n // if we have not ended and the buffer is not currently updating,\r\n // then see if there is data in the queue to add\r\n if (this.source && !this.buffer.updating) {\r\n if (this.queue.length == 0) {\r\n // no more data to add - the loop is going to end so we will have to be restarted manually\r\n this.stopped = true;\r\n return;\r\n }\r\n\r\n try {\r\n this.buffer.appendBuffer(this.queue.shift());\r\n }\r\n catch (e) {\r\n // adding failed - the loop is going to end so we will have to be restarted manually\r\n this.stopped = true;\r\n if (e.name === \"QuotaExceededError\") {\r\n // buffer is full - we must be way behind so clear the queue and buffer of old data.\r\n // Then when the new data is added the jumping will move the player up to current time\r\n this.queue.length = 0;\r\n const ranges = this.audioElement.buffered.length;\r\n if (ranges >= 1) this.buffer.remove(0, this.audioElement.buffered.end(ranges - 1));\r\n }\r\n else {\r\n this.stopAudio();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @summary method to handle shutting down audio and websocket\r\n */\r\n public async stopAudio(): Promise {\r\n try\r\n {\r\n await this.listenAudio(false);\r\n } catch {\r\n console.log(\"Audio already stopped\")\r\n }\r\n\r\n if (this.wsAudio)\r\n this.wsAudio.close();\r\n\r\n if (this.source && this.source.sourceBuffers[0]) {\r\n this.source.removeSourceBuffer(this.source.sourceBuffers[0]);\r\n }\r\n\r\n this.queue = [];\r\n this.buffer = null;\r\n this.source = null;\r\n this.wsAudio = null;\r\n this.audioElement = null;\r\n this.audioContext = { ...this.audioContextTemplate };\r\n this.stopped = false;\r\n this.playing = false;\r\n }\r\n\r\n /**\r\n * @summary This method allows extended components to enable or disable the audio\r\n * playing through the browser.\r\n * @param state the audio state be playing or not\r\n */\r\n public async listenAudio(state: boolean): Promise {\r\n // Validate we have audio setup.\r\n if (!this.audioContext || !this.audioElement) {\r\n return;\r\n }\r\n state ? await this.audioElement.play(): this.audioElement.pause();\r\n this.playing = state;\r\n }\r\n\r\n public get audioReady(): boolean {\r\n return (!!this.audioContext && !!this.wsAudio && !!this.audioElement);\r\n }\r\n\r\n public get getAuthState(): boolean {\r\n return !this.invalidAuth;\r\n }\r\n\r\n public get audioState(): string {\r\n if (this.audioReady)\r\n return \"\";\r\n\r\n if (this.invalidAuth)\r\n return \"Authentication failed\";\r\n\r\n return \"Audio starting...\";\r\n }\r\n}","import { Component, Vue } from \"vue-property-decorator\";\r\nimport { AudioDevice, AudioTypes, AudioX, DeviceSpec } from \"@/types/audio/audio\";\r\n\r\n/**\r\n * Mixin which adds helpers to construct the audio address to stream/transmit audio\r\n */\r\n@Component({})\r\nexport default class AudioAddressMixin extends Vue {\r\n public audioOptionTypes: any = AudioTypes;\r\n public auth: string = \"\";\r\n\r\n /**\r\n * @summary method which constructs the websocket url depending on if its secure or unsecure\r\n * and the type of audio\r\n */\r\n public constructAddress(deviceServiceEndpoint: string, audioType: AudioX, audioDevice: AudioDevice): string {\r\n if (!audioDevice) {\r\n return \"\";\r\n }\r\n\r\n // What socket type we gonna use ws / wss\r\n const secure = location.protocol === \"https:\";\r\n return `${secure ? \"wss\" : \"ws\"}://${deviceServiceEndpoint}/devices/${audioType}?auth=${this.auth}&deviceId=${audioDevice.deviceId}&eventRecordId=${audioDevice.eventRecordId}`;\r\n }\r\n}","\r\nimport { Component, Prop, Mixins, Watch } from \"vue-property-decorator\";\r\nimport { AudioDevice, AudioX } from \"@/types/audio/audio\";\r\nimport AudioMixin, { SvAudioContext } from \"@/mixins/audio/AudioMixin\";\r\nimport AudioAddressMixin from \"@/mixins/audio/AudioAddressMixin\";\r\n\r\n@Component({})\r\nexport default class Receive extends Mixins(AudioMixin, AudioAddressMixin) {\r\n @Prop({ default: null, type: Object })\r\n private audioReceive: AudioDevice;\r\n\r\n @Prop({default: \"\", type: String})\r\n private deviceAuth: string; \r\n\r\n @Prop() \r\n private eventId: number;\r\n \r\n @Prop({default: \"\", type: String})\r\n private deviceServiceEndpoint: string;\r\n\r\n private active: boolean = false;\r\n private address: string = \"\";\r\n\r\n private async mounted() {\r\n this.auth = this.deviceAuth;\r\n await this.updateAudioUrl();\r\n window.addEventListener('beforeunload', this.unloadHook)\r\n }\r\n\r\n private unloadHook(): void {\r\n if (this.audioReceive) {\r\n this.auditAudioStop(this.audioReceive.deviceId, this.audioReceive.title)\r\n }\r\n }\r\n\r\n @Watch(\"audioReceive\")\r\n private async audioDeviceChanged(newDevice: AudioDevice | null, oldDevice: AudioDevice | null): Promise {\r\n if(!newDevice || (newDevice && oldDevice && newDevice.deviceId != oldDevice.deviceId)){\r\n await this.auditAudioStop(newDevice.deviceId, newDevice.title);\r\n }\r\n this.updateAudioUrl();\r\n }\r\n\r\n @Watch(\"eventId\")\r\n private async updateAudioUrl(): Promise {\r\n this.active = false;\r\n await this.listenAudio(false);\r\n await this.stopAudio();\r\n\r\n this.eventRecordId = null;\r\n if (!this.eventId || !this.audioReceive) \r\n return;\r\n\r\n this.eventRecordId = await this.generateEventRecord(this.eventId, this.audioReceive.deviceId, `Audio receive opened for device: ${this.audioReceive.title}`);\r\n var audioDevice = {...this.audioReceive};\r\n audioDevice.eventRecordId = this.eventRecordId;\r\n this.address = this.constructAddress(this.deviceServiceEndpoint, AudioX.receive, audioDevice);\r\n this.setAudio();\r\n }\r\n\r\n /**\r\n * @summary computed property which will return the varient state of the button\r\n * @returns { string } 'primary' or 'secondary'\r\n */\r\n private get currentVariant(): string {\r\n if (!this.getAuthState) \r\n return \"warning\";\r\n return this.active ? \"primary\" : \"secondary\";\r\n }\r\n\r\n /**\r\n * @summary method to toggle the active state for receive.\r\n */\r\n private async toggleActiveState(): Promise {\r\n if (!this.audioReady) {\r\n return;\r\n }\r\n\r\n this.active = !this.active;\r\n if (!this.active) {\r\n if (this.eventId && this.audioReceive && this.audioReceive.deviceId) {\r\n await this.auditAudioStop(this.audioReceive.deviceId, this.audioReceive.title);\r\n }\r\n await this.updateAudioUrl();\r\n } else {\r\n await this.listenAudio(true);\r\n }\r\n }\r\n\r\n public async auditAudioStop(deviceId: number, deviceTitle: string): Promise {\r\n await this.generateEventRecord(this.eventId, deviceId, `Audio receive closed for device: ${deviceTitle}`);\r\n }\r\n\r\n /**\r\n * @summary method which will setup the audio instance\r\n */\r\n private setAudio(): void {\r\n if (!this.address) \r\n return;\r\n\r\n const audioContext: SvAudioContext = {\r\n url: this.address,\r\n playingState: this.active\r\n }\r\n this.setupAudio(audioContext);\r\n }\r\n\r\n private async destroyed() {\r\n if (this.eventId && this.audioReceive) {\r\n await this.auditAudioStop(this.audioReceive.deviceId, this.audioReceive.title)\r\n }\r\n window.removeEventListener(\"beforeunload\", this.unloadHook);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Receive.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Receive.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Receive.vue?vue&type=template&id=dbf03e64&scoped=true\"\nimport script from \"./Receive.vue?vue&type=script&lang=ts\"\nexport * from \"./Receive.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Receive.vue?vue&type=style&index=0&id=dbf03e64&prod&scoped=true&lang=scss\"\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 \"dbf03e64\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"h-100 audio-container bg-color-audio pt-4\",attrs:{\"data-cy\":\"audio-transmit-container\"}},[_c('div',{staticClass:\"h-75 d-flex justify-content-center align-items-center\"},[(_vm.audioTransmit)?_c('div',{staticClass:\"d-flex flex-column clickable\",attrs:{\"data-cy\":\"audio-transmit-content\"},on:{\"click\":_vm.toggleState}},[_vm._m(0),_c('div',{staticClass:\"d-flex justify-content-center pt-2\",attrs:{\"id\":\"transmit-audio-container\"}},[(_vm.errorMessage && !_vm.loading)?_c('b-button',{attrs:{\"data-cy\":\"error-mic-btn\",\"size\":\"sm\",\"variant\":\"danger\",\"disabled\":_vm.loading}},[_vm._v(\" Error: Reconnect \"),(_vm.loading)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]):((!_vm.deviceProtocol && !_vm.micPermissionStatus) || (_vm.micPermissionStatus && _vm.deviceProtocol) && !_vm.loading)?_c('b-button',{attrs:{\"data-cy\":\"toggle-mic-btn\",\"size\":\"sm\",\"variant\":_vm.variant,\"disabled\":!_vm.micPermissionStatus || !_vm.micReady || _vm.loading}},[_vm._v(\" Transmit \"),(!_vm.webSocketOpen)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):(_vm.active)?_c('i',{staticClass:\"fas fa-microphone fa-md\"}):_c('i',{staticClass:\"fas fa-microphone-slash fa-md\"})]):(!_vm.errorMessage && !_vm.loading)?_c('b-button',{attrs:{\"size\":\"sm\",\"variant\":_vm.variant}},[_vm._v(\" Request microphone \"),_c('br'),_vm._v(\" permission \")]):(_vm.loading)?_c('b-button',{attrs:{\"size\":\"sm\"}},[_c('i',{staticClass:\"fas fa-spinner fa-spin\"})]):_vm._e(),(_vm.errorMessage && !_vm.loading)?_c('b-tooltip',{attrs:{\"target\":\"transmit-audio-container\",\"triggers\":\"hover\",\"variant\":\"danger\"}},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]):((_vm.micPermissionStatus && !_vm.deviceProtocol || !_vm.micPermissionStatus && !_vm.deviceProtocol) && !_vm.loading)?_c('b-tooltip',{attrs:{\"target\":\"transmit-audio-container\",\"triggers\":\"hover\",\"variant\":\"primary\"}},[_vm._v(\" \"+_vm._s(_vm.protocolError)+\" \")]):(!_vm.micPermissionStatus && !_vm.loading)?_c('b-tooltip',{attrs:{\"target\":\"transmit-audio-container\",\"triggers\":\"hover\",\"variant\":\"primary\"}},[_vm._v(\" \"+_vm._s(_vm.permissionError)+\" \")]):_vm._e()],1)]):_vm._e()])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex justify-content-center\"},[_c('i',{staticClass:\"fas fa-3x fa-microphone\"})])}]\n\nexport { render, staticRenderFns }","export const downsample = (\r\n buffer: Float32Array,\r\n sampleRate: number,\r\n outSampleRate: number\r\n): Int16Array | Float32Array => {\r\nif (outSampleRate === sampleRate) return buffer;\r\n\r\nif (outSampleRate > sampleRate) throw \"new sample rate needs to be smaller than the original rate\";\r\n\r\nconst sampleRateRatio = sampleRate / outSampleRate;\r\nlet result = new Int16Array(Math.round(buffer.length / sampleRateRatio));\r\n\r\n// move through the buffer X elements at a time based on the ratio, taking the average of those X elements\r\n// i.e. 48kHz is 6 times bigger than 8kHz, so take 6 samples from the incoming and average them\r\n// to make 1 for the outgoing\r\nlet offsetResult = 0;\r\nlet offsetBuffer = 0;\r\nlet nextOffsetBuffer = 0;\r\nlet accum = 0;\r\nlet count = 0;\r\nlet i;\r\nwhile (offsetResult < result.length) {\r\n nextOffsetBuffer = Math.round((offsetResult + 1) * sampleRateRatio);\r\n accum = 0;\r\n count = 0;\r\n for (i = offsetBuffer; i < nextOffsetBuffer && i < buffer.length; i += 1) {\r\n accum += buffer[i];\r\n count += 1;\r\n }\r\n\r\n result[offsetResult] = Math.min(1, accum / count) * 0x7FFF;\r\n offsetResult += 1;\r\n offsetBuffer = nextOffsetBuffer;\r\n}\r\nreturn result;\r\n}","import { Component, Vue } from \"vue-property-decorator\";\r\nimport { SvAudioContext } from \"./AudioMixin\";\r\nimport { downsample } from \"@/utils/audioSampler\";\r\n\r\n/**\r\n * Mixin which adds helpers and methods to consume and use the microphone\r\n */\r\n@Component({})\r\nexport default class MicMixin extends Vue {\r\n private audioStream: MediaStream = null;\r\n private wsMic: WebSocket = null;\r\n private micSource: MediaStreamAudioSourceNode = null;\r\n private micContext: AudioContext = null;\r\n public initialized: boolean = false;\r\n public errorMessage: string = \"\";\r\n private webSocketOpen: boolean = false;\r\n\r\n // TODO change this out to be a audio web worker in the future,\r\n // this is currently deprecated\r\n private scriptNode: ScriptProcessorNode = null;\r\n\r\n private micContextTemplate: SvAudioContext = {\r\n url: \"\",\r\n dataType: \"arraybuffer\",\r\n mimeType: \"audio/mp4;codecs=\\\"mp4a.40.2\\\"\",\r\n id: \"1\",\r\n playingState: false\r\n };\r\n\r\n private transmitContext: SvAudioContext = { ...this.micContextTemplate };\r\n\r\n public async mounted(): Promise {\r\n // Get permission to access the mic\r\n this.audioStream = await this.getAudioAuth();\r\n }\r\n\r\n /**\r\n * @summary Method which setups the websocket, audio context and any identional stuff for audio!\r\n * @param context our audio context\r\n */\r\n public async setupMic(context: SvAudioContext): Promise {\r\n this.errorMessage = \"\";\r\n // close all connections and audio before spinning up a new ws/ audio instance.\r\n await this.closeMicContext();\r\n\r\n if (!this.deviceProtocol) {\r\n console.warn(\"Ssl is not enabled, mic context couldn't be created\");\r\n return;\r\n }\r\n\r\n // Setup our audio context.\r\n this.setupMicContext(context);\r\n\r\n this.micContext = new AudioContext();\r\n\r\n // Get permission to access the mic\r\n this.audioStream = await this.getAudioAuth();\r\n\r\n if (!this.audioStream) {\r\n console.warn(\r\n \"couldn't get microphone authentication. \\\r\n this could be due to not using SSL, no devices connected\"\r\n );\r\n this.errorMessage = \"Mic Authentication failed.\"\r\n // close all connections and audio before spinning up a new ws/ audio instance.\r\n await this.closeMicContext();\r\n\r\n return;\r\n }\r\n\r\n this.setupWebsocket();\r\n\r\n // Check if our mic is on by default, if so turn it off.\r\n if (\r\n !this.transmitContext.playingState &&\r\n this.micContext.state === \"running\"\r\n ) await this.toggleMic(false);\r\n\r\n this.initialized = true;\r\n }\r\n\r\n private setupMicContext(context: SvAudioContext) {\r\n if (!context.url) {\r\n this.errorMessage = \"Address is required when setting up mic audio\"\r\n throw new Error(\"address is required when setting up mic audio\");\r\n }\r\n this.transmitContext.url = context.url;\r\n this.transmitContext.dataType = context.dataType ?? this.transmitContext.dataType;\r\n this.transmitContext.id = context.id ?? this.transmitContext.id;\r\n this.transmitContext.mimeType = context.mimeType ?? this.transmitContext.mimeType;\r\n this.transmitContext.playingState = context.playingState ?? this.transmitContext.playingState;\r\n }\r\n\r\n /**\r\n * @summary method which sets up the websocket and websocket callbacks.\r\n */\r\n private setupWebsocket(): void {\r\n this.wsMic = new WebSocket(this.transmitContext.url);\r\n\r\n this.wsMic.onerror = (event: any) => {\r\n console.error(\"close mic context - on error\", event);\r\n if (event && event.reason) {\r\n this.errorMessage = event.reason;\r\n } else {\r\n this.errorMessage = \"Unknown error occurred\"\r\n }\r\n this.closeMicContext()\r\n };\r\n\r\n this.wsMic.onclose = (event: any) => {\r\n if (event && event.reason) {\r\n this.webSocketOpen = false;\r\n console.error(\"close mic context\", event);\r\n this.errorMessage = event.reason;\r\n this.closeMicContext();\r\n }\r\n }\r\n\r\n // Setup the data type\r\n this.wsMic.binaryType = this.transmitContext.dataType;\r\n this.wsMic.onmessage = evt => {\r\n if (evt.data === \"133 Audio Transmit started\") {\r\n this.webSocketOpen = true;\r\n }\r\n }\r\n this.wsMic.onopen = evt => this.wsOnOpen(evt);\r\n }\r\n\r\n /**\r\n * @summary callback which is called when the websocket is open.\r\n * @param evt current event for the websocket openning.\r\n */\r\n private wsOnOpen(evt: Event): void {\r\n this.micSource = this.micContext.createMediaStreamSource(this.audioStream);\r\n\r\n this.scriptNode = this.micContext.createScriptProcessor(1024, 1, 1);\r\n\r\n this.micSource.connect(this.scriptNode);\r\n this.scriptNode.connect(this.micContext.destination);\r\n\r\n // NOTE: Change this process to the updated way. This onaudioprocess is currently deprecated.\r\n this.scriptNode.onaudioprocess = evt => {\r\n this.sendMicData(evt);\r\n }\r\n }\r\n\r\n /**\r\n * @summary method which is called everytime our onaudioprocess fires.\r\n * this method deals with downsampling the audio and sending it via\r\n * the websocket created at init.\r\n * @param evt the current audio processing event\r\n */\r\n private sendMicData(evt: AudioProcessingEvent) {\r\n const audioBuffer: Float32Array = evt.inputBuffer.getChannelData(0);\r\n const dSampledBuffer = downsample(audioBuffer, this.micContext.sampleRate, 8000);\r\n if (this.wsMic.readyState != WebSocket.OPEN) {\r\n this.errorMessage = \"Websocket unexpectedly closed\"\r\n return;\r\n }\r\n this.wsMic.send(dSampledBuffer.buffer);\r\n }\r\n\r\n /**\r\n * @summary method to get auth for using mic within the browser\r\n * @returns MediaStream\r\n */\r\n private async getAudioAuth() {\r\n if (!navigator || !navigator.mediaDevices)\r\n return;\r\n\r\n return await navigator.mediaDevices.getUserMedia({\r\n audio: true\r\n });\r\n }\r\n\r\n /**\r\n * @summary method which toggles the status of the mic, we do this by the mic context\r\n * resume or suspend methods.\r\n * @param status the current state which the mic is going to be put into.\r\n */\r\n public async toggleMic(status: boolean): Promise {\r\n // If our context is not setup, lets try to set it up here.\r\n if (!this.micContext) {\r\n if (!this.initialized)\r\n throw new Error(\"please first setup transmitContext via setupMic\");\r\n\r\n await this.setupMic(this.transmitContext);\r\n\r\n if (!this.micContext)\r\n throw new Error(`tried to toggle mic to '${status}', mic context was not initialized.\r\n Tried to initialized mic however failed doing so.`\r\n );\r\n }\r\n\r\n status ? await this.micContext.resume() : await this.micContext.suspend();\r\n }\r\n\r\n /**\r\n * @summary method which closes mic/audio websocket/s & any audio nodes.\r\n */\r\n public async closeMicContext(): Promise {\r\n this.webSocketOpen = false;\r\n this.initialized = false;\r\n if (this.micContext) {\r\n await this.micContext.suspend();\r\n await this.micContext.close();\r\n this.micContext = null;\r\n }\r\n\r\n if (this.audioStream) {\r\n this.audioStream.getAudioTracks().forEach((track: MediaStreamTrack) => {\r\n track.stop();\r\n });\r\n this.audioStream = null;\r\n }\r\n\r\n if (this.micSource) {\r\n this.micSource.disconnect();\r\n this.micSource = null;\r\n }\r\n\r\n if (this.wsMic) {\r\n this.wsMic.close();\r\n this.wsMic = null;\r\n }\r\n }\r\n\r\n public get micReady(): boolean {\r\n return (!!this.audioStream && this.deviceProtocol && !!this.micContext && this.webSocketOpen);\r\n }\r\n\r\n /**\r\n * @summary vue lifecycle hook which gets called at the descruction of the component\r\n * which has consumed this mixin.\r\n */\r\n public async beforeDestroy(): Promise {\r\n await this.closeMicContext();\r\n }\r\n\r\n /**\r\n * @summary method which gets us the status of the mic permission\r\n */\r\n public get micPermissionStatus(): boolean {\r\n return !!this.audioStream;\r\n }\r\n\r\n /**\r\n * @summary method which returns the current status of our client ssl.\r\n * this is used to detect if we should be doing none-secure or secure connections\r\n * note: most modern browsers require https (wss) to be enabled before mic audio\r\n * can be captured.\r\n */\r\n public get deviceProtocol(): boolean {\r\n return location.protocol === \"https:\";\r\n }\r\n\r\n /**\r\n * @summary computed property to help give a basic front facing error message\r\n * is SSL isn't setup/configured. Which is for the most part required\r\n * when capturing micrphone device audio.\r\n */\r\n public get protocolError(): string {\r\n return this.deviceProtocol ? \"\" : \"SSL (https) is required to transmit audio\";\r\n }\r\n\r\n /**\r\n * @summary computed property to give a basic front facing error message\r\n * if the user haven't given permission access to device\r\n * typeof microphone\r\n */\r\n public get permissionError(): string {\r\n return this.micPermissionStatus ? \"\" : \"Permission required to access mic via the browser.\";\r\n }\r\n\r\n /**\r\n * @summary method which calls for device auth if it currently isn't given.\r\n * @returns returns a boolean if the operation was successful or not.\r\n * @async this method is asynchronous\r\n */\r\n public async requestDeviceAuth(): Promise {\r\n this.audioStream = await this.getAudioAuth();\r\n return !!this.audioStream;\r\n }\r\n}","\r\nimport { Component, Prop, Mixins, Watch } from \"vue-property-decorator\";\r\nimport { AudioDevice, AudioX } from \"@/types/audio/audio\";\r\nimport MicMixin from '@/mixins/audio/MicMixin';\r\nimport AudioAddressMixin from \"@/mixins/audio/AudioAddressMixin\";\r\nimport AudioMixin from '@/mixins/audio/AudioMixin';\r\n\r\n@Component({})\r\nexport default class Transmit extends Mixins(MicMixin, AudioAddressMixin, AudioMixin) {\r\n @Prop({ default: null, type: Object }) \r\n private audioTransmit: AudioDevice;\r\n\r\n @Prop({default: \"\", type: String})\r\n private deviceAuth: string; \r\n\r\n @Prop() \r\n private eventId: number;\r\n\r\n @Prop({default: \"\", type: String})\r\n private deviceServiceEndpoint: string;\r\n\r\n private active: boolean = false;\r\n private address: string = \"\";\r\n private loading: boolean = false;\r\n\r\n public async mounted(): Promise {\r\n this.auth = this.deviceAuth;\r\n await this.updateAudioUrl();\r\n window.addEventListener('beforeunload', this.unloadHook)\r\n }\r\n\r\n private unloadHook(): void {\r\n if (this.audioTransmit) {\r\n this.auditAudioStop(this.audioTransmit.deviceId, this.audioTransmit.title)\r\n }\r\n }\r\n\r\n @Watch(\"audioTransmit\")\r\n private async audioDeviceChanged(newDevice: AudioDevice | null, oldDevice: AudioDevice | null): Promise {\r\n if(!newDevice || (newDevice && oldDevice && newDevice.deviceId != oldDevice.deviceId)){\r\n await this.auditAudioStop(newDevice.deviceId, newDevice.title);\r\n }\r\n this.updateAudioUrl();\r\n }\r\n\r\n\r\n @Watch(\"eventId\")\r\n private async updateAudioUrl(): Promise {\r\n try {\r\n this.errorMessage = \"\";\r\n this.active = false;\r\n this.loading = true;\r\n if (this.initialized) {\r\n await this.toggleMic(false);\r\n }\r\n\r\n await this.closeMicContext();\r\n\r\n this.eventRecordId = null;\r\n if (!this.eventId || !this.audioTransmit) return;\r\n\r\n this.eventRecordId = await this.generateEventRecord(this.eventId, this.audioTransmit.deviceId, `Audio transmit opened for device: ${this.audioTransmit.title}`);\r\n var audioDevice = {...this.audioTransmit};\r\n audioDevice.eventRecordId = this.eventRecordId;\r\n this.address = this.constructAddress(this.deviceServiceEndpoint, AudioX.transmit, audioDevice);\r\n await this.setMic();\r\n await this.requestPermission();\r\n } catch (ex) {\r\n console.error(ex);\r\n }\r\n this.loading = false;\r\n }\r\n\r\n @Watch(\"errorMessage\")\r\n private errorMessageWatch(): void {\r\n if (this.errorMessage) {\r\n this.active = false;\r\n this.toggleMic(false);\r\n }\r\n }\r\n\r\n /**\r\n * @summary computed property which will return the varient of the transmit button\r\n * depending on the status of the mic, if it has permission, has ssl, enabled etc.\r\n * @returns { string } 'warning', 'primary' or 'secondary'\r\n */\r\n private get variant(): string {\r\n if (!this.deviceProtocol) {\r\n return \"warning\";\r\n }\r\n\r\n if (this.errorMessage) {\r\n return \"danger\";\r\n }\r\n\r\n return this.active ? \"primary\" : \"secondary\";\r\n }\r\n\r\n /**\r\n * @summary method which will toggle the state of the active for transmit\r\n */\r\n private async toggleActiveState(): Promise {\r\n this.active = !this.active;\r\n if (!this.active || this.errorMessage) {\r\n if (this.eventId && this.audioTransmit && this.audioTransmit.deviceId) {\r\n await this.auditAudioStop(this.audioTransmit.deviceId, this.audioTransmit.title);\r\n }\r\n await this.updateAudioUrl();\r\n } else {\r\n await this.toggleMic(true);\r\n }\r\n }\r\n\r\n /**\r\n * @summary method which will setup the mic instance\r\n */\r\n private async setMic() {\r\n if (!this.address) \r\n return;\r\n \r\n await this.setupMic({\r\n url: this.address,\r\n playingState: this.active\r\n });\r\n }\r\n\r\n /**\r\n * @summary method which will request the permission from the user if they didn't give the page mic permission\r\n */\r\n private async requestPermission(): Promise {\r\n await this.requestDeviceAuth();\r\n }\r\n\r\n private toggleState(): void {\r\n if (this.loading) {\r\n return;\r\n }\r\n\r\n if (this.errorMessage || ((!this.deviceProtocol && !this.micPermissionStatus) || (this.micPermissionStatus && this.deviceProtocol) && this.micReady)) {\r\n this.toggleActiveState();\r\n return;\r\n }\r\n\r\n if (!this.micPermissionStatus) {\r\n this.requestPermission();\r\n }\r\n }\r\n\r\n private async auditAudioStop(deviceId: number, deviceTitle: string): Promise {\r\n await this.generateEventRecord(this.eventId, deviceId, `Audio transmit closed for device: ${deviceTitle}`);\r\n }\r\n\r\n private async destroyed() {\r\n if(this.eventId && this.audioTransmit){\r\n await this.auditAudioStop(this.audioTransmit.deviceId, this.audioTransmit.title)\r\n }\r\n window.removeEventListener(\"beforeunload\", this.unloadHook);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Transmit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Transmit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Transmit.vue?vue&type=template&id=c01e407c&scoped=true\"\nimport script from \"./Transmit.vue?vue&type=script&lang=ts\"\nexport * from \"./Transmit.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Transmit.vue?vue&type=style&index=0&id=c01e407c&prod&scoped=true&lang=scss\"\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 \"c01e407c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"list-group\"},[_c('div',{staticClass:\"list-group-item list-group-item-action matrix-sidebar-header\",on:{\"click\":function($event){_vm.open = !_vm.open}}},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:_vm.open ? '' : 'closed'}),_c('b',{staticStyle:{\"word-break\":\"all\"}},[_vm._v(_vm._s(_vm.listTitle)+\" (\"+_vm._s(_vm.audioDevices.length)+\")\")])]),_c('b-collapse',{attrs:{\"visible\":\"\",\"id\":\"search-collapse\"},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},[_c('div',{attrs:{\"data-cy\":\"audio-container\"}},[_vm._l((_vm.audioDevices),function(audio,index){return _c('b-list-group',{key:index},[(audio.canReceive || audio.canTransmit || audio.canTwoway)?_c('b-list-group-item',{class:{ 'active-audio': _vm.selectedAudioDevice && audio.deviceId === _vm.selectedAudioDevice.deviceId },staticStyle:{\"cursor\":\"pointer\",\"padding-right\":\"5px!important\"}},[_c('div',{attrs:{\"data-cy\":(\"audio-device-container-\" + (audio.deviceId))},on:{\"click\":function($event){return _vm.setSelectedAudioDevice(audio)}}},[_c('table',{staticClass:\"w-100\"},[_c('tr',[_c('td',{staticStyle:{\"width\":\"14vw\"}},[_vm._v(\" \"+_vm._s(audio.title)+\" \")]),_c('td',{staticStyle:{\"width\":\"14px\"}},[(audio.canReceive)?_c('i',{staticClass:\"fas fa-speaker\",attrs:{\"data-cy\":(\"audio-device-receive-\" + (audio.deviceId))}}):_vm._e()]),_c('td',{staticStyle:{\"width\":\"10px\"}},[(audio.canTransmit)?_c('i',{staticClass:\"fas fa-microphone\",attrs:{\"data-cy\":(\"audio-device-transmit-\" + (audio.deviceId))}}):_vm._e()])])])])]):_vm._e()],1)}),(!_vm.audioDevices || !_vm.audioDevices.length)?_c('div',{attrs:{\"data-cy\":\"no-audio-devices-container\"}},[_c('p',{staticClass:\"text-center pt-2\",attrs:{\"data-cy\":\"no-audio-devices\"}},[_vm._v(\"No audio devices found.\")])]):_vm._e()],2)])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Emit } from \"vue-property-decorator\";\r\nimport { AudioDevice, AudioTypes } from \"@/types/audio/audio\";\r\n\r\n@Component({})\r\nexport default class AudioList extends Vue {\r\n @Prop({default:\"Devices\"})\r\n private listTitle: string\r\n\r\n @Prop({default: []}) \r\n private audioDevices!: AudioDevice[];\r\n\r\n @Prop({default: null})\r\n private selectedAudioDevice: AudioDevice | null;\r\n\r\n private open: boolean = true;\r\n private audioOptionTypes: any = AudioTypes;\r\n\r\n @Emit(\"set-selected-device\")\r\n private setSelectedAudioDevice(audioDevice: AudioDevice | null): AudioDevice | null {\r\n return audioDevice;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AudioList.vue?vue&type=template&id=a0d31be4&scoped=true\"\nimport script from \"./AudioList.vue?vue&type=script&lang=ts\"\nexport * from \"./AudioList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AudioList.vue?vue&type=style&index=0&id=a0d31be4&prod&scoped=true&lang=scss\"\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 \"a0d31be4\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { AudioDevice } from \"@/types/audio/audio\";\r\n\r\n// Audio Components\r\nimport Receive from \"./Receive.vue\";\r\nimport Transmit from \"./Transmit.vue\";\r\nimport { EventDetails } from '@/store/site-monitor/types';\r\nimport { SessionResource } from '@/store/sessions/types';\r\n\r\n// constants\r\nimport AudioLists from './AudioList.vue';\r\nimport api from '@/services/api.service';\r\n\r\nconst deviceServiceRegex = /(^\\w+:|^)\\/\\//;\r\n\r\n// vuex modules\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst SMCameras = namespace(\"siteMonitorCameras\");\r\nconst Session = namespace(\"sessions\");\r\n\r\ninterface AudioDeviceNearby extends AudioDevice {\r\n nearby: boolean;\r\n}\r\n\r\n@Component({\r\n components: {\r\n \"receive\": Receive,\r\n \"transmit\": Transmit,\r\n \"audio-list\": AudioLists\r\n }\r\n})\r\nexport default class AudioControl extends Vue {\r\n @Session.Getter \r\n private getSession: (sessionId: number | string) => string;\r\n\r\n @Session.Action \r\n private updateSession: ({ eventId, resourceId }: { eventId?: number, resourceId: number }) => Promise;\r\n\r\n @SMCameras.State(\"deviceControllerAudioDevices\") \r\n private nearbyAudioDevices!: any[];\r\n\r\n @SiteMonitor.Getter(\"getEventDetails\") \r\n private eventDetails: EventDetails;\r\n\r\n\r\n private selectedAudioDevice: AudioDevice = null;\r\n private audioDevices: AudioDeviceNearby[] = [];\r\n private filter: string = \"\";\r\n private auth: string = \"\";\r\n\r\n private async mounted() {\r\n this.audioDevices = [];\r\n await this.updateSession({ resourceId: SessionResource.DeviceServiceSession });\r\n this.auth = this.getSession(SessionResource.DeviceServiceSession);\r\n await this.fetchNearbyAudio();\r\n await this.fetchGroupAudio(this.groupId, null);\r\n }\r\n\r\n /**\r\n * @summary method which will return the DeviceServiceEndpoint\r\n * this method also stricts out the extra bits which could exist like http/s etc.\r\n */\r\n private get getDeviceServiceEndpoint(): string {\r\n\t\tif(this.eventDetails.devicesEndpoint){\r\n\t\t\treturn this.eventDetails.devicesEndpoint.replace(deviceServiceRegex, '');\r\n\t\t}\r\n return api.getDeviceServiceAddress().replace(deviceServiceRegex, '');\r\n }\r\n\r\n /**\r\n * @summary computed property which will return if at least 1 of the audio types are chosen\r\n */\r\n private get loadAudioControls() {\r\n return (this.selectedAudioDevice) ? true : false;\r\n }\r\n\r\n /**\r\n * @summary depending on the components rendered, it will change the column size.\r\n */\r\n private get displayControlsWidth(): number {\r\n return (this.selectedAudioDevice && this.selectedAudioDevice.canReceive && this.selectedAudioDevice.canTransmit) ? 6 : 12;\r\n }\r\n\r\n // ---------------------------------------------------------------------------\r\n private get groupId(): number {\r\n return (this.eventDetails && this.eventDetails.groupID) ? this.eventDetails.groupID : null;\r\n }\r\n \r\n private get eventId(): number {\r\n return this.eventDetails ? this.eventDetails.eventID : null;\r\n }\r\n\r\n @Watch(\"nearbyAudioDevices\", { deep: true })\r\n private async fetchNearbyAudio(): Promise {\r\n //filter out any nearby existing audio devices\r\n this.audioDevices = this.audioDevices.filter(ad => !ad.nearby);\r\n var deviceIds = this.nearbyAudioDevices ? this.nearbyAudioDevices.map(ad => ad.objectId) : [];\r\n if (!deviceIds.length) \r\n return;\r\n\r\n const audioDeviceInfo = await api.fetchAudioDevicesByIds(deviceIds);\r\n\r\n if (!audioDeviceInfo) \r\n return;\r\n\r\n this.audioDevices = this.audioDevices.filter(ad => !ad.nearby);\r\n this.audioDevices = this.audioDevices.concat(audioDeviceInfo.map(d => {\r\n return { ...d, nearby: true, }\r\n }));\r\n }\r\n\r\n @Watch(\"groupId\", { deep: true })\r\n private async fetchGroupAudio(newGroupId: number | null, oldGroupId: number | null): Promise {\r\n if (newGroupId == oldGroupId)\r\n return;\r\n\r\n //filter out any existing group audio devices\r\n this.audioDevices = this.audioDevices.filter(ad => ad.nearby);\r\n\r\n if(!newGroupId)\r\n return;\r\n\r\n let audioDeviceInfo = await api.fetchAudioDevicesByGroupId(newGroupId);\r\n\r\n if (!audioDeviceInfo) \r\n return;\r\n\r\n //filter out any devices that already exist in the nearby\r\n this.audioDevices = this.audioDevices.concat(audioDeviceInfo.map(d => {\r\n return { ...d, nearby: false, }\r\n }));\r\n\r\n }\r\n\r\n private get filteredDevices(): AudioDeviceNearby[] {\r\n if (this.filter) {\r\n return this.audioDevices.filter(ad => ad.title.toLowerCase().includes(this.filter.toLowerCase()));\r\n } else {\r\n return this.audioDevices;\r\n }\r\n }\r\n \r\n private get nearbyDevices(): AudioDevice[] {\r\n return this.filteredDevices.filter(ad => ad.nearby);\r\n }\r\n\r\n private get groupDevices(): AudioDevice[] {\r\n return this.filteredDevices.filter(ad => !ad.nearby && !this.nearbyDevices.map(nd => nd.deviceId).includes(ad.deviceId));\r\n }\r\n\r\n private get canReceiveAudio(): boolean {\r\n return this.loadAudioControls && this.selectedAudioDevice.canReceive;\r\n }\r\n\r\n private get canTransmitAudio(): boolean {\r\n return this.loadAudioControls && this.selectedAudioDevice.canTransmit;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioControl.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioControl.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AudioControl.vue?vue&type=template&id=1193763a&scoped=true\"\nimport script from \"./AudioControl.vue?vue&type=script&lang=ts\"\nexport * from \"./AudioControl.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AudioControl.vue?vue&type=style&index=0&id=1193763a&prod&lang=scss\"\nimport style1 from \"./AudioControl.vue?vue&type=style&index=1&id=1193763a&prod&scoped=true&lang=scss\"\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 \"1193763a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"list-group\"},[_c('div',{staticClass:\"list-group-item list-group-item-action\",on:{\"click\":function($event){_vm.openOutputs = !_vm.openOutputs}}},[_c('i',{staticClass:\"fas fa-chevron-down m-r-10 collapse-icon\",class:_vm.openOutputs ? '' : 'closed'}),_c('b',[_vm._v(_vm._s(_vm.title)+\" (\"+_vm._s(_vm.outputs.length)+\")\")])]),_c('b-collapse',{attrs:{\"id\":\"nearby-collapse\"},model:{value:(_vm.openOutputs),callback:function ($$v) {_vm.openOutputs=$$v},expression:\"openOutputs\"}},_vm._l((_vm.outputs),function(output){return _c('span',{key:output.objectID,staticClass:\"list-group-item\",class:{ 'list-group-item-action': !output.controlRequest },on:{\"click\":function($event){return _vm.pulseOutput(output)}}},[_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1\"},[_c('div',[_vm._v(_vm._s(output.title))]),_c('div',[_c('small',[_vm._v(_vm._s(output.areaTitle))])])]),(output.distance)?_c('div',{staticClass:\"flex-shrink-0\"},[_vm._v(_vm._s(_vm._f(\"renderDistance\")(output.distance,output.imperial)))]):_vm._e()]),(output.controlRequest)?_c('div',[_c('div',{staticClass:\"form-group\",staticStyle:{\"margin-top\":\"15px\"}},[_c('label',[_vm._v(\"Reason:\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(output.controlReason),expression:\"output.controlReason\"}],staticClass:\"custom-textarea\",staticStyle:{\"height\":\"150px\"},attrs:{\"placeholder\":\"Reason for action\",\"max\":\"5000\"},domProps:{\"value\":(output.controlReason)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(output, \"controlReason\", $event.target.value)}}})]),(output.controlError)?_c('div',{staticClass:\"alert alert-danger\"},[_vm._v(_vm._s(output.controlError))]):_vm._e(),(output.canPulse)?_c('a',{staticClass:\"btn btn-secondary\",class:{ disabled: output.controlReason.length == 0 },attrs:{\"disabled\":output.controlReason.length == 0},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.emitPulse(output)}}},[(!output.sendingCommand)?_c('span',[_vm._v(_vm._s(output.isOutput ? 'Pulse' : 'Momentary Unlock'))]):_vm._e(),(output.sendingCommand)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]):_vm._e(),_c('a',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.cancelPulse(output)}}},[_vm._v(\"Cancel\")]),_c('div',[(output.canOnOff)?_c('a',{staticClass:\"btn btn-secondary\",class:{ disabled: output.controlReason.length == 0 },attrs:{\"disabled\":output.controlReason.length == 0},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setOutput(output, true)}}},[(!output.sendingCommand)?_c('span',[_vm._v(\"On\")]):_vm._e(),(output.sendingCommand)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]):_vm._e(),(output.canOnOff)?_c('a',{staticClass:\"btn btn-secondary\",class:{ disabled: output.controlReason.length == 0 },attrs:{\"disabled\":output.controlReason.length == 0},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setOutput(output, false)}}},[(!output.sendingCommand)?_c('span',[_vm._v(\"Off\")]):_vm._e(),(output.sendingCommand)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]):_vm._e()])]):_vm._e()])}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport { DeviceControllerOutput } from \"@/store/site-monitor-cameras/types\";\r\nimport { renderDistance } from \"@/filters\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\n@Component({\r\n\tfilters: {\r\n\t\trenderDistance\r\n\t}\r\n})\r\nexport default class ControlDevicesList extends Vue {\r\n\r\n\t@Prop() outputs!: DeviceControllerOutput;\r\n\t@Prop() title!: string;\r\n\r\n\tpublic openOutputs: boolean = true;\r\n\r\n\t@Emit(\"doPulseOutput\")\r\n\tprivate async emitPulse(output: DeviceControllerOutput): Promise {\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprivate setOutput(output: DeviceControllerOutput, on: boolean): void {\r\n\t\tthis.$emit(\"setOutput\", output, on);\r\n\t}\r\n\r\n\tprivate pulseOutput(output: DeviceControllerOutput): void {\r\n\t\toutput.controlRequest = true;\r\n\t}\r\n\r\n\tprivate cancelPulse(output: DeviceControllerOutput): void {\r\n\t\toutput.controlRequest = false;\r\n\t\toutput.controlReason = \"\";\r\n\t}\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ControlDevicesList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ControlDevicesList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ControlDevicesList.vue?vue&type=template&id=708b2ebb\"\nimport script from \"./ControlDevicesList.vue?vue&type=script&lang=ts\"\nexport * from \"./ControlDevicesList.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","export interface SiteMonitorCamerasState {\r\n\tlayoutIndex: number;\r\n\tlayouts: number[][];\r\n\tmatrixContents: MatrixContents;\r\n\tmatrixPushContents: MatrixContents;\r\n\tmediaMatrixCameras: any[];\r\n\tmediaMatrixClips: any[];\r\n\tmediaMatrixLayers: any[];\r\n\tareaCameras: CameraType[];\r\n\tdeviceControllerCameras: any[];\r\n\tdeviceControllerOutputs: any[];\r\n\tdeviceControllerAudioDevices: any[];\r\n\tdeviceControllerClips: any[];\r\n\tmediaMatrixIsNew: boolean;\r\n\tfetchingMatrix: boolean;\r\n\tmediaMatrixFilter: string;\r\n\tmediaMatrixEventId: number | null;\r\n\tawaitingCamera: any;\r\n\tawaitingClip: any;\r\n\tlinkRecord: any;\r\n\tsaveLink: boolean;\r\n\trequiresEventDetails: boolean;\r\n\thighlightCellIndex: number | null;\r\n\tmediaMatrixLastChanged: number;\r\n\twaitingForEvent: boolean;\r\n\tsearchedCameras: any[];\r\n\tsearchedOutputs: any[];\r\n\tshownAuditClips: string[];\r\n\tareaOutputs: DeviceControllerOutput[];\r\n\tareaCameraCount: number;\r\n\tsearchedCameraCount: number;\r\n\tsearchedGroupCameraCount: number;\r\n}\r\n\r\nexport interface MatrixContents {\r\n\t[key: number]: {\r\n\t\tcamera?: MatrixCamera;\r\n\t\tclip?: MatrixClip;\r\n\t};\r\n}\r\n\r\nexport interface MatrixCamera {\r\n\tobjectID: number;\r\n\ttitle: string;\r\n\tindex: number;\r\n}\r\n\r\nexport interface ClipType {\r\n\ttitle: string;\r\n\tactive: boolean;\r\n\tFileIdentifier: string;\r\n\tUniqueFileIdentifier: string;\r\n\tSubtitle: string;\r\n\tEventRecordId: number;\r\n\tDeviceTitle: string;\r\n\tFileSize: number;\r\n\tFileSizeError: boolean;\r\n\tMediaType: string;\r\n\tStartTime?: Date;\r\n\tFriendlyStartTime?: string;\r\n\tindex?: number;\r\n\tError?: string;\r\n\tDeviceId?: number;\r\n\tCreatedGroupTimezone?: string;\r\n\tCreatedUTC: string;\r\n}\r\n\r\nexport interface MultipleClipsIndex {\r\n\tindexes: number[]\r\n}\r\n\r\nexport interface CameraType {\r\n\ttitle: string;\r\n\tdistance: number;\r\n\tdeviceID: number;\r\n\tobjectID: number;\r\n\r\n\tactive?: boolean;\r\n\tindex?: any;\r\n\tlayoutIndex?: any;\r\n\tlastError?: string;\r\n\tlastInteractionHealthy?: boolean;\r\n}\r\n\r\nexport interface NearbyCameraType {\r\n\tdistance: number;\r\n\titemType: number;\r\n\tobjectId: number;\r\n\ttitle: string;\r\n\tindex?: any;\r\n}\r\n\r\nexport interface MatrixClip {\r\n\tclip: {\r\n\t\tFileIdentifier: string;\r\n\t\tindex?: any;\r\n\t\tUniqueFileIdentifier: string;\r\n\t};\r\n\teventRecordID: number;\r\n}\r\n\r\n/* interface mapItemType {\r\n extraValue: string;\r\n latLong: string;\r\n mapLayerItemId: number;\r\n mapLayerItemTypeId: number;\r\n maxElevation: number;\r\n minElevation: number;\r\n objectID: number;\r\n regionPath: string;\r\n title: string;\r\n\r\n active?: boolean;\r\n index?: any;\r\n layoutIndex?: any;\r\n} */\r\n\r\nexport interface DeviceControllerOutput {\r\n\tcontrolRequest: boolean;\r\n\tcontrolReason: string;\r\n\tcontrolError: string;\r\n\tsendingCommand: boolean;\r\n\tdistance: number;\r\n\timperial: boolean;\r\n\tdeviceTypeID: number;\r\n\tobjectId: number;\r\n\ttitle: string;\r\n\tisOutput: boolean;\r\n\tcanPulse: boolean,\r\n\tcanOnOff: boolean,\r\n}\r\n\r\nexport interface SearchedCamera {\r\n\tareaTitle: string;\r\n\tdistance?: string;\r\n\timperial?: boolean;\r\n\tindex: number;\r\n\titemType: number;\r\n\tobjectID: number;\r\n\ttitle: string;\r\n}\r\n\r\nexport function defaultDeviceControllerOutput(): DeviceControllerOutput {\r\n\treturn {\r\n\t\tcontrolRequest: false,\r\n\t\tcontrolReason: \"\",\r\n\t\tcontrolError: \"\",\r\n\t\tsendingCommand: false,\r\n\t\tdistance: null,\r\n\t\timperial: null,\r\n\t\tdeviceTypeID: null,\r\n\t\tobjectId: null,\r\n\t\ttitle: \"\",\r\n\t\tisOutput: false,\r\n\t\tcanPulse: false,\r\n\t\tcanOnOff: false\r\n\t};\r\n}\r\n","\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport { namespace, Getter } from \"vuex-class\";\nimport { DeviceService } from \"@sureview/camera\";\n\nimport Sessions from \"@/components/Sessions.vue\";\nimport AreaTreeSelect from \"./form/AreaTreeSelect.vue\";\nimport ClipsList from \"@/components/media/ClipsList.vue\";\nimport AreaCameras from \"@/components/media/AreaCameras.vue\";\nimport MatrixContent from \"@/components/media/MatrixContent.vue\";\nimport Tour from \"@/components/media/Tour.vue\";\nimport AudioControl from \"@/components/audio/AudioControl.vue\";\nimport ControlDevicesList from \"@/components/media/ControlDevicesList.vue\";\nimport { defaultDeviceControllerOutput, MatrixContents, SearchedCamera } from \"@/store/site-monitor-cameras/types\";\n\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport Multiselect from \"vue-multiselect\";\nimport VueScrollTo from \"vue-scrollto\";\nimport { CameraType, ClipType, DeviceControllerOutput, NearbyCameraType } from \"@/store/site-monitor-cameras/types\";\nimport { EventDetails } from \"@/store/site-monitor/types\";\nimport { SiteTreeNode } from \"@/store/eventqueue/types\";\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\nimport { get, debounce } from \"lodash\";\n\nimport { renderDistance } from \"@/filters\";\nimport { SessionResource } from \"@/store/sessions/types\";\nimport api from \"@/services/api.service\";\nimport { MapLayerItemTypeIds } from '@/store/map-layers/types';\nimport { truncateString } from '@/filters';\nimport SystemViewCameraIcon from \"./system-view/SystemViewCameraIcon.vue\";\n\nconst Eventqueue = namespace(\"eventqueue\");\nconst SiteMonitor = namespace(\"siteMonitor\");\nconst SMCameras = namespace(\"siteMonitorCameras\");\nconst Session = namespace(\"sessions\");\nconst Tours = namespace(\"tours\");\n\nexport interface SelectedAreaNode {\n\taddress: string;\n\tcameras: any[] | null;\n\tchildren: any | null;\n\tid: number;\n\tisDefaultExpanded: boolean;\n\tlabel: string;\n\tlatLong: string;\n}\n\n@Component({\n\tcomponents: {\n\t\tsession: Sessions,\n\t\tVuePerfectScrollbar: VuePerfectScrollbar,\n\t\tmultiselect: Multiselect,\n\t\t\"area-tree-select\": AreaTreeSelect,\n\t\t\"clips-list\": ClipsList,\n\t\t\"area-cameras\": AreaCameras,\n\t\ttour: Tour,\n\t\t\"matrix-content\": MatrixContent,\n\t\t\"audio-control\": AudioControl,\n\t\t\"control-devices-list\": ControlDevicesList,\n\t\t\"system-view-camera-icon\": SystemViewCameraIcon\n\t},\n\tfilters: {\n\t\trenderDistance,\n\t\ttruncateString\n\t}\n})\nexport default class DeviceController extends Vue {\n\t@Eventqueue.Getter(\"getSiteTree\") tree: SiteTreeNode[];\n\t@Eventqueue.Mutation setSiteTreeNodeValues: any;\n\t@Eventqueue.Mutation resetTree: any;\n\t@SMCameras.Getter(\"getAreaCameras\") areaCameras!: CameraType[];\n\t@SMCameras.Getter(\"getDeviceControllerCameras\") cameras!: any[];\n\t@SMCameras.Getter(\"getDeviceControllerClips\") clips!: ClipType[];\n\t@SMCameras.Getter(\"getDeviceControllerOutputs\") outputs!: any[];\n\t@SMCameras.State(\"areaOutputs\") areaOutputs!: DeviceControllerOutput[];\n\t@SMCameras.State(\"deviceControllerAudioDevices\") private audioDevices!: any[];\n\t@SMCameras.State(\"searchedCameraCount\") private searchedCameraCount: number;\n\t@SMCameras.State(\"areaCameraCount\") public areaCameraCount: number;\n\n\t//@SMCameras.Getter('getMediaMatrixEventId') eventId: any;\n\t@SMCameras.Getter(\"getLayouts\") layouts!: number[][];\n\t@SMCameras.Getter(\"getMediaMatrixLayers\") layers!: any[];\n\t@SMCameras.Getter(\"getLayoutIndex\") layoutIndex!: number;\n\t@SMCameras.Getter getMatrixContents: any;\n\t@SMCameras.Getter(\"getMediaMatrixIsNew\") mediaMatrixIsNew: any;\n\t@SMCameras.Getter(\"getFetchingMatrix\") fetchingMediaMatrix: any;\n\t@SMCameras.Getter(\"getAllMatrixContents\") getAllMatrixContents: MatrixContents;\n\t@SMCameras.Getter(\"getMatrixAssignedCameras\") getMatrixAssignedCameras: number[];\n\t@SMCameras.Getter(\"getMediaMatrixLastChanged\") mediaMatrixLastChanged: any;\n\t@SMCameras.Getter searchedCameras: SearchedCamera[];\n\t@SMCameras.Getter searchedOutputs: any;\n\t@SMCameras.Getter(\"getAreaCameras\") groupCameras: CameraType[];\n\n\t@SMCameras.Mutation setMediaMatrixEventId: any;\n\t@SMCameras.Mutation setDeviceControllerCameras: (cameras: any[]) => void;\n\t@SMCameras.Mutation setDeviceControllerClips: (clips: any[]) => void;\n\t@SMCameras.Mutation setDeviceControllerOutputs: (outputs: any[]) => void;\n\t@SMCameras.Mutation setDeviceControllerAudioDevices: (audioDevices: any[]) => void;\n\t@SMCameras.Mutation setLayoutIndex: any;\n\t@SMCameras.Mutation setPushContents: any;\n\t@SMCameras.Mutation setAwaitingCamera: any;\n\t@SMCameras.Mutation setAwaitingClip: any;\n\t@SMCameras.Mutation setMediaMatrixIsNew: any;\n\t@SMCameras.Mutation highlightCell: any;\n\t@SMCameras.Mutation unhighlightCell: any;\n\t@SMCameras.Mutation clearSearchedCameras: () => void;\n\n\t@SMCameras.Action activeMapItemsFromStorage: any;\n\t@SMCameras.Action searchForOutputs: (params: { query: string, groupID: number }) => Promise;\n\t@SMCameras.Action searchForCameras: (params: { query: string, groupID: number, page: number, reset: boolean }) => Promise;\n\t@SMCameras.Action fetchAreaCameras: (params: { groupID: number, pageNumber: number, paginated: boolean }) => Promise;\n\n\t@Session.Action updateSession: any;\n\t@Session.Getter getSession: any;\n\t@Session.Action clearSessions: any;\n\n\t@Tours.Getter tourInProgress: any;\n\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\n\n\t@SiteMonitor.Getter(\"getEventDetails\") getEventDetails: EventDetails;\n\t@SiteMonitor.Getter(\"getActiveMapItems\") mapItems: any;\n\t@SiteMonitor.Mutation setActiveMapItemsRequired: any;\n\n\t@SiteMonitor.Getter(\"getAuditService\") auditService: any;\n\t@SiteMonitor.Getter(\"getIsController\") isController: any;\n\t@SiteMonitor.Getter(\"getSelectedEventRecord\") selectedEventRecord: any;\n\t@SiteMonitor.Mutation setActivity: () => void;\n\n\t@Prop({ default: \"\", type: String }) tourName;\n\n\t@SiteMonitor.Getter(\"getIsCameraEnabled\") isCameraEnabled: (deviceId: number, test: string) => boolean;\n\t@SiteMonitor.Getter(\"getApplianceOfflineNotification\") private applianceOfflineNotification: (deviceId: number) => string;\n\n\tprivate setInitialRecordForEventId: number = 0;\n\tprivate showArea: boolean = true;\n\tprivate cameraSearchQuery: string = \"\";\n\tprivate selected: any = null;\n\tprivate isLoading: boolean = false;\n\tprivate debounceUpdateSearchFilter;\n\n\tprivate outputSearchQuery: string = \"\";\n\n\tprivate showOutput: boolean = false;\n\tprivate selectedOutput: any = null;\n\tprivate selectedOutputID: string = \"outputBtn\";\n\tprivate actionReason: string = \"\";\n\n\tprivate initialEventRecordID: number | null = null;\n\tprivate populateNearbyCamerasModal: boolean = false;\n\n\tprivate isLoadingAreas: boolean = false;\n\tprivate isLoadingAreaCameras: boolean = false;\n\tprivate selectedArea: SelectedAreaNode = null;\n\tprivate pageNumber: number = 1;\n\tprivate tourEnded: boolean = false;\n\tprivate isAreaSearch: boolean = false;\n\n\tpublic open = {\n\t\tcameras: true,\n\t\tclips: true,\n\t\toutputs: true,\n\t\tareas: false,\n\t\taudio: true,\n\t\tnearbyCameras: true,\n\t\tsearchCameras: true,\n\t\tmatrixContent: true,\n\t\ttours: true,\n\t\tsearchedOutputs: false,\n\t\tnearbyOutputs: false,\n\t\tareaOutputs: false,\n\t};\n\n\t// have to make it initially undefined\n\t// to make it non-rective to avoid additional update,\n\t// after changing from true to false in updated() hook.\n\tprivate scrollToAreaScheduled: boolean | undefined;\n\n\t@Watch(\"tourInProgress\")\n\tprivate minimizeCollapseMenu() {\n\t\tif (this.tourInProgress) {\n\t\t\tObject.keys(this.open).forEach(v => (this.open[v] = false));\n\t\t\tthis.open.tours = true;\n\t\t\tthis.open.cameras = true;\n\t\t} else {\n\t\t\tObject.keys(this.open).forEach(v => (this.open[v] = true));\n\t\t}\n\t}\n\n\tpublic get showAreas(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"AreaTree\"]);\n\t}\n\n\tpublic get devicesEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Devices\"]);\n\t}\n\n\tpublic get toursEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"VideoTours\"]);\n\t}\n\n\tpublic get showMatrixCameras(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"OpenCameraList\"]);\n\t}\n\n\tpublic get allowSpotlightScaling(): boolean{\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"Map\", \"SpotlightScaling\"]);\n\t}\n\n\tpublic get showClipsList(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"ClipsList\"]);\n\t}\n\n\tpublic get nearbyCamerasEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\",\"NearbyCameras\"]);\n\t}\n\n\tpublic get preventNearbyCamerasAutoPopulate(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\",\"NearbyCameras\", \"PreventAutoPopulate\"]);\n\t}\n\n\tprivate get fillMatrixNearby(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\",\"NearbyCameras\", \"FillMatrix\"]);\n\t}\n\t\n\tpublic get manuallyPopulateAreaCameras(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\",\"ManuallyPopulateAreaCameras\"]);\n\t}\n\n\tprivate get isAudioEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"AudioList\"], false);\n\t}\n\n\tprivate get isSystemViewEnabled() {\n\t\treturn get(this.featuresList, [\"SystemView\"]);\n\t}\n\n\tprivate get mapEnabled(): boolean {\n\t\tvar siteMonitorMap = get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"Map\"]);\n\t\tvar hideMaps = get(this.featuresList, [\"HideMaps\"]);\n\t\treturn siteMonitorMap && !hideMaps;\n\t}\n\n\tpublic get eventId() {\n\t\treturn this.getEventDetails ? this.getEventDetails.eventID : 0;\n\t}\n\n\tpublic get showOutputs() {\n\t\treturn this.permissions.canViewMediaMatrixControls;\n\t}\n\n\t/** Get all loaded cameras within the media matrix\n\t * filter to only show the objectID with the cell index.\n\t */\n\tpublic get loadedCameras() {\n\t\treturn Object.values(this.getAllMatrixContents)\n\t\t\t.filter(m => m && m.camera)\n\t\t\t.map(c => c.camera)\n\t\t\t.filter(g => g.objectID)\n\t\t\t.map(c => c.objectID);\n\t}\n\n\tpublic get filteredNearbyCameras() {\n\t\tlet camerasToFilter: NearbyCameraType[];\n\n\t\t// If we've got the matrix cameras section turned on, then hide any cameras\n\t\t// that we've already got open.\n\t\tcamerasToFilter = this.cameras;\n\n\t\tif (this.cameraSearchQuery === \"\") {\n\t\t\treturn camerasToFilter;\n\t\t}\n\n\t\tconst filterValue = this.cameraSearchQuery.toLocaleLowerCase();\n\t\treturn camerasToFilter.filter(camera => camera.title.toLocaleLowerCase().indexOf(filterValue) > -1);\n\t}\n\n\t@Watch(\"eventId\")\n\tpublic onEventChanged(eventId: number, oldEventId: number) {\n\t\tthis.resetTree();\n\t\tthis.resetCameraState();\n\n\t\tthis.setAwaitingCamera(null);\n\n\t\tif (eventId == 0) {\n\t\t\tthis.mapItemsSet = false;\n\t\t} else {\n\t\t\tif (this.showAreas && this.open.areas && this.getEventDetails && this.tree) {\n\t\t\t\tthis.openArea(this.getEventDetails.groupID);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async resetCameraState(): Promise {\n\t\tthis.cameraSearchQuery = \"\";\n\t\tthis.pageNumber = 1;\n\t\tif(this.getEventDetails){\n\t\t\tawait this.fetchAreaCameras({ groupID: this.getEventDetails.groupID, pageNumber: this.pageNumber, paginated: true });\n\t\t}\n\t}\n\n\tprivate checkCamerasComparison(newData: any, oldData: any): boolean {\n\t\treturn newData.count == oldData.count && JSON.stringify(newData) !== JSON.stringify(oldData);\n\t}\n\n\tpublic get totalCells() {\n\t\treturn this.layouts[this.layoutIndex][0] * this.layouts[this.layoutIndex][1];\n\t}\n\n\tprivate async loadAlarmEvent(newData: any, oldData: any, dataChanged: boolean) {\n\t\tif (!dataChanged || this.tourInProgress || !this.allowSpotlightScaling || !this.getEventDetails) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.populateNearbyCamerasModal = true;\n\t}\n\n\t@Watch(\"cameras\")\n\tpublic async loadNearbyCameraLayer(newData: any, oldData: any) {\n\t\t/** Check to see if any of the new or old data incoming is invalid for this type of operation. */\n\t\tif (!newData || newData.length <= 0 || !oldData || oldData.length <= 0) return;\n\n\t\tif (this.getEventDetails && !this.getEventDetails.useNearbyCameras) return;\n\n\t\t// Event Types 'EventTypeID'\n\t\tconst alarmEvent = 1;\n\t\tconst patrolEvent = 2;\n\n\t\tconst dataChanged = this.checkCamerasComparison(newData, oldData);\n\t\tif (this.getEventDetails.eventTypeID == alarmEvent) {\n\t\t\tthis.loadAlarmEvent(newData, oldData, dataChanged);\n\t\t} else if (this.getEventDetails.eventTypeID == patrolEvent) {\n\t\t\tawait this.loadNearbyCameras();\n\t\t}\n\t}\n\n\t@Watch(\"areaCameras\")\n\tpublic async loadAreaCameras(newData: any, oldData: any) {\n\t\t/**\n\t\t * Note - this function has been added to populate the media matrix with area cameras\n\t\t * This will likely be turned off when nearby cameras are set up in ops.\n\t\t */\n\t\t// if nearby cameras are enabled, dont use area cameras and add check if we have cameras to add\n\t\tif (this.nearbyCamerasEnabled || !newData || newData.length <= 0) return;\n\n\t\t// populate the media matrix with area cameras\n\t\tawait this.loadCameras(this.areaCameras);\n\t}\n\n\t// Watch the pageNumber and reuse the same search query to update list\n\t@Watch(\"pageNumber\")\n\tpublic async onPageNumberChanged(): Promise {\n\t\tif (!this.cameraSearchQuery && !this.isAreaSearch) {\n\t\t\tthis.pageNumber = 1;\n\t\t\tthis.clearSearchedCameras();\n\t\t} else if (!this.isAreaSearch) {\n\t\t\tthis.findCameras(this.cameraSearchQuery, false);\n\t\t} else {\n\t\t\tawait this.areaSelected(this.selectedArea);\n\t\t}\n\t}\n\n\t@Watch(\"cameraSearchQuery\")\n\tpublic async onCameraSearchQueryChanged(value: string) {\n\t\tthis.pageNumber = 1;\n\t\tthis.debounceUpdateSearchFilter(value);\n\t}\n\n\t@Watch(\"outputSearchQuery\")\n\tpublic onOutputSearchQueryChanged(value: string) {\n\t\tthis.findOutputs(value);\n\t}\n\n\t@Watch(\"mediaMatrixLastChanged\")\n\tpublic onMatrixChanged(value: any) {\n\t\tif (this.searchedCameras != null && this.searchedCameras.length > 0) {\n\t\t\tthis.setSearchCameraIndexes();\n\t\t}\n\t}\n\n\t@Watch(\"mapItems\")\n\tpublic onMapItemsChanged(value: any, oldValue: any) {\n\t\tif (value) {\n\t\t\tthis.setDevicesFromMapLayerItems(value);\n\t\t} else {\n\t\t\tthis.setDeviceControllerCameras([]);\n\t\t\tthis.mapItemsSet = false;\n\t\t}\n\t}\n\n\t@Watch(\"areaOutputs\")\n\tprivate onAreaOutputsChanges(value: DeviceControllerOutput, oldValue: DeviceControllerOutput): void {\n\n\t\t// Nearby uses areaOuputs data so ensure up to date.\n\t\tthis.setNearByOutputs(this.mapItems);\n\t}\n\n\tpublic async mounted() {\n\t\tthis.setActiveMapItemsRequired(true);\n\t\tthis.debounceUpdateSearchFilter = debounce(async (value) => {\n\t\t\tawait this.findCameras(value, true);\n\t\t}, 250);\n\t}\n\n\tpublic updated() {\n\t\tif (this.scrollToAreaScheduled) {\n\t\t\tvar element = document.getElementById(\"TreeGroup_\" + this.getEventDetails.groupID);\n\t\t\tVueScrollTo.scrollTo(element, 50, {\n\t\t\t\tcontainer: \"#collapse-areas\"\n\t\t\t});\n\t\t\tthis.scrollToAreaScheduled = false;\n\t\t}\n\t}\n\n\tpublic async loadNearbyCameras() {\n\t\tawait this.loadCameras(this.cameras);\n\t\tthis.populateNearbyCamerasModal = false;\n\t}\n\n\tprivate async loadCameras(cameras:any[]) {\n\t\tlet camerasToPush = [];\n\t\tconst attachedCameras: any[] = this.selectedEventRecord?.attachedCameras.filter(ac => !this.getMatrixAssignedCameras.includes(ac.objectID));\n\t\tif (attachedCameras && attachedCameras.length > 0) {\n\t\t\tconst attached = attachedCameras\n\t\t\t\t.map(c => ({ objectID: c.deviceID, title: c.title }));\n\t\t\tconst notAttached = cameras.filter(c => !attached.find(ac => ac.objectID === c.objectID));\n\t\t\tcamerasToPush = [...attached, ...notAttached]\n\t\t} else {\n\t\t\tcamerasToPush = cameras.filter(ac => !this.getMatrixAssignedCameras.includes(ac.objectID));\n\t\t}\n\t\t// add a camera to every cell (as long as we have enough cameras)\n\t\tvar cameraIndex = 0;\n\t\tfor (let index = 0; index < this.totalCells && index < camerasToPush.length; index++) {\n\t\t\tif (this.getMatrixContents[index]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tlet newContents = {\n\t\t\t\t\tcamera: {\n\t\t\t\t\t\tobjectID: camerasToPush[cameraIndex].objectID,\n\t\t\t\t\t\ttitle: camerasToPush[cameraIndex].title,\n\t\t\t\t\t\tindex: index + 1\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\tawait this.setPushContents({\n\t\t\t\tindex: index + 1,\n\t\t\t\tnewContents: newContents\n\t\t\t});\n\t\t\tcameraIndex++;\n\t\t}\n\t}\n\n\tpublic created() {\n\t\tthis.updateSession({ resourceId: SessionResource.DeviceServiceSession, eventId: this.eventId });\n\t\tthis.setMediaMatrixEventId(this.eventId);\n\t}\n\n\tprivate mapItemsSet: boolean = false;\n\tpublic async setDevicesFromMapLayerItems(devices: any[]): Promise {\n\t\tthis.mapItemsSet = true;\n\t\tif(!devices) {\n\t\t\tdevices = [];\n\t\t}\n\n\t\tlet cameras = devices.filter(device => device.itemType === MapLayerItemTypeIds.Camera);\n\n\t\tlet audioDevices = devices.filter(device => device.itemType === MapLayerItemTypeIds.Audio);\n\t\tawait this.setNearByOutputs(devices);\n\t\tthis.setDeviceControllerCameras(cameras);\n\t\tthis.setDeviceControllerAudioDevices(audioDevices);\n\n\t\tif (this.fillStartIndex != null) {\n\t\t\tthis.fillCellsWithMapItems();\n\t\t}\n\t}\n\n\tprivate async setNearByOutputs(devices: any[]): Promise {\n\t\t// We want Outputs/Devices not MapLayerItems\n\t\tlet outputs: DeviceControllerOutput[] = await this.getOutputsFromMapLayerItems(devices);\n\t\tthis.setDeviceControllerOutputs(outputs);\n\t}\n\n\tprivate async getOutputsFromMapLayerItems(devicesAsMapLayerItems: any[]): Promise {\n\t\tdevicesAsMapLayerItems = devicesAsMapLayerItems\n\t\t .filter(device =>\n\t\t\t\t\t\tdevice.itemType === MapLayerItemTypeIds.Relay ||\n\t\t\t\t\t\tdevice.itemType === MapLayerItemTypeIds.Output);\n\n\t\tlet deviceIds: number[] = [];\n\t\tlet outputs: DeviceControllerOutput[] = [];\n\n\t\t// We need to convert MapLayerItems to devices\n\t\tdevicesAsMapLayerItems.forEach(device => {\n\t\t\tconst result = this.areaOutputs.firstOrDefault(o => o.objectId == device.objectId);\n\n\t\t\t// Any devices (MapLayerItems) we don't have locally will have to be requested.\n\t\t\tif (!result) {\n\t\t\t\tdeviceIds.push(device.objectId);\n\t\t\t\tconst output = {\n\t\t\t\t\t...defaultDeviceControllerOutput(),\n\t\t\t\t\t... {\n\t\t\t\t\t\ttitle: device.title,\n\t\t\t\t\t\tdistance: device.distance,\n\t\t\t\t\t\tobjectId: device.objectId\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\toutputs.push(output);\n\t\t\t} else {\n\t\t\t\tconst newOutput = {...result};\n\t\t\t\tnewOutput.distance = device.distance;\n\t\t\t\toutputs.push(newOutput);\n\t\t\t}\n\t\t});\n\n\t\t// Request device data for missing MapLayerItems\n\t\tif (deviceIds.length > 0) {\n\t\t const missingOutputs = await api.getDevicesByIds(deviceIds);\n\n\t\t\t// Update devices with missing data.\n\t\t\tmissingOutputs.forEach(mOutput => {\n\t\t\t\tvar index = outputs.findIndex(output => output.objectId === mOutput.deviceID);\n\t\t\t\tif (index > -1) {\n\t\t\t\t\toutputs[index].isOutput = mOutput.settingsMeta.includes(\"output\");\n\t\t\t\t\toutputs[index].canPulse = mOutput.settingsMeta.includes(\"\");\n\t\t\t\t\toutputs[index].canOnOff = mOutput.settingsMeta.includes(\"1\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn outputs;\n\t}\n\n\tprivate fillEmptyCellsWithNearbyCameras(): void\n\t{\n\t\tlet index: number = 1;\n\t\tlet addedCameras: number[] = [];\n\t\tconst cellCount: number = this.layoutHorizontal * this.layoutVertical;\n\t\tconst nearbyCameras = this.cameras ? this.cameras.filter((c: any) => !this.getMatrixAssignedCameras.includes(c.objectId)): [];\n\n\t\tif(!nearbyCameras || nearbyCameras.length <= 0)\n\t\t{\n\t\t\tconsole.log(\"nothing to add\")\n\t\t\treturn;\n\t\t}\n\n\t\tnearbyCameras.sort((c) => c.distance)\n\n\t\twhile (index <= cellCount)\n\t\t{\n\t\t\tlet cellContents = this.getMatrixContents(index);\n\n\t\t\t// Skip the cell if it has content\n\t\t\tif (cellContents != null && (cellContents.clip?.clip || cellContents.camera?.objectId || cellContents.camera?.objectID))\n\t\t\t{\n\t\t\t\tconsole.log(\"nothing to add stuff is there\")\n\t\t\t\tindex++;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar camera = nearbyCameras.filter((c) => !addedCameras.includes(c.objectId ? c.objectId : c.objectID)).shift();\n\n\t\t\t\tif(!camera)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.setPushContents({\n\t\t\t\t\tindex: index,\n\t\t\t\t\tnewContents: {\n\t\t\t\t\t\tcamera: {\n\t\t\t\t\t\t\tobjectID: camera.objectId ? camera.objectId : camera.objectID,\n\t\t\t\t\t\t\ttitle: camera.title\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\teventId: this.eventId\n\t\t\t\t});\n\n\t\t\t\tindex++;\n\t\t\t\taddedCameras.push(camera.objectId);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate fillStartIndex: number | null = null;\n\tpublic fillCellsWithMapItems() {\n\t\tif (this.fillStartIndex != null) {\n\t\t\tlet index = this.fillStartIndex;\n\t\t\tthis.fillStartIndex = null;\n\n\t\t\tlet cellCount = this.layoutHorizontal * this.layoutVertical;\n\n\t\t\tthis.cameras.filter((c: any) => !this.getMatrixAssignedCameras.includes(c.hasOwnProperty('objectId') ? c.objectId : c.objectID)).some((camera: any) => {\n\t\t\t\tif (camera.index == null) {\n\t\t\t\t\tthis.setPushContents({\n\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\tnewContents: {\n\t\t\t\t\t\t\tcamera: {\n\t\t\t\t\t\t\t\tobjectID: camera.objectID ? camera.objectID : camera.objectId,\n\t\t\t\t\t\t\t\ttitle: camera.title\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\teventId: this.eventId\n\t\t\t\t\t});\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\n\t\t\t\treturn index > cellCount;\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate getMatrixClipsSet(): Set {\n\t\tconst matrixClips = new Set();\n\t\tlet matrixContents = this.getAllMatrixContents;\n\n\t\t// iterate over current cells in the matrix\n\t\tfor (var matrixIndex in matrixContents) {\n\t\t\tif (matrixContents[matrixIndex].clip !== undefined) {\n\t\t\t\t// get the cells clip\n\t\t\t\tlet clip = matrixContents[matrixIndex].clip.clip;\n\t\t\t\tif (clip != null) {\n\t\t\t\t\t// add index value to the array under the clips unique file identifier\n\t\t\t\t\tlet clipIdentifier = clip.UniqueFileIdentifier;\n\t\t\t\t\tmatrixClips.add(clipIdentifier);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn matrixClips;\n\t}\n\n\tclipsQueue: any[] = [];\n\tprivate clipsRetrieved(clips: any) {\n\t\tif (this.fetchingMediaMatrix) {\n\t\t\tthis.clipsQueue.push(clips);\n\t\t} else {\n\t\t\tthis.fillIfNew(clips);\n\t\t}\n\t}\n\n\t@Watch(\"fetchingMediaMatrix\")\n\tfetchingMediaMatrixChanged(value: boolean, oldValue: boolean) {\n\t\tif (!value) {\n\t\t\twhile (this.clipsQueue.length > 0) {\n\t\t\t\tthis.fillIfNew(this.clipsQueue.shift());\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async fillIfNew({ eventRecordID, cameras, newClips }) {\n\t\tlet mediaMatrixIsNew = this.mediaMatrixIsNew;\n\t\tif (mediaMatrixIsNew) {\n\t\t\tconsole.log(\"Matrix: DeviceController-fillIfNew: Matrix is new!\");\n\n\t\t\tthis.setMediaMatrixIsNew(false);\n\t\t\tthis.initialEventRecordID = eventRecordID;\n\n\t\t\tthis.setInitialRecordForEventId = this.selectedEventRecord.eventID;\n\n\t\t\tlet cellCount = this.layoutHorizontal * this.layoutVertical;\n\t\t\tlet index = 1;\n\n\t\t\t// Set clips - CRITICAL, This has to be done before loading the live streams, otherwise the clips will never populate if there\n\t\t\t//\tare 9 or more nearby cameras for the alarm\n\t\t\tif (this.clips && this.clips.length > 0) {\n\t\t\t\tthis.clips.some((clip: any) => {\n\t\t\t\t\tlet cellContents = this.getMatrixContents(index);\n\t\t\t\t\tif (cellContents == null || (cellContents.clip == null && cellContents.camera == null)) {\n\t\t\t\t\t\tthis.setPushContents({\n\t\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\t\tnewContents: {\n\t\t\t\t\t\t\t\tclip: {\n\t\t\t\t\t\t\t\t\teventRecordID: clip.EventRecordId,\n\t\t\t\t\t\t\t\t\tclip: clip\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\teventId: this.eventId\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tindex++;\n\n\t\t\t\t\treturn index > cellCount;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tvar addedCameras = [];\n\n\t\t\t//Set event record linked cameras\n\t\t\tcameras = cameras ? cameras.filter(c => !this.getMatrixAssignedCameras.includes(c.objectID)): [];\n\t\t\tif (cameras && cameras.length > 0 && index <= cellCount) {\n\t\t\t\tcameras.some((camera: any) => {\n\t\t\t\tif(!addedCameras.includes(camera.deviceID)) {\n\t\t\t\t\t\tthis.setPushContents({\n\t\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\t\tnewContents: {\n\t\t\t\t\t\t\t\tcamera: {\n\t\t\t\t\t\t\t\t\tobjectID: camera.deviceID,\n\t\t\t\t\t\t\t\t\ttitle: camera.title\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\teventId: this.eventId\n\t\t\t\t\t\t});\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\taddedCameras.push(camera.deviceID);\n\t\t\t\t\t\treturn index > cellCount;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.nearbyCamerasEnabled && !this.preventNearbyCamerasAutoPopulate)\n\t\t\t{\n\t\t\t\tconst nearbyCameras = this.cameras ? this.cameras.filter((c: any) => !this.getMatrixAssignedCameras.includes(c.objectId)): [];\n\n\t\t\t\tif (nearbyCameras && nearbyCameras.length > 0 && index <= cellCount) {\n\t\t\t\t\tnearbyCameras.some((camera: any) => {\n\t\t\t\t\t\tif(!addedCameras.includes(camera.objectId)) {\n\t\t\t\t\t\t\tthis.setPushContents({\n\t\t\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\t\t\tnewContents: {\n\t\t\t\t\t\t\t\t\tcamera: {\n\t\t\t\t\t\t\t\t\t\tobjectID: camera.objectId ? camera.objectId : camera.objectID,\n\t\t\t\t\t\t\t\t\t\ttitle: camera.title\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\teventId: this.eventId\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\taddedCameras.push(camera.objectId);\n\t\t\t\t\t\t\treturn index > cellCount;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait this.$nextTick()\n\n\t\t\t//Set area cameras\n\t\t\tif (!this.manuallyPopulateAreaCameras && this.areaCameras && this.areaCameras.length > 0 && index <= cellCount) {\n\t\t\t\tthis.areaCameras.filter(c => !this.getMatrixAssignedCameras.includes(c.objectID)).some((camera: CameraType) => {\n\t\t\t\t\tif(!addedCameras.includes(camera.objectID)) {\n\t\t\t\t\t\tthis.setPushContents({\n\t\t\t\t\t\t\tindex: index,\n\t\t\t\t\t\t\tnewContents: {\n\t\t\t\t\t\t\t\tcamera: {\n\t\t\t\t\t\t\t\t\tobjectID: camera.objectID,\n\t\t\t\t\t\t\t\t\ttitle: camera.title\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\teventId: this.eventId\n\t\t\t\t\t\t});\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\taddedCameras.push(camera.objectID);\n\t\t\t\t\t\treturn index > cellCount;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t} else if (newClips && newClips.length > 0) {\n\t\t\tlet takenIndexes = new Set();\n\n\t\t\tlet matrixClips = this.getMatrixClipsSet();\n\n\t\t\tnewClips.forEach(clip => {\n\t\t\t\tif (matrixClips.has(clip.UniqueFileIdentifier)){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet emptyIndex = 1;\n\t\t\t\tlet finalIndex = this.layoutHorizontal * this.layoutVertical;\n\t\t\t\twhile (emptyIndex <= finalIndex) {\n\t\t\t\t\tlet cellContents = this.getMatrixContents(emptyIndex);\n\t\t\t\t\tif (cellContents == null && !takenIndexes.has(emptyIndex)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else {\n\t\t\t\t\t\temptyIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (emptyIndex > finalIndex) {\n\t\t\t\t\tfinalIndex = this.layoutHorizontal * this.layoutVertical;\n\t\t\t\t\twhile (finalIndex > 0) {\n\t\t\t\t\t\tlet cellContents = this.getMatrixContents(finalIndex);\n\t\t\t\t\t\tif ((cellContents == null || (cellContents.clip == null && cellContents.camera == null)) && !takenIndexes.has(finalIndex)) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfinalIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfinalIndex = emptyIndex;\n\t\t\t\t}\n\n\t\t\t\tif (finalIndex > 0) {\n\t\t\t\t\ttakenIndexes.add(finalIndex);\n\n\t\t\t\t\tthis.setPushContents({\n\t\t\t\t\t\tindex: finalIndex,\n\t\t\t\t\t\tnewContents: {\n\t\t\t\t\t\t\tclip: {\n\t\t\t\t\t\t\t\teventRecordID: clip.EventRecordId,\n\t\t\t\t\t\t\t\tclip: clip\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\teventId: this.eventId\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic cameraSelect(camera: CameraType | NearbyCameraType) {\n\t\tif (this.isController) {\n\t\t\tthis.setAwaitingCamera(camera);\n\t\t}\n\t}\n\n\tpublic clipSelect(clip: any) {\n\t\tif (this.isController && clip?.EventRecordId) {\n\t\t\tthis.setAwaitingClip({\n\t\t\t\teventRecordID: clip.EventRecordId,\n\t\t\t\tclip: clip\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic get layoutHorizontal() {\n\t\treturn this.layouts[this.layoutIndex][0];\n\t}\n\n\tpublic get layoutVertical() {\n\t\treturn this.layouts[this.layoutIndex][1];\n\t}\n\n\tpublic cameraIconColor(camera: any, i: number, j: number) {\n\t\treturn (i - 1) * this.layoutHorizontal + j === camera.index ? \"redCameraIndicator\" : \"greyCameraIndicator\";\n\t}\n\n\tpublic isSelectedCamera(camera: CameraType) {\n\t\treturn camera.index !== null && !isNaN(camera.index) ? \"selectedCamera\" : \"\";\n\t}\n\n\tpublic pulseOutput(output: any) {\n\t\toutput.controlRequest = true;\n\t}\n\n\tpublic async doPulseOutput(output: any, outputList: string) {\n\t\tif (output.controlReason == \"\") return;\n\n\t\tif (output.sendingCommand) return;\n\n\t\tthis.setActivity();\n\n\t\toutput.sendingCommand = true;\n\n\t\tconst device = await api.deviceAction(\n\t\t\toutput.objectId,\n\t\t\t{\n\t\t\t\teventId: this.eventId,\n\t\t\t\tdeviceAction: \"pulse\",\n\t\t\t\toutputReason: output.controlReason\n\t\t\t}\n\t\t);\n\n\t\tlet auth = this.getSession(SessionResource.DeviceServiceSession);\n\t\tlet deviceService = new DeviceService(api.getDeviceServiceAddress(), device.deviceServerEndpoint);\n\n\t\tdeviceService.sendOutputCmd(auth, output.objectId, \"output\", \"pulse\").then(\n\t\t\tresponse => {\n\t\t\t\toutput.controlRequest = false;\n\t\t\t\toutput.controlReason = \"\";\n\t\t\t\toutput.sendingCommand = false;\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tconsole.error(error);\n\t\t\t\tif (error) {\n\t\t\t\t\toutput.controlError = error.statusText;\n\t\t\t\t} else {\n\t\t\t\t\toutput.controlError = \"Error triggering relay\";\n\t\t\t\t}\n\t\t\t\toutput.sendingCommand = false;\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic cancelPulse(output: any) {\n\t\toutput.controlRequest = false;\n\t\toutput.controlReason = \"\";\n\t}\n\n\tpublic async setOutput(output: any, on: boolean) {\n\t\tconst action = on ? \"on\" : \"off\";\n\n\t\tconst device = await api.deviceAction(\n\t\t\toutput.objectId,\n\t\t\t{\n\t\t\t\teventId: this.eventId,\n\t\t\t\tdeviceAction: \"pulse\",\n\t\t\t\toutputReason: output.controlReason\n\t\t\t}\n\t\t);\n\n\t\tconst auth = this.getSession(SessionResource.DeviceServiceSession);\n\t\tconst deviceService = new DeviceService(api.getDeviceServiceAddress(), device.deviceServerEndpoint);\n\n\t\tdeviceService.sendOutputCmd(auth, output.objectId, \"output\", action).then(\n\t\t\tresponse => {\n\t\t\t\toutput.controlRequest = false;\n\t\t\t\toutput.controlReason = \"\";\n\t\t\t\toutput.sendingCommand = false;\n\t\t\t},\n\t\t\terror => {\n\t\t\t\tconsole.error(error);\n\t\t\t\tif (error) {\n\t\t\t\t\toutput.controlError = error.statusText;\n\t\t\t\t} else {\n\t\t\t\t\toutput.controlError = \"Error triggering relay\";\n\t\t\t\t}\n\t\t\t\toutput.sendingCommand = false;\n\t\t\t}\n\t\t);\n\t}\n\n\tprivate async findCameras(query: any, reset: boolean) {\n\t\tthis.isLoading = true;\n\t\tlet groupID = this.getEventDetails.groupID;\n\t\tlet page = this.pageNumber;\n\t\tawait this.searchForCameras({ query, groupID, page, reset });\n\t\tthis.setSearchCameraIndexes();\n\t\tthis.isLoading = false;\n\t}\n\n\tprivate async findOutputs(query: string) {\n\t\tthis.isLoading = true;\n\t\tlet groupID = this.getEventDetails.groupID;\n\t\tawait this.searchForOutputs({ query, groupID });\n\t\tthis.isLoading = false;\n\t}\n\n\tprivate setSearchCameraIndexes() {\n\t\tlet deviceIndexes = {};\n\t\tlet maxtrixContents = this.getAllMatrixContents;\n\n\t\tfor (var matrixIndex in maxtrixContents) {\n\t\t\tif (maxtrixContents[matrixIndex] != null && maxtrixContents[matrixIndex].camera != null) {\n\t\t\t\tdeviceIndexes[maxtrixContents[matrixIndex].camera.objectID] = parseInt(matrixIndex);\n\t\t\t}\n\t\t}\n\n\t\tthis.searchedCameras.forEach(camera => {\n\t\t\tcamera.index = deviceIndexes[camera.objectID] != null ? deviceIndexes[camera.objectID] : null;\n\t\t});\n\t}\n\n\tpublic async openArea(groupID: number) {\n\t\tconst openIfMatch = async (node: SiteTreeNode, groupID: number) => {\n\t\t\tif (node.group.groupID == groupID) {\n\t\t\t\tif (node.isOpen || !node.group.selected) {\n\t\t\t\t\tthis.setSiteTreeNodeValues({\n\t\t\t\t\t\ttreeNode: node,\n\t\t\t\t\t\tisOpen: false,\n\t\t\t\t\t\tselected: true\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (node.subGroups && node.subGroups.length > 0) {\n\t\t\t\t\tconst loadPromises = node.subGroups.map(sn => openIfMatch(sn, groupID));\n\t\t\t\t\tawait Promise.all(loadPromises);\n\t\t\t\t}\n\n\t\t\t\tif (!node.loadingContents && node.contents == null) {\n\t\t\t\t\tthis.setSiteTreeNodeValues({\n\t\t\t\t\t\ttreeNode: node,\n\t\t\t\t\t\tloadingContents: true,\n\t\t\t\t\t\tcontentsOpen: true\n\t\t\t\t\t});\n\n\t\t\t\t\tawait this.fetchAreaCameras({ groupID: node.group.groupID, pageNumber: this.pageNumber, paginated: true });\n\n\t\t\t\t\tthis.setSiteTreeNodeValues({\n\t\t\t\t\t\ttreeNode: node,\n\t\t\t\t\t\tcontents: {\n\t\t\t\t\t\t\tcameras: this.areaCameras\n\t\t\t\t\t\t},\n\t\t\t\t\t\tloadingContents: false\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t} else {\n\t\t\t\tlet matchesChild: boolean = false;\n\n\t\t\t\tif (node.subGroups && node.subGroups.length > 0) {\n\t\t\t\t\tnode.subGroups.forEach(async (subnode: SiteTreeNode) => {\n\t\t\t\t\t\tlet match = await openIfMatch(subnode, groupID);\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tmatchesChild = match;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (node.isOpen != matchesChild || node.group.selected) {\n\t\t\t\t\tthis.setSiteTreeNodeValues({\n\t\t\t\t\t\ttreeNode: node,\n\t\t\t\t\t\tisOpen: matchesChild,\n\t\t\t\t\t\tselected: false\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn matchesChild;\n\t\t\t}\n\t\t};\n\n\t\tconst openPromises = this.tree.map(n => openIfMatch(n, groupID));\n\t\tawait Promise.all(openPromises);\n\n\t\tthis.scrollToAreaScheduled = true;\n\t}\n\n\tpublic async areaSelected(selectedAreaNode: SelectedAreaNode): Promise {\n\t\tthis.selectedArea = selectedAreaNode;\n\n\t\tif (selectedAreaNode && selectedAreaNode.id) {\n\n\t\t\tthis.isLoadingAreaCameras = true;\n\n\t\t\tawait this.fetchAreaCameras({ groupID: selectedAreaNode.id, pageNumber: this.pageNumber, paginated: true });\n\n\t\t\tthis.selectedArea.cameras = this.areaCameras;\n\n\t\t\tthis.isLoadingAreaCameras = false;\n\t\t} else {\n\t\t\tawait this.resetCameraState();\n\t\t}\n\t}\n\n\tpublic showAreaCamera(camera: any, treeSelectCamera: boolean): void {\n\t\tif (this.isController) {\n\t\t\tthis.setAwaitingCamera({\n\t\t\t\tobjectID: treeSelectCamera ? camera.objectID : camera.deviceID,\n\t\t\t\titemType: 1,\n\t\t\t\ttitle: camera.title\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate setTourName(data: any) {\n\t\tthis.tourName = data;\n\t}\n\n\tprivate async toggleAreasSection() {\n\t\tthis.open.areas = !this.open.areas;\n\t\tif (this.open.areas) {\n\t\t\ttry {\n\t\t\t\tthis.isLoadingAreas = true;\n\t\t\t\tawait this.openArea(this.getEventDetails.groupID);\n\t\t\t\tthis.isLoadingAreas = false;\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\tconsole.log(\"Unexpected error loading site tree: \" + ex);\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tthis.isLoadingAreas = false;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Increasing the pageNumber will trigger the watcher on pageNumber\n\tpublic showMoreSearchCameras(): void {\n\t\tthis.isAreaSearch = false;\n\t\tthis.pageNumber++;\n\t}\n\n\tpublic showMoreAreaCameras(): void {\n\t\tthis.isAreaSearch = true;\n\t\tthis.pageNumber++;\n\t}\n\n\tpublic resetCameraPageNumber(): void {\n\t\tthis.tourEnded = true;\n\t}\n\n\tpublic completeCameraReset(): void {\n\t\tthis.tourEnded = false;\n\t}\n\n\tprivate get showSearchLoadMoreButton(): boolean {\n\t\treturn this.searchedCameras.length < this.searchedCameraCount;\n\t}\n\n\tprivate get showAreaLoadMoreButton(): boolean {\n\t\treturn this.areaCameras.length < this.areaCameraCount;\n\t}\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceController.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceController.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeviceController.vue?vue&type=template&id=5b5a1f1d&scoped=true\"\nimport script from \"./DeviceController.vue?vue&type=script&lang=ts\"\nexport * from \"./DeviceController.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeviceController.vue?vue&type=style&index=0&id=5b5a1f1d&prod&scoped=true&lang=scss\"\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 \"5b5a1f1d\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport { namespace, Getter } from \"vuex-class\";\nimport MatrixContainer from \"@/components/MatrixContainer.vue\"; // TODO: encapsulate AlarmClip inside Camera\nimport DeviceController from \"@/components/DeviceController.vue\";\nimport { CameraType, ClipType, NearbyCameraType } from \"@/store/site-monitor-cameras/types\";\nimport { EventDetails } from \"@/store/site-monitor/types\";\nimport { axiosInstance } from \"@/axios.instance\";\nimport { FeaturesList } from \"@/store/types\";\nimport { get } from \"lodash\";\n\nimport api from \"@/services/api.service\";\nimport { SessionResource } from \"@/store/sessions/types\";\nimport ZendeskHelp from \"./ZendeskHelp.vue\";\nimport Matrix from \"@/types/sv-data/media-matrix/Matrix\";\n\nconst SiteMonitor = namespace(\"siteMonitor\");\nconst SMCameras = namespace(\"siteMonitorCameras\");\nconst SessionStore = namespace(\"sessions\");\nconst Tours = namespace(\"tours\");\n\n@Component({\n\tcomponents: {\n\t\t\"matrix-container\": MatrixContainer,\n\t\t\"device-controller\": DeviceController,\n\t\t\"zendeskHelp\" : ZendeskHelp,\n\t}\n})\nexport default class Cameras extends Vue {\n\t$refs!: {\n\t\texpandedCamera: any;\n\t};\n\n\t@SMCameras.Getter(\"getLayouts\") layouts!: any[];\n\t@SMCameras.Getter(\"getLayoutIndex\") getLayoutIndex!: number;\n\t@SiteMonitor.Getter(\"getEventDetails\") eventDetails: EventDetails;\n\t@SiteMonitor.Getter(\"getIsController\") isController: any;\n\n\t@SMCameras.Action saveMatrix: any;\n\t@SMCameras.Action fetchMatrixForEvent: any;\n\n\t@SMCameras.Mutation clearMatrixContents: any;\n\t@SMCameras.Mutation setRequiresEventDetails: any;\n\t@SMCameras.Mutation setMediaMatrixIsNew: any;\n\t@SMCameras.Mutation setFetchingMatrix: any;\n\t@SMCameras.Mutation setPushContents: any;\n\t@SMCameras.Mutation setLayoutIndex: any;\n\t@SMCameras.Mutation setShownAuditClips: any;\n\n\t@SMCameras.Mutation setDeviceControllerCameras: (cameras: any[]) => void;\n\t@SMCameras.Mutation setDeviceControllerClips: (clips: any[]) => void;\n\t@SMCameras.Mutation setDeviceControllerOutputs: (outputs: any[]) => void;\n\t@SMCameras.Mutation setDeviceControllerAudioDevices: (audioDevices: any[]) => void;\n\n\t@SMCameras.Getter(\"getDeviceControllerCameras\") cameras!: any[];\n\t@SMCameras.Getter(\"getDeviceControllerClips\") clips!: ClipType[];\n\t@SMCameras.Getter(\"getAreaCameras\") areaCameras!: CameraType[];\n\n\t@SMCameras.Getter getMatrixPushContents: any;\n\t@SMCameras.Getter getMatrixContents: any;\n\t@SMCameras.Getter getAllMatrixContents: any;\n\n\t@SessionStore.Action updateSession: any;\n\t@SessionStore.Action clearSessions: any;\n\n\t@SMCameras.Mutation setLinkRecord: any;\n\t@SMCameras.Mutation setWaitingForEvent: any;\n\n\t@SMCameras.Mutation setAwaitingCamera: any;\n\t@SMCameras.Mutation setAwaitingClip: any;\n\n\t@SiteMonitor.Action createAuditRecord: any;\n\n\t@Tours.Getter tourInProgress: any;\n\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\n\t@SiteMonitor.Action private fetchDeviceServerDetails: (deviceIds: number[]) => Promise;\n\t@SiteMonitor.Getter(\"getIsCameraEnabled\") isCameraEnabled: (deviceId: number) => boolean;\n\n\tprivate updateTimer: NodeJS.Timeout | null = null;\n\tprivate loadedEventId: number = 0;\n\tprivate loadedMatrix: boolean = false;\n\tprivate showMenu: boolean = true;\n\n\tprivate get isClearEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"Clear\"]);\n\t}\n\n\tprivate get featureHideMenuEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"HideMenu\"]);\n\t}\n\n\tprivate get hideMenuDefault(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"HideMenu\", \"CollapseByDefault\"]);\n\t}\n\n\tprivate get displayMediaMatrixContent(): boolean {\n\t\treturn !!this.eventDetails && !this.eventDetails.eventClosed\n\t}\n\n\tprivate async clearAllMatrixCells() {\n\t\tvar matrix = this.getAllMatrixContents;\n\t\tmatrix = Object.entries(matrix);\n\n\t\tmatrix.forEach(cell => {\n\t\t\tthis.setPushContents(\n\t\t\t\t{\n\t\t\t\t\tindex: cell[0],\n\t\t\t\t\tnewContents: {},\n\t\t\t\t\teventID: this.eventId\n\t\t\t});\n\t\t});\n\n\t\tconst auditRecord = {\n\t\t\teventId: this.eventId,\n\t\t\teventRecordTypeId: 4,\n\t\t\tdetails: \"Media Matrix Cleared\"\n\t\t}\n\n\t\tawait this.createAuditRecord(auditRecord);\n\t}\n\n\tpublic get layoutIndex() {\n\t\treturn this.getLayoutIndex;\n\t}\n\n\tpublic get layout() {\n\t\treturn this.layouts[this.layoutIndex];\n\t}\n\n\tpublic get layoutHorizontal() {\n\t\treturn this.layouts[this.layoutIndex][0];\n\t}\n\n\tpublic get layoutVertical() {\n\t\treturn this.layouts[this.layoutIndex][1];\n\t}\n\n\tpublic get cameraRowStyle() {\n\t\treturn {\n\t\t\tdisplay: \"grid\",\n\t\t\t\"grid-template-rows\": 1 / this.layoutHorizontal,\n\t\t\t\"grid-template-columns\": 1 / this.layoutVertical\n\t\t};\n\t}\n\n\tpublic get eventId() {\n\t\treturn this.eventDetails ? this.eventDetails.eventID : 0;\n\t}\n\n\tpublic created() {\n\t\tthis.clearMatrixContents();\n\t\tthis.setRequiresEventDetails(true);\n\t\tthis.setMediaMatrixIsNew(false);\n\t}\n\n\tpublic mounted() {\n\t\tif(this.hideMenuDefault) {\n\t\t\tthis.showMenu = false;\n\t\t}\n\n\t\tthis.loadEvent(this.eventId);\n\t\tthis.updateTimer = setInterval(() => this.update(), 2000);\n\t}\n\n\tpublic destroyed() {\n\t\tif (this.updateTimer != null) {\n\t\t\tclearInterval(this.updateTimer);\n\t\t}\n\t\tthis.setLinkRecord(null);\n\t}\n\n\t// Using \"deep\" to ensure all updates to matrixContents are seen.\n\t@Watch(\"getAllMatrixContents\", {deep: true})\n\tpublic onMatrixUpdated(matrixContents: any) {\n\t\tlet clipsLoaded: Array = [];\n\n\t\tfor (let i in matrixContents) {\n\t\t\tif (matrixContents[i].clip !== undefined) {\n\t\t\t\tlet clipIdentifier = matrixContents[i].clip.clip.UniqueFileIdentifier;\n\t\t\t\tclipsLoaded.push(clipIdentifier);\n\t\t\t}\n\t\t}\n\n\t\tthis.setShownAuditClips(clipsLoaded);\n\t}\n\n\t@Watch(\"isController\")\n\tasync onIsControllerChanged(value: boolean, oldValue: boolean) {\n\t\tif (value && this.eventId > 0 && this.loadedMatrix) {\n\t\t\tawait this.updateMatrix(this.eventId);\n\t\t}\n\t}\n\n\t@Watch(\"eventId\")\n\tpublic onEventChanged(eventId: number, oldEventId: number) {\n\t\tthis.setWaitingForEvent(eventId == 0);\n\n\t\tthis.clearMatrixContents();\n\t\tthis.setMediaMatrixIsNew(false);\n\t\tthis.loadEvent(this.eventId);\n\t}\n\n\tasync updateMatrix(eventId: number): Promise {\n\t\tthis.setMediaMatrixIsNew(false);\n\t\tthis.setFetchingMatrix(true);\n\t\tconst matrix = await api.matrixGet(eventId);\n\n\t\tif (matrix) {\n\t\t\tif (this.isController) {\n\t\t\t\t// Check if any cell has non-empty data, if so, consider new.\n\t\t\t\tconst allBlank = !matrix.cells.some(\n\t\t\t\t\tcell =>\n\t\t\t\t\t\tcell.contents !== \"{}\" &&\n\t\t\t\t\t\tcell.contents !== '{\"clip\":null,\"camera\":null}'\n\t\t\t\t);\n\t\t\t\tconst isNew = matrix.cells.length == 0 || allBlank;\n\n\t\t\t\t// Mark for default setup if has no cells or all cells are empty.\n\t\t\t\tthis.setMediaMatrixIsNew(isNew);\n\t\t\t\tif (!isNew) {\n\t\t\t\t\tconsole.log(\"Got existing matrix \");\n\t\t\t\t\tthis.setMatrix(matrix);\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"Empty matrix\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.setMediaMatrixIsNew(false);\n\t\t\t\tthis.setMatrix(matrix);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.log(\"New matrix for event \" + eventId);\n\n\t\t\tif (this.isController) {\n\t\t\t\tlet layout = this.layout;\n\n\t\t\t\t// Save new matrix\n\t\t\t\tawait api.matrixSave({\n\t\t\t\t\teventID: this.eventId,\n\t\t\t\t\tmatrixColumns: layout[0],\n\t\t\t\t\tmatrixRows: layout[1],\n\t\t\t\t\tcells: []\n\t\t\t\t});\n\n\t\t\t\tthis.setMediaMatrixIsNew(true);\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Not the controller - matrix will not be saved\");\n\t\t\t}\n\t\t\tthis.loadedMatrix = true;\n\t\t}\n\t}\n\n\tasync loadEvent(eventId: number) {\n\t\tif (this.loadedEventId == eventId) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.loadedEventId = eventId;\n\n\t\tthis.clearMatrixContents();\n\t\tif (eventId != undefined && eventId != 0) {\n\t\t\t// update our session keys for audit - we pass the baseURL in here because we sometimes encounter a situation where the axios baseURL\n\t\t\t// hasn't been updated to point at our remote region\n\t\t\tawait this.updateSession({\n\t\t\t\tresourceId: SessionResource.AuditServiceSession,\n\t\t\t\teventId: eventId\n\t\t\t});\n\t\t\tawait this.updateSession({\n\t\t\t\tresourceId: SessionResource.DeviceServiceSession,\n\t\t\t\teventId: eventId\n\t\t\t});\n\n\t\t\tawait this.updateMatrix(eventId);\n\t\t} else {\n\t\t\tthis.setDeviceControllerCameras([]);\n\t\t\tthis.setDeviceControllerClips([]);\n\t\t\tthis.setDeviceControllerOutputs([]);\n\t\t\tthis.setDeviceControllerAudioDevices([]);\n\n\t\t\tthis.setAwaitingCamera(null);\n\t\t\tthis.setAwaitingClip(null);\n\n\t\t\tthis.setLinkRecord(null);\n\n\t\t\tthis.resetBaseUrl();\n\t\t\tthis.loadedMatrix = false;\n\t\t}\n\t}\n\n\tpublic async setMatrix(matrix: Matrix): Promise {\n\t\tconsole.log(\"Setting up matrix ... \");\n\n\t\tconst layoutIndex = this.layouts.findIndex(\n\t\t\tlayout =>\n\t\t\t\tlayout[0] == matrix.matrixRows && layout[1] == matrix.matrixColumns\n\t\t);\n\n\t\tif (layoutIndex > -1) {\n\t\t\tthis.setLayoutIndex(layoutIndex)\n\t\t}\n\n\t\tif (matrix.cells != null) {\n\n\t\t\tconst cells = matrix.cells.map(cell =>\tJSON.parse(cell.contents));\n\t\t\tconst deviceIds = cells.filter(cell => !!cell.camera).map(cell => cell.camera.deviceId);\n\t\t\tawait this.fetchDeviceServerDetails(deviceIds);\n\n\t\t\tmatrix.cells.forEach((cell, index) => {\n\t\t\t\t// Try to parse the cell contents\n\t\t\t\tlet contents = cells[index];\n\n\t\t\t\t// If the cell is empty/invalid, don't do anything\n\t\t\t\tif (!contents) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t//Set contents of cell.\n\n\t\t\t\t// If camera, try to find camera in list, but if not, open anyway.\n\t\t\t\t// Do not get new event record.\n\t\t\t\t// Only send event record if user is controller.\n\n\t\t\t\t// If clip try to find in list, but if not, open anyway.\n\t\t\t\tlet currentContents = this.getMatrixContents(cell.cellIndex);\n\n\t\t\t\tif (contents.camera) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tcurrentContents == null ||\n\t\t\t\t\t\tcurrentContents.camera == null ||\n\t\t\t\t\t\tcurrentContents.camera.objectID != contents.camera.deviceId\n\t\t\t\t\t) {\n\t\t\t\t\t\t// Find an existing nearbyCamera or areaCamera\n\t\t\t\t\t\tconst nearbyCameraList: any[] = this.cameras.filter(\n\t\t\t\t\t\t\tcamera => camera.objectId == contents.camera.deviceId\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst areaCameraList: any[] = this.areaCameras.filter(\n\t\t\t\t\t\t\tcamera => camera.objectID == contents.camera.deviceId\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst haveNearbyCamera = nearbyCameraList != null && nearbyCameraList.length > 0;\n\t\t\t\t\t\tconst haveAreaCamera = areaCameraList != null && areaCameraList.length > 0\n\t\t\t\t\t\tlet haveCameras = haveNearbyCamera || haveAreaCamera;\n\n\t\t\t\t\t\tlet camera = null;\n\n\t\t\t\t\t\tif (haveCameras) {\n\t\t\t\t\t\t\tcamera = haveNearbyCamera ? nearbyCameraList[0] : areaCameraList[0];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcamera = {\n\t\t\t\t\t\t\t\tobjectID: contents.camera.deviceId,\n\t\t\t\t\t\t\t\ttitle: \"\"\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst objectId = camera.hasOwnProperty('objectID') ? camera.objectID : camera.objectId;\n\n\t\t\t\t\t\tif (this.isCameraEnabled(objectId)) {\n\t\t\t\t\t\t\tthis.setPushContents({\n\t\t\t\t\t\t\t\tindex: cell.cellIndex,\n\t\t\t\t\t\t\t\tnewContents: {\n\t\t\t\t\t\t\t\t\tcamera\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\teventId: this.eventId\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (contents.clip) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tcurrentContents == null ||\n\t\t\t\t\t\tcurrentContents.clip == null ||\n\t\t\t\t\t\tcurrentContents.clip.clip.UniqueFileIdentifier != contents.clip.UniqueFileIdentifier\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.setPushContents({\n\t\t\t\t\t\t\tindex: cell.cellIndex,\n\t\t\t\t\t\t\tnewContents: {\n\t\t\t\t\t\t\t\tclip: {\n\t\t\t\t\t\t\t\t\teventRecordID: contents.clip.eventRecordID,\n\t\t\t\t\t\t\t\t\tclip: {\n\t\t\t\t\t\t\t\t\t\tFileIdentifier: contents.clip.fileIdentifier,\n\t\t\t\t\t\t\t\t\t\tUniqueFileIdentifier: contents.clip.uniqueFileIdentifier\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\teventId: this.eventId\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\tcurrentContents != null &&\n\t\t\t\t\t\t(currentContents.camera != null || currentContents.clip != null)\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.setPushContents({\n\t\t\t\t\t\t\tindex: cell.cellIndex,\n\t\t\t\t\t\t\tnewContents: {},\n\t\t\t\t\t\t\teventId: this.eventId\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic async update() {\n\t\tif (!this.isController && this.eventId != undefined && this.eventId > 0) {\n\t\t\tlet matrix = await this.fetchMatrixForEvent(this.eventId);\n\t\t\tif (matrix) {\n\t\t\t\tthis.setMatrix(matrix);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async layoutChanged(evt) {\n\t\tconst newLayoutIndex = parseInt(evt.target.value);\n\n\t\tif (this.eventId > 0) {\n\t\t\tlet [matrixColumns, matrixRows] = this.layouts[newLayoutIndex];\n\t\t\tawait this.saveMatrix({\n\t\t\t\teventID: this.eventId,\n\t\t\t\tmatrixColumns,\n\t\t\t\tmatrixRows\n\t\t\t});\n\t\t}\n\n\t\t// layout change will trigger '/Matrix/Cell' updates from MatrixContainer\n\t\t// waiting for matrix update to finish first and change layout after that,\n\t\t// otherwise increase of size will cause errors during /Matrix/Cell reqs\n\t\tthis.setLayoutIndex(newLayoutIndex);\n\t}\n\n\tpublic cameraColStyle(layoutIndex: number) {\n\t\tlet hindex = Math.floor(layoutIndex / this.layoutHorizontal) + 1;\n\t\tlet vindex = (layoutIndex % this.layoutHorizontal) + 1;\n\n\t\tlet style = {\n\t\t\tmargin: \"2px\",\n\t\t\t\"grid-column-start\": vindex,\n\t\t\t\"grid-column-end\": vindex,\n\t\t\t\"grid-row-start\": hindex,\n\t\t\t\"grid-row-end\": hindex\n\t\t};\n\n\t\treturn style;\n\t}\n\n\tprivate expandedItem: HTMLElement | null = null;\n\tprivate expandParent: HTMLElement | null = null;\n\tprivate itemExpanded: boolean = false;\n\n\tpublic expand(matrixElement: HTMLElement) {\n\t\tif (this.itemExpanded) {\n\t\t\tthis.itemExpanded = false;\n\t\t\tthis.expandParent.appendChild(matrixElement);\n\t\t\tthis.expandParent = null;\n\t\t\tthis.expandedItem = null;\n\t\t} else {\n\t\t\tthis.expandedItem = matrixElement;\n\t\t\tthis.itemExpanded = true;\n\t\t\tthis.expandParent = matrixElement.parentElement;\n\t\t\tthis.$refs.expandedCamera.appendChild(matrixElement);\n\t\t}\n\t}\n\n\tpublic contract(matrixElement: HTMLElement) {\n\t\tif (this.itemExpanded && this.expandedItem == matrixElement) {\n\t\t\tthis.itemExpanded = false;\n\t\t\tif (this.expandParent != null) {\n\t\t\t\tthis.expandParent.appendChild(matrixElement);\n\t\t\t\tthis.expandParent = null;\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic resetBaseUrl() {\n\t\taxiosInstance.prototype.resetBackToOriginalBaseUrl();\n\t}\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cameras.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cameras.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Cameras.vue?vue&type=template&id=f65586f0&scoped=true\"\nimport script from \"./Cameras.vue?vue&type=script&lang=ts\"\nexport * from \"./Cameras.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Cameras.vue?vue&type=style&index=0&id=f65586f0&prod&scoped=true&lang=scss\"\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 \"f65586f0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.linkRecord)?_c('div',{staticClass:\"link-container\",attrs:{\"id\":\"linkingNotice\"}},[_c('div',{staticClass:\"card bg-primary\"},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('span',{staticClass:\"flex-grow-1 m-r-10\"},[_vm._v(\" Select a camera to link with \"+_vm._s(_vm.linkRecord.details)+\" \")]),_c('a',{staticClass:\"btn btn-secondary btn-accept\",on:{\"click\":function($event){return _vm.cancelLink()}}},[_vm._v(\"Cancel\")])])])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace } from 'vuex-class';\r\n\r\nconst SiteMonitorCameras = namespace('siteMonitorCameras');\r\n\r\n@Component({\r\n components: {\r\n }\r\n})\r\nexport default class LinkingCamera extends Vue {\r\n\r\n isDestroyed = false\r\n hide: boolean = true\r\n\r\n @SiteMonitorCameras.Getter(\"getLinkRecord\") linkRecord: any;\r\n @SiteMonitorCameras.Mutation setLinkRecord: any;\r\n \r\n public cancelLink() {\r\n this.setLinkRecord(null);\r\n }\r\n}\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkingCamera.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkingCamera.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LinkingCamera.vue?vue&type=template&id=28e72572&scoped=true\"\nimport script from \"./LinkingCamera.vue?vue&type=script&lang=ts\"\nexport * from \"./LinkingCamera.vue?vue&type=script&lang=ts\"\nimport style0 from \"./LinkingCamera.vue?vue&type=style&index=0&id=28e72572&prod&scoped=true&lang=scss\"\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 \"28e72572\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport { namespace, Getter, Action, Mutation } from \"vuex-class\";\n\nimport Sessions from \"@/components/Sessions.vue\";\nimport Cameras from \"@/components/Cameras.vue\";\nimport LinkingCamera from \"@/components/LinkingCamera.vue\";\nimport ManualRaise from \"@/components/ManualRaise.vue\";\nimport { FeaturesList } from \"@/store/types\";\nimport { SessionResource } from '@/store/sessions/types';\nimport { EventDetails } from \"@/store/site-monitor/types\";\nimport { get } from \"lodash\";\n\nconst SiteMonitor = namespace(\"siteMonitor\");\nconst SMCameras = namespace(\"siteMonitorCameras\");\n\n@Component({\n\tcomponents: {\n\t\tcameras: Cameras,\n\t\tsession: Sessions,\n\t\t\"link-camera\": LinkingCamera,\n\t\t\"manual-raise\": ManualRaise,\n\t}\n})\nexport default class SiteMonitorCameras extends Vue {\n\t@Getter isLoggedIn: any;\n\t@Getter getActiveRegion;\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\t@Action updateActiveRegion: any;\n\n\t@SMCameras.Mutation setMediaMatrixEventId: any; // should be proxied through action\n\t@SiteMonitor.Mutation private setActivity: () => void;\n\t@SiteMonitor.Getter(\"getEventDetails\") eventDetails: EventDetails;\n\n\tprivate auditServiceSessionResourceId = SessionResource.AuditServiceSession;\n\tprivate deviceServiceSessionResourceId = SessionResource.DeviceServiceSession;\n\n\t@Watch(\"isLoggedIn\")\n\tonIsLoggedInChanged(value: boolean, oldValue: boolean) {\n\t\tif (!value) {\n\t\t\twindow.close();\n\t\t}\n\t}\n\n\tget eventId() {\n\t\ttry {\n\t\t\treturn this.eventDetails == null ? 0 : this.eventDetails.eventID;\n\t\t} catch (err) {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tprivate mounted() {\n\t\tthis.$el.addEventListener(\"mousedown\", (e: MouseEvent) => { this.setActivity(); })\n\t}\n\n\tpublic beforeDestroy() {\n\t\tthis.$el.removeEventListener(\"mousedown\", (e: MouseEvent) => { this.setActivity(); })\n\t}\n\n\tprivate created() {\n\t\t//As this window is in a seperate window we need to retrieve the active region from the shared store\n\t\t//and call the update ActiveRegion action which will update the api's base url to point at the correct region\n\t\tthis.updateActiveRegion(this.getActiveRegion);\n\t\twindow.zE('webWidget', 'hide');\n\t}\n\n\tpublic get mediaMatrixEnabled() {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\"]);\n\t}\n\n\tpublic get linkedCamerasEnabled() {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"LinkedCameras\"]);\n\t}\n\n\tpublic get isCloseOnEventEndEnabled() {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"CloseOnEnd\"]);\n\t}\n\n\t@Watch(\"eventDetails\")\n\tprivate onEventDetailsChanged(newValue) {\n\t\tif (this.isCloseOnEventEndEnabled) {\n\t\t\tif (!newValue || newValue.eventID === 0) {\n\t\t\t\twindow.close();\n\t\t\t}\n\t\t}\n\t}\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteMonitorCameras.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteMonitorCameras.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SiteMonitorCameras.vue?vue&type=template&id=720f4dc2\"\nimport script from \"./SiteMonitorCameras.vue?vue&type=script&lang=ts\"\nexport * from \"./SiteMonitorCameras.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fill-body\"},[_c('div',{staticClass:\"card cameras-card\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Cameras\")]),_c('div',{staticClass:\"card-body d-flex\"},[_c('div',{staticClass:\"col\"},[_c('area-cameras',{on:{\"deviceSelected\":_vm.deviceSelected}})],1),_c('div',{staticClass:\"col\"},[_c('camera-control',{ref:\"camera\"})],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"cardfull-height\"},[_c('div',{staticClass:\"card-header\"},[_c('multiselect',{attrs:{\"track-by\":\"groupID\",\"label\":\"title\",\"placeholder\":\"Type to search\",\"options\":_vm.searchOptions,\"searchable\":true,\"allow-empty\":true,\"loading\":_vm.isLoading,\"internal-search\":false,\"multiple\":false,\"hideSelected\":true,\"clear-on-select\":true},on:{\"search-change\":_vm.asyncFind,\"select\":_vm.areaSelected},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(ref){\nvar option = ref.option;\nreturn [_c('span',[_vm._v(_vm._s(option.title))])]}}]),model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})],1),_c('VuePerfectScrollbar',{staticClass:\"card-body\"},[_c('div',{staticClass:\"list-group\"},_vm._l((_vm.areaCameras),function(camera){return _c('a',{key:camera.deviceID,staticClass:\"list-group-item list-group-item-action\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.cameraSelect(camera)}}},[_vm._v(_vm._s(camera.title))])}),0)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Emit, Prop } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport Multiselect from \"vue-multiselect\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst SMCameras = namespace('siteMonitorCameras');\r\n\r\n@Component({\r\n components: {\r\n multiselect: Multiselect,\r\n VuePerfectScrollbar: VuePerfectScrollbar\r\n }\r\n})\r\nexport default class AreaCameras extends Vue {\r\n @Eventqueue.Action searchGroups: any;\r\n @SMCameras.Action fetchAreaCameras: any;\r\n @SMCameras.Getter areaCameras: any[];\r\n\r\n public settings: any = {};\r\n public selected: any[] = [];\r\n public searchOptions: any[] = [];\r\n public isLoading: boolean = false;\r\n\r\n public areaSelected(selectedOption: any, id: string) {\r\n this.fetchAreaCameras(selectedOption.groupID);\r\n }\r\n\r\n @Emit(\"deviceSelected\")\r\n public cameraSelect(camera: any) {\r\n return camera;\r\n }\r\n\r\n async asyncFind(query: string) {\r\n this.isLoading = true;\r\n this.searchOptions = await this.searchGroups({\r\n SearchTerm: query\r\n });\r\n this.isLoading = false;\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaCameras.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaCameras.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaCameras.vue?vue&type=template&id=56835fb2&scoped=true\"\nimport script from \"./AreaCameras.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaCameras.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaCameras.vue?vue&type=style&index=0&id=56835fb2&prod&scoped=true&lang=scss\"\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 \"56835fb2\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport store from \"@/store\";\r\n\r\nimport Sessions from \"../components/Sessions.vue\";\r\nimport AuditControl from \"../components/AuditControl.vue\";\r\nimport AreaCameras from \"../components/AreaCameras.vue\";\r\nimport { AuditService, MediaFile } from \"../services/auditService\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"audit-control\": AuditControl,\r\n\t\t\"area-cameras\": AreaCameras,\r\n\t\tsession: Sessions\r\n\t}\r\n})\r\nexport default class Cameras extends Vue {\r\n\t$refs!: {\r\n\t\tcamera: any;\r\n\t};\r\n\r\n\tpublic deviceSelected(camera: any) {\r\n\t\tthis.$refs.camera.startCamera(camera.deviceID);\r\n\t}\r\n\r\n\tpublic mounted() {}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cameras.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Cameras.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Cameras.vue?vue&type=template&id=0eb094c4&scoped=true\"\nimport script from \"./Cameras.vue?vue&type=script&lang=ts\"\nexport * from \"./Cameras.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Cameras.vue?vue&type=style&index=0&id=0eb094c4&prod&scoped=true&lang=scss\"\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 \"0eb094c4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card wrapper\"},[_c('session',{attrs:{\"resource-id\":_vm.auditServiceSessionResourceId,\"eventId\":0}}),_c('nav-header',{attrs:{\"title\":\"Event Search\"},scopedSlots:_vm._u([{key:\"controls\",fn:function(){return [(_vm.showSearchButton)?_c('b-button',{staticClass:\"mr-4\",attrs:{\"data-cy\":\"event-search-page-button-return-to-search\"},on:{\"click\":_vm.toSearch}},[_vm._v(\" Search \")]):_vm._e(),_c('div',{staticClass:\"input-group\",staticStyle:{\"width\":\"200px\",\"margin-right\":\"25px\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.eventGoto),expression:\"eventGoto\"}],staticClass:\"form-control flex-grow-1 flex-shrink-1\",attrs:{\"id\":\"search-input\",\"type\":\"number\",\"min\":\"1\",\"placeholder\":\"Go to Event ID\",\"onkeydown\":\"return event.keyCode !== 69\"},domProps:{\"value\":(_vm.eventGoto)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.gotoEvent()},\"input\":function($event){if($event.target.composing){ return; }_vm.eventGoto=$event.target.value}}}),_c('div',{staticClass:\"input-group-append\"},[_c('b-button',{attrs:{\"id\":\"search-button\",\"data-cy\":\"event-search-page-button-execute-search\"},on:{\"click\":_vm.gotoEvent}},[_vm._v(\" Go \")])],1)])]},proxy:true}])}),_c('div',{staticClass:\"card-body d-flex flex-column card-body-half-padding\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isSearchCollapsed && !this.$route.params.eventId),expression:\"!isSearchCollapsed && !this.$route.params.eventId\"}],staticClass:\"p-1 flex-shrink-0\"},[_c('event-search',{staticClass:\"flex-shrink-0 w-100\",attrs:{\"eventId\":_vm.selectedEventId,\"searchPending\":_vm.searchPending,\"data-cy\":\"event-search\"},on:{\"setSearchFilter\":_vm.onSearch}})],1),_c('div',{staticClass:\"p-1 d-flex flex-grow-1\",staticStyle:{\"height\":\"100%\",\"overflow\":\"hidden\"}},[(_vm.events.length > 0)?_c('div',{staticClass:\"card results-column no-padding\",staticStyle:{\"margin-right\":\"5px\"}},[_c('header',{staticClass:\"card-header\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('h6',{staticClass:\"mb-0 flex-grow-1\"},[_vm._v(\" Results: \"+_vm._s(this.resultCount)+\" \")]),_c('b-button',{attrs:{\"variant\":\"primary\",\"id\":\"showSearch\",\"data-cy\":\"event-search-page-button-search-again\"},on:{\"click\":function($event){_vm.makeSearchRequest = false}}},[_vm._v(\" Search Again \")])],1)]),_c('div',{staticClass:\"card-body d-flex flex-row p-0\",attrs:{\"id\":\"resultsList\"}},[_c('ul',{staticClass:\"list-group flex-grow-1 event-search-list-container thin-scroll\",attrs:{\"id\":\"eventSearchResultsList\",\"data-cy\":\"event-search-results\"},on:{\"scrollend\":_vm.onScroll}},[_vm._l((_vm.events),function(event){return _c('li',{key:event.eventID,staticClass:\"list-group-item list-group-item-action\",class:{ active: _vm.selectedEvent && event.eventID === _vm.selectedEvent.eventID},attrs:{\"data-cy\":(\"event-search-page-li-\" + (event.eventID))},on:{\"click\":function($event){return _vm.eventSelect(event)}}},[(!_vm.isAdditionalEventSearchDetailsEnabled)?_c('div',{attrs:{\"data-cy\":\"unpaginated-search-results\"}},[(_vm.isEventFlaggingEnabled && event.flaggedForReview)?_c('span',{staticClass:\"float-right badge badge-danger\",attrs:{\"title\":\"Event has been flagged for review\",\"data-cy\":(\"event-search-page-span-flagged-\" + (event.eventID))}},[_c('i',{staticClass:\"fas fa-flag\"})]):_vm._e(),_c('p',{staticClass:\"mb-0\"},[_vm._v(_vm._s(event.outcomeTitle))]),_c('p',{staticClass:\"mb-0\"},[_c('small',{attrs:{\"data-cy\":(\"event-search-page-small-area-title-\" + (event.eventID))}},[_vm._v(\" \"+_vm._s(event.areaTitle || \"\")+\" \")])]),_c('p',{staticClass:\"mb-0\"},[_c('small',{attrs:{\"data-cy\":(\"event-search-page-small-created-\" + (event.eventID))}},[_vm._v(\" \"+_vm._s(event.created ? _vm.convertUtcDateTimeToLocalDateTimeString(event.created) : \"\")+\" \")])])]):_c('div',{attrs:{\"data-cy\":\"paginated-search-results\"}},[(_vm.isEventFlaggingEnabled && event.flaggedForReview)?_c('span',{staticClass:\"float-right badge badge-danger\",attrs:{\"title\":\"Event has been flagged for review\",\"data-cy\":(\"additional-event-search-details-span-flagged-\" + (event.eventID))}},[_c('i',{staticClass:\"fas fa-flag\"})]):_vm._e(),_c('div',{staticClass:\"row paragraph\"},[_vm._m(0,true),_c('div',{staticClass:\"col-sm-8\"},[_vm._v(_vm._s(_vm._f(\"truncateString\")(event.details,250)))])]),_c('div',{staticClass:\"row paragraph\"},[_vm._m(1,true),_c('div',{staticClass:\"col-sm-8\"},[_vm._v(_vm._s(event.outcomeTitle))])]),_c('div',{staticClass:\"row paragraph\"},[_vm._m(2,true),_c('div',{staticClass:\"col-sm-8\"},[_vm._v(_vm._s(event.created ? _vm.convertUtcDateTimeToLocalDateTimeString(event.created) : \"\"))])]),_c('div',{staticClass:\"row paragraph\"},[_vm._m(3,true),_c('div',{staticClass:\"col-sm-8\"},[_vm._v(_vm._s(event.closed ? _vm.convertUtcDateTimeToLocalDateTimeString(event.closed) : \"\"))])]),_c('div',{staticClass:\"row paragraph\"},[_vm._m(4,true),_c('div',{staticClass:\"col-sm-8\"},[_vm._v(_vm._s(_vm.getAreaTitle(event.groupID)))])]),_c('div',{staticClass:\"row paragraph\"},[_vm._m(5,true),_c('div',{staticClass:\"col-sm-8\"},_vm._l((event.operators),function(operator){return _c('div',{key:operator.colorIndex,staticClass:\"m-r-20\"},[_c('div',{staticClass:\"circle small\",class:'user-' + operator.colorIndex,attrs:{\"title\":operator.name}},[_vm._v(\" \"+_vm._s(operator.initials)+\" \")]),_vm._v(\" \"+_vm._s(operator.name)+\" \")])}),0)])])])}),(_vm.isLoading)?_c('div',[_c('p',{staticClass:\"m-l-10 m-t-10\"},[_vm._v(\" Loading... \"),(_vm.isLoading)?_c('i',{staticClass:\"fas fa-spinner fa-spin ml-1\"}):_vm._e()])]):_vm._e()],2)])]):_vm._e(),(!_vm.searching && _vm.selectedEvent)?_c('event-review',{staticClass:\"flex-grow-1\",staticStyle:{\"height\":\"100%\"},attrs:{\"event\":_vm.selectedEvent,\"data-cy\":\"event-review\"},on:{\"event-removed\":_vm.clearEventSelectAndRemoveFromResults,\"event-preserve-updated\":_vm.eventPreserveUpdated,\"goToEventPage\":_vm.onGoToEventPage}}):_vm._e(),(!_vm.selectedEvent && !_vm.isEmptySearchResults && !_vm.searching && _vm.events.length > 0)?_c('div',{staticClass:\"w-100\"},[_c('h4',{staticClass:\"center-text\"},[_vm._v(\"No event selected\")])]):_vm._e(),(_vm.searching)?_c('div',{staticClass:\"text-center m-5 flex-grow-1\",attrs:{\"data-cy\":\"empty-search-results\"}},[_c('i',{staticClass:\"fas fa-spinner fa-spin\"}),_vm._v(\" Searching ... \")]):_vm._e(),(!_vm.searching && _vm.isEmptySearchResults)?_c('div',{staticClass:\"text-center m-5 flex-grow-1\",attrs:{\"data-cy\":\"empty-search-results\"}},[_vm._v(\" Sorry, no events matched your search. Please try again. \")]):_vm._e()],1)])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Event Details:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Event Outcome:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Event Start Time:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Event End Time:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Area:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Operator(s):\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\"},[_c('div',{staticClass:\"card-body p-2\"},[_c('div',{staticClass:\"search-box full align-items-center\"},[_c('div',{staticClass:\"d-flex input-row pb-1\"},[_c('div',[_c('datetime',{staticClass:\"p-r-5\",attrs:{\"type\":\"datetime\",\"inputId\":\"StartDate\",\"valueZone\":_vm.timeZone,\"data-cy\":\"event-search-date-time-search-from\"},model:{value:(_vm.searchModel.from),callback:function ($$v) {_vm.$set(_vm.searchModel, \"from\", $$v)},expression:\"searchModel.from\"}},[_c('label',{attrs:{\"slot\":\"before\",\"for\":\"StartDate\"},slot:\"before\"},[_c('span',{staticClass:\"p-r-5\"},[_vm._v(\"From:\")])]),_c('label',{attrs:{\"slot\":\"after\",\"for\":\"StartDate\"},slot:\"after\"},[_c('i',{staticClass:\"far fa-calendar-alt clickable-row medium-icon\"})])])],1),_c('div',[_c('datetime',{staticClass:\"flex-grow-1\",attrs:{\"type\":\"datetime\",\"inputId\":\"EndDate\",\"valueZone\":_vm.timeZone,\"data-cy\":\"event-search-date-time-search-until\"},model:{value:(_vm.searchModel.until),callback:function ($$v) {_vm.$set(_vm.searchModel, \"until\", $$v)},expression:\"searchModel.until\"}},[_c('label',{attrs:{\"slot\":\"before\",\"for\":\"StartDate\"},slot:\"before\"},[_c('span',{staticClass:\"p-r-5\"},[_vm._v(\"Until:\")])]),_c('label',{attrs:{\"slot\":\"after\",\"for\":\"EndDate\"},slot:\"after\"},[_c('i',{staticClass:\"far fa-calendar-alt clickable-row medium-icon\"})])])],1),_c('div',[(_vm.isIncludeAutoHandledEnabled)?_c('b-form-checkbox',{staticClass:\"mr-2\",model:{value:(_vm.searchModel.includeAutoHandled),callback:function ($$v) {_vm.$set(_vm.searchModel, \"includeAutoHandled\", $$v)},expression:\"searchModel.includeAutoHandled\"}},[_vm._v(\" Include Auto handled events \")]):_vm._e()],1)]),(_vm.showMap)?_c('div',{staticClass:\"{'d-flex': showMap}\",attrs:{\"data-cy\":\"div-map-search\"}},[_c('div',{staticClass:\"map-wrapper\"},[_c('map-search',{attrs:{\"id\":\"mapSearch\"},on:{\"setBounds\":_vm.setBounds,\"setMapLocation\":_vm.setMapLocation}}),_c('div',{ref:\"mappingContainer\",attrs:{\"id\":\"divMappingContainer\"}})],1)]):_vm._e()]),_c('div',{staticClass:\"search-row p-t-5\"},[_c('div',{staticClass:\"search-box align-items-center\"},[_c('div',{staticClass:\"card card-secondary w-100\"},[_vm._m(0),_c('div',{staticClass:\"card-body no-padding d-flex align-items-center\"},[_c('area-tree-select',{staticClass:\"transparent\",attrs:{\"id\":\"areaFilter\",\"reduce\":function (a) { return a.id; },\"clearable\":false},model:{value:(_vm.searchModel.groupID),callback:function ($$v) {_vm.$set(_vm.searchModel, \"groupID\", $$v)},expression:\"searchModel.groupID\"}})],1)])]),(_vm.isEventTagSearchEnabled && _vm.tags && _vm.tags.length > 0)?_c('div',{staticClass:\"search-box align-items-center\"},[_c('div',{staticClass:\"card card-secondary w-100\"},[_vm._m(1),_c('div',{staticClass:\"card-body no-padding d-flex flex-row align-items-center\"},[_c('v-select-3',{staticClass:\"dark w-100 ml-1\",attrs:{\"label\":\"tagText\",\"id\":\"tagFilter\",\"multiple\":\"\",\"reduce\":function (tag) { return tag.tagId; },\"options\":_vm.tags,\"placeholder\":\"Tag\",\"appendToBody\":\"\"},model:{value:(_vm.searchModel.tags),callback:function ($$v) {_vm.$set(_vm.searchModel, \"tags\", $$v)},expression:\"searchModel.tags\"}}),(_vm.searchModel && _vm.searchModel.tags.length > 1)?_c('b-form-checkbox',{staticClass:\"tag-search-all\",attrs:{\"id\":\"allTags\"},model:{value:(_vm.searchModel.allTags),callback:function ($$v) {_vm.$set(_vm.searchModel, \"allTags\", $$v)},expression:\"searchModel.allTags\"}},[_vm._v(\" All \")]):_vm._e()],1)])]):_vm._e(),_c('div',{staticClass:\"search-box align-items-center\"},[_c('div',{staticClass:\"card card-secondary w-100\"},[_vm._m(2),_c('div',{staticClass:\"card-body no-padding ml-1\"},[_c('v-select-3',{staticClass:\"dark w-100\",attrs:{\"label\":\"title\",\"id\":\"deviceTypeFilter\",\"reduce\":function (dt) { return dt.serverTypeID; },\"options\":_vm.eventDeviceTypes,\"placeholder\":\"Device Type\",\"appendToBody\":\"\"},model:{value:(_vm.searchModel.deviceType),callback:function ($$v) {_vm.$set(_vm.searchModel, \"deviceType\", $$v)},expression:\"searchModel.deviceType\"}})],1)])]),_c('div',{staticClass:\"search-box align-items-center\"},[_c('div',{staticClass:\"card card-secondary w-100\"},[_vm._m(3),_c('div',{staticClass:\"card-body no-padding\"},[_c('v-select-3',{staticClass:\"dark w-100 ml-1\",attrs:{\"label\":\"title\",\"id\":\"alarmTypeFilter\",\"reduce\":function (at) { return at.eventNum; },\"options\":_vm.eventAlarmTypes,\"placeholder\":\"Alarm Type\",\"appendToBody\":\"\"},model:{value:(_vm.searchModel.alarmType),callback:function ($$v) {_vm.$set(_vm.searchModel, \"alarmType\", $$v)},expression:\"searchModel.alarmType\"}},[_c('template',{slot:\"no-options\"},[(!_vm.searchModel || !_vm.searchModel.deviceType)?_c('span',[_vm._v(\"Select a device type first\")]):_c('span',[_vm._v(\"Sorry, no matching alarm types found\")])])],2)],1)])]),_c('div',{staticClass:\"search-box align-items-center\"},[_c('div',{staticClass:\"card card-secondary w-100\"},[_vm._m(4),_c('div',{staticClass:\"card-body no-padding\"},[_c('v-select-3',{staticClass:\"w-100 ml-1\",attrs:{\"label\":\"fullName\",\"id\":\"operatorFilter\",\"reduce\":function (operator) { return operator.userID; },\"options\":_vm.eventOperators,\"placeholder\":\"Operator\",\"appendToBody\":\"\"},model:{value:(_vm.searchModel.operator),callback:function ($$v) {_vm.$set(_vm.searchModel, \"operator\", $$v)},expression:\"searchModel.operator\"}})],1)])]),(_vm.isEventTypeFilteringEnabled)?_c('div',{staticClass:\"search-box align-items-center\"},[_c('div',{staticClass:\"card card-secondary w-100\"},[_vm._m(5),_c('div',{staticClass:\"card-body no-padding\"},[_c('v-select-3',{ref:\"eventTypeFilterSelector\",staticClass:\"w-100 ml-1\",attrs:{\"id\":\"eventTypeFilter\",\"label\":\"title\",\"reduce\":function (searchableEventType) { return searchableEventType.eventTypeID; },\"options\":_vm.allSearchableEventTypes,\"placeholder\":\"Event Type\",\"data-cy\":\"event-type-filter\",\"clearable\":_vm.searchModel.eventTypeId !== _vm.allEventTypeFilterOption.eventTypeID,\"appendToBody\":\"\"},on:{\"cleared\":function($event){_vm.searchModel.eventTypeId = _vm.allEventTypeFilterOption.eventTypeID},\"input\":_vm.checkIfEventTypeHasBeenCleared},model:{value:(_vm.searchModel.eventTypeId),callback:function ($$v) {_vm.$set(_vm.searchModel, \"eventTypeId\", $$v)},expression:\"searchModel.eventTypeId\"}})],1)])]):_vm._e(),(_vm.isFeatureAlarmTagSearchEnabled && _vm.alarmTagOptions && _vm.alarmTagOptions.length > 0)?_c('div',{staticClass:\"search-box align-items-center\"},[_c('div',{staticClass:\"card card-secondary w-100\"},[_vm._m(6),_c('div',{staticClass:\"card-body no-padding d-flex flex-row align-items-center\"},[_c('v-select-3',{staticClass:\"w-100 ml-1\",attrs:{\"label\":\"title\",\"id\":\"alarmTagFilter\",\"multiple\":\"\",\"reduce\":function (at) { return at.responseAlarmTypeID; },\"options\":_vm.alarmTagOptions,\"placeholder\":\"Alarm Tag\",\"appendToBody\":\"\"},model:{value:(_vm.searchModel.alarmTags),callback:function ($$v) {_vm.$set(_vm.searchModel, \"alarmTags\", $$v)},expression:\"searchModel.alarmTags\"}}),(_vm.searchModel && _vm.searchModel.alarmTags.length > 1)?_c('b-form-checkbox',{staticClass:\"tag-search-all\",attrs:{\"id\":\"allAlarmTags\"},model:{value:(_vm.searchModel.allAlarmTags),callback:function ($$v) {_vm.$set(_vm.searchModel, \"allAlarmTags\", $$v)},expression:\"searchModel.allAlarmTags\"}},[_vm._v(\" All \")]):_vm._e()],1)])]):_vm._e()]),_c('div',{staticClass:\"search-row\"},[_c('div',{staticClass:\"search-box full align-items-center\"},[_c('event-outcome-selector',{staticClass:\"w-100\",attrs:{\"id\":\"categoryFilter\",\"eventCategories\":_vm.eventCategoriesMap,\"clearClicked\":_vm.clearClicked,\"dataLoaded\":_vm.dataLoaded},on:{\"input\":_vm.outcomeChanged,\"cleared\":function($event){_vm.clearClicked = false}}})],1)]),_c('div',{staticClass:\"search-row justify-content-end p-r-10\"},[_c('div',{staticClass:\"search-btn\"},[_c('b-button',{staticClass:\"btn btn-secondary mr-1\",attrs:{\"id\":\"clearBtn\"},on:{\"click\":function($event){return _vm.clear()}}},[_vm._v(\"Clear\")]),_c('b-button',{staticClass:\"btn btn-primary\",attrs:{\"variant\":\"primary\",\"id\":\"searchBtn\",\"disabled\":_vm.searchPending,\"title\":_vm.searchText},on:{\"click\":function($event){return _vm.search()}}},[_vm._v(\" \"+_vm._s(this.searchText)+\" \"),(this.searchPending)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()])],1)])]),_c('incident-report',{attrs:{\"eventid\":_vm.eventId}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header\"},[_c('i',{staticClass:\"fas fa-home m-r-10\"}),_vm._v(\" Area \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header\"},[_c('i',{staticClass:\"fas fa-tags m-r-10\"}),_vm._v(\" Find with \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header\"},[_c('i',{staticClass:\"fas fa-server m-r-10\"}),_vm._v(\" Device Type \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header\"},[_c('i',{staticClass:\"fas fa-bell m-r-10\"}),_vm._v(\" Alarm Type \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header\"},[_c('i',{staticClass:\"fas fa-user m-r-10\"}),_vm._v(\" Operator \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header\"},[_c('i',{staticClass:\"fas fa-server m-r-10\"}),_vm._v(\" Event Type \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card-header\"},[_c('i',{staticClass:\"fas fa-tags m-r-10\"}),_vm._v(\" Alarm Tag \")])}]\n\nexport { render, staticRenderFns }","// tslint:disable-next-line:class-name\r\nexport default class cornerBounds {\r\n\tpublic raw: google.maps.LatLngBounds;\r\n\tpublic ne: google.maps.LatLng;\r\n\tpublic sw: google.maps.LatLng;\r\n\tconstructor(\r\n\t\traw: google.maps.LatLngBounds,\r\n\t\tne: google.maps.LatLng,\r\n\t\tsw: google.maps.LatLng\r\n\t) {\r\n\t\tthis.ne = ne;\r\n\t\tthis.sw = sw;\r\n\t\tthis.raw = raw;\r\n\t}\r\n}\r\n","/// \r\n// import { } from 'googlemaps';\r\nimport CornerBounds from \"@/scripts/mapping/cornerBounds\";\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tgoogle: any;\r\n\t}\r\n}\r\n\r\nwindow.google = window.google || {};\r\n\r\n// tslint:disable-next-line:class-name\r\nclass eventMap {\r\n\t[s: string]: Function[];\r\n}\r\n\r\nexport default class GoogleMap {\r\n\tpublic get bounds(): CornerBounds {\r\n\t\tconst bounds = this.map.getBounds();\r\n\t\treturn new CornerBounds(bounds!, bounds!.getNorthEast(), bounds!.getSouthWest());\r\n\t}\r\n\r\n\tpublic container: HTMLElement;\r\n\tpublic mapTypeId: google.maps.MapTypeId;\r\n\r\n\tpublic map: google.maps.Map;\r\n\r\n\tpublic minLevelForFullIcons: number = 17;\r\n\tpublic minLevelForItems = 14;\r\n\tpublic currentViewState: string | null = null;\r\n\r\n\tpublic viewportChangedTimeout: NodeJS.Timeout = null;\r\n\r\n\tpublic events: eventMap = new eventMap();\r\n\r\n\tpublic constructor(\r\n\t\tcontainerElement: HTMLElement,\r\n\t\tcenter: any,\r\n\t\tzoomLevel: number,\r\n\t\tstreetview: boolean,\r\n\t\tmapViewType: string,\r\n\t\tmapStyles: any,\r\n\t\tmobileMode: boolean = false\r\n\t) {\r\n\t\tif (typeof window.google === \"undefined\") {\r\n\t\t\tthrow new ReferenceError(\"Google Maps is not defined\");\r\n\t\t}\r\n\r\n\t\tthis.container = containerElement;\r\n\r\n\t\tthis.mapTypeId = google.maps.MapTypeId.HYBRID;\r\n\t\tif (mapViewType) {\r\n\t\t\tswitch (mapViewType.toLowerCase()) {\r\n\t\t\t\tcase \"terrain\":\r\n\t\t\t\t\tthis.mapTypeId = google.maps.MapTypeId.TERRAIN;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"roadmap\":\r\n\t\t\t\t\tthis.mapTypeId = google.maps.MapTypeId.ROADMAP;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"satellite\":\r\n\t\t\t\t\tthis.mapTypeId = google.maps.MapTypeId.SATELLITE;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"hybrid\":\r\n\t\t\t\t\tthis.mapTypeId = google.maps.MapTypeId.HYBRID;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.events[\"onViewportChanged\"] = new Array();\r\n\t\tthis.events[\"onViewportChangedDelayed\"] = new Array();\r\n\t\tthis.events[\"onDisplayTypeChanged\"] = new Array();\r\n\t\tthis.events[\"onClick\"] = new Array();\r\n\t\tthis.events[\"onMapTypeChanged\"] = new Array();\r\n\r\n\t\tthis.map = new google.maps.Map(this.container, {\r\n\t\t\tcenter,\r\n\t\t\tzoom: zoomLevel,\r\n\t\t\tmapTypeId: this.mapTypeId,\r\n\t\t\tmapTypeControl: !mobileMode,\r\n\t\t\tzoomControl: !mobileMode,\r\n\t\t\tscaleControl: false,\r\n\t\t\tstreetViewControl: streetview,\r\n\t\t\tfullscreenControl: false,\r\n\t\t\trotateControl: false,\r\n\t\t\tstyles: mapStyles,\r\n\t\t\tgestureHandling: \"greedy\",\r\n\t\t\tbackgroundColor: \"none\"\r\n\t\t});\r\n\t\tthis.map.setTilt(0);\r\n\r\n\t\tthis.map.addListener(\"zoom_changed\", () => this.handleZoomLevelChanged());\r\n\t\tthis.map.addListener(\"bounds_changed\", () => this.handleBoundsChanged());\r\n\t\tthis.map.addListener(\"click\", event => {\r\n\t\t\tthis.raise(\"onClick\", event.latLng);\r\n\t\t});\r\n\t\tthis.map.addListener(\"maptypeid_changed\", () => {\r\n\t\t\tthis.raise(\"onMapTypeChanged\", this.map.getMapTypeId());\r\n\t\t});\r\n\r\n\t\tthis.zoomLevelSet(zoomLevel, false);\r\n\t}\r\n\r\n\tpublic handleZoomLevelChanged() {\r\n\t\tthis.zoomLevelSet(this.map.getZoom(), true);\r\n\t}\r\n\r\n\tpublic handleBoundsChanged() {\r\n\t\tthis.raise(\"onViewportChanged\", {});\r\n\r\n\t\tif (this.viewportChangedTimeout != null) {\r\n\t\t\tclearTimeout(this.viewportChangedTimeout!);\r\n\t\t}\r\n\r\n\t\tthis.viewportChangedTimeout = setTimeout(() => {\r\n\t\t\tthis.raise(\"onViewportChangedDelayed\", this.map.getBounds());\r\n\t\t}, 600);\r\n\t}\r\n\r\n\tpublic zoomLevelSet(currentZoomLevel: number, raise: boolean) {\r\n\t\tlet hasChanged = false;\r\n\t\tif (currentZoomLevel < this.minLevelForItems) {\r\n\t\t\tif (this.currentViewState === \"wide\") {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.currentViewState = \"wide\";\r\n\t\t\thasChanged = true;\r\n\t\t} else if (currentZoomLevel <= this.minLevelForFullIcons && currentZoomLevel >= this.minLevelForItems) {\r\n\t\t\tif (this.currentViewState === \"medium\") {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.currentViewState = \"medium\";\r\n\t\t\thasChanged = true;\r\n\t\t} else if (currentZoomLevel > this.minLevelForItems) {\r\n\t\t\tif (this.currentViewState === \"narrow\") {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.currentViewState = \"narrow\";\r\n\t\t\thasChanged = true;\r\n\t\t}\r\n\r\n\t\tif (hasChanged && raise) {\r\n\t\t\tthis.raise(\"onDisplayTypeChanged\", {\r\n\t\t\t\tviewState: this.currentViewState\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tpublic raise(event: string, arg: any) {\r\n\t\tthis.events[event].forEach(function(handler) {\r\n\t\t\thandler(arg);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic registerEvent(event: string, callback: Function) {\r\n\t\tthis.events[event].push(callback);\r\n\t}\r\n\r\n\tpublic buildBoundsForLayerOnPositions(NE: string, SW: string) {\r\n\t\tconst neArray = NE.split(\" \");\r\n\t\tconst neLat = neArray[0];\r\n\t\tconst neLng = neArray[1];\r\n\r\n\t\tconst swArray = SW.split(\" \");\r\n\t\tconst swLat = swArray[0];\r\n\t\tconst swLng = swArray[1];\r\n\r\n\t\tconst trueNE = { lat: parseFloat(neLat), lng: parseFloat(neLng) };\r\n\t\tconst trueSW = { lat: parseFloat(swLat), lng: parseFloat(swLng) };\r\n\r\n\t\treturn new google.maps.LatLngBounds(trueSW, trueNE);\r\n\t}\r\n\r\n\tpublic getLatLngPolarity(latLng: string) {\r\n\t\tconst regex = /([1-8]?[1-9]|[1-9])\\.{1}\\d{1,16}([A-Z])/g;\r\n\r\n\t\tconst result = regex.exec(latLng);\r\n\t\tif (typeof result !== \"undefined\" && result !== null && result.length === 3) {\r\n\t\t\treturn result[2];\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n}\r\n","export default function getScript(source: any) {\r\n\t// TODO: guarantee once loaded\r\n\r\n\treturn new Promise((resolve, reject) => {\r\n\t\t// if (document.querySelector('script[src=\"' + source + '\"]')) {\r\n\t\tif (document.querySelector('script[src*=\"' + source.split(\"/\")[2] + '\"]')) {\r\n\t\t\t// Already have the script on the page.\r\n\t\t\tresolve();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst script = document.createElement(\"script\");\r\n\t\tconst prior = document.getElementsByTagName(\"script\")[0];\r\n\r\n\t\tscript.async = true;\r\n\t\tscript.defer = true;\r\n\t\tscript.src = source;\r\n\r\n\t\tif (document.documentElement != null) {\r\n\t\t\tdocument.documentElement.appendChild(script);\r\n\t\t}\r\n\r\n\t\tscript.onload = () => {\r\n\t\t\tresolve(\"Resolved!\");\r\n\t\t};\r\n\r\n\t\tscript.onerror = () => {\r\n\t\t\treject();\r\n\t\t};\r\n\t});\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-nowrap flex-column align-items-end controls\"},[_c('div',{staticClass:\"alert alert-secondary pr-2 w-75 location-search-control\"},[_c('div',{staticClass:\"input-group\"},[_vm._m(0),_c('div',{staticClass:\"flex-grow-1\"},[_c('input',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.searchType === 'location'),expression:\"searchType === 'location'\"}],ref:\"locationSearch\",staticClass:\"form-control shrink\",staticStyle:{\"height\":\"unset\"},attrs:{\"type\":\"text\",\"id\":\"tbLocation\",\"placeholder\":\"Enter a location\",\"aria-label\":\"Enter a location or area\",\"aria-describedby\":\"basic-addon2\"}}),_c('multiselect',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.searchType === 'area'),expression:\"searchType === 'area'\"}],staticClass:\"shrink flex-grow-1 location-multiselect\",attrs:{\"track-by\":\"groupID\",\"label\":\"title\",\"placeholder\":\"Type to search\",\"options\":_vm.groups,\"searchable\":true,\"allow-empty\":true,\"loading\":_vm.groupSearchLoading,\"internal-search\":false,\"multiple\":false,\"hideSelected\":false,\"selectLabel\":\"\",\"deselectLabel\":\"\",\"selectedLabel\":\"\",\"allowEmpty\":false},on:{\"search-change\":_vm.findGroup,\"select\":_vm.areaSelected},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(ref){\nvar option = ref.option;\nreturn [_c('span',[_vm._v(_vm._s(option.title))])]}}]),model:{value:(_vm.selectedGroup),callback:function ($$v) {_vm.selectedGroup=$$v},expression:\"selectedGroup\"}},[_c('template',{slot:\"noOptions\"},[_c('span',[_vm._v(\"Search for an area\")])]),_c('template',{slot:\"noResult\"},[_c('span',[_vm._v(\"No areas found\")])])],2)],1),_c('div',{staticClass:\"input-group-prepend ml-2\"},[_c('button',{staticClass:\"btn no-shadow\",class:{ 'btn-primary': _vm.searchType === 'area', 'btn-secondary': _vm.searchType !== 'area' },attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.searchType = 'area'}}},[_vm._v(\" Area \")]),_c('button',{staticClass:\"btn no-shadow\",class:{ 'btn-primary': _vm.searchType === 'location', 'btn-secondary': _vm.searchType !== 'location' },attrs:{\"type\":\"button\"},on:{\"click\":function($event){_vm.searchType = 'location'}}},[_vm._v(\" Address \")])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"input-group-text mr-2\",staticStyle:{\"padding\":\"unset\"}},[_c('b',[_vm._v(\"Search: \")])])}]\n\nexport { render, staticRenderFns }","\n import { Component, Vue, Watch, Emit } from 'vue-property-decorator';\n import { namespace, Getter, Mutation, Action } from 'vuex-class';\n\n import Multiselect from 'vue-multiselect';\n\timport api from \"@/services/api.service\";\n\timport { MapBounds } from \"@/store/map-layers/types\";\n\n const MapLayers = namespace('mapLayers');\n\n @Component({\n components: {\n 'multiselect': Multiselect\n }\n })\n export default class MapSearch extends Vue {\n\n public autocomplete: google.maps.places.Autocomplete | null = null;\n\n @Action searchGroup: any;\n public groupSearchLoading: boolean = false;\n\n public searchType: string = 'area';\n public selectedGroup: any = {};\n public createdAutocomplete: boolean = false;\n\n @Getter('getUserGroups') groups: any;\n\n @MapLayers.State('defaultMapBounds') MapBounds: MapBounds;\n\n @Watch('searchType')\n onSearchTypeChanged(value: string) {\n if (value === 'location' && !this.createdAutocomplete) {\n this.createdAutocomplete = true;\n this.setAutocomplete();\n }\n }\n\n public async findGroup(query: string) {\n this.groupSearchLoading = true;\n await this.searchGroup(query);\n this.groupSearchLoading = false;\n }\n\n @Emit(\"setBounds\")\n public async areaSelected(area: any) {\n const bounds = await api.getBoundsForArea(area.groupID);\n if (bounds) {\n return bounds;\n }\n }\n\n public setAutocomplete() {\n\n setTimeout(() => {\n this.autocomplete = new google.maps.places.Autocomplete(\n document.getElementById('tbLocation') as HTMLInputElement);\n\n //this.autocomplete!.bindTo('bounds', this.map!.map);\n (this.autocomplete as any).setFields(['address_components', 'geometry', 'name']);\n\n this.autocomplete!.addListener('place_changed', () => {\n\n let place = this.autocomplete!.getPlace();\n\n if (place.geometry) {\n\n\n if (place.geometry.viewport) {\n console.log(\"setMapLocation - viewport\");\n this.$emit(\"setMapLocation\", { viewport: place.geometry.viewport });\n } else if (place.geometry.location) {\n this.$emit(\"setMapLocation\", { location: place.geometry.location });\n }\n }\n })\n }, 0.5 * this.$config.ANIMATION_DURATION);\n }\n }\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapSearch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapSearch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MapSearch.vue?vue&type=template&id=70cd36a5\"\nimport script from \"./MapSearch.vue?vue&type=script&lang=ts\"\nexport * from \"./MapSearch.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\nimport { Component, Mixins, Emit, Watch, Prop } from \"vue-property-decorator\";\nimport { Getter, Action, namespace } from \"vuex-class\";\nimport { get } from \"lodash\";\nimport { Datetime } from \"vue-datetime\";\nimport { Settings } from \"luxon\";\nimport { setTimeout } from \"timers\";\nimport GoogleMap from \"@/scripts/mapping/map\";\nimport vSelect3 from \"vselect3\";\n\nimport { getMapStyle } from \"@/scripts/mapping/mapStyle\";\nimport getScript from \"@/services/insertScript.service\";\nimport { formatDateMixin } from \"@/mixins\";\nimport { FeaturesList } from \"@/store/types\";\nimport MapSearch from \"@/components/mapping/MapSearch.vue\";\nimport EventOutcomeSelector from \"@/components/EventOutcomeSelector.vue\";\nimport { Tag } from \"@/types\";\nimport IncidentReport from \"@/components/IncidentReport.vue\";\nimport api from \"@/services/api.service\";\nimport ResponseAlarmType from \"@/types/sv-data/events/ResponseAlarmType\";\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\nimport { MapBounds } from \"@/store/map-layers/types\";\nimport HideMapMixin from \"@/mixins/HideMapMixin\";\n\nconst MapLayers = namespace(\"mapLayers\");\nconst EventSearchStore = namespace(\"eventSearch\");\n\nconst {\n\tweekAgoDateFormatted,\n\tendOFDayFormatted,\n\ttoStartOfDay,\n\ttoEndOfDay\n} = formatDateMixin.methods;\n\nSettings.defaultLocale = \"en\";\n\n@Component({\n\tcomponents: {\n\t\t\"v-select-3\": vSelect3,\n\t\t\"map-search\": MapSearch,\n\t\tdatetime: Datetime,\n\t\t\"event-outcome-selector\": EventOutcomeSelector,\n\t\t\"incident-report\": IncidentReport,\n\t\t\"area-tree-select\": AreaTreeSelect\n\t}\n})\nexport default class EventSearch extends Mixins(HideMapMixin) {\n\tpublic $refs!: {\n\t\tmappingContainer: HTMLElement;\n\t\teventTypeFilterSelector: any;\n\t};\n\n\t@EventSearchStore.Getter events: any[];\n\t@EventSearchStore.Getter searchableEventTypes: any[];\n\t@EventSearchStore.Getter eventCategories: any[];\n\t@EventSearchStore.Getter eventDeviceTypes: any[];\n\t@EventSearchStore.Getter eventOperators: any[];\n\t@EventSearchStore.Getter eventAlarmTypes: any[];\n\t@EventSearchStore.Action loadSearchableEventTypes: any;\n\t@EventSearchStore.Action loadDeviceTypes: any;\n\t@EventSearchStore.Action loadOperators: any;\n\t@EventSearchStore.Action loadEventCategories: any;\n\t@EventSearchStore.Action loadAlarmTypes: any;\n\n\t@EventSearchStore.Mutation setAlarmTypes: any;\n\n\t@EventSearchStore.State(\"CacheKey\") cacheKey: string;\n\n\t@MapLayers.State(\"defaultMapBounds\") mapLayersBounds!: MapBounds;\n\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\t@Getter getHideLabels: any;\n\t@Getter getUserTenantGroupId: number;\n\t@Getter getMapType: any;\n\t@Action setMapType: any;\n\n\tprivate mapType: string = \"\";\n\tprivate isMapVisible: boolean = false;\n\tprivate map: GoogleMap | null = null;\n\tprivate selectedMapArea: google.maps.Polygon | null = null;\n\tprivate mapInitialized: boolean = false;\n\tprivate clearClicked: boolean = false;\n\tprivate dataLoaded: boolean = false;\n\tprivate tags: Tag[] = [];\n\tprivate alarmTagOptions: ResponseAlarmType[] = [];\n\n\t@Prop({default: 0})\n\tprivate eventId: number;\n\n\t@Prop({ type:Boolean, default: false })\n\tprivate searchPending: boolean;\n\n\tprivate allEventTypeFilterOption = {\n\t\teventTypeID: -1,\n\t\ttitle: \"All\",\n\t\tsearchable: true\n\t};\n\n\tprivate searchModel = {\n\t\t...this.defaultSearchFilters,\n\t\tboundaryPath: null,\n\t\teventTypeId: null,\n\t\tdeviceType: null,\n\t\talarmType: null,\n\t\tcategory: null,\n\t\toperator: null,\n\t\tflaggedEventsOnly: false,\n\t\ttags: [],\n\t\tallTags: false,\n\t\talarmTags: [],\n\t\tallAlarmTags: false,\n\t\tincludeAutoHandled: true,\n\t\tpage: 1,\n\t\tpageSize: 50,\n\t\tcacheKey: this.cacheKey\n\t};\n\n\t// Watchers\n\t@Emit(\"setSearchFilter\")\n\tprivate search() {\n\t\tif(this.searchPending)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\t// Temporary solution. Waiting for API changes to remove this.\n\t\tObject.keys(this.searchModel).forEach(key => {\n\t\t\tif (\n\t\t\t\tthis.searchModel[key] === null ||\n\t\t\t\tthis.searchModel[key] === \"\"\n\t\t\t) {\n\t\t\t\tdelete this.searchModel[key];\n\t\t\t}\n\t\t});\n\n\t\tconst search = {\n\t\t\t...this.defaultSearchFilters,\n\t\t\t...this.searchModel\n\t\t};\n\n\t\tif (search.boundaryPath) {\n\t\t\tdelete search.groupID;\n\t\t}\n\n\t\tif (search.eventTypeId === this.allEventTypeFilterOption.eventTypeID) {\n\t\t\tdelete search.eventTypeId;\n\t\t}\n\t\treturn search;\n\t}\n\n\t@Watch(\"isMapVisible\")\n\tprivate onMapVisibilityChange(value: boolean) {\n\t\t// Clear polygons on the map when hiding it\n\t\tif (!value && this.selectedMapArea) {\n\t\t\tthis.selectedMapArea.setMap(null);\n\t\t\tthis.selectedMapArea = null;\n\t\t}\n\t}\n\n\t@Watch(\"selectedMapArea\")\n\tprivate onMapFilterChange(zone) {\n\t\tif (zone) {\n\t\t\tconst paths = this.getZonePaths(zone);\n\t\t\tthis.searchModel.boundaryPath = paths.length\n\t\t\t\t? JSON.stringify(paths)\n\t\t\t\t: null;\n\t\t} else {\n\t\t\tthis.searchModel.boundaryPath = null;\n\t\t}\n\t}\n\n\t@Watch(\"searchModel.deviceType\")\n\tprivate onDeviceTypeChange(newValue: number | null, oldValue: number | null) {\n\t\t// Alarm types depend on selected deviceType\n\t\tif (newValue && newValue != oldValue) {\n\t\t\tthis.loadAlarmTypes(newValue);\n\t\t} else {\n\t\t\tthis.setAlarmTypes([]);\n\t\t}\n\n\t\tthis.searchModel.alarmType = null;\n\t}\n\n\t@Watch(\"searchModel.groupID\")\n\tprivate async onGroupIdChange() {\n\t\tif (this.isFeatureAlarmTagSearchEnabled) {\n\t\t\tthis.alarmTagOptions = await api.responseAlarmTypes(this.searchModel.groupID);\n\t\t}\n\t}\n\n\t// Private Methods\n\tprivate initMap() {\n\t\tif (this.mapInitialized || this.isHideMapsEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.mapInitialized = true;\n\t\tgetScript(\n\t\t\t`https://maps.googleapis.com/maps/api/js?key=` +\n\t\t\t\t`${process.env.VUE_APP_GOOGLE_MAPS_API_KEY}` +\n\t\t\t\t`&libraries=drawing,places,geometry`\n\t\t).then(() => {\n\t\t\tconst mapPosition = { lat: 0, lng: 0, zoom: 25 };\n\n\t\t\tthis.map = new GoogleMap(\n\t\t\t\tthis.$refs.mappingContainer,\n\t\t\t\tmapPosition,\n\t\t\t\tmapPosition.zoom,\n\t\t\t\tfalse,\n\t\t\t\tthis.getMapType,\n\t\t\t\tgetMapStyle(this.getMapType, this.getHideLabels)\n\t\t\t);\n\t\t\tthis.mapType = this.getMapType;\n\n\t\t\tthis.map!.registerEvent(\"onMapTypeChanged\", (mapType: string) => {\n\t\t\t\tthis.mapType = mapType;\n\t\t\t\tthis.setMapType(mapType);\n\n\t\t\t\tthis.map!.map.setOptions({\n\t\t\t\t\tstyles: getMapStyle(this.getMapType, this.getHideLabels)\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tconst bounds = new google.maps.LatLngBounds(\n\t\t\t\tnew google.maps.LatLng(\n\t\t\t\t\tthis.mapLayersBounds.south,\n\t\t\t\t\tthis.mapLayersBounds.west\n\t\t\t\t),\n\t\t\t\tnew google.maps.LatLng(\n\t\t\t\t\tthis.mapLayersBounds.north,\n\t\t\t\t\tthis.mapLayersBounds.east\n\t\t\t\t)\n\t\t\t);\n\t\t\tthis.map!.map.fitBounds(bounds);\n\n\t\t\tconst drawingManager = new google.maps.drawing.DrawingManager({\n\t\t\t\tdrawingMode: google.maps.drawing.OverlayType.POLYGON,\n\t\t\t\tdrawingControl: true,\n\t\t\t\tdrawingControlOptions: {\n\t\t\t\t\tposition: google.maps.ControlPosition.TOP_CENTER,\n\t\t\t\t\tdrawingModes: [\"polygon\"]\n\t\t\t\t},\n\t\t\t\tpolygonOptions: this.polygonOptions\n\t\t\t} as any);\n\t\t\tdrawingManager.setMap(this.map!.map);\n\n\t\t\t// on zone add\n\t\t\tgoogle.maps.event.addListener(\n\t\t\t\tdrawingManager,\n\t\t\t\t\"polygoncomplete\",\n\t\t\t\t(zone: google.maps.Polygon) => {\n\t\t\t\t\tif (this.selectedMapArea != null) {\n\t\t\t\t\t\tthis.selectedMapArea.setMap(null);\n\t\t\t\t\t\tthis.selectedMapArea = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// @todo search by map position\n\t\t\t\t\tthis.selectedMapArea = zone;\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate clear() {\n\t\tObject.keys(this.searchModel).forEach(key => {\n\t\t\tthis.$set(this.searchModel, key, null);\n\t\t});\n\n\t\tthis.clearClicked = true;\n\t\tthis.$set(this, \"searchModel\", {\n\t\t\t...this.searchModel,\n\t\t\t...this.defaultSearchFilters\n\t\t});\n\t}\n\n\tprivate getZonePaths(zone: google.maps.Polygon) {\n\t\treturn zone\n\t\t\t.getPath()\n\t\t\t.getArray()\n\t\t\t.map(point => {\n\t\t\t\treturn { lat: point.lat(), lng: point.lng() };\n\t\t\t});\n\t}\n\n\tprivate setBounds(bounds: any) {\n\t\tif (bounds) {\n\t\t\tthis.map!.map.fitBounds(\n\t\t\t\tnew google.maps.LatLngBounds(\n\t\t\t\t\t{ lat: bounds.south, lng: bounds.west },\n\t\t\t\t\t{ lat: bounds.north, lng: bounds.east }\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate setMapLocation(gpsData: any) {\n\t\tif (gpsData) {\n\t\t\tif (gpsData.viewport) {\n\t\t\t\tthis.map!.map.fitBounds(gpsData.viewport);\n\t\t\t} else if (gpsData.location) {\n\t\t\t\tthis.map!.map.setCenter(gpsData.location);\n\t\t\t\tthis.map!.map.setZoom(17);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate toggleMapVisible() {\n\t\tif (this.isMapVisible) {\n\t\t\tthis.isMapVisible = false;\n\t\t} else {\n\t\t\tthis.isMapVisible = true;\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.initMap();\n\t\t\t}, 500);\n\t\t}\n\t}\n\n\tprivate checkIfEventTypeHasBeenCleared(inputValue) {\n\t\tlet userHasClearedSelection = inputValue === null;\n\t\tif (userHasClearedSelection) {\n\t\t\tthis.$refs.eventTypeFilterSelector.$emit(\"cleared\");\n\t\t}\n\t}\n\n\tprivate async created() {\n\t\tthis.loadDeviceTypes();\n\t\tif (this.isEventTypeFilteringEnabled) {\n\t\t\tawait this.loadSearchableEventTypes();\n\t\t\tthis.searchModel.eventTypeId = this.allEventTypeFilterOption.eventTypeID;\n\t\t}\n\n\t\tif (this.isEventTagSearchEnabled) {\n\t\t\tthis.tags = await api.eventTags();\n\t\t}\n\n\t\tthis.loadOperators();\n\t\tawait this.loadEventCategories();\n\n\t\tthis.searchModel = {\n\t\t\t...this.defaultSearchFilters,\n\t\t\tboundaryPath: null,\n\t\t\teventTypeId: null,\n\t\t\tdeviceType: null,\n\t\t\talarmType: null,\n\t\t\tcategory: null,\n\t\t\toperator: null,\n\t\t\tflaggedEventsOnly: false,\n\t\t\ttags: [],\n\t\t\tallTags: false,\n\t\t\talarmTags: [],\n\t\t\tallAlarmTags: false,\n\t\t\tincludeAutoHandled: !this.isIncludeAutoHandledEnabled,\n\t\t\tpage: 1,\n\t\t\tpageSize: 50,\n\t\t\tcacheKey: this.cacheKey\n\t\t};\n\t\tthis.dataLoaded = true;\n\t}\n\n\tprivate outcomeChanged(value) {\n\t\tthis.$set(this.searchModel, \"category\", value);\n\t}\n\n\t// Getters\n\tprivate get eventCategoriesMap() {\n\t\tif (!this.eventCategories) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn this.eventCategories.map(category => {\n\t\t\treturn {\n\t\t\t\tid: category.eventOutcomeID,\n\t\t\t\tparentId: category.parentID,\n\t\t\t\ttitle: category.title\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate get defaultSearchFilters () {\n\t\treturn {\n\t\t\tfrom: weekAgoDateFormatted(),\n\t\t\tuntil: endOFDayFormatted(),\n\t\t\tgroupID: this.getUserTenantGroupId,\n\t\t\ttags: [],\n\t\t\tpage: 1,\n\t\t\tpageSize: 50\n\t\t};\n\t}\n\n\tprivate get timeZone(): string {\n\t\treturn Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t}\n\n\tprivate get searchText(): string\n\t{\n\t\treturn this.searchPending ? \"Searching...\" : \"Search\";\n\t}\n\n\tprivate get polygonOptions() {\n\t\treturn {\n\t\t\tstrokeColor: this.$config.colors.POLYGON_STROKE,\n\t\t\tstrokeOpacity: 1,\n\t\t\tstrokeWeight: 4,\n\t\t\tfillColor: this.$config.colors.POLYGON_FILL,\n\t\t\tfillOpacity: 0.35\n\t\t};\n\t}\n\n\tprivate get isEventTypeFilteringEnabled() {\n\t\treturn get(\n\t\t\tthis.featuresList,\n\t\t\t[\"Alarms\", \"EventSearch\", \"EventTypeFilter\"],\n\t\t\tfalse\n\t\t);\n\t}\n\n\tprivate get isEventTagSearchEnabled() {\n\t\treturn get(\n\t\t\tthis.featuresList,\n\t\t\t[\"Alarms\", \"EventSearch\", \"EventTagSearch\"],\n\t\t\tfalse\n\t\t);\n\t}\n\n\tprivate get isFeatureAlarmTagSearchEnabled() {\n\t\treturn get(\n\t\t\tthis.featuresList,\n\t\t\t[\"Alarms\", \"EventSearch\", \"AlarmTag\"],\n\t\t\tfalse\n\t\t);\n\t}\n\n\tprivate get allSearchableEventTypes() {\n\t\treturn [\n\t\t\tthis.allEventTypeFilterOption,\n\t\t\t...this.searchableEventTypes\n\t\t]\n\t}\n\n\tprivate get isIncludeAutoHandledEnabled(): boolean {\n\t\treturn get(\n\t\t\tthis.featuresList,\n\t\t\t[\"Alarms\", \"EventSearch\", \"AutoHandledFilter\"],\n\t\t\tfalse\n\t\t);\n\t}\n\n\tprivate get showMap() : Boolean {\n\t\treturn this.isMapVisible && !this.isHideMapsEnabled;\n\t}\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\n\r\nenum ProgressStatuses {\r\n\tinit = 'init',\r\n\tprogress = 'progress',\r\n\terror = 'error',\r\n\tsucceed = 'succeed'\r\n}\r\ninterface Progress {\r\n\tstatus: keyof typeof ProgressStatuses;\r\n\tmax: number;\r\n\trowIndex: string | number;\r\n\terror?: {\r\n\t\tname: string,\r\n\t\tmessage: string;\r\n\t};\r\n\tsuccessfulMessage: string;\r\n\tpercentage?: boolean;\r\n\tbulkErrors?: string[];\r\n}\r\n\r\n@Component\r\nexport default class CsvProgress extends Vue {\r\n\t@Prop({\r\n\t\tdefault: () => ({})\r\n\t}) progress:Progress\r\n\t@Prop({\r\n\t\tdefault: false\r\n\t}) isMultipleError:boolean\r\n\r\n\tprogressList: Progress[] = []\r\n\r\n\r\n\t@Watch('progress', {deep: true, immediate: true})\r\n\tsetProgressList() {\r\n\t\tif(this.progress.status) {\r\n\t\t\tthis.progressList.push({...this.progress})\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get variantSingleProgress() {\r\n\t\tif(!this.progress.status) return ''\r\n\t\tif(this.isMultipleError) return 'success'\r\n\r\n\t\treturn this.errorList.length ? 'danger': 'success'\r\n\t}\r\n\r\n\tpublic get isSucceed() {\r\n\t\treturn this.progress.status === 'succeed'\r\n\t}\r\n\r\n\tpublic get progressProcessValue() {\r\n\t\treturn this.progressList.reduce((acc, cur) => {\r\n\t\t\tif(cur.status === 'init') return acc\r\n\t\t\tif(!this.isMultipleError && cur.status === 'error') return cur.percentage ? cur.rowIndex : acc + 1\r\n\t\t\tif(cur.status === 'progress' || cur.status === 'succeed') return cur.percentage ? cur.rowIndex : acc + 1\r\n\t\t\treturn acc\r\n\t\t}, 0)\r\n\t}\r\n\r\n\tpublic get errors() {\r\n\t\treturn this.progressList\r\n\t\t\t.filter(({ status }) => status === 'error')\r\n\t}\r\n\r\n\r\n\tpublic get errorList() {\r\n\t\treturn this.errors\r\n\t\t\t.map(({ error, rowIndex }) => {\r\n\t\t\t\tif(error && error.message) return error.message\r\n\t\t\t\treturn `Row ${rowIndex} is failed`\r\n\t\t\t})\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSearch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSearch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventSearch.vue?vue&type=template&id=88cefba4&scoped=true\"\nimport script from \"./EventSearch.vue?vue&type=script&lang=ts\"\nexport * from \"./EventSearch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventSearch.vue?vue&type=style&index=0&id=88cefba4&prod&scoped=true&lang=scss\"\nimport style1 from \"./EventSearch.vue?vue&type=style&index=1&id=88cefba4&prod&lang=scss\"\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 \"88cefba4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\"},[_c('div',{staticClass:\"card-header d-flex align-items-center\"},[_c('span',{staticClass:\"event-title\"},[_c('b',[_vm._v(\" Event \"+_vm._s(_vm.event.eventID)+\" - \"+_vm._s(_vm.event.outcomeTitle || '')+\" \"+_vm._s(_vm.event.outcomeNote && _vm.event.outcomeNote.length != 0 ? (\" - \" + (_vm.event.outcomeNote.substring(0, 100)) + \" \" + (_vm.event.outcomeNote.length > 100 ? '...' : '')) : '')+\" \")])]),(_vm.isPreserveEventsEnabled && _vm.eventDetails)?_c('preserve-event-control',{attrs:{\"event-id\":_vm.eventDetails.eventID,\"is-preserved\":_vm.eventDetails.preserve,\"event-files-preserved-until\":_vm.eventDetails.filesPreservedUntil,\"event-preserved-until\":_vm.eventDetails.preservedUntil,\"data-cy\":\"preserve-event-control\"},on:{\"preserved-updated\":_vm.eventPreservationUpdated}}):_vm._e(),(_vm.isSitrepEnabled)?_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'x']}),expression:\"{down: ['shift', 'x']}\"}],staticClass:\"btn btn-secondary m-r-20\",attrs:{\"id\":\"btn-situation-report\",\"data-cy\":\"btn-situation-report\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.incidentReport()},\"shortkey\":function($event){return _vm.incidentReport()},\"click\":function($event){return _vm.incidentReport()}}},[_vm._v(\"SitRep\")]):_vm._e(),(_vm.isEventOutcomeUpdateEnabled)?_c('a',{staticClass:\"btn btn-secondary m-r-20\",attrs:{\"data-cy\":\"btn-update-event-outcome\",\"title\":\"Change the Event Category for the Event\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.openUpdateEventOutcomeModal()},\"click\":function($event){return _vm.openUpdateEventOutcomeModal()}}},[_vm._v(\"Update\")]):_vm._e(),(_vm.canEditPostEvent)?_c('b-button',{staticClass:\"m-r-20\",attrs:{\"data-cy\":\"btn-event-edit\"},on:{\"click\":_vm.openEventEditInNewTab}},[_vm._v(\" Update \")]):_vm._e(),_c('span',{attrs:{\"id\":\"downloadMediaSpan\"}},[(_vm.isDownloadEventMediaEnabled)?_c('b-button',{key:_vm.downloadMediaKey,staticClass:\"download-media\",attrs:{\"variant\":\"primary\",\"id\":\"btn-download-media\",\"disabled\":!!_vm.downloadMediaDisabledText || _vm.downloadingMedia,\"title\":_vm.downloadMediaHoverText},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.startMediaDownload(_vm.event.eventID)},\"~click\":function($event){return _vm.startMediaDownload(_vm.event.eventID)}}},[_vm._v(\" \"+_vm._s(_vm.downloadMediaButtonText)+\" \"),( !_vm.downloadingMedia)?_c('span',{staticClass:\"download-icon fas fa-download click-span m-r-5\"}):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.downloadingMedia),expression:\"downloadingMedia\"}]},[_c('b-progress',{staticClass:\"send-note-progress-bar\",attrs:{\"value\":_vm.archiveProgressPercentage,\"max\":100,\"variant\":\"success\",\"animated\":\"\"}})],1)]):_vm._e()],1),(_vm.downloadMediaDisabledText)?_c('b-tooltip',{attrs:{\"target\":\"downloadMediaSpan\",\"placement\":\"left\"}},[_vm._v(\" \"+_vm._s(_vm.downloadMediaDisabledText)+\" \")]):_vm._e(),(false)?_c('div',[_c('i',{staticClass:\"fas fa-paperclip medium-icon p-r-5\"}),_c('b-form-file',{staticClass:\"attachments-input\",attrs:{\"placeholder\":\"Upload attachments...\"},model:{value:(_vm.attachments),callback:function ($$v) {_vm.attachments=$$v},expression:\"attachments\"}}),_c('b-button-group',[_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){return _vm.uploadAttachments()}}},[_vm._v(\"Upload\")]),_c('b-button',{attrs:{\"variant\":\"secondary\"}},[_vm._v(\"Audit Report\")])],1)],1):_vm._e()],1),_c('div',{staticClass:\"card-body d-flex flex-column p-0\",staticStyle:{\"overflow\":\"hidden\"}},[_c('div',{staticClass:\"d-flex flex-shrink-0 p-2 flex-row\",staticStyle:{\"height\":\"60%\",\"overflow\":\"hidden\"}},[_c('vue-perfect-scrollbar',{staticClass:\"event-detail-block m-1 p-2\"},[_c('transition',{attrs:{\"name\":\"fade-out-transition\",\"leave-active-class\":\"animated fadeOut\"}},[(_vm.isEventFlaggingEnabled && _vm.event.flaggedForReview)?_c('div',{staticClass:\"alert alert-danger d-flex\",staticStyle:{\"cursor\":\"pointer\"},attrs:{\"id\":\"event-flagged-alert\"},on:{\"click\":function($event){_vm.reviewModalState.open = true;}}},[_c('span',[_c('i',{staticClass:\"fa fa-flag\"})]),_c('div',{staticClass:\"ml-3\"},[_c('p',{staticClass:\"m-0\"},[_vm._v(\"This event has been flagged for review.\")]),_c('p',{staticClass:\"m-0\"},[_vm._v(\"Click here to mark it as reviewed.\")])])]):_vm._e()]),(_vm.eventDetails && _vm.eventDetails.eventType && _vm.eventDetails.eventType != null)?_c('div',{staticClass:\"row paragraph\"},[_c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Event Type:\")])]),_c('div',{staticClass:\"col-sm-8\"},[_vm._v(_vm._s(_vm.eventDetails.eventType))])]):_vm._e(),_c('div',{staticClass:\"row paragraph\"},[_c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Event Start Time:\")])]),_c('div',{staticClass:\"col-sm-8\"},[_vm._v(_vm._s(_vm.event.created ? _vm.convertUtcDateTimeToLocalDateTimeString(_vm.event.created) : ''))])]),_c('div',{staticClass:\"row paragraph\"},[_c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Event End Time:\")])]),_c('div',{staticClass:\"col-sm-8\"},[_vm._v(_vm._s(_vm.event.closed ? _vm.convertUtcDateTimeToLocalDateTimeString(_vm.event.closed) : ''))])]),_c('div',{staticClass:\"row paragraph\"},[_c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Area:\")])]),_c('div',{staticClass:\"col-sm-8\"},[_vm._v(_vm._s(_vm.eventArea.title))])]),_c('div',{staticClass:\"row paragraph\"},[_c('div',{staticClass:\"col-sm-4 p-l-0\"},[_c('b',[_vm._v(\"Operator(s):\")])]),_c('div',{staticClass:\"col-sm-8\"},_vm._l((_vm.eventOperators),function(operator){return _c('div',{key:operator.colorIndex,staticClass:\"m-r-20\",staticStyle:{\"display\":\"inline-block\"}},[_c('div',{staticClass:\"circle small\",class:'user-' + operator.colorIndex,attrs:{\"title\":operator.name}},[_vm._v(_vm._s(operator.initials))]),_vm._v(\" \"+_vm._s(operator.name)+\" \")])}),0)]),(_vm.event.outcomeNote)?_c('div',[_c('p',[_c('b',[_vm._v(\"Summary Notes:\")])]),_c('p',[_vm._v(_vm._s(_vm.event.outcomeNote))])]):_vm._e()],1),(_vm.isClipPlaybackEnabled)?_c('div',{staticClass:\"details-block video-auditing-block d-flex flex-column m-1\",class:{ 'hidden': !_vm.clips.length }},[_c('div',{staticClass:\"d-flex flex-row\"},[_c('vue-select',{staticClass:\"dark w-100\",attrs:{\"label\":\"DeviceTitle\",\"options\":_vm.clips,\"multiple\":false,\"placeholder\":\"Select an alarm clip\",\"searchable\":false,\"clearable\":false},on:{\"input\":_vm.clipSelected},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(option){return [_c('span',[_vm._v(_vm._s(option.DeviceTitle ? option.DeviceTitle : \"Unknown Device\"))])]}},{key:\"option\",fn:function(option){return [_c('span',[_vm._v(_vm._s(option.DeviceTitle ? option.DeviceTitle : \"Unknown Device\"))])]}}],null,false,207565613),model:{value:(_vm.selectedClip),callback:function ($$v) {_vm.selectedClip=$$v},expression:\"selectedClip\"}}),(_vm.isDownloadEventMediaSingleClipEnabled)?_c('button',{staticClass:\"flex-shrink-1 downloadClipBtn btn btn-dark\",on:{\"click\":function($event){return _vm.showDownloadClipModal(true)}}},[_c('i',{staticClass:\"fas fa-download\"})]):_vm._e()],1),_c('audit-control',{ref:\"player\",staticClass:\"audit-control\"})],1):_vm._e(),(!_vm.isHideMapsEnabled)?_c('div',{staticClass:\"details-block m-1\",attrs:{\"data-cy\":\"div-single-map\"}},[_c('div',{staticClass:\"card card-primary card-full-height-map\"},[_c('div',{staticClass:\"card-body d-flex cardBody\"},[_c('enhanced-single-map',{key:_vm.currentEventId,staticClass:\"flex-grow-1 enhanced-map\",attrs:{\"enhancedMapMode\":_vm.enhancedMapMode.EventSearch,\"zoomLevel\":18,\"showCircle\":false}})],1)])]):_vm._e()],1),_c('event-records',{staticClass:\"flex-grow-1 flex-shrink-1\",staticStyle:{\"height\":\"40%\",\"overflow\":\"hidden\"},attrs:{\"reviewMode\":true,\"eventid\":_vm.event ? _vm.event.eventID : null,\"eventDetailsAvailable\":_vm.eventDetailsAvailable,\"eventFilesPreservedUntil\":_vm.eventDetails ? _vm.eventDetails.filesPreservedUntil : new Date(0),\"showVideoAvailableColumn\":\"\"},on:{\"eventRecordSelected\":_vm.eventRecordSelected}})],1),_c('b-modal',{attrs:{\"id\":\"review-event-modal\",\"data-cy\":\"review-event-modal\",\"title\":\"Mark Event as Reviewed\"},model:{value:(_vm.reviewModalState.open),callback:function ($$v) {_vm.$set(_vm.reviewModalState, \"open\", $$v)},expression:\"reviewModalState.open\"}},[_c('div',{staticClass:\"d-flex flex-column\"},[_c('label',{attrs:{\"for\":\"review-notes\"}},[_c('h6',[_vm._v(\"Review notes\")])]),_c('b-form-textarea',{staticClass:\"h-100\",staticStyle:{\"font-size\":\"inherit\"},attrs:{\"id\":\"review-notes\",\"placeholder\":\"Notes\",\"no-resize\":\"\"},model:{value:(_vm.reviewModalState.note),callback:function ($$v) {_vm.$set(_vm.reviewModalState, \"note\", $$v)},expression:\"reviewModalState.note\"}})],1),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-primary ksConfirm\",on:{\"click\":function($event){return _vm.markEventReviewed()}}},[_vm._v(\" Ok \"),(_vm.reviewModalState.processing)?_c('i',{staticClass:\"fas fa-spin fa-spinner\"}):_vm._e()]),_c('a',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){_vm.reviewModalState.open = false; _vm.reviewModalState.processing = false; _vm.reviewModalState.note = '';}}},[_vm._v(\"Cancel\")])])],2),_c('b-modal',{ref:\"download-clip-modal\",attrs:{\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"size\":\"md\",\"centered\":\"\",\"role\":\"dialog\",\"hide-footer\":true,\"hide-header\":true,\"no-body\":\"\",\"body-class\":\"p-0\"},model:{value:(_vm.showDownloadClipModalFlag),callback:function ($$v) {_vm.showDownloadClipModalFlag=$$v},expression:\"showDownloadClipModalFlag\"}},[_c('b-card',{attrs:{\"body-class\":\"p-0\"}},[_c('b-card-header',[[_c('div',[_c('h3',{staticClass:\"mb-0\"},[_vm._v(\"Download Clip\")])])]],2),_c('b-card-body',[_vm._v(\" You're about to download a clip from Event Search, \"),_c('br'),_vm._v(\"would you like to use the system or friendly file name? \")]),_c('b-card-footer',[[_c('div',{staticClass:\"d-flex flex-row justify-content-end\"},[_c('b-button',{staticClass:\"ml-1 downloadClipSystemName\",attrs:{\"variant\":\"primary\",\"disabled\":_vm.downloadingMediaClipSystemName || _vm.downloadingMediaClipFriendlyName},on:{\"click\":function($event){return _vm.downloadEventClipArchive(false)}}},[(_vm.downloadingMediaClipSystemName)?_c('i',{staticClass:\"fas fa-circle-notch fa-spin mr-2\"}):_vm._e(),_vm._v(\" System Name \")]),_c('b-button',{staticClass:\"ml-1 downloadClipFriendlyName\",attrs:{\"variant\":\"primary\",\"disabled\":_vm.downloadingMediaClipSystemName || _vm.downloadingMediaClipFriendlyName},on:{\"click\":function($event){return _vm.downloadEventClipArchive(true)}}},[(_vm.downloadingMediaClipFriendlyName)?_c('i',{staticClass:\"fas fa-circle-notch fa-spin mr-2\"}):_vm._e(),_vm._v(\" Friendly Name \")]),_c('b-button',{staticClass:\"ml-1 closeShowDownloadClipModal\",on:{\"click\":function($event){return _vm.showDownloadClipModal(false)}}},[_vm._v(\"Cancel\")])],1)]],2)],1)],1),_c('event-close',{attrs:{\"router\":_vm.$router,\"eventid\":_vm.event.eventID,\"updateEventOutcome\":\"\"},on:{\"updatedEventOutcome\":_vm.onUpdatedEventOutcome}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"pr-1\",staticStyle:{\"display\":\"inline-flex\"}},[(!_vm.preserved)?_c('span',{attrs:{\"data-cy\":\"non-preserved-event-availability\"}},[_vm._v(\" Data available until: \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(_vm.eventPreservedUntil))+\" \"),_c('br'),_vm._v(\" Media available until: \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(_vm.eventFilesPreservedUntil))+\" \")]):_c('span',{attrs:{\"data-cy\":\"preserved-event-availability\"}},[_vm._v(\" Data available until: Forever \"),_c('br'),_vm._v(\" Media available until: Forever \")]),_c('aside',{attrs:{\"id\":\"eventPreservationControlContainer\"}},[_c('b-button',{staticClass:\"ml-2 mr-2\",attrs:{\"id\":\"eventPreservationControl\",\"variant\":\"primary\",\"disabled\":!_vm.getPermissions.canPreserveEvents,\"data-cy\":\"update-preservation-state-button\"},on:{\"click\":function($event){_vm.isPreserveEventModalShown = true}}},[_vm._v(\" \"+_vm._s(_vm.preserved ? \"Remove preservation\" : \"Preserve\")+\" \")])],1),(!_vm.getPermissions.canPreserveEvents)?_c('b-tooltip',{attrs:{\"target\":\"eventPreservationControlContainer\",\"triggers\":\"hover\",\"data-cy\":\"no-permission-tooltip\"}},[_vm._v(\" You do not have permission to preserve events. \")]):_vm._e(),_c('b-modal',{attrs:{\"size\":\"md\",\"centered\":\"\",\"role\":\"dialog\",\"title\":\"Confirmation\",\"ok-title\":\"Confirm\",\"header-class\":_vm.isPreserved ? 'delete-confirm-modal' : '',\"static\":\"\",\"data-cy\":\"confirmation-modal\"},on:{\"ok\":_vm.confirmEventPreservedUpdate},model:{value:(_vm.isPreserveEventModalShown),callback:function ($$v) {_vm.isPreserveEventModalShown=$$v},expression:\"isPreserveEventModalShown\"}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header\"},[_c('h4',[_c('i',{class:_vm.isPreserved ? 'fas fa-fw fa-exclamation-triangle mr-2 danger-color' :'',attrs:{\"data-cy\":\"confirmation-header-icon\"}}),_vm._v(\"Confirmation\")])])]),(_vm.isPreserved)?_c('span',{attrs:{\"data-cy\":\"preserved-message\"}},[_c('p',[_vm._v(\" You are about to remove the preserve state from this event. \")]),(!_vm.isPreservedDateInThePast)?_c('p',{attrs:{\"data-cy\":\"non-preserved-event-confirmation-message\"}},[_vm._v(\" Data will be deleted on \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(_vm.eventPreservedUntil))+\".\"),_c('br'),_vm._v(\" Media will be deleted on \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(_vm.eventFilesPreservedUntil))+\". \")]):_c('p',{attrs:{\"data-cy\":\"preserved-event-confirmation-message\"}},[_vm._v(\" This event is older than the configured retention settings, by removing the preserve state this event will be deleted. \")]),_vm._v(\" Do you wish to continue? \")]):_c('span',{attrs:{\"data-cy\":\"non-preserved-message\"}},[_c('p',[_vm._v(\" You are about to preserve this event, as long as it is preserved all event details and related media will not be deleted. \")]),_vm._v(\" Do you wish to continue? \")])],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Emit, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\n\r\nimport { UserPermissions} from \"@/store/types\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\n@Component({})\r\nexport default class PreserveEventControl extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@SiteMonitor.Action preserveEvent: ({ eventId, preserved }) => Promise;\r\n\r\n\t@Prop(Boolean) public isPreserved: boolean;\r\n\t@Prop(Number) public eventId: number;\r\n\t@Prop(String) public eventPreservedUntil: string;\r\n\t@Prop(String) public eventFilesPreservedUntil: string;\r\n\r\n\tprivate preserved: boolean = false;\r\n\tprivate isPreserveEventModalShown: boolean = false;\r\n\r\n\tprivate mounted() {\r\n\t\tthis.preserved = this.isPreserved;\r\n\t}\r\n\r\n\t@Watch(\"isPreserved\")\r\n\tprivate isPreservedUpdated() {\r\n\t\tthis.preserved = this.isPreserved;\r\n\t}\r\n\r\n\tprivate async confirmEventPreservedUpdate() {\r\n\t\ttry {\r\n\t\t\tthis.preserved = !this.preserved;\r\n\t\t\tawait this.preserveEvent({\r\n\t\t\t\teventId: this.eventId,\r\n\t\t\t\tpreserved: this.preserved\r\n\t\t\t});\r\n\t\t\tthis.preservedUpdated();\r\n\t\t} catch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Preserve\",\r\n\t\t\t\ttext: \"Unable to Preserve event - please try again later, or contact support if the problem persists.\"\r\n\t\t\t});\r\n\r\n\t\t\tthis.preserved = !this.preserved;\r\n\t\t\tthis.preservedUpdated();\r\n\t\t}\r\n\t}\r\n\r\n\t@Emit(\"preserved-updated\")\r\n\tprivate preservedUpdated() {\r\n\t\treturn this.preserved;\r\n\t}\r\n\r\n\tprivate get isPreservedDateInThePast(): boolean {\r\n\t\treturn new Date(this.eventPreservedUntil) < new Date();\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreserveEventControl.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PreserveEventControl.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PreserveEventControl.vue?vue&type=template&id=5a0ed437&scoped=true\"\nimport script from \"./PreserveEventControl.vue?vue&type=script&lang=ts\"\nexport * from \"./PreserveEventControl.vue?vue&type=script&lang=ts\"\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 \"5a0ed437\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Mixins, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport { namespace, Getter, State } from \"vuex-class\";\r\nimport { AuditService } from \"@/services/auditService\";\r\nimport { Event, EventRecordHasClipStatus } from \"@/store/event-search/types\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { get } from \"lodash\";\r\nimport EventRecords from \"@/components/EventRecords.vue\";\r\nimport AuditControl from \"@/components/AuditControl.vue\";\r\nimport vSelect from \"vue-select\";\r\nimport { setTimeout } from \"timers\";\r\nimport { FeaturesList, UserPermissions, User } from \"@/store/types\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport EnhancedSingleMap from './EnhancedSingleMap.vue';\r\nimport api from \"@/services/api.service\";\r\nimport PreserveEventControl from \"@/components/event-review/PreserveEventControl.vue\";\r\nimport { formatDateMixin } from \"@/mixins\"\r\nimport { EnhancedMapMode } from '@/types/EnhancedSingleMapTypes';\r\nimport EventClose from \"./EventClose.vue\";\r\nimport HideMapMixin from \"@/mixins/HideMapMixin\";\r\n\r\nconst { convertUtcDateTimeToLocalDateTimeString } = formatDateMixin.methods;\r\nconst SessionStore = namespace(\"sessions\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst EventSearchStore = namespace(\"eventSearch\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t\t\"event-records\": EventRecords,\r\n\t\t\"audit-control\": AuditControl,\r\n\t\t\"enhanced-single-map\": EnhancedSingleMap,\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"preserve-event-control\": PreserveEventControl,\r\n\t\t\"event-close\": EventClose,\r\n\t}\r\n})\r\nexport default class EventReview extends Mixins(HideMapMixin) {\r\n\t$refs!: {\r\n\t\tplayer: AuditControl;\r\n\t};\r\n\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t@Prop(Event) public event: Event;\r\n\r\n\t@State User: User;\r\n\r\n\t@Getter getFeature: (featuresList: string[]) => boolean;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\t@SessionStore.Getter getSession: any;\r\n\t@SessionStore.Action updateSession: any;\r\n\r\n\t@EventSearchStore.Mutation setEventFlagged: any;\r\n\t@EventSearchStore.Mutation setEventSearchIncidentReportShown: any;\r\n\t@EventSearchStore.Mutation setEventRecordsWithClips: any;\r\n\r\n\t@SiteMonitor.Getter(\"getEventDetails\") eventDetails: EventDetails;\r\n\t@SiteMonitor.Getter(\"getEventOperators\") eventOperators: any;\r\n\t@SiteMonitor.Mutation setEventDetails: any;\r\n\t@SiteMonitor.Action fetchEventDetails: any;\r\n\t@SiteMonitor.Action loadEventGroup: any;\r\n\t@SiteMonitor.Action loadHistoricalEventOperators: any;\r\n\t@SiteMonitor.Action updateSharing: any;\r\n\t@SiteMonitor.Action createReviewRecord: any;\r\n\t@SiteMonitor.Action flagEventForReview: ({ eventId, flagged }) => Promise;\r\n\t@SiteMonitor.Mutation setEventCloseShown: (shown: boolean) => void;\r\n\r\n\tpublic eventArea = {};\r\n\tpublic eventRecordID: number = 0;\r\n\tpublic selectedClip: any = {};\r\n\tpublic clips: any[] = [];\r\n\tpublic attachments = null;\r\n\tpublic auditService: AuditService | null = null;\r\n\tpublic eventDetailsAvailable: boolean = false;\r\n\tpublic archiveProgressCheckTimeout: any = null;\r\n\tpublic archiveProgressCheckWaitTime: number = 1000;\r\n\tpublic downloadingMedia: boolean = false;\r\n\tpublic downloadMediaButtonText: string = \"Download Media\";\r\n\tpublic archiveProgressPercentage: number = 0;\r\n\tpublic showDownloadClipModalFlag: boolean = false;\r\n\tpublic downloadingMediaClipSystemName: boolean = false;\r\n\tpublic downloadingMediaClipFriendlyName: boolean = false;\r\n\tprivate eventHasMedia: Boolean = false;\r\n\r\n\tprivate enhancedMapMode = EnhancedMapMode;\r\n\tprivate readonly defaultDownloadButtonText: string = \"Download Media\";\r\n\tprivate readonly archivingMediaText: string = \"Preparing Files...\";\r\n\tprivate readonly downloadingMediaText: string = \"Downloading...\"\r\n\tprivate downloadingMediaProgress: string = \"\";\r\n\tprivate downloadPercentage: string = \"\";\r\n\tprivate downloadMediaKey: number = 0;\r\n\r\n\tprivate auditServiceSessionResourceId = SessionResource.AuditServiceSession;\r\n\r\n\tpublic reviewModalState = {\r\n\t\topen: false,\r\n\t\tprocessing: false,\r\n\t\tnote: \"\"\r\n\t};\r\n\r\n\tprivate get currentEventId(): number {\r\n\t\treturn this.event?.eventID ?? 0;\r\n\t}\r\n\r\n\tpublic get isSitrepEnabled() {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"Alarms\", \"EventReview\", \"SitRep\"]) &&\r\n\t\t\tthis.getPermissions.canDownloadEventSearchSitRep\r\n\t\t);\r\n\t}\r\n\r\n\tpublic get isEventOutcomeUpdateEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventSearch\", \"UpdateOutcome\"]) && this.getPermissions.canUpdateEventCategory && !this.canEditPostEvent;\r\n\t}\r\n\r\n\tprivate get isDownloadEventMediaEnabled(): boolean {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"Alarms\", \"EventReview\", \"DownloadMedia\"])\r\n\t\t\t&& this.getPermissions.canDownloadEventSearchMedia\r\n\t\t);\r\n\t}\r\n\r\n\tprivate get downloadMediaDisabledText(): string {\r\n\t\tif (!this.eventHasMedia) {\r\n\t\t\treturn \"Event has no media\";\r\n\t\t} else if (this.isPreserveEventsEnabled && this.eventDetails && new Date(this.eventDetails.filesPreservedUntil) <= new Date() && !this.eventDetails.preserve ) {\r\n\t\t\treturn \"Media is no longer available as of \" + convertUtcDateTimeToLocalDateTimeString(this.eventDetails.filesPreservedUntil);\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t/**\r\n\t * Check if feature flag is enabled and user has permissions for downloading a single clip in Event Search.\r\n\t */\r\n\tpublic get isDownloadEventMediaSingleClipEnabled() {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"Alarms\", \"EventSearch\", \"DownloadSingleClip\"]) &&\r\n\t\t\tthis.getPermissions.canDownloadSingleClip\r\n\t\t);\r\n\t}\r\n\r\n\tpublic get isEventFlaggingEnabled() {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"EventFlagging\"], false);\r\n\t}\r\n\r\n\tpublic get isPreserveEventsEnabled() {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventSearch\", \"PreserveEvents\"], false);\r\n\t}\r\n\r\n\tprivate get isClipPlaybackEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"VideoAuditing\"], false) || get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"ClipsList\"]);\r\n\t}\r\n\r\n\t@Watch(\"eventDetails\")\r\n\tpublic async onEventDataReceive(data: EventDetails): Promise {\r\n\t\tconst eventArea = await this.loadEventGroup(data.groupID);\r\n\t\tif (eventArea) {\r\n\t\t\tthis.$set(this, \"eventArea\", eventArea);\r\n\t\t}\r\n\r\n\t\tthis.auditService = new AuditService(api.getAuditServiceAddress(), this.eventDetails.auditEndpoint);\r\n\r\n\t\tif (data && data.eventID) {\r\n\t\t\tthis.checkEventHasMedia(data.eventID);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"event\", { deep:true })\r\n\tpublic onEventIDChanged(event: Event): void {\r\n\t\tthis.downloadMediaButtonText = this.defaultDownloadButtonText;\r\n\t\tthis.downloadingMedia = false;\r\n\r\n\t\tthis.eventDetailsAvailable = false;\r\n\t\tif (!event || event.eventID === 0) {\r\n\t\t\tthis.setEventDetails(null);\r\n\t\t\tthis.eventHasMedia = false;\r\n\t\t} else {\r\n\t\t\tthis.loadEventData(event.eventID);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async mounted() {\r\n\t\tif (this.event) {\r\n\t\t\tthis.loadEventData(this.event.eventID);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic loadEventData(eventID: number) {\r\n\t\tif (this.isClipPlaybackEnabled && this.$refs.player) {\r\n\t\t\tif (this.$refs.player.currentFile) {\r\n\t\t\t\tthis.$refs.player.stop();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.selectedClip = null;\r\n\t\tthis.clips = [];\r\n\t\tthis.loadHistoricalEventOperators(eventID);\r\n\t\tthis.fetchEventDetails(eventID);\r\n\t\tthis.eventDetailsAvailable = true;\r\n\t}\r\n\r\n\tpublic async eventRecordSelected(eventRecord: any): Promise {\r\n\t\tif (!eventRecord) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.eventRecordID = eventRecord.eventRecordID;\r\n\r\n\t\tif (this.clips.length > 0 && !eventRecord.hasClip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar eventRecordClip = this.clips.firstOrDefault(c => c.EventRecordId === this.eventRecordID);\r\n\t\t//If video audit is enabled and either we don't have the eventRecordClip or the clips list is empty\r\n\t\tif (this.isClipPlaybackEnabled && (!eventRecordClip || this.clips.length === 0)) {\r\n\t\t\tthis.$refs.player.stop();\r\n\r\n\t\t\tthis.clips = [];\r\n\r\n\t\t\tawait this.auditService\r\n\t\t\t\t.mediaList(this.getSession(SessionResource.AuditServiceSession), eventRecord.eventRecordID, true)\r\n\t\t\t\t.then(\r\n\t\t\t\t\tresponse => {\r\n\t\t\t\t\t\tif (response.data) {\r\n\t\t\t\t\t\t\tlet rawClips = response.data;\r\n\t\t\t\t\t\t\tlet clips = rawClips.filter(c => (c.MediaType !== 'RAW DATA' && c.FileSize > 1000) || (c.MediaType === \"Unknown\" && c.FileSize == 0));\r\n\r\n\t\t\t\t\t\t\tthis.clips = clips;\r\n\r\n\t\t\t\t\t\t\tconst eventRecordsWithClips: EventRecordHasClipStatus[] = clips.map(clip => {\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\teventRecordId: clip.EventRecordId,\r\n\t\t\t\t\t\t\t\t\thasClip: true\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tthis.setEventRecordsWithClips(eventRecordsWithClips);\r\n\t\t\t\t\t\t\teventRecordClip = this.clips.firstOrDefault(c => c.EventRecordId === this.eventRecordID);\r\n\t\t\t\t\t\t\tif (!eventRecordClip) {\r\n\t\t\t\t\t\t\t\teventRecordClip = this.clips.firstOrDefault(c => c);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror => {\r\n\t\t\t\t\t\tthis.clips = [];\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (eventRecordClip && (!this.selectedClip || this.selectedClip.FileIdentifier !== eventRecordClip.FileIdentifier)) {\r\n\t\t\tthis.selectedClip = eventRecordClip;\r\n\t\t\tthis.clipSelected(eventRecordClip);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic clipSelected(clip: any): void {\r\n\t\tthis.$refs.player.playClip(\r\n\t\t\tthis.auditService as AuditService,\r\n\t\t\tclip.EventRecordId,\r\n\t\t\tclip,\r\n\t\t\tthis.event.eventID\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Marks the event we're reviewing as reviewed, creates an audit event record with a note,\r\n\t * and un-flags the event in the event search and site monitor stores.\r\n\t */\r\n\tpublic async markEventReviewed() {\r\n\t\tthis.reviewModalState.processing = true;\r\n\r\n\t\ttry {\r\n\t\t\t// First thing - try and actually un-flag the event in the back-end\r\n\t\t\tlet flagRemoved = await this.flagEventForReview({\r\n\t\t\t\teventId: this.event.eventID,\r\n\t\t\t\tflagged: false\r\n\t\t\t});\r\n\r\n\t\t\t// If we were successful, then we can create our event record and update the UI\r\n\t\t\tif (flagRemoved) {\r\n\t\t\t\t// Create an event record with any note that the user put into the text field\r\n\t\t\t\tlet record = await this.createReviewRecord({\r\n\t\t\t\t\teventId: this.event.eventID,\r\n\t\t\t\t\teventRecordTypeId: 108,\r\n\t\t\t\t\tdetails: `Reviewed flagged event : ${this.reviewModalState.note}`\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// If the user has had to be added to the event, then update the users\r\n\t\t\t\t// so we can get the correct initials/colour for their badge within the\r\n\t\t\t\t// event records table.\r\n\t\t\t\tif (record.userAdded) {\r\n\t\t\t\t\tawait this.updateSharing({ eventID: this.event.eventID });\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set flagged to false in the event search store\r\n\t\t\t\tthis.setEventFlagged({\r\n\t\t\t\t\teventId: this.event.eventID,\r\n\t\t\t\t\tflagged: false\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Reviewing event\",\r\n\t\t\t\ttext:\r\n\t\t\t\t\t\"Unable to mark the event as reviewed, please try again later. If the problem persists, contact your support provider.\"\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Reset our modals state\r\n\t\tthis.reviewModalState.processing = false;\r\n\t\tthis.reviewModalState.open = false;\r\n\t\tthis.reviewModalState.note = \"\";\r\n\t}\r\n\r\n\tprivate async renewAuditSession() {\r\n\t\tawait this.updateSession({\r\n\t\t\tresourceId: SessionResource.AuditServiceSession,\r\n\t\t\teventId: this.event.eventID\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async checkEventHasMedia(eventId: number): Promise {\r\n\t\ttry\r\n\t\t{\r\n\t\t\tawait this.auditService\r\n\t\t\t\t.doesEventHaveMedia(this.getSession(SessionResource.AuditServiceSession), eventId)\r\n\t\t\t\t.then(async (response: any) => {\r\n\t\t\t\t\tif (response && response.status === 200) {\r\n\t\t\t\t\t\tthis.eventHasMedia = response.data;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.eventHasMedia = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(err => {\r\n\t\t\t\t\tthrow err\r\n\t\t\t\t});\r\n\t\t}\r\n\t\tcatch (ex)\r\n\t\t{\r\n\t\t\tthis.eventHasMedia = true;\r\n\t\t\tconsole.error(\"checkEventHasMedia\", ex);\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * Start the process of downloading the events archived media\r\n\t */\r\n\tpublic async startMediaDownload(eventId: number) {\r\n\t\tif (!this.downloadingMedia) {\r\n\t\t\tawait this.renewAuditSession();\r\n\r\n\t\t\tawait this.auditService\r\n\t\t\t\t.archiveEvent(this.getSession(SessionResource.AuditServiceSession), eventId)\r\n\t\t\t\t.then(async (response: any) => {\r\n\t\t\t\t\tthis.downloadingMedia = true;\r\n\t\t\t\t\tthis.downloadMediaButtonText = this.archivingMediaText;\r\n\t\t\t\t\tthis.checkArchiveProgress(eventId);\r\n\t\t\t\t})\r\n\t\t\t\t.catch(err => {\r\n\t\t\t\t\tthis.downloadingMedia = false;\r\n\t\t\t\t\tthis.downloadMediaButtonText = this.defaultDownloadButtonText;\r\n\t\t\t\t\tthis.archiveProgressPercentage = 0;\r\n\t\t\t\t\t// Inform the user if we weren't able to archive the events media\r\n\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\ttitle: this.defaultDownloadButtonText,\r\n\t\t\t\t\t\ttext: \"Unable to start archiving media - please try again later, or contact support if the problem persists.\"\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\tthis.downloadMediaKey++;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Continuously requests the current progress percentage of the archive\r\n\t */\r\n\tpublic async checkArchiveProgress(eventId: number) {\r\n\t\tif (this.downloadingMedia) {\r\n\t\t\tthis.auditService\r\n\t\t\t\t.archiveIsReady(this.getSession(SessionResource.AuditServiceSession), eventId)\r\n\t\t\t\t.then(async (response: any) => {\r\n\t\t\t\t\tthis.archiveProgressPercentage = response.data.complete;\r\n\r\n\t\t\t\t\t// If the media is still archiving\r\n\t\t\t\t\tif (!response.data.isReady || response.data.complete < 100) {\r\n\t\t\t\t\t\t//Wait archiveProgressCheckWaitTime seconds before requesting the progress again\r\n\t\t\t\t\t\tthis.archiveProgressCheckTimeout = setTimeout(() => {\r\n\t\t\t\t\t\t\tthis.checkArchiveProgress(eventId);\r\n\t\t\t\t\t\t}, this.archiveProgressCheckWaitTime);\r\n\t\t\t\t\t} else if (response.data.isReady && response.data.complete == 100) {\r\n\t\t\t\t\t\t//The archive is ready so download it\r\n\t\t\t\t\t\tthis.downloadEventMediaArchive(eventId);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t\t.catch(err => {\r\n\t\t\t\t\tthis.downloadingMedia = false;\r\n\t\t\t\t\tthis.downloadMediaButtonText = this.defaultDownloadButtonText;\r\n\t\t\t\t\tthis.archiveProgressPercentage = 0;\r\n\t\t\t\t\t// Inform the user if we weren't able to download the events media\r\n\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\ttitle: \"Preserve\",\r\n\t\t\t\t\t\ttext:\r\n\t\t\t\t\t\t\t\"Unable to check the status of the archive process - please try again later, or contact support if the problem persists.\"\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\tclearTimeout(this.archiveProgressCheckTimeout);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Downloads the events archived media\r\n\t */\r\n\tpublic async downloadEventMediaArchive(eventId: number): Promise {\r\n\r\n\t\tthis.downloadMediaButtonText = this.downloadingMediaText;\r\n\t\tthis.archiveProgressPercentage = 0;\r\n\r\n\t\tawait this.auditService\r\n\t\t\t.getArchive(this.getSession(SessionResource.AuditServiceSession), eventId)\r\n\t\t\t.then(async (response: any) => {\r\n\t\t\t\tawait this.createReviewRecord({\r\n\t\t\t\t\teventId: this.event.eventID,\r\n\t\t\t\t\teventRecordTypeId: 133,\r\n\t\t\t\t\tdetails: `Media files downloaded by user: ${this.User.fullName}`,\r\n\t\t\t\t\tobjectId: this.event.eventID\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.downloadingMedia = false;\r\n\t\t\t\tthis.downloadMediaButtonText = this.defaultDownloadButtonText;\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tthis.downloadingMedia = false;\r\n\t\t\t\tthis.downloadMediaButtonText = this.defaultDownloadButtonText;\r\n\t\t\t\t// Inform the user if we weren't able to download the events media\r\n\t\t\t\tthis.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: this.defaultDownloadButtonText,\r\n\t\t\t\t\ttext:\r\n\t\t\t\t\t\t\"Unable to Download archived media - please try again later, or contact support if the problem persists.\"\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t}\r\n\r\n\tpublic uploadAttachments() {}\r\n\r\n\tpublic incidentReport() {\r\n\t\tthis.setEventSearchIncidentReportShown(true);\r\n\t}\r\n\r\n\t/**\r\n\t * Method for toggling the display of the modal for downloading a clip.\r\n\t */\r\n\tpublic showDownloadClipModal(showModal: boolean) {\r\n\t\t// Case where no clips exist on event.\r\n\t\tif (this.selectedClip == null && this.showDownloadClipModalFlag == false) {\r\n\t\t\t// Notify user that no clip exists or may still be downloading.\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Download Media Clip\",\r\n\t\t\t\ttext: \"Unable to Download media clip - no alarm clips exist for this event or may still be loading.\"\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.showDownloadClipModalFlag = showModal;\r\n\t}\r\n\r\n\t/**\r\n\t * Downloads a specific media clip from an event.\r\n\t */\r\n\tpublic async downloadEventClipArchive(useFriendlyName: boolean) {\r\n\t\t// Use the device title as the filename for the media clip if flag is true.\r\n\t\tlet fileName = null;\r\n\t\tif (useFriendlyName) {\r\n\t\t\tfileName = this.selectedClip.DeviceTitle;\r\n\t\t\t// Ensure loading icon shows in friendly name button.\r\n\t\t\tthis.downloadingMediaClipFriendlyName = true;\r\n\t\t} else {\r\n\t\t\t// Ensure loading icon shows in system name button.\r\n\t\t\tthis.downloadingMediaClipSystemName = true;\r\n\t\t}\r\n\r\n\t\t// Generate url for getting media clip data to append to endpoint.\r\n\t\tlet mediaUrl = this.auditService.mediaUrl(\r\n\t\t\tthis.getSession(SessionResource.AuditServiceSession),\r\n\t\t\tthis.eventRecordID,\r\n\t\t\tthis.selectedClip.FileIdentifier\r\n\t\t);\r\n\r\n\t\t// Get the media clip.\r\n\t\tthis.auditService\r\n\t\t\t.auditDataGetFile(mediaUrl, fileName)\r\n\t\t\t.then(async (response: any) => {\r\n\t\t\t\t// Download the clip.\r\n\t\t\t\tconst fileName = response.headers[\"x-suggested-filename\"];\r\n\t\t\t\tlet link = document.createElement(\"a\");\r\n\t\t\t\tlink.href = window.URL.createObjectURL(response.data);\r\n\t\t\t\tlink.download = fileName;\r\n\t\t\t\tlink.click();\r\n\t\t\t\t// Close the modal.\r\n\t\t\t\tthis.showDownloadClipModalFlag = false;\r\n\t\t\t\t// Unlock all buttons on success and remove loading icon.\r\n\t\t\t\tthis.downloadingMediaClipFriendlyName = false;\r\n\t\t\t\tthis.downloadingMediaClipSystemName = false;\r\n\r\n\t\t\t\t// Add event record to audit the event of downloading a media clip.\r\n\t\t\t\tawait this.createReviewRecord({\r\n\t\t\t\t\teventId: this.event.eventID,\r\n\t\t\t\t\teventRecordTypeId: 133,\r\n\t\t\t\t\tdetails: `Media clip file ${fileName} for device ${this.selectedClip.DeviceTitle} downloaded by user: ${this.User.fullName}`,\r\n\t\t\t\t\tobjectId: this.event.eventID\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch(ex => {\r\n\t\t\t\t// Close modal\r\n\t\t\t\tthis.showDownloadClipModalFlag = false;\r\n\t\t\t\t// Notify user that no clip was selected.\r\n\t\t\t\tthis.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Download Media Clip\",\r\n\t\t\t\t\ttext: `Error: ${ex.name} - Unable to Download media clip, please try again later or contact support if the problem persists.`\r\n\t\t\t\t});\r\n\t\t\t\t// On failure, unlock all buttons and remove loading icon.\r\n\t\t\t\tthis.downloadingMediaClipFriendlyName = false;\r\n\t\t\t\tthis.downloadingMediaClipSystemName = false;\r\n\t\t\t\treturn;\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate eventPreservationUpdated(isPreserved: boolean) : void {\r\n\t\tthis.eventDetails.preserve = isPreserved;\r\n\t\tlet updatedEventDetails = {... this.eventDetails };\r\n\t\tupdatedEventDetails.preserve = isPreserved;\r\n\t\tthis.setEventDetails(updatedEventDetails);\r\n\t\tthis.$emit(\"event-preserve-updated\", isPreserved);\r\n\t\tif (!isPreserved && new Date(this.eventDetails.preservedUntil) < new Date()) {\r\n\t\t\tthis.$emit(\"event-removed\", this.eventDetails.eventID);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get downloadMediaHoverText(): string {\r\n\t\tif (this.downloadingMedia) {\r\n\t\t\tif (this.downloadMediaButtonText === this.downloadingMediaText) {\r\n\t\t\t\treturn this.downloadingMediaProgress;\r\n\t\t\t} else {\r\n\t\t\t\treturn this.archiveProgressPercentage + '%';\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn '';\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get canEditPostEvent(): boolean {\r\n\t\treturn !!this.getFeature([\"Alarms\", \"EventReview\", \"EditPostEvent\"]) && !!this.getPermissions.canEditPostEvent;\r\n\t}\r\n\r\n\tprivate openUpdateEventOutcomeModal(): void {\r\n\t\tthis.setEventCloseShown(true);\r\n\t}\r\n\r\n\tprivate openEventEditInNewTab(): void {\r\n\t\tconst route = this.$router.resolve({ name: `eventEdit`, params: { eventId: this.currentEventId?.toString() } });\r\n\t\twindow.open(route.href, \"_blank\");\r\n\t}\r\n\r\n\t@Emit(\"goToEventPage\")\r\n\tprivate onUpdatedEventOutcome(): number {\r\n\t\treturn this.event.eventID;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventReview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventReview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventReview.vue?vue&type=template&id=563401b4&scoped=true\"\nimport script from \"./EventReview.vue?vue&type=script&lang=ts\"\nexport * from \"./EventReview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventReview.vue?vue&type=style&index=0&id=563401b4&prod&scoped=true&lang=scss\"\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 \"563401b4\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\n\r\nimport Sessions from \"@/components/Sessions.vue\";\r\nimport EventSearch from \"@/components/EventSearch.vue\";\r\nimport EventReview from \"@/components/EventReview.vue\";\r\nimport { Event } from \"@/store/event-search/types\";\r\n\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport api from \"@/services/api.service\";\r\n\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\n\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport { truncateString } from \"@/filters\";\r\n\r\nconst EventSearchStore = namespace(\"eventSearch\");\r\nconst SiteMonitorStore = namespace(\"siteMonitor\");\r\nconst Areas = namespace(\"areas\");\r\nconst { convertUtcDateTimeToLocalDateTimeString } = formatDateMixin.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"event-search\": EventSearch,\r\n\t\t\"event-review\": EventReview,\r\n\t\tsession: Sessions,\r\n\t\t\"nav-header\": NavHeader\r\n\t},\r\n\tfilters: {\r\n\t\ttruncateString\r\n\t}\r\n})\r\nexport default class EventSearchPage extends Vue {\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t@EventSearchStore.Getter events: Event[];\r\n\t@EventSearchStore.Action loadEvents: (searchFilter: any) => Promise;\r\n\t@EventSearchStore.Action loadPaginatedEvents: ({newSearch: boolean, filter: any}) => Promise ;\r\n\t@EventSearchStore.Getter searching: boolean;\r\n\t@EventSearchStore.Mutation setEvents: any;\r\n\t@EventSearchStore.Mutation removeEventFromSearchResults: (eventId: number) => Promise;\r\n\t@EventSearchStore.State(\"CacheKey\") cacheKey: string;\r\n\t@EventSearchStore.State(\"TotalEvents\") totalEvents: number;\r\n\r\n\t@SiteMonitorStore.Mutation resetEventRecords: any;\r\n\r\n\t@Areas.Getter getAreaTitle: (id: number) => string;\r\n\r\n\tpublic selectedEvent = null;\r\n\tpublic makeSearchRequest = false;\r\n\tpublic eventGoto = \"\";\r\n\tprivate searchPending: boolean = false;\r\n\tprivate currentFilter: any;\r\n\tprivate scrollBuffer: number = 10;\r\n\tprivate isLoading: boolean = false;\r\n\r\n\tprivate auditServiceSessionResourceId = SessionResource.AuditServiceSession;\r\n\r\n\tpublic get selectedEventId() {\r\n\t\treturn this.selectedEvent && this.selectedEvent.eventID ? this.selectedEvent.eventID : 0;\r\n\t}\r\n\r\n\tpublic get isEmptySearchResults(): boolean {\r\n\t\treturn this.makeSearchRequest && this.events.length === 0;\r\n\t}\r\n\r\n\tpublic get isSearchCollapsed(): boolean {\r\n\t\treturn this.makeSearchRequest && this.events.length > 0;\r\n\t}\r\n\r\n\tpublic get isEventFlaggingEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"EventFlagging\"], false);\r\n\t}\r\n\r\n\tpublic get isAdditionalEventSearchDetailsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventSearch\", \"AdditionalDetails\"], false);\r\n\t}\r\n\r\n\tpublic async mounted() {\r\n\t\tif (this.$route.params.eventId) {\r\n\t\t\tvar eventId = parseInt(this.$route.params.eventId);\r\n\t\t\tif (!isNaN(eventId)) this.selectedEvent = (await api.loadEventDetails(eventId)).data;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic toSearch() {\r\n\t\tthis.$router.push({ path: `/eventsearch` });\r\n\t}\r\n\r\n\tpublic async gotoEvent() {\r\n\t\tif (this.eventGoto) {\r\n\t\t\tvar eventId = parseInt(this.eventGoto);\r\n\t\t\tif (!isNaN(eventId) && eventId < Number.MAX_SAFE_INTEGER) {\r\n\t\t\t\tvar eventDetails = (await api.loadEventDetailsDirect(eventId)).data;\r\n\t\t\t\tif (eventDetails && eventDetails.closed) {\r\n\t\t\t\t\tthis.makeSearchRequest = false;\r\n\t\t\t\t\tthis.resetEventRecords();\r\n\t\t\t\t\tthis.setEvents([]);\r\n\r\n\t\t\t\t\tthis.selectedEvent = eventDetails;\r\n\t\t\t\t\tthis.$router.push({\r\n\t\t\t\t\t\tpath: `/eventsearch/${this.eventGoto}`\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (!eventDetails.closed) {\r\n\t\t\t\tthis.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Error\",\r\n\t\t\t\t\ttext: \"This event is still being processed\"\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthis.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Error\",\r\n\t\t\t\t\ttext: \"This is not a valid ID\"\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic beforeDestroy() {\r\n\t\tthis.resetEventRecords();\r\n\t\tthis.setEvents([]);\r\n\t}\r\n\r\n\tpublic eventSelect(event: any) {\r\n\t\tthis.resetEventRecords();\r\n\r\n\t\tthis.$set(this, \"selectedEvent\", event);\r\n\t}\r\n\r\n\tpublic async onSearch(searchFilter: any): Promise {\r\n\t\tthis.searchPending = true;\r\n\t\ttry\r\n\t\t{\r\n\t\t\tif (this.isAdditionalEventSearchDetailsEnabled) {\r\n\t\t\t\tthis.currentFilter = searchFilter;\r\n\t\t\t\tthis.currentFilter.cacheKey = null;\r\n\t\t\t\tawait this.loadPaginatedEvents({newSearch:true, filter:this.currentFilter});\r\n\t\t\t\tthis.makeSearchRequest = true;\r\n\t\t\t\tthis.selectedEvent = null;\r\n\t\t\t\tdocument.getElementById('eventSearchResultsList').scrollTop = 0;\r\n\t\t\t} else {\r\n\t\t\t\tawait this.loadEvents(searchFilter);\r\n\t\t\t\tthis.makeSearchRequest = true;\r\n\t\t\t\tthis.selectedEvent = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(ex)\r\n\t\t{\r\n\t\t\tconsole.error(ex)\r\n\t\t}\r\n\t\tthis.searchPending = false;\r\n\t}\r\n\r\n\tprivate eventPreserveUpdated(isPreserved: boolean): void {\r\n\t\tthis.selectedEvent.preserve = isPreserved;\r\n\t}\r\n\r\n\tprivate clearEventSelectAndRemoveFromResults(eventId: number): void {\r\n\t\tthis.selectedEvent = null;\r\n\t\tthis.removeEventFromSearchResults(eventId);\r\n\t}\r\n\r\n\tprivate get showSearchButton() {\r\n\t\treturn this.$route?.params?.eventId ?? false;\r\n\t}\r\n\r\n\tprivate get resultCount(): number|string {\r\n\t\tif (this.isAdditionalEventSearchDetailsEnabled && this.totalEvents != null) {\r\n\t\t\treturn `${this.events.length}/${this.totalEvents}`\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.events.length > 1 ? `${this.events.length} events found` : `${this.events.length} event found`\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onGoToEventPage(eventId: number): void {\r\n\t\tthis.eventGoto = `${eventId}`;\r\n\t\tthis.gotoEvent();\r\n\t}\r\n\r\n\tprivate async onScroll({ target: { scrollTop, clientHeight, scrollHeight }}): Promise {\r\n\t\tif (scrollTop + clientHeight + this.scrollBuffer >= scrollHeight && this.events.length < this.totalEvents) {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.currentFilter.page++;\r\n\t\t\tthis.currentFilter.cacheKey = this.cacheKey;\r\n\t\t\tawait this.loadPaginatedEvents({newSearch:false, filter:this.currentFilter});\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSearchPage.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSearchPage.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventSearchPage.vue?vue&type=template&id=4fac35e0&scoped=true\"\nimport script from \"./EventSearchPage.vue?vue&type=script&lang=ts\"\nexport * from \"./EventSearchPage.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventSearchPage.vue?vue&type=style&index=0&id=4fac35e0&prod&scoped=true&lang=scss\"\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 \"4fac35e0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\",attrs:{\"id\":\"configure-tasks-container\"}},[_c('nav-header',{attrs:{\"title\":\"Action Setup\"}}),_c('div',{staticClass:\"card-body d-flex\"},[_c('div',{staticClass:\"flex-grow-1 setup-column\"},[_c('div',{staticClass:\"task-collection-main-header d-flex m-b-5\"},[_c('div',{staticClass:\"d-flex align-items-center flex-grow-0 mb-2\"},[_c('h5',{staticClass:\"flex-grow-1\"},[_vm._v(\"Action Library\")]),(!_vm.addingNewActionCategory)?_c('div',{staticClass:\"flex-grow-0\"},[_c('a',{staticClass:\"btn btn-primary\",attrs:{\"title\":\"Add Action Category\"},on:{\"click\":function($event){return _vm.onAddNewActionCategory()}}},[_vm._v(\"Add Action Category\")])]):_vm._e()]),(_vm.addingNewActionCategory)?_c('div',{staticClass:\"list-group-item flex-grow-0 d-flex justify-content-between align-items-center add-action-category-container card\"},[_c('add-new-action-category',{attrs:{\"newPlanCategory\":_vm.newActionCategory},on:{\"save\":_vm.onSaveActionCategory,\"cancel\":_vm.onCancelAddingNewActionCategory}})],1):_vm._e(),(_vm.taskCategories.length === 0)?_c('div',{staticClass:\"empty-collection-message flex-grow-0\"},[_vm._v(\"No actions found in action library\")]):_vm._e(),_c('vue-perfect-scrollbar',{staticClass:\"card card-body m-1 p-2 flex-grow-1\"},[_c('transition-group',{staticClass:\"p-0\",attrs:{\"name\":\"action-library-list\",\"tag\":\"ul\",\"move-class\":\"action-plan-list-move\"}},_vm._l((_vm.taskCategories),function(taskCategory){return _c('li',{key:taskCategory.taskCategoryID,staticClass:\"ml-2 mr-2 mt-0 mb-0 list-style-none\"},[_c('div',{staticClass:\"card card-secondary card-category\"},[_c('div',[_c('div',{staticClass:\"card-header d-flex\",attrs:{\"id\":'action_category_' + taskCategory.taskCategoryID}},[_c('div',{staticClass:\"flex-grow-1 d-flex align-items-center\"},[(_vm.actionCategoriesExpandedState['col-l'][taskCategory.taskCategoryID] === true)?_c('i',{staticClass:\"fa fa-caret-down\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Collapse action category\",\"data-cy\":\"configure-tasks-icon-collapse-action-category\"},on:{\"click\":function($event){return _vm.collapseCategory(taskCategory.taskCategoryID, 'col-l')}}}):_c('i',{staticClass:\"fa fa-caret-right\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Expand action category\",\"data-cy\":\"configure-tasks-icon-expand-action-category\"},on:{\"click\":function($event){return _vm.expandCategory(taskCategory.taskCategoryID, 'col-l')}}}),(_vm.taskLibraryByCategoryID[taskCategory.taskCategoryID] && ((_vm.actionPlanCollectionTypeahead && !_vm.actionPlanCollectionTypeahead.isNew) || _vm.triggerAction))?_c('a',{staticClass:\"btn btn-add-to-plan m-r-10\",class:(_vm.categoryInActionPlan(taskCategory) ? 'btn-primary' : 'btn-secondary'),on:{\"click\":function($event){return _vm.toggleCategoryInActionPlan(taskCategory)}}},[(!_vm.categoryInActionPlan(taskCategory))?_c('i',{staticClass:\"fas fa-arrow-right\"}):_c('i',{staticClass:\"fas fa-check\"})]):_vm._e(),(_vm.editedActionCategoryID !== taskCategory.taskCategoryID)?[_c('h6',{staticClass:\"mb-0\"},[_vm._v(_vm._s(taskCategory.title))]),_vm._v(\" \"),(_vm.taskLibraryByCategoryID[taskCategory.taskCategoryID])?_c('span',[_vm._v(\"(\"+_vm._s(_vm.taskLibraryByCategoryID[taskCategory.taskCategoryID].length)+\")\")]):_vm._e()]:_vm._e(),(_vm.editedActionCategoryID === taskCategory.taskCategoryID)?[_c('div',{staticClass:\"form-group edit-task-category-form-container\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editedActionCategoryTitle),expression:\"editedActionCategoryTitle\"}],class:[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'invalid': !_vm.isValidEditedActionCategoryTitle,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'error-animated': _vm.showEditedActionCategoryTitleErrorAnimation\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'form-control'\n\t\t\t\t\t\t\t\t\t\t\t\t\t],attrs:{\"type\":\"text\",\"placeholder\":\"Action Category Title\"},domProps:{\"value\":(_vm.editedActionCategoryTitle)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.editedActionCategoryTitle=$event.target.value}}})])]:_vm._e()],2),_c('div',{staticClass:\"action-category-controls flex-grow-0\"},[(_vm.editedActionCategoryID === taskCategory.taskCategoryID)?_c('i',{staticClass:\"fa fa-times flex-grow-1\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Cancel editing\"},on:{\"click\":function($event){return _vm.onCancelEditingActionCategory()}}}):_vm._e(),(_vm.editedActionCategoryID === taskCategory.taskCategoryID)?_c('i',{staticClass:\"fa fa-check flex-grow-1\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Update\"},on:{\"click\":function($event){return _vm.onUpdateActionCategory(taskCategory)}}}):_vm._e(),(_vm.editedActionCategoryID !== taskCategory.taskCategoryID)?_c('i',{staticClass:\"fa fa-edit flex-grow-1\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Edit category\"},on:{\"click\":function($event){return _vm.onActionCategoryEdit(taskCategory)}}}):_vm._e(),_c('i',{staticClass:\"fa fa-trash flex-grow-1\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Remove category\"},on:{\"click\":function($event){return _vm.onDeleteActionCategory(taskCategory)}}})])]),(_vm.deleteActionCategoryID === taskCategory.taskCategoryID)?_c('div',{staticClass:\"task-category-delete-confirmation alert d-flex\"},[_c('span',{staticClass:\"flex-grow-1\"},[_vm._v(\"Delete action category and all associated actions?\")]),_c('div',{staticClass:\"flex-grow-0\"},[_c('a',{staticClass:\"btn btn-danger\",on:{\"click\":function($event){return _vm.doDeleteActionCategory()}}},[_vm._v(\"Delete\")]),_c('a',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){return _vm.cancelDeletingActionCategory()}}},[_vm._v(\"Cancel\")])])]):_vm._e()]),(_vm.actionCategoriesExpandedState['col-l'][taskCategory.taskCategoryID] === true)?_c('div',{ref:\"task-library-container\",refInFor:true,staticClass:\"task-library-container card-body\"},[_c('transition-group',{staticClass:\"list-group\",attrs:{\"name\":\"action-plan-list\",\"tag\":\"ul\",\"enter-active-class\":\"animated-fast slideInLeft\",\"leave-active-class\":\"animated-fast slideOutLeft action-plan-list-item-leave\",\"move-class\":\"action-plan-list-move\",\"mode\":\"out-in\"},on:{\"before-leave\":_vm.beforeActionPlanListItemLeave}},[(!_vm.taskLibraryByCategoryID[taskCategory.taskCategoryID])?_c('div',{key:'noactions_' + taskCategory.taskCategoryID,staticClass:\"alert alert-secondary\",attrs:{\"id\":'noactions_' + taskCategory.taskCategoryID}},[_c('span',[_vm._v(\"No actions in category\")])]):_vm._e(),_vm._l((_vm.taskLibraryByCategoryID[taskCategory.taskCategoryID]),function(task){return _c('li',{key:task.taskID,class:[{'active': (_vm.triggerAction && _vm.triggerAction.taskID == task.taskID)}, 'list-group-item action-list-group-item'],attrs:{\"id\":'action_' + task.taskID}},[_c('div',{staticClass:\"d-flex align-items-center\"},[((_vm.actionPlanCollectionTypeahead && !_vm.actionPlanCollectionTypeahead.isNew && !_vm.triggerAction) || (_vm.triggerAction && _vm.triggerAction.taskID != task.taskID))?_c('a',{staticClass:\"btn btn-add-to-plan m-r-10\",class:(_vm.inActionPlan(task) ? 'btn-primary' : 'btn-secondary'),on:{\"click\":function($event){return _vm.toggleInActionPlan(task)}}},[(!_vm.inActionPlan(task))?_c('i',{staticClass:\"fas fa-arrow-right\"}):_c('i',{staticClass:\"fas fa-check\"})]):_vm._e(),_c('div',{staticClass:\"list-group-item-body flex-grow-1\"},[_c('table',{staticClass:\"w-100\"},[_c('tr',[_c('td',{staticClass:\"task-title\"},[(task.taskTypeID == _vm.taskTypeIds.URL)?_c('span',[_c('a',{attrs:{\"href\":task.taskData ? task.taskData : task.taskText,\"target\":\"_blank\"}},[_vm._v(_vm._s(task.taskText ? task.taskText : task.taskData))])]):_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"parseTaskText\")(task))+\" \")])]),_c('td',{staticClass:\"task-type-label\"},[_vm._v(_vm._s(_vm.taskTypesByTitle[task.taskTypeID] || 'Unknown'))])])])]),_c('div',{staticClass:\"action-category-controls flex-grow-0\"},[_c('a',{attrs:{\"data-cy\":\"add-trigger\"},on:{\"click\":function($event){return _vm.setTriggerAction(task)}}},[_c('span',{staticClass:\"badge badge-pill badge-link dark-background badge-success\",attrs:{\"title\":\"Triggered Actions\"}},[_vm._v(_vm._s(task.triggeredTaskCount))])]),(_vm.isEditedTask(task))?_c('i',{staticClass:\"fas fa-times flex-grow-1\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Cancel editing\"},on:{\"click\":function($event){return _vm.onCancelEditingLibraryTask(task.taskID)}}}):_c('i',{staticClass:\"fa fa-edit flex-grow-1\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Edit action\"},on:{\"click\":function($event){return _vm.onTaskEdit(task)}}}),_c('i',{staticClass:\"fa fa-trash flex-grow-1\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Remove action from library\"},on:{\"click\":function($event){return _vm.onDeleteActionFromLibrary(task, taskCategory.title)}}})])]),(_vm.editingTaskStates[task.taskID])?_c('div',{staticClass:\"row mt-2\"},[_c('edit-library-task',{attrs:{\"libraryTask\":task,\"taskTypes\":_vm.taskTypes,\"taskCategories\":_vm.taskCategories},on:{\"save\":_vm.onUpdateLibraryTask,\"cancel\":_vm.onCancelEditingLibraryTask}})],1):_vm._e()])}),(!_vm.addingNewTaskStates[taskCategory.taskCategoryID])?_c('li',{key:\"add-action\",staticClass:\"list-group-item action-list-group-item list-group-item-action\",on:{\"click\":function($event){return _vm.onAddNewTaskToLibrary(taskCategory.taskCategoryID)}}},[_c('b',[_vm._v(\"Add Action\")])]):_vm._e()],2),(_vm.addingNewTaskStates[taskCategory.taskCategoryID])?_c('add-new-task',{attrs:{\"taskCategoryId\":taskCategory.taskCategoryID,\"taskTypes\":_vm.taskTypes,\"taskCategories\":_vm.taskCategories},on:{\"save\":_vm.onSaveNewTask,\"cancel\":_vm.onCancelNewTask}}):_vm._e()],1):_vm._e()])])}),0)],1)],1)]),_c('div',{staticClass:\"flex-grow-1 setup-column d-flex flex-column\",staticStyle:{\"position\":\"relative\"}},[_c('div',{staticClass:\"d-flex align-items-center flex-grow-0 mb-2\"},[_c('h5',{staticClass:\"flex-grow-1\"},[_vm._v(\"Action Plans\")]),(!_vm.actionPlanCollectionTypeahead || !this.actionPlanCollectionTypeahead.isNew)?_c('div',{staticClass:\"flex-grow-0\"},[_c('a',{staticClass:\"btn btn-primary\",attrs:{\"title\":\"Add Action Plan\"},on:{\"click\":function($event){return _vm.onAddNewActionPlan()}}},[_vm._v(\"Add Action Plan\")])]):_vm._e()]),_c('div',{staticClass:\"task-collections-drop-area card card-secondary flex-grow-1\",staticStyle:{\"margin\":\"3px\"}},[_c('div',{staticClass:\"card-header\"},[(!_vm.actionPlanCollectionTypeahead || !_vm.actionPlanCollectionTypeahead.edit)?_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1\"},[(_vm.actionPlans.length === 0 && !_vm.actionPlanCollectionTypeahead)?_c('div',{staticClass:\"flex-grow-0 alert alert-secondary\"},[_vm._v(\"No action plans found\")]):_vm._e(),(_vm.actionPlans.length > 0 && (!_vm.actionPlanCollectionTypeahead || !_vm.actionPlanCollectionTypeahead.isNew))?_c('div',[_c('vue-select',{staticClass:\"dark flex-grow-1\",attrs:{\"name\":\"task-collection-selection-control\",\"clearable\":false,\"placeholder\":'Select Action Plan',\"options\":_vm.actionPlans,\"label\":\"title\"},model:{value:(_vm.actionPlanCollectionTypeahead),callback:function ($$v) {_vm.actionPlanCollectionTypeahead=$$v},expression:\"actionPlanCollectionTypeahead\"}})],1):_vm._e()]),(_vm.actionPlanCollectionTypeahead && !_vm.actionPlanCollectionTypeahead.edit)?_c('div',{staticClass:\"task-collection-controls flex-grow-0\"},[(true)?_c('i',{staticClass:\"fa fa-edit flex-grow-1\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Edit action plan\"},on:{\"click\":function($event){return _vm.onEditActionPlan()}}}):_vm._e(),_c('i',{staticClass:\"fa fa-trash flex-grow-1\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Delete action plan\"},on:{\"click\":function($event){_vm.deletingActionPlan = true}}})]):_vm._e()]):_c('div',[_c('edit-action-plan',{attrs:{\"actionPlan\":_vm.actionPlanCollectionTypeahead},on:{\"save\":_vm.onSaveActionPlan,\"cancel\":_vm.onCancelEditingActionPlan}})],1),(_vm.deletingActionPlan)?_c('div',{staticClass:\"card card-body bg-danger m-t-10\"},[_c('div',{staticClass:\"d-flex\"},[_c('span',{staticClass:\"flex-grow-1\"},[_vm._v(\"Are you sure you wish to delete \"+_vm._s(_vm.actionPlanCollectionTypeahead.title)+\"?\")]),_c('div',{staticClass:\"btn-group\"},[_c('a',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){return _vm.doDeleteActionPlan()}}},[_vm._v(\"Delete\")]),_c('a',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){_vm.deletingActionPlan = false}}},[_vm._v(\"Cancel\")])])])]):_vm._e()]),(_vm.actionPlanCollectionTypeahead && !_vm.actionPlanCollectionTypeahead.isNew)?_c('vue-perfect-scrollbar',{staticClass:\"card-body task-plan-container\"},[(_vm.actionPlanCollectionTypeahead.scriptID && !_vm.actionsInActionPlansByCategory[_vm.actionPlanCollectionTypeahead.scriptID])?_c('div',{key:'noactions_' + _vm.actionPlanCollectionTypeahead.scriptID,staticClass:\"alert alert-secondary\",attrs:{\"id\":'noactions_' + _vm.actionPlanCollectionTypeahead.scriptID}},[_c('span',[_vm._v(\"No actions in plan\")])]):_vm._e(),_c('draggable',_vm._b({attrs:{\"list\":_vm.actionPlanCategories(_vm.actionPlanCollectionTypeahead.scriptID),\"disabled\":!this.areScriptCategoryLinksLoaded || this.scriptCategoryLinksBeingUpdated,\"data-cy\":\"draggable-categories\"},on:{\"change\":function($event){return _vm.onActionPlanCategoryOrderChanged($event, _vm.actionPlanCollectionTypeahead.scriptID)},\"dragstart\":function($event){_vm.reorderingItem = true;},\"dragend\":function($event){_vm.reorderingItem = false;}}},'draggable',_vm.actionPlanCategoryDragOptions,false),[_c('transition-group',{staticClass:\"list-group\",attrs:{\"name\":_vm.reorderingItem ? 'action-plan-draggable' : null,\"type\":\"transition\",\"tag\":\"ul\"}},_vm._l((_vm.actionPlanCategories(_vm.actionPlanCollectionTypeahead.scriptID)),function(_cat_id){return _c('div',{key:_cat_id.taskCategoryId,staticClass:\"card card-secondary card-category\"},[(_vm.decoratedActionCategoriesInCurrentScript[_cat_id.taskCategoryId])?_c('div',{staticClass:\"card-header\"},[(_vm.isReorderCategoriesEnabled)?_c('i',{class:_vm.scriptCategoryLinksBeingUpdated === true ? 'fas fa-spinner fa-spin' : 'fas fa-ellipsis-v item-handle draggable-hover',attrs:{\"title\":_vm.scriptCategoryLinksBeingUpdated === true ? 'Updating Action Plan' : 'Reorder this category'}}):_vm._e(),(_vm.actionCategoriesExpandedState['col-r'][_vm.actionPlanCollectionTypeahead.scriptID][_cat_id.taskCategoryId] === true)?_c('i',{staticClass:\"fa fa-caret-down\",class:_vm.isReorderCategoriesEnabled ? 'pl-3': '',attrs:{\"aria-hidden\":\"true\",\"title\":\"Collapse action category\"},on:{\"click\":function($event){return _vm.collapseCategory(_cat_id.taskCategoryId, 'col-r')}}}):_c('i',{staticClass:\"fa fa-caret-right\",class:_vm.isReorderCategoriesEnabled ? 'pl-3': '',attrs:{\"aria-hidden\":\"true\",\"title\":\"Expand action category\"},on:{\"click\":function($event){return _vm.expandCategory(_cat_id.taskCategoryId, 'col-r')}}}),_vm._v(\" \"+_vm._s(_vm.decoratedActionCategoriesInCurrentScript[_cat_id.taskCategoryId].title)+\" (\"+_vm._s(_vm.decoratedActionCategoriesInCurrentScript[_cat_id.taskCategoryId].numActionsAddedToScript)+\" / \"+_vm._s(_vm.decoratedActionCategoriesInCurrentScript[_cat_id.taskCategoryId].totalNumActions)+\") \")]):_vm._e(),(_vm.actionCategoriesExpandedState['col-r'][_vm.actionPlanCollectionTypeahead.scriptID][_cat_id.taskCategoryId] === true)?_c('div',{staticClass:\"card-body p-0\"},[_c('draggable',_vm._b({attrs:{\"handle\":\".item-handle\",\"list\":_vm.orderedActionPlanByCategory(_vm.actionPlanCollectionTypeahead.scriptID, _cat_id.taskCategoryId)},on:{\"change\":function($event){_vm.onActionPlanOrderChanged($event, _vm.actionPlanCollectionTypeahead.scriptID, _cat_id.taskCategoryId.toString())},\"dragstart\":function($event){_vm.reorderingItem = true;},\"dragend\":function($event){_vm.reorderingItem = false;}}},'draggable',_vm.actionPlanDragOptions,false),[_c('transition-group',{staticClass:\"list-group\",attrs:{\"name\":_vm.reorderingItem ? 'action-plan-draggable' : null,\"type\":\"transition\",\"tag\":\"ul\"}},_vm._l((_vm.orderedActionPlanByCategory(_vm.actionPlanCollectionTypeahead.scriptID, _cat_id.taskCategoryId)),function(action){return _c('li',{key:action.taskID,staticClass:\"list-group-item action-list-group-item d-flex\"},[_c('span',{staticClass:\"pr-3\"},[_c('i',{staticClass:\"fas fa-ellipsis-v item-handle\",attrs:{\"title\":\"Reorder this action\"}})]),_c('div',{staticClass:\"list-group-item-body flex-grow-1\"},[_c('table',{staticClass:\"w-100\"},[_c('tr',[_c('td',{staticClass:\"task-title\"},[(action.taskTypeID == _vm.taskTypeIds.URL)?_c('span',[_c('a',{attrs:{\"href\":action.taskData ? action.taskData : action.taskText,\"target\":\"_blank\"}},[_vm._v(_vm._s(action.taskText ? action.taskText : action.taskData))])]):_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"parseTaskText\")(action))+\" \")])]),_c('td',{staticClass:\"task-type-label\"},[_vm._v(_vm._s(_vm.taskTypesByTitle[action.taskTypeID] || 'Unknown'))])])])]),_c('div',{staticClass:\"custom-control custom-checkbox checkbox-pad-right\"},[_c('input',{staticClass:\"custom-checkbox custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":'customCheckSID' + _vm.actionPlanCollectionTypeahead.scriptID + '-TID' + action.taskID},domProps:{\"checked\":action.scripts[_vm.actionPlanCollectionTypeahead.scriptID].required},on:{\"input\":function($event){return _vm.toggleRequiredTask($event, action, _vm.actionPlanCollectionTypeahead.scriptID)}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":'customCheckSID' + _vm.actionPlanCollectionTypeahead.scriptID + '-TID' + action.taskID}},[_vm._v(\"Required\")])]),_c('i',{staticClass:\"fa fa-trash flex-grow-0\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Remove from action plan\"},on:{\"click\":function($event){return _vm.onRemoveTaskFromCollection(action)}}})])}),0)],1)],1):_vm._e()])}),0)],1)],1):_vm._e()],1),_c('task-trigger-dialog')],1)]),_c('b-modal',{ref:\"confirmTaskDeletionModal\",attrs:{\"title\":\"Delete Action from Category\",\"ok-title\":\"Delete\"},on:{\"ok\":function($event){return _vm.doDeleteActionFromLibrary()},\"cancel\":function($event){return _vm.cancelDeletingActionFromLibrary()}}},[_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('span',[_vm._v(\" Are you sure you want to delete \"),_c('strong',[_vm._v(\"'\"+_vm._s(_vm._f(\"parseTaskText\")(_vm.confirmTaskDeletionModalDetails))+\"'\")]),_vm._v(\" from category \"),_c('strong',[_vm._v(\"'\"+_vm._s(_vm.confirmTaskDeletionModalDetails.taskCategoryTitle)+\"'\")]),_vm._v(\"? \")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"form-group flex-grow-1 p-3 mb-0\"},[_c('h5',[_vm._v(\"New Action\")]),_c('hr',{staticClass:\"border-faint\"}),_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Choose action type:\")]),_c('div',{staticClass:\"add-task-select-type-container\"},[_c('vue-select',{staticClass:\"dark\",attrs:{\"name\":\"task-type-selection-control\",\"id\":\"task-type-selection-control\",\"placeholder\":'Select Action Type',\"options\":_vm.enabledActionTypes,\"label\":\"title\"},model:{value:(_vm.taskTypeSelectPlaceholder),callback:function ($$v) {_vm.taskTypeSelectPlaceholder=$$v},expression:\"taskTypeSelectPlaceholder\"}})],1)]),_c('div',{staticClass:\"card shadow-sm p-3\"},[(_vm.newTask.taskTypeID === _vm.TaskTypeIdEnum.MassNotification && _vm.massNotificationEnabled)?_c('div',{staticClass:\"flex-grow-1\"},[_c('notification-setup',{on:{\"validate-task\":_vm.taskValidated},model:{value:(_vm.newTask),callback:function ($$v) {_vm.newTask=$$v},expression:\"newTask\"}})],1):(_vm.newTask.taskTypeID === _vm.TaskTypeIdEnum.Choices && _vm.choicesEnabled)?_c('div',{staticClass:\"flex-grow-1\"},[_c('choices-task-setup',{on:{\"validate-task\":_vm.taskValidated},model:{value:(_vm.newTask),callback:function ($$v) {_vm.newTask=$$v},expression:\"newTask\"}})],1):(_vm.newTask.taskTypeID === _vm.TaskTypeIdEnum.CallContact && _vm.callContactsEnabled)?_c('div',{staticClass:\"flex-grow-1\"},[_c('call-contact-setup',{on:{\"validate-task\":_vm.taskValidated},model:{value:(_vm.newTask),callback:function ($$v) {_vm.newTask=$$v},expression:\"newTask\"}})],1):(_vm.newTask.taskTypeID === _vm.TaskTypeIdEnum.ControlRelay && _vm.controlsEnabled)?_c('div',{staticClass:\"flex-grow-1\"},[_c('control-task',{on:{\"validate-task\":_vm.taskValidated},model:{value:(_vm.newTask),callback:function ($$v) {_vm.newTask=$$v},expression:\"newTask\"}})],1):(_vm.newTask.taskTypeID === _vm.TaskTypeIdEnum.EventOutcome && _vm.eventOutcomeEnabled)?_c('div',{staticClass:\"flex-grow-1\"},[_c('event-outcome-task',{attrs:{\"editing\":\"\",\"task\":_vm.newTask},on:{\"validate-task\":_vm.taskValidated},model:{value:(_vm.newTask),callback:function ($$v) {_vm.newTask=$$v},expression:\"newTask\"}})],1):_c(_vm.taskToRender,{tag:\"component\",attrs:{\"editing\":true,\"task\":_vm.newTask},on:{\"validate-task\":_vm.taskValidated}})],1),_c('div',{staticClass:\"flex-grow-0 mt-2\"},[_c('div',{staticClass:\"btn-group\"},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"disabled\":!_vm.isValid},on:{\"click\":function($event){return _vm.onSave()}}},[_vm._v(\"Add\")]),_c('button',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){return _vm.onCancel()}}},[_vm._v(\"Cancel\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\timport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\n\timport { State, Getter, Action, Mutation, namespace } from \"vuex-class\";\n\timport vSelect from \"vue-select\"; // @ref https://sagalbot.github.io/vue-select/\n\timport NotificationSetup from \"@/components/tasks/notification/NotificationSetup.vue\";\n\timport ChoicesTaskSetup from \"@/components/tasks/choices/ChoicesTaskSetup.vue\";\n\timport CallContactSetup from \"@/components/tasks/call-contact/CallContactSetup.vue\";\n\timport NewTask from \"@/models/new-task.model\";\n\timport { TaskType } from \"@/store/tasks/types\";\n\timport BasicTask from \"@/components/tasks/task-types/BasicTask.vue\";\n import RaiseToCasesTask from \"@/components/tasks/task-types/RaiseToCasesTask.vue\";\n\timport InputTask from \"@/components/tasks/task-types/InputTask.vue\";\n\timport YesNoTask from \"@/components/tasks/task-types/YesNoTask.vue\";\n\timport UrlTask from \"@/components/tasks/task-types/UrlTask.vue\";\n\timport SitRepTask from \"@/components/tasks/task-types/SitRepTask.vue\";\n\timport CCureTask from \"@/components/tasks/task-types/CCureTask.vue\";\n\timport AuditTask from \"@/components/tasks/task-types/AuditTask.vue\";\n\timport DynamicDataList from \"@/components/tasks/task-types/DynamicDataList.vue\";\n\timport ControlTask from \"@/components/tasks/control/ControlSetup.vue\";\n\timport EventOutcomeTask from \"@/components/tasks/task-types/EventOutcomeTask.vue\";\n\timport { stringMixin } from \"@/mixins\";\n\timport TaskTypeIds from \"@/types/sv-data/enums/TaskTypeIds\";\n\n\timport { get } from \"lodash\";\n\n\tconst { isNullOrWhitespace } = stringMixin.methods;\n\n\t// @techdebt @refactor break up into sub-components\n\tconst Tasks = namespace(\"tasks\");\n\n\t@Component({\n\t\tcomponents: {\n\t\t\t\"vue-select\": vSelect,\n\t\t\t\"notification-setup\": NotificationSetup,\n\t\t\t\"basic-task\": BasicTask,\n\t\t\t\"input-task\": InputTask,\n\t\t\t\"yes-no-task\": YesNoTask,\n\t\t\t\"url-task\": UrlTask,\n\t\t\t\"sitrep-task\": SitRepTask,\n\t\t\t\"ccure-task\": CCureTask,\n\t\t\t\"audit-task\": AuditTask,\n\t\t\t\"choices-task-setup\": ChoicesTaskSetup,\n\t\t\t\"call-contact-setup\": CallContactSetup,\n\t\t\t\"dynamic-data-list\": DynamicDataList,\n\t\t\t\"control-task\": ControlTask,\n \"raise-to-cases-task\": RaiseToCasesTask,\n\t\t\t\"event-outcome-task\": EventOutcomeTask\n\t\t}\n\t})\n\texport default class AddNewTask extends Vue {\n\t\t@Tasks.Getter(\"getEnabledActionTypes\") enabledActionTypes: TaskType[];\n\t\t@Getter getFeature: (featuresList: string[]) => boolean;\n\n\t\tpublic hasValidationErrors: boolean = false;\n\t\tpublic showErrorAnimation: boolean = false;\n\t\tpublic taskTypeSelectPlaceholder: any = null;\n\n\t\tprivate TaskTypeIdEnum: typeof TaskTypeIds = TaskTypeIds;\n\n\t\tpublic placeholderText = {\n\t\t\t1: \"Action text\",\n\t\t\t2: \"Specify question that will require user input to complete action\",\n\t\t\t3: \"Specify question that will require user to choose Yes/No to complete action\"\n\t\t};\n\n\t\t@Prop(Number)\n\t\tpublic taskCategoryId!: number;\n\n\t\t@Prop(Array)\n\t\tpublic taskTypes!: TaskType[];\n\n\t\tpublic newTask: {\n\t\t\ttaskText: string;\n\t\t\ttaskCategoryID: number;\n\t\t\ttaskTypeID: number;\n\t\t\ttaskData: any;\n\t\t} = { taskText: \"\", taskCategoryID: 0, taskTypeID: 1, taskData: null };\n\n\t\tpublic taskToRender: string = \"basic-task\";\n\t\tpublic isTaskValid: boolean = false;\n\n\t\tpublic mounted() {\n\t\t\tthis.loadCorrectComponent();\n\t\t\tthis.taskTypeSelectPlaceholder = this.enabledActionTypes.find(\n\t\t\t\ttt => tt.title === \"Basic\"\n\t\t\t);\n\t\t}\n\n\t\tpublic loadCorrectComponent() {\n\t\t\tlet task = this.enabledActionTypes.find(\n\t\t\t\t(taskType: any) =>\n\t\t\t\t\ttaskType.taskTypeID === this.newTask.taskTypeID &&\n\t\t\t\t\ttaskType.componentFile !== null\n\t\t\t);\n\n\t\t\t// Avoid property undefined errors if a task was not returned.\n\t\t\tif (task !== undefined) {\n\t\t\t\tthis.taskToRender = task.componentFile;\n\t\t\t}\n\t\t}\n\n\t\t@Watch(\"taskTypeSelectPlaceholder\", { immediate: true, deep: true })\n\t\tpublic onTaskTypeChanged(taskType: any) {\n\t\t\tthis.newTask.taskText = \"\";\n\t\t\tif (taskType === null || taskType === undefined) return;\n\t\t\tthis.newTask.taskTypeID = taskType.taskTypeID || 1;\n\n\t\t\tthis.loadCorrectComponent();\n\t\t}\n\n\t\tpublic get isValid() {\n\t\t\tlet isValid = this.isTaskValid;\n\n\t\t\t// taskType defaults to basic\n\t\t\tif (!this.newTask.taskTypeID) {\n\t\t\t\tthis.newTask.taskTypeID = 1;\n\t\t\t}\n\n\t\t\treturn isValid;\n\t\t}\n\n\t\t// Called when a task component verifies that it is valid.\n\t\tpublic taskValidated(valid: boolean) {\n\t\t\tthis.isTaskValid = valid;\n\t\t}\n\n\t\tprivate reset() {\n\t\t\tthis.taskTypeSelectPlaceholder = null;\n\t\t\tthis.newTask = {\n\t\t\t\ttaskText: \"\",\n\t\t\t\ttaskCategoryID: 0,\n\t\t\t\ttaskTypeID: 1,\n\t\t\t\ttaskData: null\n\t\t\t};\n\t\t}\n\n\t\tpublic onSave() {\n\t\t\tif (this.isValid) {\n\t\t\t\tthis.newTask.taskCategoryID = this.taskCategoryId;\n\n\t\t\t\tthis.confirmUrlTaskHasTitle();\n\n\t\t\t\tthis.$emit(\"save\", this.newTask);\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t}\n\n\t\tpublic onCancel() {\n\t\t\tthis.$emit(\"cancel\", this.taskCategoryId);\n\t\t\tthis.reset();\n\t\t}\n\n\t\tprivate confirmUrlTaskHasTitle() {\n\t\t\tif (this.newTask.taskTypeID === TaskTypeIds.URL) {\n\t\t\t\tif (this.newTask.taskText === \"\") {\n\t\t\t\t\tthis.newTask.taskText = this.newTask.taskData;\n\t\t\t\t\tthis.newTask.taskData = null;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate get massNotificationEnabled(): boolean {\n\t\t\treturn this.getFeature([\"Actions\", \"MassNotification\"]);\n\t\t}\n\n\t\tprivate get choicesEnabled(): boolean {\n\t\t\treturn this.getFeature([\"Actions\", \"Choices\"]);\n\t\t}\n\n\t\tprivate get callContactsEnabled(): boolean {\n\t\t\treturn this.getFeature([\"Actions\", \"CallContacts\"]);\n\t\t}\n\n\t\tprivate get controlsEnabled(): boolean {\n\t\t\treturn this.getFeature([\"Actions\", \"Control\"]);\n\t\t}\n\n\t\tprivate get eventOutcomeEnabled(): boolean {\n\t\t\treturn this.getFeature([\"Actions\", \"EventOutcome\"]);\n\t\t}\n\t}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AddNewTask.vue?vue&type=template&id=14b20a7d\"\nimport script from \"./AddNewTask.vue?vue&type=script&lang=ts\"\nexport * from \"./AddNewTask.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.actionPlan.title),expression:\"actionPlan.title\"}],class:[\n\t\t\t\t{\n\t\t\t\t\t'invalid': _vm.validationMessage,\n\t\t\t\t\t'error-animated': _vm.showErrorAnimation && _vm.validationMessage\n\t\t\t\t},\n\t\t\t\t'form-control'\n\t\t\t],attrs:{\"type\":\"text\",\"placeholder\":\"Action Plan Title\"},domProps:{\"value\":(_vm.actionPlan.title)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.actionPlan, \"title\", $event.target.value)}}}),(_vm.validationMessage)?_c('small',{staticStyle:{\"color\":\"red\"}},[_vm._v(\"* \"+_vm._s(_vm.validationMessage))]):_vm._e()]),_c('div',{staticClass:\"flex-grow-0\"},[_c('div',{staticClass:\"btn-group\"},[_c('a',{staticClass:\"btn btn-primary\",on:{\"click\":function($event){return _vm.onSave()}}},[_vm._v(\"Save\")]),_c('a',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){return _vm.onCancel()}}},[_vm._v(\"Cancel\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport vSelect from \"vue-select\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { ActionPlan } from \"@/store/tasks/types\";\r\n\r\nconst Tasks = namespace(\"tasks\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect\r\n\t}\r\n})\r\nexport default class EditActionPlan extends Vue {\r\n\t@Prop({\r\n\t\tdefault: () => ({\r\n\t\t\ttitle: {\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tgroupID: {\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n\tprivate actionPlan!: ActionPlan;\r\n\r\n\t@Tasks.Getter(\"getActionPlans\") private actionPlans: ActionPlan[];\r\n\r\n\tprivate get hasValidationErrors(): boolean {\r\n\t\treturn !!this.validationMessage;\r\n\t}\r\n\r\n\tprivate showErrorAnimation: boolean = false;\r\n\tprivate validationMessage: string = \"\";\r\n\r\n\t@Watch(\"actionPlan.title\", { immediate: true })\r\n\tprivate onTitleChanged(title: string): void {\r\n\t\tif (!title) {\r\n\t\t\tthis.validationMessage = \"Action plan title can not be empty\";\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst titleAlreadyExist = this.actionPlans\r\n\t\t\t.find((ap: ActionPlan) => ap.scriptID != this.actionPlan.scriptID && ap.title.toLowerCase() == title.toLowerCase());\r\n\r\n\t\tif (titleAlreadyExist) {\r\n\t\t\tthis.validationMessage = \"Action plan title already exists\";\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.validationMessage = \"\";\r\n\t}\r\n\r\n\tpublic onSave() {\r\n\t\tthis.onTitleChanged(this.actionPlan.title);\r\n\t\tif (!this.hasValidationErrors) {\r\n\t\t\tthis.$emit(\"save\", this.actionPlan);\r\n\t\t} else {\r\n\t\t\tthis.showErrorAnimation = true;\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.showErrorAnimation = false;\r\n\t\t\t}, this.$config.ANIMATION_DURATION);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic onCancel() {\r\n\t\tthis.$emit(\"cancel\");\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditActionPlan.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditActionPlan.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EditActionPlan.vue?vue&type=template&id=e01bb014\"\nimport script from \"./EditActionPlan.vue?vue&type=script&lang=ts\"\nexport * from \"./EditActionPlan.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"add-new-task-category-container d-flex\"},[_c('div',{staticClass:\"form-group new-task-category-form-group flex-grow-1 m-r-10 m-b-0\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newPlanCategory.Title),expression:\"newPlanCategory.Title\"}],class:[{invalid: _vm.hasValidationErrors, 'error-animated': _vm.showErrorAnimation}, 'form-control'],attrs:{\"type\":\"text\",\"placeholder\":\"Action Category Title\"},domProps:{\"value\":(_vm.newPlanCategory.Title)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.newPlanCategory, \"Title\", $event.target.value)}}})]),_c('div',[_c('div',{staticClass:\"btn-group\"},[_c('a',{staticClass:\"btn btn-primary\",on:{\"click\":function($event){return _vm.onSave()}}},[_vm._v(\"Add\")]),_c('a',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){return _vm.onCancel()}}},[_vm._v(\"Cancel\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\n\n@Component({})\nexport default class AddNewActionCategory extends Vue {\n\tpublic hasValidationErrors: boolean = false;\n\tpublic showErrorAnimation: boolean = false;\n\n\t@Prop({\n\t\tdefault: () => ({\n\t\t\tTitle: {\n\t\t\t\ttype: String,\n\t\t\t\trequired: true\n\t\t\t}\n\t\t})\n\t})\n\tnewPlanCategory!: any; // @todo type\n\n\t@Watch(\"newPlan.Title\")\n\tonTitleChanged(title: string) {\n\t\tthis.hasValidationErrors = !title.length;\n\t}\n\n\tpublic checkActionCategory() {\n\t\treturn !!this.newPlanCategory.Title.length;\n\t}\n\n\tpublic onSave() {\n\t\tif (this.checkActionCategory()) {\n\t\t\tthis.hasValidationErrors = false;\n\t\t\tthis.$emit(\"save\", this.newPlanCategory);\n\t\t} else {\n\t\t\tthis.hasValidationErrors = true;\n\t\t\tthis.showErrorAnimation = true;\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.showErrorAnimation = false;\n\t\t\t}, this.$config.ANIMATION_DURATION);\n\t\t}\n\t}\n\n\tpublic onCancel() {\n\t\tthis.$emit(\"cancel\");\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewActionCategory.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewActionCategory.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AddNewActionCategory.vue?vue&type=template&id=48d6a36a&scoped=true\"\nimport script from \"./AddNewActionCategory.vue?vue&type=script&lang=ts\"\nexport * from \"./AddNewActionCategory.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AddNewActionCategory.vue?vue&type=style&index=0&id=48d6a36a&prod&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 \"48d6a36a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-grow-1 form-group p-3 mb-0\"},[_c('h5',[_vm._v(\"Edit Action\")]),_c('hr',{staticClass:\"border-faint\"}),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"task-category-selection-control\"}},[_vm._v(\"Action category:\")]),_c('div',[_c('vue-select',{staticClass:\"dark\",attrs:{\"name\":\"task-category-selection-control\",\"id\":\"task-category-selection-control\",\"options\":_vm.taskCategories,\"label\":\"title\"},model:{value:(_vm.libraryTaskCategory),callback:function ($$v) {_vm.libraryTaskCategory=$$v},expression:\"libraryTaskCategory\"}})],1)]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"task-type-selection-control\"}},[_vm._v(\"Action type:\")]),_c('div',[_c('vue-select',{staticClass:\"dark\",attrs:{\"name\":\"task-type-selection-control\",\"id\":\"task-type-selection-control\",\"options\":_vm.enabledActionTypes,\"label\":\"title\"},model:{value:(_vm.libraryTaskType),callback:function ($$v) {_vm.libraryTaskType=$$v},expression:\"libraryTaskType\"}})],1)]),_c('div',{staticClass:\"card shadow-sm p-3\"},[(_vm.taskToEdit.taskTypeID === _vm.TaskTypeIdEnum.MassNotification && _vm.featuresList.Actions.MassNotification)?_c('div',{staticClass:\"form-group flex-grow-1\"},[_c('notification-setup',{on:{\"validate-task\":_vm.onTaskValidated},model:{value:(_vm.taskToEdit),callback:function ($$v) {_vm.taskToEdit=$$v},expression:\"taskToEdit\"}})],1):(_vm.taskToEdit.taskTypeID === _vm.TaskTypeIdEnum.Choices && _vm.featuresList.Actions.Choices)?_c('div',{staticClass:\"flex-grow-1\"},[_c('choices-task-setup',{on:{\"validate-task\":_vm.onTaskValidated},model:{value:(_vm.taskToEdit),callback:function ($$v) {_vm.taskToEdit=$$v},expression:\"taskToEdit\"}})],1):(_vm.taskToEdit.taskTypeID === _vm.TaskTypeIdEnum.CallContact && _vm.featuresList.Actions.CallContacts)?_c('div',{staticClass:\"flex-grow-1\"},[_c('call-contact-setup',{on:{\"validate-task\":_vm.onTaskValidated},model:{value:(_vm.taskToEdit),callback:function ($$v) {_vm.taskToEdit=$$v},expression:\"taskToEdit\"}})],1):(_vm.taskToEdit.taskTypeID === _vm.TaskTypeIdEnum.ControlRelay && _vm.featuresList.Actions.Control)?_c('div',{staticClass:\"flex-grow-1\"},[_c('control-task',{on:{\"validate-task\":_vm.onTaskValidated},model:{value:(_vm.taskToEdit),callback:function ($$v) {_vm.taskToEdit=$$v},expression:\"taskToEdit\"}})],1):(_vm.taskToEdit.taskTypeID === _vm.TaskTypeIdEnum.EventOutcome && _vm.featuresList.Actions.EventOutcome)?_c('div',{staticClass:\"flex-grow-1\"},[_c('event-outcome-task',{attrs:{\"editing\":\"\",\"task\":_vm.taskToEdit},on:{\"validate-task\":_vm.onTaskValidated},model:{value:(_vm.taskToEdit),callback:function ($$v) {_vm.taskToEdit=$$v},expression:\"taskToEdit\"}})],1):_c(_vm.taskToRender,{tag:\"component\",attrs:{\"editing\":true,\"task\":_vm.taskToEdit},on:{\"validate-task\":_vm.onTaskValidated}})],1),_c('div',{staticClass:\"flex-grow-0 mt-2\"},[_c('div',{staticClass:\"btn-group\"},[_c('button',{staticClass:\"btn btn-primary\",attrs:{\"disabled\":!_vm.isValid},on:{\"click\":function($event){return _vm.onSaveClicked()}}},[_vm._v(\"Save\")]),_c('a',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(\"Cancel\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue, Watch, Emit } from \"vue-property-decorator\";\nimport { Getter, namespace } from \"vuex-class\";\nimport vSelect from \"vue-select\"; // @ref https://sagalbot.github.io/vue-select/\nimport UrlInputLine from \"@/components/UrlInputLine.vue\";\nimport NotificationSetup from \"@/components/tasks/notification/NotificationSetup.vue\";\nimport NewTask from \"@/models/new-task.model\";\nimport { TaskType, TaskCategory } from \"@/store/tasks/types\";\nimport BasicTask from \"@/components/tasks/task-types/BasicTask.vue\";\nimport InputTask from \"@/components/tasks/task-types/InputTask.vue\";\nimport YesNoTask from \"@/components/tasks/task-types/YesNoTask.vue\";\nimport UrlTask from \"@/components/tasks/task-types/UrlTask.vue\";\nimport SitRepTask from \"@/components/tasks/task-types/SitRepTask.vue\";\nimport CCureTask from \"@/components/tasks/task-types/CCureTask.vue\";\nimport AuditTask from \"@/components/tasks/task-types/AuditTask.vue\";\nimport ChoicesTaskSetup from \"@/components/tasks/choices/ChoicesTaskSetup.vue\";\nimport CallContactSetup from \"@/components/tasks/call-contact/CallContactSetup.vue\";\nimport DynamicDataList from \"@/components/tasks/task-types/DynamicDataList.vue\"\nimport ControlTask from \"@/components/tasks/control/ControlSetup.vue\";\nimport EventOutcomeTask from \"@/components/tasks/task-types/EventOutcomeTask.vue\";\n\nimport { FeaturesList } from \"@/store/types\";\nimport TaskTypeIds from \"@/types/sv-data/enums/TaskTypeIds\";\n\nconst Tasks = namespace(\"tasks\");\n\n@Component({\n\tcomponents: {\n\t\t\"vue-select\": vSelect,\n\t\t\"url-input\": UrlInputLine,\n\t\t\"notification-setup\": NotificationSetup,\n\t\t\"basic-task\": BasicTask,\n\t\t\"input-task\": InputTask,\n\t\t\"yes-no-task\": YesNoTask,\n\t\t\"url-task\": UrlTask,\n\t\t\"sitrep-task\": SitRepTask,\n\t\t\"ccure-task\": CCureTask,\n\t\t\"audit-task\": AuditTask,\n\t\t\"choices-task-setup\": ChoicesTaskSetup,\n\t\t\"call-contact-setup\": CallContactSetup,\n\t\t\"dynamic-data-list\": DynamicDataList,\n\t\t\"control-task\": ControlTask,\n\t\t\"event-outcome-task\": EventOutcomeTask\n\t}\n})\nexport default class EditLibraryTask extends Vue {\n\tpublic hasValidationErrors: boolean = false;\n\tpublic showErrorAnimation: boolean = false; // @otodo move to app-wide setting\n\tpublic taskTypeSelectPlaceholder: any = null;\n\n\tpublic placeholderText = {\n\t\t1: \"Action text\",\n\t\t2: \"Specify question that will require user input to complete action\",\n\t\t3: \"Specify question that will require user to choose Yes/No to complete action\"\n\t};\n\n\t@Tasks.Getter(\"getEnabledActionTypes\") enabledActionTypes: TaskType[];\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\n\tprivate TaskTypeIdEnum: typeof TaskTypeIds = TaskTypeIds;\n\n\t@Prop(Array)\n\tpublic taskTypes!: TaskType[];\n\n\t@Prop(Array)\n\tpublic taskCategories!: TaskCategory[];\n\n\t@Prop({\n\t\tdefault: () => ({\n\t\t\ttaskID: {\n\t\t\t\t// non-editable\n\t\t\t\ttype: Number,\n\t\t\t\trequired: true\n\t\t\t},\n\t\t\ttaskText: {\n\t\t\t\ttype: String,\n\t\t\t\trequired: true\n\t\t\t},\n\t\t\ttaskTypeID: {\n\t\t\t\ttype: Number,\n\t\t\t\trequired: false\n\t\t\t},\n\t\t\ttaskCategoryID: {\n\t\t\t\ttype: Number,\n\t\t\t\trequired: true\n\t\t\t}\n\t\t})\n\t})\n\tpublic readonly libraryTask!: any;\n\n\tpublic taskToRender: string = \"basic-task\";\n\tpublic isTaskValid: boolean = false;\n\n\t/**\n\t * A clone of the libraryTask passed in from the parent. Changes are applied to the clone when editing.\n\t */\n\tprivate taskToEdit = {\n\t\ttaskID: 0,\n\t\ttaskText: \"\",\n\t\ttaskTypeID: 0,\n\t\ttaskCategoryID: 0,\n\t\ttaskData: null\n\t};\n\n\t// === Watchers === //\n\t@Watch(\"libraryTask\")\n\tpublic onLibraryTaskChanged() {\n\t\tthis.taskToEdit = { ...this.libraryTask };\n\t}\n\n\t@Watch(\"libraryTask.title\")\n\tpublic onTitleChanged(title: string) {\n\t\tthis.hasValidationErrors = !title.length;\n\t}\n\n\t// === Computed Props === //\n\tpublic get libraryTaskCategory() {\n\t\treturn this.taskCategories.filter(\n\t\t\tcategory =>\n\t\t\t\tcategory.taskCategoryID === this.taskToEdit.taskCategoryID\n\t\t)[0];\n\t}\n\n\tpublic set libraryTaskCategory(taskCategory: TaskCategory) {\n\t\tthis.taskToEdit.taskCategoryID = taskCategory.taskCategoryID || 1;\n\t}\n\n\tpublic get libraryTaskType() {\n\t\treturn this.enabledActionTypes.filter(\n\t\t\ttype => type.taskTypeID === this.taskToEdit.taskTypeID\n\t\t)[0];\n\t}\n\n\tpublic set libraryTaskType(taskType: TaskType) {\n\t\tif (taskType === null || taskType === undefined) return;\n\n\t\tthis.taskToEdit.taskTypeID = taskType.taskTypeID || 1;\n\n\t\tthis.loadCorrectComponent();\n\t}\n\n\tpublic get isValid() {\n\t\tlet isValid = this.isTaskValid;\n\n\t\tswitch (this.taskToEdit.taskTypeID) {\n\t\t\tcase 4: // no validation for dispatch type\n\t\t\t\tisValid = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tisValid = this.isTaskValid;\n\t\t}\n\n\t\t// taskType defaults to basic\n\t\tif (!this.taskToEdit.taskTypeID) {\n\t\t\tthis.taskToEdit.taskTypeID = 1;\n\t\t}\n\n\t\treturn isValid;\n\t}\n\n\t// === Methods === //\n\tpublic mounted() {\n\t\tthis.onLibraryTaskChanged();\n\t\tthis.loadCorrectComponent();\n\t}\n\n\tpublic loadCorrectComponent() {\n\t\tlet task = this.enabledActionTypes.find(\n\t\t\t(taskType: any) =>\n\t\t\t\ttaskType.taskTypeID === this.libraryTask.taskTypeID &&\n\t\t\t\ttaskType.componentFile !== null\n\t\t);\n\n\t\t// Avoid property undefined errors if a task was not returned.\n\t\tif (task !== undefined) {\n\t\t\tthis.taskToRender = task.componentFile;\n\t\t}\n\t}\n\n\t// === Events === //\n\t@Emit(\"save\")\n\tpublic save() {\n\t\treturn this.taskToEdit;\n\t}\n\n\t@Emit(\"cancel\")\n\tpublic cancel() {\n\t\treturn this.taskToEdit.taskID;\n\t}\n\n\t// Called when a task component verifies that it is valid.\n\tpublic onTaskValidated(valid: boolean) {\n\t\tthis.isTaskValid = valid;\n\t}\n\n\tpublic onSaveClicked() {\n\t\tif (this.isValid) {\n\t\t\tthis.confirmUrlTaskHasTitle();\n\t\t\tthis.save();\n\t\t}\n\t}\n\n\tprivate confirmUrlTaskHasTitle() {\n\t\tif (this.taskToEdit.taskTypeID === TaskTypeIds.URL) {\n\t\t\tif (this.taskToEdit.taskText === \"\") {\n\t\t\t\tthis.taskToEdit.taskText = this.taskToEdit.taskData;\n\t\t\t\tthis.taskToEdit.taskData = null;\n\t\t\t}\n\t\t}\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditLibraryTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditLibraryTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EditLibraryTask.vue?vue&type=template&id=11940e04\"\nimport script from \"./EditLibraryTask.vue?vue&type=script&lang=ts\"\nexport * from \"./EditLibraryTask.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.triggerAction)?_c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"0\",\"bottom\":\"0\",\"left\":\"0\",\"right\":\"0\"}},[_c('div',{staticClass:\"modal-backdrop fade show\",staticStyle:{\"position\":\"absolute\"}}),_c('div',{staticClass:\"card\",staticStyle:{\"position\":\"absolute\",\"top\":\"30px\",\"bottom\":\"50px\",\"left\":\"30px\",\"right\":\"30px\",\"z-index\":\"1050\"}},[_c('div',{staticClass:\"card-header\"},[_vm._v(\"Trigger Actions from \\\"\"+_vm._s(_vm.triggerAction.taskText)+\"\\\"\")]),_c('div',{staticClass:\"card-body\"},[_c('p',[_vm._v(\"Set actions to be added when this action is completed.\")]),_c('VuePerfectScrollbar',{ref:\"ps\",staticClass:\"flex-grow-1 flex-shrink-1 \",staticStyle:{\"padding-bottom\":\"10px\"}},[_c('ul',{staticClass:\"list-group\",staticStyle:{\"min-height\":\"35vh\",\"max-height\":\"65vh\"},attrs:{\"id\":\"triggers\"}},_vm._l((_vm.triggerAction.trigger),function(action){return _c('li',{key:action.triggerTaskID,staticClass:\"list-group-item\"},[_c('div',{staticClass:\"list-group-item-body\"},[_vm._v(\" \"+_vm._s(action.trigger.triggerTaskID)+\" \"),_c('span',{staticClass:\"task-title\",staticStyle:{\"min-width\":\"50%\"}},[_vm._v(_vm._s(_vm._f(\"parseTaskText\")(action.trigger)))]),_c('div',{staticClass:\"form-group flex-grow-0\",staticStyle:{\"max-width\":\"50%\",\"min-width\":\"25%\",\"margin-bottom\":\"0\"}},[(_vm.triggerAction.taskTypeID != 3)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(action.resultCondition),expression:\"action.resultCondition\"}],staticClass:\"form-control flex-grow-1 flex-shrink-1\",attrs:{\"type\":\"text\",\"placeholder\":\"Condition\"},domProps:{\"value\":(action.resultCondition)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(action, \"resultCondition\", $event.target.value)}}}):_vm._e(),(_vm.triggerAction.taskTypeID == 3)?_c('vue-select',{staticClass:\"dark flex-grow-1\",staticStyle:{\"width\":\"100%\"},attrs:{\"placeholder\":\"Condition\",\"options\":_vm.yesNoOptions},model:{value:(action.resultCondition),callback:function ($$v) {_vm.$set(action, \"resultCondition\", $$v)},expression:\"action.resultCondition\"}}):_vm._e()],1),_c('div',{staticClass:\"custom-control custom-checkbox checkbox-pad-right\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(action.required),expression:\"action.required\"}],staticClass:\"custom-checkbox custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":'customCheckSID' + action.triggerTaskID},domProps:{\"checked\":Array.isArray(action.required)?_vm._i(action.required,null)>-1:(action.required)},on:{\"change\":function($event){var $$a=action.required,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(action, \"required\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(action, \"required\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(action, \"required\", $$c)}}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":'customCheckSID' + action.triggerTaskID}},[_vm._v(\"Required\")])]),_c('span',{staticClass:\"task-type-label\"},[_vm._v(_vm._s(_vm.taskTypesByTitle[action.trigger.taskTypeID] || 'Unknown'))]),_c('div',{staticClass:\"action-category-controls flex-grow-0\",on:{\"click\":function($event){return _vm.removeTrigger(action)}}},[_c('i',{staticClass:\"fa fa-trash flex-grow-1\",attrs:{\"aria-hidden\":\"true\",\"title\":\"Remove from triggered actions\"}})])])])}),0)])],1),_c('div',{staticClass:\"card-footer modal-footer\"},[(_vm.error)?_c('div',{staticClass:\"alert alert-primary\"},[_vm._v(_vm._s(_vm.error))]):_vm._e(),_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"id\":\"confirmBtn\",\"data-dismiss\":\"modal\"},on:{\"click\":function($event){return _vm.save()}}},[_vm._v(\"OK\")]),_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"data-dismiss\":\"modal\",\"id\":\"cancelBtn\"},on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(\"Cancel\")])])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {\n\tComponent,\n\tVue,\n} from \"vue-property-decorator\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport vSelect from \"vue-select\"; // @ref https://sagalbot.github.io/vue-select/\nimport draggable from \"vuedraggable\";\nimport { namespace } from \"vuex-class\";\nimport { parseTaskText } from \"@/filters\";\nimport api from \"../../services/api.service\";\nimport { cloneDeep } from \"lodash\";\n\nconst Tasks = namespace(\"tasks\");\n\n@Component({\n\tcomponents: {\n\t\tVuePerfectScrollbar,\n\t\tdraggable,\n\t\t\"vue-select\": vSelect\n\t},\n\tfilters: {\n\t\tparseTaskText\n\t}\n})\nexport default class TaskTriggerDialog extends Vue {\n\terror: string = null;\n\t@Tasks.Getter(\"getTaskTypes\") taskTypes: any; // fetched automatically by initApp action\n\t@Tasks.Getter(\"getEditTriggerAction\") triggerAction: any;\n\t@Tasks.Mutation setEditTriggerAction: any;\n\t@Tasks.Getter(\"getTaskLibraryByCategoryID\") taskLibraryByCategoryID: any;\n\n\tget taskTypesByTitle(): any {\n\t\tlet taskTypes: any = {};\n\t\tthis.taskTypes.forEach(type => {\n\t\t\ttaskTypes[type.taskTypeID] = type.title;\n\t\t});\n\t\treturn taskTypes;\n\t}\n\n\tyesNoOptions: any[] = [\"Yes\", \"No\"];\n\ttaskList: any[] = [];\n\n\tremoveTrigger(trigger) {\n\t\tlet triggerIndex = this.triggerAction.trigger.indexOf(trigger);\n\t\tthis.triggerAction.trigger.splice(triggerIndex, 1);\n\t}\n\n\tasync save() {\n\t\tvar triggersPayload = cloneDeep(this.triggerAction.trigger);\n\t\ttriggersPayload = triggersPayload.map(trigger => {\n\t\t\tvar taskTrigger = {...trigger, taskData: JSON.stringify(trigger.taskData)}\n\t\t\tif (taskTrigger.trigger)\n\t\t\t{\n\t\t\t\ttaskTrigger.trigger.taskData = null;\n\t\t\t}\n\t\t\treturn taskTrigger;\n\t\t});\n\n\t\tawait api.triggeredTasksSave(\n\t\t\tthis.triggerAction.taskID,\n\t\t\ttriggersPayload\n\t\t);\n\t\tthis.triggerAction.triggeredTaskCount = this.triggerAction.trigger.length;\n\n\t\tthis.setEditTriggerAction(null);\n\t}\n\n\tcancel() {\n\t\tthis.setEditTriggerAction(null);\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TaskTriggerDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TaskTriggerDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TaskTriggerDialog.vue?vue&type=template&id=533f2491&scoped=true\"\nimport script from \"./TaskTriggerDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./TaskTriggerDialog.vue?vue&type=script&lang=ts\"\nimport style0 from \"./TaskTriggerDialog.vue?vue&type=style&index=0&id=533f2491&prod&scoped=true&lang=scss\"\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 \"533f2491\",\n null\n \n)\n\nexport default component.exports","\n\timport { Component, Watch, Vue } from \"vue-property-decorator\";\n\timport { Getter, Action, namespace } from \"vuex-class\";\n\t// UI third-party widgets\n\timport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\n\timport draggable from \"vuedraggable\"; // @ref https://github.com/SortableJS/Sortable#options\n\timport vSelect from \"vue-select\"; // @ref https://sagalbot.github.io/vue-select/\n\t// models\n\timport NewTask from \"@/models/new-task.model\";\n\timport TaskCategory from \"@/models/task-category.model\";\n\n\t// UI components\n\timport AddNewTask from \"@/components/tasks/AddNewTask.vue\";\n\timport EditActionPlan from \"@/components/tasks/EditActionPlan.vue\";\n\timport AddNewActionCategory from \"@/components/tasks/AddNewActionCategory.vue\";\n\timport EditLibraryTask from \"@/components/tasks/EditLibraryTask.vue\";\n\timport NavHeader from \"@/components/NavHeader.vue\";\n\timport TaskTriggerDialog from \"@/components/tasks/TaskTriggerDialog.vue\";\n\n\timport { parseTaskText } from \"@/filters\";\n\timport api from \"@/services/api.service\";\n\timport { ActionPlanTask, ScriptCategoryLink, CategoryReorderRequest } from \"@/store/tasks/types\";\n\n\timport { orderBy } from \"lodash\";\n\timport TaskTypeIds from '@/types/sv-data/enums/TaskTypeIds';\n\n\t// @note\n\t// Entity called \"Action\" used to be called \"Task\", and is still\n\t// Called \"Task\" in API and UI internals. For display purposes\n\t// \"tasks\" are \"actions\", please use the new terminology\n\t// whenver doing new work, sorry for the confusion.\n\n\t// === We need to start addressing the below, as the whole tasks/actions system is woefully poor === //\n\t// @techdebt @refactor break up into sub-components\n\t// @techdebt @techdebt @techdebt - we *really* need to look into the action page as a whole and re-organise it,\n\t// 1,400 lines is far too long for an individual component at this point\n\t// @techdebt merge AddNewTask and EditLibraryTask to a single component\n\t// @techdebt we need more types for the action plan edit page\n\n\tconst Tasks = namespace(\"tasks\");\n\n\t@Component({\n\t\tcomponents: {\n\t\t\tdraggable,\n\t\t\t\"vue-select\": vSelect,\n\t\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\n\t\t\t\"add-new-task\": AddNewTask,\n\t\t\t\"edit-library-task\": EditLibraryTask,\n\t\t\t\"edit-action-plan\": EditActionPlan,\n\t\t\t\"add-new-action-category\": AddNewActionCategory,\n\t\t\t\"task-trigger-dialog\": TaskTriggerDialog,\n\t\t\t\"nav-header\": NavHeader\n\t\t},\n\t\tfilters: {\n\t\t\tparseTaskText\n\t\t}\n\t})\n\texport default class ConfigureTasks extends Vue {\n\t\t$refs: {\n\t\t\tconfirmTaskDeletionModal: any;\n\t\t\t\"task-library-container\": HTMLElement;\n\t\t};\n\n\t\t// === Vuex Bindings === //\n\t\t@Getter getUserTenantGroupId: number;\n\t\t@Getter getPermissions: any;\n\t\t@Getter getFeature: (featureList: string[]) => boolean;\n\t\t@Action logout: () => void;\n\n\t\t@Tasks.Getter(\"getTaskLibrary\") taskLibrary: any;\n\t\t@Tasks.Getter(\"getTaskTypes\") taskTypes: any; // fetched automatically by initApp action\n\t\t@Tasks.Getter(\"getTaskCategories\") taskCategories: any;\n\t\t@Tasks.Getter(\"getTaskLibraryByCategoryID\") taskLibraryByCategoryID: {\n\t\t\t[categoryId: number]: any[];\n\t\t};\n\t\t@Tasks.Getter(\"getActionPlans\") actionPlans: any;\n\n\t\t@Tasks.Getter(\"getEditTriggerAction\") triggerAction: any;\n\n\t\t@Tasks.Getter(\"getScriptCategoryLinks\") scriptCategoryLinks: ScriptCategoryLink[];\n\t\t@Tasks.Mutation setEditTriggerAction: any;\n\t\t@Tasks.Action loadEditTriggerAction: any;\n\n\t\t@Tasks.Action fetchActionPlans: any;\n\t\t@Tasks.Action createActionPlan: any;\n\t\t@Tasks.Action updateActionPlan: any;\n\t\t@Tasks.Action deleteActionPlan: any;\n\n\t\t@Tasks.Action fetchActionLibrary: any;\n\t\t@Tasks.Action addTaskToLibrary: any;\n\t\t@Tasks.Action updateTask: any;\n\t\t@Tasks.Action deleteTaskFromLibrary: any;\n\n\t\t@Tasks.Action fetchTaskTypes: any;\n\t\t@Tasks.Action fetchTaskCategories: any;\n\t\t@Tasks.Action createTaskCategory: any;\n\t\t@Tasks.Action updateTaskCategory: any;\n\t\t@Tasks.Action deleteTaskCategory: any;\n\n\t\t@Tasks.Action addActionToPlan: any;\n\t\t@Tasks.Action bulkAddActionsToPlan: any;\n\t\t@Tasks.Action removeActionFromPlan: any;\n\t\t@Tasks.Action updateActionForPlan: any;\n\n\t\t@Tasks.Action updateActionOrderInPlan: (payload: any) => Promise;\n\n\t\t@Tasks.Action getScriptCategoryLinks: () => Promise;\n\t\t@Tasks.Action updateCategoryOrderInScript: (payload: CategoryReorderRequest) => Promise;\n\n\t\t// === Properties === //\n\t\tpublic editingActionPlan: boolean = false;\n\t\tpublic actionPlanCollectionTypeahead: any = \"\";\n\t\tpublic editedActionCategoryID: number | boolean = false;\n\t\tpublic editedActionCategoryTitle = \"\";\n\t\tpublic isValidEditedActionCategoryTitle = true;\n\t\tpublic showEditedActionCategoryTitleErrorAnimation = false;\n\n\t\t// Adding new Action to Action library\n\t\tpublic addingNewTaskStates: { [taskCategoryId: number]: boolean } = {};\n\t\tpublic editingTaskStates: { [taskId: number]: boolean } = {};\n\t\tpublic reorderTaskStates: { [scriptId: number]: boolean } = {};\n\n\t\tpublic deleteLibraryActionID = null;\n\t\tprivate confirmTaskDeletionModalDetails: any = {\n\t\t\ttaskText: \"\",\n\t\t\ttaskCategoryTitle: \"\",\n\t\t\ttaskData: {}\n\t\t};\n\n\t\tpublic deleteActionCategoryID = null;\n\n\t\tpublic actionPlanActions: any[] = [];\n\t\tpublic actionsInActionPlansByCategory: any = {};\n\t\tpublic actionCategoriesExpandedState: any = {\n\t\t\t\"col-l\": {},\n\t\t\t\"col-r\": {}\n\t\t};\n\t\t// Adding new Action Category\n\t\tpublic addingNewActionCategory: boolean = false;\n\t\tpublic newActionCategory = { Title: \"\" };\n\n\t\tpublic unEditedActionPlan: any = {};\n\t\tpublic deletingActionPlan = false;\n\n\t\tpublic reorderingItem = false;\n\t\tprivate taskTypeIds = TaskTypeIds;\n\n\t\tpublic scriptCategoryLinksBeingUpdated: boolean = false;\n\n\t\t// Used to allow the scriptCategoryLinks api call to be made and state to update before reordering is allowed\n\t\tprivate readonly scriptCategoryLinksUpdateTimeout: number = 5000;\n\n\t\t// Keep track of how many timeouts we have, to only set the value if we have no active timeouts\n\t\tprivate activeScriptCategoryLinksUpdateTimeouts: number = 0;\n\n\t\t// Used to set the draggable animation settings for tasks and categories\n\t\tprivate readonly draggableAnimation: number = 200;\n\n\t\t// === Computed Properties === //\n\n\t\t// @refactor add store getter to get task types in the form of\n\t\t// typeID => typeTitle as well as existing getter - both are used throught\n\t\tpublic get taskTypesByTitle() {\n\t\t\tlet taskTypes: any = {};\n\t\t\tthis.taskTypes.forEach(type => {\n\t\t\t\ttaskTypes[type.taskTypeID] = type.title;\n\t\t\t});\n\t\t\treturn taskTypes;\n\t\t}\n\n\t\t// Provides a representation of action categories by ID for easy access,\n\t\t// decorates each category with total number of actions beloning to that category,\n\t\t// used when grouping actions by category within action plans (right-hand-column),\n\t\tpublic get decoratedActionCategoriesInCurrentScript() {\n\t\t\t// find all action categories that should be shown for current action plan\n\t\t\tlet relevantCategoryIDs = [];\n\t\t\tif (this.actionPlanCollectionTypeahead.scriptID) {\n\t\t\t\trelevantCategoryIDs = this.taskLibrary\n\t\t\t\t\t.filter(t => this.actionPlanCollectionTypeahead.scriptID in t.scripts)\n\t\t\t\t\t.map(t => t.taskCategoryID)\n\t\t\t\t\t.filter((value, index, self) => self.indexOf(value) === index);\n\t\t\t}\n\n\t\t\tconst _: any = {};\n\t\t\tthis.taskCategories.forEach(cat => {\n\t\t\t\tif (relevantCategoryIDs.includes(cat.taskCategoryID)) {\n\t\t\t\t\t_[cat.taskCategoryID] = {\n\t\t\t\t\t\ttitle: cat.title,\n\t\t\t\t\t\ttotalNumActions: this.taskLibrary.filter(t => t.taskCategoryID === cat.taskCategoryID).length,\n\t\t\t\t\t\tnumActionsAddedToScript: this.taskLibrary.filter(t => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\tt.taskCategoryID === cat.taskCategoryID &&\n\t\t\t\t\t\t\t\tthis.actionPlanCollectionTypeahead.scriptID in t.scripts\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}).length\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn _;\n\t\t}\n\n\t\t/**\n\t\t * Returns a method which can be used to check if a given task is the one being edited\n\t\t */\n\t\tpublic get isEditedTask() {\n\t\t\treturn task => this.editingTaskStates[task.taskID];\n\t\t}\n\n\t\t/**\n\t\t * Sets the options to be used when dragging re-orerable tasks around in the\n\t\t * Action Plan interface.\n\t\t */\n\t\tpublic get actionPlanDragOptions() {\n\t\t\treturn {\n\t\t\t\tanimation: this.draggableAnimation,\n\t\t\t\tdisabled: false,\n\t\t\t\tghostClass: \"action-plan-item-ghost\"\n\t\t\t};\n\t\t}\n\n\t\t/**\n\t\t * Sets the options to be used when dragging re-orerable categories around in the\n\t\t * Action Plan interface.\n\t\t */\n\t\tpublic get actionPlanCategoryDragOptions() {\n\t\t\treturn {\n\t\t\t\tanimation: this.draggableAnimation,\n\t\t\t\tghostClass: \"action-plan-category-item-ghost\"\n\t\t\t};\n\t\t}\n\n\t\t// === Watchers === //\n\t\t@Watch(\"actionPlans\", { immediate: true, deep: true })\n\t\tpublic onTaskCollectionsChanged(value: any, oldValue: any) {\n\t\t\tthis.initActionsInActionPlansByCategoryPlaceholder();\n\t\t\tthis.initActionCategoriesExpandedState();\n\t\t}\n\n\t\t@Watch(\"taskLibrary\", { immediate: true, deep: true })\n\t\tpublic async onTaskLibraryChanged(value: any, oldValue: any) {\n\t\t\tthis.initActionsInActionPlansByCategoryPlaceholder();\n\t\t\tthis.initActionCategoriesExpandedState();\n\n\t\t\t// If the ReOrderCategories feature is enabled, update the ScriptCategoryLinks with every task library change\n\t\t\tif (this.isReorderCategoriesEnabled){\n\t\t\t\tawait this.waitForScriptCategoryLinks();\n\t\t\t}\n\t\t}\n\n\t\t@Watch(\"actionPlanCollectionTypeahead\")\n\t\tpublic onActionPlanSelected(value: any, oldValue: any) {\n\t\t\tthis.editingActionPlan = false;\n\t\t}\n\n\t\tpublic async waitForScriptCategoryLinks(): Promise{\n\t\t\tawait this.getScriptCategoryLinks();\n\n\t\t\tthis.activeScriptCategoryLinksUpdateTimeouts++;\n\n\t\t\t// Wait for the ScriptCategoryLink state to be ready to allow updating\n\t\t\tsetTimeout(()=> {\n\t\t\t\tthis.activeScriptCategoryLinksUpdateTimeouts--;\n\n\t\t\t\t// Only update the scriptCategoryLinksBeingUpdated if we have no other active timeouts\n\t\t\t\tif (this.activeScriptCategoryLinksUpdateTimeouts === 0){\n\t\t\t\t\tthis.scriptCategoryLinksBeingUpdated = false;\n\t\t\t\t}\n\t\t\t}, this.scriptCategoryLinksUpdateTimeout);\n\t\t}\n\n\t\t// === Methods === //\n\t\tpublic async created() {\n\t\t\tawait this.fetchTaskCategories();\n\t\t\tawait this.fetchActionPlans();\n\t\t\tawait this.fetchActionLibrary();\n\n\t\t\tif (this.actionPlans.length > 0) {\n\t\t\t\tthis.actionPlanCollectionTypeahead = this.actionPlans[0];\n\t\t\t}\n\n\t\t\tif (this.isReorderCategoriesEnabled){\n\t\t\t\tawait this.getScriptCategoryLinks();\n\t\t\t}\n\t\t}\n\n\t\tpublic async mounted() {\n\t\t\tawait this.fetchTaskTypes();\n\t\t\tthis.initActionsInActionPlansByCategoryPlaceholder();\n\t\t\tthis.setEditTriggerAction(null);\n\t\t}\n\n\t\tpublic logoutUser() {\n\t\t\tapi.logout().then(() => {\n\t\t\t\tthis.logout();\n\t\t\t});\n\t\t}\n\n\t\tprivate initActionsInActionPlansByCategoryPlaceholder() {\n\t\t\tthis.actionsInActionPlansByCategory = {};\n\t\t\t// 1st level nesting by action plan ID\n\t\t\tthis.actionPlans.forEach(p => {\n\t\t\t\t// 2nd level nesting by action category id\n\t\t\t\tthis.taskLibrary\n\t\t\t\t\t.filter(task => p.scriptID in task.scripts)\n\t\t\t\t\t.map(task => task.taskCategoryID)\n\t\t\t\t\t.filter((value, index, self) => self.indexOf(value) === index)\n\t\t\t\t\t.forEach(categoryID => {\n\t\t\t\t\t\tif (!this.actionsInActionPlansByCategory[p.scriptID]) {\n\t\t\t\t\t\t\tthis.actionsInActionPlansByCategory[p.scriptID] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.actionsInActionPlansByCategory[p.scriptID][categoryID] = this.taskLibrary.filter(\n\t\t\t\t\t\t\ttask => p.scriptID in task.scripts && task.taskCategoryID === categoryID\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t});\n\n\t\t\t// hacky, forcing component refresh because draggable task collection area fails to\n\t\t\t// re-render tasks in collection on drag end automatically.\n\t\t\t// console.log('this.actionsInActionPlansByCategory: ', this.actionsInActionPlansByCategory);\n\t\t\tthis.$forceUpdate();\n\t\t}\n\n\t\tprivate get shouldCollapseByDefault(): boolean {\n\t\t\treturn this.getFeature([\"Actions\", \"CollapseOnSetup\"]);\n\t\t}\n\n\t\tprivate get isReorderCategoriesEnabled(): boolean {\n\t\t\treturn this.getFeature([\"Actions\", \"ReorderCategories\"]);\n\t\t}\n\n\t\tprivate get areScriptCategoryLinksLoaded(): boolean {\n\t\t\tif (this.isReorderCategoriesEnabled === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.isReorderCategoriesEnabled && this.scriptCategoryLinks && this.scriptCategoryLinks.length > 0;\n\t\t}\n\n\t\t// @todo make it reactive based on this.taskCategories, this.actionPlans and this.taskLibrary\n\t\tprivate initActionCategoriesExpandedState() {\n\t\t\t// left column\n\t\t\tthis.taskCategories.forEach(taskCat => {\n\t\t\t\t// preserve previous state if present\n\t\t\t\tif (this.actionCategoriesExpandedState[\"col-l\"][taskCat.taskCategoryID] === undefined) {\n\t\t\t\t\t// set expanded by default\n\t\t\t\t\tVue.set(this.actionCategoriesExpandedState[\"col-l\"], taskCat.taskCategoryID.toString(), !this.shouldCollapseByDefault);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// right column: for each script, than for each category in that script\n\t\t\tthis.actionPlans.forEach(actionPlan => {\n\t\t\t\tif (!this.actionCategoriesExpandedState[\"col-r\"][actionPlan.scriptID]) {\n\t\t\t\t\tthis.actionCategoriesExpandedState[\"col-r\"][actionPlan.scriptID] = {};\n\t\t\t\t}\n\n\t\t\t\t// check if this action plan contains any action categories\n\t\t\t\tif (this.actionsInActionPlansByCategory[actionPlan.scriptID]) {\n\t\t\t\t\tObject.entries(this.actionsInActionPlansByCategory[actionPlan.scriptID]).forEach(\n\t\t\t\t\t\t([categoryID, value]) => {\n\t\t\t\t\t\t\t// preserve previous state if present\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!this.actionCategoriesExpandedState[\"col-r\"][actionPlan.scriptID][categoryID] != undefined\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t// set expanded by default\n\t\t\t\t\t\t\t\tthis.actionCategoriesExpandedState[\"col-r\"][actionPlan.scriptID][categoryID] = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// === Adding/Editing Tasks ===\n\t\tpublic onAddNewTaskToLibrary(taskCategoryID: number) {\n\t\t\tVue.set(this.addingNewTaskStates, taskCategoryID, true);\n\t\t}\n\n\t\tpublic onSaveNewTask(newTask: NewTask) {\n\t\t\tVue.set(this.addingNewTaskStates, newTask.taskCategoryID, false);\n\t\t\tthis.addTaskToLibrary(newTask);\n\t\t}\n\n\t\tpublic onCancelNewTask(taskCategoryId: number) {\n\t\t\tVue.set(this.addingNewTaskStates, taskCategoryId, false);\n\t\t}\n\n\t\tpublic onTaskEdit(taskToEdit: NewTask) {\n\t\t\tVue.set(this.editingTaskStates, taskToEdit.taskID, true);\n\t\t}\n\n\t\tpublic onUpdateLibraryTask(updatedTask: any) {\n\t\t\tVue.set(this.editingTaskStates, updatedTask.taskID, false);\n\t\t\tthis.updateTask(updatedTask);\n\t\t}\n\n\t\tpublic onCancelEditingLibraryTask(taskId: number) {\n\t\t\tVue.set(this.editingTaskStates, taskId, false);\n\t\t}\n\n\t\t// === Deleting Actions === //\n\t\tpublic onDeleteActionFromLibrary(task: any, taskCategoryTitle: string) {\n\t\t\tthis.confirmTaskDeletionModalDetails = {\n\t\t\t\t...task,\n\t\t\t\ttaskCategoryTitle\n\t\t\t};\n\n\t\t\tthis.deleteLibraryActionID = task.taskID;\n\t\t\tthis.$refs.confirmTaskDeletionModal.show();\n\t\t}\n\n\t\tpublic cancelDeletingActionFromLibrary() {\n\t\t\tthis.deleteLibraryActionID = null;\n\t\t}\n\n\t\tpublic doDeleteActionFromLibrary() {\n\t\t\tif (this.isReorderCategoriesEnabled === true){\n\t\t\t\tthis.scriptCategoryLinksBeingUpdated = true;\n\t\t\t}\n\n\t\t\tthis.deleteTaskFromLibrary(this.deleteLibraryActionID);\n\t\t\tthis.deleteLibraryActionID = null;\n\t\t}\n\n\t\t// === Adding/Editing Action Plans === //\n\t\tpublic onAddNewActionPlan() {\n\t\t\tthis.actionPlanCollectionTypeahead = {\n\t\t\t\tisNew: true,\n\t\t\t\tedit: true\n\t\t\t};\n\t\t}\n\n\t\tpublic async onSaveActionPlan() {\n\t\t\tif(this.actionPlanCollectionTypeahead) {\n\t\t\t\tthis.actionPlanCollectionTypeahead.groupID = this.getUserTenantGroupId\n\t\t\t}\n\t\t\tif (this.actionPlanCollectionTypeahead.isNew) {\n\t\t\t\tlet actionPlanID = await this.createActionPlan(this.actionPlanCollectionTypeahead);\n\n\t\t\t\tthis.actionPlanCollectionTypeahead.scriptID = actionPlanID;\n\t\t\t\tthis.actionPlanCollectionTypeahead.isNew = false;\n\t\t\t} else {\n\t\t\t\tthis.updateActionPlan(this.actionPlanCollectionTypeahead);\n\t\t\t}\n\t\t\tthis.actionPlanCollectionTypeahead.edit = false;\n\t\t}\n\n\t\tpublic onEditActionPlan() {\n\t\t\tthis.unEditedActionPlan = {\n\t\t\t\t...this.actionPlanCollectionTypeahead\n\t\t\t};\n\n\t\t\tVue.set(this.actionPlanCollectionTypeahead, \"edit\", true);\n\t\t}\n\n\t\tpublic onCancelEditingActionPlan() {\n\t\t\tif (this.actionPlanCollectionTypeahead) {\n\t\t\t\tif (this.actionPlanCollectionTypeahead.isNew) {\n\t\t\t\t\tthis.actionPlanCollectionTypeahead = null;\n\t\t\t\t} else {\n\t\t\t\t\tthis.actionPlanCollectionTypeahead = this.unEditedActionPlan;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// === Deleting Action Plans === //\n\t\tpublic async doDeleteActionPlan() {\n\t\t\tawait this.deleteActionPlan(this.actionPlanCollectionTypeahead.scriptID);\n\n\t\t\tthis.deletingActionPlan = false;\n\t\t\tif (this.actionPlans.length > 1) {\n\t\t\t\tthis.actionPlanCollectionTypeahead = this.actionPlans[1];\n\t\t\t} else {\n\t\t\t\tthis.actionPlanCollectionTypeahead = null;\n\t\t\t}\n\t\t}\n\n\t\t// === Adding/Editing Action Categories === //\n\t\tpublic onAddNewActionCategory() {\n\t\t\tthis.addingNewActionCategory = true;\n\t\t}\n\n\t\tpublic onCancelAddingNewActionCategory() {\n\t\t\tthis.addingNewActionCategory = false;\n\t\t}\n\n\t\tpublic async onSaveActionCategory() {\n\t\t\tthis.addingNewActionCategory = false;\n\t\t\tawait this.createTaskCategory(this.newActionCategory);\n\t\t\tthis.newActionCategory = { Title: \"\" };\n\n\t\t\tthis.initActionCategoriesExpandedState();\n\t\t}\n\n\t\tpublic onActionCategoryEdit(taskCategory: TaskCategory) {\n\t\t\tthis.editedActionCategoryID = taskCategory[\"taskCategoryID\"];\n\t\t\tthis.editedActionCategoryTitle = taskCategory[\"title\"];\n\t\t}\n\n\t\tpublic onCancelEditingActionCategory() {\n\t\t\tthis.editedActionCategoryID = false;\n\t\t\tthis.editedActionCategoryTitle = \"\";\n\t\t}\n\n\t\tpublic onUpdateActionCategory(taskCategory) {\n\t\t\t// validation\n\t\t\tif (this.editedActionCategoryTitle.length === 0) {\n\t\t\t\tthis.isValidEditedActionCategoryTitle = false;\n\t\t\t\tthis.showEditedActionCategoryTitleErrorAnimation = true;\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.showEditedActionCategoryTitleErrorAnimation = false;\n\t\t\t\t}, this.$config.ANIMATION_DURATION);\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tthis.isValidEditedActionCategoryTitle = true;\n\t\t\t}\n\n\t\t\tconst payload = {\n\t\t\t\t...taskCategory,\n\t\t\t\ttitle: this.editedActionCategoryTitle\n\t\t\t};\n\t\t\tthis.updateTaskCategory(payload);\n\t\t\tthis.editedActionCategoryID = false;\n\t\t\tthis.editedActionCategoryTitle = \"\";\n\t\t}\n\n\t\t// === Deleting Action Categories === //\n\t\tpublic onDeleteActionCategory(category: any) {\n\t\t\tthis.deleteActionCategoryID = category.taskCategoryID;\n\t\t}\n\n\t\tpublic cancelDeletingActionCategory() {\n\t\t\tthis.deleteActionCategoryID = null;\n\t\t}\n\n\t\tpublic doDeleteActionCategory() {\n\t\t\tif (this.isReorderCategoriesEnabled === true){\n\t\t\t\tthis.scriptCategoryLinksBeingUpdated = true;\n\t\t\t}\n\n\t\t\tthis.deleteTaskCategory(this.deleteActionCategoryID);\n\t\t\tthis.deleteActionCategoryID = null;\n\t\t}\n\n\t\tpublic onRemoveTaskFromCollection(task: any) {\n\t\t\tif (this.isReorderCategoriesEnabled === true){\n\t\t\t\tthis.scriptCategoryLinksBeingUpdated = true;\n\t\t\t}\n\n\t\t\tconst payload = {\n\t\t\t\tScriptID: this.actionPlanCollectionTypeahead.scriptID,\n\t\t\t\tTaskID: task.taskID,\n\t\t\t\tRequired: true // @tbc what's this?\n\t\t\t};\n\t\t\tthis.removeActionFromPlan(payload);\n\t\t}\n\n\t\t/**\n\t\t * Toggles a task's required status.\n\t\t */\n\t\tpublic toggleRequiredTask(evt: any, action: ActionPlanTask, scriptId: number) {\n\t\t\tconst payload = {\n\t\t\t\tscriptID: scriptId,\n\t\t\t\ttaskID: action.taskID,\n\t\t\t\torder: action.scripts[scriptId].order,\n\t\t\t\trequired: !action.scripts[scriptId].required\n\t\t\t};\n\n\t\t\tthis.updateActionForPlan(payload);\n\t\t}\n\n\t\t// === Expanding/Collapsing Task Categories === //\n\t\tpublic collapseCategory(actionCategoryID, col: string) {\n\t\t\tif (col === \"col-l\") {\n\t\t\t\tthis.actionCategoriesExpandedState[col][actionCategoryID] = false;\n\t\t\t}\n\t\t\tif (col === \"col-r\") {\n\t\t\t\tthis.actionCategoriesExpandedState[col][this.actionPlanCollectionTypeahead.scriptID][\n\t\t\t\t\tactionCategoryID\n\t\t\t\t] = false;\n\t\t\t}\n\t\t\t// @ref https://stackoverflow.com/questions/32106155/can-you-force-vue-js-to-reload-re-render\n\t\t\tthis.$forceUpdate();\n\t\t}\n\n\t\tpublic expandCategory(actionCategoryID, col: string) {\n\t\t\tif (col === \"col-l\") {\n\t\t\t\tthis.actionCategoriesExpandedState[col][actionCategoryID] = true;\n\t\t\t} else if (col === \"col-r\") {\n\t\t\t\tthis.actionCategoriesExpandedState[col][this.actionPlanCollectionTypeahead.scriptID][\n\t\t\t\t\tactionCategoryID\n\t\t\t\t] = true;\n\t\t\t}\n\n\t\t\t// @ref https://stackoverflow.com/questions/32106155/can-you-force-vue-js-to-reload-re-render\n\t\t\tthis.$forceUpdate();\n\t\t}\n\n\t\t// === Trigger Action Handlers === //\n\t\tpublic async setTriggerAction(action: any) {\n\t\t\tthis.loadEditTriggerAction(action);\n\t\t}\n\n\t\t// @techdebt - this method is unused, but looks like something that was forgotten about?\n\t\tpublic clearTriggerAction() {\n\t\t\tthis.setEditTriggerAction(null);\n\t\t}\n\n\t\t// === Action Plan Editing Helpers === //\n\t\tpublic inActionPlan(action: any) {\n\t\t\tif (this.triggerAction) {\n\t\t\t\treturn this.triggerAction.trigger.some(trigger => trigger.triggerTaskID == action.taskID);\n\t\t\t} else {\n\t\t\t\treturn action.scripts[this.actionPlanCollectionTypeahead.scriptID] != null;\n\t\t\t}\n\t\t}\n\n\t\tpublic categoryInActionPlan(taskCategory: any) {\n\t\t\tif (!this.taskLibraryByCategoryID[taskCategory.taskCategoryID]) return false;\n\n\t\t\tif (this.triggerAction) {\n\t\t\t\treturn this.taskLibraryByCategoryID[taskCategory.taskCategoryID].every(action => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\tthis.triggerAction.taskID == action.taskID ||\n\t\t\t\t\t\tthis.triggerAction.trigger.some(trigger => trigger.triggerTaskID == action.taskID)\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\treturn this.taskLibraryByCategoryID[taskCategory.taskCategoryID].every(action => {\n\t\t\t\t\treturn action.scripts[this.actionPlanCollectionTypeahead.scriptID] != null;\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tpublic async toggleInActionPlan(action: any): Promise {\n\t\t\tif (this.isReorderCategoriesEnabled === true){\n\t\t\t\tthis.scriptCategoryLinksBeingUpdated = true;\n\t\t\t}\n\n\t\t\tif (this.triggerAction && action.taskID != this.triggerAction.taskID) {\n\t\t\t\tif (this.inActionPlan(action)) {\n\t\t\t\t\tlet triggerIndex = this.triggerAction.trigger.findIndex(\n\t\t\t\t\t\ttrigger => trigger.triggerTaskID == action.taskID\n\t\t\t\t\t);\n\t\t\t\t\tif (triggerIndex > -1) this.triggerAction.trigger.splice(triggerIndex, 1);\n\t\t\t\t} else {\n\t\t\t\t\tthis.triggerAction.trigger.push({\n\t\t\t\t\t\ttaskID: this.triggerAction.taskID,\n\t\t\t\t\t\ttrigger: action,\n\t\t\t\t\t\tresultCondition: null,\n\t\t\t\t\t\trequired: false,\n\t\t\t\t\t\ttriggerTaskID: action.taskID\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (this.actionPlanCollectionTypeahead) {\n\t\t\t\tif (this.inActionPlan(action)) {\n\t\t\t\t\t//onRemoveTaskFromCollection(action)\n\t\t\t\t\tlet planCategory = this.actionsInActionPlansByCategory[this.actionPlanCollectionTypeahead.scriptID][\n\t\t\t\t\t\taction.taskCategoryID\n\t\t\t\t\t];\n\t\t\t\t\tlet removePlanActions = planCategory.filter(planAction => planAction.taskID == action.taskID);\n\n\t\t\t\t\tremovePlanActions.forEach(removeAction => this.onRemoveTaskFromCollection(removeAction));\n\t\t\t\t} else {\n\t\t\t\t\tconst payload = {\n\t\t\t\t\t\tScriptID: this.actionPlanCollectionTypeahead.scriptID,\n\t\t\t\t\t\tTaskID: action.taskID,\n\t\t\t\t\t\tRequired: true\n\t\t\t\t\t};\n\t\t\t\t\tawait this.addActionToPlan(payload);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tpublic async toggleCategoryInActionPlan(taskCategory): Promise {\n\t\t\tif (this.isReorderCategoriesEnabled === true){\n\t\t\t\tthis.scriptCategoryLinksBeingUpdated = true;\n\t\t\t}\n\n\t\t\tif (!this.taskLibraryByCategoryID[taskCategory.taskCategoryID]) return;\n\n\t\t\tif (this.triggerAction) {\n\t\t\t\tif (this.categoryInActionPlan(taskCategory)) {\n\t\t\t\t\tthis.taskLibraryByCategoryID[taskCategory.taskCategoryID].forEach(action => {\n\t\t\t\t\t\tlet triggerIndex = this.triggerAction.trigger.findIndex(\n\t\t\t\t\t\t\ttrigger => trigger.triggerTaskID == action.taskID\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (triggerIndex > -1) this.triggerAction.trigger.splice(triggerIndex, 1);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.taskLibraryByCategoryID[taskCategory.taskCategoryID].forEach(action => {\n\t\t\t\t\t\tif (!this.inActionPlan(action) && action.taskID != this.triggerAction.taskID) {\n\t\t\t\t\t\t\tthis.triggerAction.trigger.push({\n\t\t\t\t\t\t\t\ttaskID: this.triggerAction.taskID,\n\t\t\t\t\t\t\t\ttrigger: action,\n\t\t\t\t\t\t\t\tresultCondition: null,\n\t\t\t\t\t\t\t\trequired: false,\n\t\t\t\t\t\t\t\ttriggerTaskID: action.taskID\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (this.actionPlanCollectionTypeahead) {\n\t\t\t\tif (this.categoryInActionPlan(taskCategory)) {\n\t\t\t\t\tthis.taskLibraryByCategoryID[taskCategory.taskCategoryID].forEach(action => {\n\t\t\t\t\t\tlet planCategory = this.actionsInActionPlansByCategory[this.actionPlanCollectionTypeahead.scriptID][\n\t\t\t\t\t\t\taction.taskCategoryID\n\t\t\t\t\t\t];\n\t\t\t\t\t\tlet removePlanActions = planCategory.filter(planAction => planAction.taskID == action.taskID);\n\n\t\t\t\t\t\tremovePlanActions.forEach(removeAction => this.onRemoveTaskFromCollection(removeAction));\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tfor (const action of this.taskLibraryByCategoryID[taskCategory.taskCategoryID]){\n\t\t\t\t\t\tconst payload = {\n\t\t\t\t\t\t\tScriptID: this.actionPlanCollectionTypeahead.scriptID,\n\t\t\t\t\t\t\tTaskID: action.taskID,\n\t\t\t\t\t\t\tRequired: true\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.addActionToPlan(payload);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// === Task Library Re-Ordering Handlers === //\n\n\t\t/**\n\t\t * Returns the tasks for a given action plan (script) and category,\n\t\t * ordered by their order in the ScriptTasks table.\n\t\t */\n\t\tpublic orderedActionPlanByCategory(scriptId: number, categoryId: number) {\n\t\t\tlet unorderedActions = this.actionsInActionPlansByCategory[scriptId][categoryId] as ActionPlanTask[];\n\n\t\t\tlet orderedActions = orderBy(unorderedActions, action => action.scripts[scriptId].order, [\"asc\"]);\n\n\t\t\treturn orderedActions;\n\t\t}\n\n\t\t/**\n\t\t * Handler for when the action plan ordering is changed.\n\t\t * Computes the new order for the given script ID and pushes that to the server.\n\t\t */\n\t\tpublic async onActionPlanOrderChanged(\n\t\t\treorderEvent: {\n\t\t\t\tmoved: {\n\t\t\t\t\telement: ActionPlanTask;\n\t\t\t\t\tnewIndex: number;\n\t\t\t\t\toldIndex: number;\n\t\t\t\t};\n\t\t\t},\n\t\t\tscriptId: number,\n\t\t\ttaskCategoryId: string\n\t\t) {\n\t\t\t// Build a payload from the information we've been passed by Vue-Draggable\n\t\t\tvar reOrderPayload = {\n\t\t\t\tscriptId,\n\t\t\t\ttaskCategoryId: parseInt(taskCategoryId),\n\t\t\t\ttaskId: reorderEvent.moved.element.taskID,\n\t\t\t\tnewOrder: reorderEvent.moved.newIndex + 1,\n\t\t\t\tpreviousOrder: reorderEvent.moved.oldIndex + 1\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tawait this.updateActionOrderInPlan(reOrderPayload);\n\t\t\t} catch (err) {\n\t\t\t\tthis.$notify({\n\t\t\t\t\ttype: \"error\",\n\t\t\t\t\ttitle: \"Action Setup\",\n\t\t\t\t\ttext:\n\t\t\t\t\t\t\"Unable to update the order of this task - please try again later, or contact support if the problem persists.\"\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Helper method to accomodate changes to list elements when an item is removed.\n\t\t * Due to the heavily nested markup, when an element leaves the action plan list it needs\n\t\t * it's position to be set to absolute. The below code sets the elements position to what it\n\t\t * was prior to it leaving the list, so we can achieve a smooth exit animation instead of having\n\t\t * the element jump to the top-left of the parent container (as pos: aboslute does).\n\t\t */\n\t\tpublic beforeActionPlanListItemLeave(el: HTMLElement) {\n\t\t\tconst { marginLeft, marginTop, width, height } = window.getComputedStyle(el);\n\t\t\tel.style.left = `${el.offsetLeft - parseFloat(marginLeft)}px`;\n\t\t\tel.style.top = `${el.offsetTop - parseFloat(marginTop)}px`;\n\t\t\tel.style.width = width;\n\t\t\tel.style.height = height;\n\t\t}\n\n\t\tpublic getScriptCategoryLinkById(scriptId: number, taskCategoryId: number): ScriptCategoryLink {\n\t\t\tconst scriptCategoryLinks: ScriptCategoryLink[] = this.scriptCategoryLinks;\n\n\t\t\tlet scriptCategoryLink = null;\n\n\t\t\tif (scriptCategoryLinks){\n\t\t\t\tscriptCategoryLink = scriptCategoryLinks.find(x=>x.scriptId === scriptId && x.taskCategoryId === taskCategoryId);\n\t\t\t}\n\n\t\t\treturn scriptCategoryLink;\n\t\t}\n\n\t\tpublic actionPlanCategories(scriptId: number): ScriptCategoryLink[]{\n\t\t\tlet actionPlanTasksInScript = this.actionsInActionPlansByCategory[scriptId];\n\n\t\t\tlet unorderedActionPlanTasks = orderBy(actionPlanTasksInScript, category=>category.taskCategoryID, [\"asc\"])\n\n\t\t\tlet unorderedCategories : ActionPlanTask[] = [].concat.apply([], unorderedActionPlanTasks);\n\n\t\t\tlet orderedCategories : ScriptCategoryLink[] = [];\n\n\t\t\tif (!this.isReorderCategoriesEnabled) {\n\t\t\t\tlet unorderedCategoryLinks : ScriptCategoryLink[] = [];\n\n\t\t\t\tunorderedCategories.forEach((actionPlanTask :ActionPlanTask) => {\n\t\t\t\t\tif (!unorderedCategoryLinks.some(x=> x.taskCategoryId === actionPlanTask.taskCategoryID)){\n\t\t\t\t\t\tlet unorderedCategoryToAdd: ScriptCategoryLink = {\n\t\t\t\t\t\t\tscriptId: scriptId,\n\t\t\t\t\t\t\ttaskCategoryId: actionPlanTask.taskCategoryID,\n\t\t\t\t\t\t\torder: null\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tunorderedCategoryLinks.push(unorderedCategoryToAdd)\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\treturn unorderedCategoryLinks;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tunorderedCategories.forEach((actionPlanTask :ActionPlanTask) => {\n\t\t\t\t\t// Default ScriptCategoryLinkOrder to use if the ScriptCategoryLink cannot be obtained\n\t\t\t\t\tconst scriptCategoryLinkOrderDefault = 100;\n\n\t\t\t\t\tlet scriptCategoryLink = this.getScriptCategoryLinkById(scriptId, actionPlanTask.taskCategoryID);\n\t\t\t\t\tlet scriptCategoryLinkOrder: number = scriptCategoryLinkOrderDefault;\n\n\t\t\t\t\tif (scriptCategoryLink != null){\n\t\t\t\t\t\tscriptCategoryLinkOrder = scriptCategoryLink.order\n\t\t\t\t\t}\n\n\t\t\t\t\tactionPlanTask.scriptCategoryLink = scriptCategoryLink;\n\n\t\t\t\t\tif (!orderedCategories.some(x=> x.taskCategoryId === actionPlanTask.taskCategoryID)){\n\t\t\t\t\t\tlet orderedCategoryToAdd: ScriptCategoryLink = {\n\t\t\t\t\t\t\tscriptId: scriptId,\n\t\t\t\t\t\t\ttaskCategoryId: actionPlanTask.taskCategoryID,\n\t\t\t\t\t\t\torder: scriptCategoryLinkOrder\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\torderedCategories.push(orderedCategoryToAdd)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\n\t\t\treturn orderBy(orderedCategories, category=>category.order, [\"asc\"]);\n\t\t}\n\n\t\tpublic async onActionPlanCategoryOrderChanged(\n\t\t\treorderEvent: {\n moved: {\n element: any,\n newIndex: number;\n oldIndex: number;\n };\n },\n scriptId: number,\n ): Promise {\n\t\t\t// If the ScriptCategoryLinks are being updated, don't send request\n\t\t\tif (this.scriptCategoryLinksBeingUpdated === true){\n\t\t\t\treturn;\n\t\t\t}\n\n // Build a payload from the information we've been passed by Vue-Draggable\n var reOrderPayload: CategoryReorderRequest = {\n scriptId,\n taskCategoryId: reorderEvent.moved.element.taskCategoryId,\n newOrder: reorderEvent.moved.newIndex + 1,\n previousOrder: reorderEvent.moved.oldIndex + 1\n };\n\n\t\t\ttry {\n\t\t\t\tthis.scriptCategoryLinksBeingUpdated = true;\n\n\t\t\t\t// Get the script category links to make sure they are updated before making the update request\n\t\t\t\tawait this.getScriptCategoryLinks();\n\n await this.updateCategoryOrderInScript(reOrderPayload);\n } catch (err) {\n this.$notify({\n type: \"error\",\n title: \"Action Setup\",\n text:\n \"Unable to update the order of this category - please try again later, or contact support if the problem persists.\"\n });\n }\n\t\t\tthis.scriptCategoryLinksBeingUpdated = false;\n }\n\t}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfigureTasks.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfigureTasks.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ConfigureTasks.vue?vue&type=template&id=449580c6&scoped=true\"\nimport script from \"./ConfigureTasks.vue?vue&type=script&lang=ts\"\nexport * from \"./ConfigureTasks.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ConfigureTasks.vue?vue&type=style&index=0&id=449580c6&prod&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 \"449580c6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-grow-1 d-flex align-items-center justify-content-center\"},[_c('router-link',{attrs:{\"to\":\"/admin/configure-action-plans\"}},[_c('div',{staticClass:\"nugget\"},[_vm._v(\"Configure Action Plans\")])]),_c('router-link',{attrs:{\"to\":\"/admin/dispatch-setup\"}},[_c('div',{staticClass:\"nugget\"},[_vm._v(\"Setup Patrol Zones and Dispatch Guards\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from 'vue-property-decorator';\r\n\r\n@Component({\r\n components: {\r\n },\r\n})\r\nexport default class SiteAdminLanding extends Vue {\r\n \r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteAdminLanding.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SiteAdminLanding.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SiteAdminLanding.vue?vue&type=template&id=5b29d7a6&scoped=true\"\nimport script from \"./SiteAdminLanding.vue?vue&type=script&lang=ts\"\nexport * from \"./SiteAdminLanding.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SiteAdminLanding.vue?vue&type=style&index=0&id=5b29d7a6&prod&scoped=true&lang=scss\"\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 \"5b29d7a6\",\n null\n \n)\n\nexport default component.exports","var render = function () {\nvar this$1 = this;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isMobileEnabled)?_c('div',{staticClass:\"disable-double-tap-zoom\",attrs:{\"id\":\"mobileCore\"}},[_c('div',{attrs:{\"id\":\"centerPanel\",\"data-cy\":\"mobile-content\"}},[(_vm.isFieldOpsUserOnline)?_c('mobile-map',{staticClass:\"map\",attrs:{\"zoomLevel\":17,\"prototype\":_vm.isPrototype,\"inApp\":_vm.isLoadedInApp(),\"liveGpsTrack\":_vm.liveGpsTrack}}):_vm._e(),_c('notification-bar'),_c('nav',{staticClass:\"navbar remove-box-shadow\",attrs:{\"id\":\"mobileNav\"}},[(!_vm.mobileFeatures.isSOSEnabled)?_c('div'):_vm._e(),(_vm.mobileFeatures.isSOSEnabled)?_c('ul',{staticClass:\"nav\"},[_c('li',[_c('a',{staticClass:\"btn btn-secondary btn-circle btn-xl btn-sos\",on:{\"click\":_vm.sos}},[_c('i',{staticClass:\"fas fa-exclamation-triangle\"})])]),_vm._m(0)]):_vm._e(),_c('mobile-menu',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLeftSideBarOpen && !_vm.isRightSideBarOpen),expression:\"!isLeftSideBarOpen && !isRightSideBarOpen\"}]})],1),(this.mainComponentName !== 'none')?_c('div',{staticClass:\"contents\",attrs:{\"id\":\"contents\"}},[_c('transition',{attrs:{\"name\":\"slide\"}},[_c(_vm.mainComponentName,{tag:\"component\",class:{ 'left-open': _vm.isLeftSideBarOpen, 'right-open': _vm.isRightSideBarOpen }})],1)],1):_vm._e(),(!_vm.isFieldOpsUserOnline)?_c('div',[_vm._m(1)]):_vm._e(),_c('div',{staticClass:\"footer\",class:{ 'left-open': _vm.isLeftSideBarOpen, 'right-open': _vm.isRightSideBarOpen },attrs:{\"id\":\"footer\"}},[_c('div',{staticClass:\"footer-row mb-1\"},[(_vm.isMobileUsersEnabled && _vm.isFieldOpsUserOnline)?_c('chat',{staticClass:\"chat\",attrs:{\"eventShareId\":_vm.activeEvent ? _vm.activeEvent.eventID : null}}):_vm._e()],1),_c('div',{staticClass:\"footer-row\"},[_c('button',{staticClass:\"btn btn-secondary btn-circle btn-l ripple footer-btn\",staticStyle:{\"margin-top\":\"auto\"},attrs:{\"data-cy\":\"left-side-bar\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.toggleLeftSideBarVisibility()}}},[_c('i',{staticClass:\"fas fa-user\"})]),(_vm.mobileFeatures.isLostModeEnabled)?_c('button',{staticClass:\"btn btn-secondary btn-circle btn-xl footer-btn\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.userLost}},[_c('i',{staticClass:\"fas fa-compass\"})]):_vm._e(),(_vm.isTriggerMobileRaiseEnabled && _vm.isFieldOpsUserOnline)?_c('button',{staticClass:\"btn btn-secondary btn-circle btn-xl footer-btn\",attrs:{\"data-cy\":\"mobile-raise-button\",\"type\":\"button\"},on:{\"click\":function () {\n\t\t\t\t\t\t\t\tthis$1.isRaiseSelectVisible = true;\n\t\t\t\t\t\t\t}}},[_c('i',{staticClass:\"fas fa-bell\"})]):_vm._e(),_c('div',{staticClass:\"vertial-column\"},[(_vm.isManualLocationEnabled && _vm.isFieldOpsUserOnline)?_c('button',{staticClass:\"btn btn-secondary btn-circle btn-l ripple mb-1 footer-btn\",staticStyle:{\"float\":\"right!important\",\"pointer-events\":\"auto\"},attrs:{\"data-cy\":\"set-location\",\"type\":\"button\"},on:{\"click\":function($event){_vm.liveGpsTrack = !_vm.liveGpsTrack}}},[_c('i',{staticClass:\"fas\",class:{'fa-location' : _vm.liveGpsTrack , 'fa-location-slash' : !_vm.liveGpsTrack}})]):_vm._e(),(_vm.mobileMode != 'none' && _vm.showFieldOps)?_c('button',{staticClass:\"btn btn-secondary btn-circle btn-l ripple footer-btn\",attrs:{\"data-cy\":\"right-side-bar\",\"type\":\"button\"},on:{\"click\":function($event){return _vm.toggleRightSideBarVisibility()}}},[_c('i',{staticClass:\"fas fa-list\"}),(_vm.isMobileEventShareEnabled)?_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.eventShareCount > 0),expression:\"eventShareCount > 0\"}],staticClass:\"badge badge-pill badge-danger notification-badge\"},[_vm._v(\" \"+_vm._s(_vm.eventShareCount)+\" \")]):_vm._e()]):_vm._e()])])]),(_vm.isRaiseSelectVisible)?_c('raise-select',{staticClass:\"raise-select h-100\",on:{\"close\":function () {\n\t\t\t\t\t\t_vm.isRaiseSelectVisible = false;\n\t\t\t\t\t},\"raise\":_vm.onRaise}}):_vm._e(),(_vm.isRaiseActivityLogVisible)?_c('raise-activity-log',{staticClass:\"raise-card h-100\",attrs:{\"raise\":_vm.raise},on:{\"cancel\":function () {\n\t\t\t\t\t\t_vm.isRaiseActivityLogVisible = false;\n\t\t\t\t\t},\"submit\":function () {\n\t\t\t\t\t\t_vm.isRaiseActivityLogVisible = false;\n\t\t\t\t\t\t_vm.isRaiseSelectVisible = false;\n\t\t\t\t\t}}}):_vm._e(),(_vm.isRaiseManualRaiseVisible)?_c('raise-manual-raise',{staticClass:\"raise-card h-100\",attrs:{\"raise\":_vm.raise},on:{\"cancel\":function () {\n\t\t\t\t\t\t_vm.isRaiseManualRaiseVisible = false;\n\t\t\t\t\t},\"confirm\":function (eventId) {\n\t\t\t\t\t\t_vm.isRaiseSelectVisible = false;\n\t\t\t\t\t\t_vm.isRaiseManualRaiseVisible = false;\n\t\t\t\t\t\t_vm.isManualRaiseDetailsVisible = true;\n\t\t\t\t\t\t_vm.createdEventId = eventId;\n\t\t\t\t\t}}}):_vm._e(),(_vm.isManualRaiseDetailsVisible)?_c('manual-raise-details',{staticClass:\"raise-card h-100\",attrs:{\"raise\":_vm.raise,\"eventId\":_vm.createdEventId},on:{\"close\":function () {\n\t\t\t\t\t\t_vm.isManualRaiseDetailsVisible = false;\n\t\t\t\t\t}}}):_vm._e()],1),_c('left-side-bar',{on:{\"logout\":_vm.logoutUser}}),(_vm.isFieldOpsUserOnline)?_c('right-side-bar'):_vm._e()],1):(!_vm.isLoading)?_c('div',[(!_vm.isSubscriptionValid)?_c('span',{attrs:{\"data-cy\":\"subscription-invalid-message\"}},[_vm._v(\"Subscription is invalid, the Mobile application has been disabled.\")]):_vm._e()]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',[_c('a',{staticClass:\"btn btn-secondary btn-circle btn-xl\",attrs:{\"href\":\"tel:+44 (0) 1792 278 110\",\"alt\":\"Call security center\"}},[_c('i',{staticClass:\"fas fa-phone\"})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticStyle:{\"text-align\":\"center\"}},[_c('p',{staticStyle:{\"font-size\":\"xx-large\",\"font-weight\":\"500\"}},[_vm._v(\" You are currently Offline \")]),_c('p',{staticStyle:{\"font-style\":\"italic\",\"padding-left\":\"20px\",\"padding-right\":\"20px\"}},[_vm._v(\" All field operations functionality is unavailable until user is online. Please set yourself to online via the user menu. \")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'full-screen-card': _vm.showMenu, 'menu' : _vm.showMenu }},[_c('a',{staticClass:\"btn btn-secondary btn-circle btn-l sureview-logo-holder\",attrs:{\"data-cy\":\"button-menu\"},on:{\"click\":function($event){return _vm.triggerMenu()}}},[_c('img',{staticClass:\"sureview-logo\",attrs:{\"src\":\"images/branding/sureview_logo_icon_white.svg\",\"alt\":\"SureView Mobile Menu\"}})]),_c('div',{staticClass:\"card\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showMenu),expression:\"showMenu\"}],staticClass:\"card-body\"},[(_vm.liveCameraEnabled)?_c('div',{staticClass:\"row row-margin\"},[(_vm.liveCameraEnabled)?_c('div',{staticClass:\"col text-center\",class:{ 'disabled' : !_vm.canViewCameras },attrs:{\"data-cy\":\"menu-live\"}},[_c('button',{staticClass:\"btn btn-circle btn-xl\",attrs:{\"data-cy\":\"button-live\",\"disabled\":!_vm.canViewCameras},on:{\"click\":function($event){return _vm.modeClicked('live');}}},[_c('i',{staticClass:\"far fa-cctv\"})]),_c('p',[_vm._v(\"Live Cameras\")])]):_vm._e()]):_vm._e(),(_vm.fieldOpsEnabled)?_c('div',{staticClass:\"row row-margin\"},[_c('div',{staticClass:\"col text-center\",attrs:{\"data-cy\":\"menu-dispatch\"}},[_c('button',{staticClass:\"btn btn-circle btn-xl\",on:{\"click\":function($event){return _vm.modeClicked('fieldOps')}}},[_c('i',{staticClass:\"fas fa-walking\"})]),_c('p',[_vm._v(\"Field Ops\")])])]):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { UserPermissions } from '@/store/types';\r\n\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component\r\nexport default class MobileMenu extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Mobile.Mutation setMobileMode: (mode: string) => void;\r\n\t@Mobile.Action loadUserPermissions: () => Promise;\r\n\t@Mobile.State(state => state.UserPermissions) permissions: {\r\n\t\t[permissionName: string]: number | undefined;\r\n\t};\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n\tprivate showMenu: boolean = false;\r\n\r\n\tprivate get fieldOpsEnabled(){\r\n\t\treturn this.getFeature([\"Mobile\", \"FieldOps\"]) && (this.getPermissions.canViewFieldOps || this.getPermissions.canEditFieldOps);\r\n\t}\r\n\r\n\tprivate get canViewCameras() {\r\n\t\treturn this.permissions && this.permissions.hasOwnProperty(\"canViewCameras\") && this.permissions[\"canViewCameras\"]\r\n\t\t&& this.liveCameraEnabled;\r\n\t}\r\n\r\n\tprivate get liveCameraEnabled() {\r\n\t\treturn this.getFeature([\"Mobile\", \"Live\"]);\r\n\t}\r\n\r\n\tasync mounted() {\r\n\t\tawait this.loadUserPermissions();\r\n\t\t// This sets the order of what is loaded first, if they have permission\r\n\t\tif (this.fieldOpsEnabled) {\r\n\t\t\tthis.setMobileMode(\"fieldOps\")\r\n\t\t} else {\r\n\t\t\tthis.setMobileMode(\"none\");\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async modeClicked(mode: string) {\r\n\t\tthis.setMobileMode(mode);\r\n\t\tthis.showMenu = false;\r\n\t}\r\n\r\n\tprivate triggerMenu(){\r\n\t\tif(!this.liveCameraEnabled){\r\n\t\t\tthis.showMenu = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.showMenu = !this.showMenu;\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileMenu.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileMenu.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MobileMenu.vue?vue&type=template&id=5f203246&scoped=true\"\nimport script from \"./MobileMenu.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileMenu.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MobileMenu.vue?vue&type=style&index=0&id=5f203246&prod&scoped=true&lang=scss\"\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 \"5f203246\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"enhanced-map-wrapper\",attrs:{\"data-cy\":\"enhanced-map-wrapper\"}},[_c('div',{ref:\"mappingContainer\",staticClass:\"h-100\",class:_vm.mapType,attrs:{\"id\":\"divMappingContainer\",\"data-cy\":\"mapping-container\"}}),((_vm.navLocInfo && _vm.navLocInfo.duration && _vm.navLocInfo.distance && _vm.navigationLocation && _vm.navigationMode != 'OFF') || _vm.activeEventShareItem)?_c('table',{staticClass:\"navigationBanner w-75\",class:(this.mapStyle === 'dark') ? 'dark' : 'light',on:{\"click\":function($event){_vm.panToCenter(_vm.navigationLocation ? _vm.navigationLocation : (_vm.activeEventShareItem ? _vm.activeEventShareItem.latlng : null))}}},[_c('tbody',[(_vm.activeEventShareItem)?_c('tr',[_c('td',{staticStyle:{\"padding-left\":\"10px\",\"pointer-events\":\"auto\"},attrs:{\"colspan\":\"3\"}},[_c('i',{staticClass:\"fas fa-bell\",staticStyle:{\"padding-right\":\"5px\"}}),_vm._v(\" \"+_vm._s(_vm.activeEventShareItem.eventAreaTitle)+\" \")])]):_vm._e(),(_vm.navLocInfo.distance && _vm.navigationMode != 'OFF')?_c('tr',[_c('td',{staticStyle:{\"width\":\"10%\",\"padding-left\":\"10px\"}},[_vm._v(\" Distance: \")]),_c('td',{staticStyle:{\"width\":\"60%\",\"padding-left\":\"10px\"}},[_vm._v(\" \"+_vm._s(_vm.navLocInfo.distance.text)+\" \")]),_c('td',{attrs:{\"rowspan\":\"2\"}},[_c('i',{staticClass:\"fas fa-2x\",class:_vm.iconClassForNavMode})])]):_vm._e(),(_vm.navLocInfo.duration && _vm.navigationMode != 'OFF')?_c('tr',[_c('td',{staticStyle:{\"padding-left\":\"10px\"}},[_vm._v(\" Duration: \")]),_c('td',{staticStyle:{\"padding-left\":\"10px\"}},[_vm._v(\" \"+_vm._s(_vm.navLocInfo.duration.text)+\" \")])]):_vm._e()])]):_vm._e(),(_vm.selectedAsset)?_c('table',{staticClass:\"selectedAsset\",class:[(_vm.mapStyle === 'dark') ? 'dark' : 'light', { 'mt-5': _vm.activeEventShareItem} ]},[_c('tr',[_c('td',{staticClass:\"selected-asset-close\",on:{\"click\":function($event){return _vm.setSelectedItem(null)}}},[_c('i',{staticClass:\"fa fa-times\"})]),_c('td',{staticClass:\"selected-asset-icon\"},[_c('img',{attrs:{\"src\":_vm.selectedItemImageUrl,\"alt-text\":\"Asset map icon\"},on:{\"click\":_vm.panToAsset}})]),_c('td',{staticClass:\"selected-asset-title\",on:{\"click\":_vm.panToAsset}},[_vm._v(\" \"+_vm._s(_vm.selectedAsset.title)+\" \"),_c('br'),_c('i',{staticStyle:{\"font-size\":\"0.8em\"}},[_vm._v(\" \"+_vm._s(_vm.selectedAsset.status)+\" \"+_vm._s(_vm.selectedAsset.statusNote ? \" - \" + _vm.selectedAsset.statusNote : \"\")+\" \")])])])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Watch, Prop, Mixins} from \"vue-property-decorator\";\r\nimport getScript from \"@/services/insertScript.service\";\r\nimport GoogleMap from \"@/scripts/mapping/map\";\r\nimport { Getter, Mutation, namespace} from \"vuex-class\";\r\nimport { getMapStyle } from \"@/scripts/mapping/mapStyle\";\r\nimport { SVLocation, UserAssetStatus, MobileEventShareInfo } from \"@/store/mobile/types\";\r\nimport {\r\n\tgetEnhancedMapping,\r\n\tIEnhancedMapping,\r\n\tIMarker,\r\n\tILatLng\r\n} from \"@sureview/v2-mapping-saas\";\r\n\r\nimport FieldOpsMixin from \"@/mixins/FieldOpsMixin\";\r\nimport { AssetMapLayerItem } from '@/components/mobile-assets/types';\r\nimport MapLabel from '@/scripts/mapping/mapLabel';\r\nimport api from '@/services/api.service';\r\n\r\nimport { mapRegionMixins } from '@/mixins'\r\nimport mobileApi from \"@/services/api.mobile.service\";\r\n\r\nconst {\r\n\tgetRegionBounds,\r\n\tgetPolygonOptionsForRegion,\r\n} = mapRegionMixins.methods;\r\n\r\nclass LocationBounds {\r\n\tlocation: google.maps.LatLng;\r\n\tviewport: {\r\n\t\tnortheast: google.maps.LatLng;\r\n\t\tsouthwest: google.maps.LatLng;\r\n\t};\r\n}\r\n\r\nclass NavInfo {\r\n\tdistance: {\r\n\t\ttext: string,\r\n\t\tvalue: number // will be meters\r\n\t};\r\n\tduration: {\r\n\t\ttext: string,\r\n\t\tvalue: number // will be in seconds\r\n\t};\r\n}\r\n\r\n// The interval delay for browser location updating on first page load.\r\nconst mountingLocationInterval = 250\r\n// The default interval delay for browser location updating.\r\nconst defaultLocationInterval = 10000\r\n\r\nconst Mobile = namespace(\"mobile\");\r\nconst FieldOpsStore = namespace(\"fieldOps\");\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tnewrelic: any;\r\n\t\tinfoWindow: any;\r\n\t\tclaimUnclaimHandler: any;\r\n\t\tactivateInactivateHandler: any;\r\n\t\tmarkAsArrived: any;\r\n\t\tmarkerClickHandler: any;\r\n\t}\r\n}\r\n\r\n@Component\r\nexport default class MobileMap extends Mixins(FieldOpsMixin) {\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n @Getter(\"getMapKey\") public mapKey: any;\r\n\r\n\t// Map type\r\n\t@Getter getMapType: any;\r\n\t@Getter getHideLabels: any;\r\n\t@Mutation setMapType: any;\r\n\t@Mutation setMapStyle: (style: string) => void;\r\n\t@Getter(\"getMapStyle\") mapStyle: string\r\n\r\n\t// Device location\r\n\t@Mobile.State(\"UserMapOnlineStatus\") userMapOnlineStatus: boolean;\r\n\t@Mobile.State(\"DeviceLocation\") deviceLocation: any;\r\n\t@Mobile.Mutation setDeviceLocation: any;\r\n\t@Mobile.Mutation setIsWatchingLocation: (value: boolean) => void;\r\n\r\n\t//Field Ops\r\n\t@FieldOpsStore.Action(\"loadOnlineAssets\") private loadOnlineAssets: () => void;\r\n\t@FieldOpsStore.Action(\"loadAssetTypes\") private loadAssetTypes: () => void;\r\n\t@FieldOpsStore.Mutation(\"setTimer\") private clearTimer: (timer: null) => void;\r\n\t@FieldOpsStore.Mutation(\"setViewingAssetId\") private setViewingAsset: (assetId: number) => void;\r\n\t@FieldOpsStore.State(\"viewingAssetId\") private viewingAssetId: number;\r\n @Mobile.State(\"UserAssetMapItem\") private userMapStatus: UserAssetStatus;\r\n\r\n\t// Event Share\r\n\t@Mobile.State(\"EventShareItems\") private eventItems: MobileEventShareInfo[];\r\n\t@Mobile.State(\"ActiveEventShareItem\") private activeEventShareItem: MobileEventShareInfo;\r\n @Mobile.State(\"NavigationMode\") private navigationMode: string;\r\n @Mobile.State(\"NavigateToActiveAlarm\") private navigateToActiveAlarm: boolean;\r\n @Mobile.State(\"NavigationLocation\") private navigationLocation: ILatLng;\r\n @Mobile.State(\"FocusedEventID\") private focusedEventID: number;\r\n @Mobile.Mutation(\"setNavigationLocation\") private setNavigationLocation: (location: ILatLng) => void;\r\n @Mobile.Mutation(\"setFocusedEventID\") private setFocusedEvent: (eventID: number) => void;\r\n\t@Mobile.Mutation(\"toggleRightSideBarVisibility\") private toggleRightSideBar: () => void;\r\n\r\n\t//Regions\r\n\t@Mobile.State(\"Regions\") private regions: Map;\r\n\t@Mobile.Mutation(\"setRegions\") private setRegions: (regions: Map) => void;\r\n\r\n\t// Local vars\r\n\tpublic directionsService: google.maps.DirectionsService;\r\n\tpublic directionsDisplay: google.maps.DirectionsRenderer;\r\n\tpublic mappingMarkers: IEnhancedMapping | null = null;\r\n\tpublic enhancedMapping: GoogleMap | null = null;\r\n\tpublic mapType: string = \"\";\r\n\tpublic minPatrolZones: number = 1;\r\n\tprivate mapInitialized: boolean = false;\r\n\tprivate userPreviousLocation: google.maps.LatLng;\r\n\tprivate userPreviousDestination: google.maps.LatLng;\r\n\tprivate deviceMarker: google.maps.Marker;\r\n\tprivate lastUpdatedGuardLocation = Date.now();\r\n\tprivate geolocationWatchNumber: number;\r\n\tpublic userMarker: IMarker | null = null;\r\n\tprivate updateLocationTimeout: number | null;\r\n\tprivate fieldOpsPoll = null;\r\n\tprivate browserLocationUpdater = null;\r\n\tprivate currentLocationInterval = mountingLocationInterval;\r\n\tprivate selectedAsset: AssetMapLayerItem | null = null;\r\n\tprivate eventItemMarkers: Map = new Map();\r\n\tprivate navLocInfo: NavInfo = {\r\n\t\tdistance: null,\r\n\t\tduration: null\r\n\t};\r\n\tprivate MapLabel: any = null;\r\n\r\n\tprivate activeCircle: google.maps.Circle = null;\r\n\r\n\t@Prop(Number)\r\n\tpublic zoomLevel = 17;\r\n\r\n\t@Prop(Boolean)\r\n\tpublic prototype: boolean;\r\n\r\n\t@Prop({type:Boolean, default: false})\r\n\tprivate inApp: boolean;\r\n\r\n\t@Prop({type: Boolean, default: true})\r\n\tpublic liveGpsTrack: boolean;\r\n\r\n\tprivate get isAreaRegionsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Areas\", \"Regions\"]);\r\n\t}\r\n\r\n\tprivate get isMobileUsersEnabled() {\r\n\t\treturn this.getFeature([\"MobileUsers\"]);\r\n\t}\r\n\r\n\tprivate get isMobileFieldOpsEnabled() {\r\n\t\treturn this.getFeature([\"Mobile\", \"FieldOps\"]);\r\n\t}\r\n\r\n\tprivate get selectedItemImageUrl(){\r\n\t\tconst icon = this.getIconForAssetType(this.selectedAsset, true);\r\n\t\treturn icon.url\r\n\t}\r\n\r\n\tprivate panToAsset(){\r\n\t\tif(!this.selectedAsset)\r\n\t\t\treturn;\r\n\r\n\t\tthis.enhancedMapping.map.panTo(this.selectedAsset.latLng);\r\n\t}\r\n\r\n\tprivate get userAssetId() : number | null {\r\n return this.userMapStatus ? this.userMapStatus.assetId : null;\r\n }\r\n\r\n\tprivate get iconClassForNavMode() : string {\r\n\t\tswitch(this.navigationMode){\r\n\t\t\tcase \"WALKING\":\r\n\t\t\t\treturn \"fa-walking\"\r\n\t\t\tcase \"DRIVING\":\r\n\t\t\t\treturn \"fa-car\";\r\n\t\t\tcase \"BICYCLING\":\r\n\t\t\t\treturn \"fa-bicycle\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"\";\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t@Watch(\"activeEventShareItem\")\r\n\tprivate activeEventShareItemWatch(){\r\n\t\tif(!this.activeEventShareItem && this.activeCircle){\r\n\t\t\tthis.activeCircle.setMap(null);\r\n\t\t\tthis.activeCircle = null;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"focusedEventID\")\r\n\tprivate focusedEventIdWatch(){\r\n\t\tif(this.focusedEventID){\r\n\t\t\tconst event = this.eventItems.find(x => x.eventID == this.focusedEventID);\r\n\t\t\tif(event){\r\n\t\t\t\tthis.panToCenter(event.latLng);\r\n\t\t\t\tthis.enhancedMapping.map.setZoom(17);\r\n\t\t\t}\r\n\t\t\tthis.setFocusedEvent(null);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"navigationLocation\")\r\n\tprivate async toggleNavigationToAlarm() {\r\n\t\tif (this.deviceLocation && this.navigationLocation) {\r\n\t\t\tthis.showDirections(this.deviceLocation, this.navigationLocation);\r\n\r\n\t\t\t//Pan the map to the end location then focused back to the user location\r\n\t\t\tthis.panToCenter(this.navigationLocation);\r\n\t\t\tif(this.navigationMode != \"OFF\")\r\n\t\t\t\tsetTimeout(() => this.panToCenter(this.deviceLocation), 2500);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.hideDirections();\r\n\t}\r\n\r\n\t@Watch(\"navigationMode\")\r\n\tprivate async changeNavigationMode() {\r\n\t\tif (this.navigationMode === \"OFF\" || !this.navigationMode) {\r\n\t\t\tthis.hideDirections();\r\n\t\t} else {\r\n\t\t\tthis.showDirections(this.deviceLocation, this.navigationLocation);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"assetAndUsersItems\", { deep: true })\r\n\t@Watch(\"eventItems\", { deep: true })\r\n\tprivate async displayFieldOpsItems() {\r\n\t\tif(!this.enhancedMapping){\r\n\t\t\tsetTimeout(() => this.displayFieldOpsItems(), 50);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst assetMarkersToRemove = new Map(this.assetItemMarkers);\r\n\t\tconst trackedMarkersToRemove = new Map(this.trackedAssetItemMarkers);\r\n\t\tconst eventMarkersToRemove = new Map(this.eventItemMarkers);\r\n\r\n\t\tif(this.assetAndUsersItems){\r\n\t\t\tthis.assetAndUsersItems.forEach(item => {\r\n\t\t\t\ttry \r\n\t\t\t\t{\r\n\t\t\t\t\t//Clear the selected asset if it is no hidden otherwise reset to get any status changes\r\n\t\t\t\t\tif(this.selectedAsset && item.assetId === this.selectedAsset.assetId){\r\n\t\t\t\t\t\tif(item.hideOnMap){\r\n\t\t\t\t\t\t\tthis.selectedAsset = null;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.selectedAsset = {...item};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// If the marker does not have a location, do not try to draw it, or if the marker is the current mobile user\r\n\t\t\t\t\tif (!item.latLng || !item.latLng.lat || !item.latLng.lng || (this.userAssetId && item.assetId === this.userAssetId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(item.isTrackedAsset)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (this.trackedAssetItemMarkers.has(item.trackedAssetId)) {\r\n\t\t\t\t\t\t\ttrackedMarkersToRemove.delete(item.trackedAssetId);\r\n\t\t\t\t\t\t\tconst marker = this.trackedAssetItemMarkers.get(item.trackedAssetId);\r\n\t\t\t\t\t\t\tmarker.moveTo(item.latLng);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconst marker = this.createMarkerForAsset(item, true);\r\n\t\t\t\t\t\t\tthis.trackedAssetItemMarkers.set(item.trackedAssetId, marker);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (this.assetItemMarkers.has(item.assetId) ) {\r\n\t\t\t\t\t\t\tconst marker = this.assetItemMarkers.get(item.assetId);\r\n\t\t\t\t\t\t\tmarker.visible = !item.hideOnMap\r\n\t\t\t\t\t\t\tmarker.moveTo(item.latLng);\r\n\t\t\t\t\t\t\tassetMarkersToRemove.delete(item.assetId);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconst marker = this.createMarkerForAsset(item, !item.hideOnMap);\r\n\t\t\t\t\t\t\tthis.assetItemMarkers.set(item.assetId, marker);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcatch(e){\r\n\t\t\t\t\tconsole.error(\"Asset \" + item.title +\" could not be added: \" + e);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.clearAssetMarkers();\r\n\t\t}\r\n\r\n\t\tif(this.eventItems){\r\n\t\t\tthis.eventItems.forEach(item => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// If eventItem does not have a lat long we cannot plot it.\r\n\t\t\t\t\tif (!item.latLng || !item.latLng.lat || !item.latLng.lng) { \r\n\t\t\t\t\t\treturn\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar marker: any;\r\n\t\t\t\t\tif(this.eventItemMarkers.has(item.eventID)){\r\n\t\t\t\t\t\tmarker = this.eventItemMarkers.get(item.eventID);\r\n\t\t\t\t\t\tmarker.state = item.state === 2 ? \"processing\" : \"active\";\r\n\t\t\t\t\t\tmarker.moveTo(item.latLng);\r\n\t\t\t\t\t\teventMarkersToRemove.delete(item.eventID);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tmarker = this.mappingMarkers.createMarker(\r\n\t\t\t\t\t\t\tthis.enhancedMapping,\r\n\t\t\t\t\t\t\titem.eventID,\r\n\t\t\t\t\t\t\tnull, // eventRecordID\r\n\t\t\t\t\t\t\t4, // mapLayerItemTypeId: 1 for alarm\r\n\t\t\t\t\t\t\titem.eventID, // object id\r\n\t\t\t\t\t\t\titem.eventAreaTitle + \" - \" + item.eventDescription,\r\n\t\t\t\t\t\t\titem.latLng,\r\n\t\t\t\t\t\t\tnull, // region\r\n\t\t\t\t\t\t\tnull, // minElevation\r\n\t\t\t\t\t\t\tnull, // maxElevation\r\n\t\t\t\t\t\t\ttrue // visible: boolean\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tmarker.state = item.state === 2 ? \"processing\" : \"active\";\r\n\t\t\t\t\t\tmarker.isClickable = true;\r\n\t\t\t\t\t\tmarker.click = () => {};\r\n\r\n\t\t\t\t\t\tthis.eventItemMarkers.set(item.eventID, marker);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(item.state === 2){\r\n\t\t\t\t\t\tif(this.activeCircle){\r\n\t\t\t\t\t\t\tthis.activeCircle.setMap(null);\r\n\t\t\t\t\t\t\tthis.activeCircle = null;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.activeCircle = new google.maps.Circle({\r\n\t\t\t\t\t\t\t\tstrokeColor: \"#0d87e9\",\r\n\t\t\t\t\t\t\t\tstrokeOpacity: 0.8,\r\n\t\t\t\t\t\t\t\tstrokeWeight: 2,\r\n\t\t\t\t\t\t\t\tfillColor: \"#0d87e9\",\r\n\t\t\t\t\t\t\t\tfillOpacity: 0.05,\r\n\t\t\t\t\t\t\t\tmap: this.enhancedMapping.map,\r\n\t\t\t\t\t\t\t\tcenter: item.latLng,\r\n\t\t\t\t\t\t\t\tradius: 50,\r\n\t\t\t\t\t\t\t\tzIndex: 50\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\t\t\r\n\t\t\t\tcatch (e) {\r\n\t\t\t\t\tconsole.error(\"Event item \" + item.eventID + \" could not be added: \" + e);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t//Clear out any markers that don't exist anymore\r\n\t\teventMarkersToRemove.forEach(m => {\r\n\t\t\ttry {\r\n\t\t\t\tm.remove();\r\n\t\t\t\tthis.eventItemMarkers.delete(m.eventID)\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\tconsole.error(\"Failed to remove event marker: \" + e )\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Clear out markers that are offline/hidden\r\n\t\tassetMarkersToRemove.forEach(m => {\r\n\t\t\ttry {\r\n\t\t\t\tif(this.selectedAsset && this.selectedAsset.assetId == m.assetId){\r\n\t\t\t\t\tthis.selectedAsset = null;\r\n\t\t\t\t}\r\n\t\t\t\tm.remove();\r\n\t\t\t\tthis.assetItemMarkers.delete(m.assetId);\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\tconsole.error(\"Failed to remove asset marker: \" + e)\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\ttrackedMarkersToRemove.forEach(m => {\r\n\t\t\ttry \r\n\t\t\t{\r\n\t\t\t\tm.remove();\r\n\t\t\t\tthis.trackedAssetItemMarkers.delete(m.assetId);\r\n\t\t\t}\r\n\t\t\tcatch (e) \r\n\t\t\t{\r\n\t\t\t\tconsole.error(\"Failed to remove tracked asset marker: \" + e)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate createMarkerForAsset(asset: AssetMapLayerItem, visible: boolean) {\r\n\t\tif(!asset)\r\n\t\t\treturn;\r\n\r\n\t\tconst marker = this.mappingMarkers.createMarker(\r\n\t\t\tthis.enhancedMapping,\r\n\t\t\tasset.isTrackedAsset ? asset.trackedAssetId : asset.assetId,\r\n\t\t\tnull, // eventRecordID\r\n\t\t\tthis.getMarkerType(asset), // mapLayerItemTypeId: number | string | MarkerType\r\n\t\t\tasset.isTrackedAsset ? asset.trackedAssetId : asset.assetId, // object id\r\n\t\t\tasset.title,\r\n\t\t\tasset.latLng,\r\n\t\t\tnull, // region\r\n\t\t\tnull, // minElevation\r\n\t\t\tnull, // maxElevation\r\n\t\t\tvisible // visible: boolean\r\n\t\t);\r\n\r\n\t\tif(!asset.isTrackedAsset)\r\n\t\t{\r\n\t\t\tmarker.isClickable = true;\r\n\r\n\t\t\tmarker.click = () => {\r\n\t\t\t\tthis.setSelectedItem(asset);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn marker;\r\n\t}\r\n\r\n\tprivate async setSelectedItem(value: AssetMapLayerItem | null) {\r\n\t\tif(this.selectedAsset == value)\r\n\t\t\treturn;\r\n\r\n\t\t// clear previously selected\r\n\t\tif (this.selectedAsset && this.assetItemMarkers.has(this.selectedAsset.assetId)) {\r\n\t\t\tthis.setMarkerIconForItem(this.selectedAsset.assetId, false);\r\n\t\t}\r\n\r\n\t\tif (value && value.assetId){\r\n\t\t\tthis.setMarkerIconForItem(value.assetId, true);\r\n\t\t}else {\r\n\t\t\tthis.selectedAsset = null;\r\n\t\t\tthis.setViewingAsset(null)\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst assetIndex = this.assetAndUsersItems.findIndex(ast => ast.assetId === value.assetId);\r\n\t\tif(assetIndex >= 0) {\r\n\t\t\tthis.selectedAsset = {...this.assetAndUsersItems[assetIndex]};\r\n\t\t}\r\n\r\n\t\tthis.setViewingAsset(value ? value.assetId : null);\r\n\t\tthis.panToAsset();\r\n\t}\r\n\r\n\t@Watch(\"viewingAssetId\")\r\n\tprivate async viewingAssetChanged() {\r\n\t\tif(!this.viewingAssetId && this.selectedAsset){\r\n\t\t\tthis.setSelectedItem(null);\r\n\t\t} else if (!this.selectedAsset || (this.selectedAsset && this.selectedAsset.assetId !== this.viewingAssetId)) {\r\n\t\t\tconst assetIndex = this.assetAndUsersItems.findIndex(ast => ast.assetId === this.viewingAssetId);\r\n\t\t\tif(assetIndex >= 0){\r\n\t\t\t\tthis.setSelectedItem(this.assetAndUsersItems[assetIndex]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tasync mounted() {\r\n\t\tthis.init();\r\n\t\tthis.setMapStyle(\"dark\");\r\n\t\tthis.setMapType(\"roadmap\");\r\n\r\n\t\tif ((this.prototype || !this.inApp) && !this.browserLocationUpdater) {\r\n\t\t\tthis.currentLocationInterval = mountingLocationInterval;\r\n\t\t\tthis.triggerGetCurrentPositionRefresh();\r\n\t\t}\r\n\t\tif(this.deviceLocation && this.navigationLocation && this.navigationMode != \"OFF\"){\r\n\t\t\tthis.showDirections(this.deviceLocation, this.navigationLocation)\r\n\t\t}\r\n\t}\r\n\r\n\tasync beforeDispose(){\r\n\t\tthis.clearTimeout();\r\n\t}\r\n\r\n\tasync beforeDestroy() {\r\n\t\tthis.clearTimeout();\r\n\r\n\t\t// Clear the GPS watch so we're no longer doing it when the map is cleared or the page changes\r\n\t\tnavigator.geolocation.clearWatch(this.geolocationWatchNumber);\r\n\t\tclearTimeout(this.updateLocationTimeout);\r\n\t\tthis.setIsWatchingLocation(false);\r\n\t\tclearInterval(this.fieldOpsPoll);\r\n\t\tthis.fieldOpsPoll = null;\r\n\t\tthis.clearTimer(null);\r\n\t\tif(this.regions){\r\n\t\t\tthis.regions.forEach(m => {\r\n\t\t\t\tm.poly.setMap(null);\r\n\t\t\t\tif(m.label)\r\n\t\t\t\t\tm.label.onRemove();\r\n\t\t\t})\r\n\t\t\tthis.setRegions(null);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"mapStyle\")\r\n\tprivate mapStyleUpdated(){\r\n\t\tif(this.enhancedMapping && this.enhancedMapping.map){\r\n\t\t\tthis.enhancedMapping.map.setOptions({\r\n\t\t\t\tstyles: this.mobileMapStyle\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"liveGpsTrack\")\r\n\tprivate triggerGpsTracking(){\r\n\t\tif(this.liveGpsTrack) {\r\n\t\t\tif (navigator.geolocation && !this.geolocationWatchNumber) {\r\n\t\t\t\tthis.geolocationWatchNumber = navigator.geolocation.watchPosition(this.foundLocation, this.locationError, {\r\n\t\t\t\t\tenableHighAccuracy: true\r\n\t\t\t\t});\r\n\t\t\t\tthis.setIsWatchingLocation(true);\r\n\t\t\t}\r\n\r\n\t\t\tif(this.userMarker) {\r\n\t\t\t\tthis.userMarker.remove();\r\n\t\t\t}\r\n\r\n\t\t\tif(this.enhancedMapping.map && this.deviceLocation){\r\n\t\t\t\tthis.enhancedMapping.map.panTo(this.deviceLocation);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.setIsWatchingLocation(false);\r\n\t\t\tnavigator.geolocation.clearWatch(this.geolocationWatchNumber);\r\n\t\t\tthis.geolocationWatchNumber = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get mobileMapStyle(): any[] {\r\n\t\t// Remove all transit stations from the map (too much for mobile interface)\r\n\t\tvar mapStyles = getMapStyle(this.getMapType, this.getHideLabels, this.mapStyle);\r\n\t\tmapStyles.push({\r\n\t\t\tfeatureType: \"transit.station\",\r\n\t\t\tstylers: [{ visibility: \"off\" }]\r\n\t\t});\r\n\r\n\t\treturn mapStyles;\r\n\t}\r\n\r\n\tprivate async init() {\r\n\t\tawait getScript(\r\n\t\t\t`https://maps.googleapis.com/maps/api/js?key=` +\r\n\t\t\t\t`${process.env.VUE_APP_GOOGLE_MAPS_API_KEY}` +\r\n\t\t\t\t`&libraries=drawing,places,geometry`\r\n\t\t);\r\n\t\tthis.MapLabel = require('@/scripts/mapping/mapLabel').default;\r\n\t\t// Create the directions service\r\n\t\tthis.directionsService = new google.maps.DirectionsService();\r\n\t\tthis.directionsDisplay = new google.maps.DirectionsRenderer({\r\n\t\t\tsuppressMarkers: true,\r\n\t\t\tpreserveViewport: true,\r\n\t\t\tpolylineOptions: {\r\n\t\t\t\tstrokeColor: \"#117C8F\",\r\n\t\t\t\tstrokeWeight: 5\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Default position of the map is 0, 0\r\n\t\tlet pos: LocationBounds = {\r\n\t\t\tlocation: new google.maps.LatLng(0, 0),\r\n\t\t\tviewport: null\r\n\t\t};\r\n\r\n\t\t//If we're not in prototype mode, use the device's location (GPS)\r\n\t\tif (!this.prototype) {\r\n\t\t\tif (navigator.geolocation) {\r\n\t\t\t\tthis.geolocationWatchNumber = navigator.geolocation.watchPosition(this.foundLocation, this.locationError, {\r\n\t\t\t\t\tenableHighAccuracy: true\r\n\t\t\t\t});\r\n\t\t\t\tthis.setIsWatchingLocation(true);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(!this.liveGpsTrack){\r\n\t\t\tthis.triggerGpsTracking()\r\n\t\t}\r\n\r\n\r\n\r\n\t\t// Create the Google Map\r\n\t\tthis.enhancedMapping = new GoogleMap(\r\n\t\t\tthis.$refs.mappingContainer as HTMLElement,\r\n\t\t\tpos.location,\r\n\t\t\tthis.zoomLevel,\r\n\t\t\tfalse,\r\n\t\t\tthis.getMapType,\r\n\t\t\tthis.mobileMapStyle,\r\n\t\t\ttrue\r\n\t\t);\r\n\r\n\t\t// Fit the bounds of the map\r\n\t\tif (pos.viewport) {\r\n\t\t\tthis.enhancedMapping.map.fitBounds(new google.maps.LatLngBounds(pos.viewport.southwest, pos.viewport.northeast));\r\n\t\t}\r\n\r\n\t\tthis.enhancedMapping!.registerEvent(\"onClick\", (latLong: google.maps.LatLng) => {\r\n\t\t\tthis.setUserLocation(latLong);\r\n\t\t});\r\n\r\n\t\tif(!this.mappingMarkers){\r\n\t\t\tthis.mappingMarkers = await getEnhancedMapping(\"google\", this.mapKey);\r\n\t\t}\r\n\r\n\t\tif(this.isMobileFieldOpsEnabled) {\r\n\t\t\tthis.loadAssetTypes();\r\n\t\t\tthis.loadOnlineAssets();\r\n\t\t\tthis.clearTimer(null); //clear out\r\n\t\t\tif(this.fieldOpsPoll){\r\n\t\t\t\tclearInterval(this.fieldOpsPoll);\r\n\t\t\t\tthis.fieldOpsPoll = null;\r\n\t\t\t}\r\n\t\t\tthis.fieldOpsPoll = setInterval(async () => {\r\n\t\t\t\tthis.loadOnlineAssets();\r\n\t\t\t}, 5000);\r\n\t\t}\r\n\r\n\t\tif(this.isAreaRegionsEnabled){\r\n\t\t\tthis.loadRegions();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async loadRegions() {\r\n\t\tvar regions = await api.getAllRegions();\r\n\t\tvar regionsToUpdate = new Map();\r\n\t\t//Generate the polygons for every region that has a path\r\n\t\tregions.filter(x => x.path).forEach(region => {\r\n \tconst polygonOptions = getPolygonOptionsForRegion(region);\r\n\t\t\tconst regionPoly = new google.maps.Polygon({\r\n\t\t\t\tmap: this.enhancedMapping!.map,\r\n\t\t\t\tpaths: JSON.parse(region.path),\r\n\t\t\t\t...polygonOptions\r\n \t});\r\n\r\n\t\t\tgoogle.maps.event.addListener(regionPoly, 'click', (event) => {\r\n\t\t\t\tthis.setUserLocation(event.latLng);\r\n\t\t\t});\r\n\r\n\r\n\t\t\tconst position = getRegionBounds(regionPoly.getPath()).getCenter();\r\n\t\t\tconst label = new this.MapLabel(\r\n\t\t\t{\r\n\t\t\t\ttext: region.areaDetails,\r\n\t\t\t\tposition: position,\r\n\t\t\t\tfontSize: 12,\r\n\t\t\t\tfontColor: \"black\",\r\n\t\t\t\tlabelInBackground: true,\r\n\t\t\t\tstrokeColor: region.borderColor,\r\n\t\t\t\tmap: this.enhancedMapping!.map\r\n\t\t\t});\r\n\t\t\tlabel.set('position', position);\r\n\t\t\tregionsToUpdate.set(region.groupId, { poly: regionPoly, label: label });\r\n\t\t});\r\n\t\tthis.setRegions(regionsToUpdate);\r\n\t}\r\n\r\n\tprivate async setUserLocation(latLong: google.maps.LatLng){\r\n\t\tif(this.liveGpsTrack)\r\n\t\t\treturn;\r\n\r\n\t\tif (this.userMarker != null) {\r\n\t\t\tthis.userMarker.remove();\r\n\t\t\tthis.userMarker = null;\r\n\t\t}\r\n\r\n\t\tif(!this.mappingMarkers){\r\n\t\t\tthis.mappingMarkers = await getEnhancedMapping(\"google\", this.mapKey);\r\n\t\t}\r\n\r\n\t\tthis.userMarker = this.mappingMarkers.createMarker(\r\n\t\t\t\tthis.enhancedMapping!,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\t7,\r\n\t\t\t\tnull,\r\n\t\t\t\t\"Location\",\r\n\t\t\t\tlatLong,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\tnull,\r\n\t\t\t\ttrue\r\n\t\t\t);\r\n\r\n\r\n\t\tthis.userMarker.dragend = (latLong: google.maps.LatLng) => {\r\n\t\t\tthis.manualSetLocationData(latLong);\r\n\t\t};\r\n\r\n\t\tthis.manualSetLocationData(latLong)\r\n\t}\r\n\r\n\tprivate manualSetLocationData(latLong: google.maps.LatLng){\r\n\t\tthis.setDeviceLocation(latLong);\r\n\t\tthis.panToCenter(latLong);\r\n\t\tthis.foundLocation(latLong, true)\r\n\t}\r\n\r\n\t/*** MAP Functions ***/\r\n\tprivate showDirections(origin: google.maps.LatLng, destination: google.maps.LatLng) {\r\n\t\tthis.userPreviousLocation = origin;\r\n\t\tif (!origin || !destination || !this.navigationMode || this.navigationMode === \"OFF\") {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar request: google.maps.DirectionsRequest = {\r\n\t\t\torigin: origin,\r\n\t\t\tdestination: destination,\r\n\t\t\ttravelMode: google.maps.TravelMode[this.navigationMode]\r\n\t\t};\r\n\r\n\t\tthis.directionsService.route(\r\n\t\t\trequest,\r\n\t\t\tfunction(result, status) {\r\n\t\t\t\tif (status == google.maps.DirectionsStatus.OK) {\r\n\t\t\t\t\tthis.directionsDisplay.setMap(this.enhancedMapping.map);\r\n\t\t\t\t\tthis.directionsDisplay.setDirections(result);\r\n\t\t\t\t\tthis.navLocInfo.distance = result.routes[0].legs[0].distance;\r\n\t\t\t\t\tthis.navLocInfo.duration = result.routes[0].legs[0].duration;\r\n\t\t\t\t}\r\n\t\t\t}.bind(this)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate hideDirections() {\r\n\t\tif (this.directionsDisplay && this.directionsDisplay.getMap()) {\r\n\t\t\tthis.directionsDisplay.set(\"directions\", null);\r\n\t\t\tthis.directionsDisplay.setMap(null);\r\n\t\t}\r\n\r\n\t\tthis.navLocInfo = {\r\n\t\t\tduration: null,\r\n\t\t\tdistance: null\r\n\t\t};\r\n\r\n\t\tthis.userPreviousDestination = new google.maps.LatLng(0, 0);\r\n\t}\r\n\r\n\tprivate panToCenter(centerPosition: google.maps.LatLng) {\r\n\t\tthis.enhancedMapping.map.panTo(centerPosition);\r\n\t}\r\n\r\n\tprivate parseLatLngToLocation(location: google.maps.LatLng): string {\r\n\t\tif (!location) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet locationJson: SVLocation = {\r\n\t\t\tlat: location.lat(),\r\n\t\t\tlng: location.lng()\r\n\t\t};\r\n\r\n\t\treturn JSON.stringify(locationJson);\r\n\t}\r\n\r\n\tprivate async updateLocationHistory(deviceLocation: google.maps.LatLng) {\r\n\t\tconst updateInterval = 5000;\r\n\r\n\t\t// On first run (usually) this.lastUpdatedGuardLocation won't have been set, so set it, and ensure it triggers straight away\r\n\t\tif (this.lastUpdatedGuardLocation === null || typeof this.lastUpdatedGuardLocation === 'undefined') {\r\n\t\t\tthis.lastUpdatedGuardLocation = Date.now() - (updateInterval * 2);\r\n\t\t}\r\n\r\n\t\tclearTimeout(this.updateLocationTimeout);\r\n\r\n\t\t// Update the backend with the device location (every x seconds, so less regularly than the Vuex store)\r\n\t\t// If mobile users is enabled only update the location if the user is online\r\n\t\tlet triggerRecall: boolean = false;\r\n\t\tif (Date.now() - this.lastUpdatedGuardLocation > updateInterval && (this.isMobileUsersEnabled ? this.userMapOnlineStatus : true)) {\r\n\t\t\tif (deviceLocation) {\r\n\t\t\t\tconst deviceLocationString = this.parseLatLngToLocation(deviceLocation);\r\n\t\t\t\tawait mobileApi.setLocationForGuard(deviceLocationString);\r\n\t\t\t\tthis.lastUpdatedGuardLocation = Date.now();\r\n\t\t\t}\r\n\t\t\tif (!this.inApp) {\r\n\t\t\t\ttriggerRecall = true;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\ttriggerRecall = true;\r\n\t\t}\r\n\r\n\t\tif (triggerRecall) {\r\n\t\t\tthis.updateLocationTimeout = window.setTimeout(() => this.updateLocationHistory(deviceLocation), updateInterval);\r\n\t\t}\r\n\t}\r\n\r\n\t/*** GPS Functions ***/\r\n\tpublic foundLocation(position:any, positionIsLatLng: boolean = false) {\r\n\t\tlet deviceLocation: google.maps.LatLng = null;\r\n\t\tif (this.prototype) {\r\n\t\t\tdeviceLocation = new google.maps.LatLng(51.650662, -3.915031); // Hard coded location (Swansea Office) to use for debugging\r\n\t\t} else {\r\n\t\t\tif (positionIsLatLng) {\r\n\t\t\t\tdeviceLocation = position;\r\n\t\t\t} else {\r\n\t\t\t\tif (!position || !position.coords) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tdeviceLocation = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Update vuex with the current device location\r\n\t\tthis.setDeviceLocation(deviceLocation);\r\n\r\n\t\tif (this.enhancedMapping) {\r\n\t\t\tif (!this.mapInitialized) {\r\n\t\t\t\tthis.enhancedMapping.map.setCenter(deviceLocation);\r\n\t\t\t\tvar markerIcon = {\r\n\t\t\t\t\turl: \"images/google-maps-location-32x32.png\",\r\n\t\t\t\t\tscaledSize: new google.maps.Size(32, 32),\r\n\t\t\t\t\torigin: new google.maps.Point(0, 0),\r\n\t\t\t\t\tanchor: new google.maps.Point(16, 16)\r\n\t\t\t\t};\r\n\t\t\t\tthis.deviceMarker = new google.maps.Marker({\r\n\t\t\t\t\tposition: deviceLocation,\r\n\t\t\t\t\tmap: this.enhancedMapping.map,\r\n\t\t\t\t\ticon: markerIcon\r\n\t\t\t\t});\r\n\t\t\t\tthis.mapInitialized = true;\r\n\t\t\t} else {\r\n\t\t\t\tthis.deviceMarker.setPosition(deviceLocation);\r\n\r\n\t\t\t\tif(this.navigationLocation && this.userPreviousLocation && this.deviceLocation\r\n\t\t\t\t\t&& google.maps.geometry.spherical.computeDistanceBetween(this.userPreviousLocation, this.deviceLocation) > 20){\r\n\t\t\t\t\t\t\tthis.showDirections(this.deviceLocation, this.navigationLocation);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//if we now have a location and the map is set to 0,0, update the map to focus on the deviceLocation\r\n\t\t\tif(this.enhancedMapping.map && !this.enhancedMapping.map.getCenter().lat() && !this.enhancedMapping.map.getCenter().lng()){\r\n\t\t\t\tthis.enhancedMapping.map.setCenter(deviceLocation);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isMobileUsersEnabled) {\r\n\t\t\tthis.updateLocationHistory(deviceLocation);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic locationError(error) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tthis.geolocationWatchNumber = navigator.geolocation.watchPosition(this.foundLocation, this.locationError, {\r\n\t\t\t\tenableHighAccuracy: true\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"browserLocationUpdater\")\r\n\tprivate setCurrentLocationInterval(){\r\n\t\tif (this.browserLocationUpdater){\r\n\t\t\tthis.currentLocationInterval = defaultLocationInterval\r\n\t\t}\r\n\t}\r\n\r\n\tprivate triggerGetCurrentPositionRefresh() : void {\r\n\t\tlet timeoutFunction = async function() {\r\n\t\t\ttry {\r\n\t\t\t\tnavigator.geolocation.getCurrentPosition(pos => {\r\n\t\t\t\t\tthis.foundLocation(pos);\r\n\t\t\t\t}, err => {\r\n\t\t\t\t\tthis.foundLocation(null);\r\n\t\t\t\t})\r\n\t\t\t} catch(e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\r\n\t\t\tthis.triggerGetCurrentPositionRefresh();\r\n\t\t}.bind(this);\r\n\r\n\t\tthis.clearTimeout();\r\n\t\tthis.browserLocationUpdater = setTimeout(timeoutFunction, this.currentLocationInterval);\r\n\t}\r\n\r\n\tprivate clearTimeout(): void {\r\n\t\tif (this.browserLocationUpdater) {\r\n\t\t\tclearTimeout(this.browserLocationUpdater);\r\n\t\t\tthis.browserLocationUpdater = null;\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileMap.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileMap.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MobileMap.vue?vue&type=template&id=7457f122&scoped=true\"\nimport script from \"./MobileMap.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileMap.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MobileMap.vue?vue&type=style&index=0&id=7457f122&prod&lang=css&scoped=true\"\nimport style1 from \"./MobileMap.vue?vue&type=style&index=1&id=7457f122&prod&lang=scss\"\nimport style2 from \"./MobileMap.vue?vue&type=style&index=2&id=7457f122&prod&scoped=true&lang=scss\"\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 \"7457f122\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.sideBarComponent !== 'none')?_c('div',{staticClass:\"sidebar right-sidebar\",class:{\n\t\t'right--95vw': !_vm.showRightSidebar,\n\t\t'right-0vw': _vm.showRightSidebar,\n\t\t'right--100vw': this.isLeftSideBarOpen },attrs:{\"id\":\"rightSidebar\"}},[_c('div',{staticClass:\"right-swipe-listener\",attrs:{\"id\":\"rightSwipeListener\"},on:{\"click\":function($event){return _vm.toggleRightSideBarVisibility()}}},[_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isRightSideBarOpen),expression:\"isRightSideBarOpen\"}],staticClass:\"fas fa-chevron-right swipe-listener-icon\"})]),(!this.sideBarComponent || this.sideBarComponent != 'none')?_c('div',{staticClass:\"container right-sidebar-contents\",attrs:{\"id\":\"rightSidebarContents\"}},[_c(_vm.sideBarComponent,{tag:\"component\",on:{\"deviceSelected\":function($event){return _vm.toggleRightSideBarVisibility()}}})],1):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isMobileLiveCamerasEnabled)?_c('div',{attrs:{\"data-cy\":\"live-camera\"}},[_vm._m(0),_c('div',[_c('camera-select',{on:{\"deviceSelected\":function($event){return _vm.deviceSelected()}}})],1)]):_c('div',[_vm._v(\"Mobile Live Cameras feature is not enabled.\")])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h4',[_c('i',{staticClass:\"fas fa-cctv\"}),_vm._v(\" Live Cameras \")])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('area-tree-select',{attrs:{\"placeholder\":\"Search all Areas...\",\"data-label\":\"areaTreeSelect\",\"reduce\":function (a) { return a.id; },\"append-to-body\":\"\",\"clearable\":\"\",\"useDrawdownSearch\":false},model:{value:(_vm.selectedGroup),callback:function ($$v) {_vm.selectedGroup=$$v},expression:\"selectedGroup\"}}),_c('div',{staticClass:\"search-container\"},[_c('div',{staticClass:\"form-group\"},[(_vm.areaCameraCount > 0)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchQuery),expression:\"searchQuery\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Search all cameras...\",\"data-cy\":\"camera-search-input\"},domProps:{\"value\":(_vm.searchQuery)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.searchQuery=$event.target.value}}}):_vm._e()]),(_vm.groupCameras)?_c('div',{staticClass:\"list-group camera-count\",attrs:{\"data-cy\":\"group-cameras-container\"}},[_c('b',[_vm._v(\"(\"+_vm._s(_vm.areaCameras.length)+\"/\"+_vm._s(this.filterActive ? this.searchedGroupCameraCount : this.areaCameraCount)+\")\")])]):_vm._e()]),(_vm.isLoading || _vm.areaCameras.length == 0)?_c('div',{staticClass:\"list-group-item\"},[(_vm.isLoading)?_c('span',[_vm._v(\" Loading... \"),_c('i',{staticClass:\"fas fa-spinner fa-spin\"})]):(_vm.areaCameras.length == 0)?_c('span',[_vm._v(\"No Cameras in Area\")]):_vm._e()]):_vm._e(),_vm._l((_vm.areaCameras),function(camera){return _c('div',{key:camera.objectID},[_c('div',[_c('a',{staticClass:\"list-group-item list-group-item-action a-flex\",on:{\"click\":function($event){return _vm.showAreaCamera(camera)}}},[_vm._v(\" \"+_vm._s(camera.title)+\" \")])])])}),(this.showLoadMoreButton)?_c('div',{staticClass:\"show-more-container\",attrs:{\"align\":\"center\",\"data-cy\":\"load-more-button\"}},[_c('b-button',{staticClass:\"secondary\",on:{\"click\":function($event){return _vm.showMoreCameras()}}},[_vm._v(\"Show more\")])],1):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\nimport TextHighlight from \"vue-text-highlight\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { debounce } from \"lodash\";\r\n// API\r\n// Components\r\nimport Tree from \"@/components/Tree.vue\";\r\n// Types\r\nimport { ICamera } from \"@/store/views/types\";\r\nimport { CameraType, SearchedCamera } from \"@/store/site-monitor-cameras/types\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport api from '@/services/api.service';\r\n\r\nconst SMCameras = namespace(\"siteMonitorCameras\");\r\nconst Areas = namespace(\"areas\");\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\ttree: Tree,\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t\t\"text-highlight\": TextHighlight\r\n\t}\r\n})\r\nexport default class MobileCameraSelect extends Vue {\r\n\t@SMCameras.Action fetchAreaCameras: (params: { groupID: number, pageNumber: number, paginated: boolean }) => Promise;\r\n\t@SMCameras.Getter(\"getAreaCameras\") groupCameras: CameraType[];\r\n\t@SMCameras.Getter searchedCameras: SearchedCamera[];\r\n\t@SMCameras.State(\"areaCameraCount\") public areaCameraCount: number;\r\n\t@SMCameras.State(\"searchedGroupCameraCount\") public searchedGroupCameraCount: number;\r\n\t@SMCameras.Action searchForCameras: (params: { query: string, groupID: number, page: number, reset: boolean }) => Promise;\r\n\r\n\t@SMCameras.Mutation setAreaCameras: any;\r\n\t@SMCameras.Mutation setAreaCameraCount: any;\r\n\t@SMCameras.Mutation setSearchedGroupCameraCount: any;\r\n\r\n\t@Areas.Getter getAreaTitle: (id: number) => string;\r\n\r\n\t@Mobile.Mutation setLiveDevice: (camera: ICamera) => void;\r\n\t@Mobile.Getter(\"getLiveDeviceId\") liveDeviceId: any;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t$refs!: {\r\n\t\tscrollBar: any;\r\n\t};\r\n\r\n\tpublic pageNumber: number = 1;\r\n\tpublic selectedGroup: number = null;\r\n\tpublic searchPageSize: number = 20;\r\n\tprivate searchQuery: string = \"\";\r\n\tprivate isLoading: boolean = false;\r\n\r\n\tpublic mounted(): void {\r\n\t\t\tthis.setAreaCameras([]);\r\n\t\t\tthis.setAreaCameraCount(0);\r\n\t\t\tthis.setSearchedGroupCameraCount(0);\r\n\t\t\tthis.selectedGroup = null;\r\n\t\t\tthis.searchQuery = null;\r\n\t\t}\r\n\r\n\tprivate open: boolean = false;\r\n\r\n\t@Watch(\"selectedGroup\")\r\n\tpublic async querySearch(newValue: number, oldValue: number): Promise {\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.isLoading = true;\r\n\r\n\t\t\tif(newValue != oldValue){\r\n\t\t\t\tthis.pageNumber = 1;\r\n\t\t\t\tthis.setAreaCameras([]);\r\n\t\t\t}\r\n\r\n\t\t\tawait this.fetchAreaCameras({ groupID: this.selectedGroup, pageNumber: this.pageNumber, paginated: true } );\r\n\t\t}\r\n\t\tcatch(err)\r\n\t\t{\r\n\t\t\tconsole.error(\"Error Loading Area Cameras\", err);\r\n\t\t\tthis.pageNumber = 1;\r\n\t\t\tthis.setAreaCameras([]);\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get areaCameras(): any[] {\r\n\t\tif (!this.filterActive)\r\n\t\t{\r\n\t\t\treturn this.groupCameras;\r\n\t\t}\r\n\r\n\t\treturn this.searchedCameras.filter(\r\n\t\t\tcamera => camera.areaTitle == this.getAreaTitle(this.selectedGroup)\r\n\t\t).slice(0, this.searchPageSize);\r\n\t}\r\n\r\n\tpublic showMoreCameras(): void {\r\n\t\tif (!this.filterActive) {\r\n\t\t\tthis.pageNumber++;\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tthis.pageNumber++;\r\n\t\t\tthis.searchPageSize += 20;\r\n\t\t}\r\n\t}\r\n\r\n\t// Watch the pageNumber and reuse the same search query to update list\r\n\t@Watch(\"pageNumber\")\r\n\tpublic async onPageNumberChanged(): Promise {\r\n\t\tif (this.searchQuery) {\r\n\t\t\tawait this.searchForCameras({ query: this.searchQuery, groupID: this.selectedGroup, page: this.pageNumber, reset: false });\r\n\t\t\t} else {\r\n\t\t\tawait this.fetchAreaCameras({ groupID: this.selectedGroup, pageNumber: this.pageNumber, paginated: true });\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"searchQuery\")\r\n\tpublic debouncedFilterSearch: (() => Promise) = debounce(async () => {\r\n\t\tawait this.searchForDebounce();\r\n\t}, 1000);\r\n\r\n\tprivate async searchForDebounce(): Promise {\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.pageNumber = 1;\r\n\t\t\tawait this.searchForCameras({ query: this.searchQuery, groupID: this.selectedGroup, page: this.pageNumber, reset: true });\r\n\t\t}\r\n\t\tcatch(err)\r\n\t\t{\r\n\t\t\tconsole.error(\"Error searching for cameras\", err);\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get filterActive(): boolean {\r\n\t\treturn !!this.searchQuery;\r\n\t}\r\n\r\n\t@Watch(\"filterActive\")\r\n\tprivate resetPageSize(): void {\r\n\t\tthis.pageNumber = 1;\r\n\t\tthis.searchPageSize = 20;\r\n\t}\r\n\r\n\tprivate get showLoadMoreButton(): boolean {\r\n\t\tif (this.filterActive) {\r\n\t\t\treturn this.areaCameras.length < this.searchedGroupCameraCount;\r\n\t\t} else {\r\n\t\t\treturn this.groupCameras.length < this.areaCameraCount;\r\n\t\t}\r\n\t}\r\n\r\n\t// Raise event to show camera\r\n\tprivate async showAreaCamera(camera) : Promise {\r\n\t\tif(!camera)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tlet cameraDetails = await api.loadDeviceById(camera.objectID, null);\r\n\t\tthis.setLiveDevice(cameraDetails);\r\n\t\tthis.$emit(\"deviceSelected\")\r\n\t}\r\n}\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileCameraSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileCameraSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MobileCameraSelect.vue?vue&type=template&id=7ab4f962&scoped=true\"\nimport script from \"./MobileCameraSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileCameraSelect.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MobileCameraSelect.vue?vue&type=style&index=0&id=7ab4f962&prod&scoped=true&lang=scss\"\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 \"7ab4f962\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Emit } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport MobileCameraSelect from \"@/components/mobile/core/MobileCameraSelect.vue\";\r\n\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"camera-select\": MobileCameraSelect\r\n\t}\r\n})\r\nexport default class LiveCameras extends Vue {\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Emit(\"deviceSelected\")\r\n\tpublic deviceSelected() {}\r\n\r\n\tpublic get isMobileLiveCamerasEnabled() {\r\n\t\treturn this.getFeature([\"Mobile\", \"Live\"]);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LiveCameras.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LiveCameras.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LiveCameras.vue?vue&type=template&id=b83b8896\"\nimport script from \"./LiveCameras.vue?vue&type=script&lang=ts\"\nexport * from \"./LiveCameras.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"h-100\"},[_c('b-tabs',{attrs:{\"active-nav-item-class\":\"activeMobileTab\"},model:{value:(_vm.currentControlTabIndex),callback:function ($$v) {_vm.currentControlTabIndex=$$v},expression:\"currentControlTabIndex\"}},[_c('b-tab',{attrs:{\"title\":\"Assets\",\"active\":\"\",\"href\":\"#Assets\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Assets \"+_vm._s(\"(\" + (_vm.assetAndUsersItems ? _vm.filteredAssets.length.toString() : \"0\") +\")\")+\" \")]},proxy:true}])},[(_vm.filteredAssets)?_c('mobile-asset-list',{ref:\"assetListComp\",staticClass:\"h-100\",staticStyle:{\"height\":\"90vh\",\"min-height\":\"90vh\"},attrs:{\"data-cy\":\"mobile-asset-list\",\"mobileMode\":\"\",\"assets\":_vm.filteredAssets,\"assetTypes\":_vm.assetTypes,\"selectedAssetID\":_vm.selectedAssetId},on:{\"itemSelected\":_vm.onAssetSelected}}):_vm._e()],1),_c('b-tab',{staticClass:\"h-100\",attrs:{\"title\":\"History\",\"href\":\"#History\",\"lazy\":\"\"}},[_c('mobile-status-history',{ref:\"statusHistory\",staticStyle:{\"height\":\"90vh\",\"min-height\":\"90vh\",\"max-height\":\"90vh\"}})],1),(_vm.isMobileEventShareEnabled)?_c('b-tab',{staticClass:\"h-100\",attrs:{\"title\":\"Events \",\"href\":\"#EventShare\",\"lazy\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Events \"+_vm._s(\"(\" + (_vm.eventShareItems ? _vm.eventShareItems.length : \"0\") +\")\")+\" \")]},proxy:true}],null,false,3123551432)},[_c('div',{staticStyle:{\"height\":\"90vh\",\"min-height\":\"90vh\",\"max-height\":\"90vh\"}},[_c('event-share-queue',{ref:\"eventQueue\"})],1)]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-overlay',{staticStyle:{\"height\":\"100%\"},attrs:{\"show\":_vm.showOverlay,\"rounded\":\"lg\",\"variant\":\"dark\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"18px\",\"text-align\":\"center\"}},[(_vm.setActiveOrLeaving)?_c('p',[_vm._v(\" Accept event share to \"),_c('i',[_vm._v(\" \"+_vm._s(_vm.pendingEvent.eventAreaTitle + \" - \" + _vm.pendingEvent.eventDescription)+\" \")]),_vm._v(\"? \"),_c('br'),_c('i',{staticStyle:{\"font-size\":\"14px\"}},[_vm._v(\"You will leave your current active event and will not be able to re-join.\")])]):_c('p',[_vm._v(\" Leave event share \"),_c('i',[_vm._v(\" \"+_vm._s(_vm.pendingEvent.eventAreaTitle + \" - \" + _vm.pendingEvent.eventDescription)+\" \")]),_vm._v(\"? \"),_c('br'),_c('i',{staticStyle:{\"font-size\":\"14px\"}},[_vm._v(\"You will not be able to re-join unless you are re-shared.\")])]),_c('b-button',{staticClass:\"mr-1\",attrs:{\"id\":\"btnConfirm\",\"variant\":\"primary\"},on:{\"click\":function($event){_vm.setActiveOrLeaving ? _vm.trySetActiveEvent(true) : _vm.leaveActiveEvent()}}},[_vm._v(\" Confirm \")]),_c('b-button',{attrs:{\"id\":\"btnCancel\"},on:{\"click\":function($event){return _vm.cancelPendingStateChange()}}},[_vm._v(\" Cancel \")])],1)]},proxy:true}])},[_c('div',{staticStyle:{\"padding-top\":\"15px\"}},[_c('table',{staticClass:\"w-100\"},[_c('tr',{on:{\"click\":function($event){_vm.activeEventVisible = !_vm.activeEventVisible}}},[_c('td',[_c('h5',[_vm._v(\"Active Event\")])]),_c('td',[_c('i',{staticClass:\"fas\",class:[_vm.activeEventVisible ? 'fa-chevron-down' : 'fa-chevron-up'],staticStyle:{\"float\":\"right\"}})])])]),_c('b-collapse',{attrs:{\"id\":\"activeEvent\"},model:{value:(_vm.activeEventVisible),callback:function ($$v) {_vm.activeEventVisible=$$v},expression:\"activeEventVisible\"}},[_c('div',{class:[!_vm.eventShareQueueVisible ? 'activeEventLrg':'activeEventSmall'],staticStyle:{\"overflow\":\"auto\"}},[(_vm.activeEvent)?_c('div',[_c('b-overlay',{staticStyle:{\"height\":\"100%\"},attrs:{\"show\":_vm.pendingActive,\"rounded\":\"lg\",\"variant\":\"dark\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('i',{staticClass:\"fas fa-spinner fa-spin fa-2x\"})]},proxy:true}],null,false,2989671952)},[_c('event-share-item',{staticClass:\"active-event-share-item\",attrs:{\"item\":_vm.activeEvent,\"active\":\"\"},on:{\"updateEvent\":_vm.updateEvent}}),_c('h5',{staticClass:\"activity-title mt-2\",on:{\"click\":_vm.scrollRecords}},[_vm._v(\" Activity \"),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.unreadRecordCount > 0),expression:\"unreadRecordCount > 0\"}],staticClass:\"badge badge-pill badge-danger notification-badge\"},[_vm._v(\" \"+_vm._s(_vm.unreadRecordCount)+\" \")]),_c('i',{staticClass:\"fas fa-arrow-to-top\",staticStyle:{\"float\":\"right\"}})]),_c('mobile-event-records',{class:[_vm.eventShareQueueVisible ? 'recordSmall':'recordLrg'],staticStyle:{\"overflow\":\"auto\"},attrs:{\"id\":\"mobileEventRecords\",\"eventID\":_vm.activeEvent.eventID},on:{\"newRecords\":_vm.newRecords}})],1)],1):_c('div',{staticStyle:{\"text-align\":\"center\"}},[_c('p',{staticClass:\"text-muted\",staticStyle:{\"line-height\":\"10vh\",\"margin-bottom\":\"0px\"}},[_vm._v(\"You do not have an active event\")])])])])],1),_c('div',{staticStyle:{\"padding-top\":\"15px\"}},[_c('table',{staticClass:\"w-100\"},[_c('tr',{on:{\"click\":_vm.toggleEventQueue}},[_c('td',[_c('h5',[_vm._v(\"Event Share Queue (\"+_vm._s(_vm.eventShareItems ? _vm.eventShareItems.length : 0)+\")\")])]),_c('td',[(this.activeEvent)?_c('i',{staticClass:\"fas\",class:[_vm.eventShareQueueVisible ? 'fa-chevron-down' : 'fa-chevron-up'],staticStyle:{\"float\":\"right\"}}):_vm._e()])])]),_c('b-collapse',{attrs:{\"id\":\"eventShareQueue\"},model:{value:(_vm.eventShareQueueVisible),callback:function ($$v) {_vm.eventShareQueueVisible=$$v},expression:\"eventShareQueueVisible\"}},[(_vm.eventShareItems)?_c('div',{class:_vm.eventQueueSize,staticStyle:{\"overflow\":\"auto\"}},_vm._l((_vm.eventShareItems),function(event){return _c('div',{key:event.eventID,staticStyle:{\"margin-bottom\":\"15px\"}},[_c('event-share-item',{staticClass:\"pending-event-share-item\",attrs:{\"pendingUpdate\":_vm.pendingEvent ? _vm.pendingEvent.eventID === event.eventID : false,\"item\":event},on:{\"updateEvent\":_vm.updateEvent}})],1)}),0):_vm._e()])],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{attrs:{\"show\":_vm.pendingUpdate,\"rounded\":\"lg\",\"variant\":\"dark\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('i',{staticClass:\"fas fa-spinner fa-spin fa-2x\"})]},proxy:true}])},[(_vm.item)?_c('div',{staticClass:\"eventShareItem card text-center\",class:[_vm.active ? 'bWhite' : '']},[_c('div',{staticClass:\"card-body\",staticStyle:{\"padding\":\"0.5em!important\"}},[_c('span',{staticClass:\"text-muted priority\"},[_vm._v(\"Pri:\"+_vm._s(_vm.item.priority))]),_c('h5',{staticClass:\"card-title\",on:{\"click\":function($event){return _vm.focus()}}},[(_vm.distanceFromUser)?_c('i',{staticClass:\"fas fa-map-marker-alt\"}):_vm._e(),_vm._v(\" \"+_vm._s(_vm.item.eventAreaTitle))]),_c('p',{staticClass:\"card-text\"},[_vm._v(\" \"+_vm._s(_vm.item.eventDescription)+\" - \"),_c('span',{staticClass:\"text-muted\"},[_vm._v(\" \"+_vm._s(_vm.fromNow(_vm.item.lastUpdated).replace('hours', 'hrs').replace('minutes','mins')))])]),(_vm.distanceFromUser)?_c('i',{staticClass:\"text-muted\"},[_vm._v(_vm._s(_vm.distanceFromUser))]):_vm._e()]),_c('div',{staticClass:\"card-footer\",staticStyle:{\"padding\":\"0.5em!important\"}},[(_vm.active)?_c('b-button-group',{attrs:{\"size\":\"md\"}},[(_vm.navMode && _vm.navMode != 'OFF')?_c('b-button',{attrs:{\"id\":\"tglNavigate\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.setNavigateToActiveAlarm(true)}}},[_vm._v(\" \"+_vm._s(\"Navigate to\")+\" \")]):_vm._e(),_c('b-button',{attrs:{\"id\":\"btnLeave\"},on:{\"click\":function($event){return _vm.updateEventState(4)}}},[_vm._v(\"Leave\")]),_c('b-button',{attrs:{\"id\":\"btnChat\"},on:{\"click\":function($event){return _vm.openChat()}}},[_c('i',{staticClass:\"fas fa-comments-alt\"}),_vm._v(\" Chat\")])],1):_c('b-button-group',[_c('b-button',{staticClass:\"btn\",attrs:{\"id\":\"btnAccept\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.updateEventState(2)}}},[_vm._v(\"Accept\")]),_c('b-button',{attrs:{\"id\":\"btnDecline\"},on:{\"click\":function($event){return _vm.updateEventState(3)}}},[_vm._v(\"Decline\")])],1)],1)]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Emit } from \"vue-property-decorator\";\r\nimport GPSService from \"@/services/gps.service\";\r\nimport { namespace } from 'vuex-class';\r\n\r\nimport {\r\n\tconvertStringToLatLng,\r\n} from \"@sureview/v2-mapping-saas\";\r\nimport { MobileEventShareInfo } from '@/store/mobile/types';\r\n\r\n\r\nconst geoCoder = new GPSService();\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n components:{}\r\n})\r\n\r\nexport default class EventShareItem extends Vue {\r\n\t@Mobile.State(\"DeviceLocation\") private userLocation: any;\r\n @Mobile.State(\"NavigationMode\") private navMode: string;\r\n @Mobile.State(\"NavigateToActiveAlarm\") private navigateToAlarm: boolean;\r\n @Mobile.Mutation(\"setNavigateToActiveAlarm\") private setNavigateToActiveAlarm: (navigateTo: boolean) => void;\r\n @Mobile.Mutation(\"setFocusedEventID\") private setFocusedEvent: (eventID: number) => void;\r\n\t@Mobile.Mutation(\"toggleRightSideBarVisibility\") private toggleRightSideBar: () => void;\r\n\t@Mobile.Mutation(\"setChatTab\") private setChatTab: (tab: string) => void;\r\n\t@Mobile.Mutation(\"setChatOpen\") private setChatOpen: (open: boolean) => void;\r\n\r\n @Prop({default: false, type: Boolean})\r\n private pendingUpdate: boolean;\r\n\r\n @Prop()\r\n private item: MobileEventShareInfo;\r\n\r\n @Prop({default: false, type:Boolean})\r\n private active;\r\n\r\n\r\n private get distanceFromUser(): string {\r\n try {\r\n //If we can't work out the distance don't bother showing it\r\n if(!this.item.latLng || !this.item.latLng.lat || !this.userLocation)\r\n return \"\";\r\n\r\n // the device location is a function we need to retrieve the lat and Long and parse into the\r\n // google maps latLng interface for the decoder to work\r\n const deviceLocation = convertStringToLatLng(this.userLocation.lat() + \" \" + this.userLocation.lng());\r\n var distanceInMeters = geoCoder.getDistance(this.item.latLng, deviceLocation);\r\n if(distanceInMeters < 1001){\r\n return Math.round(distanceInMeters) + \" m\"\r\n } else {\r\n return geoCoder.metersToKm(distanceInMeters).toFixed(2) + \" km\"\r\n }\r\n } catch {\r\n return \"\";\r\n }\r\n }\r\n\r\n @Emit(\"updateEvent\")\r\n private updateEventState(state: number): MobileEventShareInfo {\r\n let eventShare = {...this.item};\r\n eventShare.state = state;\r\n return eventShare;\r\n }\r\n\r\n //Triggers the map to focus on the alarm in question\r\n private focus(): void{\r\n if(!this.distanceFromUser)\r\n return;\r\n\r\n this.setFocusedEvent(this.item.eventID);\r\n this.toggleRightSideBar();\r\n }\r\n\r\n private openChat(): void {\r\n this.setChatTab(\"EventShare\");\r\n this.toggleRightSideBar();\r\n this.setChatOpen(true);\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventShareItem.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventShareItem.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventShareItem.vue?vue&type=template&id=36de2863&scoped=true\"\nimport script from \"./EventShareItem.vue?vue&type=script&lang=ts\"\nexport * from \"./EventShareItem.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventShareItem.vue?vue&type=style&index=0&id=36de2863&prod&scoped=true&lang=css\"\nimport style1 from \"./EventShareItem.vue?vue&type=style&index=1&id=36de2863&prod&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 \"36de2863\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{staticStyle:{\"height\":\"100%\"},attrs:{\"show\":_vm.loading,\"rounded\":\"lg\",\"variant\":\"dark\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('i',{staticClass:\"fas fa-spinner fa-spin fa-2x\"})]},proxy:true}])},_vm._l((_vm.eventRecords),function(eventRecord){return _c('div',{key:eventRecord.eventRecordID,staticStyle:{\"border-top\":\"1px solid white\",\"padding\":\"5px\"}},[_c('span',{staticStyle:{\"font-weight\":\"400\"}},[_vm._v(_vm._s(eventRecord.details))]),_c('br'),_c('i',{staticStyle:{\"font-weight\":\"100\"}},[_vm._v(_vm._s(_vm.fromNow(eventRecord.created).replace('hours', 'hrs').replace('minutes','min'))+\" \")]),_c('br'),(_vm.getRaisedBy(eventRecord))?_c('h6',{staticStyle:{\"text-align\":\"right\",\"width\":\"100%\",\"margin-top\":\"-20px\"}},[_vm._v(\" Raised by: \"),_c('span',{staticStyle:{\"font-weight\":\"100\"}},[_vm._v(\" \"+_vm._s(_vm.getRaisedBy(eventRecord))+\" \")])]):_vm._e()])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport api from '@/services/api.service';\r\nimport EventUser from '@/types/sv-data/events/EventUser';\r\nimport { email } from 'vuelidate/lib/validators';\r\n\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n components:{}\r\n})\r\nexport default class MobileEventRecords extends Vue {\r\n @Mobile.State(\"isRightSideBarOpen\") private rightSideBarOpen: boolean;\r\n\r\n @Prop()\r\n private eventID: number;\r\n\r\n private eventRecords: any[] = [];\r\n private eventUsers: EventUser[] = [];\r\n private loading: boolean = false;\r\n private recordPoll: any = null;\r\n\r\n private async mounted(){\r\n this.loading = true;\r\n this.loadEvents();\r\n if(this.rightSideBarOpen){\r\n this.recordPoll = setInterval(async () => this.loadEvents(), 5000);\r\n }\r\n this.loading = false;\r\n }\r\n\r\n private async loadEvents() : Promise{\r\n this.eventRecords = await api.loadEventRecordsForMobile(this.eventID);\r\n this.eventUsers = await api.getEventUsersForEvent(this.eventID);\r\n }\r\n\r\n @Watch(\"eventRecords\")\r\n private eventRecordsWatch(newRecords: any[] | null, oldRecords: any[] | null){\r\n if(newRecords && oldRecords && oldRecords.length != 0 && oldRecords.length != newRecords.length){\r\n this.$emit(\"newRecords\", newRecords.length - oldRecords.length);\r\n }\r\n }\r\n\r\n @Watch(\"rightSideBarOpen\")\r\n public async sideBarWatcher(){\r\n // To ensure we don't nuke the app with loading the events only allow polling when the banner is open\r\n if(this.rightSideBarOpen){\r\n this.loadEvents();\r\n this.recordPoll = setInterval(async () => this.loadEvents(), 5000);\r\n } else {\r\n clearInterval(this.recordPoll);\r\n }\r\n }\r\n\r\n private getRaisedBy(eventRecord: any) {\r\n if(eventRecord.eventUserID){\r\n const eventUser = this.eventUsers.find(x => x.eventUserID === eventRecord.eventUserID);\r\n if(eventUser)\r\n return eventUser.name;\r\n return \"\"\r\n }\r\n\r\n return \"\";\r\n }\r\n\r\n private beforeDestroy() {\r\n\t\tclearInterval(this.recordPoll);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileEventRecords.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileEventRecords.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MobileEventRecords.vue?vue&type=template&id=5ae75cdf&scoped=true\"\nimport script from \"./MobileEventRecords.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileEventRecords.vue?vue&type=script&lang=ts\"\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 \"5ae75cdf\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport EventShareItem from './EventShareItem.vue';\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport MobileEventRecords from './MobileEventRecords.vue';\r\nimport { MobileEventShareInfo } from '@/store/mobile/types';\r\nimport api from '@/services/api.service';\r\nimport MobileEventShareStates from \"@/types/sv-data/enums/MobileEventShareStates\";\r\n\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n components:\r\n {\r\n \"event-share-item\": EventShareItem,\r\n \"mobile-event-records\" : MobileEventRecords,\r\n \"scrollbar\" : VuePerfectScrollbar\r\n }\r\n})\r\n\r\nexport default class MobileEventShare extends Vue {\r\n\t@Mobile.State(\"DeviceLocation\") private userLocation: any;\r\n\t@Mobile.Getter(\"getEventShareQueue\") private eventShareItems: MobileEventShareInfo[];\r\n\t@Mobile.State(\"ActiveEventShareItem\") private activeEvent: MobileEventShareInfo;\r\n\t@Mobile.Action(\"setActiveEventShareItem\") private setActiveEvent: (event: MobileEventShareInfo) => void;\r\n\t@Mobile.Mutation(\"setEventShareItems\") private setEventShareItems: (events: MobileEventShareInfo[]) => void;\r\n @Mobile.State(\"NavigateToActiveAlarm\") private navigateToAlarm: boolean;\r\n @Mobile.Mutation(\"setNavigationLocation\") private setNavigationLocation: (location) => void;\r\n\r\n private eventShareQueueVisible: boolean = true;\r\n private activeEventVisible: boolean = true;\r\n private showOverlay: boolean = false;\r\n private setActiveOrLeaving: boolean = true; // true is active, false is leaving\r\n private pendingEvent: MobileEventShareInfo = null;\r\n private unreadRecordCount: number = 0;\r\n\r\n @Watch(\"eventShareItems\")\r\n private eventShareItemsWatch(): void {\r\n //If the pending item no longer exists clear it\r\n if(!this.eventShareItems\r\n || this.eventShareItems.length == 0\r\n || (this.pendingEvent && !this.eventShareItems.find(x => x.eventID == this.pendingEvent.eventID)))\r\n {\r\n this.pendingEvent = null;\r\n }\r\n }\r\n\r\n private get eventQueueSize(): string {\r\n if(this.activeEventVisible){\r\n return (this.activeEvent) ? \"queueSmall\" : \"queueMedium\";\r\n } else {\r\n return \"queueLrg\"\r\n }\r\n }\r\n\r\n private toggleEventQueue(): void {\r\n //the event queue can't be collapse when there is no active event\r\n if (!this.activeEvent){\r\n this.eventShareQueueVisible = true;\r\n return;\r\n }\r\n\r\n this.eventShareQueueVisible = !this.eventShareQueueVisible;\r\n }\r\n\r\n private async trySetActiveEvent(confirmed: boolean = false): Promise{\r\n this.setActiveOrLeaving = true;\r\n let event = this.pendingEvent;\r\n if(!event)\r\n throw \"no event provided.\";\r\n\r\n if(!this.activeEvent || confirmed){\r\n if(this.activeEvent){\r\n this.removeEventShare(this.activeEvent.eventID);\r\n }\r\n event.state = MobileEventShareStates.Accepted;\r\n await api.setMobileEventShareItem(event);\r\n this.setActiveEvent(event);\r\n this.showOverlay = false;\r\n this.pendingEvent = null;\r\n return;\r\n }\r\n\r\n if(this.activeEvent && this.activeEvent.eventID != event.eventID){\r\n this.pendingEvent = event;\r\n this.showOverlay = true;\r\n }\r\n }\r\n\r\n private async updateEvent(event: MobileEventShareInfo): Promise {\r\n this.pendingEvent = event;\r\n if(event.state === MobileEventShareStates.Accepted){\r\n this.trySetActiveEvent(false);\r\n return;\r\n }\r\n\r\n if(event.state === MobileEventShareStates.Rejected || event.state === MobileEventShareStates.Left){\r\n //If we have left the active event, clear the navigation\r\n if(this.activeEvent && this.activeEvent.eventID === event.eventID){\r\n this.showOverlay = true;\r\n this.setActiveOrLeaving = false;\r\n } else {\r\n await api.setMobileEventShareItem(event);\r\n this.removeEventShare(event.eventID);\r\n this.pendingEvent = null;\r\n }\r\n }\r\n }\r\n\r\n private removeEventShare(eventID: number): void{\r\n const filteredItems = this.eventShareItems.filter(x => x.eventID != eventID);\r\n this.setEventShareItems(filteredItems);\r\n\r\n if ((!filteredItems || filteredItems.length === 0) && this.activeEvent){\r\n this.eventShareQueueVisible = false;\r\n }\r\n }\r\n\r\n private async leaveActiveEvent(): Promise {\r\n const activeEvent = {...this.activeEvent}\r\n activeEvent.state = MobileEventShareStates.Left;\r\n await api.setMobileEventShareItem(activeEvent);\r\n this.removeEventShare(activeEvent.eventID);\r\n this.eventShareQueueVisible = true;\r\n this.pendingEvent = null;\r\n this.showOverlay = false;\r\n this.setActiveEvent(null);\r\n if(this.navigateToAlarm){\r\n this.setNavigationLocation(null);\r\n }\r\n }\r\n\r\n @Watch(\"activeEvent\")\r\n private activeEventWatch(): void {\r\n if(!this.activeEvent)\r\n this.eventShareQueueVisible = true;\r\n }\r\n\r\n private cancelPendingStateChange(): void {\r\n this.showOverlay = false;\r\n this.pendingEvent = null;\r\n }\r\n\r\n public newRecords(value: number): void {\r\n var mobileEventRecord = this.$el.querySelector(\"#mobileEventRecords\");\r\n if(mobileEventRecord && mobileEventRecord.scrollTop != 0){\r\n this.unreadRecordCount += value;\r\n return;\r\n }\r\n\r\n this.unreadRecordCount = 0;\r\n }\r\n\r\n private scrollRecords(): void {\r\n var mobileEventRecord = this.$el.querySelector(\"#mobileEventRecords\");\r\n mobileEventRecord.scroll({\r\n top: 0,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n\r\n this.unreadRecordCount = 0;\r\n }\r\n\r\n private get pendingActive(): boolean {\r\n if(this.pendingEvent && this.activeEvent && this.activeEvent.eventID === this.pendingEvent.eventID){\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileEventShare.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileEventShare.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MobileEventShare.vue?vue&type=template&id=172973d4&scoped=true\"\nimport script from \"./MobileEventShare.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileEventShare.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MobileEventShare.vue?vue&type=style&index=0&id=172973d4&prod&scoped=true&lang=css\"\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 \"172973d4\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Watch, Mixins, Ref } from \"vue-property-decorator\";\r\nimport { AssetMapLayerItem } from \"../../mobile-assets/types\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport vselect3 from \"vselect3\";\r\nimport MobileAssetHistory from '@/components/mobile-assets/MobileAssetHistory.vue';\r\nimport FieldOpsMixin from '@/mixins/FieldOpsMixin';\r\nimport MobileAssetList from '@/components/mobile-assets/MobileAssetList.vue';\r\nimport MobileEventShare from './Events/MobileEventShare.vue';\r\n\r\nconst Mobile = namespace(\"mobile\");\r\nconst FieldOpsStore = namespace(\"fieldOps\");\r\n\r\n\r\n@Component({\r\n components:{\r\n \"v-select3\" : vselect3,\r\n \"mobile-status-history\" : MobileAssetHistory,\r\n \"mobile-asset-list\" : MobileAssetList,\r\n \"event-share-queue\" : MobileEventShare\r\n }\r\n})\r\n\r\nexport default class AssetControl extends Mixins(FieldOpsMixin) {\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@FieldOpsStore.Mutation(\"setViewingAssetId\") private setViewingAsset: (assetId: number) => void;\r\n\t@FieldOpsStore.State(\"viewingAssetId\") private viewingAssetId: number;\r\n\t@Mobile.State(\"EventShareItems\") private eventShareItems: () => void;\r\n\t@Mobile.State(\"UserAssetMapItem\") private userAssetStatus: AssetMapLayerItem;\r\n\t@Mobile.State private isRightSideBarOpen: boolean;\r\n private currentControlTabIndex: number = 0;\r\n private selectedAssetId: number | null = null;\r\n\t@Ref() statusHistory: MobileAssetHistory;\r\n\t@Ref() eventQueue: MobileEventShare;\r\n\r\n\r\n @Watch(\"isRightSideBarOpen\")\r\n private shouldFocusEventShare(){\r\n if(this.isRightSideBarOpen && this.eventShareItems && this.eventShareItems.length > 0){\r\n this.currentControlTabIndex = 2;\r\n }\r\n }\r\n\r\n private onAssetSelected(asset: AssetMapLayerItem | null){\r\n if(asset)\r\n this.selectedAssetId = asset.assetId;\r\n else\r\n this.selectedAssetId = null;\r\n\r\n this.setViewingAsset(asset ? asset.assetId : null);\r\n }\r\n\r\n private get userAssetId() : number | null {\r\n return this.userAssetStatus ? this.userAssetStatus.assetId : null;\r\n }\r\n\r\n\tprivate get isMobileEventShareEnabled(): boolean {\r\n\t\treturn (this.getFeature([\"Mobile\", \"FieldOps\", \"EventShare\"]) && this.userAssetStatus && this.userAssetStatus.shareable) ;\r\n\t}\r\n\r\n @Watch(\"viewingAssetId\")\r\n private mapViewingAssetChanged(){\r\n this.selectedAssetId = this.viewingAssetId;\r\n }\r\n\r\n private get filteredAssets() : AssetMapLayerItem[] {\r\n return this.assetAndUsersItems.filter(ast => ast.latLng && ast.assetId !== this.userAssetId)\r\n }\r\n\r\n @Watch(\"assetAndUsersItems\", { deep: true })\r\n private assetAndUsersWatch(){\r\n if(this.statusHistory){\r\n this.statusHistory.reloadHistory();\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetControl.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetControl.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AssetControl.vue?vue&type=template&id=55f0ebe6\"\nimport script from \"./AssetControl.vue?vue&type=script&lang=ts\"\nexport * from \"./AssetControl.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AssetControl.vue?vue&type=style&index=0&id=55f0ebe6&prod&lang=css\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport LiveCameras from \"@/components/mobile/live/LiveCameras.vue\";\r\nimport AssetControl from '../assets/AssetControl.vue';\r\nimport { UserPermissions } from '@/store/types';\r\n\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"live-cameras\": LiveCameras,\r\n\t\t\"asset-control\" : AssetControl\r\n\t}\r\n})\r\nexport default class RightSideBar extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Mobile.State isRightSideBarOpen: boolean;\r\n\t@Mobile.State isLeftSideBarOpen: boolean;\r\n\t@Mobile.Mutation toggleRightSideBarVisibility: () => void;\r\n\t@Mobile.State(state => state.MobileMode) mobileMode: string;\r\n\r\n\tprivate sideBarComponent: string = \"\";\r\n\r\n\tpublic async mounted() {\r\n\t\tthis.setDynamicComponent();\r\n\t}\r\n\r\n\t@Watch(\"mobileMode\")\r\n\tonMobileModeChanged(value: string, oldValue: string) {\r\n\t\tthis.setDynamicComponent();\r\n\t}\r\n\r\n\tsetDynamicComponent() {\r\n\t\tswitch (this.mobileMode) {\r\n\t\t\tcase \"live\":\r\n\t\t\t\tthis.sideBarComponent = \"live-cameras\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"fieldOps\":\r\n\t\t\t\tif (this.getPermissions.canViewFieldOps || this.getPermissions.canEditFieldOps) {\r\n\t\t\t\t\tthis.sideBarComponent = \"asset-control\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.sideBarComponent = \"none\";\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.sideBarComponent = \"none\";\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get showRightSidebar(): boolean {\r\n\t\treturn this.isRightSideBarOpen && !this.isLeftSideBarOpen;\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RightSideBar.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RightSideBar.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RightSideBar.vue?vue&type=template&id=2ec3d519&scoped=true\"\nimport script from \"./RightSideBar.vue?vue&type=script&lang=ts\"\nexport * from \"./RightSideBar.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RightSideBar.vue?vue&type=style&index=0&id=2ec3d519&prod&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 \"2ec3d519\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sidebar left-sidebar\",class:{ 'left--95vw': !_vm.showLeftSidebar, 'left-0vw': _vm.showLeftSidebar },attrs:{\"id\":\"leftSidebar\"}},[_c('div',{staticClass:\"container left-sidebar-contents d-flex flex-column\",attrs:{\"id\":\"leftSidebarContents\"}},[_c('scrollbar',{ref:\"scrollbar\",staticClass:\"flex-dynamic\",attrs:{\"settings\":{ suppressScrollX: true }}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col center-col\",staticStyle:{\"height\":\"60px\"}},[_c('button',{staticClass:\"btn btn-circle btn-xl\",attrs:{\"data-cy\":\"btn-logout\"},on:{\"click\":_vm.logout}},[_c('i',{staticClass:\"fas fa-sign-out-alt\"})])]),(this.featuresList.MobileUsers)?_c('div',{staticClass:\"col center-col\",staticStyle:{\"height\":\"60px\"}},[_c('label',{staticClass:\"switch\",staticStyle:{\"margin\":\"2vh\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.onlineToggle),expression:\"onlineToggle\"}],attrs:{\"id\":\"onlineToggle\",\"data-cy\":\"toggle-online\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.onlineToggle)?_vm._i(_vm.onlineToggle,null)>-1:(_vm.onlineToggle)},on:{\"change\":function($event){var $$a=_vm.onlineToggle,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.onlineToggle=$$a.concat([$$v]))}else{$$i>-1&&(_vm.onlineToggle=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.onlineToggle=$$c}}}}),_c('span',{staticClass:\"slider round\"})])]):_vm._e(),_c('div',{staticClass:\"col center-col\",staticStyle:{\"height\":\"60px\"}},[(_vm.mapStyle === 'dark')?_c('i',{staticClass:\"fas fa-fw fa-2x fa-moon\",staticStyle:{\"margin\":\"2vh\"},on:{\"click\":function($event){return _vm.setMapStyle('light')}}}):_c('i',{staticClass:\"fas fa-fw fa-2x fa-sun\",staticStyle:{\"margin\":\"2vh\"},on:{\"click\":function($event){return _vm.setMapStyle('dark')}}})])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col center-col\"},[_c('p',[_vm._v(\"Log out\")])]),(this.featuresList.MobileUsers)?_c('div',{staticClass:\"col center-col\"},[_c('p',[_vm._v(_vm._s(_vm.onlineToggle ? \"Online\" : \"Offline\"))])]):_vm._e(),_c('div',{staticClass:\"col center-col\"},[_c('p',[_vm._v(\"Map Mode\")])])]),(_vm.isMobileEventShareEnabled)?_c('div',[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col text-left\"},[_c('p',{staticClass:\"user-pref-label\"},[_vm._v(\"Navigation Mode:\")])]),_c('div',{staticClass:\"col\"},[_c('b-button-group',{attrs:{\"size\":\"md\"}},[_c('b-button',{attrs:{\"variant\":_vm.navigationMode == 'WALKING' ? 'primary':'secondary'},on:{\"click\":function($event){return _vm.setNavigationMode('WALKING')}}},[_c('i',{staticClass:\"fas fa-walking\"})]),_c('b-button',{attrs:{\"variant\":_vm.navigationMode == 'DRIVING' ? 'primary':'secondary'},on:{\"click\":function($event){return _vm.setNavigationMode('DRIVING')}}},[_c('i',{staticClass:\"fas fa-car\"})]),_c('b-button',{attrs:{\"variant\":_vm.navigationMode == 'BICYCLING' ? 'primary':'secondary'},on:{\"click\":function($event){return _vm.setNavigationMode('BICYCLING')}}},[_c('i',{staticClass:\"fas fa-bicycle\"})]),_c('b-button',{attrs:{\"variant\":_vm.navigationMode == 'OFF' ? 'primary':'secondary'},on:{\"click\":function($event){return _vm.setNavigationMode('OFF')}}},[_c('i',{staticClass:\"fas fa-ban\"})])],1)],1)])]):_vm._e(),(_vm.featuresList.MobileUsers)?_c('user-details',{ref:\"userDetails\",attrs:{\"id\":\"userDetails\",\"hideStatusUpdateButton\":\"\"},on:{\"search:focus\":function($event){return _vm.scrollToElement('userDetails')}}}):_vm._e(),(_vm.isFieldOpsEnabled)?_c('div',{staticClass:\"mt-1\"},[_c('div',{staticClass:\"m-5\"},[_c('div',{staticClass:\"mb-2\"},[_c('h5',[_vm._v(\"Asset: \")]),_c('v-select3',{staticClass:\"m-1 multiOptionMobile\",staticStyle:{\"width\":\"100%\"},attrs:{\"id\":\"assetType\",\"options\":this.assets,\"clearable\":true,\"appendToBody\":true,\"selectOnTab\":true,\"autoscroll\":true,\"multiple\":\"\",\"label\":\"title\",\"disabled\":!_vm.getPermissions.canEditFieldOps},on:{\"search:focus\":function($event){return _vm.scrollToElement('assetType')}},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(option){return [_c('span',[_vm._v(_vm._s(option.title))])]}},{key:\"option\",fn:function(option){return [_c('span',[_vm._v(_vm._s(option.title))])]}}],null,false,2966837165),model:{value:(_vm.selectedAssetsValue),callback:function ($$v) {_vm.selectedAssetsValue=$$v},expression:\"selectedAssetsValue\"}})],1),_c('div',{staticClass:\"mt-3\"},[_c('h5',[_vm._v(\"Status: \")]),_c('asset-status-input',{ref:\"recentStatuses\",attrs:{\"id\":\"recentStatuses\",\"assetId\":_vm.currentAsset.assetId,\"isMultiAsset\":_vm.multipleAssetsSelected,\"assetIds\":_vm.selectedAssetIds,\"disabled\":!_vm.getPermissions.canEditFieldOps},on:{\"search:focus\":function($event){return _vm.scrollToElement('recentStatuses')}},model:{value:(_vm.currentAsset.status),callback:function ($$v) {_vm.$set(_vm.currentAsset, \"status\", $$v)},expression:\"currentAsset.status\"}}),_c('b-input-group',{staticClass:\"m-1 mt-3 text-clear-group\",attrs:{\"disabled\":!_vm.getPermissions.canEditFieldOps},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('b-input-group-text',{attrs:{\"disabled\":!_vm.getPermissions.canEditFieldOps},on:{\"click\":function($event){_vm.currentAsset.statusNote = ''}}},[_c('i',{staticClass:\"fa fa-times\",staticStyle:{\"font-size\":\"1.2em\",\"font-weight\":\"500\"}})])]},proxy:true}],null,false,1530133613)},[_c('b-form-textarea',{attrs:{\"name\":\"assetStatusNote\",\"id\":\"assetStatusNote\",\"type\":\"textarea\",\"placeholder\":\"Note\",\"rows\":\"3\",\"disabled\":!_vm.getPermissions.canEditFieldOps,\"formatter\":function (v) { return !v ? v : v.substring(0,500); }},model:{value:(_vm.currentAsset.statusNote),callback:function ($$v) {_vm.$set(_vm.currentAsset, \"statusNote\", $$v)},expression:\"currentAsset.statusNote\"}})],1)],1)])]):_vm._e(),(_vm.featuresList.MobileUsers || _vm.isFieldOpsEnabled)?_c('b-button',{staticClass:\"float-right mt-1 btn mb-2\",attrs:{\"size\":\"md\",\"variant\":\"primary\",\"id\":\"updateAssetStatus\",\"name\":\"updateAssetStatus\",\"disabled\":_vm.updateDisabled()},on:{\"click\":function($event){return _vm.updateUserAndOrAssets()}}},[(_vm.requestPending)?_c('i',{staticClass:\"fa fa-spinner fa-lg fa-spin\"}):_vm._e(),_vm._v(\" Update \")]):_vm._e()],1)],1),_c('div',{staticClass:\"left-swipe-listener\",class:{ 'left-95vw': !_vm.showRightSidebar, 'left-0vw': _vm.showRightSidebar },attrs:{\"id\":\"leftSwipeListener\"},on:{\"click\":function($event){return _vm.toggleLeftSideBarVisibility()}}},[_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLeftSideBarOpen),expression:\"isLeftSideBarOpen\"}],staticClass:\"fas fa-chevron-left swipe-listener-icon\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"m-5\"},[_c('div',{staticClass:\"displayName\"},[_c('div',{staticClass:\"form-group\"},[_c('table',{staticClass:\"w-100\"},[(_vm.editDisplayName)?_c('tr',[_c('td',[_c('b-form-input',{class:{ 'invalid': _vm.$v.formName.userName.$error },attrs:{\"id\":\"user-details-change-display\",\"placeholder\":\"Change Display Name\",\"type\":\"text\",\"formatter\":function (v) { return !v ? v : v.substring(0,250); }},model:{value:(_vm.formName.userName),callback:function ($$v) {_vm.$set(_vm.formName, \"userName\", $$v)},expression:\"formName.userName\"}})],1),_c('td',[_c('i',{staticClass:\"fas fa-times\",on:{\"click\":function($event){return _vm.cancelUpdateName()}}})]),_c('td',[_c('b-button',{staticClass:\"btn btn-primary float-right\",attrs:{\"type\":\"submit\",\"variant\":\"primary\",\"disabled\":!_vm.formName.userName},on:{\"click\":function($event){return _vm.updateName()}}},[_vm._v(\"Update\")])],1)]):_c('tr',[_c('td',[_c('label',[_vm._v(_vm._s(_vm.formName.userName)+\" \")])]),_c('td',[_c('i',{staticClass:\"fas fa-fw fa-edit\",on:{\"click\":function($event){_vm.editDisplayName = true;}}})]),_c('td')])])])]),_c('div',{staticClass:\"mt-1 mb-4\"},[_vm._m(0),_c('transition',{attrs:{\"name\":\"slide\"}},[(_vm.refreshStatusRequired)?_c('b-alert',{staticClass:\"assetUpdateAlert\",attrs:{\"show\":\"\",\"data-cy\":\"status-refresh-alert\"}},[_c('div',{staticClass:\"alert-pointer\",on:{\"click\":function($event){return _vm.refreshStatus()}}},[_vm._v(\" Status Updated, click \"),_c('i',{staticClass:\"fas fa-sync refresh-icon\"}),_vm._v(\" to refresh \")])]):_vm._e()],1),_c('asset-status-input',{ref:\"recentStatuses\",attrs:{\"assetId\":_vm.userStatus.assetId},on:{\"search:focus\":function($event){return _vm.assetStatusActive()},\"blur\":function($event){return _vm.setStatusInput(false)}},model:{value:(_vm.userStatus.status),callback:function ($$v) {_vm.$set(_vm.userStatus, \"status\", $$v)},expression:\"userStatus.status\"}}),_c('b-input-group',{staticClass:\"m-1 mt-3 text-clear-group\",scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('b-input-group-text',{on:{\"click\":function($event){_vm.userStatus.statusNote = ''}}},[_c('i',{staticClass:\"fa fa-times\",staticStyle:{\"font-size\":\"1.2em\",\"font-weight\":\"500\"}})])]},proxy:true}])},[_c('b-form-textarea',{attrs:{\"data-cy\":\"user-status-note-input\",\"name\":\"userStatusNote\",\"id\":\"userStatusNote\",\"type\":\"textarea\",\"placeholder\":\"Note\",\"rows\":\"2\",\"formatter\":function (v) { return !v ? v : v.substring(0,500); }},on:{\"focus\":function($event){return _vm.setStatusInput(true)},\"blur\":function($event){return _vm.setStatusInput(false)}},model:{value:(_vm.userStatus.statusNote),callback:function ($$v) {_vm.$set(_vm.userStatus, \"statusNote\", $$v)},expression:\"userStatus.statusNote\"}})],1),(!_vm.hideStatusUpdateButton)?_c('b-button',{staticClass:\"float-right btn btn-primary btn-right\",attrs:{\"type\":\"submit\",\"variant\":\"primary\",\"disabled\":_vm.userStatusUpdateDisabled()},on:{\"click\":function($event){return _vm.updateUserMapStatus()}}},[_vm._v(\"Update\")]):_vm._e()],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('label',[_vm._v(\" User Status: \")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\nimport vselect3 from \"vselect3\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required } from \"vuelidate/lib/validators\";\r\nimport api from \"@/services/api.service\";\r\nimport AssetStatusInput from \"@/components/mobile/assets/AssetStatusInput.vue\"\r\nimport { UserAssetStatus } from '@/store/mobile/types';\r\n\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tcomponents: {\r\n\t\tvselect3,\r\n\t\t\"asset-status-input\" : AssetStatusInput\r\n\t},\r\n\r\n\tvalidations: {\r\n\t\tformName: {\r\n\t\t\tuserName: {\r\n\t\t\t\trequired,\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n})\r\nexport default class UserDetails extends Vue {\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter getUserId: number;\r\n\t@Mobile.Getter getUserAssetMapDisplayName: string;\r\n\t@Mobile.Action setUserAssetStatus:(mapStatus: UserAssetStatus) => Promise;\r\n\t@Mobile.Action loadUserAssetMapItem:() => Promise;\r\n\t@Mobile.State(\"UserAssetMapItem\") userMapStatus: UserAssetStatus;\r\n\r\n\t@Prop({ type:Boolean, default: false })\r\n\tprivate hideStatusUpdateButton: boolean;\r\n\tprivate mountedDisplayName: string = \"\";\r\n\tprivate editDisplayName: boolean = false;\r\n\tprivate userStatusPollingTimeout: NodeJS.Timeout = null;\r\n\tprivate refreshStatusRequired: boolean = false;\r\n\tprivate statusInputsActive: boolean = false;\r\n\r\n\tprivate formName = {\r\n\t\tuserName: \"\"\r\n\t};\r\n\r\n\tprivate userStatus : UserAssetStatus = {\r\n\t\tassetId: 0,\r\n\t\tstatus: \"\",\r\n\t\tstatusNote: \"\"\r\n\t};\r\n\r\n\tprivate currentUserStatus : UserAssetStatus = {\r\n\t\tassetId: 0,\r\n\t\tstatus: \"\",\r\n\t\tstatusNote: \"\"\r\n\t};\r\n\r\n\t@Watch(\"userMapStatus\", {deep : true})\r\n\tprivate userMapStatusWatch(): void {\r\n\t\tthis.setUserStatusFromCurrentUserStatus();\r\n\r\n\t\tif(this.userMapStatus){\r\n\t\t\tif(!this.userStatusUpdateDisabled || !this.statusInputsActive){\r\n\t\t\t\tthis.setStatuses();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.statusChanged) {\r\n\t\t\t\tthis.refreshStatusRequired = true;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setUserStatusFromCurrentUserStatus(): void {\r\n\t\tif(this.currentUserStatus && !this.statusInputsActive){\r\n\t\t\tthis.userStatus = {...this.currentUserStatus}\r\n\t\t}\r\n\t}\r\n\r\n\t// Check if status has been updated by the mobile user\r\n\tprivate get statusChanged(): boolean {\r\n\t\tif (this.currentUserStatus.status != this.userMapStatus.status\r\n\t\t|| this.currentUserStatus.statusNote != this.userMapStatus.statusNote) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate assetStatusActive(): void {\r\n\t\tthis.$emit(\"search:focus\");\r\n\t\tthis.setStatusInput(true);\r\n\t}\r\n\r\n\t// Sets statusInputsActive property to true or false\r\n\tprivate setStatusInput(value: boolean): void {\r\n\t\tthis.statusInputsActive = value;\r\n\t}\r\n\r\n\tprivate setStatuses(): void {\r\n\t\tconst status = {...this.userMapStatus};\r\n\t\tthis.currentUserStatus = status;\r\n\t\tthis.setUserStatusFromCurrentUserStatus();\r\n\r\n\t\tif(this.userStatus.assetId === 0){\r\n\t\t\tthis.userStatus = status;\r\n\t\t}\r\n\t}\r\n\r\n\t// Trigger the status refresh\r\n\tprivate refreshStatus(): void {\r\n\t\tthis.setStatuses();\r\n\t\tthis.refreshStatusRequired = false;\r\n\t}\r\n\r\n\tpublic userStatusUpdateDisabled(): boolean {\r\n\t\tif((this.userStatus.status === this.currentUserStatus.status\r\n\t\t\t&& ((!this.currentUserStatus.statusNote && !this.userStatus.statusNote)\r\n\t\t\t\t\t? true : this.currentUserStatus.statusNote === this.userStatus.statusNote)\r\n\t\t\t)\r\n\t\t\t|| (this.userStatus.status && !this.userStatus.status.trim())){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate cancelUpdateName(): void {\r\n\t\tthis.formName.userName = this.mountedDisplayName;\r\n\t\tthis.editDisplayName = false;\r\n\t}\r\n\r\n\tprivate async updateName(): Promise {\r\n\t\tthis.$v.formName.$touch();\r\n\r\n\t\tif (this.$v.formName.$invalid) return;\r\n\r\n\t\tif(this.formName.userName !== this.mountedDisplayName){\r\n\t\t\tawait api.setUserMapDisplayName(this.formName.userName);\r\n\t\t\tthis.mountedDisplayName = this.formName.userName;\r\n\t\t}\r\n\r\n\t\tthis.editDisplayName = false;\r\n\t}\r\n\r\n\tprivate async updateUserMapStatus(): Promise {\r\n\t\tawait this.setUserAssetStatus(this.userStatus);\r\n\t\t(this.$refs.recentStatuses as any).reloadStatusList();\r\n\t\tthis.refreshStatusRequired = false;\r\n\t}\r\n\r\n\tprivate close(): void {\r\n\t\tthis.$v.$reset();\r\n\t}\r\n\r\n\tprivate async created(): Promise {\r\n\t\tawait this.populateUserData();\r\n\t}\r\n\r\n\tprivate async mounted(): Promise{\r\n\t\tawait this.populateUserData();\r\n\t}\r\n\r\n\t@Watch(\"openLeftSidebar\")\r\n\tprivate async populateUserData(): Promise{\r\n\t\tawait this.loadUserAssetMapItem();\r\n\r\n\t\tthis.formName.userName = this.getUserAssetMapDisplayName;\r\n\t\tthis.mountedDisplayName = this.getUserAssetMapDisplayName;\r\n\t\tif(this.currentUserStatus && !this.statusInputsActive){\r\n\t\t\tthis.userStatus = {...this.currentUserStatus}\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserDetails.vue?vue&type=template&id=0003bb54&scoped=true\"\nimport script from \"./UserDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./UserDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserDetails.vue?vue&type=style&index=0&id=0003bb54&prod&scoped=true&lang=scss\"\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 \"0003bb54\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Mutation } from \"vuex-class\";\r\n\r\nimport UserDetails from \"@/components/mobile/UserDetails.vue\";\r\nimport { MobileFeatures } from \"@/store/mobile/types\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { AssetStatusInfo, AssetMapLayerItem } from '@/components/mobile-assets/types';\r\nimport vselect3 from \"vselect3\";\r\nimport api from '@/services/api.service';\r\nimport AssetStatusInput from '../assets/AssetStatusInput.vue';\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\n\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"user-details\": UserDetails,\r\n\t\t\"v-select3\" : vselect3,\r\n \"asset-status-input\" : AssetStatusInput,\r\n\t\t\"scrollbar\": VuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class LeftSideBar extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter getUserId: number;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter(\"getMapStyle\") mapStyle: string;\r\n\t@Mutation setMapStyle: (style: string) => void;\r\n\r\n\t@Mobile.State isRightSideBarOpen: boolean;\r\n\t@Mobile.State isLeftSideBarOpen: boolean;\r\n\t@Mobile.State(\"MobileFeatures\") mobileFeatures: MobileFeatures;\r\n\t@Mobile.State(\"UserMapOnlineStatus\") userMapOnlineStatus: boolean;\r\n\t@Mobile.State(\"NavigationMode\") navigationMode: boolean;\r\n\t@Mobile.State(\"UserAssetMapItem\") private userMapStatus: AssetMapLayerItem;\r\n\t@Mobile.Mutation setShowDirections: (showDirections: boolean) => void;\r\n\t@Mobile.Mutation toggleLeftSideBarVisibility: () => void;\r\n\t@Mobile.Mutation(\"setNavigationMode\") setNavigationMode: (mode: string) => void;\r\n\t@Mobile.Action(\"loadUserMapOnlineStatus\") loadUserMapOnlineStatus: (userId: number) => Promise;\r\n\t@Mobile.Action(\"setUserMapOnlineStatus\") toggleUserOnlineStatus: (online: boolean) => void;\r\n\t@Mobile.Action loadUserAssetMapItem:() => Promise;\r\n\r\n\tpublic showUnavailablePicker: boolean = false;\r\n\tpublic showBreakCard: boolean = false;\r\n\tpublic pauseAssetPolling: boolean = false;\r\n\r\n\tpublic directionsToggle: boolean = true;\r\n\tprivate onlineToggle: boolean = true;\r\n\tprivate requestPending: boolean = false;\r\n\tprivate assetStatusPollingTimeout: NodeJS.Timeout = null;\r\n\tprivate pollAssetPauseTimeout: NodeJS.Timeout = null;\r\n\r\n\t//Asset properties\r\n\tprivate assets: AssetStatusInfo[] =\r\n [\r\n {\r\n assetId: 0,\r\n title: \"You do not have any assets\",\r\n status: \"\",\r\n statusNote: \"\"\r\n }\r\n ];\r\n\r\n private currentAsset: AssetStatusInfo = {\r\n assetId: 0,\r\n status: \"\",\r\n statusNote:\"\",\r\n title: \"\"\r\n }\r\n private selectedAssetIds: number[] = [];\r\n private selectedAssetsValue: AssetStatusInfo[] = [];\r\n\t//Asset properties - end\r\n\r\n\tprivate get isMobileEventShareEnabled(): boolean {\r\n\t\treturn (this.getFeature([\"Mobile\", \"FieldOps\", \"EventShare\"]) && this.userMapStatus && this.userMapStatus.shareable) ;\r\n\t}\r\n\r\n\tprivate get assetStatusPollingEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Mobile\", \"AssetStatusPolling\"]);\r\n\t}\r\n\r\n\t@Watch(\"onlineToggle\")\r\n\tprivate userMapStatusToggle(newValue: boolean): void {\r\n\t\tthis.toggleUserOnlineStatus(newValue);\r\n\t}\r\n\r\n\t@Watch(\"userMapOnlineStatus\")\r\n\tprivate userMapOnlineStatusWatch(): void {\r\n\t\tthis.onlineToggle = this.userMapOnlineStatus;\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tthis.toggleUserOnlineStatus(true);\r\n this.loadAssets();\r\n\r\n\t\t// If feature flag is off then don't try and poll assets.\r\n\t\tif (!this.assetStatusPollingEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.pollAssets();\r\n\t}\r\n\r\n\tprivate async pollAssets(): Promise\r\n\t{\r\n\t\tif(this.assetStatusPollingTimeout != null && this.showLeftSidebar && !this.pauseAssetPolling) {\r\n\t\t\tawait this.loadAssets();\r\n\t\t\tawait this.loadUserAssetMapItem();\r\n\t\t}\r\n\r\n\t\tthis.assetStatusPollingTimeout = setTimeout(this.pollAssets, 2000);\r\n\t}\r\n\r\n\tprivate destroyed(): void {\r\n\t\tif (this.assetStatusPollingTimeout){\r\n\t\t\tclearTimeout(this.assetStatusPollingTimeout);\r\n\t\t\tthis.assetStatusPollingTimeout = null;\r\n\t\t}\r\n\r\n\t\tif (this.pollAssetPauseTimeout){\r\n\t\t\tclearTimeout(this.pollAssetPauseTimeout);\r\n\t\t\tthis.pollAssetPauseTimeout = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate canUpdateUserStatus() : boolean {\r\n\t\treturn (this.featuresList.MobileUsers && this.$refs.userDetails)\r\n\t\t\t? !(this.$refs.userDetails as any).userStatusUpdateDisabled()\r\n\t\t\t: false;\r\n\t}\r\n\r\n\tprivate async updateUserAndOrAssets(): Promise {\r\n\t\tif(this.requestPending){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tif(!this.assetStatusDisabled()){\r\n\t\t\t\tthis.requestPending = true;\r\n\t\t\t\tawait this.setAssetStatus();\r\n\t\t\t\tsetTimeout(() => this.requestPending = false, 1000);\r\n\t\t\t}\r\n\t\t} catch (ex){\r\n\t\t\tconsole.log(ex);\r\n\t\t}\r\n\r\n\t\tif (this.canUpdateUserStatus()) {\r\n\t\t\tawait (this.$refs.userDetails as any).updateUserMapStatus();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateDisabled(): boolean {\r\n\t\tif(!this.assetStatusDisabled() || this.canUpdateUserStatus() || this.requestPending){\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate scrollToElement(elementId: string): void {\r\n\t\tdocument.getElementById(elementId).scrollIntoView();\r\n\t}\r\n\r\n\t@Watch(\"isLeftSideBarOpen\")\r\n\tprivate onLeftSideBarChanged() : void {\r\n this.loadAssets();\r\n\t\tthis.pickUnavailable(false);\r\n\t}\r\n\r\n\t@Watch(\"directionsToggle\")\r\n\tprivate onDirectionsToggleChanged(value: boolean, oldValue: boolean): void {\r\n\t\tthis.setShowDirections(value);\r\n\t}\r\n\r\n\t@Watch(\"currentAsset.statusNote\")\r\n\tprivate onCurrentAssetStatusNoteChanged(newVal: string, oldVal: string): void {\r\n\t\tif (oldVal != newVal) {\r\n\t\t\tthis.suspendAssetPolling();\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"currentAsset.status\")\r\n\tprivate onCurrentAssetStatusChanged(newVal: string, oldVal: string): void {\r\n\t\tif (oldVal != newVal) {\r\n\t\t\tthis.suspendAssetPolling();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic suspendAssetPolling(): void {\r\n\t\tif (this.pollAssetPauseTimeout){\r\n\t\t\tclearTimeout(this.pollAssetPauseTimeout);\r\n\t\t}\r\n\r\n\t\tthis.pauseAssetPolling = true;\r\n\t\tthis.pollAssetPauseTimeout = setTimeout(() => this.pauseAssetPolling = false, 5000);\r\n\t}\r\n\r\n\tpublic pickUnavailable(show: boolean): void {\r\n\t\tthis.showUnavailablePicker = show;\r\n\t}\r\n\r\n\tpublic async logout(): Promise {\r\n\r\n\t\tconst value = await this.$bvModal.msgBoxConfirm(\r\n\t\t\t\"Are you sure you want to log out?\", {\r\n\t\t\t\ttitle: \"Logout\",\r\n\t\t\t\tokTitle: \"CONFIRM\",\r\n\t\t\t\tcancelTitle: \"CANCEL\"\r\n\t\t\t});\r\n\r\n\t\tif (!value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.toggleUserOnlineStatus(false); // Set the user to offline\r\n\t\tthis.$emit(\"logout\"); // change the interface once logged out\r\n\t}\r\n\r\n\tprivate get showRightSidebar(): boolean {\r\n\t\treturn this.isRightSideBarOpen && !this.isLeftSideBarOpen;\r\n\t}\r\n\r\n\tprivate get showLeftSidebar(): boolean {\r\n\t\treturn this.isLeftSideBarOpen && !this.isRightSideBarOpen;\r\n\t}\r\n\r\n\tprivate get isFieldOpsEnabled(): boolean {\r\n\t\treturn this.featuresList.Mobile.FieldOps && (this.getPermissions.canViewFieldOps || this.getPermissions.canEditFieldOps);\r\n\t}\r\n\r\n\t//Asset Methods\r\n\tprivate get multipleAssetsSelected() : boolean {\r\n if(this.selectedAssetIds && this.selectedAssetIds.length > 1){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n\tprivate async loadAssets(): Promise\r\n\t{\r\n var assets = await api.getMapLayerAssets(true);\r\n\r\n if(assets)\r\n\t\t{\r\n this.assets = assets.filter(ast => !ast.isTrackedAsset);\r\n\r\n\t\t\t//If we have selected assets we need to re-assign the observer values\r\n\t\t\tif(this.selectedAssetsValue && this.selectedAssetsValue.length > 0){\r\n\t\t\t\tconst selectedAssets = [...this.selectedAssetsValue];\r\n\t\t\t\tthis.selectedAssetsValue = [];\r\n\t\t\t\tselectedAssets.forEach(asset =>\r\n\t\t\t\t{\r\n\t\t\t\t\tconst assetObsObj = this.assets.find(x => x.assetId === asset.assetId);\r\n\t\t\t\t\tif(assetObsObj){\r\n\t\t\t\t\t\tthis.selectedAssetsValue.push(assetObsObj);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tthis.selectedAssetIds = this.selectedAssetsValue.map(asset => asset.assetId);\r\n \t} else {\r\n\t\t\t\tthis.selectedAssetsValue = [];\r\n\t\t\t\tthis.selectedAssetIds = [];\r\n\t\t\t\tthis.currentAsset = {\r\n\t\t\t\t assetId: 0,\r\n\t\t\t\t status: \"\",\r\n\t\t\t\t statusNote:\"\",\r\n\t\t\t\t title: \"\"\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async setAssetStatus(): Promise {\r\n if(this.multipleAssetsSelected){\r\n await api.setMultiMapLayerAssetStatuses(\r\n this.currentAsset.status,\r\n this.currentAsset.statusNote,\r\n this.selectedAssetIds);\r\n } else {\r\n const assetupdate = {\r\n assetId: this.currentAsset.assetId,\r\n status: this.currentAsset.status,\r\n statusNote:this.currentAsset.statusNote\r\n };\r\n\r\n await api.setAssetStatus(assetupdate);\r\n }\r\n this.loadAssets();\r\n (this.$refs.recentStatuses as any).reloadStatusList();\r\n }\r\n\r\n\tprivate assetStatusDisabled(): boolean {\r\n //If we can find the asset it hasn't been changed\r\n var result = this.assets.find(\r\n x => x.assetId === this.currentAsset.assetId\r\n && x.status === this.currentAsset.status\r\n && x.statusNote === this.currentAsset.statusNote\r\n );\r\n\r\n\t\t//If single asset and found match, disable or if note and status are whitespace\r\n\t\tif((!this.multipleAssetsSelected && result) || !this.currentAsset.status || !this.currentAsset.status.trim()){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t//If any of the multiple assets don't match enable the control\r\n\t\tif(this.multipleAssetsSelected){\r\n\t\t\tlet assetStatusesDontMatch: boolean = this.selectedAssetsValue.some(asset => {\r\n\t\t\t\tif(asset.statusNote !== this.currentAsset.statusNote\r\n\t\t\t\t\t|| asset.status !== this.currentAsset.status){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t});\r\n\t\t\treturn !assetStatusesDontMatch;\r\n\t\t}\r\n\r\n return false;\r\n }\r\n\r\n\t@Watch(\"selectedAssetsValue\", { deep: true })\r\n private async assetChanged(): Promise {\r\n //If only 1 asset has been selected use the single asset logic\r\n if(this.selectedAssetsValue && this.selectedAssetsValue.length === 1){\r\n this.currentAsset = {...this.selectedAssetsValue[0]};\r\n this.selectedAssetIds = [];\r\n }\r\n else if (this.selectedAssetsValue && this.selectedAssetsValue.length > 1) {\r\n\t\t\t//If multiple assets selected map the items and clear the currentAsset Model\r\n\t\t\tthis.selectedAssetIds = this.selectedAssetsValue.map(x => x.assetId);\r\n\r\n\t\t\t//If they have the same status and note we can show\r\n\t\t\tconst firstStatus = this.selectedAssetsValue[0].status;\r\n\t\t\tconst firstStatusNote = this.selectedAssetsValue[0].statusNote;\r\n\t\t\tlet assetStatusesDontMatch: boolean = this.selectedAssetsValue.some(asset => {\r\n\t\t\t\tif(asset.statusNote !== firstStatusNote\r\n\t\t\t\t\t|| asset.status !== firstStatus){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(assetStatusesDontMatch){\r\n\t\t\t\tthis.currentAsset = {\r\n\t\t\t\t\tassetId: 0,\r\n\t\t\t\t\tstatus: \"\",\r\n\t\t\t\t\tstatusNote:\"\",\r\n\t\t\t\t\ttitle: \"\"\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\tthis.currentAsset = {\r\n\t\t\t\t\tassetId: 0,\r\n\t\t\t\t\tstatus: firstStatus,\r\n\t\t\t\t\tstatusNote:firstStatusNote,\r\n\t\t\t\t\ttitle: \"\"\r\n\t\t\t\t}\r\n\t\t\t}\r\n } else {\r\n //If null, wipe out everything\r\n this.selectedAssetIds = [];\r\n this.currentAsset = {\r\n assetId: 0,\r\n status: \"\",\r\n statusNote:\"\",\r\n title: \"\"\r\n };\r\n }\r\n }\r\n\t//Asset methods - end\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeftSideBar.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LeftSideBar.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LeftSideBar.vue?vue&type=template&id=4795bd32&scoped=true\"\nimport script from \"./LeftSideBar.vue?vue&type=script&lang=ts\"\nexport * from \"./LeftSideBar.vue?vue&type=script&lang=ts\"\nimport style0 from \"./LeftSideBar.vue?vue&type=style&index=0&id=4795bd32&prod&lang=css\"\nimport style1 from \"./LeftSideBar.vue?vue&type=style&index=1&id=4795bd32&prod&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 \"4795bd32\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fixed-top notification-bar\"},[_c('transition',{attrs:{\"name\":\"notification\"}},[(_vm.showNotification)?_c('div',{staticClass:\"notification\",class:{ 'error': _vm.notificationContainsError }},[_c('i',{staticClass:\"fas fa-exclamation-triangle\"}),_vm._v(\" \"+_vm._s(_vm.notificationText)+\" \")]):_vm._e()])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Watch, Prop, Emit } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\n\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component\r\nexport default class NotificationBar extends Vue {\r\n\tpublic showNotification: boolean = false;\r\n\tpublic notificationDisplayTimeout: any = null;\r\n\tpublic notificationContainsError: boolean = false;\r\n\r\n\t@Mobile.State(state => state.NotificationText) notificationText: string;\r\n\t@Mobile.Mutation setNotificationText: (notificationText: string) => void;\r\n\r\n\t@Watch(\"notificationText\")\r\n\tonNotificationChanged(value: string, oldValue: string) {\r\n\t\tthis.showNotification = false;\r\n\t\tthis.notificationContainsError = false;\r\n\r\n\t\t// Don't show a blank notification\r\n\t\tif (value && value !== \"\") {\r\n\t\t\t// Changes the colour of the notification bar if it's an error\r\n\t\t\tif (value.toLowerCase().includes(\"error\")) {\r\n\t\t\t\tthis.notificationContainsError = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis.setNotificationValue(value);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic setNotificationValue(notificationText: string) {\r\n\t\t// Animate the notification bar\r\n\t\tsetTimeout(\r\n\t\t\tfunction() {\r\n\t\t\t\tthis.showNotification = true;\r\n\t\t\t}.bind(this),\r\n\t\t\t100\r\n\t\t);\r\n\r\n\t\t// Timeouts as variables (so it's easier to follow)\r\n\t\tlet notificationTimeToShow = 6000;\r\n\r\n\t\t// Single process mode - clear previous timeouts - remove if stacking notifications\r\n\t\twindow.clearTimeout(this.notificationDisplayTimeout);\r\n\t\tthis.notificationDisplayTimeout = null;\r\n\r\n\t\t// Set a timeout for the length of time to display the notification\r\n\t\tthis.notificationDisplayTimeout = setTimeout(\r\n\t\t\tfunction() {\r\n\t\t\t\tthis.showNotification = false;\r\n\t\t\t\tthis.setNotificationText(\"\");\r\n\t\t\t}.bind(this),\r\n\t\t\tnotificationTimeToShow\r\n\t\t);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationBar.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationBar.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./NotificationBar.vue?vue&type=template&id=49a54cbe&scoped=true\"\nimport script from \"./NotificationBar.vue?vue&type=script&lang=ts\"\nexport * from \"./NotificationBar.vue?vue&type=script&lang=ts\"\nimport style0 from \"./NotificationBar.vue?vue&type=style&index=0&id=49a54cbe&prod&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 \"49a54cbe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isMobileLiveCamerasEnabled)?_c('div',{staticClass:\"card fixed-top\",attrs:{\"data-cy\":\"live-camera\"}},[_c('div',{staticClass:\"card-body\"},[_c('div',{staticClass:\"d-flex flex-row\"},[_c('h4',[_c('i',{staticClass:\"fas fa-cctv\"}),_vm._v(\" \"+_vm._s(_vm.camera ? _vm.camera.title : 'Live Cameras')+\" \")]),(_vm.liveDeviceId != null)?_c('h3',{staticClass:\"ml-auto\"},[_c('i',{class:_vm.isStarredDevice() ? 'fas fa-star' : 'far fa-star',attrs:{\"data-cy\":\"device-star\"},on:{\"click\":function($event){return _vm.toggleStarredDevice()}}})]):_vm._e()]),_c('div',{staticClass:\"col camera-control\"},[_c('camera-control',{ref:\"camera\",attrs:{\"show-controls\":false,\"show-ptz-overlay\":false}})],1),_c('div',{staticClass:\"extra-headroom\"},[_c('starred-cameras')],1)])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.starredDevices.length > 0)?_c('div',{attrs:{\"data-cy\":\"starred-camera\"}},[_c('div',{staticClass:\"card-body p-5\",attrs:{\"data-cy\":\"cameras-card\"}},[_c('h6',[_c('i',{staticClass:\"fas fa-star\"}),_vm._v(\" Starred Cameras (\"+_vm._s(_vm.starredDevices.length)+\") \")]),_c('vue-perfect-scrollbar',{ref:\"starredDeviceScrollBar\",staticClass:\"mb-1\",staticStyle:{\"border\":\"1px solid #333\",\"height\":\"100%\"}},[_c('div',{staticClass:\"p-1 scrollable\",attrs:{\"data-cy\":\"loaded-cameras\"}},_vm._l((_vm.starredDevices),function(camera){return _c('div',{key:camera.objectID,staticClass:\"list-group-item-action d-flex\",class:(camera.deviceID == _vm.liveDeviceId ? 'selected' : ''),attrs:{\"data-cy\":\"loaded-starred-camera\"},on:{\"click\":function($event){return _vm.showAreaCamera(camera)}}},[_c('div',{staticClass:\"align-self-center\"},[_vm._v(_vm._s(camera.title)+\" (\"+_vm._s(camera.area)+\")\")])])}),0)])],1)]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Inject, Emit } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Mutation, Action } from \"vuex-class\";\r\nimport { ICamera } from \"@/store/views/types\";\r\nimport { StarredDevice } from \"@/store/mobile/types\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\n\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class StarredCameras extends Vue {\r\n\t@Mobile.Mutation setLiveDevice: (camera: ICamera) => void;\r\n\t@Mobile.State(\"StarredDevices\") starredDevices: StarredDevice[];\r\n\t@Mobile.Getter(\"getLiveDeviceId\") liveDeviceId: number;\r\n\r\n\tprivate async showAreaCamera(camera) {\r\n\t\tthis.setLiveDevice(camera);\r\n\t\tthis.deviceSelected();\r\n\t}\r\n\r\n\t@Emit(\"deviceSelected\")\r\n\tpublic deviceSelected() {}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StarredCameras.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StarredCameras.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./StarredCameras.vue?vue&type=template&id=63532734&scoped=true\"\nimport script from \"./StarredCameras.vue?vue&type=script&lang=ts\"\nexport * from \"./StarredCameras.vue?vue&type=script&lang=ts\"\nimport style0 from \"./StarredCameras.vue?vue&type=style&index=0&id=63532734&prod&scoped=true&lang=scss\"\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 \"63532734\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Watch, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Action } from \"vuex-class\";\r\nimport StarredCameras from \"@/components/mobile/live/StarredCameras.vue\";\r\nimport { StarredDevice } from \"@/store/mobile/types\";\r\nimport { ICamera } from \"@/store/views/types\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\n\r\nconst SessionStore = namespace(\"sessions\");\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"starred-cameras\": StarredCameras\r\n\t}\r\n})\r\nexport default class CameraPlayer extends Vue {\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@SessionStore.Action updateSession: any;\r\n\r\n\t@Mobile.Action toggleDeviceStarred: (devicedId: number) => void;\r\n\r\n\t@Mobile.Getter(\"getLiveDeviceId\") liveDeviceId: number;\r\n\t@Mobile.State(\"StarredDevices\") starredDevices: StarredDevice[];\r\n\t@Mobile.State(state => state.LiveDevice) camera: ICamera;\r\n\t@Mobile.Action loadStarredDevices: () => Promise;\r\n\r\n\t$refs!: {\r\n\t\tcamera: any;\r\n\t};\r\n\r\n\tpublic get isMobileLiveCamerasEnabled() {\r\n\t\treturn this.getFeature([\"Mobile\", \"Live\"]);\r\n\t}\r\n\r\n\tasync mounted() {\r\n\t\tif(this.isMobileLiveCamerasEnabled)\r\n\t\t{\r\n\t\t\tthis.loadStarredDevices();\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"liveDeviceId\")\r\n\tprivate async onLiveDeviceIdChanged(value: number, oldValue: number) {\r\n\t\tawait this.updateSession({ resourceId: SessionResource.DeviceServiceSession });\r\n\t\tthis.$refs.camera.stop();\r\n\t\tthis.$refs.camera.startCamera(value);\r\n\t}\r\n\r\n\tpublic isStarredDevice() {\r\n\t\treturn this.starredDevices.some(device => device.deviceID == this.liveDeviceId);\r\n\t}\r\n\r\n\tpublic async toggleStarredDevice() {\r\n\t\tawait this.toggleDeviceStarred(this.liveDeviceId);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraPlayer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraPlayer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CameraPlayer.vue?vue&type=template&id=1a6b32ff&scoped=true\"\nimport script from \"./CameraPlayer.vue?vue&type=script&lang=ts\"\nexport * from \"./CameraPlayer.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CameraPlayer.vue?vue&type=style&index=0&id=1a6b32ff&prod&scoped=true&lang=scss\"\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 \"1a6b32ff\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isProjectionsLoaded && _vm.templates.length > 0)?_c('div',{staticClass:\"card safe card-padding raise-select-body\"},[_c('div',{staticClass:\"header\"},[_c('button',{staticClass:\"btn btn-primary btn-circle constant\",attrs:{\"data-cy\":\"btn-close\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('i',{staticClass:\"fas fa-times\"})]),_c('div',{staticClass:\"header-spacer constant\"}),_c('button',{staticClass:\"btn btn-primary btn-circle constant\",attrs:{\"data-cy\":\"btn-prev\"},on:{\"click\":_vm.onPrevious}},[_c('i',{staticClass:\"fas fa-chevron-left\"})]),_c('div',{staticClass:\"template-title\"},[_vm._v(_vm._s(_vm.templates[_vm.templateIdx].title))]),_c('button',{staticClass:\"btn btn-primary btn-circle constant\",attrs:{\"data-cy\":\"btn-next\"},on:{\"click\":_vm.onNext}},[_c('i',{staticClass:\"fas fa-chevron-right\"})])]),_c('b-form-input',{attrs:{\"data-cy\":\"search-input\",\"value\":_vm.searchTerm,\"type\":\"search\",\"placeholder\":\"Search...\"},on:{\"update\":_vm.onSearchUpdate}}),(_vm.hasQuickRaises && _vm.selectMode === 'quick')?[_c('quick-select',{staticClass:\"h-100\",attrs:{\"data-cy\":\"quick-select\",\"raises\":_vm.quickRaises},on:{\"raise\":function (r) { return _vm.$emit('raise', r); }}}),_c('b-button',{attrs:{\"data-cy\":\"btn-load-all\",\"variant\":\"link\"},on:{\"click\":_vm.onLoadAll}},[_vm._v(\" Load All \")])]:[_c('search-select',{staticClass:\"h-100\",attrs:{\"data-cy\":\"search-select\",\"raises\":_vm.templates[_vm.templateIdx].raises,\"searchTerm\":_vm.searchTerm},on:{\"raise\":function (r) { return _vm.$emit('raise', r); }}}),(_vm.hasQuickRaises)?_c('b-button',{attrs:{\"data-cy\":\"btn-back\",\"variant\":\"link\"},on:{\"click\":_vm.onBack}},[_vm._v(\" Back \")]):_vm._e()]],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"quick-select-body\"},_vm._l((_vm.sortedRaises),function(r){return _c('div',{key:((r.typeID) + \"-\" + (r.manualRaiseType)),class:_vm.raiseItemClass,attrs:{\"data-cy\":\"raise-item\"}},[_c('button',{staticClass:\"btn btn-circle btn-xl\",on:{\"click\":function($event){return _vm.$emit('raise', r)}}},[_c('i',{staticClass:\"fa-lg white-icon\",class:r.iconData ? r.iconData : 'fas fa-ellipsis-h'})]),_c('raise-title',{staticClass:\"title-quick\",attrs:{\"titleList\":r.titleList}})],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('text-highlight',{attrs:{\"data-cy\":\"title-with-highlight\",\"queries\":_vm.highlightText,\"highlightStyle\":(_vm.style = 'padding:0;border-radius: 0')}},[_vm._v(\" \"+_vm._s(_vm.formattedTitle)+\" \")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport TextHighlight from \"vue-text-highlight\";\r\n\r\nconst slashRegexp = /\\//gi;\r\n\r\nconst buildTitle = (titles: string[]) => {\r\n\tconst processedTitles = titles.map(t => t.replace(slashRegexp, \" / \"));\r\n\treturn processedTitles.join(\" | \");\r\n};\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"text-highlight\": TextHighlight\r\n\t}\r\n})\r\nexport default class Title extends Vue {\r\n\t@Prop({ default: () => [] }) titleList: string[];\r\n\t@Prop({ default: \"\" }) highlightText: string;\r\n\r\n\tget formattedTitle() {\r\n\t\treturn buildTitle(this.titleList);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Title.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Title.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Title.vue?vue&type=template&id=2b4e8562\"\nimport script from \"./Title.vue?vue&type=script&lang=ts\"\nexport * from \"./Title.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { MobileRaiseProjection } from \"@/store/mobile-raise/types\";\r\nimport { sortBy } from \"lodash\";\r\nimport Title from \"./Title.vue\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"raise-title\": Title\r\n\t}\r\n})\r\nexport default class QuickSelect extends Vue {\r\n\t@Prop() raises: MobileRaiseProjection[];\r\n\r\n\tget sortedRaises(): MobileRaiseProjection[] {\r\n\t\treturn sortBy(this.raises, [\"gridSetSlot\"]);\r\n\t}\r\n\r\n\tget raiseItemClass(): string[] {\r\n\t\treturn [\"quick-item\", this.getItemsClass()];\r\n\t}\r\n\r\n\tprivate getItemsClass(): string {\r\n\t\tif (this.raises.length <= 2) {\r\n\t\t\treturn \"one-col\";\r\n\t\t} else if (this.raises.length <= 6) {\r\n\t\t\treturn \"two-col\";\r\n\t\t} else {\r\n\t\t\treturn \"three-col\";\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./QuickSelect.vue?vue&type=template&id=0e3aa324&scoped=true\"\nimport script from \"./QuickSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./QuickSelect.vue?vue&type=script&lang=ts\"\nimport style0 from \"./QuickSelect.vue?vue&type=style&index=0&id=0e3aa324&prod&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 \"0e3aa324\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vue-perfect-scrollbar',{staticClass:\"search-select-body\",attrs:{\"settings\":{ suppressScrollX: true }}},_vm._l((_vm.filteredRaises),function(raise){return _c('div',{key:((raise.typeID) + \"-\" + (raise.manualRaiseType)),staticClass:\"btn-primary search-item\",attrs:{\"data-cy\":\"search-raise-item\"},on:{\"click\":function($event){return _vm.$emit('raise', raise)}}},[_c('i',{staticClass:\"mr-2\",class:raise.manualRaiseType ? 'fas fa-bell' : 'fas fa-sticky-note'}),_c('raise-title',{staticClass:\"title\",attrs:{\"titleList\":raise.titleList,\"highlightText\":_vm.searchTerm}})],1)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { MobileRaiseProjection } from \"@/store/mobile-raise/types\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport Title from \"./Title.vue\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"raise-title\": Title,\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class SearchSelect extends Vue {\r\n\t@Prop() raises: MobileRaiseProjection[];\r\n\t@Prop() searchTerm: string;\r\n\r\n\tget filteredRaises() {\r\n\t\treturn this.searchTerm ? this.raises.filter(this.raisePredicate) : this.raises;\r\n\t}\r\n\r\n\traisePredicate(r: MobileRaiseProjection) {\r\n\t\treturn r.titleList.some(t => t.toLowerCase().includes(this.searchTerm.toLowerCase()));\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SearchSelect.vue?vue&type=template&id=510ea6fd&scoped=true\"\nimport script from \"./SearchSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./SearchSelect.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SearchSelect.vue?vue&type=style&index=0&id=510ea6fd&prod&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 \"510ea6fd\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { MobileRaiseTemplateProjection, MobileRaiseProjection } from \"@/store/mobile-raise/types\";\r\nimport QuickSelect from \"./QuickSelect.vue\";\r\nimport SearchSelect from \"./SearchSelect.vue\";\r\n\r\nconst MobileRaiseTemplates = namespace(\"mobileRaise\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"quick-select\": QuickSelect,\r\n\t\t\"search-select\": SearchSelect\r\n\t}\r\n})\r\nexport default class RaiseSelect extends Vue {\r\n\t@MobileRaiseTemplates.State(state => state.templateProjections) templates: MobileRaiseTemplateProjection[];\r\n\t@MobileRaiseTemplates.State(state => state.currentTemplateProjectionIdx) templateIdx: number | null;\r\n\t@MobileRaiseTemplates.State isProjectionsLoaded: boolean;\r\n\t@MobileRaiseTemplates.Mutation(\"nextTemplateProjection\") nextTemplate: () => void;\r\n\t@MobileRaiseTemplates.Mutation(\"previousTemplateProjection\") previousTemplate: () => void;\r\n\t@MobileRaiseTemplates.Action loadTemplateProjections: () => Promise;\r\n\r\n\tprivate searchTerm: string = \"\";\r\n\tprivate selectMode = \"quick\";\r\n\r\n\tcreated(): void {\r\n\t\tthis.loadTemplateProjections();\r\n\t}\r\n\r\n\tonLoadAll(): void {\r\n\t\tthis.selectMode = \"search\";\r\n\t}\r\n\r\n\tonBack(): void {\r\n\t\tthis.selectMode = \"quick\";\r\n\t\tthis.searchTerm = \"\";\r\n\t}\r\n\r\n\tonSearchUpdate(newVal: string): void {\r\n\t\tif (this.selectMode === \"quick\") {\r\n\t\t\tthis.selectMode = \"search\";\r\n\t\t}\r\n\t\tthis.searchTerm = newVal;\r\n\t}\r\n\r\n\tonPrevious(): void {\r\n\t\tthis.searchTerm = \"\";\r\n\t\tthis.previousTemplate();\r\n\t}\r\n\r\n\tonNext(): void {\r\n\t\tthis.searchTerm = \"\";\r\n\t\tthis.nextTemplate();\r\n\t}\r\n\r\n\tprivate get quickRaises(): MobileRaiseProjection[] {\r\n\t\treturn this.templates[this.templateIdx].raises.filter(l => l.gridSetSlot !== null);\r\n\t}\r\n\r\n\tprivate get hasQuickRaises(): boolean {\r\n\t\treturn this.quickRaises.length !== 0;\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RaiseSelect.vue?vue&type=template&id=3a6acbce&scoped=true\"\nimport script from \"./RaiseSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./RaiseSelect.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RaiseSelect.vue?vue&type=style&index=0&id=3a6acbce&prod&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 \"3a6acbce\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.dataLoaded)?_c('div',{staticClass:\"card safe card-padding raise-select-body\",attrs:{\"data-cy\":\"raise-card\"}},[_c('h1',{staticClass:\"header\"},[_vm._v(\" Log \"),_c('raise-title',{attrs:{\"titleList\":_vm.raise.titleList}})],1),_c('p',[_vm._v(\" You are about to raise an log into the system for type \"),_c('b',[_vm._v(\" ' \"),_c('raise-title',{attrs:{\"titleList\":_vm.raise.titleList}}),_vm._v(\" ' \")],1),_vm._v(\" , please add all relevant information before proceeding \")]),_c('b-form-group',{attrs:{\"label-cols\":\"2\",\"label\":\"Start:\",\"label-align\":\"right\",\"state\":_vm.isStartTimeValid,\"invalid-feedback\":\"Start time is required\",\"valid-feedback\":'\\u200B'}},[_c('datetime',{attrs:{\"input-id\":\"time-start\",\"type\":\"time\",\"data-cy\":\"input-start-date\"},model:{value:(_vm.startTime),callback:function ($$v) {_vm.startTime=$$v},expression:\"startTime\"}})],1),_c('b-form-group',{attrs:{\"label-cols\":\"2\",\"label\":\"End:\",\"label-align\":\"right\"}},[_c('datetime',{attrs:{\"input-id\":\"time-end\",\"type\":\"time\",\"data-cy\":\"input-end-date\"},model:{value:(_vm.endTime),callback:function ($$v) {_vm.endTime=$$v},expression:\"endTime\"}})],1),_c('b-form-group',{attrs:{\"label\":\"Area:\",\"label-align\":\"top\",\"state\":_vm.isAreaValid,\"invalid-feedback\":\"Area is required\",\"valid-feedback\":'\\u200B',\"data-cy\":\"form-group-area\"}},[_c('vue-select',{class:['dark', 'flex-search', 'w-100'],attrs:{\"options\":_vm.getUserGroups,\"label\":\"title\",\"placeholder\":\"Please Select...\",\"data-cy\":\"input-area\"},model:{value:(_vm.area),callback:function ($$v) {_vm.area=$$v},expression:\"area\"}})],1),_c('b-form-group',{staticClass:\"notes-group\",attrs:{\"label\":\"Notes:\",\"label-align\":\"top\",\"state\":_vm.isNotesValid,\"invalid-feedback\":\"Notes is required\",\"valid-feedback\":'\\u200B',\"data-cy\":\"form-group-notes\"}},[_c('b-form-textarea',{staticClass:\"notes-control\",attrs:{\"placeholder\":\"Please add information/notes...\",\"data-cy\":\"input-notes\"},model:{value:(_vm.notes),callback:function ($$v) {_vm.notes=$$v},expression:\"notes\"}})],1),_c('div',{staticClass:\"footer\"},[_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"btn-cancel\"},on:{\"click\":function($event){return _vm.$emit('cancel')}}},[_vm._v(\"Cancel\")]),_c('b-button',{attrs:{\"variant\":\"primary\",\"disabled\":!_vm.isFormValid,\"data-cy\":\"btn-submit\"},on:{\"click\":_vm.submit}},[_vm._v(\"Submit\")])],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { Getter, Action } from \"vuex-class\";\r\nimport { Datetime } from \"vue-datetime\";\r\nimport vSelect from \"vue-select\";\r\nimport { UserGroup } from \"@/store/types\";\r\nimport { MobileRaiseProjection } from \"@/store/mobile-raise/types\";\r\nimport Title from \"./Title.vue\";\r\nimport api from \"@/services/api.service\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tdatetime: Datetime,\r\n\t\t\"raise-title\": Title,\r\n\t\t\"vue-select\": vSelect\r\n\t}\r\n})\r\nexport default class RaiseActivityLog extends Vue {\r\n\t@Getter getUserGroups: UserGroup[];\r\n\t@Action fetchUserGroups: () => Promise;\r\n\t@Prop() raise: MobileRaiseProjection;\r\n\r\n\tprivate startTime: string = \"\";\r\n\tprivate endTime: string = \"\";\r\n\tprivate area: UserGroup | null = null;\r\n\tprivate notes: string = \"\";\r\n\tprivate dataLoaded: boolean = false;\r\n\r\n\tasync created() {\r\n\t\tawait this.fetchUserGroups();\r\n\t\tthis.dataLoaded = true;\r\n\t\tthis.startTime = new Date().toISOString();\r\n\t}\r\n\r\n\tget isAreaValid() {\r\n\t\treturn !!this.area;\r\n\t}\r\n\tget isNotesValid() {\r\n\t\treturn !!this.notes;\r\n\t}\r\n\tget isStartTimeValid() {\r\n\t\treturn !!this.startTime;\r\n\t}\r\n\tget isFormValid() {\r\n\t\treturn this.isAreaValid && this.isNotesValid && this.isStartTimeValid;\r\n\t}\r\n\r\n\tasync submit() {\r\n\t\tconst newLog = {\r\n\t\t\tstart: this.startTime,\r\n\t\t\tend: this.endTime,\r\n\t\t\tareaID: this.area.groupID,\r\n\t\t\tcategoryID: this.raise.typeID,\r\n\t\t\toutcomeNote: this.notes\r\n\t\t};\r\n\t\tawait api.addActivityLog(newLog);\r\n\t\tthis.$emit(\"submit\");\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseActivityLog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseActivityLog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RaiseActivityLog.vue?vue&type=template&id=66c0cf1b&scoped=true\"\nimport script from \"./RaiseActivityLog.vue?vue&type=script&lang=ts\"\nexport * from \"./RaiseActivityLog.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RaiseActivityLog.vue?vue&type=style&index=0&id=66c0cf1b&prod&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 \"66c0cf1b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.dataLoaded)?_c('div',{staticClass:\"card safe card-padding raise-container\",attrs:{\"data-cy\":\"container\"}},[_c('h3',{staticClass:\"header my-5\"},[_vm._v(\" Raising \"),_c('raise-title',{attrs:{\"titleList\":_vm.raise.titleList}})],1),(_vm.isManualRaiseToAreaEnabled)?_c('div',{staticStyle:{\"margin\":\"5%\"}},[_c('area-tree-select',{attrs:{\"clearable\":false,\"append-to-body\":true,\"useDrawdownSearch\":false},model:{value:(_vm.selectedGroup),callback:function ($$v) {_vm.selectedGroup=$$v},expression:\"selectedGroup\"}})],1):_vm._e(),_c('b-button',{staticClass:\"m-4 btn-xl\",attrs:{\"variant\":\"primary\",\"data-cy\":\"btn-confirm\",\"disabled\":(!_vm.selectedGroup && _vm.isManualRaiseToAreaEnabled) || _vm.raisingAlarm},on:{\"click\":_vm.onConfirm}},[_vm._v(\" Confirm \")]),_c('b-button',{staticClass:\"m-4 btn-xl\",attrs:{\"variant\":\"secondary\",\"data-cy\":\"btn-cancel\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")])],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\r\n * async wrapper of geolocation getCurrentPosition, also encapsulating feature check\r\n * @param posOptions - PositionOptions passed to geolocation.getCurrentPosition\r\n */\r\nconst getDevicePosition = (posOptions: PositionOptions) => {\r\n\tif (\"geolocation\" in navigator) {\r\n\t\treturn new Promise((resolve: PositionCallback, reject: PositionErrorCallback) => {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(resolve, reject, posOptions);\r\n\t\t});\r\n\t} else {\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPositionError\r\n\t\tconst err: PositionError = {\r\n\t\t\tcode: 2,\r\n\t\t\tmessage: \"GEOLOCATION API IS NOT AVAILABLE\",\r\n\t\t\tPERMISSION_DENIED: 1,\r\n\t\t\tPOSITION_UNAVAILABLE: 2,\r\n\t\t\tTIMEOUT: 3\r\n\t\t};\r\n\t\treturn Promise.reject(err);\r\n\t}\r\n};\r\n\r\nexport default getDevicePosition;\r\n","import store from \"@/store\";\r\nimport getDevicePosition from \"./device.geolocation.service\";\r\n\r\nconst getWatchedDeviceLocation = () => store.getters[\"mobile/getWatchedDeviceLocation\"] as (\r\n\ttimeoutMs: number\r\n) => Promise;\r\n\r\nconst getIsWatchingLocation = () => store.state.mobile.IsWatchingLocation as boolean;\r\n\r\n/**\r\n * function, returning GPS coords either from store, updated by GPS watcher or directly from geolocation API\r\n * @param timeoutMs - operation timeout in milliseconds\r\n */\r\n// reason for adding such function: because in Chrome (84.0.4147.135) with GPS watcher registered, call to\r\n// navigator.geolocation.getCurrentPosition() just do nothing. Even error callback not executed after timeout.\r\nconst getPosition = async (timeoutMs: number) => {\r\n\tif (getIsWatchingLocation()) {\r\n\t\t// If we can't get watched position retrieve the device position\r\n\t\ttry {\r\n\t\t\treturn await getWatchedPosition(timeoutMs/2);\r\n\t\t} catch {\r\n\t\t\treturn await getUnwatchedDevicePosition(timeoutMs/2);\r\n\t\t}\r\n\t} else {\r\n\t\treturn await getUnwatchedDevicePosition(timeoutMs);\r\n\t}\r\n};\r\n\r\nconst getWatchedPosition = async (timeoutMs: number) => {\r\n\tconst loc = await getWatchedDeviceLocation()(timeoutMs);\r\n\t\treturn {\r\n\t\t\tlat: loc.lat(),\r\n\t\t\tlng: loc.lng()\r\n\t\t};\r\n}\r\n\r\nconst getUnwatchedDevicePosition = async (timeoutMs: number) => {\r\n\tconst posOptions: PositionOptions = {\r\n\t\ttimeout: timeoutMs,\r\n\t\tenableHighAccuracy: true\r\n\t};\r\n\tconst loc = await getDevicePosition(posOptions);\r\n\treturn {\r\n\t\tlat: loc.coords.latitude,\r\n\t\tlng: loc.coords.longitude\r\n\t};\r\n}\r\nexport default getPosition;\r\n","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { MobileRaiseProjection, MobileRaiseTemplateProjection } from \"@/store/mobile-raise/types\";\r\nimport Title from \"./Title.vue\";\r\nimport { Group } from \"@/store/eventqueue/types\";\r\nimport { ManualRaiseResult } from \"@/store/manual-raise/types\";\r\nimport getPosition from \"@/services/device.position.service\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport { ILatLng } from \"@sureview/v2-mapping-saas\";\r\nimport { AreaNode } from '@/types/sv-data/groups/AreaNode';\r\nimport { FeaturesList } from '@/store/types';\r\n\r\nconst ManualRaiseStore = namespace(\"manualRaise\");\r\nconst EventQueue = namespace(\"eventqueue\");\r\nconst mobile = namespace(\"mobile\");\r\nconst MobileRaiseTemplates = namespace(\"mobileRaise\");\r\n\r\n@Component(\r\n{\r\n\tcomponents: {\r\n\t\t\"raise-title\": Title,\r\n\t\t\"area-tree-select\": AreaTreeSelect\r\n\t}\r\n})\r\nexport default class RaiseManualRaise extends Vue\r\n{\r\n\t@Getter(\"getFeature\") private getFeature: (featureName: string[]) => boolean;\r\n\t@Prop()\r\n\tprivate raise: MobileRaiseProjection;\r\n\r\n\t@EventQueue.Action private fetchUserZone: () => Promise;\r\n\t@EventQueue.Getter private getUserZone: Group;\r\n\t@ManualRaiseStore.Action private raiseManualAlarm: ({ payload, autoHandle, raiseAndJoin, templateId }) => Promise;\r\n\t@ManualRaiseStore.Mutation private setOnCompleteHandler: (handler: (result: ManualRaiseResult) => void) => void;\r\n\t@MobileRaiseTemplates.State(state => state.templateProjections) private templates: MobileRaiseTemplateProjection[];\r\n\t@MobileRaiseTemplates.State(state => state.currentTemplateProjectionIdx) private templateIdx: number | null;\r\n\r\n\t@mobile.Getter(\"getCurrentLocationRegionGroupID\") private regionGroupID: number;\r\n\tprivate dataLoaded: boolean = false;\r\n\tprivate createdEventId: number | null = null;\r\n\tprivate selectedGroup: AreaNode = null;\r\n\tprivate raisingAlarm: boolean = false;\r\n\r\n\tprivate async created(): Promise {\r\n\t\tthis.onCreate();\r\n\t}\r\n\r\n\tprivate async onCreate(): Promise {\r\n\t\tthis.setOnCompleteHandler(this.onRaiseFinished.bind(this));\r\n\t\tawait this.fetchUserZone();\r\n\t\tthis.dataLoaded = true;\r\n\t}\r\n\r\n\tprivate beforeDestroy(): void {\r\n\t\tthis.setOnCompleteHandler(null);\r\n\t}\r\n\r\n\tprivate onRaiseFinished(result: ManualRaiseResult): void {\r\n\t\tthis.createdEventId = result.eventID;\r\n\t}\r\n\r\n\tprivate get shouldManualRaiseAndJoin(): boolean {\r\n\t\treturn this.getFeature([\"Mobile\", \"MobileRaise\", \"AutoShare\"]);\r\n\t}\r\n\r\n\tprivate get isManualRaiseToAreaEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Mobile\", \"MobileRaise\", \"RaiseToArea\"]);\r\n\t}\r\n\r\n\tprivate get isAreaRegionsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Areas\", \"Regions\"]);\r\n\t}\r\n\r\n\tprivate mounted(): void {\r\n\t\tif(this.isAreaRegionsEnabled && this.regionGroupID) {\r\n\t\t\tthis.selectedGroup = {\r\n\t\t\t\tid: this.regionGroupID,\r\n\t\t\t\tlabel: null //Label will be retrieved from the Area Tree Select\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async onConfirm(): Promise {\r\n\t\tif(this.raisingAlarm) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.raisingAlarm = true;\r\n\t\ttry {\r\n\t\t\tlet posString;\r\n\t\t\ttry {\r\n\t\t\t\tconst pos: ILatLng = await getPosition(4000);\r\n\t\t\t\tposString = `${pos.lat} ${pos.lng}`;\r\n\t\t\t}\r\n\t\t\tcatch {\r\n\t\t\t\tposString = \"\";\r\n\t\t\t}\r\n\r\n\t\t\tconst payload = {\r\n\t\t\t\tserverTypeEvent: this.raise.typeID,\r\n\t\t\t\tgroupID: this.selectedGroup ? this.selectedGroup.id : this.getUserZone.groupID,\r\n\t\t\t\tlocation: posString\r\n\t\t\t};\r\n\t\t\tawait this.raiseManualAlarm({ payload, autoHandle: false, raiseAndJoin: this.shouldManualRaiseAndJoin, templateId: this.templates[this.templateIdx].mobileRaiseTemplateID });\r\n\t\t\tthis.$emit(\"confirm\", this.createdEventId);\r\n\t\t}\r\n\t\tcatch(ex) {\r\n\t\t\tthrow ex;\r\n\t\t} \r\n\t\tfinally {\r\n\t\t\tthis.raisingAlarm = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onCancel(): void {\r\n\t\tthis.$emit('cancel');\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseManualRaise.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseManualRaise.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RaiseManualRaise.vue?vue&type=template&id=b2088022&scoped=true\"\nimport script from \"./RaiseManualRaise.vue?vue&type=script&lang=ts\"\nexport * from \"./RaiseManualRaise.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RaiseManualRaise.vue?vue&type=style&index=0&id=b2088022&prod&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 \"b2088022\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card safe card-padding raise-container\"},[_c('h3',{staticClass:\"header my-4\"},[_c('raise-title',{attrs:{\"titleList\":_vm.raise.titleList}}),_vm._v(\" Alarm Raised \"),_vm._m(0)],1),_c('p',[_vm._v(\" The alarm has been raised to the security center and will be processed as soon as possible. If it is safe to do so, please add any additional information related to this event. \")]),_c('b-form-textarea',{attrs:{\"placeholder\":\"Please add information/notes...\",\"data-cy\":\"input-notes\"},model:{value:(_vm.notes),callback:function ($$v) {_vm.notes=$$v},expression:\"notes\"}}),_c('upload-file-button',{attrs:{\"eventId\":_vm.eventId,\"uploadCancel\":_vm.cancelUpload,\"useIconBtn\":\"\"},on:{\"isUploading\":_vm.onIsUploading,\"uploadSuccess\":_vm.onUploadSuccess},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar triggerUpload = ref.triggerUpload;\nreturn [_c('b-button',{staticClass:\"my-2 w-100\",attrs:{\"variant\":\"primary\",\"data-cy\":\"btn-add\",\"disabled\":_vm.isUploading},on:{\"click\":triggerUpload}},[(_vm.isUploading)?_c('i',{staticClass:\"fa fa-spinner fa-lg fa-spin\"}):_c('i',{staticClass:\"fas fa-camera fa-lg pr-2\"}),_c('span',{staticClass:\"pl-2\"},[_vm._v(\"Add\")])])]}}])}),_c('b-button',{staticClass:\"my-2\",attrs:{\"variant\":\"primary\",\"data-cy\":\"btn-complete\"},on:{\"click\":_vm.onComplete}},[_vm._v(\" Update \")])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',{staticStyle:{\"padding-top\":\"5px\"}},[_c('i',{staticClass:\"fas fa-check-circle fa-2x\",staticStyle:{\"color\":\"green\"}})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-button',{staticClass:\"btn btn-primary\",class:_vm.useIconBtn ? 'btn-icon' : '',on:{\"click\":_vm.triggerUpload}},[_c('input',{ref:\"cameraInput\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\"image/*, capture=camera\"},on:{\"change\":_vm.onFileSelected}}),_c('i',{staticClass:\"fas fa-camera fa-lg\"})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport axios from \"axios\";\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { AuditService } from \"@/services/auditService\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport mobileApi from \"@/services/api.mobile.service\";\r\nimport api from \"@/services/api.service\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\n\r\nconst Mobile = namespace(\"mobile\");\r\nconst SessionStore = namespace(\"sessions\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\nconst OPERATOR_NOTE_TYPE_ID = 103;\r\n\r\n@Component\r\nexport default class UploadFileButton extends Vue {\r\n\tpublic cancelToken;\r\n\tpublic source;\r\n\tpublic selectedFile = null;\r\n\tpublic auditService: AuditService | null;\r\n\r\n\t@Prop(Number)\r\n\tpublic eventId: number;\r\n\r\n\t@Prop({ type: Number, default: OPERATOR_NOTE_TYPE_ID })\r\n\tpublic eventRecordTypeId: number;\r\n\r\n\t@Prop({type: Boolean, default: false})\r\n\tprivate useIconBtn: boolean;\r\n\r\n\t@SessionStore.Getter getSession: any;\r\n\t@SessionStore.Action updateSession: any;\r\n\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter(\"getUserName\") currentUserName!: string;\r\n\t@Getter(\"getUserId\") userID: number;\r\n\r\n\t@SiteMonitor.Action private fetchEventDetails: (eventId: number) => Promise;\r\n\r\n\t@Prop({type: Boolean, default: true})\r\n\tprivate isVisible: boolean;\r\n\r\n\t@Prop(Boolean)\r\n\tpublic uploadCancel: boolean;\r\n\r\n\r\n\t@Watch(\"isVisible\", { deep: true })\r\n\tprivate async onIsVisibleChanged(value: boolean, oldValue: boolean) {\r\n\t\tawait this.updateSession({ resourceId: SessionResource.AuditServiceSession });\r\n\t}\r\n\r\n\t@Watch(\"uploadCancel\", { deep: true })\r\n\tasync onUploadCancelChanged(value: boolean, oldValue: boolean) {\r\n\t\tthis.source.cancel();\r\n\r\n\t\tif (value === true) {\r\n\t\t\tawait mobileApi.addEventRecordForGuard(\r\n\t\t\t\tthis.eventId,\r\n\t\t\t\t`${this.currentUserName} has cancelled the file upload`,\r\n\t\t\t\tnull,\r\n\t\t\t\tthis.eventRecordTypeId,\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic triggerUpload() {\r\n\t\tvar cameraInputElement = this.$refs.cameraInput as HTMLInputElement;\r\n\t\tcameraInputElement.click();\r\n\t}\r\n\r\n\tpublic async onFileSelected(event) {\r\n\t\tthis.selectedFile = event.target.files[0];\r\n\t\tawait this.updateSession({ resourceId: SessionResource.AuditServiceSession });\r\n\t\tthis.uploadFile(this.updateProgressBar);\r\n\r\n\t\tvar cameraInputElement = this.$refs.cameraInput as HTMLInputElement;\r\n\t\tcameraInputElement.value = null;\r\n\t}\r\n\r\n\tpublic updateProgressBar(prog) {\r\n\t\tthis.emitUploadProgress(prog);\r\n\t}\r\n\r\n\tpublic async uploadFile(callback) {\r\n\t\tconst eventDetails = await this.fetchEventDetails(this.eventId);\r\n\r\n\t\tconst formData = new FormData();\r\n\t\tformData.append(\"image\", this.selectedFile, this.selectedFile.name);\r\n\r\n\t\tconst attatchedFileEventRecordType = 23;\r\n\r\n\t\tthis.cancelToken = axios.CancelToken;\r\n\t\tthis.source = this.cancelToken.source();\r\n\r\n\t\tconst config = {\r\n\t\t\tonUploadProgress: function(progressEvent) {\r\n\t\t\t\tvar percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);\r\n\r\n\t\t\t\tcallback(percentCompleted);\r\n\t\t\t},\r\n\t\t\tcancelToken: this.source.token\r\n\t\t};\r\n\r\n\t\tthis.emitIsUploading({ name: this.selectedFile.name });\r\n\r\n\t\t// Get the previously saved (in triggerUpload()) auth string for audit session\r\n\r\n\t\tlet auth = this.getSession(SessionResource.AuditServiceSession);\r\n\r\n\t\tthis.auditService = new AuditService(api.getAuditServiceAddress(), eventDetails?.auditEndpoint);\r\n\r\n\t\t// Create an event record, then upload a file and attach it to this event record\r\n\t\tconst eventRecordId = await mobileApi.addEventRecordForGuard(\r\n\t\t\tthis.eventId,\r\n\t\t\t`${this.currentUserName} has uploaded a file`,\r\n\t\t\tnull,\r\n\t\t\tthis.eventRecordTypeId\r\n\t\t);\r\n\r\n\t\tawait this.auditService\r\n\t\t\t.uploadFileForEventRecord(\r\n\t\t\t\t\"image\",\r\n\t\t\t\tthis.selectedFile,\r\n\t\t\t\tauth, this.eventId,\r\n\t\t\t\teventRecordId,\r\n\t\t\t\t60000,\r\n\t\t\t\tconfig\r\n\t\t\t)\r\n\t\t\t.then(async (response: any) => {\r\n\t\t\t\t// Finally, finish the sequence with a confirmation\r\n\t\t\t\tawait mobileApi.addEventRecordForGuard(\r\n\t\t\t\t\tthis.eventId,\r\n\t\t\t\t\t`File ${this.selectedFile.name} upload complete for EventRecordID: ${eventRecordId}`,\r\n\t\t\t\t\teventRecordId,\r\n\t\t\t\t\tattatchedFileEventRecordType\r\n\t\t\t\t);\r\n\t\t\t\tthis.emitUploadSuccess();\r\n\t\t\t\tthis.emitIsUploading(false);\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.emitUploadProgress(0);\r\n\t\t\t\t}, 5000);\r\n\t\t\t})\r\n\t\t\t.catch(async err => {\r\n\t\t\t\tconsole.log(`Upload failed! ${err}`);\r\n\t\t\t\tthis.emitIsUploading(false);\r\n\t\t\t\tthis.emitUploadProgress(0);\r\n\t\t\t\tthis.emitUploadError(err);\r\n\t\t\t});\r\n\t}\r\n\r\n\tpublic emitIsUploading(state) {\r\n\t\tthis.$emit(\"isUploading\", { state: state });\r\n\t}\r\n\tpublic emitUploadSuccess() {\r\n\t\tthis.$emit(\"uploadSuccess\");\r\n\t}\r\n\tpublic emitUploadError(err) {\r\n\t\tthis.$emit(\"uploadError\", { error: err });\r\n\t}\r\n\tpublic emitUploadProgress(value) {\r\n\t\tthis.$emit(\"uploadProgress\", { progress: value });\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadFileButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadFileButton.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UploadFileButton.vue?vue&type=template&id=584aeed1&scoped=true\"\nimport script from \"./UploadFileButton.vue?vue&type=script&lang=ts\"\nexport * from \"./UploadFileButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UploadFileButton.vue?vue&type=style&index=0&id=584aeed1&prod&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 \"584aeed1\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { MobileRaiseProjection } from \"@/store/mobile-raise/types\";\r\nimport Title from \"./Title.vue\";\r\nimport api from \"@/services/api.service\";\r\nimport mobileApi from \"@/services/api.mobile.service\";\r\nimport UploadFileButton from \"@/components/mobile/core/UploadFileButton.vue\";\r\nimport { UserPermissions } from \"@/store/types\";\r\n\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"raise-title\": Title,\r\n\t\t\"upload-file-button\": UploadFileButton\r\n\t}\r\n})\r\nexport default class ManualRaiseDetails extends Vue {\r\n\t@Prop() raise: MobileRaiseProjection;\r\n\t@Prop() eventId: number;\r\n\t@Prop() eventLocation: string;\r\n\t@Mobile.Action addNoteForEvent: any;\r\n\t@Getter getFeature: (featureName: string[]) => boolean;\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getUserName: string;\r\n\r\n\tprivate notes: string = \"\";\r\n\tprivate cancelUpload: boolean = false;\r\n\tprivate isUploading = false;\r\n\r\n\tprivate onIsUploading({ state }: { state: boolean }) {\r\n\t\tthis.isUploading = state;\r\n\t}\r\n\r\n\tprivate onUploadSuccess() {\r\n\t\tthis.isUploading = false;\r\n\t}\r\n\r\n\tprivate async onComplete() {\r\n\t\tawait this.addNote();\r\n\t\tthis.$emit(\"close\");\r\n\t}\r\n\r\n\tprivate async addNote() {\r\n\t\tif (this.notes.length > 0) {\r\n\t\t\tawait this.addNoteForEvent({\r\n\t\t\t\tguardNote: this.notes,\r\n\t\t\t\teventId: this.eventId\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualRaiseDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualRaiseDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ManualRaiseDetails.vue?vue&type=template&id=bf733dac&scoped=true\"\nimport script from \"./ManualRaiseDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./ManualRaiseDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ManualRaiseDetails.vue?vue&type=style&index=0&id=bf733dac&prod&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 \"bf733dac\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"chat-row\"},[_c('div',{ref:\"chatContainer\",staticClass:\"chat-container\",class:{ expanded: _vm.chatExpanded }},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.chatContentVisible),expression:\"chatContentVisible\"}],staticClass:\"h-100 w-100 messages\"},[_c('h5',[(this.eventShareId)?_c('span',{class:{'activeChat' : this.chatTab === 'EventShare' },on:{\"click\":function($event){return _vm.setChatTab('EventShare')}}},[_vm._v(\" Event \"),(_vm.eventShareNumberOfUnread > 0)?_c('span',{staticClass:\"badge badge-pill badge-danger\"},[_vm._v(\" \"+_vm._s(_vm.eventShareNumberOfUnread)+\" \")]):_vm._e()]):_vm._e(),(this.eventShareId)?_c('span',[_vm._v(\" | \")]):_vm._e(),_c('span',{class:{'activeChat' : (this.chatTab === 'General' && this.eventShareId) },on:{\"click\":function($event){return _vm.setChatTab('General')}}},[_vm._v(\" General \"),(_vm.twoWayNumberOfUnread > 0)?_c('span',{staticClass:\"badge badge-pill badge-danger\"},[_vm._v(\" \"+_vm._s(_vm.twoWayNumberOfUnread)+\" \")]):_vm._e()])]),_c('MessagesList',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.chatTab === 'General'),expression:\"chatTab === 'General'\"}],ref:\"generalMessagesList\",staticClass:\"h-100 w-100 mb-2\",attrs:{\"newestAt\":'bottom',\"messages\":_vm.twoWayMessages,\"loadMessagesAction\":_vm.loadMessagesAction(true)},on:{\"onBeforeDestroy\":_vm.resetState,\"onScrollToLastMessage\":function($event){return _vm.onScrollToLastMessage(true)}}}),(_vm.eventShareId)?_c('MessagesList',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.chatTab === 'EventShare'),expression:\"chatTab === 'EventShare'\"}],ref:\"eventMessagesList\",staticClass:\"h-100 w-100 mb-2\",attrs:{\"newestAt\":'bottom',\"messages\":_vm.eventShareMessages,\"loadMessagesAction\":_vm.loadMessagesAction(false)},on:{\"onBeforeDestroy\":_vm.resetState,\"onScrollToLastMessage\":function($event){return _vm.onScrollToLastMessage(false)}}}):_vm._e(),_c('b-input-group',{staticClass:\"mb-2\",attrs:{\"size\":\"lg\"}},[_c('b-form-textarea',{attrs:{\"rows\":\"1\",\"placeholder\":\"Send a message\",\"disabled\":_vm.isUploading},on:{\"input\":_vm.updateModel},model:{value:(_vm.message),callback:function ($$v) {_vm.message=$$v},expression:\"message\"}}),_c('b-input-group-append',[(this.eventChatFileUploadEnabled && _vm.chatTab === 'EventShare')?_c('upload-file-button',{attrs:{\"data-cy\":\"btn-shared-event-upload-image\",\"isVisible\":true,\"eventId\":_vm.eventShareId,\"eventRecordTypeId\":142,\"uploadCancel\":_vm.cancelUpload},on:{\"isUploading\":_vm.onIsUploading,\"uploadSuccess\":_vm.onUploadSuccess},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar triggerUpload = ref.triggerUpload;\nreturn [_c('b-button',{attrs:{\"variant\":\"primary\"},on:{\"click\":triggerUpload}},[(_vm.isUploading)?_c('i',{staticClass:\"fas fa-lg\",class:_vm.isSending ? 'fa-spinner fa-spin' : 'fas fa-paper-plane'}):_c('i',{staticClass:\"fas fa-camera fa-lg pr-2\"})])]}}],null,false,1093721514)}):_vm._e(),(_vm.isSendMessageVisible)?_c('b-button',{attrs:{\"disabled\":_vm.isSendMessageDisabled,\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.sendMessage()}}},[_c('i',{staticClass:\"fas fa-paper-plane fa-lg\"})]):_vm._e()],1)],1)],1),(_vm.chatExpanded)?_c('button',{staticClass:\"btn btn-secondary btn-circle ripple chat-btn chat-close\",attrs:{\"type\":\"button\"},on:{\"click\":_vm.onChatCollapse}},[_c('i',{staticClass:\"fas fa-times\"})]):_c('button',{staticClass:\"btn btn-secondary btn-circle btn-l ripple chat-btn\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){return _vm.setChatOpen(true)}}},[_c('i',{staticClass:\"fas fa-comments-alt\"}),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.numberOfUnread > 0),expression:\"numberOfUnread > 0\"}],staticClass:\"badge badge-pill badge-danger notification-badge\"},[_vm._v(\" \"+_vm._s(_vm.numberOfUnread)+\" \")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch, Prop, Ref } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Action } from \"vuex-class\";\r\nimport UploadFileButton from \"@/components/mobile/core/UploadFileButton.vue\";\r\nimport { MessageWithAttachment } from \"@/store/guard-chat/types\";\r\nimport MessagesList from \"./MessagesList.vue\";\r\nimport * as chatApi from \"@/services/api.guardChat.service\";\r\n\r\nconst GuardChat = namespace(\"guardChat\");\r\nconst Mobile = namespace(\"mobile\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tUploadFileButton,\r\n\t\tMessagesList\r\n\t\t}\r\n})\r\nexport default class Chat extends Vue {\r\n\t@GuardChat.Mutation resetState: () => void;\r\n\t@Getter getFeature: any;\r\n\r\n\t@Prop() eventShareId: number | null;\r\n\r\n\t@Ref() readonly chatContainer: HTMLDivElement;\r\n\t@Ref() readonly generalMessagesList: MessagesList;\r\n\t@Ref() readonly eventMessagesList: MessagesList;\r\n\r\n\t@GuardChat.State(\"numberOfUnread\") private eventShareNumberOfUnread: number;\r\n\t@GuardChat.Getter(\"getMessages\") private eventShareMessages: MessageWithAttachment[];\r\n\t@GuardChat.Mutation private removeMessages: () => void;\r\n\t@GuardChat.Mutation(\"setNumberOfUnread\") private setNumberOfUnread: (newValue: number) => void;\r\n\t@GuardChat.Action loadMessages: (eventId: number) => Promise;\r\n\t@GuardChat.Getter(\"getTwoWayMessages\") twoWayMessages: MessageWithAttachment[];\r\n\t@GuardChat.Action loadTwoWayMessages: (eventId: number) => Promise;\r\n\t@Getter(\"getUserId\") loggedInUserId: number;\r\n\t@Mobile.State private isRightSideBarOpen: boolean;\r\n\t@Mobile.Mutation(\"setChatTab\") private setChatTab: (tab: string) => void;\r\n\t@Mobile.Mutation(\"setChatOpen\") private setChatOpen: (open: boolean) => void;\r\n\t@Mobile.State(\"ChatOpen\") private chatExpanded: boolean;\r\n\t@Mobile.State(\"ChatTab\") private chatTab: string;\r\n\r\n\t//Extra flag to indicate if the chat was open when the rightside bar was toggle so we can re-open the chat\r\n\tprivate chatWasOpen: boolean = false;\r\n\r\n\t//will control visibility of chat content\r\n\t//will be set to true when chat container fully expanded (on transition end)\r\n\t//to prevent content reflow and scrolls during expand\r\n\tprivate chatContentVisible = false;\r\n\r\n\tprivate message: string = \"\";\r\n\tprivate isUploading: boolean = false;\r\n\tprivate cancelUpload: boolean = false;\r\n\tprivate isFirstExpand: boolean = true;\r\n\tprivate chatExpandTimeoutId: number | undefined = undefined;\r\n\tprivate chatCollapseTimeoutId: number | undefined = undefined;\r\n\tprivate twoWayNumberOfUnread: number = 0;\r\n\tprivate isDestroying: boolean = false;\r\n\tprivate pollUnreadsTimer: any = null;\r\n\tprivate isSending: boolean = false;\r\n\r\n\tprivate async created() {\r\n\t\tthis.startPollUnreads();\r\n\t}\r\n\r\n\tprivate onIsUploading({ state }: { state: boolean }) {\r\n\t\tthis.isUploading = state;\r\n\t}\r\n\r\n\tprivate onUploadSuccess() {\r\n\t\tthis.isUploading = false;\r\n\t}\r\n\r\n\t//Ensures we minimize the chat when the right side bar is open\r\n\t@Watch(\"isRightSideBarOpen\")\r\n\tprivate rightSideWatcher(){\r\n\t\tif(this.isRightSideBarOpen){\r\n\t\t\tthis.chatExpanded ? this.chatWasOpen = true : this.chatWasOpen = false;\r\n\t\t\tthis.setChatOpen(false);\r\n\t\t} else if (this.chatWasOpen) {\r\n\t\t\tthis.setChatOpen(true);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"chatExpanded\")\r\n\tprivate chatOpenWatch(): void{\r\n\t\tif(this.chatExpanded){\r\n\t\t\tthis.onChatExpand();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onChatExpand() {\r\n\t\tthis.chatContentVisible = true;\r\n\t\t// handler, bound via @transitionend at template fires bunch of times during transition.\r\n\t\t// the one, assigned directly to element and removed after have been fired, executed as expected (only once)\r\n\t\t// https://medium.com/better-programming/detecting-the-end-of-css-transition-events-in-javascript-8653ae230dc7\r\n\t\tconst onChatExpandTransitionEnd = (() => {\r\n\t\t\tthis.chatContainer.removeEventListener(\"transitionend\", onChatExpandTransitionEnd);\r\n\t\t\tthis.chatContentVisible = true;\r\n\t\t\t//adjust scrolling only after browser renders content visible\r\n\t\t\tthis.chatExpandTimeoutId = setTimeout(() => {\r\n\t\t\t\tif(this.generalMessagesList && this.chatTab === \"General\"){\r\n\t\t\t\t\tthis.generalMessagesList.restoreScrolling();\r\n\t\t\t\t\tif(this.isFirstExpand){\r\n\t\t\t\t\t\tthis.generalMessagesList.scrollToLastMessage();\r\n\t\t\t\t\t\tthis.isFirstExpand = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.eventMessagesList && this.chatTab === \"EventShare\"){\r\n\t\t\t\t\tthis.eventMessagesList.restoreScrolling();\r\n\t\t\t\t\tif(this.isFirstExpand){\r\n\t\t\t\t\t\tthis.eventMessagesList.scrollToLastMessage();\r\n\t\t\t\t\t\tthis.isFirstExpand = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}).bind(this);\r\n\r\n\t\tthis.chatContainer.addEventListener(\"transitionend\", onChatExpandTransitionEnd);\r\n\t}\r\n\r\n\tprivate onChatCollapse() {\r\n\t\tif(this.generalMessagesList) this.generalMessagesList.storeScrolling();\r\n\t\tif(this.eventMessagesList) this.eventMessagesList.storeScrolling();\r\n\r\n\t\tthis.chatCollapseTimeoutId = setTimeout(() => {\r\n\t\t\tthis.chatContentVisible = false;\r\n\t\t\tthis.setChatOpen(false);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate isAttachmentsFeatureEnabled() {\r\n\t\t// Commented out until we re-introduce file attachements\r\n\t\t// this.getFeature([\"Alarms\", \"SiteMonitor\", \"Messages\", \"Attachments\"]);\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate get isSendMessageVisible() {\r\n\t\tif (this.isAttachmentsFeatureEnabled()) {\r\n\t\t\treturn this.message.length > 0 && !this.isSending;\r\n\t\t}\r\n return true;\r\n }\r\n\r\n\tprivate get eventChatFileUploadEnabled(): Boolean\r\n\t{\r\n\t\treturn this.getFeature([\"Mobile\", \"FieldOps\", \"EventShare\", \"FileUpload\"]);\r\n\t}\r\n\r\n\tprivate get isSendMessageDisabled() {\r\n\t\treturn !this.message || !this.message.trim().length;\r\n\t}\r\n\r\n\tprivate updateModel($event) {\r\n\t\tif($event)\r\n\t\t\tthis.message = $event;\r\n\t}\r\n\r\n\tprivate loadMessagesAction(twoWay: boolean = false) {\r\n\t\tif (twoWay)\r\n\t\t\treturn () => this.loadTwoWayMessages(this.loggedInUserId);\r\n\t\treturn () => this.loadMessages(this.eventShareId);\r\n\t}\r\n\r\n\tprivate async onScrollToLastMessage(twoWay: boolean = false) {\r\n\t\tif (twoWay)\r\n\t\t\tawait chatApi.acknowledgeTwoWayOwn();\r\n\t \telse\r\n\t\t\tthis.setNumberOfUnread(0);\r\n\t}\r\n\r\n\tprivate async sendMessage(twoWay: boolean) {\r\n\t\tif(this.isSending) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isSending = true;\r\n\r\n\t\ttry {\r\n\t\t\tif (this.chatTab === \"General\") {\r\n\t\t\t\tawait chatApi.sendTwoWayMessage(this.loggedInUserId, {\r\n\t\t\t\t\tmessageType: \"mobileUser\",\r\n\t\t\t\t\tmessage: this.message\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tawait chatApi.sendMessage({\r\n\t\t\t\t\teventId: this.eventShareId,\r\n\t\t\t\t\tmessageType: \"guard\",\r\n\t\t\t\t\tmessage: this.message\r\n\t\t\t\t});\r\n\t\t\t\tthis.setNumberOfUnread(this.eventShareNumberOfUnread - 1);\r\n\t\t\t}\r\n\t\t} catch(error) {\r\n\t\t\tconsole.error(error)\r\n\t\t} finally {\r\n\t\t\tthis.isSending = false;\r\n\t\t\tthis.message = \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async startPollUnreads() {\r\n\t\tthis.pollUnreadsTimer = setInterval(async () => {\r\n\t\t\tif (!this.isDestroying) {\r\n\t\t\t\tthis.twoWayNumberOfUnread = await chatApi.getTwoWayUnackedCount();\r\n\t\t\t}\r\n\t\t}, 5000);\r\n\t}\r\n\r\n\tprivate get numberOfUnread(): number {\r\n\t\treturn (this.eventShareNumberOfUnread ? this.eventShareNumberOfUnread : 0)\r\n\t\t\t+ (this.twoWayNumberOfUnread ? this.twoWayNumberOfUnread : 0);\r\n\t}\r\n\r\n\t@Watch(\"chatTab\")\r\n\tprivate chatTabWatch(tab: string){\r\n\t\tif (!this.chatExpanded)\r\n\t\t\treturn;\r\n\r\n\t\tif (tab === \"General\" && this.generalMessagesList) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.generalMessagesList.scrollToLastMessage();\r\n\t\t\t}, 50);\r\n\t\t} else if (this.eventMessagesList) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.eventMessagesList.scrollToLastMessage();\r\n\t\t\t\tthis.setNumberOfUnread(0);\r\n\t\t\t}, 50);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"eventShareId\")\r\n\tprivate shareIDWatch(newValue: number | null, oldValue: number | null){\r\n\t\tif (oldValue != newValue) {\r\n\t\t\tthis.removeMessages();\r\n\t\t}\r\n\t\t//If we pick up a new event, set the chat tab to be the event share\r\n\t\tif (!oldValue && newValue) {\r\n\t\t\tthis.setChatTab(\"EventShare\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setChatTab(\"General\");\r\n\t}\r\n\r\n\tprivate beforeDestroy() {\r\n\t\tthis.isDestroying = true;\r\n\t\tclearInterval(this.pollUnreadsTimer);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chat.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Chat.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Chat.vue?vue&type=template&id=643685ea&scoped=true\"\nimport script from \"./Chat.vue?vue&type=script&lang=ts\"\nexport * from \"./Chat.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Chat.vue?vue&type=style&index=0&id=643685ea&prod&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 \"643685ea\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Watch, Mixins } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Action, Mutation } from \"vuex-class\";\r\n\r\nimport { MobileFeatures, TrackingToggle, WebAppInterface, MobileEventShareInfo, UserAssetStatus } from \"@/store/mobile/types\";\r\nimport { LogoutPayload, UserPermissions } from \"@/store/types\";\r\nimport { MobileRaiseProjection } from \"@/store/mobile-raise/types\";\r\n\r\nimport MobileMenu from \"@/components/mobile/core/MobileMenu.vue\";\r\nimport MobileMap from \"@/components/mobile/core/MobileMap.vue\";\r\nimport RightSideBar from \"@/components/mobile/core/RightSideBar.vue\";\r\nimport LeftSideBar from \"@/components/mobile/core/LeftSideBar.vue\";\r\nimport NotificationBar from \"@/components/mobile/core/NotificationBar.vue\";\r\nimport CameraPlayer from \"@/components/mobile/live/CameraPlayer.vue\";\r\nimport RaiseSelect from \"@/components/mobile/mobile-raise/RaiseSelect.vue\";\r\nimport { SubscriptionDto } from \"@/store/subscription/types\";\r\nimport RaiseActivityLog from \"@/components/mobile/mobile-raise/RaiseActivityLog.vue\";\r\nimport RaiseManualRaise from \"@/components/mobile/mobile-raise/RaiseManualRaise.vue\";\r\nimport ManualRaiseDetails from \"@/components/mobile/mobile-raise/ManualRaiseDetails.vue\";\r\nimport Chat from \"@/components/mobile/messages/Chat.vue\";\r\n\r\n// Mixins\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport MobileMixin from \"@/mixins/MobileMixin\";\r\nimport { AssetMapLayerItem } from '@/components/mobile-assets/types';\r\nimport mobileApi from \"@/services/api.mobile.service\";\r\n\r\nconst Mobile = namespace(\"mobile\");\r\nconst SessionStore = namespace(\"sessions\");\r\nconst Subscription = namespace(\"subscription\");\r\n\r\ndeclare var android: WebAppInterface;\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tnotificationSettings: any;\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"mobile-menu\": MobileMenu,\r\n\t\t\"mobile-map\": MobileMap,\r\n\t\t\"right-side-bar\": RightSideBar,\r\n\t\t\"left-side-bar\": LeftSideBar,\r\n\t\t\"notification-bar\": NotificationBar,\r\n\t\t\"camera-player\": CameraPlayer,\r\n\t\t\"raise-select\": RaiseSelect,\r\n\t\t\"raise-activity-log\": RaiseActivityLog,\r\n\t\t\"raise-manual-raise\": RaiseManualRaise,\r\n\t\t\"manual-raise-details\": ManualRaiseDetails,\r\n\t\t\"chat\": Chat\r\n\t}\r\n})\r\nexport default class MobileCore extends Mixins(MobileMixin) {\r\n\t// Feature toggle\r\n\t@Getter getUserId: number;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter(\"getIsFieldOpsLicensed\") private isFieldOpsLicensed: () => boolean;\r\n\t@Mobile.State(\"MobileFeatures\") mobileFeatures: MobileFeatures;\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Mobile.State(state => state.MobileMode) mobileMode: string;\r\n\t@Mobile.State(state => state.MapEnabled) mapEnabled: boolean;\r\n\t@Mobile.Mutation setMapEnabled: any;\r\n\t@Mobile.Mutation setNotificationText: any;\r\n\t@Mobile.Mutation setMobileMode: (mode: string) => void;\r\n\t@Mobile.Mutation toggleRightSideBarVisibility: () => void;\r\n\t@Mobile.Mutation toggleLeftSideBarVisibility: () => void;\r\n\t@Mobile.State(\"UserMapOnlineStatus\") private userMapOnlineStatus: boolean;\r\n\t@Mobile.State(\"EventShareItems\") private eventShareItems: MobileEventShareInfo[];\r\n\r\n\t// Availability\r\n\t@Mobile.Action loadUserAssetMapItem:() => void;\r\n\t@Mobile.State(\"UserAssetMapItem\") private userMapStatus: AssetMapLayerItem;\r\n\r\n\t// Sessions\r\n\t@Mobile.Action extendMobileSession: any;\r\n\t@SessionStore.Action updateSession: any;\r\n\r\n\t// Device\r\n\t@Mobile.Action registerUserDevice: any;\r\n\r\n\t// Maps\r\n\t@Mobile.Action(\"loadEventShareItems\") private loadEventShareItems: () => void;\r\n\r\n //Subscription\r\n @Subscription.State subscription: SubscriptionDto;\r\n\t@Subscription.Action fetchSubscription: any;\r\n\r\n\t// Logout\r\n\t@Action serverLogout: any;\r\n\t@Action logout: (payload?: LogoutPayload) => void;\r\n\r\n\t// Left and right sidebars\r\n\t@Mobile.State isRightSideBarOpen: boolean;\r\n\t@Mobile.State isLeftSideBarOpen: boolean;\r\n\r\n\t@Getter(\"getUserId\") loggedInUserId: number;\r\n\r\n\t//Event Share\r\n\t@Mobile.State(\"ActiveEventShareItem\") private activeEvent: MobileEventShareInfo;\r\n\r\n\r\n\t// Other vars\r\n\tprivate isLoggedOut: boolean = false;\r\n\tprivate eventPoll: any = null;\r\n\r\n\t// Dynamic component names\r\n\tprivate mainComponentName: string = \"\";\r\n\tprivate isSubscriptionValid: boolean = false;\r\n\tprivate isRaiseSelectVisible = false;\r\n private isLoading: boolean = true;\r\n private isRaiseActivityLogVisible = false;\r\n\tprivate isRaiseManualRaiseVisible = false;\r\n\tprivate isManualRaiseDetailsVisible = false;\r\n\tprivate raise: MobileRaiseProjection = null;\r\n\tprivate createdEventId: number | null = null;\r\n\tprivate liveGpsTrack: boolean = true;\r\n\tprivate isDestroying = false;\r\n\r\n\tprivate get isPrototype(): boolean {\r\n\t\tif (window.location.toString().startsWith(\"http://local\")) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isSuiteEnabled(): boolean {\r\n return this.getFeature([\"Suite\"]);\r\n }\r\n\r\n\tpublic get isMobileEnabled() {\r\n\t return this.getFeature([\"Mobile\"]) && this.isSubscriptionValid;\r\n\t}\r\n\r\n\tprivate get isManualLocationEnabled() {\r\n\t return this.getFeature([\"Mobile\", \"ManualLocation\"]);\r\n\t}\r\n\r\n\tget isTriggerMobileRaiseEnabled() {\r\n\t\treturn this.getFeature([\"Mobile\", \"MobileRaise\"]) && this.getPermissions.canUseMobile && this.getPermissions.canAccessManualRaise;\r\n\t}\r\n\r\n\tprivate get isFieldOpsEnabled() {\r\n\t\treturn this.getFeature([\"Mobile\", \"FieldOps\"]);\r\n\t}\r\n\r\n\tprivate get isFieldOpsUserOnline() : boolean {\r\n\t\t// If FieldOps is enabled and we are on the field op page, check to see if the user is online\r\n\t\treturn (this.isFieldOpsEnabled && this.mobileMode == \"fieldOps\") ? this.userMapOnlineStatus : true;\r\n\t}\r\n\r\n\tprivate get showFieldOps() : boolean {\r\n\t\tif (this.getPermissions.canViewFieldOps || this.getPermissions.canEditFieldOps) {\r\n\t\t\treturn this.isFieldOpsUserOnline;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate get isMobileEventShareEnabled(): boolean {\r\n\t\treturn (this.getFeature([\"Mobile\", \"FieldOps\", \"EventShare\"]) && this.userMapStatus && this.userMapStatus.shareable) ;\r\n\t}\r\n\r\n @Watch(\"liveGpsTrack\")\r\n private onGpsMode(): void{\r\n if(this.liveGpsTrack){\r\n this.startBackgroundLocationTracking();\r\n }\r\n else{\r\n this.stopBackgroundLocationTracking();\r\n }\r\n }\r\n\r\n @Watch(\"userMapOnlineStatus\")\r\n private onOnlineStatusChange(): void{\r\n if(this.userMapOnlineStatus){\r\n this.startBackgroundLocationTracking();\r\n }\r\n else{\r\n this.stopBackgroundLocationTracking();\r\n }\r\n\t}\r\n\r\n\t// add a watch so when we can check so we only trigger the pool once we know the user is shareable.\r\n\t@Watch(\"isMobileEventShareEnabled\")\r\n\tprivate enabledEventShare(): void {\r\n\t\tif(this.isMobileEventShareEnabled){\r\n\t\t\tthis.loadEventShareItems();\r\n\t\t\tif(this.eventPoll) clearInterval(this.eventPoll);\r\n\t\t\tthis.eventPoll = setInterval(() => this.loadEventShareItems(), 5000);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"mobileMode\")\r\n\tonMobileModeChanged(value: string, oldValue: string) {\r\n\t\tthis.setDynamicComponent();\r\n\t}\r\n\r\n\tasync created() {\r\n\t\t// hide the widget\r\n\t\twindow.zE('webWidget', 'hide');\r\n\t}\r\n\r\n\tasync mounted() {\r\n\t\ttry {\r\n\t\t\t// Fix for getting 100vh to calculate correctly on iOS\r\n\t\t\twindow.scrollTo(0, document.body.scrollHeight);\r\n\r\n\t\t\tthis.setMapEnabled(false); // default to map off\r\n\r\n\t\t\tawait this.fetchSubscription();\r\n\t\t\tthis.isSubscriptionValid = this.subscription.isActiveState;\r\n\t\t\t\r\n\t\t\tif(this.isSuiteEnabled && !this.isFieldOpsLicensed) {\r\n\t\t\t\tthis.logoutUser(\"User does not have a Field Ops Licence\");\r\n\t\t\t}\r\n\r\n\t\t\tif (this.isMobileEnabled) {\r\n\t\t\t\t// Extend the user session for the mobile user\r\n\t\t\t\tawait this.updateSession({ resourceId: SessionResource.MobileUserSession });\r\n\t\t\t\tawait this.extendMobileSession();\r\n\t\t\t}\r\n\r\n\t\t\tif (this.isLoadedInApp()) {\r\n\t\t\t\tthis.pollForDeviceId();\r\n\t\t\t}\r\n\r\n\t\t\tif (!window.location.protocol.toString().startsWith(\"https\")) {\r\n\t\t\t\tthis.setNotificationText(\"HTTPS must be enabled to use device location.\");\r\n\t\t\t}\r\n\r\n\r\n\t\t\tthis.loadUserAssetMapItem();\r\n\t\t\tif(this.isMobileEventShareEnabled){\r\n\t\t\t\tthis.loadEventShareItems();\r\n\t\t\t\tif(this.eventPoll) clearInterval(this.eventPoll);\r\n\t\t\t\tthis.eventPoll = setInterval(() => this.loadEventShareItems(), 5000);\r\n\t\t\t}\r\n\t\t} catch(ex) {\r\n\t\t\tconsole.log(ex);\r\n\t\t}\r\n\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\tbeforeDestroy() {\r\n\t\tthis.isDestroying = true;\r\n\t\tthis.stopBackgroundLocationTracking();\r\n\t\tif(this.eventPoll){\r\n\t\t\tclearInterval(this.eventPoll);\r\n\t\t}\r\n\r\n\t\t// Clear the polling for device ID\r\n\t\tclearInterval(this.deviceIdInterval);\r\n\t}\r\n\r\n\tprivate deviceIdInterval = null;\r\n\tprivate pollForDeviceId() {\r\n\t\tclearInterval(this.deviceIdInterval);\r\n\r\n\t\tthis.deviceIdInterval = setInterval(async () => {\r\n\t\t\tif (window.notificationSettings && window.notificationSettings.Id) {\r\n\t\t\t\tawait this.registerUserDevice({\r\n\t\t\t\t\tdeviceId: window.notificationSettings.Id,\r\n\t\t\t\t\tdeviceType: window.notificationSettings.DeviceType,\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(this.userMapOnlineStatus) {\r\n\t\t\t\t\tthis.startBackgroundLocationTracking();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tclearInterval(this.deviceIdInterval);\r\n\t\t\t}\r\n\t\t}, 5000);\r\n\t}\r\n\r\n\tsetDynamicComponent() {\r\n\t\tswitch (this.mobileMode) {\r\n\t\t\tcase \"live\":\r\n\t\t\t\tthis.mainComponentName = \"camera-player\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.mainComponentName = \"none\"\r\n\t\t}\r\n\t}\r\n\r\n\tasync logoutUser(errorMessage: string = null) {\r\n\t\tif (typeof window.notificationSettings === \"undefined\") {\r\n\t\t\twindow.notificationSettings = { Id: \"\", DeviceType: 0 };\r\n\t\t}\r\n\r\n\t\tawait mobileApi.mobileGuardLogout(null, window.notificationSettings.Id, window.notificationSettings.DeviceType);\r\n\r\n\t\t// Update the interface\r\n\t\tthis.toggleLeftSideBarVisibility()\r\n\r\n\t\t// Actually log out\r\n\t\tawait this.serverLogout();\r\n\t\tif(errorMessage) {\r\n\t\t\tconst logoutPayload: LogoutPayload = {\r\n\t\t\t\thasSessionExpired: false,\r\n\t\t\t\tplayAudioAlert: false,\r\n\t\t\t\terrorMessage: errorMessage\r\n\t\t\t}\r\n\t\t\tawait this.logout(logoutPayload);\r\n\t\t} else {\r\n\t\t\tawait this.logout();\r\n\t\t}\r\n\t\t\r\n\t\tthis.isLoggedOut = true;\r\n\t}\r\n\r\n\t// @techdebt - will be reintroduced in a future phase\r\n\tuserLost() {\r\n\t\twindow.location.href = \"immix-mobile://lost\";\r\n\t}\r\n\r\n\tprivate get eventShareCount(): number {\r\n\t\treturn this.eventShareItems ? this.eventShareItems.length : 0;\r\n\t}\r\n\r\n\tonRaise(raise: MobileRaiseProjection) {\r\n\t\tthis.raise = raise;\r\n\t\tif (!raise.manualRaiseType) {\r\n\t\t\tthis.isRaiseActivityLogVisible = true;\r\n\t\t} else {\r\n\t\t\tthis.isRaiseManualRaiseVisible = true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isMobileUsersEnabled() {\r\n\t\treturn this.getFeature([\"MobileUsers\"]);\r\n\t}\r\n\r\n\tprivate startBackgroundLocationTracking() {\r\n\t\tif (this.isLoadedInApp()) {\r\n\t\t\tvar trackingPayload: TrackingToggle = {\r\n\t\t\t\ttoggle: \"on\",\r\n\t\t\t};\r\n\t\t\tthis.sendTrackingRequestToDevice(trackingPayload);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate sendTrackingRequestToDevice(trackingPayload: TrackingToggle) {\r\n\t\tif (this.isiOS()) {\r\n\t\t\t(window as any).webkit.messageHandlers.trackingRequestHandler.postMessage(trackingPayload);\r\n\t\t} else if (this.isAndroid()) {\r\n\t\t\tconst trackingPayloadSerialized = JSON.stringify(trackingPayload);\r\n\t\t\tandroid.trackingRequest(trackingPayloadSerialized);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate stopBackgroundLocationTracking() {\r\n\t\tif (this.isLoadedInApp()) {\r\n\t\t\tvar trackingPayload: TrackingToggle = {\r\n\t\t\t\ttoggle: \"off\",\r\n\t\t\t};\r\n\t\t\tthis.sendTrackingRequestToDevice(trackingPayload);\r\n\t\t}\r\n\t}\r\n\r\n\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileCore.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileCore.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MobileCore.vue?vue&type=template&id=74c5d35e&scoped=true\"\nimport script from \"./MobileCore.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileCore.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MobileCore.vue?vue&type=style&index=0&id=74c5d35e&prod&lang=scss\"\nimport style1 from \"./MobileCore.vue?vue&type=style&index=1&id=74c5d35e&prod&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 \"74c5d35e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\",attrs:{\"id\":\"setup-container\"}},[_c('nav-header',{attrs:{\"title\":'Users'}}),(_vm.isUsersEnabled)?_c('generic-table',{ref:\"genericTable\",attrs:{\"id\":\"usersTable\",\"term\":\"User\",\"onSave\":_vm.updateUserDetails,\"onDelete\":_vm.deleteUserDetails,\"onAddNew\":_vm.newUserDetails,\"onModalOpen\":_vm.openUpdateModal,\"columns\":_vm.getTableHeaders(),\"modalItems\":_vm.getModalItems(),\"dataList\":_vm.userList,\"editPermissions\":['canEditUserPermissions'],\"deletePermissions\":['canEditUserPermissions'],\"deleteActionMessages\":_vm.deleteActionMessages,\"totalAvailableRows\":_vm.totalRecords,\"isLoading\":_vm.isLoading,\"isManagedExternally\":_vm.isSuiteEnabled},on:{\"search-filter-updated\":_vm.updateData,\"column-filter-updated\":_vm.updateColumnFilters},scopedSlots:_vm._u([{key:\"permissionGroupIds\",fn:function(slotProps){return [_vm._l((slotProps.row.permissionGroupIds.slice(0, 5)),function(item){return _c('b-badge',{key:item.key,attrs:{\"variant\":\"primary\"}},[_vm._v(\" \"+_vm._s(item.title)+\" \")])}),(slotProps.row.permissionGroupIds.length === 6)?_c('b-badge',{staticClass:\"pl-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(slotProps.row.permissionGroupIds[5].title))]):_vm._e(),(slotProps.row.permissionGroupIds.length > 6)?_c('b-badge',{staticClass:\"pl-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(slotProps.row.permissionGroupIds.length - 5)+\" more...\")]):_vm._e()]}},{key:\"registrationStatus\",fn:function(slotProps){return [(slotProps.row.registrationStatus === 'Invitation Expired')?_c('strong',[_vm._v(\" \"+_vm._s(slotProps.row.registrationStatus)+\"! \")]):_c('span',[_vm._v(\" \"+_vm._s(slotProps.row.registrationStatus)+\" \")]),(_vm.getPermissions.canEditUserPermissions && slotProps.row.registrationStatus !== 'Registered')?_c('i',{staticClass:\"fa fa-paper-plane hover-icon ml-1 reinvite-icon\",attrs:{\"title\":\"Resend Invite\"},on:{\"click\":function($event){return _vm.inviteUser(slotProps.row.userID)}}}):_vm._e(),(_vm.isSendingInvite && _vm.userToInvite === slotProps.row.userID)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]}},(_vm.isUsersBulkAddEnabled)?{key:\"custom-button\",fn:function(){return [_c('button',{staticClass:\"btn btn-primary add-btn\",on:{\"click\":function($event){return _vm.$bvModal.show('modalBulk')}}},[_vm._v(\"Bulk Add \")])]},proxy:true}:null],null,true)}):_vm._e(),(_vm.isUsersBulkAddEnabled)?_c('csv-uploader-wrapper',{attrs:{\"modalItemsCsv\":_vm.uniqueModalItemsByTitle,\"defaultFile\":_vm.defaultFile,\"progressBulk\":_vm.progressBulk,\"isMultipleError\":\"\",\"name\":\"User Bulk\",\"title\":\"Users Bulk Upload\"},on:{\"on-submit\":_vm.bulkOnSubmit,\"on-close\":_vm.onCloseBulk,\"reset-progress\":_vm.resetProgress}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('vue-select',{staticClass:\"dark flex-search w-100\",attrs:{\"multiple\":\"\",\"disabled\":!_vm.getPermissions.canEditUserPermissions || _vm.readonly,\"options\":_vm.userGroups,\"label\":\"title\",\"reduce\":function (userGroup) { return userGroup.key; },\"data-cy\":\"user-group-select-input\"},on:{\"input\":_vm.validate},model:{value:(_vm.selectedUserGroups),callback:function ($$v) {_vm.selectedUserGroups=$$v},expression:\"selectedUserGroups\"}}),(_vm.isBillingEnabled && !_vm.isSuiteEnabled)?_c('div',{attrs:{\"data-cy\":\"subscription-usage-information\"}},[_c('div',{staticClass:\"p-5\"},[_vm._v(\"User Subscription Usage - \"),_c('div',{staticStyle:{\"display\":\"inline\"}},[_vm._v(\" Operators \"),_c('b-badge',{attrs:{\"pill\":\"\",\"variant\":(_vm.isSubscriptionLimited && _vm.operatorUsage > _vm.subscription.operatorsLimit) ? 'danger':'secondary'}},[_vm._v(\" \"+_vm._s(_vm.operatorUsage)+\" \"),(_vm.operatorUsage > _vm.subscription.operators)?_c('i',{staticClass:\"fa fa-fw fa-arrow-up\",attrs:{\"data-cy\":\"operators-increased-icon\"}}):_vm._e(),(_vm.operatorUsage < _vm.subscription.operators)?_c('i',{staticClass:\"fa fa-fw fa-arrow-down\",attrs:{\"data-cy\":\"operators-decreased-icon\"}}):_vm._e(),(_vm.isSubscriptionLimited)?_c('span',[_vm._v(\"/ \"+_vm._s(this.subscription.operatorsLimit))]):_vm._e()])],1),_c('div',{staticStyle:{\"display\":\"inline\"}},[_vm._v(\" | Mobile Officers \"),_c('b-badge',{attrs:{\"pill\":\"\",\"variant\":(_vm.isSubscriptionLimited && _vm.mobileOfficerUsage > _vm.subscription.mobileOfficersLimit) ? 'danger':'secondary'}},[_vm._v(\" \"+_vm._s(_vm.mobileOfficerUsage)+\" \"),(_vm.mobileOfficerUsage > _vm.subscription.mobileOfficers)?_c('i',{staticClass:\"fa fa-fw fa-arrow-up\",attrs:{\"data-cy\":\"guards-increased-icon\"}}):_vm._e(),(_vm.mobileOfficerUsage < _vm.subscription.mobileOfficers)?_c('i',{staticClass:\"fa fa-fw fa-arrow-down\",attrs:{\"data-cy\":\"guards-decreased-icon\"}}):_vm._e(),(_vm.isSubscriptionLimited)?_c('span',[_vm._v(\"/ \"+_vm._s(this.subscription.mobileOfficersLimit))]):_vm._e()])],1)]),(_vm.isSubscriptionLimited)?_c('b-alert',{staticClass:\"mb-0\",attrs:{\"variant\":\"danger\",\"show\":!_vm.isValid,\"fade\":\"\"}},[(_vm.operatorUsage > _vm.subscription.operatorsLimit)?_c('li',[_vm._v(\"Operator usage limit of \"+_vm._s(this.subscription.operatorsLimit)+\" will be exceeded \")]):_vm._e(),(_vm.mobileOfficerUsage > _vm.subscription.mobileOfficersLimit)?_c('li',[_vm._v(\"Mobile Officer usage limit of \"+_vm._s(this.subscription.mobileOfficersLimit)+\" will be exceeded \")]):_vm._e()]):_vm._e()],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { get } from \"lodash\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport vSelect from \"vue-select\";\r\nimport { isEqual } from \"lodash\";\r\nimport { SubscriptionBilledPermission, SubscriptionDto } from \"@/store/subscription/types\";\r\nimport api from \"@/services/api.service\";\r\nimport { FeaturesList } from \"@/store/types\";\r\n\r\nconst Subscription = namespace(\"subscription\");\r\n\r\n@Component({\r\n components: {\r\n \"vue-select\": vSelect,\r\n }\r\n})\r\nexport default class UserGroupInput extends Vue {\r\n @Prop({ type: Boolean, default: false }) readonly: boolean;\r\n\r\n @Prop({ type: Boolean, default: false }) disabled: boolean;\r\n\r\n @Prop({ type: Boolean, default: false }) required: boolean;\r\n\r\n @Prop({ type: String, default: \"User Group\" }) parentTitle: String;\r\n @Prop({ type: Object, default: () => ({}) }) model: any;\r\n\r\n @Prop()\r\n public value: any[];\r\n\r\n @Getter getPermissions: any;\r\n @Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n @Subscription.State subscription: SubscriptionDto;\r\n @Subscription.State billedUserPermissions: SubscriptionBilledPermission[];\r\n @Subscription.Getter('getSubscriptionType') subscriptionType: string;\r\n @Subscription.Action fetchBilledUserPermissions: any;\r\n\r\n private userGroups: any[] = [];\r\n private selectedUserGroups: any[] = [];\r\n\r\n private initialSelectedUserGroupIds: any[] = [];\r\n private permissionIdsForInitialUserGroups: number[] = [];\r\n\r\n private operatorUsage = 0;\r\n private mobileOfficerUsage = 0;\r\n\r\n public async validate(): Promise {\r\n await this.onSelectUserGroup(this.selectedUserGroups);\r\n return this.isValid\r\n }\r\n\r\n private get isValid(): boolean {\r\n if (this.isSubscriptionLimited) {\r\n if (this.operatorUsage > this.subscription.operatorsLimit) {\r\n return false;\r\n }\r\n if (this.mobileOfficerUsage > this.subscription.mobileOfficersLimit){\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private get isSubscriptionLimited(): boolean {\r\n return this.subscription ? this.subscription.limitedSubscription : false;\r\n }\r\n\r\n private async mounted() {\r\n let getUserGroups = await api.getUserGroup();\r\n this.userGroups = getUserGroups.map(ug => {\r\n let result = {}\r\n result['key'] = ug.userGroupId;\r\n result['title'] = ug.title;\r\n return result;\r\n })\r\n\r\n if (this.value) {\r\n this.initialSelectedUserGroupIds = this.value.map(x => x.key);\r\n let permissionsForInitialUserGroups = await api.getPermissionsForUserGroups(this.initialSelectedUserGroupIds);\r\n this.permissionIdsForInitialUserGroups = permissionsForInitialUserGroups.map(p => p.permissionId);\r\n this.selectedUserGroups = this.value;\r\n }\r\n this.fetchBilledUserPermissions();\r\n\r\n this.operatorUsage = this.subscription.operators;\r\n this.mobileOfficerUsage = this.subscription.mobileOfficers;\r\n }\r\n\r\n @Watch(\"value\")\r\n valueChanged(value: any[]) {\r\n this.selectedUserGroups = this.value;\r\n }\r\n\r\n @Watch(\"selectedUserGroups\")\r\n public updateUserGroup(userGroupIds): void {\r\n this.$emit(\"input\", userGroupIds);\r\n }\r\n\r\n @Watch(\"model\", { deep: true })\r\n public userGroupsGroupById(): void {\r\n\t\tthis.selectedUserGroups = this.model.permissionGroupIds;\r\n }\r\n\r\n private async onSelectUserGroup(userGroups: any[]) {\r\n if (this.isBillingEnabled) {\r\n if (!userGroups || userGroups.length === 0)\r\n {\r\n this.updateOperatorCount([]);\r\n this.updateMobileOfficerCount([]);\r\n return;\r\n }\r\n\r\n let userGroupIds = userGroups.map(x => x.key);\r\n let isUserGroupsUnchanged = isEqual(userGroupIds, this.initialSelectedUserGroupIds);\r\n if (isUserGroupsUnchanged) {\r\n this.mobileOfficerUsage = this.subscription.mobileOfficers;\r\n this.operatorUsage = this.subscription.operators;\r\n return;\r\n }\r\n\r\n let permissionsForUserGroups = await api.getPermissionsForUserGroups(userGroupIds);\r\n let selectedUserGroupPermissionIds = permissionsForUserGroups.map(permission => permission.permissionId);\r\n\r\n this.updateOperatorCount(selectedUserGroupPermissionIds);\r\n this.updateMobileOfficerCount(selectedUserGroupPermissionIds);\r\n }\r\n }\r\n\r\n\tprivate updateOperatorCount(selectedUserGroupPermissionIds) {\r\n const operatorPermissionId = this.billedUserPermissions.find(up => up.title === \"Operators\").permissionID;\r\n\t\tlet initialUserGroupsIncludesOperatorPermissions = this.permissionIdsForInitialUserGroups.includes(operatorPermissionId);\r\n\t\tlet selectedUserGroupIncludesOperatorPermissions = selectedUserGroupPermissionIds.includes(operatorPermissionId);\r\n\r\n\t\tif (!initialUserGroupsIncludesOperatorPermissions && selectedUserGroupIncludesOperatorPermissions && this.subscription.operators + 1 > this.operatorUsage) {\r\n\t\t\tthis.operatorUsage++;\r\n\t\t} else if (initialUserGroupsIncludesOperatorPermissions &&\r\n\t\t\t!selectedUserGroupIncludesOperatorPermissions &&\r\n\t\t\tthis.subscription.operators === this.operatorUsage) {\r\n\t\t\tthis.operatorUsage--;\r\n\t\t} else if (initialUserGroupsIncludesOperatorPermissions == selectedUserGroupIncludesOperatorPermissions) {\r\n\t\t\tthis.operatorUsage = this.subscription.operators;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateMobileOfficerCount(selectedUserGroupPermissionIds) {\r\n const guardPermissionId = this.billedUserPermissions.find(up => up.title === \"Mobile Officers\").permissionID;\r\n\t\tlet initialUserGroupsIncludesGuardPermissions = this.permissionIdsForInitialUserGroups.includes(guardPermissionId);\r\n\t\tlet selectedUserGroupIncludesGuardPermissions = selectedUserGroupPermissionIds.includes(guardPermissionId);\r\n\r\n\t\tif (!initialUserGroupsIncludesGuardPermissions && selectedUserGroupIncludesGuardPermissions && this.subscription.mobileOfficers + 1 > this.mobileOfficerUsage) {\r\n\t\t\tthis.mobileOfficerUsage++;\r\n\t\t} else if (initialUserGroupsIncludesGuardPermissions &&\r\n\t\t\t\t!selectedUserGroupIncludesGuardPermissions &&\r\n\t\t\tthis.subscription.mobileOfficers === this.mobileOfficerUsage) {\r\n\t\t\tthis.mobileOfficerUsage--;\r\n\t\t} else if (initialUserGroupsIncludesGuardPermissions == selectedUserGroupIncludesGuardPermissions) {\r\n\t\t\tthis.mobileOfficerUsage = this.subscription.mobileOfficers;\r\n\t\t}\r\n\t}\r\n\r\n private get isBillingEnabled() {\r\n return get(this.featuresList, [\"Billing\"]);\r\n }\r\n\r\n\tprivate get isSuiteEnabled() {\r\n\t\treturn get(this.featuresList, [\"Suite\"]);\r\n\t}\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGroupInput.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGroupInput.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserGroupInput.vue?vue&type=template&id=1164f70e&scoped=true\"\nimport script from \"./UserGroupInput.vue?vue&type=script&lang=ts\"\nexport * from \"./UserGroupInput.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserGroupInput.vue?vue&type=style&index=0&id=1164f70e&prod&scoped=true&lang=scss\"\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 \"1164f70e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"id\":_vm.modalId,\"size\":\"lg\",\"dialog-class\":\"email-data-modal\",\"ok-title\":\"ADD\",\"cancel-title\":\"CLOSE\",\"no-close-on-backdrop\":\"\",\"ok-disabled\":_vm.disabledButtonSubmit},on:{\"ok\":function($event){$event.preventDefault();return _vm.submitForm($event)},\"hidden\":_vm.closeForm},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(ref){\nvar close = ref.close;\nreturn [_c('h5',[_vm._v(_vm._s(_vm.title))]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":function($event){return _vm.closeForm(close)}}},[_vm._v(\"×\")])]}}])},[_c('div',[_c('csv-uploader',{attrs:{\"name\":_vm.name,\"progressBulk\":_vm.progressBulk,\"modalItemsCsv\":_vm.modalItemsCsv,\"defaultFile\":_vm.defaultFile,\"isMultipleError\":_vm.isMultipleError},on:{\"get-current-data\":_vm.setCurrentData,\"reset-progress\":function($event){return _vm.$emit('reset-progress')}}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"csv-uploader\"},[_c('div',[_c('div',{staticClass:\"csv-handler\"},[_c('div',{staticClass:\"btn-handler\"},[_c('button',{staticClass:\"btn btn-primary add-btn\",on:{\"click\":_vm.downloadTemplate}},[_vm._v(\"Download template CSV\")]),_c('button',{staticClass:\"btn btn-primary add-btn\",attrs:{\"disabled\":_vm.disabledGridButton},on:{\"click\":_vm.downloadCSV}},[_vm._v(\"Download CSV\")]),_c('button',{staticClass:\"btn btn-primary add-btn\",on:{\"click\":_vm.openFilesTree}},[_vm._v(\"Upload completed CSV\")]),_c('button',{staticClass:\"btn btn-primary add-btn\",attrs:{\"disabled\":_vm.disabledGridButton || _vm.isUploading},on:{\"click\":function($event){return _vm.addNewRowCsv({ name: _vm.name })}}},[_vm._v(\"Add Row\")])]),_c('scrollbar',{staticClass:\"scroll-bar-content\"},[(_vm.isUploading)?_c('csv-progress',{attrs:{\"progress\":_vm.progressBulk,\"isMultipleError\":_vm.isMultipleError}}):_vm._e(),(_vm.localErrorsCSV.info)?_c('div',[_vm._v(\" \"+_vm._s(_vm.localErrorsCSV.info)+\" \")]):(_vm.localErrorsCSV.error)?_c('div',{staticClass:\"error-message\"},[_vm._v(\" \"+_vm._s(_vm.localErrorsCSV.error)+\" \")]):(!_vm.localIsDataEmpty)?_c('csv-form',{attrs:{\"modalItemsCsv\":_vm.modalItemsCsv,\"csvData\":_vm.localBody,\"name\":_vm.name,\"isUploading\":_vm.isUploading,\"progress\":_vm.progressBulk,\"batchUploadErrors\":_vm.batchUploadErrors},on:{\"get-current-data\":_vm.setCurrentData}}):_vm._e()],1),_c('input',{ref:\"uploadCompleted\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\"},on:{\"input\":function($event){return _vm.uploadCompleted($event.target.files[0])}}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"csv-form\"},[(_vm.isShowGrid)?_c('table',[_c('tr',{staticClass:\"header-table\"},[_vm._l((_vm.localHeadersForm),function(head){return _c('th',{key:head},[_vm._v(_vm._s(head))])}),(_vm.localData.length > 1)?_c('th',{staticClass:\"grid-action\"}):_vm._e()],2),_vm._l((_vm.gridData),function(row,i){return _c('div',{key:i},[_c('tr',{class:{\n\t\t\t\t\t\t'error-row': _vm.localErrorsRow[i],\n\t\t\t\t\t\t'error-progress-row': _vm.isProgressError(row),\n\t\t\t\t\t},attrs:{\"rowspan\":\"2\"}},[_vm._l((row),function(item,rowId){return _c('td',{key:item.uniqId},[(item.csvComponent === 'number')?_c('div',{staticClass:\"grid-cell\",class:{\n\t\t\t\t\t\t\t\t'error-item': _vm.localErrorsForm[item.uniqId],\n\t\t\t\t\t\t\t\t'error-column': _vm.localErrorsColumn[(\"\" + rowId)]\n\t\t\t\t\t\t\t}},[_c('b-form-input',{staticClass:\"input-form\",attrs:{\"value\":item.csvValue,\"id\":item.uniqId,\"min\":item.min || 0,\"max\":item.max || 2147483647,\"type\":\"number\"},on:{\"input\":function($event){return _vm.debounceSetData({\n\t\t\t\t\t\t\t\t\tvalue: $event,\n\t\t\t\t\t\t\t\t\tdata: item,\n\t\t\t\t\t\t\t\t\tname: _vm.name\n\t\t\t\t\t\t\t\t})}}})],1):(item.csvComponent === 'input')?_c('div',{staticClass:\"grid-cell\",class:{\n\t\t\t\t\t\t\t\t'error-item': _vm.localErrorsForm[item.uniqId],\n\t\t\t\t\t\t\t\t'error-column': _vm.localErrorsColumn[(\"\" + rowId)]\n\t\t\t\t\t\t\t}},[_c('b-form-input',{staticClass:\"input-form\",attrs:{\"value\":item.csvValue,\"id\":item.uniqId,\"type\":\"text\"},on:{\"input\":function($event){return _vm.debounceSetData({\n\t\t\t\t\t\t\t\t\tvalue: $event,\n\t\t\t\t\t\t\t\t\tdata: item,\n\t\t\t\t\t\t\t\t\tname: _vm.name\n\t\t\t\t\t\t\t\t})}}})],1):(item.csvComponent === 'select')?_c('div',{staticClass:\"grid-cell\",class:{\n\t\t\t\t\t\t\t'error-item': _vm.localErrorsForm[item.uniqId],\n\t\t\t\t\t\t\t'error-column': _vm.localErrorsColumn[(\"\" + rowId)],\n\t\t\t\t\t\t\t}},[_c('vselect3',{staticClass:\"dark w-100 select-variables element-form select-form\",attrs:{\"value\":item.csvValue,\"options\":item.csvUnitedKey\n\t\t\t\t\t\t\t\t\t\t\t? item.unionData\n\t\t\t\t\t\t\t\t\t\t\t: item.csvData,\"label\":item.key,\"multiple\":false,\"maxHeight\":\"150px\",\"placeholder\":\"Select\",\"searchable\":false,\"clearable\":true,\"closeOnSelect\":true,\"appendToBody\":\"\"},on:{\"input\":function($event){return _vm.localSetValue({\n\t\t\t\t\t\t\t\t\tvalue: $event,\n\t\t\t\t\t\t\t\t\tdata: item,\n\t\t\t\t\t\t\t\t\tname: _vm.name\n\t\t\t\t\t\t\t\t})}},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(option){return [_c('span',[_vm._v(_vm._s(option[item.key]))])]}},{key:\"option\",fn:function(option){return [_c('span',[_vm._v(_vm._s(option[item.key]))])]}}],null,true)})],1):(item.csvComponent === 'select-multiple')?_c('div',{staticClass:\"grid-cell\",class:{\n\t\t\t\t\t\t\t'error-item': _vm.localErrorsForm[item.uniqId],\n\t\t\t\t\t\t\t'error-column': _vm.localErrorsColumn[(\"\" + rowId)],\n\t\t\t\t\t\t\t}},[_c('vselect3',{staticClass:\"dark w-100 select-variables element-form select-form\",attrs:{\"value\":_vm.formattedMultipleValue(item.csvValue),\"options\":item.csvUnitedKey\n\t\t\t\t\t\t\t\t\t\t\t? item.unionData\n\t\t\t\t\t\t\t\t\t\t\t: item.csvData,\"label\":item.key,\"multiple\":true,\"maxHeight\":\"150px\",\"placeholder\":\"Select\",\"searchable\":false,\"clearable\":true,\"closeOnSelect\":false,\"appendToBody\":\"\"},on:{\"input\":function($event){return _vm.localSetValue({\n\t\t\t\t\t\t\t\t\tvalue: $event,\n\t\t\t\t\t\t\t\t\tdata: item,\n\t\t\t\t\t\t\t\t\tname: _vm.name\n\t\t\t\t\t\t\t\t})}},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(option){return [_c('span',[_vm._v(_vm._s(option[item.key]))])]}},{key:\"option\",fn:function(option){return [_c('span',[_vm._v(_vm._s(option[item.key]))])]}}],null,true)})],1):(item.csvComponent === 'checkbox')?_c('div',{staticClass:\"grid-cell\",class:{\n\t\t\t\t\t\t\t'error-item': _vm.localErrorsForm[item.uniqId],\n\t\t\t\t\t\t\t'error-column': _vm.localErrorsColumn[(\"\" + rowId)],\n\t\t\t\t\t\t\t}},[_c('b-form-group',{staticClass:\"custom-control custom-checkbox\"},[_c('input',{staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":item.uniqId},domProps:{\"checked\":item.csvValue,\"value\":item.csvValue},on:{\"input\":function($event){return _vm.debounceSetData({\n\t\t\t\t\t\t\t\t\t\tvalue: $event.target.checked,\n\t\t\t\t\t\t\t\t\t\tdata: item,\n\t\t\t\t\t\t\t\t\t\tname: _vm.name\n\t\t\t\t\t\t\t\t\t})}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":item.uniqId}})])],1):_c('div',{staticClass:\"grid-cell\"},[_vm._v(\" \"+_vm._s(item.csvValue)+\" \")])])}),(_vm.localData.length > 1 && !_vm.isUploading)?_c('td',{staticClass:\"grid-action\"},[_c('i',{staticClass:\"fas fa-trash hover-icon p-r-10\",attrs:{\"title\":\"Delete\"},on:{\"click\":function($event){return _vm.localRemoveRow({ row: row, name: _vm.name })}}})]):_vm._e()],2),(_vm.progress.bulkErrors)?_c('tr',[_c('div',{staticClass:\"small text-danger\"},[_vm._v(\" \"+_vm._s(_vm.progress.bulkErrors[i].errorMessage)+\" \")])]):(_vm.localErrorList.length > 0)?_c('tr',[_c('div',{staticClass:\"small text-danger\"},[_vm._v(\" \"+_vm._s(_vm.localErrorList.find(function (e) { return e.includes((\"Row \" + (row[0].rowId + 1) + \",\")); }))+\" \")])]):_vm._e()])})],2):(_vm.localErrorsCSV.info)?_c('div',[_vm._v(\" \"+_vm._s(_vm.errorsCSV.info)+\" \")]):(_vm.localErrorsCSV.error)?_c('div',[_vm._v(\" \"+_vm._s(_vm.errorsCSV.error)+\" \")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport vSelect from \"vue-select\";\r\nimport vselect3 from \"vselect3\";\r\nimport { get } from 'lodash'\r\n\r\nconst CSVParser = namespace(\"csvParser\");\r\nconst CSVFormHandler = namespace(\"csvFormHandler\");\r\nimport { cloneDeep, debounce, isArray } from 'lodash'\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tscrollbar: VuePerfectScrollbar,\r\n\t\t\"vue-select\": vSelect,\r\n\t\tvselect3\r\n\t}\r\n})\r\nexport default class CsvForm extends Vue {\r\n\t@Prop({ type: Array, default: () => []}) csvData: any;\r\n\t@Prop({ type: String, required: true }) name: string;\r\n\t@Prop({ type: Boolean, default: false }) isUploading: string;\r\n\t@Prop({ type: Object, default: () => ({}) }) progress: any;\r\n\t@Prop({ type: Boolean, default: false}) batchUploadErrors: boolean;\r\n\r\n\tprivate localData = []\r\n\tprivate errorProgressList = {}\r\n\r\n\tloading = false\r\n\r\n\t@CSVParser.Action setValidHeadersName: any;\r\n\t@CSVParser.Action setMandatoryFields: any;\r\n\t@CSVParser.Action loadSCVData: any;\r\n\t@CSVParser.Getter body:any;\r\n\r\n\t@CSVFormHandler.Action setParserOptions: any;\r\n\t@CSVFormHandler.Action resetErrorsForm: any;\r\n\r\n\t@CSVFormHandler.Action setDataCsv: any;\r\n\t@CSVFormHandler.Action validateCell: any\r\n\t@CSVFormHandler.Action validateAll: any\r\n\t@CSVFormHandler.Action setValue: any\r\n\t@CSVFormHandler.Action removeRow: any\r\n\t@CSVFormHandler.Getter errorsCSV: any\r\n\t@CSVFormHandler.Getter formData: any\r\n\t@CSVFormHandler.Getter headersForm: any\r\n\t@CSVFormHandler.Getter mandatoryFields: any\r\n\t@CSVFormHandler.Getter validHeaders: any\r\n\t@CSVFormHandler.State errorsForm: any\r\n\t@CSVFormHandler.Getter validModalItems: any;\r\n\t@CSVFormHandler.Getter isValidForm: any;\r\n\t@CSVFormHandler.Getter errorList: any;\r\n\t@CSVFormHandler.Getter errorsRow: any;\r\n\t@CSVFormHandler.Getter errorsColumn: any;\r\n\r\n\tget localRemoveRow() {\r\n\t\treturn option => {\r\n\t\t\tthis.removeRow(option)\r\n\t\t\tthis.localValidateAll(option)\r\n\t\t}\r\n\t}\r\n\r\n\tget localValidateAll() {\r\n\t\treturn debounce(this.validateAll, 300)\r\n\t}\r\n\r\n\tget localErrorsCSV() {\r\n\t\treturn this.errorsCSV(this.name)\r\n\t}\r\n\r\n\tget localBody() {\r\n\t\treturn this.body(this.name)\r\n\t}\r\n\r\n\tget localHeadersForm() {\r\n\t\treturn this.headersForm(this.name)\r\n\t}\r\n\r\n\tget localFormData() {\r\n\t\treturn this.formData({ name: this.name })\r\n\t}\r\n\r\n\tget localErrorsForm() {\r\n\t\treturn (this.errorsForm && this.errorsForm[this.name]) || {}\r\n\t}\r\n\r\n\tget localIsValidForm() {\r\n\t\treturn this.isValidForm(this.name)\r\n\t}\r\n\r\n\tget localErrorList() {\r\n\t\treturn this.errorList(this.name)\r\n\t}\r\n\r\n\tget localErrorsRow() {\r\n\t\treturn this.errorsRow(this.name)\r\n\t}\r\n\r\n\tget localErrorsColumn() {\r\n\t\treturn this.errorsColumn(this.name)\r\n\t}\r\n\r\n\tget gridData() {\r\n\t\treturn this.isUploading ? this.localData : this.localFormData\r\n\t}\r\n\r\n\tget debounceSetData() {\r\n\t\treturn debounce(this.localSetValue, 500)\r\n\t}\r\n\r\n\tget isShowGrid() {\r\n\t\tconst isCsvErrors = this.localErrorsCSV.info || this.localErrorsCSV.error\r\n\t\tconst isSucceed = this.progress.status === 'succeed'\r\n\r\n\t\treturn !isCsvErrors && !this.loading && !isSucceed\r\n\t}\r\n\r\n\tformattedMultipleValue(formValue) {\r\n\t\tconst data = isArray(formValue) ? formValue : formValue.split(',')\r\n\t\treturn data.filter(v => v)\r\n\t}\r\n\r\n\tisProgressError(row) {\r\n\t\tconst rowId = get(row, '[0].rowId')\r\n\r\n\t\treturn rowId !== undefined && this.errorProgressList[`${rowId}`]\r\n\t}\r\n\r\n\tasync localSetValue(option) {\r\n\t\tif(this.isUploading) return\r\n\t\tawait this.setValue(option);\r\n\t\tconst data = {\r\n\t\t\t...option.data,\r\n\t\t\tcsvValue: option.value\r\n\t\t}\r\n\t\tthis.validateCell({ name: this.name, data })\r\n\t}\r\n\r\n\t@Watch('batchUploadErrors')\r\n\tremoveSuccessfulUploads(): void {\r\n\t\t// Replace form data with the failed rows\r\n\t\tif (this.batchUploadErrors) {\r\n\t\t\tconst currentForm = [...this.localFormData];\r\n\r\n\t\t\tlet uploadsWithErrors = [];\r\n\t\t\tfor (let i = 0; i < this.progress.bulkErrors.length; i++) {\r\n\t\t\t\tconst rowError = currentForm.find(r => r[0].rowId == this.progress.bulkErrors[i].rowId);\r\n\t\t\t\tuploadsWithErrors.push(rowError);\r\n\t\t\t}\r\n\r\n\t\t\tthis.localData = uploadsWithErrors;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch('localFormData', { deep: true, immediate: true })\r\n\tchangeLocalBody() {\r\n\t\tif(this.isUploading) return\r\n\t\tthis.$emit('get-current-data', this.localFormData)\r\n\t}\r\n\r\n\t@Watch('localFormData', { deep: true, immediate: true })\r\n\tsetLocalData() {\r\n\t\tthis.localData = cloneDeep(this.localFormData)\r\n\t}\r\n\r\n\t@Watch('progress', {deep: true})\r\n\tremoveRowById() {\r\n\t\tif(this.progress.status === 'error') this.errorProgressList[this.progress.rowIndex] = this.progress\r\n\t\tif(this.isUploading && this.progress.rowIndex !== undefined && this.isRemoveRow) {\r\n\t\t\tconst index = this.localData.findIndex((row) => Number(row[0].rowId) === Number(this.progress.rowIndex))\r\n\t\t\tthis.localData.splice(index, 1)\r\n\t\t}\r\n\t}\r\n\r\n\tget isRemoveRow() {\r\n\t\tconst status = this.progress.status\r\n\r\n\t\treturn status === 'progress' || status === 'succeed'\r\n\t}\r\n\r\n\tasync initForm() {\r\n\t\tawait this.setDataCsv({ csvData: this.csvData, name: this.name });\r\n\t\tawait this.validateAll({ name: this.name });\r\n\t}\r\n\r\n\tasync beforeDestroy() {\r\n\t\tawait this.setDataCsv({ csvData: {}, name: this.name });\r\n\t\tawait this.resetErrorsForm({ name: this.name })\r\n\t}\r\n\r\n\tasync mounted() {\r\n\t\tthis.loading = true\r\n\t\tawait this.initForm()\r\n\t\tthis.loading = false\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv-form.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv-form.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./csv-form.vue?vue&type=template&id=bb245542&scoped=true\"\nimport script from \"./csv-form.vue?vue&type=script&lang=ts\"\nexport * from \"./csv-form.vue?vue&type=script&lang=ts\"\nimport style0 from \"./csv-form.vue?vue&type=style&index=0&id=bb245542&prod&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 \"bb245542\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.progress.status)?_c('b-progress',{staticClass:\"progress\",attrs:{\"max\":_vm.progress.max,\"height\":\"20px\",\"variant\":_vm.variantSingleProgress,\"striped\":\"\",\"animated\":_vm.progressProcessValue !== _vm.progress.max,\"show-progress\":\"\"}},[_c('b-progress-bar',{attrs:{\"value\":_vm.progressProcessValue}},[(_vm.progress.percentage)?_c('span',{staticClass:\"progress-indicator\"},[_vm._v(\"Progress: \"),_c('strong',[_vm._v(_vm._s(_vm.progressProcessValue)+\"%\")])]):_c('span',{staticClass:\"progress-indicator\"},[_vm._v(\"Progress: \"),_c('strong',[_vm._v(_vm._s(_vm.progressProcessValue)+\" / \"+_vm._s(_vm.progress.max))])])])],1):_vm._e(),(_vm.progress.status && _vm.isMultipleError && _vm.errors.length)?_c('b-progress',{staticClass:\"progress-failed progress\",attrs:{\"max\":_vm.progress.max,\"height\":\"20px\",\"variant\":\"danger\",\"striped\":\"\",\"animated\":(_vm.progressProcessValue + _vm.errorList.length) !== _vm.progress.max,\"show-progress\":\"\"}},[_c('b-progress-bar',{attrs:{\"value\":_vm.errorList.length}},[_c('span',{staticClass:\"progress-indicator\"},[_vm._v(\"Failed: \"),_c('strong',[_vm._v(_vm._s(_vm.errorList.length)+\" / \"+_vm._s(_vm.progress.max))])])])],1):_vm._e(),(_vm.isSucceed)?_c('div',{staticClass:\"status-text-successful\"},[_vm._v(\" \"+_vm._s(_vm.progress.successfulMessage)+\" \")]):_vm._e(),(_vm.errorList.length && !_vm.isMultipleError)?_c('div',{staticClass:\"status-text-error\"},[_vm._v(\" \"+_vm._s(_vm.progress.error && _vm.progress.error.message)+\" \")]):(_vm.errorList.length && _vm.isMultipleError)?_vm._l((_vm.errorList),function(value,key){return _c('div',{key:key,staticClass:\"status-text-error\"},[_vm._v(\" \"+_vm._s(value)+\" \")])}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { GChart } from \"vue-google-charts\";\r\nimport TileReport from \"@/components/reports/TileReport.vue\";\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport { parse } from \"qs\";\r\n\r\nconst Reports = namespace(\"reports\");\r\nconst { relativeHoursDateFormatted } = formatDateMixin.methods;\r\n\r\nenum RenderType {\r\n\tgraph = 1,\r\n\ttile = 2\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tGChart,\r\n\t\t\"tile-report\": TileReport\r\n\t}\r\n})\r\nexport default class InsightsGraph extends Vue {\r\n\t@Prop({\r\n\t\tdefault: () => ({\r\n\t\t\tchartType: null,\r\n\t\t\treportUrl: null,\r\n\t\t\ttile: null,\r\n\t\t\tcanDrilldown: false,\r\n\t\t\tfilters: null,\r\n\t\t\tready: false\r\n\t\t})\r\n\t}) chartObject;\r\n\t@Prop({default: false}) isPlugin;\r\n\t@Prop({default: false, type: Boolean}) fiterPadlockStatus;\r\n\t@Prop({default: null, type: Object}) filters;\r\n\t@Prop({default: \"\", type: String}) customText;\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\t@Reports.Action runReport: any;\r\n\t@Reports.Action fetchReport: any;\r\n\t@Reports.Action fetchReportServiceEndpoint: any;\r\n\t@Reports.Action fetchReportTypes: any;\r\n\t@Reports.Action heartbeatToReportServer: any;\r\n\t@Reports.Action heartbeatToCurrentServer: any;\r\n\t@Reports.Getter(\"getReport\") report;\r\n\t@Reports.Getter(\"getCurrentReportUrl\") currentReportUrl;\r\n\t@Reports.Getter(\"getReportLoadingStatus\") loading;\r\n\t@Reports.Getter(\"getReportErrorStatus\") error;\r\n\t@Reports.Getter(\"getReportApiEndpoint\") reportApiEndpoint;\r\n\t@Reports.Getter(\"getReportTypes\") reportTypes;\r\n\t@Reports.Mutation setRelativeHoursToReport: any;\r\n\t@Reports.Mutation setCurrentReportUrl: any;\r\n\t@Reports.State(\"RelativeHoursToReport\") relativeHoursToReport: number;\r\n\r\n\t$refs: {\r\n\t\tgChart: any;\r\n\t\tchartContainer: any;\r\n\t};\r\n\r\n\tprivate reportUrl: string = \"\";\r\n\tprivate queryReport: any = {};\r\n\tprivate groupingType: string = \"\";\r\n\tprivate reportData: any = null;\r\n\r\n\tprivate renderType: any = RenderType;\r\n\tprivate selectedRenderType: any = 1;\r\n\r\n\t// Holds the heartbeat interval to keep our session alive on reports\r\n\tprivate heartbeatInterval = null;\r\n\r\n\t// variable to hold the url link to a report so the user can save it\r\n\tprivate reportPermalink = \"\";\r\n\r\n\t// variable used to mark the persistance of filters across reports\r\n\tprivate chartType = \"ColumnChart\";\r\n\tprivate timeZone = \"UTC\";\r\n\r\n\tprivate renderOptions: any = [\r\n\t\t{ title: 'LineChart', type: this.renderType.graph, legendPosition: 'top' },\r\n\t\t{ title: 'ColumnChart', type: this.renderType.graph, legendPosition: 'top' },\r\n\t\t{ title: 'Table', type: this.renderType.graph, legendPosition: 'top' },\r\n\t\t{ title: 'PieChart', type: this.renderType.graph, legendPosition: 'Right' },\r\n\t\t{ title: 'Tile', type: this.renderType.tile, legendPosition: 'top' }\r\n\t];\r\n\r\n\t// object to hold report filtering options\r\n\tpublic selectedFilters: any = {\r\n\t\tgroupId: [],\r\n\t\treferenceId: [],\r\n\t\tresponseId: [],\r\n\t\teventTypeId: [],\r\n\t\tuserId: [],\r\n\t\teventOutcomeId: [],\r\n\t\tserverTypeEventNum: [],\r\n\t\texcludeAutoHandled: { id: 1, title: \"Yes\" },\r\n\t\tresultCount: { id: 100, title: \"100\" },\r\n\t\tstartDate: relativeHoursDateFormatted(this.relativeHoursToReport),\r\n\t\tendDate: relativeHoursDateFormatted(0)\r\n\t};\r\n\r\n\t// set a flag as to if we have applied any filters\r\n\tprivate get filterApplied() {\r\n\t\treturn (\r\n\t\t\t(this.selectedFilters.groupId && this.selectedFilters.groupId.length > 0) ||\r\n\t\t\t(this.selectedFilters.referenceId && this.selectedFilters.referenceId.length > 0) ||\r\n\t\t\t(this.selectedFilters.responseId && this.selectedFilters.responseId.length > 0) ||\r\n\t\t\t(this.selectedFilters.eventTypeId && this.selectedFilters.eventTypeId.length > 0) ||\r\n\t\t\t(this.selectedFilters.userId && this.selectedFilters.userId.length > 0) ||\r\n\t\t\t(this.selectedFilters.eventOutcomeId && this.selectedFilters.eventOutcomeId.length > 0) ||\r\n\t\t\t(this.selectedFilters.serverTypeEventNum && this.selectedFilters.serverTypeEventNum.length > 0) ||\r\n\t\t\t(this.selectedFilters.resultCount && this.selectedFilters.resultCount.id != 100) ||\r\n\t\t\t(this.selectedFilters.excludeAutoHandled && this.selectedFilters.excludeAutoHandled.id == 0)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate get validGraphData() {\r\n\t\t// Difference between 'this.reportData' and 'this.report'\r\n\t\t// is this.report is a vuex instance and this.reportData is a local instance to contain the returning report.\r\n\t\tif (this.isPlugin) {\r\n\t\t\treturn this.reportData && this.reportData.data && this.reportData.data.length > 0 ? true : false;\r\n\t\t} else {\r\n\t\t\treturn this.report && this.report.data && this.report.data.length > 0 ? true : false;\r\n\t\t}\r\n\t}\r\n\r\n\t// JSON array of chart options for the Goolge chart component\r\n\tprivate get chartOptions() {\r\n\t\treturn {\r\n\t\t\tfocus: \"category\",\r\n\t\t\twidth: \"100%\",\r\n\t\t\theight: this.chartType == \"Table\" ? null : \"100%\",\r\n\t\t\tchartArea: {\r\n\t\t\t\twidth: \"85%\",\r\n\t\t\t\theight: \"80%\"\r\n\t\t\t},\r\n\t\t\tcolors: [\"#0a6ebd\", \"#0c7cd5\", \"#0d8aee\", \"#2196f3\", \"#39a1f4\", \"#51adf6\", \"#6ab8f7\"],\r\n\t\t\tbackgroundColor: \"#333\",\r\n\t\t\thAxis: {\r\n\t\t\t\ttextStyle: {\r\n\t\t\t\t\tcolor: \"#b0bec5\",\r\n\t\t\t\t\tfontSize: 12\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tlegend: {\r\n\t\t\t\tposition: this.renderOptions.find(x => this.chartType == x.title).legendPosition,\r\n\t\t\t\talignment: \"center\",\r\n\t\t\t\ttextStyle: {\r\n\t\t\t\t\tcolor: \"#b0bec5\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tvAxis: {\r\n\t\t\t\tgridlines: { color: \"#ccc\", count: 2 },\r\n\t\t\t\tbaselineColor: \"transparent\",\r\n\t\t\t\ttextStyle: {\r\n\t\t\t\t\tcolor: \"#b0bec5\",\r\n\t\t\t\t\tfontSize: 12\r\n\t\t\t\t},\r\n\t\t\t\ttitleTextStyle: { color: \"#b0bec5\", fontSize: 14 },\r\n\t\t\t\ttitle: this.report.vaxisTitle ? this.report.vaxisTitle : \"Count\"\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tduration: this.isPlugin ? 0 : 1000,\r\n\t\t\t\teasing: this.isPlugin ? \"\" : \"inAndOut\",\r\n\t\t\t\tstartup: this.isPlugin ? false : true\r\n\t\t\t},\r\n\t\t\ttrendlines: { 0: { visibleInLegend: true } },\r\n\t\t\tshowRowNumber: true,\r\n\t\t\tmagnifyingGlass: { enabled: true },\r\n\t\t\tregion: \"US-NJ\", // US, world\r\n\t\t\tdatalessRegionColor: \"#eee\",\r\n\t\t\tresolution: \"metros\",\r\n\t\t\tpage: \"enable\",\r\n\t\t\tpageSize: 100,\r\n\t\t\tallowHtml: true\r\n\t\t};\r\n\t}\r\n\r\n\tprivate get customTitle() {\r\n\t\tif (this.isPlugin) {\r\n\t\t\tif (this.customText) {\r\n\t\t\t\treturn this.customText;\r\n\t\t\t} else {\r\n\t\t\t\treturn this.reportData && this.reportData.title ? this.reportData.title : 'No Title found';\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn this.currentReportUrl == \"\" ? \"\" : this.report.title;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get tileStyle() {\r\n\t\tif (this.selectedRenderType == 2 && this.isPlugin) {\r\n\t\t\treturn {\r\n\t\t\t\t\"background-color\" : this.chartObject.tile.colour.background,\r\n\t\t\t\t\"color\" : this.chartObject.tile.colour.text\r\n\t\t\t};\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\t@Watch(\"chartObject\", { deep: true })\r\n\tprivate updateChartTypeAndFilters(newData: any, oldData: any) {\r\n\t\tif (!oldData || !newData || !newData.chartType) return;\r\n\r\n\t\tif (newData.reportUrl !== oldData.reportUrl) {\r\n\t\t\tthis.resetFilters();\r\n\t\t}\r\n\r\n\t\t// Route has chnaged, our new filters are computed within our reportBuilder component *parent*\r\n\t\tif (!this.isPlugin) {\r\n\t\t\tthis.selectedFilters = this.filters;\r\n\t\t}\r\n\r\n\t\t// Check if our ready flag has been set.\r\n\t\tif (this.chartObject.ready) {\r\n\t\t\tthis.applyFiltersFromRoute();\r\n\t\t}\r\n\r\n\t\t// Set the chart type we want to use + our render type.\r\n\t\tthis.chartType = this.chartObject.chartType;\r\n\t\tconst renderType = this.renderOptions.find(x => x.title == this.chartObject.chartType);\r\n\t\tthis.selectedRenderType = renderType.type;\r\n\t}\r\n\r\n\t@Watch(\"relativeHoursToReport\")\r\n\t// update the relative date to report on and re run the report\r\n\tprivate onRelativeHoursToReportChanged(newHours: number): void {\r\n\t\tif (this.chartObject.filters) {\r\n\t\t\tthis.selectedFilters.startDate = relativeHoursDateFormatted(this.chartObject.filters.startDate);\r\n\t\t\tthis.selectedFilters.endDate = relativeHoursDateFormatted(0);\r\n\t\t} else {\r\n\t\t\tthis.selectedFilters.startDate = relativeHoursDateFormatted(newHours);\r\n\t\t\tthis.selectedFilters.endDate = relativeHoursDateFormatted(0);\r\n\t\t}\r\n\r\n\t\tif (this.isPlugin) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.runV2Report(this.currentReportUrl, true);\r\n\t}\r\n\r\n\t@Watch(\"$route\")\r\n\t// update the relative date to report on and re run the report\r\n\tprivate onRouteChanged(): void {\r\n\t\tthis.applyFiltersFromRoute();\r\n\t}\r\n\r\n\tprivate async created(): Promise {\r\n\t\tif (!this.getPermissions.canViewReports) {\r\n\t\t\tthis.$router.push(\"/event-queue\");\r\n\t\t}\r\n\r\n\t\tawait this.fetchReportServiceEndpoint();\r\n\t\tawait this.fetchReportTypes();\r\n\r\n\t\tif (this.reportApiEndpoint && !this.isPlugin) {\r\n\t\t\tthis.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\t\t\tthis.$emit('time-zone', this.timeZone);\r\n\t\t\t// load filter option objects into the UI, then\r\n\t\t\tthis.applyFiltersFromRoute();\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"timeZone\")\r\n\tprivate updateTimezone(): void {\r\n\t\tthis.$emit('time-zone', this.timeZone);\r\n\t}\r\n\r\n\tprivate mounted(): void {\r\n\t\t// Start heartbeat to reports server so our session never expires if we have this page open\r\n\t\tthis.heartbeatInterval = setInterval(() => {\r\n\t\t\tthis.heartbeatToReportServer();\r\n\t\t\tthis.heartbeatToCurrentServer();\r\n\t\t}, 30000);\r\n\t}\r\n\r\n\tprivate destroyed(): void {\r\n\t\tthis.resetFilters();\r\n\t\tclearInterval(this.heartbeatInterval);\r\n\t}\r\n\r\n\tprivate parseurlObject(parsedUrlObject) {\r\n\t\t// Cycle through the properties of the filter object and deal with unique static edge cases\r\n\t\treturn Object.keys(parsedUrlObject)\r\n\t\t\t.filter(p => p !== \"groupingTypeEnum\" && p !== \"timeZone\")\r\n\t\t\t.forEach(key => {\r\n\t\t\t\t// if are url contains a report count, use that instead of the default\r\n\t\t\t\tif (key === \"resultCount\") {\r\n\t\t\t\t\t// Parse the count filter object into a human readable object for the drop down list\r\n\t\t\t\t\tconst count = parseInt(parsedUrlObject[key]);\r\n\t\t\t\t\tconst labeltxt = count > 500 ? \"All\" : count.toString();\r\n\t\t\t\t\tthis.selectedFilters.resultCount = {\r\n\t\t\t\t\t\tid: count,\r\n\t\t\t\t\t\ttitle: labeltxt\r\n\t\t\t\t\t};\r\n\t\t\t\t} else if (key === \"relativeHours\") {\r\n\t\t\t\t\t// Parse the relative hours filter object into a human readable object for the drop down list\r\n\t\t\t\t\tconst hours = parseInt(parsedUrlObject[key]);\r\n\t\t\t\t\tthis.setRelativeHoursToReport(hours);\r\n\t\t\t\t\tif (this.selectedFilters) {\r\n\t\t\t\t\t\tthis.selectedFilters.startDate = relativeHoursDateFormatted(hours);\r\n\t\t\t\t\t\tthis.selectedFilters.endDate = relativeHoursDateFormatted(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (key === \"excludeAutoHandled\") {\r\n\t\t\t\t\t// Parse the exlude auto handled filter object into the correct human readable format\r\n\t\t\t\t\tconst exclude = parseInt(parsedUrlObject[key]);\r\n\t\t\t\t\tconst label = exclude === 1 ? \"Yes\" : \"No\";\r\n\t\t\t\t\tthis.selectedFilters.excludeAutoHandled = {\r\n\t\t\t\t\t\tid: exclude,\r\n\t\t\t\t\t\ttitle: label\r\n\t\t\t\t\t};\r\n\t\t\t\t} else if (key === \"startDate\" || key === \"endDate\") {\r\n\t\t\t\t\t// ensure our dates are formatted correcly as the date-time component expects it to be formatted correctly\r\n\t\t\t\t\tlet dateString = parsedUrlObject[key];\r\n\t\t\t\t\tlet dateobj = new Date(dateString);\r\n\t\t\t\t\tlet isoDateString = dateobj.toISOString();\r\n\t\t\t\t\tthis.selectedFilters[key] = isoDateString;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.selectedFilters[key] = parsedUrlObject[key];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate applyFiltersFromRoute(query = null): void {\r\n\t\t// if the route is set, we are loading a custom report with filters applied\r\n\t\tif (this.$route.params.reportType) {\r\n\t\t\t// Start building report url with report type and grouping\r\n\t\t\tlet reportType =\r\n\t\t\t\t\"/\" +\r\n\t\t\t\tthis.$route.params.reportType +\r\n\t\t\t\t(this.$route.query.groupingTypeEnum ? \"?groupingTypeEnum=\" + this.$route.query.groupingTypeEnum : \"\");\r\n\r\n\t\t\t// Parse the params in the URL to a filter object\r\n\t\t\tconst parsedUrlObject = parse(this.$route.query as any);\r\n\t\t\tthis.parseurlObject(parsedUrlObject);\r\n\t\t\tthis.runV2Report(reportType, Object.keys(this.$route.query).length > 1, this.selectedFilters);\r\n\t\t} else if(this.isPlugin) {\r\n\t\t\tthis.reportUrl = query ? query : this.chartObject.reportUrl;\r\n\t\t\t// use the parsed url and check for edge cases\r\n\t\t\tconst url = this.getJsonFromUrl(this.reportUrl);\r\n\t\t\tlet reportType = \"/\" + url['reportType'] + (url['groupingTypeEnum'] ? \"?groupingTypeEnum=\" + url['groupingTypeEnum'] : \"\");\r\n\t\t\tthis.groupingType = url['groupingTypeEnum'];\r\n\t\t\tconst parsedUrlObject = parse(this.reportUrl as any);\r\n\t\t\tdelete parsedUrlObject[Object.keys(parsedUrlObject)[0]];\r\n\t\t\tthis.parseurlObject(parsedUrlObject);\r\n\r\n\t\t\t// run the report, any of the custom filters will be applied as normal\r\n\t\t\tthis.runV2Report(reportType, this.chartObject.canDrilldown, this.selectedFilters);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate resetFilters(emitFilters: boolean = false) {\r\n\t\tthis.selectedFilters = {\r\n\t\t\tgroupId: [],\r\n\t\t\treferenceId: [],\r\n\t\t\tresponseId: [],\r\n\t\t\teventTypeId: [],\r\n\t\t\tuserId: [],\r\n\t\t\teventOutcomeId: [],\r\n\t\t\tserverTypeEventNum: [],\r\n\t\t\texcludeAutoHandled: { id: 1, title: \"Yes\" },\r\n\t\t\tresultCount: { id: 100, title: \"100\" },\r\n\t\t\tstartDate: relativeHoursDateFormatted(this.relativeHoursToReport),\r\n\t\t\tendDate: relativeHoursDateFormatted(0)\r\n\t\t};\r\n\r\n\t\tif (emitFilters) {\r\n\t\t\tthis.$emit('report-filters', this.selectedFilters);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate goToReport(url: string): void {\r\n\t\tif(this.isPlugin) {\r\n\t\t\tthis.applyFiltersFromRoute(url);\r\n\t\t} else {\r\n\t\t\tthis.$router.push(`/reports${url}`);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getJsonFromUrl(url: string): any {\r\n\t\tlet query = url.split('?')[1];\r\n\t\tlet result = {};\r\n\t\tlet reportType = url.split('?')[0].substring(1);\r\n\t\tresult[['reportType'][0]] = decodeURIComponent(reportType);\r\n\t\tif (!query) {\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\tquery.split(\"?\").forEach(function(part) {\r\n\t\t\tvar item = part.split(\"&\");\r\n\t\t\titem.forEach((element) => {\r\n\t\t\t\tvar subpart = element.split(\"=\");\r\n\t\t\t\tif(subpart[1]) {\r\n\t\t\t\t\tresult[subpart[0]] = decodeURIComponent(subpart[1]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/** This is added here due to emitting being outside of the scope\r\n\t * while within the google events.\r\n\t */\r\n\tprivate emitDrilldownUrl(drilldownUrl: string): void {\r\n\t\tthis.$emit('drilldown-url', drilldownUrl);\r\n\t}\r\n\r\n\tprivate lockFilters(status: boolean): void {\r\n\t\tthis.$emit('lockFilter', status);\r\n\t}\r\n\r\n\t// event listeners for chart events, such as clicking on a graph item\r\n\tprivate chartEvents = {\r\n\t\t// on click of a chart item\r\n\t\tselect: async () => {\r\n\t\t\tif(!this.chartObject.canDrilldown) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t// get chart object\r\n\t\t\tconst table = this.$refs.gChart.chartObject;\r\n\t\t\t//find the selected item index\r\n\t\t\tconst selection = table.getSelection();\r\n\r\n\t\t\tif (selection[0]) {\r\n\t\t\t\tlet report = this.getReport();\r\n\t\t\t\t//const reportDrilldown = isPlugin ? : report.data[0].drillDown;\r\n\t\t\t\t// if the current report has a drill down url, and the current chart object has the `getDataTable()` method, aliased as J\r\n\t\t\t\tif ((report.drillDownReport || report.data[0].drillDown) && table.J != undefined) {\r\n\t\t\t\t\t//NOTE : to get the correct data of the item that was selected in the graph there are a few hoops to jump through\r\n\t\t\t\t\t// Google charts only gives you a row and column index of the selected item, so using that we need to look up the data in our own result set\r\n\r\n\t\t\t\t\t// label of chart item clicked on, such as Area\r\n\t\t\t\t\tlet label = table.J.getColumnLabel(0);\r\n\r\n\t\t\t\t\t// value of chart item user clicked on, such as 200 Liberty\r\n\t\t\t\t\tlet selectedValue = table.J.getValue(selection[0].row, 0);\r\n\r\n\t\t\t\t\t// find the matching object property based on the chart label,\r\n\t\t\t\t\t//eg Area, from our object we want to use the Area property\r\n\t\t\t\t\tlet labelName = this.getLowerCaseKey(report.data[0], label);\r\n\r\n\t\t\t\t\t// find the matching object in our dataset, that matches the value of the item clicked on\r\n\t\t\t\t\t// eg find the result that has the value of 200 Liberty\r\n\t\t\t\t\tlet paramResult = report.data.find(row => row[labelName] == selectedValue);\r\n\t\t\t\t\tif (paramResult.drillDown) {\r\n\t\t\t\t\t\tthis.lockFilters(true);\r\n\t\t\t\t\t\tthis.goToReport(paramResult.drillDown);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// get the column name from the current report, that will be used to filter the next report\r\n\t\t\t\t\t\t// for example groupId, this would apply the groupId filter to the next report to only show the group that was just clicked on\r\n\t\t\t\t\t\tlet idColumnName = this.getLowerCaseKey(report.data[0], report.idColumnName);\r\n\r\n\t\t\t\t\t\t// get the value to be used as the id for the filter, based on the idColumnName\r\n\t\t\t\t\t\t// eg using the column of groupId we would pull out the value of 5 to be used as the id to filter on\r\n\t\t\t\t\t\tlet filterValue = paramResult[idColumnName];\r\n\t\t\t\t\t\tlet drillDownUrl = `${report.drillDownReport}&${idColumnName}`;\r\n\r\n\t\t\t\t\t\tswitch (report.idColumnType) {\r\n\t\t\t\t\t\t\tcase \"Complex\": {\r\n\t\t\t\t\t\t\t\tconst complexObject = JSON.parse(filterValue);\r\n\t\t\t\t\t\t\t\tdrillDownUrl += `[0][id]=${complexObject.id}&${idColumnName}[0][id2]=${complexObject.id2}`;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcase \"Multi\": {\r\n\t\t\t\t\t\t\t\tdrillDownUrl += `[0][id]=${filterValue}`;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tcase \"Object\":\r\n\t\t\t\t\t\t\tcase \"String\":\r\n\t\t\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\t\t\tdrillDownUrl += `=${filterValue}`;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(this.isPlugin) {\r\n\t\t\t\t\t\t\tthis.emitDrilldownUrl(drillDownUrl);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.goToReport(drillDownUrl);\r\n\t\t\t\t\t\tthis.lockFilters(true);\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\tregionClick: region => {\r\n\t\t\t// on click of a map region\r\n\t\t}\r\n\t};\r\n\r\n\t// run the report with any filter options\r\n\tprivate async runV2Report(reportUrl, isDrillDown = false, overrideFilters = null) {\r\n\t\tif (!this.loading) {\r\n\t\t\tif(!this.isPlugin) {\r\n\t\t\t\t//store the current report url, for later use and to highlight selected report in the sidebar\r\n\t\t\t\tthis.setCurrentReportUrl(reportUrl);\r\n\t\t\t}\r\n\r\n\t\t\tlet payload = {\r\n\t\t\t\tgroupingType: this.isPlugin ? this.groupingType : this.$route.query.groupingTypeEnum,\r\n\t\t\t\ttimeZone: this.timeZone,\r\n\t\t\t\tmultiFilters: {},\r\n\t\t\t\tcomplexMultiFilters: {},\r\n\t\t\t\tstringMultiFilters: {},\r\n\t\t\t\tdateFilters: {},\r\n\t\t\t\tidFilters: {},\r\n\t\t\t\treportUrl: {}\r\n\t\t\t};\r\n\r\n\t\t\tif(overrideFilters) {\r\n\t\t\t\tthis.selectedFilters = overrideFilters;\r\n\t\t\t\tthis.$emit('report-filters', this.selectedFilters);\r\n\t\t\t} else {\r\n\t\t\t\tthis.selectedFilters = this.filters;\r\n\t\t\t}\r\n\r\n\t\t\tconst urlFiltered = this.loadFilters(reportUrl, payload, this.selectedFilters);\r\n\r\n\t\t\t// Emit to parent if needed.\r\n\t\t\tthis.$emit('report-options-payload', payload);\r\n\r\n\r\n\t\t\tthis.$emit(\"report-perma-link\", { reportUrl:reportUrl, urlFiltered: urlFiltered });\r\n\r\n\t\t\tif (this.isPlugin) {\r\n\t\t\t\tpayload.dateFilters['endDate'] = relativeHoursDateFormatted(0); // Get current time NOW.\r\n\r\n\t\t\t\tif (payload.dateFilters['startDate'] == null) payload.dateFilters['startDate'] = relativeHoursDateFormatted(this.relativeHoursToReport);\r\n\r\n\t\t\t\tif (reportUrl == \"/\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.reportData = await this.fetchReport({payload, reportUrl});\r\n\r\n\t\t\t\tthis.$emit('chart-results', this.reportData);\r\n\t\t\t\tthis.$emit('invalid-reporturl', this.reportData === null);\r\n\t\t\t} else {\r\n\r\n\t\t\t\tthis.runReport(payload).then(res => {\r\n\t\t\t\t\tthis.$emit('error-msg', '');\r\n\t\t\t\t\tthis.setSelectedFilters();\r\n\t\t\t\t}).catch(err => {\r\n\t\t\t\t \t!err || !err.response || !err.response.data ? this.$emit('error-msg', 'Something went wrong') : this.$emit('error-msg', err.response.data);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (this.$refs.chartContainer) {\r\n\t\t\t\t//scroll the window so the chart is in view (typically for mobile)\r\n\t\t\t\tthis.$refs.chartContainer.scrollIntoView();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate loadFilters(reportUrl, payload, selectedFilters) {\r\n\t\t\tif(!selectedFilters && this.isPlugin) selectedFilters = this.selectedFilters;\r\n\t\t\tlet urlFiltered = {};\r\n\t\t\t// iterate over each filter option and populate the payload\r\n\t\t\tObject.keys(selectedFilters).forEach((key, index) => {\r\n\t\t\t\tif (selectedFilters[key] && selectedFilters[key].constructor.name == \"Array\") {\r\n\t\t\t\t\t// If the filter is an array, strip everything apart from the IDs\r\n\t\t\t\t\tif (selectedFilters[key].some(filter => filter.id && filter.id2)) {\r\n\t\t\t\t\t\tpayload.complexMultiFilters[key] = selectedFilters[key].map(filter => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tid: parseInt(filter.id),\r\n\t\t\t\t\t\t\t\tid2: parseInt(filter.id2)\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else if (selectedFilters[key].some(filter => filter.title === filter.id)) {\r\n\t\t\t\t\t\tpayload.stringMultiFilters[key] = selectedFilters[key].map(filter => filter.id);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tpayload.multiFilters[key] = selectedFilters[key].map(filter => parseInt(filter.id));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (selectedFilters[key] && selectedFilters[key].constructor.name == \"Object\") {\r\n\t\t\t\t\t// eg &ExcludedAutoHandled=1\r\n\t\t\t\t\tpayload.idFilters[key] = parseInt(selectedFilters[key].id);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (selectedFilters[key] && selectedFilters[key].constructor.name == \"String\") {\r\n\t\t\t\t\t// eg &startDate=2019-05-22T10:46:57.000Z\r\n\t\t\t\t\tpayload.dateFilters[key] = selectedFilters[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.populateFilteredUrlObject(key, urlFiltered, !selectedFilters && this.isPlugin);\r\n\t\t\t});\r\n\r\n\t\t\treturn urlFiltered;\r\n\t}\r\n\r\n\tprivate populateFilteredUrlObject(key: string, urlFiltered: any, requiresDefault: boolean) {\r\n\t\t// Strip out all the titles from the filter object so that it is not serialized into the URL\r\n\t\tif (this.selectedFilters[key]) {\r\n\t\t\tif (this.selectedFilters[key].length > 0 && this.selectedFilters[key].constructor.name == \"Array\") {\r\n\t\t\t\tconst removedTitles = this.selectedFilters[key].map(filter => {\r\n\t\t\t\t\tconst { title, ...ids } = filter;\r\n\t\t\t\t\treturn ids;\r\n\t\t\t\t});\r\n\r\n\t\t\t\turlFiltered[key] = removedTitles;\r\n\t\t\t} else if (\r\n\t\t\t\tthis.selectedFilters[key].constructor.name == \"Object\" ||\r\n\t\t\t\tthis.selectedFilters[key].constructor.name == \"String\"\r\n\t\t\t) {\r\n\t\t\t\tif (key == \"startDate\"|| key == \"endDate\") {\r\n\t\t\t\t\turlFiltered[key] = this.selectedFilters[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\turlFiltered[key] = this.selectedFilters[key].id;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setSelectedFilters() {\r\n\t\tif (!this.report.selectedOptions) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.report.selectedOptions.forEach(option =>{\r\n\t\t\t\t(this.selectedFilters[option.title] = option.type === \"Array\" ? option.data : option.data[0])\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tprivate getReport() {\r\n\t\treturn this.isPlugin ? this.reportData : this.report;\r\n\t}\r\n\r\n\t// method that can be run when the chart is created\r\n\tprivate onChartReady() {}\r\n\r\n\tprivate getChartDataPlugin(isTable) {\r\n\t\tlet data = [];\r\n\t\tlet headings = [];\r\n\r\n\t\tif (!this.reportData) {\r\n\t\t\treturn {none: 'none'};\r\n\t\t}\r\n\t\t// get the columns from the report object that will be used on the graphy, ie Area and Count\r\n\t\tlet columns = this.reportData.metricColumns;\r\n\r\n\t\t// if our chart type is a table, and specific table columns have been set, use those instead\r\n\t\tif (isTable && this.reportData.tableColumns && this.reportData.tableColumns.length > 0) {\r\n\t\t\tcolumns = this.reportData.tableColumns;\r\n\t\t}\r\n\t\t// if our chart type is a table, but no specific columns have been set, use all the columns\r\n\t\telse if (isTable && !this.reportData.tableColumns) {\r\n\t\t\tcolumns = Object.keys(this.reportData.data[0]);\r\n\t\t}\r\n\r\n\t\t// use our list of columns to as the heading for the chart\r\n\t\tObject.keys(columns).forEach(function(key, index) {\r\n\t\t\theadings.push(columns[key]);\r\n\t\t});\r\n\r\n\t\t// add the headings to the data array, by default Google charts will use the first row in the array as the heading columns\r\n\t\tdata.push(headings);\r\n\r\n\t\t// iterate over data to create a subset with only the columns we want for the graph\r\n\t\tthis.reportData.data.forEach(element => {\r\n\t\t\tlet row = [];\r\n\t\t\theadings.forEach(prop => {\r\n\t\t\t\t// find the matching key for our heading\r\n\t\t\t\tlet propLower = this.getLowerCaseKey(element, prop);\r\n\t\t\t\trow.push(element[propLower]);\r\n\t\t\t});\r\n\t\t\tdata.push(row);\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t// convert our result data into the correct format for Google Charts\r\n\tprivate getChartData(isTable) {\r\n\t\tif (this.isPlugin) {\r\n\t\t\treturn this.getChartDataPlugin(isTable);\r\n\t\t}\r\n\r\n\t\tlet data = [];\r\n\t\tlet headings = [];\r\n\t\t// get the columns from the report object that will be used on the graphy, ie Area and Count\r\n\t\tlet columns = this.report.metricColumns;\r\n\r\n\t\t// if our chart type is a table, and specific table columns have been set, use those instead\r\n\t\tif (isTable && this.report.tableColumns && this.report.tableColumns.length > 0) {\r\n\t\t\tcolumns = this.report.tableColumns;\r\n\t\t}\r\n\t\t// if our chart type is a table, but no specific columns have been set, use all the columns\r\n\t\telse if (isTable && !this.report.tableColumns) {\r\n\t\t\tcolumns = Object.keys(this.report.data[0]);\r\n\t\t}\r\n\r\n\t\t// use our list of columns to as the heading for the chart\r\n\t\tObject.keys(columns).forEach(function(key, index) {\r\n\t\t\theadings.push(columns[key]);\r\n\t\t});\r\n\r\n\t\t// add the headings to the data array, by default Google charts will use the first row in the array as the heading columns\r\n\t\tdata.push(headings);\r\n\r\n\t\t// iterate over data to create a subset with only the columns we want for the graph\r\n\t\tthis.report.data.forEach(element => {\r\n\t\t\tlet row = [];\r\n\t\t\theadings.forEach(prop => {\r\n\t\t\t\t// find the matching key for our heading\r\n\t\t\t\tlet propLower = this.getLowerCaseKey(element, prop);\r\n\t\t\t\trow.push(element[propLower]);\r\n\t\t\t});\r\n\t\t\tdata.push(row);\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\t// function to find the key for a property due to case sensitivity\r\n\tprivate getLowerCaseKey(object, findKey) {\r\n\t\tlet foundKey = \"\";\r\n\t\tObject.keys(object).forEach((key, index) => {\r\n\t\t\tif (key.toLowerCase() == findKey.toLowerCase()) {\r\n\t\t\t\tfoundKey = key;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn foundKey;\r\n\t}\r\n\r\n\tprivate get noReportResults() {\r\n\t\treturn !this.error && !this.loading && this.report && this.report.data != undefined && this.report.data.length == 0 || this.isPlugin && this.reportData && this.reportData.data.length == 0\r\n\t}\r\n\r\n\tprivate get getReportData() {\r\n\t\treturn this.isPlugin ? this.reportData : this.report;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv-progress.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv-progress.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./csv-progress.vue?vue&type=template&id=e2e276b4&scoped=true\"\nimport script from \"./csv-progress.vue?vue&type=script&lang=ts\"\nexport * from \"./csv-progress.vue?vue&type=script&lang=ts\"\nimport style0 from \"./csv-progress.vue?vue&type=style&index=0&id=e2e276b4&prod&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 \"e2e276b4\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nconst CSVParser = namespace(\"csvParser\");\r\nconst CSVFormHandler = namespace(\"csvFormHandler\");\r\nimport { namespace } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { ModalItemCSV } from '@/store/csv-form-handler/types'\r\nimport { get, isArray } from 'lodash'\r\nimport vSelect from \"vue-select\";\r\nimport csvForm from './csv-form.vue'\r\n\r\nimport csvProgress from './csv-progress.vue'\r\n\r\ninterface FileCsv {\r\n\tstringCsv: string,\r\n\tfileName: string\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tscrollbar: VuePerfectScrollbar,\r\n\t\t\"vue-select\": vSelect,\r\n\t\t'csv-form': csvForm,\r\n\t\t'csv-progress': csvProgress\r\n\t}\r\n})\r\nexport default class CsvUploader extends Vue {\r\n\t@Prop({ type: String, required: true}) name\r\n\t@Prop({ type: Boolean, default: false}) isMultipleError\r\n\t@Prop({ type: Array, default: () => []}) modalItemsCsv: ModalItemCSV[];\r\n\t@Prop({ type: Object, required: true }) defaultFile\r\n\t@Prop({ type: Object }) progressBulk\r\n\t@Prop({ type: Object, default: () => ({\r\n\t\t\tstringCsv: '',\r\n\t\t\tfileName: 'Template.csv'\r\n\t\t}) }) fileCsv: FileCsv;\r\n\t@CSVParser.Action loadSCVData: any;\r\n\t@CSVParser.Action linkDownloadCSV: any;\r\n\t@CSVParser.Action setValidHeadersName: any;\r\n\t@CSVParser.Action setMandatoryFields: any;\r\n\t@CSVParser.Getter isDataEmpty:any;\r\n\r\n\t@CSVParser.Getter headers:any;\r\n\t@CSVParser.Getter body:any;\r\n\t@CSVParser.Getter getCsvLinkDownloadByString:any;\r\n\t@CSVParser.Getter errorsCSV:any;\r\n\r\n\t//Remove or Not ??\r\n\t@CSVFormHandler.Action addNewRowCsv: any;\r\n\t@CSVFormHandler.Action setModalItemsCsv: any;\r\n\r\n\t@CSVFormHandler.Getter mandatoryFields: any\r\n\t@CSVFormHandler.Getter validHeaders: any\r\n\t@CSVFormHandler.State csvData: any;\r\n\r\n\tfileName: string = 'fileCSV.csv'\r\n\r\n\tprivate formData = []\r\n\tprivate isLoading = false\r\n\r\n\tbeforeDestroy() {\r\n\t\tthis.loadSCVData({ name: this.name, csvText: '' });\r\n\t\tthis.setModalItemsCsv({ modalItemsCsv: {}, name: this.name });\r\n\t\tthis.setValidHeadersName({ validHeadersName: {}, name: this.name });\r\n\t\tthis.setMandatoryFields({ mandatoryFields: {}, name: this.name });\r\n\t}\r\n\r\n\tget isProgressError() {\r\n\t\treturn this.progressBulk.status === 'error'\r\n\t}\r\n\r\n\tget disabledGridButton() {\r\n\t\treturn !!this.localIsDataEmpty || !!this.localErrorsCSV.error || !!this.localErrorsCSV.info\r\n\t}\r\n\r\n\tget localErrorsCSV() {\r\n\t\treturn this.errorsCSV(this.name)\r\n\t}\r\n\r\n\tget localBody() {\r\n\t\treturn this.body(this.name)\r\n\t}\r\n\r\n\tget localIsDataEmpty() {\r\n\t\treturn this.isDataEmpty(this.name)\r\n\t}\r\n\r\n\tget validModalItems() {\r\n\t\treturn this.modalItemsCsv.filter(({ csvExclude }) => !csvExclude)\r\n\t}\r\n\r\n\tget isUploading() {\r\n\t\treturn !!Object.keys(this.progressBulk).length\r\n\t}\r\n\r\n\tget batchUploadErrors() {\r\n\t\treturn !!this.progressBulk?.percentage && this.progressBulk?.rowIndex == 100 && !!this.progressBulk?.bulkErrors\r\n\t}\r\n\r\n\tget batchUploadErrorRowsForDownload(): any[] {\r\n\t\tif (!this.batchUploadErrors) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\t// Get the failed rows to download\r\n\t\tlet erroredFormData = [];\r\n\t\tfor (let i = 0; i < this.progressBulk.bulkErrors.length; i++) {\r\n\t\t\terroredFormData.push(this.formData[this.progressBulk.bulkErrors[i].rowId]);\r\n\t\t}\r\n\r\n\t\treturn erroredFormData;\r\n\t}\r\n\r\n\tdownloadTemplate() {\r\n\t\tconst { name, data } = this.defaultFile\r\n\t\tconst url = this.getCsvLinkDownloadByString(data)\r\n\t\tthis.download({ fileName: name, url })\r\n\t}\r\n\r\n\tsetCurrentData(data) {\r\n\t\tthis.formData = data\r\n\t\tthis.$emit('get-current-data', data)\r\n\t}\r\n\r\n\tprivate formattedDataToDownload(csvValue: Array | string): string {\r\n\t\treturn isArray(csvValue) ? `\"${csvValue.join()}\"` : csvValue\r\n\t}\r\n\r\n\tprivate async downloadCSV() {\r\n\t\tlet formDataToDownload = [...this.formData];\r\n\r\n\t\t// If the upload has been batched and has errors, only download the failed rows\r\n\t\tif (this.batchUploadErrors) {\r\n\t\t\tformDataToDownload = this.batchUploadErrorRowsForDownload;\r\n\t\t}\r\n\r\n\t\tconst body = formDataToDownload.map( row => row.reduce((acc, { title, csvValue }) => ({\r\n\t\t...acc,\r\n\t\t[title]: this.formattedDataToDownload(csvValue)\r\n\t\t}) ,{}))\r\n\r\n\t\tconst option = {\r\n\t\t\tbody,\r\n\t\t\theaders: this.headers(this.name)\r\n\t\t}\r\n\r\n\t\tconst url = await this.linkDownloadCSV(option)\r\n\t\tthis.download({ fileName: this.fileName, url })\r\n\t}\r\n\r\n\tprivate download({ fileName, url }) {\r\n\t\tconst a = document.createElement(\"a\");\r\n\r\n\t\tdocument.body.appendChild(a);\r\n\t\ta.setAttribute(\"style\", \"display: none\");\r\n\t\ta.href = url;\r\n\t\ta.download = fileName;\r\n\t\ta.click();\r\n\t\twindow.URL.revokeObjectURL(url);\r\n\t}\r\n\r\n\tprivate openFilesTree() {\r\n\t\tconst input = this.$refs.uploadCompleted as HTMLInputElement\r\n\t\tinput.value = ''\r\n\t\tinput.click()\r\n\t}\r\n\r\n\tprivate async uploadCompleted(file) {\r\n\t\tconst fileExtension = `${get(file, 'name')}`.match(/\\.csv$/i)\r\n\r\n\t\tif(fileExtension === null) return\r\n\r\n\t\tthis.fileName = file.name\r\n\r\n\t\tconst reader = new FileReader()\r\n\t\treader.onload = async () => {\r\n\t\t\tconst result = reader.result as string\r\n\t\t\tthis.isLoading = true\r\n\t\t\tawait this.loadSCVData({ name: this.name, csvText: '' });\r\n\t\t\tthis.$emit('reset-progress')\r\n\t\t\tthis.$nextTick(async () => {\r\n\t\t\t\tawait this.loadSCVData({ name: this.name, csvText: result });\r\n\t\t\t\tawait this.initDataForm()\r\n\r\n\t\t\t\tthis.isLoading = false\r\n\t\t\t})\r\n\t\t}\r\n\t\treader.readAsText(file);\r\n\t}\r\n\r\n\tasync initDataForm() {\r\n\t\tawait this.setModalItemsCsv({ modalItemsCsv: this.modalItemsCsv, name: this.name });\r\n\t\tawait this.setValidHeadersName({ validHeadersName: this.validHeaders(this.name), name: this.name });\r\n\t\tawait this.setMandatoryFields({ mandatoryFields: this.mandatoryFields(this.name), name: this.name });\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv-uploader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv-uploader.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./csv-uploader.vue?vue&type=template&id=132b51fc&scoped=true\"\nimport script from \"./csv-uploader.vue?vue&type=script&lang=ts\"\nexport * from \"./csv-uploader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./csv-uploader.vue?vue&type=style&index=0&id=132b51fc&prod&lang=scss\"\nimport style1 from \"./csv-uploader.vue?vue&type=style&index=1&id=132b51fc&prod&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 \"132b51fc\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nconst CSVFormHandler = namespace(\"csvFormHandler\");\r\nconst CSVParser = namespace(\"csvParser\");\r\nimport { namespace } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport CsvUploader from './csv-uploader.vue'\r\nimport { ModalItemCSV } from '@/store/csv-form-handler/types'\r\n\r\nexport interface DefaultFile {\r\n\tname: string,\r\n\tdata: string\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tscrollbar: VuePerfectScrollbar,\r\n\t\t'csv-uploader': CsvUploader,\r\n\t}\r\n})\r\nexport default class CsvUploaderWrapper extends Vue {\r\n\t@Prop({ required: true }) modalItemsCsv: ModalItemCSV[];\r\n\t@Prop({ default: 'Bulk upload' }) title: string;\r\n\t@Prop({ type: String, required: true }) name: string\r\n\t@Prop({ type: Object, required: true }) defaultFile\r\n\t@Prop({ type: Object, default: () => ({}) }) progressBulk\r\n\t@Prop({ type: Boolean, default: false}) isMultipleError\r\n\t@Prop({ type: String, default: 'modalBulk'}) modalId\r\n\t@CSVFormHandler.Getter isValidForm: any\r\n\t@CSVFormHandler.Action validateAll: any\r\n\t@CSVFormHandler.Getter errorsRow: any\r\n\t@CSVParser.Getter errorsCSV:any;\r\n\r\n\tprivate formData = []\r\n\r\n\tget localIsValidForm() {\r\n\t\treturn this.isValidForm(this.name)\r\n\t}\r\n\r\n\tprivate setCurrentData(data) {\r\n\t\tthis.formData = data\r\n\t}\r\n\r\n\tget localErrorsCSV() {\r\n\t\treturn this.errorsCSV(this.name)\r\n\t}\r\n\r\n\tget isUploading() {\r\n\t\treturn Object.keys(this.progressBulk).length > 0\r\n\t}\r\n\r\n\tget disabledButtonSubmit() {\r\n\t\tconst isErrorCsv = !!this.localErrorsCSV.error || !!this.localErrorsCSV.info\r\n\t\treturn !this.localIsValidForm || this.isUploading || isErrorCsv\r\n\t}\r\n\tget isInvalidForm() {\r\n\t\treturn Object.keys(this.errorsRow(this.name) || {}).length > 0\r\n\t}\r\n\r\n\tbeforeDestroy(){\r\n\t\tthis.$emit('on-close')\r\n\t}\r\n\r\n\tasync submitForm() {\r\n\t\tawait this.validateAll({ name: this.name })\r\n\r\n\t\tif(this.isInvalidForm) return\r\n\r\n\t\tconst formData = this.formData.map(row => row.reduce((acc, { key, csvValue, rowId }) => ({\r\n\t\t\t...acc,\r\n\t\t\t[key]: csvValue,\r\n\t\t\trowId\r\n\t\t}), {}))\r\n\t\tthis.$emit('on-submit', { formData })\r\n\t}\r\n\r\n\tcloseForm(close) {\r\n\t\tthis.$emit('on-close')\r\n\t\tif(typeof close === \"function\") close()\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv-uploader-wrapper.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./csv-uploader-wrapper.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./csv-uploader-wrapper.vue?vue&type=template&id=662252ca\"\nimport script from \"./csv-uploader-wrapper.vue?vue&type=script&lang=ts\"\nexport * from \"./csv-uploader-wrapper.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('span',{class:_vm.valueStyle,attrs:{\"data-cy\":\"value-text\"}},[_vm._v(_vm._s(_vm.valueText))]),(_vm.value)?_c('b-button',{staticClass:\"fixed-width-button\",attrs:{\"data-cy\":\"button-clear\",\"variant\":\"danger\"},on:{\"click\":_vm.onClearClick}},[_vm._v(\" Clear \")]):_vm._e(),(_vm.displayUndoButton)?_c('b-button',{staticClass:\"fixed-width-button\",attrs:{\"data-cy\":\"button-undo\",\"variant\":\"primary\"},on:{\"click\":_vm.onUndoClick}},[_vm._v(\" Undo \")]):_vm._e(),_c('confirmation-modal',{attrs:{\"data-cy\":\"confirmation-modal\",\"visible\":_vm.isClearConfirmationShown,\"okBtnText\":\"Clear\",\"cancelBtnText\":\"Cancel\",\"danger\":true,\"title\":\"Clear User's Two-Factor Authentication\"},on:{\"ok\":_vm.onClearConfirm,\"cancel\":_vm.onClearCancel}},[_c('p',[_vm._v(\" Are you sure you want to clear Two-Factor Authentication for \"),_c('strong',[_vm._v(_vm._s(_vm.row.fullName)+\" (\"+_vm._s(_vm.row.username)+\")\")]),_vm._v(\" ? \")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport UserDTO from \"@/types/sv-data/users/UserDTO\";\r\nimport ConfirmationModal from \"@/components/mobile-raise-templates/ConfirmationModal.vue\";\r\n\r\nconst GenericTableStore = namespace(\"GenericTable\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"confirmation-modal\": ConfirmationModal\r\n\t}\r\n})\r\nexport default class ClearMFA extends Vue {\r\n\t@Prop({ type: Boolean, default: false })\r\n\tpublic value: boolean;\r\n\r\n\t@GenericTableStore.Getter(\"getModalRow\") row: UserDTO;\r\n\r\n\tprivate displayUndoButton = false;\r\n\tprivate isClearConfirmationShown = false;\r\n\r\n\t@Watch(\"value\")\r\n\tprivate onValueChanged(newValue: boolean) {\r\n\t\t// if newValue is flase (changed to cleared) - display undo button\r\n\t\tthis.displayUndoButton = !newValue;\r\n\t}\r\n\r\n\tprivate onClearClick() {\r\n\t\tthis.isClearConfirmationShown = true;\r\n\t}\r\n\tprivate onUndoClick() {\r\n\t\tthis.$emit(\"input\", true);\r\n\t}\r\n\tprivate onClearConfirm() {\r\n\t\tthis.isClearConfirmationShown = false;\r\n\t\tthis.$emit(\"input\", false);\r\n\t}\r\n\tprivate onClearCancel() {\r\n\t\tthis.isClearConfirmationShown = false;\r\n\t}\r\n\r\n\tprivate get valueText() {\r\n\t\tif (this.value) {\r\n\t\t\treturn \"Two-Factor Authentication set\";\r\n\t\t} else if (this.displayUndoButton) {\r\n\t\t\treturn \"Two-Factor Authentication cleared\";\r\n\t\t} else {\r\n\t\t\treturn \"Two-Factor Authentication not set\";\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get valueStyle() {\r\n\t\treturn this.value ? \"fixed-width-span text-success\" : \"fixed-width-span text-danger\";\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearMFA.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearMFA.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ClearMFA.vue?vue&type=template&id=80f74c02&scoped=true\"\nimport script from \"./ClearMFA.vue?vue&type=script&lang=ts\"\nexport * from \"./ClearMFA.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ClearMFA.vue?vue&type=style&index=0&id=80f74c02&prod&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 \"80f74c02\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('vselect3',{staticClass:\"w-100\",attrs:{\"value\":_vm.currentAssetType,\"options\":_vm.assetTypesList,\"placeholder\":\"Type\",\"label\":\"title\",\"appendToBody\":true,\"selectOnTab\":true,\"autoscroll\":true,\"clearable\":_vm.clearable,\"disabled\":_vm.readonly},on:{\"input\":_vm.valueChanged}}),_c('b-modal',{attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"header-class\":\"delete-confirm-modal\"},model:{value:(_vm.isRemoveAssetTypeDialogOpen),callback:function ($$v) {_vm.isRemoveAssetTypeDialogOpen=$$v},expression:\"isRemoveAssetTypeDialogOpen\"}},[_c('template',{slot:\"modal-header\"},[_c('table',[_c('tr',[_c('td',[_c('i',{staticClass:\"fas fa-trash hover-icon\",staticStyle:{\"margin-right\":\"15px\"},attrs:{\"title\":\"Remove Asset Type\"}})]),_c('td',[_c('h4',[_vm._v(\"Remove Asset Type\")])])])])]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"ksConfirm\",attrs:{\"variant\":\"danger\"},on:{\"click\":_vm.confirmRemove}},[_vm._v(\" Remove \")]),_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.cancelRemove}},[_vm._v(\" Cancel \")])],1),_c('div',[_c('h5',{staticClass:\"default-error-message\"},[_vm._v(\" Are you sure you want to remove this users asset' type? \")]),_c('br'),_c('div',{staticClass:\"delete-action-context\"},[_c('h5',[_vm._v(\"This action will:\")]),_c('ul',[_c('li',[_vm._v(\"Archive the linked asset to this user. This process can not be reversed.\")])])])])],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop, Emit } from \"vue-property-decorator\";\r\nimport api from \"@/services/api.service\";\r\nimport vselect3 from \"vselect3\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tvselect3\r\n\t}\r\n})\r\nexport default class AssetTypeSelect extends Vue {\r\n\t@Prop() private value: any;\r\n\t@Prop({default: false, type:Boolean }) private readonly?: boolean;\r\n\t@Prop({default: false, type:Boolean }) private assetOnlyTypes: boolean;\r\n\t@Prop({default: false, type:Boolean}) private clearable: boolean;\r\n\r\n\tprivate assetTypesList: any[] = [];\r\n private localValue: any = {};\r\n private initialValue: any = {};\r\n\tprivate isRemoveAssetTypeDialogOpen: boolean = false;\r\n\r\n\tprivate async mounted() {\r\n const value = this.value;\r\n this.initialValue = value\r\n this.localValue = value;\r\n\t\tthis.assetTypesList = (await api.getCachedAssetTypes()).filter(x => x.canBeUser == !this.assetOnlyTypes)\r\n\t}\r\n\r\n\t@Emit('input')\r\n\tprivate valueChanged(value) {\r\n\t\tthis.localValue = value ? value.assetTypeId : null;\r\n\t\tif(!this.localValue && this.initialValue && this.clearable){\r\n\t\t\tthis.isRemoveAssetTypeDialogOpen = true;\r\n\t\t} else {\r\n\t\t\treturn this.localValue;\r\n\t\t}\r\n\t}\r\n\r\n public get currentAssetType() {\r\n if(this.localValue){\r\n return this.assetTypesList.find(x => x.assetTypeId === this.localValue);\r\n }\r\n return null;\r\n\t}\r\n\r\n\t@Emit('input')\r\n\tprivate confirmRemove(){\r\n\t\tthis.isRemoveAssetTypeDialogOpen = false;\r\n\t\tthis.localValue = null;\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate cancelRemove(){\r\n\t\tthis.localValue = this.initialValue;\r\n\t\tthis.isRemoveAssetTypeDialogOpen = false;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetTypeSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetTypeSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AssetTypeSelect.vue?vue&type=template&id=4073ee58\"\nimport script from \"./AssetTypeSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./AssetTypeSelect.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Mixins, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { helpers } from \"vuelidate/lib/validators\";\r\nimport TextHighlight from \"vue-text-highlight\";\r\nimport { cloneDeep, get, isArray, uniqBy, transform, invert } from \"lodash\";\r\n\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport { UserPermissions, FeaturesList, PaginatedSearchQueryParams } from \"@/store/types\";\r\nimport { UserDetails, UserGroup } from \"@/store/user-management/types\";\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport UserGroupInput from \"./UserGroupInput.vue\";\r\nimport { passwordValidationMixins } from \"@/mixins\";\r\nimport api from \"@/services/api.service\";\r\nimport { SubscriptionBilledPermission } from \"@/store/subscription/types\";\r\nimport { ModalItemCSV } from \"@/store/csv-form-handler/types\";\r\nimport csvUploaderWrapper from \"@/components/csv-uploader/csv-uploader-wrapper.vue\";\r\nimport UsersPagedResponse from \"@/types/sv-data/users/UsersPagedResponse\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport ClearMFA from \"./ClearMFA.vue\";\r\nimport AssetTypeSelect from './AssetTypeSelect.vue';\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\n\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst GenericTableStore = namespace(\"GenericTable\");\r\nconst Subscription = namespace(\"subscription\");\r\nconst Areas = namespace(\"areas\")\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"generic-table\": GenericTable,\r\n\t\t\"text-highlight\": TextHighlight,\r\n\t\t\"csv-uploader-wrapper\": csvUploaderWrapper\r\n\t}\r\n})\r\nexport default class UserManagementSetup extends Mixins(PaginatedSearch) {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getUserTenantGroupId: number;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter(\"getUserId\") public currentUserId!: number;\r\n\t@Getter(\"getUserGroupId\") public currentGroupId!: number;\r\n\t@Getter getFeature: (featuresList: string[]) => boolean;\r\n\r\n\t@Areas.Action fetchAreaDictionary: () => Promise;\r\n\t@Areas.Getter getAreaTitle: (id: number) => string;\r\n\t@Areas.State areaDictionary: Map;\r\n\r\n\t@Eventqueue.Mutation setTreeGroupSelected: any;\r\n\r\n @Subscription.State billedUserPermissions: SubscriptionBilledPermission[];\r\n\t@Subscription.Action fetchSubscription: any;\r\n\t@Subscription.Action fetchBilledUserPermissions: any;\r\n\r\n\t@GenericTableStore.Getter getModalRow: any;\r\n\r\n\tprivate userList: UserDetails[] = [];\r\n\tprivate userGroups: UserGroup[] = [];\r\n\r\n\tprivate emailAsUser: boolean = false;\r\n\tprivate progressBulk = {}\r\n\tprivate userGroupLookup = [];\r\n\tprivate originalUserGroups = [];\r\n\tprivate assetTypesList = [];\r\n\r\n\tprivate get uniqueModalItemsByTitle(): ModalItemCSV[] {\r\n\t\treturn uniqBy(this.getModalItems(), 'title');\r\n\t}\r\n\r\n\tprivate isSendingInvite: boolean = false;\r\n\tprivate userToInvite: number = 0;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate totalRecords: number = 0;\r\n\r\n\tprivate getTableHeaders() {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Full Name\",\r\n\t\t\t\tkey: \"fullName\",\r\n\t\t\t\torder: 1,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The users full name\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"fullName\"),\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisSortedByDefault: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Email\",\r\n\t\t\t\tkey: \"username\",\r\n\t\t\t\torder: 2,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The users username\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"username\"),\r\n\t\t\t\tdataType: \"email\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"Email\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"groupTitle\",\r\n\t\t\t\torder: 3,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The area that the user belongs to\",\r\n\t\t\t\tsearchable: this.visibleColumns.includes(\"groupTitle\"),\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"Area\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Asset Type\",\r\n\t\t\t\tkey: \"assetType\",\r\n\t\t\t\torder: 4,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tdescription: \"\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"assetType\"),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"User Group\",\r\n\t\t\t\tkey: \"permissionGroupIds\",\r\n\t\t\t\torder: 5,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The permissions group the user is part of\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"permissionGroupIds\"),\r\n\t\t\t\tdataType: \"list\",\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Address\",\r\n\t\t\t\tkey: \"address\",\r\n\t\t\t\torder: 6,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The users address\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"address\"),\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Telephone\",\r\n\t\t\t\tkey: \"telephone\",\r\n\t\t\t\torder: 7,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The users phone number\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"telephone\"),\r\n\t\t\t\tdataType: \"telephone\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Cell\",\r\n\t\t\t\tkey: \"mobile\",\r\n\t\t\t\torder: 8,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The users cell number\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"mobile\"),\r\n\t\t\t\tdataType: \"telephone\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"Mobile\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Available as Contact\",\r\n\t\t\t\tkey: \"isContact\",\r\n\t\t\t\torder: 9,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Is the user available as a contact\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"isContact\"),\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"AvailableAsContact\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Registration Status\",\r\n\t\t\t\tkey: \"registrationStatus\",\r\n\t\t\t\torder: 10,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The users current registration status\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"registrationStatus\"),\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tuseCustomCell: true,\r\n\t\t\t\tsortable: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"2FA set\",\r\n\t\t\t\tkey: \"userMFASet\",\r\n\t\t\t\torder: 11,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Does the user have MFA enabled\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"userMFASet\"),\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"TwoFactorAuthSet\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"2FA req.\",\r\n\t\t\t\tkey: \"requiresMFA\",\r\n\t\t\t\torder: 12,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Is MFA required for user\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: this.visibleColumns.includes(\"requiresMFA\"),\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"TwoFactorAuthRequired\",\r\n\t\t\t},\r\n\t\t] as TableHeader[];\r\n\t}\r\n\r\n\tprivate getModalItems(): ModalItemCSV[] {\r\n\t\tlet modalItems = [\r\n\t\t\t{\r\n\t\t\t\ttitle: !this.emailAsUser ? \"Username\" : \"Email\",\r\n\t\t\t\tkey: \"username\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 1,\r\n\t\t\t\tmaxLength: 150,\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tisEmailValid: helpers.withParams(\r\n\t\t\t\t\t\t{ type: \"isEmailValid\", errorMessage: \"Email address is not valid\" },\r\n\t\t\t\t\t\t(value) => {\r\n\t\t\t\t\t\t\tif (!this.emailAsUser) {\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tvar re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\t\t\t\t\t\t\treturn !helpers.req(value) || re.test(String(value).toLowerCase());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t},\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement, formData }) => {\r\n\t\t\t\t\t\tconst re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\t\t\t\t\t\tconst isValidEmail = re.test(String(currentElement.csvValue).toLowerCase())\r\n\r\n\t\t\t\t\t\tif(!isValidEmail) return { isValid: false }\r\n\r\n\t\t\t\t\t\tconst isEmailAlreadyExist = this.userList.some(({ email }) => email === currentElement.csvValue)\r\n\t\t\t\t\t\tif(isEmailAlreadyExist) {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tisValid: false,\r\n\t\t\t\t\t\t\t\tmessage: `Email: \"A user with this email already exists\"`\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst emails = formData.reduce((emails, row) => {\r\n\t\t\t\t\t\t\tconst emailField = row[0]\r\n\r\n\t\t\t\t\t\t\tif(emailField.uniqId === currentElement.uniqId) return emails\r\n\t\t\t\t\t\t\temails.push(emailField.csvValue)\r\n\t\t\t\t\t\t\treturn emails\r\n\t\t\t\t\t\t}, [])\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: !emails.some(email => email === currentElement.csvValue),\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\treadOnly: this.isSuiteEnabled,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Use Active Directory\",\r\n\t\t\t\tkey: \"useAD\",\r\n\t\t\t\tvisible: this.canEnableAD,\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tnewOnly: true,\r\n\t\t\t\trequired: false,\r\n\t\t\t\torder: 3,\r\n\t\t\t\tcsvComponent: 'checkbox',\r\n\t\t\t\tcsvExclude: !this.canEnableAD\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Full Name\",\r\n\t\t\t\tkey: \"fullName\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tplaceholder: \"John Doe\",\r\n\t\t\t\torder: 4,\r\n\t\t\t\tmaxLength: 50,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell({ currentElement }) {\r\n\t\t\t\t\t\treturn { isValid: !!currentElement.csvValue }\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\treadOnly: this.isSuiteEnabled,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Asset Type\",\r\n\t\t\t\tkey: \"assetTypeId\",\r\n\t\t\t\torder: 5,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: this.canSetUserType,\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: AssetTypeSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tclearable: true\r\n\t\t\t\t},\r\n\t\t\t\tcsvExclude: true,\r\n\t\t\t\treadOnlyMethod: (item) => item.SuiteUserId && !item.mobileAppEnabled,\r\n\t\t\t\treadOnlyMessage: \"Asset types can only be assigned to users with the Field ops licence.\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"User Group\",\r\n\t\t\t\tkey: \"permissionGroupIds\",\r\n\t\t\t\torder: 5,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: UserGroupInput,\r\n\t\t\t\tcomponentHasValidation: true,\r\n\t\t\t\tcsvData: Object.keys(this.userGroupLookup),\r\n\t\t\t\tcsvComponent: 'select-multiple',\r\n\t\t\t\treadOnly: this.isSuiteEnabled,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Address\",\r\n\t\t\t\tkey: \"address\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\torder: 7,\r\n\t\t\t\tmaxLength: 200,\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\treadOnly: this.isSuiteEnabled,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Telephone\",\r\n\t\t\t\tkey: \"telephone\",\r\n\t\t\t\tdataType: \"tel\",\r\n\t\t\t\torder: 8,\r\n\t\t\t\tmaxLength: 50,\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\treadOnly: this.isSuiteEnabled,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Cell\",\r\n\t\t\t\tkey: \"mobile\",\r\n\t\t\t\tdataType: \"tel\",\r\n\t\t\t\torder: 8,\r\n\t\t\t\tmaxLength: 50,\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\treadOnly: this.isSuiteEnabled,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Available as Contact\",\r\n\t\t\t\tkey: \"isContact\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\torder: 9,\r\n\t\t\t\tcsvComponent: 'checkbox',\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Email\",\r\n\t\t\t\tkey: \"email\",\r\n\t\t\t\tdataType: \"email\",\r\n\t\t\t\tvisible: !this.emailAsUser,\r\n\t\t\t\torder: 4,\r\n\t\t\t\tmaxLength: 150,\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\treadOnly: this.isSuiteEnabled,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Requires Two-Factor Authentication\",\r\n\t\t\t\tkey: \"requiresMFA\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tcsvExclude: true,\r\n\t\t\t\torder: 10,\r\n\t\t\t\treadOnly: this.isSuiteEnabled,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Two-Factor Authentication status\",\r\n\t\t\t\tkey: \"userMFASet\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: ClearMFA,\r\n\t\t\t\tupdateOnly: true,\r\n\t\t\t\tcsvExclude: true,\r\n\t\t\t\torder: 11,\r\n\t\t\t},\r\n\t\t] as ModalItemCSV[];\r\n\r\n\t\tlet areasField = {\r\n\t\t\ttitle: \"Area\",\r\n\t\t\tkey: \"groupID\",\r\n\t\t\tdataType: \"component\",\r\n\t\t\treadOnly: false,\r\n\t\t\trequired: true,\r\n\t\t\tdata: AreaTreeSelect,\r\n\t\t\tprops: {\r\n\t\t\t\treduce: (a) => a.id,\r\n\t\t\t\tclearable: false\r\n\t\t\t},\r\n\t\t\torder: 6,\r\n\t\t\tcsvComponent: 'select',\r\n\t\t\tcsvData: Object.keys(this.areasByTitle),\r\n\t\t\tcsvValidation: {\r\n\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tisValid: !!this.areasByTitle[currentElement.csvValue]\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t}\r\n\t\t} as ModalItemCSV;\r\n\r\n\t\tif (!this.hideAreasFeature) {\r\n\t\t\tmodalItems.push(areasField);\r\n\t\t}\r\n\r\n\t\treturn modalItems;\r\n\t}\r\n\r\n\tprivate visibleColumns: string[] = [\r\n\t\t\"fullName\",\r\n\t\t\"username\",\r\n\t\t\"groupTitle\",\r\n\t\t\"permissionGroupIds\",\r\n\t\t\"address\",\r\n\t\t\"telephone\",\r\n\t\t\"mobile\",\r\n\t];\r\n\r\n\tprivate async openUpdateModal(): Promise {\r\n\t\tawait this.fetchAreaDictionary();\r\n\t}\r\n\r\n\tprivate get areasByTitle() {\r\n\t\treturn invert(this.areaDictionary);\r\n\t}\r\n\r\n\tprivate get canEnableAD(): boolean {\r\n\t\tif (get(this.featuresList, [\"Users\", \"CanSetActiveDirectory\"]) == null) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn get(this.featuresList, [\"Users\", \"CanSetActiveDirectory\"]);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get canSetUserType(): boolean {\r\n\t\treturn this.getFeature([\"Users\", \"CanSetUserType\"]);\r\n\t}\r\n\r\n\tprivate get hideAreasFeature(): boolean {\r\n\t\treturn get(this.featuresList, [\"Users\", \"HideArea\"]);\r\n\t}\r\n\r\n\tprivate get isSuiteEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Suite\"]);\r\n\t}\r\n\r\n\tprivate get isADChecked() {\r\n\t\tif (this.getModalRow != null && this.getModalRow.useAD != 0) {\r\n\t\t\treturn this.getModalRow.useAD;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async updateUserDetails(userToUpdate): Promise {\r\n\t\tthis.setUserPermissions(userToUpdate);\r\n\t\tif (this.emailAsUser) {\r\n\t\t\tuserToUpdate.email = userToUpdate.username;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tawait api.updateUser(userToUpdate);\r\n\t\t\tawait this.fetchSubscription(this.getUserTenantGroupId);\r\n\t\t} catch (ex) {\r\n\t\t\tif(ex.response && ex.response.status === 566){\r\n\t\t\t\tVue.prototype.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: userToUpdate.userId >= 0 ? \"User not updated.\" : \"User not added.\",\r\n\t\t\t\t\ttext: ex.response.data\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthrow ex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tawait this.updateData(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tprivate async newUserDetails(userToAdd): Promise {\r\n\t\tif (this.isADChecked) {\r\n\t\t\tdelete userToAdd.useAD;\r\n\t\t\tuserToAdd.password = \"-\";\r\n\t\t}\r\n\r\n\t\tthis.setUserPermissions(userToAdd);\r\n\t\tif (this.emailAsUser) {\r\n\t\t\tuserToAdd.email = userToAdd.username;\r\n\t\t}\r\n\r\n\t\tif (this.hideAreasFeature) {\r\n\t\t\tuserToAdd.groupID = this.getUserTenantGroupId;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tawait api.createUser(userToAdd);\r\n\t\t\tawait this.fetchSubscription(this.getUserTenantGroupId);\r\n\t\t} catch (ex) {\r\n\t\t\tif(ex.response && ex.response.status === 566){\r\n\t\t\t\tVue.prototype.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Error\",\r\n\t\t\t\t\ttext: ex.response.data\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tthrow ex;\r\n\t\t\t}\r\n\t\t}\r\n\t\tawait this.updateData(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tprivate async deleteUserDetails(userToDelete): Promise {\r\n\t\tawait api.deleteUser(userToDelete.userID);\r\n\t\tawait this.fetchSubscription(this.getUserTenantGroupId);\r\n\t\tlet userIndex = this.userList.findIndex(element => element.userID == userToDelete.userID);\r\n\t\tthis.userList.splice(userIndex, 1);\r\n\t}\r\n\r\n\tprivate setUserPermissions(user): void {\r\n\t\tvar permissions = [];\r\n\t\tfor (var item in user.permissionGroupIds) {\r\n\t\t\tif (user.permissionGroupIds[item].userGroupId) {\r\n\t\t\t\tpermissions[item] = user.permissionGroupIds[item].userGroupId;\r\n\t\t\t} else if (user.permissionGroupIds[item].key) {\r\n\t\t\t\tpermissions[item] = user.permissionGroupIds[item].key;\r\n\t\t\t}\r\n\t\t}\r\n\t\tuser.permissionGroupIds = permissions;\r\n\t}\r\n\r\n\tprivate getPermissionTitle(userGroupId: number): string {\r\n\t\tlet result = this.userGroups.find(p => p.userGroupId === userGroupId);\r\n\t\tif (result) {\r\n\t\t\treturn result.title;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate getRowId(): string {\r\n\t\tif (this.getModalRow && this.getModalRow.userID) {\r\n\t\t\treturn this.getModalRow.userID;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate async updateData(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\r\n\t\t\tawait this.fetchAreaDictionary();\r\n\t\t\tthis.userGroups = await api.getUserGroup();\r\n\r\n\t\t\tconst cancellableQuery = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\t\t\tlet usersPaginatedResponse: UsersPagedResponse = await api.getUsers(cancellableQuery);\r\n\r\n\t\t\tthis.totalRecords = usersPaginatedResponse.totalRecords;\r\n\r\n\t\t\tthis.userList = this.formatUsers(usersPaginatedResponse.data);\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tconsole.log(\"Unexpected error fetching users: \" + ex);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate formatUsers(users) {\r\n\t\treturn users.map(user => {\r\n\t\t\tuser.permissionGroupIds = user.permissionGroupIds.map(p => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tkey: p,\r\n\t\t\t\t\ttitle: this.getPermissionTitle(p)\r\n\t\t\t\t};\r\n\t\t\t});\r\n\r\n\t\t\tif (this.currentUserId == user.userID) {\r\n\t\t\t\tuser.readOnly = true;\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tvar isReadOnly = !!user.groupSyncId && !this.getPermissions.canOverrideGroupSync && !this.getPermissions.isSystemAdmin;\r\n\t\t\t\tuser.readOnly = isReadOnly,\r\n\t\t\t\tuser.readOnlyMessage = isReadOnly ? \"You do not have permission to edit Sync Users\": null\r\n\t\t\t}\r\n\r\n\t\t\tif (user.assetTypeId !== undefined) {\r\n\t\t\t\tuser.assetType = this.formattedAssetTypesById[user.assetTypeId]\r\n\t\t\t} else {\r\n\t\t\t\tuser.assetType = \"\"\r\n\t\t\t}\r\n\r\n\t\t\tuser.groupTitle = this.getAreaTitle(user.groupID);\r\n\r\n\t\t\treturn user;\r\n\t\t});\r\n\t}\r\n\r\n\t// If feature is on / off\r\n\tprivate get isUsersEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Users\"]);\r\n\t}\r\n\r\n\tprivate get isUsersBulkAddEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Users\", \"BulkAdd\"]);\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tthis.isLoading = true;\r\n\t\tthis.assetTypesList = await api.getCachedAssetTypes();\r\n\t\tthis.emailAsUser = get(this.featuresList, [\"Users\", \"EmailAsUser\"]);\r\n\t\tawait this.updateData();\r\n\t\tthis.fetchSubscription();\r\n\t\tthis.fetchBilledUserPermissions();\r\n\t\tthis.fetchUserGroup();\r\n\r\n\t\tif (this.canSetUserType) {\r\n\t\t\tthis.visibleColumns.push(\"assetType\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get formattedAssetTypesById() {\r\n\t\treturn this.assetTypesList?.reduce((acc, {assetTypeId, title}) => ({\r\n\t\t\t...acc,\r\n\t\t\t[assetTypeId]: title\r\n\t\t}), {}) ?? {}\r\n\t}\r\n\r\n\tprivate fetchUserGroup(): void {\r\n\t\tapi.getUserGroup().then(userGroups => {\r\n\t\t\tthis.originalUserGroups = userGroups\r\n\t\t\tthis.userGroupLookup = userGroups.reduce((acc, ug) => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...acc,\r\n\t\t\t\t\t[ug.title]: ug.userGroupId\r\n\t\t\t\t}\r\n\t\t\t}, {})\r\n\t\t})\r\n\t}\r\n\r\n\tprivate get isBillingEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Billing\"]);\r\n\t}\r\n\r\n\tprivate async deleteActionMessages(userToDelete) {\r\n\t\tif (!this.isBillingEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!userToDelete || !userToDelete.userID || userToDelete.permissionGroupIds.length == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet permissionsForUserGroups = await api.getPermissionsForUserGroups(userToDelete.permissionGroupIds.map(x => x.key));\r\n\t\tlet selectedUserGroupPermissions = permissionsForUserGroups.map(permission => permission.permissionId);\r\n\r\n\t\tlet operatorPermissionId = this.billedUserPermissions.find(up => up.title === \"Operators\").permissionID;\r\n\t\tlet guardPermissionId = this.billedUserPermissions.find(up => up.title === \"Mobile Officers\").permissionID;\r\n\r\n\t\tlet userHasOperatorPermissions = selectedUserGroupPermissions.includes(operatorPermissionId);\r\n\t\tlet userHasGuardPermissions = selectedUserGroupPermissions.includes(guardPermissionId);\r\n\r\n\t\tlet result = [];\r\n\t\tif (userHasOperatorPermissions) {\r\n\t\t\tresult.push(`Reduce the number of Operators used by your subscription by 1`);\r\n\t\t}\r\n\t\tif (userHasGuardPermissions) {\r\n\t\t\tresult.push(`Reduce the number of Mobile Officers used by your subscription by 1`);\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate async inviteUser(userId: number): Promise {\r\n\t\tif (this.isSendingInvite) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tthis.isSendingInvite = true;\r\n\t\t\tthis.userToInvite = userId;\r\n\t\t\tawait api.inviteUser(userId);\r\n\t\t\tlet invitedUser = this.userList.find(u => u.userID === userId);\r\n\t\t\tinvitedUser.registrationStatus = \"Invited\";\r\n\t\t\tthis.isSendingInvite = false;\r\n\t\t\tthis.userToInvite = 0;\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Failed to invite User\",\r\n\t\t\t\ttext:\r\n\t\t\t\t\t\"Something when wrong sending user invite - please try again later, or contact support if the problem persists.\"\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get defaultFile() {\r\n\t\tconst modalItems = this.uniqueModalItemsByTitle;\r\n\t\tconst headers = modalItems.filter(({ csvExclude }) => !csvExclude).map(({ title }) => title)\r\n\t\tconst body = headers.map( v => '')\r\n\t\treturn {\r\n\t\t\tname: 'UserTemplate.csv',\r\n\t\t\tdata: `${headers.join()}\\r\\n${body.join()}`\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onCloseBulk(): void {\r\n\t\tthis.resetProgress()\r\n\t}\r\n\r\n\tprivate resetProgress(): void {\r\n\t\tthis.progressBulk = {}\r\n\t}\r\n\r\n\tprivate async bulkOnSubmit({ formData }): Promise {\r\n\t\tawait this.onSaveBulk({ formData })\r\n\t\tawait this.updateData(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tprivate prepareDataBulk(formData) {\r\n\t\treturn formData.map(user => {\r\n\t\t\tconst localUser = transform(user, (result, value, key) => {\r\n\t\t\t\tif(value === '' || isArray(value) && value.length === 0) return\r\n\t\t\t\tresult[key] = value\r\n\t\t\t}, {}) as { permissionGroupIds };\r\n\r\n\t\t\tif(!isArray(localUser.permissionGroupIds)) {\r\n\t\t\t\tlocalUser.permissionGroupIds = [localUser.permissionGroupIds]\r\n\t\t\t\t\t.filter(v => v)\r\n\t\t\t\t\t.map(key => this.userGroupLookup[key])\r\n\t\t\t} else {\r\n\t\t\t\tlocalUser.permissionGroupIds = localUser.permissionGroupIds.map(key => this.userGroupLookup[key])\r\n\t\t\t}\r\n\r\n\t\t\tif(localUser.permissionGroupIds.length === 0) delete localUser.permissionGroupIds\r\n\r\n\t\t\treturn this.convertDataToRest(localUser)\r\n\t\t})\r\n\t}\r\n\r\n\tprivate convertDataToRest(userToAdd) {\r\n\t\tif (this.isADChecked) {\r\n\t\t\tdelete userToAdd.useAD;\r\n\t\t\tuserToAdd.password = \"-\";\r\n\t\t}\r\n\r\n\t\tuserToAdd.groupID = parseInt(this.areasByTitle[userToAdd.groupID]);\r\n\r\n\t\tif (this.emailAsUser) {\r\n\t\t\tuserToAdd.email = userToAdd.username;\r\n\t\t}\r\n\r\n\t\treturn userToAdd\r\n\t}\r\n\r\n\tprivate async onSaveBulk({ formData }): Promise {\r\n\t\tconst max = formData.length\r\n\t\tlet counterSucceed = 0;\r\n\t\tlet progress: any = {\r\n\t\t\tmax,\r\n\t\t\tvalue: 0,\r\n\t\t\tstatus: 'init',\r\n\t\t\tsuccessfulMessage: `Successfully added ${max} Users`,\r\n\t\t}\r\n\r\n\t\tthis.progressBulk = {\r\n\t\t\t...progress\r\n\t\t}\r\n\r\n\t\tconst convertedData = this.prepareDataBulk(formData)\r\n\r\n\t\tconst users = convertedData.map(async (user) => {\r\n\t\t\t\tconst localContact = cloneDeep(user)\r\n\t\t\t\tconst id = localContact.rowId\r\n\r\n\r\n\t\t\t\treturn api.createUser(user)\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\tprogress.rowIndex = id\r\n\t\t\t\t\t\tcounterSucceed += 1\r\n\t\t\t\t\t\tprogress.value = progress.value + 1\r\n\r\n\t\t\t\t\t\tthis.progressBulk = {\r\n\t\t\t\t\t\t\t...progress,\r\n\t\t\t\t\t\t\tstatus: counterSucceed === max ? 'succeed' : 'progress',\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch(() => {\r\n\t\t\t\t\t\tconst failedContact = convertedData.find(({ rowId }) => rowId === id)\r\n\t\t\t\t\t\tthis.progressBulk = {\r\n\t\t\t\t\t\t\t...progress,\r\n\t\t\t\t\t\t\trowIndex: id,\r\n\t\t\t\t\t\t\tstatus: 'error',\r\n\t\t\t\t\t\t\terror: {\r\n\t\t\t\t\t\t\t\tname: failedContact.fullName,\r\n\t\t\t\t\t\t\t\tmessage: `Bulk upload has failed to add user ${failedContact.fullName}`\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t\tawait Promise.all(users)\r\n\t}\r\n\r\n\r\n\tprivate updateColumnFilters(column: TableHeader): void {\r\n\t\tlet visibleColumn = this.visibleColumns.find(c => c === column.key);\r\n\t\tif (visibleColumn) {\r\n\t\t\tthis.visibleColumns.remove(column.key);\r\n\t\t} else {\r\n\t\t\tthis.visibleColumns.push(column.key);\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserManagementSetup.vue?vue&type=template&id=4c0482a0&scoped=true\"\nimport script from \"./UserManagementSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./UserManagementSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserManagementSetup.vue?vue&type=style&index=0&id=4c0482a0&prod&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 \"4c0482a0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\",attrs:{\"id\":\"setup-container\"}},[_c('nav-header',{attrs:{\"title\":'Contacts'}}),(_vm.isContactsEnabled)?_c('generic-table',{ref:\"genericTable\",staticClass:\"tab-flex-content\",attrs:{\"id\":\"contactsTable\",\"term\":\"Contact\",\"hideAdd\":_vm.isSuiteEnabled,\"onSave\":_vm.updateUserDetails,\"onDelete\":_vm.deleteUserDetails,\"onAddNew\":_vm.newUserDetails,\"onModalOpen\":_vm.openUpdateModal,\"columns\":_vm.columns,\"modalItems\":_vm.getModalItems,\"dataList\":_vm.contacts,\"editPermissions\":['canEditSiteSetup'],\"deletePermissions\":['canEditSiteSetup'],\"deleteActionMessages\":_vm.deleteActionMessages,\"totalAvailableRows\":_vm.totalRecords,\"isLoading\":_vm.isLoading},on:{\"search-filter-updated\":_vm.updateData},scopedSlots:_vm._u([{key:\"custom-button\",fn:function(){return [(_vm.isBulkAddEnabled)?_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"bulk-add-contacts\"},on:{\"click\":function($event){return _vm.$bvModal.show('modalBulk')}}},[_vm._v(\" Bulk Add \")]):_vm._e(),(_vm.isManageContactRolesEnabled)?_c('b-button',{attrs:{\"data-cy\":\"manage-contact-roles\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.openContactRoleModal()}}},[_vm._v(\"Roles\")]):_vm._e()]},proxy:true},{key:\"contactRoles\",fn:function(slotProps){return [_vm._l((slotProps.row.contactRoles.slice(0, 5)),function(item,index){return _c('b-badge',{key:index,staticClass:\"badge badge-primary\",attrs:{\"variant\":\"primary\"}},[_vm._v(\" \"+_vm._s(item.title)+\" \")])}),(slotProps.row.contactRoles.length === 6)?_c('b-badge',{staticClass:\"pl-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(slotProps.row.contactRoles[5].title))]):_vm._e(),(slotProps.row.contactRoles.length > 6)?_c('b-badge',{staticClass:\"pl-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(slotProps.row.contactRoles.length - 5)+\" more...\")]):_vm._e()]}},{key:\"contactRoleGroups\",fn:function(slotProps){return [_vm._l((slotProps.row.contactRoleGroups.slice(0, 5)),function(item,index){return _c('b-badge',{key:index,staticClass:\"badge badge-primary\",attrs:{\"variant\":\"primary\",\"title\":_vm.areaDictionary[item]}},[_vm._v(\" \"+_vm._s(_vm.ellipseAreaTitle(_vm.areaDictionary[item]))+\" \")])}),(slotProps.row.contactRoleGroups.length === 6)?_c('b-badge',{staticClass:\"pl-1\",attrs:{\"title\":slotProps.row.contactRoleGroups[5].title,\"variant\":\"primary\"}},[_vm._v(_vm._s(_vm.ellipseAreaTitle(slotProps.row.contactRoleGroups[5].title)))]):_vm._e(),(slotProps.row.contactRoleGroups.length > 6)?_c('b-badge',{staticClass:\"pl-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(slotProps.row.contactRoleGroups.length - 5)+\" more...\")]):_vm._e()]}}],null,false,2940870284)}):_vm._e(),_c('b-modal',{ref:\"ContactRoleModal\",attrs:{\"id\":\"ContactRoleModal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\"},on:{\"hidden\":_vm.onContactRolesClose},model:{value:(_vm.showContactRoleModal),callback:function ($$v) {_vm.showContactRoleModal=$$v},expression:\"showContactRoleModal\"}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',[_vm._v(\"Contact Roles\")])])]),[_c('contact-roles',{staticStyle:{\"margin\":\"auto -20px\"},attrs:{\"showHeader\":false,\"showIdColumn\":false}})],_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn\",on:{\"click\":function($event){_vm.showContactRoleModal = !_vm.showContactRoleModal}}},[_vm._v(\"Close\")])])],2),(_vm.isBulkAddEnabled)?_c('csv-uploader-wrapper',{attrs:{\"modalItemsCsv\":_vm.getModalItems,\"defaultFile\":_vm.defaultFile,\"progressBulk\":_vm.progressBulk,\"isMultipleError\":\"\",\"name\":\"Contact Bulk\"},on:{\"on-submit\":_vm.bulkOnSubmit,\"on-close\":_vm.onCloseBulk,\"reset-progress\":_vm.resetProgress}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ 'card card-secondary': _vm.showHeader },attrs:{\"id\":\"setup-container\"}},[(_vm.showHeader)?_c('nav-header',{attrs:{\"title\":'Contact Roles'}}):_vm._e(),_c('generic-table',{ref:\"genericTable\",staticStyle:{\"max-height\":\"40vh\",\"overflow\":\"auto\"},attrs:{\"onSave\":_vm.updateContactRoleDetails,\"onDelete\":_vm.deleteContactRoleDetails,\"onAddNew\":_vm.newContactRoleDetails,\"onModalOpen\":_vm.openUpdateModal,\"term\":'Contact Role',\"columns\":_vm.columns,\"modalItems\":_vm.modalItems,\"dataList\":_vm.roleList,\"isManagedExternally\":_vm.isSuiteEnabled,\"useModal\":!_vm.isSuiteEnabled}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Mutation, Action } from \"vuex-class\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport { UserPermissions, FeaturesList } from \"@/store/types\";\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport { ModalItem } from \"@/components/table/generic-update-modal.vue\";\r\nimport { get } from \"lodash\";\r\nimport { ContactRoleEx } from \"@/store/user-management/types\";\r\nimport api from \"@/services/api.service\";\r\nimport vselect3 from \"vselect3\";\r\n\r\nconst UserManagement = namespace(\"userManagement\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"generic-table\": GenericTable\r\n\t}\r\n})\r\nexport default class ContactsPage extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter(\"getUserId\") public currentUserId!: number;\r\n\t@Getter getFeature: (featuresList: string[]) => boolean;\r\n\r\n\t// show or hide the page header\r\n\t@Prop({ default: true, type: Boolean }) showHeader;\r\n\r\n\t//show or hide the ID column in the table and modal\r\n\t@Prop({ default: true, type: Boolean }) showIdColumn;\r\n\r\n\tpublic roleList: ContactRoleEx[] = [];\r\n\r\n\tpublic columns: TableHeader[] = [\r\n\t\t{\r\n\t\t\ttitle: \"Contact Role ID\",\r\n\t\t\tkey: \"contactRoleId\",\r\n\t\t\torder: 1,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The contact role ID\",\r\n\t\t\tsearchable: false,\r\n\t\t\tvisible: this.showIdColumn,\r\n\t\t\tdataType: \"input\",\r\n\t\t\twidth: \"130px\"\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Role Name\",\r\n\t\t\tkey: \"role\",\r\n\t\t\torder: 2,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The role name\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n\t\t\tisTermLabel: true\r\n\t\t}\r\n\t];\r\n\r\n\tprivate modalItems: ModalItem[] = [\r\n\t\t{\r\n\t\t\ttitle: \"Contact Role ID\",\r\n\t\t\tkey: \"contactRoleId\",\r\n\t\t\tdataType: \"text\",\r\n\t\t\tupdateOnly: true,\r\n\t\t\treadOnly: true,\r\n\t\t\tvisible: this.showIdColumn,\r\n\t\t\torder: 0\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Role Name\",\r\n\t\t\tkey: \"role\",\r\n\t\t\tdataType: \"text\",\r\n\t\t\treadOnly: false,\r\n\t\t\trequired: true,\r\n\t\t\tplaceholder: \"Manager\",\r\n\t\t\torder: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle:\"External Ids\",\r\n\t\t\tkey:\"externalIdsArray\",\r\n\t\t\tdataType: \"component\",\r\n\t\t\tdata: vselect3,\r\n\t\t\tprops: {\r\n\t\t\t\t\"create-option\": id => id,\r\n\t\t\t\tplaceholder: \"External Ids\",\r\n\t\t\t\ttaggable: true, \r\n\t\t\t\tappendToBody: true, \r\n\t\t\t\tmultiple: true,\r\n\t\t\t},\r\n\t\t\trequired: false, \r\n\t\t\tdescription: \"External ids to match during syncing\",\r\n\t\t\tvisible: this.syncSetupEnabled,\r\n\t\t\torder: 2\r\n\t\t}\r\n\t];\r\n\r\n\t// Feature check for the SyncSystem feature flag.\r\n\tprivate get syncSetupEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"AdvancedSetup\", \"SyncSystem\"]);\r\n\t}\r\n\r\n\tprivate async openUpdateModal(row) {}\r\n\r\n\t// Function to update the ContactRole object with JSON formatted string of External Ids.\r\n\tprivate SetContactRoleExternalIds(ids: string[]): string {\r\n\t\tlet output = \"[]\";\r\n\r\n\t\tif (ids && ids.length > 0) {\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\toutput = JSON.stringify(ids);\r\n\t\t\t} \r\n\t\t\tcatch(er)\r\n\t\t\t{\r\n\t\t\t\tconsole.error(er)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\t}\r\n\r\n\tprivate async updateContactRoleDetails(contactToUpdate: ContactRoleEx): Promise {\r\n\t\tvar roleIndex = this.roleList.findIndex(x => x.contactRoleId == contactToUpdate.contactRoleId);\r\n\r\n\t\tcontactToUpdate.externalIds = this.SetContactRoleExternalIds(contactToUpdate.externalIdsArray);\r\n\r\n\t\tawait api.updateContactRole(contactToUpdate);\r\n\t\t\r\n\t\tthis.updateData();\r\n\t}\r\n\r\n\tprivate async newContactRoleDetails(roleToAdd: ContactRoleEx): Promise {\r\n\t\troleToAdd.externalIds = this.SetContactRoleExternalIds(roleToAdd.externalIdsArray);\r\n\r\n\t\tlet newRole = await api.createContactRole(roleToAdd);\r\n\t\tnewRole.externalIdsArray = roleToAdd.externalIdsArray;\r\n\t\tthis.roleList.push(newRole);\r\n\t}\r\n\r\n\tprivate async deleteContactRoleDetails(roleToDelete: ContactRoleEx): Promise {\r\n\t\tconst updateIndex = this.roleList.findIndex((x: ContactRoleEx) => x.contactRoleId == roleToDelete.contactRoleId);\r\n\r\n\t\tif (updateIndex >= 0) {\r\n\t\t\tthis.roleList.splice(updateIndex, 1);\r\n\t\t}\r\n\r\n\t\tawait api.deleteContactRole(roleToDelete.contactRoleId);\r\n\t}\r\n\r\n\tprivate async updateData(): Promise {\r\n\t\tconst contactRoles = await api.loadContactRoleList();\r\n\r\n\t\tthis.roleList = contactRoles.map(contactRole => {\r\n\t\t\tvar externalIdList = [];\r\n\t\t\tif (contactRole.externalIds && contactRole.externalIds.length > 0)\r\n\t\t\t{\r\n\t\t\t\ttry\r\n\t\t\t\t{\r\n\t\t\t\t\texternalIdList = JSON.parse(contactRole.externalIds)\r\n\t\t\t\t}\r\n\t\t\t\tcatch(er)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.error(er)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\t...contactRole,\r\n\t\t\t\texternalIdsArray: externalIdList\r\n\t\t\t} as ContactRoleEx;\r\n\t\t});\t\r\n\t}\r\n\r\n\tprivate get isSuiteEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Suite\"]);\r\n\t}\r\n\r\n\tasync mounted() {\r\n\t\tawait this.updateData();\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactRoles.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactRoles.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ContactRoles.vue?vue&type=template&id=515d1dc2&scoped=true\"\nimport script from \"./ContactRoles.vue?vue&type=script&lang=ts\"\nexport * from \"./ContactRoles.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ContactRoles.vue?vue&type=style&index=0&id=515d1dc2&prod&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 \"515d1dc2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"contactsFor py-10\"},[_c('b-table',{ref:\"contactsForTable\",attrs:{\"head-variant\":\"dark\",\"select-mode\":\"single\",\"fields\":_vm.columns,\"items\":_vm.contactList,\"show-empty\":\"\"},scopedSlots:_vm._u([{key:\"cell(roleIds)\",fn:function(data){return [_vm._l((data.item.roleIds.slice(0, 5)),function(item,index){return _c('b-badge',{key:index,staticClass:\"ml-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(\" \"+_vm._s(_vm.getRoleTitle(item))+\" \")])}),(data.item.roleIds.length === 6)?_c('b-badge',{staticClass:\"ml-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(data.item.roleIds[5].title))]):_vm._e(),(data.item.roleIds.length > 6)?_c('b-badge',{staticClass:\"ml-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(data.item.roleIds.length - 5)+\" more...\")]):_vm._e()]}},{key:\"cell(isInherited)\",fn:function(data){return [_c('span',[(data.item.isInherited === true)?_c('i',{staticClass:\"fas fa-check align-items-center\"}):_c('i',{staticClass:\"fas fa-times align-content-center\"})])]}},{key:\"empty\",fn:function(){return [_c('p',{staticClass:\"empty-table\"},[_c('i',[_vm._v(\"No Contact Area Roles have been configured\")])])]},proxy:true},{key:\"cell(edit)\",fn:function(data){return [(!_vm.isSuiteEnabled)?_c('b-button-group',{attrs:{\"size\":\"sm\"}},[_c('b-button',{on:{\"click\":function($event){return _vm.onEditBtnClick(data.item, false)}}},[_c('i',{staticClass:\"fas fa-edit\"})]),_c('b-button',{on:{\"click\":function($event){return _vm.onDelete(data.item)}}},[_c('i',{staticClass:\"fas fa-trash\"})])],1):_vm._e(),(_vm.isSuiteEnabled)?_c('b-button',{attrs:{\"size\":\"sm\"},on:{\"click\":function($event){return _vm.onEditBtnClick(data.item, true)}}},[_c('i',{staticClass:\"fas fa-eye\"})]):_vm._e()]}}])}),(!_vm.isSuiteEnabled)?_c('b-button',{staticClass:\"float-right\",attrs:{\"variant\":\"primary\",\"size\":\"sm\"},on:{\"click\":_vm.onAddBtnClick}},[_vm._v(\"Add Contact For\")]):_vm._e(),_c('generic-update-modal',{ref:\"genericUpdateModal\",attrs:{\"dataList\":_vm.contactList,\"modalItems\":_vm.modalItems,\"term\":\"Contact Details\",\"onAddNew\":_vm.onAddNew,\"onSave\":_vm.onSave}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { ModalItemCSV } from \"@/store/csv-form-handler/types\";\r\nimport { ContactFor, ContactForEx } from \"@/store/user-management/types\";\r\nimport { Prop, Component, Vue } from \"vue-property-decorator\";\r\nimport GenericUpdateModal from \"../table/generic-update-modal.vue\";\r\nimport AreaTreeSelect from \"./AreaTreeSelect.vue\";\r\nimport { Getter } from 'vuex-class';\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"generic-update-modal\": GenericUpdateModal\r\n\t}\r\n})\r\nexport default class ContactsFor extends Vue {\r\n\t@Getter getFeature: (featuresList: string[]) => boolean;\r\n\r\n\t$refs!: {\r\n\t\tgenericUpdateModal: GenericUpdateModal\r\n\t};\r\n\r\n\t@Prop({default: []})\r\n\tprivate value: ContactFor[];\r\n\r\n\t@Prop({})\r\n\tprivate allRoles: { key: string, title: string }[];\r\n\r\n\t@Prop({})\r\n\tprivate areaTitles: Map;\r\n\r\n\tprivate contactList: ContactForEx[] = this.format() || [];\r\n\tprivate selectedContact: ContactForEx = null;\r\n\tprivate columns = [\r\n\t\t{\r\n\t\t\tlabel: \"Area\",\r\n\t\t\tkey: \"title\",\r\n\t\t\tsortable: true,\r\n\t\t\tthStyle: {width: '20%'}\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Roles\",\r\n\t\t\tkey: \"roleIds\",\r\n\t\t\tsortable: true,\r\n\t\t\tthStyle: { width: '55%' }\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Inherited\",\r\n\t\t\tkey: \"isInherited\",\r\n\t\t\tsortable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tthStyle: {width: '100px'}\r\n\t\t},\r\n\t\t{\r\n\t\t\tlabel: \"Actions\",\r\n\t\t\tkey: \"edit\",\r\n\t\t\tthStyle: { width: '60px'}\r\n\t\t}\r\n\t];\r\n\r\n\tprivate get modalItems() : ModalItemCSV[]\r\n\t{\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"ID\",\r\n\t\t\t\tkey: \"id\",\r\n\t\t\t\tvisible: false,\r\n\t\t\t\tdataType: \"input\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"groupId\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: AreaTreeSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (a) => a.id,\r\n\t\t\t\t\tclearable: false,\r\n\t\t\t\t\tappendToBody: true\r\n\t\t\t\t},\r\n\t\t\t\torder: 0,\r\n\t\t\t\tcsvData: Object.keys(this.areaTitles),\r\n\t\t\t\tcsvComponent: 'select',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: this.areaTitles[currentElement.csvValue] !== undefined\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Roles\",\r\n\t\t\t\tkey: \"roleIds\",\r\n\t\t\t\tplaceholder: \"Select a Role\",\r\n\t\t\t\tuseCustomCell: true,\r\n\t\t\t\tdata: this.allRoles,\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tmultiple: true,\r\n\t\t\t\t\tcloseOnSelect: false,\r\n\t\t\t\t\tgetOptionLabel: (option) => this.getRoleTitle(option),\r\n\t\t\t\t\treduce: (role) => role.key \r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\tcsvComponent: 'select-multiple',\r\n\t\t\t\treadOnly: this.isSuiteEnabled\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Inherited\",\r\n\t\t\t\tkey: \"isInherited\",\r\n\t\t\t\tdataType: \"checkbox\"\r\n\t\t\t}\r\n\t\t] as ModalItemCSV[]\r\n\t}\r\n\r\n\tprivate onAddNew(item: ContactForEx) : void\r\n\t{\r\n\t\tconst title: string = this.areaTitles[item.groupId];\r\n\t\tconst contactFor: ContactForEx = {\r\n\t\t\tid: item.id ?? this.contactList.length,\r\n\t\t\ttitle: title,\r\n\t\t\troleIds: item.roleIds,\r\n\t\t\tisInherited: item.isInherited ?? false,\r\n\t\t\tgroupId: item.groupId\r\n\t\t};\r\n\r\n\t\tthis.contactList.push(contactFor);\r\n\t\tthis.$emit(\"input\", this.contactList);\r\n\t}\r\n\r\n\tprivate onSave(item: ContactForEx) : void\r\n\t{\r\n\t\tvar updateIndex = this.contactList.findIndex(cl => cl.id == item.id);\r\n\r\n\t\tif(updateIndex === -1)\r\n\t\t{\r\n\t\t\tthis.onAddNew(item);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.contactList[updateIndex].isInherited = item.isInherited;\r\n\t\tthis.contactList[updateIndex].groupId = item.groupId;\r\n\t\tthis.contactList[updateIndex].title = this.areaTitles[item.groupId];\r\n\t\tthis.contactList[updateIndex].roleIds = item.roleIds;\r\n\r\n\t\tthis.$emit(\"input\", this.contactList);\r\n\r\n\t\tthis.selectedContact = null;\r\n\t}\r\n\r\n\tprivate onDelete(item: ContactForEx): void\r\n\t{\r\n\t\tthis.contactList = this.contactList.filter(cl => item.id != cl.id);\r\n\t\tthis.$emit(\"input\", this.contactList);\r\n\t}\r\n\r\n\tprivate format() : ContactForEx[]\r\n\t{\r\n\t\tif(!this.value)\r\n\t\t{\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\treturn this.value.map((v, i) => {\r\n\t\t\treturn {\r\n\t\t\t\tid: i,\r\n\t\t\t\ttitle: this.areaTitles[v.groupId],\r\n\t\t\t\tgroupId: v.groupId,\r\n\t\t\t\troleIds: v.roleIds,\r\n\t\t\t\tisInherited: v.isInherited\r\n\t\t\t} as ContactForEx\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getRoleTitle(role: { key: number, title: string } | number): string\r\n\t{\r\n\t\tif (typeof role === \"object\")\r\n\t\t{\r\n\t\t\treturn role.title;\r\n\t\t}\r\n\r\n\t\tconst currentRole = this.allRoles.find(r => r.key.toString() == role.toString());\r\n\r\n\t\tif (!currentRole)\r\n\t\t{\r\n\t\t\treturn \"Role not found.\";\r\n\t\t}\r\n\r\n\t\treturn currentRole.title;\r\n\t}\r\n\r\n\tprivate onEditBtnClick(item: ContactForEx, isReadonly: boolean): void\r\n\t{\r\n\t\tthis.$refs.genericUpdateModal.showUpdateDialog(item, isReadonly, false);\r\n\t}\r\n\r\n\tprivate onAddBtnClick(): void\r\n\t{\r\n\t\tlet contact: ContactForEx = {\r\n\t\t\ttitle: \"\",\r\n\t\t\tid: -1,\r\n\t\t\troleIds: [],\r\n\t\t\tisInherited: true,\r\n\t\t\tgroupId: 0\r\n\t\t};\r\n\r\n\t\tthis.$refs.genericUpdateModal.showUpdateDialog(contact, false, true);\r\n\t}\r\n\r\n\tpublic validate(): boolean {\r\n return this.isValid;\r\n }\r\n\r\n private get isValid(): boolean {\r\n if(!this.contactList || !this.contactList.length) {\r\n\t\t\treturn false;\r\n }\r\n return true;\r\n }\r\n\r\n\tprivate get isSuiteEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Suite\"]);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsFor.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsFor.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ContactsFor.vue?vue&type=template&id=3e8d0d2a&scoped=true\"\nimport script from \"./ContactsFor.vue?vue&type=script&lang=ts\"\nexport * from \"./ContactsFor.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ContactsFor.vue?vue&type=style&index=0&id=3e8d0d2a&prod&scoped=true&lang=css\"\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 \"3e8d0d2a\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { helpers } from \"vuelidate/lib/validators\";\r\n\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport { UserPermissions, FeaturesList, PaginatedSearchQueryParams } from \"@/store/types\";\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport GenericUpdateModal, { ModalItem } from \"@/components/table/generic-update-modal.vue\";\r\nimport { isArray, cloneDeep, get, invert } from \"lodash\";\r\nimport { ContactFor, ContactRole } from \"@/store/user-management/types\";\r\nimport ContactRoles from \"@/views/ContactRoles.vue\";\r\nimport csvUploaderWrapper from \"@/components/csv-uploader/csv-uploader-wrapper.vue\";\r\nimport { ModalItemCSV } from \"@/store/csv-form-handler/types\";\r\nimport api from \"@/services/api.service\";\r\nimport ContactWithRole from \"@/types/sv-data/users/ContactWithRole\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport ContactsPagedResponse from \"@/types/sv-data/users/ContactsPagedResponse\";\r\nimport { stringMixin } from '@/mixins';\r\nimport ContactsFor from \"@/components/form/ContactsFor.vue\";\r\nimport { customFieldMixins } from \"@/mixins/customFieldMixins\";\r\nimport { MapCustomFieldToModalItem } from \"@/utils/CustomFieldLogic\";\r\nimport { CustomFieldDto } from '@/store/custom-fields/types';\r\n\r\nconst Areas = namespace(\"areas\");\r\nconst GenericTableStore = namespace(\"GenericTable\");\r\nconst CustomFields = namespace(\"customFields\");\r\n\r\nconst { ellipseAfterX } = stringMixin.methods;\r\nconst { mapArrayFieldsToObject } = customFieldMixins.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"generic-table\": GenericTable,\r\n\t\t\"generic-update-modal\": GenericUpdateModal,\r\n\t\t\"contact-roles\": ContactRoles,\r\n\t\t\"csv-uploader-wrapper\": csvUploaderWrapper\r\n\t}\r\n})\r\nexport default class ContactsPage extends Mixins(PaginatedSearch) {\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter(\"getUserId\") public currentUserId!: number;\r\n\t@Getter getFeature: (featuresList: string[]) => boolean;\r\n\r\n\t@Areas.Action fetchAreaDictionary: () => Promise;\r\n\t@Areas.Getter getAreaTitle: (id: number) => Promise;\r\n\t@Areas.State areaDictionary: Map;\r\n\r\n\t@GenericTableStore.Getter private getModalRow: any\r\n\r\n\t@CustomFields.Action retrieveCustomFields: ({ tableType: number, live: boolean }) => Promise;\r\n\t@CustomFields.State contactCustomFields: CustomFieldDto[];\r\n\r\n\tprivate showContactRoleModal: boolean = false;\r\n\tprivate progressBulk = {}\r\n\r\n\tpublic emailAsUser: boolean = false;\r\n\tpublic isUser: boolean = false;\r\n\tprivate customFieldTableType: number = 2;\r\n\r\n\tpublic roleList: ContactRole[] = [];\r\n\r\n\tpublic contacts: ContactWithRole[] = [];\r\n\r\n\tpublic get columns(): TableHeader[] {\r\n\r\n\t\tvar columns = [\r\n\t\t{\r\n\t\t\ttitle: \"Full Name\",\r\n\t\t\tkey: \"fullName\",\r\n\t\t\torder: 2,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The contact's full name\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n\t\t\tisTermLabel: true,\r\n\t\t\tsortable: true,\r\n\t\t\tisSortedByDefault: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Primary Location\",\r\n\t\t\tkey: \"groupTitle\",\r\n\t\t\torder: 3,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The area that the user belongs to\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n\t\t\tsortable: true,\r\n\t\t\tsortKey: \"Area\",\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Email\",\r\n\t\t\tkey: \"email\",\r\n\t\t\torder: 4,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The contact's email address\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"email\",\r\n\t\t\tsortable: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Telephone\",\r\n\t\t\tkey: \"telephone\",\r\n\t\t\torder: 5,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The contact's phone number\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"telephone\",\r\n\t\t\tsortable: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Cell\",\r\n\t\t\tkey: \"mobile\",\r\n\t\t\torder: 6,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The contact's cell phone number\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"telephone\",\r\n\t\t\tsortable: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Roles\",\r\n\t\t\tkey: \"contactRoles\",\r\n\t\t\torder: 7,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The contact's role\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"list\",\r\n\t\t\tuseCustomCell: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Contact for\",\r\n\t\t\tkey: \"contactRoleGroups\",\r\n\t\t\torder: 8,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The areas the contact belongs to\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"list\",\r\n\t\t\tuseCustomCell: true\r\n\t\t}];\r\n\r\n\t\treturn columns;\r\n\t}\r\n\r\n\tprivate get getModalItems() : ModalItemCSV[] {\r\n\t\tvar modalItems = [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Full Name\",\r\n\t\t\t\tkey: \"fullName\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\treadOnly: this.isRowSuiteUser,\r\n\t\t\t\tplaceholder: \"John Doe\",\r\n\t\t\t\torder: 1,\r\n\t\t\t\tmaxLength: 50,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tcsvComponent:'input',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: !!currentElement.csvValue\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: this.isUser ? \"Primary Location - Please configure on Users page\" : \"Primary Location\",\r\n\t\t\t\tkey: \"groupID\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\treadOnly: this.isRowSuiteUser || this.isUser,\r\n\t\t\t\trequired: !this.isUser,\r\n\t\t\t\tdata: AreaTreeSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (a) => a.id,\r\n\t\t\t\t\tclearable: false,\r\n\t\t\t\t\tappendToBody: true\r\n\t\t\t\t},\r\n\t\t\t\torder: 2,\r\n\t\t\t\tcsvData: Object.keys(this.areasByTitle),\r\n\t\t\t\tcsvComponent: 'select',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: this.areasByTitle[currentElement.csvValue] !== undefined\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: this.isUser ? \"Email - Please configure on users page\" : \"Email\",\r\n\t\t\t\tkey: \"email\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\treadOnly: this.isRowSuiteUser || this.isUser,\r\n\t\t\t\tplaceholder: \"John@Doe.com\",\r\n\t\t\t\tcsvComponent:'input',\r\n\t\t\t\tmaxLength: 150,\r\n\t\t\t\torder: 3,\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tisEmailValid: helpers.withParams(\r\n\t\t\t\t\t\t{ type: \"isEmailValid\", errorMessage: \"Email address is not valid\" },\r\n\t\t\t\t\t\tvalue => {\r\n\t\t\t\t\t\t\tvar re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\t\t\t\t\t\t\treturn !helpers.req(value) || re.test(String(value).toLowerCase());\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t},\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\tconst value = currentElement.csvValue\r\n\t\t\t\t\t\tconst re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\t\t\t\t\t\tconst isValid = !helpers.req(value) || re.test(String(value).toLowerCase());\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid,\r\n\t\t\t\t\t\t\tmessage: `Email address is not valid`\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Phone\",\r\n\t\t\t\tkey: \"telephone\",\r\n\t\t\t\tdataType: \"tel\",\r\n\t\t\t\treadOnly: this.isRowSuiteUser,\r\n\t\t\t\tcsvComponent:'input',\r\n\t\t\t\tmaxLength: 50,\r\n\t\t\t\torder: 4,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Cell\",\r\n\t\t\t\tkey: \"mobile\",\r\n\t\t\t\tdataType: \"tel\",\r\n\t\t\t\treadOnly: this.isRowSuiteUser,\r\n\t\t\t\tcsvComponent:'input',\r\n\t\t\t\tmaxLength: 50,\r\n\t\t\t\torder: 5,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Roles\",\r\n\t\t\t\tkey: \"contactRoles\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tmultiple: true,\r\n\t\t\t\t\tcloseOnSelect: false\r\n\t\t\t\t},\r\n\t\t\t\tdata: this.roleList,\r\n\t\t\t\trequired: !this.isContactInheritanceEnabled,\r\n\t\t\t\treadOnly: this.isSuiteEnabled,\r\n\t\t\t\tplaceholder: \"Select a Role\",\r\n\t\t\t\torder: 6,\r\n\t\t\t\tcsvData: Object.keys(this.formattingRoleList),\r\n\t\t\t\tcsvComponent: 'select-multiple',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\tconst value = currentElement.csvValue && isArray(currentElement.csvValue) && (currentElement.csvValue || currentElement.csvValue.split(','));\r\n\t\t\t\t\t\tconst localData = (value && value.filter(v => v)) || [];\r\n\r\n\t\t\t\t\t\tif(localData.length === 0) return { isValid: true }\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: !!localData.length && localData.every(name => this.formattingRoleList[name] !== undefined)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tvisible: !this.isContactInheritanceEnabled\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Contact for\",\r\n\t\t\t\tkey: \"contactRoleGroups\",\r\n\t\t\t\trequired: !this.isContactInheritanceEnabled,\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tdata: AreaTreeSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tmultiple: true,\r\n\t\t\t\t\tappendToBody: true,\r\n\t\t\t\t\treduce: (a) => a.id,\r\n\t\t\t\t\tclearable: false\r\n\t\t\t\t},\r\n\t\t\t\torder: 7,\r\n\t\t\t\tcsvData: Object.keys(this.areasByTitle),\r\n\t\t\t\tcsvComponent: 'select-multiple',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\tconst value = currentElement.csvValue && isArray(currentElement.csvValue) && (currentElement.csvValue || currentElement.csvValue.split(','));\r\n\t\t\t\t\t\tconst localData = (value && value.filter(v => v)) || [];\r\n\r\n\t\t\t\t\t\tif(localData.length === 0) return { isValid: true };\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: !!localData.length && localData.every(name => this.areasByTitle[name] !== undefined)\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\tvisible: !this.isContactInheritanceEnabled\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Contact For\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tkey: \"contactsFor\",\r\n\t\t\t\treadOnly: this.isRowSuiteUser,\r\n\t\t\t\tdata: ContactsFor,\r\n\t\t\t\trequired: !!this.isContactInheritanceEnabled,\r\n\t\t\t\tcomponentHasValidation: !!this.isContactInheritanceEnabled,\r\n\t\t\t\tdefaultValue: [],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tallRoles: this.roleList,\r\n\t\t\t\t\tareaTitles: this.areaDictionary,\r\n\t\t\t\t},\r\n\t\t\t\torder: 8,\r\n\t\t\t\tcsvExclude: true,\r\n\t\t\t\tvisible: !!this.isContactInheritanceEnabled\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Has Pin Code\",\r\n\t\t\t\tkey: \"hasPinCode\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tvisible: this.isRowSuiteUser,\r\n\t\t\t\treadOnly: true,\r\n\t\t\t\torder: 9,\r\n\t\t\t}] as ModalItemCSV[];\r\n\r\n\t\t\tif (this.isCustomFieldsEnabled) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tvar genericModalItem: ModalItemCSV = {\r\n\t\t\t\t\t\ttitle: \"\",\r\n\t\t\t\t\t\tkey: \"\",\r\n\t\t\t\t\t\tdataType: null,\r\n\t\t\t\t\t\treadOnly: true,\r\n\t\t\t\t\t\torder: modalItems.length + 1\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tconst customFieldIds: string[] = this.getModalRow?.customFieldValues ? this.getModalRow.customFieldValues.map(cf => cf.id) : [];\r\n\t\t\t\t\tconst populatedCustomFields = this.contactCustomFields.filter(cf => customFieldIds.includes(cf.id));\r\n\r\n\t\t\t\t\tfor (let i = 0; i < populatedCustomFields.length; i++) {\r\n\t\t\t\t\t\tlet customFieldModalItem = MapCustomFieldToModalItem(populatedCustomFields[i], cloneDeep(genericModalItem));\r\n\t\t\t\t\t\tmodalItems.push(customFieldModalItem as ModalItemCSV);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcatch (err) {\r\n\t\t\t\t\tconsole.error(\"Unexpected error displaying custom fields: \", err);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn modalItems;\r\n\t}\r\n\r\n\tprivate pageNumber: number = 1;\r\n\tprivate pageSize: number = 25;\r\n\tprivate totalRecords: number = 0;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate searchQuery: string = \"\";\r\n\tprivate debounceSearch;\r\n\r\n\tprivate get isRowSuiteUser (): boolean {\r\n\t\treturn (this.getModalRow && this.getModalRow.isSuiteUser) || this.isSuiteEnabled;\r\n\t}\r\n\r\n\tprivate get formattingRoleList () {\r\n\t\treturn this.roleList.reduce((acc, cur: T) => ({\r\n\t\t\t...acc,\r\n\t\t\t[cur.title]: cur\r\n\t\t}),{})\r\n\t}\r\n\r\n\tprivate deleteActionMessages(contactForDelete): string[] {\r\n\t\tif (contactForDelete.isContact) {\r\n\t\t\treturn [\r\n\t\t\t\t`Remove this Contact from the associated User '${contactForDelete.fullName}'`,\r\n\t\t\t\t\"Delete this Contact\",\r\n\t\t\t\t\"User will remain unchanged\"\r\n\t\t\t];\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async openUpdateModal(row): Promise {\r\n\t\tthis.isUser = !!row && !!row.username;\r\n\r\n\t\tif (!!row && this.isCustomFieldsEnabled && !!row.customFieldValues) {\r\n\t\t\tmapArrayFieldsToObject(row, row.customFieldValues, this.contactCustomFields, \"id\", \"value\", \"cf\");\r\n\t\t}\r\n\t}\r\n\r\n\t// show the contact role component in a modal\r\n\tprivate async openContactRoleModal(row): Promise {\r\n\t\tthis.showContactRoleModal = true;\r\n\t}\r\n\r\n\t// close the modal and refresh the data in the table\r\n\tprivate async onContactRolesClose() : Promise {\r\n\t\tthis.roleList = await this.formatRoleList();\r\n\t}\r\n\r\n\tprivate getUpdatedRoleRequest(contactToUpdate: ContactWithRole, isBulkUpload: boolean = false) : { user: { userID: number, username: string, fullName: string, groupID: number }, contactForItems: ContactFor[] }\r\n\t{\r\n\t\tconst { userID, username, fullName, contactsFor, contactRoleGroups, groupID } = contactToUpdate;\r\n\r\n\t\t// techdebt (missing type for contactForRequest) - when the data comes in, it is remapped - from a Group to an array of GroupIds\r\n\t\tlet contactForRequest;\r\n\r\n\t\tif(!this.isContactInheritanceEnabled || isBulkUpload)\r\n\t\t{\r\n\t\t\tcontactForRequest = contactRoleGroups.map(crg => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tgroupId: crg,\r\n\t\t\t\t\tisInherited: false,\r\n\t\t\t\t\troleIds: contactToUpdate.contactRoles.map(cr => cr.key)\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tcontactForRequest = contactsFor.map(cf => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tgroupId: cf.groupId,\r\n\t\t\t\t\tisInherited: cf.isInherited,\r\n\t\t\t\t\troleIds: cf.roleIds\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tuser: {\r\n\t\t\t\tuserID,\r\n\t\t\t\tusername,\r\n\t\t\t\tfullName,\r\n\t\t\t\tgroupID\r\n\t\t\t},\r\n\t\t\tcontactForItems: contactForRequest\r\n\t\t};\r\n\t}\r\n\r\n\tpublic async updateUserDetails(contactToUpdate) : Promise {\r\n\t\tif (contactToUpdate.address == null) {\r\n\t\t\tcontactToUpdate.address = \"\";\r\n\t\t}\r\n\t\tif (contactToUpdate.mobile == null) {\r\n\t\t\tcontactToUpdate.mobile = \"\";\r\n\t\t}\r\n\r\n\t\tawait api.createOrUpdateContactUser(contactToUpdate);\r\n\r\n\t\tlet roleRequest = this.getUpdatedRoleRequest(contactToUpdate);\r\n\r\n\t\tawait api.updateRole(roleRequest);\r\n\t\tawait this.updateData(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tpublic async newUserDetails(contactToAdd) : Promise {\r\n\t\tawait this.saveNewUser(contactToAdd)\r\n\t\tawait this.updateData(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tpublic async saveNewUser(contactToAdd: any, isBulkUpload: boolean = false) : Promise {\r\n\t\tlet newUser = await api.createOrUpdateContactUser(contactToAdd);\r\n\r\n\t\tcontactToAdd.userID = newUser.data;\r\n\r\n\t\tlet roleRequest = this.getUpdatedRoleRequest(contactToAdd, isBulkUpload);\r\n\r\n\t\tawait api.updateRole(roleRequest);\r\n\t}\r\n\r\n\tpublic async deleteUserDetails(contactToDelete): Promise {\r\n if (contactToDelete.isContact) {\r\n\t\t\tcontactToDelete.isContact = false;\r\n\t\t\tawait api.updateUser(contactToDelete);\r\n\t\t} else {\r\n\t\t\tawait api.deleteUser(contactToDelete.userID);\r\n\t\t}\r\n\r\n\t\tlet userIndex = this.contacts.findIndex(element => element.userID == contactToDelete.userID);\r\n\t\tthis.contacts.splice(userIndex, 1);\r\n\t}\r\n\r\n\tpublic async updateData(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\r\n\t\t\t// ensure we have an up-to-date dependant data.\r\n\t\t\tawait this.fetchAreaDictionary();\r\n\t\t\tthis.roleList = await this.formatRoleList();\r\n\r\n\t\t\tconst cancellableQuery = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\t\t\tlet contactsWithRolesResponse: ContactsPagedResponse = await api.getContacts(cancellableQuery);\r\n\r\n\t\t\tthis.totalRecords = contactsWithRolesResponse.totalRecords;\r\n\r\n\t\t\tthis.contacts = this.formatContacts(contactsWithRolesResponse.data);\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tconsole.log(\"Unexpected error fetching contacts: \" + ex);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate formatContacts(contactsWithRoles) {\r\n\t\treturn contactsWithRoles.map(contact => {\r\n\r\n\t\t\tif (contact.contactRoleGroups) {\r\n\t\t\t\tcontact.contactRoleGroups = contact.contactRoleGroups.map(rg => {\r\n\t\t\t\t\treturn rg.groupID;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (contact.contactRoles) {\r\n\t\t\t\tcontact.contactRoles = contact.contactRoles.map(cr => {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tkey: cr.contactRoleId,\r\n\t\t\t\t\t\ttitle: cr.role\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tvar isReadOnly = !!contact.groupSyncId && !this.getPermissions.canOverrideGroupSync && !this.getPermissions.isSystemAdmin;\r\n\t\t\tcontact.readOnly = isReadOnly,\r\n\t\t\tcontact.readOnlyMessage = isReadOnly ? \"You do not have permission to edit Sync contacts\": null\r\n\r\n\t\t\tcontact.groupTitle = this.getAreaTitle(contact.groupID);\r\n\r\n\t\t\tcontact.hideDelete = this.isSuiteEnabled;\r\n\r\n\t\t\treturn contact;\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async formatRoleList() {\r\n\t\tlet newRoleList = await api.loadContactRoleList();\r\n\t\tlet friendlyRoleList = [];\r\n\t\tif (newRoleList) {\r\n\t\t\tfor (let i = 0; i < newRoleList.length; i++) {\r\n\t\t\t\tfriendlyRoleList.push({\r\n\t\t\t\t\ttitle: newRoleList[i].role,\r\n\t\t\t\t\tkey: newRoleList[i].contactRoleId\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn friendlyRoleList;\r\n\t}\r\n\r\n\t// If feature is on / off\r\n\tpublic get isContactsEnabled(): boolean {\r\n\t\tif (get(this.featuresList, [\"Contacts\"]) == null) {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn get(this.featuresList, [\"Contacts\"]);\r\n\t\t}\r\n\t}\r\n\r\n\t// If ManageContactRoles feature is on / off\r\n\tpublic get isManageContactRolesEnabled(): boolean {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"Contacts\", \"ManageContactRoles\"]) &&\r\n\t\t\t(this.getPermissions.isSystemAdmin || this.getPermissions.canManageContactRoles)\r\n\t\t);\r\n\t}\r\n\r\n\tasync mounted() {\r\n\t\tif (get(this.featuresList, [\"Contacts\"]) == null) {\r\n\t\t\tthis.emailAsUser = false;\r\n\t\t} else {\r\n\t\t\tthis.emailAsUser = get(this.featuresList, [\"Contacts\"]);\r\n\t\t}\r\n\r\n\t\tif (this.isCustomFieldsEnabled){\r\n\t\t\tawait this.retrieveCustomFields({ tableType: this.customFieldTableType, live: true });\r\n\t\t}\r\n\r\n\t\tawait this.updateData();\r\n\t}\r\n\r\n\tprivate convertDataToRest({ body }) {\r\n\t\treturn body\r\n\t\t\t\t.map(value => {\r\n\t\t\t\t\tconst contactRoleGroupsValue = isArray(value.contactRoleGroups) ? value.contactRoleGroups : value.contactRoleGroups.split(',');\r\n\t\t\t\t\tconst rolesValue = isArray(value.contactRoles) ? value.contactRoles : value.contactRoles.split(',');\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\t...value,\r\n\t\t\t\t\t\tcontactRoles: (rolesValue && rolesValue.map(name => this.formattingRoleList[name])) || [],\r\n\t\t\t\t\t\tgroupID: this.areasByTitle[value.groupID],\r\n\t\t\t\t\t\tcontactRoleGroups: (contactRoleGroupsValue && contactRoleGroupsValue.map(name => this.areasByTitle[name])) || [],\r\n\t\t\t\t\t}\r\n\t\t\t\t}).map(v =>\r\n\t\t\t\t\t Object.entries(v).reduce((acc, [key, value]) => {\r\n\t\t\t\t\t\tif(value === '') return acc\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t...acc,\r\n\t\t\t\t\t\t\t[key]: value\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} ,{})\r\n\t\t\t)\r\n\t}\r\n\r\n\tprivate get areasByTitle() {\r\n\t\treturn invert(this.areaDictionary);\r\n\t}\r\n\r\n\tprivate get csvHeaders()\r\n\t{\r\n\t\tconst items = this.getModalItems;\r\n\t\treturn items.filter(mi => mi.csvExclude != true).map(mi => mi.title)\r\n\t}\r\n\r\n\tprivate get defaultFile() {\r\n\t\tconst headers = this.csvHeaders;\r\n\t\tconst body = headers.map( v => '')\r\n\t\treturn {\r\n\t\t\tname: 'ContactTemplate.csv',\r\n\t\t\tdata: `${headers.join()}\\r\\n${body.join()}`\r\n\t\t}\r\n\t}\r\n\r\n\tasync onSave({ body }) {\r\n\t\tconst max = body.length\r\n\t\tlet counterSucceed = 0;\r\n\t\tlet progress: any = {\r\n\t\t\tmax,\r\n\t\t\tvalue: 0,\r\n\t\t\tstatus: 'init',\r\n\t\t\tsuccessfulMessage: `Successfully added ${max} Contacts`,\r\n\t\t}\r\n\r\n\t\tthis.progressBulk = {\r\n\t\t\t...progress\r\n\t\t}\r\n\r\n\t\tconst convertedData = this.convertDataToRest({ body })\r\n\t\tconst contacts = convertedData.map(async (contact) => {\r\n\t\t\t\tconst localContact = cloneDeep(contact)\r\n\t\t\t\tconst id = localContact.rowId\r\n\r\n\t\t\t\treturn this.saveNewUser(localContact, true)\r\n\t\t\t\t\t.then(() => {\r\n\t\t\t\t\t\tprogress.rowIndex = id\r\n\t\t\t\t\t\tcounterSucceed += 1\r\n\t\t\t\t\t\tprogress.value = progress.value + 1\r\n\r\n\t\t\t\t\t\tthis.progressBulk = {\r\n\t\t\t\t\t\t\t...progress,\r\n\t\t\t\t\t\t\tstatus: counterSucceed === max ? 'succeed' : 'progress',\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((exception) => {\r\n\t\t\t\t\t\tconsole.error(exception)\r\n\t\t\t\t\t\tconst failedContact = convertedData.find(({ rowId }) => rowId === id)\r\n\t\t\t\t\t\tthis.progressBulk = {\r\n\t\t\t\t\t\t\t...progress,\r\n\t\t\t\t\t\t\trowIndex: id,\r\n\t\t\t\t\t\t\tstatus: 'error',\r\n\t\t\t\t\t\t\terror: {\r\n\t\t\t\t\t\t\t\tname: failedContact.fullName,\r\n\t\t\t\t\t\t\t\tmessage: `Bulk upload has failed to add contact ${failedContact.fullName}`\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t}\r\n\t\t)\r\n\r\n\t\tawait Promise.all(contacts)\r\n\t}\r\n\r\n\tasync bulkOnSubmit({ formData }) {\r\n\t\tawait this.onSave({ body: formData })\r\n\t\tawait this.updateData(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tonCloseBulk() {\r\n\t\tthis.resetProgress()\r\n\t}\r\n\r\n\tresetProgress() {\r\n\t\tthis.progressBulk = {}\r\n\t}\r\n\r\n\tprivate get isBulkAddEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Contacts\", \"BulkAdd\"]) && !this.isSuiteEnabled;\r\n\t}\r\n\r\n\tprivate get isCustomFieldsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"CustomFields\"]);\r\n\t}\r\n\r\n\tprivate get isSuiteEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Suite\"]);\r\n\t}\r\n\r\n\tprivate ellipseAreaTitle(title: string): string {\r\n\t\treturn ellipseAfterX(title);\r\n\t}\r\n\r\n\tprivate get isContactInheritanceEnabled(): boolean\r\n\t{\r\n\t\treturn this.getFeature([\"Contacts\", \"Inheritance\"]);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contacts.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Contacts.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Contacts.vue?vue&type=template&id=58d2fdd6&scoped=true\"\nimport script from \"./Contacts.vue?vue&type=script&lang=ts\"\nexport * from \"./Contacts.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Contacts.vue?vue&type=style&index=0&id=58d2fdd6&prod&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 \"58d2fdd6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fill-body card\"},[_c('nav-header',{attrs:{\"title\":'Insight'}}),(_vm.insightsEnabled)?_c('div',{staticClass:\"flex-grow-1 p-4\",staticStyle:{\"overflow\":\"hidden\"},attrs:{\"id\":\"reportsContainer\"}},[_c('div',{staticClass:\"col h-100\"},[_c('ReportBuilder',{staticClass:\"h-100\"})],1)]):_c('h4',{attrs:{\"id\":\"reportsErrorContainer\"}},[_vm._v(\" You are not licenced to view this page \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row h-100\",attrs:{\"data-cy\":\"reportContainer\"}},[(!_vm.reportApiEndpoint)?_c('div',{attrs:{\"data-cy\":\"configureReportServer\"}},[_vm._v(\"Please configure reporting server\")]):_vm._e(),(_vm.reportApiEndpoint)?_c('div',{staticClass:\"side-panel col col-sm-4 col-md-3 col-lg-2\",attrs:{\"id\":\"reportTypes\",\"data-cy\":\"reportTypes\"}},_vm._l((_vm.reportTypes),function(category){return _c('ul',{key:category.title,staticClass:\"report-list\"},[_c('h4',[_vm._v(_vm._s(category.title))]),_vm._l((category.types),function(report){return _c('li',{key:report.insightID,class:{ 'selected': report.endpoint.includes(_vm.currentReportUrl) && _vm.currentReportUrl !== ''},attrs:{\"data-cy\":'reportTypeKey'+report.insightID},on:{\"click\":function($event){$event.preventDefault();return _vm.goToReport(report.endpoint)}}},[_vm._v(_vm._s(_vm.renameReportTitle(report.title))+\" \")])})],2)}),0):_vm._e(),(_vm.reportApiEndpoint)?_c('div',{staticClass:\"report-results col-sm-8 col-md-9 col-lg-10 h-100\",attrs:{\"id\":\"reportResult\"}},[(_vm.error || _vm.errorMessage !== '')?_c('div',{staticClass:\"loader-wrapper no-background error\",attrs:{\"data-cy\":\"reportsError\"}},[_c('i',{staticClass:\"fas fa-exclamation-triangle\"}),_c('span',[_vm._v(\" \"+_vm._s(_vm.getErrorMessage)+\" \")])]):(_vm.report && _vm.report.templatable)?_c('template-report-builder',{model:{value:(_vm.selectedFilters),callback:function ($$v) {_vm.selectedFilters=$$v},expression:\"selectedFilters\"}}):_vm._e(),(!_vm.error && _vm.currentReportUrl == '' && !_vm.report.templatable)?_c('div',{staticClass:\"loader-wrapper no-background\",attrs:{\"data-cy\":\"runReportMessage\"}},[_vm._v(\"Please choose a report to run\")]):_vm._e(),(!_vm.error && _vm.loading && _vm.currentReportUrl != '')?_c('div',{staticClass:\"loader-wrapper\"},[_vm._m(0)]):_vm._e(),_c('div',{staticClass:\"row options-bar\"},[(!_vm.error && _vm.report.data != undefined)?_c('div',{staticClass:\"col-md-12 col-lg-4 filter-options\"},[(!_vm.error && _vm.report != null)?_c('h2',{ref:\"chartContainer\"},[_vm._v(\" \"+_vm._s(_vm.renameReportTitle(_vm.report.title))+\" \"),(_vm.report.description)?_c('i',{staticClass:\"fas fa-info-circle tip\"},[_c('span',[_vm._v(_vm._s(_vm.report.description))])]):_vm._e()]):_vm._e()]):_vm._e(),(!_vm.error && _vm.report.data != undefined)?_c('div',{staticClass:\"col-md-12 col-lg-8 text-md-right graph-options\"},[(_vm.report.filterOptions)?_c('button',{staticClass:\"btn fas fa-lock\",class:{ selected: _vm.filterLockStatus, 'fa-lock-open' : !_vm.filterLockStatus},attrs:{\"id\":\"filterLockBtn\",\"title\":_vm.filterLockStatus ? 'Filter options are locked and will apply to all reports' : 'Filter options are unlocked and will reset for each report'},on:{\"click\":function($event){_vm.filterLockStatus = !_vm.filterLockStatus}}}):_vm._e(),(_vm.report.filterOptions)?_c('button',{staticClass:\"btn fas fa-filter\",class:{ selected: _vm.filterApplied },attrs:{\"id\":\"filterOpenBtn\",\"title\":_vm.filterApplied ? 'Filter options have been applied' : 'Select filter options'},on:{\"click\":function($event){_vm.filterModal = true}}}):_vm._e(),(_vm.report.data != undefined)?_c('vue-select',{staticClass:\"dark\",attrs:{\"id\":\"chart-relative-hours\",\"label\":\"label\",\"value\":\"7 Days\",\"reduce\":function (range) { return range.value; },\"options\":_vm.relativeHoursOptions},on:{\"input\":_vm.setSelectedRelativeHours}}):_vm._e(),(_vm.selectedFilters.startDate)?_c('span',{staticClass:\"date-filter-label\",attrs:{\"id\":\"startDateLabel\",\"title\":\"Click to edit filters\"},on:{\"click\":function($event){_vm.filterModal = true}}},[_vm._v(_vm._s(_vm.formatDate(_vm.selectedFilters.startDate))+\" - \"+_vm._s(_vm.formatDate(_vm.selectedFilters.endDate)))]):_vm._e(),(_vm.chartOptionsAvailable)?_c('button',{staticClass:\"btn fas fa-chart-line\",class:{ 'selected' : _vm.chartType == 'LineChart'},attrs:{\"id\":\"lineChartBtn\",\"title\":\"Line Chart\"},on:{\"click\":function($event){return _vm.updateChartType('LineChart')}}}):_vm._e(),(_vm.chartOptionsAvailable)?_c('button',{staticClass:\"btn fas fa-chart-bar\",class:{ 'selected' : _vm.chartType == 'ColumnChart'},attrs:{\"id\":\"barChartBtn\",\"title\":\"Column Chart\"},on:{\"click\":function($event){return _vm.updateChartType('ColumnChart')}}}):_vm._e(),_c('button',{staticClass:\"btn fas fa-table\",class:{ 'selected' : _vm.chartType == 'Table'},attrs:{\"id\":\"tableBtn\",\"title\":\"Data Table\"},on:{\"click\":function($event){return _vm.updateChartType('Table')}}}),(_vm.chartOptionsAvailable)?_c('button',{staticClass:\"btn fas fa-chart-pie\",class:{ 'selected' : _vm.chartType == 'PieChart'},attrs:{\"id\":\"pieChartBtn\",\"title\":\"Pie Chart\"},on:{\"click\":function($event){return _vm.updateChartType('PieChart')}}}):_vm._e(),(_vm.chartOptionsAvailable)?_c('button',{staticClass:\"btn fas fa-square\",class:{ 'selected' : _vm.chartType == 'Tile'},attrs:{\"id\":\"pieChartBtn\",\"title\":\"Tile\"},on:{\"click\":function($event){return _vm.updateChartType('Tile')}}}):_vm._e(),_c('button',{staticClass:\"btn fas fa-download\",attrs:{\"id\":\"downloadBtn\",\"title\":\"Download CSV\"},on:{\"click\":function($event){$event.preventDefault();return _vm.downloadReportCsv()}}}),_c('button',{staticClass:\"btn fas fa-link\",attrs:{\"id\":\"copyLinkBtn\",\"title\":\"Link to report\"},on:{\"click\":function($event){$event.preventDefault();return _vm.copyReportLink()}}}),_c('div',{staticClass:\"link-to-copy\",class:{'hidden':!_vm.showPermalinkCopy}},[_vm._v(\" Report URL \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.reportPermalink),expression:\"reportPermalink\"}],attrs:{\"type\":\"text\",\"id\":\"link-copy-input\",\"readonly\":\"\"},domProps:{\"value\":(_vm.reportPermalink)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.reportPermalink=$event.target.value}}}),_c('span',{attrs:{\"title\":\"Close\"},on:{\"click\":function($event){_vm.showPermalinkCopy = false}}},[_vm._v(\"X\")])])],1):_vm._e()]),_c('div',{staticClass:\"row h-100\"},[_c('div',{staticClass:\"col-12\"},[_c('insights-graph',{ref:\"insights\",staticClass:\"h-75\",attrs:{\"chartObject\":_vm.chartObject,\"filters\":_vm.selectedFilters},on:{\"report-perma-link\":_vm.updatePermaLinkUrl,\"report-options-payload\":function (payload) { return _vm.reportOptionsPayload = payload; },\"report-filters\":function (filters) { return _vm.selectedFilters = filters; },\"time-zone\":function (tZone) { return _vm.timeZone = tZone; },\"error-msg\":function (err) { return _vm.errorMessage = err; },\"lockFilter\":function (lockStatus) { return _vm.filterLockStatus = lockStatus; }}})],1)])],1):_vm._e(),_c('b-modal',{staticClass:\"filter-modal\",attrs:{\"id\":\"filterModal\",\"title\":\"Filter Options\",\"size\":\"md\",\"body-class\":\"modal-overflow default-modal-size\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('b-button',{staticClass:\"mt-3 btn btn-primary ksConfirm\",attrs:{\"block\":\"\"},on:{\"click\":function($event){return _vm.callReport()}}},[_vm._v(\"Run Report\")])]},proxy:true}]),model:{value:(_vm.filterModal),callback:function ($$v) {_vm.filterModal=$$v},expression:\"filterModal\"}},[(_vm.report.filterOptions && _vm.report.filterOptions.length > 0)?_c('div',{staticClass:\"container default-modal-size\",attrs:{\"id\":\"filterContainer\"}},_vm._l((_vm.report.filterOptions),function(filter){return _c('div',{key:filter.title,staticClass:\"row d-flex align-items-center m-b-10\"},[(filter.filterName === 'groupId')?_c('div',{staticClass:\"col col-md-12\"},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('area-tree-select',{attrs:{\"requiredPermissions\":['CanViewReports'],\"value\":_vm.selectedFilters[filter.filterName],\"placeholder\":(\"Select a \" + (filter.title) + \" to filter by\"),\"reduce\":function (area) {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tid: area.id,\r\n\t\t\t\t\t\t\t\ttitle: area.label\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\"clearable\":false,\"multiple\":\"\"},on:{\"input\":_vm.areaFilterUpdated}})],1):(filter.filterName === 'responseId')?_c('div',{staticClass:\"col col-md-12\",attrs:{\"data-cy\":\"alarm-point-select\"}},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('alarm-point-select',{attrs:{\"multiple\":\"\"},model:{value:(_vm.selectedFilters[filter.filterName]),callback:function ($$v) {_vm.$set(_vm.selectedFilters, filter.filterName, $$v)},expression:\"selectedFilters[filter.filterName]\"}})],1):(filter.filterName === _vm.eventTypeFilterName)?_c('div',{staticClass:\"col col-md-12\",attrs:{\"data-cy\":\"event-type-filter\"}},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('event-type-report-filter',{model:{value:(_vm.selectedFilters[filter.filterName]),callback:function ($$v) {_vm.$set(_vm.selectedFilters, filter.filterName, $$v)},expression:\"selectedFilters[filter.filterName]\"}})],1):(filter.type == 'MultiSelect' || filter.type == 'ComplexMultiSelect' || filter.type == 'StringMultiSelect')?_c('div',{staticClass:\"col col-md-12\"},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('vue-select',{staticClass:\"dark flex-grow-1\",attrs:{\"multiple\":\"\",\"label\":\"title\",\"options\":filter.data,\"placeholder\":(\"Select a \" + (filter.title) + \" to filter by\")},model:{value:(_vm.selectedFilters[filter.filterName]),callback:function ($$v) {_vm.$set(_vm.selectedFilters, filter.filterName, $$v)},expression:\"selectedFilters[filter.filterName]\"}})],1):(filter.type == 'Select')?_c('div',{staticClass:\"col col-md-12\"},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('vue-select',{staticClass:\"dark flex-grow-1\",attrs:{\"label\":\"title\",\"options\":filter.data,\"placeholder\":(\"Select a \" + (filter.title) + \" to filter by\"),\"clearable\":false},model:{value:(_vm.selectedFilters[filter.filterName]),callback:function ($$v) {_vm.$set(_vm.selectedFilters, filter.filterName, $$v)},expression:\"selectedFilters[filter.filterName]\"}})],1):(filter.type == 'NestedEventOutcomes')?_c('div',{staticClass:\"col col-md-12\"},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('event-outcome-selector',{attrs:{\"eventCategories\":filter.data,\"clearClicked\":false,\"dataLoaded\":true,\"multiselect\":false,\"initialValue\":_vm.selectedFilters.eventOutcomeId},on:{\"input\":_vm.outcomeChanged}})],1):(filter.type == 'DateTime')?_c('div',{staticClass:\"col col-md-12\"},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(\" \"+_vm._s(filter.title)+\" \"),_c('small',[_c('i',[_vm._v(\"(\"+_vm._s(_vm.timeZone)+\")\")])])]),_c('datetime',{staticClass:\"flex-grow-1\",attrs:{\"type\":\"datetime\",\"input-id\":filter.title,\"format\":\"dd/MM/yyyy HH:mm\"},model:{value:(_vm.selectedFilters[filter.filterName]),callback:function ($$v) {_vm.$set(_vm.selectedFilters, filter.filterName, $$v)},expression:\"selectedFilters[filter.filterName]\"}},[_c('label',{attrs:{\"slot\":\"after\",\"for\":filter.title},slot:\"after\"},[_c('i',{staticClass:\"far fa-calendar-alt date-action-items\"})])])],1):_vm._e()])}),0):_vm._e()])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loader\"},[_c('div'),_c('div'),_c('div'),_c('div')])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.report)?_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\" \"+_vm._s(_vm.report.title)+\" \")]),_c('div',{staticClass:\"card-body\"},[(_vm.report.templates && _vm.report.templates.length > 1)?_c('div',[_c('label',[_vm._v(\"Template\")]),_c('vue-select',{staticClass:\"dark flex-grow-1\",attrs:{\"data-cy\":\"template-select\",\"label\":\"title\",\"options\":_vm.report.templates,\"placeholder\":'Select a Template'},model:{value:(_vm.selectedTemplate),callback:function ($$v) {_vm.selectedTemplate=$$v},expression:\"selectedTemplate\"}})],1):_vm._e(),_c('div',[_c('label',[_vm._v(\"Predefined Date Range\")]),_c('vue-select',{staticClass:\"dark\",attrs:{\"data-cy\":\"time-range-select\",\"label\":\"range\",\"reduce\":function (range) { return range.hours; },\"options\":_vm.timeRanges,\"placeholder\":'Select a Date range'},model:{value:(_vm.selectedTimeRange),callback:function ($$v) {_vm.selectedTimeRange=$$v},expression:\"selectedTimeRange\"}}),_vm._m(0)],1),_c('report-filters',{model:{value:(_vm.value),callback:function ($$v) {_vm.value=$$v},expression:\"value\"}})],1),_c('div',{staticClass:\"card-footer modal-footer\"},[(_vm.isActivityReportCsvEnabled)?_c('button',{staticClass:\"btn btn-secondary pull-right\",class:{'disabled': !_vm.template },attrs:{\"id\":\"generateCSVBtn\",\"data-dismiss\":\"modal\",\"title\":\"Generate Report CSV\",\"data-cy\":\"btn-download-csv\",\"disabled\":!_vm.template},on:{\"click\":function($event){return _vm.generateReport(true)}}},[_vm._v(\"Download CSV\")]):_vm._e(),_c('button',{staticClass:\"btn btn-secondary pull-right\",class:{'disabled': !_vm.template },attrs:{\"id\":\"generatePDFBtn\",\"data-dismiss\":\"modal\",\"title\":\"Generate Report PDF\",\"data-cy\":\"btn-download-pdf\",\"disabled\":!_vm.template},on:{\"click\":function($event){return _vm.generateReport(false)}}},[_vm._v(\"Download PDF\")])])]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('small',{staticClass:\"disabled text-muted\"},[_c('i',{staticClass:\"fa fa-info-circle pr-1\"}),_vm._v(\"Changing the Start/End Date will clear the Predefined Date Range\")])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.report.filterOptions),function(filter){return _c('div',{key:filter.title,staticClass:\"row d-flex align-items-center m-b-10\"},[(filter.filterName === 'groupId')?_c('div',{staticClass:\"col col-md-12\",attrs:{\"data-cy\":\"area-tree-select\"}},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('area-tree-select',{attrs:{\"value\":_vm.value[filter.filterName],\"requiredPermissions\":['CanViewReports'],\"placeholder\":(\"Select a \" + (filter.title) + \" to filter by\"),\"reduce\":function (area) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: area.id,\n\t\t\t\t\t\t\ttitle: area.label\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"clearable\":false,\"multiple\":\"\"},on:{\"input\":_vm.areaFilterUpdated}})],1):(filter.filterName === 'responseId')?_c('div',{staticClass:\"col col-md-12\",attrs:{\"data-cy\":\"alarm-point-select\"}},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('alarm-point-select',{attrs:{\"multiple\":\"\"},model:{value:(_vm.value[filter.filterName]),callback:function ($$v) {_vm.$set(_vm.value, filter.filterName, $$v)},expression:\"value[filter.filterName]\"}})],1):(filter.filterName === _vm.eventTypeFilterName)?_c('div',{staticClass:\"col col-md-12\",attrs:{\"data-cy\":\"event-type-filter\"}},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('event-type-report-filter',{model:{value:(_vm.value[filter.filterName]),callback:function ($$v) {_vm.$set(_vm.value, filter.filterName, $$v)},expression:\"value[filter.filterName]\"}})],1):(filter.type == 'MultiSelect' || filter.type == 'ComplexMultiSelect' || filter.type == 'StringMultiSelect')?_c('div',{staticClass:\"col col-md-12\",attrs:{\"data-cy\":'Filter-MultiSelect-'+filter.filterName}},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('vue-select',{staticClass:\"dark flex-grow-1\",attrs:{\"multiple\":\"\",\"label\":\"title\",\"options\":filter.data,\"placeholder\":(\"Select a \" + (filter.title) + \" to filter by\")},model:{value:(_vm.value[filter.filterName]),callback:function ($$v) {_vm.$set(_vm.value, filter.filterName, $$v)},expression:\"value[filter.filterName]\"}})],1):(filter.type == 'Select')?_c('div',{staticClass:\"col col-md-12\",attrs:{\"data-cy\":'Filter-Select-'+filter.filterName}},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('vue-select',{staticClass:\"dark flex-grow-1\",attrs:{\"label\":\"title\",\"options\":filter.data,\"placeholder\":(\"Select a \" + (filter.title) + \" to filter by\"),\"clearable\":false},model:{value:(_vm.value[filter.filterName]),callback:function ($$v) {_vm.$set(_vm.value, filter.filterName, $$v)},expression:\"value[filter.filterName]\"}})],1):(filter.type == 'NestedEventOutcomes')?_c('div',{staticClass:\"col col-md-12\",attrs:{\"data-cy\":'Filter-NestedEventOutcomes-'+filter.filterName}},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(_vm._s(filter.title))]),_c('event-outcome-selector',{staticClass:\"outcome-select\",attrs:{\"eventCategories\":filter.data,\"clearClicked\":false,\"dataLoaded\":true,\"multiselect\":false},on:{\"input\":_vm.outcomeChanged}})],1):(filter.type == 'DateTime')?_c('div',{staticClass:\"col col-md-12\",attrs:{\"data-cy\":'Filter-DateTime-'+filter.filterName}},[_c('label',{staticClass:\"m-b-0\"},[_vm._v(\" \"+_vm._s(filter.title)+\" \"),_c('small',[_c('i',[_vm._v(\"(\"+_vm._s(_vm.TimeZone)+\")\")])])]),_c('datetime',{staticClass:\"flex-grow-1\",attrs:{\"type\":\"datetime\",\"input-id\":filter.title,\"format\":\"dd/MM/yyyy HH:mm\"},model:{value:(_vm.value[filter.filterName]),callback:function ($$v) {_vm.$set(_vm.value, filter.filterName, $$v)},expression:\"value[filter.filterName]\"}},[_c('label',{attrs:{\"slot\":\"after\",\"for\":filter.title},slot:\"after\"},[_c('i',{staticClass:\"far fa-calendar-alt date-action-items\"})])])],1):_vm._e()])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"v-select dark\",class:[{ 'single': !_vm.multiple }, { 'open': _vm.isInputFocused }]},[_c('area-tree-select',{attrs:{\"placeholder\":\"Search all Areas...\",\"data-label\":\"areaTreeSelect\",\"reduce\":function (a) { return a.id; },\"append-to-body\":\"\",\"clearable\":false},model:{value:(_vm.selectedGroup),callback:function ($$v) {_vm.selectedGroup=$$v},expression:\"selectedGroup\"}}),(_vm.selectedGroup || _vm.selectedResponses.length > 0)?_c('div',{ref:\"toggleBox\",staticClass:\"dropdown-toggle\"},[_c('div',{staticClass:\"vs__selected-options\",class:{'focused': _vm.isInputFocused}},[_vm._l((_vm.selectedResponses),function(response){return _c('span',{key:response.responseID,staticClass:\"selected-tag\"},[_vm._v(\" \"+_vm._s(response.title)+\" \"),_c('i',{staticClass:\"remove-group fas fa-times\",attrs:{\"data-cy\":'deselect-response-button-'+ response.responseID},on:{\"click\":function($event){return _vm.deselectResponse(response)}}})])}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchQuery),expression:\"searchQuery\"}],ref:\"searchBox\",staticClass:\"form-control\",staticStyle:{\"min-width\":\"100px\"},attrs:{\"type\":\"search\",\"placeholder\":(_vm.multiple || _vm.isInputFocused || !_vm.selectedResponses || _vm.selectedResponses.length === 0) ? 'Search or click an area to load alarm points' : '',\"data-cy\":\"alarm-point-select\",\"maxlength\":\"250\"},domProps:{\"value\":(_vm.searchQuery)},on:{\"focus\":_vm.displayDropdown,\"blur\":_vm.onBlur,\"input\":function($event){if($event.target.composing){ return; }_vm.searchQuery=$event.target.value}}})],2),_c('div',{staticClass:\"vs__actions\"},[_c('i',{staticClass:\"open-indicator\",attrs:{\"role\":\"presentation\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setSearchFocus($event)}}})])]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isInputFocused),expression:\"isInputFocused\"}],staticClass:\"dropdown-menu\",staticStyle:{\"overflow\":\"hidden\"},style:(_vm.menuStyle)},[_c('VuePerfectScrollbar',{ref:\"areaTreeScrollBar\",staticClass:\"p-1 flex-grow-1\",staticStyle:{\"height\":\"100%\"}},[(_vm.isLoading || _vm.areaResponses.length == 0)?_c('div',{staticClass:\"list-group-item\"},[(_vm.isLoading)?_c('span',[_vm._v(\" Loading... \"),_c('i',{staticClass:\"fas fa-spinner fa-spin\"})]):(_vm.areaResponses.length == 0)?_c('span',[_vm._v(\"No Alarm Points in Area\")]):_vm._e()]):_vm._e(),_vm._l((_vm.areaResponses),function(response){return _c('div',{key:response.responseID},[_c('div',[_c('a',{staticClass:\"list-group-item list-group-item-action a-flex\",attrs:{\"data-cy\":'select-response-button-'+ response.responseID},on:{\"click\":function($event){return _vm.selectResponse(response)}}},[_vm._v(\" \"+_vm._s(response.title)+\" \")])])])})],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\n import { namespace } from \"vuex-class\";\n import TextHighlight from \"vue-text-highlight\";\n import VuePerfectScrollbar from \"vue-perfect-scrollbar\";\n import { debounce } from \"lodash\";\n import AreaTreeSelect from '@/components/form/AreaTreeSelect.vue';\n\timport { Response } from '@/store/responses/types';\n\timport api from \"@/services/api.service\";\n\n\tconst AlarmPoints = namespace('alarmPoints');\n\n const PAGE_SIZE: number = 100;\n\tconst WAIT_DEBOUNCE_INTERVAL: number = 1000;\n\tconst TIMEOUT_INTERVAL: number = 200;\n\n\t@Component({\n\t\tcomponents: {\n VuePerfectScrollbar: VuePerfectScrollbar,\n \"text-highlight\": TextHighlight,\n \"area-tree-select\": AreaTreeSelect,\n\t\t}\n\t})\n\texport default class AlarmPointSelect extends Vue {\n\t\t$refs!: {\n\t\t\tareaTreeScrollBar: any;\n\t\t\ttoggleBox: HTMLDivElement;\n\t\t\tsearchBox: HTMLInputElement;\n\t\t};\n\n\t\t@AlarmPoints.State(\"responses\") responses: any[];\n\n\t\t@AlarmPoints.Mutation setResponses: (responses: any[]) => void;\n\n\t\t@AlarmPoints.Action responseSearch: ({ groupId, query, isInsights }) => void;\n\n\n @Prop({ type: Boolean, default: false })\n\t\tpublic multiple: boolean;\n\n @Prop()\n\t\t// v-model\n\t\t// when multiple is true, then expected type Response[]\n\t\t// when multiple is false, then expected type Response\n public value: any;\n\n\t\tpublic pageNumber: number = 1;\n\t\tpublic selectedGroup: number = null;\n public searchPageSize: number = PAGE_SIZE;\n\n private isInputFocused: boolean = false;\n\t\tprivate selectedResponses: Response[] = [];\n private searchQuery: string = null;\n private isLoading: boolean = false;\n\t\tprivate isInsights: boolean = true;\n\n private menuStyle: any = {\n top: \"0px\",\n left: \"0px\",\n width: \"auto\"\n }\n\n // noinspection JSUnusedLocalSymbols\n private async mounted(): Promise {\n if (this.value) {\n await this.updateFromValue();\n }\n\n this.setResponses([]);\n\t\t\tthis.selectedGroup = null;\n\t\t\tthis.searchQuery = null;\n }\n\n @Watch(\"value\")\n private async updateFromValue(): Promise {\n if (!this.selectedResponses) {\n this.selectedResponses = [];\n }\n\n if (this.value) {\n if (this.multiple) {\n // Value set, and we are using an array of alarm points\n\n // Remove any from selected responses list that don't appear in the model\n this.selectedResponses = this.selectedResponses.filter(response => !this.value.some(responseId => responseId == response.responseID));\n\n\t\t\t\t\t// Find and add any responses that are in the model but not the selected responses list\n\t\t\t\t\tfor (let selectedResponse of this.value)\n\t\t\t\t\t{\n\t\t\t\t\t\t// if value is updated from ReportBuilder filter, it has 'id' field.\n\t\t\t\t\t\t// and it is possible that the responseID is not\n\t\t\t\t\t\t// defined in the object.\n\t\t\t\t\t\tif(!!selectedResponse.id && !selectedResponse.responseID) {\n\t\t\t\t\t\t\t// value set from ReportBuilder filter may not have the responseID field\n\t\t\t\t\t\t\tselectedResponse.responseID = selectedResponse.id;\n\t\t\t\t\t\t}\n\n if (this.selectedResponses.some(response => response.responseID == selectedResponse.responseID)) {\n continue;\n }\n\n\t\t\t\t\t\tawait this.updateSelectedResponses(selectedResponse.responseID);\n\t\t\t\t\t}\n } else {\n\t\t\t\t\t// if value is updated from ReportBuilder filter, it has 'id' field.\n\t\t\t\t\t// and it is possible that the responseID is not\n\t\t\t\t\t// defined in the object.\n\t\t\t\t\tif(!!this.value.id && !this.value.responseID) {\n\t\t\t\t\t\t// value set from ReportBuilder filter may not have the responseID field\n\t\t\t\t\t\tthis.value.responseID = this.value.id;\n\t\t\t\t\t}\n\n // Already current value - do nothing\n if (this.selectedResponses.some(response => response.responseID == this.value.responseID)) {\n return;\n }\n\t\t\t\t\tthis.selectedResponses = [];\n\t\t\t\t\tawait this.updateSelectedResponses(this.value.responseID);\n }\n\n } else {\n // Value is null, so reset list\n this.selectedResponses = [];\n }\n }\n\n\t\tprivate async updateSelectedResponses(responseId: number): Promise {\n\t\t\tlet response = await api.responseGet(responseId);\n\t\t\tif (response) {\n\t\t\t\t// used in ReportBuilder filter\n\t\t\t\t// add the id field.\n\t\t\t\tresponse.id= response.responseID;\n\t\t\t\tthis.selectedResponses.push(response);\n\t\t\t}\n\t\t}\n\n private selectResponse(response): void {\n if (!response) {\n return;\n }\n\n\t\t\t// get the Report filters to work when\n\t\t\t// user clicks on Run Report.\n\t\t\tresponse.id = response.responseID;\n\n\t\t\tif (!this.multiple && this.selectedResponses.length > 0) {\n this.selectedResponses = [];\n } else {\n if (this.selectedResponses.some(alreadySelected => alreadySelected.responseID === response.responseID)) {\n return;\n }\n }\n\n this.selectedResponses.push(response);\n this.searchQuery = \"\";\n\n if (this.multiple) {\n this.$emit(\"input\", this.selectedResponses);\n } else {\n this.$emit(\"input\", response);\n this.$refs.searchBox.blur();\n }\n\n this.onBlur();\n }\n\n private deselectResponse(response): void {\n const responseIndex = this.selectedResponses.findIndex(alreadySelected => alreadySelected.responseID === response.responseID);\n if (responseIndex > -1) {\n this.selectedResponses.splice(responseIndex, 1);\n }\n\n if (this.multiple) {\n this.$emit(\"input\", this.selectedResponses);\n }\n }\n\n private async displayDropdown(): Promise {\n const left = (this.$refs.toggleBox.offsetParent as HTMLElement).offsetLeft +\n this.$refs.toggleBox.offsetLeft;\n\n const top = this.$refs.toggleBox.getBoundingClientRect().top;\n this.menuStyle.top = top + \"px\";\n this.menuStyle.left = left + \"px\";\n this.menuStyle.width = (this.$refs.toggleBox.offsetWidth + 2) + \"px\";\n\n const maxHeight = document.documentElement.clientHeight - top - 40;\n this.menuStyle.height = Math.min(250, maxHeight) + \"px\";\n\n this.isInputFocused = true;\n }\n\n private onBlur(): void {\n setTimeout(() => {\n this.isInputFocused = false;\n this.searchQuery = \"\";\n } , TIMEOUT_INTERVAL);\n }\n\n private setSearchFocus(): void {\n if (!this.isInputFocused) {\n this.$refs.searchBox.focus();\n }\n }\n\n public get areaResponses(): Response[] {\n\t\t if (!this.filterActive)\n\t\t {\n\t\t\t return this.responses;\n\t\t }\n\n\t\t\treturn this.responses.filter(\n\t\t\t response => response.groupID == this.selectedGroup\n\t\t ).slice(0, this.searchPageSize);\n\t }\n\n private get filterActive(): boolean {\n\t\t return !!this.searchQuery;\n\t }\n\n @Watch(\"selectedGroup\")\n\t public async querySearch(newValue: number, oldValue: number): Promise {\n\t\t try\n\t\t {\n\t\t\t this.isLoading = true;\n\n\t\t\t if(newValue != oldValue){\n\t\t\t\t this.setResponses([]);\n\t\t\t }\n\n\t\t\t await this.responseSearch({\n\t\t\t\t\tgroupId: this.selectedGroup,\n\t\t\t\t\tquery: null,\n\t\t\t\t\tisInsights: this.isInsights\n\t\t\t\t});\n\n\t\t }\n\t\t catch(err)\n\t\t {\n\t\t\t console.error(\"Error Loading Area Alarm Points\", err);\n\t\t\t this.setResponses([]);\n\t\t }\n\t\t finally\n\t\t {\n\t\t\t this.isLoading = false;\n\t\t }\n\t }\n\n @Watch('searchQuery')\n\t public debouncedFilterSearch: (() => Promise) = debounce(async () => {\n\t\t await this.searchForDebounce();\n\t }, WAIT_DEBOUNCE_INTERVAL);\n\n\t private async searchForDebounce(): Promise {\n\t\t try\n\t\t {\n\t\t\t this.isLoading = true;\n\t\t\t await this.responseSearch({ groupId: this.selectedGroup, query: this.searchQuery, isInsights: this.isInsights });\n\t\t }\n\t\t catch(err)\n\t\t {\n\t\t\t console.error(\"Error searching for alarm points\", err);\n\t\t }\n\t\t finally\n\t\t {\n\t\t\t this.isLoading = false;\n\t\t }\n\t }\n\t}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmPointSelect.vue?vue&type=template&id=d8c9d9c2&scoped=true\"\nimport script from \"./AlarmPointSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmPointSelect.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmPointSelect.vue?vue&type=style&index=0&id=d8c9d9c2&prod&scoped=true&lang=scss\"\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 \"d8c9d9c2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-select-3',{staticClass:\"dark flex-grow-1\",attrs:{\"data-cy\":\"server-type-filter\",\"placeholder\":\"Search for a device type\",\"options\":_vm.serverTypes,\"getOptionLabel\":function (serverType) { return serverType.title; },\"filterable\":true,\"append-to-body\":\"\"},on:{\"search\":function($event){return _vm.handleServerTypeSearchInput($event)}},scopedSlots:_vm._u([{key:\"list-header\",fn:function(){return [_c('li',{staticClass:\"pl-3\"},[_vm._v(\" \"+_vm._s(_vm.maxServerTypeMessage)+\" \")])]},proxy:true}]),model:{value:(_vm.selectedServerType),callback:function ($$v) {_vm.selectedServerType=$$v},expression:\"selectedServerType\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(_vm._s(this.noServerTypesFound))])]),(_vm.selectedServerType || _vm.serverTypeEvents.length > 0)?_c('v-select-3',{staticClass:\"dark flex-grow-1\",attrs:{\"data-cy\":\"server-type-event-filter\",\"placeholder\":\"Select an Event Type to filter by\",\"options\":_vm.serverTypeEvents,\"getOptionLabel\":function (serverTypeEvent) { return serverTypeEvent.title; },\"filterable\":true,\"multiple\":\"\",\"append-to-body\":\"\"},on:{\"search\":function($event){return _vm.handleServerTypeEventsSearchInput($event)}},scopedSlots:_vm._u([{key:\"list-header\",fn:function(){return [_c('li',{staticClass:\"pl-3\"},[_vm._v(\" \"+_vm._s(_vm.maxServerTypeEventMessage)+\" \")])]},proxy:true}],null,false,308904088),model:{value:(_vm.selectedServerTypeEvents),callback:function ($$v) {_vm.selectedServerTypeEvents=$$v},expression:\"selectedServerTypeEvents\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\" \"+_vm._s(this.selectedServerType ? this.noServerTypeEventsFound : this.noServerTypeSelectedMessage)+\" \")])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from 'vue-property-decorator';\r\nimport vSelect3 from \"vselect3\";\r\nimport { debounce, unionWith } from 'lodash';\r\nimport axios, { CancelTokenSource } from \"axios\";\r\nimport { ServerTypeFilterOption, ServerTypeEventFilterOption } from '@/store/reports/types';\r\nimport api from '@/services/api.service';\r\nimport isEqual from 'lodash.isequal';\r\nimport { getDebouncePeriod } from '@/utils/debounce-helper';\r\n\r\n@Component({\r\n components: {\r\n \"v-select-3\": vSelect3\r\n }\r\n})\r\nexport default class EventTypeReportFilter extends Vue {\r\n @Prop()\r\n public value: ServerTypeEventFilterOption[];\r\n\r\n private readonly debouncePeriod: number = getDebouncePeriod();\r\n private readonly maxServerTypeResultSize: number = 100;\r\n private readonly maxServerTypeEventsResultSize: number = 100;\r\n private readonly pageNumber: number = 1;\r\n\r\n private readonly noServerTypesFound: string = 'No device types were found';\r\n\tprivate readonly noServerTypeEventsFound: string = 'No event types were found';\r\n private readonly noServerTypeSelectedMessage: string = 'You must select a device type';\r\n private readonly maxServerTypeMessage: string = `Showing a maximum of ${this.maxServerTypeResultSize} device types, if you cannot find the device type you are looking for - try refining your search`;\r\n private readonly maxServerTypeEventMessage: string = `Showing a maximum of ${this.maxServerTypeEventsResultSize} event types, if you cannot find the event type you are looking for - try refining your search`;\r\n\r\n private serverTypeSearchTerm: string = \"\";\r\n private serverTypeEventsSearchTerm: string = \"\";\r\n private serverTypeSearchToken: CancelTokenSource | null = null;\r\n private serverTypeEventsSearchToken: CancelTokenSource | null = null;\r\n private serverTypes: ServerTypeFilterOption[] = [];\r\n private serverTypeEvents: ServerTypeEventFilterOption[] = [];\r\n\r\n private selectedServerType: ServerTypeFilterOption = null;\r\n private selectedServerTypeEvents: ServerTypeEventFilterOption[] = [];\r\n\r\n private mounted(): void {\r\n if (this.value)\r\n {\r\n this.serverTypeEvents = this.value;\r\n this.selectedServerTypeEvents = this.value;\r\n }\r\n\r\n this.performServerTypeSearch(this.serverTypeSearchTerm);\r\n }\r\n\r\n private async handleServerTypeSearchInput(searchTerm: string): Promise {\r\n this.serverTypeSearchTerm = searchTerm;\r\n await this.performServerTypeSearch(searchTerm);\r\n }\r\n\r\n private performServerTypeSearch: (searchTerm: string) => Promise = debounce(\r\n async function (searchTerm: string) {\r\n if (this.serverTypeSearchToken) {\r\n this.serverTypeSearchToken.cancel(\"Cancel search\");\r\n }\r\n\r\n this.serverTypeSearchToken = axios.CancelToken.source();\r\n\r\n try {\r\n this.serverTypes = await api.getServerTypeFilterOptions(\r\n this.pageNumber, this.maxServerTypeResultSize, this.serverTypeSearchTerm);\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn; //Return when past requests are cancelled\r\n\t\t\t}\r\n },\r\n this.debouncePeriod,\r\n { leading: false, trailing: true }\r\n );\r\n\r\n private async handleServerTypeEventsSearchInput(searchTerm: string): Promise {\r\n this.serverTypeEventsSearchTerm = searchTerm\r\n await this.performServerTypeEventsSearch(searchTerm);\r\n }\r\n\r\n private performServerTypeEventsSearch: (searchTerm: string) => Promise = debounce(\r\n async function (searchTerm: string) {\r\n if (this.serverTypeEventsSearchToken) {\r\n this.serverTypeEventsSearchToken.cancel(\"Cancel search\");\r\n }\r\n\r\n this.serverTypeEventsSearchToken = axios.CancelToken.source();\r\n\r\n try {\r\n\t\t\t\tlet options = await api.getServerTypeEventsFilterOptions(\r\n this.pageNumber, \r\n this.maxServerTypeEventsResultSize, \r\n this.serverTypeEventsSearchTerm,\r\n [this.selectedServerType.serverTypeId]);\r\n this.serverTypeEvents = unionWith(options, this.value, isEqual);\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn; //Return when past requests are cancelled\r\n\t\t\t}\r\n },\r\n this.debouncePeriod,\r\n { leading: false, trailing: true }\r\n )\r\n\r\n @Watch(\"selectedServerType\")\r\n public async serverTypeChanged(newValue: ServerTypeFilterOption): Promise {\r\n this.serverTypeEventsSearchTerm = \"\";\r\n this.serverTypeEvents = [];\r\n\r\n if (newValue != null) {\r\n await this.performServerTypeEventsSearch(this.serverTypeEventsSearchTerm);\r\n }\r\n else if (this.value) {\r\n this.serverTypeEvents = this.value;\r\n }\r\n }\r\n\r\n @Watch(\"selectedServerTypeEvents\")\r\n public async serverTypeEventChanged(): Promise {\r\n this.$emit(\"input\", this.selectedServerTypeEvents);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventTypeReportFilter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventTypeReportFilter.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventTypeReportFilter.vue?vue&type=template&id=66d4dfb0\"\nimport script from \"./EventTypeReportFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./EventTypeReportFilter.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { namespace } from \"vuex-class\";\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport vSelect from \"vue-select\";\r\nimport { Datetime } from \"vue-datetime\";\r\nimport EventOutcomeSelector from \"@/components/EventOutcomeSelector.vue\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport AlarmPointSelect from \"@/components/alarm-points/AlarmPointSelect.vue\";\r\nimport EventTypeReportFilter from './EventTypeReportFilter.vue';\r\n\r\nconst Reports = namespace(\"reports\");\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"event-outcome-selector\": EventOutcomeSelector,\r\n\t\tdatetime: Datetime,\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\t\"alarm-point-select\": AlarmPointSelect,\r\n\t\t\"event-type-report-filter\": EventTypeReportFilter\r\n\t}\r\n})\r\nexport default class ReportFilters extends Vue {\r\n\t@Reports.Getter(\"getReport\") report;\r\n\r\n\tprivate readonly eventTypeFilterName: string = \"serverTypeEventNum\";\r\n\r\n\tprivate created(): void {\r\n\t\tthis.TimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\t}\r\n\r\n\t@Prop()\r\n\tpublic value: any;\r\n\r\n\tpublic selectedFilters: any;\r\n\r\n\tpublic mounted (): void {\r\n\t\tif (this.value)\r\n\t\t\tthis.selectedFilters = this.value;\r\n\t}\r\n\r\n\t@Watch(\"value\")\r\n\tprivate valueChanged(value:any ): void {\r\n\t\tthis.selectedFilters = value;\r\n\t}\r\n\r\n\tprivate TimeZone = \"UTC\";\r\n\r\n\tprivate outcomeChanged(value): void {\r\n\t\tif (value) {\r\n\t\t\tthis.value.eventOutcomeId.splice(0, 9, { id: value });\r\n\t\t} else {\r\n\t\t\tthis.value.eventOutcomeId = [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate areaFilterUpdated(area: any): void {\r\n\t\tif (!area || !this.value || this.value[\"groupId\"] === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar areaIndex = this.value[\"groupId\"].map(a => a.id).indexOf(area.id);\r\n\t\tif (areaIndex >= 0) {\r\n\t\t\tthis.value[\"groupId\"].splice(areaIndex, 1);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.value[\"groupId\"].push(area);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportFilters.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportFilters.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ReportFilters.vue?vue&type=template&id=b91797e2\"\nimport script from \"./ReportFilters.vue?vue&type=script&lang=ts\"\nexport * from \"./ReportFilters.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ReportFilters.vue?vue&type=style&index=0&id=b91797e2&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport \"@/scripts/string-operations\";\r\nimport vSelect from \"vue-select\";\r\nimport ReportFilters from \"./ReportFilters.vue\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\n\r\ninterface TimeRangeHours {\r\n\trange: string,\r\n\thours: number\r\n}\r\n\r\nconst Reports = namespace(\"reports\");\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"report-filters\": ReportFilters\r\n\t}\r\n})\r\nexport default class TemplateReportBuilder extends Vue {\r\n\t@Reports.Getter(\"getReport\") report: any;\r\n\t@Reports.Getter(\"getReportApiEndpoint\") reportApiEndpoint: string;\r\n\t@Reports.Action getReportUrl: (request: { templateId: number; selectedFilters: any; }) => Promise;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t// variables\r\n\r\n\tprivate timeRanges: TimeRangeHours[] = [\r\n\t\t{\r\n\t\t\trange: \"4 Hours\",\r\n\t\t\thours: 4\r\n\t\t},\r\n\t\t{\r\n\t\t\trange: \"8 Hours\",\r\n\t\t\thours: 8\r\n\t\t},\r\n\t\t{\r\n\t\t\trange: \"12 Hours\",\r\n\t\t\thours: 12\r\n\t\t},\r\n\t\t{\r\n\t\t\trange: \"1 Day\",\r\n\t\t\thours: 24\r\n\t\t},\r\n\t\t{\r\n\t\t\trange: \"7 Days\",\r\n\t\t\thours: 168\r\n\t\t},\r\n\t\t{\r\n\t\t\trange: \"14 Days\",\r\n\t\t\thours: 336\r\n\t\t},\r\n\t\t{\r\n\t\t\trange: \"30 Days\",\r\n\t\t\thours: 720\r\n\t\t},\r\n\t\t{\r\n\t\t\trange: \"60 Days\",\r\n\t\t\thours: 1440\r\n\t\t},\r\n\t\t{\r\n\t\t\trange: \"90 Days\",\r\n\t\t\thours: 2160\r\n\t\t},\r\n\t\t{\r\n\t\t\trange: \"180 Days\",\r\n\t\t\thours: 4320\r\n\t\t},\r\n\t\t{\r\n\t\t\trange: \"365 Days\",\r\n\t\t\thours: 8760\r\n\t\t},\r\n\t];\r\n\r\n\tprivate selectedTemplate: any = null;\r\n\tprivate timeZone: string = \"UTC\";\r\n\tprivate selectedTimeRange: any = null;\r\n\tprivate settingTimeRange: boolean = false;\r\n\r\n\t// Props\r\n\t@Prop()\r\n\tpublic value: any;\r\n\r\n\t// Private methods\r\n\r\n\tprivate mounted(): void {\r\n\t\tthis.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\t}\r\n\r\n\tprivate async reportUrl(endpoint: string): Promise {\r\n\t\tconst selectedFilters = this.value;\r\n\t\treturn this.reportApiEndpoint.trimEndOf([\"/\"]) + \"/\" +\r\n\t\t\t\"Reports/\" + endpoint +\r\n\t\t\tawait this.getReportUrl({\r\n\t\t\t\ttemplateId: this.template.reportTemplateID,\r\n\t\t\t\tselectedFilters\r\n\t\t\t}) + \"&timeZone=\" + this.timeZone;\r\n\t}\r\n\r\n\tprivate async generateReport(isCSVReport: boolean): Promise {\r\n\t\tif (!this.template)\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst link = document.createElement(\"a\");\r\n\t\tlink.href = link.download = isCSVReport ? await this.reportUrl(\"DownloadReportCSV\") : await this.reportUrl(\"DownloadReportPDF\");\r\n\t\t\r\n\t\tlink.click();\r\n\t}\r\n\r\n\t// Watchers\r\n\r\n\t@Watch(\"selectedTimeRange\")\r\n\tprivate timeRangeUpdated(newRange: TimeRangeHours | null): void {\r\n\t\tif (!newRange || !this.value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.settingTimeRange = true;\r\n\t\t\tlet newStartDate = new Date();\r\n\t\t\tnewStartDate.setHours(newStartDate.getHours() - newRange.hours);\r\n\t\t\tthis.value.endDate = new Date().toISOString();\r\n\t\t\tthis.value.startDate = newStartDate.toISOString();\r\n\t\t}\r\n\t\tcatch(ex)\r\n\t\t{\r\n\t\t\tconsole.error(ex)\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tsetTimeout(() =>{ this.settingTimeRange = false; },100)\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"value.startDate\", { deep:true })\r\n\t@Watch(\"value.endDate\", { deep:true })\r\n\tprivate dateFieldUpdated(newDate: any, oldDate: any): void {\r\n\t\tif (!oldDate || !this.selectedTimeRange || this.settingTimeRange) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (newDate != oldDate) {\r\n\t\t\tthis.selectedTimeRange = null;\r\n\t\t}\r\n\t}\r\n\r\n\t// Getters\r\n\r\n\tprivate get template (): any {\r\n\t\tif (!this.report || !this.report.templates) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (this.report.templates.length == 1) {\r\n\t\t\treturn this.report.templates[0];\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn this.selectedTemplate;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isActivityReportCsvEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Insights\", \"ActivityReportCSV\"]);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplateReportBuilder.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplateReportBuilder.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TemplateReportBuilder.vue?vue&type=template&id=26520a8a\"\nimport script from \"./TemplateReportBuilder.vue?vue&type=script&lang=ts\"\nexport * from \"./TemplateReportBuilder.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.noReportResults)?_c('div',{staticClass:\"chart no-data\",attrs:{\"id\":\"emptyChart\"}},[_vm._v(\" No results found for the given report parameters \")]):_vm._e(),_c('div',{staticClass:\"col-12 h-100 no-mp\"},[(_vm.isPlugin)?_c('h5',{staticClass:\"pl-2\",class:{ 'report-title py-2' : _vm.chartType !== 'Table', 'pt-1' : _vm.chartType == 'Table' },style:(_vm.tileStyle),attrs:{\"data-cy\":\"custom-text\"}},[_vm._v(_vm._s(_vm.customTitle))]):_vm._e(),(!_vm.error && _vm.validGraphData && _vm.selectedRenderType == 1)?_c('GChart',{ref:\"gChart\",staticClass:\"chart\",class:{'overflow-table' : _vm.chartType == 'Table', 'h-100' : _vm.chartType !== 'Table', 'safari-min-height': !_vm.isPlugin },attrs:{\"data\":_vm.getChartData(_vm.chartType == 'Table'),\"events\":_vm.chartEvents,\"settings\":{ packages: ['geochart','corechart', 'table', 'map'] },\"type\":_vm.chartType,\"options\":_vm.chartOptions,\"version\":\"46\",\"id\":\"chart\"},on:{\"ready\":_vm.onChartReady}}):(!_vm.noReportResults && _vm.selectedRenderType == 2)?_c('div',{staticClass:\"h-100\"},[_c('tile-report',{attrs:{\"tile\":_vm.chartObject.tile,\"filters\":_vm.selectedFilters,\"data\":_vm.getReportData}})],1):_c('div')],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"h-100\",attrs:{\"data-cy\":\"tile-report-container\"}},[_c('div',{staticClass:\"h-100\",style:(_vm.tileStyle),attrs:{\"data-cy\":\"tile-report-tile-style\"}},[(!_vm.containsData)?_c('div',{staticClass:\"container-center h-100 w-100\",attrs:{\"data-cy\":\"tile-report-no-data\"}},[_c('b-alert',{attrs:{\"show\":\"\",\"variant\":\"warning\"}},[(!_vm.compatable)?_c('h4',{staticClass:\"text-center w-100\"},[_vm._v(\"Report isn't compatable\")]):_vm._e()])],1):_c('div',{staticClass:\"container-center h-100 w-100\"},[(_vm.containsData)?_c('div',{staticClass:\"content-center font-size\",attrs:{\"data-cy\":\"tile-report-data-found\"}},[_vm._v(_vm._s(_vm.getTileResults[0]))]):_c('div',{staticClass:\"content-center font-w-100\",attrs:{\"data-cy\":\"tile-report-data-not-found\"}},[_vm._v(\"No results found.\")])]),(_vm.compare && _vm.getTileResults)?_c('div',{staticClass:\"bottom-right\"},[_c('div',{staticClass:\"comparison-container\"},[_c('div',{staticClass:\"value percentage\",class:{ 'text-success': _vm.isPositive, 'text-danger': !_vm.isPositive }},[_c('p',[_vm._v(_vm._s(_vm.getTileResults[2]))])]),_c('div',{staticClass:\"value-percentage percentage\",class:{ 'text-success': _vm.isPositive, 'text-danger': !_vm.isPositive },attrs:{\"data-cy\":\"tile-report-percentage-calculation\"}},[_vm._v(_vm._s(_vm.calulatedPercentage)+\"%\")]),_c('div',{staticClass:\"value-arrow\",class:{'bottom-20' : !_vm.isPositive}},[(_vm.isPositive)?_c('i',{staticClass:\"fas fa-sort-up fa-3x text-success fa-shadow\"}):_c('i',{staticClass:\"fas fa-sort-down fa-3x text-danger fa-shadow\"})])])]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport { namespace, Mutation, Getter } from \"vuex-class\";\r\n\r\n@Component({})\r\nexport default class TileReport extends Vue {\r\n @Prop({type: Object, default: null}) tile;\r\n @Prop({type: Object, default: null}) data;\r\n @Prop({type: Object, default: null}) filters;\r\n\r\n\tprivate compare: boolean = false;\r\n\tprivate isPositive: boolean = false;\r\n private calulatedPercentage: number = 0;\r\n private containsData: boolean = false;\r\n private compatable: boolean = true;\r\n\r\n\tpublic get getTileResults() {\r\n this.verifyData();\r\n\r\n // Check for custom filter 'historicalComparisonDirection' to show comparison values.\r\n if(this.filters && this.filters.hasOwnProperty('historicalComparisonDirection')) {\r\n return this.historicalComparisonDirection();\r\n } else {\r\n this.compare = false;\r\n return [this.data.data[0].count];\r\n }\r\n }\r\n\r\n public get tileStyle() {\r\n if (this.tile && this.tile.colour) {\r\n return { \r\n \"background-color\" : this.tile.colour.background,\r\n \"color\" : this.tile.colour.text\r\n };\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n private historicalComparisonDirection() {\r\n const com: number = parseInt(this.filters.historicalComparisonDirection[0].id);\r\n this.isPositive = com == 1 ? true : false;\r\n\r\n // Checks if the historical comparision is positive or negitive, below represents index's for the data.\r\n const positive = this.isPositive ? 0 : 1;\r\n const negitive = this.isPositive ? 1 : 0;\r\n \r\n const calPercentage = this.getPercentageChange(this.data.data[positive].count, this.data.data[negitive].count);\r\n this.calulatedPercentage = Math.round((calPercentage + Number.EPSILON) * 100) / 100\r\n\r\n this.containsData = true;\r\n this.compare = true;\r\n return [this.data.data[0].count,this.data.data[1].count];\r\n }\r\n\r\n\tprivate getPercentageChange(oldNumber, newNumber){\r\n\t\tvar decreaseValue = oldNumber - newNumber;\r\n\t\tif(isFinite((decreaseValue / oldNumber) * 100)) {\r\n\t\t\treturn (decreaseValue / oldNumber) * 100;\r\n\t\t}\r\n\t\treturn 0;\r\n }\r\n \r\n private mounted() {\r\n this.verifyData();\r\n }\r\n\r\n @Watch(\"data\", { deep: true })\r\n private verifyData() {\r\n if (this.data && this.data.data && this.data.data.length > 0) {\r\n this.compatable = this.data.data[0].hasOwnProperty(\"count\") ? true : false;\r\n this.containsData = true;\r\n } else {\r\n this.containsData = false;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TileReport.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TileReport.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TileReport.vue?vue&type=template&id=325036f8&scoped=true\"\nimport script from \"./TileReport.vue?vue&type=script&lang=ts\"\nexport * from \"./TileReport.vue?vue&type=script&lang=ts\"\nimport style0 from \"./TileReport.vue?vue&type=style&index=0&id=325036f8&prod&scoped=true&lang=scss\"\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 \"325036f8\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InsightsGraph.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InsightsGraph.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./InsightsGraph.vue?vue&type=template&id=6a1f2c32&scoped=true\"\nimport script from \"./InsightsGraph.vue?vue&type=script&lang=ts\"\nexport * from \"./InsightsGraph.vue?vue&type=script&lang=ts\"\nimport style0 from \"./InsightsGraph.vue?vue&type=style&index=0&id=6a1f2c32&prod&scoped=true&lang=scss\"\nimport style1 from \"./InsightsGraph.vue?vue&type=style&index=1&id=6a1f2c32&prod&lang=css\"\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 \"6a1f2c32\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport EventOutcomeSelector from \"@/components/EventOutcomeSelector.vue\";\r\nimport vSelect from \"vue-select\";\r\nimport { Datetime } from \"vue-datetime\";\r\nimport moment from \"moment\";\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport TemplateReportBuilder from \"./TemplateReportBuilder.vue\";\r\nimport AlarmPointSelect from \"@/components/alarm-points/AlarmPointSelect.vue\";\r\nimport InsightsGraph from \"./InsightsGraph.vue\"\r\nimport { stringify } from \"qs\";\r\nimport EventTypeReportFilter from './EventTypeReportFilter.vue';\r\n\r\nconst Reports = namespace(\"reports\");\r\nconst { relativeHoursDateFormatted } = formatDateMixin.methods;\r\n\r\n// Utility extensions\r\nimport \"@/scripts/array-operations\";\r\nimport AreaTreeSelect from '../form/AreaTreeSelect.vue';\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\tdatetime: Datetime,\r\n\t\t\"event-outcome-selector\": EventOutcomeSelector,\r\n\t\t\"template-report-builder\": TemplateReportBuilder,\r\n\t\t\"insights-graph\": InsightsGraph,\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\t\"alarm-point-select\": AlarmPointSelect,\r\n\t\t\"event-type-report-filter\": EventTypeReportFilter\r\n\t}\r\n})\r\nexport default class ReportBuilder extends Vue {\r\n\t@Reports.Action downloadReport: any;\r\n\t@Reports.Action fetchReportServiceEndpoint: any;\r\n\t@Reports.Getter(\"getReport\") report;\r\n\t@Reports.Getter(\"getCurrentReportUrl\") currentReportUrl;\r\n\t@Reports.Getter(\"getReportLoadingStatus\") loading;\r\n\t@Reports.Getter(\"getReportErrorStatus\") error;\r\n\t@Reports.Getter(\"getReportApiEndpoint\") reportApiEndpoint;\r\n\t@Reports.Getter(\"getReportTypes\") reportTypes;\r\n\t@Reports.Mutation setRelativeHoursToReport: any;\r\n\t@Reports.Mutation resetState: any;\r\n\t@Reports.Mutation setIsDateRangeRelative: (isRelative: boolean) => void;\r\n\t@Reports.State isDateRangeRelative: boolean;\r\n\t@Reports.State(\"RelativeHoursToReport\") relativeHoursToReport: number;\r\n\r\n\t$refs: {\r\n\t\tchartContainer: any;\r\n\t\tinsights: any;\r\n\t};\r\n\r\n\tprivate readonly eventTypeFilterName: string = \"serverTypeEventNum\";\r\n\tprivate reportPermalink = \"\";\r\n\tprivate showPermalinkCopy = false;\r\n\tprivate filterModal: boolean = false;\r\n\tprivate filterLockStatus = false;\r\n\tpublic chartType = \"ColumnChart\";\r\n\tprivate timeZone = \"UTC\";\r\n\tprivate errorMessage: string = \"\";\r\n\tprivate selectedUrl: string = \"\";\r\n\tprivate relativeHoursOptions = [\r\n\t\t{ label: \"4 Hours\", value: 4 },\r\n\t\t{ label: \"8 Hours\", value: 8 },\r\n\t\t{ label: \"12 Hours\", value: 12 },\r\n\t\t{ label: \"24 Hours\", value: 24 },\r\n\t\t{ label: \"7 Days\", value: 168 },\r\n\t\t{ label: \"14 Days\", value: 336 },\r\n\t\t{ label: \"30 Days\", value: 720 },\r\n\t\t{ label: \"60 Days\", value: 1440 },\r\n\t\t{ label: \"90 Days\", value: 2160 },\r\n\t\t{ label: \"180 Days\", value: 4320 },\r\n\t\t{ label: \"365 Days\", value: 8760 }\r\n\t];\r\n\r\n\t// object to hold report filtering options\r\n\tpublic selectedFilters: any = {\r\n\t\tgroupId: [],\r\n\t\treferenceId: [],\r\n\t\tresponseId: [],\r\n\t\teventTypeId: [],\r\n\t\tuserId: [],\r\n\t\teventOutcomeId: [],\r\n\t\tserverTypeEventNum: [],\r\n\t\texcludeAutoHandled: { id: 1, title: \"Yes\" },\r\n\t\tresultCount: { id: 100, title: \"100\" },\r\n\t\tstartDate: relativeHoursDateFormatted(this.relativeHoursToReport),\r\n\t\tendDate: relativeHoursDateFormatted(0)\r\n\t};\r\n\r\n\t// used to store the filtering options that have been applied to the current report to be passed to the backend when requesting an export of the report data.\r\n\tprivate reportOptionsPayload = {};\r\n\r\n\t// Insights graph chart\r\n\tprivate get chartObject() {\r\n\t\treturn {\r\n\t\t\tchartType: this.chartType,\r\n\t\t\tcanDrilldown: true\r\n\t\t}\r\n\t}\r\n\r\n\t// set a flag as to if we have applied any filters\r\n\tprivate get filterApplied() {\r\n\t\treturn (\r\n\t\t\t(this.selectedFilters.groupId && this.selectedFilters.groupId.length > 0) ||\r\n\t\t\t(this.selectedFilters.referenceId && this.selectedFilters.referenceId.length > 0) ||\r\n\t\t\t(this.selectedFilters.responseId && this.selectedFilters.responseId.length > 0) ||\r\n\t\t\t(this.selectedFilters.eventTypeId && this.selectedFilters.eventTypeId.length > 0) ||\r\n\t\t\t(this.selectedFilters.userId && this.selectedFilters.userId.length > 0) ||\r\n\t\t\t(this.selectedFilters.eventOutcomeId && this.selectedFilters.eventOutcomeId.length > 0) ||\r\n\t\t\t(this.selectedFilters.serverTypeEventNum && this.selectedFilters.serverTypeEventNum.length > 0) ||\r\n\t\t\t(this.selectedFilters.resultCount && this.selectedFilters.resultCount.id != 100) ||\r\n\t\t\t(this.selectedFilters.excludeAutoHandled && this.selectedFilters.excludeAutoHandled.id == 0)\r\n\t\t);\r\n\t}\r\n\r\n\t// return if the current report has any other graph types available\r\n\tprivate get chartOptionsAvailable() {\r\n\t\treturn this.report.metricColumns && this.report.metricColumns.length > 0;\r\n\t}\r\n\r\n\t@Watch(\"report\")\r\n\t// when a report is requested, update the chart type as set on the new report\r\n\tonReportChanged(newReport: any, oldReport: any) {\r\n\t\tthis.chartType = newReport.chartType;\r\n\t}\r\n\r\n\tprivate async created() {\r\n\t\tawait this.fetchReportServiceEndpoint();\r\n\t}\r\n\r\n\tprivate mounted() {\r\n\t\tthis.setRelativeHoursToReport(this.relativeHoursOptions.find(h => h.label === \"7 Days\").value);\r\n\t}\r\n\r\n\tasync destroyed() {\r\n\t\tthis.resetState();\r\n\t}\r\n\r\n\tprivate goToReport(url) {\r\n\t\tif (this.selectedUrl === url) return;\r\n\t\tthis.selectedUrl = url;\r\n\r\n\t\tif (!this.filterLockStatus) {\r\n\t\t this.resetFilters();\r\n\t\t this.$refs.insights.resetFilters();\r\n\t\t}\r\n\r\n\t\tthis.$router.push(`/reports${url}`);\r\n\t\tthis.chartType = this.report.chartType;\r\n\t}\r\n\r\n\tprivate updateChartType(type) {\r\n\t\tthis.chartType = type;\r\n\t}\r\n\r\n\tprivate setSelectedRelativeHours(hours: number): void {\r\n\t\tthis.setRelativeHoursToReport(+hours[\"value\"]);\r\n\t}\r\n\r\n\tprivate async downloadReportCsv() {\r\n\t\tawait this.downloadReport(this.reportOptionsPayload);\r\n\t}\r\n\r\n\tprivate copyReportLink() {\r\n\t\t// @TODO: REFACTOR - REMOVE DOM MANIPULATION\r\n\t\tvar input = document.getElementById(\"link-copy-input\") as HTMLInputElement;\r\n\t\tthis.showPermalinkCopy = true;\r\n\r\n\t\tinput.setAttribute(\"value\", this.reportPermalink);\r\n\t\tinput.select();\r\n\t\tvar result = document.execCommand(\"copy\");\r\n\t}\r\n\r\n\tprivate formatDate(dateStr: string): string {\r\n\t\tdateStr = this.fixDate(dateStr);\r\n\t\tlet date = new Date(dateStr);\r\n\r\n\t\tlet monthNames = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\r\n\r\n\t\tlet day = date.getDate();\r\n\t\tlet monthIndex = date.getMonth();\r\n\t\tlet year = date.getFullYear();\r\n\t\tlet hours = date.getHours();\r\n\t\tlet mins = date.getMinutes();\r\n\r\n\t\treturn day + \" \" + monthNames[monthIndex] + \" \" + year + \" \" + hours + \":\" + (mins < 10 ? \"0\" : \"\") + mins;\r\n\t}\r\n\r\n\tprivate outcomeChanged(eventOutcomeId: number): void {\r\n\t\tif (eventOutcomeId) {\r\n\t\t\tthis.selectedFilters.eventOutcomeId.splice(0, 9, { id: eventOutcomeId });\r\n\t\t} else {\r\n\t\t\tthis.selectedFilters.eventOutcomeId = [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate callReport(): void {\r\n\t\tconst filters = Object.assign({}, this.selectedFilters);\r\n\r\n\t\tfilters.startDate = this.fixDate(this.selectedFilters.startDate);\r\n\t\tfilters.endDate = this.fixDate(this.selectedFilters.endDate);\r\n\t\tthis.setIsDateRangeRelative(false);\r\n\t\tthis.$refs.insights.runV2Report(this.currentReportUrl, true, filters);\r\n\t\tthis.filterModal = false;\r\n\t}\r\n\r\n\tprivate get getErrorMessage() {\r\n\t\treturn this.errorMessage !== \"\" ? this.errorMessage : 'An error has occurred retrieving the requested report, please try again';\r\n\t}\r\n\r\n\tprivate resetFilters() {\r\n\t\tthis.selectedFilters = {\r\n\t\t\tgroupId: [],\r\n\t\t\treferenceId: [],\r\n\t\t\tresponseId: [],\r\n\t\t\teventTypeId: [],\r\n\t\t\tuserId: [],\r\n\t\t\teventOutcomeId: [],\r\n\t\t\tserverTypeEventNum: [],\r\n\t\t\texcludeAutoHandled: { id: 1, title: \"Yes\" },\r\n\t\t\tresultCount: { id: 100, title: \"100\" },\r\n\t\t\tstartDate: relativeHoursDateFormatted(this.relativeHoursToReport),\r\n\t\t\tendDate: relativeHoursDateFormatted(0)\r\n\t\t};\r\n\t}\r\n\r\n\tprivate fixDate(date): string {\r\n\t\tlet currentTz = date.includes(\"+\") ? date.split('+')[1] : date.split('-')[1];\r\n\t\tcurrentTz = Number(currentTz.split(\":\")[0]);\r\n\r\n\t\tif (currentTz <= 14 && currentTz >= -14) {\r\n\t\t\treturn date;\r\n\t\t}\r\n\r\n\t\tconst dateTime = date.split('+')[0];\r\n\t\tlet d = new Date(dateTime);\r\n\t\td.setDate(d.getDate()-1);\r\n\r\n\t\tlet stillUtc = moment.utc(d).toDate();\r\n\t\tlet local = moment(stillUtc).local().format();\r\n\t\treturn local;\r\n\t}\r\n\r\n\r\n\tprivate createReportUrl(reportUrl: string, urlFiltered: any): void {\r\n\t\turlFiltered.startDate = encodeURIComponent(this.fixDate(urlFiltered.startDate));\r\n\t\turlFiltered.endDate = encodeURIComponent(this.fixDate(urlFiltered.endDate));\r\n\r\n\t\tif (this.isDateRangeRelative) {\r\n\t\t\tdelete urlFiltered.startDate;\r\n\t\t\tdelete urlFiltered.endDate;\r\n\t\t}\r\n\r\n\t\t// Create the parameters to append to the reports URL\r\n\t\treportUrl +=\r\n\t\t\t(stringify(urlFiltered, { encode: false }) ? `&${stringify(urlFiltered, { encode: false })}` : \"\") +\r\n\t\t\t`&timeZone=${this.timeZone}`;\r\n\r\n\t\tif (this.isDateRangeRelative) {\r\n\t\t\treportUrl += `&relativeHours=${this.relativeHoursToReport}`;\r\n\t\t}\r\n\r\n\t\t// set the permalink variable so this report url can be copied by the user\r\n\t\tthis.reportPermalink = `${window.location.origin}${window.location.pathname}#/reports${reportUrl}`;\r\n\t}\r\n\r\n\tprivate updatePermaLinkUrl(paramLinkParams: any): void {\r\n\t\tthis.createReportUrl(paramLinkParams.reportUrl, paramLinkParams.urlFiltered);\r\n\t\tthis.selectedUrl = paramLinkParams.reportUrl;\r\n\t}\r\n\r\n\t// report title is used to check permissions so this workaround is needed to change UI title\r\n\tprivate renameReportTitle(title: string): string {\r\n\t\treturn title === 'Alarm Count by Outcome' ? 'Alarm Count by Category' : title;\r\n\t}\r\n\r\n\tprivate areaFilterUpdated(area: any): void {\r\n\t\tif (!area || !this.selectedFilters || this.selectedFilters[\"groupId\"] === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar areaIndex = this.selectedFilters[\"groupId\"].map(a => a.id).indexOf(area.id);\r\n\t\tif (areaIndex >= 0) {\r\n\t\t\tthis.selectedFilters[\"groupId\"].splice(areaIndex, 1);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.selectedFilters[\"groupId\"].push(area);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportBuilder.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReportBuilder.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ReportBuilder.vue?vue&type=template&id=4addd478&scoped=true\"\nimport script from \"./ReportBuilder.vue?vue&type=script&lang=ts\"\nexport * from \"./ReportBuilder.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ReportBuilder.vue?vue&type=style&index=0&id=4addd478&prod&scoped=true&lang=scss\"\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 \"4addd478\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport ReportBuilder from \"../components/reports/ReportBuilder.vue\";\r\nimport { UserPermissions, FeaturesList } from '@/store/types';\r\nimport { Getter } from 'vuex-class';\r\nimport NavHeader from '@/components/NavHeader.vue';\r\nimport { get } from \"lodash\";\r\n\r\n@Component({\r\n components: {\r\n ReportBuilder,\r\n 'nav-header': NavHeader,\r\n }\r\n})\r\nexport default class Reports extends Vue {\r\n @Getter getPermissions: UserPermissions;\r\n @Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n public get insightsEnabled(){\r\n return get(this.featuresList, [\"Insights\"]);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Reports.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Reports.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Reports.vue?vue&type=template&id=a239e1d8\"\nimport script from \"./Reports.vue?vue&type=script&lang=ts\"\nexport * from \"./Reports.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card\"},[_c('nav-header',{attrs:{\"title\":'Activity Log - Management Screen'}}),_c('div',{staticClass:\"card-body d-flex flex-column\"},[(_vm.CanViewActivityLogHistory)?_c('div',{staticClass:\"options-bar\",attrs:{\"align\":\"right\"}},[(_vm.isNonActivityLogEventsEnabled)?_c('div',{staticClass:\"event-type-select-wrapper\"},[_c('div',{staticClass:\"event-type-select-title\"},[_vm._v(\" Event Type \")]),_c('vselect3',{staticClass:\"dark w-100 select-variables event-type-select\",attrs:{\"options\":_vm.searchableEventTypes,\"id\":\"activity-log-select-event-type\",\"label\":\"eventTypeID\",\"multiple\":true,\"maxHeight\":\"150px\",\"placeholder\":\"Event Type\",\"searchable\":false,\"clearable\":true,\"closeOnSelect\":false,\"appendToBody\":\"\"},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(option){return [_c('span',[_vm._v(_vm._s(option.title))])]}},{key:\"option\",fn:function(option){return [_c('span',[_vm._v(_vm._s(option.title))])]}}],null,false,2966837165),model:{value:(_vm.selectedEventTypes),callback:function ($$v) {_vm.selectedEventTypes=$$v},expression:\"selectedEventTypes\"}})],1):_vm._e(),(_vm.showLiveData)?_c('div',{staticClass:\"loader-wrapper\"},[_vm._m(0)]):_vm._e(),_c('span',{staticClass:\"live-data\",class:{ on: _vm.showLiveData, off: !_vm.showLiveData },attrs:{\"title\":\"When live data is on, the activity log is shown in realtime, updating with the latest entries.\"},on:{\"click\":_vm.resetLiveStatus}},[_vm._v(\" Live Data \"),(_vm.showLiveData)?_c('span',[_vm._v(\"On \")]):_vm._e(),(_vm.showLiveData)?_c('i',{staticClass:\"fas fa-toggle-on\"}):_vm._e(),(!_vm.showLiveData)?_c('span',[_vm._v(\"Off \")]):_vm._e(),(!_vm.showLiveData)?_c('i',{staticClass:\"fas fa-toggle-off\"}):_vm._e()]),_c('span',{directives:[{name:\"b-modal\",rawName:\"v-b-modal.modal-1\",modifiers:{\"modal-1\":true}}],staticClass:\"date-filter-label\",attrs:{\"title\":\"Click to edit filters\"},on:{\"click\":function($event){_vm.showLiveData = false}}},[_vm._v(\" \"+_vm._s(_vm.formatDateStr(_vm.FromDateTime, false, false, false, !_vm.ShowAdvancedSearch))+\" - \"+_vm._s(_vm.formatDateStr(_vm.ToDateTime, false, false, false, !_vm.ShowAdvancedSearch))+\" \")])]):_vm._e(),(_vm.CanViewActivityLogManagment)?_c('ActivityLogTable',{attrs:{\"liveData\":_vm.showLiveData,\"from-date\":_vm.FromDateTime,\"to-date\":_vm.ToDateTime,\"trigger-update\":_vm.triggerUpdate,\"selected-event-types\":_vm.selectedEventTypes},on:{\"DateRange\":_vm.onSetDate,\"Updated\":function($event){_vm.triggerUpdate = false},\"LiveStatusChanged\":_vm.updateLiveStatus}}):_vm._e()],1),_c('b-modal',{ref:\"filterModal\",staticClass:\"filter-options-modal\",attrs:{\"id\":\"modal-1\",\"title\":\"Filter Options\",\"hide-footer\":\"\"}},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_vm._v(\" Advanced Search : \"),(_vm.ShowAdvancedSearch)?_c('i',{staticClass:\"fas fa-toggle-on\",on:{\"click\":function($event){_vm.ShowAdvancedSearch = !_vm.ShowAdvancedSearch}}}):_vm._e(),(!_vm.ShowAdvancedSearch)?_c('i',{staticClass:\"fas fa-toggle-off\",on:{\"click\":function($event){_vm.ShowAdvancedSearch = !_vm.ShowAdvancedSearch}}}):_vm._e()])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('label',[_vm._v(\" \"+_vm._s(!_vm.ShowAdvancedSearch ? \"Choose date\" : \"From\")+\" \"),(_vm.ShowAdvancedSearch)?_c('small',[_c('i',[_vm._v(\"(\"+_vm._s(_vm.TimeZone)+\")\")])]):_vm._e()]),_c('datetime',{staticClass:\"flex-grow-1\",attrs:{\"type\":_vm.ShowAdvancedSearch ? 'datetime' : 'date',\"format\":_vm.ShowAdvancedSearch ? 'dd/MM/yyyy HH:mm' : 'dd/MM/yyyy',\"id\":\"FromDateTime\",\"valueZone\":_vm.TimeZone,\"zone\":_vm.TimeZone,\"min-datetine\":_vm.FromDateTime,\"max-datetime\":new Date().toISOString()},model:{value:(_vm.tmpFromDate),callback:function ($$v) {_vm.tmpFromDate=$$v},expression:\"tmpFromDate\"}},[_c('label',{attrs:{\"slot\":\"after\",\"for\":\"FromDateTime\"},slot:\"after\"},[_c('i',{staticClass:\"far fa-calendar-alt date-action-items\"})])])],1),(_vm.ShowAdvancedSearch)?_c('div',{staticClass:\"col\"},[_c('label',[_vm._v(\" To \"),_c('small',[_c('i',[_vm._v(\"(\"+_vm._s(_vm.TimeZone)+\")\")])])]),_c('datetime',{staticClass:\"flex-grow-1\",attrs:{\"type\":_vm.ShowAdvancedSearch ? 'datetime' : 'date',\"format\":_vm.ShowAdvancedSearch ? 'dd/MM/yyyy HH:mm' : 'dd/MM/yyyy',\"id\":\"ToDateTime\",\"valueZone\":_vm.TimeZone,\"zone\":_vm.TimeZone,\"value\":_vm.FromDateTime,\"min-datetine\":_vm.FromDateTime,\"max-datetime\":new Date().toISOString()},model:{value:(_vm.tmpToDate),callback:function ($$v) {_vm.tmpToDate=$$v},expression:\"tmpToDate\"}},[_c('label',{attrs:{\"slot\":\"after\",\"for\":\"ToDateTime\"},slot:\"after\"},[_c('i',{staticClass:\"far fa-calendar-alt date-action-items\"})])])],1):_vm._e()])])]),_c('b-button',{staticClass:\"mt-3 btn btn-primary ksConfirm\",attrs:{\"data-cy\":\"btn-search\",\"block\":\"\"},on:{\"click\":function($event){return _vm.setDateRange()}}},[_vm._v(\"Search\")])],1)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loader\"},[_c('div'),_c('div'),_c('div'),_c('div')])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[(_vm.canRaiseActivityLog)?_c('div',{staticClass:\"add-new-log\",attrs:{\"align\":\"right\"}},[(_vm.reportDownloadAllowed && _vm.reportTemplates.length > 1)?_c('vue-select',{staticClass:\"dark flex-grow-1\",attrs:{\"id\":\"reportTemplateID\",\"label\":\"title\",\"options\":_vm.reportTemplates,\"placeholder\":'Choose Report Template',\"value\":_vm.selectedReportTemplate},on:{\"input\":_vm.setSelectedReportTemplate}}):_vm._e(),(_vm.reportDownloadAllowed && this.reportEndPoint != null)?_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"href\":_vm.downloadActivityLogReportURL,\"disabled\":_vm.selectedReportTemplate == null,\"title\":_vm.selectedReportTemplate == null\n\t\t\t\t\t\t? 'Please choose a template'\n\t\t\t\t\t\t: (\"Click to download \" + (_vm.selectedReportTemplate.title))}},[_c('i',{staticClass:\"fas fa-download\",attrs:{\"title\":\"Download Activity Log\"}}),_vm._v(\" Download \")]):_vm._e(),_vm._v(\" \"),_c('b-button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'l']}),expression:\"{down: ['shift', 'l']}\"}],attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.logNewActivity()},\"shortkey\":function($event){return _vm.logNewActivity()}}},[_c('i',{staticClass:\"fas fa-calendar-plus\",attrs:{\"title\":\"Add New Log Entry\"}}),_vm._v(\" Add New Activity Log \")])],1):_vm._e(),_c('table',{class:[\n\t\t\t\t'table table-hover table-dark',\n\t\t\t\t{\n\t\t\t\t\t'basic-screen': !_vm.showDetailedScreen,\n\t\t\t\t\t'detailed-screen': _vm.showDetailedScreen\n\t\t\t\t}\n\t\t\t],attrs:{\"id\":\"activity-log-table\"}},[_c('thead',[_c('tr',[_c('th',{class:['column-id', { hidden: !_vm.showDetailedScreen }],attrs:{\"scope\":\"col\"}},[_vm._v(\"#\")]),_c('th',{class:['column-date', { hidden: !_vm.showDetailedScreen }],attrs:{\"scope\":\"col\",\"title\":_vm.timeZone + ' Time Zone'}},[_vm._v(\" Logged \")]),_c('th',{staticClass:\"column-time\",attrs:{\"scope\":\"col\",\"title\":_vm.timeZone + ' Time Zone'}},[_vm._v(\"Start\")]),_c('th',{staticClass:\"column-time\",attrs:{\"scope\":\"col\",\"title\":_vm.timeZone + ' Time Zone'}},[_vm._v(\"End\")]),_c('th',{staticClass:\"column-dropdown\",attrs:{\"scope\":\"col\"}},[_vm._v(\"Area\")]),_c('th',{staticClass:\"column-dropdown\",attrs:{\"scope\":\"col\"}},[_vm._v(\"Category\")]),_c('th',{staticClass:\"column-notes\",attrs:{\"scope\":\"col\"}},[_vm._v(\"Notes\")]),(!_vm.editingRecord)?_vm._l((_vm.selectedEventTypes),function(eventType){return _c('th',{key:eventType.eventTypeID,staticClass:\"column-event-type\",attrs:{\"scope\":\"col\"}},[_c('div',[_vm._v(\" \"+_vm._s(eventType.title)+\" \")])])}):_vm._e(),_c('th',{staticClass:\"column-user\",attrs:{\"scope\":\"col\"}},[_vm._v(\"User\")]),(_vm.isActivityLogActionsEnabled && (_vm.canEditOtherActivityLogs || _vm.canEditOwnActivityLog || _vm.canToggleLogVisibility))?_c('th',{staticClass:\"column-actions\",attrs:{\"scope\":\"col\"}},[_vm._v(\" Actions \")]):_vm._e()],2)]),_c('tbody',[_c('tr',{class:[_vm.fontSizeClass, { hidden: !_vm.editingRecord }],attrs:{\"id\":\"edit-row\"}},[(_vm.editingRecord && _vm.showDetailedScreen)?_c('th',{attrs:{\"scope\":\"row\"}},[(_vm.editRowData && _vm.editRowData.activityLogID)?_c('span',[_vm._v(_vm._s(_vm.editRowData.activityLogID))]):_vm._e()]):_vm._e(),(_vm.editingRecord && _vm.showDetailedScreen)?_c('td',[_vm._v(\" \"+_vm._s(_vm.formatDateStr(_vm.editRowData.logged, false, true))+\" \")]):_vm._e(),(_vm.editingRecord)?_c('td',[_c('input',{attrs:{\"type\":\"time\",\"pattern\":\"[0-9]{2}:[0-9]{2}\",\"id\":\"startTime\"},domProps:{\"value\":_vm.getTime('start')},on:{\"blur\":function($event){return _vm.setTime($event, 'start')}}})]):_vm._e(),(_vm.editingRecord)?_c('td',[_c('input',{attrs:{\"type\":\"time\",\"pattern\":\"[0-9]{2}:[0-9]{2}\",\"id\":\"endTime\"},domProps:{\"value\":_vm.getTime('end')},on:{\"blur\":function($event){return _vm.setTime($event, 'end')}}})]):_vm._e(),(_vm.editingRecord)?_c('td',[_c('area-tree-select',{attrs:{\"value\":{ id: _vm.editRowData.areaID ? _vm.editRowData.areaID : 0, label: _vm.editRowData.areaTitle },\"reduce\":function (area) {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\tgroupID: area.id,\n\t\t\t\t\t\t\t\t\ttitle: area.label\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}},on:{\"input\":_vm.setSelectedArea}})],1):_vm._e(),(_vm.editingRecord)?_c('td',[_c('vue-select',{staticClass:\"dark flex-grow-1\",attrs:{\"id\":\"category\",\"label\":\"title\",\"options\":_vm.categoryData,\"placeholder\":'Category',\"value\":_vm.categoryData.find(function (obj) { return obj.eventOutcomeID == _vm.editRowData.categoryID; })},on:{\"input\":_vm.setSelectedCategory}},[_c('div',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Please choose an Area first\")])])],1):_vm._e(),(_vm.editingRecord)?_c('td',[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.editRowData.outcomeNote),expression:\"editRowData.outcomeNote\"},{name:\"shortkey\",rawName:\"v-shortkey.once\",value:({ save2: ['enter'] }),expression:\"{ save2: ['enter'] }\",modifiers:{\"once\":true}}],attrs:{\"id\":\"outcome-note\",\"placeholder\":\"Enter notes here...\"},domProps:{\"value\":(_vm.editRowData.outcomeNote)},on:{\"shortkey\":function($event){return _vm.updateActivityLog(_vm.editRowData.activityLogID)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.editRowData, \"outcomeNote\", $event.target.value)}}})]):_vm._e(),(_vm.editingRecord)?_c('td',[_vm._v(_vm._s(_vm.editRowData.userTitle))]):_vm._e(),(_vm.editingRecord)?_c('td',{staticClass:\"column-actions\"},[_c('i',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({ save: ['shift', 's'] }),expression:\"{ save: ['shift', 's'] }\"}],staticClass:\"fas fa-save\",attrs:{\"title\":\"Save\"},on:{\"click\":function($event){return _vm.updateActivityLog(_vm.editRowData.activityLogID)},\"shortkey\":function($event){return _vm.updateActivityLog(_vm.editRowData.activityLogID)}}}),_vm._v(\" \"),_c('i',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['esc']),expression:\"['esc']\",modifiers:{\"once\":true}}],staticClass:\"fas fa-times\",attrs:{\"title\":\"Cancel\"},on:{\"click\":function($event){return _vm.cancelLogUpdate()},\"shortkey\":function($event){return _vm.cancelLogUpdate()}}})]):_vm._e()]),(!_vm.filteredTableData || _vm.filteredTableData.length == 0)?_c('tr',{attrs:{\"align\":\"center\"}},[_c('td',{staticClass:\"no-results\",attrs:{\"colspan\":\"9\"}},[_vm._v(\"No Activity Logs\")])]):_vm._e(),_vm._l((_vm.filteredTableData),function(record){return _c('tr',{key:record.activityLogID,class:[\n\t\t\t\t\t\t_vm.fontSizeClass,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\thiddenFromUsers: record.hiddenFromUsers,\n\t\t\t\t\t\t\thidden: _vm.currentActivityBeingEdited == record.activityLogID\n\t\t\t\t\t\t}\n\t\t\t\t\t],attrs:{\"align\":\"center\",\"id\":'table-row-' + record.activityLogID}},[(_vm.showDetailedScreen)?_c('th',{staticClass:\"column-id\",attrs:{\"scope\":\"row\"}},[_c('a',{attrs:{\"href\":_vm.eventUrl + record.activityLogID,\"target\":\"_blank\",\"title\":\"View Details\"}},[_vm._v(\" \"+_vm._s(record.activityLogID)+\" \")])]):_vm._e(),(_vm.showDetailedScreen)?_c('td',{staticClass:\"column-date\",attrs:{\"title\":_vm.timeZone + ' Time Zone'}},[_vm._v(\" \"+_vm._s(_vm.formatDateStr(record.logged, false, true))+\" \")]):_vm._e(),_c('td',{staticClass:\"column-time\",attrs:{\"title\":_vm.timeZone + ' Time Zone'}},[_vm._v(\" \"+_vm._s(_vm.formatDateStr(record.start, true, true))+\" \")]),_c('td',{staticClass:\"column-time\",attrs:{\"title\":_vm.timeZone + ' Time Zone'}},[_vm._v(\" \"+_vm._s(_vm.formatDateStr(record.end, true, true))+\" \")]),_c('td',{staticClass:\"column-dropdown\"},[_vm._v(_vm._s(record.areaTitle))]),_c('td',{staticClass:\"column-dropdown\"},[_vm._v(_vm._s(record.categoryTitle))]),_c('td',{staticClass:\"column-notes\"},[_c('div',{class:{collapse: _vm.truncateLogs},attrs:{\"id\":'table-row-' + record.activityLogID + '-notes'}},[_vm._v(\" \"+_vm._s(record.outcomeNote)+\" \")]),(record.outcomeNote && record.outcomeNote.length > _vm.stringTruncateLength)?_c('b-btn',{staticClass:\"read-more\",attrs:{\"tag\":\"a\",\"variant\":\"link\",\"size\":\"sm\"},on:{\"click\":function($event){return _vm.toggleNotes('table-row-' + record.activityLogID + '-notes')}}},[_vm._v(\" Read More \")]):_vm._e()],1),(!_vm.editingRecord)?_vm._l((_vm.selectedEventTypes),function(eventType){return _c('td',{key:eventType.eventTypeID,staticClass:\"column-event-type\"},[_c('div',{staticStyle:{\"text-align\":\"left\"}},[(record.eventTypeID === eventType.eventTypeID)?_c('i',{staticClass:\"fas fa-check align-items-center text-success\"}):_c('i',{staticClass:\"fas fa-times align-content-center text-danger\"})])])}):_vm._e(),_c('td',{staticClass:\"column-user\"},[_vm._v(_vm._s(record.userTitle))]),(_vm.isActivityLogActionsEnabled && (_vm.canEditOtherActivityLogs || _vm.canEditOwnActivityLog || _vm.canToggleLogVisibility))?_c('td',{staticClass:\"column-actions\"},[(\n\t\t\t\t\t\t\t\t(_vm.canEditOwnActivityLog && record.viewedUserID == _vm.getUserId) ||\n\t\t\t\t\t\t\t\t\t_vm.canEditOtherActivityLogs\n\t\t\t\t\t\t\t)?_c('i',{staticClass:\"fas fa-edit\",attrs:{\"title\":\"Edit Activity Log\"},on:{\"click\":function($event){return _vm.showActivityLogEditor(record.activityLogID)}}}):_vm._e(),_vm._v(\" \"),(_vm.canToggleLogVisibility && !record.hiddenFromUsers)?_c('i',{staticClass:\"far fa-eye-slash\",attrs:{\"title\":\"Hide this activity log\"},on:{\"click\":function($event){return _vm.toggleHideFromUserStatus(record.activityLogID, true)}}}):_vm._e(),(_vm.canToggleLogVisibility && record.hiddenFromUsers)?_c('i',{staticClass:\"fas fa-eye-slash\",attrs:{\"title\":\"Unhide this activity log\"},on:{\"click\":function($event){return _vm.toggleHideFromUserStatus(record.activityLogID, false)}}}):_vm._e()]):_vm._e()],2)})],2),_c('tfoot',[_c('tr',[_c('td',{staticClass:\"display-options\",attrs:{\"colspan\":\"9\"}},[(!_vm.showDetailedScreen)?_c('span',{attrs:{\"title\":\"Click to show more columns\"},on:{\"click\":function($event){_vm.showDetailedScreen = true}}},[_vm._v(\" Show Detailed Screen \")]):_vm._e(),(_vm.showDetailedScreen)?_c('span',{attrs:{\"title\":\"Click to show less columns\"},on:{\"click\":function($event){_vm.showDetailedScreen = false}}},[_vm._v(\" Show Default Screen \")]):_vm._e(),_vm._v(\" | Font Size : \"),_c('span',{class:[\n\t\t\t\t\t\t\t\t'font-small',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'selected-font': _vm.fontSizeClass == 'font-small'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],attrs:{\"title\":\"Smaller\"},on:{\"click\":function($event){_vm.fontSizeClass = 'font-small'}}},[_vm._v(\" A \")]),_vm._v(\" \"),_c('span',{class:[\n\t\t\t\t\t\t\t\t'font-normal',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'selected-font': _vm.fontSizeClass == 'font-normal'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],attrs:{\"title\":\"Normal\"},on:{\"click\":function($event){_vm.fontSizeClass = 'font-normal'}}},[_vm._v(\" A \")]),_vm._v(\" \"),_c('span',{class:[\n\t\t\t\t\t\t\t\t'font-large',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'selected-font': _vm.fontSizeClass == 'font-large'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],attrs:{\"title\":\"Larger\"},on:{\"click\":function($event){_vm.fontSizeClass = 'font-large'}}},[_vm._v(\" A \")]),_vm._v(\" \"),_c('span',{class:[\n\t\t\t\t\t\t\t\t'font-extra-large',\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t'selected-font': _vm.fontSizeClass == 'font-extra-large'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],attrs:{\"title\":\"Extra Large\"},on:{\"click\":function($event){_vm.fontSizeClass = 'font-extra-large'}}},[_vm._v(\" A \")])])]),(!_vm.liveData)?_c('tr',[_c('td',{attrs:{\"colspan\":_vm.canEditOtherActivityLogs || _vm.canEditOwnActivityLog || _vm.canToggleLogVisibility ? 9 : 8}},[_c('div',{staticClass:\"pagination\"},[(_vm.pageNumber - 1 > 0)?_c('button',{staticClass:\"btn btn-primary\",attrs:{\"title\":\"Load the previous page of results\"},on:{\"click\":function($event){return _vm.paginate(_vm.pageNumber - 1)}}},[_vm._v(\" Prev \")]):_vm._e(),_vm._v(\" Page \"+_vm._s(_vm.pageNumber)+\" of \"+_vm._s(_vm.totalPages)+\" \"),(_vm.pageNumber + 1 <= _vm.totalPages)?_c('button',{staticClass:\"btn btn-primary\",attrs:{\"title\":\"Load the next page of results\"},on:{\"click\":function($event){return _vm.paginate(_vm.pageNumber + 1)}}},[_vm._v(\" Next \")]):_vm._e()])])]):_vm._e()])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport { namespace, Action, Getter } from \"vuex-class\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport vSelect from \"vue-select\";\r\nimport { Datetime } from \"vue-datetime\";\r\nimport { ActivityLogDTO } from \"../../store/activity-log/types\";\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\n\r\nconst ActivityLog = namespace(\"activityLog\");\r\nimport { get, keyBy } from \"lodash\";\r\nimport AreaTreeSelect from '../form/AreaTreeSelect.vue';\r\n\r\nVue.mixin(formatDateMixin);\r\n\r\nconst { formatDateStr } = formatDateMixin.methods;\r\nconst Reports = namespace(\"reports\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\tDatetime,\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar,\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t}\r\n})\r\nexport default class ActivityLogTable extends Vue {\r\n\t@Action fetchUserGroups: any;\r\n\t@ActivityLog.Action getActivityLog: any;\r\n\t@ActivityLog.Action getActivityLogEntry: any;\r\n\t@ActivityLog.Action getActivityLogOutcomes: any;\r\n\t@ActivityLog.Action addActivityLog: any;\r\n\t@ActivityLog.Action editActivityLog: any;\r\n\t@ActivityLog.Action hideActivityLog: any;\r\n\t@ActivityLog.Action unHideActivityLog: any;\r\n\t@Reports.Action fetchReportServiceEndpoint: any;\r\n\t@Reports.Action getAvailableReportTemplatesForArea: any;\r\n\r\n\t@Getter(\"getUserGroups\") userGroups: any;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter getPermissions: any;\r\n\t@Getter getUserId: number;\r\n\t@Getter getUserGroupId: number;\r\n\r\n\t@Prop({default: true}) liveData: boolean;\r\n\t@Prop({default: null}) fromDate: null | Date;\r\n\t@Prop({default: null}) toDate: null | Date;\r\n\t@Prop({default: false}) triggerUpdate: boolean;\r\n\t@Prop({default: []}) selectedEventTypes: any[];\r\n\r\n\t@Watch(\"triggerUpdate\")\r\n\tprivate onTriggerUpdateChanged(): void {\r\n\t\tif (this.triggerUpdate == true) {\r\n\t\t\tthis.fromDateValue = this.fromDate;\r\n\t\t\tthis.toDateValue = this.toDate;\r\n\t\t\tthis.getActivityLogList();\r\n\t\t\tthis.$emit(\"Updated\", true);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"liveData\")\r\n\tprivate onLiveDataChanged(): void {\r\n\t\tif (this.liveData == true) {\r\n\t\t\tthis.fromDateValue = null;\r\n\t\t\tthis.toDateValue = null;\r\n\t\t\tthis.pageNumber = 1;\r\n\t\t\tthis.getActivityLogListLive();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate fromDateValue: Date = null;\r\n\r\n\tprivate toDateValue: Date = null;\r\n\r\n\t// if we truncate the outcome note or not\r\n\tprivate truncateLogs: boolean = true;\r\n\r\n\t// number of characters to truncate after\r\n\tprivate stringTruncateLength = 130;\r\n\r\n\tprivate loading: boolean = false;\r\n\r\n\t// time period to check for new activity logs\r\n\tprivate updateInterval: number = 1500;\r\n\r\n\t// variable to hold SetTimeout object\r\n\tprivate timeOut: any = null;\r\n\r\n\t// variable to hold the list of activity logs\r\n\tprivate tableData: ActivityLogDTO[] = [];\r\n\r\n\t// list of the available categories (event outcomes)\r\n\tprivate categoryData: any[] = [];\r\n\r\n\t// object used to hold data while adding or editing an activity log\r\n\tprivate editRowData: ActivityLogDTO = {\r\n\t\tactivityLogID: 0,\r\n\t\teventTypeID: null,\r\n\t\tlogged: new Date(),\r\n\t\tstart: new Date(),\r\n\t\tend: null,\r\n\t\tcategoryID: null,\r\n\t\tcategoryTitle: null,\r\n\t\tareaID: null,\r\n\t\tareaTitle: null,\r\n\t\tviewedUserID: null,\r\n\t\toutcomeNote: null,\r\n\t\tuserTitle: null,\r\n\t\thiddenFromUsers: false\r\n\t};\r\n\r\n\t// status of editing or adding a record, used to display the edit interface\r\n\tprivate editingRecord: boolean = false;\r\n\r\n\t// variable to hold the id of the record being edited\r\n\tprivate currentActivityBeingEdited: number = 0;\r\n\r\n\t// variable to hold the HTML element for the editor row\r\n\tprivate editorRow: HTMLElement;\r\n\r\n\t// variable to hold users timezone\r\n\tprivate timeZone: string = null;\r\n\r\n\tprivate canRaiseActivityLog = false;\r\n\tprivate canToggleLogVisibility = false;\r\n\tprivate canEditOwnActivityLog = false;\r\n\tprivate canEditOtherActivityLogs = false;\r\n\r\n\tprivate pageNumber: number = 1;\r\n\tprivate totalPages: number = 1;\r\n\r\n\t// default css class to set the font size on the activity log table\r\n\tprivate fontSizeClass: string = \"font-large\";\r\n\r\n\t// flag used to determine if we are hiding or showing all data columns in the table\r\n\tprivate showDetailedScreen: boolean = false;\r\n\r\n\t// variable used to hold the API endpoint for the reports server\r\n\tprivate reportEndPoint: string = null;\r\n\r\n\t// bool used for allowing downloads of report\r\n\tprivate get reportDownloadAllowed(): boolean {\r\n\t\treturn this.getPermissions.canViewActivityLogManagement && this.getPermissions.canViewReports;\r\n\t}\r\n\r\n\t// variable to hold the list of available templates for downloading a report\r\n\tprivate reportTemplates: any[] = [];\r\n\r\n\t// variable to hold the selected template object\r\n\tprivate selectedReportTemplate: any = null;\r\n\r\n\tprivate async created(): Promise {\r\n\t\tawait this.run();\r\n\t}\r\n\r\n\tprivate get isActivityLogActionsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"ActivityLog\", \"ActivityLogActions\"]);\r\n\t}\r\n\r\n\tprivate get eventUrl() {\r\n\t\treturn window.location.pathname + \"#/eventsearch/\";\r\n\t}\r\n\r\n\t// starts off the live activity log\r\n\tprivate async run(): Promise {\r\n\t\t// set up permissions\r\n\t\tthis.canRaiseActivityLog = this.getPermissions.canRaiseActivityLog;\r\n\t\tthis.canToggleLogVisibility = this.getPermissions.canToggleLogVisibility;\r\n\t\tthis.canEditOwnActivityLog = this.getPermissions.canEditOwnActivityLog;\r\n\t\tthis.canEditOtherActivityLogs = this.getPermissions.canEditOtherActivityLogs;\r\n\r\n\t\t// set up report download options (if allowed)\r\n\t\tif (this.reportDownloadAllowed) {\r\n\t\t\tlet endpoint = await this.fetchReportServiceEndpoint();\r\n\r\n\t\t\tif (endpoint && endpoint.data) {\r\n\t\t\t\tthis.reportEndPoint = endpoint.data;\r\n\r\n\t\t\t\tlet templates = await this.getAvailableReportTemplatesForArea(this.getUserGroupId);\r\n\r\n\t\t\t\t// default the selected report if there is only 1 available\r\n\t\t\t\tif (templates.data.length == 1) {\r\n\t\t\t\t\tthis.selectedReportTemplate = templates.data[0];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// store the return templates\r\n\t\t\t\tthis.reportTemplates = templates.data;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// set timezone based on user browser\r\n\t\tthis.timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n\t\t// grab the HTML element for the editor row\r\n\t\tthis.editorRow = document.getElementById(\"edit-row\");\r\n\r\n\t\t// get the activity log and start the timeout to refresh the data\r\n\t\tthis.getActivityLogListLive();\r\n\t}\r\n\r\n\tprivate setLoadingStatus(status: boolean): void {\r\n\t\tthis.loading = status;\r\n\t}\r\n\r\n\tprivate async getActivityLogList(): Promise {\r\n\t\tif(this.loading)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.setLoadingStatus(true);\r\n\r\n\t\t\tlet queryStr = `?page=${this.pageNumber}`;\r\n\r\n\t\t\t// add date filters if we are using the date search and not live data\r\n\t\t\tif (!this.liveData && this.fromDateValue && this.toDateValue) {\r\n\t\t\t\tlet fromDateValueUTCString = new Date(new Date(this.fromDateValue).toUTCString()).toISOString();\r\n\t\t\t\tlet toDateValueUTCString = new Date(new Date(this.toDateValue).toUTCString()).toISOString();\r\n\r\n\t\t\t\tqueryStr += `&fromDate=${fromDateValueUTCString}&toDate=${toDateValueUTCString}`;\r\n\t\t\t}\r\n\r\n\t\t\tif(this.selectedEventTypes.length > 0) {\r\n\t\t\t\tthis.selectedEventTypes.forEach((et) => queryStr += `&eventTypeIds=${et.eventTypeID}`);\r\n\t\t\t}\r\n\r\n\t\t\t// request the data\r\n\t\t\tlet result = await this.getActivityLog(queryStr);\r\n\r\n\t\t\t// results and paging data returned from API\r\n\t\t\tthis.tableData = result.data.activityLogs as ActivityLogDTO[];\r\n\t\t\tthis.totalPages = result.data.totalPages;\r\n\t\t\tthis.pageNumber = result.data.currentPage;\r\n\r\n\t\t\t// create a list of the dates from the Log, used to display the date range we are displaying\r\n\t\t\tlet dates = this.tableData.map(function(item) {\r\n\t\t\t\treturn new Date(item.logged);\r\n\t\t\t});\r\n\r\n\t\t\t// get the min and max date for the data we have (displayed in the UI)\r\n\t\t\tif (dates && dates.length > 0) {\r\n\t\t\t\tlet minDate = Math.min.apply(null, dates);\r\n\t\t\t\tlet maxDate = Math.max.apply(null, dates);\r\n\r\n\t\t\t\t// send the data to the parent component (ActivityLogManagment)\r\n\t\t\t\tthis.$emit(\"DateRange\", {\r\n\t\t\t\t\tminDate: new Date(minDate) + \"Z\",\r\n\t\t\t\t\tmaxDate: new Date(maxDate) + \"Z\"\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(ex)\r\n\t\t{\r\n\t\t\tconsole.error(ex);\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tthis.setLoadingStatus(false);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getActivityLogListLive(): Promise\r\n\t{\r\n\t\tif (this.$route && this.$route.name == \"activity-log\") {\r\n\t\t\t// clear any current timeouts that are running\r\n\t\t\tif (this.timeOut != null) {\r\n\t\t\t\tclearTimeout(this.timeOut);\r\n\t\t\t}\r\n\r\n\t\t\t// only refresh the data if we not adding or editing a row, or not set to view live data\r\n\t\t\tif (!this.editingRecord && this.liveData) {\r\n\t\t\t\tawait this.getActivityLogList();\r\n\r\n\t\t\t\t// create the timeout to refresh the data\r\n\t\t\t\tthis.timeOut = setTimeout(() => {\r\n\t\t\t\t\tthis.getActivityLogListLive();\r\n\t\t\t\t}, this.updateInterval);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// resets our edit object to default values ready to be reused\r\n\tprivate resetEditRowObject(): void {\r\n\t\tthis.editRowData.activityLogID = 0;\r\n\t\tthis.editRowData.eventTypeID = null;\r\n\t\tthis.editRowData.logged = new Date().toISOString();\r\n\t\tthis.editRowData.start = new Date().toISOString();\r\n\t\tthis.editRowData.end = null;\r\n\t\tthis.editRowData.categoryID = null;\r\n\t\tthis.editRowData.categoryTitle = null;\r\n\t\tthis.editRowData.areaID = null;\r\n\t\tthis.editRowData.areaTitle = null;\r\n\t\tthis.editRowData.viewedUserID = null;\r\n\t\tthis.editRowData.outcomeNote = null;\r\n\t\tthis.editRowData.hiddenFromUsers = false;\r\n\r\n\t\t// reset category data as this is based on the selected area\r\n\t\tthis.categoryData = [];\r\n\t}\r\n\r\n\t// takes the data from the matching log Id and makes it editable\r\n\tprivate async showActivityLogEditor(logID: number): Promise {\r\n\t\tthis.resetEditRowObject();\r\n\r\n\t\tthis.currentActivityBeingEdited = logID;\r\n\r\n\t\t// get the HTML element of the row we want to edit\r\n\t\tlet targetRow = document.getElementById(\"table-row-\" + logID);\r\n\r\n\t\t// request a copy of the log from the API so were sure we have the latest version\r\n\t\tlet record = this.getActivityLogEntry(logID).then(result => {\r\n\t\t\tthis.editRowData = result.data;\r\n\r\n\t\t\tthis.setCategoryOptions(this.editRowData.areaID);\r\n\r\n\t\t\tthis.editRowData.start = this.checkDateStringContainsZ(this.editRowData.start);\r\n\t\t\tthis.editRowData.end = this.checkDateStringContainsZ(this.editRowData.end);\r\n\r\n\t\t\t// display the edit row interface after the selected row in the DOM\r\n\t\t\t// the selected row will be hidden\r\n\t\t\ttargetRow.after(this.editorRow);\r\n\r\n\t\t\tthis.editingRecord = true;\r\n\t\t});\r\n\t}\r\n\r\n\t// copy the updated data from our edit interface\r\n\tprivate async updateActivityLog(rowId: number): Promise {\r\n\t\tlet newobj: ActivityLogDTO = {\r\n\t\t\tactivityLogID: this.editRowData.activityLogID,\r\n\t\t\tstart: this.editRowData.start,\r\n\t\t\tend: this.editRowData.end,\r\n\t\t\tcategoryID: this.editRowData.categoryID,\r\n\t\t\tareaID: this.editRowData.areaID,\r\n\t\t\toutcomeNote: this.editRowData.outcomeNote,\r\n\t\t\teventTypeID: 11,\r\n\t\t\tlogged: new Date(),\r\n\t\t\thiddenFromUsers: false,\r\n\t\t\tcategoryTitle: this.editRowData.categoryTitle,\r\n\t\t\tareaTitle: this.editRowData.areaTitle,\r\n\t\t\tviewedUserID: 0,\r\n\t\t\tuserTitle: this.editRowData.userTitle\r\n\t\t};\r\n\r\n\t\t// hack to prevent issues with Axios not liking empty properties and messing update\r\n\t\tObject.keys(newobj).forEach(function(key, index) {\r\n\t\t\tif (newobj[key] == null) {\r\n\t\t\t\tdelete newobj[key];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (!newobj.areaID) {\r\n\t\t\talert(\"Please select an area for this activity log entry\");\r\n\t\t} else if (!newobj.outcomeNote || newobj.outcomeNote == \"\") {\r\n\t\t\talert(\"Please enter a note for this Activity Log entry\");\r\n\t\t} else {\r\n\t\t\tif (rowId == 0) {\r\n\t\t\t\tawait this.addActivityLog(newobj);\r\n\t\t\t} else {\r\n\t\t\t\tawait this.editActivityLog(newobj);\r\n\t\t\t}\r\n\r\n\t\t\tthis.editingRecord = false;\r\n\r\n\t\t\tthis.currentActivityBeingEdited = 0;\r\n\r\n\t\t\tthis.resetEditRowObject();\r\n\r\n\t\t\t// refresh list after updating\r\n\t\t\tawait this.getActivityLogList();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate cancelLogUpdate(): void {\r\n\t\tthis.currentActivityBeingEdited = 0;\r\n\t\tthis.editingRecord = false;\r\n\t\tthis.resetEditRowObject();\r\n\t\tthis.getActivityLogListLive();\r\n\t}\r\n\r\n\tprivate logNewActivity(): void {\r\n\t\tthis.resetEditRowObject();\r\n\r\n\t\t// find the HTML element for the table\r\n\t\tlet table = document.getElementById(\"activity-log-table\");\r\n\t\tthis.editingRecord = true;\r\n\t\tthis.currentActivityBeingEdited = 0;\r\n\r\n\t\t// show the editor row at the top of the table\r\n\t\ttable.prepend(this.editorRow);\r\n\r\n\t\t// automatically focus on the outcome note column\r\n\t\tthis.$nextTick(() => {\r\n\t\t\tdocument.getElementById(\"outcome-note\").focus();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async toggleHideFromUserStatus(id: number, status: boolean): Promise {\r\n\t\t// make API to show or hide the activity log\r\n\t\tstatus ? await this.hideActivityLog(id) : await this.unHideActivityLog(id);\r\n\r\n\t\t// refresh data\r\n\t\tawait this.getActivityLogList();\r\n\t}\r\n\r\n\tprivate setSelectedArea(area: any): void {\r\n\t\tthis.editRowData.categoryID = null;\r\n\t\tthis.editRowData.categoryTitle = null;\r\n\r\n\t\tif (!area) {\r\n\t\t\tthis.editRowData.areaID = null;\r\n\t\t\tthis.editRowData.areaTitle = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.editRowData.areaID = area.groupID;\r\n\t\tthis.editRowData.areaTitle = area.title;\r\n\r\n\t\tthis.setCategoryOptions(area.groupID);\r\n\t}\r\n\r\n\tprivate setSelectedCategory(category: any): void {\r\n\t\tif (!category) {\r\n\t\t\tthis.editRowData.categoryID = null;\r\n\t\t\tthis.editRowData.categoryTitle = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.editRowData.categoryID = category.eventOutcomeID;\r\n\t\tthis.editRowData.categoryTitle = category.title;\r\n\t}\r\n\r\n\tprivate setSelectedReportTemplate(template: any): void {\r\n\t\tthis.selectedReportTemplate = template;\r\n\t}\r\n\r\n\t// get the time value from date time object for the editor\r\n\tprivate getTime(field: any): string {\r\n\t\tlet dateTime = this.editRowData[field];\r\n\r\n\t\tlet time = formatDateStr(dateTime, true, true, false);\r\n\r\n\t\treturn time;\r\n\t}\r\n\r\n\t// create a date object from the time in the editor\r\n\tprivate setTime(event: any, field:any): void {\r\n\t\tlet time = event.target.value;\r\n\t\tlet value = null;\r\n\t\tif (time) {\r\n\t\t\tlet dateTime = new Date();\r\n\r\n\t\t\tlet hoursMins = time.split(\":\");\r\n\r\n\t\t\tdateTime.setHours(hoursMins[0]);\r\n\t\t\tdateTime.setMinutes(hoursMins[1]);\r\n\r\n\t\t\tvalue = dateTime.toISOString();\r\n\t\t}\r\n\r\n\t\tthis.editRowData[field] = value;\r\n\t}\r\n\r\n\tprivate async setCategoryOptions(areaId: number): Promise {\r\n\t\tif (areaId) {\r\n\t\t\tthis.categoryData = [];\r\n\r\n\t\t\t// get category options for Area from API\r\n\t\t\tawait this.getActivityLogOutcomes(areaId).then(result => {\r\n\t\t\t\tthis.categoryData = result.data;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// check that our time string contains Z for UTC\r\n\tprivate checkDateStringContainsZ(date: string | Date): string | Date {\r\n\t\tif (date && !date.toString().includes(\"Z\")) {\r\n\t\t\treturn date.toString() + \"Z\";\r\n\t\t}\r\n\r\n\t\treturn date;\r\n\t}\r\n\r\n\t// set the page number and request records for that page\r\n\tprivate async paginate(pageNumber: number): Promise {\r\n\t\tthis.editingRecord = false;\r\n\t\tthis.$emit(\"LiveStatusChanged\", false);\r\n\t\tthis.pageNumber = pageNumber;\r\n\t\tawait this.getActivityLogList();\r\n\t}\r\n\r\n\t// set the starting date range to use when downloading a report\r\n\tprivate get reportDownloadStartDate(): Date | string {\r\n\t\tif (!this.liveData) {\r\n\t\t\treturn this.fromDate;\r\n\t\t}\r\n\r\n\t\tlet start = new Date();\r\n\t\tstart.setHours(0, 0, 0, 0);\r\n\r\n\t\treturn start.toUTCString();\r\n\t}\r\n\r\n\t// set the ending date range to use when downloading a report\r\n\tprivate get reportDownloadFromDate(): Date | string {\r\n\t\tif (!this.liveData) {\r\n\t\t\treturn this.toDate;\r\n\t\t}\r\n\r\n\t\tlet end = new Date();\r\n\t\tend.setHours(23, 59, 59, 999);\r\n\r\n\t\treturn end.toUTCString();\r\n\t}\r\n\r\n\t// generate url to request the report PDF\r\n\tprivate get downloadActivityLogReportURL(): string {\r\n\t\tif (this.selectedReportTemplate != null) {\r\n\t\t\treturn `${this.reportEndPoint}/Reports/DownloadReportPDF/ShiftReport/${this.selectedReportTemplate.reportTemplateID}?shifts=1&startDate=${this.reportDownloadStartDate}&endDate=${this.reportDownloadFromDate}&timeZone=${this.timeZone}&fileName=ActivityLog-${this.reportDownloadFilename}`;\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t// generate filename to used for the report download\r\n\tprivate get reportDownloadFilename(): string {\r\n\t\treturn this.liveData ? new Date().toISOString().split(\"T\")[0] : this.fromDate.toString().split(\"T\")[0];\r\n\t}\r\n\r\n\tprivate get formattedSelectedEventTypesById(): any {\r\n\t\treturn keyBy(this.selectedEventTypes, 'eventTypeID')\r\n\t}\r\n\r\n\tprivate get filteredTableData(): ActivityLogDTO[] {\r\n\t\treturn !this.selectedEventTypes.length\r\n\t\t\t? this.tableData\r\n\t\t\t: this.tableData.filter(({ eventTypeID }) => this.formattedSelectedEventTypesById[eventTypeID])\r\n\t}\r\n\r\n\tprivate toggleNotes(id:string): void{\r\n\t\tdocument.getElementById(id).classList.toggle('show');\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityLogTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityLogTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ActivityLogTable.vue?vue&type=template&id=3259daf6&scoped=true\"\nimport script from \"./ActivityLogTable.vue?vue&type=script&lang=ts\"\nexport * from \"./ActivityLogTable.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ActivityLogTable.vue?vue&type=style&index=0&id=3259daf6&prod&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 \"3259daf6\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { UserPermissions, FeaturesList } from \"@/store/types\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\nimport { get } from \"lodash\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport { Datetime } from \"vue-datetime\";\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport ActivityLogTable from \"@/components/activity-log/ActivityLogTable.vue\";\r\nimport vselect3 from \"vselect3\";\r\nconst EventSearchStore = namespace(\"eventSearch\");\r\n\r\nVue.mixin(formatDateMixin);\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\tDatetime,\r\n\t\tvselect3,\r\n\t\tActivityLogTable\r\n\t}\r\n})\r\nexport default class ActivityLogManagement extends Vue {\r\n\t$refs!: {\r\n\t\tfilterModal: any;\r\n\t};\r\n\r\n\t@Getter getPermissions: any;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t@EventSearchStore.Action loadSearchableEventTypes: any;\r\n\t@EventSearchStore.Getter searchableEventTypes: any[];\r\n\r\n\tprivate MaxDateTime = new Date().toISOString();\r\n\tprivate TimeZone = \"UTC\";\r\n\tprivate FromDateTime = new Date().toISOString();\r\n\tprivate ToDateTime = new Date().toISOString();\r\n\r\n\tprivate tmpFromDate = new Date().toISOString();\r\n\tprivate tmpToDate = new Date().toISOString();\r\n\r\n\tprivate showLiveData = true;\r\n\tprivate filterApplied = false;\r\n\r\n\tprivate triggerUpdate = false;\r\n\r\n\tprivate CanViewActivityLogHistory = false;\r\n\r\n\tprivate CanViewActivityLogManagment = false;\r\n\r\n\tprivate ShowAdvancedSearch = false;\r\n\r\n\tprivate selectedEventTypes = []\r\n\r\n\tasync created() {\r\n\t\t// setup permissions\r\n\t\tthis.CanViewActivityLogHistory = this.getPermissions.canViewActivityLogHistory;\r\n\t\tthis.CanViewActivityLogManagment = this.getPermissions.canViewActivityLogManagement;\r\n\r\n\t\t// if user does not have access take them to the event queue\r\n\t\tif (!this.isActivityLogEnabled || !this.CanViewActivityLogManagment) {\r\n\t\t\tthis.$router.push(\"/event-queue\");\r\n\t\t}\r\n\r\n\t\t// set timezone based on browser\r\n\t\tthis.TimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n\t\tif(this.isNonActivityLogEventsEnabled) await this.setUpSearchableEventTypes()\r\n\t}\r\n\r\n\tasync setUpSearchableEventTypes() {\r\n\t\tawait this.loadSearchableEventTypes()\r\n\t\tconst defaultEventType = this.searchableEventTypes\r\n\t\t\t.find(({ eventTypeID }) => eventTypeID === 11)\r\n\r\n\t\tif(defaultEventType) this.selectedEventTypes.push(defaultEventType)\r\n\t}\r\n\r\n\tprivate onSetDate(dates) {\r\n\t\tif (dates) {\r\n\t\t\ttry {\r\n\t\t\t\tthis.FromDateTime = dates.minDate ? new Date(dates.minDate).toISOString() : new Date().toISOString();\r\n\t\t\t} catch {\r\n\t\t\t\tthis.FromDateTime = new Date().toISOString();\r\n\t\t\t}\r\n\t\t\tthis.ToDateTime = this.showLiveData ? new Date().toISOString() : new Date(dates.maxDate).toISOString();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setDateRange() {\r\n\t\tthis.showLiveData = false;\r\n\t\tthis.FromDateTime = this.tmpFromDate;\r\n\t\tthis.ToDateTime = this.ShowAdvancedSearch ? this.tmpToDate : this.tmpFromDate;\r\n\r\n\t\t// if doing the standard day's search\r\n\t\tif (!this.ShowAdvancedSearch) {\r\n\t\t\t// set the start to be 00:00:00.000\r\n\t\t\tlet startOfDay = new Date(this.FromDateTime);\r\n\t\t\tstartOfDay.setHours(0);\r\n\t\t\tstartOfDay.setMinutes(0);\r\n\t\t\tstartOfDay.setSeconds(0);\r\n\t\t\tstartOfDay.setMilliseconds(0);\r\n\r\n\t\t\t// set the end to be 23:59:59.999\r\n\t\t\tlet endofDay = new Date(this.ToDateTime);\r\n\t\t\tendofDay.setHours(23);\r\n\t\t\tendofDay.setMinutes(59);\r\n\t\t\tendofDay.setSeconds(59);\r\n\t\t\tendofDay.setMilliseconds(999);\r\n\r\n\t\t\tthis.FromDateTime = startOfDay.toISOString();\r\n\t\t\tthis.ToDateTime = endofDay.toISOString();\r\n\t\t}\r\n\r\n\t\tthis.filterApplied = true;\r\n\t\tthis.triggerUpdate = true;\r\n\t\tthis.$refs.filterModal.hide();\r\n\t}\r\n\r\n\tprivate resetLiveStatus() {\r\n\t\tthis.showLiveData = !this.showLiveData;\r\n\t\tthis.triggerUpdate = false;\r\n\t}\r\n\r\n\tprivate updateLiveStatus(status: boolean) {\r\n\t\tthis.showLiveData = status;\r\n\t}\r\n\r\n\tpublic get isActivityLogEnabled() {\r\n\t\treturn get(this.featuresList, [\"ActivityLog\"]);\r\n\t}\r\n\r\n\tpublic get isNonActivityLogEventsEnabled() {\r\n\t\treturn get(this.featuresList, [\"ActivityLog\", \"NonActivityLogEvents\"]);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityLogManagement.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityLogManagement.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ActivityLogManagement.vue?vue&type=template&id=19b5d61a&scoped=true\"\nimport script from \"./ActivityLogManagement.vue?vue&type=script&lang=ts\"\nexport * from \"./ActivityLogManagement.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ActivityLogManagement.vue?vue&type=style&index=0&id=19b5d61a&prod&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 \"19b5d61a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fill-body card\"},[_c('nav-header',{attrs:{\"title\":\"Features List\"}}),_c('div',{staticClass:\"setup-container card-body p-0\",attrs:{\"id\":\"setupContainer\"}},[(_vm.getPermissions.isSystemAdmin)?_c('div',{staticClass:\"feature-container flex-grow-1 flex-shrink-1 d-flex flex-column\"},[_c('b-alert',{staticClass:\"m-5\",attrs:{\"variant\":\"warning\",\"show\":\"\"}},[_c('i',{staticClass:\"fas fa-exclamation-triangle\"}),_vm._v(\" Features marked as \"),_c('b',[_vm._v(\"beta\")]),_vm._v(\" are not recommended for use in a production environment, as development is ongoing and they may be subject to future changes. \")]),(_vm.getPermissions.isSystemAdmin && _vm.tenantsList.length > 1)?_c('div',{staticClass:\"d-flex flex-row form-inline p-l-20 p-t-10\"},[_vm._v(\" Viewing features for tenant: \"),_c('vue-select',{staticClass:\"dark p-l-10\",staticStyle:{\"min-width\":\"10rem\"},attrs:{\"options\":_vm.tenantsList,\"label\":\"title\",\"clearable\":false},model:{value:(_vm.tenant),callback:function ($$v) {_vm.tenant=$$v},expression:\"tenant\"}}),_c('b-button',{staticClass:\"expand-all-button\",on:{\"click\":_vm.expandAllFeatures}},[_vm._v(\"Expand All\")])],1):_vm._e(),_c('VuePerfectScrollbar',{staticClass:\"flex-grow-1 flex-shrink-1\"},[_c('div',{staticClass:\"col\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchTerm),expression:\"searchTerm\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"placeholder\":\"Search\",\"data-cy\":\"pref-search-bar\"},domProps:{\"value\":(_vm.searchTerm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.searchTerm=$event.target.value}}}),_c('feature-tree',{attrs:{\"features\":_vm.getFeatures},on:{\"statusChanged\":_vm.featureChanged}})],1)])],1):_c('h4',{attrs:{\"id\":\"setupErrorContainer\"}},[_vm._v(\"You do not have permissions to view this page\")])]),(_vm.getPermissions.isSystemAdmin)?_c('div',{staticClass:\"card-footer\"},[_c('button',{staticClass:\"btn btn-primary m-r-20\",attrs:{\"id\":\"btnSave\"},on:{\"click\":function($event){_vm.showConfirmation = true}}},[_vm._v(\"Save\")]),_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"id\":\"btnExport\"},on:{\"click\":_vm.downloadJson}},[_vm._v(\"Export\")])]):_vm._e(),_c('b-modal',{attrs:{\"size\":\"md\",\"centered\":\"\",\"role\":\"dialog\"},model:{value:(_vm.showConfirmation),callback:function ($$v) {_vm.showConfirmation=$$v},expression:\"showConfirmation\"}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"mx-auto\"},[_c('h4',{staticClass:\"mb-0\"},[_vm._v(\"Save Enabled Features\")])])]),_c('div',{staticClass:\"text-center\",attrs:{\"data-cy\":\"delete-filter-popup\"}},[_c('p',{staticClass:\"confirmation-text\"},[_c('i',{staticClass:\"fas fa-exclamation-triangle\"}),_vm._v(\" Are you sure you want to save these features? \")]),(_vm.isFeaturesConfigControlledByFile)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"role\":\"alert\",\"data-cy\":\"functionalityJsonError\"}},[_c('h5',{staticClass:\"font-weight-bold\"},[_vm._v(\"Warning\")]),_c('p',[_vm._v(\" New feature changes won't be applied until the Functionality.json configuration file is removed. Contact your SureView engineer for assistance with this. \")])]):_vm._e()]),_c('template',{slot:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-primary ksConfirm\",attrs:{\"data-dismiss\":\"modal\",\"id\":\"btnConfirmSave\",\"disabled\":_vm.saveButtonDisabled},on:{\"click\":_vm.save}},[_c('span',[_vm._v(\"Save\")])]),_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"data-dismiss\":\"modal\"},on:{\"click\":function($event){_vm.showConfirmation = false}}},[_c('span',[_vm._v(\"Close\")])])])],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Getter, Action } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport FeatureTree from \"@/components/setup/FeatureTree.vue\";\r\nimport { UserPermissions, FeatureTreeNode } from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\nimport vSelect from \"vue-select\";\r\nimport { Tenant } from \"../store/areas/types\";\r\nimport { cloneDeep } from \"lodash\";\r\nimport api from \"@/services/api.service\";\r\nimport { stringMixin } from \"@/mixins\";\r\n\r\nconst { isNullOrWhitespace } = stringMixin.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"feature-tree\": FeatureTree,\r\n\t\tVuePerfectScrollbar,\r\n\t\t\"vue-select\": vSelect\r\n\t}\r\n})\r\nexport default class FeatureSetup extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Action loadFeaturesList: any;\r\n\r\n\tprivate allFeatures: any[] = [];\r\n\tprivate changedFeaturesList: any[] = [];\r\n\tprivate showConfirmation: boolean = false;\r\n\tprivate configDownload: any;\r\n\tprivate isFeaturesConfigControlledByFile: boolean = false;\r\n\tprivate tenantsList: any[] = [];\r\n\tprivate tenant: Tenant = null;\r\n\tprivate saveButtonDisabled: boolean = false;\r\n\tprivate searchTerm: string = \"\";\r\n\r\n\t@Watch(\"tenant\")\r\n\tprivate async onTenantChange(value: Tenant) {\r\n\t\tthis.allFeatures = await api.loadAllFeatures(get(value, \"groupID\", -1));\r\n\t\tthis.searchTerm = \"\";\r\n\t}\r\n\r\n\tasync mounted() {\r\n\t\tthis.changedFeaturesList = [];\r\n\t\tthis.searchTerm = \"\";\r\n\t\tawait this.setup();\r\n\t}\r\n\r\n\tpublic async loadAllTenants() {\r\n\t\tthis.tenantsList = (await api.getTenants()).data;\r\n\r\n\t\t// set the tenant id based on the isUsersTenant value\r\n\t\tthis.tenantsList.forEach(tenant => {\r\n\t\t\tif (tenant.isUsersTenant) {\r\n\t\t\t\tthis.tenant = tenant;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/** Allows unit test to function properly */\r\n\tprivate async setup() {\r\n\t\tthis.isFeaturesConfigControlledByFile = await api.getIsFeaturesConfigControlledByFile();\r\n\t\tawait this.loadAllTenants();\r\n\t}\r\n\r\n\tprivate async featureChanged(feature: any) {\r\n\t\t// Called when a feature is changed at any level. Changed feature name is parsed and added to a changelist.\r\n\t\tif (feature.enabled) {\r\n\t\t\t// Logic to handle when feature is being turned on\r\n\t\t\tlet featuresToEnable = [];\r\n\t\t\tlet fullFeatureName = feature.name;\r\n\t\t\tfeaturesToEnable.push(feature.name);\r\n\r\n\t\t\t// Split the feature name out to check for parent features to enable\r\n\t\t\twhile (fullFeatureName.includes(\"/\")) {\r\n\t\t\t\tlet lastSplitIndex = fullFeatureName.lastIndexOf(\"/\");\r\n\t\t\t\tfullFeatureName = fullFeatureName.substr(0, lastSplitIndex);\r\n\t\t\t\tfeaturesToEnable.push(fullFeatureName);\r\n\t\t\t}\r\n\r\n\t\t\t// Check if feature being changed already exists in changelist\r\n\t\t\tfeaturesToEnable.forEach(name => {\r\n\t\t\t\tconst changedFeature = this.changedFeaturesList.find(changedFeature => changedFeature.name == name);\r\n\r\n\t\t\t\t// If feature exists in changelist, then turn it on, else push it to the list\r\n\t\t\t\tif (changedFeature) {\r\n\t\t\t\t\tchangedFeature.enabled = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.changedFeaturesList.push({\r\n\t\t\t\t\t\tname: name,\r\n\t\t\t\t\t\tenabled: true\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t// Logic to handle turning off features\r\n\t\t\tconst firstFeature = this.changedFeaturesList.find(changedFeature => changedFeature.name == feature.name);\r\n\r\n\t\t\t// If feature exists in changelist, then turn it off, else push it to the list\r\n\t\t\tif (firstFeature) {\r\n\t\t\t\tfirstFeature.enabled = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.changedFeaturesList.push({\r\n\t\t\t\t\tname: feature.name,\r\n\t\t\t\t\tenabled: false\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Find all children of feature being turned off\r\n\t\t\tconst childFeatures = this.changedFeaturesList.filter(changedFeature =>\r\n\t\t\t\tchangedFeature.name.startsWith(feature.name)\r\n\t\t\t);\r\n\r\n\t\t\t// Set the children features to off\r\n\t\t\tchildFeatures.forEach(ele => {\r\n\t\t\t\tele.enabled = false;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async save() {\r\n\t\tthis.saveButtonDisabled = true;\r\n\t\ttry {\r\n\t\t\tawait api.toggleFeatures(this.changedFeaturesList, this.tenant.groupID);\r\n\t\t\tthis.showConfirmation = false;\r\n\t\t\t// Reload the feature list to ensure components that use it are updated.\r\n\t\t\tawait this.loadFeaturesList();\r\n\t\t\tthis.allFeatures = await api.loadAllFeatures(get(this.tenant, \"groupID\", -1));\r\n\t\t\tthis.changedFeaturesList = [];\r\n\t\t} finally {\r\n\t\t\tthis.saveButtonDisabled = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the current featureList with the changed values from the UI.\r\n\t */\r\n\tprivate updateFeaturesLocally(updatedFeatures: any) {\r\n\t\tif (updatedFeatures.length < 1) return;\r\n\r\n\t\tupdatedFeatures.forEach(element => {\r\n\t\t\tlet featureTree: any = element.name.split(\"/\");\r\n\t\t\tlet FeatureList = this.configDownload;\r\n\t\t\tlet toggleResult = element.enabled;\r\n\r\n\t\t\tfeatureTree.forEach(element => {\r\n\t\t\t\tif (featureTree[featureTree.length - 1] == element) {\r\n\t\t\t\t\tFeatureList = FeatureList.find(x => x.name == element);\r\n\t\t\t\t\tFeatureList.enabled = toggleResult;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tFeatureList = FeatureList.find(x => x.name == element).children;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Method that maps over all the parents children to check if its enabled.\r\n\t */\r\n\tprivate mapEnabledChildFeatures(features: any) {\r\n\t\tlet mappedFeatures = features\r\n\t\t\t.map(feature => {\r\n\t\t\t\tif (!feature.enabled) return null;\r\n\r\n\t\t\t\tif (feature.children.length > 0) {\r\n\t\t\t\t\tfeature.children = this.mapEnabledChildFeatures(feature.children);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn feature;\r\n\t\t\t})\r\n\t\t\t.filter(x => {\r\n\t\t\t\treturn x != null;\r\n\t\t\t})\r\n\t\t\t.map(feature => {\r\n\t\t\t\treturn { Feature: feature.name, Children: feature.children, GroupID: 1 };\r\n\t\t\t});\r\n\r\n\t\treturn mappedFeatures;\r\n\t}\r\n\r\n\t/*\r\n\t* Getter for the list that is used in the FeatureTree\r\n\t* If there is a search term this is the filtered list\r\n\t* If not then all features from the store\r\n\t*/\r\n\tprivate get getFeatures(): FeatureTreeNode[] {\r\n\t\tif (!isNullOrWhitespace(this.searchTerm)) {\r\n\t\t\treturn this.filterFeatures;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.allFeatures;\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t*\tDriving method for the search\r\n\t*/\r\n\tprivate get filterFeatures(): FeatureTreeNode[] {\r\n\t\tlet matchingFeatures: FeatureTreeNode[] = [];\r\n\r\n\t\t// Loop over all top level elements\r\n\t\tthis.allFeatures.forEach(feature => {\r\n\t\t\tlet matchingFeature: FeatureTreeNode = this.findFeatures(feature);\r\n\r\n\t\t\t// If the feature (including any of its children) match then add to the list\r\n\t\t\t// of matching features\r\n\t\t\tif (matchingFeature) {\r\n\t\t\t\tmatchingFeature.expanded = true;\r\n\t\t\t\tmatchingFeatures.push(matchingFeature);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn matchingFeatures;\r\n\t}\r\n\r\n\t/*\r\n\t* Recursive function to search the feature tree for features whose description or name contains\r\n\t* the search term\r\n\t*/\r\n\tprivate findFeatures(feature: FeatureTreeNode): FeatureTreeNode {\r\n\t\tlet matchedFeature: FeatureTreeNode = null;\r\n\t\tlet matchingChildFeature: FeatureTreeNode = null;\r\n\t\tlet matchFound: boolean = false;\r\n\r\n\t\t// Check if the current nodes description matches the search term\r\n\t\tlet currentFeatureMatches = this.currentFeatureMatches(feature);\r\n\r\n\t\tif (currentFeatureMatches) {\r\n\t\t\tmatchFound = true;\r\n\t\t}\r\n\r\n\t\t// Get the feature as even if it doesn't match\r\n\t\t// it would be needed to attach any matching children to\r\n\t\tmatchedFeature = cloneDeep(feature);\r\n\t\tmatchedFeature.children = [];\r\n\r\n\t\t// if there are children\r\n\t\tif (feature.children && feature.children.length > 0) {\r\n\t\t\t// check if there is a match in any of the children\r\n\t\t\tfeature.children.forEach(childFeature => {\r\n\t\t\t\tmatchingChildFeature = this.findFeatures(childFeature);\r\n\r\n\t\t\t\t// if there is a match then add it to the parent\r\n\t\t\t\tif (matchingChildFeature) {\r\n\t\t\t\t\tmatchFound = true;\r\n\t\t\t\t\tmatchingChildFeature.expanded = true;\r\n\t\t\t\t\tmatchedFeature.children.push(matchingChildFeature);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// if a match has been found return the matching object\r\n\t\tif (matchFound) {\r\n\t\t\treturn matchedFeature;\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t/*\r\n\t* Helper method used to check a features description or name contains the search term\r\n\t*/\r\n\tprivate currentFeatureMatches(feature: FeatureTreeNode): boolean {\r\n\t\tconst lowerCaseSearchTerm: string = this.searchTerm.toLowerCase();\r\n\r\n\t\treturn (feature.description &&\r\n\t\t\t(feature.description.toLowerCase().includes(lowerCaseSearchTerm) ||\r\n\t\t\tfeature.name.toLowerCase().includes(lowerCaseSearchTerm)));\r\n\t}\r\n\r\n\t/**\r\n\t * Method to get the desired format and download json.\r\n\t */\r\n\tprivate downloadJson() {\r\n\t\tthis.configDownload = JSON.parse(JSON.stringify(this.allFeatures));\r\n\r\n\t\t// Iterate through changed features and map the changes to the main list.\r\n\t\tthis.updateFeaturesLocally(this.changedFeaturesList);\r\n\r\n\t\tlet config = this.mapEnabledChildFeatures(this.configDownload);\r\n\r\n\t\tlet element = document.createElement(\"a\");\r\n\t\telement.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + JSON.stringify(config));\r\n\r\n\t\telement.setAttribute(\"download\", \"Functionality.json\");\r\n\t\telement.style.display = \"none\";\r\n\t\tdocument.body.appendChild(element);\r\n\t\telement.click();\r\n\t\tdocument.body.removeChild(element);\r\n\t}\r\n\r\n\tprivate expandAllFeatures(): void {\r\n\t\tthis.allFeatures.push();\r\n\t\tthis.allFeatures.forEach(feature => {\r\n\t\t\tfeature.expanded = true;\r\n\t\t});\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FeatureSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FeatureSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FeatureSetup.vue?vue&type=template&id=15f5d39f&scoped=true\"\nimport script from \"./FeatureSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./FeatureSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FeatureSetup.vue?vue&type=style&index=0&id=15f5d39f&prod&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 \"15f5d39f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\",attrs:{\"id\":\"setup-container\"}},[_c('nav-header',{attrs:{\"title\":\"Tours\"}}),(_vm.IsTourManagementEnabled)?_c('div',{staticClass:\"tour-container\"},[_c('generic-table',{ref:\"genericTable\",staticClass:\"full-height\",attrs:{\"columns\":_vm.columns,\"dataList\":_vm.getAllTours,\"useModal\":false,\"isShowAction\":false,\"term\":\"Tour\"},scopedSlots:_vm._u([{key:\"custom-button\",fn:function(){return [_c('b-button',{attrs:{\"id\":\"btnAddTour\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.addTourSetup()}}},[_vm._v(\"Add Tour\")])]},proxy:true},{key:\"functionality\",fn:function(slotProps){return [_c('a',{staticClass:\"btn btn-link px-2 float-right\",staticStyle:{\"padding\":\"0\"},attrs:{\"data-cy\":'deleteTour-'+slotProps.row.tourId,\"title\":\"Delete Tour\"},on:{\"click\":function($event){return _vm.modalRemoveTour(slotProps.row.tourId)}}},[_c('i',{staticClass:\"fas fa-trash-alt\"})]),_c('a',{staticClass:\"btn btn-link px-2 float-right\",staticStyle:{\"padding\":\"0\"},attrs:{\"data-cy\":'editTour-'+slotProps.row.tourId,\"title\":\"Edit Details\"},on:{\"click\":function($event){return _vm.editTourDetails(slotProps.row.tourId)}}},[_c('i',{staticClass:\"fas fa-edit\"})])]}},{key:\"tourStepsCount\",fn:function(slotProps){return [_vm._v(\" \"+_vm._s(slotProps.row.tourStepsCount)+\" \"),_c('a',{staticClass:\"btn btn-link px-2\",staticStyle:{\"padding\":\"0\"},attrs:{\"data-cy\":'showTour-'+slotProps.row.tourId,\"title\":\"View Details\"},on:{\"click\":function($event){return _vm.showDetailsModal(slotProps.row.tourId)}}},[_c('i',{staticClass:\"fas fa-file-alt\"})])]}}],null,false,2410991061)}),_c('b-modal',{staticClass:\"modal-container\",attrs:{\"data-cy\":\"AddEditModal\",\"id\":\"tourModal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"modal\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\"},scopedSlots:_vm._u([{key:\"modal-title\",fn:function(){return [_c('div',[(_vm.currentTour.tourId > 0)?_c('h4',[_vm._v(\"Edit Tour\")]):_c('h4',[_vm._v(\"Add Tour\")])])]},proxy:true}],null,false,2939335554),model:{value:(_vm.tourModalVisible),callback:function ($$v) {_vm.tourModalVisible=$$v},expression:\"tourModalVisible\"}},[_c('div',{staticClass:\"modal-body modal-hight\"},[_c('form',[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('tour-modal',{ref:\"tourSetupRef\",attrs:{\"tourId\":_vm.tourId},on:{\"setup-valid\":_vm.validateSetup}})],1)])])]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"pull-right ksConfirm\",attrs:{\"id\":\"btnSaveTour\",\"variant\":\"primary\",\"data-dismiss\":\"modal\",\"disabled\":_vm.isInvalid},on:{\"click\":_vm.save}},[_c('span',[_vm._v(\"Save\")])]),_c('button',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"id\":\"btnCancelSaveTour\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.cancel}},[_c('span',[_vm._v(\"Close\")])])],1)],2),_c('b-modal',{attrs:{\"data-cy\":\"deleteTourDialog\",\"id\":\"confirmModal\",\"size\":\"md\",\"centered\":\"\",\"role\":\"modal\"},scopedSlots:_vm._u([{key:\"modal-title\",fn:function(){return [_c('div',[_c('h4',[_vm._v(\"Remove Tour\")])])]},proxy:true}],null,false,2863326310),model:{value:(_vm.confirmModalVisible),callback:function ($$v) {_vm.confirmModalVisible=$$v},expression:\"confirmModalVisible\"}},[(_vm.currentTour)?_c('div',[_c('form',[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md text-center\"},[_c('h5',{staticClass:\"text-warning\"},[_vm._v(\"Are you sure you want to remove this Tour?\")]),_c('p',[_c('strong',[_vm._v(\"Area:\")]),_vm._v(\" \"+_vm._s(_vm.tourGroupTitle)+\" \"),_c('span',{staticClass:\"pl-4\"},[_c('strong',[_vm._v(\"Tour Steps:\")]),_vm._v(\" \"+_vm._s(_vm.currentTour.tourSteps.length)+\" \")])]),_c('p',[_c('strong',[_vm._v(\"Title:\")]),_vm._v(\" \"+_vm._s(_vm.currentTour.title)+\" \")])])])])])]):_vm._e(),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"pull-right ksConfirm\",attrs:{\"id\":\"btnDeleteTour\",\"variant\":\"danger\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.removeTourFromList}},[_c('span',[_vm._v(\"Delete Tour\")])]),_c('b-button',{staticClass:\"pull-right\",attrs:{\"id\":\"btnCancelDeleteTour\",\"variant\":\"secondary\",\"data-dismiss\":\"modal\"},on:{\"click\":function($event){_vm.confirmModalVisible = false}}},[_c('span',[_vm._v(\"Canel\")])])],1)],2),_c('b-modal',{attrs:{\"data-cy\":\"tourDetailsDialog\",\"id\":\"detailsModal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"modal\"},scopedSlots:_vm._u([{key:\"modal-title\",fn:function(){return [_c('div',[_c('h4',[_vm._v(\"Tour Details\")])])]},proxy:true}],null,false,2938861442),model:{value:(_vm.detailsModalVisible),callback:function ($$v) {_vm.detailsModalVisible=$$v},expression:\"detailsModalVisible\"}},[(_vm.currentTour)?_c('div',{staticClass:\"modal-body\"},[_c('form',[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('span',{staticClass:\"h3\"},[_vm._v(\"Title: \"+_vm._s(_vm.currentTour.title))])])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('label',{staticClass:\"py-2 h5\"},[_vm._v(\"Area: \"+_vm._s(_vm.tourGroupTitle))]),_c('table',{staticClass:\"table\"},[_c('thead',[_c('tr',[_c('th',[_vm._v(\"Order\")]),_c('th',[_vm._v(\"Device Name\")]),_c('th',[_vm._v(\"Comment\")])])]),_c('tbody',_vm._l((_vm.currentTour.tourSteps),function(item,index){return _c('tr',{key:index},[_c('td',[_vm._v(_vm._s(index+1))]),_c('td',[_vm._v(_vm._s(item.title))]),_c('td',[_vm._v(_vm._s(item.comment))])])}),0)])])])])])]):_vm._e(),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"pull-right\",attrs:{\"id\":\"btnCloseDetails\",\"variant\":\"secondary\",\"data-dismiss\":\"modal\",\"data-cy\":\"close-details-btn\"},on:{\"click\":function($event){_vm.detailsModalVisible = false}}},[_c('span',[_vm._v(\"Close\")])])],1)],2)],1):_c('div',[_c('h4',{attrs:{\"data-cy\":\"ToursManagementErrorContainer\"}},[_vm._v(\"You are not licenced to view this page\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-100\"},[_c('b-form-group',[_c('label',[_vm._v(\"Title:\")]),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_vm._v(\" \"),_c('b-form-input',{attrs:{\"required\":\"\",\"maxlength\":50,\"data-cy\":\"tourTitleInput\",\"type\":\"text\"},model:{value:(_vm.$v.currentTour.title.$model),callback:function ($$v) {_vm.$set(_vm.$v.currentTour.title, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.currentTour.title.$model\"}})],1),_c('b-form-group',[_c('label',[_vm._v(\"Area to Tour:\")]),_c('area-tree-select',{attrs:{\"clearable\":false,\"reduce\":function (a) { return a.id; },\"append-to-body\":\"\",\"placeholder\":'Select/Search for an Area'},model:{value:(_vm.tourGroupId),callback:function ($$v) {_vm.tourGroupId=$$v},expression:\"tourGroupId\"}})],1),_c('b-form-group',[_c('label',[_vm._v(\"Default Matrix Size Option:\")]),_c('vue-select',{staticClass:\"dark w-100\",attrs:{\"options\":_vm.matrixOptions,\"label\":\"title\",\"data-cy\":\"matrixSize\",\"appendToBody\":\"\",\"clearable\":false,\"selectOnTab\":\"\",\"autoscroll\":\"\"},on:{\"input\":_vm.onMatrixInput},model:{value:(_vm.currentTour.matrixOptions),callback:function ($$v) {_vm.$set(_vm.currentTour, \"matrixOptions\", $$v)},expression:\"currentTour.matrixOptions\"}}),_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Column Size x Row Size\")])],1),_c('h5',[_vm._v(\"Device Search\")]),_c('div',{staticClass:\"thin-line mt-2 mb-2\"}),_c('table',{staticClass:\"w-100\"},[_c('tr',[_c('td',{staticStyle:{\"width\":\"100px\"}},[_vm._v(\" Area: \")]),_c('td',{staticStyle:{\"width\":\"40%\"}},[_c('area-tree-select',{attrs:{\"reduce\":function (a) { return a.id; },\"clearable\":false,\"append-to-body\":\"\",\"placeholder\":'Select/Search for an Area'},model:{value:(_vm.searchableGroupId),callback:function ($$v) {_vm.searchableGroupId=$$v},expression:\"searchableGroupId\"}})],1),_c('td',[_vm._v(\" Devices: \")]),_c('td',[_c('vue-select',{staticClass:\"dark flex-search w-100\",attrs:{\"options\":_vm.filteredDevices,\"label\":\"title\",\"placeholder\":\"Devices\",\"resetOnOptionsChange\":\"\",\"filterable\":\"\",\"clearable\":\"\",\"data-cy\":\"DeviceList\",\"max-height\":\"200px\"},on:{\"search\":_vm.searchDevice,\"input\":function($event){return _vm.addDeviceToTour(_vm.filteredDevices.objectID)}},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [_vm._v(\" \"+_vm._s(option.title)+\" \")]}}]),model:{value:(_vm.filteredDevices.objectID),callback:function ($$v) {_vm.$set(_vm.filteredDevices, \"objectID\", $$v)},expression:\"filteredDevices.objectID\"}})],1)]),_c('tr',[_c('td',{attrs:{\"colspan\":\"3\"}}),_c('td',[_c('b-button',{staticClass:\"float-right\",attrs:{\"variant\":\"primary\",\"size\":\"sm\",\"data-cy\":\"SelectAllDevices\"},on:{\"click\":_vm.addAllDevices}},[_vm._v(\"Select all devices\")])],1)]),_vm._m(0),_c('tr',[_c('td',{attrs:{\"colspan\":\"4\"}},[_c('b-form-radio-group',{attrs:{\"name\":\"radio-inline\"},model:{value:(_vm.tourUsingDuration),callback:function ($$v) {_vm.tourUsingDuration=$$v},expression:\"tourUsingDuration\"}},[_c('b-form-radio',{attrs:{\"value\":true,\"data-cy\":\"durationTypeDuration\"}},[_vm._v(\"Duration\")]),_c('b-form-radio',{attrs:{\"value\":false,\"data-cy\":\"durationTypeConfirmation\"}},[_vm._v(\"Confirmation\")])],1)],1)])]),_c('div',{staticClass:\"dev-table\"},[_c('div',{staticClass:\"d-flex flex-row align-items-end dev-header\"},[_c('div',{staticClass:\"cell sel-camera\"},[_vm._v(\"Selected Camera\")]),_c('div',{staticClass:\"cell order\"},[_vm._v(\"Order\")]),_c('div',{staticClass:\"cell comment\"},[_vm._v(\"Comment\")]),_c('div',{staticClass:\"cell duration\"},[_vm._v(\"Duration (seconds)\"),(_vm.tourUsingDuration)?_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]):_vm._e()]),_c('div',{staticClass:\"cell preset\"},[_vm._v(\"Preset\")]),_c('div',{staticClass:\"cell delete\"},[_vm._v(\"Delete\")])]),_c('div',{staticClass:\"thin-scroll device-wrapper\"},[_c('draggable',{staticClass:\"d-flex flex-column align-items-stretch dev-body\",attrs:{\"data-cy\":\"devicesTable\"},on:{\"start\":function($event){_vm.drag=true},\"end\":function($event){_vm.drag=false}},model:{value:(_vm.currentTour.tourSteps),callback:function ($$v) {_vm.$set(_vm.currentTour, \"tourSteps\", $$v)},expression:\"currentTour.tourSteps\"}},_vm._l((_vm.currentTour.tourSteps),function(item,index){return _c('div',{key:(\"row-\" + (item.objectID)),staticClass:\"dev-row\"},[(_vm.deletingIndex === index)?_c('div',{staticClass:\"d-flex flex-row align-items-center\"},[_c('div',{staticClass:\"cell w-100\",staticStyle:{\"text-align\":\"center\",\"background-color\":\"red\",\"color\":\"white\"}},[_vm._v(\" Are you sure you want to delete \"),_c('b',[_vm._v(_vm._s(item.title))]),_vm._v(\" ? \"),_c('br'),_c('b-button-group',{staticClass:\"ml-2\",attrs:{\"size\":\"sm\"}},[_c('b-button',{attrs:{\"data-cy\":'confirmDeleteDevice-'+index},on:{\"click\":function($event){return _vm.removeDeviceFromTour()}}},[_vm._v(\" Yes \")]),_c('b-button',{attrs:{\"data-cy\":'cancelDeleteDevice-'+index},on:{\"click\":function($event){return _vm.updateDeleteIndex(-1)}}},[_vm._v(\" No \")])],1)],1)]):_c('div',{staticClass:\"d-flex flex-row align-items-center\"},[_c('div',{staticClass:\"cell sel-camera\"},[_vm._v(_vm._s(item.title))]),_c('div',{staticClass:\"cell order\"},[_vm._v(_vm._s(item.stepOrder = index + 1))]),_c('div',{staticClass:\"cell comment\"},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(item.comment),expression:\"item.comment\"}],staticClass:\"form-control \",staticStyle:{\"min-height\":\"35px!important\"},attrs:{\"rows\":\"1\",\"cols\":\"30\",\"data-cy\":'comment'+index},domProps:{\"value\":(item.comment)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(item, \"comment\", $event.target.value)}}})]),_c('div',{staticClass:\"cell duration\"},[(_vm.tourUsingDuration)?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(item.duration),expression:\"item.duration\"}],staticClass:\"form-control text-center\",attrs:{\"type\":\"number\",\"min\":\"3\",\"value\":\"0\",\"max\":\"999999999\"},domProps:{\"value\":(item.duration)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(item, \"duration\", $event.target.value)}}}):_c('label',{staticStyle:{\"max-height\":\"36px!important\",\"text-align\":\"center\",\"margin-bottom\":\"0px!important\"}},[_vm._v(\"Confirmation step\")])]),_c('div',{staticClass:\"cell preset\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(item.preset),expression:\"item.preset\"}],staticClass:\"form-control text-center\",attrs:{\"type\":\"number\",\"min\":\"1\"},domProps:{\"value\":(item.preset)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(item, \"preset\", $event.target.value)}}})]),_c('div',{staticClass:\"cell delete\"},[_c('a',{staticClass:\"btn btn-link\",attrs:{\"title\":\"Remove Device\",\"data-cy\":'removeDevice-'+index},on:{\"click\":function($event){return _vm.updateDeleteIndex(index)}}},[_c('i',{staticClass:\"text-danger fas fa-trash-alt\"})])])]),(!_vm.$v.currentTour.tourSteps.$each.$iter[index].duration.required)?_c('div',{staticClass:\"text-danger\"},[_vm._v(\" Duration is required \")]):_vm._e(),(!_vm.$v.currentTour.tourSteps.$each.$iter[index].duration.min)?_c('div',{staticClass:\"text-danger\"},[_vm._v(\" Duration should be greater than or equal \"+_vm._s(_vm.$v.currentTour.tourSteps.$each.$iter[index].duration.$params.min.value)+\" \")]):_vm._e(),(!_vm.$v.currentTour.tourSteps.$each.$iter[index].duration.max)?_c('div',{staticClass:\"text-danger\"},[_vm._v(\" Duration should be less than or equal \"+_vm._s(_vm.$v.currentTour.tourSteps.$each.$iter[index].duration.$params.max.value)+\" \")]):_vm._e()])}),0)],1)]),(_vm.currentTour && _vm.currentTour.tourSteps.length > 0)?_c('small',{staticClass:\"form-text text-muted\"},[_vm._v(\"Rows can be dragged to re-order the selected camera\")]):_vm._e(),(_vm.currentTour && _vm.currentTour.tourSteps.length === 0)?_c('div',{staticClass:\"text-danger\"},[_vm._v(\" * At least one camera is required to setup a tour \")]):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',{attrs:{\"colspan\":\"4\"}},[_vm._v(\" Device Step Duration: \")])])}]\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport draggable from \"vuedraggable\";\r\nimport vSelect from \"vue-select\";\r\nimport vselect3 from \"vselect3\";\r\nimport { required, helpers } from 'vuelidate/lib/validators'\r\nimport { cloneDeep } from \"lodash\";\r\nimport { validationMixin } from 'vuelidate';\r\nimport { Tour } from \"@/store/tours/types\"\r\nimport AreaTreeSelect from './form/AreaTreeSelect.vue';\r\nimport api from '@/services/api.service';\r\n\r\nconst MIN_DURATION = 5;\r\nconst MAX_DURATION = 32767; //Max number of the database field\r\n\r\nconst Areas = namespace(\"areas\");\r\nconst Tours = namespace(\"tours\");\r\n\r\nconst requiredValidator = helpers.withParams(\r\n\t{ type: \"required\" },\r\n\tfunction(val) {\r\n\t\treturn this.tourUsingDuration ? !!val : true;\r\n\t}\r\n)\r\n\r\nconst minValidator = (minVal: number) => helpers.withParams(\r\n\t{ type: \"min\", value: minVal },\r\n\tfunction(val) {\r\n\t\treturn this.tourUsingDuration && val ? val >= minVal : true;\r\n\t}\r\n)\r\n\r\nconst maxValidator = (maxVal: number) => helpers.withParams(\r\n\t{ type: \"max\", value: maxVal },\r\n\tfunction(val) {\r\n\t\treturn this.tourUsingDuration && val ? val <= maxVal : true;\r\n\t}\r\n)\r\n\r\nconst defaultMatrixOption: TourSetupMatrixOptions = {\r\n\ttitle: \"3 x 3\",\r\n matrixColumnSize: 3,\r\n matrixRowSize: 3\r\n}\r\n\r\ninterface TourWithMatrixOptions extends Tour {\r\n\tmatrixOptions: {\r\n\t\tmatrixColumnSize: number,\r\n\t\tmatrixRowSize: number\r\n\t}\r\n}\r\n\r\ninterface TourSetupMatrixOptions {\r\n title: string,\r\n matrixColumnSize: number,\r\n matrixRowSize: number\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tdraggable,\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n \"area-tree-select\": AreaTreeSelect,\r\n\t\tvselect3\r\n\t},\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\tcurrentTour: {\r\n\t\t\ttitle: {\r\n\t\t\t\trequired,\r\n\t\t\t},\r\n\t\t\ttourSteps: {\r\n\t\t\t\trequired,\r\n\t\t\t\t$each: {\r\n\t\t\t\t\tduration: {\r\n\t\t\t\t\t\trequired: requiredValidator,\r\n\t\t\t\t\t\tmin: minValidator(MIN_DURATION),\r\n\t\t\t\t\t\tmax: maxValidator(MAX_DURATION)\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\nexport default class TourSetupModal extends Vue {\r\n\t/** Store Getter/Setter */\r\n\t@Getter getUserTenantGroupId: number;\r\n\r\n\t@Tours.Action fetchAllTours: any;\r\n\t@Tours.Action fetchDeviceList: any;\r\n\t@Tours.Action removeDevice: any;\r\n\t@Tours.Action searchDeviceList: any;\r\n\t@Tours.Getter getTour: any;\r\n\t@Tours.Getter getDeviceList: any;\r\n\t@Tours.Getter getSearchDevices: any;\r\n\t@Tours.Mutation addSearchDevices: any;\r\n\r\n\t@Areas.Action getAreaList: any;\r\n\t@Areas.Getter(\"getAreaList\") areaList!: any[];\r\n\r\n\t@Prop({default: 0, type: Number})\r\n\tprivate tourId: number;\r\n\r\n\tprivate tourUsingDuration: boolean = true;\r\n\tprivate deletingIndex:number = -1;\r\n\tprivate tourGroupId: number = 0;\r\n\tprivate searchableGroupId: number = 0;\r\n\r\n\t// Api search calls\r\n\tprivate deviceSearchTimer: any = null;\r\n\tprivate deviceSearchValue: string = \"\";\r\n\r\n\tprivate currentTour: TourWithMatrixOptions = {\r\n\t\tgroupId: 0,\r\n\t\ttitle: \"\",\r\n\t\ttourId: 0,\r\n\t\ttourOrder: 0,\r\n\t\ttourSteps: [],\r\n\t\tfunctionality: null,\r\n\t\ttourStepsCount: 0,\r\n\t\tmatrixRowSize: 3,\r\n\t\tmatrixColumnSize: 3,\r\n\t\tmatrixOptions: {\r\n\t\t\tmatrixColumnSize: 3,\r\n\t\t\tmatrixRowSize: 3\r\n\t\t}\r\n }\r\n\r\n\tprivate matrixOptions: TourSetupMatrixOptions[] = [\r\n\t\t{\r\n\t\t\ttitle: \"1 x 1\",\r\n\t\t\tmatrixColumnSize: 1,\r\n\t\t\tmatrixRowSize: 1\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"2 x 2\",\r\n\t\t\tmatrixColumnSize: 2,\r\n\t\t\tmatrixRowSize: 2\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"2 x 3\",\r\n\t\t\tmatrixColumnSize: 2,\r\n\t\t\tmatrixRowSize: 3\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"3 x 3\",\r\n\t\t\tmatrixColumnSize: 3,\r\n\t\t\tmatrixRowSize: 3\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"4 x 3\",\r\n\t\t\tmatrixColumnSize: 4,\r\n\t\t\tmatrixRowSize: 3\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"4 x 4\",\r\n\t\t\tmatrixColumnSize: 4,\r\n\t\t\tmatrixRowSize: 4\r\n\t\t},\r\n\t];\r\n\r\n\t/** Filter through our current tour steps and if contains the same device, remove from the device list. */\r\n\tprivate get filteredDevices(): any[] {\r\n\t\tif (this.getSearchDevices.length > 0 && this.deviceSearchValue !== \"\") {\r\n\t\t\treturn cloneDeep(this.getSearchDevices.filter(devices => {\r\n\t\t\t\t// Filter through the devices and only return the ones that hasn't been added already.\r\n\t\t\t\treturn (this.currentTour && this.currentTour.tourSteps.find(tourStep => tourStep.objectID == devices.objectID)) ? false : true;\r\n\t\t\t\t// Map the device object with the title containing the area e.g. Area - CameraName\r\n\t\t\t})).map(device => this.getDeviceArea(device));\r\n\t\t} else {\r\n\t\t\treturn cloneDeep(this.getDeviceList.filter(devices => {\r\n\t\t\t\t// Filter through the devices and only return the ones that hasn't been added already.\r\n\t\t\t\treturn (this.currentTour && this.currentTour.tourSteps.find(tourStep => tourStep.objectID == devices.objectID)) ? false : true;\r\n\t\t\t\t// Map the device object with the title containing the area e.g. Area - CameraName\r\n\t\t\t\t})).map(device => {return this.getDeviceArea(device);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/** Method to fetch devices depending on the group you are currently on. */\r\n\t@Watch(\"searchableGroupId\")\r\n\tprivate async updateDevicesList() : Promise {\r\n\t\tawait this.fetchDeviceList(this.searchableGroupId ? this.searchableGroupId : this.getUserTenantGroupId);\r\n\t}\r\n\r\n private async mounted() {\r\n\t\tthis.searchableGroupId = this.getUserTenantGroupId;\r\n\t\tthis.tourGroupId = this.getUserTenantGroupId;\r\n\t\tawait this.fetchDeviceList(this.getUserTenantGroupId);\r\n\t\tif (this.tourId > 0) {\r\n\t\t\tthis.editTourDetails(this.tourId);\r\n\t\t} else {\r\n\t\t\tthis.tourUsingDuration = true;\r\n\t\t\tthis.currentTour = this.cloneTourTemplate();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getDeviceArea(device: any): any {\r\n\t\tlet title = this.areaList.find(area => area.groupID == device.groupId)\r\n\t\treturn {title: `${ title ? title.title : \"\" } - ${ device.title }`, groupId: device.groupId, objectID: device.objectID}\r\n\t}\r\n\r\n\tprivate cloneTourTemplate(): TourWithMatrixOptions {\r\n\t\tconst tourTemplate: any = {\r\n\t\t\tgroupId: this.getUserTenantGroupId,\r\n\t\t\ttitle: \"\",\r\n\t\t\ttourId: 0,\r\n\t\t\ttourOrder: 0,\r\n\t\t\ttourSteps: [],\r\n\t\t\tfunctionality: null,\r\n\t\t\ttourStepsCount: 0,\r\n\t\t\tmatrixColumnSize: 3,\r\n\t\t\tmatrixRowSize: 3,\r\n\t\t\tmatrixOptions: defaultMatrixOption\r\n\t\t};\r\n\t\t// Deep cloned our template due to wanting it to be passed by VALUE not reference.\r\n\t\treturn cloneDeep(tourTemplate);\r\n\t}\r\n\r\n\tprivate removeDeviceFromTour(): void {\r\n\t\tthis.currentTour.tourSteps.splice(this.deletingIndex, 1);\r\n\t\tthis.deletingIndex = -1;\r\n\t}\r\n\r\n\t/** Loads the desired tour into the edit modal */\r\n\t@Watch(\"tourId\")\r\n\tpublic editTourDetails(tourId: number): void {\r\n\t\tthis.currentTour = this.getTour(tourId);\r\n\t\tif(!this.currentTour){\r\n\t\t\tthis.currentTour = this.cloneTourTemplate();\r\n\t\t}\r\n\r\n\t\tvar matrixOptions = this.matrixOptions\r\n\t\t\t.find(x => x.matrixColumnSize == this.currentTour.matrixColumnSize\r\n\t\t\t\t\t&& x.matrixRowSize == this.currentTour.matrixRowSize\r\n\t\t\t);\r\n\r\n\t\tthis.currentTour.matrixOptions = matrixOptions ? matrixOptions : defaultMatrixOption;\r\n\t\tthis.tourGroupId = this.currentTour.groupId ? this.currentTour.groupId : this.getUserTenantGroupId;\r\n\r\n\t\t// steps based on confirmation is based on null, else duration is a number\r\n\t\tif (this.currentTour.tourSteps.length > 0)\r\n\t\t{\r\n\t\t\tthis.currentTour.tourSteps[0].duration == 0 ? this.tourUsingDuration = false : this.tourUsingDuration = true;\r\n\t\t}\r\n }\r\n\r\n\t/** Save new or update tour */\r\n\tpublic async save() {\r\n\t\tthis.currentTour.tourStepsCount = this.currentTour.tourSteps.length;\r\n\t\tthis.currentTour.groupId = this.tourGroupId > 0 ? this.tourGroupId : this.getUserTenantGroupId;\r\n\t\t//If the tourUsingDuration is set to false i.e. confirmation reset the step duration to 3\r\n\t\tif(this.currentTour && this.currentTour.tourSteps && this.currentTour.tourSteps.length > 0 && !this.tourUsingDuration) {\r\n\t\t\tthis.currentTour.tourSteps.forEach(step => {\r\n\t\t\t\tstep.duration = 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// new tour.\r\n\t\tif (this.currentTour.tourId == 0) {\r\n\t\t\tawait api.addTour(this.currentTour);\r\n\t\t} else {\r\n\t\t\tthis.currentTour.tourSteps.forEach(step => {\r\n\t\t\t\tstep.tourId = this.currentTour.tourId;\r\n\t\t\t});\r\n\t\t\tawait api.updateTour(this.currentTour);\r\n\t\t}\r\n\r\n\t\tawait this.fetchAllTours();\r\n\t\tthis.tourUsingDuration = true;\r\n\t\tthis.currentTour = this.cloneTourTemplate();\r\n\t}\r\n\r\n @Watch(\"$v.$invalid\")\r\n private evaluateSetupValid(){\r\n this.$emit('setup-valid', this.$v.$invalid);\r\n\t}\r\n\r\n\tprivate addDeviceToTour(device: any): void {\r\n\t\t// Check if the user is searching or not then use the correct array.\r\n\t\tif (this.deviceSearchValue) {\r\n\t\t\tconst dev = this.getSearchDevices.find(x => x.objectID == device.objectID);\r\n\t\t\tthis.currentTour.tourSteps.push({\r\n\t\t\t\t...dev,\r\n\t\t\t\tduration: this.getLastStepDuration()\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dev = this.getDeviceList.find(x => x.objectID == device.objectID);\r\n\t\t\tthis.currentTour.tourSteps.push({\r\n\t\t\t\t...dev,\r\n\t\t\t\tduration: this.getLastStepDuration()\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.addSearchDevices([]);\r\n\t}\r\n\r\n\tprivate getLastStepDuration() : number {\r\n\t\tif (this.currentTour.tourSteps.length > 0) {\r\n\t\t\tlet lastDevice = this.currentTour.tourSteps[this.currentTour.tourSteps.length - 1];\r\n\t\t\treturn lastDevice.duration;\r\n\t\t}\r\n\t\treturn MIN_DURATION;\r\n\t}\r\n\r\n\tprivate addAllDevices(): void {\r\n\t\tthis.getDeviceList.forEach((element) => {\r\n\t\t\tconst found = this.currentTour.tourSteps.findIndex(x => x.objectID == element.objectID);\r\n\t\t\tif (found == -1) {\r\n\t\t\t\tthis.currentTour.tourSteps.push({\r\n\t\t\t\t\t...element,\r\n\t\t\t\t\tduration: this.getLastStepDuration()\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate searchDevice(value: any): void {\r\n\t\tif (value == \"\") {\r\n\t\t\tthis.addSearchDevices([]);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.deviceSearchValue = value;\r\n\t\tclearTimeout(this.deviceSearchTimer);\r\n\t\tthis.deviceSearchTimer = setTimeout(() => {\r\n\t\t\tthis.searchDeviceList({ groupID: this.searchableGroupId, searchText: value });\r\n\t\t}, 2000);\r\n\t}\r\n\r\n\tprivate onMatrixInput(value: TourSetupMatrixOptions): void {\r\n\t\tthis.currentTour.matrixColumnSize = value.matrixColumnSize;\r\n\t\tthis.currentTour.matrixRowSize = value.matrixRowSize;\r\n\t\tthis.currentTour.matrixOptions = value;\r\n\t}\r\n\r\n\tprivate updateDeleteIndex(index: number | null): void {\r\n\t\tthis.deletingIndex = index;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TourSetupModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TourSetupModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TourSetupModal.vue?vue&type=template&id=62c49b28&scoped=true\"\nimport script from \"./TourSetupModal.vue?vue&type=script&lang=ts\"\nexport * from \"./TourSetupModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./TourSetupModal.vue?vue&type=style&index=0&id=62c49b28&prod&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 \"62c49b28\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue } from \"vue-property-decorator\";\nimport { namespace, Getter } from \"vuex-class\";\nimport NavHeader from \"@/components/NavHeader.vue\";\nimport { get, cloneDeep } from \"lodash\";\nimport { FeaturesList } from \"@/store/types\";\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\nimport { Tour } from \"@/store/tours/types\";\nimport TourSetupModal from \"@/components/TourSetupModal.vue\";\n\nconst Areas = namespace(\"areas\");\nconst Tours = namespace(\"tours\");\n\n@Component({\n\tcomponents: {\n\t\t\"nav-header\": NavHeader,\n\t\t\"generic-table\": GenericTable,\n\t\t\"tour-modal\": TourSetupModal\n\t}\n})\nexport default class TourSetup extends Vue {\n\t/** Store Getter/Setter */\n\t@Getter getUserTenantGroupId: number;\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\n\t@Tours.Action fetchAllTours: any;\n\t@Tours.Action removeTour: any;\n\t@Tours.Action fetchDeviceList: any;\n\t@Tours.Action removeDevice: any;\n\t@Tours.Action searchDeviceList: any;\n\t@Tours.Getter getTour: any;\n\t@Tours.Getter getAllTours: any;\n\t@Tours.Getter getDeviceList: any;\n\t@Tours.Getter getSearchDevices: any;\n\t@Tours.Mutation addSearchDevices: any;\n\n\t@Tours.Mutation addDevice: any;\n\n\t@Areas.Action getAreaList: any;\n\t@Areas.Getter(\"getAreaList\") areaList!: any[];\n\n\tprivate isInvalid: boolean = true;\n\tprivate tourId: number = 0;\n\n\t// Modal display values\n\tprivate confirmModalVisible: boolean = false;\n\tprivate tourModalVisible: boolean = false;\n\tprivate detailsModalVisible: boolean = false;\n\n\tpublic $refs: Vue[\"$refs\"] & {\n\t\ttourSetupRef: TourSetupModal;\n\t};\n\n\tprivate currentTour: Tour = {\n\t\tgroupId: 0,\n\t\ttitle: \"\",\n\t\ttourId: 0,\n\t\ttourOrder: 0,\n\t\ttourSteps: [],\n\t\tfunctionality: null,\n\t\ttourStepsCount: 0,\n\t\tmatrixColumnSize: 3, \n\t\tmatrixRowSize: 3\n\t};\n\n\tprivate get IsTourManagementEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"VideoTours\"]);\n\t}\n\n\tprivate get tourGroupTitle(): string {\n\t\tconst area = this.areaList.find(y => y.groupID == this.currentTour.groupId);\n\t\treturn area ? area.title : \"Area not found.\";\n\t}\n\n\tprivate async mounted() {\n\t\tawait this.getAreaList();\n\t\tawait this.fetchAllTours();\n\t\tthis.tourId = 0;\n\t}\n\n\tprivate cloneTourTemplate(): Tour {\n\t\tconst tourTemplate: any = {\n\t\t\tgroupId: this.getUserTenantGroupId,\n\t\t\ttitle: \"\",\n\t\t\ttourId: 0,\n\t\t\ttourOrder: 0,\n\t\t\ttourSteps: [],\n\t\t\tfunctionality: null,\n\t\t\ttourStepsCount: 0,\n\t\t\tmatrixColumnSize: 3, \n\t\t\tmatrixRowSize: 3\n\t\t};\n\t\t// Deep cloned our template due to wanting it to be passed by VALUE not reference.\n\t\treturn cloneDeep(tourTemplate);\n\t}\n\n\t/** Cancel new tour modal */\n\tprivate cancel(): void {\n\t\tthis.tourModalVisible = false;\n\t\tthis.currentTour = this.cloneTourTemplate();\n\t\tthis.isInvalid = true;\n\t\tthis.tourId = 0;\n\t}\n\n\t/** Save new or update tour */\n\tprivate async save() {\n\t\tawait this.$refs.tourSetupRef.save();\n\t\tthis.cancel();\n\t}\n\n\tprivate editTourDetails(tourId: number) {\n\t\tthis.tourModalVisible = true;\n\t\tthis.tourId = tourId;\n\t}\n\n\tprivate modalRemoveTour(tourId: number): void {\n\t\tthis.currentTour = this.getTour(tourId);\n\t\tthis.confirmModalVisible = true;\n\t}\n\n\tprivate showDetailsModal(tourId: number): void {\n\t\tthis.currentTour = this.getTour(tourId);\n\t\tthis.detailsModalVisible = true;\n\t}\n\n\tprivate removeTourFromList(): void {\n\t\tthis.removeTour(this.currentTour.tourId);\n\t\tthis.currentTour = this.cloneTourTemplate();\n\t\tthis.confirmModalVisible = false;\n\t}\n\n\tprivate addTourSetup(): void {\n\t\tthis.tourModalVisible = true;\n\t\tthis.currentTour = this.cloneTourTemplate();\n\t}\n\n\t/** Generic table column headers */\n\tpublic columns: TableHeader[] = [\n\t\t{\n\t\t\ttitle: \"Tour Title\",\n\t\t\tkey: \"title\",\n\t\t\torder: 1,\n\t\t\tsortOrder: 0,\n\t\t\tsortOrderReversed: false,\n\t\t\tdescription: \"List of tours names\",\n\t\t\tsearchable: true,\n\t\t\tvisible: true,\n\t\t\tdataType: \"text\",\n\t\t\tisTermLabel: true\n\t\t},\n\t\t{\n\t\t\ttitle: \"Tour Steps\",\n\t\t\tkey: \"tourStepsCount\",\n\t\t\torder: 2,\n\t\t\tsortOrder: 0,\n\t\t\tsortOrderReversed: false,\n\t\t\tdescription: \"Number of Tour steps\",\n\t\t\tsearchable: false,\n\t\t\tvisible: true,\n\t\t\tdataType: \"text\",\n\t\t\tuseCustomCell: true\n\t\t},\n\t\t{\n\t\t\ttitle: \"\",\n\t\t\tkey: \"functionality\",\n\t\t\torder: 3,\n\t\t\tsortOrder: 0,\n\t\t\tsortOrderReversed: false,\n\t\t\tdescription: \"Edit or Delete\",\n\t\t\tsearchable: false,\n\t\t\tvisible: true,\n\t\t\tdataType: \"text\",\n\t\t\tuseCustomCell: true\n\t\t}\n\t];\n\n\tprivate validateSetup(value: any) {\n\t\tthis.isInvalid = value;\n\t}\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TourSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TourSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TourSetup.vue?vue&type=template&id=22df5bf8&scoped=true\"\nimport script from \"./TourSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./TourSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./TourSetup.vue?vue&type=style&index=0&id=22df5bf8&prod&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 \"22df5bf8\",\n null\n \n)\n\nexport default component.exports","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\"},[_c('nav-header',{attrs:{\"title\":'Permissions'}}),_c('div',{staticClass:\"permissions-container card-body fill-tabs\"},[_c('b-tabs',[_c('b-tab',{attrs:{\"title\":\"User Roles\"}},[_c('user-role-setup',{staticClass:\"tab-flex-content\",on:{\"triggerUpdate\":_vm.triggerGroupSetupRefresh}})],1),_c('b-tab',{attrs:{\"title\":\"User Groups\"}},[_c('user-group-setup',{ref:\"userGroupSetup\",staticClass:\"tab-flex-content\"})],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-alert',{staticClass:\"alert-margin-all\",attrs:{\"variant\":\"dark\",\"show\":\"\"}},[_vm._v(\" User Roles are lists of permissions. A user is not directly given a role - roles are assigned to groups, and users then are added to those groups. \")]),_c('generic-table',{ref:\"genericTable\",staticClass:\"flex-grow-1\",attrs:{\"id\":\"rolesTable\",\"term\":'User Role',\"columns\":_vm.roleColumns,\"modalItems\":_vm.roleModalItems,\"dataList\":_vm.rolesList,\"onSave\":_vm.updateUserRole,\"onDelete\":_vm.deleteUserRole,\"onAddNew\":_vm.updateUserRole,\"isSaveConfirmationEnabled\":_vm.isBillingEnabled,\"saveActionMessages\":_vm.saveActionMessages,\"saveActionErrors\":_vm.saveActionErrors,\"deleteActionMessages\":_vm.deleteActionMessages,\"isLoading\":_vm.isLoading}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.groupedPermissions),function(permissionGroup){return _c('div',{key:permissionGroup.title,staticClass:\"card m-5\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(_vm._s(permissionGroup.title))]),_c('div',{staticClass:\"card-body p-0\"},[(permissionGroup.title == 'Views')?_c('div',_vm._l((permissionGroup.permissions),function(permission){return _c('div',{key:permission.permissionId,staticClass:\"list-group-item d-flex\",attrs:{\"id\":'permission-' + permission.permissionId}},[(_vm.isPluginPermission(permission))?_c('div',[_vm._v(\" \"+_vm._s(_vm.getPluginName(permission))+\" \"),(_vm.isViewPluginPermission(permission))?_c('b-button-group',{staticClass:\"permission-button-group\",attrs:{\"size\":\"sm\"}},[_c('b-button',{attrs:{\"pressed\":permission.hasPermission},on:{\"update:pressed\":function($event){return _vm.$set(permission, \"hasPermission\", $event)},\"click\":function($event){return _vm.permissionChanged(permission)}}},[_vm._v(\" View \")]),_c('b-button',{attrs:{\"pressed\":permission.secondPermission.hasPermission},on:{\"update:pressed\":function($event){return _vm.$set(permission.secondPermission, \"hasPermission\", $event)},\"click\":function($event){return _vm.permissionChanged(permission.secondPermission)}}},[_vm._v(\" Interact \")])],1):_c('b-button-group',{staticClass:\"permission-button-group\",attrs:{\"size\":\"sm\"}},[_c('b-button',{attrs:{\"pressed\":permission.secondPermission.hasPermission},on:{\"update:pressed\":function($event){return _vm.$set(permission.secondPermission, \"hasPermission\", $event)},\"click\":function($event){return _vm.permissionChanged(permission.secondPermission)}}},[_vm._v(\" View \")]),_c('b-button',{attrs:{\"pressed\":permission.hasPermission},on:{\"update:pressed\":function($event){return _vm.$set(permission, \"hasPermission\", $event)},\"click\":function($event){return _vm.permissionChanged(permission)}}},[_vm._v(\" Interact \")])],1)],1):(!_vm.isPluginPermission(permission))?_c('div',[_c('b-form-checkbox',{class:{ 'col-6': permission.extendedValueDataType },on:{\"change\":function (change) { return _vm.permissionChangedCheckBox(permission, change); }},model:{value:(permission.hasPermission),callback:function ($$v) {_vm.$set(permission, \"hasPermission\", $$v)},expression:\"permission.hasPermission\"}},[_vm._v(\" \"+_vm._s(permission.description)+\" \")])],1):_vm._e()])}),0):_vm._l((permissionGroup.permissions),function(permission){return _c('div',{key:permission.permissionId,staticClass:\"list-group-item d-flex\",attrs:{\"id\":'permission-' + permission.permissionId}},[_c('b-form-checkbox',{class:{ 'col-6': permission.extendedValueDataType },attrs:{\"id\":'permission-checkbox-' + permission.permissionId,\"disabled\":_vm.readonly},on:{\"change\":function (change) { return _vm.permissionChangedCheckBox(permission, change); }},model:{value:(permission.hasPermission),callback:function ($$v) {_vm.$set(permission, \"hasPermission\", $$v)},expression:\"permission.hasPermission\"}},[_vm._v(\" \"+_vm._s(permission.description)+\" \"),(permission.billedPermission)?_c('i',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"fa fa-info-circle pl-1\",attrs:{\"title\":(\"Users with this permission count as \" + (permission.billedPermission) + \".\")}}):_vm._e()]),(permission.extendedValueDataType)?_c('div',{staticClass:\"col-6\"},[_c('b-form-group',{class:{ 'form-disabled': !permission.hasPermission },attrs:{\"label\":permission.extendedValueTitle}},[(permission.extendedValueDataType == 'number')?_c('b-form-input',{on:{\"input\":function($event){return _vm.permissionExtendedValueChanged(permission)}},model:{value:(permission.extended),callback:function ($$v) {_vm.$set(permission, \"extended\", $$v)},expression:\"permission.extended\"}}):_vm._e(),(permission.extendedValueDataType == 'routinggroup')?_c('vue-select',{staticClass:\"dark\",attrs:{\"label\":\"title\",\"options\":_vm.routingGroups,\"index\":\"routingGroupID\",\"reduce\":function (routingGroup) { return routingGroup.routingGroupID; }},on:{\"change\":function($event){return _vm.permissionExtendedValueChanged(permission)}},model:{value:(permission.extended),callback:function ($$v) {_vm.$set(permission, \"extended\", $$v)},expression:\"permission.extended\"}}):_vm._e(),(_vm.isEditSiteSetupPermitted && _vm.showAlarmQueueFilterRestrictions(permission))?_c('alarm-queue-filter-select',{attrs:{\"data-cy\":\"alarm-queue-filter-selection\",\"options\":_vm.alarmQueueFilters},on:{\"input\":function($event){return _vm.permissionExtendedValueChanged(permission)}},model:{value:(permission.extended),callback:function ($$v) {_vm.$set(permission, \"extended\", $$v)},expression:\"permission.extended\"}}):_vm._e()],1)],1):_vm._e()],1)})],2)])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select-3',{attrs:{\"options\":_vm.options,\"label\":\"title\",\"index\":\"alarmQueueFilterID\",\"reduce\":function (filterRestriction) { return filterRestriction.alarmQueueFilterID; },\"multiple\":\"\"},on:{\"input\":_vm.submitChange},model:{value:(_vm.selectedFilters),callback:function ($$v) {_vm.selectedFilters=$$v},expression:\"selectedFilters\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport { stringMixin } from \"@/mixins\";\r\nimport { AlarmQueueFilter } from \"@/store/eventqueue/types\";\r\nimport vSelect3 from \"vselect3\";\r\n\r\nconst { isNullOrWhitespace } = stringMixin.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vSelect3,\r\n\t}\r\n})\r\nexport default class AlarmQueueFilterSelect extends Vue {\r\n\t@Prop() public value: string;\r\n\t@Prop() public readonly options: AlarmQueueFilter[];\r\n\r\n\tprivate selectedFilters: number[] = [];\r\n\r\n\t@Watch(\"value\", { immediate: true})\r\n\tprivate valueChange(newValue: string): void {\r\n\t\ttry {\r\n\t\t\tthis.selectedFilters = JSON.parse(newValue);\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tconsole.error(\"Error parsing selected filters: \", e);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate submitChange(): void {\r\n\t\ttry {\r\n\t\t\tlet valueAsString = JSON.stringify(this.selectedFilters);\r\n\t\t\tthis.$emit(\"input\", valueAsString);\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tconsole.error(\"Error serializing selection: \" + e);\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueFilterSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueFilterSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmQueueFilterSelect.vue?vue&type=template&id=aebdfb3c\"\nimport script from \"./AlarmQueueFilterSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmQueueFilterSelect.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\n\r\nimport { Permission, PermissionExtended } from \"@/store/user-management/types\";\r\n\r\nimport vSelect from \"vue-select\";\r\nimport \"@/scripts/dictionary\";\r\nimport \"@/scripts/array-operations\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\nimport { SubscriptionBilledPermission, SubscriptionDto } from \"@/store/subscription/types\";\r\nimport api from \"@/services/api.service\";\r\nimport { AlarmQueueFilter } from \"@/store/eventqueue/types\";\r\nimport AlarmQueueFilterSelect from \"@/components/setup/users/AlarmQueueFilterSelect.vue\";\r\n\r\nconst UserManagement = namespace(\"userManagement\");\r\nconst eventQueue = namespace(\"eventqueue\");\r\nconst Subscription = namespace(\"subscription\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"alarm-queue-filter-select\": AlarmQueueFilterSelect\r\n\t}\r\n})\r\nexport default class UserRolePermissions extends Vue {\r\n\t@Prop({ type: Array, default: [] })\r\n\tpublic value: any[];\r\n\t@Prop({type: Boolean, default: false}) public readonly: boolean;\r\n\t@Getter(\"getPermissions\") userPermissions: UserPermissions;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t@UserManagement.Getter(\"getPermissions\") public permissions: Permission[];\r\n\t@eventQueue.Getter public routingGroups: any[];\r\n\t@eventQueue.Action public loadRoutingGroups: () => void;\r\n\r\n @Subscription.State subscription: SubscriptionDto;\r\n @Subscription.State billedUserPermissions: SubscriptionBilledPermission[];\r\n @Subscription.Action fetchBilledUserPermissions: any;\r\n\r\n\tcurrentPermissions: any = {};\r\n\r\n\t/**\r\n\t * Role permissions members\r\n\t */\r\n\tprivate _rolePermissions: PermissionExtended[] = [];\r\n\r\n\tprivate alarmQueueFilters: AlarmQueueFilter[] = [];\r\n\r\n\tprivate async mounted() {\r\n\t await this.fetchBilledUserPermissions();\r\n\r\n\t\tif(this.isEditSiteSetupPermitted) {\r\n\t\t\tawait this.fetchTenantAlarmQueueFilters();\r\n\t\t}\r\n }\r\n\r\n\tprivate get isEditSiteSetupPermitted(): boolean {\r\n\t\treturn this.userPermissions.canEditSiteSetup;\r\n\t}\r\n\r\n\tprivate async fetchTenantAlarmQueueFilters(): Promise {\r\n\t\ttry {\r\n\t\t\tthis.alarmQueueFilters = await api.loadAlarmQueueFiltersForTenant();\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tthis.alarmQueueFilters = [];\r\n\t\t\tconsole.error(`Failed to get alarm queue filters for tenant: `, e);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate addRolePermission(permission: PermissionExtended) {\r\n\t\tthis._rolePermissions.push(permission);\r\n\t}\r\n\r\n\tprivate removeRolePermission(permission: PermissionExtended) {\r\n\t\tthis._rolePermissions = this._rolePermissions.filter(rp => rp.permissionId !== permission.permissionId);\r\n\t}\r\n\r\n\tprivate updateOrAddExtendedRolePermission(permission: PermissionExtended) {\r\n\t\t// check if we already have a permission in the list\r\n\t\tlet existing: PermissionExtended = this._rolePermissions.firstOrDefault(\r\n\t\t\trp => rp.permissionId === permission.permissionId\r\n\t\t);\r\n\r\n\t\tif (existing) {\r\n\t\t\t// update it\r\n\t\t\texisting.extended = permission.extended;\r\n\t\t} else {\r\n\t\t\t// add it to the list\r\n\t\t\tthis.addRolePermission(permission);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Emit input and update the related arrays\r\n\t */\r\n\tprivate raiseValueChanged() {\r\n\t\tthis.$emit(\"input\", this._rolePermissions);\r\n\t\tthis.onValueChanged(this._rolePermissions);\r\n\t}\r\n\r\n\t@Watch(\"value\", { deep: true, immediate: true })\r\n\tonValueChanged(newValue: PermissionExtended[]) {\r\n\t\tthis._rolePermissions = [...newValue];\r\n\t\tthis.currentPermissions = newValue ? newValue.toDictionary(\"permissionId\") : {};\r\n\t}\r\n\r\n\t/*\r\n\t *\tMatches permissions against value model and groups by permissions category\r\n\t */\r\n\tprivate get groupedPermissions(): any {\r\n\t\tif (!this.permissions) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tconst valueDictionary = this.currentPermissions;\r\n\r\n\t\tconst rolePermissions: PermissionExtended[] = [];\r\n\t\tthis.permissions.forEach(permission => {\r\n\t\t\tconst permissionValue = valueDictionary[permission.permissionId.toString()];\r\n\r\n\t\t\tlet tempPermission: PermissionExtended = {\r\n\t\t\t\tpermissionId: permission.permissionId,\r\n\t\t\t\ttitle: permission.title,\r\n\t\t\t\tdescription: permission.description,\r\n\t\t\t\thasPermission: permissionValue ? true : false,\r\n\t\t\t\textendedValueDataType: permission.extendedValueDataType,\r\n\t\t\t\textendedValueTitle: permission.extendedValueTitle,\r\n\t\t\t\textended: permissionValue ? permissionValue.extended : null,\r\n\t\t\t\tcategory: permission.category,\r\n\t\t\t\tsecondPermission: null,\r\n billedPermission: this.getBilledPermission(permission.permissionId)\r\n\t\t\t};\r\n\r\n\t\t\tif (this.isPluginPermission(tempPermission)) {\r\n\t\t\t\tvar pluginPerm = rolePermissions.filter(\r\n\t\t\t\t\te =>\r\n\t\t\t\t\t\te.title.split(\"/\")[0] === tempPermission.title.split(\"/\")[0] && e.title !== tempPermission.title\r\n\t\t\t\t);\r\n\r\n\t\t\t\tif (pluginPerm.length > 0) {\r\n\t\t\t\t\tpluginPerm[0].secondPermission = tempPermission;\r\n\t\t\t\t} else {\r\n\t\t\t\t\trolePermissions.push(tempPermission);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\trolePermissions.push(tempPermission);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Group by category\r\n\t\tconst categories = rolePermissions.reduce((group: any, permission: Permission) => {\r\n\t\t\tvar section = permission.category ? permission.category : \"General\";\r\n\t\t\t(group[section] = group[section] || []).push(permission);\r\n\t\t\treturn group;\r\n\t\t}, {});\r\n\r\n\t\t// Sort\r\n\t\treturn Object.keys(categories)\r\n\t\t\t.map(categoryName => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttitle: categoryName,\r\n\t\t\t\t\tpermissions: categories[categoryName]\r\n\t\t\t\t};\r\n\t\t\t})\r\n\t\t\t.sort((a, b) => (a.title > b.title ? 1 : a.title < b.title ? -1 : 0));\r\n\t}\r\n\r\n\tprivate getBilledPermission(permissionId: number) {\r\n\t\tlet isBillingEnabled = get(this.featuresList, [\"Billing\"]);\r\n\t\tif (!isBillingEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.billedUserPermissions.length === 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tconst operatorPermissionId = this.billedUserPermissions.find(up => up.title === \"Operators\").permissionID;\r\n\t\tconst mobileOfficerPermissionId = this.billedUserPermissions.find(up => up.title === \"Mobile Officers\").permissionID;\r\n\r\n\t\tif (permissionId === operatorPermissionId) {\r\n\t\t\treturn \"Operators\";\r\n\t\t}\r\n\r\n\t\tif (permissionId === mobileOfficerPermissionId) {\r\n\t\t\treturn \"Mobile Officers\";\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\tpublic permissionChangedCheckBox(permission: any, checked: boolean) {\r\n\t\tlet permissionId = permission.permissionId;\r\n\t\t// if checked\r\n\t\tif (checked) {\r\n\t\t\tpermission.hasPermission = true;\r\n\t\t\t// does this permission exist in our list?\r\n\t\t\tif (this._rolePermissions.some(p => p.permissionId === permissionId)) {\r\n\t\t\t\t// do nothing\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.addRolePermission(permission);\r\n\t\t} else {\r\n\t\t\tpermission.hasPermission = false;\r\n\t\t\t// remove permission from list\r\n\t\t\tthis.removeRolePermission(permission);\r\n\t\t}\r\n\r\n\t\t// notify anything that is listening that the array has been updated\r\n\t\tthis.raiseValueChanged();\r\n\t}\r\n\r\n\t/*\r\n\t *\tAdds or removes permissions from model.\r\n\t */\r\n\tpublic permissionChanged(permission: any) {\r\n\t\tlet permissionId = permission.permissionId;\r\n\t\t// if checked\r\n\t\tif (permission.hasPermission) {\r\n\t\t\t// does this permission exist in our list?\r\n\t\t\tif (this._rolePermissions.some(p => p.permissionId === permissionId)) {\r\n\t\t\t\t// do nothing\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.addRolePermission(permission);\r\n\t\t} else {\r\n\t\t\t// remove permission from list\r\n\t\t\tthis.removeRolePermission(permission);\r\n\t\t}\r\n\r\n\t\t// notify anything that is listening that the array has been updated\r\n\t\tthis.raiseValueChanged();\r\n\t}\r\n\r\n\t/*\r\n\t *\tUpdate extended value for permissions\r\n\t */\r\n\tprivate permissionExtendedValueChanged(permission: any) {\r\n\t\tthis.updateOrAddExtendedRolePermission(permission);\r\n\t\tthis.raiseValueChanged();\r\n\t}\r\n\r\n\t/*\r\n\t * Checks if the permission is related to a plugin\r\n\t */\r\n\tpublic isPluginPermission(permission) {\r\n\t\treturn permission.title.includes(\"/CanBeViewed\") || permission.title.includes(\"/CanBeInteractedWith\");\r\n\t}\r\n\r\n\t/*\r\n\t * Checks which plugin permission is given\r\n\t */\r\n\tpublic isViewPluginPermission(permission) {\r\n\t\treturn permission.title.includes(\"/CanBeViewed\");\r\n\t}\r\n\r\n\tprivate isAlarmQueueFilterRestrictionsEnabled(): Promise {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"AlarmQueueFilters\", \"AlarmQueueFilterRestrictions\"]);\r\n\t}\r\n\r\n\tprivate showAlarmQueueFilterRestrictions(permission: PermissionExtended): boolean {\r\n\t\treturn this.isAlarmQueueFilterRestrictionsEnabled() && permission.extendedValueDataType == 'alarmQueueFilterRestrictions';\r\n\t}\r\n\r\n\t/*\r\n\t * Returns the permission name in a readable format\r\n\t */\r\n\tpublic getPluginName(permission) {\r\n\t\tvar title = permission.title\r\n\t\t\t.split(\"/\")[0]\r\n\t\t\t.replace(/([A-Z])/g, \" $1\")\r\n\t\t\t.trim();\r\n\t\ttitle = title.charAt(0).toUpperCase() + title.slice(1);\r\n\t\treturn title + \" Plugin\";\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRolePermissions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRolePermissions.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserRolePermissions.vue?vue&type=template&id=2fd66fc6\"\nimport script from \"./UserRolePermissions.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRolePermissions.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\n\r\nimport GenericTable, {\tTableHeader } from \"@/components/table/generic-table.vue\";\r\nimport { ModalItem } from \"@/components/table/generic-update-modal.vue\";\r\nimport UserRolePermissions from \"./UserRolePermissions.vue\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport { UserRole } from \"@/store/user-management/types\";\r\n\r\nconst UserManagement = namespace(\"userManagement\");\r\nconst Subscription = namespace(\"subscription\");\r\n\r\nimport api from \"@/services/api.service\";\r\n\r\nimport \"@/scripts/array-operations\";\r\nimport { get } from \"lodash\";\r\nimport { SubscriptionDto } from \"@/store/subscription/types\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"generic-table\": GenericTable\r\n\t}\r\n})\r\nexport default class UserRoleSetup extends Vue {\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t@UserManagement.Action public getUserRoles: () => UserRole[];\r\n\t@UserManagement.Action public loadPermissions: () => void;\r\n\t@UserManagement.Action fetchPermissionsState: () => Promise;\r\n\t@Subscription.Action fetchSubscription: any;\r\n\t@Subscription.State subscription: SubscriptionDto;\r\n\t@Getter getUserTenantGroupId: number;\r\n\r\n\tpublic rolesList: UserRole[] = [];\r\n\tpublic roleColumns: TableHeader[] = [\r\n\t\t{\r\n\t\t\ttitle: \"Role Name\",\r\n\t\t\tkey: \"title\",\r\n\t\t\torder: 1,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The role name\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n\t\t\tisTermLabel: true\r\n\t\t},\r\n\t];\r\n\r\n\tpublic roleModalItems: ModalItem[] = [\r\n\t\t{\r\n\t\t\ttitle: \"Role Name\",\r\n\t\t\tkey: \"title\",\r\n\t\t\tdataType: \"text\",\r\n\t\t\trequired: true\r\n\t\t} as ModalItem,\r\n\t\t{\r\n\t\t\ttitle: \"Permissions\",\r\n\t\t\tkey: \"permissions\",\r\n\t\t\tdataType: \"component\",\r\n\t\t\tdata: UserRolePermissions,\r\n\t\t\tdefaultValue: []\r\n\t\t}\r\n\t];\r\n\r\n\tprivate isLoading: boolean = false;\r\n\r\n\tpublic async mounted () {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.rolesList = await this.getUserRoles();\r\n\t\t\tawait this.fetchSubscription(this.getUserTenantGroupId);\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.log(\"Unexpected error loading initial state: \" + ex);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async updateUserRole (userRole) {\r\n\t\tif (userRole) {\r\n\t\t\ttry {\r\n\t\t\t\tthis.isLoading = true;\r\n\t\t\t\tawait api.saveUserRole(userRole);\r\n\t\t\t\tawait this.updateState();\r\n\t\t\t} catch (ex) {\r\n\t\t\t\tif(ex.response && ex.response.status === 566){\r\n\t\t\t\t\tVue.prototype.$notify({\r\n\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\ttitle: \"User role not updated\",\r\n\t\t\t\t\t\ttext: ex.response.data\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log(\"Unexpected error updating user role: \" + ex);\r\n\t\t\t\t\tthrow ex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tfinally {\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async deleteUserRole (deleteRole: UserRole) {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tawait api.deleteUserRole(deleteRole.userRoleId);\r\n\t\t\tawait this.updateState();\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.log(\"Unexpected error deleting user role: \" + ex);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async saveActionMessages(userRoleToSave) {\r\n\t\tif (!userRoleToSave || !userRoleToSave.userRoleId || this.rolesList.length == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet currentUserRole = this.rolesList.find(r => r.userRoleId == userRoleToSave.userRoleId);\r\n\t\tlet rolesCurrentUserSubscriptionUsageCount = await api.getSubscriptionUsageForUserRole(currentUserRole);\r\n\t\tlet updatedRolesUserSubscriptionUsageCount = await api.getSubscriptionUsageForUserRole(userRoleToSave);\r\n\r\n\t\tlet usageDifference = {\r\n\t\t\toperators: updatedRolesUserSubscriptionUsageCount.operators - rolesCurrentUserSubscriptionUsageCount.operators,\r\n\t\t\tmobileOfficers: updatedRolesUserSubscriptionUsageCount.mobileOfficers - rolesCurrentUserSubscriptionUsageCount.mobileOfficers,\r\n\t\t}\r\n\r\n\t\tlet totalNumberOfUsers = await api.getUserCountForUserRole(userRoleToSave.userRoleId);\r\n\t\tif (totalNumberOfUsers > 0) {\r\n\t\t\tlet result = [];\r\n\t\t\tif (totalNumberOfUsers == 1) {\r\n\t\t\t\tresult.push(`Update the permissions for ${totalNumberOfUsers} user.`);\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(`Update the permissions for ${totalNumberOfUsers} users.`);\r\n\t\t\t}\r\n\t\t\tif (usageDifference.operators !== 0) {\r\n\t\t\t\tresult.push(`Change the number of Operators used by your subscription from\r\n\t\t\t\t\t${this.subscription.limitedSubscription ? this.subscription.operators + \"/\" + this.subscription.operatorsLimit : this.subscription.operators} \r\n\t\t\t\t\tto \r\n\t\t\t\t\t${this.subscription.operators + usageDifference.operators + (this.subscription.limitedSubscription ? \"/\" + this.subscription.operatorsLimit: \"\")}.`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (usageDifference.mobileOfficers !== 0) {\r\n\t\t\t\tresult.push(`Change the number of Mobile Officers used by your subscription from \r\n\t\t\t\t\t${this.subscription.limitedSubscription ? this.subscription.mobileOfficers + \"/\" + this.subscription.mobileOfficersLimit : this.subscription.mobileOfficers} \r\n\t\t\t\t\tto \r\n\t\t\t\t\t${this.subscription.mobileOfficers + usageDifference.mobileOfficers + (this.subscription.limitedSubscription ? \"/\" + this.subscription.mobileOfficersLimit: \"\")}.`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async saveActionErrors(userRoleToSave): Promise {\r\n\t\tif (!userRoleToSave || !userRoleToSave.userRoleId || this.rolesList.length == 0 || !this.subscription.limitedSubscription) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\tlet currentUserRole = this.rolesList.find(r => r.userRoleId == userRoleToSave.userRoleId);\r\n\t\tlet rolesCurrentUserSubscriptionUsageCount = await api.getSubscriptionUsageForUserRole(currentUserRole);\r\n\t\tlet updatedRolesUserSubscriptionUsageCount = await api.getSubscriptionUsageForUserRole(userRoleToSave);\r\n\r\n\t\tlet usageDifference = {\r\n\t\t\toperators: updatedRolesUserSubscriptionUsageCount.operators - rolesCurrentUserSubscriptionUsageCount.operators,\r\n\t\t\tmobileOfficers: updatedRolesUserSubscriptionUsageCount.mobileOfficers - rolesCurrentUserSubscriptionUsageCount.mobileOfficers,\r\n\t\t}\r\n\r\n\t\tlet totalNumberOfUsers = await api.getUserCountForUserRole(userRoleToSave.userRoleId);\r\n\t\tif (totalNumberOfUsers > 0) {\r\n\t\t\tlet result = [];\r\n\t\t\tif (this.subscription.operators + usageDifference.operators > this.subscription.operatorsLimit) {\r\n\t\t\t\tresult.push(`Operator usage limit of ${this.subscription.operatorsLimit} will be exceeded`)\r\n\t\t\t}\r\n\t\t\tif (this.subscription.mobileOfficers + usageDifference.mobileOfficers > this.subscription.mobileOfficersLimit) {\r\n\t\t\t\tresult.push(`Mobile Officer usage limit of ${this.subscription.mobileOfficers} will be exceeded`)\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async deleteActionMessages(userRoleToDelete) {\r\n\t\tif (!userRoleToDelete || !userRoleToDelete.userRoleId || this.rolesList.length == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet updatedRolesUserSubscriptionUsageCount = await api.getSubscriptionUsageForUserRole(userRoleToDelete);\r\n\t\tlet totalNumberOfUsers = await api.getUserCountForUserRole(userRoleToDelete.userRoleId);\r\n\t\tif (totalNumberOfUsers > 0) {\r\n\t\t\tlet result = [];\r\n\t\t\tif (totalNumberOfUsers == 1) {\r\n\t\t\t\tresult.push(`Update the permissions for ${totalNumberOfUsers} user.`);\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(`Update the permissions for ${totalNumberOfUsers} users.`);\r\n\t\t\t}\r\n\t\t\tif (updatedRolesUserSubscriptionUsageCount.operators > 0) {\r\n\t\t\t\tresult.push(`Reduce the number of Operators used by your subscription from \r\n\t\t\t\t\t${this.subscription.limitedSubscription ? this.subscription.operators + \"/\" + this.subscription.operatorsLimit : this.subscription.operators} \r\n\t\t\t\t\tto \r\n\t\t\t\t\t${this.subscription.operators - updatedRolesUserSubscriptionUsageCount.operators + (this.subscription.limitedSubscription ? \"/\" + this.subscription.operatorsLimit: \"\")}.`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (updatedRolesUserSubscriptionUsageCount.mobileOfficers > 0) {\r\n\t\t\t\tresult.push(`Reduce the number of Mobile Officers used by your subscription from \r\n\t\t\t\t\t${this.subscription.limitedSubscription ? this.subscription.mobileOfficers + \"/\" + this.subscription.mobileOfficersLimit : this.subscription.mobileOfficers} \r\n\t\t\t\t\tto \r\n\t\t\t\t\t${this.subscription.mobileOfficers - updatedRolesUserSubscriptionUsageCount.mobileOfficers + (this.subscription.limitedSubscription ? \"/\" + this.subscription.mobileOfficersLimit: \"\")}.`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isBillingEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Billing\"]);\r\n\t}\r\n\r\n\tprivate async updateState() {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.$emit(\"triggerUpdate\");\r\n\t\t\tthis.rolesList = await this.getUserRoles();\r\n\t\t\tawait this.fetchSubscription(this.getUserTenantGroupId);\r\n\t\t\tawait this.fetchPermissionsState();\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.log(\"Unexpected exception updating component state: \" + ex);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRoleSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserRoleSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserRoleSetup.vue?vue&type=template&id=620a4f56\"\nimport script from \"./UserRoleSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./UserRoleSetup.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-alert',{staticClass:\"alert-margin-all\",attrs:{\"variant\":\"dark\",\"show\":\"\"}},[_vm._v(\" Users can be assigned to user groups. User groups define what permissions a user has, and where they apply to. \")]),_c('generic-table',{ref:\"genericTable\",staticClass:\"flex-grow-1\",attrs:{\"id\":\"groupTable\",\"term\":'User Group',\"columns\":_vm.groupColumns,\"modalItems\":_vm.groupModalItems(),\"dataList\":_vm.userGroupsList,\"onSave\":_vm.updateUserGroup,\"onDelete\":_vm.deleteUserGroup,\"onAddNew\":_vm.updateUserGroup,\"isSaveConfirmationEnabled\":_vm.isBillingEnabled,\"saveActionMessages\":_vm.saveActionMessages,\"saveActionErrors\":_vm.saveActionErrors,\"deleteActionMessages\":_vm.deleteActionMessages,\"isLoading\":_vm.isLoading,\"isManagedExternally\":_vm.isSuiteEnabled},scopedSlots:_vm._u([{key:\"roles\",fn:function(slotProps){return _vm._l((slotProps.row.roles),function(role){return _c('span',{key:slotProps.row.userGroupId + '-' + (role ? role.userRoleId : -1).toString()\n\t\t\t\t\t+ '-' + (role ? role.groupId : -1).toString(),staticClass:\"badge badge-pill badge-primary m-r-10\"},[(role)?_c('span',[_vm._v(_vm._s(_vm.getAreaTitle(role.groupId))+\" : \"+_vm._s(role.userRoleId === -1 ? \"Administrator\" : _vm.getUserRoleTitle(role.userRoleId)))]):_vm._e()])})}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._m(0),_vm._l((_vm.userGroupRoles),function(userGroupRole,index){return _c('div',{key:index,staticClass:\"row align-items-center\",attrs:{\"id\":'userGroupRole-' + userGroupRole.groupId}},[_c('area-tree-select',{staticClass:\"col-6\",attrs:{\"reduce\":function (g) { return g.id; },\"append-to-body\":true,\"readonly\":_vm.readonly,\"clearable\":false},model:{value:(userGroupRole.groupId),callback:function ($$v) {_vm.$set(userGroupRole, \"groupId\", $$v)},expression:\"userGroupRole.groupId\"}}),_c('v-select3',{staticClass:\"col-4\",attrs:{\"label\":\"title\",\"options\":_vm.userRoles,\"index\":\"userRoleId\",\"reduce\":function (userRole) { return userRole.userRoleId; },\"disabled\":_vm.readonly,\"clearable\":false,\"appendToBody\":\"\"},model:{value:(userGroupRole.userRoleId),callback:function ($$v) {_vm.$set(userGroupRole, \"userRoleId\", $$v)},expression:\"userGroupRole.userRoleId\"}}),_c('div',{staticClass:\"col-1\",staticStyle:{\"text-align\":\"center\"}},[_c('b-checkbox',{staticClass:\"table-custom-checkbox\",attrs:{\"disabled\":_vm.readonly},model:{value:(userGroupRole.inherit),callback:function ($$v) {_vm.$set(userGroupRole, \"inherit\", $$v)},expression:\"userGroupRole.inherit\"}})],1),_c('div',{staticClass:\"col-1\"},[(!_vm.readonly)?_c('i',{staticClass:\"hover-icon fas fa-times\",attrs:{\"data-cy\":\"remove-button\"},on:{\"click\":function($event){return _vm.userGroupRoles.remove(userGroupRole)}}}):_vm._e()])],1)}),_c('div',{staticClass:\"row m-t-10 align-items-center\"},[_c('div',{staticClass:\"col-11\"}),_c('div',{staticClass:\"col-1\"},[(!_vm.readonly)?_c('i',{staticClass:\"hover-icon fas fa-plus-circle\",on:{\"click\":_vm.addNew}}):_vm._e()])])],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-6\"},[_vm._v(\" Area: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('div',{staticClass:\"col-4\"},[_vm._v(\" Role: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('div',{staticClass:\"col-2\"},[_vm._v(\"Inherit:\")])])}]\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\nimport { Getter, namespace, State } from \"vuex-class\";\nimport vselect3 from \"vselect3\";\n\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\nimport { UserGroupRole, UserRole } from \"@/store/user-management/types\";\n\nconst UserManagement = namespace(\"userManagement\");\nconst Areas = namespace(\"areas\");\n\n@Component({\n\tcomponents: {\n\t\t\"v-select3\": vselect3,\n\t\t\"area-tree-select\": AreaTreeSelect\n\t}\n})\nexport default class UserGroupRoles extends Vue {\n\t@Prop({ type: Array, default: [] })\n\tpublic value: UserGroupRole[];\n\n\t@Prop({type: Boolean, default: false})\n\tprivate readonly: Boolean;\n\n\t@UserManagement.Getter(\"getUserRoles\") public userRoles: UserRole[];\n\t@Areas.Action fetchAreaDictionary: () => Promise;\n\t@Getter getUserTenantGroupId: number;\n\n\tprivate userGroupRoles: any = [];\n\n\tprivate mounted() {\n\t\tthis.userGroupRoles = this.value.map(i => {\n\t\t\treturn {\n\t\t\t\tuserGroupId: i.userGroupId,\n\t\t\t\tgroupId: i.groupId,\n\t\t\t\tuserRoleId: i.userRoleId,\n\t\t\t\tinherit: i.inherit\n\t\t\t}\n\t\t});\n\n\t\tif (this.userGroupRoles.length === 0) {\n\t\t\tthis.userGroupRoles.push({\n\t\t\t\tuserGroupId: 0,\n\t\t\t\tgroupId: this.getUserTenantGroupId,\n\t\t\t\tuserRoleId: 0,\n\t\t\t\tinherit: true\n\t\t\t})\n\t\t}\n\t}\n\n\tprivate addNew() {\n\t\tconst newUserGroup = {\n\t\t\tuserGroupId: 0,\n\t\t\tgroupId: this.getUserTenantGroupId,\n\t\t\tuserRoleId: 0,\n\t\t\tinherit: true,\n\t\t};\n\n\t\tthis.userGroupRoles.push(newUserGroup);\n\t}\n\n\t@Watch(\"userGroupRoles\", { deep: true })\n\tprivate userGroupRolesUpdated() {\n\t\tthis.$emit(\"input\", this.userGroupRoles);\n\t}\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGroupRoles.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGroupRoles.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserGroupRoles.vue?vue&type=template&id=0fbd22d5\"\nimport script from \"./UserGroupRoles.vue?vue&type=script&lang=ts\"\nexport * from \"./UserGroupRoles.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { get } from \"lodash\";\r\n\r\nimport { UserPermissions, FeaturesList } from \"@/store/types\";\r\nimport { UserGroup } from \"@/store/user-management/types\";\r\nimport { SubscriptionDto } from \"@/store/subscription/types\";\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport { ModalItem } from \"@/components/table/generic-update-modal.vue\";\r\nimport UserGroupRoles from \"./UserGroupRoles.vue\";\r\nimport vselect3 from \"vselect3\";\r\n\r\nconst UserManagement = namespace(\"userManagement\");\r\nconst Subscription = namespace(\"subscription\");\r\nconst Areas = namespace(\"areas\");\r\n\r\nimport api from \"@/services/api.service\";\r\n\r\nexport interface UserGroupEx extends UserGroup {\r\n\texternalIdsArray?: string[]\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"generic-table\": GenericTable\r\n\t}\r\n})\r\nexport default class UserGroupSetup extends Vue {\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getUserTenantGroupId: number;\r\n\r\n\t@UserManagement.Getter getUserGroupTitle: (id) => string;\r\n\t@UserManagement.Getter getUserRoleTitle: (id) => string;\r\n\t@UserManagement.Action fetchPermissionsState: () => Promise;\r\n\r\n\t@Subscription.Action fetchSubscription: (id: number) => Promise;\r\n\t@Subscription.State subscription: SubscriptionDto;\r\n\t@Areas.Getter getAreaTitle: (id) => string;\r\n\r\n\tprivate userGroupsList: UserGroupEx[] = [];\r\n\r\n\tprivate groupColumns: TableHeader[] = [\r\n\t\t{\r\n\t\t\ttitle: \"Group Name\",\r\n\t\t\tkey: \"title\",\r\n\t\t\torder: 1,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The user group name\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n\t\t\tisTermLabel: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Roles\",\r\n\t\t\tkey: \"roles\",\r\n\t\t\torder: 2,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"Areas roles\",\r\n\t\t\tsearchable: false,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"list\",\r\n\t\t\tuseCustomCell: true\r\n\t\t}\r\n\t];\r\n\r\n\tprivate groupModalItems() {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Group Names\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\trequired: true,\r\n\t\t\t\treadOnly: this.isSuiteEnabled,\r\n\t\t\t} as ModalItem,\r\n\t\t\t{\r\n\t\t\t\ttitle: \"External Ids\",\r\n\t\t\t\tkey: \"externalIdsArray\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: vselect3,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\t\"create-option\": id => id,\r\n\t\t\t\t\tplaceholder: \"External Ids\",\r\n\t\t\t\t\ttaggable: true,\r\n\t\t\t\t\tappendToBody: true,\r\n\t\t\t\t\tmultiple: true,\r\n\t\t\t\t},\r\n\t\t\t\trequired: false,\r\n\t\t\t\tdescription: \"External ids to match during syncing\",\r\n\t\t\t\tvisible: this.syncSetupEnabled,\r\n\t\t\t\treadOnly: this.isSuiteEnabled\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Roles\",\r\n\t\t\t\tkey: \"roles\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: UserGroupRoles,\r\n\t\t\t\tdefaultValue: [],\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tmultiple: true,\r\n\t\t\t\t\trequiredFields: [{\r\n\t\t\t\t\t\tkey: \"userRoleId\", isSet: (value) => {\r\n\t\t\t\t\t\t\treturn value && value !== 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}]\r\n\t\t\t\t},\r\n\t\t\t\trequired: true\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\tprivate isLoading: boolean = false;\r\n\r\n\tpublic async loadState(): Promise\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tawait this.retrieveUserGroups();\r\n\t\t\tawait this.fetchSubscription(this.getUserTenantGroupId);\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.error(\"Unexpected error loading data: \" + ex);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async mounted() {\r\n\t\tawait this.loadState();\r\n\t}\r\n\r\n\tprivate get syncSetupEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"AdvancedSetup\", \"SyncSystem\"]);\r\n\t}\r\n\r\n\tprivate async updateUserGroup(userGroup: UserGroupEx) {\r\n\t\tif (userGroup) {\r\n\t\t\ttry {\r\n\t\t\t\tthis.isLoading = true;\r\n\t\t\t\tif (userGroup.externalIdsArray && userGroup.externalIdsArray.length > 0){\r\n\t\t\t\t\ttry\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tuserGroup.externalIds = JSON.stringify(userGroup.externalIdsArray);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcatch(er)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tconsole.error(er)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse\r\n\t\t\t\t{\r\n\t\t\t\t\tuserGroup.externalIds = \"[]\";\r\n\t\t\t\t}\r\n\t\t\t\tawait api.saveUserGroup(userGroup);\r\n\t\t\t\tawait this.updateState();\r\n\t\t\t\tawait this.fetchSubscription(this.getUserTenantGroupId);\r\n\t\t\t} catch (ex) {\r\n\t\t\t\tif(ex.response && ex.response.status === 566){\r\n\t\t\t\t\tVue.prototype.$notify({\r\n\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\ttitle: \"User group not updated. \",\r\n\t\t\t\t\t\ttext: ex.response.data\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log(\"Unexpected error updating User Group: \" + ex);\r\n\t\t\t\t\tthrow ex;\r\n\t\t\t\t}\r\n\t\t\t\tconsole.log(\"Unexpected error updating User Group: \" + ex);\r\n\t\t\t} finally {\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async deleteUserGroup(deleteGroup: UserGroup) {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tawait api.deleteUserGroup(deleteGroup.userGroupId);\r\n\t\t\tawait this.updateState();\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.log(\"Unexpected error deleting User Group: \" + ex);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async saveActionMessages(userGroupToSave) {\r\n\t\tif (!userGroupToSave || !userGroupToSave.userGroupId || this.userGroupsList.length == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet currentUserGroup = this.userGroupsList.find(r => r.userGroupId == userGroupToSave.userGroupId);\r\n\r\n\t\tlet groupsCurrentUserSubscriptionUsageCount = await api.getSubscriptionUsageForUserGroup(currentUserGroup);\r\n\t\tlet updatedGroupsUserSubscriptionUsageCount = await api.getSubscriptionUsageForUserGroup(userGroupToSave);\r\n\r\n\t\tlet usageDifference = {\r\n\t\t\toperators: updatedGroupsUserSubscriptionUsageCount.operators - groupsCurrentUserSubscriptionUsageCount.operators,\r\n\t\t\tmobileOfficers: updatedGroupsUserSubscriptionUsageCount.mobileOfficers - groupsCurrentUserSubscriptionUsageCount.mobileOfficers,\r\n\t\t}\r\n\r\n\t\tlet totalNumberOfUsers = await api.getUserCountForUserGroup(userGroupToSave.userGroupId);\r\n\t\tif (totalNumberOfUsers > 0) {\r\n\t\t\tlet result = [];\r\n\t\t\tif (totalNumberOfUsers == 1) {\r\n\t\t\t\tresult.push(`Update the permissions for ${totalNumberOfUsers} user.`);\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(`Update the permissions for ${totalNumberOfUsers} users.`);\r\n\t\t\t}\r\n\t\t\tif (usageDifference.operators !== 0) {\r\n\t\t\t\tresult.push(`Change the number of Operators used by your subscription from\r\n\t\t\t\t\t${this.subscription.limitedSubscription ? this.subscription.operators + \"/\" + this.subscription.operatorsLimit : this.subscription.operators}\r\n\t\t\t\t\tto\r\n\t\t\t\t\t${this.subscription.operators + usageDifference.operators + (this.subscription.limitedSubscription ? \"/\" + this.subscription.operatorsLimit: \"\")}.`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (usageDifference.mobileOfficers !== 0) {\r\n\t\t\t\tresult.push(`Change the number of Mobile Officers used by your subscription from\r\n\t\t\t\t\t${this.subscription.limitedSubscription ? this.subscription.mobileOfficers + \"/\" + this.subscription.mobileOfficersLimit : this.subscription.mobileOfficers}\r\n\t\t\t\t\tto\r\n\t\t\t\t\t${this.subscription.mobileOfficers + usageDifference.mobileOfficers + (this.subscription.limitedSubscription ? \"/\" + this.subscription.operatorsLimit: \"\")}.`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async saveActionErrors(userGroupToSave): Promise {\r\n\t\tif (!userGroupToSave || !userGroupToSave.userGroupId || this.userGroupsList.length == 0 || !this.subscription.limitedSubscription) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet currentUserGroup = this.userGroupsList.find(r => r.userGroupId == userGroupToSave.userGroupId);\r\n\t\tlet groupsCurrentUserSubscriptionUsageCount = await api.getSubscriptionUsageForUserGroup(currentUserGroup);\r\n\t\tlet updatedGroupsUserSubscriptionUsageCount = await api.getSubscriptionUsageForUserGroup(userGroupToSave);\r\n\t\tlet usageDifference = {\r\n\t\t\toperators: updatedGroupsUserSubscriptionUsageCount.operators - groupsCurrentUserSubscriptionUsageCount.operators,\r\n\t\t\tmobileOfficers: updatedGroupsUserSubscriptionUsageCount.mobileOfficers - groupsCurrentUserSubscriptionUsageCount.mobileOfficers,\r\n\t\t}\r\n\r\n\t\tlet totalNumberOfUsers = await api.getUserCountForUserGroup(userGroupToSave.userGroupId);\r\n\t\tif (totalNumberOfUsers > 0) {\r\n\t\t\tlet result = [];\r\n\t\t\tif (this.subscription.operators + usageDifference.operators > this.subscription.operatorsLimit) {\r\n\t\t\t\tresult.push(`Operator usage limit of ${this.subscription.operatorsLimit} will be exceeded`)\r\n\t\t\t}\r\n\t\t\tif (this.subscription.mobileOfficers + usageDifference.mobileOfficers > this.subscription.mobileOfficersLimit) {\r\n\t\t\t\tresult.push(`Mobile Officer usage limit of ${this.subscription.mobileOfficersLimit} will be exceeded`)\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async deleteActionMessages(userGroupToDelete) {\r\n\t\tif (!userGroupToDelete || !userGroupToDelete.userGroupId || this.userGroupsList.length == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet updatedGroupsUserSubscriptionUsageCount = await api.getSubscriptionUsageForUserGroup(userGroupToDelete);\r\n\t\tlet totalNumberOfUsers = await api.getUserCountForUserGroup(userGroupToDelete.userGroupId);\r\n\t\tif (totalNumberOfUsers > 0) {\r\n\t\t\tlet result = [];\r\n\t\t\tif (totalNumberOfUsers == 1) {\r\n\t\t\t\tresult.push(`Update the permissions for ${totalNumberOfUsers} user.`);\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(`Update the permissions for ${totalNumberOfUsers} users.`);\r\n\t\t\t}\r\n\t\t\tif (updatedGroupsUserSubscriptionUsageCount.operators > 0) {\r\n\t\t\t\tresult.push(`Reduce the number of Operators used by your subscription from\r\n\t\t\t\t\t${this.subscription.limitedSubscription ? this.subscription.operators + \"/\" + this.subscription.operatorsLimit : this.subscription.operators}\r\n\t\t\t\t\tto\r\n\t\t\t\t\t${this.subscription.operators - updatedGroupsUserSubscriptionUsageCount.operators + (this.subscription.limitedSubscription ? \"/\" + this.subscription.operatorsLimit: \"\")}.`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif (updatedGroupsUserSubscriptionUsageCount.mobileOfficers > 0) {\r\n\t\t\t\tresult.push(`Reduce the number of Mobile Officers used by your subscription from\r\n\t\t\t\t\t${this.subscription.limitedSubscription ? this.subscription.mobileOfficers + \"/\" + this.subscription.mobileOfficersLimit : this.subscription.mobileOfficers}\r\n\t\t\t\t\tto\r\n\t\t\t\t\t${this.subscription.mobileOfficers - updatedGroupsUserSubscriptionUsageCount.mobileOfficers + (this.subscription.limitedSubscription ? \"/\" + this.subscription.mobileOfficersLimit: \"\")}.`\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isBillingEnabled() {\r\n\t\treturn get(this.featuresList, [\"Billing\"]);\r\n\t}\r\n\r\n\tprivate get isSuiteEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Suite\"]);\r\n\t}\r\n\r\n\tprivate async retrieveUserGroups(): Promise\r\n\t{\r\n\t\tvar userGroups = await api.getUserGroups();\r\n\t\tthis.userGroupsList = userGroups.map(userGroup => {\r\n\t\t\tvar externalIdList = [];\r\n\t\t\tif (userGroup.externalIds && userGroup.externalIds.length > 0)\r\n\t\t\t{\r\n\t\t\t\ttry\r\n\t\t\t\t{\r\n\t\t\t\t\texternalIdList = JSON.parse(userGroup.externalIds)\r\n\t\t\t\t}\r\n\t\t\t\tcatch(er)\r\n\t\t\t\t{\r\n\t\t\t\t\tconsole.error(er)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\t...userGroup,\r\n\t\t\t\texternalIdsArray: externalIdList\r\n\t\t\t} as UserGroupEx;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async updateState() {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tawait this.retrieveUserGroups();\r\n\t\t\tawait this.fetchSubscription(this.getUserTenantGroupId);\r\n\t\t\tawait this.fetchPermissionsState();\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.log(\"Unexpected exception updating component state: \" + ex);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGroupSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGroupSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserGroupSetup.vue?vue&type=template&id=458ee328\"\nimport script from \"./UserGroupSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./UserGroupSetup.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport vSelect from \"vue-select\";\r\nimport { isEmpty } from \"lodash\";\r\n\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport UserRoleSetup from \"@/components/setup/users/UserRoleSetup.vue\";\r\nimport UserGroupSetup from \"@/components/setup/users/UserGroupSetup.vue\";\r\n\r\nconst UserManagement = namespace(\"userManagement\");\r\nconst AreaStore = namespace(\"areas\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"user-role-setup\": UserRoleSetup,\r\n\t\t\"user-group-setup\": UserGroupSetup,\r\n\t\t\"vue-select\": vSelect\r\n\t}\r\n})\r\nexport default class PermissionSetup extends Vue {\r\n\t$refs!: {\r\n\t\tuserGroupSetup: UserGroupSetup;\r\n\t}\r\n\t@Getter(\"getPermissions\") permissions: any;\r\n\t@AreaStore.Action fetchAreaDictionary: () => Promise;\r\n\t@AreaStore.State areaDictionary: Map;\r\n\t@UserManagement.Action fetchPermissionsState: () => Promise;\r\n\r\n\tpublic async mounted() {\r\n\t\t// Check permissions and go back if user has no access.\r\n\t\tif (!this.permissions.isSystemAdmin && !this.permissions.canEditUserGroups) {\r\n\t\t\tthis.$router.go(-1);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Fetch dependant state information for child components.\r\n\t\tawait this.fetchPermissionsState();\r\n\t\tif (isEmpty(this.areaDictionary)) {\r\n\t\t\tthis.fetchAreaDictionary();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate triggerGroupSetupRefresh(): void {\r\n\t\tthis.$refs.userGroupSetup.loadState();\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Permissions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Permissions.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Permissions.vue?vue&type=template&id=4ea6f9ea&scoped=true\"\nimport script from \"./Permissions.vue?vue&type=script&lang=ts\"\nexport * from \"./Permissions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Permissions.vue?vue&type=style&index=0&id=4ea6f9ea&prod&scoped=true&lang=scss\"\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 \"4ea6f9ea\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isAlarmSetupEnabled && _vm.getPermissions.canEditSiteSetup)?_c('div',{staticClass:\"card card-secondary\",attrs:{\"id\":\"setup-container\",\"data-cy\":\"alarm-setup-container\"}},[_c('nav-header',{attrs:{\"title\":'Alarm Setup',\"data-cy\":\"navHeader\"}}),_c('div',{staticClass:\"setup-container card-body fill-tabs\"},[_c('b-tabs',[_c('b-tab',{attrs:{\"id\":\"btnAlarmSetup\",\"title\":\"Smtp Alarms\"}},[_c('alarm-setup-table',{ref:\"alarmSetupTable\",staticClass:\"card-body p-0 tab-flex-content\",attrs:{\"isEmailAlarms\":true,\"data-cy\":\"alarm-setup-table\"},on:{\"triggerUpdate\":function($event){return _vm.triggerUpdate('decoder-setup')}}})],1),(_vm.isHttpAlarmsSetupEnabled)?_c('b-tab',{attrs:{\"id\":\"btnAlarmSetup\",\"title\":\"Http Alarms\"}},[_c('http-alarm-setup-table',{ref:\"httpAlarmSetupTable\",staticClass:\"card-body p-0 tab-flex-content\",attrs:{\"data-cy\":\"alarm-setup-table\"},on:{\"triggerUpdate\":function($event){return _vm.triggerUpdate('http-alarm-setup')}}})],1):_vm._e(),_c('b-tab',{attrs:{\"id\":\"btnAlarmDecoder\",\"title\":\"Alarm Decoder\"}},[_c('alarm-decoder-table',{ref:\"alarmDecoderTable\",staticClass:\"tab-flex-content\",attrs:{\"data-cy\":\"alarm-decoder-table\"},on:{\"triggerUpdate\":function($event){return _vm.triggerUpdate('alarm-setup')}}})],1),(_vm.isDistanceConfigurationEnabled)?_c('b-tab',{attrs:{\"id\":\"btnDistanceConfiguration\",\"title\":\"Distance Filters\"}},[_c('distance-configuration-table',{ref:\"distanceConfigurationTable\",staticClass:\"card-body p-0 tab-flex-content mb-5\",attrs:{\"data-cy\":\"distance-configuration-table\"}})],1):_vm._e()],1)],1)],1):(!_vm.isAlarmSetupEnabled)?_c('div',{attrs:{\"data-cy\":\"feature-not-enabled-container\"}},[_c('p',[_vm._v(\"Alarm Setup is not enabled\")])]):(_vm.isAlarmSetupEnabled && !_vm.getPermissions.canEditSiteSetup)?_c('div',{attrs:{\"data-cy\":\"no-permissions-container\"}},[_c('p',[_vm._v(\"You do not have permissions to view this page\")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary table-container overflow-hidden flex-grow-1\",attrs:{\"data-cy\":\"responseSetupTableContainer\"}},[_c('generic-table',{attrs:{\"term\":'Alarm',\"dataList\":_vm.responses,\"columns\":_vm.columns,\"modalItems\":_vm.modalItems,\"onSave\":_vm.putAlarm,\"onDelete\":_vm.deleteAlarm,\"onAddNew\":_vm.putAlarm,\"onModalOpen\":_vm.onModalOpen,\"isLoading\":_vm.isLoading,\"totalAvailableRows\":_vm.totalRecords,\"refreshAllowed\":\"\",\"clearOnClose\":\"\",\"readonly\":_vm.readonly,\"data-cy\":\"responseSetupTableGenericTable\"},on:{\"search-filter-updated\":_vm.updateResponses},scopedSlots:_vm._u([{key:\"linkedCameras\",fn:function(slotProps){return _vm._l((slotProps.row.linkedCameras),function(item){return _c('span',{key:item.deviceID,staticClass:\"badge badge-primary ml-1\"},[_c('p',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm._f(\"truncateString\")(item.title,20)))]),_c('span',{staticClass:\"font-weight-light\"},[_vm._v(_vm._s(item.groupTitle))])])})}},{key:\"automations\",fn:function(slotProps){return _vm._l((_vm.retrieveAutomationBadges(slotProps.row.automations)),function(item){return _c('span',{key:item.objectID,staticClass:\"badge badge-primary ml-1\",attrs:{\"id\":\"automation-item\"}},[_c('p',{staticClass:\"mb-0\",attrs:{\"title\":item.description}},[_vm._v(_vm._s(_vm._f(\"truncateString\")(item.deviceTitle,20)))])])})}},{key:\"extraValue\",fn:function(slotProps){return [_c('a',{attrs:{\"id\":(\"copy-to-clipboard-target-\" + (slotProps.row.responseID)),\"href\":(\"mailto: \" + (slotProps.row.rootResponseEmail ? slotProps.row.rootResponseEmail : slotProps.row.extraValue)),\"target\":\"_blank\"}},[_vm._v(_vm._s(slotProps.row.rootResponseEmail ? slotProps.row.rootResponseEmail : slotProps.row.extraValue))]),_c('i',{staticClass:\"fas fa-copy hover-icon ml-1 p-1\",attrs:{\"id\":(\"copy-to-clipboard-trigger-\" + (slotProps.row.responseID)),\"title\":\"Copy value to clipboard\"},on:{\"click\":function($event){return _vm.copyAlarmEmail(slotProps.row.responseID)}}}),_c('b-tooltip',{attrs:{\"target\":(\"copy-to-clipboard-trigger-\" + (slotProps.row.responseID)),\"title\":\"Copied!\",\"triggers\":\"manual\",\"placement\":\"top\",\"custom-class\":\"copiedTooltip\",\"no-fade\":true,\"show\":_vm.tooltipToShow == (\"copy-to-clipboard-tooltip-\" + (slotProps.row.responseID))}})]}},{key:\"custom-button\",fn:function(){return [(_vm.isBulkAddEnabled)?_c('button',{staticClass:\"btn btn-primary add-btn\",on:{\"click\":function($event){return _vm.$bvModal.show('modalBulk')}}},[_vm._v(\"Bulk Add \")]):_vm._e(),(_vm.isCustomFieldAlarmsEnabled && _vm.hasCanViewCustomFieldsPermission)?_c('button',{staticClass:\"btn btn-primary add-btn\",attrs:{\"data-cy\":\"btn-custom-fields\"},on:{\"click\":_vm.openCustomFieldModal}},[_vm._v(\"Custom Fields \")]):_vm._e()]},proxy:true},{key:\"grouping\",fn:function(slotProps){return [_vm._v(\" \"+_vm._s(slotProps.row.grouping.title)+\" \")]}}])}),(_vm.isBulkAddEnabled)?_c('csv-uploader-wrapper',{attrs:{\"modalItemsCsv\":_vm.modalItems,\"isMultipleError\":\"\",\"defaultFile\":_vm.defaultFile,\"progressBulk\":_vm.progressBulk,\"name\":\"Alarm Bulk\"},on:{\"on-submit\":_vm.bulkOnSubmit,\"on-close\":_vm.onCloseBulk,\"reset-progress\":_vm.resetProgress}}):_vm._e(),_c('custom-field-modal-table-view',{ref:\"customFieldTableView\",attrs:{\"customFieldTableTypeId\":this.customFieldTableType},on:{\"update-data\":_vm.updateResponses}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Mixins } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Action } from \"vuex-class\";\r\nimport { get, invert } from \"lodash\";\r\n\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport { FeaturesList, PaginatedSearchQueryParams, UserPermissions } from \"@/store/types\";\r\nimport api from \"@/services/api.service\";\r\nimport CameraSelect from \"@/components/form/CameraSelect.vue\";\r\nimport { truncateString } from \"@/filters\";\r\n\r\nconst Areas = namespace(\"areas\");\r\nconst CustomFields = namespace(\"customFields\");\r\n\r\nconst { mapArrayFieldsToObject, mapObjectFieldsToArray } = customFieldMixins.methods;\r\n\r\nimport { ModalItemCSV } from '@/store/csv-form-handler/types'\r\nimport csvUploaderWrapper from \"@/components/csv-uploader/csv-uploader-wrapper.vue\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport _ from 'lodash';\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport ResponsesPagedResponse from \"@/types/sv-data/responses/ResponsesPagedResponse\";\r\nimport { Response, AlarmGrouping, YesNoOption, Script } from \"@/store/responses/types\";\r\nimport ResponseActionSetup from \"./ResponseActionSetup.vue\";\r\nimport { ResponseAction } from \"@/store/response-actions/types\";\r\nimport AutomationMixin from \"@/mixins/AutomationMixin\";\r\nimport { helpers } from 'vuelidate/lib/validators';\r\nimport CustomFieldTableView from \"@/components/custom-fields/CustomFieldModalTableView.vue\";\r\nimport { CustomFieldDto, CustomFieldTableTypes } from \"@/store/custom-fields/types\";\r\nimport { MapCustomFieldToModalItem } from \"@/utils/CustomFieldLogic\";\r\nimport { customFieldMixins } from \"@/mixins/customFieldMixins\";\r\nimport { serviceLevelAgreementMixins } from '@/mixins';\r\n\r\ninterface ResponseRow extends Response {\r\n\treadOnly?: boolean;\r\n\treadOnlyMessage?: string;\r\n\tautomations?: ResponseAction[];\r\n}\r\n\r\nconst { validateSlaBreachSecondsValue, generateErrorMessage } = serviceLevelAgreementMixins.methods;\r\n\r\n@Component({\r\n components: {\r\n\t\t\"generic-table\": GenericTable,\r\n\t\t\"csv-uploader-wrapper\": csvUploaderWrapper,\r\n\t\t\"custom-field-modal-table-view\": CustomFieldTableView\r\n\t},\r\n\tfilters: {\r\n truncateString\r\n }\r\n})\r\nexport default class AlarmSetupTable extends Mixins(PaginatedSearch, AutomationMixin) {\r\n\t$refs!: {\r\n\t\tcustomFieldTableView: CustomFieldTableView;\r\n\t}\r\n\r\n\t@Prop({ required: false, default: null }) private selectedServerId: number;\r\n\t@Prop({ required: false, default: null }) private isEmailAlarms: boolean;\r\n\t@Prop({ required: false, default: false }) private readonly: boolean;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@Getter(\"getMaxResponseSlaDuration\") maxResponseSlaDuration: number;\r\n\r\n\t@Areas.Action fetchAreaDictionary: () => Promise;\r\n\t@Areas.Getter getAreaTitle: (id: number) => string;\r\n\t@Areas.State areaDictionary: Map [];\r\n\r\n\t@CustomFields.State private alarmCustomFields: CustomFieldDto[];\r\n\t@CustomFields.Action retrieveCustomFields: ({ tableType, live }) => Promise;\r\n\r\n\tprivate get hasAlarmSetupEditAreaFlag() {\r\n\t\treturn get(this.featuresList, [\"AlarmSetup\", \"EditArea\"])\r\n\t}\r\n\r\n\tprivate get hasMaskDurationLimit(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"Masking\", \"MaxMaskDuration\"], false);\r\n\t}\r\n\r\n\tpublic get hasCanViewCustomFieldsPermission(): boolean {\r\n\t\treturn this.permissions.canViewCustomFields;\r\n\t}\r\n\r\n\tprivate totalRecords: number = 0;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate responses: any[] = [];\r\n\tprivate responseScripts: Script[] = [];\r\n\tprivate progressBulk = {}\r\n\tprivate alarmDecoderServers: any [] = [];\r\n\tprivate selectedResponse: any = {};\r\n\tprivate tooltipToShow: string = \"\";\r\n\r\n\tprivate readonly customFieldTableType: number = CustomFieldTableTypes.Alarm;\r\n\r\n\t/**\r\n\t*\t@returns Table columns\r\n\t*/\r\n\tpublic get columns (): TableHeader[] {\r\n\t\tconst columns: TableHeader[] = [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Alarm Name\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\torder: 1,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Alarm name\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisSortedByDefault: true,\r\n\t\t\t},\r\n {\r\n title: \"Area\",\r\n key: \"groupTitle\",\r\n order: 2,\r\n sortOrder: 1,\r\n sortOrderReversed: false,\r\n description: \"The area the alarm belongs to\",\r\n searchable: true,\r\n visible: true,\r\n dataType: \"input\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"Area\",\r\n },\r\n {\r\n title :\"Action Plan\",\r\n key:\"scriptTitle\",\r\n order: 3,\r\n sortOrder: 3,\r\n sortOrderReversed: false,\r\n visible: true,\r\n searchable: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"ActionPlan\"\r\n },\r\n {\r\n title : this.isEmailAlarms ? \"Email Address\" : \"ExtraValue\",\r\n key:\"extraValue\",\r\n order: 4,\r\n sortOrder: 4,\r\n sortOrderReversed: false,\r\n visible: true,\r\n searchable: true,\r\n addQuickCopy: this.isEmailAlarms ? true : false,\r\n\t\t\t\tuseCustomCell: this.isEmailAlarms ? true : false,\r\n\t\t\t\tsortable: true,\r\n },\r\n {\r\n title: \"Response Code\",\r\n key: \"responseCode\",\r\n order: 5,\r\n sortOrder: 5,\r\n sortOrderReversed: false,\r\n description: \"The Response code of the alarm\",\r\n searchable: true,\r\n visible: false,\r\n dataType: \"input\",\r\n\t\t\t\tsortable: true,\r\n },\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Priority\",\r\n\t\t\t\tkey: \"priority\",\r\n\t\t\t\torder: 6,\r\n\t\t\t\tsortOrder: 6,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"priority of the alarm\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t},\r\n {\r\n title :\"Grouping\",\r\n key:\"grouping\",\r\n order: 7,\r\n sortOrder: 7,\r\n sortOrderReversed: false,\r\n visible: true,\r\n searchable: true,\r\n useCustomCell: true,\r\n\t\t\t\tsortable: true,\r\n }\r\n\t\t];\r\n\r\n\t\tif(!get(this.featuresList, [\"Alarms\", \"CameraAutomation\"])){\r\n\t\t\tcolumns.push(\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: \"Linked Cameras\",\r\n\t\t\t\t\tkey: \"linkedCameras\",\r\n\t\t\t\t\torder: 8,\r\n\t\t\t\t\tsortOrder: 8,\r\n\t\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\t\tdataType: \"list\",\r\n\t\t\t\t\tsearchable: true,\r\n\t\t\t\t\tuseCustomCell: true,\r\n\t\t\t\t\tvisible: !get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]),\r\n\t\t\t\t\tdisable: !get(this.featuresList, [\"Devices\"]),\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif(this.showAutomations){\r\n\t\t\tcolumns.push(\r\n\t\t\t\t{\r\n title: \"Automations\",\r\n key: \"automations\",\r\n order: 9,\r\n sortOrder: 9,\r\n sortOrderReversed: false,\r\n dataType: \"list\",\r\n searchable: true,\r\n useCustomCell: true,\r\n\t\t\t\tvisible: this.showAutomations,\r\n\t\t\t\tdisable: !get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]),\r\n });\r\n\t\t}\r\n\r\n\t\tif(this.hasMaskDurationLimit){\r\n\t\t\tcolumns.push(\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: \"Max Mask Duration (minutes)\",\r\n\t\t\t\t\tkey: \"maskDurationLimit\",\r\n\t\t\t\t\torder: 10,\r\n\t\t\t\t\tsortOrder: 10,\r\n\t\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\t\tsearchable: false,\r\n\t\t\t\t\tvisible: this.hasMaskDurationLimit,\r\n\t\t\t\t\tdataType: \"number\",\r\n\t\t\t\t\tsortable: false\r\n\t\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn columns;\r\n\t}\r\n\r\n\t/**\r\n\t*\t@returns Model items list\r\n\t*/\r\n\tpublic get modalItems (): ModalItemCSV[] {\r\n\t\tvar items: ModalItemCSV[] = [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Alarm name\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\trequired: true,\r\n placeholder: \"Enter an alarm name\",\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell({ currentElement }) {\r\n\t\t\t\t\t\treturn { isValid: !!currentElement.csvValue }\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\torder: 1\r\n },\r\n {\r\n title: \"Area\",\r\n key: \"groupID\",\r\n dataType: \"component\",\r\n newOnly: !this.hasAlarmSetupEditAreaFlag,\r\n required: true,\r\n data: AreaTreeSelect,\r\n\t\t\t\tprops: {\r\n \treduce: (a) => a.id,\r\n\t\t\t\t\tclearable: true\r\n\t\t\t\t},\r\n\t\t\t\tcsvComponent: 'select',\r\n\t\t\t\tcsvData: Object.keys(this.areasByTitle),\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: !!this.areasByTitle[currentElement.csvValue]\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t},\r\n\t\t\t\torder: 2\r\n },\r\n {\r\n title: \"Linked cameras\",\r\n key: \"linkedCameras\",\r\n dataType: \"component\",\r\n required: false,\r\n visible: this.showLinkedCamerasInModal,\r\n data: CameraSelect,\r\n props: {\r\n multiple: true\r\n },\r\n\t\t\t\tcsvExclude: true,\r\n\t\t\t\torder: 3\r\n },\r\n {\r\n title: \"Action Plan\",\r\n key: \"script\",\r\n dataType: \"vselect3\",\r\n data: this.responseScripts,\r\n required: false,\r\n placeholder: \"Select an action plan\",\r\n\t\t\t\tcsvComponent: 'select',\r\n\t\t\t\tcsvData: this.responseScripts.map(v => v.title),\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\tif (this.responseScripts.length === 0 || !currentElement.csvValue) {\r\n\t\t\t\t\t\t\treturn { isValid: !currentElement.csvValue }\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn { isValid: this.responseScripts.some(({ title }) => title === currentElement.csvValue) }\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\torder: 4\r\n },\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Email Address\",\r\n\t\t\t\tkey: \"extraValue\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\treadOnly: true,\r\n\t\t\t\tupdateOnly: true,\r\n\t\t\t\tcsvExclude: true,\r\n\t\t\t\torder: 5\r\n },\r\n\t\t\t{\r\n title: \"Alarm Decoder\",\r\n key: \"server\",\r\n dataType: \"vselect3\",\r\n data: this.alarmDecoderServers,\r\n\t\t\t\treadOnlyIfEdit: true,\r\n\t\t\t\trequired: false,\r\n placeholder: \"Select an alarm decoder\",\r\n\t\t\t\tcsvData: this.alarmDecoderServers.map(x => x.title),\r\n csvComponent: 'select',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\tif (!currentElement.csvValue) {\r\n\t\t\t\t\t\t\treturn { isValid: true }\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(this.alarmDecoderServers.length === 0) {\r\n\t\t\t\t\t\t\treturn { isValid: !currentElement.csvValue }\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn { isValid: this.alarmDecoderServers.some(({ title }) => title === currentElement.csvValue) }\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\torder: 6\r\n },\r\n\t\t\t{\r\n title: \"Response Code\",\r\n key: \"responseCode\",\r\n dataType: \"text\",\r\n\t\t\t\tmaxLength: 100,\r\n\t\t\t\tvisibleMethod: (value) => { return value?.server == null ? false : true },\r\n\t\t\t\trequiredMethod: (value) => { return value?.server == null ? false : true },\r\n placeholder: \"Enter a response code\",\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\torder: 7\r\n },\r\n {\r\n title: \"Priority\",\r\n key: \"priority\",\r\n dataType: \"number\",\r\n defaultValue: null,\r\n min: 0,\r\n max: 2147483647,\r\n required: false,\r\n placeholder: \"Enter the alarm priority\",\r\n\t\t\t\tcsvComponent: 'number',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell({ currentElement }) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: currentElement.csvValue\r\n\t\t\t\t\t\t\t\t? Number(currentElement.csvValue) <= 2147483647 && Number(currentElement.csvValue) >= 0\r\n\t\t\t\t\t\t\t\t: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\torder: 8\r\n },\r\n {\r\n title: \"Grouping\",\r\n key: \"grouping\",\r\n dataType: \"vselect3\",\r\n data: this.alarmGroupingOptions,\r\n required: true,\r\n placeholder: \"Select an alarm grouping\",\r\n\t\t\t\tcsvData: this.alarmGroupingOptions.map(v => v.title),\r\n\t\t\t\tcsvComponent: 'select',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\treturn { isValid: this.alarmGroupingOptions.some(({ title }) => title === currentElement.csvValue) }\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\torder: 9\r\n },\r\n\t\t\t{\r\n title: \"Auto Handle\",\r\n key: \"autoHandle\",\r\n dataType: \"vselect3\",\r\n data: this.yesNoNotSet,\r\n required: true,\r\n placeholder: \"Select an auto handle setting\",\r\n\t\t\t\tprops:\r\n\t\t\t\t{\r\n\t\t\t\t\treduce: (ah: YesNoOption) => ah.value\r\n\t\t\t\t},\r\n csvData: this.yesNoNotSet.map(v => v.title),\r\n csvComponent: 'select',\r\n csvValidation: {\r\n validationCell: ({ currentElement }) => {\r\n return { isValid: this.yesNoNotSet.some(({ title }) => title === currentElement.csvValue) }\r\n }\r\n },\r\n\t\t\t\torder: 10\r\n },\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Service Level Agreement (SLA) in Seconds\",\r\n\t\t\t\tkey: \"slaBreachSeconds\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\treadOnly: !(this.isServiceLevelAgreementsEnabled && this.permissions.canEditSLAs),\r\n\t\t\t\tvisible: this.isServiceLevelAgreementsEnabled && (this.permissions.canViewSLAs || this.permissions.canEditSLAs),\r\n\t\t\t\tplaceholder: 'Enter the number of seconds permitted before an alarm breaches the SLA.',\r\n\t\t\t\tdefaultValue: null,\r\n\t\t\t\tmin: 0,\r\n\t\t\t\tcsvComponent: 'number',\r\n\t\t\t\tcsvExclude: !(this.isServiceLevelAgreementsEnabled && this.permissions.canEditSLAs),\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\treturn { \r\n\t\t\t\t\t\t\tisValid: validateSlaBreachSecondsValue(currentElement.csvValue, this.maxResponseSlaDuration)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tisSlaValueValid: helpers.withParams(\r\n\t\t\t\t\t\t{ \r\n\t\t\t\t\t\t\ttype: \"isSlaValueValid\", \r\n\t\t\t\t\t\t\terrorMessage: generateErrorMessage(this.maxResponseSlaDuration)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t(value) => {\r\n\t\t\t\t\t\t\treturn validateSlaBreachSecondsValue(value, this.maxResponseSlaDuration)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t},\r\n\t\t\t\torder: 11,\r\n\t\t\t},\r\n\t\t] as ModalItemCSV[];\r\n\r\n\t\tif(this.showAutomations){\r\n\t\t\titems.push(\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Automations\",\r\n\t\t\t\tkey: \"automations\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\trequired: false,\r\n\t\t\t\tvisible: this.showAutomations,\r\n\t\t\t\tdata: ResponseActionSetup,\r\n\t\t\t\tcsvExclude: true,\r\n\t\t\t\tupdateOnly: true,\r\n\t\t\t\tprops:\r\n\t\t\t\t{\r\n\t\t\t\t\tgroupID: this.selectedResponse.groupID\r\n\t\t\t\t},\r\n\t\t\t\torder: items.length + 1,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif(this.hasMaskDurationLimit)\r\n\t\t{\r\n\t\t\titems.push({\r\n\t\t\t\ttitle: \"Max Mask Duration (minutes)\",\r\n\t\t\t\tkey: \"maskDurationLimit\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\tmaxLength: 10,\r\n\t\t\t\tmin: 0,\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\tvisible: this.hasMaskDurationLimit,\r\n\t\t\t\torder: items.length + 1,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.isCustomFieldAlarmsEnabled && this.alarmCustomFields != null){\r\n\t\t\tvar shellModalItem: ModalItemCSV = {\r\n\t\t\t\ttitle: \"\",\r\n\t\t\t\tkey: \"\",\r\n\t\t\t\tdataType: \"\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\torder: items.length + 1,\r\n\t\t\t\tcsvComponent: null\r\n\t\t\t};\r\n\r\n\t\t\tfor (let i = 0; i < this.alarmCustomFields.length; i++) {\r\n\t\t\t\tlet alarmCustomFieldModalItem = MapCustomFieldToModalItem(this.alarmCustomFields[i], shellModalItem);\r\n\t\t\t\titems.push(alarmCustomFieldModalItem as ModalItemCSV);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn items;\r\n\t}\r\n\r\n private alarmGroupingOptions: AlarmGrouping[] = [\r\n {\r\n title: \"By Area\",\r\n isRaiseIndividual: false,\r\n isRaiseGrouped: false\r\n },\r\n {\r\n title: \"By Alarm\",\r\n isRaiseIndividual: false,\r\n isRaiseGrouped: true\r\n },\r\n {\r\n title: \"Not Grouped\",\r\n isRaiseIndividual: true,\r\n isRaiseGrouped: false\r\n },\r\n {\r\n title: \"Not Set\",\r\n isRaiseIndividual: null,\r\n isRaiseGrouped: null\r\n }\r\n ];\r\n\r\n\tprivate yesNoNotSet: YesNoOption[] = [\r\n {\r\n title: \"Yes\",\r\n value: 1,\r\n\t\t\tactualValue: true\r\n },\r\n {\r\n title: \"No\",\r\n value: 2,\r\n\t\t\tactualValue: false\r\n },\r\n {\r\n title: \"Not set\",\r\n value: 3,\r\n\t\t\tactualValue: null\r\n }\r\n ];\r\n\r\n\tprivate get isBulkAddEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"AlarmSetup\", \"BulkAdd\"]) && !this.readonly;\r\n\t}\r\n\r\n\tprivate get showAutomations(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]) &&\r\n\t\t(!!this.permissions.canViewAutomations || !!this.permissions.canEditAutomations);\r\n\t}\r\n\t\r\n\tprivate get isServiceLevelAgreementsEnabled(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Alarms\", \"SLAs\"]);\r\n\t}\r\n\r\n\tprivate get showLinkedCamerasInModal(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Devices\"]) && !get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]);\r\n\t}\r\n\r\n\tprivate get isCustomFieldAlarmsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"CustomFields\", \"Alarms\"]);\r\n\t}\r\n\r\n\tprivate async retrieveAlarmDecoderServers(): Promise {\r\n\t\tvar alarmDecoderServers = await api.getAlarmDecoderServerList();\r\n\t\tthis.alarmDecoderServers = [];\r\n\r\n\t\tif (!alarmDecoderServers || alarmDecoderServers.length == 0)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (const [key, value] of Object.entries(alarmDecoderServers)) {\r\n\t\t\tthis.alarmDecoderServers.push({\r\n\t\t\t\ttitle: value,\r\n\t\t\t\tserverID: key\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tthis.responseScripts = await api.getResponseScripts();\r\n\t\tif (this.isCustomFieldAlarmsEnabled) {\r\n\t\t\tawait this.retrieveCustomFields({ tableType: CustomFieldTableTypes.Alarm, live: true });\r\n\t\t}\r\n\r\n\t\tawait this.updateResponses();\r\n\t\tawait this.fetchAreaDictionary();\r\n\t}\r\n\r\n private async putAlarm(response: any) {\r\n if (response.script) {\r\n response.scriptID = response.script.scriptID;\r\n response.scriptTitle = response.script.title;\r\n } else {\r\n response.scriptID = null;\r\n response.scriptTitle = null;\r\n }\r\n\r\n\t\t//Converts bulk upload autohandle setting to actual setting\r\n\t\tif (typeof(response.autoHandle) === \"string\")\r\n\t\t{\r\n\t\t\tresponse.autoHandle = this.yesNoNotSet.find(yn => yn.title == response.autoHandle)?.value\r\n\t\t}\r\n\r\n\t\t//Converts the autohandle to its actual value\r\n\t\tif (typeof(response.autoHandle) === \"number\")\r\n\t\t{\r\n\t\t\tresponse.autoHandle = this.yesNoNotSet.find(yn => yn.value == response.autoHandle)?.actualValue\r\n\t\t}\r\n\r\n response.isRaiseIndividual = response.grouping.isRaiseIndividual;\r\n response.isRaiseGrouped = response.grouping.isRaiseGrouped;\r\n\r\n\t\tif (response.server)\r\n\t\t{\r\n\t\t\tvar serverId = response.server?.serverID;\r\n\t\t\tif (typeof response.server === 'string' || response.server instanceof String)\r\n\t\t\t{\r\n\t\t\t\tserverId = this.alarmDecoderServers.firstOrDefault(a => a.title == response.server)?.serverID;\r\n\t\t\t}\r\n\t\t\tresponse.serverID = serverId;\r\n\t\t\t// if its a new alarm and the serverID isn't set clear out the response code\r\n\t\t\tif (!response.serverID && !response.responseID)\r\n\t\t\t{\r\n\t\t\t\tresponse.responseCode = null;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.isCustomFieldAlarmsEnabled) {\r\n\t\t\tresponse.customFields = mapObjectFieldsToArray(response, \"id\", \"value\", \"cf\");\r\n\t\t} else {\r\n\t\t\tresponse.customFields = null;\r\n\t\t}\r\n\r\n if (!response.responseID) {\r\n try {\r\n\r\n api.createNewResponse(response);\r\n }\r\n catch (error) {\r\n this.$notify({\r\n type: \"error\",\r\n title: \"Failed to create alarm\",\r\n text: error.response.data\r\n });\r\n }\r\n } else {\r\n await api.updateResponse(response);\r\n\t\t\tawait this.updateAutomations(response.responseID, response.automations ?? [], this.selectedResponse.automations ?? []);\r\n\r\n }\r\n await this.updateResponses(this.mostRecentSearchParams);\r\n\t\tthis.$emit(\"triggerUpdate\");\r\n\t}\r\n\r\n\tprivate async updateAutomations(responseId: number, newAutomations: ResponseAction[], oldAutomations: ResponseAction[]): Promise {\r\n\t\t// Cant use foreach loop as it does not play nicely with async calls\r\n\t\t// Create/Update responseActions\r\n\r\n\t\tif(newAutomations !== null && typeof(newAutomations) !== \"string\")\r\n\t\t{\r\n\t\t\tfor(let i = 0; i < newAutomations.length; i++ ) {\r\n\t\t\t\ttry\r\n\t\t\t\t{\r\n\t\t\t\t\tvar newAutomation = newAutomations[i];\r\n newAutomation.description = null;\r\n\r\n\t\t\t\t\t// If we have no response its a new automation\r\n\t\t\t\t\tif(!newAutomation.responseActionID)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnewAutomation.responseID = responseId;\r\n\r\n\t\t\t\t\t\tawait api.createAlarmAutomation(responseId, newAutomation);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse{\r\n\r\n\t\t\t\t\t\t// Check to see if changees have been made to an item before we try and hit the backend\r\n\t\t\t\t\t\t// Shallow compare\r\n\t\t\t\t\t\tvar oldAutomation = oldAutomations.find(r => r.responseActionID == newAutomations[i].responseActionID)\r\n\r\n\t\t\t\t\t\tvar updated = newAutomation.objectID != oldAutomation.objectID\r\n\t\t\t\t\t\t\t\t\t|| newAutomation.responseActionTypeID != oldAutomation.responseActionTypeID\r\n\t\t\t\t\t\t\t\t\t|| newAutomation.settingsMeta != oldAutomation.settingsMeta\r\n\t\t\t\t\t\tif(updated)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tawait api.updateAlarmAutomation(responseId, newAutomation);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t}\r\n\t\t\t\tcatch (error) {\r\n\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Failed to create/update automation\",\r\n\t\t\t\t\ttext: error.response.data\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\t// Delete responseActions that no longer exist\r\n\t\tif(oldAutomations && oldAutomations.length > 0)\r\n\t\t{\r\n\t\t\tfor(let i = 0; i < oldAutomations.length ; i++)\r\n\t\t\t{\r\n\t\t\t\tif(!newAutomations.find(r => r.responseActionID == oldAutomations[i].responseActionID))\r\n\t\t\t\t{\r\n\t\t\t\t\ttry {\r\n await api.deleteAlarmAutomation(this.selectedResponse.responseID, oldAutomations[i].responseActionID)\r\n }\r\n catch (error) {\r\n this.$notify({\r\n type: \"error\",\r\n title: \"Failed to delete automation\",\r\n text: error.response.data\r\n\t\t\t\t\t });\r\n\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\tprivate onModalOpen(response): void {\r\n\t if (response) {\r\n response.script = this.responseScripts.find(rs => rs.scriptID === response.scriptID);\r\n\t\t\tthis.selectedResponse = response;\r\n }\r\n\r\n\t\tif (this.isCustomFieldAlarmsEnabled) {\r\n\t\t\tmapArrayFieldsToObject(this.selectedResponse, this.selectedResponse.customFields, this.alarmCustomFields,\"id\", \"value\", \"cf\");\r\n\t\t}\r\n }\r\n\r\n private async deleteAlarm(response: any): Promise {\r\n if (response && response.responseID) {\r\n await api.deleteResponse(response.responseID);\r\n await this.updateResponses(this.mostRecentSearchParams);\r\n\t\t\tthis.$emit(\"triggerUpdate\");\r\n }\r\n\t}\r\n\r\n\tpublic async updateResponses(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.mostRecentSearchParams = paginatedSearchQueryParams;\r\n\t\t\tawait this.retrieveAlarmDecoderServers();\r\n\t\t\tconst cancellableQuery = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\r\n\t\t\tif (this.selectedServerId) {\r\n\t\t\t\tcancellableQuery.params.serverId = this.selectedServerId;\r\n\t\t\t}\r\n\t\t\tcancellableQuery.params.isEmailAlarms = this.isEmailAlarms;\r\n\r\n\t\t\tlet result: ResponsesPagedResponse = await api.getResponses(cancellableQuery);\r\n\t\t\tvar responseData: ResponseRow[] = result.data;\r\n\r\n\t\t\tif (responseData) {\r\n\t\t\t\tresponseData = responseData.map(response => {\r\n\t\t\t\t\tvar isReadOnly = !!response.groupSyncId && !this.permissions.canOverrideGroupSync && !this.permissions.isSystemAdmin;\r\n\t\t\t\t\tresponse.readOnly = isReadOnly;\r\n\t\t\t\t\tresponse.readOnlyMessage = isReadOnly ? \"You do not have permission to edit Sync Alarms\": null;\r\n\t\t\t\t\treturn response;\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\tthis.responses = responseData;\r\n if (this.responses)\r\n {\r\n for(var i = 0; i < this.responses.length; i++)\r\n\t\t\t\t{\r\n\t\t\t\t\tvar response = this.responses[i];\r\n\t\t\t\t\tresponse.script = this.responseScripts.find(rs => rs.scriptID === response.scriptID);\r\n\t\t\t\t\tresponse.autoHandle = this.yesNoNotSet.find(yn => yn.actualValue == response.autoHandle)?.value\r\n\t\t\t\t\tresponse.grouping = this.alarmGroupingOptions.find(ag =>\r\n\t\t\t\t\t\tag.isRaiseGrouped == response.isRaiseGrouped &&\r\n\t\t\t\t\t\tag.isRaiseIndividual == response.isRaiseIndividual);\r\n\r\n\t\t\t\t\tconst server = this.alarmDecoderServers ? this.alarmDecoderServers.find(ad => ad.serverID == response.serverID) : [];\r\n\t\t\t\t\tif(server)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tresponse.server = {\r\n\t\t\t\t\t\t\ttitle: server ? server.title : null,\r\n\t\t\t\t\t\t\tserverID: response.serverID\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tresponse.server = null;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tresponse.showOriginalEmail = false;\r\n\t\t\t\t\tVue.set(response, \"server\", response.server);\r\n\r\n\t\t\t\t\tif (this.showAutomations) {\r\n\t\t\t\t\t\tresponse.automations = await api.getAlarmAutomations(response.responseID);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.totalRecords = result.totalRecords;\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tconsole.log(\"Unexpected error searching alarms: \" + ex);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n }\r\n\r\n\tprivate convertDataToRest(formData) {\r\n\t\treturn formData.map(value => {\r\n\t\t\treturn {\r\n\t\t\t\t...value,\r\n\t\t\t\tgroupID: this.areasByTitle[`${value.groupID}`],\r\n\t\t\t\tpriority: Number(value.priority),\r\n\t\t\t\tgrouping: this.alarmGroupingOptions.find(({ title }) => title === value.grouping),\r\n\t\t\t\tscript: this.responseScripts.find(({ title }) => title === value.script)\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprivate async bulkOnSubmit({ formData }): Promise {\r\n\t\tconst max = formData.length;\r\n\t\tlet counterSucceed = 0;\r\n\t\tlet progress: any = {\r\n\t\t\tmax,\r\n\t\t\tvalue: 0,\r\n\t\t\tstatus: 'init',\r\n\t\t\tsuccessfulMessage: `Successfully added ${max} Alarms`,\r\n\t\t};\r\n\r\n\t\tthis.progressBulk = {\r\n\t\t\t...progress\r\n\t\t};\r\n\r\n\t\tconst convertedData = this.convertDataToRest(formData);\r\n\t\tfor (var i = 0; i < convertedData.length; i++)\r\n\t\t{\r\n\t\t\tconst alarm = convertedData[i];\r\n\t\t\tconst id = alarm.rowId;\r\n\t\t\ttry\r\n\t\t\t{\r\n\t\t\t\tawait this.putAlarm(alarm);\r\n\t\t\t\tprogress.rowIndex = id;\r\n\t\t\t\tcounterSucceed += 1;\r\n\t\t\t\tprogress.value = progress.value + 1;\r\n\r\n\t\t\t\tthis.progressBulk = {\r\n\t\t\t\t\t...progress,\r\n\t\t\t\t\tstatus: counterSucceed === max ? 'succeed' : 'progress',\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tcatch(err)\r\n\t\t\t{\r\n\t\t\t\tconst failedContact = convertedData.find(({ rowId }) => rowId === id);\r\n\t\t\t\tthis.progressBulk = {\r\n\t\t\t\t\t...progress,\r\n\t\t\t\t\trowIndex: id,\r\n\t\t\t\t\tstatus: 'error',\r\n\t\t\t\t\terror: {\r\n\t\t\t\t\t\tname: failedContact.title,\r\n\t\t\t\t\t\tmessage: `Bulk upload has failed to add alarm ${failedContact.title}`\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\tprivate onCloseBulk(): void {\r\n\t\tthis.resetProgress()\r\n\t}\r\n\r\n\tprivate resetProgress(): void {\r\n\t\tthis.progressBulk = {}\r\n\t}\r\n\r\n\tprivate get defaultFile(): { name: string, data: string } {\r\n\t\tconst modalItems = this.modalItems\r\n\t\tconst headers = modalItems.filter(({ csvExclude }) => !csvExclude).map(({ title }) => title)\r\n\t\tconst body = headers.map( v => '')\r\n\t\treturn {\r\n\t\t\tname: 'AlarmTemplate.csv',\r\n\t\t\tdata: `${headers.join()}\\r\\n${body.join()}`\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get areasByTitle() {\r\n\t\treturn invert(this.areaDictionary);\r\n\t}\r\n\r\n\tprivate copyAlarmEmail(responseID: number): void{\r\n\t\tvar idToCopy = `copy-to-clipboard-target-${responseID}`;\r\n\t\tlet node = document.getElementById(idToCopy);\r\n let range = document.createRange();\r\n range.selectNodeContents(node);\r\n window.getSelection().removeAllRanges();\r\n window.getSelection().addRange(range);\r\n document.execCommand(\"copy\");\r\n\r\n\t\tthis.tooltipToShow =`copy-to-clipboard-tooltip-${responseID}`;\r\n setTimeout(() => {\r\n this.tooltipToShow = \"\";\r\n } , 2000);\r\n\t}\r\n\r\n\tprivate async openCustomFieldModal(): Promise {\r\n\t\tthis.$refs.customFieldTableView.showCustomFieldModal();\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmSetupTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmSetupTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmSetupTable.vue?vue&type=template&id=37b80afc\"\nimport script from \"./AlarmSetupTable.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmSetupTable.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.httpReceiverApiKey !== '')?_c('b-alert',{attrs:{\"show\":\"\"}},[_c('i',{staticClass:\"fas fa-info-circle pr-2\"}),_vm._v(\"Your API key is: \"),_c('strong',[_vm._v(_vm._s(_vm.httpReceiverApiKey))])]):_vm._e(),_c('div',{staticClass:\"card card-secondary table-container overflow-hidden flex-grow-1\",attrs:{\"data-cy\":\"responseSetupTableContainer\"}},[_c('generic-table',{attrs:{\"term\":'Alarm',\"dataList\":_vm.responses,\"columns\":_vm.columns,\"modalItems\":_vm.modalItems,\"onSave\":_vm.putAlarm,\"onDelete\":_vm.deleteAlarm,\"onAddNew\":_vm.putAlarm,\"onModalOpen\":_vm.onModalOpen,\"isLoading\":_vm.isLoading,\"totalAvailableRows\":_vm.totalRecords,\"refreshAllowed\":\"\",\"clearOnClose\":\"\",\"readonly\":_vm.readonly,\"data-cy\":\"responseSetupTableGenericTable\"},on:{\"search-filter-updated\":_vm.updateResponses},scopedSlots:_vm._u([{key:\"linkedCameras\",fn:function(slotProps){return _vm._l((slotProps.row.linkedCameras),function(item){return _c('span',{key:item.deviceID,staticClass:\"badge badge-primary ml-1\"},[_c('p',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm._f(\"truncateString\")(item.title,20)))]),_c('span',{staticClass:\"font-weight-light\"},[_vm._v(_vm._s(item.groupTitle))])])})}},{key:\"automations\",fn:function(slotProps){return _vm._l((_vm.retrieveAutomationBadges(slotProps.row.automations)),function(item){return _c('span',{key:item.objectID,staticClass:\"badge badge-primary ml-1\",attrs:{\"id\":\"automation-item\"}},[_c('p',{staticClass:\"mb-0\",attrs:{\"title\":item.description}},[_vm._v(_vm._s(_vm._f(\"truncateString\")(item.deviceTitle,20)))])])})}},{key:\"extraValue\",fn:function(slotProps){return [_c('a',{attrs:{\"id\":(\"copy-to-clipboard-target-\" + (slotProps.row.responseID)),\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.getSystemIdentifier(slotProps.row)))]),_c('i',{staticClass:\"fas fa-copy hover-icon ml-1 p-1\",attrs:{\"id\":(\"copy-to-clipboard-trigger-\" + (slotProps.row.responseID)),\"title\":\"Copy value to clipboard\"},on:{\"click\":function($event){return _vm.copySystemIdentifier(slotProps.row.responseID)}}}),_c('b-tooltip',{attrs:{\"target\":(\"copy-to-clipboard-trigger-\" + (slotProps.row.responseID)),\"title\":\"Copied!\",\"triggers\":\"manual\",\"placement\":\"top\",\"custom-class\":\"copiedTooltip\",\"no-fade\":true,\"show\":_vm.tooltipToShow === (\"copy-to-clipboard-tooltip-\" + (slotProps.row.responseID))}})]}},{key:\"custom-button\",fn:function(){return [(_vm.isBulkAddEnabled)?_c('button',{staticClass:\"btn btn-primary add-btn\",on:{\"click\":function($event){return _vm.$bvModal.show('modalBulk')}}},[_vm._v(\"Bulk Add \")]):_vm._e(),(_vm.isCustomFieldAlarmsEnabled && _vm.hasCanViewCustomFieldsPermission)?_c('button',{staticClass:\"btn btn-primary add-btn\",on:{\"click\":_vm.openCustomFieldModal}},[_vm._v(\"Custom Fields \")]):_vm._e()]},proxy:true},{key:\"grouping\",fn:function(slotProps){return [_vm._v(\" \"+_vm._s(slotProps.row.grouping.title)+\" \")]}}])}),(_vm.isBulkAddEnabled)?_c('csv-uploader-wrapper',{attrs:{\"modalItemsCsv\":_vm.modalItems,\"isMultipleError\":\"\",\"defaultFile\":_vm.defaultFile,\"progressBulk\":_vm.progressBulk,\"name\":\"Alarm Bulk\"},on:{\"on-submit\":_vm.bulkOnSubmit,\"on-close\":_vm.onCloseBulk,\"reset-progress\":_vm.resetProgress}}):_vm._e(),_c('custom-field-modal-table-view',{ref:\"customFieldTableView\",attrs:{\"customFieldTableTypeId\":this.customFieldTableType},on:{\"update-data\":_vm.updateResponses}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const HttpAlarmConstants = {\r\n\tAlarmDecoderResponseId: 0,\r\n\tAutoGeneratedResponseId: -1\r\n} as const\r\n","\r\nimport { Component, Mixins, Prop, Vue } from \"vue-property-decorator\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\nimport { get, invert, Dictionary } from \"lodash\";\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport { FeaturesList, PaginatedSearchQueryParams, UserPermissions } from \"@/store/types\";\r\nimport api from \"@/services/api.service\";\r\nimport CameraSelect from \"@/components/form/CameraSelect.vue\";\r\nimport { truncateString } from \"@/filters\";\r\nimport { ModalItemCSV } from \"@/store/csv-form-handler/types\";\r\nimport csvUploaderWrapper, { DefaultFile } from \"@/components/csv-uploader/csv-uploader-wrapper.vue\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport ResponsesPagedResponse from \"@/types/sv-data/responses/ResponsesPagedResponse\";\r\nimport { AlarmDecoderServer } from \"@/store/devices/types\";\r\nimport ResponseExtended from \"@/types/sv-data/alarms/ResponseExtended\";\r\nimport { AlarmGrouping, Script, YesNoOption } from '@/store/responses/types';\r\nimport ResponseActionSetup from \"./ResponseActionSetup.vue\";\r\nimport { ResponseAction } from \"@/store/response-actions/types\";\r\nimport AutomationMixin from \"@/mixins/AutomationMixin\";\r\nimport CustomFieldTableView from \"@/components/custom-fields/CustomFieldModalTableView.vue\";\r\nimport { CustomFieldDto, CustomFieldTableTypes } from \"@/store/custom-fields/types\";\r\nimport { MapCustomFieldToModalItem } from \"@/utils/CustomFieldLogic\";\r\nimport { customFieldMixins } from \"@/mixins/customFieldMixins\";\r\nimport { helpers } from 'vuelidate/lib/validators';\r\nimport { serviceLevelAgreementMixins } from '@/mixins';\r\nimport { HttpAlarmConstants } from \"@/types/sv-data/alarms/Constants\";\r\n\r\nconst Areas = namespace(\"areas\");\r\nconst CustomFields = namespace(\"customFields\");\r\n\r\nconst { mapArrayFieldsToObject, mapObjectFieldsToArray } = customFieldMixins.methods;\r\n\r\ninterface Server {\r\n serverId: number,\r\n title: string\r\n}\r\n\r\ninterface ResponseRow extends ResponseExtended {\r\n readOnly?: boolean;\r\n readOnlyMessage?: string;\r\n grouping: AlarmGrouping;\r\n script: Script;\r\n rowId: number;\r\n systemIdentifier: SystemIdentifierOption;\r\n automations?: ResponseAction[];\r\n}\r\n\r\ninterface SystemIdentifierOption {\r\n responseId: number;\r\n title: string;\r\n extraValue: string;\r\n}\r\n\r\nconst { validateSlaBreachSecondsValue, generateErrorMessage } = serviceLevelAgreementMixins.methods;\r\n\r\n@Component({\r\n components: {\r\n \"generic-table\": GenericTable,\r\n \"csv-uploader-wrapper\": csvUploaderWrapper,\r\n\t\t\"custom-field-modal-table-view\": CustomFieldTableView\r\n },\r\n filters: {\r\n truncateString\r\n }\r\n})\r\nexport default class HttpAlarmSetupTable extends Mixins(PaginatedSearch, AutomationMixin) {\r\n\t$refs!: {\r\n\t\tcustomFieldTableView: CustomFieldTableView;\r\n\t}\r\n\r\n @Prop({ required: false, default: null }) private selectedServerId: number;\r\n @Prop({ required: false, default: false }) private readonly: boolean;\r\n\r\n @Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n @Areas.Action fetchAreaDictionary: () => Promise;\r\n @Areas.Getter getAreaTitle: (id: number) => string;\r\n @Areas.State areaDictionary: Map [];\r\n\r\n\t@CustomFields.State private alarmCustomFields: CustomFieldDto[];\r\n\t@CustomFields.Action retrieveCustomFields: ({ tableType, live }) => Promise;\r\n\r\n @Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@Getter(\"getMaxResponseSlaDuration\") maxResponseSlaDuration: number;\r\n\r\n private get hasAlarmSetupEditAreaFlag(): boolean {\r\n return get(this.featuresList, [\"AlarmSetup\", \"EditArea\"])\r\n }\r\n\r\n private totalRecords: number = 0;\r\n private isLoading: boolean = false;\r\n\r\n private responses: ResponseRow[] = [];\r\n private responseScripts: Script[] = [];\r\n private progressBulk = {}\r\n private alarmDecoderServers: AlarmDecoderServer [] = [];\r\n private selectedResponse: any = {}; // Find a way to pass group id into automations without using any\r\n private tooltipToShow: string = \"\";\r\n private httpReceiverApiKey: string = \"\";\r\n\r\n\tprivate readonly customFieldTableType: number = CustomFieldTableTypes.Alarm;\r\n\r\n /**\r\n *\t@returns Table columns\r\n */\r\n public get columns (): TableHeader[] {\r\n var columns: TableHeader[] = [\r\n {\r\n title: \"Alarm Name\",\r\n key: \"title\",\r\n order: 1,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"Alarm name\",\r\n searchable: true,\r\n visible: true,\r\n dataType: \"input\",\r\n isTermLabel: true,\r\n sortable: true,\r\n isSortedByDefault: true,\r\n },\r\n {\r\n title: \"Area\",\r\n key: \"groupTitle\",\r\n order: 2,\r\n sortOrder: 1,\r\n sortOrderReversed: false,\r\n description: \"The area the alarm belongs to\",\r\n searchable: true,\r\n visible: true,\r\n dataType: \"input\",\r\n sortable: true,\r\n sortKey: \"Area\",\r\n },\r\n {\r\n title: \"Action Plan\",\r\n key: \"scriptTitle\",\r\n order: 3,\r\n sortOrder: 3,\r\n sortOrderReversed: false,\r\n visible: true,\r\n searchable: true,\r\n sortable: true,\r\n sortKey: \"ActionPlan\"\r\n },\r\n {\r\n title: \"System Identifier\",\r\n key: \"extraValue\",\r\n order: 4,\r\n sortOrder: 4,\r\n sortOrderReversed: false,\r\n visible: true,\r\n searchable: true,\r\n addQuickCopy: true,\r\n useCustomCell: true,\r\n sortable: true,\r\n },\r\n {\r\n title: \"Response Code\",\r\n key: \"responseCode\",\r\n order: 5,\r\n sortOrder: 5,\r\n sortOrderReversed: false,\r\n description: \"The Response code of the alarm\",\r\n searchable: true,\r\n visible: false,\r\n dataType: \"input\",\r\n sortable: true,\r\n },\r\n {\r\n title: \"Priority\",\r\n key: \"priority\",\r\n order: 6,\r\n sortOrder: 6,\r\n sortOrderReversed: false,\r\n description: \"priority of the alarm\",\r\n searchable: true,\r\n visible: true,\r\n dataType: \"input\",\r\n sortable: true,\r\n },\r\n {\r\n title: \"Grouping\",\r\n key: \"grouping\",\r\n order: 7,\r\n sortOrder: 7,\r\n sortOrderReversed: false,\r\n visible: true,\r\n searchable: true,\r\n useCustomCell: true,\r\n sortable: true,\r\n },\r\n {\r\n title: \"Linked Cameras\",\r\n key: \"linkedCameras\",\r\n order: 8,\r\n sortOrder: 8,\r\n sortOrderReversed: false,\r\n dataType: \"list\",\r\n searchable: true,\r\n useCustomCell: true,\r\n\t\t\t\tvisible: !get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]),\r\n disable: !get(this.featuresList, [\"Devices\"]),\r\n },\r\n ];\r\n\r\n if(this.showAutomations){\r\n columns.push(\r\n {\r\n title: \"Automations\",\r\n key: \"automations\",\r\n order: 9,\r\n sortOrder: 9,\r\n sortOrderReversed: false,\r\n dataType: \"list\",\r\n searchable: true,\r\n useCustomCell: true,\r\n visible: this.showAutomations,\r\n disable: !get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]), // ToDo: this needs to be set by permission canEditAutomation\r\n }\r\n );\r\n }\r\n\r\n if (this.showMaskDurationLimit){\r\n columns.push(\r\n {\r\n title: \"Max Mask Duration (minutes)\",\r\n key: \"maskDurationLimit\",\r\n order: 10,\r\n sortOrder: 10,\r\n sortOrderReversed: false,\r\n searchable: false,\r\n visible: this.showMaskDurationLimit,\r\n disable: !get(this.featuresList, [\"Alarms\", \"Masking\", \"MaxMaskDuration\"]),\r\n dataType: \"number\",\r\n sortable: false\r\n }\r\n );\r\n }\r\n\r\n return columns;\r\n }\r\n\r\n /**\r\n *\t@returns Model items list\r\n */\r\n public get modalItems (): ModalItemCSV[] {\r\n\t\tvar items: ModalItemCSV[] = [\r\n {\r\n title: \"Alarm name\",\r\n key: \"title\",\r\n dataType: \"text\",\r\n maxLength: 250,\r\n required: true,\r\n placeholder: \"Enter an alarm name\",\r\n csvComponent: 'input',\r\n csvValidation: {\r\n validationCell({ currentElement }) {\r\n return { isValid: !!currentElement.csvValue }\r\n }\r\n },\r\n\t\t\t\torder: 1\r\n },\r\n {\r\n title: \"Area\",\r\n key: \"groupID\",\r\n dataType: \"component\",\r\n newOnly: !this.hasAlarmSetupEditAreaFlag,\r\n required: true,\r\n data: AreaTreeSelect,\r\n props: {\r\n reduce: (a) => a.id,\r\n clearable: false\r\n },\r\n csvComponent: 'select',\r\n csvData: Object.keys(this.areasByTitle),\r\n csvValidation: {\r\n validationCell: ({ currentElement }) => {\r\n return {\r\n isValid: !!this.areasByTitle[currentElement.csvValue]\r\n }\r\n },\r\n },\r\n\t\t\t\torder: 2\r\n },\r\n {\r\n title: \"Linked cameras\",\r\n key: \"linkedCameras\",\r\n dataType: \"component\",\r\n required: false,\r\n visible: this.showLinkedCamerasInModal,\r\n data: CameraSelect,\r\n props: {\r\n multiple: true\r\n },\r\n csvExclude: true,\r\n\t\t\t\torder: 3\r\n },\r\n {\r\n title: \"Action Plan\",\r\n key: \"script\",\r\n dataType: \"vselect3\",\r\n data: this.responseScripts,\r\n required: false,\r\n placeholder: \"Select an action plan\",\r\n csvComponent: 'select',\r\n csvData: this.responseScripts.map( v => v.title),\r\n csvValidation: {\r\n validationCell: ({ currentElement }) => {\r\n if(this.responseScripts.length === 0) {\r\n return { isValid: !currentElement.csvValue }\r\n }\r\n\r\n return { isValid: this.responseScripts.some(({ title }) => title === currentElement.csvValue) }\r\n }\r\n },\r\n\t\t\t\torder: 4\r\n },\r\n {\r\n title: \"System Identifier\",\r\n key: \"systemIdentifier\",\r\n dataType: \"vselect3\",\r\n data: this.getSystemIdentifierOptions(),\r\n defaultValue: { responseId: HttpAlarmConstants.AutoGeneratedResponseId, title: \"Auto Generated\"},\r\n description: \"Identifier for the alarm, can be reused against multiple response codes\",\r\n visibleMethod: () => { return this.responses.length > 0 || this.alarmDecoderServers.length > 0},\r\n readOnly: false,\r\n updateOnly: false,\r\n csvExclude: true,\r\n required: true,\r\n readOnlyIfEdit: true,\r\n\t\t\t\torder: 5\r\n },\r\n {\r\n title: \"Alarm Decoder\",\r\n key: \"server\",\r\n dataType: \"vselect3\",\r\n data: this.alarmDecoderServers,\r\n readOnlyIfEdit: true,\r\n placeholder: \"Select an alarm decoder\",\r\n description: \"Used to decode the provided alarm text in a http request - automatically extracts response and event codes.\",\r\n visibleMethod: (value) => { return value?.systemIdentifier?.title == \"Use Alarm Decoder\" },\r\n requiredMethod: (value) => { return value?.systemIdentifier?.title == \"Use Alarm Decoder\" },\r\n csvData: this.alarmDecoderServers.map(v => v.serverID),\r\n csvComponent: 'select',\r\n\t\t\t\torder: 6\r\n },\r\n {\r\n title: \"Response Code\",\r\n key: \"responseCode\",\r\n description: \"Identifier for what alarm response to use when raising an alarm\",\r\n dataType: \"text\",\r\n maxLength: 100,\r\n visibleMethod: (value) => { return this.isResponseCodeFieldVisible(value) },\r\n\t\t\t\t/* If the ResponseCode field is visible then it is required */\r\n requiredMethod: (value) => { return this.isResponseCodeFieldVisible(value) },\r\n placeholder: \"Enter a response code\",\r\n csvComponent: 'input',\r\n\t\t\t\torder: 7\r\n },\r\n {\r\n title: \"Priority\",\r\n key: \"priority\",\r\n dataType: \"number\",\r\n defaultValue: null,\r\n min: 0,\r\n max: 2147483647,\r\n required: true,\r\n placeholder: \"Enter the alarm priority\",\r\n csvComponent: 'number',\r\n csvValidation: {\r\n\t\t\t\t\tvalidationCell({ currentElement }) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: currentElement.csvValue\r\n\t\t\t\t\t\t\t\t? Number(currentElement.csvValue) <= 2147483647 && Number(currentElement.csvValue) >= 0\r\n\t\t\t\t\t\t\t\t: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\torder: 8\r\n },\r\n {\r\n title: \"Grouping\",\r\n key: \"grouping\",\r\n dataType: \"vselect3\",\r\n data: this.alarmGroupingOptions,\r\n required: true,\r\n placeholder: \"Select an alarm grouping\",\r\n csvData: this.alarmGroupingOptions.map( v => v.title),\r\n csvComponent: 'select',\r\n csvValidation: {\r\n validationCell: ({ currentElement }) => {\r\n return { isValid: this.alarmGroupingOptions.some(({ title }) => title === currentElement.csvValue) }\r\n }\r\n },\r\n\t\t\t\torder: 9\r\n },\r\n {\r\n title: \"Auto Handle\",\r\n key: \"autoHandle\",\r\n dataType: \"vselect3\",\r\n data: this.yesNoNotSet,\r\n required: true,\r\n placeholder: \"Select an auto handle setting\",\r\n props:\r\n\t\t\t\t{\r\n\t\t\t\t\treduce: (ah: YesNoOption) => ah.value\r\n\t\t\t\t},\r\n csvData: this.yesNoNotSet.map(v => v.title),\r\n csvComponent: 'select',\r\n csvValidation: {\r\n validationCell: ({ currentElement }) => {\r\n return { isValid: this.yesNoNotSet.some(({ title }) => title === currentElement.csvValue) }\r\n }\r\n },\r\n\t\t\t\torder: 10\r\n },\r\n {\r\n\t\t\t\ttitle: \"Service Level Agreement (SLA) in Seconds\",\r\n\t\t\t\tkey: \"slaBreachSeconds\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\treadOnly: !(this.isServiceLevelAgreementsEnabled && this.permissions.canEditSLAs),\r\n\t\t\t\tvisible: this.isServiceLevelAgreementsEnabled && (this.permissions.canViewSLAs || this.permissions.canEditSLAs),\r\n\t\t\t\tplaceholder: 'Enter the number of seconds permitted before an alarm breaches the SLA.',\r\n\t\t\t\tdefaultValue: null,\r\n\t\t\t\tmin: 0,\r\n\t\t\t\tcsvComponent: 'number',\r\n csvExclude: !(this.isServiceLevelAgreementsEnabled && this.permissions.canEditSLAs),\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: validateSlaBreachSecondsValue(currentElement.csvValue, this.maxResponseSlaDuration)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tisSlaValueValid: helpers.withParams(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttype: \"isSlaValueValid\",\r\n\t\t\t\t\t\t\terrorMessage: generateErrorMessage(this.maxResponseSlaDuration)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t(value) => {\r\n\t\t\t\t\t\t\treturn validateSlaBreachSecondsValue(value, this.maxResponseSlaDuration)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t},\r\n order: 11,\r\n\t\t\t}\r\n\r\n\t\t] as ModalItemCSV[];\r\n\r\n if (this.showAutomations) {\r\n items.push({\r\n title: \"Automations\",\r\n key: \"automations\",\r\n dataType: \"component\",\r\n required: false,\r\n visible: this.showAutomations,\r\n data: ResponseActionSetup,\r\n csvExclude: true,\r\n updateOnly: true,\r\n props: {\r\n groupID: this.selectedResponse.groupID\r\n },\r\n\t\t\t\torder: 11\r\n });\r\n }\r\n\r\n if (this.showMaskDurationLimit) {\r\n items.push({\r\n title: \"Max Mask Duration (minutes)\",\r\n key: \"maskDurationLimit\",\r\n dataType: \"number\",\r\n maxLength: 10,\r\n min: 0,\r\n csvComponent: 'input',\r\n visible: this.showMaskDurationLimit,\r\n\t\t\t\torder: 12\r\n });\r\n }\r\n\r\n\t\tif (this.isCustomFieldAlarmsEnabled && this.alarmCustomFields != null){\r\n\t\t\tvar shellModalItem: ModalItemCSV = {\r\n\t\t\t\ttitle: \"\",\r\n\t\t\t\tkey: \"\",\r\n\t\t\t\tdataType: \"\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\torder: items.length + 1,\r\n\t\t\t\tcsvComponent: null\r\n\t\t\t};\r\n\r\n\t\t\tfor (let i = 0; i < this.alarmCustomFields.length; i++) {\r\n\t\t\t\tlet alarmCustomFieldModalItem = MapCustomFieldToModalItem(this.alarmCustomFields[i], shellModalItem);\r\n\t\t\t\titems.push(alarmCustomFieldModalItem as ModalItemCSV);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn items;\r\n }\r\n\r\n private alarmGroupingOptions: AlarmGrouping[] = [\r\n {\r\n title: \"By Area\",\r\n isRaiseIndividual: false,\r\n isRaiseGrouped: false\r\n },\r\n {\r\n title: \"By Alarm\",\r\n isRaiseIndividual: false,\r\n isRaiseGrouped: true\r\n },\r\n {\r\n title: \"Not Grouped\",\r\n isRaiseIndividual: true,\r\n isRaiseGrouped: false\r\n },\r\n {\r\n title: \"Not Set\",\r\n isRaiseIndividual: null,\r\n isRaiseGrouped: null\r\n }\r\n ];\r\n\r\n private yesNoNotSet: YesNoOption[] = [\r\n {\r\n title: \"Yes\",\r\n value: 1,\r\n\t\t\tactualValue: true\r\n },\r\n {\r\n title: \"No\",\r\n value: 2,\r\n\t\t\tactualValue: false\r\n },\r\n {\r\n title: \"Not set\",\r\n value: 3,\r\n\t\t\tactualValue: null\r\n }\r\n ];\r\n\r\n private get isBulkAddEnabled() : boolean {\r\n return get(this.featuresList, [\"AlarmSetup\", \"BulkHttpAdd\"]) && !this.readonly;\r\n }\r\n\r\n private get isServiceLevelAgreementsEnabled() : boolean {\r\n return !!get(this.featuresList, [\"Alarms\", \"SLAs\"]);\r\n }\r\n\r\n\tprivate get showAutomations(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]) &&\r\n\t\t(!!this.permissions.canViewAutomations || !!this.permissions.canEditAutomations);\r\n\t}\r\n\r\n\tprivate get showLinkedCamerasInModal(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Devices\"]) && !get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]);\r\n\t}\r\n\r\n\tprivate get showMaskDurationLimit(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"Masking\", \"MaxMaskDuration\"], false);\r\n\t}\r\n\r\n\tprivate get isCustomFieldAlarmsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"CustomFields\", \"Alarms\"]);\r\n\t}\r\n\r\n\tpublic get hasCanViewCustomFieldsPermission(): boolean {\r\n\t\treturn this.permissions.canViewCustomFields;\r\n\t}\r\n\r\n private async retrieveAlarmDecoderServers(): Promise {\r\n let alarmDecoderServers = await api.getAlarmDecoderServerList();\r\n if(!alarmDecoderServers || alarmDecoderServers.length == 0){\r\n this.alarmDecoderServers = [];\r\n return;\r\n }\r\n\r\n this.alarmDecoderServers = [];\r\n for (const [key, value] of Object.entries(alarmDecoderServers)) {\r\n this.alarmDecoderServers.push({\r\n title: value.toString(),\r\n serverID: parseInt(key)\r\n });\r\n }\r\n }\r\n\r\n private async mounted(): Promise {\r\n this.responseScripts = await api.getResponseScripts();\r\n await this.updateResponses();\r\n if (this.responses.length > 0) {\r\n const organizationSettings = await api.getOrganizationSettings();\r\n const httpReceiverApiKey = organizationSettings.apiKeySettings.find(x => x.keyType === \"HttpReceiver\");\r\n if (httpReceiverApiKey) {\r\n this.httpReceiverApiKey = httpReceiverApiKey.keyValue;\r\n } else {\r\n this.httpReceiverApiKey = await api.createHttpAlarmReceiverApiKey();\r\n }\r\n }\r\n\r\n\t\tif (this.isCustomFieldAlarmsEnabled) {\r\n\t\t\tawait this.retrieveCustomFields({ tableType: CustomFieldTableTypes.Alarm, live: true });\r\n\t\t}\r\n\r\n await this.fetchAreaDictionary();\r\n }\r\n\r\n private async putAlarm(response: ResponseRow): Promise {\r\n if (response.script) {\r\n response.scriptID = response.script.scriptID;\r\n response.scriptTitle = response.script.title;\r\n } else {\r\n response.scriptID = null;\r\n response.scriptTitle = null;\r\n }\r\n\r\n //Converts bulk upload autohandle setting to actual setting\r\n\t\tif (typeof(response.autoHandle) === \"string\")\r\n\t\t{\r\n const ahTitle = response.autoHandle as string;\r\n\t\t\tresponse.autoHandle = this.yesNoNotSet.find(yn => yn.title == ahTitle)?.value\r\n\t\t}\r\n\r\n\t\t//Converts the autohandle to its actual value\r\n\t\tif (typeof(response.autoHandle) === \"number\")\r\n\t\t{\r\n\t\t\tresponse.autoHandle = this.yesNoNotSet.find(yn => yn.value == response.autoHandle)?.actualValue\r\n\t\t}\r\n\r\n response.isRaiseIndividual = response.grouping.isRaiseIndividual;\r\n response.isRaiseGrouped = response.grouping.isRaiseGrouped;\r\n\r\n if (response.server) {\r\n response.serverID = response.server?.serverID;\r\n // if its a new alarm and the serverID isn't set clear out the response code\r\n if(!response.serverID && !response.responseID){\r\n response.responseCode = null;\r\n }\r\n }\r\n\r\n\t\tif (response.systemIdentifier.responseId != HttpAlarmConstants.AlarmDecoderResponseId) {\r\n\t\t\tresponse.extraValue = response.systemIdentifier.extraValue;\r\n\t\t}\r\n\r\n\t\tif (this.isCustomFieldAlarmsEnabled) {\r\n\t\t\tresponse.customFields = mapObjectFieldsToArray(response, \"id\", \"value\", \"cf\");\r\n\t\t} else {\r\n\t\t\tresponse.customFields = null;\r\n\t\t}\r\n\r\n if (!response.responseID) {\r\n try {\r\n await api.createNewHttpResponse(response);\r\n }\r\n catch (error) {\r\n this.$notify({\r\n type: \"error\",\r\n title: \"Failed to create alarm\",\r\n text: error.response.data\r\n });\r\n }\r\n const isFirstHttpResponse = this.responses.length === 0;\r\n if (isFirstHttpResponse) {\r\n this.httpReceiverApiKey = await api.createHttpAlarmReceiverApiKey();\r\n }\r\n } else {\r\n await api.updateResponse(response);\r\n await this.updateAutomations(response.responseID, response.automations ?? [], this.selectedResponse.automations ?? []);\r\n }\r\n await this.updateResponses(this.mostRecentSearchParams);\r\n this.$emit(\"triggerUpdate\");\r\n }\r\n\r\n\tprivate async updateAutomations(responseId: number,newAutomations: ResponseAction[], oldAutomations: ResponseAction[]){\r\n\t\t// Cant use foreach loop as it does not play nicely with async calls\r\n\t\t// Create/Update responseActions\r\n\t\tif(newAutomations != null)\r\n\t\t{\r\n\t\t\tfor(let i = 0; i < newAutomations.length; i++) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tvar newAutomation = newAutomations[i];\r\n newAutomation.description = null;\r\n\r\n\t\t\t\t\t// If we have no response its a new automation\r\n\t\t\t\t\tif(!newAutomation.responseActionID)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnewAutomation.responseID = responseId;\r\n\r\n\t\t\t\t\t\tawait api.createAlarmAutomation(responseId, newAutomation);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse{\r\n\r\n\t\t\t\t\t\t// Check to see if changees have been made to an item before we try and hit the backend\r\n\t\t\t\t\t\t// Shallow compare\r\n\t\t\t\t\t\tvar oldAutomation = oldAutomations.find(r => r.responseActionID == newAutomations[i].responseActionID)\r\n\r\n\t\t\t\t\t\tvar updated = newAutomation.objectID != oldAutomation.objectID\r\n\t\t\t\t\t\t\t\t\t|| newAutomation.responseActionTypeID != oldAutomation.responseActionTypeID\r\n\t\t\t\t\t\t\t\t\t|| newAutomation.settingsMeta != oldAutomation.settingsMeta\r\n\t\t\t\t\t\tif(updated)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tawait api.updateAlarmAutomation(responseId, newAutomation);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcatch (error) {\r\n\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Failed to create/update automation\",\r\n\t\t\t\t\ttext: error.response.data\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\t// Delete responseActions that no longer exist\r\n\t\tif(oldAutomations && oldAutomations.length > 0)\r\n\t\t{\r\n\t\t\tfor(let i = 0; i < oldAutomations.length ; i++)\r\n\t\t\t{\r\n\t\t\t\tif(!newAutomations.find(r => r.responseActionID == oldAutomations[i].responseActionID))\r\n\t\t\t\t{\r\n try {\r\n await api.deleteAlarmAutomation(this.selectedResponse.responseID, oldAutomations[i].responseActionID)\r\n }\r\n catch (error) {\r\n this.$notify({\r\n type: \"error\",\r\n title: \"Failed to delete automation\",\r\n text: error.response.data\r\n\t\t\t\t\t });\r\n\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 private onModalOpen(response: ResponseExtended): void {\r\n if (response) {\r\n response.script = this.responseScripts.find(rs => rs.scriptID === response.scriptID);\r\n this.selectedResponse = response;\r\n }\r\n\r\n\t\tif (this.isCustomFieldAlarmsEnabled) {\r\n\t\t\tmapArrayFieldsToObject(this.selectedResponse, this.selectedResponse.customFields, this.alarmCustomFields,\"id\", \"value\", \"cf\");\r\n\t\t}\r\n }\r\n\r\n private async deleteAlarm(response: ResponseExtended): Promise {\r\n if (response && response.responseID) {\r\n await api.deleteResponse(response.responseID);\r\n await this.updateResponses(this.mostRecentSearchParams);\r\n this.$emit(\"triggerUpdate\");\r\n }\r\n }\r\n\r\n public async updateResponses(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n try {\r\n this.isLoading = true;\r\n this.mostRecentSearchParams = paginatedSearchQueryParams;\r\n await this.retrieveAlarmDecoderServers();\r\n const cancellableQuery = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\r\n if (this.selectedServerId) {\r\n cancellableQuery.params.serverId = this.selectedServerId;\r\n }\r\n\r\n let result: ResponsesPagedResponse = await api.getHttpResponses(cancellableQuery);\r\n let responseData: ResponseRow[];\r\n\r\n if (result.data) {\r\n responseData = result.data.map((response: any) => {\r\n let isReadOnly = !!response.groupSyncId && !this.permissions.canOverrideGroupSync && !this.permissions.isSystemAdmin;\r\n response.readOnly = isReadOnly;\r\n response.readOnlyMessage = isReadOnly ? \"You do not have permission to edit Sync Alarms\": null;\r\n return response;\r\n })\r\n }\r\n\r\n this.responses = responseData;\r\n const systemIdentifierOptions = this.getSystemIdentifierOptions();\r\n if (this.responses)\r\n {\r\n for(var i = 0; i < this.responses.length; i++)\r\n\t\t\t\t{\r\n var response = this.responses[i];\r\n response.automations = this.showAutomations ? await api.getAlarmAutomations(response.responseID) : [];\r\n response.script = this.responseScripts.find(rs => rs.scriptID === response.scriptID);\r\n response.autoHandle = this.yesNoNotSet.find(yn => yn.actualValue == response.autoHandle)?.value\r\n response.grouping = this.alarmGroupingOptions.find(ag =>\r\n ag.isRaiseGrouped == response.isRaiseGrouped &&\r\n ag.isRaiseIndividual == response.isRaiseIndividual);\r\n const server = this.alarmDecoderServers ? this.alarmDecoderServers.find(ad => ad.serverID == response.serverID) : null;\r\n if (server) {\r\n response.server = {\r\n title: server ? server.title : null,\r\n serverID: response.serverID\r\n }\r\n } else {\r\n response.server = null;\r\n }\r\n response.showOriginalEmail = false;\r\n response.systemIdentifier = systemIdentifierOptions.firstOrDefault(si => si.extraValue == response.extraValue);\r\n if (!response.systemIdentifier) {\r\n // check to see if it's using an alarm decoder\r\n const isUsingAlarmDecoder = this.alarmDecoderServers.some(ad => ad.serverID == response.server.serverID);\r\n if (isUsingAlarmDecoder) {\r\n response.systemIdentifier = { responseId: HttpAlarmConstants.AlarmDecoderResponseId, title: \"Use Alarm Decoder\", extraValue: \"\" };\r\n }\r\n }\r\n Vue.set(response, \"server\", response.server);\r\n }\r\n }\r\n this.totalRecords = result.totalRecords;\r\n }\r\n catch (ex) {\r\n console.error(\"Unexpected error searching alarms: \" + ex);\r\n } finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n private convertDataToRest(formData): ResponseRow[] {\r\n return formData.map(value => {\r\n return {\r\n ...value,\r\n groupID: this.areasByTitle[`${value.groupID}`],\r\n priority: Number(value.priority),\r\n grouping: this.alarmGroupingOptions.find(({ title }) => title === value.grouping),\r\n script: this.responseScripts.find(({ title }) => title === value.script)\r\n }\r\n })\r\n }\r\n\r\n private bulkOnSubmit({ formData }): void {\r\n const max = formData.length;\r\n let counterSucceed = 0;\r\n let progress: any = {\r\n max,\r\n value: 0,\r\n status: 'init',\r\n successfulMessage: `Successfully added ${max} Alarms`,\r\n };\r\n\r\n this.progressBulk = {\r\n ...progress\r\n };\r\n\r\n const convertedData = this.convertDataToRest(formData);\r\n\r\n convertedData.forEach(async (alarm) => {\r\n const id = alarm.rowId;\r\n\r\n return this.putAlarm(alarm)\r\n .then(() => {\r\n progress.rowIndex = id;\r\n counterSucceed += 1;\r\n progress.value = progress.value + 1;\r\n\r\n this.progressBulk = {\r\n ...progress,\r\n status: counterSucceed === max ? 'succeed' : 'progress',\r\n };\r\n })\r\n .catch(() => {\r\n const failedContact = convertedData.find(({ rowId }) => rowId === id);\r\n this.progressBulk = {\r\n ...progress,\r\n rowIndex: id,\r\n status: 'error',\r\n error: {\r\n name: failedContact.title,\r\n message: `Bulk upload has failed to add alarm ${failedContact.title}`\r\n }\r\n };\r\n })\r\n })\r\n }\r\n\r\n private onCloseBulk(): void {\r\n this.resetProgress()\r\n }\r\n\r\n private resetProgress(): void {\r\n this.progressBulk = {}\r\n }\r\n\r\n private get defaultFile(): DefaultFile {\r\n const modalItems = this.modalItems\r\n const headers = modalItems.filter(({ csvExclude }) => !csvExclude).map(({ title }) => title)\r\n const body = headers.map( v => '')\r\n return {\r\n name: 'AlarmTemplate.csv',\r\n data: `${headers.join()}\\r\\n${body.join()}`\r\n }\r\n }\r\n\r\n private get areasByTitle(): Dictionary {\r\n return invert(this.areaDictionary);\r\n }\r\n\r\n private copySystemIdentifier(responseID: number): void {\r\n let idToCopy = `copy-to-clipboard-target-${responseID}`;\r\n let node = document.getElementById(idToCopy);\r\n let range = document.createRange();\r\n range.selectNodeContents(node);\r\n window.getSelection().removeAllRanges();\r\n window.getSelection().addRange(range);\r\n document.execCommand(\"copy\");\r\n\r\n this.tooltipToShow =`copy-to-clipboard-tooltip-${responseID}`;\r\n setTimeout(() => {\r\n this.tooltipToShow = \"\";\r\n } , 2000);\r\n }\r\n\r\n private getSystemIdentifier(response: ResponseExtended): string {\r\n // If a http alarm is linked to an alarm decoder it will take on the email of the decoder in the rootResponseEmailProperty\r\n // but we only want the system identifier part of the email for http alarms\r\n return response.rootResponseEmail ? response.rootResponseEmail.split('@')[0] : response.extraValue\r\n }\r\n\r\n private getSystemIdentifierOptions(): SystemIdentifierOption[] {\r\n let result = [];\r\n result.push({ responseId: HttpAlarmConstants.AutoGeneratedResponseId, title: \"Auto Generated\", extraValue: \"\" });\r\n if (this.alarmDecoderServers.length > 0) {\r\n result.push({ responseId: HttpAlarmConstants.AlarmDecoderResponseId, title: \"Use Alarm Decoder\", extraValue: \"\" });\r\n }\r\n\r\n this.responses.forEach(r => {\r\n if (!r.responseCode) {\r\n result.push({ responseId: r.responseID, title: `${r.extraValue} (${r.groupTitle} - ${r.title})`, extraValue: r.extraValue });\r\n }\r\n });\r\n return result;\r\n }\r\n\r\n private isResponseCodeFieldVisible(value: ResponseRow): boolean {\r\n\t\tif(!value)\r\n {\r\n return false;\r\n }\r\n\r\n\t\t// Do not show if set to Auto Generated\r\n\t\tif (value?.systemIdentifier?.title === \"Auto Generated\") {\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\r\n\t\t\t// This checks if a response is the root\r\n\t\t\t// If it is don't show the Response Code field\r\n\t\t\tif (value?.systemIdentifier?.extraValue !== \"\" &&\r\n\t\t\t\t(value?.responseCode === null || value?.responseCode === \"\") &&\r\n\t\t\t\tvalue?.extraValue === value?.systemIdentifier?.extraValue) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// This is a non-root alarm so show the ResponseCode field\r\n\t\t\treturn true;\r\n\t\t}\r\n }\r\n\r\n\tprivate async openCustomFieldModal(): Promise {\r\n\t\tthis.$refs.customFieldTableView.showCustomFieldModal();\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HttpAlarmSetupTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HttpAlarmSetupTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./HttpAlarmSetupTable.vue?vue&type=template&id=e115391e\"\nimport script from \"./HttpAlarmSetupTable.vue?vue&type=script&lang=ts\"\nexport * from \"./HttpAlarmSetupTable.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","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\"},[_c('generic-table',{staticClass:\"flex-grow-1\",attrs:{\"term\":\"Alarm Decoder\",\"dataList\":_vm.alarmDecoders,\"columns\":_vm.columns,\"modalItems\":_vm.modalItems,\"onSave\":_vm.putAlarmDecoder,\"onDelete\":_vm.deleteAlarmDecoder,\"onAddNew\":_vm.putAlarmDecoder,\"onModalOpen\":_vm.onModalOpen,\"isLoading\":_vm.isLoading,\"deleteActionMessages\":_vm.deleteAlarmDecoderMessage,\"totalAvailableRows\":_vm.totalRecords},on:{\"search-filter-updated\":_vm.loadDecoders},scopedSlots:_vm._u([{key:\"canDistanceFilter\",fn:function(slotProps){return [_c('i',{staticClass:\"fas\",class:slotProps.row.canDistanceFilter ? 'fa-check' : 'fa-times'})]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-table',{ref:\"eventTypes\",attrs:{\"select-mode\":\"single\",\"selectable\":\"\",\"fields\":_vm.fields,\"items\":_vm.localEvents,\"show-empty\":\"\"},scopedSlots:_vm._u([{key:\"cell(edit)\",fn:function(data){return [(_vm.deleting && _vm.editingIndex === data.index)?_c('div',[_vm._v(\" Delete event? \"),(!_vm.readonly && !_vm.addOrEdit)?_c('b-button-group',{attrs:{\"size\":\"sm\"}},[_c('b-button',{attrs:{\"id\":\"btnConfirmDelete\"},on:{\"click\":function($event){return _vm.deleteEventType(data.index)}}},[_vm._v(\" Yes \")]),_c('b-button',{attrs:{\"id\":\"btnCancelDelete\"},on:{\"click\":function($event){return _vm.cancelEventType()}}},[_vm._v(\" No \")])],1):_vm._e()],1):(!_vm.readonly && !_vm.addOrEdit)?_c('b-button-group',{attrs:{\"size\":\"sm\"}},[_c('b-button',{attrs:{\"id\":\"btnEdit\"},on:{\"click\":function($event){return _vm.setEditEventType(data, false)}}},[_c('i',{staticClass:\"fas fa-edit\"})]),_c('b-button',{attrs:{\"id\":\"btnDelete\"},on:{\"click\":function($event){return _vm.setEditEventType(data, true)}}},[_c('i',{staticClass:\"fas fa-trash\"})])],1):_vm._e()]}},{key:\"cell(isRaiseIndividual)\",fn:function(data){return [_vm._v(\" \"+_vm._s(data.item.isRaiseIndividual ? \"No Grouping\" : \"Inherit\")+\" \")]}},{key:\"empty\",fn:function(){return [_c('p',{staticClass:\"text-muted\",staticStyle:{\"text-align\":\"center\"}},[_vm._v(\" No Event Types\")])]},proxy:true},(_vm.addOrEdit)?{key:\"custom-foot\",fn:function(){return [_c('td',[_c('b-form-input',{attrs:{\"id\":\"txtTitle\",\"placeholder\":\"Title\",\"maxLength\":\"200\"},model:{value:(_vm.selectedEventType.title),callback:function ($$v) {_vm.$set(_vm.selectedEventType, \"title\", $$v)},expression:\"selectedEventType.title\"}})],1),_c('td',[_c('b-form-input',{attrs:{\"id\":\"txtEventCode\",\"placeholder\":\"Event Code\",\"maxLength\":\"50\"},model:{value:(_vm.selectedEventType.eventCode),callback:function ($$v) {_vm.$set(_vm.selectedEventType, \"eventCode\", $$v)},expression:\"selectedEventType.eventCode\"}})],1),_c('td',[_c('b-form-input',{attrs:{\"id\":\"txtPriority\",\"placeholder\":\"Priority\",\"type\":\"number\"},model:{value:(_vm.selectedEventType.defaultPriority),callback:function ($$v) {_vm.$set(_vm.selectedEventType, \"defaultPriority\", $$v)},expression:\"selectedEventType.defaultPriority\"}})],1),_c('td',[_c('vue-select',{staticClass:\"dark\",attrs:{\"id\":\"btnAddGrouping\",\"clearable\":false,\"options\":_vm.groupings,\"value\":_vm.groupings.find(function (x) { return x.value == _vm.selectedEventType.isRaiseIndividual; })},on:{\"input\":_vm.setDefaultGrouping}})],1),_c('td',[_c('b-button-group',{attrs:{\"size\":\"sm\"}},[_c('b-button',{attrs:{\"id\":\"btnSave\",\"disabled\":_vm.isSaveDisabled},on:{\"click\":_vm.saveEventType}},[_c('i',{staticClass:\"fas\",class:[_vm.editingIndex >= 0 ? 'fa-save' : 'fa-plus']})]),_c('b-button',{attrs:{\"id\":\"btnCancel\"},on:{\"click\":_vm.cancelEventType}},[_c('i',{staticClass:\"fas fa-ban\"})])],1)],1)]},proxy:true}:null],null,true)}),(!_vm.addOrEdit && !_vm.readonly)?_c('b-button',{staticClass:\"float-left\",attrs:{\"id\":\"btnAdd\",\"size\":\"md\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.addNewEventType()}}},[_vm._v(\"Add Event Type\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport VueSelect from 'vue-select';\r\nimport { BTable } from 'bootstrap-vue';\r\n\r\nexport interface AlarmDecoderEvent {\r\n serverTypeID: number;\r\n eventNum: number;\r\n title: string;\r\n eventCode: string;\r\n defaultPriority: string;\r\n isRaiseIndividual: boolean; // Default Grouping\r\n}\r\n\r\n@Component({\r\n components: {\r\n \"vue-select\": VueSelect,\r\n }\r\n})\r\nexport default class AlarmDecoderEventSetup extends Vue {\r\n $refs!: {\r\n\t\teventTypes: BTable;\r\n\t};\r\n\r\n @Prop()\r\n private value: AlarmDecoderEvent[]\r\n\r\n @Prop({type: Boolean, default: false})\r\n private readonly: boolean;\r\n\r\n private localEvents: any[] = [];\r\n private selectedEvent: any = {};\r\n private addOrEdit: boolean = false;\r\n private deleting: boolean = false;\r\n private editingIndex: number = -1;\r\n\r\n private defaultEventType: AlarmDecoderEvent = {\r\n serverTypeID: null,\r\n eventNum: null,\r\n title: \"\",\r\n eventCode: \"\",\r\n defaultPriority: \"\",\r\n isRaiseIndividual: false,\r\n };\r\n\r\n private selectedEventType: AlarmDecoderEvent = {\r\n serverTypeID: null,\r\n eventNum: null,\r\n title: \"\",\r\n eventCode: \"\",\r\n defaultPriority: \"\",\r\n isRaiseIndividual: false,\r\n };\r\n\r\n @Watch(\"value\")\r\n private valueWatcher(): void {\r\n this.setLocalEvents();\r\n }\r\n\r\n private setLocalEvents(): void {\r\n this.localEvents = this.value ? [...this.value] : [];\r\n }\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tthis.setLocalEvents();\r\n }\r\n\r\n private fields = [\r\n {\r\n key: \"title\",\r\n label: \"Event Type Name\",\r\n thStyle: { width: '25%'}\r\n },\r\n {\r\n key: \"eventCode\",\r\n label: \"Event Code\",\r\n thStyle: { width: '25%'}\r\n },\r\n {\r\n key: \"defaultPriority\",\r\n label: \"Default Priority\",\r\n thStyle: { width: '21%'}\r\n },\r\n {\r\n key: \"isRaiseIndividual\",\r\n label: \"Default Grouping\",\r\n },\r\n {\r\n key: \"edit\",\r\n label: \"\",\r\n thStyle: { width: '100px'}\r\n }\r\n ];\r\n\r\n\r\n @Emit(\"input\")\r\n private saveEventType(): AlarmDecoderEvent[] {\r\n this.addOrEdit = false;\r\n const eventType = {...this.selectedEventType};\r\n if(!this.localEvents) {\r\n this.localEvents = [];\r\n }\r\n\r\n if(this.editingIndex >= 0){\r\n var events = [...this.localEvents];\r\n events[this.editingIndex] = eventType;\r\n this.localEvents = [];\r\n this.localEvents = events;\r\n } else {\r\n this.localEvents.push(eventType);\r\n }\r\n this.editingIndex = -1;\r\n this.selectedEventType = {...this.defaultEventType};\r\n return this.localEvents;\r\n }\r\n\r\n @Emit(\"input\")\r\n private deleteEventType(index: number): AlarmDecoderEvent[] {\r\n this.$refs.eventTypes.clearSelected();\r\n this.editingIndex = -1;\r\n this.deleting = false;\r\n this.localEvents.splice(index,1);\r\n return this.localEvents;\r\n }\r\n\r\n private setEditEventType(data: any, setDelete: boolean): void {\r\n const resultEventType = {...data.item};\r\n this.selectedEventType = resultEventType;\r\n if(setDelete){\r\n this.addOrEdit = false;\r\n this.deleting = true;\r\n } else {\r\n this.addOrEdit = true;\r\n this.deleting = false;\r\n }\r\n this.$refs.eventTypes.selectRow(data.index)\r\n this.editingIndex = data.index;\r\n }\r\n\r\n private cancelEventType(): void {\r\n this.addOrEdit = false;\r\n this.deleting = false;\r\n this.selectedEventType = {...this.defaultEventType};\r\n this.$refs.eventTypes.clearSelected();\r\n this.editingIndex = -1;\r\n }\r\n\r\n private groupings: any[] = [\r\n {\r\n label: \"Inherit\",\r\n value: false\r\n },\r\n {\r\n label: \"No Grouping\",\r\n value: true\r\n }\r\n ];\r\n\r\n private get isSaveDisabled(): boolean {\r\n if (this.selectedEventType.title && this.selectedEventType.eventCode && this.selectedEventType.defaultPriority)\r\n return false;\r\n return true;\r\n }\r\n\r\n private setDefaultGrouping(value: any): void {\r\n this.selectedEventType.isRaiseIndividual = value.value;\r\n }\r\n\r\n private addNewEventType(): void{\r\n this.addOrEdit = true;\r\n this.deleting = false;\r\n this.selectedEventType = {...this.defaultEventType};\r\n this.$refs.eventTypes.clearSelected();\r\n this.editingIndex = -1;\r\n }\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmDecoderEventSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmDecoderEventSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmDecoderEventSetup.vue?vue&type=template&id=61dcf3ae&scoped=true\"\nimport script from \"./AlarmDecoderEventSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmDecoderEventSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmDecoderEventSetup.vue?vue&type=style&index=0&id=61dcf3ae&prod&scoped=true&lang=scss\"\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 \"61dcf3ae\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport api from '@/services/api.service';\r\nimport GenericTable, { TableHeader } from '@/components/table/generic-table.vue';\r\nimport { ModalItem } from '@/components/table/generic-update-modal.vue';\r\nimport AlarmDecoder, { AlarmDecoderExtended } from '@/types/sv-data/alarms/AlarmDecoder';\r\nimport AlarmDecoderEventSetup from './AlarmDecoderEventSetup.vue';\r\nimport { helpers } from 'vuelidate/lib/validators';\r\nimport Script from '@/types/sv-data/events/Script';\r\nimport { namespace, Getter } from 'vuex-class';\r\nimport AreaTreeSelect from '@/components/form/AreaTreeSelect.vue';\r\nimport { PaginatedSearchQueryParams } from \"@/store/types\";\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport AlarmDecoderPagedResponse from \"@/types/sv-data/alarms/AlarmDecoderPagedResponse\";\r\n\r\n@Component({\r\n components: {\r\n \"generic-table\": GenericTable,\r\n }\r\n})\r\nexport default class AlarmDecoderTable extends Mixins(PaginatedSearch) {\r\n\t@Getter getFeature: (featuresList: string[]) => boolean;\r\n\r\n private get hasAlarmSetupEditAreaFlag() {\r\n return this.getFeature([\"AlarmSetup\", \"EditArea\"]);\r\n }\r\n\r\n private get hasAlarmSetupLocationRegexFlag(): boolean {\r\n return this.getFeature([\"AlarmSetup\", \"LocationRegex\"]);\r\n }\r\n\r\n\tprivate get hasAlarmSetupExtraTextRegexFlag(): boolean {\r\n\t\treturn this.getFeature([\"AlarmSetup\", \"ExtraTextRegex\"]);\r\n\t}\r\n\r\n private get canDistanceFilterFlag(): boolean {\r\n return this.getFeature([\"AlarmSetup\", \"DistanceFiltering\"]);\r\n }\r\n\r\n private get hasAlarmSetupLatLngRegexFlag(): boolean {\r\n return this.getFeature([\"AlarmSetup\", \"LocationRegex\", \"LatLngRegexes\"]);\r\n }\r\n\r\n private get hasAlarmSetupURLRegexFlag(): boolean {\r\n return this.getFeature([\"AlarmSetup\", \"URLRegex\"]);\r\n }\r\n\r\n private responseScripts: Script[] = [];\r\n\r\n public get columns (): TableHeader[] {\r\n const columns : TableHeader[] = [\r\n {\r\n title: \"Title\",\r\n key: \"title\",\r\n order: 1,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"The alarm decoder title\",\r\n searchable: true,\r\n visible: true,\r\n dataType: \"input\",\r\n isTermLabel: true,\r\n sortable: true,\r\n isSortedByDefault: true\r\n },\r\n {\r\n title: \"System Identifier\",\r\n key: \"systemIdentifier\",\r\n order: 2,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"System Identifier used when triggering an alarm\",\r\n visible: true,\r\n isTermLabel: true,\r\n useCustomCell: false,\r\n searchable: true,\r\n addQuickCopy: true,\r\n sortable: true,\r\n },\r\n {\r\n title: \"Response Regex\",\r\n key: \"responseRegex\",\r\n order: 3,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"The response regex\",\r\n searchable: true,\r\n visible: true,\r\n dataType: \"input\",\r\n isTermLabel: true,\r\n sortable: true,\r\n },\r\n {\r\n title: \"Event Regex\",\r\n key: \"eventRegex\",\r\n order: 4,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"The event regex\",\r\n searchable: true,\r\n visible: true,\r\n dataType: \"input\",\r\n isTermLabel: true,\r\n sortable: true,\r\n }\r\n ];\r\n\r\n if(this.hasAlarmSetupLocationRegexFlag)\r\n {\r\n columns.push({\r\n title: \"Location Regex\",\r\n key: \"locationRegex\",\r\n order: 5,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"The location regex\",\r\n searchable: true,\r\n visible: true,\r\n dataType: \"input\",\r\n isTermLabel: true,\r\n sortable: true\r\n });\r\n }\r\n\r\n if(this.hasAlarmSetupLatLngRegexFlag)\r\n {\r\n columns.push({\r\n title: \"Latitude Regex\",\r\n key: \"latRegex\",\r\n order: 6,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"The latitude regex\",\r\n searchable: true,\r\n visible: false,\r\n dataType: \"input\",\r\n isTermLabel: true,\r\n sortable: true\r\n },\r\n {\r\n title: \"Longitude Regex\",\r\n key: \"lngRegex\",\r\n order: 7,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"The longitude regex\",\r\n searchable: true,\r\n visible: false,\r\n dataType: \"input\",\r\n isTermLabel: true,\r\n sortable: true\r\n });\r\n }\r\n \r\n if(this.hasAlarmSetupExtraTextRegexFlag)\r\n\t\t{\r\n\t\t\tcolumns.push({\r\n\t\t\t\ttitle: \"Extra Text Regex\",\r\n\t\t\t\tkey: \"extraTextRegex\",\r\n\t\t\t\torder: 8,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The extra text regex\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: false,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true\r\n\t\t\t});\r\n\t\t}\r\n\r\n if(this.canDistanceFilterFlag)\r\n {\r\n columns.push({\r\n title: \"Distance Filter\",\r\n key: \"canDistanceFilter\",\r\n order: 9,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"Shows whether an alarm decoder supports distance filtering\",\r\n searchable: false,\r\n visible: false,\r\n dataType: \"input\",\r\n isTermLabel: true,\r\n sortable: true,\r\n useCustomCell: true\r\n });\r\n }\r\n\r\n if(this.hasAlarmSetupURLRegexFlag)\r\n {\r\n columns.push({\r\n title: \"URL Regex\",\r\n key: \"urlRegex\",\r\n order: 10,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"The URL regex\",\r\n searchable: true,\r\n visible: false,\r\n dataType: \"input\",\r\n isTermLabel: true,\r\n sortable: true\r\n });\r\n }\r\n\r\n return columns;\r\n }\r\n\r\n public get modalItems (): ModalItem[] {\r\n return [\r\n {\r\n title: \"Title\",\r\n key: \"title\",\r\n dataType: \"text\",\r\n maxLength: 250,\r\n required: true,\r\n placeholder: \"Enter the alarm decoder title\",\r\n },\r\n {\r\n title: \"Response Regex\",\r\n key: \"responseRegex\",\r\n dataType: \"text\",\r\n maxLength: 200,\r\n required: true,\r\n placeholder: \"Enter the response regex\",\r\n validations: {\r\n isRegexValid: helpers.withParams(\r\n { type: \"isRegexValid\", errorMessage: \"Response Regex must contains ?\" },\r\n value => {\r\n return !helpers.req(value) || value.includes(\"?\")\r\n }\r\n )\r\n },\r\n },\r\n {\r\n title: \"Event Regex\",\r\n key: \"eventRegex\",\r\n dataType: \"text\",\r\n maxLength: 200,\r\n required: true,\r\n placeholder: \"Enter the event regex\",\r\n validations: {\r\n isRegexValid: helpers.withParams(\r\n { type: \"isRegexValid\", errorMessage: \"Event Regex must contains ?\" },\r\n value => {\r\n return !helpers.req(value) || value.includes(\"?\")\r\n }\r\n )\r\n },\r\n },\r\n {\r\n title: \"Location Regex\",\r\n key: \"locationRegex\",\r\n dataType: \"text\",\r\n maxLength: 200,\r\n required: false,\r\n placeholder: \"Enter the location regex\",\r\n validations: {\r\n isRegexValid: helpers.withParams(\r\n { type: \"isRegexValid\", errorMessage: \"Location Regex must contain ?\" },\r\n value => {\r\n return !helpers.req(value) || value.includes(\"?\")\r\n }\r\n )\r\n },\r\n visible: this.hasAlarmSetupLocationRegexFlag,\r\n requiredMethod: (value) => { \r\n return (value?.latRegex != null && value?.latRegex.trim()) || (value?.lngRegex != null && value?.lngRegex.trim())\r\n }, \r\n },\r\n {\r\n title: \"Latitude Regex\",\r\n key: \"latRegex\",\r\n dataType: \"text\",\r\n maxLength: 200,\r\n required: false,\r\n placeholder: \"Enter the latitude regex\",\r\n validations: {\r\n isRegexValid: helpers.withParams(\r\n { type: \"isRegexValid\", errorMessage: \"Latitude Regex must contain ?\" },\r\n value => {\r\n return !helpers.req(value) || value.includes(\"?\")\r\n }\r\n )\r\n },\r\n description: \"This Regex will apply to the result of the Location Regex\",\r\n visible: this.hasAlarmSetupLatLngRegexFlag,\r\n requiredMethod: (value) => { return value?.lngRegex != null && value?.lngRegex.trim() }, \r\n },\r\n {\r\n title: \"Longitude Regex\",\r\n key: \"lngRegex\",\r\n dataType: \"text\",\r\n maxLength: 200,\r\n placeholder: \"Enter the longitude regex\",\r\n validations: {\r\n isRegexValid: helpers.withParams(\r\n { type: \"isRegexValid\", errorMessage: \"Longitude Regex must contain ?\" },\r\n value => {\r\n return !helpers.req(value) || value.includes(\"?\")\r\n }\r\n )\r\n },\r\n description: \"This Regex will apply to the result of the Location Regex\",\r\n visible: this.hasAlarmSetupLatLngRegexFlag,\r\n requiredMethod: (value) => { return value?.latRegex != null && value?.latRegex.trim() }, \r\n },\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Extra Text Regex\",\r\n\t\t\t\tkey: \"extraTextRegex\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tmaxLength: 200,\r\n\t\t\t\trequired: false,\r\n\t\t\t\tplaceholder: \"Enter the extra text regex\",\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tisRegexValid: helpers.withParams(\r\n\t\t\t\t\t\t{ type: \"isRegexValid\", errorMessage: \"Extra Text Regex must contain ?\" },\r\n\t\t\t\t\t\tvalue => {\r\n\t\t\t\t\t\t\treturn !helpers.req(value) || value.includes(\"?\")\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t},\r\n\t\t\t\tvisible: this.hasAlarmSetupExtraTextRegexFlag\r\n\t\t\t},\r\n {\r\n title: \"Distance Filter\",\r\n key: \"canDistanceFilter\",\r\n dataType: \"checkbox\",\r\n visible: this.canDistanceFilterFlag,\r\n description: \"Enables distance configuration filters to be added to alarms that come in through the decoder\"\r\n },\r\n {\r\n title: \"URL Regex\",\r\n key: \"urlRegex\",\r\n dataType: \"text\",\r\n maxLength: 200,\r\n placeholder: \"Enter the URL regex\",\r\n validations: {\r\n isRegexValid: helpers.withParams(\r\n { type: \"isRegexValid\", errorMessage: \"URL Regex must contain ?\" },\r\n value => {\r\n return !helpers.req(value) || value.includes(\"?\")\r\n }\r\n )\r\n },\r\n description: \"This Regex will apply to the result of the URL Regex\",\r\n visible: this.hasAlarmSetupURLRegexFlag,\r\n requiredMethod: (value) => { return value?.urlRegex != null && value?.urlRegex.trim() }, \r\n },\r\n {\r\n title: \"Default Area\",\r\n key: \"defaultGroupId\",\r\n dataType: \"component\",\r\n readOnlyIfEdit: !this.hasAlarmSetupEditAreaFlag,\r\n required: true,\r\n data: AreaTreeSelect,\r\n props: {\r\n reduce: (a) => a.id,\r\n clearable: false\r\n },\r\n },\r\n {\r\n title: \"Default Action Plan\",\r\n key: \"defaultScriptId\",\r\n dataType: \"vselect3\",\r\n data: this.responseScripts,\r\n props: {\r\n reduce: (s) => s.scriptID,\r\n },\r\n required: false,\r\n placeholder: \"Select an action plan\",\r\n },\r\n {\r\n title: \"Default Grouping\",\r\n key: \"defaultGrouping\",\r\n dataType: \"vselect3\",\r\n data: this.groupingOptions,\r\n props: {\r\n reduce: (s) => s.value,\r\n },\r\n required: true,\r\n placeholder: \"Select an alarm grouping\",\r\n },\r\n {\r\n title: \"Default Priority\",\r\n key: \"defaultPriority\",\r\n dataType: \"number\",\r\n required: true\r\n },\r\n {\r\n title: \"Events\",\r\n key: \"serverTypeEvents\",\r\n dataType: \"component\",\r\n data: AlarmDecoderEventSetup,\r\n },\r\n ]\r\n }\r\n\r\n private alarmDecoders: AlarmDecoder[] = [];\r\n private selectedDecoder: AlarmDecoderExtended = null;\r\n private totalRecords: number = 0;\r\n private isLoading: boolean = false;\r\n\r\n private async putAlarmDecoder(decoder: AlarmDecoderExtended): Promise {\r\n if(this.selectedDecoder)\r\n {\r\n decoder.rootServerId = this.selectedDecoder.rootServerId;\r\n decoder.rootResponseId = this.selectedDecoder.rootResponseId;\r\n }\r\n await api.createOrUpdateAlarmDecoder(decoder);\r\n await this.loadDecoders(this.mostRecentSearchParams);\r\n this.$emit(\"triggerUpdate\");\r\n }\r\n\r\n private async deleteAlarmDecoder(decoder: AlarmDecoderExtended): Promise {\r\n await api.deleteAlarmDecoder(decoder.serverTypeId);\r\n await this.loadDecoders(this.mostRecentSearchParams);\r\n this.$emit(\"triggerUpdate\");\r\n }\r\n\r\n private async onModalOpen(decoder: AlarmDecoder): Promise {\r\n if(!decoder)\r\n this.selectedDecoder = null;\r\n else\r\n this.selectedDecoder = await api.getAlarmDecoder(decoder.serverTypeId);\r\n\r\n if(decoder && !decoder.serverTypeEvents)\r\n decoder.serverTypeEvents = [];\r\n }\r\n\r\n public async loadDecoders(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n try {\r\n this.isLoading = true;\r\n this.selectedDecoder = null;\r\n const cancellableQuery = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n const getAlarmDecodersPagedResponse: AlarmDecoderPagedResponse = await api.getAlarmDecoders(cancellableQuery);\r\n this.totalRecords = getAlarmDecodersPagedResponse.totalRecords;\r\n this.alarmDecoders = getAlarmDecodersPagedResponse.data;\r\n }\r\n catch (ex) {\r\n console.log(\"Unexpected error fetching alarm decoders: \" + ex);\r\n }\r\n finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n private async mounted(): Promise {\r\n this.responseScripts = await api.getResponseScripts();\r\n await this.loadDecoders();\r\n }\r\n\r\n private deleteAlarmDecoderMessage(alarmDecoder: AlarmDecoderExtended): string[]{\r\n return [`Remove ${alarmDecoder.linkedAlarmCount} configured alarm${(alarmDecoder.linkedAlarmCount > 1 ? 's':'')} which use this decoder.`];\r\n }\r\n\r\n private groupingOptions: any[] = [\r\n {\r\n title: \"Not Set\",\r\n value: 4,\r\n },\r\n {\r\n title: \"By Area\",\r\n value: 3,\r\n },\r\n {\r\n title: \"By Alarm\",\r\n value: 2,\r\n },\r\n {\r\n title: \"Not Grouped\",\r\n value: 1,\r\n }\r\n ];\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmDecoderTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmDecoderTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmDecoderTable.vue?vue&type=template&id=7437bcc7&scoped=true\"\nimport script from \"./AlarmDecoderTable.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmDecoderTable.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmDecoderTable.vue?vue&type=style&index=0&id=7437bcc7&prod&scoped=true&lang=scss\"\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 \"7437bcc7\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.userHasViewPermissions || _vm.userHasEditPermissions)?_c('div',{staticClass:\"card card-secondary table-container overflow-hidden flex-grow-1 mb-5\",attrs:{\"data-cy\":\"distance-configuration-table-container\"}},[_c('generic-table',{attrs:{\"term\":'Distance Filter',\"dataList\":_vm.dataWithActions,\"columns\":_vm.columns,\"isLoading\":_vm.isLoading,\"totalAvailableRows\":_vm.totalRecords,\"useModal\":false,\"use-slot-actions\":\"\",\"data-cy\":\"distance-configuration-table\"},on:{\"search-filter-updated\":_vm.updateData},scopedSlots:_vm._u([{key:\"radius\",fn:function(slotProps){return [_vm._v(\" \"+_vm._s(slotProps.row.radius)+\" / \"+_vm._s(_vm.getMetersAsMiles(slotProps.row.radius))+\" \")]}},{key:\"actions\",fn:function(slotProps){return [_c('b-button-group',{attrs:{\"size\":\"sm\"}},[(_vm.userHasEditPermissions)?_c('b-button',{staticClass:\"action-button\",attrs:{\"id\":\"btnDelete\",\"data-cy\":\"delete-btn\"},on:{\"click\":function($event){return _vm.handleDeleteClick(slotProps.row)}}},[_c('i',{staticClass:\"fas fa-trash\"})]):_vm._e(),_c('b-button',{staticClass:\"action-button\",attrs:{\"id\":\"btnEdit\",\"data-cy\":\"edit-btn\"},on:{\"click\":function($event){return _vm.handleEditClick(slotProps.row)}}},[_c('i',{staticClass:\"fas\",class:{'fa-edit': _vm.userHasEditPermissions, 'fa-eye': !_vm.userHasEditPermissions}})])],1)]}},{key:\"custom-button\",fn:function(){return [(_vm.userHasEditPermissions)?_c('button',{staticClass:\"btn btn-primary add-btn\",attrs:{\"data-cy\":\"add-distance-configuration-btn\"},on:{\"click\":function($event){return _vm.handleAddClick()}}},[_vm._v(\"Add Distance Filter\")]):_vm._e()]},proxy:true}],null,false,3452738631)}),(!_vm.readonly)?_c('distance-configuration-delete-modal',{attrs:{\"distanceConfiguration\":_vm.selectedDistanceConfiguration,\"showModal\":_vm.isDeleteModalShown},on:{\"closeDeleteModal\":_vm.closeDeleteModal,\"reloadDistanceConfigurations\":_vm.reloadDistanceConfigurations}}):_vm._e(),_c('distance-configuration-edit-modal',{attrs:{\"distanceConfiguration\":_vm.selectedDistanceConfiguration,\"showModal\":_vm.isEditModalShown,\"readonly\":_vm.readonly},on:{\"reloadDistanceConfigurations\":_vm.reloadDistanceConfigurations,\"closeEditModal\":_vm.closeEditModal}})],1):_c('h4',{attrs:{\"id\":\"setupErrorContainer\"}},[_vm._v(\"You do not have permissions to view this page\")])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"id\":\"distance-configuration-delete-modal\",\"title\":\"Delete Distance Filters\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"visible\":_vm.showModal,\"data-cy\":\"delete-distance-configuration-modal\"},on:{\"hidden\":function($event){return _vm.closeModal()}}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header\"},[_c('i',{staticClass:\"fas fa-trash d-inline pr-2 text-danger\"}),_c('h4',{staticClass:\"d-inline\"},[_vm._v(\"Delete Distance Filter\")])])]),_c('div',[_c('p',[_vm._v(\"To confirm this action, please type \\\"\"),_c('b',[_vm._v(\"delete\")]),_vm._v(\"\\\":\")]),_c('b-input',{attrs:{\"id\":\"delete-confirmation-input\",\"placeholder\":\"Type delete to confirm\",\"trim\":\"\"},model:{value:(_vm.confirmation),callback:function ($$v) {_vm.confirmation=$$v},expression:\"confirmation\"}})],1),_c('template',{slot:\"modal-footer\"},[_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"btn-delete-distance-configuration\",\"disabled\":!_vm.isDeleteButtonEnabled},on:{\"click\":function($event){return _vm.onDelete()}}},[_vm._v(\"Delete\")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"btn-close-delete-modal\"},on:{\"click\":function($event){return _vm.closeModal()}}},[_vm._v(\"Cancel\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport api from \"@/services/api.service\";\nimport { DistanceConfigurationDto } from \"@/store/distance-configuration/types\";\nimport { Vue, Component, Prop, Emit } from \"vue-property-decorator\";\n\n@Component({})\nexport default class DistanceConfigurationDeleteModal extends Vue {\n\t@Prop({ type: Object, default: null })\n\tprivate distanceConfiguration: DistanceConfigurationDto;\n\n\t@Prop({ default: false, type: Boolean })\n\tprivate showModal: boolean;\n\n\tprivate confirmation: string = \"\";\n\n\tprivate get isDeleteButtonEnabled(): boolean {\n\t\treturn this.confirmation.toLowerCase() == \"delete\";\n\t}\n\n\t@Emit(\"closeDeleteModal\")\n\tprivate closeModal(): void { }\n\n\tprivate async onDelete(): Promise {\n\t\tif (!this.isDeleteButtonEnabled) {\n\t\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tawait api.deleteDistanceConfiguration(this.distanceConfiguration.distanceConfigurationId);\n\t\t\tthis.$emit(\"reloadDistanceConfigurations\");\n\t\t\tthis.closeModal();\t\t\t\t\n\t\t} catch (ex) {\n\t\t\tconsole.error(\"Unexpected error fetching alarm decoders \", ex);\n\t\t}\n\t}\n}\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DistanceConfigurationDeleteModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DistanceConfigurationDeleteModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DistanceConfigurationDeleteModal.vue?vue&type=template&id=7ac85dbe&scoped=true\"\nimport script from \"./DistanceConfigurationDeleteModal.vue?vue&type=script&lang=ts\"\nexport * from \"./DistanceConfigurationDeleteModal.vue?vue&type=script&lang=ts\"\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 \"7ac85dbe\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"size\":\"lg\",\"visible\":_vm.showModal,\"centered\":\"\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"ok-title\":\"Save\",\"ok-disabled\":_vm.readonly || _vm.distanceConfigurationInvalid || (_vm.existingDistanceConfiguration && _vm.distanceConfigurationModified),\"disabled\":_vm.readonly},on:{\"hidden\":function($event){return _vm.onClose()},\"ok\":function($event){return _vm.onSave()}},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('div',[(!_vm.existingDistanceConfiguration)?_c('h4',[_c('i',{staticClass:\"fa fa-edit-icon\"}),_vm._v(\" Creating new Distance Filter\")]):_vm._e(),(_vm.existingDistanceConfiguration)?_c('h4',[_c('i',{staticClass:\"fa fa-edit-icon\"}),_vm._v(\" Editing Distance Filter\")]):_vm._e()])]},proxy:true}])},[_c('div',{staticClass:\"parent thin-scroll\"},[(_vm.showModal)?_c('b-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.handleSubmit()}}},[_c('b-form-group',{attrs:{\"label-for\":\"Area\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" Area: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]},proxy:true}],null,false,1866529390)},[_c('area-tree-select',{attrs:{\"data-cy\":\"area-select\",\"item-value\":\"title\",\"append-to-body\":\"\",\"clearable\":false,\"readonly\":_vm.readonly},on:{\"input\":_vm.onGroupSelected},model:{value:(_vm.currentDistanceConfiguration.groupId),callback:function ($$v) {_vm.$set(_vm.currentDistanceConfiguration, \"groupId\", $$v)},expression:\"currentDistanceConfiguration.groupId\"}})],1),_c('b-form-group',{attrs:{\"label-for\":\"AlarmDecoder\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" Alarm Decoder \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]},proxy:true}],null,false,543432590)},[_c('v-select-3',{staticClass:\"dark\",attrs:{\"label\":\"title\",\"options\":_vm.alarmDecoders,\"loading\":_vm.isLoading,\"placeholder\":\"Select an Alarm Decoder\",\"appendToBody\":\"\",\"reduce\":function (serverType) { return serverType.serverTypeId; },\"disabled\":_vm.readonly},model:{value:(_vm.currentDistanceConfiguration.serverTypeId),callback:function ($$v) {_vm.$set(_vm.currentDistanceConfiguration, \"serverTypeId\", _vm._n($$v))},expression:\"currentDistanceConfiguration.serverTypeId\"}})],1),_c('b-form-group',{attrs:{\"label-for\":\"ServerTypeEvent\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" Event Type \")]},proxy:true}],null,false,3924134991)},[_c('v-select-3',{staticClass:\"dark \",attrs:{\"label\":\"title\",\"options\":_vm.serverTypeEvents,\"placeholder\":_vm.eventTypesPlaceholder,\"appendToBody\":\"\",\"reduce\":function (eventType) { return eventType.eventNum; },\"disabled\":_vm.readonly},model:{value:(_vm.currentDistanceConfiguration.eventNum),callback:function ($$v) {_vm.$set(_vm.currentDistanceConfiguration, \"eventNum\", _vm._n($$v))},expression:\"currentDistanceConfiguration.eventNum\"}})],1),_c('b-form-group',{attrs:{\"label-for\":\"Inherit\",\"description\":\"Sets if distance filter also applies to child areas\"}},[_c('b-form-checkbox',{attrs:{\"data-cy\":\"inherit-checkbox\",\"disabled\":_vm.readonly},model:{value:(_vm.currentDistanceConfiguration.inherited),callback:function ($$v) {_vm.$set(_vm.currentDistanceConfiguration, \"inherited\", $$v)},expression:\"currentDistanceConfiguration.inherited\"}},[_vm._v(\" Inherited \")])],1)],1):_vm._e(),_c('div',[_c('map-radius',{attrs:{\"location\":_vm.currentLocation,\"maxRadius\":_vm.maxRadius,\"readonly\":_vm.readonly},model:{value:(_vm.currentDistanceConfiguration.radius),callback:function ($$v) {_vm.$set(_vm.currentDistanceConfiguration, \"radius\", _vm._n($$v))},expression:\"currentDistanceConfiguration.radius\"}})],1)],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.handleSubmit()}}},[_c('b-form-group',{attrs:{\"label-for\":\"radius\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" Radius (metres / miles) \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]},proxy:true}])},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"5\"}},[_c('b-form-group',{attrs:{\"label-for\":\"radius\",\"description\":\"The capture radius of this group in metres.\"}},[_c('b-form-input',{attrs:{\"data-cy\":\"radiusMeters-input\",\"type\":\"number\",\"max\":_vm.maxRadius,\"step\":\"1\",\"placeholder\":\"Radius in metres\",\"formatter\":_vm.wholeNumberFormatter,\"readonly\":_vm.readonly},model:{value:(_vm.currentRadius),callback:function ($$v) {_vm.currentRadius=_vm._n($$v)},expression:\"currentRadius\"}})],1)],1),_c('b-col',{attrs:{\"cols\":\"2\"}}),_c('b-col',{attrs:{\"cols\":\"5\"}},[_c('b-form-group',{attrs:{\"label-for\":\"radius\",\"description\":\"The capture radius of this group in miles.\"}},[_c('b-form-input',{attrs:{\"data-cy\":\"radiusMiles-input\",\"type\":\"number\",\"placeholder\":\"Radius in miles\",\"description\":\"The capture radius of this group in metres.\",\"step\":0.01,\"readonly\":\"\"},model:{value:(_vm.asMiles),callback:function ($$v) {_vm.asMiles=_vm._n($$v)},expression:\"asMiles\"}})],1)],1)],1)],1)],1),_c('div',{staticClass:\"position-relative\"},[_c('div',{staticClass:\"map-container\"},[_c('div',{ref:\"mappingContainer\",staticClass:\"fill-container\",attrs:{\"data-cy\":\"mapRadius-mapContainer\"}}),_c('div',{staticClass:\"brightness-control-panel\"},[_c('table',{staticClass:\"w-100 m-1\"},[_c('tr',[_c('td',{attrs:{\"colspan\":\"2\",\"align\":\"center\"}},[_c('b-button-group',[_c('b-button',{attrs:{\"id\":\"btnMapMode\",\"title\":\"Toggle Map Mode\"},on:{\"click\":function($event){_vm.mapLightMode = !_vm.mapLightMode}}},[_c('i',{staticClass:\"fas\",class:_vm.mapLightMode ? 'fa-sun' : 'fa-moon'})])],1)],1)])])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\r\n * Converts the given meters into miles\r\n * @param meters The meters to convert\r\n * @param decimalPlaces The number of decimal places; defaults to 4\r\n */\r\nexport function convertMetersToMiles(meters: number, decimalPlaces: number): string {\r\n const milesMultiplier: number = 0.000621371;\r\n const miles = meters * milesMultiplier;\r\n return miles.toFixed(decimalPlaces);\r\n}\r\n","\nimport EnhancedSingleMap from \"@/components/EnhancedSingleMap.vue\";\nimport Vue from \"vue\";\nimport Component from \"vue-class-component\";\nimport { Emit, Prop, Watch } from \"vue-property-decorator\";\nimport GoogleMap from \"@/scripts/mapping/map\";\nimport getScript from \"@/services/insertScript.service\";\nimport { getMapStyle } from \"@/scripts/mapping/mapStyle\";\nimport { Getter } from \"vuex-class\";\nimport { faMapMarker } from \"@fortawesome/pro-solid-svg-icons\";\nimport ILatLng from \"@sureview/v2-mapping-saas\";\nimport { maxRadiusAsMetersInMiles, metersAsMilesDecimalPlaces } from \"@/store/distance-configuration/types\";\nimport { convertMetersToMiles } from \"@/utils/conversion-utils\";\n\n@Component({\n components: {\n \"enhanced-single-map\": EnhancedSingleMap\n }\n})\nexport default class MapRadius extends Vue {\n @Getter getMapType: string;\n @Getter getHideLabels: boolean;\n\n @Prop({type: Number, required: false})\n private value: number;\n\n @Prop({type: Object, required: true})\n private location: ILatLng;\n\n @Prop({type: Number, default: maxRadiusAsMetersInMiles })\n private maxRadius: number;\n\n @Prop({ required: false, default: false }) \n private readonly: boolean;\n \n public $refs!: {\n mappingContainer: HTMLElement;\n }\n \n private map: GoogleMap | null = null;\n private mapLightMode: boolean = false;\n private marker: google.maps.Marker | null = null;\n private circle: google.maps.Circle | null = null;\n\n private currentRadius: number = null;\n\n private defaultRadius: number = 1000;\n \n private async mounted(): Promise {\n await this.initMap();\n this.mapLightMode = true;\n this.currentRadius = this.value ? this.value : this.defaultRadius;\n }\n\n private get setupRadius(): number {\n if (this.value) {\n return this.value;\n }\n\n return this.value ? this.value : this.defaultRadius;\n }\n\n private get setupZoom(): number {\n var currentRadius = this.setupRadius;\n \n // Returns google map zoom levels based on the size of the radius\n // 0 is the whole map and 21+ is max zoom\n switch (true) {\n case !currentRadius:\n return 0;\n case currentRadius <= 1000:\n return 13;\n case currentRadius <= 20000:\n return 11;\n case currentRadius <= 30000:\n return 9;\n case currentRadius <= 50000:\n return 8;\n default:\n return 7;\n }\n }\n\n private get asMiles(): string {\n return convertMetersToMiles(this.currentRadius, metersAsMilesDecimalPlaces);\n }\n\n @Watch(\"Value\")\n private onValueChanged(): void {\n if (!this.value) {\n this.currentRadius = null;\n } else {\n this.currentRadius = this.value;\n }\n }\n\n @Watch(\"location\")\n private onLocationChanged(): void { \n var latLng = { lat: 0, lng: 0 };\n if (this.location) {\n latLng = {\n lat: this.location.lat,\n lng: this.location.lng\n };\n }\n\n if (!!this.map && !!this.map.map) {\n this.clearMap();\n const newLatLng = new google.maps.LatLng(latLng.lat, latLng.lng);\n this.map.map.setCenter(newLatLng);\n this.setMapArtifacts(latLng);\n } \n }\n\n private setMapArtifacts(latLng: ILatLng): void {\n // Draw the marker for the area\n this.marker = new google.maps.Marker({\n position: latLng,\n map: this.map.map,\n draggable: false,\n title: 'Area location',\n icon: {\n path: faMapMarker.icon[4] as string,\n fillColor: '#2196F3',\n fillOpacity: 1.0,\n strokeColor: '#000000',\n strokeWeight: 1,\n scale: 0.08,\n labelOrigin: new google.maps.Point(190, 180),\n anchor: new google.maps.Point(200, 500)\n },\t\t\t\n label: {\n fontFamily: \"'Font Awesome 5 Pro'\",\n text: \"\\uf015\",\n fontWeight: '900',\n fontSize: \"15pt\",\n color: \"#ffffff\"\n }\t\n });\n\n // create a new circle around the marker\n this.circle = new google.maps.Circle({\n strokeColor: '#2196F3',\n strokeOpacity: 0.8,\n strokeWeight: 2,\n fillColor: '',\n fillOpacity: 0,\n map: this.map.map,\n center: latLng,\n radius: this.setupRadius,\n draggable: false,\n editable: !this.readonly,\n });\n\n // attach a radius changed event listener to the circle\n google.maps.event.addListener(this.circle, 'radius_changed', () => {\n\n // get radius of the circle in meters\n var radius = this.circle.getRadius();\n\n // Radius must not exceed the maxRadius\n if (radius > this.maxRadius) {\n this.circle.setRadius(this.maxRadius);\n radius = this.maxRadius;\n }\n\n // Ensure radius is rounded to nearest whole number \n this.currentRadius = Math.round(radius);\n });\n }\n\n private clearMap(): void {\n if (this.marker) {\n this.marker.setMap(null);\n }\n\n if (this.circle) {\n this.circle.setMap(null);\n }\n }\n \n public async initMap(): Promise {\n await getScript(\n `https://maps.googleapis.com/maps/api/js?key=`\n + `${process.env.VUE_APP_GOOGLE_MAPS_API_KEY}`\n + `&libraries=drawing,places,geometry`\n ).then(() => {\n var latLng = { lat: 0, lng: 0 };\n if (this.location) {\n latLng = {\n lat: this.location.lat,\n lng: this.location.lng\n };\n }\n\n this.map = new GoogleMap(\n this.$refs.mappingContainer,\n latLng,\n this.setupZoom,\n false,\n this.getMapType,\n getMapStyle(this.getMapType, this.getHideLabels, this.mapLightMode ? 'light' : 'dark'),\n );\n\n this.map.map.setOptions({ scrollwheel: true, zoomControl: true });\n\n this.setMapArtifacts(latLng); \n });\n }\n \n @Watch(\"mapLightMode\")\n private mapModeWatch(): void {\n if(!this.map || !this.map.map) {\n return;\n }\n \n const mapStyles = getMapStyle(this.getMapType, this.getHideLabels, this.mapLightMode ? \"light\" : \"dark\");\n\n this.map.map.setOptions({\n styles: mapStyles,\n mapTypeId: google.maps.MapTypeId.ROADMAP\n });\n }\n\n @Watch(\"currentRadius\")\n @Emit(\"input\")\n private radiusChanged(): number {\n // When we update the radius we need to ensure the circle is also updated\n if (this.circle) {\n this.circle.setRadius(this.currentRadius ? this.currentRadius : null)\n }\n\n return this.currentRadius ? this.currentRadius : null;\n }\n\n private wholeNumberFormatter(value: number): number {\n if (!value) {\n return value;\n }\n\n if (value > this.maxRadius) {\n return this.maxRadius;\n }\n\n return Math.round(value);\n }\n}\n","export enum TemplateModalMode {\r\n\tview = \"view\",\r\n\tedit = \"edit\",\r\n\tadd = \"add\"\r\n}\r\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapRadius.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapRadius.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MapRadius.vue?vue&type=template&id=0b7a504a\"\nimport script from \"./MapRadius.vue?vue&type=script&lang=ts\"\nexport * from \"./MapRadius.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MapRadius.vue?vue&type=style&index=0&id=0b7a504a&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","\n\timport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\n\timport {\n\t\tDistanceConfiguration,\n\t\tDistanceConfigurationAlarmDecoder,\n\t\tDistanceConfigurationDto,\n\t\tdefaultDistanceConfiguration\n\t} from \"@/store/distance-configuration/types\";\n\timport Component from \"vue-class-component\";\n\timport { Emit, Mixins, Prop, Watch } from \"vue-property-decorator\";\n\timport vselect3 from \"vselect3\";\n\timport MapRadius from \"./MapRadius.vue\";\n\timport api from \"@/services/api.service\";\n\timport PaginatedSearch from \"@/mixins/PaginatedSearch\";\n\timport AlarmDecoder from \"@/types/sv-data/alarms/AlarmDecoder\";\n\timport { Getter, namespace } from \"vuex-class\";\n\timport { validationMixin } from \"vuelidate\";\n\timport { convertStringToLatLng, ILatLng } from \"@sureview/v2-mapping-saas\";\n\timport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\n\timport ServerTypeEvent from \"@/types/sv-data/events/ServerTypeEvent\";\n\timport { isEqual } from \"lodash\";\n\n const DistanceConfigurationStore = namespace(\"distanceConfiguration\");\n\n\t@Component({\n\t\tcomponents: {\n\t\t\t\"area-tree-select\": AreaTreeSelect,\n\t\t\t\"v-select-3\": vselect3,\n\t\t\t\"map-radius\": MapRadius\n\t\t},\n\t})\n\texport default class DistanceConfigurationEditModal extends Mixins(PaginatedSearch, validationMixin) {\n\n\t\t@Getter(\"getUserTenantGroupId\") private tenantId: number;\n @DistanceConfigurationStore.Action private retrieveMaxRadius: () => Promise;\n @DistanceConfigurationStore.State private maxRadius: number;\n\n\t\t@Prop({type: Object, required: true})\n\t\tprivate distanceConfiguration: DistanceConfigurationDto;\n\n\t\t@Prop({ default: false, type: Boolean })\n\t\tprivate showModal: boolean;\n\n\t @Prop({ required: false, default: false })\n\t\tprivate readonly: boolean;\n\n\t\tprivate alarmDecoders: DistanceConfigurationAlarmDecoder[] = [];\n\t\tprivate alarmDecoderServerTypeEvents: ServerTypeEvent[] = [];\n\t\tprivate selectedAlarmDecoder: AlarmDecoder = null;\n\t\tprivate isLoading: boolean = false;\n\t\tprivate currentLocation: ILatLng = {};\n\n\t\tprivate currentDistanceConfiguration: DistanceConfiguration = {...defaultDistanceConfiguration};\n\n\t\tprivate async mounted(): Promise {\n\t\t\tawait this.loadDecoders();\n\t\t\tawait this.retrieveMaxRadius();\n\t\t\tthis.onDistanceConfigurationChanged();\n\t\t}\n\n\t\tprivate get existingDistanceConfiguration(): boolean {\n\t\t\treturn !!this.distanceConfiguration?.distanceConfigurationId;\n\t\t}\n\n\t\tprivate get distanceConfigurationInvalid(): boolean {\n\t\t\treturn !this.currentDistanceConfiguration ||\n\t\t\t!this.currentDistanceConfiguration.groupId ||\n\t\t\t!this.currentDistanceConfiguration.serverTypeId ||\n\t\t\t!this.currentDistanceConfiguration.radius;\n\t\t}\n\n\t\tprivate get distanceConfigurationModified(): boolean {\n\t\t\treturn isEqual(this.currentDistanceConfiguration, this.distanceConfiguration);\n\t\t}\n\n\t\tprivate get serverTypeEvents(): ServerTypeEvent[] {\n\t\t\treturn this.alarmDecoderServerTypeEvents ?\n\t\t\t\tthis.alarmDecoderServerTypeEvents : [];\n\t\t}\n\n\t\tpublic async loadDecoders(): Promise {\n\t\t\ttry {\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.selectedAlarmDecoder = null;\n\t\t\t\tthis.alarmDecoders = await api.retrieveDistanceConfigurationAlarmDecoders();\n\t\t\t}\n\t\t\tcatch (ex) {\n\t\t\t\tconsole.error(\"Unexpected error fetching alarm decoders\", ex);\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tthis.isLoading = false;\n\t\t\t}\n\t\t}\n\n\t\tprivate async onSave(): Promise {\n\t\t\tif (this.distanceConfigurationInvalid) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tawait api.createOrUpdateDistanceConfiguration(this.currentDistanceConfiguration);\n\t\t\tthis.$emit(\"reloadDistanceConfigurations\");\n\t\t}\n\n\t\t@Watch(\"distanceConfiguration\")\n\t\tprivate async onDistanceConfigurationChanged(): Promise {\n\t\t\tif (this.existingDistanceConfiguration) {\n\t\t\t\tthis.currentDistanceConfiguration = {...this.distanceConfiguration};\n\t\t\t\tthis.setAlarmDecoder();\n\t\t\t} else {\n\t\t\t\tthis.currentDistanceConfiguration = {...defaultDistanceConfiguration};\n\t\t\t\tthis.currentDistanceConfiguration.tenantId = this.tenantId;\n\t\t\t\tthis.currentDistanceConfiguration.groupId = this.tenantId;\n\t\t\t}\n\n\t\t\tconst result = await api.getGroupTreeNode(this.currentDistanceConfiguration.groupId, [\"CanViewSiteSetup\"]);\n\t\t\tawait this.onGroupSelected(result);\n\t\t}\n\n\t\t@Watch(\"currentDistanceConfiguration.serverTypeId\")\n\t\tprivate onServerTypeIdChanged(newValue: number, oldValue: number): void {\n\t\t\tif(oldValue) {\n\t\t\t\tthis.currentDistanceConfiguration.eventNum = null;\n\t\t\t}\n\n\t\t\tthis.setAlarmDecoder();\n\t\t}\n\n\t\tprivate setAlarmDecoder(): void {\n\t\t\t// If we have a ServerTypeId we need to set the selectedDecoder to get the events\n\t\t\tif(this.currentDistanceConfiguration.serverTypeId) {\n\t\t\t\tconst selected = this.alarmDecoders.firstOrDefault((ad: AlarmDecoder) => ad.serverTypeId == this.currentDistanceConfiguration.serverTypeId);\n\n\t\t\t\tif (selected) {\n\t\t\t\t\tthis.alarmDecoderServerTypeEvents = selected.serverTypeEvents;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@Emit(\"closeEditModal\")\n\t\tprivate onClose(): void {}\n\n\t\tprivate onAlarmDecoderSelected(alarmDecoder: AlarmDecoder): void {\n\t\t\tthis.selectedAlarmDecoder = alarmDecoder;\n\t\t\tthis.currentDistanceConfiguration.serverTypeId = this.selectedAlarmDecoder.serverTypeId;\n\n\t\t\tif (this.currentDistanceConfiguration.eventNum) {\n\t\t\t\tthis.currentDistanceConfiguration.eventNum = null;\n\t\t\t}\n\t\t}\n\n\t\tprivate async onGroupSelected(group: AreaNode): Promise {\n\t\t\tthis.currentDistanceConfiguration.groupId = group.id;\n\t\t\tthis.setLocationByLatLng(group.latLong);\n\t\t}\n\n\t\tprivate setLocationByLatLng(latLngStr?: string): void {\n\t\t\tif(latLngStr) {\n\t\t\t\tconst latLng = convertStringToLatLng(latLngStr);\n\t\t\t\tconst isLatAndLngSet = !isNaN(latLng.lat) && !isNaN(latLng.lng);\n\t\t\t\tif (isLatAndLngSet) {\n\t\t\t\t\tthis.currentLocation = latLng;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate get eventTypesPlaceholder(): string {\n\t\t\treturn !!this.currentDistanceConfiguration.serverTypeId &&\n\t\t\t(!this.serverTypeEvents || this.serverTypeEvents.length === 0) ?\n\t\t\t\"No Event Types have been configured for the Alarm Decoder\" :\n\t\t\t\"Select an Alarm Decoder\";\n\t\t}\n\t}\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DistanceConfigurationEditModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DistanceConfigurationEditModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DistanceConfigurationEditModal.vue?vue&type=template&id=57ad2707&scoped=true\"\nimport script from \"./DistanceConfigurationEditModal.vue?vue&type=script&lang=ts\"\nexport * from \"./DistanceConfigurationEditModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DistanceConfigurationEditModal.vue?vue&type=style&index=0&id=57ad2707&prod&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 \"57ad2707\",\n null\n \n)\n\nexport default component.exports","\n import { Component, Mixins, Prop } from \"vue-property-decorator\";\n import PaginatedSearch, { PaginatedSearchRequest } from \"@/mixins/PaginatedSearch\";\n import GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\n import { Getter, namespace } from \"vuex-class\";\n import { \n DistanceConfiguration, \n DistanceConfigurationDto, \n DistanceConfigurationPagedResponse,\n DistanceConfigurationWithTableActions,\n defaultDistanceConfiguration,\n metersAsMilesDecimalPlaces\n } from \"@/store/distance-configuration/types\";\n import { PaginatedSearchQueryParams, UserPermissions } from \"@/store/types\";\n import DistanceConfigurationDeleteModal from \"./DistanceConfigurationDeleteModal.vue\";\n import DistanceConfigurationEditModal from \"./DistanceConfigurationEditModal.vue\";\n import { convertMetersToMiles } from \"@/utils/conversion-utils\";\n\n const DistanceConfigurationStore = namespace(\"distanceConfiguration\");\n\n @Component({\n components: {\n \"generic-table\": GenericTable,\n \"distance-configuration-delete-modal\" : DistanceConfigurationDeleteModal,\n \"distance-configuration-edit-modal\" : DistanceConfigurationEditModal\n }\n })\n export default class DistanceConfigurationTable extends Mixins(PaginatedSearch) {\n \n\t @Prop({ required: false, default: false }) \n private readonly: boolean;\n\n @DistanceConfigurationStore.Action private retrieveDistanceConfigurations: (paginatedSearchRequest: PaginatedSearchRequest) => Promise;\n @DistanceConfigurationStore.State private distanceConfigurations: DistanceConfigurationPagedResponse;\n @Getter getPermissions: UserPermissions;\n\n private isLoading: boolean = false;\n private isDeleteModalShown: boolean = false;\n private isEditModalShown: boolean = false;\n\n private selectedDistanceConfiguration: DistanceConfiguration = {...defaultDistanceConfiguration};\n\n private async mounted(): Promise {\n await this.updateData();\n }\n\n private get columns (): TableHeader[] {\n return [\n {\n title: \"Area\",\n key: \"areaTitle\",\n order: 1,\n sortOrder: 0,\n sortOrderReversed: false,\n description: \"The Area Title\",\n searchable: true,\n visible: true,\n dataType: \"input\",\n isTermLabel: true,\n sortable: true,\n isSortedByDefault: true,\n },\n {\n title: \"Alarm Decoder\",\n key: \"serverTypeTitle\",\n order: 2,\n sortOrder: 1,\n sortOrderReversed: false,\n description: \"The Alarm Decoder\",\n searchable: true,\n visible: true,\n dataType: \"input\",\n sortable: true,\n sortKey: \"AlarmDecoder\",\n },\n {\n title: \"Event Type\",\n key: \"serverTypeEventTitle\",\n order: 3,\n sortOrder: 3,\n sortOrderReversed: false,\n visible: true,\n searchable: true,\n sortable: true,\n sortKey: \"EventType\"\n },\n {\n title: \"Radius (m/mi)\",\n key: \"radius\",\n order: 4,\n sortOrder: 4,\n sortOrderReversed: false,\n visible: true,\n searchable: true,\n addQuickCopy: true,\n useCustomCell: true,\n sortable: true,\n },\n ];\n }\n\n private get userHasViewPermissions(): boolean {\n return this.getPermissions.canViewSiteSetup;\n }\n\n private get userHasEditPermissions(): boolean {\n return this.getPermissions.canEditSiteSetup;\n }\n\n private get totalRecords(): number {\n return this.distanceConfigurations ? this.distanceConfigurations.totalRecords : 0;\n }\n\n public async updateData(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\n try {\n this.isLoading = true;\n const request = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\n await this.retrieveDistanceConfigurations(request);\n }\n catch (ex) {\n console.error(\"Unexpected error fetching Distance Filters\", ex);\n }\n finally {\n this.isLoading = false;\n }\n }\n\n private get dataWithActions(): DistanceConfigurationWithTableActions[] {\n return this.distanceConfigurations?.data ? this.distanceConfigurations.data.map(distanceConfiguration => {\n return {...distanceConfiguration, controls: true}\n }) : [];\n }\n \n private handleDeleteClick(distanceConfiguration: DistanceConfigurationDto): void {\n this.selectedDistanceConfiguration = distanceConfiguration;\n this.isDeleteModalShown = true;\n }\n\n private closeDeleteModal(): void {\n this.isDeleteModalShown = false;\n this.selectedDistanceConfiguration = {...defaultDistanceConfiguration};\n }\n\n private handleAddClick(): void {\n this.selectedDistanceConfiguration = {...defaultDistanceConfiguration};\n this.isEditModalShown = true;\n }\n\n private handleEditClick(distanceConfiguration: DistanceConfigurationDto): void {\n this.selectedDistanceConfiguration = {...distanceConfiguration};\n this.isEditModalShown = true;\n }\n\n private closeEditModal(): void {\n this.isEditModalShown = false;\n this.selectedDistanceConfiguration = {...defaultDistanceConfiguration};\n }\n \n private reloadDistanceConfigurations(): void {\n this.updateData();\n }\n\n private getMetersAsMiles(meters: number): string {\n return convertMetersToMiles(meters, metersAsMilesDecimalPlaces)\n }\n }\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DistanceConfigurationTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DistanceConfigurationTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DistanceConfigurationTable.vue?vue&type=template&id=079a0b74&scoped=true\"\nimport script from \"./DistanceConfigurationTable.vue?vue&type=script&lang=ts\"\nexport * from \"./DistanceConfigurationTable.vue?vue&type=script&lang=ts\"\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 \"079a0b74\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { get } from \"lodash\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport AlarmSetupTable from \"@/components/setup/alarm-setup/AlarmSetupTable.vue\";\r\nimport HttpAlarmSetupTable from \"@/components/setup/alarm-setup/HttpAlarmSetupTable.vue\";\r\nimport AlarmDecoderTable from '@/components/setup/alarm-setup/decoder-setup/AlarmDecoderTable.vue';\r\nimport DistanceConfigurationTable from \"@/components/setup/alarm-setup/distance-configuration/DistanceConfigurationTable.vue\";\r\n\r\n@Component({\r\n components: {\r\n \"nav-header\": NavHeader,\r\n \"alarm-setup-table\": AlarmSetupTable,\r\n \"http-alarm-setup-table\": HttpAlarmSetupTable,\r\n \"alarm-decoder-table\": AlarmDecoderTable,\r\n\t\t\"distance-configuration-table\": DistanceConfigurationTable\r\n }\r\n})\r\nexport default class AlarmSetup extends Vue {\r\n $refs!: {\r\n alarmSetupTable: AlarmSetupTable;\r\n alarmDecoderTable: AlarmDecoderTable;\r\n httpAlarmSetupTable: HttpAlarmSetupTable;\r\n };\r\n\r\n @Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n @Getter getPermissions: UserPermissions;\r\n\r\n private get isAlarmSetupEnabled() {\r\n return get(this.featuresList, [\"AlarmSetup\"])\r\n }\r\n\r\n private get isHttpAlarmsSetupEnabled() {\r\n return get(this.featuresList, [\"Alarms\", \"HttpAlarms\"])\r\n }\r\n\r\n\tprivate get isDistanceConfigurationEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"AlarmSetup\", \"DistanceConfiguration\"]);\r\n\t}\r\n\r\n //Triggers the update method for the provided tab\r\n private triggerUpdate(tab: string) {\r\n if (tab === \"decoder-setup\"){\r\n this.$refs.alarmDecoderTable.loadDecoders();\r\n this.$refs.alarmSetupTable.updateResponses();\r\n if (this.isHttpAlarmsSetupEnabled) {\r\n this.$refs.httpAlarmSetupTable.updateResponses();\r\n }\r\n } else if (tab === \"alarm-setup\"){\r\n this.$refs.alarmSetupTable.updateResponses();\r\n } else if (tab === \"http-alarm-setup\"){\r\n this.$refs.alarmSetupTable.updateResponses();\r\n this.$refs.httpAlarmSetupTable.updateResponses();\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmSetup.vue?vue&type=template&id=bfba64c6&scoped=true\"\nimport script from \"./AlarmSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AlarmSetup.vue?vue&type=style&index=0&id=bfba64c6&prod&scoped=true&lang=scss\"\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 \"bfba64c6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\",attrs:{\"id\":\"setup-container\"}},[_c('nav-header',{attrs:{\"title\":\"Mobile Raise Setup\"}}),_c('b-container',{staticClass:\"py-4\",attrs:{\"fluid\":\"\"}},[_c('b-row',{staticClass:\"mb-4\"},[_c('b-col',[_c('b-form-input',{attrs:{\"data-cy\":\"search-input\",\"type\":\"search\",\"placeholder\":\"Search...\"},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1),(!_vm.isReadlonly)?_c('b-col',{attrs:{\"cols\":\"auto\"}},[_c('b-button',{attrs:{\"data-cy\":\"add-btn\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.openNewModal()}}},[_vm._v(\" Add Template \")])],1):_vm._e()],1),_c('b-row',[_c('b-col',[_c('b-table',{attrs:{\"data-cy\":\"table\",\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"items\":_vm.getTemplateGridRows,\"fields\":_vm.fields,\"hover\":\"\",\"head-variant\":\"dark\",\"filter\":_vm.searchTerm,\"filter-ignored-fields\":['actions'],\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc},on:{\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":function($event){_vm.sortBy=$event},\"update:sortDesc\":function($event){_vm.sortDesc=$event},\"update:sort-desc\":function($event){_vm.sortDesc=$event}},scopedSlots:_vm._u([{key:\"cell(userGroups)\",fn:function(row){return _vm._l((row.item.userGroups),function(userGroup,idx){return _c('b-badge',{key:(userGroup + \"-\" + idx),staticClass:\"px-2 py-1 mr-2\",attrs:{\"pill\":\"\",\"variant\":\"primary\"}},[_vm._v(\" \"+_vm._s(userGroup)+\" \")])})}},{key:\"cell(actions)\",fn:function(row){return [(_vm.isReadlonly)?_c('i',{staticClass:\"fas fa-eye hover-icon\",attrs:{\"size\":\"sm\"},on:{\"click\":function($event){return _vm.openViewModal(row)}}}):_c('i',{staticClass:\"fas fa-edit hover-icon\",attrs:{\"size\":\"sm\"},on:{\"click\":function($event){return _vm.openEditModal(row)}}})]}}])})],1)],1)],1),_c('TemplateModal',{attrs:{\"isVisible\":_vm.isTemplateModalVisible,\"mode\":_vm.templateModalMode,\"templateId\":_vm.templateId},on:{\"close\":_vm.onTemplateModalClose,\"add\":_vm.onTemplateModalAdd,\"save\":_vm.onTemplateModalSave,\"delete\":_vm.onTemplateModalDelete}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"visible\":_vm.isVisible,\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"title\":_vm.modalTitle,\"scrollable\":\"\"},on:{\"close\":_vm.confirmClosing},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(ref){\nvar close = ref.close;\nreturn [(_vm.isEditMode)?_c('b-button',{ref:\"delete-btn\",staticClass:\"mr-auto\",attrs:{\"variant\":\"danger\"},on:{\"click\":_vm.onDelete}},[_vm._v(\" Delete \")]):_vm._e(),(_vm.isAddMode)?_c('b-button',{ref:\"add-btn\",attrs:{\"disabled\":_vm.isSaveDisabled,\"variant\":\"primary\"},on:{\"click\":_vm.onAdd}},[_vm._v(\" Add \")]):_vm._e(),(_vm.isEditMode)?_c('b-button',{ref:\"save-btn\",attrs:{\"disabled\":_vm.isSaveDisabled,\"variant\":\"primary\"},on:{\"click\":_vm.onSave}},[_vm._v(\" Save \")]):_vm._e(),_c('b-button',{ref:\"close-btn\",attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){return close()}}},[_vm._v(\"Close\")])]}}])},[_c('title-control',{attrs:{\"isValid\":_vm.isTitleValid(),\"disabled\":_vm.isViewMode,\"invalidFeedback\":_vm.titleFeedback},model:{value:(_vm.editModel.title),callback:function ($$v) {_vm.$set(_vm.editModel, \"title\", $$v)},expression:\"editModel.title\"}}),_c('user-groups-control',{attrs:{\"disabled\":_vm.isViewMode,\"options\":_vm.userGroups},model:{value:(_vm.editModel.userGroups),callback:function ($$v) {_vm.$set(_vm.editModel, \"userGroups\", $$v)},expression:\"editModel.userGroups\"}}),_c('mobile-raises-links',{attrs:{\"disabled\":_vm.isViewMode,\"raisesNumber\":_vm.editModel.mobileRaiseLinks.length,\"isValid\":_vm.isMobileRaiseLinksValid()},on:{\"click\":_vm.linksClicked}}),_c('b-form-group',{staticClass:\"mb-0\",staticStyle:{\"margin-bottom\":\"10px\"},attrs:{\"label-cols-lg\":\"2\",\"label\":\"Quick Raises:\",\"label-size\":\"lg\",\"label-class\":\"font-weight-bold pt-1\"}},[_vm._l((_vm.editModel.quickRaiseIds),function(raiseId,idx){return _c('quick-select-slot',{key:_vm.linkKey(idx, raiseId),attrs:{\"slotNumber\":idx + 1,\"disabled\":_vm.isViewMode,\"options\":_vm.getOptionsForSlot(raiseId),\"value\":_vm.getLinkByRaiseId(raiseId),\"isValid\":_vm.isSlotValid(idx),\"iconClass\":_vm.getIconClassForSlot(raiseId)},on:{\"input\":function (id) { return _vm.slotInputHandler(idx, id); },\"delete\":function () { return _vm.removeSlot(idx); }}})}),_c('div',{staticClass:\"addRow\"},[(_vm.isAddSlotVisible)?_c('i',{staticClass:\"hover-icon fas fa-plus-circle\",on:{\"click\":_vm.addSlot}}):_vm._e()])],2),_c('links-selector',{attrs:{\"linkedRaises\":_vm.editModel.mobileRaiseLinks,\"isVisible\":_vm.isLinksSelectorVisible},on:{\"hide\":function () { return _vm.onLinksSelectorHide(); },\"apply\":function (linkedModels) { return _vm.onLinksApply(linkedModels); }}}),_c('confirmation-modal',{ref:\"del-confirm\",attrs:{\"visible\":_vm.isDeleteConfirmationShown,\"okBtnText\":\"Delete\",\"cancelBtnText\":\"Cancel\",\"danger\":true,\"title\":\"Delete Mobile Raise Template\"},on:{\"ok\":_vm.deleteConfirmed,\"cancel\":_vm.deleteCancelled}},[_c('p',[_vm._v(\" Are you sure you want to delete the template \\\"\"),_c('strong',[_vm._v(_vm._s(_vm.editModel.title))]),_vm._v(\"\\\" ? \")])]),_c('confirmation-modal',{ref:\"close-confirm\",attrs:{\"visible\":_vm.isCloseConfirmationShown,\"okBtnText\":\"Yes\",\"cancelBtnText\":\"No\"},on:{\"ok\":_vm.closeConfirmed,\"cancel\":_vm.closeCancelled}},[_c('p',[_vm._v(\"You have unsaved changes, do you want to leave without saving?\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"visible\":_vm.isVisible,\"id\":\"linksSelector\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"ok-title\":\"Apply\",\"title\":\"Select Raises for Template\",\"scrollable\":\"\"},on:{\"ok\":function () { return _vm.onApplyClick(); },\"hide\":function () { return _vm.onHide(); }}},[_c('b-container',{staticClass:\"py-4\",attrs:{\"fluid\":\"\"}},[_c('b-row',{staticClass:\"mb-4\"},[_c('b-col',[_c('b-form-input',{attrs:{\"type\":\"search\",\"placeholder\":\"Search...\"},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1)],1),_c('b-row',[_c('b-col',[_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"items\":_vm.rows,\"fields\":_vm.fields,\"hover\":\"\",\"head-variant\":\"dark\",\"filter\":_vm.searchTerm,\"filter-ignored-fields\":['addedToTemplate']},scopedSlots:_vm._u([{key:\"cell(titleList)\",fn:function(row){return [_c('raise-title',{attrs:{\"titleList\":row.item.titleList}})]}},{key:\"cell(addedToTemplate)\",fn:function(row){return [_c('b-form-checkbox',{attrs:{\"checked\":row.item.addedToTemplate,\"plain\":false},on:{\"change\":function (checked) { return _vm.handleAddToTemplateToggle(row.item, checked); }}})]}},{key:\"cell(autoShare)\",fn:function(row){return [_c('b-form-checkbox',{attrs:{\"data-cy\":\"autoshare-checkbox\",\"disabled\":!row.item.addedToTemplate,\"checked\":row.item.autoShare,\"plain\":false},on:{\"change\":function (checked) { return _vm.handleAutoShareToggle(row.item, checked); }}})]}},{key:\"cell(iconSetTitle)\",fn:function(row){return [_c('b-button',{staticClass:\"pl-0\",attrs:{\"disabled\":!row.item.addedToTemplate,\"variant\":\"link\"},on:{\"click\":function($event){return _vm.onIconsButtonClick(row.item)}}},[_vm._v(\" \"+_vm._s(row.item.iconSetTitle)+\" \")])]}}])})],1)],1)],1),_c('icons-selector',{attrs:{\"isVisible\":_vm.isIconsSelectorVisible},on:{\"hide\":function () { return (_vm.isIconsSelectorVisible = false); },\"iconSelected\":_vm.onIconSelected}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","enum ObjectTypeId {\r\n\tCamera = 1,\r\n\tDoor = 2,\r\n\tRelay = 3,\r\n\tAudio = 4,\r\n\tAppliance = 5,\r\n\tSyncSystem = 6,\r\n\tGroupSync = 7,\r\n\tServer = 8,\r\n\tAlarm = 9\r\n}\r\nexport default ObjectTypeId;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"visible\":_vm.isVisible,\"id\":\"iconsSelector\",\"size\":\"md\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"ok-only\":\"\",\"ok-title\":\"Reset to Default\"},on:{\"hide\":function () { return _vm.$emit('hide'); },\"hidden\":function () { return _vm.iconsSearchTerm = ''; },\"ok\":_vm.onIconResetToDefault}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.iconsSearchTerm),expression:\"iconsSearchTerm\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"name\":\"icons-search\",\"placeholder\":\"Search...\"},domProps:{\"value\":(_vm.iconsSearchTerm)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.iconsSearchTerm=$event.target.value}}}),_c('div',{staticClass:\"icons-list-container\"},_vm._l((_vm.filteredIconSets),function(iconSet){return _c('round-button',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],key:iconSet.iconSetID,staticClass:\"list-item\",attrs:{\"iconClass\":iconSet.iconData,\"data-cy\":iconSet.iconSetID,\"title\":iconSet.title},on:{\"click\":function () { return _vm.onIconClick(iconSet.iconSetID); }}})}),1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-button',{staticClass:\"round-btn\",attrs:{\"variant\":\"outline-light\"},on:{\"click\":_vm.onBtnClick}},[_c('i',{class:_vm.iconClass})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\n@Component({})\r\nexport default class RoundIconButton extends Vue {\r\n\t@Prop() iconClass: string;\r\n\r\n\tprivate onBtnClick() {\r\n\t\tthis.$emit(\"click\");\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoundIconButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoundIconButton.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RoundIconButton.vue?vue&type=template&id=a7c60cd6&scoped=true\"\nimport script from \"./RoundIconButton.vue?vue&type=script&lang=ts\"\nexport * from \"./RoundIconButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RoundIconButton.vue?vue&type=style&index=0&id=a7c60cd6&prod&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 \"a7c60cd6\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { IconSet } from \"@/store/mobile-raise-templates/types\";\r\nimport RoundIconButton from \"./RoundIconButton.vue\";\r\n\r\nconst MobileRaiseTemplates = namespace(\"mobileRaiseTemplates\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"round-button\": RoundIconButton\r\n\t}\r\n})\r\nexport default class IconsSelector extends Vue {\r\n\t@Prop() isVisible: boolean;\r\n\t@MobileRaiseTemplates.Getter searchIconSets: (searchTerm: string) => IconSet[];\r\n\r\n\tprivate iconsSearchTerm: string = \"\";\r\n\r\n\tprivate onIconClick(iconSetID: number) {\r\n\t\tthis.$emit(\"iconSelected\", iconSetID);\r\n\t\tthis.$emit(\"hide\");\r\n\t}\r\n\r\n\tprivate onIconResetToDefault() {\r\n\t\tthis.$emit(\"iconSelected\", null);\r\n\t}\r\n\r\n\tprivate get filteredIconSets() {\r\n\t\treturn this.searchIconSets(this.iconsSearchTerm);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconsSelector.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./IconsSelector.vue?vue&type=template&id=667d9a15&scoped=true\"\nimport script from \"./IconsSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./IconsSelector.vue?vue&type=script&lang=ts\"\nimport style0 from \"./IconsSelector.vue?vue&type=style&index=0&id=667d9a15&prod&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 \"667d9a15\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"w-100\"},_vm._l((_vm.titleList),function(title,idx){return _c('p',{key:(\"title-\" + idx),staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.buildTitleString(title, idx))+\" \")])}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\n@Component({})\r\nexport default class RaiseTitle extends Vue {\r\n\t@Prop() titleList: string[];\r\n\r\n\tprivate buildTitleString(title: string, idx: number) {\r\n\t\tif (idx === 0) {\r\n\t\t\treturn title;\r\n\t\t}\r\n\t\treturn `${\"\\xa0\\xa0\".repeat(idx - 1)}└─${title}`;\r\n\t}\r\n\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseTitle.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseTitle.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RaiseTitle.vue?vue&type=template&id=ee0defbc&scoped=true\"\nimport script from \"./RaiseTitle.vue?vue&type=script&lang=ts\"\nexport * from \"./RaiseTitle.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RaiseTitle.vue?vue&type=style&index=0&id=ee0defbc&prod&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 \"ee0defbc\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport {\r\n\tMobileRaise,\r\n\tMobileRaiseLinkEditModel,\r\n\tIconSet\r\n} from \"@/store/mobile-raise-templates/types\";\r\nimport { raiseIdsEqual } from \"@/store/mobile-raise-templates/typesFunctions\";\r\nimport IconsSelector from \"./IconsSelector.vue\";\r\nimport RaiseTitle from \"./RaiseTitle.vue\";\r\nimport { VueBootstrapField } from '@/store/types';\r\n\r\nconst titleListFormatter = (titleList: string[]) => titleList.join();\r\n\r\nconst fields = [\r\n\t{\r\n\t\tlabel: \"Raise Title\",\r\n\t\tkey: \"titleList\",\r\n\t\tformatter: titleListFormatter\r\n\t},\r\n\t{ label: \"Type\", key: \"displayType\" },\r\n\t{ label: \"Icon\", key: \"iconSetTitle\" },\r\n\t{ label: \"Add To Template\", key: \"addedToTemplate\", sortable: false },\r\n];\r\n\r\ninterface LinksSelectorRow extends MobileRaiseLinkEditModel\r\n{\r\n\tdisplayType: string;\r\n\ticonSetTitle: string;\r\n\taddedToTemplate: boolean;\r\n}\r\n\r\nconst MobileRaiseTemplates = namespace(\"mobileRaiseTemplates\");\r\n\r\n@Component(\r\n{\r\n\tcomponents: {\r\n\t\t\"icons-selector\": IconsSelector,\r\n\t\t\"raise-title\": RaiseTitle\r\n\t}\r\n})\r\nexport default class LinksSelector extends Vue\r\n{\r\n\t@MobileRaiseTemplates.State mobileRaises: MobileRaise[];\r\n\t@MobileRaiseTemplates.Getter getIconSetById: (id: number) => IconSet;\r\n\t@Prop() linkedRaises: MobileRaiseLinkEditModel[];\r\n\t@Prop() isVisible: boolean;\r\n\r\n\t@Getter(\"getFeature\") private getFeature: (featureName: string[]) => boolean;\r\n\r\n\tprivate rows: LinksSelectorRow[] = [];\r\n\tprivate iconForRow: LinksSelectorRow = null;\r\n\tprivate isIconsSelectorVisible = false;\r\n\tprivate searchTerm: string = \"\";\r\n\tprivate autoShareField: VueBootstrapField = { label: \"Auto Share User\", key: \"autoShare\", sortable: false };\r\n\r\n\tprivate get fields(): VueBootstrapField[] {\r\n\t\tif (this.autoShareEnabled)\r\n\t\t{\r\n\t\t\treturn [...fields, this.autoShareField];\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\treturn fields;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"isVisible\", { immediate: true })\r\n\tonIsVisibleChanged(val: boolean, oldVal: boolean): void {\r\n\t\tif (val) {\r\n\t\t\tthis.rows = this.mobileRaises.map(r => {\r\n\t\t\t\tconst templateLink = this.linkedRaises.find(lr => raiseIdsEqual(r, lr));\r\n\t\t\t\tconst addedToTemplate = !!templateLink;\r\n\t\t\t\tconst iconSetID = addedToTemplate ? templateLink.iconSetID : null;\r\n\t\t\t\tconst autoShare = addedToTemplate ? templateLink.autoShare : false;\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...r,\r\n\t\t\t\t\tdisplayType: r.manualRaiseType ? \"Manual Raise\" : \"Activity Log Category\",\r\n\t\t\t\t\taddedToTemplate,\r\n\t\t\t\t\ticonSetID,\r\n\t\t\t\t\ticonSetTitle: this.getIconTitle(iconSetID),\r\n\t\t\t\t\tautoShare,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get autoShareEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Mobile\", \"MobileRaise\", \"AutoShare\"]);\r\n\t}\r\n\r\n\tprivate handleAddToTemplateToggle(row: LinksSelectorRow, checked: boolean): void {\r\n\t\trow.addedToTemplate = checked;\r\n\r\n\t\t// Reset auto share flag when removed from template.\r\n\t\tif (!checked)\r\n\t\t{\r\n\t\t\trow.autoShare = checked;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate handleAutoShareToggle(row: LinksSelectorRow, checked: boolean): void {\r\n\t\trow.autoShare = checked;\r\n\t}\r\n\r\n\tpublic onApplyClick(): void {\r\n\t\tconst linkedModels: MobileRaiseLinkEditModel[] = this.rows\r\n\t\t\t.filter(r => r.addedToTemplate);\r\n\t\tthis.$emit(\"apply\", linkedModels);\r\n\t}\r\n\r\n\tprivate onHide(): void {\r\n\t\tthis.$emit(\"hide\");\r\n\t}\r\n\r\n\tprivate getIconTitle(id: number | null): string {\r\n\t\tif (id === null)\r\n\t\t{\r\n\t\t\treturn \"Use default\";\r\n\t\t}\r\n\t\tconst iconSet = this.getIconSetById(id);\r\n\t\treturn iconSet.title;\r\n\t}\r\n\r\n\tprivate onIconsButtonClick(row: LinksSelectorRow): void {\r\n\t\tthis.iconForRow = row;\r\n\t\tthis.isIconsSelectorVisible = true;\r\n\t}\r\n\r\n\tprivate onIconSelected(iconSetID: number | null): void {\r\n\t\tthis.iconForRow.iconSetID = iconSetID;\r\n\t\tthis.iconForRow.iconSetTitle = this.getIconTitle(iconSetID);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinksSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinksSelector.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LinksSelector.vue?vue&type=template&id=33cc9fce&scoped=true\"\nimport script from \"./LinksSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./LinksSelector.vue?vue&type=script&lang=ts\"\nimport style0 from \"./LinksSelector.vue?vue&type=style&index=0&id=33cc9fce&prod&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 \"33cc9fce\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-group',{attrs:{\"label-cols-sm\":\"2\",\"label\":(_vm.slotNumber + \":\"),\"label-align-sm\":\"right\",\"label-for\":_vm.selectInputId,\"label-class\":\"required\",\"state\":_vm.isValid,\"invalid-feedback\":'Slot should not be empty',\"valid-feedback\":'\\u200B'}},[_c('div',{staticClass:\"select-container\"},[_c('vue-select',{class:['dark', 'flex-search', 'w-100', _vm.isValid ? '' : 'invalid'],attrs:{\"id\":_vm.selectInputId,\"required\":true,\"disabled\":_vm.disabled,\"options\":_vm.options,\"value\":_vm.value,\"placeholder\":'Please Select',\"label\":\"titleList\",\"filter\":_vm.optionsFilter},on:{\"input\":_vm.onInput},scopedSlots:_vm._u([{key:\"option\",fn:function(ref){\nvar titleList = ref.titleList;\nreturn [_c('raise-title',{attrs:{\"titleList\":titleList}})]}},{key:\"selected-option\",fn:function(ref){\nvar titleList = ref.titleList;\nreturn [_c('raise-title',{attrs:{\"titleList\":titleList}})]}}])}),_c('round-icon',{staticClass:\"round-icon ml-1\",attrs:{\"iconClass\":_vm.iconClass}}),_c('i',{staticClass:\"hover-icon fas fa-times ml-3 mt-3\",on:{\"click\":function($event){return _vm.$emit('delete')}}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('i',{staticClass:\"round-icon\",class:_vm.iconClass})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\n@Component({})\r\nexport default class RoundIcon extends Vue {\r\n\t@Prop() iconClass: string;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoundIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoundIcon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RoundIcon.vue?vue&type=template&id=8f4465b0&scoped=true\"\nimport script from \"./RoundIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./RoundIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RoundIcon.vue?vue&type=style&index=0&id=8f4465b0&prod&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 \"8f4465b0\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { MobileRaiseLinkEditModel } from \"@/store/mobile-raise-templates/types\";\r\nimport vSelect from \"vue-select\";\r\nimport { uniqueId } from \"lodash\";\r\nimport RoundIcon from \"./RoundIcon.vue\";\r\nimport RaiseTitle from \"./RaiseTitle.vue\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"round-icon\": RoundIcon,\r\n\t\t\"raise-title\": RaiseTitle,\r\n\t}\r\n})\r\nexport default class QuickSelectSlot extends Vue {\r\n\t@Prop() slotNumber: number;\r\n\t@Prop() disabled: boolean;\r\n\t@Prop() options: MobileRaiseLinkEditModel[];\r\n\t@Prop() value: MobileRaiseLinkEditModel;\r\n\t@Prop() isValid: boolean;\r\n\t@Prop() iconClass: string;\r\n\r\n\tprivate onInput(option: MobileRaiseLinkEditModel) {\r\n\t\tif (option) {\r\n\t\t\tthis.$emit(\"input\", {\r\n\t\t\t\ttypeID: option.typeID,\r\n\t\t\t\tmanualRaiseType: option.manualRaiseType\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.$emit(\"input\", null)\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get selectInputId() {\r\n\t\treturn uniqueId(\"quick-select-slot-\");\r\n\t}\r\n\r\n\tprivate optionsFilter(options: MobileRaiseLinkEditModel[], searchTerm: string) {\r\n\t\tconst termLowerCase = searchTerm.toLowerCase()\r\n\t\tconst result = options.filter(o => o.titleList.some(t => t.toLowerCase().includes(termLowerCase)));\r\n\t\treturn result;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSelectSlot.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSelectSlot.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./QuickSelectSlot.vue?vue&type=template&id=2b028ac4&scoped=true\"\nimport script from \"./QuickSelectSlot.vue?vue&type=script&lang=ts\"\nexport * from \"./QuickSelectSlot.vue?vue&type=script&lang=ts\"\nimport style0 from \"./QuickSelectSlot.vue?vue&type=style&index=0&id=2b028ac4&prod&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 \"2b028ac4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-group',{attrs:{\"label\":\"Mobile Raises:\",\"state\":_vm.isValid,\"invalid-feedback\":'Shoud have at least one raise'}},[_c('b-button',{attrs:{\"variant\":\"link\",\"disabled\":_vm.disabled},on:{\"click\":_vm.onClick}},[_vm._v(\" \"+_vm._s((_vm.raisesNumber + \" raise types associated\"))+\" \")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\n@Component({})\r\nexport default class MobileRaisesLinksControl extends Vue {\r\n\t@Prop() disabled: boolean;\r\n\t@Prop() raisesNumber: number;\r\n\t@Prop() isValid: boolean\r\n\r\n\tprivate onClick() {\r\n\t\tthis.$emit(\"click\");\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileRaisesLinksControl.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileRaisesLinksControl.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MobileRaisesLinksControl.vue?vue&type=template&id=b1eaaa82\"\nimport script from \"./MobileRaisesLinksControl.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileRaisesLinksControl.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-group',{attrs:{\"label\":\"User Groups:\",\"label-for\":_vm.getId}},[_c('vue-select',{staticClass:\"dark flex-search w-100\",attrs:{\"multiple\":\"\",\"id\":_vm.getId,\"required\":true,\"options\":_vm.options,\"label\":\"title\",\"value\":_vm.value,\"disabled\":_vm.disabled},on:{\"input\":_vm.onInput}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { UserGroup } from \"@/store/user-management/types\";\r\nimport { uniqueId } from \"lodash\";\r\nimport vSelect from \"vue-select\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect\r\n\t}\r\n})\r\nexport default class UserGroupsControl extends Vue {\r\n\t@Prop() disabled: boolean;\r\n\t@Prop() options: UserGroup[];\r\n\t@Prop() value: UserGroup[];\r\n\r\n\tprivate get getId() {\r\n\t\treturn uniqueId(\"template-usergroups-input-\");\r\n\t}\r\n\r\n\tprivate onInput(values: UserGroup[]) {\r\n\t\tthis.$emit(\"input\", values);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGroupsControl.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGroupsControl.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserGroupsControl.vue?vue&type=template&id=71598bbf\"\nimport script from \"./UserGroupsControl.vue?vue&type=script&lang=ts\"\nexport * from \"./UserGroupsControl.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-group',{attrs:{\"label\":\"Title:\",\"label-for\":_vm.getId,\"label-class\":\"required\",\"state\":_vm.isValid,\"invalid-feedback\":_vm.invalidFeedback,\"valid-feedback\":'\\u200B'}},[_c('b-form-input',{class:{ invalid: !_vm.isValid },attrs:{\"id\":_vm.getId,\"value\":_vm.value,\"trim\":\"\",\"disabled\":_vm.disabled},on:{\"input\":_vm.onInput}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { uniqueId } from \"lodash\";\r\n\r\n@Component({})\r\nexport default class TitleControl extends Vue {\r\n\t@Prop() isValid: boolean;\r\n\t@Prop() disabled: boolean;\r\n\t@Prop() value: number;\r\n\t@Prop() invalidFeedback: string;\r\n\r\n\tprivate onInput(val: string) {\r\n\t\tthis.$emit(\"input\", val);\r\n\t}\r\n\r\n\tprivate get getId() {\r\n\t\treturn uniqueId(\"template-title-input-\");\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TitleControl.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TitleControl.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TitleControl.vue?vue&type=template&id=3deeaaa4\"\nimport script from \"./TitleControl.vue?vue&type=script&lang=ts\"\nexport * from \"./TitleControl.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","export const required = \"Title is required\";\r\nexport const maxLengthExceeded = \"Title maximum length (250 characters) exceeded\";\r\nexport const nonUnique = \"Title should be unique\";\r\n","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { TemplateModalMode } from \"./TemplateModalMode\";\r\nimport {\r\n\tTemplateDetailsModel,\r\n\tMobileRaiseLinkEditModel,\r\n\tIconSet,\r\n\tRaiseId,\r\n\tMobileRaiseTemplate\r\n} from \"@/store/mobile-raise-templates/types\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { UserGroup } from \"@/store/user-management/types\";\r\nimport vSelect from \"vue-select\";\r\nimport createRangeArray from \"./createRangeArray\";\r\nimport LinksSelector from \"./LinksSelector.vue\";\r\nimport { newTemplateDetailsModel, raiseIdsEqual } from \"@/store/mobile-raise-templates/typesFunctions\";\r\nimport { isEqual, cloneDeep, find } from \"lodash\";\r\nimport ConfirmationModal from \"./ConfirmationModal.vue\";\r\nimport RaiseTitle from \"./RaiseTitle.vue\";\r\nimport QuickSelectSlot from \"./QuickSelectSlot.vue\";\r\nimport MobileRaisesLinksControl from \"./MobileRaisesLinksControl.vue\";\r\nimport UserGroupsControl from \"./UserGroupsControl.vue\";\r\nimport TitleControl from \"./TitleControl.vue\";\r\nimport * as titleFeedbacks from \"./titleFeedbacks\";\r\n\r\nconst EMPTY_ICON_CLASS = \"fas fa-ellipsis-h\";\r\nconst UserManagement = namespace(\"userManagement\");\r\nconst MobileRaiseTemplates = namespace(\"mobileRaiseTemplates\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"links-selector\": LinksSelector,\r\n\t\t\"confirmation-modal\": ConfirmationModal,\r\n\t\t\"raise-title\": RaiseTitle,\r\n\t\t\"quick-select-slot\": QuickSelectSlot,\r\n\t\t\"mobile-raises-links\": MobileRaisesLinksControl,\r\n\t\t\"user-groups-control\": UserGroupsControl,\r\n\t\t\"title-control\": TitleControl\r\n\t}\r\n})\r\nexport default class TemplateModal extends Vue {\r\n\t@Prop() isVisible: boolean;\r\n\t@Prop() mode: TemplateModalMode;\r\n\t@Prop() templateId: number | null;\r\n\r\n\t@MobileRaiseTemplates.State mobileRaiseTemplates: MobileRaiseTemplate[];\r\n\t@UserManagement.State userGroups: UserGroup[];\r\n\t@MobileRaiseTemplates.Getter getIconSetById: (id: number) => IconSet;\r\n\t@MobileRaiseTemplates.Getter getIconSetByRaiseId: (raiseId: RaiseId) => IconSet;\r\n\t@MobileRaiseTemplates.Getter getTemplateModelById: (templateId: number) => TemplateDetailsModel;\r\n\r\n\tprivate originalEditModel: TemplateDetailsModel = newTemplateDetailsModel();\r\n\tprivate editModel: TemplateDetailsModel = newTemplateDetailsModel();\r\n\tprivate isLinksSelectorVisible = false;\r\n\tprivate isDeleteConfirmationShown = false;\r\n\tprivate isCloseConfirmationShown = false;\r\n\tprivate titleFeedback = \"\";\r\n\r\n\t@Watch(\"isVisible\", { immediate: true })\r\n\tprivate onVisibilityChange(newValue: boolean) {\r\n\t\tif (newValue) {\r\n\t\t\tif (this.templateId) {\r\n\t\t\t\tthis.editModel = this.getTemplateModelById(this.templateId);\r\n\t\t\t\tthis.originalEditModel = cloneDeep(this.editModel);\r\n\t\t\t} else {\r\n\t\t\t\tthis.editModel = newTemplateDetailsModel();\r\n\t\t\t\tthis.originalEditModel = newTemplateDetailsModel();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isEditMode(): boolean {\r\n\t\treturn this.mode === TemplateModalMode.edit;\r\n\t}\r\n\r\n\tprivate get isAddMode(): boolean {\r\n\t\treturn this.mode === TemplateModalMode.add;\r\n\t}\r\n\r\n\tprivate get isViewMode(): boolean {\r\n\t\treturn this.mode === TemplateModalMode.view;\r\n\t}\r\n\r\n\tprivate get isUnsavedChanges(): boolean {\r\n\t\treturn !isEqual(this.editModel, this.originalEditModel);\r\n\t}\r\n\r\n\tprivate get modalTitle(): string {\r\n\t\tswitch (this.mode) {\r\n\t\t\tcase TemplateModalMode.view:\r\n\t\t\t\treturn \"Mobile Raise Template Details\";\r\n\t\t\tcase TemplateModalMode.edit:\r\n\t\t\t\treturn \"Edit Mobile Raise Template\";\r\n\t\t\tcase TemplateModalMode.add:\r\n\t\t\t\treturn \"Add Mobile Raise Template\";\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"Unknown TemplateModalMode\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getOptionsForSlot(link: MobileRaiseLinkEditModel | null): MobileRaiseLinkEditModel[] {\r\n\t\tconst links = this.editModel.mobileRaiseLinks\r\n\t\t.filter(l => {\r\n\t\t\treturn raiseIdsEqual(l, link)\r\n\t\t\t|| !find(this.editModel.quickRaiseIds, qr => raiseIdsEqual(l, qr));\r\n\t\t});\r\n\t\treturn links;\r\n\t}\r\n\r\n\tprivate getIconClassForSlot(raiseId: RaiseId | null): string {\r\n\t\tconst link = this.getLinkByRaiseId(raiseId);\r\n\t\treturn link ? this.getIconClassForLink(link) : EMPTY_ICON_CLASS;\r\n\t}\r\n\r\n\tprivate getLinkByRaiseId(raiseId: RaiseId): MobileRaiseLinkEditModel {\r\n\t\tconst link = this.editModel.mobileRaiseLinks.find(l => raiseIdsEqual(l, raiseId));\r\n\t\treturn link;\r\n\t}\r\n\r\n\tprivate getIconClassForLink(link: MobileRaiseLinkEditModel): string {\r\n\t\tconst iconSet = this.getIconSetForLink(link);\r\n\t\treturn iconSet ? iconSet.iconData : EMPTY_ICON_CLASS;\r\n\t}\r\n\r\n\tprivate getIconSetForLink(link: MobileRaiseLinkEditModel): IconSet | undefined {\r\n\t\tif (link.iconSetID === null) {\r\n\t\t\treturn this.getIconSetByRaiseId(link);\r\n\t\t}\r\n\t\treturn this.getIconSetById(link.iconSetID);\r\n\t}\r\n\r\n\tprivate slotInputHandler(slot: number, raiseId: RaiseId | null): void {\r\n\t\tconst qr = [...this.editModel.quickRaiseIds];\r\n\t\tqr[slot] = raiseId;\r\n\t\tthis.editModel.quickRaiseIds = qr;\r\n\t}\r\n\r\n\tprivate removeSlot(slot: number): void {\r\n\t\tthis.editModel.quickRaiseIds.splice(slot, 1);\r\n\t}\r\n\r\n\tprivate addSlot(): void {\r\n\t\tthis.editModel.quickRaiseIds.push(null);\r\n\t}\r\n\r\n\tprivate get isAddSlotVisible(): boolean {\r\n\t\treturn this.editModel.quickRaiseIds.length < 9;\r\n\t}\r\n\r\n\tprivate linkKey(slot: number, link: MobileRaiseLinkEditModel | null): string {\r\n\t\tif (!link) {\r\n\t\t\treturn slot.toString();\r\n\t\t}\r\n\t\treturn `${slot}${link.typeID}${link.manualRaiseType}`;\r\n\t}\r\n\r\n\tprivate linksClicked(): void {\r\n\t\tthis.isLinksSelectorVisible = true;\r\n\t}\r\n\r\n\tprivate onLinksSelectorHide(): void {\r\n\t\tthis.isLinksSelectorVisible = false;\r\n\t}\r\n\r\n\tprivate onLinksApply(linkedModels: MobileRaiseLinkEditModel[]): void {\r\n\t\tthis.editModel.mobileRaiseLinks = linkedModels;\r\n\t\tconst quickRaiseIds = [...this.editModel.quickRaiseIds];\r\n\t\tfor (let i = 0; i < quickRaiseIds.length; i++) {\r\n\t\t\tif (!linkedModels.find(lm => raiseIdsEqual(lm, quickRaiseIds[i]))) {\r\n\t\t\t\tquickRaiseIds[i] = null;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.editModel.quickRaiseIds = quickRaiseIds;\r\n\t}\r\n\r\n\tprivate onDelete(): void {\r\n\t\tthis.isDeleteConfirmationShown = true;\r\n\t}\r\n\r\n\tprivate deleteConfirmed(): void {\r\n\t\tthis.isDeleteConfirmationShown = false;\r\n\t\tthis.$emit(\"delete\", this.editModel.mobileRaiseTemplateID);\r\n\t}\r\n\r\n\tprivate deleteCancelled(): void {\r\n\t\tthis.isDeleteConfirmationShown = false;\r\n\t}\r\n\r\n\tprivate onAdd(): void {\r\n\t\tthis.$emit(\"add\", this.editModel);\r\n\t}\r\n\r\n\tprivate onSave(): void {\r\n\t\tthis.$emit(\"save\", this.editModel);\r\n\t}\r\n\r\n\tprivate confirmClosing(evt): void {\r\n\t\t// prevent modal from closing\r\n\t\tevt.preventDefault();\r\n\r\n\t\tif (this.isUnsavedChanges) {\r\n\t\t\tthis.isCloseConfirmationShown = true;\r\n\t\t} else {\r\n\t\t\tthis.$emit(\"close\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate closeConfirmed(): void {\r\n\t\tthis.isCloseConfirmationShown = false;\r\n\t\tthis.$emit(\"close\");\r\n\t}\r\n\r\n\tprivate closeCancelled(): void {\r\n\t\tthis.isCloseConfirmationShown = false;\r\n\t}\r\n\r\n\tprivate isSlotValid(slot: number): boolean {\r\n\t\treturn !!this.editModel.quickRaiseIds[slot];\r\n\t}\r\n\r\n\tprivate isMobileRaiseLinksValid(): boolean {\r\n\t\treturn this.editModel.mobileRaiseLinks && this.editModel.mobileRaiseLinks.length !== 0;\r\n\t}\r\n\r\n\tprivate isTitleValid(): boolean {\r\n\t\tconst { title } = this.editModel;\r\n\r\n\t\tif (!title) {\r\n\t\t\tthis.titleFeedback = titleFeedbacks.required;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (title.length > 250) {\r\n\t\t\tthis.titleFeedback = titleFeedbacks.maxLengthExceeded;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.isTitleNotUnique()) {\r\n\t\t\tthis.titleFeedback = titleFeedbacks.nonUnique;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.titleFeedback = \"\";\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate isTitleNotUnique(): boolean {\r\n\t\tconst { title, mobileRaiseTemplateID } = this.editModel;\r\n\t\treturn this.mobileRaiseTemplates.some(\r\n\t\t\tt => t.mobileRaiseTemplateID !== mobileRaiseTemplateID && t.title === title\r\n\t\t);\r\n\t}\r\n\r\n\tprivate isFormValid(): boolean {\r\n\t\tif (!this.isMobileRaiseLinksValid()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this.editModel.quickRaiseIds.length; i++) {\r\n\t\t\tif (!this.isSlotValid(i)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.isTitleValid();\r\n\t}\r\n\r\n\tprivate get isSaveDisabled() {\r\n\t\treturn !this.isUnsavedChanges || !this.isFormValid();\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplateModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TemplateModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TemplateModal.vue?vue&type=template&id=25fed21f&scoped=true\"\nimport script from \"./TemplateModal.vue?vue&type=script&lang=ts\"\nexport * from \"./TemplateModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./TemplateModal.vue?vue&type=style&index=0&id=25fed21f&prod&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 \"25fed21f\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport { TemplateGridRowModel, TemplateDetailsModel } from \"@/store/mobile-raise-templates/types\";\r\nimport TemplateModal from \"@/components/mobile-raise-templates/TemplateModal.vue\";\r\nimport { TemplateModalMode } from \"@/components/mobile-raise-templates/TemplateModalMode\";\r\n\r\nconst UserManagement = namespace(\"userManagement\");\r\nconst MobileRaiseTemplates = namespace(\"mobileRaiseTemplates\");\r\n\r\nconst titleListFormatter = (titleList: string[]) => titleList.join();\r\n\r\nconst fields = [\r\n\t{ label: \"Template Name\", key: \"title\", sortable: true },\r\n\t{ label: \"Quick Select Raises\", key: \"quickSelectRaises\", sortable: true },\r\n\t{ label: \"User Groups\", key: \"userGroups\", formatter: titleListFormatter },\r\n\t{ key: \"actions\", label: \"Actions\", sortable: false, class: [\"text-right\", \"pr-4\"] }\r\n];\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\tTemplateModal\r\n\t}\r\n})\r\nexport default class MobileRaiseSetup extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@MobileRaiseTemplates.Getter getTemplateGridRows: TemplateGridRowModel[];\r\n\t@MobileRaiseTemplates.Action loadTemplates: () => Promise;\r\n\t@MobileRaiseTemplates.Action loadMobileRaises: () => Promise;\r\n\t@MobileRaiseTemplates.Action loadIconSets: () => Promise;\r\n\t@MobileRaiseTemplates.Action addMobileRaiseTemplate: (model: TemplateDetailsModel) => Promise;\r\n\t@MobileRaiseTemplates.Action updateMobileRaiseTemplate: (model: TemplateDetailsModel) => Promise;\r\n\t@MobileRaiseTemplates.Action deleteMobileRaiseTemplate: (templateId: number) => Promise;\r\n\t@UserManagement.Action loadUserGroups: () => Promise;\r\n\r\n\tprivate searchTerm: string = \"\";\r\n\tprivate isTemplateModalVisible: boolean = false;\r\n\tprivate templateModalMode: TemplateModalMode = TemplateModalMode.view;\r\n\tprivate templateId: number | null = null;\r\n\tprivate sortBy: string = \"title\";\r\n\tprivate sortDesc: boolean = false;\r\n\r\n\tcreated() {\r\n\t\tthis.loadTemplates();\r\n\t\tthis.loadMobileRaises();\r\n\t\tthis.loadIconSets();\r\n\t\tthis.loadUserGroups();\r\n\t}\r\n\r\n\tprivate get isReadlonly() {\r\n\t\treturn !this.getPermissions.canEditMobileRaise;\r\n\t}\r\n\r\n\tprivate get fields() {\r\n\t\treturn fields;\r\n\t}\r\n\r\n\tprivate openViewModal(row: any) {\r\n\t\tthis.templateModalMode = TemplateModalMode.view;\r\n\t\tthis.templateId = row.item.mobileRaiseTemplateID;\r\n\t\tthis.isTemplateModalVisible = true;\r\n\t}\r\n\r\n\tprivate openEditModal(row: any) {\r\n\t\tthis.templateModalMode = TemplateModalMode.edit;\r\n\t\tthis.templateId = row.item.mobileRaiseTemplateID;\r\n\t\tthis.isTemplateModalVisible = true;\r\n\t}\r\n\r\n\tprivate openNewModal() {\r\n\t\tthis.templateModalMode = TemplateModalMode.add;\r\n\t\tthis.templateId = null;\r\n\t\tthis.isTemplateModalVisible = true;\r\n\t}\r\n\r\n\tprivate onTemplateModalClose() {\r\n\t\tthis.isTemplateModalVisible = false;\r\n\t}\r\n\r\n\tprivate onTemplateModalAdd(model: TemplateDetailsModel) {\r\n\t\tthis.isTemplateModalVisible = false;\r\n\t\tthis.addMobileRaiseTemplate(model);\r\n\t}\r\n\r\n\tprivate onTemplateModalSave(model: TemplateDetailsModel) {\r\n\t\tthis.isTemplateModalVisible = false;\r\n\t\tthis.updateMobileRaiseTemplate(model);\r\n\t}\r\n\r\n\tprivate onTemplateModalDelete(templateId: number) {\r\n\t\tthis.isTemplateModalVisible = false;\r\n\t\tthis.deleteMobileRaiseTemplate(templateId);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileRaiseSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileRaiseSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MobileRaiseSetup.vue?vue&type=template&id=dcb3ddec&scoped=true\"\nimport script from \"./MobileRaiseSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileRaiseSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MobileRaiseSetup.vue?vue&type=style&index=0&id=dcb3ddec&prod&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 \"dcb3ddec\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"background\"},[_c('div',{staticClass:\"page\"},[_c('nav-header',{attrs:{\"title\":\"Organization Settings\"}}),_c('div',{staticClass:\"page-body\"},[(!_vm.isPageEnabled)?_c('div',{attrs:{\"data-cy\":\"permissions-error\"}},[_vm._v(\" This feature is not enabled for your organization. \")]):_c('div',{attrs:{\"data-cy\":\"organisation-details-page\"}},[(!_vm.isUserPermittedToViewPage)?_c('div',{attrs:{\"data-cy\":\"permissions-error\"}},[_vm._v(\" You do not have permission to view Organization settings. \")]):(_vm.isSubscriptionSettingsShown)?_c('div',{staticClass:\"container organization-settings-container\"},[(_vm.isSubscriptionLoaded)?_c('b-card',{staticClass:\"organization-details-card d-flex\",attrs:{\"data-cy\":\"subscription-details-card\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.getSubscriptionDetailsCardTitle)+\" \"),_c('i',{staticClass:\"fa\",class:_vm.isSubscriptionValid() ? 'valid-subscription-icon fa-check-circle': 'invalid-subscription-icon fa-times-circle',attrs:{\"data-cy\":\"subscription-validity-icon\"}}),(_vm.getPermissions.isAccountAdmin && !_vm.isEditing && _vm.subscriptionType !== 'Stubbed')?_c('b-button',{staticClass:\"fa fa-edit float-right\",on:{\"click\":function($event){return _vm.openEdit()}}}):_vm._e()]},proxy:true}],null,false,3117079802)},[(_vm.subscription.customer)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3\"},[_vm._v(\" Registered to: \")]),_c('div',{staticClass:\"col-9\",attrs:{\"data-cy\":\"customer-details\"}},[_vm._v(\" \"+_vm._s(_vm.subscription.customer.firstName)+\" \"+_vm._s(_vm.subscription.customer.lastName)+\" - \"+_vm._s(_vm.subscription.customer.email)+\" \")])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3\"},[_vm._v(\" Expiry Date: \")]),_c('div',{staticClass:\"col-9\",attrs:{\"data-cy\":\"expiry-date-utc\"}},[_vm._v(\" \"+_vm._s(_vm.getSubscriptionExpiryDate)+\" \")])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3\"},[_vm._v(\" Last Updated: \")]),_c('div',{staticClass:\"col-9\",attrs:{\"data-cy\":\"updated-date-utc\"}},[_vm._v(\" \"+_vm._s(_vm.getLastUpdatedDate)+\" \")])]),_c('b-table',{staticClass:\"subscription-features mt-4\",attrs:{\"borderless\":\"\",\"hover\":\"\",\"items\":_vm.subscriptionFeaturesTableData,\"fields\":_vm.subscriptionFeaturesTableFields,\"data-cy\":\"subscription-features-table\"}}),(_vm.canViewBillingPortal)?_c('b-card',{staticClass:\"organization-details-card\",attrs:{\"no-body\":\"\",\"data-cy\":\"subscription-portal-card\"}},[_c('b-card-header',{staticClass:\"p-0\",attrs:{\"header-tag\":\"header\"}},[_c('b-button',{attrs:{\"variant\":\"link\",\"block\":\"\",\"href\":_vm.subscription.customer.billingPortalLink.url,\"target\":\"_blank\",\"data-cy\":\"portal-subscription-button\"}},[_vm._v(\"Open Billing Portal\")])],1)],1):_vm._e()],1):_vm._e(),(!_vm.isSubscriptionLoaded)?_c('b-card',{staticClass:\"organization-details-card\",attrs:{\"data-cy\":\"subscription-loading\"}},[_vm._v(\" Loading... \"),_c('i',{staticClass:\"fas fa-spinner fa-spin\"})]):_vm._e()],1):(_vm.isBillingEnabled)?_c('div',{attrs:{\"data-cy\":\"permissions-error\"}},[_vm._v(\" You do not have permission to view Subscription settings. \")]):_vm._e()]),(_vm.isSamlAuthEnabled && !_vm.isSuiteEnabled && (_vm.getPermissions.isSystemAdmin || _vm.getPermissions.isAccountAdmin))?_c('sso-settings',{staticClass:\"container organization-settings-container\"}):_vm._e(),(!(_vm.getPermissions.isSystemAdmin || _vm.getPermissions.isAccountAdmin))?_c('div',{attrs:{\"data-cy\":\"permissions-error\"}},[_vm._v(\" You do not have permission to view Single Sign On settings. \")]):_vm._e(),(_vm.isShowHouseKeepingSettings)?_c('div',{staticClass:\"container organization-settings-container\"},[_c('b-card',{staticClass:\"organization-details-card d-flex\",attrs:{\"data-cy\":\"organization-details-card\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" Retention \")]},proxy:true}],null,false,3295435510)},[_c('housekeeping-settings-form')],1)],1):_vm._e(),(this.isQuickEndEnabled)?_c('div',{staticClass:\"container organization-settings-container\"},[_c('b-card',{staticClass:\"quick-end-details-card d-flex\",attrs:{\"data-cy\":\"quick-end-details-card\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" Quick End \")]},proxy:true}],null,false,2842396712)},[_c('quick-end-settings-form')],1)],1):_vm._e(),_c('div',{staticClass:\"container organization-settings-container\"},[(_vm.isTenantSettingsEnabled || _vm.isAlarmAgeWarningEnabled)?_c('b-card',{staticClass:\"organization-details-card d-flex\",attrs:{\"data-cy\":\"tenant-settings-card\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" Tenant Settings \")]},proxy:true}],null,false,2712935779)},[_c('tenant-system-prefs-form')],1):_vm._e()],1),_c('div',{staticClass:\"container organization-settings-container\"},[(_vm.isPriorityColorsEnabled)?_c('b-card',{staticClass:\"organization-details-card d-flex\",attrs:{\"data-cy\":\"priority-colors-card\"},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" Alarm Queue Priority Colors \")]},proxy:true}],null,false,511309948)},[_c('alarm-queue-priority-colors')],1):_vm._e()],1)],1)],1),_c('b-modal',{attrs:{\"static\":\"\",\"title\":\"Edit Subscription\",\"size\":\"lg\",\"centered\":\"\"},model:{value:(_vm.isEditing),callback:function ($$v) {_vm.isEditing=$$v},expression:\"isEditing\"}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',[_vm._v(\" Edit Subscription Details \"),_c('span',{staticClass:\"text-danger\",attrs:{\"hidden\":true}},[_vm._v(\"*\")])])]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":function($event){_vm.isEditing = false}}},[_vm._v(\"×\")])]),_c('div',{staticClass:\"m-2\",staticStyle:{\"min-height\":\"10em\"}},[(_vm.subscription.customer)?_c('div',[_c('b-form-group',{attrs:{\"data-cy\":\"subscription-first-name\",\"label\":\"First Name:\"}},[_c('b-form-input',{model:{value:(_vm.subscriptionUpdateRequest.firstName),callback:function ($$v) {_vm.$set(_vm.subscriptionUpdateRequest, \"firstName\", $$v)},expression:\"subscriptionUpdateRequest.firstName\"}})],1),_c('b-form-group',{attrs:{\"data-cy\":\"subscription-last-name\",\"label\":\"Last Name:\"}},[_c('b-form-input',{model:{value:(_vm.subscriptionUpdateRequest.lastName),callback:function ($$v) {_vm.$set(_vm.subscriptionUpdateRequest, \"lastName\", $$v)},expression:\"subscriptionUpdateRequest.lastName\"}})],1),_c('b-form-group',{attrs:{\"data-cy\":\"subscription-email\",\"label\":\"Email:\"}},[_c('b-form-input',{model:{value:(_vm.subscriptionUpdateRequest.email),callback:function ($$v) {_vm.$set(_vm.subscriptionUpdateRequest, \"email\", $$v)},expression:\"subscriptionUpdateRequest.email\"}})],1)],1):_vm._e()]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"btn btn-primary btn-right ksConfirm\",attrs:{\"type\":\"submit\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.postUpdateSubscription()}}},[_vm._v(\"Save\")]),_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"close-history-btn\"},on:{\"click\":function($event){_vm.isEditing = false}}},[_c('span',[_vm._v(\"Close\")])])],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.isLoading)?_c('b-card',{staticClass:\"sso-settings-card\"},[_vm._v(\" Loading... \"),_c('i',{staticClass:\"fas fa-spinner fa-spin\"})]):_c('b-card',{staticClass:\"sso-settings-card\",scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_vm._v(\" Single Sign On Settings \")]},proxy:true}])},[_c('div',[(_vm.form)?_c('b-form',{staticClass:\"sso-settings-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.onSubmit($event)}}},[_c('b-form-group',[_c('b-form-checkbox',{attrs:{\"id\":\"cbIsEnabled\"},model:{value:(_vm.form.isEnabled),callback:function ($$v) {_vm.$set(_vm.form, \"isEnabled\", $$v)},expression:\"form.isEnabled\"}},[_vm._v(\"Enable SAML\")])],1),_c('b-form-group',{attrs:{\"label\":\"Single Sign On URL:\",\"label-for\":\"inputSAMLSSOUrl\",\"description\":\"Copy this URL and paste it in SSO URL setting on your provider\"}},[_c('b-form-input',{attrs:{\"id\":\"inputSAMLSSOUrl\",\"type\":\"url\",\"value\":_vm.ssoUrl,\"disabled\":true}}),_c('i',{staticClass:\"fas fa-copy hover-icon\",attrs:{\"id\":\"copySSOUrl\",\"title\":\"Copy to clipboard\"},on:{\"click\":function($event){$event.preventDefault();return _vm.copySSOUrl()}}})],1),_c('b-form-group',{class:{ 'form-group-disabled': !_vm.form.isEnabled },attrs:{\"label\":\"Issuer (Entity Id):\",\"label-class\":\"required\",\"label-for\":\"inputSAMLIssuer\"}},[_c('b-form-input',{attrs:{\"id\":\"inputSAMLIssuer\",\"placeholder\":\"Enter SAML issuer\",\"type\":\"text\",\"required\":\"\",\"disabled\":!_vm.form.isEnabled},model:{value:(_vm.form.issuer),callback:function ($$v) {_vm.$set(_vm.form, \"issuer\", $$v)},expression:\"form.issuer\"}})],1),_c('b-form-group',{class:{ 'form-group-disabled': !_vm.form.isEnabled },attrs:{\"label\":\"Login URL:\",\"label-class\":\"required\",\"label-for\":\"inputSAMLLoginUrl\"}},[_c('b-form-input',{attrs:{\"id\":\"inputSAMLLoginUrl\",\"placeholder\":\"Enter login url. https://example.provider.com/sso/saml/login\",\"type\":\"url\",\"required\":\"\",\"disabled\":!_vm.form.isEnabled},model:{value:(_vm.form.loginUrl),callback:function ($$v) {_vm.$set(_vm.form, \"loginUrl\", $$v)},expression:\"form.loginUrl\"}})],1),_c('b-form-group',{class:{ 'form-group-disabled': !_vm.form.isEnabled },attrs:{\"label\":\"Metadata URL:\",\"label-class\":(!_vm.form.certificate || _vm.form.metadataUrl ? 'required' : ''),\"label-for\":\"inputSAMLMetadataUrl\"}},[_c('b-form-input',{attrs:{\"id\":\"inputSAMLMetadataUrl\",\"placeholder\":\"Enter metadata url. https://example.provider.com/sso/saml/metadata\",\"type\":\"url\",\"required\":!_vm.form.metadataUrl && !_vm.form.certificate,\"disabled\":!_vm.form.isEnabled},model:{value:(_vm.form.metadataUrl),callback:function ($$v) {_vm.$set(_vm.form, \"metadataUrl\", $$v)},expression:\"form.metadataUrl\"}})],1),_c('b-form-group',{class:{ 'form-group-disabled': !_vm.form.isEnabled },attrs:{\"label\":\"Signing Certificate (if Metadata URL is not provided):\",\"label-class\":(!_vm.form.metadataUrl && (!_vm.form.certificate || _vm.form.certificate) ? 'required' : ''),\"label-for\":\"inputSAMLSigningCertificate\"}},[_c('b-form-textarea',{attrs:{\"id\":\"inputSAMLSigningCertificate\",\"placeholder\":\"-----BEGIN CERTIFICATE-----\\nMIICajCCAdOgAwIBAgIBADANBgkqhkiG9w0BAQ0FADBSMQswCQYDVQQGEwJ1czEL\\n...\\nLEzc1JwEGQQVDYQCwsQMSBDAF0QAB0w9GikhqkgBNADABIgABIwAgOdACCjaCIIM\\n-----END CERTIFICATE-----\",\"type\":\"text\",\"rows\":\"10\",\"required\":!_vm.form.metadataUrl && !_vm.form.certificate,\"disabled\":!_vm.form.isEnabled},model:{value:(_vm.form.certificate),callback:function ($$v) {_vm.$set(_vm.form, \"certificate\", $$v)},expression:\"form.certificate\"}})],1),_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"primary\",\"disabled\":_vm.isSaving}},[(!_vm.isSaving)?_c('span',[_vm._v(\"Save\")]):_vm._e(),(_vm.isSaving)?_c('span',[_vm._v(\"Saving...\"),_c('i',{staticClass:\"fas fa-spinner fa-spin\"})]):_vm._e()])],1):_vm._e()],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import Vue from 'vue';\n import { Component } from 'vue-property-decorator';\n import api from \"@/services/api.service\";\n import SamlSettings from '@/types/sv-data/SamlSettings';\n import { Getter } from 'vuex-class';\n\n @Component({\n })\n export default class SingleSignOnSettings extends Vue {\n\t\t@Getter getUserTenantGroupId: number;\n\n private readonly currentOrigin: string = window.location.origin;\n\n private isLoading: boolean = false;\n private isSaving: boolean = false;\n private form: SamlSettings = {\n isEnabled: false,\n issuer: '',\n metadataUrl: '',\n loginUrl: '',\n redirectUrl: '',\n certificate: ''\n };\n\n private get ssoUrl(): string {\n return api.getOriginalApiUrl + '/login/saml?groupId=' + this.getUserTenantGroupId;\n }\n\n private async created() {\n this.isLoading = true;\n try {\n\t\t\t\tthis.form = await api.getSamlSettings();\n\t\t\t} catch (ex) {\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tthrow ex;\n\t\t\t}\n\n this.isLoading = false;\n }\n\n private async onSubmit($event: Event) {\n this.isSaving = true;\n\n // we save front end base url to know where to redirect user after sso authentication\n this.form.redirectUrl = this.currentOrigin;\n\n\t\t\ttry {\n\t\t\t\tawait api.setSamlSettings(this.form);\n\t\t\t} catch (ex) {\n\t\t\t\tthis.isSaving = false;\n\t\t\t\tthrow ex;\n\t\t\t}\n\n this.isSaving = false;\n }\n\n private copySSOUrl() {\n const textArea = document.createElement(\"textarea\");\n textArea.value = this.ssoUrl;\n \n // Avoid scrolling to bottom\n textArea.style.top = \"0\";\n textArea.style.left = \"0\";\n textArea.style.position = \"fixed\";\n\n document.body.appendChild(textArea);\n\n textArea.focus();\n textArea.select();\n\n document.execCommand(\"copy\");\n\n document.body.removeChild(textArea);\n }\n }\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleSignOnSettings.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SingleSignOnSettings.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SingleSignOnSettings.vue?vue&type=template&id=7d4fdbc4&scoped=true\"\nimport script from \"./SingleSignOnSettings.vue?vue&type=script&lang=ts\"\nexport * from \"./SingleSignOnSettings.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SingleSignOnSettings.vue?vue&type=style&index=0&id=7d4fdbc4&prod&scoped=true&lang=scss\"\nimport style1 from \"./SingleSignOnSettings.vue?vue&type=style&index=1&id=7d4fdbc4&prod&lang=scss\"\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 \"7d4fdbc4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-form',{attrs:{\"data-cy\":\"form\"},on:{\"submit\":function($event){$event.preventDefault();_vm.updateRequiresConfirmation ? _vm.isConfirmationModalShown = true : _vm.confirmUpdateHousekeepingSettings()},\"reset\":function($event){$event.preventDefault();return _vm.resetChanges($event)}}},[_c('b-form-group',{attrs:{\"id\":\"daysToKeepEventsInputGroup\",\"label\":\"Days to retain non-preserved events\",\"label-for\":\"daysToKeepEvents\",\"state\":!_vm.$v.newDaysToKeepEvents.$anyError,\"invalidFeedback\":\"Value must be at least 1 and at most 365\"}},[_c('b-form-input',{attrs:{\"id\":\"daysToKeepEvents\",\"type\":\"number\",\"required\":\"\",\"state\":!_vm.$v.newDaysToKeepEvents.$anyError,\"readonly\":!_vm.getPermissions.isAccountAdmin,\"data-cy\":\"days-to-keep-events-input\"},model:{value:(_vm.$v.newDaysToKeepEvents.$model),callback:function ($$v) {_vm.$set(_vm.$v.newDaysToKeepEvents, \"$model\", $$v)},expression:\"$v.newDaysToKeepEvents.$model\"}})],1),_c('b-form-group',{attrs:{\"id\":\"daysToKeepEventFilesInputGroup\",\"label\":\"Days to retain non-preserved event media\",\"label-for\":\"daysToKeepEventFiles\",\"state\":!_vm.$v.newDaysToKeepEventFiles.$anyError,\"invalidFeedback\":(\"Value must be at least 1 and at most \" + (_vm.newDaysToKeepEvents > 0 ? _vm.newDaysToKeepEvents : '365'))}},[_c('b-form-input',{attrs:{\"id\":\"daysToKeepEventFiles\",\"type\":\"number\",\"required\":\"\",\"state\":!_vm.$v.newDaysToKeepEventFiles.$anyError,\"readonly\":!_vm.getPermissions.isAccountAdmin,\"data-cy\":\"days-to-keep-event-files-input\"},model:{value:(_vm.$v.newDaysToKeepEventFiles.$model),callback:function ($$v) {_vm.$set(_vm.$v.newDaysToKeepEventFiles, \"$model\", $$v)},expression:\"$v.newDaysToKeepEventFiles.$model\"}})],1),(_vm.getPermissions.isAccountAdmin)?_c('div',[_c('b-button',{attrs:{\"type\":\"submit\",\"variant\":\"primary\",\"disabled\":!_vm.haveSettingsChanged,\"data-cy\":\"update-button\"}},[_vm._v(\" Update \")]),_c('b-button',{staticClass:\"ml-1\",attrs:{\"type\":\"reset\",\"variant\":\"secondary\",\"disabled\":!_vm.haveSettingsChanged,\"data-cy\":\"reset-button\"}},[_vm._v(\" Reset \")])],1):_vm._e()],1),_c('b-modal',{attrs:{\"size\":\"md\",\"centered\":\"\",\"role\":\"dialog\",\"ok-title\":\"Confirm\",\"header-class\":\"delete-confirm-modal\",\"data-cy\":\"confirmation-modal\",\"static\":\"\"},on:{\"ok\":_vm.confirmUpdateHousekeepingSettings},model:{value:(_vm.isConfirmationModalShown),callback:function ($$v) {_vm.isConfirmationModalShown=$$v},expression:\"isConfirmationModalShown\"}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header\"},[_c('h4',[_c('i',{staticClass:\"fas fa-fw fa-exclamation-triangle mr-2 danger-color\"}),_vm._v(\"Confirmation\")])])]),_c('p',[_vm._v(\" You are about to reduce the retention time this could result in events being deleted from event history! \")]),_c('p',[_vm._v(\" Do you wish to continue? \")])],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue';\r\nimport { Component } from 'vue-property-decorator';\r\nimport { required, integer, minValue, maxValue } from \"vuelidate/lib/validators\";\r\nimport { HousekeepingSettings, OrganizationSettings } from \"@/types/sv-data/OrganizationSettings\";\r\nimport api from \"@/services/api.service\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { UserPermissions } from \"@/store/types\";\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\tnewDaysToKeepEvents: {\r\n\t\t\trequired,\r\n\t\t\tinteger,\r\n\t\t\tminValue: minValue(1),\r\n\t\t\tmaxValue: maxValue(365)\r\n\t\t},\r\n\t\tnewDaysToKeepEventFiles: {\r\n\t\t\trequired,\r\n\t\t\tinteger,\r\n\t\t\tmaxValue: maxValue(365),\r\n\t\t\tvalidateMin: function(val) {\r\n\t\t\t\treturn val <= this.newDaysToKeepEvents;\r\n\t\t\t},\r\n\t\t}\r\n\t}\r\n})\r\nexport default class HousekeepingSettingsForm extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\tprivate organizationSettings: OrganizationSettings = {\r\n\t\thousekeepingSettings: {\r\n\t\t\tdaysToKeepEventFiles: 60,\r\n\t\t\tdaysToKeepEvents: 365\r\n\t\t},\r\n\t\tapiKeySettings: null\r\n\t};\r\n\r\n\tprivate newDaysToKeepEventFiles: number = 60;\r\n\tprivate newDaysToKeepEvents: number = 365;\r\n\tprivate isConfirmationModalShown: boolean = false;\r\n\r\n\tprivate async mounted() {\r\n\t\tthis.organizationSettings = await api.getOrganizationSettings();\r\n\t\tthis.newDaysToKeepEventFiles = this.organizationSettings.housekeepingSettings.daysToKeepEventFiles;\r\n\t\tthis.newDaysToKeepEvents = this.organizationSettings.housekeepingSettings.daysToKeepEvents;\r\n\t}\r\n\r\n\tprivate async confirmUpdateHousekeepingSettings(): Promise {\r\n\t\tlet newHousekeepingSettings: HousekeepingSettings = {\r\n\t\t\tdaysToKeepEvents: this.newDaysToKeepEvents,\r\n\t\t\tdaysToKeepEventFiles: this.newDaysToKeepEventFiles\r\n\t\t};\r\n\t\tawait api.setHousekeepingSettings(newHousekeepingSettings);\r\n\t\tthis.organizationSettings.housekeepingSettings = newHousekeepingSettings;\r\n\t\tthis.$notify({\r\n\t\t\ttype: \"success\",\r\n\t\t\ttitle: \"Retention settings updated\"\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get updateRequiresConfirmation(): boolean {\r\n\t\treturn this.organizationSettings.housekeepingSettings.daysToKeepEvents > this.newDaysToKeepEvents ||\r\n\t\t\tthis.organizationSettings.housekeepingSettings.daysToKeepEventFiles > this.newDaysToKeepEventFiles;\r\n\t}\r\n\r\n\tprivate async resetChanges(): Promise {\r\n\t\tthis.newDaysToKeepEvents = this.organizationSettings.housekeepingSettings.daysToKeepEvents;\r\n\t\tthis.newDaysToKeepEventFiles = this.organizationSettings.housekeepingSettings.daysToKeepEventFiles;\r\n\t\tthis.$v.$reset();\r\n\t}\r\n\r\n\tprivate get haveSettingsChanged(): boolean {\r\n\t\treturn this.organizationSettings.housekeepingSettings.daysToKeepEvents !== this.newDaysToKeepEvents ||\r\n\t\t\tthis.organizationSettings.housekeepingSettings.daysToKeepEventFiles !== this.newDaysToKeepEventFiles;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HousekeepingSettingsForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HousekeepingSettingsForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./HousekeepingSettingsForm.vue?vue&type=template&id=75692c3f\"\nimport script from \"./HousekeepingSettingsForm.vue?vue&type=script&lang=ts\"\nexport * from \"./HousekeepingSettingsForm.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-form',{attrs:{\"data-cy\":\"form\"}},[_c('b-form-group',{attrs:{\"id\":\"enableQuickEnd\"}},[_c('b-form-checkbox',{staticClass:\"mr-2\",attrs:{\"data-cy\":\"quick-end-toggle\"},model:{value:(_vm.newEnable),callback:function ($$v) {_vm.newEnable=$$v},expression:\"newEnable\"}},[_vm._v(\" Allow users to quickly end events \")])],1),_c('b-form-group',{attrs:{\"id\":\"eventOutcomeIDInputGroup\",\"label\":\"Event Outcome Category\",\"label-for\":\"newEventOutcomeID\",\"invalidFeedback\":'The outcome must have no children',\"state\":!this.hasChildren}},[_c('event-outcome-select',{staticClass:\"outcome-select\",attrs:{\"value\":_vm.newEventOutcomeId,\"data-cy\":\"event-outcome-input\"},on:{\"hasChildren\":_vm.onOutcomeChanged},model:{value:(_vm.newEventOutcomeId),callback:function ($$v) {_vm.newEventOutcomeId=$$v},expression:\"newEventOutcomeId\"}})],1),_c('b-form-group',{attrs:{\"id\":\"noteInputGroup\",\"label\":\"Note Text\",\"label-for\":\"newNote\",\"invalidFeedback\":'A note cannot be longer than 5000 characters'}},[_c('b-form-input',{attrs:{\"id\":\"note\",\"type\":\"text\",\"required\":\"\",\"readonly\":!_vm.getPermissions.isAccountAdmin,\"state\":_vm.noteState,\"data-cy\":\"note-input\"},model:{value:(_vm.newNote),callback:function ($$v) {_vm.newNote=$$v},expression:\"newNote\"}})],1),_c('div',[_c('b-button',{attrs:{\"type\":\"button\",\"variant\":\"primary\",\"disabled\":!_vm.haveSettingsChangedOrHasChildren || _vm.isNoteInvalid(),\"data-cy\":\"update-button\"},on:{\"click\":function($event){return _vm.confirmUpdateQuickEndSettings()}}},[_vm._v(\" Update \")]),_c('b-button',{staticClass:\"ml-1\",attrs:{\"type\":\"button\",\"variant\":\"secondary\",\"data-cy\":\"reset-button\"},on:{\"click\":function($event){return _vm.resetChanges()}}},[_vm._v(\" Reset \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vue-treeselect',{ref:\"treeSelect\",attrs:{\"placeholder\":\"Search\",\"append-to-body\":\"\",\"options\":_vm.eventCategoriesTree,\"searchable\":true,\"disableFuzzyMatching\":true,\"auto-load-root-options\":false,\"always-open\":false,\"show-count\":true,\"cacheOptions\":true,\"value\":_vm.value,\"clear-on-select\":true,\"normalizer\":_vm.normalizer},on:{\"input\":_vm.onInputChanged}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { namespace } from \"vuex-class\";\nimport VueTreeselect from \"@riophae/vue-treeselect\";\nimport api from \"@/services/api.service\";\nimport EventCategory from \"@/types/sv-data/events/EventCategory\";\n\nconst EventCategorySetup = namespace(\"eventCategorySetup\");\nconst GenericTableStore = namespace(\"GenericTable\");\n\n@Component({\n\tcomponents: {\n\t\t\"vue-treeselect\": VueTreeselect\n\t}\n})\nexport default class EventOutcomeSelect extends Vue {\n\tprivate eventCategoriesTree: EventCategory[] = [];\n\t@GenericTableStore.Getter getModalRow: any;\n\n\t// Prop required by generic table to pass selected value down\n\t// to this component.\n\t@Prop()\n\tpublic value: number;\n\t\n\tprivate async beforeMount() {\n\t\tthis.eventCategoriesTree = await api.fetchEventOutcomeTree();\n\t}\n\n\tprivate normalizer(e) {\n\t\t// Case for hiding the database ID in case value has been deleted after being selected\n\t\tif (!e.hasOwnProperty(\"eventOutcomeID\")) {\n\t\t\te.id = null;\n\t\t\te.label = \"This outcome may have been deleted or disabled. Please select another.\"\n\t\t} else {\n\t\t\te.id = e.eventOutcomeID;\n\t\t\te.label = e.title;\n\t\t\te.children = e.childOutcomes;\n\t\t}\n\t\treturn e;\n\t}\n\n\tprivate onInputChanged(input: number) {\n\t\tthis.$emit(\"input\", input);\n\t\tthis.$emit(\"hasChildren\", this.hasChildren(input))\n\t}\n\n\tprivate hasChildren(input: number): boolean {\n\t\tlet outcome = this.eventCategoriesTree.firstOrDefault(c => c.eventOutcomeID === input);\n\t\treturn !!outcome && outcome.hasOwnProperty(\"childOutcomes\") && outcome.childOutcomes.length > 0;\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventOutcomeSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventOutcomeSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventOutcomeSelect.vue?vue&type=template&id=5029d7c1\"\nimport script from \"./EventOutcomeSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./EventOutcomeSelect.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport Vue from 'vue';\r\nimport organizationApi from \"@/services/api.organizationSettings.ts\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport { QuickEndSettingsDto } from \"@/types/organization-settings/QuickEndSettings.ts\";\r\nimport Component from \"vue-class-component\";\r\nimport EventOutcomeSelect from \"@/components/form/EventOutcomeSelect.vue\";\r\n\r\n@Component({\r\n\tcomponents:{\r\n\t\t\"event-outcome-select\": EventOutcomeSelect\r\n\t}\r\n})\r\n\r\nexport default class QuickEndSettingsForm extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getUserTenantGroupId: number;\r\n\r\n\tprivate quickEndSettings: QuickEndSettingsDto = {\r\n\t\tgroupId: this.getUserTenantGroupId,\r\n\t\teventOutcomeTitle: \"\",\r\n\t\tvalue: {\r\n\t\t\tenabled: false,\r\n\t\t\tnote: \"\",\r\n\t\t\teventOutcomeId: null\r\n\t\t}};\r\n\r\n\tprivate newEventOutcomeId: number = null;\r\n\tprivate hasChildren: boolean = false;\r\n\tprivate newNote: string = \"\";\r\n\tprivate newEnable: boolean = false;\r\n\r\n\tprivate async beforeMount()\r\n\t{\r\n\t\ttry {\r\n\t\t\tthis.quickEndSettings = await organizationApi.retrieveQuickEndSettings(null, true);\r\n\t\t} catch {\r\n\t\t\tconsole.log(\"Failed to get quick end settings.\");\r\n\t\t\tthis.quickEndSettings = null;\r\n\t\t}\r\n\r\n\t\tif(!this.quickEndSettings) {\r\n\t\t\tthis.newEventOutcomeId = null;\r\n\t\t\tthis.newNote = \"\";\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.newEventOutcomeId = this.quickEndSettings?.value?.eventOutcomeId;\r\n\t\tthis.newNote = this.quickEndSettings?.value?.note;\r\n\t\tthis.newEnable = this.quickEndSettings?.value?.enabled;\r\n\t}\r\n\r\n\tprivate async resetChanges(): Promise {\r\n\r\n\t\ttry {\r\n\t\t\tawait organizationApi.deleteQuickEndSettings();\r\n\t\t\tthis.newNote = \"\";\r\n\t\t\tthis.newEventOutcomeId = null;\r\n\t\t\tthis.newEnable = false;\r\n\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"success\",\r\n\t\t\t\ttitle: \"Success\",\r\n\t\t\t\ttext: \"Quick End settings reset\"\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Error\",\r\n\t\t\t\ttext: \"Failed to reset Quick End settings\"\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async confirmUpdateQuickEndSettings(): Promise {\r\n\t\tlet newQuickEndSettings: QuickEndSettingsDto = {\r\n\t\t\tgroupId: this.getUserTenantGroupId,\r\n\t\t\tvalue: {\r\n\t\t\t\tenabled: this.newEnable,\r\n\t\t\t\tnote: this.newNote,\r\n\t\t\t\teventOutcomeId: this.newEventOutcomeId\r\n\t\t\t},\r\n\t\t\teventOutcomeTitle: this.quickEndSettings?.eventOutcomeTitle\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tthis.quickEndSettings = await organizationApi.createOrUpdateQuickEndSettings(newQuickEndSettings);\r\n\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"success\",\r\n\t\t\t\ttitle: \"Success\",\r\n\t\t\t\ttext: \"Quick End settings updated\"\r\n\t\t\t});\r\n\t\t} catch {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Error\",\r\n\t\t\t\ttext: \"Failed to update Quick End settings\"\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get haveSettingsChangedOrHasChildren(): boolean {\r\n\t\tif(this.hasChildren)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif(this.newEventOutcomeId == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.quickEndSettings?.value?.note !== this.newNote ||\r\n\t\t\tthis.quickEndSettings?.value?.eventOutcomeId !== this.newEventOutcomeId ||\r\n\t\t\tthis.quickEndSettings?.value?.enabled !== this.newEnable;\r\n\t}\r\n\r\n\tprivate onOutcomeChanged(hasChildren: boolean) {\r\n\t\tthis.hasChildren = hasChildren;\r\n\t}\r\n\r\n\tprivate get noteState(){\r\n\t\tif(!this.newNote)\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn this.newNote.length < 5000;\r\n\t}\r\n\r\n\tprivate isNoteInvalid(): boolean\r\n\t{\r\n\t\tif(!this.newNote){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.newNote.length > 5000;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickEndSettings.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickEndSettings.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./QuickEndSettings.vue?vue&type=template&id=200a6932&scoped=true\"\nimport script from \"./QuickEndSettings.vue?vue&type=script&lang=ts\"\nexport * from \"./QuickEndSettings.vue?vue&type=script&lang=ts\"\nimport style0 from \"./QuickEndSettings.vue?vue&type=style&index=0&id=200a6932&prod&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 \"200a6932\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-form',{attrs:{\"data-cy\":\"form\"}},[(_vm.tenantDefaultMaskingValueEnabled)?_c('b-form-group',{attrs:{\"id\":\"defaultMaskValueInputGroup\",\"label\":\"Default Minutes to Mask Response\",\"label-for\":\"newMaskValue\",\"invalidFeedback\":'The Mask value must not be less than ' + this.minIntPrefValeInteger + ' or greater than ' + this.maxMaskDuration + ' (minutes)'}},[_c('b-form-input',{attrs:{\"min\":\"1\",\"id\":\"maskValue\",\"type\":\"number\",\"required\":\"\",\"data-cy\":\"mask-value-input\",\"state\":_vm.maskState,\"formatter\":_vm.tenantSettingsFormatter},model:{value:(_vm.newDefaultMaskValue),callback:function ($$v) {_vm.newDefaultMaskValue=$$v},expression:\"newDefaultMaskValue\"}})],1):_vm._e(),(_vm.tenantDefaultParkingValueEnabled)?_c('b-form-group',{attrs:{\"id\":\"defaultParkValueInputGroup\",\"label\":\"Default Minutes to Park Value\",\"label-for\":\"parkValue\",\"invalidFeedback\":'The Park value must not be less than ' + this.minIntPrefValeInteger + ' or greater than ' + this.maxParkValueInMinutes + 'mins (24 Hours)'}},[_c('b-form-input',{attrs:{\"min\":\"1\",\"id\":\"parkValue\",\"type\":\"number\",\"required\":\"\",\"data-cy\":\"park-value-input\",\"state\":_vm.parkState,\"formatter\":_vm.tenantSettingsFormatter},model:{value:(_vm.newDefaultParkValue),callback:function ($$v) {_vm.newDefaultParkValue=$$v},expression:\"newDefaultParkValue\"}})],1):_vm._e(),(_vm.isAlarmAgeWarningEnabled)?_c('b-form-group',{attrs:{\"id\":\"alarmAgeWarningSecondsInputGroup\",\"label\":\"Alarm Age Warning in Seconds\",\"label-for\":\"alarmAgeWarningSeconds\",\"invalidFeedback\":'Alarm Age Warning value must not be less than ' + this.minIntPrefValeInteger + ' or greater than ' + this.maxIntPrefValeInteger}},[_c('b-form-input',{attrs:{\"id\":\"alarmAgeWarningSeconds\",\"type\":\"number\",\"state\":_vm.alarmAgeWarningState,\"formatter\":_vm.tenantSettingsFormatter,\"data-cy\":\"alarm-age-warning-seconds-input\"},model:{value:(_vm.newAlarmAgeWarningSeconds),callback:function ($$v) {_vm.newAlarmAgeWarningSeconds=$$v},expression:\"newAlarmAgeWarningSeconds\"}})],1):_vm._e(),(_vm.tenantDefaultMaskActionEnabled)?_c('b-form-group',{attrs:{\"id\":\"defaultMaskActionInputGroup\",\"label\":\"Default Mask Action\",\"label-for\":\"maskAction\"}},[_c('v-select-3',{attrs:{\"id\":\"maskAction\",\"required\":\"\",\"data-cy\":\"mask-action-input\",\"label\":\"title\",\"reduce\":function (option) { return option.value; },\"options\":_vm.maskOptions,\"clearable\":false},model:{value:(_vm.newDefaultMaskAction),callback:function ($$v) {_vm.newDefaultMaskAction=$$v},expression:\"newDefaultMaskAction\"}})],1):_vm._e(),(_vm.slaEnabled)?_c('b-form-group',{attrs:{\"id\":\"slaMaxSeconds\",\"label\":\"Maximum SLA Duration in Seconds\",\"label-for\":\"slaMaxValue\",\"invalidFeedback\":'Service Level Agreement duration limit value must not be less than ' + this.minIntPrefValeInteger + ' or greater than ' + this.maxIntPrefValeInteger}},[_c('b-form-input',{attrs:{\"id\":\"slaMaxValue\",\"type\":\"number\",\"state\":_vm.maxSlaValueValidator,\"formatter\":_vm.maxSlaValueFormatter,\"data-cy\":\"max-sla-value-seconds-input\"},model:{value:(_vm.newMaxResponseSlaDuration),callback:function ($$v) {_vm.newMaxResponseSlaDuration=$$v},expression:\"newMaxResponseSlaDuration\"}})],1):_vm._e(),(_vm.slaEnabled)?_c('b-form-group',{attrs:{\"id\":\"responseSlaNotifyAtSecondsRemaining\",\"label\":\"SLA Notification Threshold in Seconds\",\"label-for\":\"slaNotificationSeconds\",\"invalidFeedback\":'SLA Notification Threshold value must not be less than ' + this.minIntPrefValeInteger + ' or greater than ' + this.maxIntPrefValeInteger}},[_c('b-form-input',{attrs:{\"id\":\"slaNotificationThreshold\",\"type\":\"number\",\"state\":_vm.slaNotifyThresholdValidator,\"formatter\":_vm.maxSlaValueFormatter,\"data-cy\":\"sla-notification-seconds-input\"},model:{value:(_vm.newResponseSlaNotifyAtSecondsRemaining),callback:function ($$v) {_vm.newResponseSlaNotifyAtSecondsRemaining=$$v},expression:\"newResponseSlaNotifyAtSecondsRemaining\"}})],1):_vm._e(),_c('div',[_c('b-button',{attrs:{\"type\":\"button\",\"variant\":\"primary\",\"disabled\":!_vm.haveSettingsChanged || !_vm.maskState || !_vm.parkState || !_vm.alarmAgeWarningState || !_vm.maxSlaValueValidator || !_vm.slaNotifyThresholdValidator,\"data-cy\":\"update-button\"},on:{\"click\":function($event){return _vm.confirmUpdateTenantSettings()}}},[_vm._v(\" Update \")]),_c('b-button',{staticClass:\"ml-1\",attrs:{\"type\":\"button\",\"variant\":\"secondary\",\"data-cy\":\"reset-button\",\"disabled\":!_vm.haveSettingsChanged},on:{\"click\":function($event){return _vm.resetChanges()}}},[_vm._v(\" Reset \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from 'vue';\r\nimport organizationApi from \"@/services/api.organizationSettings.ts\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { TenantSystemPrefs } from \"@/store/types\";\r\nimport Component from \"vue-class-component\";\r\nimport EventOutcomeSelect from \"@/components/form/EventOutcomeSelect.vue\";\r\nimport { get } from \"lodash\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport vSelect3 from \"vselect3\";\r\nimport { MaskOption } from '@/store/alarm-masking/types';\r\nimport { numberFormattingMixins } from '@/mixins';\r\n\r\nconst { enforceWholeNumber } = numberFormattingMixins.methods;\r\n\r\n@Component({\r\n\tcomponents:{\r\n\t\t\"event-outcome-select\": EventOutcomeSelect,\r\n\t\t\"v-select-3\": vSelect3,\r\n\t}\r\n})\r\n\r\nexport default class TenantSystemPrefsForm extends Vue {\r\n\t// Getters\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\tpublic get tenantDefaultMaskingValueEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"TenantSettings\", \"DefaultMasking\"], false);\r\n\t}\r\n\r\n\tpublic get tenantDefaultParkingValueEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"TenantSettings\", \"DefaultParking\"], false);\r\n\t}\r\n\r\n\tprivate get isAlarmAgeWarningEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"AlarmAgeWarning\"], false);\r\n\t}\r\n\r\n\tpublic get tenantDefaultMaskActionEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"TenantSettings\", \"ChangeMaskAction\"], false);\r\n\t}\r\n\r\n\tpublic get slaEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SLAs\"], false) ;\r\n\t}\r\n\r\n\tprivate tenantSystemPrefs: TenantSystemPrefs;\r\n\r\n\tprivate tenantSettings: TenantSystemPrefs = {\r\n\t\tdefaultMaskValue: 10,\r\n\t\tdefaultParkValue: 10,\r\n\t\talarmAgeWarningSeconds: null,\r\n\t\tdefaultMaskAction: false,\r\n\t\tmaxResponseSlaDuration: 60,\r\n\t\tresponseSlaNotifyAtSecondsRemaining: 30\r\n\t};\r\n\r\n\tprivate newDefaultMaskValue: number = 10;\r\n\tprivate newDefaultParkValue: number = 10;\r\n\tprivate newAlarmAgeWarningSeconds: number | null = null;\r\n\tprivate newDefaultMaskAction: boolean = false;\r\n\tprivate maxIntPrefValeInteger: number = 2147483647;\r\n\tprivate minIntPrefValeInteger: number = 1;\r\n\tprivate maxMaskDuration: number = 52560;\r\n\tprivate maskOptions: MaskOption[] = [{ title: `Ignore`, value: false }, { title: `AutoHandle`, value: true }];\r\n\tprivate maxParkValueInMinutes: number = 1440; // 24 hours\r\n\r\n\tprivate newMaxResponseSlaDuration: number = 2147483647;\r\n\tprivate newResponseSlaNotifyAtSecondsRemaining: number = 60;\r\n\r\n\tprivate async beforeMount(): Promise {\r\n\t\ttry {\r\n\t\t\tthis.tenantSystemPrefs = await organizationApi.retrieveTenantSystemPrefs(true);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(\"Failed to get tenant system prefs\");\r\n\t\t}\r\n\r\n\t\tif (!this.tenantSettings) {\r\n\t\t\tthis.newDefaultMaskValue = null;\r\n\t\t\tthis.newDefaultParkValue = null;\r\n\t\t\tthis.newAlarmAgeWarningSeconds = null;\r\n\t\t\tthis.newDefaultMaskAction = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.tenantSettings.defaultMaskValue = this.tenantSystemPrefs?.defaultMaskValue;\r\n\t\tthis.tenantSettings.defaultParkValue = this.tenantSystemPrefs?.defaultParkValue;\r\n\t\tthis.tenantSettings.alarmAgeWarningSeconds = this.tenantSystemPrefs?.alarmAgeWarningSeconds;\r\n\t\tthis.tenantSettings.defaultMaskAction = this.tenantSystemPrefs?.defaultMaskAction;\r\n\t\tthis.tenantSettings.maxResponseSlaDuration = this.tenantSystemPrefs?.maxResponseSlaDuration;\r\n\t\tthis.tenantSettings.responseSlaNotifyAtSecondsRemaining = this.tenantSystemPrefs?.responseSlaNotifyAtSecondsRemaining;\r\n\r\n\r\n\t\tthis.newDefaultMaskValue = this.tenantSettings?.defaultMaskValue;\r\n\t\tthis.newDefaultParkValue = this.tenantSettings?.defaultParkValue;\r\n\t\tthis.newAlarmAgeWarningSeconds = this.tenantSettings?.alarmAgeWarningSeconds;\r\n\t\tthis.newDefaultMaskAction = this.tenantSettings?.defaultMaskAction;\r\n\t\tthis.newMaxResponseSlaDuration = this.tenantSettings?.maxResponseSlaDuration;\r\n\t\tthis.newResponseSlaNotifyAtSecondsRemaining = this.tenantSettings?.responseSlaNotifyAtSecondsRemaining;\r\n\t}\r\n\r\n\tprivate get haveSettingsChanged(): boolean {\r\n\t\treturn this.tenantSettings?.defaultMaskValue !== this.newDefaultMaskValue ||\r\n\t\t\tthis.tenantSettings?.defaultParkValue !== this.newDefaultParkValue ||\r\n\t\t\tthis.tenantSettings?.alarmAgeWarningSeconds !== this.newAlarmAgeWarningSeconds ||\r\n\t\t\tthis.tenantSettings?.defaultMaskAction !== this.newDefaultMaskAction ||\r\n\t\t\tthis.tenantSettings?.maxResponseSlaDuration !== this.newMaxResponseSlaDuration ||\r\n\t\t\tthis.tenantSettings?.responseSlaNotifyAtSecondsRemaining !== this.newResponseSlaNotifyAtSecondsRemaining;\r\n\t}\r\n\r\n\tprivate async resetChanges(): Promise {\r\n\t\tthis.newDefaultMaskValue = this.tenantSettings.defaultMaskValue;\r\n\t\tthis.newDefaultParkValue = this.tenantSettings.defaultParkValue;\r\n\t\tthis.newAlarmAgeWarningSeconds = this.tenantSettings.alarmAgeWarningSeconds;\r\n\t\tthis.newDefaultMaskAction = this.tenantSettings.defaultMaskAction;\r\n\t\tthis.newMaxResponseSlaDuration = this.tenantSettings.maxResponseSlaDuration;\r\n\t\tthis.newResponseSlaNotifyAtSecondsRemaining = this.tenantSettings.responseSlaNotifyAtSecondsRemaining;\r\n\t}\r\n\r\n\tprivate get parkState(): boolean{\r\n\t\tif(this.newDefaultParkValue && this.newDefaultParkValue < this.minIntPrefValeInteger){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif(!this.tenantSettings.defaultParkValue)\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn this.newDefaultParkValue <= this.maxParkValueInMinutes;\r\n\t}\r\n\r\n\tprivate get maskState(): boolean{\r\n\t\tif(this.newDefaultMaskValue && this.newDefaultMaskValue < this.minIntPrefValeInteger){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif(!this.tenantSettings.defaultMaskValue)\r\n\t\t{\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn this.newDefaultMaskValue <= this.maxMaskDuration;\r\n\t}\r\n\r\n\tprivate get alarmAgeWarningState(): boolean {\r\n\t\tif (!!this.newAlarmAgeWarningSeconds || this.newAlarmAgeWarningSeconds === 0) {\r\n\t\t\treturn this.newAlarmAgeWarningSeconds >= this.minIntPrefValeInteger && this.newAlarmAgeWarningSeconds <= this.maxIntPrefValeInteger;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n }\r\n\r\n\tprivate get maxSlaValueValidator(): boolean {\r\n\t\tif (!!this.newMaxResponseSlaDuration || this.newMaxResponseSlaDuration === 0) {\r\n\t\t\treturn this.newMaxResponseSlaDuration >= this.minIntPrefValeInteger && this.newMaxResponseSlaDuration <= this.maxIntPrefValeInteger;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n }\r\n\r\n\tprivate get slaNotifyThresholdValidator(): boolean {\r\n\t\tif (!!this.newResponseSlaNotifyAtSecondsRemaining || this.newResponseSlaNotifyAtSecondsRemaining === 0) {\r\n\t\t\treturn this.newResponseSlaNotifyAtSecondsRemaining >= this.minIntPrefValeInteger && this.newResponseSlaNotifyAtSecondsRemaining <= this.maxIntPrefValeInteger;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n }\r\n\r\n\tprivate tenantSettingsFormatter(tenantSettingValue: number): number {\r\n\t\treturn enforceWholeNumber(tenantSettingValue);\r\n\t}\r\n\r\n\tprivate maxSlaValueFormatter(maxSlaValue: number): number {\r\n\t\treturn enforceWholeNumber(maxSlaValue);\r\n\t}\r\n\r\n\tprivate async confirmUpdateTenantSettings(): Promise {\r\n\t\tconst newTenantSettings: TenantSystemPrefs = {\r\n\t\t\tdefaultMaskValue: this.newDefaultMaskValue,\r\n\t\t\tdefaultParkValue: this.newDefaultParkValue,\r\n\t\t\talarmAgeWarningSeconds: this.newAlarmAgeWarningSeconds,\r\n\t\t\tdefaultMaskAction: this.newDefaultMaskAction,\r\n\t\t\tmaxResponseSlaDuration: this.newMaxResponseSlaDuration,\r\n\t\t\tresponseSlaNotifyAtSecondsRemaining: this.newResponseSlaNotifyAtSecondsRemaining,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tawait organizationApi.createOrUpdateTenantSystemPrefs(newTenantSettings);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(\"Failed to add or update tenant system prefs\");\r\n\t\t}\r\n\r\n\t\tthis.tenantSettings.defaultParkValue = newTenantSettings.defaultParkValue;\r\n\t\tthis.tenantSettings.defaultMaskValue = newTenantSettings.defaultMaskValue;\r\n\t\tthis.tenantSettings.alarmAgeWarningSeconds = newTenantSettings.alarmAgeWarningSeconds;\r\n\t\tthis.tenantSettings.defaultMaskAction = newTenantSettings.defaultMaskAction;\r\n\t\tthis.tenantSettings.maxResponseSlaDuration = newTenantSettings.maxResponseSlaDuration;\r\n\t\tthis.tenantSettings.responseSlaNotifyAtSecondsRemaining = newTenantSettings.responseSlaNotifyAtSecondsRemaining;\r\n\r\n\t\tthis.$notify({\r\n\t\t\ttype: \"success\",\r\n\t\t\ttitle: \"Tenant settings updated\"\r\n\t\t});\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantSystemPrefsForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantSystemPrefsForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TenantSystemPrefsForm.vue?vue&type=template&id=2a9aad45\"\nimport script from \"./TenantSystemPrefsForm.vue?vue&type=script&lang=ts\"\nexport * from \"./TenantSystemPrefsForm.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('generic-table',{staticClass:\"tab-flex-content\",attrs:{\"term\":'Event Queue Priority Color',\"columns\":_vm.columns,\"dataList\":_vm.eventQueuePriorityColors,\"modalItems\":_vm.modalItems,\"onAddNew\":_vm.createEventQueuePriorityColor,\"isLoading\":_vm.isLoading,\"tableBodyClass\":null,\"tableClass\":null,\"totalAvailableRows\":this.totalRecords,\"onSave\":_vm.updateEventQueuePriorityColor,\"onDelete\":_vm.deleteEventQueuePriorityColor},on:{\"search-filter-updated\":_vm.updatePaginationParameters},scopedSlots:_vm._u([{key:\"examplePriority\",fn:function(slotProps){return [_c('b-badge',{style:(_vm.getPriorityStyle(slotProps.row)),attrs:{\"pill\":\"\"},model:{value:(slotProps.row.examplePriority),callback:function ($$v) {_vm.$set(slotProps.row, \"examplePriority\", $$v)},expression:\"slotProps.row.examplePriority\"}},[_vm._v(_vm._s(slotProps.row.examplePriority))])]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-badge',{style:(_vm.priorityStyle),attrs:{\"pill\":\"\",\"data-cy\":\"priority-color-modal-example-style\"}},[_vm._v(_vm._s(_vm.examplePriority))]),_c('b-alert',{staticClass:\"invalid-alert mb-0 mt-1\",attrs:{\"data-cy\":\"priority-color-error-message\",\"variant\":\"danger\",\"show\":!_vm.result && !!_vm.errorMessage}},[_vm._v(_vm._s(this.errorMessage))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { EventQueuePriorityColorsExample, EventQueuePriorityColors } from '@/store/eventqueue/types';\r\nimport organizationApi from \"@/services/api.organizationSettings.ts\";\r\nimport { debounce } from \"lodash\";\r\n\r\n@Component({})\r\nexport default class ColorModalItem extends Vue {\r\n @Prop()\r\n private model: EventQueuePriorityColorsExample;\r\n private result: boolean = false;\r\n private errorMessage: string = \"\";\r\n private lowestPriority: number = 0;\r\n\tprivate highestPriority: number = 999999;\r\n private minPriorityNumberConverted: number = 0;\r\n private maxPriorityNumberConverted: number = 0;\r\n private debouncedValidateColorPriority: (() => Promise) | null = null;\r\n\r\n private get examplePriority(): string\r\n {\r\n return this.model.minPriority + \" - \" + this.model.maxPriority;\r\n }\r\n\r\n private get priorityStyle(): string\r\n\t{\r\n\t\treturn `background-color: ${this.model.backgroundColor}; color: ${this.model.foregroundColor};font-size:14px`;\r\n\t}\r\n\r\n private created(): void {\r\n this.debouncedValidateColorPriority = debounce(async () => {\r\n await this.validateColorPriority();\r\n }, 1000);\r\n }\r\n\r\n @Watch(\"model.minPriority\")\r\n @Watch(\"model.maxPriority\")\r\n\tprivate onPriorityChange(): void {\r\n if (this.debouncedValidateColorPriority !== null) {\r\n this.debouncedValidateColorPriority();\r\n }\r\n }\r\n\r\n private async validateColorPriority(): Promise {\r\n this.minPriorityNumberConverted = Number(this.model.minPriority);\r\n this.maxPriorityNumberConverted = Number(this.model.maxPriority);\r\n if (this.model.minPriority == null || this.model.minPriority.toString() == \"\") { // int 0 is valid but no value is invalid\r\n this.result = false;\r\n this.errorMessage = \"Invalid Priority: Minimum priority cannot be empty\";\r\n }\r\n else if (this.model.maxPriority == null || this.model.maxPriority.toString() == \"\") {\r\n this.result = false;\r\n this.errorMessage = \"Invalid Priority: Maximum priority cannot be empty\";\r\n }\r\n else if (this.minPriorityNumberConverted < this.lowestPriority) {\r\n this.result = false;\r\n this.errorMessage = `Invalid Priority: Minimum priority cannot be less than ${this.lowestPriority}`;\r\n }\r\n else if (this.maxPriorityNumberConverted < this.lowestPriority) {\r\n this.result = false;\r\n this.errorMessage = `Invalid Priority: Maximum priority cannot be less than ${this.lowestPriority}`;\r\n }\r\n else if (this.minPriorityNumberConverted > this.highestPriority) {\r\n this.result = false;\r\n this.errorMessage = `Invalid Priority: Minimum priority cannot be greater than ${this.highestPriority}`;\r\n }\r\n else if (this.maxPriorityNumberConverted > this.highestPriority) {\r\n this.result = false;\r\n this.errorMessage = `Invalid Priority: Maximum priority cannot be greater than ${this.highestPriority}`;\r\n }\r\n else if (this.minPriorityNumberConverted > this.maxPriorityNumberConverted){\r\n this.result = false;\r\n this.errorMessage = \"Invalid Priority: Minimum Priority cannot be greater than maximum priority\";\r\n } else {\r\n var fullModel = { eventQueuePriorityColorId: this.model.eventQueuePriorityColorId ?? 0, backgroundColor: this.model.backgroundColor, foregroundColor: this.model.foregroundColor, minPriority: this.minPriorityNumberConverted, maxPriority: this.maxPriorityNumberConverted } as EventQueuePriorityColors\r\n this.result = await organizationApi.validateAlarmQueuePriorityColors(fullModel);\r\n if (!this.result){\r\n this.errorMessage = \"Invalid Priority: Priority range overlaps with existing priority range\";\r\n }\r\n }\r\n this.$emit(\"isValid\", { isValid: this.result });\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorModalItem.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ColorModalItem.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ColorModalItem.vue?vue&type=template&id=3e214b1b&scoped=true\"\nimport script from \"./ColorModalItem.vue?vue&type=script&lang=ts\"\nexport * from \"./ColorModalItem.vue?vue&type=script&lang=ts\"\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 \"3e214b1b\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport { Getter } from \"vuex-class\";\r\nimport GenericTable, { TableHeader } from '../table/generic-table.vue';\r\nimport GenericUpdateModal, { ModalItem } from '../table/generic-update-modal.vue';\r\nimport { EventQueuePriorityColors, EventQueuePriorityColorsExample } from '@/store/eventqueue/types.ts';\r\nimport { PaginatedSearchQueryParams } from '@/store/types.ts'\r\nimport organizationApi from \"@/services/api.organizationSettings.ts\";\r\nimport VSwatches from 'vue-swatches'\r\nimport ColorModalItem from './ColorModalItem.vue';\r\nimport PaginatedSearch from '@/mixins/PaginatedSearch';\r\nimport { namespace } from \"vuex-class\";\r\nimport { numberFormattingMixins } from '@/mixins';\r\n\r\nconst { enforceWholeNumber } = numberFormattingMixins.methods;\r\nconst GenericTableState = namespace(\"GenericTable\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"generic-table\": GenericTable,\r\n\t\t\"generic-update-modal\": GenericUpdateModal,\r\n\t\t\"color-swatch\" : VSwatches,\r\n\t\t\"color-modal-item\" : ColorModalItem\r\n\t}\r\n})\r\nexport default class AlarmQueuePriorityColors extends Mixins(PaginatedSearch){\r\n\t@Getter getUserGroupId: number;\r\n\t@GenericTableState.Getter getModalRow: any;\r\n\tprivate eventQueuePriorityColors: EventQueuePriorityColorsExample[] = [];\r\n\tprivate modalItemMinPriority: number = 0;\r\n\tprivate modalItemMaxPriority: number = 999999;\r\n\tprivate modalItemMaxLength: number = 10;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate totalRecords: number = 0;\r\n\tprivate paginatedSearchQueryParams: PaginatedSearchQueryParams = null;\r\n\r\n\tprivate async beforeMount(): Promise {\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.retrieveEventQueuePriorityColors();\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(\"Failed to get Alarm Queue Priority Colors\");\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async retrieveEventQueuePriorityColors(): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.eventQueuePriorityColors = [];\r\n\t\t\tconst request = this.generateNewPaginatedSearchRequest(this.paginatedSearchQueryParams);\r\n\t\t\tlet eventColorsWithPagination = await organizationApi.retrieveAlarmQueuePriorityColors(request);\r\n\t\t\tthis.totalRecords = eventColorsWithPagination.totalRecords;\r\n\t\t\tthis.eventQueuePriorityColors = eventColorsWithPagination.data.map(item => { return {...item, examplePriority: item.minPriority + \" - \" + item.maxPriority }});\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tconsole.error(\"Unexpected error fetching priority colors: \" + ex);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getPriorityStyle(eventQueuePriorityColor: EventQueuePriorityColors): string\r\n\t{\r\n\t\treturn `background-color: ${eventQueuePriorityColor.backgroundColor}; color: ${eventQueuePriorityColor.foregroundColor};`;\r\n\t}\r\n\r\n\tprivate async createEventQueuePriorityColor(eventQueuePriorityColor: EventQueuePriorityColors): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tawait organizationApi.createAlarmQueuePriorityColor(eventQueuePriorityColor);\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.error(\"Failed to add event queue priority color: \" + ex);\r\n\t\t} finally{\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\r\n\t\tawait this.retrieveEventQueuePriorityColors();\r\n\t}\r\n\r\n\tprivate async updateEventQueuePriorityColor(eventQueuePriorityColor: EventQueuePriorityColors): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tawait organizationApi.updateAlarmQueuePriorityColor(eventQueuePriorityColor);\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.error(\"Failed to update event queue priority color: \" + ex);\r\n\t\t} finally{\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\r\n\t\tawait this.retrieveEventQueuePriorityColors();\r\n\t}\r\n\r\n\tprivate async deleteEventQueuePriorityColor(eventQueuePriorityColor: EventQueuePriorityColors): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tawait organizationApi.deleteAlarmQueuePriorityColor(eventQueuePriorityColor.eventQueuePriorityColorId);\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.error(\"Failed to delete event queue priority color: \" + ex);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\r\n\t\tawait this.retrieveEventQueuePriorityColors();\r\n\t}\r\n\r\n\tpublic columns: TableHeader[] = [\r\n\t\t{\r\n\t\t\ttitle: \"Minimum Priority\",\r\n\t\t\tkey: \"minPriority\",\r\n\t\t\torder: 1,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The minimum priority for a color\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n\t\t\tisTermLabel: true,\r\n\t\t\tsortable: true,\r\n\t\t\tisSortedByDefault: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Maximum Priority\",\r\n\t\t\tkey: \"maxPriority\",\r\n\t\t\torder: 2,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The maximum priority for a color\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n\t\t\tisTermLabel: true,\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Example Priority\",\r\n\t\t\tkey: \"examplePriority\",\r\n\t\t\torder: 3,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"Example of how the priority will be colored\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n\t\t\tisTermLabel: true,\r\n\t\t\tsortable: false,\r\n\t\t\tuseCustomCell: true\r\n\t\t}\r\n\t];\r\n\r\n\tpublic get modalItems (): ModalItem[] {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Minimum Priority\",\r\n\t\t\t\tkey: \"minPriority\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\tmaxLength: this.modalItemMaxLength,\r\n\t\t\t\tmin: this.modalItemMinPriority,\r\n\t\t\t\tmax: this.modalItemMaxPriority,\r\n\t\t\t\trequired: true,\r\n placeholder: \"Enter a minimum priority\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tdefaultValue: \"0\",\r\n\t\t\t\tformatter: (value) => {\r\n\t\t\t\t\tif (value > this.modalItemMaxPriority){\r\n\t\t\t\t\t\tvalue = value.toString().substring(0, 6);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn enforceWholeNumber(value);\r\n\t\t\t\t}\r\n },\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Maximum Priority\",\r\n\t\t\t\tkey: \"maxPriority\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\tmaxLength: this.modalItemMaxLength,\r\n\t\t\t\tmin: this.modalItemMinPriority,\r\n\t\t\t\tmax: this.modalItemMaxPriority,\r\n\t\t\t\trequired: true,\r\n placeholder: \"Enter a maximum priority\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tdefaultValue: \"0\",\r\n\t\t\t\tformatter: (value) => {\r\n\t\t\t\t\tif (value > this.modalItemMaxPriority){\r\n\t\t\t\t\t\tvalue = value.toString().substring(0, 6);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn enforceWholeNumber(value);\r\n\t\t\t\t}\r\n },\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Example Priority\",\r\n\t\t\t\tkey: \"examplePriority\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: ColorModalItem,\r\n\t\t\t\trequired: false,\r\n\t\t\t\treadOnly: true,\r\n },\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Background Color\",\r\n\t\t\t\tkey: \"backgroundColor\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: VSwatches,\r\n\t\t\t\tmaxLength: this.modalItemMaxLength,\r\n\t\t\t\trequired: true,\r\n placeholder: \"Enter the background color\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\t\"show-fallback\": true,\r\n\t\t\t\t\t\"fallback-input-type\":\"color\",\r\n\t\t\t\t\t\"popover-y\":\"top\",\r\n\t\t\t\t\t\"inline\": true,\r\n\t\t\t\t\t\"fallback-input-class\": \"width-100px\"\r\n\t\t\t\t}\r\n },\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Foreground Color\",\r\n\t\t\t\tkey: \"foregroundColor\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: VSwatches,\r\n\t\t\t\tmaxLength: this.modalItemMaxLength,\r\n\t\t\t\trequired: true,\r\n placeholder: \"Enter the foreground color\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\t\"show-fallback\": true,\r\n\t\t\t\t\t\"fallback-input-type\":\"color\",\r\n\t\t\t\t\t\"popover-y\":\"top\",\r\n\t\t\t\t\t\"inline\": true,\r\n\t\t\t\t\t\"fallback-input-class\": \"width-100px\"\r\n\t\t\t\t}\r\n },\r\n ]\r\n }\r\n\r\n\tprivate async updatePaginationParameters(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\tthis.paginatedSearchQueryParams = paginatedSearchQueryParams;\r\n\t\tawait this.retrieveEventQueuePriorityColors();\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueuePriorityColors.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueuePriorityColors.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AlarmQueuePriorityColors.vue?vue&type=template&id=5b588326&scoped=true\"\nimport script from \"./AlarmQueuePriorityColors.vue?vue&type=script&lang=ts\"\nexport * from \"./AlarmQueuePriorityColors.vue?vue&type=script&lang=ts\"\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 \"5b588326\",\n null\n \n)\n\nexport default component.exports","\n import { Component, Vue } from \"vue-property-decorator\";\n import { namespace, Getter, Action } from \"vuex-class\";\n import { get } from \"lodash\";\n import moment from \"moment\";\n import vSelect from \"vue-select\";\n import NavHeader from \"@/components/NavHeader.vue\";\n\timport { FeaturesList, UserPermissions } from \"@/store/types\";\n import { SubscriptionDto } from \"@/store/subscription/types\";\n import SingleSignOnSettings from '@/components/organization-settings/SingleSignOnSettings.vue';\n import { BvTableField } from 'bootstrap-vue';\n\timport HousekeepingSettingsForm from \"@/components/organization-settings/HousekeepingSettingsForm.vue\";\n\timport QuickEndSettingsForm from \"@/components/organization-settings/QuickEndSettings.vue\";\n\timport TenantSystemPrefsForm from \"@/components/organization-settings/TenantSystemPrefsForm.vue\";\n import AlarmQueuePriorityColors from \"@/components/event-queue/AlarmQueuePriorityColors.vue\";\n\n interface Customer {\n id: number;\n name: string;\n email: string;\n }\n\n const Subscription = namespace(\"subscription\");\n\n @Component({\n components: {\n \"nav-header\": NavHeader,\n \"vue-select\": vSelect,\n \"sso-settings\": SingleSignOnSettings,\n\t\t\t\"housekeeping-settings-form\": HousekeepingSettingsForm,\n\t\t\t\"quick-end-settings-form\": QuickEndSettingsForm,\n\t\t\t\"tenant-system-prefs-form\": TenantSystemPrefsForm,\n \"alarm-queue-priority-colors\": AlarmQueuePriorityColors\n }\n })\n export default class SubscriptionDetails extends Vue {\n @Getter getPermissions: UserPermissions;\n @Action loadFeaturesList: any;\n\t\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\t\t@Getter getUserTenantGroupId: number;\n\n @Subscription.Action fetchSubscription: any;\n @Subscription.Action updateSubscription: any;\n @Subscription.State subscription: SubscriptionDto;\n @Subscription.Getter('getSubscriptionType') subscriptionType: string;\n\n private isSubscriptionLoaded = false;\n\n private get subscriptionFeaturesTableFields(): BvTableField[] {\n var fields = [\n {\n key: \"component\",\n label: \"Component\",\n thStyle: { width: '50px'}\n },\n {\n key: \"definition\",\n label: \"Definition\",\n }\n ];\n\n if (this.isPricePerUnitEnabled && !this.isLimitedBillingModeEnabled) {\n fields.push({\n key: \"pricePerUnit\",\n label: \"Price per unit\",\n thStyle: { width: '160px'},\n });\n }\n\n fields.push({\n key: \"usage\",\n label: \"Usage\",\n });\n\n return fields;\n }\n\n private defaultSubscriptionFeaturesTableData = [\n { component: 'Operators', definition: \"The total number of users that have the permission to process alarms\", usage: 0, pricePerUnit: \"\" },\n { component: 'Mobile Officers', definition: \"The total number of users that have the permission to use the mobile application\", usage: 0, pricePerUnit: \"\" },\n { component: 'Cameras', definition: \"The total number of cameras in use\", usage: 0, pricePerUnit: \"\" }\n ];\n private subscriptionFeaturesTableData = [];\n\n private isEditing: boolean = false;\n private subscriptionUpdateRequest = {\n tenantGroupId: 0,\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n }\n\n private isSamlAuthEnabledEnv: boolean = process.env.VUE_APP_AUTHENTICATION_SAML_ENABLED === \"true\";\n\n private get isSubscriptionSettingsShown(): boolean {\n\t\t\treturn (get(this.featuresList, [\"Billing\"], false) && !this.isSuiteEnabled &&\n\t\t\t\t\t(this.getPermissions.isSystemAdmin ||\n\t\t\t\t\tthis.getPermissions.isAccountAdmin ||\n\t\t\t\t\tthis.getPermissions.canViewSubscriptionDetails));\n\t\t}\n\n\t\tprivate get isSamlAuthEnabled(): boolean {\n\t\t\treturn (get(this.featuresList, [\"SAMLAuthentication\"], false)) && this.isSamlAuthEnabledEnv;\n\t\t}\n\n\t\tprivate get isBillingEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Billing\"], false);\n\t\t}\n\n\t\tprivate get isSuiteEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Suite\"], false);\n\t\t}\n\n private get isPricePerUnitEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Billing\", \"PricePerUnit\"], false);\n\t\t}\n\n private get isLimitedBillingModeEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Billing\", \"LimitedMode\"], false);\n\t\t}\n\n private get isShowPortalEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Billing\", \"Portal\"], false);\n\t\t}\n\n\t\tprivate get isQuickEndEnabled() {\n\t\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"QuickEnd\"], false);\n\t\t}\n\n\t\tprivate get isTenantSettingsEnabled() {\n\t\t\treturn ( typeof( get(this.featuresList, [\"TenantSettings\"], false)) == \"object\" );\n\t\t}\n\n private get isAlarmAgeWarningEnabled(): boolean {\n return get(this.featuresList, [\"Alarms\", \"AlarmAgeWarning\"], false);\n }\n\n\t\tprivate get isShowHouseKeepingSettings() : boolean {\n\t\t\tif (this.isSuiteEnabled) {\n\t\t\t\treturn this.getPermissions.isAccountAdmin;\n\t\t\t} else {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n private get isPriorityColorsEnabled(): boolean {\n return get(this.featuresList, [\"Alarms\", \"EventQueue\", \"PriorityColors\"], false);\n }\n\n\t\tprivate get canViewBillingPortal(): boolean{\n if(this.isShowPortalEnabled &&\n this.getPermissions.isAccountAdmin &&\n this.subscription.customer &&\n this.subscription.customer.billingPortalLink &&\n this.subscription.customer.billingPortalLink.url){\n return true;\n }\n\n return false;\n }\n\n\t\tprivate get isUserPermittedToViewPage(): boolean {\n\t\t\treturn (this.getPermissions.isSystemAdmin ||\n\t\t\t\tthis.getPermissions.isAccountAdmin ||\n\t\t\t\tthis.getPermissions.canViewSubscriptionDetails);\n\t\t}\n\n\t\tprivate get isPageEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Billing\"], false)\n || get(this.featuresList, [\"SAMLAuthentication\"], false)\n || get(this.featuresList, [\"Suite\"], false)\n || get(this.featuresList, [\"Alarms\",\"SiteMonitor\",\"QuickEnd\"], false)\n || get(this.featuresList, [\"TenantSettings\"], false)\n || get(this.featuresList, [\"Alarms\",\"AlarmAgeWarning\"], false)\n || get(this.featuresList, [\"Alarms\",\"EventQueue\",\"PriorityColors\"], false);\n\t\t}\n\n public async mounted() {\n await this.loadSubscriptionForTenant();\n\t\t}\n\n private async loadSubscriptionForTenant() {\n this.isSubscriptionLoaded = false;\n try {\n\t\t\t\tawait this.fetchSubscription(this.getUserTenantGroupId);\n\t\t\t\tawait this.updateSubscriptionDetailsTable();\n\t\t\t\tif (this.subscription.customer) {\n\t\t\t\t\tthis.subscriptionUpdateRequest.firstName = this.subscription.customer.firstName;\n\t\t\t\t\tthis.subscriptionUpdateRequest.lastName = this.subscription.customer.lastName;\n\t\t\t\t\tthis.subscriptionUpdateRequest.email = this.subscription.customer.email;\n\t\t\t\t}\n\t\t\t} catch (ex) {\n\t\t\t\tthis.isSubscriptionLoaded = true;\n \tthrow ex;\n\t\t\t}\n\n\t\t\tthis.isSubscriptionLoaded = true;\n }\n\n private async updateSubscriptionDetailsTable() {\n this.subscriptionFeaturesTableData = this.defaultSubscriptionFeaturesTableData.slice();\n this.subscriptionFeaturesTableData[0].usage = this.subscription.limitedSubscription ? this.subscription.operators + ` / ${this.subscription.operatorsLimit}` : this.subscription.operators;\n this.subscriptionFeaturesTableData[1].usage = this.subscription.limitedSubscription ? this.subscription.mobileOfficers + ` / ${this.subscription.mobileOfficersLimit}` : this.subscription.mobileOfficers;\n this.subscriptionFeaturesTableData[2].usage = this.subscription.limitedSubscription ? this.subscription.cameras + ` / ${this.subscription.camerasLimit}` : this.subscription.cameras;\n\n //Don't map the values if the limited billing mode is enabled as we they won't get returned\n if (this.isPricePerUnitEnabled && !this.isLimitedBillingModeEnabled) {\n this.subscriptionFeaturesTableData[0].pricePerUnit = this.subscription.operatorsPricePerUnit;\n this.subscriptionFeaturesTableData[1].pricePerUnit = this.subscription.mobileOfficersPricePerUnit;\n this.subscriptionFeaturesTableData[2].pricePerUnit = this.subscription.camerasPricePerUnit;\n }\n }\n\n private isSubscriptionValid() {\n \treturn this.subscription.state === \"trialing\" || this.subscription.state === \"active\";\n }\n\n private get getSubscriptionDetailsCardTitle() {\n return this.isSubscriptionValid() ? \"Subscription is Valid\" : \"Subscription is invalid\";\n }\n\n private get getSubscriptionExpiryDate() {\n return moment(this.subscription.expirationDate).format('LL LT');\n }\n\n private get getLastUpdatedDate() {\n return moment(this.subscription.updatedAt).format('LL LT');\n }\n\n private async postUpdateSubscription() {\n this.isEditing = false;\n try {\n this.isSubscriptionLoaded = false;\n this.subscriptionUpdateRequest.tenantGroupId = this.getUserTenantGroupId;\n await this.updateSubscription(this.subscriptionUpdateRequest);\n }\n catch {\n this.$notify({\n type: \"error\",\n title: \"Error updating Subscription\",\n text: \"Failed to update Subscription, please try again later or contact support for assistance.\"\n })\n }\n\n await this.updateSubscriptionDetailsTable();\n this.loadFeaturesList();\n this.isSubscriptionLoaded = true;\n }\n\n private openEdit(){\n this.isEditing = true;\n }\n\n }\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscriptionDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscriptionDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SubscriptionDetails.vue?vue&type=template&id=ff66e8d0&scoped=true\"\nimport script from \"./SubscriptionDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./SubscriptionDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SubscriptionDetails.vue?vue&type=style&index=0&id=ff66e8d0&prod&scoped=true&lang=scss\"\nimport style1 from \"./SubscriptionDetails.vue?vue&type=style&index=1&id=ff66e8d0&prod&lang=scss\"\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 \"ff66e8d0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"signup-container\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col dark-text pr-0\"},[_vm._m(0),_c('br'),_c('h1',[_vm._v(\"30-Day Free Trial\")]),_c('br'),_c('div',[_c('h4',[_vm._v(\"Completing this form will create:\")]),_vm._m(1),_c('h4',[_c('a',{staticClass:\"btn-link\",attrs:{\"href\":\"#\",\"title\":\"Sign in with an existing account\"},on:{\"click\":function($event){$event.preventDefault();return _vm.$router.push('login')}}},[_vm._v(\"Already registered? Log in\")])])])]),_c('div',{staticClass:\"col mt-1\",attrs:{\"id\":\"loginBackground\"}},[_c('div',{staticClass:\"m-lg-2\"},[_c('div',{staticClass:\"mt-5 pt-1 mb-4\",staticStyle:{\"text-align\":\"center\"}},[_c('h6',[_vm._v(\"Step \"+_vm._s(_vm.currentStep().number)+\" of \"+_vm._s(_vm.lastStep.number))]),_c('h4',{staticClass:\"mt-3\"},[_vm._v(_vm._s(_vm.currentStep().description))])]),(_vm.currentStep().notes)?_c('h6',[_vm._v(_vm._s(_vm.currentStep().notes))]):_vm._e(),_c('contact-info',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$route.path === '/signup' ||\n _vm.$route.path === '/signup/' ||\n _vm.$route.path.includes('contactinfo')),expression:\"$route.path === '/signup' ||\\n $route.path === '/signup/' ||\\n $route.path.includes('contactinfo')\"}]}),(_vm.$route.path.includes('companyinfo'))?_c('company-info'):_vm._e(),_c('security-info',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$route.path.includes('securityinfo')),expression:\"$route.path.includes('securityinfo')\"}]}),_c('payment-info',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$route.path.includes('paymentinfo')),expression:\"$route.path.includes('paymentinfo')\"}],on:{\"payment-step-complete\":_vm.onPaymentStepComplete}}),_c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":_vm.errorMessage.length > 0,\"dismissible\":\"\"},on:{\"dismissed\":function($event){_vm.errorMessage = ''}}},[_vm._v(_vm._s(_vm.errorMessage))]),(_vm.currentStep().number === _vm.lastStep.number)?_c('b-button',{staticClass:\"w-100\",attrs:{\"type\":\"submit\",\"disabled\":_vm.loggingIn || !_vm.isComplete,\"variant\":\"primary\",\"data-cy\":\"sign-up-button\"},on:{\"click\":function($event){return _vm.Signup()}}},[(!_vm.loggingIn)?_c('span',[_vm._v(\"Sign Up\")]):_vm._e(),(_vm.loggingIn)?_c('span',[_vm._v(\"Setting up your account...\")]):_vm._e(),(_vm.loggingIn)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()]):_vm._e()],1)])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('a',{attrs:{\"href\":\"https://sureviewops.com\",\"title\":\"SureView Operations\"}},[_c('img',{staticClass:\"logo mb-4 col-12\",attrs:{\"src\":\"images/branding/sureview_logo_ops_white.png\"}})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"no-bullet-points\"},[_c('li',[_c('h4',[_c('i',{staticClass:\"fas fa-check green-check\"}),_vm._v(\" A new account for your Organization \")])]),_c('li',[_c('h4',[_c('i',{staticClass:\"fas fa-check green-check\"}),_vm._v(\" Your first Area to monitor \")])]),_c('li',[_c('h4',[_c('i',{staticClass:\"fas fa-check green-check\"}),_vm._v(\" An Admin account for yourself \")])])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-cy\":\"contact-info-step\"}},[_c('div',{staticClass:\"form-group\"},[_vm._m(0),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.contactInfoInput.firstName),expression:\"contactInfoInput.firstName\"}],staticClass:\"form-control\",attrs:{\"id\":\"ci_firstName\",\"type\":\"text\",\"placeholder\":\"John\",\"autocomplete\":\"given-name\"},domProps:{\"value\":(_vm.contactInfoInput.firstName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.contactInfoInput, \"firstName\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_vm._m(1),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.contactInfoInput.lastName),expression:\"contactInfoInput.lastName\"}],staticClass:\"form-control\",attrs:{\"id\":\"ci_lastName\",\"type\":\"text\",\"placeholder\":\"Doe\",\"autocomplete\":\"family-name\"},domProps:{\"value\":(_vm.contactInfoInput.lastName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.contactInfoInput, \"lastName\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group\"},[_vm._m(2),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.contactInfoInput.email),expression:\"contactInfoInput.email\"}],staticClass:\"form-control\",attrs:{\"id\":\"ci_email\",\"type\":\"text\",\"placeholder\":\"john.doe@example.com\",\"autocomplete\":\"email\"},domProps:{\"value\":(_vm.contactInfoInput.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.contactInfoInput, \"email\", $event.target.value)}}}),(_vm.contactInfoInput.email && !this.validateEmail())?_c('span',{staticClass:\"text-danger\",attrs:{\"data-cy\":\"invalid-email-message\"}},[_vm._v(\" Not a valid email \")]):_vm._e()]),_c('div',{staticClass:\"form-group\"},[_vm._m(3),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.contactInfoInput.telephone),expression:\"contactInfoInput.telephone\"}],staticClass:\"form-control\",attrs:{\"id\":\"ci_telephone\",\"type\":\"text\",\"autocomplete\":\"tel\"},domProps:{\"value\":(_vm.contactInfoInput.telephone)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.contactInfoInput, \"telephone\", $event.target.value)}}})]),_c('div',{staticClass:\"form-group container\"},[_vm._m(4),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.contactInfoInput.addressLine1),expression:\"contactInfoInput.addressLine1\"}],staticClass:\"form-control\",attrs:{\"id\":\"ci_addressLine1\",\"type\":\"text\",\"autocomplete\":\"address-line1\",\"data-cy\":\"addressLine1\"},domProps:{\"value\":(_vm.contactInfoInput.addressLine1)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.contactInfoInput, \"addressLine1\", $event.target.value)}}})])]),_c('div',{staticClass:\"form-group container\"},[_vm._m(5),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.contactInfoInput.addressLine2),expression:\"contactInfoInput.addressLine2\"}],staticClass:\"form-control\",attrs:{\"id\":\"ci_addressLine2\",\"type\":\"text\",\"autocomplete\":\"address-line2\",\"data-cy\":\"addressLine2\"},domProps:{\"value\":(_vm.contactInfoInput.addressLine2)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.contactInfoInput, \"addressLine2\", $event.target.value)}}})])]),_c('div',{staticClass:\"form-group container\"},[_vm._m(6),_c('div',{staticClass:\"row\"},[_c('vue-select',{staticClass:\"dark p-0 w-100\",attrs:{\"id\":\"ci_country\",\"options\":_vm.mappedCountryOptions,\"label\":\"title\",\"index\":\"code\",\"reduce\":function (country) { return country.code; },\"clearable\":false,\"selectOnTab\":true},model:{value:(_vm.contactInfoInput.country),callback:function ($$v) {_vm.$set(_vm.contactInfoInput, \"country\", $$v)},expression:\"contactInfoInput.country\"}})],1)]),_c('div',{staticClass:\"form-group container\"},[_vm._m(7),_c('div',{staticClass:\"row\"},[_c('vue-select',{ref:\"state\",staticClass:\"dark p-0 w-100\",attrs:{\"id\":\"ci_state\",\"options\":_vm.stateOptions,\"index\":\"code\",\"label\":\"title\",\"reduce\":function (state) { return state.code; },\"clearable\":false,\"selectOnTab\":true},model:{value:(_vm.contactInfoInput.state),callback:function ($$v) {_vm.$set(_vm.contactInfoInput, \"state\", $$v)},expression:\"contactInfoInput.state\"}})],1)]),_c('div',{staticClass:\"form-group container\"},[_vm._m(8),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.contactInfoInput.city),expression:\"contactInfoInput.city\"}],staticClass:\"form-control\",attrs:{\"id\":\"ci_city\",\"type\":\"text\",\"autocomplete\":\"address-level2\",\"data-cy\":\"city\"},domProps:{\"value\":(_vm.contactInfoInput.city)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.contactInfoInput, \"city\", $event.target.value)}}})])]),_c('div',{staticClass:\"form-group container\"},[_vm._m(9),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.contactInfoInput.zipCode),expression:\"contactInfoInput.zipCode\"}],staticClass:\"form-control\",attrs:{\"id\":\"ci_zipCode\",\"type\":\"text\",\"autocomplete\":\"postal-code\",\"data-cy\":\"zipCode\"},domProps:{\"value\":(_vm.contactInfoInput.zipCode)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.contactInfoInput, \"zipCode\", $event.target.value)}}})])]),_c('div',{staticClass:\"form-group container\"},[_vm._m(10),_c('div',{staticClass:\"row\"},[_c('vue-select',{staticClass:\"dark p-0 w-100\",attrs:{\"id\":\"ci_currency\",\"options\":['GBP','USD','EUR'],\"clearable\":false,\"selectOnTab\":true},model:{value:(_vm.contactInfoInput.currency),callback:function ($$v) {_vm.$set(_vm.contactInfoInput, \"currency\", $$v)},expression:\"contactInfoInput.currency\"}})],1)]),_c('div',{staticClass:\"form-group container\"},[_c('div',{staticClass:\"row row-checkbox\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.isUserAgreement),expression:\"isUserAgreement\"}],attrs:{\"id\":\"eula\",\"type\":\"checkbox\",\"autocomplete\":\"off\"},domProps:{\"checked\":Array.isArray(_vm.isUserAgreement)?_vm._i(_vm.isUserAgreement,null)>-1:(_vm.isUserAgreement)},on:{\"change\":function($event){var $$a=_vm.isUserAgreement,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.isUserAgreement=$$a.concat([$$v]))}else{$$i>-1&&(_vm.isUserAgreement=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.isUserAgreement=$$c}}}}),_vm._m(11)])]),_c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":_vm.errorMessage.length > 0,\"dismissible\":\"\"},on:{\"dismissed\":function($event){_vm.errorMessage = ''}}},[_vm._v(_vm._s(_vm.errorMessage))]),_c('b-button',{staticClass:\"w-100\",attrs:{\"variant\":\"primary\",\"disabled\":!_vm.isFormValid(),\"data-cy\":\"get-started-button\"},on:{\"click\":_vm.submit}},[_vm._v(\"Get Started\")])],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{attrs:{\"for\":\"ci_firstName\"}},[_vm._v(\" First Name \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{attrs:{\"for\":\"ci_lastName\"}},[_vm._v(\" Last Name \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{attrs:{\"for\":\"ci_email\"}},[_vm._v(\" Email Address \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{attrs:{\"for\":\"ci_telephone\"}},[_vm._v(\" Telephone \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"ci_addressLine1\"}},[_vm._v(\" Address Line 1 \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"ci_addressLine2\"}},[_vm._v(\"Address Line 2\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"ci_country\"}},[_vm._v(\" Country \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"ci_state\"}},[_vm._v(\" State \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"ci_city\"}},[_vm._v(\" City \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"ci_zipCode\"}},[_vm._v(\" Zip Code \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"ci_currency\"}},[_vm._v(\" Currency \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"p-0\",attrs:{\"for\":\"eula\"}},[_vm._v(\" I have read and agree to the SureView Systems \"),_c('a',{attrs:{\"href\":\"https://sureviewsystems.com/eula/\",\"target\":\"_blank\"}},[_vm._v(\" End User Licence Agreement \")])])}]\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport { namespace, State, Mutation } from \"vuex-class\";\nimport { ContactInfoModel, SignUpStep } from \"@/store/signup/types\";\nimport api from \"@/services/api.service\";\nimport VueSelect from \"vue-select\";\n\nconst SignUp = namespace(\"signup\");\n\n@Component({\n components: {\n \"vue-select\" : VueSelect\n }\n})\nexport default class ContactInfo extends Vue {\n @SignUp.State countryOptions: [];\n @SignUp.State contactInfo: ContactInfoModel;\n @SignUp.State steps: SignUpStep[];\n @SignUp.Mutation setContactInfo: any;\n @SignUp.Mutation advanceCurrentStep: any;\n\n private contactInfoInput: ContactInfoModel = {\n firstName: \"\",\n lastName: \"\",\n email: \"\",\n telephone: \"\",\n addressLine1: \"\",\n addressLine2: \"\",\n country: \"\",\n state: \"\",\n city: \"\",\n zipCode: \"\",\n currency: \"\"\n };\n\n private isUserAgreement = false;\n\n private errorMessage: string = \"\";\n\n private stateOptions = [];\n\n private mounted() {\n this.contactInfoInput = { ...this.contactInfo };\n }\n private validateEmail() {\n let re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(String(this.contactInfoInput.email).toLowerCase());\n }\n\n private async isValid() {\n this.errorMessage = \"\";\n if (!this.isFormValid()) {\n return false;\n }\n let validationResult = await api.validateContactInfo(this.contactInfoInput);\n if (!validationResult.success) {\n this.errorMessage = validationResult.message;\n }\n\n return validationResult.success;\n }\n\n @Watch(\"contactInfoInput\", { deep: true })\n private onContactInfoChanged() {\n this.setContactInfo({ ...this.contactInfoInput });\n }\n\n private async submit() {\n if (await this.isValid()) {\n this.advanceCurrentStep();\n }\n }\n\n private isFormValid() {\n if (this.contactInfoInput.firstName.length <= 0 ||\n this.contactInfoInput.lastName.length <= 0 ||\n this.contactInfoInput.telephone.length <= 0) {\n return false;\n }\n\n if (!this.validateEmail()) {\n return false;\n }\n\n let isAddressLine1Complete = this.contactInfoInput.addressLine1.length > 0;\n let isCountryComplete = this.contactInfoInput.country.length > 0;\n let isCityComplete = this.contactInfoInput.city.length > 0;\n let isZipCodeComplete = this.contactInfoInput.zipCode.length > 0;\n let isAddressValid = isAddressLine1Complete && isCountryComplete && isCityComplete && isZipCodeComplete;\n if (!isAddressValid) {\n return false;\n }\n\n if(!this.contactInfoInput.currency){\n return false;\n }\n\n return this.isUserAgreement;\n }\n\n private get mappedCountryOptions() {\n return this.countryOptions.map(co => { return { title: co[0], code: co[1] } });\n }\n\n @Watch(\"contactInfoInput.country\")\n private async countryStateOptions(newVal) {\n if (newVal)\n {\n if (newVal !== this.contactInfo.country) {\n this.contactInfoInput.state = \"\";\n }\n\n let countryStateFile = await fetch(`/resources/country_states/${newVal}.json`);\n let countryStateFileContents = await countryStateFile.json();\n this.stateOptions = countryStateFileContents[newVal].map(co => { return { title: co[0], code: co[1] } });\n }\n }\n}\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ContactInfo.vue?vue&type=template&id=176a7f67&scoped=true\"\nimport script from \"./ContactInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./ContactInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ContactInfo.vue?vue&type=style&index=0&id=176a7f67&prod&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 \"176a7f67\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-cy\":\"company-info-step\"}},[_c('div',{staticClass:\"form-group\"},[_vm._m(0),_c('b-form-input',{staticClass:\"form-control\",attrs:{\"id\":\"companyName\",\"type\":\"text\",\"placeholder\":\"Acme Corp\",\"autocomplete\":\"no\",\"formatter\":function (v) { return !v ? v : v.substring(0,200); }},model:{value:(_vm.companyInfoInput.name),callback:function ($$v) {_vm.$set(_vm.companyInfoInput, \"name\", $$v)},expression:\"companyInfoInput.name\"}})],1),_c('div',{staticClass:\"form-group\"},[_c('location-setup',{ref:\"locationSetup\",attrs:{\"value\":_vm.companyInfoInput},on:{\"input\":_vm.locationChanged}})],1),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"timeZone\"}},[_vm._v(\"Time zone\")]),_c('vue-select',{staticClass:\"dark flex-search w-100\",attrs:{\"id\":\"timezone\",\"index\":\"timeZoneID\",\"required\":true,\"options\":_vm.timeZones,\"placeholder\":'Choose time zone',\"label\":\"displayName\",\"reduce\":function (timeZone) { return timeZone.timeZoneID; },\"clearable\":false},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit($event)}},model:{value:(_vm.companyInfoInput.timeZoneId),callback:function ($$v) {_vm.$set(_vm.companyInfoInput, \"timeZoneId\", $$v)},expression:\"companyInfoInput.timeZoneId\"}})],1),_c('b-alert',{attrs:{\"variant\":\"danger\",\"show\":_vm.errorMessage.length > 0,\"dismissible\":\"\"},on:{\"dismissed\":function($event){_vm.errorMessage = ''}}},[_vm._v(_vm._s(_vm.errorMessage))]),(_vm.isCreditCardRequired)?_c('b-button',{staticClass:\"w-100\",attrs:{\"variant\":\"primary\",\"disabled\":!_vm.isValid(),\"data-cy\":\"continue-button\"},on:{\"click\":_vm.submit}},[_vm._v(\" Continue \")]):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{attrs:{\"for\":\"companyName\"}},[_vm._v(\" Organization name \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-form-group',{attrs:{\"label\":\"Address:\"}},[_c('template',{slot:\"label\"},[_c('label',{attrs:{\"for\":\"address-input\"}},[_vm._v(\" Address:\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-input-group',[_c('b-form-input',{staticStyle:{\"height\":\"unset\"},attrs:{\"type\":\"text\",\"id\":\"address-input\",\"placeholder\":\"Enter an address\",\"required\":\"\",\"autocomplete\":\"false\",\"formatter\":function (v) { return !v ? v : v.substring(0,500); },\"disabled\":_vm.readonly},model:{value:(_vm.areaLocation.address),callback:function ($$v) {_vm.$set(_vm.areaLocation, \"address\", $$v)},expression:\"areaLocation.address\"}}),_c('b-input-group-append',[_c('b-button',{attrs:{\"variant\":\"secondary\",\"disabled\":_vm.readonly},on:{\"click\":_vm.setLatLongBasedOnAddress}},[_c('i',{staticClass:\"fa fa-map-marked-alt\"})])],1)],1)],2),_c('b-form-group',{attrs:{\"label\":_vm.isAreaRegionsEnabled ? 'Region and location:' : 'Location'}},[_c('div',{staticClass:\"position-relative h-100 mt-2\"},[_c('div',{staticStyle:{\"height\":\"40vh\"}},[_c('div',{ref:\"mappingContainer\",staticClass:\"fill-container\"}),(!_vm.readonly)?_c('div',{class:_vm.isAreaRegionsEnabled ? 'region-control-panel' : 'brightness-control-panel'},[_c('table',{staticClass:\"w-100 m-1\"},[(_vm.isAreaRegionsEnabled)?[_c('tr',[_c('td',[_vm._v(\" Line Color: \")]),_c('td',[_c('color-swatch',{attrs:{\"swatch-size\":\"25\",\"trigger-style\":{ width: '25px', height: '25px', borderRadius: '5px', border : '2px solid white' },\"show-fallback\":\"\",\"popover-x\":\"left\",\"fallback-input-type\":\"color\"},model:{value:(_vm.areaLocation.mapAreaRegion.borderColor),callback:function ($$v) {_vm.$set(_vm.areaLocation.mapAreaRegion, \"borderColor\", $$v)},expression:\"areaLocation.mapAreaRegion.borderColor\"}})],1)]),_c('tr',[_c('td',[_vm._v(\" Background Color: \")]),_c('td',[_c('color-swatch',{attrs:{\"swatch-size\":\"25\",\"trigger-style\":{ width: '25px', height: '25px', borderRadius: '5px', border : '2px solid white' },\"show-fallback\":\"\",\"popover-x\":\"left\",\"fallback-input-type\":\"color\"},model:{value:(_vm.areaLocation.mapAreaRegion.fillColor),callback:function ($$v) {_vm.$set(_vm.areaLocation.mapAreaRegion, \"fillColor\", $$v)},expression:\"areaLocation.mapAreaRegion.fillColor\"}})],1)])]:_vm._e(),_c('tr',[_c('td',{attrs:{\"colspan\":\"2\",\"align\":\"center\"}},[_c('b-button-group',[(_vm.isAreaRegionsEnabled)?[(!_vm.areaLocation.mapAreaRegion.path)?_c('b-button',{attrs:{\"id\":\"btnNew\",\"title\":\"Create Region\"},on:{\"click\":function($event){_vm.drawRegion = !_vm.drawRegion}}},[_c('i',{staticClass:\"fas fa-plus\"})]):_vm._e(),(_vm.areaLocation.mapAreaRegion.path)?_c('b-button',{class:[_vm.regionPolygon.editable ? 'btn-primary' : 'btn-secondary'],attrs:{\"id\":\"btnEdit\",\"title\":\"Edit Region\"},on:{\"click\":function($event){return _vm.setPolygonEditState(_vm.regionPolygon ? !_vm.regionPolygon.editable: false)}}},[_c('i',{staticClass:\"fas fa-edit\"})]):_vm._e(),(_vm.areaLocation.mapAreaRegion.path)?_c('b-button',{attrs:{\"id\":\"btnDelete\",\"title\":\"Delete Region\"},on:{\"click\":_vm.removeRegion}},[_c('i',{staticClass:\"fas fa-trash\"})]):_vm._e()]:_vm._e(),_c('b-button',{attrs:{\"id\":\"btnMapMode\",\"title\":\"Toggle Map Mode\"},on:{\"click\":function($event){_vm.mapLightMode = !_vm.mapLightMode}}},[_c('i',{staticClass:\"fas\",class:_vm.mapLightMode ? 'fa-sun' : 'fa-moon'})])],2)],1)])],2)]):_vm._e(),_c('div',{staticClass:\"zoom-control\"},[_c('i',{staticClass:\"fas fa-fw fa-2x fa-plus\",staticStyle:{\"padding-top\":\"8px\",\"cursor\":\"pointer\",\"font-weight\":\"400\"},on:{\"click\":function($event){return _vm.zoom(1)}}}),_c('br'),_c('i',{staticClass:\"fas fa-fw fa-2x fa-minus\",staticStyle:{\"cursor\":\"pointer\",\"font-weight\":\"400\"},on:{\"click\":function($event){return _vm.zoom(-1)}}})])])])]),_c('b-form-group',{attrs:{\"invalid-feedback\":\"Please enter a valid latitude and longitude value\",\"state\":(!_vm.isProvidingLocation || _vm.latLongOfAddress === '') ? true : _vm.isLatLongValid}},[_c('template',{slot:\"label\"},[_c('label',{attrs:{\"for\":\"latLong-input\"}},[_vm._v(\" Latitude and Longitude:\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-input-group',[_c('b-form-input',{attrs:{\"type\":\"text\",\"id\":\"latLong-input\",\"placeholder\":\"Enter the latitude and longitude\",\"disabled\":!_vm.isProvidingLocation || _vm.readonly,\"value\":_vm.latLongOfAddress},on:{\"input\":_vm.updateAreaLocation}}),_c('b-input-group-append',[_c('b-button',{attrs:{\"variant\":_vm.isProvidingLocation ? 'primary' : 'secondary',\"disabled\":_vm.readonly},on:{\"click\":function($event){_vm.isProvidingLocation = !_vm.isProvidingLocation}}},[_c('i',{staticClass:\"fa fa-edit\"})])],1)],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Mixins, Watch, Prop } from \"vue-property-decorator\";\r\nimport { isEqual } from \"lodash\";\r\nimport GoogleMap from '@/scripts/mapping/map';\r\nimport { getMapStyle } from '@/scripts/mapping/mapStyle';\r\nimport getScript from '@/services/insertScript.service';\r\nimport { Getter } from 'vuex-class';\r\nimport VSwatches from 'vue-swatches'\r\nimport \"vue-swatches/dist/vue-swatches.css\"\r\nimport MapAreaRegion from '@/types/sv-data/maps/MapAreaRegion';\r\nimport ILatLng from \"@sureview/v2-mapping-saas\";\r\nimport { mapRegionMixins } from '@/mixins'\r\nimport PlaceResult = google.maps.places.PlaceResult;\r\nimport Marker = google.maps.Marker;\r\nimport GPSService, { GeoCodeLocation } from \"@/services/gps.service\";\r\nimport { faMapMarker } from \"@fortawesome/pro-solid-svg-icons\";\r\nimport { convertStringToLatLng } from \"@sureview/v2-mapping-saas\";\r\nimport HideMapMixin from \"@/mixins/HideMapMixin\";\r\n\r\nexport interface AreaLocation {\r\n\taddress: string,\r\n\tmapAreaRegion?: MapAreaRegion,\r\n\tlatLong?: string\r\n}\r\n\r\nconst {\r\n getPolygonOptionsForRegion,\r\n defaultPolygonOptions\r\n} = mapRegionMixins.methods;\r\n\r\nconst geoCoder = new GPSService();\r\n\r\nconst defaultMapAreaRegion = {\r\n\tregionId: -1,\r\n\tgroupId: -1,\r\n\ttenantId: -1,\r\n\tpath: null,\r\n\tborderColor: null,\r\n\tfillColor: null,\r\n};\r\n\r\n@Component({\r\n components: {\r\n \"color-swatch\" : VSwatches\r\n }\r\n})\r\nexport default class AreaLocationSetup extends Mixins(HideMapMixin) {\r\n @Getter getMapType: any;\r\n @Getter getHideLabels: any;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n @Prop()\r\n private value: AreaLocation;\r\n\r\n @Prop({default: false, type:Boolean})\r\n private readonly: Boolean;\r\n\r\n public $refs!: {\r\n mappingContainer: HTMLElement;\r\n }\r\n\r\n private areaLocation: AreaLocation = {\r\n \tmapAreaRegion: defaultMapAreaRegion,\r\n\t\tlatLong: \"\",\r\n\t\taddress: \"\"\r\n\t}\r\n\r\n private drawRegion: boolean = false;\r\n private map: GoogleMap | null = null;\r\n private drawingManager: google.maps.drawing.DrawingManager | null = null;\r\n private regionPolygon: google.maps.Polygon | null = null;\r\n private mapLightMode: boolean = false;\r\n\r\n private isSettingLocationForFirstTime: boolean = false;\r\n\tprivate autocomplete: google.maps.places.Autocomplete | null = null;\r\n private latLongOfAddress: string = \"\";\r\n private locationMarker: Marker;\r\n\tprivate isProvidingLocation: boolean = false;\r\n\tprivate isLatLongValid: boolean = true;\r\n\r\n @Watch('drawRegion')\r\n private drawRegionWatch(): void {\r\n this.drawingManager!.setOptions({\r\n drawingControl: this.drawRegion,\r\n drawingMode: this.drawRegion ?\r\n google.maps.drawing.OverlayType.POLYGON :\r\n null\r\n });\r\n }\r\n\r\n private getPath(polygon: google.maps.Polygon): ILatLng[] {\r\n return polygon.getPath()\r\n .getArray()\r\n .map(point => {\r\n return { lat: point.lat(), lng: point.lng() };\r\n });\r\n }\r\n\r\n private renderRegion(): void {\r\n const polygonOptions = getPolygonOptionsForRegion(this.areaLocation.mapAreaRegion);\r\n this.regionPolygon = new google.maps.Polygon({\r\n map: this.map!.map,\r\n paths: JSON.parse(this.areaLocation.mapAreaRegion.path),\r\n ...polygonOptions\r\n });\r\n\r\n //Add listener when a new point is added\r\n google.maps.event.addListener(this.regionPolygon.getPath(), 'insert_at', () => {\r\n this.areaLocation.mapAreaRegion.path = JSON.stringify(this.getPath(this.regionPolygon));\r\n });\r\n\r\n //Add listener when a point is moved\r\n google.maps.event.addListener(this.regionPolygon.getPath(), 'set_at', () => {\r\n this.areaLocation.mapAreaRegion.path = JSON.stringify(this.getPath(this.regionPolygon));\r\n });\r\n\r\n let bounds = new google.maps.LatLngBounds();\r\n\r\n this.regionPolygon.getPaths().forEach(function(path) {\r\n path.forEach(function(latlng) {\r\n bounds.extend(latlng);\r\n });\r\n });\r\n\r\n this.map.map.fitBounds(bounds);\r\n }\r\n\r\n public async initMap() {\r\n\t\tif (this.isHideMapsEnabled) {\r\n return;\r\n }\r\n\t\t\r\n await getScript(\r\n `https://maps.googleapis.com/maps/api/js?key=`\r\n + `${process.env.VUE_APP_GOOGLE_MAPS_API_KEY}`\r\n + `&libraries=drawing,places,geometry`\r\n ).then(() => {\r\n this.map = new GoogleMap(\r\n this.$refs.mappingContainer,\r\n { lat: 0, lng: 0 }, // start position\r\n 5, // Zoom level\r\n false,\r\n this.getMapType,\r\n getMapStyle(this.getMapType, this.getHideLabels, this.mapLightMode ? 'light' : 'dark'),\r\n );\r\n\r\n //Display the google maps api zoom control as it doesn't like modals, instead we've got our own\r\n this.map.map.setOptions({ scrollwheel: false, zoomControl: false });\r\n\r\n this.drawingManager = new google.maps.drawing.DrawingManager({\r\n drawingMode: null,\r\n drawingControl: this.drawRegion,\r\n drawingControlOptions: {\r\n position: google.maps.ControlPosition.TOP_CENTER,\r\n drawingModes: ['polygon']\r\n },\r\n polygonOptions: defaultPolygonOptions\r\n } as any);\r\n\r\n this.drawingManager.setMap(this.map!.map);\r\n\r\n // on zone add\r\n google.maps.event.addListener(\r\n this.drawingManager,\r\n 'polygoncomplete',\r\n (polygon: google.maps.Polygon) => {\r\n this.drawRegion = false;\r\n this.regionPolygon = polygon;\r\n this.areaLocation.mapAreaRegion.path = JSON.stringify(this.getPath(polygon));\r\n\r\n //Add listener when a new point is added\r\n google.maps.event.addListener(polygon.getPath(), 'insert_at', () => {\r\n this.areaLocation.mapAreaRegion.path = JSON.stringify(this.getPath(polygon));\r\n });\r\n\r\n //Add listener when a point is moved\r\n google.maps.event.addListener(polygon.getPath(), 'set_at', () => {\r\n this.areaLocation.mapAreaRegion.path = JSON.stringify(this.getPath(polygon));\r\n });\r\n }\r\n );\r\n });\r\n }\r\n\r\n private setPolygonEditState(editable: boolean) : void {\r\n if (!this.regionPolygon)\r\n return;\r\n\r\n this.regionPolygon.setEditable(editable);\r\n }\r\n\r\n private async mounted(): Promise {\r\n await this.initMap();\r\n if (this.value) {\r\n\t\t\tthis.areaLocation = {\r\n\t\t\t\taddress: this.value.address,\r\n\t\t\t\tlatLong: this.value.latLong,\r\n\t\t\t\tmapAreaRegion: {...this.value.mapAreaRegion}\r\n\t\t\t}\r\n\t\t}\r\n\r\n if (this.isAreaRegionsEnabled && this.areaLocation.mapAreaRegion) {\r\n\t\t\tif (!this.areaLocation.mapAreaRegion.borderColor) {\r\n\t\t\t\tthis.areaLocation.mapAreaRegion.borderColor = \"#2196f3\";\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.areaLocation.mapAreaRegion.fillColor) {\r\n\t\t\t\tthis.areaLocation.mapAreaRegion.fillColor = \"#2196f3\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.areaLocation.mapAreaRegion.path) {\r\n\t\t\t\tthis.renderRegion();\r\n\t\t\t}\r\n\t\t}\r\n\r\n this.mapLightMode = true;\r\n this.isSettingLocationForFirstTime = this.value?.latLong === null || this.value?.latLong === \"\";\r\n\t\tthis.initializeAutocomplete();\r\n\r\n\t\tif (this.areaLocation.latLong && this.areaLocation.latLong !== \"\") {\r\n\t\t\tconst areaLocationLatLng = convertStringToLatLng(this.areaLocation.latLong);\r\n\t\t\tthis.setAreaLocationPosition(areaLocationLatLng);\r\n\t\t\tthis.map.map.setCenter(areaLocationLatLng);\r\n\t\t}\r\n }\r\n\r\n\tprivate get isAreaRegionsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Areas\", \"Regions\"]);\r\n\t}\r\n\r\n @Watch(\"areaLocation\", { deep: true })\r\n private onAreaLocationUpdated(): void {\r\n if (this.hasChanged) {\r\n \tthis.$emit(\"input\", this.areaLocation);\r\n\t\t}\r\n }\r\n\r\n private get isValid(): boolean {\r\n \treturn this.areaLocation && this.areaLocation.address && this.areaLocation.latLong && this.isLatLongValid;\r\n\t}\r\n\r\n private get hasChanged(): boolean {\r\n \tif (this.areaLocation.latLong !== this.value?.latLong) {\r\n \t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (this.areaLocation.address !== this.value?.address) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!isEqual(this.areaLocation.mapAreaRegion, this.value?.mapAreaRegion) &&\r\n\t\t\t(!isEqual(this.areaLocation.mapAreaRegion, defaultMapAreaRegion) && this.areaLocation.mapAreaRegion.path)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n \treturn false;\r\n\t}\r\n\r\n @Watch(\"areaLocation.mapAreaRegion\", { deep: true })\r\n private regionAreaUpdated(newRegion: MapAreaRegion | null, oldRegion: MapAreaRegion | null): void{\r\n \tif (!newRegion) {\r\n \t\treturn;\r\n\t\t}\r\n\r\n if(!oldRegion || !this.drawingManager)\r\n return;\r\n\r\n let polygonOptions = getPolygonOptionsForRegion(newRegion)\r\n\r\n this.drawingManager.setOptions({\r\n polygonOptions: polygonOptions\r\n });\r\n\r\n if(!this.regionPolygon)\r\n return;\r\n\r\n this.regionPolygon.setOptions({...polygonOptions});\r\n\t\tthis.areaLocation.mapAreaRegion = newRegion;\r\n }\r\n\r\n private removeRegion(): void {\r\n if(this.regionPolygon){\r\n this.regionPolygon.setMap(null);\r\n this.regionPolygon = null;\r\n this.areaLocation.mapAreaRegion.path = null;\r\n }\r\n }\r\n\r\n @Watch(\"mapLightMode\")\r\n private mapModeWatch(): void {\r\n if(!this.map || !this.map.map)\r\n return;\r\n\r\n const mapStyles = getMapStyle(this.getMapType, this.getHideLabels, this.mapLightMode ? \"light\" : \"dark\");\r\n\r\n this.map.map.setOptions({\r\n styles: mapStyles,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP\r\n });\r\n }\r\n\r\n private zoom(value: number): void {\r\n if(!this.map || !this.map.map)\r\n return;\r\n\r\n let zoom = this.map.map.getZoom() + value;\r\n //Google maps api min zoom = 0, maxZoom = 22\r\n if(zoom < 0) zoom = 0;\r\n if(zoom > 22) zoom = 22;\r\n this.map.map.setZoom(zoom);\r\n }\r\n\r\n\tprivate initializeAutocomplete(): void {\r\n\t\tsetTimeout(() => {\r\n\t\t\tconst targetElement = document.getElementById('address-input') as HTMLInputElement;\r\n\t\t\tthis.autocomplete = new google.maps.places.Autocomplete(targetElement);\r\n\t\t\t(this.autocomplete as any).setFields(['address_components', 'geometry', 'name']);\r\n\t\t\tthis.autocomplete!.addListener('place_changed', () => {\r\n\t\t\t\tlet place: PlaceResult = this.autocomplete!.getPlace();\r\n\t\t\t\tthis.areaLocation.address = targetElement.value;\r\n\t\t\t\tif (place.geometry && place.geometry.location) {\r\n\t\t\t\t\tthis.latLongOfAddress = `${place.geometry.location.lat()} ${place.geometry.location.lng()}`;\r\n\t\t\t\t\tthis.areaLocation.latLong = this.latLongOfAddress;\r\n\t\t\t\t\tthis.isLatLongValid = true;\r\n\t\t\t\t\tthis.map.map.setCenter(place.geometry.location);\r\n\t\t\t\t\tthis.map.map.setZoom(11);\r\n\t\t\t\t\tthis.createAreaLocationMarker({ lat: place.geometry.location.lat(), lng: place.geometry.location.lng() });\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t}, 0.5 * this.$config.ANIMATION_DURATION);\r\n\t}\r\n\r\n public async setLatLongBasedOnAddress(retry: boolean = false): Promise {\r\n\t\tif (this.isHideMapsEnabled) {\r\n return;\r\n }\r\n\r\n\t\tif (retry && (!this.autocomplete || !this.map.map || !this.autocomplete.getPlace)) {\r\n\t\t\tsetTimeout(() => { this.setLatLongBasedOnAddress(retry) }, 200);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet place: PlaceResult = this.autocomplete!.getPlace();\r\n\t\tif (place?.geometry?.location) {\r\n\t\t\tthis.latLongOfAddress = `${place.geometry.location.lat()} ${place.geometry.location.lng()}`;\r\n\t\t\tconst latLng = { lat: place.geometry.location.lat(), lng: place.geometry.location.lng() };\r\n\t\t\tthis.setAreaLocationPosition(latLng);\r\n\t\t\tthis.map.map.setCenter(latLng);\r\n\t\t\tthis.map.map.setZoom(11);\r\n\t\t} else {\r\n\t\t\tlet response = await geoCoder.GeoCodeLookup(this.areaLocation.address, process.env.VUE_APP_GOOGLE_MAPS_API_KEY);\r\n\t\t\tif (response?.results) {\r\n\t\t\t\tlet groupLocationDetails = response.results[0];\r\n\t\t\t\tif (groupLocationDetails?.geometry?.location) {\r\n\t\t\t\t\tthis.latLongOfAddress = `${groupLocationDetails.geometry.location.lat} ${groupLocationDetails.geometry.location.lng}`;\r\n\t\t\t\t\tconst latLng = { lat: groupLocationDetails.geometry.location.lat, lng: groupLocationDetails.geometry.location.lng };\r\n\t\t\t\t\tthis.setAreaLocationPosition(latLng);\r\n\t\t\t\t\tthis.map.map.setCenter(latLng);\r\n\t\t\t\t\tthis.map.map.setZoom(11);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\t\ttitle: \"Address location error\",\r\n\t\t\t\t\t\ttext: \"Could not determine location based on provided address\",\r\n\t\t\t\t\t\ttype: \"error\"\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\tprivate setAreaLocationPosition(latLong: GeoCodeLocation) {\r\n\t\tif (!this.locationMarker) {\r\n\t\t\tthis.createAreaLocationMarker(latLong);\r\n\t\t}\r\n\t\tthis.map.map.setOptions({ draggableCursor: \"\" });\r\n\t\tthis.locationMarker.setPosition(latLong);\r\n\t\tthis.areaLocation.latLong = `${latLong.lat} ${latLong.lng}`;\r\n\t}\r\n\r\n\tprivate async updateAreaLocation(latLong: string): Promise {\r\n\t\tif (this.isHideMapsEnabled) {\r\n return;\r\n }\t\t\r\n\r\n\t\tthis.latLongOfAddress = latLong;\r\n \tlet latLng;\r\n \ttry {\r\n\t\t\tlatLng = geoCoder.tryConvertStringToGeoCodeLocation(latLong);\r\n\t\t\tthis.isLatLongValid = true;\r\n\t\t} catch {\r\n \t\tthis.isLatLongValid = false;\r\n \t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setAreaLocationPosition(latLng);\r\n\t\tthis.map.map.setCenter(latLng);\r\n\t\tthis.areaLocation.latLong = `${latLng.lat} ${latLng.lng}`;\r\n\r\n\t\t// wait for the b-input value to update.\r\n\t\tawait this.$nextTick();\r\n\t\t(document.getElementById('latLong-input') as HTMLInputElement).value = this.latLongOfAddress;\r\n\t}\r\n\r\n\r\n\t@Watch(\"isProvidingLocation\")\r\n\tprivate onIsProvidingLocationChanged() {\r\n \tif (!this.isProvidingLocation) {\r\n \t\tif (this.isLatLongValid) {\r\n\t\t\t\tthis.areaLocation.latLong = this.latLongOfAddress;\r\n\t\t\t} else {\r\n \t\t\tthis.latLongOfAddress = this.areaLocation.latLong;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"areaLocation.latLong\")\r\n\tprivate onLatLongUpdated() {\r\n \tthis.latLongOfAddress = this.areaLocation.latLong;\r\n\t}\r\n\r\n\tprivate createAreaLocationMarker(position: GeoCodeLocation): void {\r\n\t\tthis.locationMarker = new google.maps.Marker({\r\n\t\t\tposition: position,\r\n\t\t\tmap: this.map.map,\r\n\t\t\ttitle: 'Area location',\r\n\t\t\ticon: {\r\n\t\t\t\tpath: faMapMarker.icon[4] as string,\r\n\t\t\t\tfillColor: '#2196F3',\r\n\t\t\t\tfillOpacity: 1.0,\r\n\t\t\t\tstrokeColor: '#000000',\r\n\t\t\t\tstrokeWeight: 1,\r\n\t\t\t\tscale: 0.08,\r\n\t\t\t\tlabelOrigin: new google.maps.Point(190, 180),\r\n\t\t\t\tanchor: new google.maps.Point(200, 500)\r\n\t\t\t},\t\t\t\r\n\t\t\tdraggable: !this.readonly,\r\n\t\t\tlabel: {\r\n\t\t\t\tfontFamily: \"'Font Awesome 5 Pro'\",\r\n\t\t\t\ttext: \"\\uf015\",\r\n\t\t\t\tfontWeight: '900',\r\n\t\t\t\tfontSize: \"15pt\",\r\n\t\t\t\tcolor: \"#ffffff\"\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.locationMarker.addListener(\"dragend\", (event: google.maps.MouseEvent) => {\r\n\t\t\tthis.areaLocation.latLong = `${event.latLng.lat()} ${event.latLng.lng()}`\r\n\t\t});\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaLocationSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaLocationSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaLocationSetup.vue?vue&type=template&id=25e990a5&scoped=true\"\nimport script from \"./AreaLocationSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaLocationSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaLocationSetup.vue?vue&type=style&index=0&id=25e990a5&prod&scoped=true&lang=css\"\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 \"25e990a5\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport { namespace } from \"vuex-class\";\nimport { TimeZone } from \"../../store/types\";\nimport vSelect from \"vue-select\";\nimport { CompanyInfoModel, ContactInfoModel } from \"@/store/signup/types\";\nimport api from \"@/services/api.service\";\nimport { Customer } from \"@/store/subscription/types\";\nimport AreaLocationSetup from \"@/views/AreaSetup/AreaLocationSetup.vue\";\nimport { AreaLocation } from \"@/views/AreaSetup/AreaLocationSetup.vue\";\n\nconst SignUp = namespace(\"signup\");\n\n@Component({\n components: {\n \"vue-select\": vSelect,\n \"location-setup\": AreaLocationSetup\n }\n})\nexport default class CompanyInfo extends Vue {\n @SignUp.State companyInfo: CompanyInfoModel;\n @SignUp.State contactInfo: ContactInfoModel;\n @SignUp.State timeZones: TimeZone[];\n @SignUp.State isCreditCardRequired: boolean;\n @SignUp.Mutation setCompanyInfo: any;\n @SignUp.Mutation advanceCurrentStep: any;\n @SignUp.Mutation setRegistrationComplete: any;\n @SignUp.Mutation setCustomerId: any;\n\n public $refs!: {\n locationSetup: AreaLocationSetup;\n }\n\n private companyInfoInput: CompanyInfoModel = {\n name: \"\",\n address: \"\",\n latLong: \"\",\n timeZoneId: 37\n };\n\n private async mounted() {\n // if company info has already been provided\n if (this.companyInfo.name !== \"\") {\n this.companyInfoInput = { ...this.companyInfo };\n }\n else\n {\n this.companyInfoInput.address = `${this.contactInfo.addressLine1 ? this.contactInfo.addressLine1 + ', ' : ''}` +\n `${this.contactInfo.addressLine2 ? this.contactInfo.addressLine2 + ', ' : ''}` +\n `${this.contactInfo.city ? this.contactInfo.city + ', ' : ''}` +\n `${this.contactInfo.state ? this.contactInfo.state + ', ' : ''}` +\n `${this.contactInfo.zipCode ? this.contactInfo.zipCode : ''}`;\n\n this.companyInfoInput.address = this.companyInfoInput.address.trimEnd();\n if (this.companyInfoInput.address.charAt(this.companyInfoInput.address.length - 1) === ',') {\n this.companyInfoInput.address = this.companyInfoInput.address.slice(0, -1);\n }\n }\n\n //Give time for the location setup control to mount\n await this.$nextTick();\n if (this.companyInfoInput.address && !this.companyInfoInput.latLong && this.$refs.locationSetup) {\n this.$refs.locationSetup.setLatLongBasedOnAddress(true);\n }\n }\n\n private errorMessage: string = \"\";\n\n @Watch(\"companyInfoInput\", { deep: true })\n private onCompanyInfoChange() {\n this.setCompanyInfo({ ...this.companyInfoInput });\n\n if (!this.isCreditCardRequired) {\n this.setRegistrationComplete(this.isValid());\n }\n }\n\n private isValid() {\n if (!this.companyInfoInput.name || !this.companyInfoInput.address || !this.companyInfo.latLong)\n {\n return false;\n }\n\n return true;\n }\n\n private async submit() {\n if (!this.isValid()) {\n return;\n }\n\n let customer = await this.createCustomer();\n if (customer.hasSubscription) {\n this.errorMessage = \"An account already exists with this email address.\"\n } else {\n this.errorMessage = \"\";\n this.advanceCurrentStep();\n }\n }\n\n private async createCustomer() {\n let customerDetails: Customer = {\n firstName: this.contactInfo.firstName,\n lastName: this.contactInfo.lastName,\n email: this.contactInfo.email,\n telephone: this.contactInfo.telephone,\n companyName: this.companyInfoInput.name,\n address1: this.contactInfo.addressLine1,\n address2: this.contactInfo.addressLine2,\n country: this.contactInfo.country,\n state: this.contactInfo.state,\n city: this.contactInfo.city,\n zipCode: this.contactInfo.zipCode,\n billingPortalLink: {\n expiresAt: new Date(),\n url: \"\"\n },\n hasSubscription: false,\n id: -1\n }\n\n let newCustomer = await api.putCustomer(customerDetails);\n\n this.setCustomerId(newCustomer.id);\n\n return newCustomer;\n }\n\n private locationChanged(location: AreaLocation | null): void {\n if (!location) {\n this.companyInfoInput.address = null;\n this.companyInfoInput.latLong = null;\n return;\n }\n this.companyInfoInput.address = location.address;\n this.companyInfoInput.latLong = location.latLong;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompanyInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompanyInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CompanyInfo.vue?vue&type=template&id=a05480f2&scoped=true\"\nimport script from \"./CompanyInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./CompanyInfo.vue?vue&type=script&lang=ts\"\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 \"a05480f2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-cy\":\"security-info-step\"}},[_c('div',{staticClass:\"form-group password-control\"},[_c('label',{attrs:{\"for\":\"password\"}},[_vm._v(\"Password\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.securityInfoInput.password),expression:\"securityInfoInput.password\"}],staticClass:\"form-control\",attrs:{\"id\":\"password\",\"type\":\"password\",\"autocomplete\":\"new-password\"},domProps:{\"value\":(_vm.securityInfoInput.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.securityInfoInput, \"password\", $event.target.value)}}}),(_vm.securityInfoInput.password.length > 0)?_c('div',{staticClass:\"password-strength\",class:_vm.passwordStrength},[_vm._v(_vm._s(_vm.passwordStrength))]):_vm._e(),(_vm.passwordStrength === 'Weak')?_c('span',{staticClass:\"text-danger\",attrs:{\"data-cy\":\"weak-password-error\"}},[_vm._v(\" Password is not strong enough. \")]):_vm._e()]),_c('div',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"confirmPassword\"}},[_vm._v(\"Confirm Password\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.securityInfoInput.passwordConfirmation),expression:\"securityInfoInput.passwordConfirmation\"}],staticClass:\"form-control\",attrs:{\"id\":\"confirmPassword\",\"type\":\"password\",\"autocomplete\":\"new-password\"},domProps:{\"value\":(_vm.securityInfoInput.passwordConfirmation)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit($event)},\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.securityInfoInput, \"passwordConfirmation\", $event.target.value)}}}),(_vm.securityInfoInput.passwordConfirmation.length > 0 &&\n _vm.securityInfoInput.password !== _vm.securityInfoInput.passwordConfirmation)?_c('span',{staticClass:\"text-danger\",attrs:{\"data-cy\":\"password-mismatch-error\"}},[_vm._v(\" Passwords do not match. \")]):_vm._e()]),_c('b-button',{staticClass:\"w-100\",attrs:{\"variant\":\"primary\",\"disabled\":!_vm.isValid(),\"data-cy\":\"continue-button\"},on:{\"click\":_vm.submit}},[_vm._v(\"Continue\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport { passwordValidationMixins } from \"@/mixins\";\nimport { namespace } from \"vuex-class\";\nimport { SecurityInfoModel } from \"@/store/signup/types\";\n\nconst { getPasswordStrength } = passwordValidationMixins.methods;\n\nconst SignUp = namespace(\"signup\");\n\n@Component({})\nexport default class SecurityInfo extends Vue {\n\n @SignUp.Mutation advanceCurrentStep: any;\n @SignUp.Mutation setSecurityInfo: any;\n @SignUp.State securityInfo;\n\n private securityInfoInput: SecurityInfoModel = {\n password: \"\",\n passwordConfirmation: \"\"\n }\n\n private passwordStrength = \"\";\n\n private mounted() {\n this.securityInfoInput = { ... this.securityInfo };\n }\n\n @Watch(\"securityInfoInput.password\")\n private updatePasswordStrength() {\n this.passwordStrength = getPasswordStrength(this.securityInfoInput.password);\n }\n\n private isValid() {\n if (\n (this.securityInfoInput.password.length === 0 || this.securityInfoInput.passwordConfirmation.length === 0) ||\n (this.securityInfoInput.passwordConfirmation != this.securityInfoInput.password)\n ) {\n return false;\n }\n\n if (this.passwordStrength === \"Weak\") {\n return false;\n }\n\n return true;\n }\n\n private submit() {\n if (this.isValid()) {\n this.setSecurityInfo({ ...this.securityInfoInput });\n this.advanceCurrentStep();\n }\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecurityInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SecurityInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SecurityInfo.vue?vue&type=template&id=6338eff3&scoped=true\"\nimport script from \"./SecurityInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./SecurityInfo.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SecurityInfo.vue?vue&type=style&index=0&id=6338eff3&prod&scoped=true&lang=scss\"\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 \"6338eff3\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-cy\":\"payment-info-step\"}},[_c('div',{staticClass:\"form-group container\"},[_c('h5',{staticClass:\"row\"},[_vm._v(\"Card Details\")]),_c('div',{staticClass:\"form-group\"},[_vm._m(0),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.cardInfo.firstName),expression:\"paymentInfoModel.cardInfo.firstName\"}],staticClass:\"form-control\",attrs:{\"id\":\"firstName\",\"type\":\"text\",\"autocomplete\":\"no\",\"data-cy\":\"firstName\"},domProps:{\"value\":(_vm.paymentInfoModel.cardInfo.firstName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.cardInfo, \"firstName\", $event.target.value)}}})])]),_c('div',{staticClass:\"form-group\"},[_vm._m(1),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.cardInfo.lastName),expression:\"paymentInfoModel.cardInfo.lastName\"}],staticClass:\"form-control\",attrs:{\"id\":\"lastName\",\"type\":\"text\",\"autocomplete\":\"no\",\"data-cy\":\"lastName\"},domProps:{\"value\":(_vm.paymentInfoModel.cardInfo.lastName)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.cardInfo, \"lastName\", $event.target.value)}}})])]),_vm._m(2),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.cardInfo.cardNumber.part1),expression:\"paymentInfoModel.cardInfo.cardNumber.part1\"}],staticClass:\"form-control col-2 text-center mr-1\",attrs:{\"id\":\"ccNumber\",\"type\":\"text\",\"autocomplete\":\"no\",\"maxlength\":\"4\",\"data-cy\":\"cc1\"},domProps:{\"value\":(_vm.paymentInfoModel.cardInfo.cardNumber.part1)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.cardInfo.cardNumber, \"part1\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.cardInfo.cardNumber.part2),expression:\"paymentInfoModel.cardInfo.cardNumber.part2\"}],ref:\"ccNumP2\",staticClass:\"form-control col-2 text-center mr-1\",attrs:{\"type\":\"text\",\"autocomplete\":\"no\",\"maxlength\":\"4\",\"data-cy\":\"cc2\"},domProps:{\"value\":(_vm.paymentInfoModel.cardInfo.cardNumber.part2)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.cardInfo.cardNumber, \"part2\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.cardInfo.cardNumber.part3),expression:\"paymentInfoModel.cardInfo.cardNumber.part3\"}],ref:\"ccNumP3\",staticClass:\"form-control col-2 text-center mr-1\",attrs:{\"type\":\"text\",\"autocomplete\":\"no\",\"maxlength\":\"4\",\"data-cy\":\"cc3\"},domProps:{\"value\":(_vm.paymentInfoModel.cardInfo.cardNumber.part3)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.cardInfo.cardNumber, \"part3\", $event.target.value)}}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.cardInfo.cardNumber.part4),expression:\"paymentInfoModel.cardInfo.cardNumber.part4\"}],ref:\"ccNumP4\",staticClass:\"form-control col-2 text-center mr-1\",attrs:{\"type\":\"text\",\"autocomplete\":\"no\",\"maxlength\":\"4\",\"data-cy\":\"cc4\"},domProps:{\"value\":(_vm.paymentInfoModel.cardInfo.cardNumber.part4)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.cardInfo.cardNumber, \"part4\", $event.target.value)}}})])]),_c('div',{staticClass:\"form-group container\"},[_vm._m(3),_c('div',{staticClass:\"row\"},[_c('vue-select',{ref:\"expMonth\",staticClass:\"dark col-3 p-0\",attrs:{\"id\":\"expMonth\",\"options\":[1,2,3,4,5,6,7,8,9,10,11,12],\"clearable\":false,\"selectOnTab\":true},model:{value:(_vm.paymentInfoModel.cardInfo.expirationMonth),callback:function ($$v) {_vm.$set(_vm.paymentInfoModel.cardInfo, \"expirationMonth\", $$v)},expression:\"paymentInfoModel.cardInfo.expirationMonth\"}}),_c('div',{staticClass:\"col-1\"}),_c('vue-select',{staticClass:\"dark col-3 p-0\",attrs:{\"id\":\"expYear\",\"options\":_vm.yearOptions,\"clearable\":false,\"selectOnTab\":true},model:{value:(_vm.paymentInfoModel.cardInfo.expirationYear),callback:function ($$v) {_vm.$set(_vm.paymentInfoModel.cardInfo, \"expirationYear\", $$v)},expression:\"paymentInfoModel.cardInfo.expirationYear\"}}),_c('div',{staticClass:\"col-1\"}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.cardInfo.cvc),expression:\"paymentInfoModel.cardInfo.cvc\"}],staticClass:\"form-control col-2 text-center\",attrs:{\"id\":\"cvc\",\"type\":\"text\",\"maxlength\":\"4\",\"autocomplete\":\"no\",\"data-cy\":\"cvc\"},domProps:{\"value\":(_vm.paymentInfoModel.cardInfo.cvc)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.cardInfo, \"cvc\", $event.target.value)}}})],1)]),_c('hr'),_c('hr'),_c('div',{staticClass:\"form-group container\"},[_c('h5',{staticClass:\"row\"},[_vm._v(\"Billing Address\")]),_c('b-form-checkbox',{staticClass:\"row pb-2\",attrs:{\"id\":\"billingAddressSameAsContactAddress\"},model:{value:(_vm.isBillingAddressSameAsContactAddress),callback:function ($$v) {_vm.isBillingAddressSameAsContactAddress=$$v},expression:\"isBillingAddressSameAsContactAddress\"}},[_vm._v(\" Billing address is same as contact address? \")]),_vm._m(4),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.billingAddress.addressLine1),expression:\"paymentInfoModel.billingAddress.addressLine1\"}],staticClass:\"form-control\",attrs:{\"id\":\"addressLine1\",\"type\":\"text\",\"autocomplete\":\"no\",\"data-cy\":\"addressLine1\"},domProps:{\"value\":(_vm.paymentInfoModel.billingAddress.addressLine1)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.billingAddress, \"addressLine1\", $event.target.value)}}})])],1),_c('div',{staticClass:\"form-group container\"},[_vm._m(5),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.billingAddress.addressLine2),expression:\"paymentInfoModel.billingAddress.addressLine2\"}],staticClass:\"form-control\",attrs:{\"id\":\"addressLine2\",\"type\":\"text\",\"autocomplete\":\"no\",\"data-cy\":\"addressLine2\"},domProps:{\"value\":(_vm.paymentInfoModel.billingAddress.addressLine2)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.billingAddress, \"addressLine2\", $event.target.value)}}})])]),_c('div',{staticClass:\"form-group container\"},[_vm._m(6),_c('div',{staticClass:\"row\"},[_c('vue-select',{staticClass:\"dark p-0 w-100\",attrs:{\"id\":\"country\",\"options\":_vm.mappedCountryOptions,\"label\":\"title\",\"index\":\"code\",\"reduce\":function (country) { return country.code; },\"clearable\":false,\"selectOnTab\":true},model:{value:(_vm.paymentInfoModel.billingAddress.country),callback:function ($$v) {_vm.$set(_vm.paymentInfoModel.billingAddress, \"country\", $$v)},expression:\"paymentInfoModel.billingAddress.country\"}})],1)]),_c('div',{staticClass:\"form-group container\"},[_vm._m(7),_c('div',{staticClass:\"row\"},[_c('vue-select',{ref:\"state\",staticClass:\"dark p-0 w-100\",attrs:{\"id\":\"state\",\"options\":_vm.stateOptions,\"index\":\"code\",\"label\":\"title\",\"reduce\":function (state) { return state.code; },\"clearable\":false,\"selectOnTab\":true},model:{value:(_vm.paymentInfoModel.billingAddress.state),callback:function ($$v) {_vm.$set(_vm.paymentInfoModel.billingAddress, \"state\", $$v)},expression:\"paymentInfoModel.billingAddress.state\"}})],1)]),_c('div',{staticClass:\"form-group container\"},[_vm._m(8),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.billingAddress.city),expression:\"paymentInfoModel.billingAddress.city\"}],staticClass:\"form-control\",attrs:{\"id\":\"city\",\"type\":\"text\",\"autocomplete\":\"no\",\"data-cy\":\"city\"},domProps:{\"value\":(_vm.paymentInfoModel.billingAddress.city)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.billingAddress, \"city\", $event.target.value)}}})])]),_c('div',{staticClass:\"form-group container\"},[_vm._m(9),_c('div',{staticClass:\"row\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.paymentInfoModel.billingAddress.zipCode),expression:\"paymentInfoModel.billingAddress.zipCode\"}],staticClass:\"form-control\",attrs:{\"id\":\"zipCode\",\"type\":\"text\",\"autocomplete\":\"no\",\"data-cy\":\"zipCode\"},domProps:{\"value\":(_vm.paymentInfoModel.billingAddress.zipCode)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.paymentInfoModel.billingAddress, \"zipCode\", $event.target.value)}}})])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"firstName\"}},[_vm._v(\" First Name on Card \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"lastName\"}},[_vm._v(\" Last Name on Card \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"ccNumber\"}},[_vm._v(\" Credit card number \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"col-4 pl-0\",attrs:{\"for\":\"expMonth\"}},[_vm._v(\" Expiration month \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('label',{staticClass:\"col-4 pl-0\",attrs:{\"for\":\"expYear\"}},[_vm._v(\" Expiration year \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('label',{staticClass:\"col-4 pl-0\",attrs:{\"for\":\"cvc\"}},[_vm._v(\" CVC \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"addressLine1\"}},[_vm._v(\" Address Line 1 \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"addressLine2\"}},[_vm._v(\"Address Line 2\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"country\"}},[_vm._v(\" Country \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"state\"}},[_vm._v(\" State \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"city\"}},[_vm._v(\" City \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"p-0\",attrs:{\"for\":\"zipCode\"}},[_vm._v(\" Zip Code \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])])}]\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\nimport { ContactInfoModel, PaymentInfoModel } from \"@/store/signup/types\";\nimport { namespace } from \"vuex-class\";\nimport VueSelect from \"vue-select\";\n\nconst SignUp = namespace(\"signup\");\n\n@Component({\n components: {\n \"vue-select\" : VueSelect\n }\n})\nexport default class PaymentInfo extends Vue {\n @SignUp.State countryOptions: [];\n @SignUp.State contactInfo: ContactInfoModel;\n @SignUp.Mutation setRegistrationComplete;\n\n private paymentInfoModel: PaymentInfoModel = {\n billingAddress: {\n addressLine1: \"\",\n addressLine2: \"\",\n country: \"\",\n state: \"\",\n city: \"\",\n zipCode: \"\"\n },\n cardInfo: {\n firstName: \"\",\n lastName: \"\",\n cardNumber: {\n part1: \"\",\n part2: \"\",\n part3: \"\",\n part4: \"\"\n },\n expirationMonth: undefined,\n expirationYear: undefined,\n cvc: \"\"\n }\n };\n\n private stateOptions = [];\n\n private isBillingAddressSameAsContactAddress: boolean = false;\n\n private mounted() {\n this.setRegistrationComplete(false);\n }\n\n @Watch(\"paymentInfoModel.cardInfo.cardNumber.part1\")\n private cardNumberPart1Changed(newVal, oldVal) {\n if (oldVal.length !== 4 && newVal.length === 4) {\n (this.$refs.ccNumP2 as HTMLElement).focus();\n }\n }\n\n @Watch(\"paymentInfoModel.cardInfo.cardNumber.part2\")\n private cardNumberPart2Changed(newVal, oldVal) {\n if (oldVal.length !== 4 && newVal.length === 4) {\n (this.$refs.ccNumP3 as HTMLElement).focus();\n }\n }\n\n @Watch(\"paymentInfoModel.cardInfo.cardNumber.part3\")\n private cardNumberPart3Changed(newVal, oldVal) {\n if (oldVal.length !== 4 && newVal.length === 4) {\n (this.$refs.ccNumP4 as HTMLElement).focus();\n }\n }\n private get yearOptions() {\n let yearOptions = [];\n let currentYear = new Date().getFullYear();\n\n yearOptions.push(currentYear);\n\n for (let i = currentYear + 1; i < currentYear + 20; i++) {\n yearOptions.push(i);\n }\n\n return yearOptions;\n }\n\n private isCardExpiryInTheFuture() {\n let currentDate = new Date();\n let currentYear = currentDate.getFullYear();\n let currentMonth = currentDate.getMonth() + 1;\n if (this.paymentInfoModel.cardInfo.expirationYear > currentYear) {\n return true;\n }\n\n if (this.paymentInfoModel.cardInfo.expirationYear == currentYear && this.paymentInfoModel.cardInfo.expirationMonth >= currentMonth) {\n return true;\n }\n\n return false;\n }\n\n @Watch(\"paymentInfoModel\", { deep: true })\n private onPaymentInfoChanged() {\n let isCardNumberComplete = this.paymentInfoModel.cardInfo.cardNumber.part1.length == 4 &&\n this.paymentInfoModel.cardInfo.cardNumber.part2.length == 4 &&\n this.paymentInfoModel.cardInfo.cardNumber.part3.length == 4 &&\n this.paymentInfoModel.cardInfo.cardNumber.part4.length >= 3\n\n let isCvcComplete = this.paymentInfoModel.cardInfo.cvc.length >= 3;\n let isFirstNameComplete = this.paymentInfoModel.cardInfo.firstName.length > 0;\n let isLastNameComplete = this.paymentInfoModel.cardInfo.lastName.length > 0;\n\n let isCardValid = isCardNumberComplete && isFirstNameComplete && isLastNameComplete && this.isCardExpiryInTheFuture() && isCvcComplete;\n\n let isAddressLine1Complete = this.paymentInfoModel.billingAddress.addressLine1.length > 0;\n let isCountryComplete = this.paymentInfoModel.billingAddress.country.length > 0;\n let isCityComplete = this.paymentInfoModel.billingAddress.city.length > 0;\n let isZipCodeComplete = this.paymentInfoModel.billingAddress.zipCode.length > 0;\n\n let isBillingAddressValid = isAddressLine1Complete && isCountryComplete && isCityComplete && isZipCodeComplete;\n\n let isValid = isCardValid && isBillingAddressValid;\n\n if (isValid) {\n this.$emit('payment-step-complete', this.paymentInfoModel);\n }\n\n this.setRegistrationComplete(isValid);\n }\n\n private get mappedCountryOptions() {\n return this.countryOptions.map(co => { return { title: co[0], code: co[1] } });\n }\n\n @Watch(\"paymentInfoModel.billingAddress.country\")\n private async countryStateOptions(newVal, oldValue) {\n if (newVal)\n {\n if (oldValue !== \"\") {\n this.paymentInfoModel.billingAddress.state = \"\";\n }\n let countryStateFile = await fetch(`/resources/country_states/${newVal}.json`);\n let countryStateFileContents = await countryStateFile.json();\n this.stateOptions = countryStateFileContents[newVal].map(co => { return { title: co[0], code: co[1] } });\n }\n }\n\n @Watch(\"isBillingAddressSameAsContactAddress\")\n private async billingAddressSameAsContactAddressToggled(newVal) {\n if (newVal) {\n this.paymentInfoModel.billingAddress.addressLine1 = this.contactInfo.addressLine1;\n this.paymentInfoModel.billingAddress.addressLine2 = this.contactInfo.addressLine2;\n this.paymentInfoModel.billingAddress.country = this.contactInfo.country;\n this.paymentInfoModel.billingAddress.state = this.contactInfo.state;\n this.paymentInfoModel.billingAddress.city = this.contactInfo.city;\n this.paymentInfoModel.billingAddress.zipCode = this.contactInfo.zipCode;\n } else {\n this.paymentInfoModel.billingAddress.addressLine1 = \"\";\n this.paymentInfoModel.billingAddress.addressLine2 = \"\";\n this.paymentInfoModel.billingAddress.country = \"\";\n this.paymentInfoModel.billingAddress.state = \"\";\n this.paymentInfoModel.billingAddress.city = \"\";\n this.paymentInfoModel.billingAddress.zipCode = \"\";\n }\n }\n\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentInfo.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentInfo.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PaymentInfo.vue?vue&type=template&id=4b63c3b2&scoped=true\"\nimport script from \"./PaymentInfo.vue?vue&type=script&lang=ts\"\nexport * from \"./PaymentInfo.vue?vue&type=script&lang=ts\"\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 \"4b63c3b2\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Action, namespace, Getter, State } from \"vuex-class\";\r\nimport api from \"@/services/api.service\";\r\nimport vSelect from \"vue-select\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\n\r\nimport ContactInfo from \"@/views/SignUp/ContactInfo.vue\";\r\nimport CompanyInfo from \"@/views/SignUp/CompanyInfo.vue\";\r\nimport SecurityInfo from \"@/views/SignUp/SecurityInfo.vue\";\r\nimport PaymentInfo from \"@/views/SignUp/PaymentInfo.vue\";\r\nimport {\r\n CompanyInfoModel,\r\n ContactInfoModel,\r\n PaymentInfoModel,\r\n SecurityInfoModel,\r\n SignUpStep\r\n} from \"@/store/signup/types\";\r\n\r\ninterface RegisterModel {\r\n customerId: number;\r\n\tfirstName: string\r\n\tlastName: string;\r\n\temailAddress: string;\r\n\ttelephone: string;\r\n\tpassword: string;\r\n\tconfirmPassword: string;\r\n\tcompanyName: string;\r\n\tcompanyAddress: string;\r\n latLong: string,\r\n currency: string;\r\n\ttimeZoneId: number;\r\n\tpaymentProfileId: number;\r\n}\r\n\r\nconst SignUpStore = namespace(\"signup\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n PaymentInfo,\r\n SecurityInfo,\r\n CompanyInfo,\r\n\t\t\"vue-select\": vSelect,\r\n\t\tscrollbar: VuePerfectScrollbar,\r\n \"contact-info\": ContactInfo\r\n\t}\r\n})\r\nexport default class SignUp extends Vue {\r\n\t@Action processLoginResponse: any;\r\n\t@Getter(\"getRequiresConfiguration\") private requiresConfiguration: boolean;\r\n\t@Getter(\"getIsOnPrem\") private isOnPrem: boolean;\r\n\t@Action fetchAppOptions: () => Promise;\r\n\t@Action fetchRequiresConfig: () => Promise;\r\n\r\n @SignUpStore.Getter private currentStep: () => SignUpStep;\r\n @SignUpStore.Getter private steps: () => SignUpStep[];\r\n @SignUpStore.State private contactInfo: ContactInfoModel;\r\n @SignUpStore.State private companyInfo: CompanyInfoModel;\r\n @SignUpStore.State private securityInfo: SecurityInfoModel;\r\n @SignUpStore.State private customerId: number;\r\n @SignUpStore.State private isComplete: boolean;\r\n @SignUpStore.State private isCreditCardRequired: boolean;\r\n @SignUpStore.Mutation private resetState;\r\n @SignUpStore.Action private fetchIsCreditCardRequired;\r\n\r\n\tprivate get lastStep() {\r\n return this.steps[this.steps.length - 1];\r\n }\r\n\r\n\tpublic loggingIn: boolean = false;\r\n\tprivate errorMessage = \"\";\r\n\r\n\tprivate paymentInfo: PaymentInfoModel = {\r\n\t billingAddress: {\r\n\t addressLine1: \"\",\r\n addressLine2: \"\",\r\n state: \"\",\r\n city: \"\",\r\n country: \"\",\r\n zipCode: \"\"\r\n },\r\n cardInfo: {\r\n\t firstName: \"\",\r\n lastName: \"\",\r\n cardNumber: {\r\n part1: \"\",\r\n part2: \"\",\r\n part3: \"\",\r\n part4: \"\"\r\n },\r\n expirationMonth: undefined,\r\n expirationYear: undefined,\r\n cvc: undefined\r\n }\r\n }\r\n\r\n private registrationModel: RegisterModel = {\r\n customerId: null,\r\n firstName: null,\r\n lastName: null,\r\n emailAddress: null,\r\n password: null,\r\n confirmPassword: null,\r\n telephone: null,\r\n companyName: null,\r\n companyAddress: null,\r\n latLong: null,\r\n currency: null,\r\n timeZoneId: 35,\r\n paymentProfileId: 0\r\n };\r\n\r\n\tprivate async created(): Promise\r\n\t{\r\n\t\tif(this.isOnPrem == null)\r\n\t\t{\r\n\t\t\tawait this.fetchAppOptions();\r\n\r\n\t\t\tif(this.isOnPrem)\r\n\t\t\t{\r\n\t\t\t\tawait this.fetchRequiresConfig();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.redirectIfAlreadyConfigured();\r\n\t}\r\n\r\n\tprivate async mounted() {\r\n await this.fetchIsCreditCardRequired();\r\n }\r\n\r\n\tprivate async Signup(): Promise {\r\n\t\tthis.loggingIn = true;\r\n\r\n\t\tthis.registrationModel.firstName = this.contactInfo.firstName;\r\n this.registrationModel.lastName = this.contactInfo.lastName;\r\n this.registrationModel.emailAddress = this.contactInfo.email;\r\n this.registrationModel.telephone = this.contactInfo.telephone;\r\n this.registrationModel.companyName = this.companyInfo.name;\r\n this.registrationModel.companyAddress = this.companyInfo.address;\r\n this.registrationModel.timeZoneId = this.companyInfo.timeZoneId;\r\n this.registrationModel.customerId = this.customerId;\r\n this.registrationModel.password = this.securityInfo.password;\r\n this.registrationModel.confirmPassword = this.securityInfo.passwordConfirmation;\r\n this.registrationModel.currency = this.contactInfo.currency;\r\n this.registrationModel.latLong = this.companyInfo.latLong;\r\n\r\n try {\r\n this.registrationModel.paymentProfileId = await this.createPaymentProfileForCustomer();\r\n }\r\n catch (error) {\r\n this.errorMessage = error.response.data;\r\n this.loggingIn = false;\r\n return;\r\n }\r\n\r\n try {\r\n\t\t\tlet result = await api.register(this.registrationModel);\r\n\r\n\t\t\tif (result.error) {\r\n\t\t\t\tthis.errorMessage = result.error;\r\n\t\t\t\tthis.loggingIn = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif(!this.isOnPrem && !this.isSureViewSystemsEmail(this.contactInfo.email)) {\r\n\t\t\t\tthis.postToHubSpot();\r\n\t\t\t}\r\n\r\n this.errorMessage = \"\";\r\n\t\t\tawait this.processLoginResponse(result);\r\n await this.$nextTick();\r\n\t\t\tthis.resetState();\r\n\t\t\tawait this.$nextTick();\r\n\t\t\tthis.$router.push(\"/event-queue\");\r\n\t\t\tthis.loggingIn = false;\r\n\t\t} catch {\r\n\t\t\tthis.loggingIn = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async createPaymentProfileForCustomer() {\r\n\t if (!this.isCreditCardRequired){\r\n\t return;\r\n }\r\n\r\n let cardNumberParts = this.paymentInfo.cardInfo.cardNumber;\r\n let fullCardNumber = `${cardNumberParts.part1}${cardNumberParts.part2}${cardNumberParts.part3}${cardNumberParts.part4}`;\r\n let paymentProfile = {\r\n firstName: this.paymentInfo.cardInfo.firstName,\r\n lastName: this.paymentInfo.cardInfo.lastName,\r\n address1: this.paymentInfo.billingAddress.addressLine1,\r\n address2: this.paymentInfo.billingAddress.addressLine2,\r\n country: this.paymentInfo.billingAddress.country,\r\n state: this.paymentInfo.billingAddress.state,\r\n city: this.paymentInfo.billingAddress.city,\r\n zipCode: this.paymentInfo.billingAddress.zipCode,\r\n customerId: this.customerId,\r\n cardNumber: fullCardNumber,\r\n expirationYear: this.paymentInfo.cardInfo.expirationYear,\r\n expirationMonth: this.paymentInfo.cardInfo.expirationMonth,\r\n cvc: this.paymentInfo.cardInfo.cvc\r\n }\r\n\r\n return await api.createPaymentProfileForCustomer(paymentProfile);\r\n }\r\n\r\n\tprivate onPaymentStepComplete(paymentInfo: PaymentInfoModel) {\r\n this.paymentInfo = paymentInfo;\r\n }\r\n\r\n private isSureViewSystemsEmail(email) {\r\n\t\tconst isIncludesSV = email.toLocaleLowerCase().includes('@sureviewsystems.com')\r\n\r\n\t\treturn isIncludesSV && !email.includes('+hubspot')\r\n\t}\r\n\r\n /**\r\n * post new contact info to HubSpot\r\n */\r\n private postToHubSpot() {\r\n try {\r\n if (!process.env.VUE_APP_HUBSPOT_URI || process.env.VUE_APP_HUBSPOT_URI === \"\") {\r\n return;\r\n }\r\n // our current portal id\r\n let portalId = 6208914;\r\n // new guid to make request unique\r\n let uuid = uuidv4();\r\n\r\n // create Payload\r\n let data = {\r\n contactFields: { email: this.contactInfo.email, firstName: this.contactInfo.firstName },\r\n formSelectorClasses: \"\",\r\n formSelectorId: \"\",\r\n formValues: {\r\n Phone: this.contactInfo.telephone,\r\n \"Company Name\": this.companyInfo.name,\r\n \"Street address\": this.companyInfo.address,\r\n TimezoneId: this.companyInfo.timeZoneId\r\n },\r\n labelToNameMap: { Phone: \"\", \"Company Name\": \"\", \"Street address\": \"\", TimezoneId: \"\" },\r\n pageTitle: document.title,\r\n pageUrl: window.location.href,\r\n portalId: portalId,\r\n type: \"SCRAPED\",\r\n uuid: uuid,\r\n version: \"collected-forms-embed-js-static-1.170\"\r\n };\r\n\r\n /**\r\n * DG - Note\r\n * using XMLHttpRequest to bypass cors issues.\r\n * AxioInstance and axiosJsonInstance both throw cors issue occasionally\r\n */\r\n let xhr = new XMLHttpRequest();\r\n let payload = JSON.stringify(data);\r\n\r\n xhr.open(\"POST\", process.env.VUE_APP_HUBSPOT_URI);\r\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\r\n\r\n xhr.onreadystatechange = function() {\r\n if (xhr.readyState == 4 && xhr.status == 200) {\r\n console.log(xhr.responseText); // Returns a 200 response if the submission is successful.\r\n } else if (xhr.readyState == 4 && xhr.status == 400) {\r\n console.log(xhr.responseText); // Returns a 400 error the submission is rejected.\r\n } else if (xhr.readyState == 4 && xhr.status == 403) {\r\n console.log(xhr.responseText); // Returns a 403 error if the portal isn't allowed to post submissions.\r\n } else if (xhr.readyState == 4 && xhr.status == 404) {\r\n console.log(xhr.responseText); // Returns a 404 error if the formGuid isn't found\r\n }\r\n };\r\n\r\n xhr.send(payload);\r\n } catch (err) {\r\n console.log(`Unable to post to hubspot`);\r\n console.error(err);\r\n }\r\n }\r\n\r\n\t@Watch(\"requiresConfiguration\")\r\n\tprivate redirectIfAlreadyConfigured(): void\r\n\t{\r\n\t\tif (this.isOnPrem && this.requiresConfiguration === false)\r\n\t\t{\r\n\t\t\tthis.$router.push({ path: \"/login\" });\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SignUp.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SignUp.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SignUp.vue?vue&type=template&id=bd5dc08e&scoped=true\"\nimport script from \"./SignUp.vue?vue&type=script&lang=ts\"\nexport * from \"./SignUp.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SignUp.vue?vue&type=style&index=0&id=bd5dc08e&prod&scoped=true&lang=scss\"\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 \"bd5dc08e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\",attrs:{\"id\":\"setup-container\"}},[_c('nav-header',{attrs:{\"title\":\"Event Category Setup\"}}),_c('generic-table',{ref:\"genericTable\",attrs:{\"id\":\"EventCategoriesTable\",\"onSave\":_vm.updateOutcome,\"onDelete\":_vm.deleteOutcome,\"onAddNew\":_vm.addOutcome,\"term\":\"Event Category\",\"modalTitle\":\"Event Category\",\"columns\":_vm.TableHeadings,\"modalItems\":_vm.GetModalItems(),\"isSafeDeleteEnabled\":\"\",\"dataList\":_vm.eventCategoriesList,\"deleteActionMessages\":_vm.deleteActionMessages,\"deleteMessageAlternativeText\":_vm.deleteMessageAlternativeText,\"isLoading\":_vm.isLoading},scopedSlots:_vm._u([{key:\"title\",fn:function(slotProps){return [_c('div',{style:('padding-left:' + _vm.getOutcomeLevel(0, slotProps.row) * 20 + 'px')},[(slotProps.row.hasChildren && !slotProps.row.isOpen)?_c('i',{staticClass:\"fas fa-plus-square\",on:{\"click\":function($event){return _vm.showChildren(slotProps.row)}}}):_vm._e(),(slotProps.row.hasChildren && slotProps.row.isOpen)?_c('i',{staticClass:\"fas fa-minus-square\",on:{\"click\":function($event){return _vm.hideChildren(slotProps.row)}}}):_vm._e(),_c('text-highlight',{attrs:{\"queries\":slotProps.search,\"highlightStyle\":(_vm.style = 'padding:0;border-radius: 0')}},[_vm._v(\" \"+_vm._s(slotProps.row.title)+\" \")])],1)]}},{key:\"raiseToCasesTemplate\",fn:function(slotProps){return [_c('p',[_vm._v(_vm._s(_vm.getTitleForTemplateId(slotProps.row.raiseToCasesTemplate)))])]}},{key:\"autoPreserve\",fn:function(slotProps){return [_c('i',{staticClass:\"fas\",class:slotProps.row.autoPreserve ? 'fa-check text-success' : 'fa-times text-danger'})]}},{key:\"raiseDispatch\",fn:function(slotProps){return [_c('i',{staticClass:\"fas\",class:slotProps.row.raiseDispatch ? 'fa-check text-success' : 'fa-times text-danger'})]}},{key:\"raiseIncidentReport\",fn:function(slotProps){return [_c('i',{staticClass:\"fas\",class:slotProps.row.raiseIncidentReport ? 'fa-check text-success' : 'fa-times text-danger'})]}},{key:\"isAlarm\",fn:function(slotProps){return [_c('i',{staticClass:\"fas\",class:slotProps.row.isAlarm ? 'fa-check text-success' : 'fa-times text-danger'})]}},{key:\"isPatrol\",fn:function(slotProps){return [_c('i',{staticClass:\"fas\",class:slotProps.row.isPatrol ? 'fa-check text-success' : 'fa-times text-danger'})]}},{key:\"isIncident\",fn:function(slotProps){return [_c('i',{staticClass:\"fas\",class:slotProps.row.isIncident ? 'fa-check text-success' : 'fa-times text-danger'})]}},{key:\"isActivityLog\",fn:function(slotProps){return [_c('i',{staticClass:\"fas\",class:slotProps.row.isActivityLog ? 'fa-check text-success' : 'fa-times text-danger'})]}},{key:\"isMobileClose\",fn:function(slotProps){return [_c('i',{staticClass:\"fas\",class:slotProps.row.isMobileClose ? 'fa-check text-success' : 'fa-times text-danger'})]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select-3',{staticClass:\"case-type-select\",attrs:{\"disabled\":_vm.readonly,\"options\":_vm.caseTypes,\"label\":\"title\",\"placeholder\":\"Select Template\",\"data-cy\":\"case-type-select\",\"append-to-body\":true,\"reduce\":function (caseType) { return caseType.id; }},on:{\"input\":_vm.entryChanged},model:{value:(_vm.caseTypeSelected),callback:function ($$v) {_vm.caseTypeSelected=$$v},expression:\"caseTypeSelected\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport vSelect3 from \"vselect3\";\r\nimport { CaseType } from \"@/store/case-management/types\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vSelect3,\r\n\t},\r\n})\r\nexport default class CaseTypeSelect extends Vue {\r\n\t@Prop()\r\n\tpublic value: any;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\treadonly: boolean;\r\n\r\n\t@Prop()\r\n\tpublic caseTypes: CaseType[];\r\n\r\n\tpublic caseTypeSelected: CaseType = this.value;\r\n\r\n\t/**\r\n\t * Entry changed - emit to parent\r\n\t */\r\n\tpublic entryChanged(newValue: CaseType) {\r\n\t\tthis.$emit(\"input\", newValue);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CaseTypeSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CaseTypeSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CaseTypeSelect.vue?vue&type=template&id=6052be48\"\nimport script from \"./CaseTypeSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./CaseTypeSelect.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CaseTypeSelect.vue?vue&type=style&index=0&id=6052be48&prod&lang=css\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport { ModalItem } from \"@/components/table/generic-update-modal.vue\";\r\nimport api from \"@/services/api.service\";\r\nimport EventOutcomeSelect from \"@/components/form/EventOutcomeSelect.vue\";\r\n//@ts-ignore\r\nimport TextHighlight from \"vue-text-highlight\";\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport { CaseType } from \"@/store/case-management/types\";\r\nimport CaseTypeSelect from \"@/components/form/CaseTypeSelect.vue\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport EventCategory from \"@/types/sv-data/events/EventCategory\";\r\n\r\nconst GenericTableStore = namespace(\"GenericTable\");\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst CaseManagement = namespace(\"caseManagement\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"generic-table\": GenericTable,\r\n\t\t\"text-highlight\": TextHighlight\r\n\t}\r\n})\r\nexport default class EventCategorySetup extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getFeature: (featuresList: string[]) => boolean;\r\n\t@Getter getUserTenantGroupId: number;\r\n\t@GenericTableStore.Getter getModalRow: any;\r\n\t@GenericTableStore.Mutation setModalRow: any;\r\n\t@CaseManagement.State caseTypesForUser: CaseType[];\r\n\t@CaseManagement.Action fetchCaseTypesForUser: () => void;\r\n\r\n\tprivate eventCategoriesList: EventCategory[] = [];\r\n\tprivate caseTypesForUserObj: object = {};\r\n\tprivate isLoading: boolean = false;\r\n\tprivate caseManagementLoaded: boolean = false;\r\n\r\n\tprivate async mounted() {\r\n\t\tif (!this.isEventCategorySetupEnabled) {\r\n\t\t\tthis.$router.go(-1);\r\n\t\t}\r\n\r\n\t\tawait this.updateState();\r\n\r\n\t\tif (this.getFeature([\"CaseManagement\"])) {\r\n\t\t\tawait this.fetchCaseTypesForUser();\r\n\r\n\t\t\t// Build object for O(1) look up when populating\r\n\t\t\t// title via ID in generic table row.\r\n\t\t\tthis.caseTypesForUser.forEach((caseType) => {\r\n\t\t\t\tthis.caseTypesForUserObj[caseType.id] = caseType.title;\r\n\t\t\t});\r\n\t\t\tthis.caseManagementLoaded = true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async updateState(): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.eventCategoriesList = await api.fetchEventOutcomesForUser();\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.log(\"Unexpected error updating component state: \" + ex);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isEventCategorySetupEnabled(): boolean {\r\n\t\treturn this.getFeature([\"EventCategorySetup\"]) && this.getPermissions.canEditEventCategorySetup;\r\n\t}\r\n\r\n\tprivate get isCaseManagementEnabled(): boolean {\r\n\t\treturn this.getFeature([\"CaseManagement\"]) && this.caseManagementLoaded;\r\n\t}\r\n\r\n\tprivate get isManualTourEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"EventQueue\", \"ManualTour\"]);\r\n\t}\r\n\r\n\tprivate get isQuickEndSettingsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"SiteMonitor\", \"QuickEnd\"]);\r\n\t}\r\n\t\r\n\tprivate get isParentSelected(): boolean {\r\n\t\treturn !(this.getModalRow != null && this.getModalRow.parentID != null);\r\n\t}\r\n\r\n\tprivate getTitleForTemplateId(templateId: string) {\r\n\t\tif (templateId && this.caseTypesForUserObj[templateId]) {\r\n\t\t\treturn this.caseTypesForUserObj[templateId];\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate async addOutcome(outcome: EventCategory): Promise {\r\n\t\tif (outcome) {\r\n\t\t\ttry {\r\n\t\t\t\tconst eventOutcome: EventCategory = {\r\n\t\t\t\t\teventOutcomeID: outcome.eventOutcomeID,\r\n\t\t\t\t\tparentID: outcome.parentID,\r\n\t\t\t\t\ttitle: outcome.title,\r\n\t\t\t\t\tgroupID: outcome.groupID ? outcome.groupID : -1,\r\n\t\t\t\t\tisMobileClose: outcome.isMobileClose ? outcome.isMobileClose : false,\r\n\t\t\t\t\tautoPreserve: outcome.autoPreserve ? outcome.autoPreserve : false,\r\n\t\t\t\t\traiseDispatch: outcome.raiseDispatch ? outcome.raiseDispatch : false,\r\n\t\t\t\t\traiseIncidentReport: outcome.raiseIncidentReport ? outcome.raiseIncidentReport : false,\r\n\t\t\t\t\tisActivityLog: outcome.isActivityLog ? outcome.isActivityLog : false,\r\n\t\t\t\t\tisAlarm: outcome.isAlarm ? outcome.isAlarm : false,\r\n\t\t\t\t\tisPatrol: outcome.isPatrol ? outcome.isPatrol : false,\r\n\t\t\t\t\tisIncident: outcome.isIncident ? outcome.isIncident : false,\r\n\t\t\t\t\tisOpen: outcome.isOpen,\r\n\t\t\t\t\thidden: outcome.hidden,\r\n\t\t\t\t\traiseToCasesTemplate: outcome.raiseToCasesTemplate\r\n\t\t\t\t};\r\n\t\t\t\tawait api.createEventOutcome(eventOutcome);\r\n\t\t\t\tawait this.updateState();\r\n\t\t\t} catch (ex) {\r\n\t\t\t\tconsole.log(\"Unexpected error adding Event Outcome: \" + ex);\r\n\t\t\t} finally {\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async updateOutcome(outcome: EventCategory): Promise {\r\n\t\tif (outcome) {\r\n\t\t\ttry {\r\n\t\t\t\tthis.isLoading = true;\r\n\t\t\t\tawait api.updateEventOutcome(outcome);\r\n\t\t\t\tawait this.updateState();\r\n\t\t\t} catch (ex) {\r\n\t\t\t\tthis.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Error\",\r\n\t\t\t\t\ttext: ex.response.data\r\n\t\t\t\t});\r\n\t\t\t} finally {\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async deleteOutcome(outcome: EventCategory): Promise {\r\n\t\tif (outcome) {\r\n\t\t\ttry {\r\n\t\t\t\tthis.isLoading = true;\r\n\t\t\t\tawait api.deleteEventOutcome(outcome);\r\n\t\t\t\tawait this.updateState();\r\n\t\t\t} catch (ex) {\r\n\t\t\t\tconsole.log(\"Unexpected error deleting Event Outcome: \" + ex);\r\n\t\t\t} finally {\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getOutcomeLevel(level: number, outcome: EventCategory): number {\r\n\t\tif (!outcome || !outcome.parentID) {\r\n\t\t\treturn level;\r\n\t\t} else {\r\n\t\t\tlet parent = this.eventCategoriesList.find((a) => {\r\n\t\t\t\treturn a.eventOutcomeID == outcome.parentID;\r\n\t\t\t});\r\n\t\t\tlet newLevel = level + 1;\r\n\t\t\treturn this.getOutcomeLevel(newLevel, parent);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate showChildren(outcome: EventCategory): void {\r\n\t\tthis.toggleTreeIconState(outcome.eventOutcomeID, \"open\");\r\n\t\tthis.getChildren(outcome.eventOutcomeID).forEach((child) => {\r\n\t\t\tif (child.hasChildren) {\r\n\t\t\t\tthis.showChildrenRecur(child);\r\n\t\t\t}\r\n\t\t\tchild.hidden = false;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate showChildrenRecur(outcome: EventCategory): void {\r\n\t\tif (outcome.hasChildren == true && outcome.isOpen == false) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.getChildren(outcome.eventOutcomeID).forEach((child) => {\r\n\t\t\tif (child.hasChildren) {\r\n\t\t\t\tthis.showChildrenRecur(child);\r\n\t\t\t}\r\n\t\t\tchild.hidden = false;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate hideChildren(outcome: EventCategory): void {\r\n\t\tthis.toggleTreeIconState(outcome.eventOutcomeID, \"closed\");\r\n\t\tthis.getChildren(outcome.eventOutcomeID).forEach((child) => {\r\n\t\t\tif (child.hasChildren) {\r\n\t\t\t\tthis.hideChildrenRecur(child);\r\n\t\t\t}\r\n\t\t\tchild.hidden = true;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate hideChildrenRecur(outcome: EventCategory): void {\r\n\t\tthis.getChildren(outcome.eventOutcomeID).forEach((child) => {\r\n\t\t\tif (child.hasChildren) {\r\n\t\t\t\tthis.hideChildrenRecur(child);\r\n\t\t\t}\r\n\t\t\tchild.hidden = true;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate toggleTreeIconState(outcomeId: number, state: string): void {\r\n\t\tlet outcome = this.eventCategoriesList.find((a) => {\r\n\t\t\treturn a.eventOutcomeID == outcomeId;\r\n\t\t});\r\n\t\toutcome.isOpen = state == \"open\";\r\n\t}\r\n\r\n\tprivate getChildren(outcomeId: number): EventCategory[] {\r\n\t\treturn this.eventCategoriesList.filter((outcome) => {\r\n\t\t\treturn outcome.parentID == outcomeId;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get TableHeadings(): TableHeader[] {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Title\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\torder: 0,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Title of event outcome\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tuseCustomCell: true,\r\n\t\t\t\twidth: \"20%\",\r\n\t\t\t\tisTermLabel: true\r\n\t\t\t} as TableHeader,\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area Name\",\r\n\t\t\t\tkey: \"areaName\",\r\n\t\t\t\torder: 1,\r\n\t\t\t\tsortOrder: 1,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Area Name\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tdataType: \"text\"\r\n\t\t\t} as TableHeader,\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Alarm\",\r\n\t\t\t\tkey: \"isAlarm\",\r\n\t\t\t\torder: 2,\r\n\t\t\t\tsortOrder: 2,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Alarm\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t} as TableHeader,\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Tour\",\r\n\t\t\t\tkey: \"isPatrol\",\r\n\t\t\t\torder: 3,\r\n\t\t\t\tsortOrder: 3,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Tour\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: this.isManualTourEnabled,\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t} as TableHeader,\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Activity Log\",\r\n\t\t\t\tkey: \"isActivityLog\",\r\n\t\t\t\torder: 4,\r\n\t\t\t\tsortOrder: 4,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Activity Log\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t} as TableHeader,\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Preserve\",\r\n\t\t\t\tkey: \"autoPreserve\",\r\n\t\t\t\torder: 7,\r\n\t\t\t\tsortOrder: 7,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Preserve\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t} as TableHeader,\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Raise to Case Management\",\r\n\t\t\t\tkey: \"raiseToCasesTemplate\",\r\n\t\t\t\torder: 8,\r\n\t\t\t\tsortOrder: 8,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Case Type\",\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdisable: !this.isCaseManagementEnabled,\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t} as TableHeader\r\n\t\t];\r\n\t}\r\n\r\n\tprivate GetModalItems(): ModalItem[] {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Title\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tplaceholder: \"Event Title\",\r\n\t\t\t\tmaxLength: 50,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Parent Event Outcome\",\r\n\t\t\t\tkey: \"parentID\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tdata: EventOutcomeSelect,\r\n\t\t\t\trequired: false,\r\n\t\t\t\tvisible: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"groupID\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tdefaultValue: this.getUserTenantGroupId,\r\n\t\t\t\tdata: AreaTreeSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: a => a.id\r\n\t\t\t\t},\r\n\t\t\t\trequired: this.isParentSelected,\r\n\t\t\t\tvisible: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Alarm\",\r\n\t\t\t\tkey: \"isAlarm\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tdefaultValue: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\treadOnly: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Tour\",\r\n\t\t\t\tkey: \"isPatrol\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tdefaultValue: true,\r\n\t\t\t\tvisible: this.isManualTourEnabled,\r\n\t\t\t\treadOnly: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Activity Log\",\r\n\t\t\t\tkey: \"isActivityLog\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\treadOnly: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Auto Preserve\",\r\n\t\t\t\tkey: \"autoPreserve\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\treadOnly: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Case Type\",\r\n\t\t\t\tkey: \"raiseToCasesTemplate\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tdata: CaseTypeSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tcaseTypes: this.caseTypesForUser\r\n\t\t\t\t},\r\n\t\t\t\trequired: false,\r\n\t\t\t\tvisible: this.isCaseManagementEnabled\r\n\t\t\t}\r\n\r\n\t\t] as ModalItem[];\r\n\t}\r\n\r\n\tprivate deleteActionMessages(): string[] {\r\n\t\tlet deleteActionMessagesArr = [\r\n\t\t\t\"Delete the Category so it can no longer be used by SureView Users\",\r\n\t\t\t\"Delete the Category Link for all history\",\r\n\t\t\t`Historic Events using this category will change to \"No Category Assigned\"`,\r\n\t\t];\r\n\t\tif (this.isQuickEndSettingsEnabled) {\r\n\t\t\tdeleteActionMessagesArr.push(\"Deleting the Category will remove it from any Quick End settings\");\r\n\t\t}\r\n\r\n\t\treturn deleteActionMessagesArr;\r\n\t}\r\n\t\r\n\tprivate deleteMessageAlternativeText: string = `Alternatively You can disable this category to retain the history by\r\n\t\tUnticking Event, Tour and Activity Log options in the category edit screen`;\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventCategorySetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventCategorySetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventCategorySetup.vue?vue&type=template&id=cccd0678&scoped=true\"\nimport script from \"./EventCategorySetup.vue?vue&type=script&lang=ts\"\nexport * from \"./EventCategorySetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventCategorySetup.vue?vue&type=style&index=0&id=cccd0678&prod&scoped=true&lang=css\"\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 \"cccd0678\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"loginBackground\"}},[_c('div',{staticClass:\"container\",staticStyle:{\"z-index\":\"10\"}},[_c('div',{staticClass:\"row justify-content-center align-items-center\"},[_c('div',[_c('img',{staticClass:\"logo mb-4\",attrs:{\"src\":\"images/branding/sureview_logo.png\"}}),_c('br'),_c('div',{staticClass:\"card mb-3 border-0 bg-transparent shadow-none\"},[_c('div',{staticClass:\"card-body\"},[_c('form',[_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],staticClass:\"form-control\",attrs:{\"id\":\"password\",\"type\":\"password\",\"placeholder\":\"Password\"},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.password=$event.target.value}}}),(_vm.passwordStrength === 'Weak')?_c('span',{staticClass:\"text-danger\",attrs:{\"data-cy\":\"weak-password-error\"}},[_vm._v(\" Password is not strong enough. \")]):_vm._e()]),_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.passwordConfirmation),expression:\"passwordConfirmation\"}],staticClass:\"form-control\",attrs:{\"id\":\"passwordConfirmation\",\"type\":\"password\",\"placeholder\":\"Confirm password\"},domProps:{\"value\":(_vm.passwordConfirmation)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.passwordConfirmation=$event.target.value}}}),(_vm.passwordConfirmation.length > 0 && _vm.password !== _vm.passwordConfirmation)?_c('span',{staticClass:\"text-danger\",attrs:{\"data-cy\":\"password-mismatch-error\"}},[_vm._v(\" Passwords do not match. \")]):_vm._e()]),(_vm.errorMessage.length)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"data-cy\":\"error-message\"}},[_vm._v(\" \"+_vm._s(_vm.errorMessage)+\" \")]):_vm._e(),_c('b-button',{staticClass:\"login\",attrs:{\"id\":\"setPassword\",\"variant\":\"primary\",\"disabled\":!_vm.isValid() || _vm.isLoading,\"data-cy\":\"set-password-button\"},on:{\"click\":_vm.submit}},[(!_vm.isLoading)?_c('span',[_vm._v(\"Set Password\")]):_vm._e(),(_vm.isLoading)?_c('span',[_vm._v(\"Verifying ...\")]):_vm._e(),(_vm.isLoading)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()])],1)])])])])]),_c('img',{staticClass:\"background-branding d-none d-xl-block d-lg-block d-md-block\",attrs:{\"src\":\"images/branding/background_logo.png\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport api from \"@/services/api.service\";\r\nimport { passwordValidationMixins } from \"@/mixins\";\r\n\r\nconst { getPasswordStrength } = passwordValidationMixins.methods;\r\n\r\n@Component\r\nexport default class SetPassword extends Vue {\r\n\r\n\tprivate password: string = \"\";\r\n\tprivate passwordConfirmation: string = \"\";\r\n\tprivate passwordStrength = \"\";\r\n\tprivate isLoading: boolean = false;\r\n\tprivate errorMessage: string = \"\";\r\n\r\n \tprivate async submit() {\r\n\t\tif (!this.isValid()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tlet token = this.$route.query.token as string;\r\n\t\t\tawait api.setPassword(token, this.password);\r\n\t\t\tthis.isLoading = false;\r\n\t\t\tawait this.$router.push({ path: \"/login\", query: { hasSetPassword: \"true\" }});\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tthis.errorMessage = error.response.data;\r\n\t\t\tthis.isLoading = false;\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate isValid(): boolean {\r\n\t\tif (\r\n\t\t\t(this.password.length === 0 || this.passwordConfirmation.length === 0) ||\r\n\t\t\t(this.passwordConfirmation != this.password)\r\n\t\t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.passwordStrength === \"Weak\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t@Watch(\"password\")\r\n\tprivate updatePasswordStrength() {\r\n\t\tthis.passwordStrength = getPasswordStrength(this.password);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetPassword.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SetPassword.vue?vue&type=template&id=998ae414&scoped=true\"\nimport script from \"./SetPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./SetPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SetPassword.vue?vue&type=style&index=0&id=998ae414&prod&scoped=true&lang=scss\"\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 \"998ae414\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"loginBackground\"}},[_c('div',{staticClass:\"container\",staticStyle:{\"z-index\":\"10\"}},[_c('div',{staticClass:\"row justify-content-center align-items-center\"},[_c('div',[_c('img',{staticClass:\"logo mb-4\",attrs:{\"src\":\"images/branding/sureview_logo.png\"}}),_c('br'),_c('div',{staticClass:\"card mb-3 border-0 bg-transparent shadow-none\"},[_c('div',{staticClass:\"card-body\"},[_c('h3',[_vm._v(\"Reset your password\")]),_c('p',[_vm._v(\" In order to reset your password, we must send you a link to your email to verify your account. What email address did you register with? \")]),_c('form',{staticClass:\"mt-4\"},[_c('div',{staticClass:\"form-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.email),expression:\"email\"}],staticClass:\"form-control\",attrs:{\"id\":\"email\",\"type\":\"email\",\"placeholder\":\"Email Address\"},domProps:{\"value\":(_vm.email)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.email=$event.target.value}}}),(!_vm.isEmailValid && _vm.email.length >= 3)?_c('span',{staticClass:\"text-danger\",attrs:{\"data-cy\":\"invalid-email-error\"}},[_vm._v(\" Not a valid email. \")]):_vm._e()]),(_vm.wasSuccessful)?_c('div',{staticClass:\"alert alert-success\",attrs:{\"data-cy\":\"success-message\"}},[_vm._v(\" If the entered address was valid an email with password reset instructions has been sent to it. It may take a few minutes to arrive. Please check your spam folder if you can't find the email. \")]):_vm._e(),_c('b-button',{staticClass:\"reset-password\",attrs:{\"id\":\"resetPassword\",\"variant\":\"primary\",\"disabled\":!_vm.isEmailValid || _vm.isLoading || _vm.wasSuccessful,\"data-cy\":\"reset-password-button\"},on:{\"click\":_vm.submit}},[(!_vm.isLoading)?_c('span',[_vm._v(\"Reset Password\")]):_vm._e(),(_vm.isLoading)?_c('span',[_vm._v(\"Sending reset instructions...\")]):_vm._e(),(_vm.isLoading)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):_vm._e()])],1)])])])])]),_c('img',{staticClass:\"background-branding d-none d-xl-block d-lg-block d-md-block\",attrs:{\"src\":\"images/branding/background_logo.png\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport api from \"@/services/api.service\";\r\nimport { passwordValidationMixins } from \"@/mixins\";\r\n\r\nconst { getPasswordStrength } = passwordValidationMixins.methods;\r\n\r\n@Component\r\nexport default class ResetPassword extends Vue {\r\n\tprivate isLoading: boolean = false;\r\n\tprivate wasSuccessful: boolean = false;\r\n\tprivate email: string = \"\";\r\n\tprivate isEmailValid: boolean = false;\r\n\r\n \tprivate async submit() {\r\n \t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tawait api.resetPassword(this.email);\r\n\t\t\tthis.wasSuccessful = true;\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t\tcatch {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"email\")\r\n\tprivate validateEmail() {\r\n\t\tlet re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n\t\tthis.isEmailValid = re.test(String(this.email).toLowerCase());\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=d9e36646&scoped=true\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=d9e36646&prod&scoped=true&lang=scss\"\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 \"d9e36646\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\",staticStyle:{\"height\":\"100%\"}},[_c('nav-header',{attrs:{\"title\":\"Areas\"}}),_c('area-table')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selectedArea)?_c('div',{staticClass:\"m-3\"},[_c('div',{staticClass:\"d-flex m-3\"},[_c('area-tree-path',{attrs:{\"disabled\":_vm.isLoading},on:{\"onAreaSelected\":_vm.loadArea,\"homeSelected\":_vm.loadHome},model:{value:(_vm.selectedAreaPath),callback:function ($$v) {_vm.selectedAreaPath=$$v},expression:\"selectedAreaPath\"}}),(_vm.getPermissions.canEditSiteSetup && !_vm.isSuiteEnabled)?_c('b-button',{staticClass:\"ml-2\",attrs:{\"variant\":\"primary\",\"data-cy\":\"add-area\"},on:{\"click\":_vm.onAddNewArea}},[_vm._v(\" Add Area \")]):_vm._e(),(_vm.getPermissions.canEditSiteSetup && _vm.isBulkAddEnabled && !_vm.isSuiteEnabled)?_c('b-button',{staticClass:\"ml-2\",attrs:{\"variant\":\"primary\",\"data-cy\":\"bulk-add-area\"},on:{\"click\":function($event){return _vm.$bvModal.show('modalBulk')}}},[_vm._v(\" Bulk Add \")]):_vm._e()],1),_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',[_c('b-col',{attrs:{\"cols\":\"9\"}},[_c('i',{staticClass:\"fa fa-search pr-2\",staticStyle:{\"display\":\"inline-flex\"}}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchQuery),expression:\"searchQuery\"}],staticClass:\"form-control\",staticStyle:{\"margin-top\":\"0.3em\",\"width\":\"90%\",\"display\":\"inline-block\"},attrs:{\"data-cy\":\"area-title-search\",\"placeholder\":(\"Search \" + (_vm.selectedArea.title) + \"...\")},domProps:{\"value\":(_vm.searchQuery)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.searchQuery=$event.target.value}}})]),_c('b-col',{staticClass:\"results-per-page-container\",attrs:{\"cols\":\"3\",\"data-cy\":\"resultsPerPage\"}},[_c('label',{attrs:{\"for\":\"resultsPerPageInput\"}},[_vm._v(\" Results per page: \")]),_c('b-form-input',{attrs:{\"id\":\"resultsPerPageInput\",\"type\":\"text\",\"formatter\":_vm.removeNonDigitsFromString,\"size\":\"sm\",\"max\":\"200\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.debounceUpdateSearchFilter()}},model:{value:(_vm.resultsPerPageUpdated),callback:function ($$v) {_vm.resultsPerPageUpdated=$$v},expression:\"resultsPerPageUpdated\"}}),_c('b-button',{attrs:{\"variant\":\"primary\",\"size\":\"sm\",\"data-cy\":\"update-button\"},on:{\"click\":function($event){return _vm.debounceUpdateSearchFilter()}}},[_vm._v(\"Update\")])],1)],1)],1),_c('div',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:(_vm.shortcuts),expression:\"shortcuts\"}],staticClass:\"m-3\",on:{\"shortkey\":_vm.handleShortcut}},[_c('b-table-simple',{attrs:{\"hover\":\"\",\"sticky-header\":_vm.tableHeight,\"responsive\":true}},[_c('b-thead',[_c('b-tr',_vm._l((_vm.fields.filter(function (f) { return f.visible; })),function(field,index){return _c('b-th',{key:index,class:field.key === 'options' ? 'options-column' : '',style:(_vm.thStylingForField(index)),attrs:{\"sticky-column\":\"\"},on:{\"click\":function($event){return _vm.updateSorting(field)}}},[(field.key === 'options')?_c('span',[_c('i',{staticClass:\"fa fa-filter hover-icon pl-3\",on:{\"click\":function($event){_vm.showFilter = true}}})]):_c('span',[_vm._v(\" \"+_vm._s(field.label)+\" \")]),(field.sortable)?_c('i',{staticClass:\"fad pt-1 pr-2\",class:_vm.sortByColumn !== (field.sortKey ? field.sortKey : field.key) ? 'fa-sort' : _vm.sortDirection === 'ascending' ? 'fa-sort-up' : 'fa-sort-down',staticStyle:{\"float\":\"right\",\"margin\":\"auto\",\"font-size\":\"11pt\"}}):_vm._e()])}),1)],1),_c('b-tbody',[_c('b-overlay',{attrs:{\"show\":_vm.isLoading,\"variant\":\"dark\",\"no-wrap\":\"\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('div',{staticClass:\"text-center\",staticStyle:{\"font-size\":\"18px\"}},[_c('span',[_vm._v(\" Loading... \"),_c('i',{staticClass:\"fa fa-spin fa-spinner\"})])])]},proxy:true}],null,false,89047354)}),_c('b-tr',{ref:\"selectedArea\",staticStyle:{\"background-color\":\"#444\",\"border-bottom\":\"2px solid grey\",\"font-weight\":\"bolder\",\"color\":\"#fff\"},attrs:{\"tabindex\":\"0\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.openSelectedArea(_vm.selectedArea)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"delete\",[8,46],$event.key,[\"Backspace\",\"Delete\",\"Del\"])){ return null; }return _vm.onDeleteAreaSelected(_vm.selectedArea)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }return _vm.openSelectedArea(_vm.selectedArea)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }_vm.$refs[\"row0\"][0].$el.focus()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"e\",undefined,$event.key,undefined)){ return null; }if(!$event.altKey){ return null; }return _vm.openSelectedArea(_vm.selectedArea)}]}},_vm._l((_vm.fields.filter(function (f) { return f.visible; })),function(field,index){return _c('b-td',{key:index,class:field.key === 'options' ? 'options-column' : '',style:(index === _vm.fields.filter(function (f) { return f.visible; }).length -1 ? 'text-align: center;' : ''),on:{\"dblclick\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.openSelectedArea(_vm.selectedArea)}}},[(field.label === 'Time Zone')?_c('span',[_vm._v(\" \"+_vm._s(_vm.timeZoneForColumn(_vm.selectedArea[field.key]))+\" \")]):(field.key === 'disabledAt')?_c('span',{style:(_vm.selectedArea[field.key] ? 'color: red;' : 'color: green;')},[_vm._v(\" \"+_vm._s(_vm.selectedArea[field.key] ? 'Disabled' : 'Enabled')+\" \")]):_c('span',[_vm._v(\" \"+_vm._s(_vm.selectedArea[field.key])+\" \")]),(!_vm.selectedArea.isParent\n\t\t\t\t\t\t\t\t\t&& _vm.selectedArea.groupID !== _vm.tenantId\n\t\t\t\t\t\t\t\t\t&& index === _vm.fields.filter(function (f) { return f.visible; }).length -1\n\t\t\t\t\t\t\t\t\t&& _vm.canEditArea(_vm.selectedArea)\n\t\t\t\t\t\t\t\t\t&& !_vm.isSuiteEnabled)?_c('i',{staticClass:\"fas fa-trash hover-icon mr-2\",on:{\"click\":function($event){return _vm.onDeleteAreaSelected(_vm.selectedArea)}}}):_vm._e(),(index === _vm.fields.filter(function (f) { return f.visible; }).length -1\n\t\t\t\t\t\t\t\t\t&& _vm.canEditArea(_vm.selectedArea))?_c('i',{staticClass:\"fas fa-edit hover-icon\",on:{\"click\":function($event){return _vm.onEditAreaSelected(_vm.selectedArea)}}}):(index === _vm.fields.filter(function (f) { return f.visible; }).length -1)?_c('i',{staticClass:\"hover-icon fas fa-eye hover-icon\",attrs:{\"title\":(\"View \" + (_vm.selectedArea.title))},on:{\"click\":function($event){return _vm.onViewAreaSelected(_vm.selectedArea)}}}):_vm._e()])}),1),_vm._l((_vm.selectedArea.children),function(area,index){return _c('b-tr',{key:index,ref:(\"row\" + index),refInFor:true,attrs:{\"id\":(\"area-\" + (area.groupID)),\"tabindex\":\"0\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onAreaSelected(area)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"delete\",[8,46],$event.key,[\"Backspace\",\"Delete\",\"Del\"])){ return null; }return _vm.onDeleteAreaSelected(area)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }return _vm.onAreaSelected(area)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"])){ return null; }_vm.$refs[(\"row\" + (index+1))][0].$el.focus()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"])){ return null; }index > 0 ? _vm.$refs[(\"row\" + (index-1))][0].$el.focus() : _vm.$refs.selectedArea.$el.focus();},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"e\",undefined,$event.key,undefined)){ return null; }if(!$event.altKey){ return null; }return _vm.onEditAreaSelected(area)}]}},_vm._l((_vm.fields.filter(function (f) { return f.visible; })),function(field,index){return _c('b-td',{key:index,style:(index === _vm.fields.filter(function (f) { return f.visible; }).length -1 ? 'text-align: center;' : ''),on:{\"dblclick\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.openSelectedArea(area)}}},[(area.isParent && index === 0)?_c('i',{staticClass:\"fas fa-plus-square hover-icon\",on:{\"click\":function($event){return _vm.onAreaSelected(area)}}}):_vm._e(),(field.key === 'timeZoneID')?_c('span',[_vm._v(\" \"+_vm._s(_vm.timeZoneForColumn(area[field.key]))+\" \")]):(field.key === 'disabledAt')?_c('span',{style:(area[field.key] ? 'color: red;' : 'color: green;')},[_vm._v(\" \"+_vm._s(area[field.key] ? 'Disabled' : 'Enabled')+\" \")]):(field.searchable)?_c('span',[_c('text-highlight',{attrs:{\"queries\":_vm.searchQuery,\"highlightStyle\":(_vm.style = 'padding:0;border-radius: 0')}},[_vm._v(\" \"+_vm._s(area[field.key])+\" \")])],1):_c('span',[_vm._v(\" \"+_vm._s(area[field.key])+\" \")]),(!area.isParent\n\t\t\t\t\t\t\t\t\t&& index === _vm.fields.filter(function (f) { return f.visible; }).length -1\n\t\t\t\t\t\t\t\t\t&& _vm.canEditArea(area)\n\t\t\t\t\t\t\t\t\t&& !_vm.isSuiteEnabled)?_c('i',{staticClass:\"fas fa-trash hover-icon mr-2\",attrs:{\"title\":(\"Delete \" + (area.title))},on:{\"click\":function($event){return _vm.onDeleteAreaSelected(area)}}}):_vm._e(),(index === _vm.fields.filter(function (f) { return f.visible; }).length -1\n\t\t\t\t\t\t\t\t\t&& _vm.canEditArea(area))?_c('i',{staticClass:\"fas fa-edit hover-icon\",attrs:{\"title\":(\"Edit \" + (area.title))},on:{\"click\":function($event){return _vm.onEditAreaSelected(area)}}}):(index === _vm.fields.filter(function (f) { return f.visible; }).length -1)?_c('i',{staticClass:\"hover-icon fas fa-eye hover-icon\",attrs:{\"title\":(\"View \" + (area.title))},on:{\"click\":function($event){return _vm.onViewAreaSelected(area)}}}):_vm._e()])}),1)}),(!_vm.isLoading && (!_vm.selectedArea.children || _vm.selectedArea.children.length === 0))?_c('b-tr',[_c('b-td',{attrs:{\"colspan\":_vm.fields.filter(function (f) { return f.visible; }).length}},[_vm._v(\"No child areas found.\")])],1):_vm._e()],2)],1)],1),(_vm.selectedArea.children)?_c('b-pagination',{attrs:{\"total-rows\":_vm.selectedArea.totalRecords,\"per-page\":_vm.resultsPerPage,\"align\":\"center\",\"data-cy\":\"pagination\",\"disabled\":_vm.selectedArea.totalRecords < _vm.resultsPerPage},on:{\"input\":function($event){return _vm.debounceUpdateSearchFilter()}},model:{value:(_vm.selectedPage),callback:function ($$v) {_vm.selectedPage=$$v},expression:\"selectedPage\"}}):_vm._e(),_c('generic-update-modal',{ref:\"genericUpdateModal\",attrs:{\"onAddNew\":_vm.saveNewArea,\"onSave\":_vm.updateArea,\"term\":\"Area\",\"modalItems\":_vm.getModalItems,\"dataList\":_vm.visibleAreas,\"idColumn\":'groupID'},on:{\"closed\":function($event){_vm.selectedAreaRow = _vm.defaultGroupRow}}}),_c('b-modal',{attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"header-class\":\"delete-confirm-modal\"},on:{\"hidden\":function($event){_vm.safeDeleteInput = ''}},model:{value:(_vm.isDeleteConfirmDialogShown),callback:function ($$v) {_vm.isDeleteConfirmDialogShown=$$v},expression:\"isDeleteConfirmDialogShown\"}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header\"},[_c('i',{staticClass:\"fas fa-trash hover-icon\",attrs:{\"title\":\"Delete area Icon\"}}),_c('h4',[_vm._v(\"Delete Area\")])])]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"ksConfirm\",attrs:{\"variant\":\"danger\",\"disabled\":!_vm.isDeleteConfirmed},on:{\"click\":_vm.confirmDelete}},[_vm._v(\" Delete \")]),_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.cancelDelete}},[_vm._v(\" Cancel \")])],1),_c('div',[_c('h5',{staticClass:\"default-error-message\"},[_vm._v(\" Are you sure you want to delete the Area \\\"\"),_c('strong',[_vm._v(_vm._s(_vm.areaToDelete.title))]),_vm._v(\"\\\"? \")]),_c('div',{staticClass:\"delete-action-context\"},[_c('h5',[_vm._v(\"This action will:\")]),_c('ul',_vm._l((_vm.deleteActionMessages),function(deleteMessage,index){return _c('li',{key:index},[_vm._v(_vm._s(deleteMessage))])}),0)]),_c('div',{staticClass:\"safe-delete-container\"},[_c('label',{staticClass:\"row preserve-spaces\",attrs:{\"for\":\"safe-delete-input\"}},[_vm._v(\"To confirm this action, please type \\\"\"),_c('strong',[_vm._v(\"delete \"+_vm._s(_vm.areaToDelete.title))]),_vm._v(\"\\\":\")]),_c('b-input',{staticClass:\"row\",attrs:{\"id\":\"safe-delete-input\",\"placeholder\":\"Type area title\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.confirmDelete($event)}},model:{value:(_vm.safeDeleteInput),callback:function ($$v) {_vm.safeDeleteInput=$$v},expression:\"safeDeleteInput\"}})],1)])],2),(_vm.isBulkAddEnabled)?_c('csv-uploader-wrapper',{attrs:{\"modalItemsCsv\":_vm.getModalItems,\"defaultFile\":_vm.defaultFile,\"progressBulk\":_vm.progressBulk,\"name\":\"Area Bulk\"},on:{\"on-submit\":_vm.bulkOnSubmit,\"on-close\":_vm.onCloseBulk,\"reset-progress\":function($event){_vm.progressBulk = {}}}}):_vm._e(),_c('b-modal',{attrs:{\"id\":\"filterTableModal\",\"size\":\"lg\",\"no-close-on-backdrop\":\"\",\"centered\":\"\",\"role\":\"dialog\"},model:{value:(_vm.showFilter),callback:function ($$v) {_vm.showFilter=$$v},expression:\"showFilter\"}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',[_vm._v(\"Columns\")])])]),_vm._l((_vm.fields.slice(0, -1)),function(field){return _c('div',{key:field.key},[_c('b-form-group',{staticClass:\"custom-control custom-checkbox\"},[_c('span',{staticClass:\"left-filter-span\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(field.visible),expression:\"field.visible\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":field.key},domProps:{\"checked\":Array.isArray(field.visible)?_vm._i(field.visible,null)>-1:(field.visible)},on:{\"change\":function($event){var $$a=field.visible,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(field, \"visible\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(field, \"visible\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(field, \"visible\", $$c)}}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":field.key}},[_vm._v(\"Show \"+_vm._s(field.label))])]),_c('span',{staticClass:\"right-filter-span\",attrs:{\"hidden\":\"\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(field.searchable),expression:\"field.searchable\"}],staticClass:\"custom-control-input\",attrs:{\"disabled\":!field.visible,\"type\":\"checkbox\",\"id\":'searchable' + field.key},domProps:{\"checked\":Array.isArray(field.searchable)?_vm._i(field.searchable,null)>-1:(field.searchable)},on:{\"change\":function($event){var $$a=field.searchable,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(field, \"searchable\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(field, \"searchable\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(field, \"searchable\", $$c)}}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"disabled\":!field.visible,\"for\":(\"searchable \" + (field.key))}},[_vm._v(\"Include in search \"+_vm._s(field.label))])])])],1)}),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-primary pull-right ksConfirm\",on:{\"click\":function($event){_vm.showFilter = false}}},[_vm._v(\"Done\")])])],2)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-container',{attrs:{\"fluid\":\"\"}},[_c('b-row',{staticStyle:{\"box-shadow\":\"inset 0 -1px 0 #ddd\"},attrs:{\"data-cy\":\"area-path\"}},[_c('div',{staticStyle:{\"display\":\"inline-block\"}},[_c('b-button',{staticClass:\"p-1\",staticStyle:{\"display\":\"inline-block\",\"font-size\":\"small\"},attrs:{\"variant\":\"primary\",\"disabled\":_vm.disabled},on:{\"click\":function($event){return _vm.$emit('homeSelected')}}},[_c('i',{staticClass:\"fas fa-home\"})]),_c('span',{staticClass:\"mr-1\"},[_vm._v(\" / \")])],1),_vm._l((_vm.value),function(area,index){return _c('div',{key:index,staticClass:\"area-title\"},[_c('b-button',{staticClass:\"p-1\",attrs:{\"variant\":\"primary\",\"disabled\":_vm.disabled},on:{\"click\":function($event){return _vm.onAreaClicked(area)}}},[_vm._v(\" \"+_vm._s(area.title)+\" \")]),(index < _vm.areasInPath.length - 1)?_c('span',{staticClass:\"mr-1\"},[_vm._v(\" / \")]):_vm._e()],1)}),_c('b-col',{staticClass:\"p-0 pl-2\"},[_c('area-tree-select',{attrs:{\"placeholder\":\"Find an area...\",\"multiple\":true,\"fullPathValue\":true,\"useDrawdownSearch\":false},model:{value:(_vm.selectedArea),callback:function ($$v) {_vm.selectedArea=$$v},expression:\"selectedArea\"}})],1)],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\nimport TreeSelectNode from \"@/types/sv-data/groups/TreeSelectNode\";\nimport { Group } from \"@/types\";\n\n@Component({\n\tcomponents: {\n\t\t\"area-tree-select\": AreaTreeSelect\n\t}\n})\nexport default class AreaTreePath extends Vue {\n\t@Prop()\n\tpublic value;\n\n\t@Prop()\n\tpublic disabled: boolean;\n\n\tprivate localValue: Group [] = [];\n\n\tprivate selectedArea: TreeSelectNode [] = [];\n\n\tprivate onAreaClicked(area: Group) {\n\t\tif (this.disabled) {\n\t\t\treturn;\n\t\t}\n\t\tconst indexClicked = this.value.findIndex(a => a.groupID === area.groupID);\n\t\tif (indexClicked === 0) {\n\t\t\tthis.localValue = [ this.value[indexClicked] ];\n\t\t} else {\n\t\t\tthis.localValue = this.value.slice(0, indexClicked + 1);\n\t\t}\n\n\t\tthis.$emit(\"input\", this.localValue);\n\t\tthis.$emit(\"onAreaSelected\", area.groupID);\n\t}\n\n\t@Watch(\"selectedArea\")\n\tprivate selectedAreaChanged() {\n\t\tif (this.selectedArea && this.selectedArea.length > 0 && this.selectedArea[0]) {\n\t\t\tthis.$emit(\"input\", this.selectedArea.map(i => { return { ...i, groupID: i.id, title: i.label }}));\n\t\t\tthis.$emit(\"onAreaSelected\", this.selectedArea[this.selectedArea.length - 1].id);\n\t\t\tthis.selectedArea = [];\n\t\t}\n\t}\n\n\tprivate get areasInPath() {\n\t\tif (!this.value || this.value.length === 0) {\n\t\t\treturn \"\";\n\t\t}\n\t\treturn this.value.map(x => x.title);\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaTreePath.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaTreePath.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaTreePath.vue?vue&type=template&id=d1204334&scoped=true\"\nimport script from \"./AreaTreePath.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaTreePath.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaTreePath.vue?vue&type=style&index=0&id=d1204334&prod&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 \"d1204334\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.readonly)?_c('div',[_c('p',{staticClass:\"read-only\"},[_c('strong',{class:{'area-disabled' : _vm.areaIsDisabled()}},[_vm._v(_vm._s(_vm.areaIsDisabled() ? 'Disabled' : 'Enabled'))])]),(_vm.area != null)?_c('button',{staticClass:\"btn\",class:{'btn-danger' : !_vm.areaIsDisabled()},on:{\"click\":function($event){$event.preventDefault();_vm.showConfirmation = !_vm.showConfirmation}}},[_vm._v(_vm._s(_vm.areaIsDisabled() ? 'Enable' : 'Disable'))]):_vm._e(),(_vm.area != null)?_c('b-modal',{attrs:{\"id\":\"filterTableModal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\"},model:{value:(_vm.showConfirmation),callback:function ($$v) {_vm.showConfirmation=$$v},expression:\"showConfirmation\"}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',{domProps:{\"textContent\":_vm._s(_vm.areaIsDisabled() ? 'Enable' : 'Disable' + ' Area - ' + _vm.area.title)}})])]),[_c('div',[_c('p',[_vm._v(\" Are you sure you want to \"),_c('strong',[_vm._v(_vm._s(_vm.areaIsDisabled() ? 'Enable' : 'Disable'))]),_vm._v(\" \"+_vm._s(_vm.area.title)+\"? \")]),(!_vm.areaIsDisabled())?_c('p',[_vm._v(\" This will result in \"),_c('strong',[_vm._v(_vm._s(_vm.area.title))]),_vm._v(\" rejecting all incoming alarms. This includes Manual Raise and High Priority Alarms. \")]):_vm._e()])],_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"pull-right ksConfirm\",attrs:{\"variant\":\"danger\"},on:{\"click\":_vm.disableAction}},[_vm._v(\"Yes\")]),_c('b-button',{staticClass:\"pull-right\",attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){_vm.showConfirmation = false}}},[_vm._v(\"No\")])],1)],2):_vm._e()],1):_c('div',[_c('p',{staticClass:\"read-only\"},[_c('strong',{class:{'area-disabled' : _vm.areaIsDisabled()}},[_vm._v(_vm._s(_vm.areaIsDisabled() ? 'Disabled' : 'Enabled'))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { GroupWithPermissions } from \"@/store/areas/types\";\r\n\r\nconst GenericTable = namespace(\"GenericTable\");\r\n\r\n@Component({})\r\nexport default class AreaSetupDisableAreaButton extends Vue {\r\n\t@Prop() public areaProp!: GroupWithPermissions;\r\n\t@Prop() public readonly!: boolean;\r\n\r\n\tprivate area: GroupWithPermissions = null;\r\n\r\n\tprivate showConfirmation: boolean = false;\r\n\r\n\t@GenericTable.Getter getModalRow: any;\r\n\t@GenericTable.Mutation setModalRow: any;\r\n\r\n\tasync created() {\r\n\t\tthis.area = this.areaProp ? this.areaProp : await this.getModalRow;\r\n\t}\r\n\r\n\tprivate areaIsDisabled() {\r\n\t\tlet disabled = true;\r\n\r\n\t\tif (\r\n\t\t\tthis.area &&\r\n\t\t\tthis.area.disabledAt !== undefined &&\r\n\t\t\tthis.area.disabledAt == null\r\n\t\t) {\r\n\t\t\tdisabled = false;\r\n\t\t}\r\n\r\n\t\treturn disabled;\r\n\t}\r\n\r\n\tprivate async disableAction() {\r\n\t\tlet tmp = { ...this.area };\r\n\r\n\t\tif (this.areaIsDisabled()) {\r\n\t\t\ttmp.disabledAt = null;\r\n\t\t} else {\r\n\t\t\ttmp.disabledAt = new Date();\r\n\t\t}\r\n\r\n\t\tthis.area = tmp;\r\n\r\n\t\tthis.$emit(\"input\", tmp.disabledAt);\r\n\r\n\t\tthis.showConfirmation = false;\r\n\t}\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaSetupDisableAreaButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaSetupDisableAreaButton.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaSetupDisableAreaButton.vue?vue&type=template&id=3552eeb6&scoped=true\"\nimport script from \"./AreaSetupDisableAreaButton.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaSetupDisableAreaButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaSetupDisableAreaButton.vue?vue&type=style&index=0&id=3552eeb6&prod&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 \"3552eeb6\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"position-relative h-100\"},[_c('div',{staticStyle:{\"height\":\"40vh\"}},[_c('div',{ref:\"mappingContainer\",staticClass:\"fill-container\"}),(!_vm.readonly)?_c('div',{staticClass:\"control-panel\"},[_c('table',{staticClass:\"w-100 m-1\"},[_c('tr',[_c('td',[_vm._v(\" Line Color: \")]),_c('td',[_c('color-swatch',{attrs:{\"swatch-size\":\"25\",\"trigger-style\":{ width: '25px', height: '25px', borderRadius: '5px', border : '2px solid white' },\"show-fallback\":\"\",\"popover-x\":\"left\",\"fallback-input-type\":\"color\"},model:{value:(_vm.regionArea.borderColor),callback:function ($$v) {_vm.$set(_vm.regionArea, \"borderColor\", $$v)},expression:\"regionArea.borderColor\"}})],1)]),_c('tr',[_c('td',[_vm._v(\" Background Color: \")]),_c('td',[_c('color-swatch',{attrs:{\"swatch-size\":\"25\",\"trigger-style\":{ width: '25px', height: '25px', borderRadius: '5px', border : '2px solid white' },\"show-fallback\":\"\",\"popover-x\":\"left\",\"fallback-input-type\":\"color\"},model:{value:(_vm.regionArea.fillColor),callback:function ($$v) {_vm.$set(_vm.regionArea, \"fillColor\", $$v)},expression:\"regionArea.fillColor\"}})],1)]),_c('tr',[_c('td',{attrs:{\"colspan\":\"2\",\"align\":\"center\"}},[_c('b-button-group',[(!_vm.regionArea.path)?_c('b-button',{attrs:{\"id\":\"btnNew\",\"title\":\"Create Region\"},on:{\"click\":function($event){_vm.drawRegion = !_vm.drawRegion}}},[_c('i',{staticClass:\"fas fa-plus\"})]):_vm._e(),(_vm.regionArea.path)?_c('b-button',{class:[_vm.regionPolygon.editable ? 'btn-primary' : 'btn-secondary'],attrs:{\"id\":\"btnEdit\",\"title\":\"Edit Region\"},on:{\"click\":function($event){return _vm.setPolygonEditState(_vm.regionPolygon ? !_vm.regionPolygon.editable: false)}}},[_c('i',{staticClass:\"fas fa-edit\"})]):_vm._e(),(_vm.regionArea.path)?_c('b-button',{attrs:{\"id\":\"btnDelete\",\"title\":\"Delete Region\"},on:{\"click\":_vm.removeRegion}},[_c('i',{staticClass:\"fas fa-trash\"})]):_vm._e(),_c('b-button',{attrs:{\"id\":\"btnMapMode\",\"title\":\"Toggle Map Mode\"},on:{\"click\":function($event){_vm.mapLightMode = !_vm.mapLightMode}}},[_c('i',{staticClass:\"fas\",class:_vm.mapLightMode ? 'fa-sun' : 'fa-moon'})])],1)],1)])])]):_vm._e(),_c('div',{staticClass:\"zoom-control\"},[_c('i',{staticClass:\"fas fa-fw fa-2x fa-plus\",staticStyle:{\"padding-top\":\"8px\",\"cursor\":\"pointer\",\"font-weight\":\"400\"},on:{\"click\":function($event){return _vm.zoom(1)}}}),_c('br'),_c('i',{staticClass:\"fas fa-fw fa-2x fa-minus\",staticStyle:{\"cursor\":\"pointer\",\"font-weight\":\"400\"},on:{\"click\":function($event){return _vm.zoom(-1)}}})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Mixins, Watch, Prop } from \"vue-property-decorator\";\r\nimport GoogleMap from '@/scripts/mapping/map';\r\nimport { getMapStyle } from '@/scripts/mapping/mapStyle';\r\nimport getScript from '@/services/insertScript.service';\r\nimport { Getter } from 'vuex-class';\r\nimport VSwatches from 'vue-swatches'\r\nimport \"vue-swatches/dist/vue-swatches.css\"\r\nimport MapAreaRegion from '@/types/sv-data/maps/MapAreaRegion';\r\nimport ILatLng from \"@sureview/v2-mapping-saas\";\r\nimport { mapRegionMixins } from '@/mixins'\r\nimport { AreaLocation } from \"@/views/AreaSetup/AreaLocationSetup.vue\";\r\nimport HideMapMixin from \"@/mixins/HideMapMixin\";\r\n\r\nconst {\r\n getPolygonOptionsForRegion,\r\n defaultPolygonOptions\r\n} = mapRegionMixins.methods;\r\n\r\n@Component({\r\n components: {\r\n \"color-swatch\" : VSwatches\r\n }\r\n})\r\nexport default class AreaRegionSetup extends Mixins(HideMapMixin) {\r\n @Getter getMapType: any;\r\n @Getter getHideLabels: any;\r\n\r\n @Prop()\r\n private value: AreaLocation;\r\n\r\n @Prop()\r\n private areaLocation: any | null;\r\n\r\n @Prop({default: false, type:Boolean})\r\n private readonly: Boolean;\r\n\r\n public $refs!: {\r\n mappingContainer: HTMLElement;\r\n }\r\n\r\n private regionArea: MapAreaRegion = {\r\n regionId: -1,\r\n groupId: -1,\r\n tenantId: -1,\r\n path: null,\r\n borderColor: null,\r\n fillColor: null,\r\n };\r\n\r\n private drawRegion: boolean = false;\r\n private map: GoogleMap | null = null;\r\n private drawingManager: google.maps.drawing.DrawingManager | null = null;\r\n private regionPolygon: google.maps.Polygon | null = null;\r\n private mapLightMode: boolean = false;\r\n\r\n @Watch('drawRegion')\r\n private drawRegionWatch(): void {\r\n this.drawingManager!.setOptions({\r\n drawingControl: this.drawRegion,\r\n drawingMode: this.drawRegion ?\r\n google.maps.drawing.OverlayType.POLYGON :\r\n null\r\n });\r\n }\r\n\r\n private getPath(ploygon: google.maps.Polygon): ILatLng[] {\r\n return ploygon.getPath()\r\n .getArray()\r\n .map(point => {\r\n return { lat: point.lat(), lng: point.lng() };\r\n });\r\n }\r\n\r\n private renderRegion(): void {\r\n const polygonOptions = getPolygonOptionsForRegion(this.regionArea);\r\n this.regionPolygon = new google.maps.Polygon({\r\n map: this.map!.map,\r\n paths: JSON.parse(this.regionArea.path),\r\n ...polygonOptions\r\n });\r\n\r\n //Add listener when a new point is added\r\n google.maps.event.addListener(this.regionPolygon.getPath(), 'insert_at', () => {\r\n this.regionArea.path = JSON.stringify(this.getPath(this.regionPolygon));\r\n });\r\n\r\n //Add listener when a point is moved\r\n google.maps.event.addListener(this.regionPolygon.getPath(), 'set_at', () => {\r\n this.regionArea.path = JSON.stringify(this.getPath(this.regionPolygon));\r\n });\r\n\r\n var bounds = new google.maps.LatLngBounds();\r\n\r\n this.regionPolygon.getPaths().forEach(function(path) {\r\n path.forEach(function(latlng) {\r\n bounds.extend(latlng);\r\n });\r\n });\r\n\r\n this.map.map.fitBounds(bounds);\r\n }\r\n\r\n public async initMap() : Promise {\r\n if (this.isHideMapsEnabled) {\r\n return;\r\n }\r\n\r\n await getScript(\r\n `https://maps.googleapis.com/maps/api/js?key=`\r\n + `${process.env.VUE_APP_GOOGLE_MAPS_API_KEY}`\r\n + `&libraries=drawing,places,geometry`\r\n ).then(() => {\r\n this.map = new GoogleMap(\r\n this.$refs.mappingContainer,\r\n { lat: 0, lng: 0}, // start position\r\n 5, // Zoom level\r\n false,\r\n this.getMapType,\r\n getMapStyle(this.getMapType, this.getHideLabels, this.mapLightMode ? 'light' : 'dark'),\r\n );\r\n\r\n //Display the google maps api zoom control as it doesn't like modals, instead we've got our own\r\n this.map.map.setOptions({scrollwheel: false, zoomControl: false});\r\n\r\n this.drawingManager = new google.maps.drawing.DrawingManager({\r\n drawingMode: null,\r\n drawingControl: this.drawRegion,\r\n drawingControlOptions: {\r\n position: google.maps.ControlPosition.TOP_CENTER,\r\n drawingModes: ['polygon']\r\n },\r\n polygonOptions: defaultPolygonOptions\r\n } as any);\r\n\r\n this.drawingManager.setMap(this.map!.map);\r\n\r\n // on zone add\r\n google.maps.event.addListener(\r\n this.drawingManager,\r\n 'polygoncomplete',\r\n (polygon: google.maps.Polygon) => {\r\n this.drawRegion = false;\r\n this.regionPolygon = polygon;\r\n this.regionArea.path = JSON.stringify(this.getPath(polygon));\r\n\r\n //Add listener when a new point is added\r\n google.maps.event.addListener(polygon.getPath(), 'insert_at', () => {\r\n this.regionArea.path = JSON.stringify(this.getPath(polygon));\r\n });\r\n\r\n //Add listener when a point is moved\r\n google.maps.event.addListener(polygon.getPath(), 'set_at', () => {\r\n this.regionArea.path = JSON.stringify(this.getPath(polygon));\r\n });\r\n }\r\n );\r\n });\r\n }\r\n\r\n private setPolygonEditState(editable: boolean) : void {\r\n if(!this.regionPolygon)\r\n return;\r\n\r\n this.regionPolygon.setEditable(editable);\r\n }\r\n\r\n private async mounted(): Promise {\r\n await this.initMap();\r\n if (this.value && this.value.mapAreaRegion) {\r\n\t\t\tthis.regionArea = {...this.value.mapAreaRegion}\r\n\t\t}\r\n\r\n if(!this.regionArea.borderColor){\r\n this.regionArea.borderColor = \"#2196f3\";\r\n }\r\n\r\n if(!this.regionArea.fillColor) {\r\n this.regionArea.fillColor = \"#2196f3\";\r\n }\r\n\r\n if(this.regionArea.path) {\r\n this.renderRegion();\r\n } else {\r\n this.setMapOnLocation();\r\n }\r\n\r\n this.mapLightMode = true;\r\n }\r\n\r\n @Watch(\"areaLocation\")\r\n private setMapOnLocation(): void {\r\n if(!this.areaLocation || !this.areaLocation.lat || !this.map.map || (this.regionArea && this.regionArea.path))\r\n return;\r\n\r\n this.map.map.setCenter(this.areaLocation);\r\n this.map.map.setZoom(11);\r\n }\r\n\r\n @Watch(\"regionArea\", { deep: true })\r\n private regionAreaUpdated(newRegion: MapAreaRegion | null, oldRegion: MapAreaRegion | null): void{\r\n if(!oldRegion || !this.drawingManager)\r\n return;\r\n\r\n let polygonOptions = getPolygonOptionsForRegion(newRegion)\r\n\r\n this.drawingManager.setOptions({\r\n polygonOptions: polygonOptions\r\n });\r\n\r\n if(!this.regionPolygon)\r\n return;\r\n\r\n this.regionPolygon.setOptions({...polygonOptions});\r\n this.$emit(\"input\", {\r\n\t\t\tmapAreaRegion: this.regionArea\r\n\t\t});\r\n\t}\r\n\r\n\r\n private removeRegion(): void {\r\n if(this.regionPolygon){\r\n this.regionPolygon.setMap(null);\r\n this.regionPolygon = null;\r\n this.regionArea.path = null;\r\n }\r\n }\r\n\r\n @Watch(\"mapLightMode\")\r\n private mapModeWatch(): void {\r\n if(!this.map || !this.map.map)\r\n return;\r\n\r\n const mapStyles = getMapStyle(this.getMapType, this.getHideLabels, this.mapLightMode ? \"light\" : \"dark\");\r\n\r\n this.map.map.setOptions({\r\n styles: mapStyles,\r\n mapTypeId: google.maps.MapTypeId.ROADMAP\r\n });\r\n }\r\n\r\n private zoom(value: number): void {\r\n if(!this.map || !this.map.map)\r\n return;\r\n\r\n let zoom = this.map.map.getZoom() + value;\r\n //Google maps api min zoom = 0, maxZoom = 22\r\n if(zoom < 0) zoom = 0;\r\n if(zoom > 22) zoom = 22;\r\n this.map.map.setZoom(zoom);\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaRegionSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaRegionSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaRegionSetup.vue?vue&type=template&id=09c11b9d&scoped=true\"\nimport script from \"./AreaRegionSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaRegionSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaRegionSetup.vue?vue&type=style&index=0&id=09c11b9d&prod&scoped=true&lang=css\"\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 \"09c11b9d\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Mixins, Vue, Watch } from \"vue-property-decorator\";\nimport TextHighlight from \"vue-text-highlight\"\nimport { Action, Getter, namespace } from \"vuex-class\";\nimport AreaTreePath from \"@/views/AreaSetup/AreaTreePath.vue\";\nimport { cloneDeep, debounce, get, invert } from \"lodash\";\nimport api from \"@/services/api.service\";\nimport {\n\tFeaturesList,\n\tTimeZone,\n\tUserPermissions\n} from \"@/store/types\";\nimport GroupRow from \"@/types/sv-data/groups/GroupRow\";\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\nimport AreaSetupDisableAreaButton from \"@/components/areas/AreaSetupDisableAreaButton.vue\";\nimport { ModalItemCSV } from \"@/store/csv-form-handler/types\";\nimport GenericUpdateModal from \"@/components/table/generic-update-modal.vue\";\nimport CsvUploaderWrapper from \"@/components/csv-uploader/csv-uploader-wrapper.vue\";\nimport MapAreaRegion from '@/types/sv-data/maps/MapAreaRegion';\nimport AreaLocationSetup from './AreaLocationSetup.vue';\nimport GPSService from '@/services/gps.service';\nimport Script from '@/types/sv-data/events/Script';\nimport { AreaLocation } from \"@/views/AreaSetup/AreaLocationSetup.vue\";\nimport AreaRegionSetup from \"@/views/AreaSetup/AreaRegionSetup.vue\";\nimport GroupRowPagedResponse from \"@/types/sv-data/groups/GrowRowPagedResponse\";\nimport { GetChildGroupsListRequest } from \"@/types/sv-data/groups/GetChildGroupsListRequest\";\nimport { TableHeader } from \"@/components/table/generic-table.vue\";\nimport HideMapMixin from \"@/mixins/HideMapMixin\";\nimport { CustomFieldDto, CustomFieldTableTypes } from \"@/store/custom-fields/types\";\nimport { MapCustomFieldToModalItem } from \"@/utils/CustomFieldLogic\";\nimport { customFieldMixins } from \"@/mixins/customFieldMixins\";\nimport { helpers } from 'vuelidate/lib/validators';\nimport { serviceLevelAgreementMixins } from '@/mixins';\n\nconst { mapArrayFieldsToObject } = customFieldMixins.methods;\nconst { validateSlaBreachSecondsValue, generateErrorMessage } = serviceLevelAgreementMixins.methods;\n\nconst geoCoder = new GPSService();\nconst Areas = namespace(\"areas\");\nconst UserContext = namespace(\"userContext\");\nconst CSVFormHandler = namespace(\"csvFormHandler\");\nconst CustomFields = namespace(\"customFields\");\n\ninterface SelectedGroupRow extends GroupRowDetails {\n\ttotalRecords: number\n}\n\ninterface TimeZoneItem {\n\ttimeZoneID: number,\n\ttitle: string\n}\n\ninterface GroupRowDetails extends GroupRow {\n\tlocation: AreaLocation,\n\treadOnly?: Boolean,\n\treadOnlyMessage?: string\n}\n\ninterface GroupErrorDetails {\n\trowId: number,\n\terrorMessage: string\n}\n\n@Component({\n\tcomponents: {\n\t\t\"text-highlight\": TextHighlight,\n\t\t\"area-tree-path\": AreaTreePath,\n\t\t\"area-tree-select\": AreaTreeSelect,\n\t\t\"csv-uploader-wrapper\": CsvUploaderWrapper,\n\t\t\"generic-update-modal\": GenericUpdateModal\n\t}\n})\nexport default class AreaTable extends Mixins(HideMapMixin) {\n\t$refs!: {\n\t\tgenericUpdateModal: GenericUpdateModal;\n\t\trow0: any;\n\t\tselectedArea: any\n\t};\n\n\t@Getter(\"getTimeZones\") timeZoneList: TimeZone[];\n\t@Getter(\"getUserTenantGroupId\") private tenantId: number;\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\n\t@Getter getPermissions: UserPermissions;\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\t@Getter(\"getMaxResponseSlaDuration\") maxResponseSlaDuration: number;\n\n\t@Action getTimeZones: () => Promise;\n\n\t@Areas.Action fetchAreaDictionary: () => Promise;\n\t@Areas.State areaDictionary: Map;\n\n\t@CustomFields.Action retrieveCustomFields: ({ tableType: number, live: boolean }) => Promise;\n\t@CustomFields.State areaCustomFields: CustomFieldDto[];\n\n\t@UserContext.Action(\"fetchOverview\") fetchTenantOverview: () => Promise;\n\n\tprivate defaultGroupRow: GroupRowDetails = {\n\t\tgroupID: 0,\n\t\ttitle: \"\",\n\t\ttimeZoneID: 0,\n\t\tgroupTypeID: 1,\n\t\tlocation: {\n\t\t\tmapAreaRegion: null,\n\t\t\taddress: \"\",\n\t\t\tlatLong: \"\"\n\t\t},\n\t\tlatLong: null\n\t};\n\n\tprivate selectedAreaRow: GroupRowDetails = this.defaultGroupRow;\n\tprivate visibleAreas: GroupRow[] = [];\n\tprivate areaToDelete: GroupRow = this.defaultGroupRow;\n\tprivate safeDeleteInput: string = \"\";\n\tprivate viewPermissions: string [] = ['CanViewSiteSetup', 'CanEditSiteSetup'];\n\tprivate editPermissions: string [] = ['CanEditSiteSetup'];\n\tprivate groupsWithEditPermissions: number [] = [];\n\tprivate timeZonesFormatted: TimeZoneItem [] = [];\n\tprivate isDeleteConfirmDialogShown: boolean = false;\n\tprivate deleteActionMessages: string [] = [\n\t\t\"Delete the audit trail for this area\",\n\t\t\"Delete all users for this area\",\n\t\t\"Delete all notes associated with this area\"\n\t];\n\tprivate progressBulk = {};\n\tprivate selectedAreaPath: GroupRow[] = [];\n\tprivate actionPlans: Script[] = [];\n\tprivate bulkNestedLevels: any[] = [];\n\tprivate bulkUploadResults = [];\n\tprivate batchCurrentValue: number = 0;\n\tprivate readonly customFieldTableType: number = CustomFieldTableTypes.Area;\n\n\tprivate get getModalItems(): ModalItemCSV[] {\n\t\tlet modalItems = [\n\t\t\t{\n\t\t\t\ttitle: \"Title\",\n\t\t\t\tkey: \"title\",\n\t\t\t\tdataType: \"text\",\n\t\t\t\tplaceholder: \"Area Title\",\n\t\t\t\trequired: true,\n\t\t\t\tmaxLength: 200,\n\t\t\t\tcsvComponent: 'input',\n\t\t\t\tcsvValidation: {\n\t\t\t\t\tvalidationCell({ currentElement }) {\n\t\t\t\t\t\treturn { isValid: !!currentElement.csvValue }\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 1\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Reference Id\",\n\t\t\t\tkey: \"referenceId\",\n\t\t\t\tvisible: true,\n\t\t\t\tdataType: \"text\",\n\t\t\t\tplaceholder: \"Reference Id\",\n\t\t\t\tmaxLength: 50,\n\t\t\t\tcsvComponent: 'input',\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 2\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Location Details\",\n\t\t\t\tkey: \"location\",\n\t\t\t\tdataType: \"component\",\n\t\t\t\tvisible: this.isAreaLocationEnabled,\n\t\t\t\trequired: this.isAreaLocationEnabled,\n\t\t\t\tcsvExclude: true,\n\t\t\t\tprops: {\n\t\t\t\t\tvalue: this.selectedAreaRow.location,\n\t\t\t\t\treadonly: !this.groupsWithEditPermissions.includes(this.selectedAreaRow.groupID) || this.isSuiteEnabled\n\t\t\t\t},\n\t\t\t\tdata: AreaLocationSetup,\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 3\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Address\",\n\t\t\t\tkey: \"address\",\n\t\t\t\tdataType: \"text\",\n\t\t\t\tnewOnly: false,\n\t\t\t\trequired: !this.isAreaLocationEnabled,\n\t\t\t\tvisible: !this.isAreaLocationEnabled,\n\t\t\t\tplaceholder: \"123 High Street\",\n\t\t\t\tmaxLength: 500,\n\t\t\t\tcsvComponent: 'input',\n\t\t\t\tcsvValidation: {\n\t\t\t\t\tvalidationCell({ currentElement }: any) {\n\t\t\t\t\t\treturn { isValid: !!currentElement.csvValue }\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 4\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Telephone\",\n\t\t\t\tkey: \"telephone\",\n\t\t\t\tdataType: \"text\",\n\t\t\t\tmaxLength: 50,\n\t\t\t\tcsvComponent: 'input',\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 5\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Alt. Telephone\",\n\t\t\t\tkey: \"telephone2\",\n\t\t\t\tdataType: \"text\",\n\t\t\t\tmaxLength: 50,\n\t\t\t\tcsvComponent: 'input',\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 6\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Telephone Fire\",\n\t\t\t\tkey: \"telephoneFire\",\n\t\t\t\tdataType: \"text\",\n\t\t\t\tmaxLength: 50,\n\t\t\t\tcsvComponent: 'input',\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 7\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Telephone Police\",\n\t\t\t\tkey: \"telephonePolice\",\n\t\t\t\tdataType: \"text\",\n\t\t\t\tmaxLength: 50,\n\t\t\t\tcsvComponent: 'input',\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 8\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Time Zone\",\n\t\t\t\tkey: \"timeZoneID\",\n\t\t\t\tdataType: \"vselect3\",\n\t\t\t\tprops: {\n\t\t\t\t\treduce: (t) => t.timeZoneID\n\t\t\t\t},\n\t\t\t\tdefaultValue: this.selectedArea.timeZoneID,\n\t\t\t\tdata: this.timeZonesFormatted,\n\t\t\t\tplaceholder: \"Choose Timezone Area\",\n\t\t\t\trequired: true,\n\t\t\t\tcsvComponent: 'select',\n\t\t\t\tcsvData: this.timeZoneList && this.timeZoneList.map(v => v.id) || [],\n\t\t\t\tcsvValidation: {\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tisValid: !!this.timeZoneList.find(({ id }) => currentElement.csvValue === id)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 8\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Parent Area\",\n\t\t\t\tkey: \"parentGroupID\",\n\t\t\t\tdataType: \"component\",\n\t\t\t\tdata: AreaTreeSelect,\n\t\t\t\tprops: {\n\t\t\t\t\treduce: (a) => a.id,\n\t\t\t\t\tclearable: false,\n\t\t\t\t},\n\t\t\t\tdefaultValue: this.selectedArea.groupID,\n\t\t\t\trequired: this.isParentRequired(),\n\t\t\t\tvisible: this.isParentRequired(),\n\t\t\t\tcsvComponent: 'select',\n\t\t\t\tcsvData: Object.keys(this.areasByTitle),\n\t\t\t\tcsvUniteData: true,\n\t\t\t\tcsvUnitedKey: \"Title\",\n\t\t\t\tcsvValidation: {\n\t\t\t\t\tvalidationCell: ({ currentElement, formData }: any) => {\n\t\t\t\t\t\tconst currentRow = formData[currentElement.rowId]\n\t\t\t\t\t\tconst indexTitle = currentRow.findIndex(({ title }) => title === 'Title')\n\t\t\t\t\t\tconst indexParentArea = currentRow.findIndex(({ title }) => title === 'Parent Area')\n\t\t\t\t\t\tconst currentTitle = currentRow[indexTitle]\n\t\t\t\t\t\tconst findTitle = currentElement.unionData.find(v => v === currentElement.csvValue)\n\n\t\t\t\t\t\tif(!findTitle) return { isValid: false }\n\n\t\t\t\t\t\tconst isTitleAlreadyExist = this.areasByTitle[currentElement.csvValue] || currentElement.csvValue === \"\"\n\t\t\t\t\t\tconst isSameName = currentTitle.csvValue === currentElement.csvValue\n\n\t\t\t\t\t\tif (isTitleAlreadyExist) return { isValid: isTitleAlreadyExist }\n\t\t\t\t\t\tif (isSameName) return { isValid: false }\n\n\t\t\t\t\t\tconst linkedRows = formData.filter(v => {\n\t\t\t\t\t\t\tconst { csvValue } = v[indexTitle]\n\n\t\t\t\t\t\t\treturn csvValue === currentElement.csvValue\n\t\t\t\t\t\t})\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tisValid: !linkedRows.some(v => v[indexParentArea].csvValue === currentTitle.csvValue)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 9\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Manual Tour Action Plan\",\n\t\t\t\tkey: \"scriptId\",\n\t\t\t\tdescription: \"Action plan to use when a manual tour is raised against this area\",\n\t\t\t\tdataType: \"vselect3\",\n\t\t\t\tcsvExclude: !this.isManualTourActionPlanEnabled,\n\t\t\t\tdata: this.actionPlans,\n\t\t\t\tvisible: this.isManualTourActionPlanEnabled,\n\t\t\t\tprops: {\n\t\t\t\t\treduce: script => script.scriptID,\n\t\t\t\t\treadonly: !this.groupsWithEditPermissions.includes(this.selectedAreaRow.groupID)\n\t\t\t\t},\n\t\t\t\tplaceholder: \"Choose Action Plan\",\n\t\t\t\tcsvComponent: 'select',\n\t\t\t\tcsvData: this.actionPlans && this.actionPlans.map(v => v.title) || [],\n\t\t\t\tcsvValidation: {\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tisValid: !!this.actionPlans.find(({ title }) => currentElement.csvValue === title)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\torder: 10\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Area Status\",\n\t\t\t\tkey: \"disabledAt\",\n\t\t\t\tdataType: \"component\",\n\t\t\t\tprops: {\n\t\t\t\t\tareaProp: this.selectedAreaRow,\n\t\t\t\t\treadonly: !this.groupsWithEditPermissions.includes(this.selectedAreaRow.groupID)\n\t\t\t\t},\n\t\t\t\tdata: AreaSetupDisableAreaButton,\n\t\t\t\tupdateOnly: true,\n\t\t\t\tcsvExclude: true,\n\t\t\t\torder: 11\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Region\",\n\t\t\t\tkey: \"location\",\n\t\t\t\tdataType: \"component\",\n\t\t\t\tcsvExclude: true,\n\t\t\t\tprops: {\n\t\t\t\t\tvalue: this.selectedAreaRow.location,\n\t\t\t\t\tareaLocation: this.selectedAreaRow.location.latLong,\n\t\t\t\t\treadonly: !this.groupsWithEditPermissions.includes(this.selectedAreaRow.groupID)\n\t\t\t\t},\n\t\t\t\tdata: AreaRegionSetup,\n\t\t\t\tvisible: !this.isAreaLocationEnabled && this.isAreaRegionsEnabled,\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 12\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Summary\",\n\t\t\t\tkey: \"notes\",\n\t\t\t\tdataType: \"textarea\",\n\t\t\t\tplaceholder: \"Area Summary...\",\n\t\t\t\tcsvComponent: 'input',\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 13\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Latitude and Longitude\",\n\t\t\t\tkey: \"latLong\",\n\t\t\t\tdataType: \"text\",\n\t\t\t\tvisible: false,\n\t\t\t\tcsvComponent: 'input',\n\t\t\t\tcsvValidation: {\n\t\t\t\t\tvalidationCell({ currentElement }) {\n\t\t\t\t\t\tif(!currentElement.csvValue){\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tisValid: false,\n\t\t\t\t\t\t\t\tmessage: \"A latitude and longitude is required.\"\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttry\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tconst latLng = geoCoder.tryConvertStringToGeoCodeLocation(currentElement.csvValue);\n\t\t\t\t\t\t\tif (!latLng && !this.isHideMapsEnabled) throw \"invalid latlng\";\n\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tisValid: true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tisValid: false,\n\t\t\t\t\t\t\t\tmessage: \"Latitude and longitude is invalid.\"\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\treadOnly: this.isSuiteEnabled,\n\t\t\t\torder: 14\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Max Mask Duration (minutes)\",\n\t\t\t\tkey: \"maskDurationLimit\",\n\t\t\t\tdataType: \"number\",\n\t\t\t\tmaxLength: 10,\n\t\t\t\tmin: 0,\n\t\t\t\tcsvComponent: 'input',\n\t\t\t\tvisible: this.isMaxMaskDurationEnabled,\n\t\t\t\torder: 15\n\t\t\t},\n\t\t\t{\n\t\t\ttitle: \"Service Level Agreement (SLA) in Seconds\",\n\t\t\tkey: \"slaBreachSeconds\",\n\t\t\tdataType: \"number\",\n\t\t\treadOnly: !(this.isServiceLevelAgreementsEnabled && this.getPermissions.canEditSLAs),\n\t\t\tvisible: this.isServiceLevelAgreementsEnabled && (this.getPermissions.canViewSLAs || this.getPermissions.canEditSLAs),\n\t\t\tplaceholder: 'Enter the number of seconds permitted before an alarm breaches the SLA.',\n\t\t\tdefaultValue: null,\n\t\t\tmin: 0,\n\t\t\tcsvComponent: 'number',\n\t\t\tcsvExclude: !(this.isServiceLevelAgreementsEnabled && this.getPermissions.canEditSLAs),\n\t\t\tcsvValidation: {\n\t\t\t\tvalidationCell: ({ currentElement }) => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tisValid: validateSlaBreachSecondsValue(currentElement.csvValue, this.maxResponseSlaDuration)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tvalidations: {\n\t\t\t\tisSlaValueValid: helpers.withParams(\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"isSlaValueValid\",\n\t\t\t\t\t\terrorMessage: generateErrorMessage(this.maxResponseSlaDuration)\n\t\t\t\t\t},\n\t\t\t\t\t(value) => {\n\t\t\t\t\t\treturn validateSlaBreachSecondsValue(value, this.maxResponseSlaDuration)\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Disable Masking\",\n\t\t\t\tkey: \"disableMasking\",\n\t\t\t\tdataType: \"checkbox\",\n\t\t\t\tdefaultValue: false,\n\t\t\t\tvisible: this.isDisableMaskingEnabled\n\t\t\t},\n\t\t\t{\n\t\t\t\ttitle: \"Disable On-Test\",\n\t\t\t\tkey: \"disableOnTest\",\n\t\t\t\tdataType: \"checkbox\",\n\t\t\t\tdefaultValue: false,\n\t\t\t\tvisible: this.isDisableOnTestEnabled\n\t\t\t}\n\t\t] as ModalItemCSV[];\n\n\t\tif (this.isCustomFieldsEnabled) {\n\t\t\ttry {\n\t\t\tvar genericModalItem: ModalItemCSV = {\n\t\t\t\ttitle: \"\",\n\t\t\t\tkey: \"\",\n\t\t\t\tdataType: null,\n\t\t\t\treadOnly: true,\n\t\t\t\torder: modalItems.length + 1\n\t\t\t};\n\n\t\t\tconst areaCustomFieldIds: string[] = this.selectedAreaRow.customFieldValues ? this.selectedAreaRow.customFieldValues.map(cf => cf.id) : [];\n\t\t\tconst populatedCustomFields = this.areaCustomFields.filter(cf => areaCustomFieldIds.includes(cf.id));\n\n\t\t\tfor (let i = 0; i < populatedCustomFields.length; i++) {\n\t\t\t\tlet customFieldModalItem = MapCustomFieldToModalItem(populatedCustomFields[i], cloneDeep(genericModalItem));\n\t\t\t\tmodalItems.push(customFieldModalItem as ModalItemCSV);\n\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(\"Unexpected error displaying custom fields: \", err);\n\t\t\t}\n\t\t}\n\n\t\treturn modalItems;\n\t}\n\n\tprivate get fields(): any[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\tkey: \"groupID\",\n\t\t\t\tlabel: \"GroupId\",\n\t\t\t\tvisible: false,\n\t\t\t\tsortable: true\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"title\",\n\t\t\t\tlabel: \"Title\",\n\t\t\t\tsortable: true,\n\t\t\t\tsortingBy: \"none\",\n\t\t\t\tvisible: true,\n\t\t\t\tsearchable: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"address\",\n\t\t\t\tlabel: \"Address\",\n\t\t\t\tsortable: true,\n\t\t\t\tsortingBy: \"none\",\n\t\t\t\tvisible: true,\n\t\t\t\tsearchable: true,\n\t\t\t\tthStyle: \"width:30%;max-width:300px!important;\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"telephone\",\n\t\t\t\tlabel: \"Telephone\",\n\t\t\t\tsortable: true,\n\t\t\t\tsortingBy: \"none\",\n\t\t\t\tvisible: true,\n\t\t\t\tsearchable: true,\n\t\t\t\tthStyle: \"width:120px;\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"telephone2\",\n\t\t\t\tlabel: \"Alt. Telephone\",\n\t\t\t\tsortable: true,\n\t\t\t\tsortingBy: \"none\",\n\t\t\t\tvisible: true,\n\t\t\t\tsearchable: true,\n\t\t\t\tthStyle: \"width:120px;\",\n\t\t\t\tsortKey: \"AltTelephone\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"telephoneFire\",\n\t\t\t\tlabel: \"Telephone Fire\",\n\t\t\t\tsortable: true,\n\t\t\t\tsortingBy: \"none\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"telephonePolice\",\n\t\t\t\tlabel: \"Telephone Police\",\n\t\t\t\tsortable: true,\n\t\t\t\tsortingBy: \"none\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"timeZoneID\",\n\t\t\t\tlabel: \"Time Zone\",\n\t\t\t\tsortable: true,\n\t\t\t\tsortingBy: \"none\",\n\t\t\t\tsortKey: \"TimeZone\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"notes\",\n\t\t\t\tlabel: \"Summary\",\n\t\t\t\tsortable: true,\n\t\t\t\tsortingBy: \"none\",\n\t\t\t\tvisible: true,\n\t\t\t\tsearchable: true,\n\t\t\t\tsortKey: \"Summary\"\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"disabledAt\",\n\t\t\t\tlabel: \"Status\",\n\t\t\t\tsortable: true,\n\t\t\t\tsortingBy: \"none\",\n\t\t\t\tsortKey: \"Status\",\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"maskDurationLimit\",\n\t\t\t\tlabel: \"Max Mask Duration (minutes)\",\n\t\t\t\tsortable: false,\n\t\t\t\tsortingBy: \"none\",\n\t\t\t\tvisible: this.isMaxMaskDurationEnabled,\n\t\t\t},\n\t\t{\n\t\t\tkey: \"options\",\n\t\t\tvisible: true\n\t\t}\n\t\t];\n\t}\n\n\tprivate selectedArea: SelectedGroupRow = {\n\t\tgroupID: -1,\n\t\ttitle: \"My Areas\",\n\t\tgroupTypeID: 1,\n\t\tchildren: [],\n\t\tisParent: true,\n\t\tarmed: false,\n\t\ttimeZoneID: -1,\n\t\ttotalRecords: 0,\n\t\tlocation: null\n\t};\n\tprivate selectedPage: number = 1;\n\tprivate resultsPerPage: string = \"25\";\n\tprivate resultsPerPageUpdated: string = \"25\";\n\tprivate debounceUpdateSearchFilter;\n\tprivate searchQuery: string = \"\";\n\tprivate selectionHistory: SelectedGroupRow[] = [];\n\tprivate currentSelectionHistoryIndex: number = 0;\n\tprivate areaTreePath: GroupRow[] = [];\n\tprivate areaTreePathHistory: GroupRow[][] = [];\n\tprivate currentAreaTreePathHistoryIndex: number = 0;\n\tprivate isLoading: boolean = false;\n\tprivate showFilter: boolean = false;\n\tprivate tableHeight: string = \"\";\n\tprivate shortcuts = {\n\t\tnavigateBackward: [\"alt\", \"arrowleft\"],\n\t\tnavigateForward: [\"alt\", \"arrowright\"]\n\t};\n\n\tprivate parentIsRequired = true;\n\n\tprivate sortByColumn: string = \"title\";\n\tprivate sortDirection: string = \"ascending\";\n\n\tprivate isParentRequired() {\n\t\treturn this.parentIsRequired;\n\t}\n\n\t//Getters\n\tprivate get isDisableMaskingEnabled(): boolean {\n\t\treturn this.getFeature([\"Areas\", \"DisableMasking\"])\n\t}\n\n\tprivate get isDisableOnTestEnabled(): boolean {\n\t\treturn this.getFeature([\"Areas\", \"DisableOnTest\"])\n\t}\n\n\tprivate get isAreaRegionsEnabled(): boolean {\n\t\treturn this.getFeature([\"Areas\", \"Regions\"]) && !this.isHideMapsEnabled;\n\t}\n\n\tprivate get isAreaLocationEnabled(): boolean {\n\t\treturn this.getFeature([\"Areas\", \"Location\"]) && !this.isHideMapsEnabled;\n\t}\n\n\tprivate get isManualTourActionPlanEnabled(): boolean {\n\t\treturn this.getFeature([\"Areas\", \"ManualTourActionPlans\"]);\n\t}\n\n\tprivate get isMaxMaskDurationEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Alarms\", \"Masking\", \"MaxMaskDuration\"], false);\n\t}\n\n\tprivate get isSuiteEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Suite\"]);\n\t}\n\n\tprivate get isCustomFieldsEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"CustomFields\"]);\n\t}\n\n\tprivate get isServiceLevelAgreementsEnabled(): boolean {\n\t\treturn !!get(this.featuresList, [\"Alarms\", \"SLAs\"]);\n\t}\n\n\tprivate get areasByTitle() {\n\t\treturn invert(this.areaDictionary);\n\t}\n\n\tprivate get defaultFile() {\n\t\tconst modalItems = this.getModalItems;\n\t\tconst headers = modalItems.filter(({ csvExclude }) => !csvExclude).map(({ title }) => title);\n\t\tconst body = headers.map( v => '');\n\t\treturn {\n\t\t\tname: 'AreaTemplate.csv',\n\t\t\tdata: `${headers.join()}\\r\\n${body.join()}`\n\t\t};\n\t}\n\n\tprivate get isDeleteConfirmed(): boolean {\n\t\tif(!this.areaToDelete || !this.areaToDelete.title)\n\t\t\treturn false;\n\n\t\treturn this.safeDeleteInput == `delete ${this.areaToDelete.title}`\n\t}\n\n\tprivate get isBulkAddEnabled(): boolean {\n\t\treturn get(this.featuresList, [\"Areas\", \"BulkAdd\"]);\n\t}\n\n\tpublic async refresh() {\n\t\ttry {\n\t\t\tthis.fetchTenantOverview();\n\n\t\t\tlet currentFocus = document.activeElement.id;\n\t\t\tthis.isLoading = true;\n\t\t\tthis.selectedArea = await api.getArea(this.selectedArea.groupID, true);\n\t\t\tthis.selectedArea.location = {\n\t\t\t\tmapAreaRegion: null,\n\t\t\t\tlatLong: this.selectedArea.latLong,\n\t\t\t\taddress: this.selectedArea.address,\n\t\t\t};\n\t\t\tawait this.loadChildGroups();\n\n\t\t\tlet currentFocusElement = document.getElementById(currentFocus);\n\t\t\tif (currentFocusElement) {\n\t\t\t\tcurrentFocusElement.focus();\n\t\t\t}\n\n\t\t\tawait this.fetchAreaDictionary();\n\t\t} catch (ex) {\n\t\t\tconsole.log(\"Unexpected exception refreshing area table: \" + ex);\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\t@Watch(\"selectedArea\", { deep: true })\n\tprivate async onSelectedAreaUpdated(): Promise {\n\t\tthis.visibleAreas = [];\n\t\tif (this.selectedArea?.children && this.selectedArea?.children.length > 0) {\n\t\t\tthis.visibleAreas = [...this.selectedArea?.children];\n\t\t}\n\t\tlet selectedAreaClone = cloneDeep(this.selectedArea);\n\t\tdelete selectedAreaClone.children;\n\t\tselectedAreaClone.location = {\n\t\t\tmapAreaRegion: null,\n\t\t\tlatLong: selectedAreaClone.latLong,\n\t\t\taddress: selectedAreaClone.address,\n\t\t}\n\n\t\tthis.visibleAreas.push(selectedAreaClone);\n\n\t\tif (this.isAreaRegionsEnabled) {\n\t\t\tconst region = await this.getRegionForArea(selectedAreaClone.groupID);\n\t\t\tVue.set(selectedAreaClone.location, \"mapAreaRegion\", region);\n\t\t}\n\t}\n\n\tprivate async mounted(): Promise {\n\t\tthis.tableHeight = this.calculateTableHeight();\n\n\t\tif (this.isCustomFieldsEnabled){\n\t\t\tawait this.retrieveCustomFields({ tableType: this.customFieldTableType, live: true });\n\t\t}\n\n\t\tawait this.loadInitialState();\n\t\tthis.debounceUpdateSearchFilter = debounce(() => {\n\t\t\tthis.updateSearchFilter();\n\t\t}, 250);\n\t\twindow.addEventListener('resize', () => {\n\t\t\tthis.tableHeight = this.calculateTableHeight();\n\t\t});\n\n\t\tif (this.isManualTourActionPlanEnabled) {\n\t\t\tthis.actionPlans = await api.loadActionPlans();\n\t\t}\n\t}\n\n\tprivate async loadInitialState() {\n\t\ttry {\n\t\t\tthis.isLoading = true;\n\n\t\t\tawait this.fetchAreaDictionary();\n\t\t\tthis.groupsWithEditPermissions = await api.groupsWithPermission(this.editPermissions);\n\t\t\tawait this.getTimeZones();\n\n\t\t\tif (this.timeZoneList) {\n\t\t\t\t// get timezones and map to the format needed for v-select\n\t\t\t\tthis.timeZonesFormatted = this.timeZoneList.map(t => {\n\t\t\t\t\treturn { timeZoneID: t.timeZoneID, title: t.id };\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.areaTreePath = [{\n\t\t\t\tgroupID: -1,\n\t\t\t\ttitle: \"Loading...\",\n\t\t\t\ttimeZoneID: 0,\n\t\t\t\tgroupTypeID: 1,\n\t\t\t}];\n\n\t\t\tconst rootGroupsPagedResponse = await api.getRootGroups(this.viewPermissions, this.selectedPage, parseInt(this.resultsPerPage));\n\t\t\tthis.selectedArea.totalRecords = rootGroupsPagedResponse.totalRecords;\n\t\t\tVue.set(this.selectedArea, 'children', rootGroupsPagedResponse.data);\n\t\t\tthis.areaTreePath.pop();\n\n\t\t\t// if there's only one root group, select it and load its children.\n\t\t\tif (this.selectedArea.totalRecords === 1) {\n\t\t\t\tthis.selectedArea = {\n\t\t\t\t\t...this.selectedArea.children[0],\n\t\t\t\t\ttotalRecords: 0,\n\t\t\t\t\tlocation: {\n\t\t\t\t\t\tmapAreaRegion: null,\n\t\t\t\t\t\tlatLong: this.selectedArea.children[0].latLong,\n\t\t\t\t\t\taddress: this.selectedArea.children[0].address,\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.areaTreePath.push({...this.selectedArea});\n\t\t\t\tawait this.loadChildGroups();\n\t\t\t}\n\t\t} catch (ex) {\n\t\t\tconsole.log(\"Unexpected exception on initial load: \" + ex);\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\n\t\tthis.currentAreaTreePathHistoryIndex = this.areaTreePath.length - 1;\n\t\tthis.areaTreePathHistory.push([...this.areaTreePath]);\n\t\tthis.selectionHistory.push({...this.selectedArea});\n\t}\n\n\tprivate async loadArea(areaId: number) {\n\t\ttry {\n\t\t\tif (this.selectedArea.groupID === areaId) { return;}\n\t\t\tthis.isLoading = true;\n\t\t\tlet groupResponse = await api.loadGroup(areaId);\n\t\t\tdelete groupResponse.keyContacts;\n\t\t\tthis.selectedArea = groupResponse;\n\t\t\tthis.selectedArea.location = {\n\t\t\t\tmapAreaRegion: null,\n\t\t\t\tlatLong: this.selectedArea.latLong,\n\t\t\t\taddress: this.selectedArea.address\n\t\t\t}\n\n\t\t\tthis.areaTreePath = [...this.selectedAreaPath];\n\t\t\tawait this.loadChildGroups();\n\n\t\t\tif (this.currentAreaTreePathHistoryIndex < this.areaTreePathHistory.length - 1) {\n\t\t\t\tthis.areaTreePathHistory.splice(this.currentAreaTreePathHistoryIndex + 1, this.areaTreePathHistory.length - this.currentAreaTreePathHistoryIndex);\n\t\t\t}\n\n\t\t\tif (this.currentAreaTreePathHistoryIndex < this.selectionHistory.length - 1) {\n\t\t\t\tthis.selectionHistory.splice(this.currentSelectionHistoryIndex + 1, this.selectionHistory.length - this.currentSelectionHistoryIndex);\n\t\t\t}\n\n\t\t\tthis.selectionHistory.push({...this.selectedArea});\n\t\t\tthis.areaTreePathHistory.push([...this.areaTreePath]);\n\n\t\t\tthis.currentAreaTreePathHistoryIndex = this.areaTreePathHistory.length - 1;\n\t\t\tthis.currentSelectionHistoryIndex = this.selectionHistory.length - 1;\n\n\t\t\tawait this.updateFocus();\n\t\t} catch (ex) {\n\t\t\tconsole.log(\"Unexpected error loading area: \" + ex);\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\tprivate async loadHome() {\n\t\ttry {\n\t\t\tthis.isLoading = true;\n\n\t\t\tthis.areaTreePath = [{\n\t\t\t\tgroupID: -1,\n\t\t\t\ttitle: \"Loading...\",\n\t\t\t\ttimeZoneID: 0,\n\t\t\t\tgroupTypeID: 1\n\t\t\t}];\n\n\t\t\tconst rootGroupsPagedResponse = await api.getRootGroups(this.viewPermissions, this.selectedPage, parseInt(this.resultsPerPage));\n\t\t\tthis.selectedArea.totalRecords = rootGroupsPagedResponse.totalRecords;\n\t\t\tVue.set(this.selectedArea, 'children', rootGroupsPagedResponse.data);\n\t\t\tthis.areaTreePath.pop();\n\n\t\t\t// if there's only one root group, select it and load its children.\n\t\t\tif (this.selectedArea.totalRecords === 1) {\n\t\t\t\tthis.selectedArea = {\n\t\t\t\t\t...this.selectedArea.children[0],\n\t\t\t\t\ttotalRecords: 0,\n\t\t\t\t\tlocation: {\n\t\t\t\t\t\tmapAreaRegion: null,\n\t\t\t\t\t\tlatLong: this.selectedArea.children[0].latLong,\n\t\t\t\t\t\taddress: this.selectedArea.children[0].address,\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.areaTreePath.push({...this.selectedArea});\n\t\t\t\tawait this.loadChildGroups();\n\t\t\t}\n\n\t\t\tthis.areaTreePathHistory.push([...this.areaTreePath]);\n\t\t\tthis.selectionHistory.push({...this.selectedArea});\n\n\t\t\tthis.currentAreaTreePathHistoryIndex = this.areaTreePathHistory.length - 1;\n\t\t\tthis.currentSelectionHistoryIndex = this.selectionHistory.length - 1;\n\n\t\t\tawait this.updateFocus();\n\t\t} catch (ex) {\n\t\t\tconsole.log(\"Unexpected exception loading home areas: \" + ex);\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\tprivate async updateSearchFilter() {\n\t\tif (this.resultsPerPageUpdated !== this.resultsPerPage) {\n\t\t\tthis.selectedPage = 1;\n\t\t}\n\t\tthis.resultsPerPage = this.resultsPerPageUpdated;\n\t\tawait this.loadChildGroups();\n\t}\n\n\t@Watch(\"searchQuery\")\n\tprivate onSearchQueryChanged() {\n\t\tthis.debounceUpdateSearchFilter();\n\t}\n\n\tprivate async onAreaSelected(item, updateAreaTreePath: boolean = true) {\n\t\tif (!item.isParent) {\n\t\t\tconst isReadOnly = !this.groupsWithEditPermissions.includes(item.groupID);\n\t\t\tthis.$refs.genericUpdateModal.showUpdateDialog(item, isReadOnly, false);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.selectedArea = item;\n\t\tif (item.groupID === 0) {\n\t\t\tawait this.loadRootGroups();\n\t\t} else {\n\t\t\tawait this.loadChildGroups();\n\t\t}\n\n\t\tif (updateAreaTreePath) {\n\t\t\tthis.areaTreePath.push({...item, children: []});\n\t\t}\n\n\t\tif (this.currentAreaTreePathHistoryIndex < this.areaTreePathHistory.length - 1) {\n\t\t\tthis.areaTreePathHistory.splice(this.currentAreaTreePathHistoryIndex + 1, this.areaTreePathHistory.length - this.currentAreaTreePathHistoryIndex);\n\t\t}\n\n\t\tif (this.currentSelectionHistoryIndex < this.selectionHistory.length - 1) {\n\t\t\tthis.selectionHistory.splice(this.currentSelectionHistoryIndex + 1, this.selectionHistory.length - this.currentSelectionHistoryIndex);\n\t\t}\n\n\t\tthis.areaTreePathHistory.push([...this.areaTreePath]);\n\t\tthis.selectionHistory.push({...this.selectedArea});\n\t\tthis.currentAreaTreePathHistoryIndex = this.areaTreePathHistory.length - 1;\n\t\tthis.currentSelectionHistoryIndex = this.selectionHistory.length - 1;\n\n\t\tawait this.updateFocus();\n\t}\n\n\tprivate async loadRootGroups() {\n\t\ttry {\n\t\t\tthis.isLoading = true;\n\t\t\tconst rootGroupsPagedResponse = await api.getRootGroups(this.viewPermissions, this.selectedPage, parseInt(this.resultsPerPage));\n\t\t\tthis.selectedArea.totalRecords = rootGroupsPagedResponse.totalRecords;\n\t\t\tVue.set(this.selectedArea, 'children', rootGroupsPagedResponse.data);\n\t\t}\n\t\tcatch (ex) {\n\t\t\tconsole.log(\"Unexpected error loading root groups: \" + ex);\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\tprivate async loadChildGroups() {\n\t\ttry {\n\t\t\tthis.isLoading = true;\n\t\t\tconst getChildGroupsListRequest: GetChildGroupsListRequest = {\n\t\t\t\tpage: this.selectedPage,\n\t\t\t\tpageSize: parseInt(this.resultsPerPage),\n\t\t\t\trequiredPermissions: this.viewPermissions,\n\t\t\t\tgroupId: this.selectedArea.groupID,\n\t\t\t\tsearchTerm: this.searchQuery,\n\t\t\t\tsortBy: this.sortByColumn,\n\t\t\t\tsortDesc: this.sortDirection === 'descending'\n\t\t\t};\n\t\t\tconst childGroupsPagedResponse: GroupRowPagedResponse = await api.getChildGroups(getChildGroupsListRequest);\n\t\t\tthis.selectedArea.totalRecords = childGroupsPagedResponse.totalRecords;\n\t\t\tVue.set(this.selectedArea, 'children', childGroupsPagedResponse.data);\n\t\t}\n\t\tcatch (ex) {\n\t\t\tconsole.log(\"Unexpected error loading root groups: \" + ex);\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\t@Watch(\"areaTreePath\")\n\tprivate async onAreaPathChanged() {\n\t\tthis.searchQuery = \"\";\n\t\tthis.selectedAreaPath = this.areaTreePath;\n\n\t\tif (this.isLoading) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.areaTreePath.length === 1 && this.areaTreePath[0].groupID === -1 && this.areaTreePath[0].title === \"My Areas\") {\n\t\t\tawait this.loadInitialState();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.areaTreePath === this.areaTreePathHistory[this.currentAreaTreePathHistoryIndex]) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.areaTreePath.length === 1 && this.areaTreePath[0].groupID === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentArea = this.areaTreePath[this.areaTreePath.length - 1];\n\n\t\tif (this.selectedArea.groupID !== currentArea.groupID) {\n\t\t\tawait this.onAreaSelected(currentArea, false);\n\t\t}\n\t}\n\n\tprivate calculateTableHeight() {\n\t\tlet result = document.body.clientHeight - 300;\n\t\treturn `${result}px`;\n\t}\n\n\tprivate async handleShortcut(event) {\n\t\tswitch (event.srcKey) {\n\t\t\tcase \"goBack\": {\n\t\t\t\tawait this.goBack();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"navigateBackward\": {\n\t\t\t\tawait this.goBack();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"navigateForward\": {\n\t\t\t\tawait this.goForward();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate async goBack() {\n\t\tif (this.currentAreaTreePathHistoryIndex > 0) {\n\t\t\tthis.currentAreaTreePathHistoryIndex--;\n\t\t\tthis.areaTreePath = this.areaTreePathHistory[this.currentAreaTreePathHistoryIndex];\n\t\t}\n\n\t\tif (this.currentSelectionHistoryIndex > 0) {\n\t\t\tthis.currentSelectionHistoryIndex--;\n\t\t\tthis.selectedArea = this.selectionHistory[this.currentSelectionHistoryIndex];\n\t\t}\n\t}\n\n\tprivate async goForward() {\n\t\tif (this.currentAreaTreePathHistoryIndex < this.areaTreePathHistory.length - 1) {\n\t\t\tthis.currentAreaTreePathHistoryIndex++;\n\t\t\tthis.areaTreePath = this.areaTreePathHistory[this.currentAreaTreePathHistoryIndex];\n\t\t}\n\n\t\tif (this.currentSelectionHistoryIndex < this.selectionHistory.length - 1) {\n\t\t\tthis.currentSelectionHistoryIndex++;\n\t\t\tthis.selectedArea = this.selectionHistory[this.currentSelectionHistoryIndex];\n\t\t}\n\t}\n\n\tprivate async updateFocus() {\n\t\tawait this.$nextTick();\n\t\tif (this.$refs.row0[0] && this.$refs.row0[0].$el) {\n\t\t\tthis.$refs.row0[0].$el.focus();\n\t\t} else {\n\t\t\tthis.$refs.selectedArea.$el.focus();\n\t\t}\n\t}\n\n\tprivate async onAddNewArea() {\n\t\tthis.$refs.genericUpdateModal.showUpdateDialog({ }, false, true);\n\t}\n\n\tprivate async saveNewArea(area: GroupRowDetails) {\n\t\ttry {\n\t\t\tthis.isLoading = true;\n\n\t\t\tconst groupRow = this.groupRowDetailsToGroupRow(area);\n\n\t\t\tlet newAreaId = await api.addArea(groupRow);\n\n\t\t\tif (this.isAreaRegionsEnabled) {\n\t\t\t\tarea.location.mapAreaRegion.groupId = newAreaId;\n\t\t\t\tawait api.createOrUpdateRegion(area.location.mapAreaRegion);\n\t\t\t}\n\t\t\tthis.groupsWithEditPermissions.push(newAreaId);\n\t\t} catch(ex) {\n\t\t\tconsole.log(\"Error saving area\", ex)\n\t\t}\n\t\tawait this.refresh();\n\t}\n\n\tprivate async updateArea(area: GroupRowDetails) {\n\t\ttry {\n\t\t\tthis.isLoading = true;\n\n\t\t\tconst groupRow = this.groupRowDetailsToGroupRow(area);\n\t\t\tawait api.updateArea(groupRow);\n\t\t\tif (this.isAreaRegionsEnabled) {\n\t\t\t\tawait api.createOrUpdateRegion(area.location.mapAreaRegion);\n\t\t\t}\n\t\t\tawait this.refresh();\n\t\t} catch(ex) {\n\t\t\tconsole.log(\"Error updating area\", ex)\n\t\t}\n\t\tawait this.refresh();\n\t}\n\n\tprivate groupRowDetailsToGroupRow(area: GroupRowDetails): GroupRow {\n\t\treturn {\n\t\t\tgroupID: area.groupID,\n\t\t\taddress: this.isAreaLocationEnabled ? area.location.address : area.address,\n\t\t\tlatLong: this.isAreaLocationEnabled ? area.location.latLong : area.latLong,\n\t\t\tarmed: area.armed,\n\t\t\tparentGroupID: area.parentGroupID,\n\t\t\tgroupTypeID: area.groupTypeID,\n\t\t\ttitle: area.title,\n\t\t\ttelephone: area.telephone,\n\t\t\ttelephone2: area.telephone2,\n\t\t\tstate: area.state,\n\t\t\ttelephoneFire: area.telephoneFire,\n\t\t\ttelephonePolice: area.telephonePolice,\n\t\t\tnotes: area.notes,\n\t\t\ttimeZoneID: area.timeZoneID,\n\t\t\tscriptId: area.scriptId,\n\t\t\treferenceId: area.referenceId,\n\t\t\tisParent: area.isParent,\n\t\t\tchildren: area.children,\n\t\t\tdisabledAt: area.disabledAt,\n\t\t\tmaskDurationLimit: area.maskDurationLimit,\n\t\t\tslaBreachSeconds: area.slaBreachSeconds,\n\t\t\tdisableMasking: area.disableMasking ?? false,\n\t\t\tdisableOnTest: area.disableOnTest ?? false\n\t\t};\n\t}\n\n\tprivate async bulkOnSubmit({ formData }) {\n\t\t// Reset any potential previous bulk values\n\t\tthis.bulkNestedLevels = [];\n\t\tthis.batchCurrentValue = 0;\n\t\tthis.bulkUploadResults = [];\n\n\t\t// Convert and sort formData\n\t\tconst convertedData = this.convertDataToRest({ body: formData });\n\t\tconst sortedData = this.sortCsvData(convertedData);\n\t\tawait this.createAreasFromCsv(sortedData);\n\t\tawait this.refresh();\n\t}\n\n\tprivate convertDataToRest({ body }) {\n\t\treturn body\n\t\t\t.map((value) => ({\n\t\t\t\t...value,\n\t\t\t\tscriptId: this.actionPlans.find(ap => ap.title == value.scriptId)?.scriptID,\n\t\t\t\ttimeZoneID: this.timeZoneList.find(tz => tz.id === value.timeZoneID).timeZoneID,\n\t\t\t}));\n\t}\n\n\t/*\n\t\tCreate an array of areas from the form in the following format - [[All Parents], [All Children], [All Grandchildren]] ...etc\n\t\tThis will allow us to loop through each nested level when uploading, allowing permissions to update for uploading children\n\n\t\tAt this point, the parentGroupID property is a NAME, until it is overwritten by areasByTitle once uploading begins where it gets the ID by the NAME\n\t*/\n\tprivate createAreaBatches(areas: any[], nestedLevel: string, depth: number): void {\n\t\tconst children = areas.filter(a => a.parentGroupID === nestedLevel);\n\t\tif (children.length > 0) {\n\t\t\t// Add the current children to the bulkNestedLevels array where the index is the depth of the children\n\t\t\tthis.bulkNestedLevels[depth] = this.bulkNestedLevels[depth] ? this.bulkNestedLevels[depth].concat(children) : children\n\n\t\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\t\tthis.createAreaBatches(areas, children[i].title, depth + 1)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Finds all areas with existing parents and sorts the children\n\tprivate sortCsvData(csvForm: any[]): any[] {\n\t\tconst areasWithExistingParents = csvForm.filter(a => this.areasByTitle[a.parentGroupID] !== undefined);\n\t\tthis.bulkNestedLevels.push(areasWithExistingParents);\n\n\t\tfor(let i = 0; i < areasWithExistingParents.length; i++) {\n\t\t\tthis.createAreaBatches(csvForm, areasWithExistingParents[i].title, 1);\n\t\t}\n\n\t\t// Return the original form to retain the length\n\t\treturn csvForm;\n\t}\n\n\t// Uploads areas in batches for a nested level\n\tprivate async uploadBatch(areas: any[], batchSize: number): Promise {\n\t\tfor (let i = 0; i < areas.length; i += batchSize) {\n\n\t\t\t// Create a batch from the current list of areas\n\t\t\tconst batch = areas.slice(i, i + batchSize);\n\n\t\t\t// Upload batch of areas\n\t\t\tconst uploadResult = await api.bulkAddAreas(batch);\n\n\t\t\t// Assign any failed uploads\n\t\t\tthis.bulkUploadResults = [...this.bulkUploadResults, ...uploadResult];\n\t\t}\n\t}\n\n\tprivate async createAreasFromCsv(areaList: any[]): Promise {\n\t\t// Get total areas count to upload\n\t\tconst areaListCount = areaList.length;\n\n\t\t// Set 100% as the max progress\n\t\tconst max = 100;\n\n\t\t// Set default progress\n\t\tconst defaultProgress = {\n\t\t\tmax,\n\t\t\tstatus: 'init',\n\t\t\tsuccessfulMessage: `Successfully added ${areaListCount} Areas`,\n\t\t\tpercentage: true\n\t\t};\n\n\t\t// progressBulk is passed all the way down to the csv-form so when this changes, the csv-form progress bar updates\n\t\tthis.progressBulk = {\n\t\t\t...defaultProgress\n\t\t};\n\n\t\tconst batchSize = 40;\n\n\t\t// Set progress to start with\n\t\tlet progressOptions = {\n\t\t\tmax: max,\n\t\t\trowIndex: 0,\n\t\t\tpercentage: true\n\t\t}\n\n\t\t// Upload areas by each nested level and refresh the groupCache each level to avoid permission issues\n\t\tfor(let i = 0; i < this.bulkNestedLevels.length; i++) {\n\n\t\t\t// Assign each area's parentGroupID in this level before attempting upload\n\t\t\tfor(let j = 0; j < this.bulkNestedLevels[i].length; j++)\n\t\t\t{\n\t\t\t\t// Increment batch value here so we can show the percentage of how many items have been uploaded out of the total\n\t\t\t\tthis.batchCurrentValue++;\n\t\t\t\tconst currentArea = this.bulkNestedLevels[i][j];\n\t\t\t\tcurrentArea.parentGroupID = this.areasByTitle[currentArea.parentGroupID];\n\t\t\t}\n\n\t\t\t// Upload current nested level\n\t\t\tawait this.uploadBatch(this.bulkNestedLevels[i], batchSize);\n\n\t\t\t// Get the current percentage to display in the progress bar\n\t\t\tconst currentValue = this.batchCurrentValue > areaListCount ? areaListCount : this.batchCurrentValue;\n\t\t\tconst percentage = Math.floor((currentValue / areaListCount) * 100);\n\t\t\tprogressOptions.rowIndex = percentage;\n\t\t\tthis.progressBulk = {\n\t\t\t\t...progressOptions,\n\t\t\t\tstatus: 'progress',\n\t\t\t};\n\n\t\t\t// Refresh the group cache after the bulk upload\n\t\t\tawait api.refreshGroupCache();\n\t\t\t// Update areaDictionary for assigning child areas parentGroupIDs\n\t\t\tawait this.fetchAreaDictionary();\n\t\t\t// Refresh groupWithEditPermissions\n\t\t\tthis.groupsWithEditPermissions = await api.groupsWithPermission(this.editPermissions);\n\t\t}\n\n\t\t// Check for areas that failed to upload\n\t\tif (this.bulkUploadResults.length > 0) {\n\t\t\tlet bulkErrorMessage = [];\n\n\t\t\t// Configure the returned errors\n\t\t\tfor (let i = 0; i < this.bulkUploadResults.length; i++) {\n\t\t\t\tconst errorGroup: GroupErrorDetails = {\n\t\t\t\t\trowId: this.bulkUploadResults[i].rowId,\n\t\t\t\t\terrorMessage: `Area - '${this.bulkUploadResults[i].title}' failed. Error - ${this.bulkUploadResults[i].csvError}.`\n\t\t\t\t};\n\n\t\t\t\tbulkErrorMessage.push(errorGroup);\n\t\t\t}\n\n\t\t\t// Send errors to the csv-form to display\n\t\t\tthis.progressBulk = {\n\t\t\t\t\t...progressOptions,\n\t\t\t\t\tstatus: 'error',\n\t\t\t\t\terror: {\n\t\t\t\t\t\tname: \"One or more Areas failed to upload\",\n\t\t\t\t\t\tmessage: `Failed to add ${this.bulkUploadResults.length} areas out of ${areaListCount}.`\n\t\t\t\t\t},\n\t\t\t\t\tbulkErrors: bulkErrorMessage\n\t\t\t};\n\t\t} else {\n\t\t\tprogressOptions.rowIndex = max;\n\t\t\tthis.progressBulk = {\n\t\t\t\t...progressOptions,\n\t\t\t\tstatus: 'succeed',\n\t\t\t\tsuccessfulMessage: `Successfully added ${areaListCount} Areas.`\n\t\t\t};\n\t\t}\n\n\t\t// Refresh groupWithEditPermissions\n\t\tthis.groupsWithEditPermissions = await api.groupsWithPermission(this.editPermissions);\n\t}\n\n\tprivate onCloseBulk() {\n\t\tthis.progressBulk = {};\n\t\tthis.bulkUploadResults = [];\n\t\tthis.bulkNestedLevels = [];\n\t\tthis.batchCurrentValue = 0;\n\t}\n\n\tprivate async onDeleteAreaSelected(area: GroupRow) {\n\t\tif (this.groupsWithEditPermissions.includes(area.groupID)) {\n\t\t\tthis.isDeleteConfirmDialogShown = true;\n\t\t\tthis.areaToDelete = area;\n\t\t}\n\t}\n\n\tprivate cancelDelete() {\n\t\tthis.isDeleteConfirmDialogShown = false;\n\t\tthis.areaToDelete = this.defaultGroupRow;\n\t}\n\n\tprivate confirmDelete() {\n\t\tif(this.isDeleteConfirmed)\n\t\t{\n\t\t\tthis.isDeleteConfirmDialogShown = false;\n\t\t\tthis.deleteArea();\n\t\t}\n\t}\n\n\tprivate async deleteArea() {\n\t\ttry {\n\t\t\tthis.isLoading = true;\n\t\t\tawait api.deleteArea(this.areaToDelete.groupID);\n\n\t\t\tif (this.selectedArea.groupID === this.areaToDelete.groupID) {\n\t\t\t\tif (this.areaTreePath.length > 1) {\n\t\t\t\t\tawait this.goBack();\n\t\t\t\t\tawait this.refresh();\n\t\t\t\t} else {\n\t\t\t\t\tawait this.loadInitialState();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tawait this.refresh();\n\t\t\t}\n\n\t\t\tthis.areaToDelete = this.defaultGroupRow;\n\t\t} catch (ex) {\n\t\t\tconsole.log(\"Unexpected error deleting area: \" + ex);\n\t\t} finally {\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\tprivate async setSelectedAreaRow(area: GroupRowDetails): Promise {\n\t\tthis.parentIsRequired = area.groupTypeID !== 4;\n\t\tthis.selectedAreaRow = Object.assign({}, this.selectedAreaRow, null);\n\t\tthis.selectedAreaRow = area;\n\t\tthis.selectedAreaRow.location = {\n\t\t\tmapAreaRegion: null,\n\t\t\tlatLong: area.latLong,\n\t\t\taddress: area.address,\n\t\t}\n\n\t\tif (!this.canEditGroupSyncAreas && area.groupSyncId) {\n\t\t\tthis.selectedAreaRow.readOnlyMessage = \"You do not have permission to edit sync areas\"\n\t\t\tthis.selectedAreaRow.readOnly = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.selectedAreaRow.readOnly = false;\n\t\t\tthis.selectedAreaRow.readOnlyMessage = null\n\t\t}\n\n\t\tif (this.isAreaRegionsEnabled) {\n\t\t\tconst region = await this.getRegionForArea(area.groupID);\n\t\t\tVue.set(this.selectedAreaRow.location, \"mapAreaRegion\", region);\n\t\t}\n\n\t\tif (this.isCustomFieldsEnabled) {\n\t\t\tmapArrayFieldsToObject(this.selectedAreaRow, this.selectedAreaRow.customFieldValues, this.areaCustomFields, \"id\", \"value\", \"cf\");\n\t\t}\n\t}\n\n\tprivate async onEditAreaSelected(area: GroupRowDetails) {\n\t\tawait this.setSelectedAreaRow(area);\n\t\tthis.$refs.genericUpdateModal.showUpdateDialog(this.selectedAreaRow, false, false);\n\t}\n\n\tprivate async onViewAreaSelected(area: any) {\n\t\tawait this.setSelectedAreaRow(area);\n\t\tthis.$refs.genericUpdateModal.showUpdateDialog(this.selectedAreaRow, true, false);\n\t}\n\n\tprivate openSelectedArea(selectedArea: GroupRowDetails) {\n\t\tif (this.groupsWithEditPermissions.includes(this.selectedArea.groupID)) {\n\t\t\tthis.onEditAreaSelected(selectedArea);\n\t\t} else {\n\t\t\tthis.onViewAreaSelected(selectedArea);\n\t\t}\n\t}\n\n\tprivate async getRegionForArea(groupId: number) : Promise {\n\t\tlet region = await api.getRegionForGroup(groupId);\n\t\t//Set the group ID if we don't already have a region\n\t\tif(!region || !region.groupId)\n\t\t\tregion.groupId = groupId;\n\n\t\treturn region;\n\t}\n\n\tprivate removeNonDigitsFromString(value: string): string {\n\t\tif(!value)\n\t\t\treturn \"\";\n\n\t\tconst digitFind = value.match(/\\d+/g);\n\t\tif(!digitFind)\n\t\t\treturn \"\";\n\n\t\tif (parseInt(digitFind.join('')) > 200) {\n\t\t\tthis.resultsPerPageUpdated = \"200\";\n\t\t}\n\n\t\treturn digitFind.join('');\n\t}\n\n\tprivate thStylingForField(index: number): string {\n\t\treturn (this.fields[index] && this.fields[index].thStyle) ? this.fields[index].thStyle : '';\n\t}\n\n\t// 1 column sorting\n\tprivate updateSorting(field: TableHeader): void {\n\t\tif (!field.sortable) {\n\t\t\treturn;\n\t\t}\n\t\tconst sortByColumn = field.sortKey ? field.sortKey : field.key;\n\t\tif (!this.sortByColumn) {\n\t\t\tthis.sortByColumn = sortByColumn;\n\t\t\tthis.sortDirection = \"ascending\";\n\t\t\tthis.updateSearchFilter();\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.sortByColumn === sortByColumn) {\n\t\t\tthis.sortDirection = this.sortDirection === \"ascending\" ? \"descending\" : \"ascending\";\n\t\t} else {\n\t\t\tthis.sortDirection = this.sortDirection = \"ascending\";\n\t\t}\n\t\tthis.sortByColumn = sortByColumn;\n\n\t\tthis.updateSearchFilter();\n\t}\n\n\tprivate get canEditGroupSyncAreas(): boolean {\n\t\treturn this.getPermissions.isSystemAdmin || this.getPermissions.canOverrideGroupSync;\n\t}\n\n\tprivate canEditArea(area: GroupRow): boolean {\n\t\tif (!area || !area.groupID) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn this.groupsWithEditPermissions.includes(area.groupID) && (area.groupSyncId ? this.canEditGroupSyncAreas : true);\n\t}\n\n\tprivate timeZoneForColumn(timeZoneId: number): string {\n\t\ttry\n\t\t{\n\t\t\tlet timeZone = this.timeZoneList.firstOrDefault(tz => tz.timeZoneID == timeZoneId);\n\n\t\t\tif (timeZone == null) {\n\t\t\t\treturn \"Failed to get Time Zone Information\";\n\t\t\t}\n\n\t\t\treturn timeZone.id;\n\t\t}\n\t\tcatch (err)\n\t\t{\n\t\t\treturn \"Failed to get Time Zone Information\";\n\t\t}\n\t}\n}\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaTable.vue?vue&type=template&id=d3c3de5c&scoped=true\"\nimport script from \"./AreaTable.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaTable.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaTable.vue?vue&type=style&index=0&id=d3c3de5c&prod&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 \"d3c3de5c\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Vue } from \"vue-property-decorator\";\nimport NavHeader from \"@/components/NavHeader.vue\";\nimport AreaTable from \"@/views/AreaSetup/AreaTable.vue\";\n\n@Component({\n\tcomponents: {\n\t\t\"nav-header\": NavHeader,\n\t\t\"area-table\" : AreaTable,\n\t}\n})\nexport default class AreaSetupPage extends Vue {\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaSetupPage.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaSetupPage.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaSetupPage.vue?vue&type=template&id=b249e39e\"\nimport script from \"./AreaSetupPage.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaSetupPage.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.getPermissions.canEditAssetSetup)?_c('div',{staticClass:\"card fill-body card-secondary\"},[_c('nav-header',{attrs:{\"title\":'Asset Setup'}}),_c('div',{staticClass:\"setup-container card-body fill-tabs\"},[_c('b-tabs',[_c('b-tab',{attrs:{\"id\":\"btStandaloneAssets\",\"title\":\"Standalone Assets\"}},[_c('asset-only-setup')],1),_c('b-tab',{attrs:{\"id\":\"btAssetTypes\",\"title\":\"Asset Types\"}},[_c('asset-type-setup')],1)],1)],1)],1):_c('div',{attrs:{\"data-cy\":\"no-permissions-container\"}},[_c('p',[_vm._v(\"You do not have permissions to view this page\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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 asset-only-setup\"},[_c('generic-table',{staticClass:\"flex-grow-1\",attrs:{\"term\":'Asset',\"dataList\":_vm.assets,\"columns\":_vm.columns,\"modalItems\":_vm.modalItems,\"onSave\":_vm.putAsset,\"onDelete\":_vm.disableAsset,\"onAddNew\":_vm.putAsset,\"onModalOpen\":_vm.onModalOpen,\"totalAvailableRows\":_vm.totalRecords,\"isLoading\":_vm.isLoading,\"editPermissions\":['canEditAssetSetup']},on:{\"search-filter-updated\":_vm.updateData},scopedSlots:_vm._u([{key:\"iconColor\",fn:function(slotProps){return [_c('color-swatch',{attrs:{\"readonly\":\"\"},model:{value:(slotProps.row.iconColor),callback:function ($$v) {_vm.$set(slotProps.row, \"iconColor\", $$v)},expression:\"slotProps.row.iconColor\"}})]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',[_c('tr',[_c('td',[_c('color-swatch',{class:[_vm.readonly ? 'swatch-disabled' : ''],attrs:{\"swatch-size\":\"25\",\"trigger-style\":{ width: '25px', height: '25px', borderRadius: '5px', border : '2px solid white', cursor: 'context-menu' },\"show-fallback\":\"\",\"popover-y\":\"top\",\"fallback-input-type\":\"color\",\"disabled\":_vm.readonly},model:{value:(_vm.colour),callback:function ($$v) {_vm.colour=$$v},expression:\"colour\"}})],1),(!_vm.readonly)?_c('td',{staticStyle:{\"padding-left\":\"5px\"}},[_c('b-button',{staticClass:\"btnPlacement\",attrs:{\"id\":\"btnCancel\",\"size\":\"sm\"},on:{\"click\":function($event){return _vm.cancel()}}},[_c('i',{staticClass:\"fas fa-ban\"})]),_c('b-button',{staticClass:\"btnPlacement\",attrs:{\"id\":\"btnClear\",\"size\":\"sm\"},on:{\"click\":function($event){return _vm.clear()}}},[_c('i',{staticClass:\"fas fa-times\"})])],1):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport VSwatches from 'vue-swatches'\r\n\r\n@Component({\r\n\tcomponents: {\r\n \"color-swatch\" : VSwatches\r\n\t}\r\n})\r\nexport default class AssetColorPicker extends Vue {\r\n @Prop({type: Boolean, default: false})\r\n private readonly: boolean;\r\n\r\n @Prop()\r\n private value: string | null;\r\n \r\n private colour: string | null = null;\r\n private initialColour: string | null = null;\r\n\r\n private mounted() {\r\n const startColour = this.value;\r\n this.colour = startColour;\r\n this.initialColour = startColour;\r\n }\r\n\r\n @Watch(\"colour\")\r\n @Emit(\"input\")\r\n private colourWatch(){\r\n return this.colour;\r\n }\r\n\r\n private clear() {\r\n this.colour = null;\r\n }\r\n\r\n private cancel() {\r\n this.colour = this.initialColour;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetColorPicker.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetColorPicker.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AssetColorPicker.vue?vue&type=template&id=1b7eef36&scoped=true\"\nimport script from \"./AssetColorPicker.vue?vue&type=script&lang=ts\"\nexport * from \"./AssetColorPicker.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AssetColorPicker.vue?vue&type=style&index=0&id=1b7eef36&prod&scoped=true&lang=scss\"\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 \"1b7eef36\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport GenericTable, { TableHeader } from '../table/generic-table.vue';\r\nimport GenericUpdateModal, { ModalItem } from '../table/generic-update-modal.vue';\r\nimport api from '@/services/api.service';\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport { AreaNode } from '@/types/sv-data/groups/AreaNode';\r\nimport AssetTypeSelect from '@/views/UserSetup/AssetTypeSelect.vue';\r\nimport AssetColorPicker from './AssetColorPicker.vue';\r\nimport Asset from '@/types/sv-data/Asset';\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport { FeaturesList, PaginatedSearchQueryParams, UserPermissions } from \"@/store/types\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { get } from \"lodash\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"generic-table\": GenericTable,\r\n\t\t\"generic-update-modal\": GenericUpdateModal,\r\n \"color-swatch\" : AssetColorPicker\r\n\t}\r\n})\r\nexport default class AssetOnlySetup extends Mixins(PaginatedSearch) {\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\r\n\r\n\tprivate get columns(): TableHeader[] {\r\n\t\tconst columns : TableHeader[] = [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Asset Title\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\torder: 1,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The asset title\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisSortedByDefault: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Asset Type\",\r\n\t\t\t\tkey: \"assetTypeTitle\",\r\n\t\t\t\torder: 2,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Asset Type of the Asset\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"Type\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"groupTitle\",\r\n\t\t\t\torder: 3,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Area the asset belongs under\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"select\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"Area\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Icon Color Override\",\r\n\t\t\t\tkey: \"iconColor\",\r\n\t\t\t\torder: 4,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Icon color of the asset type while on the map\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area Sync\",\r\n\t\t\t\tkey: \"groupSyncTitle\",\r\n\t\t\t\torder: 5,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Area Sync for syncing\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdisable: !this.syncAssetFeatureEnabled\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Device\",\r\n\t\t\t\tkey: \"serverTitle\",\r\n\t\t\t\torder: 6,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Device for syncing\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdisable: !this.syncAssetFeatureEnabled\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\treturn columns;\r\n\t}\r\n\r\n\tpublic get modalItems (): ModalItem[] {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Title\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\trequired: true,\r\n placeholder: \"Enter an asset title\",\r\n\t\t\t\treadOnlyMethod: (item: ModalItem, row: any) => { return (!this.canOverrideGroupSync && row?.groupSyncTitle != null) },\r\n },\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Asset Type\",\r\n\t\t\t\tkey: \"assetTypeId\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\trequired: true,\r\n\t\t\t\tdata: AssetTypeSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tassetOnlyTypes: true,\r\n\t\t\t\t\tclearable: false\r\n\t\t\t\t},\r\n\t\t\t\treadOnlyMethod: (item: ModalItem, row: any) => { return (!this.canOverrideGroupSync && row?.groupSyncTitle != null) },\r\n\t\t\t},\r\n {\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"groupId\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\trequired: true,\r\n\t\t\t\tdata: AreaTreeSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (area: AreaNode) => area.id,\r\n\t\t\t\t\tclearable: false,\r\n\t\t\t\t\tappendToBody: true\r\n\t\t\t\t},\r\n\t\t\t\treadOnlyMethod: (item: ModalItem, row: any) => { return (!this.canOverrideGroupSync && row?.groupSyncTitle != null) },\r\n\t\t\t},\r\n {\r\n\t\t\t\ttitle: \"Icon Color\",\r\n\t\t\t\tkey: \"iconColor\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: AssetColorPicker,\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tdescription: \"Setting an icon color will override the asset type icon color for this asset\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area Sync\",\r\n\t\t\t\tkey: \"groupSyncTitle\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tvisible: this.syncAssetEnabled && this.selectedAsset != null,\r\n\t\t\t\treadOnlyIfEdit: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Device\",\r\n\t\t\t\tkey: \"serverTitle\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tvisible: this.syncAssetEnabled && this.selectedAsset != null,\r\n\t\t\t\treadOnlyIfEdit: true,\r\n\t\t\t},\r\n ]\r\n }\r\n\r\n\tprivate assets: Asset[] = [];\r\n\tprivate selectedAsset: Asset = null;\r\n\r\n\tprivate async mounted() {\r\n\t\tawait this.updateData();\r\n\t}\r\n\r\n\tprivate async onModalOpen(value: any): Promise {\r\n\t\tif (value){\r\n\t\t\tthis.selectedAsset = value;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selectedAsset = null;\r\n\t\t}\r\n }\r\n\r\n\tprivate async putAsset(asset: Asset): Promise {\r\n\t\tasset.live = true;\r\n\t\tawait api.createOrUpdateAsset(asset);\r\n\t\tthis.updateData(this.mostRecentSearchParams);\r\n }\r\n\r\n private async disableAsset(asset: Asset): Promise {\r\n\t\tawait api.disableAsset(asset.assetId);\r\n\t\tthis.updateData(this.mostRecentSearchParams);\r\n }\r\n\r\n\tprivate totalRecords: number = 0;\r\n\tprivate isLoading: boolean = false;\r\n\r\n\tpublic async updateData(paginatedSearchQueryParams?: PaginatedSearchQueryParams) {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.assets = [];\r\n\t\t\tconst request = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\t\t\tlet assetsWithPagination = await api.getPagedStandaloneAssets(request);\r\n\t\t\tthis.totalRecords = assetsWithPagination.totalRecords;\r\n\t\t\tthis.assets = assetsWithPagination.data;\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tconsole.log(\"Unexpected error fetching assets: \" + ex);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get syncAssetEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Mobile\", \"FieldOps\", \"SyncedAssets\"]);\r\n\t}\r\n\r\n\tprivate get syncAssetFeatureEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Mobile\", \"FieldOps\", \"SyncedAssets\"]);\r\n\t}\r\n\r\n\tprivate get canOverrideGroupSync(): boolean {\r\n\t\treturn this.permissions.canOverrideGroupSync;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetOnlySetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetOnlySetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AssetOnlySetup.vue?vue&type=template&id=182de0d5&scoped=true\"\nimport script from \"./AssetOnlySetup.vue?vue&type=script&lang=ts\"\nexport * from \"./AssetOnlySetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AssetOnlySetup.vue?vue&type=style&index=0&id=182de0d5&prod&scoped=true&lang=scss\"\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 \"182de0d5\",\n null\n \n)\n\nexport default component.exports","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 asset-type-setup\"},[_c('generic-table',{staticClass:\"flex-grow-1\",attrs:{\"term\":'Asset Type',\"dataList\":_vm.assetTypes,\"columns\":_vm.columns,\"modalItems\":_vm.modalItems,\"onSave\":_vm.putAssetType,\"onDelete\":_vm.deleteAssetType,\"onAddNew\":_vm.putAssetType,\"onModalOpen\":_vm.onModalOpen,\"totalAvailableRows\":_vm.totalRecords,\"isLoading\":_vm.isLoading,\"editPermissions\":['canEditAssetSetup']},on:{\"search-filter-updated\":_vm.updateData},scopedSlots:_vm._u([{key:\"iconColor\",fn:function(slotProps){return [_c('div',{staticStyle:{\"width\":\"100%\"},attrs:{\"align\":\"center\"}},[_c('color-swatch',{staticStyle:{\"cursor\":\"context-menu\"},attrs:{\"swatch-size\":\"25\",\"trigger-style\":{ width: '25px', height: '25px', borderRadius: '5px', border : '2px solid white', cursor: 'context-menu' },\"show-fallback\":\"\",\"popover-x\":\"left\",\"fallback-input-type\":\"color\",\"disabled\":\"\"},model:{value:(slotProps.row.iconColor),callback:function ($$v) {_vm.$set(slotProps.row, \"iconColor\", $$v)},expression:\"slotProps.row.iconColor\"}})],1)]}},{key:\"externalIdsArray\",fn:function(slotProps){return _vm._l((slotProps.row.externalIdsArray),function(externalId,index){return _c('span',{key:externalId + '-' + index,staticClass:\"badge badge-pill badge-primary m-r-10\"},[_c('span',[_vm._v(\" \"+_vm._s(externalId)+\" \")])])})}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport GenericTable, { TableHeader } from '../table/generic-table.vue';\r\nimport GenericUpdateModal, { ModalItem } from '../table/generic-update-modal.vue';\r\nimport AssetType from '@/types/sv-data/AssetType';\r\nimport api from '@/services/api.service';\r\nimport VSwatches from 'vue-swatches'\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport { PaginatedSearchQueryParams, FeaturesList } from \"@/store/types\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { get } from \"lodash\";\r\nimport vselect3 from \"vselect3\";\r\n\r\nexport interface AssetTypeEx extends AssetType {\r\n\texternalIdsArray?: string[]\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n \"generic-table\": GenericTable,\r\n\t\t\"generic-update-modal\": GenericUpdateModal,\r\n \"color-swatch\" : VSwatches,\r\n }\r\n})\r\nexport default class AssetTypeSetup extends Mixins(PaginatedSearch) {\r\n\t@Getter(\"getFeaturesList\") private featuresList: FeaturesList;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n private get columns (): TableHeader[] {\r\n\t\tconst columns : TableHeader [] = [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Asset Type Title\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\torder: 1,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"The asset type title\",\r\n\t\t\t\tsearchable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisSortedByDefault: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"IconColor\",\r\n\t\t\t\tkey: \"iconColor\",\r\n\t\t\t\torder: 2,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Icon color of the asset type while on the map\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Mobile User\",\r\n\t\t\t\tkey: \"canBeUser\",\r\n\t\t\t\torder: 3,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"If the asset type is for mobile users only.\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"IsMobileUser\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Visible on Map\",\r\n\t\t\t\tkey: \"shownOnMap\",\r\n\t\t\t\torder: 4,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Flag indicating if an asset can be viewed on a map\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"IsVisible\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Event Shareable\",\r\n\t\t\t\tkey: \"shareable\",\r\n\t\t\t\torder: 5,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Flag indicating if an asset type can be shared to an event\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortKey: \"IsShareable\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"External Ids\",\r\n\t\t\t\tkey: \"externalIdsArray\",\r\n\t\t\t\torder: 6,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"External ids to match during syncing\",\r\n\t\t\t\tdataType: \"list\",\r\n\t\t\t\tuseCustomCell: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdisable: !this.syncAssetFeatureEnabled,\r\n\t\t\t}\r\n \t];\r\n\r\n\t\treturn columns;\r\n\t}\r\n\r\n public get modalItems (): ModalItem[] {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Title\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\trequired: true,\r\n placeholder: \"Enter an asset title\",\r\n\t\t\t\treadOnlyMethod: (item) => item.suiteControlled,\r\n },\r\n {\r\n\t\t\t\ttitle: \"Icon Color\",\r\n\t\t\t\tkey: \"iconColor\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: VSwatches,\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\t\"swatch-size\": 20,\r\n\t\t\t\t\t\"trigger-style\":{ width: '30px', height: '30px', borderRadius: '5px', border : '2px solid white', cursor: 'context-menu' },\r\n\t\t\t\t\t\"show-fallback\": true,\r\n\t\t\t\t\t\"fallback-input-type\":\"color\",\r\n\t\t\t\t}\r\n\t\t\t},\r\n {\r\n\t\t\t\ttitle: \"Mobile User\",\r\n\t\t\t\tkey: \"canBeUser\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\treadOnly: this.selectedAssetType ? this.selectedAssetType.hasLinkedAssets : false,\r\n\t\t\t\tdescription: (this.selectedAssetType ? this.selectedAssetType.hasLinkedAssets : false) ?\r\n\t\t\t\t\"Mobile user flag can not be changed as this asset type has linked users, if checked asset type can only be assigned to mobile users.\"\r\n\t\t\t\t: \"If checked asset type can only be assigned to mobile users\",\r\n\t\t\t\treadOnlyMethod: (item) => item.suiteControlled,\r\n\t\t\t},\r\n {\r\n\t\t\t\ttitle: \"Visible on Map\",\r\n\t\t\t\tkey: \"shownOnMap\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tcsvComponent:'input',\r\n\t\t\t},\r\n {\r\n\t\t\t\ttitle: \"Event Shareable\",\r\n\t\t\t\tkey: \"shareable\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tdescription: \"Can asset type be shared to an event\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"External Ids\",\r\n\t\t\t\tkey: \"externalIdsArray\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: vselect3,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\t\"create-option\": id => id,\r\n\t\t\t\t\tplaceholder: \"External Ids\",\r\n\t\t\t\t\ttaggable: true,\r\n\t\t\t\t\tappendToBody: true,\r\n\t\t\t\t\tmultiple: true,\r\n\t\t\t\t},\r\n\t\t\t\trequired: false,\r\n\t\t\t\tdescription: \"External ids to match during syncing\",\r\n\t\t\t\tvisible: this.syncAssetEnabled,\r\n\t\t\t},\r\n ]\r\n }\r\n\r\n private assetTypes: AssetType[] = [];\r\n private selectedAssetType: AssetType = null;\r\n\tprivate totalRecords: number = 0;\r\n\tprivate isLoading: boolean = false;\r\n\r\n\tprivate get isSuiteEnabled(): boolean {\r\n return get(this.featuresList, [\"Suite\"]);\r\n }\r\n\r\n private async putAssetType(assetType: AssetTypeEx): Promise {\r\n\t\tassetType.live = true;\r\n\t\tlet externalIdsString : string = \"\";\r\n\r\n\t\ttry {\r\n\t\t\texternalIdsString = JSON.stringify(assetType.externalIdsArray);\r\n\t\t}\r\n\t\tcatch (ex){\r\n\t\t\tconsole.log(\"Unexpected error processing External Ids: \" + ex);\r\n\t\t}\r\n\r\n\t\tassetType.externalIds = externalIdsString;\r\n\t\tawait api.createOrUpdateAssetType(assetType);\r\n\t\tthis.updateData(this.mostRecentSearchParams);\r\n }\r\n\r\n private async deleteAssetType(assetType: AssetType): Promise {\r\n\t\tawait api.deleteAssetType(assetType.assetTypeId);\r\n\t\tthis.updateData(this.mostRecentSearchParams);\r\n }\r\n\r\n private async onModalOpen(value: AssetType | null): Promise {\r\n\t\tthis.selectedAssetType = value;\r\n }\r\n\r\n\tprivate async updateData(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\r\n\t\t\tconst request = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\t\t\tlet assetTypesWithPagination = await api.getAssetTypes(request);\r\n\t\t\tthis.totalRecords = assetTypesWithPagination.totalRecords;\r\n\t\t\tthis.assetTypes = this.mapAssetTypes(assetTypesWithPagination.data)\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tconsole.log(\"Unexpected error fetching asset types: \" + ex);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate mapAssetTypes(assetTypes: AssetType[]): AssetTypeEx[] {\r\n\t\tvar externalIdsList = [];\r\n\t\treturn assetTypes.map(at => {\r\n\t\t\t\tat.iconColor = at.iconColor ? at.iconColor: \"black\";\r\n\t\t\t\tat.hideDelete = at.suiteControlled && this.isSuiteEnabled;\r\n\t\t\t\texternalIdsList = this.parseExternalIds(at.externalIds);\r\n\t\t\t\treturn {\r\n\t\t\t\t\t...at,\r\n\t\t\t\t\texternalIdsArray: externalIdsList\r\n\t\t\t\t} as AssetTypeEx\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate parseExternalIds(externalId : string): string[] {\r\n\t\tvar externalIds: string[] = [];\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\texternalIds = JSON.parse(externalId);\r\n\t\t}\r\n\t\tcatch(ex)\r\n\t\t{\r\n\t\t\tconsole.log(\"Unexpected error processing External Ids: \" + ex);\r\n\t\t}\r\n\r\n\t\treturn externalIds;\r\n\t}\r\n\r\n\tprivate get syncAssetEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Mobile\", \"FieldOps\", \"SyncedAssets\"]);\r\n\t}\r\n\r\n\tprivate get syncAssetFeatureEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Mobile\", \"FieldOps\", \"SyncedAssets\"]);\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tawait this.updateData();\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetTypeSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetTypeSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AssetTypeSetup.vue?vue&type=template&id=4ab4724d&scoped=true\"\nimport script from \"./AssetTypeSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./AssetTypeSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AssetTypeSetup.vue?vue&type=style&index=0&id=4ab4724d&prod&scoped=true&lang=scss\"\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 \"4ab4724d\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\n\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport AssetOnlySetup from \"@/components/asset/AssetOnlySetup.vue\";\r\nimport AssetTypeSetup from \"@/components/asset/AssetTypeSetup.vue\";\r\nimport { FeaturesList, LogoutPayload, UserPermissions } from '@/store/types';\r\nimport { Action, Getter } from 'vuex-class';\r\nimport { Constants } from \"@/types/Constants\";\r\n\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"asset-only-setup\": AssetOnlySetup,\r\n\t\t\"asset-type-setup\": AssetTypeSetup,\r\n\t\t\"nav-header\": NavHeader,\r\n\t}\r\n})\r\nexport default class AssetSetup extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getIsFieldOpsLicensed: boolean;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n\t// logout\r\n\t@Action logout: (payload?: LogoutPayload) => void;\r\n\t@Action serverLogout: any;\r\n\r\n\tprivate async created() {\r\n\t\tif(this.isSuiteEnabled && !this.getIsFieldOpsLicensed) {\r\n\t\t\tthis.logoutUser(Constants.FIELD_OPS_NO_LICENCE_ERROR);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async logoutUser(errorMessage: string = null): Promise {\r\n\t\tawait this.serverLogout();\r\n\t\tif(errorMessage) {\r\n\t\t\tconst logoutPayload: LogoutPayload = {\r\n\t\t\t\thasSessionExpired: false,\r\n\t\t\t\tplayAudioAlert: false,\r\n\t\t\t\terrorMessage: errorMessage\r\n\t\t\t}\r\n\t\t\tawait this.logout(logoutPayload);\r\n\t\t} else {\r\n\t\t\tawait this.logout();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isSuiteEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Suite\"]);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AssetSetup.vue?vue&type=template&id=325f738f&scoped=true\"\nimport script from \"./AssetSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./AssetSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AssetSetup.vue?vue&type=style&index=0&id=325f738f&prod&scoped=true&lang=scss\"\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 \"325f738f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card h-100 overflow-y-hide py-1\"},[_c('nav-header',{staticClass:\"maps-header\",attrs:{\"title\":\"Map Setup\"}}),_c('div',{staticClass:\"filters\"},[_c('b-row',{staticStyle:{\"cursor\":\"pointer\"},attrs:{\"align-h\":\"center\",\"align-v\":\"center\"},on:{\"click\":function($event){_vm.showFilters = !_vm.showFilters}}},[_c('h5',{staticClass:\"mb-0\"},[_vm._v(\"Filters\")]),_c('i',{staticClass:\"pl-1\",class:_vm.showFilters ? 'far fa-angle-double-up' : 'far fa-angle-double-down'})]),(_vm.showFilters)?_c('div',[_c('b-row',[_c('b-col',[_c('area-tree-select',{attrs:{\"id\":\"areaFinder\",\"placeholder\":\"By area\"},model:{value:(_vm.selectedArea),callback:function ($$v) {_vm.selectedArea=$$v},expression:\"selectedArea\"}})],1)],1),_c('b-row',[_c('b-col',[_c('v-select-3',{attrs:{\"options\":_vm.mapLayerItemTypes.filter(function (f) { return f.mapLayerItemTypeId < 6 && f.mapLayerItemTypeId !== -1; }),\"label\":\"title\",\"appendToBody\":\"\",\"placeholder\":\"By marker type\",\"multiple\":\"\"},scopedSlots:_vm._u([{key:\"option\",fn:function(option){return [_c('img',{staticClass:\"mapitem-type-icon\",attrs:{\"src\":_vm.getMapItemIcon(option.mapLayerItemTypeId)}}),_vm._v(\" \"+_vm._s(option.title)+\" \")]}}],null,false,2553644368),model:{value:(_vm.selectedMapLayerItemTypes),callback:function ($$v) {_vm.selectedMapLayerItemTypes=$$v},expression:\"selectedMapLayerItemTypes\"}})],1),(_vm.mapDataInBounds.layers.length > 0)?_c('b-col',[_c('v-select-3',{attrs:{\"options\":_vm.mapDataInBounds.layers,\"label\":\"title\",\"appendToBody\":\"\",\"placeholder\":\"By layer\",\"multiple\":\"\"},model:{value:(_vm.selectedLayerFilters),callback:function ($$v) {_vm.selectedLayerFilters=$$v},expression:\"selectedLayerFilters\"}})],1):_vm._e()],1)],1):_vm._e()],1),(_vm.getPermissions.canEditSiteSetup)?_c('div',{staticClass:\"flex-grow-1 col d-flex\",attrs:{\"id\":\"mapSetupContainer\"}},[_vm._m(0),_c('div',{staticClass:\"map-layer-list\",class:{ areaTreeSelectIsOpen: _vm.areaTreeSelectIsOpen }},[_c('b-row',[_c('b-col',[_c('h5',[_vm._v(\" Currently viewing \")])])],1),_c('b-row',[_c('b-col',{attrs:{\"cols\":\"9\"}},[_c('label',[_vm._v(\" Area: \")]),_c('area-tree-select',{attrs:{\"reduce\":function (a) { return a.id; },\"placeholder\":\"Custom view\"},on:{\"is-open\":function (open) { return (_vm.areaTreeSelectIsOpen = open); }},model:{value:(_vm.viewingGroupId),callback:function ($$v) {_vm.viewingGroupId=$$v},expression:\"viewingGroupId\"}})],1),_c('b-col',[(_vm.isMapSetupUseElevationLabels)?_c('div',{staticClass:\"pt-1\"},[_vm._v(\" Floor: \"),_c('elevation-select',{staticClass:\"elevation-select\",staticStyle:{\"width\":\"202.5px\"},attrs:{\"id\":\"map-layer-floor-select\",\"data-cy\":\"map-layer-floor-select-es\",\"placeholder\":\"Select a floor\",\"providedElevations\":_vm.elevationValuesElevationsArray,\"useProvidedOnly\":true},model:{value:(_vm.selectedFloor),callback:function ($$v) {_vm.selectedFloor=$$v},expression:\"selectedFloor\"}})],1):_c('div',[_c('label',[_vm._v(\" Floor: \")]),(!_vm.isLoading)?_c('v-select-3',{staticClass:\"elevation-select\",attrs:{\"options\":_vm.mapDataInBounds.elevations,\"reduce\":function (o) { return o.elevationValue; },\"label\":\"name\",\"appendToBody\":\"\",\"placeholder\":\"Select a floor\",\"clearable\":false},model:{value:(_vm.selectedFloor),callback:function ($$v) {_vm.selectedFloor=$$v},expression:\"selectedFloor\"}}):_vm._e()],1)])],1),_c('h5',{staticClass:\"pt-3\"},[_vm._v(\" Map Layers in view \"),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"fa fa-spinner fa-spin\"})]),(!_vm.isLoading)?_c('vue-perfect-scrollbar',{staticClass:\"card-body p-0\",staticStyle:{\"margin-top\":\"10px\"}},[_c('b-list-group',_vm._l((_vm.mapDataInBounds.layers),function(mapLayer){return _c('b-list-group-item',{key:mapLayer.mapLayerId,staticClass:\"d-flex justify-content-between align-items-center\",attrs:{\"active\":_vm.selectedLayer ? mapLayer.mapLayerId === _vm.selectedLayer.mapLayerId : false},on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.goToMapLayer(mapLayer)}}},[_c('div',[(mapLayer.image && !_vm.hiddenMapLayerIds.includes(mapLayer.mapLayerId))?_c('i',{staticClass:\"far fa-eye\",attrs:{\"title\":_vm.mapLayerImageStatusTitle(mapLayer.mapLayerId)},on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.toggleMapLayerVisibility(mapLayer.mapLayerId)}}}):(mapLayer.image && _vm.hiddenMapLayerIds.includes(mapLayer.mapLayerId))?_c('i',{staticClass:\"far fa-eye-slash\",attrs:{\"title\":_vm.mapLayerImageStatusTitle(mapLayer.mapLayerId)},on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.toggleMapLayerVisibility(mapLayer.mapLayerId)}}}):_c('i',{staticClass:\"far fa-eye\"}),_c('span',{staticClass:\"pl-1\",on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.goToMapLayer(mapLayer)}}},[_vm._v(\" \"+_vm._s(mapLayer.title)+\" \")])]),_c('i',{staticClass:\"fas fa-edit\",attrs:{\"title\":'Edit ' + mapLayer.title + ' - shortcut : shift + s'},on:{\"click\":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.startEditingMapLayer(mapLayer)}}})])}),1)],1):_vm._e(),_c('div',[(!_vm.isLoading)?_c('b-button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift', 'a']),expression:\"['shift', 'a']\",modifiers:{\"once\":true}}],staticClass:\"layer-button\",attrs:{\"variant\":\"primary\",\"size\":\"sm\",\"title\":'Add a new map layer - shortcut : shift + a',\"data-cy\":\"add-layer-button\"},on:{\"click\":_vm.startAddingNewLayer,\"shortkey\":_vm.startAddingNewLayer}},[_vm._v(\" Add Layer \")]):_vm._e(),(_vm.isAddingLayer)?_c('b-button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['esc']),expression:\"['esc']\",modifiers:{\"once\":true}}],staticClass:\"layer-button\",attrs:{\"variant\":\"secondary\",\"size\":\"sm\",\"title\":\"Cancel adding a new map layer\"},on:{\"shortkey\":_vm.closeLayerSetup,\"click\":_vm.closeLayerSetup}},[_vm._v(\" Cancel \")]):_vm._e()],1)],1),_c('transition',{attrs:{\"enter-active-class\":\"animated-fast slideInRight\",\"leave-active-class\":\"animated-fast slideOutRight\"}},[(_vm.selectedLayer)?_c('map-layer-setup',{staticClass:\"layer-form\",attrs:{\"mapLayer\":_vm.selectedLayer,\"dimensions\":_vm.selectedMapLayerDimensions,\"viewingFloor\":_vm.selectedFloorForLayer,\"isEditing\":_vm.isAddingLayer || _vm.isEditingLayer},on:{\"layerImageChanged\":_vm.onLayerImageChanged,\"layerInfoChanged\":_vm.onLayerInfoChanged,\"closeLayerSetup\":_vm.closeLayerSetup,\"mapLayerDeleted\":_vm.onMapLayerDeleted,\"mapLayerSaved\":_vm.onMapLayerSaved,\"mapLayerEditToggled\":_vm.onMapLayerEditToggle}}):_vm._e()],1),_c('transition',{attrs:{\"enter-active-class\":\"animated-fast slideInRight\",\"leave-active-class\":\"animated-fast slideOutRight\"}},[(_vm.relocatedMapLayerItems.length > 0)?_c('div',{staticClass:\"card map-info-box\"},[_c('h5',[_vm._v(\" Unsaved Map Items \"),_c('b-badge',{attrs:{\"variant\":\"primary\",\"pill\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.relocatedMapLayerItems.length)+\" \")])],1),_c('b-list-group',[_c('vue-perfect-scrollbar',{staticStyle:{\"max-height\":\"300px\",\"margin\":\"10px 0\"}},_vm._l((_vm.relocatedMapLayerItems),function(mapLayerItem){return _c('b-list-group-item',{key:mapLayerItem.mapLayerItemId,attrs:{\"title\":\"View Item\"},on:{\"click\":function($event){return _vm.openMapLayerItemSetupModal(mapLayerItem)}}},[_c('img',{staticClass:\"mapitem-type-icon\",attrs:{\"src\":_vm.getMapItemIcon(mapLayerItem.mapLayerItemTypeId)}}),_c('span',{staticClass:\"map-item-title\"},[_vm._v(\" \"+_vm._s(mapLayerItem.title)+\" \")])])}),1)],1),(!_vm.isLoading)?_c('b-button',{staticClass:\"layer-button\",attrs:{\"variant\":\"primary\",\"title\":\"Save changes to map markers\",\"size\":\"sm\"},on:{\"click\":_vm.saveChangesToMapLayerItems}},[_vm._v(\" Save Changes \")]):_vm._e(),_c('b-button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['esc']),expression:\"['esc']\",modifiers:{\"once\":true}}],staticClass:\"layer-button\",attrs:{\"variant\":\"secondary\",\"size\":\"sm\",\"title\":\"Cancel changes to map markers\"},on:{\"shortkey\":_vm.cancelChangesToMapLayerItems,\"click\":_vm.cancelChangesToMapLayerItems}},[_vm._v(\" Cancel \")]),(_vm.isSavingMapLayerItems)?_c('div',{staticClass:\"loader-container\"},[_c('div',{staticClass:\"loader items\"})]):_vm._e()],1):_vm._e()]),_c('transition',{attrs:{\"enter-active-class\":\"animated-fast slideInRight\",\"leave-active-class\":\"animated-fast slideOutRight\"}},[(_vm.showMapLayerInfoBox)?_c('div',{staticClass:\"card map-info-box add-layer\"},[(_vm.isEditingLayer)?_c('span',[_vm._v(\" Click on the map to draw the position of the map layer. Drag to reposition, use the handles to resize. \")]):_vm._e(),(_vm.selectedLayer && _vm.selectedLayer.mapLayerId > 0 && !_vm.isEditingLayer)?_c('span',[_vm._v(\" Click on a map item to select it, click on the map to plot its position. Existing Items can be dragged to reposition. \")]):_vm._e()]):_vm._e()]),(_vm.isNoAddressErrorShown && _vm.selectedAreaDetails)?_c('div',{staticClass:\"info-text\"},[_c('div',{staticClass:\"content\"},[_vm._v(\" Unable navigate to \"),_c('strong',[_vm._v(_vm._s(_vm.selectedAreaDetails.title))]),_c('br'),_vm._v(\" no address is set or it cannot be found \")])]):_vm._e(),_c('div',{staticClass:\"available-map-item-container\",attrs:{\"data-cy\":\"available-map-item-container\"}},[_c('div',{staticClass:\"available-map-item-types\"},[_c('h5',{staticClass:\"p-2\"},[_vm._v(\"Click an icon to begin plotting\")]),_vm._l((_vm.mapLayerItemTypes.filter(\n\t\t\t\t\t\tfunction (f) { return f.mapLayerItemTypeId < 6 && f.mapLayerItemTypeId !== -1; }\n\t\t\t\t\t)),function(mapItemType){return _c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['shift', _vm.getShortKey(mapItemType)]),expression:\"['shift', getShortKey(mapItemType)]\",modifiers:{\"once\":true}}],key:mapItemType.mapLayerItemTypeId,staticClass:\"setup-map-item\",class:{ active: mapItemType.visible, disabled: _vm.isAddingLayer },attrs:{\"data-cy\":'filter-item-' + mapItemType.title,\"title\":_vm.isAddingLayer\n\t\t\t\t\t\t\t? 'Finish layer setup before plotting items'\n\t\t\t\t\t\t\t: 'Plot ' + mapItemType.title + ' - shortcut : shift +' + _vm.getShortKey(mapItemType)},on:{\"click\":function($event){return _vm.beginPlottingItem(mapItemType)},\"shortkey\":function($event){return _vm.beginPlottingItem(mapItemType)}}},[_c('img',{attrs:{\"alt\":'Plot ' + mapItemType.title,\"src\":_vm.getIcon(mapItemType)}})])})],2)])],1):_c('div',{attrs:{\"data-cy\":\"no-permission\"}},[_c('h3',{staticClass:\"pt-4 text-center\"},[_vm._v(\"You don't have permission to view this page\")])]),_c('div',{ref:\"mappingContainer\",staticClass:\"h-100\",class:_vm.getMapType,attrs:{\"id\":\"divMappingContainer\"}})],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"rotation-container\"}},[_c('div',{attrs:{\"id\":\"rotation-handle\",\"title\":\"Drag to rotate map layer image\"}})])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-select3',{staticClass:\"dark\",attrs:{\"id\":\"elevationLabel\",\"options\":_vm.options,\"label\":\"title\",\"appendToBody\":\"\",\"disabled\":_vm.isDisabled,\"taggable\":\"\",\"placeholder\":_vm.placeholder,\"create-option\":function (currentLabel) { return ({title: currentLabel, elevation: currentLabel}); }},on:{\"input\":_vm.elevationSelected},nativeOn:{\"keypress\":function($event){return _vm.isNumber($event)}},model:{value:(_vm.selectedElevation),callback:function ($$v) {_vm.selectedElevation=$$v},expression:\"selectedElevation\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch, Prop, Emit } from \"vue-property-decorator\";\r\nimport vselect3 from \"vselect3\";\r\nimport { ElevationLabelType } from \"../../store/types\";\r\nimport { State } from \"vuex-class\";\r\n\r\n@Component({\r\n components: { \"v-select3\" : vselect3 }\r\n})\r\nexport default class ElevationSelect extends Vue {\r\n @Prop()\r\n private value: number\r\n\r\n @Prop({ type: Boolean, default: false})\r\n private isDisabled;\r\n\r\n @Prop({ type: Array, required: false, default: () => { return [] } })\r\n\tprivate providedElevations: number[];\r\n\r\n @Prop({ type: Number, default: null})\r\n private presetValue;\r\n\r\n @Prop({ type: Boolean, default: false})\r\n private useProvidedOnly;\r\n\r\n @Prop({type: String, default: \"Select an Elevation\"})\r\n private placeholder: string;\r\n\r\n private loaded: boolean = false;\r\n\r\n @State(\"elevationLabels\")\r\n\tprivate elevationLabels: ElevationLabelType[];\r\n\r\n private selectedElevation: any = null;\r\n\r\n private options: ElevationLabelType[] = [];\r\n\r\n private mounted(): void\r\n {\r\n this.setOptions();\r\n this.setSelectElevation();\r\n this.loaded = true;\r\n }\r\n\r\n @Watch(\"elevationLabels\")\r\n @Watch(\"providedElevations\")\r\n public setOptions (): void\r\n {\r\n var options = [];\r\n if(this.providedElevations && this.providedElevations.length > 0 && this.useProvidedOnly)\r\n {\r\n options = [...this.providedElevations\r\n .map((elevation) =>\r\n {\r\n return {\r\n title: this.elevationLabels.find(el => el.elevation == elevation)?.title || elevation,\r\n elevation: elevation\r\n }\r\n })];\r\n }\r\n else\r\n {\r\n options = [...this.elevationLabels];\r\n }\r\n\r\n options.sort(function(a,b){return a.elevation-b.elevation});\r\n this.options = options;\r\n }\r\n\r\n @Watch(\"value\")\r\n private setSelectElevation(): void\r\n {\r\n if (this.value == this.selectedElevation?.elevation)\r\n {\r\n return;\r\n }\r\n\r\n\t\tif (this.value == null) {\r\n this.selectedElevation = null;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n let valueToAdd = null;\r\n const needToAddDefaultOptionOnLoad = this.presetValue != null;\r\n\r\n if (needToAddDefaultOptionOnLoad) {\r\n valueToAdd = this.presetValue;\r\n } else {\r\n valueToAdd = this.value;\r\n }\r\n\r\n var foundOption = this.options.find((o) => o.elevation == valueToAdd);\r\n if(!foundOption)\r\n {\r\n this.options.push({title: valueToAdd.toString(), elevation: valueToAdd})\r\n this.options.sort(function(a,b){return a.elevation-b.elevation});\r\n foundOption = this.options.find((o) => o.elevation == valueToAdd);\r\n }\r\n\t\tthis.selectedElevation = foundOption;\r\n\t\tthis.$emit(\"input\", foundOption.elevation)\r\n\t}\r\n\r\n @Emit(\"input\")\r\n private elevationSelected(elevationLabel : ElevationLabelType): number\r\n {\r\n return elevationLabel?.elevation;\r\n }\r\n\r\n private isNumber(e) {\r\n let char = String.fromCharCode(e.keyCode);\r\n if (/^[0-9]+$/.test(char)) {\r\n return true;\r\n }\r\n else {\r\n e.preventDefault();\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ElevationSelect.vue?vue&type=template&id=e1735ff8&scoped=true\"\nimport script from \"./ElevationSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./ElevationSelect.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ElevationSelect.vue?vue&type=style&index=0&id=e1735ff8&prod&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 \"e1735ff8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[(_vm.isLoading)?_c('div',{staticClass:\"loader-overlay\"},[_c('div',{staticClass:\"loader\"})]):_vm._e(),_c('button',{staticClass:\"fa fa-times hover-icon close-button\",attrs:{\"aria-label\":\"Close\",\"title\":\"Close\",\"type\":\"button\"},on:{\"click\":_vm.closeMapLayerSetup}}),_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col\"},[_vm._m(0),_c('b-form-input',{attrs:{\"id\":\"mapLayerTitle\",\"type\":\"text\",\"maxlength\":\"250\",\"readonly\":!_vm.isEditing,\"autocomplete\":\"off\",\"placeholder\":\"Provide a title\"},on:{\"change\":_vm.layerInfoUpdate},model:{value:(_vm.updatedMapLayer.title),callback:function ($$v) {_vm.$set(_vm.updatedMapLayer, \"title\", $$v)},expression:\"updatedMapLayer.title\"}})],1)]),_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col\"},[_vm._m(1),_c('area-tree-select',{attrs:{\"id\":\"mapLayerGroup\",\"reduce\":function (a) { return a.id; },\"placeholder\":\"Search/Select an area\",\"clearable\":false,\"readonly\":!_vm.isEditing},on:{\"input\":_vm.layerInfoUpdate},model:{value:(_vm.updatedMapLayer.groupId),callback:function ($$v) {_vm.$set(_vm.updatedMapLayer, \"groupId\", $$v)},expression:\"updatedMapLayer.groupId\"}})],1)]),(_vm.isMapSetupElevationsEnabled)?_c('div',[(_vm.isMapSetupUseElevationLabels)?_c('div',[_c('div',{staticClass:\"row mb-1\"},[_c('div',{staticClass:\"col\"},[_vm._m(2),_c('elevation-select',{staticClass:\"width-200 padding-top-10\",attrs:{\"id\":\"map-layer-min-elevation-select\",\"data-cy\":\"map-layer-min-elevation-select-es\",\"isDisabled\":!_vm.isEditing,\"presetValue\":_vm.getDefaultValueForElevationOptions(_vm.updatedMapLayer.minElevation)},model:{value:(_vm.updatedMapLayer.minElevation),callback:function ($$v) {_vm.$set(_vm.updatedMapLayer, \"minElevation\", $$v)},expression:\"updatedMapLayer.minElevation\"}})],1)]),_c('div',{staticClass:\"row mb-1\"},[_c('div',{staticClass:\"col\"},[_vm._m(3),_c('elevation-select',{staticClass:\"width-200 padding-top-10\",attrs:{\"id\":\"map-layer-max-elevation-select\",\"data-cy\":\"map-layer-max-elevation-select-es\",\"isDisabled\":!_vm.isEditing,\"presetValue\":_vm.getDefaultValueForElevationOptions(_vm.updatedMapLayer.maxElevation)},model:{value:(_vm.updatedMapLayer.maxElevation),callback:function ($$v) {_vm.$set(_vm.updatedMapLayer, \"maxElevation\", $$v)},expression:\"updatedMapLayer.maxElevation\"}})],1)])]):_c('div',[_c('div',{staticClass:\"row mb-1\"},[_c('div',{staticClass:\"col\"},[_vm._m(4),_c('b-input',{staticClass:\"m-0\",attrs:{\"id\":\"map-layer-min-elevation\",\"data-cy\":\"map-layer-min-elevation-es\",\"type\":\"number\",\"maxlength\":\"10\",\"placeholder\":\"0\",\"readonly\":!_vm.isEditing},model:{value:(_vm.updatedMapLayer.minElevation),callback:function ($$v) {_vm.$set(_vm.updatedMapLayer, \"minElevation\", $$v)},expression:\"updatedMapLayer.minElevation\"}})],1)]),_c('div',{staticClass:\"row mb-1\"},[_c('div',{staticClass:\"col\"},[_vm._m(5),_c('b-input',{attrs:{\"id\":\"map-layer-max-elevation\",\"data-cy\":\"map-layer-max-elevation-es\",\"type\":\"number\",\"maxlength\":\"10\",\"placeholder\":\"0\",\"readonly\":!_vm.isEditing},model:{value:(_vm.updatedMapLayer.maxElevation),callback:function ($$v) {_vm.$set(_vm.updatedMapLayer, \"maxElevation\", $$v)},expression:\"updatedMapLayer.maxElevation\"}})],1)])])]):_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col\"},[_vm._m(6),(_vm.isMapSetupUseElevationLabels)?_c('elevation-select',{staticClass:\"width-200 padding-top-10\",attrs:{\"id\":\"map-layer-floor-select\",\"data-cy\":\"map-layer-floor-select-es\",\"isDisabled\":!_vm.isEditing,\"placeholder\":\"Select a Floor\"},model:{value:(_vm.selectedFloor),callback:function ($$v) {_vm.selectedFloor=$$v},expression:\"selectedFloor\"}}):_c('b-form-input',{attrs:{\"id\":\"map-layer-floor\",\"data-cy\":\"map-layer-floor-es\",\"type\":\"number\",\"maxlength\":\"10\",\"placeholder\":\"Set a floor number\",\"readonly\":!_vm.isEditing},model:{value:(_vm.selectedFloor),callback:function ($$v) {_vm.selectedFloor=$$v},expression:\"selectedFloor\"}})],1)]),(_vm.showElevationError)?_c('div',{staticClass:\"text-danger pt-1\",attrs:{\"id\":\"map-setup-elevation-warning\",\"data-cy\":\"map-setup-elevation-warning\"}},[_vm._v(\" Max Elevation must be greater than Min Elevation. \")]):_vm._e(),_c('div',{staticClass:\"row mb-2\"},[_c('div',{staticClass:\"col\"},[_vm._m(7),_vm._m(8),(!_vm.updatedMapLayer.image || _vm.isChangingImage)?_c('div',{staticClass:\"image-upload\"},[_c('b-form-file',{attrs:{\"id\":\"map-layer-image\",\"state\":Boolean(_vm.file),\"placeholder\":\"Choose a file or drop it here...\",\"drop-placeholder\":\"Drop file here...\",\"accept\":\".jpg, .png, .gif\",\"disabled\":!_vm.isEditing},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}}),_c('i',{staticClass:\"fa fa-image\"})],1):_vm._e(),(_vm.previewImgSrc && _vm.isChangingImage)?_c('div',{ref:\"preview\",attrs:{\"id\":\"preview\"}},[_c('img',{staticClass:\"obj\",attrs:{\"alt\":\"Upload\",\"src\":_vm.previewImgSrc}})]):_vm._e(),(_vm.updatedMapLayer.image && !_vm.isChangingImage)?_c('img',{staticClass:\"map-layer-image\",attrs:{\"src\":_vm.updatedMapLayer.image,\"alt\":_vm.updatedMapLayer.title + ' Image',\"title\":_vm.updatedMapLayer.title + ', Click to change'},on:{\"click\":_vm.onMapLayerImageClick}}):_vm._e(),_c('div',{staticClass:\"latlong\",attrs:{\"data-cy\":\"latlong-display\"}},[(_vm.updatedMapLayer.ne && _vm.updatedMapLayer.ne.length > 0)?_c('div',[_c('i',{staticClass:\"fas fa-map-pin margin-right pin-icon\",attrs:{\"title\":\"Latitude and longitude\"}}),_c('span',[_vm._v(_vm._s(_vm.updatedMapLayer.ne.toString()))])]):_vm._e()]),_c('span',{staticClass:\"image-rotation\"},[_vm._v(\"Rotation: \"+_vm._s(_vm.updatedMapLayer.rotation)+\"°\")]),(_vm.dimensions)?_c('div',[_vm._v(\"Height : \"+_vm._s(_vm.dimensions.height)+\"m Width : \"+_vm._s(_vm.dimensions.width)+\"m\")]):_vm._e()])]),(_vm.updatedMapLayer.mapLayerId > 0)?_c('b-button',{staticClass:\"mr-3\",attrs:{\"variant\":\"danger\",\"title\":\"Delete MapLayer Item\",\"id\":\"enable-delete-dialog\"},on:{\"click\":function($event){$event.preventDefault();return _vm.deleteMapLayerDialog($event)}}},[_vm._v(\" Delete \")]):_vm._e(),(_vm.isEditing)?_c('b-button',{staticClass:\"mr-3\",attrs:{\"variant\":\"primary\",\"id\":\"saveMapLayer\",\"data-cy\":\"btn-map-layer-save\",\"disabled\":_vm.$v.updatedMapLayer.$invalid || (_vm.updatedMapLayer.image === '' && _vm.$v.file.$invalid) || this.showElevationError},on:{\"click\":function($event){$event.preventDefault();return _vm.saveMapLayerDetails($event)}}},[_vm._v(\" Save \")]):_c('b-button',{staticClass:\"mr-3\",attrs:{\"variant\":\"primary\",\"id\":\"editMapLayer\",\"disabled\":_vm.$v.updatedMapLayer.$invalid || (_vm.updatedMapLayer.image === '' && _vm.$v.file.$invalid)},on:{\"click\":function($event){$event.preventDefault();return _vm.$emit('mapLayerEditToggled')}}},[_vm._v(\" Edit \")]),(_vm.isEditing)?_c('b-button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['esc']),expression:\"['esc']\",modifiers:{\"once\":true}}],attrs:{\"variant\":\"secondary\",\"id\":\"cancelMapLayerSetup\"},on:{\"click\":function($event){$event.preventDefault();return _vm.resetMapLayerData($event)},\"shortkey\":_vm.resetMapLayerData}},[_vm._v(\" Cancel \")]):_c('b-button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey.once\",value:(['esc']),expression:\"['esc']\",modifiers:{\"once\":true}}],attrs:{\"variant\":\"secondary\",\"id\":\"closeMapLayerSetup\"},on:{\"click\":function($event){$event.preventDefault();return _vm.closeMapLayerSetup($event)},\"shortkey\":_vm.closeMapLayerSetup}},[_vm._v(\" Close \")]),_c('b-modal',{attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"header-class\":\"delete-confirm-modal\"},model:{value:(_vm.isDeleteMapLayerVisible),callback:function ($$v) {_vm.isDeleteMapLayerVisible=$$v},expression:\"isDeleteMapLayerVisible\"}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header\"},[_c('i',{staticClass:\"fas fa-trash hover-icon\",attrs:{\"title\":\"Delete Icon\"}}),_c('h4',[_vm._v(\"Delete Map Layer Item\")])])]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{attrs:{\"variant\":\"danger\"},on:{\"click\":function($event){return _vm.deleteLayer()}}},[_vm._v(\" Delete \")]),_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){_vm.isDeleteMapLayerVisible = false}}},[_vm._v(\" Cancel \")])],1),_c('div',[_c('h5',{staticClass:\"default-error-message\"},[_vm._v(\" Are you sure you want to delete \"),_c('strong',[_vm._v(\"\\\"\"+_vm._s(_vm.updatedMapLayer.title)+\"\\\"\")]),_vm._v(\"? \")])])],2)],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"mb-0\",attrs:{\"for\":\"mapLayerTitle\"}},[_vm._v(\"Title\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_vm._v(\":\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"mb-0\",attrs:{\"for\":\"mapLayerGroup\"}},[_vm._v(\"Area\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_vm._v(\":\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"mb-0\",attrs:{\"for\":\"mapLayerMinElevation\"}},[_vm._v(\" Minimum Elevation\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_vm._v(\": \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"mb-0\",attrs:{\"for\":\"mapLayerMaxElevation\"}},[_vm._v(\" Maximum Elevation\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_vm._v(\": \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"mb-0\",attrs:{\"for\":\"mapLayerMinElevation\"}},[_vm._v(\" Minimum Elevation\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_vm._v(\": \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"mb-0\",attrs:{\"for\":\"mapLayerMaxElevation\"}},[_vm._v(\" Maximum Elevation\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_vm._v(\": \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"mb-0\",attrs:{\"for\":\"mapLayerFloor\"}},[_vm._v(\" Floor\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_vm._v(\": \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"mb-0\",attrs:{\"for\":\"map-layer-image\"}},[_vm._v(\" Image\"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]),_vm._v(\": \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('small',{staticClass:\"text-muted\"},[_vm._v(\"(Max size 4MB)\")])])}]\n\nexport { render, staticRenderFns }","\r\n// Vue\r\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { maxLength, minLength, integer, required, maxValue } from \"vuelidate/lib/validators\";\r\nimport { get } from \"lodash\";\r\nimport { MapLayer } from \"@/store/map-layers/types\";\r\nimport api from \"@/services/api.service\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport { State } from \"vuex-class\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport ElevationSelect from \"@/components/form/ElevationSelect.vue\"\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\tupdatedMapLayer: {\r\n\t\t\ttitle: {\r\n\t\t\t\trequired,\r\n\t\t\t\tminLength: minLength(3),\r\n\t\t\t\tmaxLength: maxLength(250)\r\n\t\t\t},\r\n\t\t\tgroupId: {\r\n\t\t\t\trequired\r\n\t\t\t},\r\n\t\t\tminElevation: {\r\n\t\t\t\trequired,\r\n\t\t\t\tinteger,\r\n\t\t\t},\r\n\t\t\tmaxElevation: {\r\n\t\t\t\tinteger,\r\n\t\t\t},\r\n\t\t\tnw: {\r\n\t\t\t\trequired\r\n\t\t\t}\r\n\t\t},\r\n\t\tfile: {\r\n\t\t\trequired\r\n\t\t}\r\n\t},\r\n\tcomponents: {\r\n\t\t\"area-tree-select\" : AreaTreeSelect,\r\n\t\t\"elevation-select\": ElevationSelect\r\n\t}\r\n})\r\nexport default class MapLayerSetup extends Vue {\r\n\t@Prop({ default: null }) public mapLayer: MapLayer;\r\n\t@Prop({ default: null }) public dimensions: object;\r\n\t@Prop({ default: 1 }) public viewingFloor: number;\r\n\t@Prop({ default: false }) public isEditing: boolean;\r\n\r\n\t@State private featuresList: FeaturesList;\r\n\r\n\tprivate mapLayerTemplate: MapLayer = null;\r\n\tprivate updatedMapLayer: MapLayer = {\r\n\t\tmapLayerId: 0,\r\n\t\tgroupId: null,\r\n\t\timage: \"\",\r\n\t\ttitle: \"\",\r\n\t\tsw: \"\",\r\n\t\tse: \"\",\r\n\t\tne: \"\",\r\n\t\tnw: \"\",\r\n\t\trotation: 0,\r\n\t\tminElevation: 0,\r\n\t\tmaxElevation: 0,\r\n\t\tcalculatedNw: \"\",\r\n\t\tcalculatedNe: \"\",\r\n\t\tcalculatedSe: \"\",\r\n\t\tcalculatedSw: \"\",\r\n\t};\r\n\tprivate isLoading: boolean = false;\r\n\tprivate isDeleteMapLayerVisible: boolean = false;\r\n\tprivate selectedFloor: number = 1;\r\n\tprivate isChangingImage: boolean = false;\r\n\tprivate file = null;\r\n\tprivate previewImgSrc = null;\r\n\tprivate showElevationError: boolean = false;\r\n\r\n\tprivate readonly IMAGE_SIZE_LIMIT = 4194304; // 4MB\r\n\r\n\tprivate mounted() {\r\n\t\tthis.onMapLayerUpdated(this.mapLayer);\r\n\r\n\t\tthis.selectedFloor = this.viewingFloor;\r\n\r\n\t\tthis.mapLayerTemplate = Object.assign({}, this.updatedMapLayer);\r\n\t}\r\n\r\n\tprivate get isMapSetupElevationsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"MapSetup\", \"Elevations\"]);\r\n\t}\r\n\r\n\tprivate get isMapSetupUseElevationLabels(): boolean {\r\n\t\treturn get(this.featuresList, [\"MapSetup\", \"ElevationLabels\"]);\r\n\t}\r\n\r\n\tprivate getDefaultValueForElevationOptions(elevation: number): number {\r\n\t\tif (this.isEditing) {\r\n\t\t\treturn elevation;\r\n\t\t} else {\r\n\t\t\treturn this.viewingFloor\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"updatedMapLayer.maxElevation\")\r\n\t@Watch(\"updatedMapLayer.minElevation\")\r\n\tprivate isValidElevation(): void {\r\n\t\t\ttry {\r\n\t\t\t\tconst min = parseInt(this.updatedMapLayer.minElevation.toString(), 10);\r\n\t\t\t\tconst max = parseInt(this.updatedMapLayer.maxElevation.toString(), 10);\r\n\r\n\t\t\t\tif(!isNaN(min) && isNaN(max)) {\r\n\t\t\t\t\tthis.showElevationError = true;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(isNaN(min) || isNaN(max)) {\r\n\t\t\t\t\t// Error should not show, however the submit button will still be disabled.\r\n\t\t\t\t\tthis.showElevationError = false;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.showElevationError = min > max;\r\n\t\t\t}\r\n\t\t\tcatch (e) {\r\n\t\t\t\tthis.updatedMapLayer.minElevation = 0;\r\n\t\t\t\tthis.updatedMapLayer.maxElevation = 0;\r\n\t\t\t\tconsole.error('Error parsing max/min elevation, resetting values to 0', e);\r\n\t\t\t}\r\n\t}\r\n\r\n\t@Watch(\"mapLayer\", { deep: true })\r\n\tprivate onMapLayerUpdated(mapLayer: MapLayer) {\r\n\t\tif (!mapLayer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.updatedMapLayer = { ...mapLayer };\r\n\t\tif (this.updatedMapLayer.image && !this.updatedMapLayer.image.includes(\"data:image\")) {\r\n\t\t\tthis.updatedMapLayer.image = \"data:image/png;base64, \" + this.updatedMapLayer.image;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"selectedFloor\")\r\n private onSelectedFloorUpdated() {\r\n if (this.isMapSetupUseElevationLabels) {\r\n if(this.isMapSetupElevationsEnabled)\r\n {\r\n this.mapLayer.minElevation = this.updatedMapLayer.minElevation;\r\n this.mapLayer.maxElevation = this.updatedMapLayer.maxElevation;\r\n }\r\n else\r\n {\r\n\t\t\t\tthis.updatedMapLayer.minElevation = this.selectedFloor;\r\n \tthis.updatedMapLayer.maxElevation = this.selectedFloor;\r\n }\r\n } else{\r\n\t\t\tthis.updatedMapLayer.minElevation = this.selectedFloor - 1;\r\n this.updatedMapLayer.maxElevation = this.selectedFloor - 1;\r\n }\r\n\r\n\t\tthis.layerInfoUpdate();\r\n }\r\n\r\n\tprivate async saveMapLayerDetails() {\r\n\t\tthis.isLoading = true;\r\n\t\tlet updatedLayer = { ...this.updatedMapLayer };\r\n\r\n\t\tif (!updatedLayer.mapLayerId) {\r\n\t\t\tupdatedLayer.mapLayerId = 0;\r\n\t\t}\r\n\r\n\t\tif (this.file && this.file.size > this.IMAGE_SIZE_LIMIT) {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Error\",\r\n\t\t\t\ttext: `Invalid image size. Limit is ${this.IMAGE_SIZE_LIMIT / 1024 / 1024}MB.`\r\n\t\t\t});\r\n\t\t\tthis.isLoading = false;\r\n\t\t\treturn;\r\n\t\t} else if (this.file) {\r\n\t\t\tupdatedLayer.image = this.file;\r\n\t\t} else {\r\n\t\t\t// @ts-ignore\r\n\t\t\tupdatedLayer.image = this.updatedMapLayer.image ? this.dataURItoBlob(this.updatedMapLayer.image) : undefined;\r\n\t\t}\r\n\r\n\t\tlet formData = new FormData();\r\n\r\n\t\tfor (let [name, value] of Object.entries(updatedLayer)) {\r\n\t\t\tformData.append(name, value as any);\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tupdatedLayer = await api.putMapLayer(formData);\r\n\t\t\tthis.$emit(\"mapLayerSaved\", updatedLayer);\r\n\t\t} catch (error) {\r\n\t\t\tconst errorTitle = \"Error Saving Map Layer\";\r\n\t\t\tconst permissionsErrorAction = this.updatedMapLayer.mapLayerId === 0 ? \"create\" : \"update\";\r\n\t\t\tif (error.response &&\r\n\t\t\t\terror.response.data) {\r\n\t\t\t\tswitch(error.response.status) {\r\n\t\t\t\t\tcase 403:\r\n\t\t\t\t\t\tthis.notifyError(errorTitle, `You do not have permissions to ${permissionsErrorAction} Map Layers`);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 500:\r\n\t\t\t\t\t\tthis.notifyError(errorTitle, \"Unexpected error saving map layer. Please contact support if this problem persists.\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 400:\r\n\t\t\t\t\t\tthis.notifyError(errorTitle, error.response.data);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconsole.error(error);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate dataURItoBlob(dataURI) {\r\n\t\t// convert base64/URLEncoded data component to raw binary data held in a string\r\n\t\tlet byteString;\r\n\t\tif (dataURI.split(\",\")[0].indexOf(\"base64\") >= 0) {\r\n\t\t\tbyteString = atob(dataURI.split(\",\")[1]);\r\n\t\t} else {\r\n\t\t\tbyteString = unescape(dataURI.split(\",\")[1]);\r\n\t\t}\r\n\r\n\t\t// separate out the mime component\r\n\t\tlet mimeString = dataURI\r\n\t\t\t.split(\",\")[0]\r\n\t\t\t.split(\":\")[1]\r\n\t\t\t.split(\";\")[0];\r\n\r\n\t\t// write the bytes of the string to a typed array\r\n\t\tlet ia = new Uint8Array(byteString.length);\r\n\t\tfor (let i = 0; i < byteString.length; i++) {\r\n\t\t\tia[i] = byteString.charCodeAt(i);\r\n\t\t}\r\n\r\n\t\treturn new Blob([ia], { type: mimeString });\r\n\t}\r\n\r\n\tprivate resetMapLayerData() {\r\n\t\tthis.updatedMapLayer = Object.assign({}, this.mapLayerTemplate);\r\n\t\tthis.isChangingImage = false;\r\n\t\tthis.previewImgSrc = null;\r\n\t\tthis.$emit(\"mapLayerEditToggled\");\r\n\t\tif (this.updatedMapLayer.mapLayerId === 0) {\r\n\t\t\tthis.closeMapLayerSetup();\r\n\t\t} else {\r\n\t\t\tthis.$emit(\"layerImageChanged\", this.updatedMapLayer);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate closeMapLayerSetup() {\r\n\t\tthis.$emit(\"closeLayerSetup\");\r\n\t}\r\n\r\n\tprivate deleteMapLayerDialog() {\r\n\t\tthis.isDeleteMapLayerVisible = true;\r\n\t}\r\n\r\n\tprivate async deleteLayer(): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tawait api.deleteMapLayer(this.updatedMapLayer.mapLayerId);\r\n\t\t\tthis.$emit(\"mapLayerDeleted\", this.updatedMapLayer.mapLayerId);\r\n\t\t\tthis.isDeleteMapLayerVisible = false;\r\n\t\t} catch (error) {\r\n\t\t\tconst errorTitle = \"Error Deleting Map Layer\";\r\n\t\t\tif (error.response &&\r\n\t\t\t\terror.response.data) {\r\n\t\t\t\tswitch (error.response.status) {\r\n\t\t\t\t\tcase 403:\r\n\t\t\t\t\t\tthis.notifyError(errorTitle, `You do not have permissions to delete this map layer`);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 500:\r\n\t\t\t\t\t\tthis.notifyError(errorTitle, \"Unexpected error deleting map layer. Please contact support if this problem persists.\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconsole.error(error);\r\n\t\t} finally {\r\n\t\t\t// errors will be handled by interceptors - no catch needed.\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onMapLayerImageClick() {\r\n\t\tif (this.isEditing) {\r\n\t\t\tthis.isChangingImage = !this.isChangingImage;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate notifyError(title: string, text: string) : void {\r\n\t\tthis.$notify({\r\n\t\t\ttype: \"error\",\r\n\t\t\ttitle: title,\r\n\t\t\ttext: text\r\n\t\t});\r\n\t}\r\n\r\n\t@Watch(\"file\")\r\n\tprivate onFileChanged(val) {\r\n\t\tif (!val) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.previewImgSrc) {\r\n\t\t\tthis.previewImgSrc = null;\r\n\t\t}\r\n\r\n\t\tconst fileReader = new FileReader();\r\n\r\n\t\tfileReader.onload = e => {\r\n\t\t\tthis.previewImgSrc = e.target.result;\r\n\t\t\t// @ts-ignore\r\n\t\t\tthis.updatedMapLayer.image = e.target.result;\r\n\t\t\tthis.$emit(\"layerImageChanged\", this.updatedMapLayer);\r\n\t\t};\r\n\r\n\t\tfileReader.readAsDataURL(this.file);\r\n\t}\r\n\r\n\tprivate layerInfoUpdate(): void {\r\n\t\tthis.$emit(\"layerInfoChanged\", this.updatedMapLayer);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapLayerSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MapLayerSetup.vue?vue&type=template&id=414d4462&scoped=true\"\nimport script from \"./MapLayerSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./MapLayerSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MapLayerSetup.vue?vue&type=style&index=0&id=414d4462&prod&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 \"414d4462\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-card-text',[_c('div',{staticClass:\"form-group d-flex input-row\"},[_c('div',[(_vm.mapIcons[_vm.updatedMapLayerItem.mapLayerItemTypeId])?_c('img',{staticClass:\"legend-icon\",attrs:{\"alt\":'Toggle ' + _vm.updatedMapLayerItem.title,\"src\":_vm.mapIcons[_vm.updatedMapLayerItem.mapLayerItemTypeId]}}):_vm._e()]),(_vm.isEditModeEnabled)?_c('div',[_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]):_vm._e(),_c('vselect3',{staticClass:\"dark flex-grow-1\",attrs:{\"id\":\"mapItem-device\",\"data-cy\":\"mapItem-device\",\"disabled\":!_vm.isEditModeEnabled,\"title\":\"Device\",\"value\":\"objectId\",\"label\":\"title\",\"options\":_vm.availableDevices,\"placeholder\":_vm.getDeviceSelectPlaceholder,\"clearable\":true,\"closeOnSelect\":true,\"appendToBody\":\"\",\"filterable\":true},on:{\"input\":_vm.deviceSelected,\"search\":_vm.debounceFilterQuery},model:{value:(_vm.selectedDevice),callback:function ($$v) {_vm.selectedDevice=$$v},expression:\"selectedDevice\"}})],1)]),_c('b-card-text',[_vm._v(\" Linked Layers: \"),_c('vselect3',{staticClass:\"dark flex-grow-1\",attrs:{\"id\":\"mapItem-linkedLayers\",\"data-cy\":\"mapItem-linkedLayers\",\"disabled\":!_vm.isEditModeEnabled,\"title\":\"Map Layer\",\"value\":\"mapLayerId\",\"label\":\"title\",\"options\":_vm.mapLayersInBounds,\"placeholder\":\"Select Map Layer\",\"clearable\":true,\"multiple\":\"\",\"closeOnSelect\":true,\"appendToBody\":\"\"},on:{\"input\":_vm.setLayerDisplay},model:{value:(_vm.selectedLayers),callback:function ($$v) {_vm.selectedLayers=$$v},expression:\"selectedLayers\"}})],1),(_vm.isMapSetupElevationsEnabled)?_c('div',{staticClass:\"form-group d-flex input-row\"},[_vm._v(\" Minimum Elevation: \"),(_vm.isMapSetupUseElevationLabels)?_c('elevation-select',{staticClass:\"margin-5 width-200 padding-top-10\",attrs:{\"id\":\"map-layer-min-elevation\",\"data-cy\":\"map-layer-min-elevation-es\",\"isDisabled\":!_vm.isEditModeEnabled,\"presetValue\":_vm.getDefaultValueForElevationOptions},model:{value:(_vm.updatedMapLayerItem.minElevation),callback:function ($$v) {_vm.$set(_vm.updatedMapLayerItem, \"minElevation\", $$v)},expression:\"updatedMapLayerItem.minElevation\"}}):_c('b-input',{attrs:{\"id\":\"map-layer-min-elevation-input\",\"data-cy\":\"map-layer-min-elevation-input-es\",\"type\":\"number\",\"maxlength\":\"10\",\"placeholder\":\"0\",\"readonly\":!_vm.isEditModeEnabled},model:{value:(_vm.updatedMapLayerItem.minElevation),callback:function ($$v) {_vm.$set(_vm.updatedMapLayerItem, \"minElevation\", $$v)},expression:\"updatedMapLayerItem.minElevation\"}}),_vm._v(\" Maximum Elevation \"),(_vm.isMapSetupUseElevationLabels)?_c('elevation-select',{staticClass:\"margin-5 width-200 padding-top-10\",attrs:{\"id\":\"map-layer-max-elevation\",\"data-cy\":\"map-layer-max-elevation-es\",\"isDisabled\":!_vm.isEditModeEnabled,\"presetValue\":_vm.getDefaultValueForElevationOptions},model:{value:(_vm.updatedMapLayerItem.maxElevation),callback:function ($$v) {_vm.$set(_vm.updatedMapLayerItem, \"maxElevation\", $$v)},expression:\"updatedMapLayerItem.maxElevation\"}}):_c('b-input',{attrs:{\"id\":\"map-layer-elevation-input\",\"data-cy\":\"map-layer-elevation-input-es\",\"type\":\"number\",\"maxlength\":\"10\",\"placeholder\":\"0\",\"readonly\":!_vm.isEditModeEnabled},model:{value:(_vm.updatedMapLayerItem.maxElevation),callback:function ($$v) {_vm.$set(_vm.updatedMapLayerItem, \"maxElevation\", $$v)},expression:\"updatedMapLayerItem.maxElevation\"}})],1):_c('div',{staticClass:\"form-group d-flex input-row\"},[_vm._v(\" Floor: \"),(_vm.isMapSetupUseElevationLabels)?_c('elevation-select',{staticClass:\"margin-5 width-200 padding-top-10\",attrs:{\"id\":\"map-layer-floor\",\"data-cy\":\"map-layer-floor-es\",\"isDisabled\":!_vm.isEditModeEnabled,\"presetValue\":_vm.getDefaultValueForElevationOptions},model:{value:(_vm.selectedFloor),callback:function ($$v) {_vm.selectedFloor=$$v},expression:\"selectedFloor\"}}):_c('b-input',{attrs:{\"id\":\"map-layer-floor-input\",\"data-cy\":\"map-layer-floor-input-es\",\"type\":\"number\",\"maxlength\":\"10\",\"placeholder\":\"0\",\"readonly\":!_vm.isEditModeEnabled},model:{value:(_vm.selectedFloor),callback:function ($$v) {_vm.selectedFloor=$$v},expression:\"selectedFloor\"}})],1),(this.showElevationError)?_c('div',{staticClass:\"text-danger pb-2\",attrs:{\"id\":\"map-item-setup-elevation-warning\",\"data-cy\":\"map-item-setup-elevation-warning\"}},[_vm._v(\" Max Elevation must be greater than Min Elevation. \")]):_vm._e(),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"latlong\"},[_c('div',[_c('i',{staticClass:\"fas fa-map-pin margin-right pin-icon\"}),_vm._v(\" \"+_vm._s(_vm.updatedMapLayerItem.latLong.toString())+\" \")]),_c('div',[_c('i',{staticClass:\" [] }) public mapLayersInBounds: MapLayer[]; // The Item we are Creating / Editing\r\n\t@Prop(Number) public groupId: number;\r\n\t@Prop(Number) public currentFloor: number;\r\n\r\n\t@State private featuresList: FeaturesList;\r\n\r\n\t@MapLayers.State(\"mapItemIcons\") private mapIcons!: MarkerIcons;\r\n\t@MapLayers.Getter(\"getMapLayerItemTypes\") public mapItemTypes: MapLayerItemType[];\r\n\r\n\tprivate isEditMode: boolean = false;\r\n\tprivate showElevationError: boolean = false;\r\n\tprivate isDeleteConfirmationVisible: boolean = false;\r\n\r\n\tprivate mapLayerDisplay: IMapLayerDisplay = { title: \"\", mapLayerId: 0 };\r\n\tprivate selectedLayers: MapLayer[] = null;\r\n\r\n\tprivate selectedDevice: MapLayerItemDeviceOption = null;\r\n\tprivate availableDevices: MapLayerItemDeviceOption[] = [];\r\n\r\n\tprivate mapItemTemplate: MapLayerItem; // The thing we validate against and reset to\r\n\tprivate updatedMapLayerItem: MapLayerItem = {\r\n\t\tmapLayerItemId: 0,\r\n\t\tmapLayerItemTypeId: 0,\r\n\t\tobjectId: 0,\r\n\t\textraValue: \"\",\r\n\t\ttitle: \"\",\r\n\t\tlatLong: \"\",\r\n\t\tminElevation: 0,\r\n\t\tmaxElevation: 0,\r\n\t\tregionPath: \"\",\r\n\t\tmapLayerIds: [],\r\n\t\thideOnMap: false,\r\n\t\tgroupId: null\r\n\t};\r\n\r\n\t// For translating the mapLayerItemTypeId into a user friendly title\r\n\tprivate typeDictionary: Map = new Map([\r\n\t\t[1, \"Camera\"],\r\n\t\t[2, \"Audio\"],\r\n\t\t[3, \"Door\"],\r\n\t\t[4, \"Alarm\"],\r\n\t\t[5, \"Output\"],\r\n\t\t[6, \"Geofence\"]\r\n\t]);\r\n\r\n\tprivate selectedFloor: number = 1;\r\n\r\n\tpublic async mounted() {\r\n\r\n\t\t// create our local mapItem object,\r\n\t\tif (this.mapLayerItem) {\r\n\t\t\tthis.updatedMapLayerItem = { ...this.mapLayerItem };\r\n\r\n\t\t\tthis.selectedFloor = this.isMapSetupUseElevationLabels ?\r\n\t\t\t\tthis.updatedMapLayerItem.minElevation :\r\n\t\t\t\tthis.updatedMapLayerItem.minElevation + 1;\r\n\r\n\t\t\t//Ensure mapLayerIds is initialized\r\n\t\t\tif (!this.updatedMapLayerItem.mapLayerIds) {\r\n\t\t\t\tthis.updatedMapLayerItem.mapLayerIds = [];\r\n\t\t\t}\r\n\r\n\t\t\tif (this.updatedMapLayerItem.mapLayerItemId == 0) {\r\n\t\t\t\t// Create default values for the values we dont receive if we are creating an object\r\n\t\t\t\tthis.updatedMapLayerItem.mapLayerItemId = 0;\r\n\t\t\t\tthis.updatedMapLayerItem.title = \"\";\r\n\t\t\t\tthis.updatedMapLayerItem.extraValue = \"\";\r\n\t\t\t\tthis.updatedMapLayerItem.regionPath = \"\";\r\n\t\t\t\tthis.updatedMapLayerItem.objectId = 0;\r\n\t\t\t\tthis.updatedMapLayerItem.mapLayerIds = [];\r\n\t\t\t\tthis.toggleEdit();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tawait this.loadDevices();\r\n\r\n\t\t// Initialize the template the fields will reset to on reset\r\n\t\tthis.mapItemTemplate = Object.assign({}, this.updatedMapLayerItem);\r\n\r\n\t\t// setup for select dropdowns\r\n\t\tthis.setDefaultDevice();\r\n\t\tthis.setDefaultLayer();\r\n\r\n\t\t// call layer selected to set layer title for display\r\n\t\tthis.setLayerDisplay();\r\n\t}\r\n\r\n\t@Watch(\"selectedFloor\")\r\n private onSelectedFloorUpdated() {\r\n if (this.isMapSetupUseElevationLabels) {\r\n if(this.isMapSetupElevationsEnabled)\r\n {\r\n this.mapLayerItem.minElevation = this.updatedMapLayerItem.minElevation;\r\n this.mapLayerItem.maxElevation = this.updatedMapLayerItem.maxElevation;\r\n }\r\n else\r\n {\r\n this.mapLayerItem.minElevation = this.selectedFloor;\r\n this.mapLayerItem.maxElevation = this.selectedFloor;\r\n\t\t\t\tthis.updatedMapLayerItem.minElevation = this.selectedFloor;\r\n \tthis.updatedMapLayerItem.maxElevation = this.selectedFloor;\r\n }\r\n }\r\n else\r\n {\r\n this.mapLayerItem.minElevation = this.selectedFloor - 1;\r\n this.mapLayerItem.maxElevation = this.selectedFloor - 1;\r\n\t\t\tthis.updatedMapLayerItem.minElevation = this.selectedFloor - 1;\r\n this.updatedMapLayerItem.maxElevation = this.selectedFloor - 1;\r\n }\r\n }\r\n\r\n\tprivate get isMapSetupElevationsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"MapSetup\", \"Elevations\"]);\r\n\t}\r\n\r\n\tprivate get isMapSetupUseElevationLabels(): boolean {\r\n\t\treturn get(this.featuresList, [\"MapSetup\", \"ElevationLabels\"]);\r\n\t}\r\n\r\n\tprivate get getDefaultValueForElevationOptions(): number {\r\n\t\tif (!this.isEditMode) {\r\n\t\t\treturn null;\r\n\t\t} else{\r\n\t\t\treturn this.currentFloor;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * load the appropriate devices depending on the item type\r\n\t */\r\n\tprivate async loadDevices(filter: string = null): Promise {\r\n\t\tif (this.updatedMapLayerItem.mapLayerItemTypeId == MapLayerItemTypeIds.Alarm) {\r\n\t\t\tlet responses: Response[] = (await api.getAllResponsesByArea(this.groupId, filter));\r\n\r\n\t\t\t// Convert to SelectionObject\r\n\t\t\tresponses.forEach(response => {\r\n\t\t\t\tconst availableDevicesContainsResponse = this.availableDevices.find(\r\n\t\t\t\t\t(d: MapLayerItemDeviceOption) => d.title == response.title && d.objectId == response.responseID);\r\n\t\t\t\tif (!availableDevicesContainsResponse) {\r\n\t\t\t\t\tthis.availableDevices.push(new MapLayerItemDeviceOption(response, this.updatedMapLayerItem.mapLayerItemTypeId));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tconst groupId = this.groupId ? this.groupId : -1;\r\n\t\t\tlet devices = await api.getDevicesByMapLayerItemType(\r\n\t\t\t\tgroupId,\r\n\t\t\t\tthis.mapLayerItem.mapLayerItemTypeId,\r\n\t\t\t\tfilter);\r\n\t\t\t// Convert to SelectionObject\r\n\t\t\tdevices.forEach(device => {\r\n\t\t\t\tconst availableDevicesContainsDevice = this.availableDevices.find(\r\n\t\t\t\t\t(d: MapLayerItemDeviceOption) => d.title == device.title && d.objectId == device.deviceID);\r\n\t\t\t\tif (!availableDevicesContainsDevice) {\r\n\t\t\t\t\tthis.availableDevices.push(new MapLayerItemDeviceOption(device, this.updatedMapLayerItem.mapLayerItemTypeId));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setDefaultDevice() {\r\n\t\tif (this.updatedMapLayerItem.mapLayerItemId === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.selectedDevice = new MapLayerItemDeviceOption(this.updatedMapLayerItem, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the initial selected layer\r\n\t */\r\n\tprivate setDefaultLayer() {\r\n\t\tif (this.updatedMapLayerItem.mapLayerIds.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.selectedLayers = this.mapLayersInBounds.filter((layer: MapLayer) => this.updatedMapLayerItem.mapLayerIds.includes(layer.mapLayerId));\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the layer display object for the UI\r\n\t */\r\n\tprivate setLayerDisplay() {\r\n\t\t// If there are no layers display placeholder\r\n\t\tif (this.selectedLayers === null || this.selectedLayers.length === 0) {\r\n\t\t\tthis.mapLayerDisplay = { title: \"No Layer Linked\", mapLayerId: 0 };\r\n\t\t} else {\r\n\t\t\t// Set the displayLayer to be the first selection from the selected layers\r\n\t\t\tthis.mapLayerDisplay.title = this.selectedLayers[0].title;\r\n\t\t\tthis.mapLayerDisplay.mapLayerId = this.selectedLayers[0].mapLayerId;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the selected device to the local map object\r\n\t */\r\n\tprivate deviceSelected() {\r\n\t\tthis.updatedMapLayerItem.title = this.selectedDevice?.title || \"untitled\";\r\n\t\tthis.updatedMapLayerItem.objectId = this.selectedDevice?.objectId || 0;\r\n\t}\r\n\r\n\t/**\r\n\t * returns popup edit mode state\r\n\t */\r\n\tprivate get isEditModeEnabled() {\r\n\t\treturn this.isEditMode;\r\n\t}\r\n\r\n\t/**\r\n\t * Open the delete confimation dialog\r\n\t */\r\n\tprivate deleteMapLayerItemDialog() {\r\n\t\tthis.isDeleteConfirmationVisible = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles the popup edit mode\r\n\t */\r\n\tprivate toggleEdit() {\r\n\t\tthis.isEditMode = !this.isEditMode;\r\n\t}\r\n\r\n\t@Watch(\"updatedMapLayerItem.maxElevation\")\r\n\t@Watch(\"updatedMapLayerItem.minElevation\")\r\n\tprivate isValidElevation(): void {\r\n\t\ttry {\r\n\t\t\tconst min = parseInt(this.updatedMapLayerItem.minElevation.toString(), 10);\r\n\t\t\tconst max = parseInt(this.updatedMapLayerItem.maxElevation.toString(), 10);\r\n\r\n\t\t\tif(!isNaN(min) && isNaN(max)) {\r\n\t\t\t\tthis.showElevationError = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(isNaN(min) || isNaN(max)) {\r\n\t\t\t\t// Error should not show, however the submit button will still be disabled.\r\n\t\t\t\tthis.showElevationError = false;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.showElevationError = min > max;\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis.updatedMapLayerItem.minElevation = 0;\r\n\t\t\tthis.updatedMapLayerItem.maxElevation = 0;\r\n\t\t\tconsole.error('Error parsing max/min elevation, resetting values to 0', e);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async saveMapItemDetails() {\r\n\t\tif (this.selectedLayers) {\r\n\t\t\tthis.updatedMapLayerItem.mapLayerIds = this.selectedLayers.map(l => l.mapLayerId);\r\n\t\t}\r\n\t\ttry {\r\n\t\t\tawait api.putMapLayerItem(this.updatedMapLayerItem);\r\n\t\t\tthis.mapItemTemplate = Object.assign({}, this.updatedMapLayerItem);\r\n\t\t\tthis.$emit(\"mapLayerItemSaved\");\r\n\t\t} catch (e) {\r\n\t\t\tconst errorTitle = \"Error Saving Map Marker\";\r\n\t\t\tif (e.response && e.response.data) {\r\n\t\t\t\tswitch (e.response.status) {\r\n\t\t\t\t\tcase 403:\r\n\t\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\t\ttitle: errorTitle,\r\n\t\t\t\t\t\t\ttext: `You do not have permissions to save this map marker`\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 500:\r\n\t\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\t\ttitle: errorTitle,\r\n\t\t\t\t\t\t\ttext: \"Unexpected error saving map marker. Please contact support if this problem persists.\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Reset the UI to its default state\r\n\t */\r\n\tprivate resetMapItemData() {\r\n\t\t// If we are creating an item close the popup on reset\r\n\t\tif (this.updatedMapLayerItem.mapLayerItemId == 0) {\r\n\t\t\tthis.$emit(\"mapLayerItemWindowClosed\");\r\n\t\t}\r\n\t\tthis.updatedMapLayerItem = Object.assign({}, this.mapItemTemplate);\r\n\r\n\t\tthis.setDefaultDevice();\r\n\t\tthis.setDefaultLayer();\r\n\t\tthis.setLayerDisplay();\r\n\t\tthis.toggleEdit();\r\n\t}\r\n\r\n\t/**\r\n\t * Delete the local item from the db then close the delete dialog and the popup\r\n\t */\r\n\tprivate async deleteMapLayerItemDelegate() {\r\n\t\tthis.isDeleteConfirmationVisible = false;\r\n\t\ttry {\r\n\t\t\tawait api.deleteMapLayerItem(this.updatedMapLayerItem.mapLayerItemId);\r\n\t\t\tthis.$emit(\"mapLayerItemDeleted\", { mapLayerItemId: this.updatedMapLayerItem.mapLayerItemId });\r\n\t\t} catch (e) {\r\n\t\t\tconst errorTitle = \"Error Deleting Map Marker\";\r\n\t\t\tif (e.response &&\r\n\t\t\t\te.response.data) {\r\n\t\t\t\tswitch(e.response.status) {\r\n\t\t\t\t\tcase 403:\r\n\t\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\t\ttitle: errorTitle,\r\n\t\t\t\t\t\t\ttext: `You do not have permissions to delete this map marker`\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 500:\r\n\t\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\t\t\ttitle: errorTitle,\r\n\t\t\t\t\t\t\ttext: \"Unexpected error deleting map marker. Please contact support if this problem persists.\"\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get getDeviceTypeArticle(): string {\r\n\t\tswitch(this.updatedMapLayerItem.mapLayerItemTypeId) {\r\n\t\t\tcase 2:\r\n\t\t\tcase 4:\r\n\t\t\tcase 5:\r\n\t\t\t\treturn \"an\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"a\"\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get getDeviceSelectPlaceholder(): string {\r\n\t\treturn `Please select ${this.getDeviceTypeArticle} ${this.typeDictionary.get(this.updatedMapLayerItem.mapLayerItemTypeId)} device`;\r\n\t}\r\n\r\n\t/**\r\n\t * debounce method to handle our waiting time when user is inputting data\r\n\t * @param query Data that the user has inserted\r\n\t * @param loading callback method to enable / disable loading icon\r\n\t * @param filterName filter name to find the endpoint, this is unique.\r\n\t */\r\n\tprivate debounceFilterQuery = debounce(async (query: string) => await this.loadDevices(query), 500);\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapItemSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapItemSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MapItemSetup.vue?vue&type=template&id=75124d57&scoped=true\"\nimport script from \"./MapItemSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./MapItemSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MapItemSetup.vue?vue&type=style&index=0&id=75124d57&prod&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 \"75124d57\",\n null\n \n)\n\nexport default component.exports","\r\n// Third party libs\r\nimport { Component, Vue, Watch, Ref } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Mutation, State, Action } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport vSelect3 from \"vselect3\";\r\nimport { get } from \"lodash\";\r\nimport ElevationSelect from \"@/components/form/ElevationSelect.vue\"\r\n\r\n// Map Utils\r\nimport {\r\n\tgetEnhancedMapping,\r\n\tIEnhancedMapping,\r\n\tIMap,\r\n\tILayer,\r\n\tILatLng,\r\n\tILatLngBounds,\r\n\tconvertStringToLatLng,\r\n\tstringToBounds,\r\n\tIMarker,\r\n\tMarkerIcons\r\n} from \"@sureview/v2-mapping-saas\";\r\nimport GPSService, { GeoCodeLocation } from \"@/services/gps.service\";\r\nimport { getMapStyle } from \"@/scripts/mapping/mapStyle\";\r\n\r\n// Components\r\nimport EnhancedMap from \"@/components/EnhancedMap.vue\";\r\nimport MapLayerSetup from \"@/components/map-setup/MapLayerSetup.vue\";\r\nimport MapLayerItemSetup from \"@/components/map-setup/MapItemSetup.vue\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\n\r\n// Types\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport {\r\n\tMapLayer,\r\n\tMapLayerItem,\r\n\tMapLayerItemType,\r\n\tMapData,\r\n\tMapBounds,\r\n\tMapLayerItemTypeIds\r\n} from \"@/store/map-layers/types\";\r\nimport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\r\nimport { Group } from \"@/store/areas/types\";\r\n\r\nimport api from \"@/services/api.service\";\r\n\r\n// Vuex Store Modules.\r\nconst MapLayers = namespace(\"mapLayers\");\r\n\r\n// Constants\r\nconst geoCoder = new GPSService();\r\nconst addressNotFoundErrorDuration: number = 6000;\r\nconst defaultLocation = { lat: 0, lng: 0 };\r\nconst roofTopZoomLevel: number = 20;\r\nconst areaZoomLevel: number = 18;\r\nconst rectangleOptions: google.maps.RectangleOptions = {\r\n\teditable: true,\r\n\tdraggable: true,\r\n\tstrokeColor: \"#2196F3\",\r\n\tfillOpacity: 0\r\n};\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\t\"map-layer-setup\": MapLayerSetup,\r\n\t\t\"map-setup\": EnhancedMap,\r\n\t\t\"map-setup-popup\": MapLayerItemSetup,\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t\t\"v-select-3\": vSelect3,\r\n\t\t\"elevation-select\": ElevationSelect\r\n\t}\r\n})\r\nexport default class MapSetup extends Vue {\r\n\t@Ref() mappingContainer: HTMLElement;\r\n\r\n\t@Action startApiHeartbeat: () => void;\r\n\t@State private featuresList: FeaturesList;\r\n\t@Getter private getHideLabels: boolean;\r\n\t@Getter private getMapType: string;\r\n\t@Getter(\"getMapKey\") private mapKey: string;\r\n\t@Getter private getPermissions: UserPermissions;\r\n\t@Getter private getUserGroupId: number;\r\n\t@Mutation private setMapType: (mapType: string) => void;\r\n\r\n\t@MapLayers.State(\"mapItemIcons\") private mapIcons!: MarkerIcons;\r\n\t@MapLayers.Getter(\"getMapLayerItemTypes\") private mapLayerItemTypes: MapLayerItemType[];\r\n\t@MapLayers.Action private loadMapLayersItemTypes: () => Promise;\r\n\r\n\tprivate enhancedMapping: IEnhancedMapping | null = null;\r\n\tprivate drawingManager: google.maps.drawing.DrawingManager = null;\r\n\r\n\t// Setup Context\r\n\tprivate mapDataInBounds: MapData = {\r\n\t\titems: [],\r\n\t\tlayers: [],\r\n\t\televations: [],\r\n\t\tareas: []\r\n\t};\r\n\tprivate selectedArea: AreaNode = null;\r\n\tprivate selectedAreaDetails: Group = null;\r\n\tprivate previouslySelectedAreas: Group[] = [];\r\n\tprivate selectedItemType: MapLayerItemType = null;\r\n\tprivate selectedLayer: MapLayer = null;\r\n\tprivate selectedLayerFilters: MapLayer[] = [];\r\n\tprivate isAddingLayer: boolean = false;\r\n\tprivate isEditingLayer: boolean = false;\r\n\tprivate showMapLayerInfoBox: boolean = false;\r\n\tprivate isPlotting: boolean = false;\r\n\tprivate relocatedMapLayerItems: MapLayerItem[] = [];\r\n\tprivate isLoading: boolean = true;\r\n\tprivate isLoadingArea: boolean = true;\r\n\tprivate isSavingMapLayerItems: boolean = false;\r\n\tprivate isNoAddressErrorShown: boolean = false;\r\n\tprivate selectedMapLayerDimensions = null;\r\n\tprivate selectedFloor: number = 0;\r\n\tprivate groupGeoCodeLocations: Map = new Map();\r\n\tprivate selectedMapLayerItemTypes: MapLayerItemType[] = [];\r\n\tprivate hiddenMapLayerIds: number[] = [];\r\n\tprivate showFilters: boolean = false;\r\n\tprivate viewingGroupId: number = null;\r\n\r\n\t// Map Context\r\n\tprivate mapInstance: IMap | null = null;\r\n\tprivate mapOverlays: Map = new Map();\r\n\tprivate mapMarkers: Map = new Map();\r\n\tprivate divOverlayContainer: HTMLElement = null;\r\n\tprivate zoomLevel: number = 3;\r\n\tprivate infoWindow: google.maps.InfoWindow = null;\r\n\tprivate newMarker: IMarker = null;\r\n\tprivate previewLayerOverlay: ILayer = null;\r\n\tprivate rotationContainer: HTMLElement = null;\r\n\tprivate rotationContainerCenter: any = null;\r\n\tprivate rotationHandle: HTMLElement = null;\r\n\tprivate mapLayerPlaceholderRectangle: google.maps.Rectangle = null;\r\n\r\n\tprivate areaTreeSelectIsOpen: boolean = false;\r\n\r\n\tpublic async mounted() {\r\n\t\tawait this.onMount();\r\n\t}\r\n\r\n\tprivate async onMount() {\r\n\t\tif (!this.getPermissions.canEditSiteSetup) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.loadMapLayersItemTypes();\r\n\t\tthis.startApiHeartbeat();\r\n\t\tawait this.mountMap();\r\n\r\n\t\tthis.viewingGroupId = this.getUserGroupId;\r\n\r\n\t\tlet latLongForSelectedArea = await this.getLatLongForGroup(this.viewingGroupId);\r\n\t\tif (latLongForSelectedArea) {\r\n\t\t\tthis.goToLocation(roofTopZoomLevel, latLongForSelectedArea);\r\n\t\t} else {\r\n\t\t\tawait this.refreshMapData();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async mountMap() {\r\n\t\tthis.enhancedMapping = await getEnhancedMapping(\"google\", this.mapKey);\r\n\t\tthis.mapInstance = this.enhancedMapping.createMap(\r\n\t\t\tthis.mappingContainer,\r\n\t\t\tdefaultLocation,\r\n\t\t\tthis.zoomLevel,\r\n\t\t\tfalse,\r\n\t\t\tthis.getMapType,\r\n\t\t\tgetMapStyle(this.getMapType, this.getHideLabels)\r\n\t\t);\r\n\r\n\t\t// setup click handle to run when the map type changes\r\n\t\tthis.mapInstance!.registerEvent(\"onMapTypeChanged\", (mapType: string) => {\r\n\t\t\tthis.setMapType(mapType);\r\n\r\n\t\t\tthis.mapInstance!.map.setOptions({\r\n\t\t\t\tstyles: getMapStyle(this.getMapType, this.getHideLabels)\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.mapInstance!.registerEvent(\"onViewportChangedDelayed\", this.mapViewportUpdated);\r\n\t\tthis.mapInstance!.registerEvent(\"onClick\", this.mapClicked);\r\n\r\n\t\tthis.drawingManager = new google.maps.drawing.DrawingManager({\r\n\t\t\tdrawingMode: google.maps.drawing.OverlayType.RECTANGLE,\r\n\t\t\tdrawingControl: false,\r\n\t\t\trectangleOptions: rectangleOptions\r\n\t\t});\r\n\r\n\t\tthis.drawingManager.setMap(this.mapInstance.map);\r\n\r\n\t\tgoogle.maps.event.addListener(this.drawingManager, \"rectanglecomplete\", this.onRectangleComplete);\r\n\t\tgoogle.maps.event.addListener(this.mapInstance.map, \"dragstart\", this.hideRotationElements);\r\n\t\tgoogle.maps.event.addListener(this.mapInstance.map, \"dragend\", this.setRotationElementDimensions);\r\n\t\tgoogle.maps.event.addListener(this.mapInstance.map, \"zoom_changed\", this.hideRotationElements);\r\n\t}\r\n\r\n\t/**\r\n\t * On Viewport Changed Event Handler\r\n\t */\r\n\tprivate async mapViewportUpdated(): Promise {\r\n\t\tif (!this.isLoadingArea) {\r\n\t\t\tthis.viewingGroupId = null;\r\n\t\t}\r\n\r\n\t\tthis.setRotationElementDimensions();\r\n\r\n\t\tif (this.isEditingLayer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.refreshMapData();\r\n\t}\r\n\r\n\t@Watch(\"selectedFloor\")\r\n\tprivate async refreshMapData(): Promise {\r\n\t\tlet bounds = {\r\n\t\t\tnorth: this.mapInstance!.mapBounds.north,\r\n\t\t\tsouth: this.mapInstance!.mapBounds.south,\r\n\t\t\teast: this.mapInstance!.mapBounds.east,\r\n\t\t\twest: this.mapInstance!.mapBounds.west,\r\n\t\t\televation: this.selectedFloor\r\n\t\t} as MapBounds;\r\n\r\n\t\tthis.mapDataInBounds = await api.getMapDataInBounds(bounds);\r\n\t}\r\n\r\n\tprivate get filteredMapData(): MapData {\r\n\t\tlet result: MapData = {\r\n\t\t\titems: [],\r\n\t\t\tlayers: [],\r\n\t\t\televations: [],\r\n\t\t\tareas: []\r\n\t\t};\r\n\r\n\t\tif (this.selectedArea) {\r\n\t\t\tresult.items = this.mapDataInBounds.items.filter(i => i.groupId === this.selectedArea.id);\r\n\t\t\tresult.layers = this.mapDataInBounds.layers.filter(l => l.groupId === this.selectedArea.id);\r\n\t\t} else {\r\n\t\t\tresult.items = this.mapDataInBounds.items;\r\n\t\t\tresult.layers = this.mapDataInBounds.layers;\r\n\t\t}\r\n\r\n\t\tif (this.selectedMapLayerItemTypes.length > 0) {\r\n\t\t\tresult.items = result.items.filter(i =>\r\n\t\t\t\tthis.selectedMapLayerItemTypes.map(t => t.mapLayerItemTypeId).includes(i.mapLayerItemTypeId)\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (this.selectedLayerFilters.length > 0) {\r\n\t\t\tconst selectedMapLayerFilterIds = this.selectedLayerFilters.map(l => l.mapLayerId);\r\n\t\t\tresult.items = result.items.filter(i =>\r\n\t\t\t\ti.mapLayerIds.some(itemLayer => selectedMapLayerFilterIds.includes(itemLayer))\r\n\t\t\t);\r\n\t\t\tresult.layers = result.layers.filter(l => selectedMapLayerFilterIds.includes(l.mapLayerId));\r\n\t\t}\r\n\r\n\t\tresult.elevations = this.mapDataInBounds.elevations;\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate mapClicked(latLong: GeoCodeLocation) {\r\n\t\tif (this.isPlotting && this.selectedItemType) {\r\n\t\t\tthis.onMapLayerItemPlot(latLong);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Event handler to run on plot of a new map layer item.\r\n\t *\r\n\t * @param {any} latLong - Coordinates of the map layer item.\r\n\t */\r\n\tprivate onMapLayerItemPlot(latLong: GeoCodeLocation) {\r\n\t\tlet newMapLayerItemTemplate: MapLayerItem = {\r\n\t\t\tmapLayerItemTypeId: this.selectedItemType.mapLayerItemTypeId,\r\n\t\t\ttitle: \"\",\r\n\t\t\tlatLong: `${latLong.lat} ${latLong.lng}`,\r\n\t\t\tmapLayerItemId: 0,\r\n\t\t\tminElevation: 0,\r\n\t\t\tmaxElevation: 0,\r\n\t\t\tobjectId: 0,\r\n\t\t\textraValue: null,\r\n\t\t\tregionPath: null,\r\n\t\t\tmapLayerIds: [],\r\n\t\t\thideOnMap: false,\r\n\t\t\tgroupId: null\r\n\t\t};\r\n\r\n\t\tthis.newMarker = this.enhancedMapping.createMarker(\r\n\t\t\tthis.mapInstance!, // Enhanced Mapping\r\n\t\t\tnewMapLayerItemTemplate.mapLayerItemId, // MapLayer Item Id\r\n\t\t\tnull, // Event Record Id\r\n\t\t\tnewMapLayerItemTemplate.mapLayerItemTypeId, // Map Item Type Id\r\n\t\t\tnewMapLayerItemTemplate.objectId, // Object Id\r\n\t\t\tnewMapLayerItemTemplate.title, // Title\r\n\t\t\tconvertStringToLatLng(newMapLayerItemTemplate.latLong!), // Position\r\n\t\t\tnewMapLayerItemTemplate.regionPath, // Region Path\r\n\t\t\tnewMapLayerItemTemplate.minElevation, // Min Elevation\r\n\t\t\tnewMapLayerItemTemplate.maxElevation, // Max Elevation\r\n\t\t\ttrue // Visible\r\n\t\t);\r\n\r\n\t\tthis.mapInstance!.setCursor(\"grab\");\r\n\r\n\t\tthis.openMapLayerItemSetupModal(newMapLayerItemTemplate);\r\n\r\n\t\tthis.isPlotting = false;\r\n\t}\r\n\r\n\t/**\r\n\t * On change of selectedArea (triggered by ), get the address for the area, and reposition the map\r\n\t *\r\n\t * @param {AreaNode} areaNode - The area node that has been selected\r\n\t */\r\n\t@Watch(\"selectedArea\")\r\n\tprivate async onSelectedAreaUpdated(areaNode: AreaNode) {\r\n\t\tif (!areaNode || areaNode.id < 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.closeLayerSetup();\r\n\t\tthis.isLoading = true;\r\n\r\n\t\tlet previouslySelectedGroup = this.previouslySelectedAreas.find((g: Group) => g.groupID === areaNode.id);\r\n\t\tif (previouslySelectedGroup) {\r\n\t\t\tthis.selectedAreaDetails = previouslySelectedGroup;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.selectedAreaDetails = await api.getArea(areaNode.id);\r\n\t\tlet latLongForSelectedArea = await this.getLatLongForGroup(areaNode.id);\r\n\t\tif (latLongForSelectedArea) {\r\n\t\t\tthis.selectedAreaDetails.latLong = `${latLongForSelectedArea.lat} ${latLongForSelectedArea.lng}`;\r\n\t\t}\r\n\r\n\t\tthis.previouslySelectedAreas.push(this.selectedAreaDetails);\r\n\t}\r\n\r\n\t@Watch(\"viewingGroupId\")\r\n\tprivate async onViewingAreaUpdated() {\r\n\t\tif (this.viewingGroupId === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.closeLayerSetup();\r\n\t\tthis.isLoading = true;\r\n\t\tthis.isLoadingArea = true;\r\n\t\tlet latLongForSelectedArea = await this.getLatLongForGroup(this.viewingGroupId);\r\n\t\tif (latLongForSelectedArea) {\r\n\t\t\tthis.goToLocation(areaZoomLevel, latLongForSelectedArea);\r\n\t\t} else {\r\n\t\t\tthis.isLoading = false;\r\n\t\t\tthis.isLoadingArea = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getLatLongForGroup(groupId: number): Promise {\r\n\t\tif (this.groupGeoCodeLocations.has(groupId)) {\r\n\t\t\treturn this.groupGeoCodeLocations.get(groupId);\r\n\t\t}\r\n\r\n\t\tlet result: GeoCodeLocation = null;\r\n\r\n\t\tlet group = await api.getArea(groupId);\r\n\r\n\t\t// if the group already has a lat long, use that\r\n\t\tif (group.latLong && group.latLong.length > 0) {\r\n\t\t\tresult = convertStringToLatLng(group.latLong);\r\n\t\t}\r\n\t\t// otherwise if we have an address, do a GeoLookup to get its coordinates\r\n\t\telse if (group && group.address && group.address.length > 0) {\r\n\t\t\tlet response = await geoCoder.GeoCodeLookup(group.address, this.mapKey);\r\n\t\t\tif (response && response.results) {\r\n\t\t\t\tlet groupLocationDetails = response.results[0];\r\n\t\t\t\tif (groupLocationDetails && groupLocationDetails.geometry && groupLocationDetails.geometry.location) {\r\n\t\t\t\t\tresult = groupLocationDetails.geometry.location;\r\n\t\t\t\t\tawait api.updateAreaLatLong(groupId, `${result.lat} ${result.lng}`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (response && response.status == \"ZERO_RESULTS\") {\r\n\t\t\t\tthis.showNoAddressError();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.groupGeoCodeLocations.set(groupId, result);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate async goToMapLayer(mapLayer: MapLayer): Promise {\r\n\t\tawait this.closeLayerSetup();\r\n\t\tawait this.$nextTick();\r\n\t\tlet nwLatLng = convertStringToLatLng(mapLayer.nw);\r\n\t\tlet seLatLng = convertStringToLatLng(mapLayer.se);\r\n\r\n\t\tlet latCenter = (nwLatLng.lat - seLatLng.lat) / 2 + seLatLng.lat;\r\n\t\tlet lngCenter = (seLatLng.lng - nwLatLng.lng) / 2 + nwLatLng.lng;\r\n\r\n\t\tthis.selectedLayer = { ...mapLayer };\r\n\t\tthis.goToLocation(roofTopZoomLevel, { lat: latCenter, lng: lngCenter });\r\n\t}\r\n\r\n\t/**\r\n\t * Loads all available map layers and their items in the current viewport.\r\n\t */\r\n\t@Watch(\"filteredMapData\")\r\n\tprivate async displayLayersAndItems(): Promise {\r\n\t\tif (!this.isEditingLayer) {\r\n\t\t\tthis.clearMap();\r\n\t\t\tawait this.displayLayers();\r\n\t\t}\r\n\r\n\t\tawait this.displayItems();\r\n\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Create google map objects for each layer and adds them to the given group object\r\n\t *\r\n\t * @param {MapLayer[]} layers MapLayer object array\r\n\t */\r\n\tprivate async displayLayers(): Promise {\r\n\t\tfor (const layer of this.filteredMapData.layers) {\r\n\t\t\tif (!this.mapOverlays.has(layer.mapLayerId) && !this.hiddenMapLayerIds.includes(layer.mapLayerId)) {\r\n\t\t\t\tawait this.createOverlayForMapLayer(layer);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Create google map objects for each map item and adds them to the given layer object\r\n\t */\r\n\tprivate displayItems(): void {\r\n\t\tfor (const item of this.filteredMapData.items) {\r\n\t\t\tthis.createMarker(item);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate createMarker(mapLayerItem: MapLayerItem): IMarker {\r\n\t\tif (this.mapMarkers.has(mapLayerItem.mapLayerItemId)) {\r\n\t\t\tlet marker = this.mapMarkers.get(mapLayerItem.mapLayerItemId);\r\n\t\t\tmarker.visible = true;\r\n\t\t\tthis.mapMarkers.set(mapLayerItem.mapLayerItemId, marker);\r\n\t\t\treturn marker;\r\n\t\t}\r\n\r\n\t\tlet mapMarkerItem: IMarker = this.enhancedMapping.createMarker(\r\n\t\t\tthis.mapInstance!,\r\n\t\t\tmapLayerItem.mapLayerItemId,\r\n\t\t\tnull,\r\n\t\t\tmapLayerItem.mapLayerItemTypeId,\r\n\t\t\tmapLayerItem.objectId,\r\n\t\t\tmapLayerItem.title,\r\n\t\t\tconvertStringToLatLng(mapLayerItem.latLong!),\r\n\t\t\tmapLayerItem.regionPath,\r\n\t\t\tmapLayerItem.minElevation,\r\n\t\t\tmapLayerItem.maxElevation,\r\n\t\t\ttrue\r\n\t\t);\r\n\r\n\t\tmapMarkerItem.isDraggable = true;\r\n\r\n\t\tlet vueThis = this;\r\n\t\tif (mapMarkerItem && mapMarkerItem.marker) {\r\n\t\t\t// cant use arrow function here () => as I need the scope of `this` to be from within the function\r\n\t\t\tmapMarkerItem.marker.addListener(\"dragend\", function(event: google.maps.MouseEvent) {\r\n\t\t\t\tvueThis.updateMarkerItemPosition(event.latLng, mapLayerItem.mapLayerItemId); // this = the marker clicked on not the vue instance\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// setup click handler for the markers, this will be display the item setup window\r\n\t\tif (mapLayerItem.objectId) {\r\n\t\t\tmapMarkerItem.state = \"active\";\r\n\t\t\tmapMarkerItem.isClickable = true;\r\n\t\t\tmapMarkerItem.click = () => {\r\n\t\t\t\tthis.openMapLayerItemSetupModal(mapLayerItem);\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tthis.mapMarkers.set(mapLayerItem.mapLayerItemId, mapMarkerItem);\r\n\t\treturn mapMarkerItem;\r\n\t}\r\n\r\n\t/**\r\n\t * move to the map to the given position and zoom level\r\n\t *\r\n\t * @param {number} zoom - zoom level to set the map to\r\n\t * @param {GeoCodeLocation} location - LatLong coordinates to center the map on\r\n\t */\r\n\tprivate goToLocation(zoom: number = 10, location: GeoCodeLocation): void {\r\n\t\tif (this.mapInstance) {\r\n\t\t\tthis.mapInstance.map.zoom = zoom;\r\n\t\t\tthis.mapInstance.map.setCenter(location);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Show Address not found error\r\n\t */\r\n\tprivate showNoAddressError(): void {\r\n\t\tthis.isNoAddressErrorShown = true;\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.isNoAddressErrorShown = false;\r\n\t\t}, addressNotFoundErrorDuration);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the icon for the map item type\r\n\t *\r\n\t * @param {MapLayerItemType} mapItemType MapItemType Object\r\n\t * @returns {string} - Url for the image\r\n\t */\r\n\tprivate getIcon(mapItemType: MapLayerItemType): string {\r\n\t\t// if the icon property is set, use that (custom map items)\r\n\t\tif (mapItemType.icon && mapItemType.icon.length > 0) {\r\n\t\t\treturn `data:image/png;base64, ${mapItemType.icon}`;\r\n\t\t}\r\n\r\n\t\tif (mapItemType.mapLayerItemTypeId === MapLayerItemTypeIds.Asset) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// otherwise return the url for the icon\r\n\t\treturn this.mapIcons[mapItemType.mapLayerItemTypeId];\r\n\t}\r\n\r\n\t/**\r\n\t * Event handler for updating a marker position when it is moved\r\n\t *\r\n\t * @param {ILatLng} latLong\r\n\t * @param {number} mapLayerItemId\r\n\t */\r\n\tprivate updateMarkerItemPosition(latLong: ILatLng, mapLayerItemId: number) {\r\n\t\tlet mapLayerItem = this.mapDataInBounds.items.find(i => i.mapLayerItemId === mapLayerItemId);\r\n\t\tif (mapLayerItem) {\r\n\t\t\tlet mapLayerItemCopy = { ...mapLayerItem };\r\n\t\t\tmapLayerItemCopy.latLong = `${latLong.lat()} ${latLong.lng()}`;\r\n\r\n\t\t\tconst mapLayerItemIndex = this.relocatedMapLayerItems.findIndex(i => i.mapLayerItemId === mapLayerItemId);\r\n\t\t\tif (mapLayerItemIndex === -1) {\r\n\t\t\t\tthis.relocatedMapLayerItems.push(mapLayerItemCopy);\r\n\t\t\t} else {\r\n\t\t\t\tthis.relocatedMapLayerItems.splice(mapLayerItemIndex, 1, mapLayerItemCopy);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new EnhancedMap overlay\r\n\t *\r\n\t * @param {MapLayer} layer\r\n\t * @param {ILatLngBounds} bounds\r\n\t * @param {string} image\r\n\t */\r\n\tprivate async createOverlayForMapLayer(\r\n\t\tlayer: MapLayer,\r\n\t\tbounds: ILatLngBounds = null,\r\n\t\timage: string = null\r\n\t): Promise {\r\n\t\tif (this.mapOverlays.has(layer.mapLayerId)) {\r\n\t\t\tlet overlay = this.mapOverlays.get(layer.mapLayerId);\r\n\t\t\toverlay.visible = true;\r\n\t\t\tthis.mapOverlays.set(layer.mapLayerId, overlay);\r\n\t\t\treturn overlay;\r\n\t\t}\r\n\r\n\t\tlet imageSrc = image == null ? layer.image : image;\r\n\t\tif (imageSrc && !imageSrc.includes(\"data:image\")) {\r\n\t\t\timageSrc = \"data:image/png;base64, \" + imageSrc;\r\n\t\t}\r\n\r\n\t\tconst overlay = await this.enhancedMapping.createOverlay(\r\n\t\t\tthis.mapInstance!,\r\n\t\t\tlayer.mapLayerId,\r\n\t\t\tlayer.title,\r\n\t\t\tbounds ?? stringToBounds(layer.ne, layer.sw),\r\n\t\t\tlayer.rotation,\r\n\t\t\timageSrc,\r\n\t\t\tlayer.minElevation,\r\n\t\t\tlayer.maxElevation,\r\n\t\t\ttrue\r\n\t\t);\r\n\r\n\t\tthis.mapOverlays.set(layer.mapLayerId, overlay);\r\n\r\n\t\treturn overlay;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the map icon type for the given id\r\n\t *\r\n\t * @param {number} mapItemTypeId\r\n\t */\r\n\tprivate getMapItemIcon(mapItemTypeId: number): string {\r\n\t\treturn this.mapIcons[mapItemTypeId];\r\n\t}\r\n\r\n\tprivate async startAddingNewLayer(): Promise {\r\n\t\tawait this.closeLayerSetup();\r\n\t\tthis.selectedLayer = {\r\n\t\t\tmapLayerId: 0,\r\n\t\t\tgroupId: this.selectedArea ? this.selectedArea.id : null,\r\n\t\t\timage: \"\",\r\n\t\t\ttitle: \"\",\r\n\t\t\tsw: \"\",\r\n\t\t\tse: \"\",\r\n\t\t\tne: \"\",\r\n\t\t\tnw: \"\",\r\n\t\t\trotation: 0,\r\n\t\t\tminElevation: 0,\r\n\t\t\tmaxElevation: 0,\r\n\t\t\tcalculatedSw: \"\",\r\n\t\t\tcalculatedSe: \"\",\r\n\t\t\tcalculatedNe: \"\",\r\n\t\t\tcalculatedNw: \"\",\r\n\t\t};\r\n\r\n\t\t// Hide other map layers as we can only get a handle on 1 at a time.\r\n\t\tthis.hideMapLayers();\r\n\t\tawait this.$nextTick();\r\n\r\n\t\t// enables drawing mode to plotting a new layer\r\n\t\tthis.drawingManager.setMap(this.mapInstance.map);\r\n\r\n\t\tthis.isAddingLayer = true;\r\n\t\tthis.isEditingLayer = true;\r\n\t\tthis.showMapLayerInfoBox = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Setups up data and sets UI to edit mode for editing the selected layer\r\n\t *\r\n\t * @param {MapLayer} mapLayer\r\n\t */\r\n\tprivate async startEditingMapLayer(mapLayer: MapLayer): Promise {\r\n\t\tif (this.selectedLayer && this.selectedLayer.mapLayerId !== mapLayer.mapLayerId) {\r\n\t\t\tawait this.closeLayerSetup();\r\n\t\t\tawait this.goToMapLayer(mapLayer);\r\n\t\t}\r\n\r\n\t\tthis.selectedLayer = mapLayer;\r\n\r\n\t\t// Hide other map layers as we can only get a handle on 1 at a time.\r\n\t\tthis.hideMapLayers();\r\n\r\n\t\tthis.isEditingLayer = true;\r\n\t\tthis.showMapLayerInfoBox = true;\r\n\r\n\t\t// We must wait until state is updated otherwise the mapLayerPlaceholderRectangle wont be shown.\r\n\t\tawait this.$nextTick();\r\n\t\tawait this.createPreviewOverlay(this.selectedLayer);\r\n\t}\r\n\r\n\tprivate async onMapLayerSaved(): Promise {\r\n\t\tawait this.closeLayerSetup();\r\n\t\tawait this.refreshMapData();\r\n\t}\r\n\r\n\tprivate async onMapLayerEditToggle(): Promise {\r\n\t\tthis.isEditingLayer = !this.isEditingLayer;\r\n\t\tif (this.isEditingLayer) {\r\n\t\t\tawait this.startEditingMapLayer(this.selectedLayer);\r\n\t\t} else {\r\n\t\t\tawait this.closeLayerSetup();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Event handler that runs on emit from Layer Setup child component, on the upload of a layer image\r\n\t * @param {MapLayer} mapLayer\r\n\t */\r\n\tprivate async createPreviewOverlay(mapLayer: MapLayer): Promise {\r\n\t\tif (!this.isEditingLayer && !this.isAddingLayer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!mapLayer.ne || mapLayer.ne.length <= 0) return;\r\n\r\n\t\tif (this.previewLayerOverlay) {\r\n\t\t\tthis.previewLayerOverlay.remove();\r\n\t\t}\r\n\r\n\t\tif (this.mapLayerPlaceholderRectangle) {\r\n\t\t\tthis.mapLayerPlaceholderRectangle.setMap(null);\r\n\t\t}\r\n\r\n\t\tthis.previewLayerOverlay = await this.createOverlayForMapLayer(mapLayer);\r\n\t\tthis.mapLayerPlaceholderRectangle = this.getNewGoogleMapsRectangle();\r\n\t\tthis.mapLayerPlaceholderRectangle.setOptions(rectangleOptions);\r\n\t\tthis.mapLayerPlaceholderRectangle.addListener(\"bounds_changed\", this.onRectangleBoundsChanged);\r\n\t\tthis.mapLayerPlaceholderRectangle.setBounds(this.previewLayerOverlay.bounds);\r\n\t\tthis.mapLayerPlaceholderRectangle.setVisible(true);\r\n\r\n\t\tif (this.selectedMapLayerDimensions.width !== \"NaN\" && this.selectedMapLayerDimensions.height !== \"NaN\") {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.loadRotationElement();\r\n\t\t\t}, 100);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getNewGoogleMapsRectangle(): google.maps.Rectangle {\r\n\t\treturn new google.maps.Rectangle({ map: this.mapInstance.map });\r\n\t}\r\n\r\n\tprivate async updatePreviewOverlay(mapLayer: MapLayer): Promise {\r\n\t\tif (this.mapOverlays.has(mapLayer.mapLayerId)) {\r\n\t\t\tconst overlay = this.mapOverlays.get(mapLayer.mapLayerId);\r\n\t\t\toverlay.remove();\r\n\t\t\tthis.mapOverlays.delete(mapLayer.mapLayerId);\r\n\t\t}\r\n\r\n\t\tthis.previewLayerOverlay.remove();\r\n\t\tawait this.createPreviewOverlay(mapLayer);\r\n\t}\r\n\r\n\tprivate async onLayerImageChanged(mapLayer: MapLayer) {\r\n\t\tthis.selectedLayer = mapLayer;\r\n\t\tif (this.previewLayerOverlay) {\r\n\t\t\tawait this.updatePreviewOverlay(mapLayer);\r\n\t\t} else {\r\n\t\t\tawait this.createPreviewOverlay(mapLayer);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onLayerInfoChanged(mapLayer: MapLayer) {\r\n\t\tthis.selectedLayer = mapLayer;\r\n\t}\r\n\r\n\tprivate async onMapLayerDeleted(mapLayerId: number): Promise {\r\n\t\tawait this.closeLayerSetup();\r\n\t\tif (this.mapOverlays.has(mapLayerId)) {\r\n\t\t\tconst overlay = this.mapOverlays.get(mapLayerId);\r\n\t\t\toverlay.remove();\r\n\t\t\tthis.mapOverlays.delete(mapLayerId);\r\n\t\t}\r\n\t\tawait this.refreshMapData();\r\n\t}\r\n\r\n\t/**\r\n\t * Clear map of all layers and items\r\n\t */\r\n\tprivate clearMap(): void {\r\n\t\tif (this.mapInstance) {\r\n\t\t\tthis.mapInstance!.setCursor(\"grab\");\r\n\t\t}\r\n\r\n\t\tthis.hideRotationElements();\r\n\r\n\t\tif (this.newMarker) {\r\n\t\t\tthis.newMarker.remove();\r\n\t\t}\r\n\r\n\t\tif (this.drawingManager) {\r\n\t\t\tthis.drawingManager.setMap(null);\r\n\t\t}\r\n\r\n\t\tif (this.mapLayerPlaceholderRectangle) {\r\n\t\t\tthis.mapLayerPlaceholderRectangle.setMap(null);\r\n\t\t}\r\n\r\n\t\tif (this.previewLayerOverlay) {\r\n\t\t\tthis.previewLayerOverlay.remove();\r\n\t\t}\r\n\r\n\t\tthis.mapOverlays.forEach(mapOverlay => {\r\n\t\t\tmapOverlay.visible = false;\r\n\t\t\tmapOverlay.remove();\r\n\t\t});\r\n\r\n\t\tthis.mapMarkers.forEach(mapMarker => {\r\n\t\t\tmapMarker.visible = false;\r\n\t\t\tmapMarker.remove();\r\n\t\t});\r\n\r\n\t\tthis.mapOverlays.clear();\r\n\t\tthis.mapMarkers.clear();\r\n\r\n\t\tthis.relocatedMapLayerItems = [];\r\n\t}\r\n\r\n\t/**\r\n\t * Hides the rotation UI\r\n\t */\r\n\tprivate hideRotationElements() {\r\n\t\tif (this.rotationContainer) {\r\n\t\t\tthis.rotationContainer.style.visibility = \"hidden\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the dimensions and size of the rotation element for rotating a map layer image.\r\n\t */\r\n\tprivate setRotationElementDimensions() {\r\n\t\t// find over lay div\r\n\t\tthis.divOverlayContainer = document.getElementById(\"divOverlayContainer\");\r\n\r\n\t\tif (this.divOverlayContainer && (this.isEditingLayer || this.isAddingLayer)) {\r\n\t\t\t// find rotation UI elements\r\n\t\t\tthis.rotationContainer = document.getElementById(\"rotation-container\");\r\n\t\t\tthis.rotationHandle = document.getElementById(\"rotation-handle\");\r\n\t\t\tconst rect = this.divOverlayContainer.getBoundingClientRect();\r\n\r\n\t\t\t// workout top / left pixels for the rotation container\r\n\t\t\tthis.rotationContainerCenter = {\r\n\t\t\t\tx: rect.left + rect.width / 2,\r\n\t\t\t\ty: rect.top + rect.height / 2\r\n\t\t\t};\r\n\r\n\t\t\t// set dimensions based on the parent attributes\r\n\t\t\tthis.rotationContainer.style.top = this.rotationContainerCenter.y + \"px\";\r\n\t\t\tthis.rotationContainer.style.left = this.rotationContainerCenter.x + \"px\";\r\n\t\t\tthis.rotationContainer.style.width = parseInt(this.divOverlayContainer.style.width) + \"px\";\r\n\t\t\tthis.rotationContainer.style.visibility = \"visible\";\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hooks up the relevant event handlers for rotating the map layer image\r\n\t */\r\n\tprivate loadRotationElement() {\r\n\t\tthis.setRotationElementDimensions();\r\n\t\t// workout with transform method can be used based on what is available to the browser\r\n\t\tlet transform = (() => {\r\n\t\t\tlet prefs = [\"t\", \"WebkitT\", \"MozT\", \"msT\", \"OT\"],\r\n\t\t\t\tstyle = document.documentElement.style,\r\n\t\t\t\tp;\r\n\t\t\tfor (let i = 0, len = prefs.length; i < len; i++) {\r\n\t\t\t\tif ((p = prefs[i] + \"ransform\") in style) return p;\r\n\t\t\t}\r\n\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Map Layer Setup issue\",\r\n\t\t\t\ttext: \"This browser does not support the ability to rotate map layers\"\r\n\t\t\t});\r\n\t\t})();\r\n\r\n\t\t// calculates rotation angle for the image based off where the mouse is\r\n\t\tlet rotate = (x, y) => {\r\n\t\t\tlet deltaX = x - this.rotationContainerCenter.x;\r\n\t\t\tlet deltaY = y - this.rotationContainerCenter.y;\r\n\r\n\t\t\tlet angle = +((Math.atan2(deltaY, deltaX) * 180) / Math.PI).toFixed();\r\n\r\n\t\t\t// store the value for our layer\r\n\t\t\tthis.selectedLayer.rotation = angle;\r\n\r\n\t\t\treturn angle;\r\n\t\t};\r\n\r\n\t\t// DRAGSTART\r\n\t\tlet mousedown = event => {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tdocument.body.style.cursor = \"move\";\r\n\t\t\tmousemove(event);\r\n\t\t\tdocument.addEventListener(\"mousemove\", mousemove);\r\n\t\t\tdocument.addEventListener(\"mouseup\", mouseup);\r\n\t\t};\r\n\r\n\t\t// DRAG\r\n\t\tlet mousemove = event => {\r\n\t\t\tthis.mapLayerPlaceholderRectangle.setVisible(false);\r\n\t\t\tthis.rotationContainer.style[transform] = \"rotate(\" + rotate(event.pageX, event.pageY) + \"deg)\";\r\n\t\t\tthis.divOverlayContainer.style[transform] = \"rotate(\" + rotate(event.pageX, event.pageY) + \"deg)\";\r\n\t\t};\r\n\r\n\t\t// DRAGEND\r\n\t\tlet mouseup = () => {\r\n\t\t\tthis.mapLayerPlaceholderRectangle.setVisible(true);\r\n\t\t\tthis.onRectangleBoundsChanged();\r\n\t\t\tdocument.body.style.cursor = null;\r\n\t\t\tdocument.removeEventListener(\"mouseup\", mouseup);\r\n\t\t\tdocument.removeEventListener(\"mousemove\", mousemove);\r\n\t\t};\r\n\r\n\t\t// DRAG START\r\n\t\tif (this.rotationHandle) {\r\n\t\t\tthis.rotationHandle.addEventListener(\"mousedown\", mousedown);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate hideMapLayers(): void {\r\n\t\tif (this.mapLayerPlaceholderRectangle) {\r\n\t\t\tthis.mapLayerPlaceholderRectangle.setMap(null);\r\n\t\t}\r\n\r\n\t\tif (this.previewLayerOverlay) {\r\n\t\t\tthis.previewLayerOverlay.remove();\r\n\t\t}\r\n\r\n\t\tthis.mapOverlays.forEach(mapOverlay => {\r\n\t\t\tmapOverlay.visible = false;\r\n\t\t\tmapOverlay.remove();\r\n\t\t});\r\n\r\n\t\tthis.mapOverlays.clear();\r\n\t}\r\n\r\n\tprivate closeMapLayerItemWindow(): void {\r\n\t\tthis.isPlotting = false;\r\n\r\n\t\tif (this.infoWindow && typeof this.infoWindow.close == \"function\") {\r\n\t\t\tthis.infoWindow.close();\r\n\t\t}\r\n\r\n\t\tif (google.maps && google.maps.event) {\r\n\t\t\tgoogle.maps.event.trigger(this.infoWindow, \"closeclick\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async mapLayerItemDeleted(mapLayerItemId: number) {\r\n\t\tthis.closeMapLayerItemWindow();\r\n\t\tif (this.mapMarkers.has(mapLayerItemId)) {\r\n\t\t\tlet marker = this.mapMarkers.get(mapLayerItemId);\r\n\t\t\tmarker.visible = false;\r\n\t\t\tmarker.remove();\r\n\t\t\tthis.mapMarkers.set(mapLayerItemId, marker);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async mapLayerItemSaved() {\r\n\t\tthis.closeMapLayerItemWindow();\r\n\r\n\t\tlet bounds = {\r\n\t\t\tnorth: this.mapInstance!.mapBounds.north,\r\n\t\t\tsouth: this.mapInstance!.mapBounds.south,\r\n\t\t\teast: this.mapInstance!.mapBounds.east,\r\n\t\t\twest: this.mapInstance!.mapBounds.west,\r\n\t\t\televation: this.selectedFloor\r\n\t\t} as MapBounds;\r\n\r\n\t\tthis.mapDataInBounds = await api.getMapDataInBounds(bounds);\r\n\t}\r\n\r\n\t/**\r\n\t * Opens a new instance of the Map Item Setup window\r\n\t *\r\n\t * @param {MapLayerItem} mapLayerItem\r\n\t */\r\n\tprivate openMapLayerItemSetupModal(mapLayerItem: MapLayerItem): void {\r\n\t\tif (this.mapLayerPlaceholderRectangle) {\r\n\t\t\tthis.mapLayerPlaceholderRectangle.setVisible(false);\r\n\t\t}\r\n\r\n\t\tthis.closeMapLayerItemWindow();\r\n\r\n\t\tlet latLong = convertStringToLatLng(mapLayerItem.latLong);\r\n\t\tlet mapLayerItemSetupModal = Vue.extend(MapLayerItemSetup);\r\n\t\tconst mapLayerSetupModalInstance = new mapLayerItemSetupModal({\r\n\t\t\tstore: this.$store,\r\n\t\t\tpropsData: {\r\n\t\t\t\tmapLayerItem: mapLayerItem,\r\n\t\t\t\tmapLayersInBounds: this.mapDataInBounds.layers,\r\n\t\t\t\tgroupId: this.viewingGroupId,\r\n\t\t\t\tcurrentFloor: this.selectedFloor\r\n\t\t\t}\r\n\t\t}).$mount();\r\n\r\n\t\t// hook up event handlers for emits\r\n\t\tmapLayerSetupModalInstance.$on(\"mapLayerItemSaved\", () => this.mapLayerItemSaved());\r\n\t\tmapLayerSetupModalInstance.$on(\"mapLayerItemWindowClosed\", () => this.closeMapLayerItemWindow());\r\n\t\tmapLayerSetupModalInstance.$on(\"mapLayerItemDeleted\", (eventData: any) =>\r\n\t\t\tthis.mapLayerItemDeleted(eventData.mapLayerItemId)\r\n\t\t);\r\n\r\n\t\tthis.infoWindow = new google.maps.InfoWindow({\r\n\t\t\tcontent: mapLayerSetupModalInstance.$el,\r\n\t\t\tposition: latLong,\r\n\t\t\tpixelOffset: new google.maps.Size(0, -48)\r\n\t\t});\r\n\r\n\t\t// event handler for clicking the X in the popup window\r\n\t\tthis.infoWindow.addListener(\"closeclick\", () => {\r\n\t\t\tif (this.mapMarkers.has(mapLayerItem.mapLayerItemId)) {\r\n\t\t\t\tlet marker = this.mapMarkers.get(mapLayerItem.mapLayerItemId);\r\n\t\t\t\tmarker.isDraggable = true;\r\n\t\t\t\tthis.mapMarkers.set(mapLayerItem.mapLayerItemId, marker);\r\n\t\t\t}\r\n\t\t\tif (this.newMarker) {\r\n\t\t\t\tthis.newMarker.remove();\r\n\t\t\t}\r\n\t\t\tif (this.mapLayerPlaceholderRectangle) {\r\n\t\t\t\tthis.mapLayerPlaceholderRectangle.setVisible(true);\r\n\t\t\t}\r\n\r\n\t\t\tthis.mapInstance.map.setOptions({gestureHandling: \"greedy\"});\r\n\r\n\t\t\tthis.setRotationElementDimensions();\r\n\t\t});\r\n\r\n\t\t// lock the markers location while the popup window is open.\r\n\t\tif (this.mapMarkers.has(mapLayerItem.mapLayerItemId)) {\r\n\t\t\tlet marker = this.mapMarkers.get(mapLayerItem.mapLayerItemId);\r\n\t\t\tmarker.isDraggable = false;\r\n\t\t\tmarker.marker.setZIndex(9999999);\r\n\t\t\tthis.mapMarkers.set(mapLayerItem.mapLayerItemId, marker);\r\n\t\t}\r\n\r\n\t\tthis.infoWindow.open(this.mapInstance.map);\r\n\r\n\t\tthis.mapInstance.map.setCenter(latLong);\r\n\t\tthis.mapInstance.map.panBy(0,-90);\r\n\t\tthis.mapInstance.map.setOptions({gestureHandling: \"none\"});\r\n\r\n\t\t// reset the cursor for the map (changed when plotting a new item)\r\n\t\tthis.mapInstance!.setCursor(\"grab\");\r\n\t}\r\n\r\n\t/**\r\n\t * Set the map to allow plotting of an item, which will trigger the \"onClick\" event for the map.\r\n\t *\r\n\t * @param {MapLayerItemType} itemType\r\n\t */\r\n\tprivate beginPlottingItem(itemType: MapLayerItemType): void {\r\n\t\t// only allow items to be plotted if we are not currently editing or creating a layer\r\n\t\tif (!this.isAddingLayer) {\r\n\t\t\tthis.isPlotting = true;\r\n\t\t\tthis.selectedItemType = itemType;\r\n\r\n\t\t\tthis.mapInstance!.setCursor(\"crosshair\");\r\n\r\n\t\t\tif (this.mapLayerPlaceholderRectangle) {\r\n\t\t\t\tthis.mapLayerPlaceholderRectangle.setVisible(false);\r\n\t\t\t}\r\n\r\n\t\t\tthis.hideRotationElements();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Event handler for drawing a new rectangle on the map.\r\n\t *\r\n\t * @param {google.maps.Rectangle} rectangle\r\n\t */\r\n\tprivate onRectangleComplete(rectangle: google.maps.Rectangle): void {\r\n\t\t// turn off drawing mode\r\n\t\tthis.drawingManager.setMap(null);\r\n\r\n\t\t// updates our rectangle object with the properties on the newly create one\r\n\t\tthis.mapLayerPlaceholderRectangle = rectangle;\r\n\r\n\t\t// update the width and high display, based on the size of the rectangle\r\n\t\tthis.updateDimensions(rectangle);\r\n\r\n\t\t// add an event listener to run if the size, shape or position of the rectangle is changed\r\n\t\tthis.mapLayerPlaceholderRectangle.addListener(\"bounds_changed\", this.onRectangleBoundsChanged);\r\n\r\n\t\t// create an event handler for clicking on the rectangle, this will trigger a rotation of the map layer\r\n\t\tgoogle.maps.event.addListener(this.mapLayerPlaceholderRectangle, \"click\", () => {\r\n\t\t\t// if we have a preview layer, ie an image has been uploaded\r\n\t\t\tif (this.previewLayerOverlay) {\r\n\t\t\t\t// on each click, increase the rotation by 10\r\n\t\t\t\tthis.previewLayerOverlay.rotation = this.previewLayerOverlay.rotation + 10;\r\n\t\t\t\tthis.previewLayerOverlay.rotationValue = this.previewLayerOverlay.rotationValue + 10;\r\n\t\t\t\tthis.selectedLayer.rotation = this.previewLayerOverlay.rotationValue;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// update the bounds of the selected layer\r\n\t\tthis.setSelectedLayerBounds();\r\n\t\tthis.createPreviewOverlay(this.selectedLayer);\r\n\t}\r\n\r\n\t/**\r\n\t * Helper method to update the bounds of the selected layer\r\n\t *\r\n\t * @param {ILatLngBounds} bounds - bounds object for coordinates\r\n\t */\r\n\tprivate setSelectedLayerBounds(bounds: ILatLngBounds = null): void {\r\n\t\tif (!bounds) {\r\n\t\t\tbounds = this.mapLayerPlaceholderRectangle.getBounds().toJSON();\r\n\t\t}\r\n\r\n\t\tthis.selectedLayer.ne = `${bounds.north} ${bounds.east}`;\r\n\t\tthis.selectedLayer.nw = `${bounds.north} ${bounds.west}`;\r\n\t\tthis.selectedLayer.se = `${bounds.south} ${bounds.east}`;\r\n\t\tthis.selectedLayer.sw = `${bounds.south} ${bounds.west}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Click handler that runs when the size, shape or position of the rectangle is changed\r\n\t */\r\n\tprivate onRectangleBoundsChanged(): void {\r\n\t\tif (!this.isAddingLayer && !this.isEditingLayer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.updateDimensions(this.mapLayerPlaceholderRectangle);\r\n\t\tthis.setSelectedLayerBounds();\r\n\r\n\t\tif (this.previewLayerOverlay) {\r\n\t\t\t// update the position of the preview layer to match the rectangle\r\n\t\t\tthis.previewLayerOverlay.bounds = this.mapLayerPlaceholderRectangle.getBounds();\r\n\t\t\tthis.previewLayerOverlay.rotation = this.selectedLayer.rotation;\r\n\t\t\tthis.previewLayerOverlay.rotationValue = this.selectedLayer.rotation;\r\n\t\t\tthis.setRotationElementDimensions();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Update the calculated height and width of the rectangle\r\n\t *\r\n\t * @param {google.maps.Rectangle} rectangle\r\n\t */\r\n\tprivate updateDimensions(rectangle: google.maps.Rectangle): void {\r\n\t\tlet bounds = this.mapLayerPlaceholderRectangle.getBounds().toJSON();\r\n\r\n\t\tlet height = google.maps.geometry.spherical.computeDistanceBetween(\r\n\t\t\tnew google.maps.LatLng(bounds.north, bounds.east),\r\n\t\t\tnew google.maps.LatLng(bounds.south, bounds.east)\r\n\t\t);\r\n\r\n\t\tlet width = google.maps.geometry.spherical.computeDistanceBetween(\r\n\t\t\tnew google.maps.LatLng(bounds.north, bounds.east),\r\n\t\t\tnew google.maps.LatLng(bounds.north, bounds.west)\r\n\t\t);\r\n\r\n\t\tthis.selectedMapLayerDimensions = {\r\n\t\t\theight: height.toFixed(2),\r\n\t\t\twidth: width.toFixed(2)\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the Layer Setup interface and resets objects and data\r\n\t */\r\n\tprivate async closeLayerSetup(): Promise {\r\n\t\tthis.isEditingLayer = false;\r\n\t\tthis.isAddingLayer = false;\r\n\r\n\t\t// remove the rectangle from the map\r\n\t\tif (this.mapLayerPlaceholderRectangle) {\r\n\t\t\tthis.mapLayerPlaceholderRectangle.setMap(null);\r\n\t\t}\r\n\r\n\t\t// remove the preview layer from the map\r\n\t\tif (this.previewLayerOverlay) {\r\n\t\t\tthis.previewLayerOverlay.remove();\r\n\t\t\tthis.previewLayerOverlay = null;\r\n\t\t}\r\n\r\n\t\t// remove the drawing manager from the map\r\n\t\tif (this.drawingManager) {\r\n\t\t\tthis.drawingManager.setMap(null);\r\n\t\t}\r\n\r\n\t\tif (this.rotationContainer) {\r\n\t\t\tthis.rotationContainer.style.visibility = \"hidden\";\r\n\t\t}\r\n\r\n\t\tthis.selectedLayer = null;\r\n\t\tthis.showMapLayerInfoBox = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates any changes map item positions\r\n\t */\r\n\tprivate saveChangesToMapLayerItems(): void {\r\n\t\tthis.isSavingMapLayerItems = true;\r\n\t\tthis.relocatedMapLayerItems.forEach(async mapLayerItem => {\r\n\t\t\tawait api.putMapLayerItem(mapLayerItem);\r\n\t\t\tlet itemToUpdate = this.mapDataInBounds.items.find(i => i.mapLayerItemId === mapLayerItem.mapLayerItemId);\r\n\t\t\titemToUpdate.latLong = mapLayerItem.latLong;\r\n\t\t});\r\n\r\n\t\tthis.relocatedMapLayerItems = [];\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.isSavingMapLayerItems = false;\r\n\t\t}, 200);\r\n\t}\r\n\r\n\tprivate cancelChangesToMapLayerItems(): void {\r\n\t\tthis.relocatedMapLayerItems.forEach(async mapLayerItem => {\r\n\t\t\tlet originalMapLayerItem = this.mapDataInBounds.items.find(i => i.mapLayerItemId === mapLayerItem.mapLayerItemId);\r\n\t\t\tif (originalMapLayerItem && this.mapMarkers.has(originalMapLayerItem.mapLayerItemId)) {\r\n\t\t\t\tthis.mapMarkers\r\n\t\t\t\t\t.get(originalMapLayerItem.mapLayerItemId)\r\n\t\t\t\t\t.moveTo(convertStringToLatLng(originalMapLayerItem.latLong));\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.relocatedMapLayerItems = [];\r\n\t}\r\n\r\n\t/**\r\n\t * Toggle visibility of a map layer image\r\n\t *\r\n\t * @param {number} mapLayerId\r\n\t * @param {boolean | null} visibility\r\n\t */\r\n\tprivate async toggleMapLayerVisibility(mapLayerId: number, visibility: boolean = null): Promise {\r\n\t\tif (!visibility) {\r\n\t\t\tif (this.mapOverlays.has(mapLayerId)) {\r\n\t\t\t\tvisibility = !this.mapOverlays.get(mapLayerId).visible;\r\n\t\t\t} else {\r\n\t\t\t\tvisibility = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.mapOverlays.has(mapLayerId)) {\r\n\t\t\tlet overlay = this.mapOverlays.get(mapLayerId);\r\n\t\t\toverlay.visible = visibility;\r\n\t\t\tthis.mapOverlays.set(mapLayerId, overlay);\r\n\t\t\tif (!visibility) {\r\n\t\t\t\tthis.hiddenMapLayerIds.push(mapLayerId);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst mapLayerToShow = this.mapDataInBounds.layers.find(l => l.mapLayerId === mapLayerId);\r\n\t\t\tawait this.createOverlayForMapLayer(mapLayerToShow);\r\n\t\t}\r\n\r\n\t\tif (!visibility) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst indexToRemove = this.hiddenMapLayerIds.indexOf(mapLayerId);\r\n\t\tif (indexToRemove === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.hiddenMapLayerIds.splice(indexToRemove, 1);\r\n\t}\r\n\r\n\t/**\r\n\t * Get text for Title tag referencing the image layer display state\r\n\t *\r\n\t * @param {number} mapLayerId\r\n\t * @returns {string}\r\n\t */\r\n\tprivate mapLayerImageStatusTitle(mapLayerId: number): string {\r\n\t\tif (!this.selectedLayer || this.selectedLayer.mapLayerId === mapLayerId) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\t\treturn (\r\n\t\t\t(this.mapOverlays.has(mapLayerId) && this.mapOverlays.get(mapLayerId).visible ? \"hide\" : \"show\") +\r\n\t\t\t\" map layer image\"\r\n\t\t);\r\n\t}\r\n\r\n\tprivate getShortKey(mapItemType: MapLayerItemType): string {\r\n\t\t// camera\r\n\t\tif (mapItemType.mapLayerItemTypeId == 1) {\r\n\t\t\treturn \"q\";\r\n\t\t}\r\n\t\t// Audio\r\n\t\tif (mapItemType.mapLayerItemTypeId == 2) {\r\n\t\t\treturn \"w\";\r\n\t\t}\r\n\t\t// Door\r\n\t\tif (mapItemType.mapLayerItemTypeId == 3) {\r\n\t\t\treturn \"e\";\r\n\t\t}\r\n\t\t// Alarm\r\n\t\tif (mapItemType.mapLayerItemTypeId == 4) {\r\n\t\t\treturn \"r\";\r\n\t\t}\r\n\t\t// Output\r\n\t\tif (mapItemType.mapLayerItemTypeId == 5) {\r\n\t\t\treturn \"y\";\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isMapSetupUseElevationLabels(): boolean {\r\n\t\treturn get(this.featuresList, [\"MapSetup\", \"ElevationLabels\"]);\r\n\t}\r\n\r\n\tprivate get elevationValuesElevationsArray(): number[] {\r\n\t\treturn this.mapDataInBounds.elevations.map( item => item.elevationValue );\r\n\t}\r\n\r\n\tprivate get selectedFloorForLayer() : number {\r\n\t\treturn this.isMapSetupUseElevationLabels ? this.selectedFloor : this.selectedFloor + 1;\r\n\t}\r\n\r\n\tprivate destroyed(): void {\r\n\t\tthis.closeMapLayerItemWindow();\r\n\t\tthis.closeLayerSetup();\r\n\t\tthis.clearMap();\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MapSetup.vue?vue&type=template&id=06902793&scoped=true\"\nimport script from \"./MapSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./MapSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MapSetup.vue?vue&type=style&index=0&id=06902793&prod&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 \"06902793\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"h-100 card card-secondary\",attrs:{\"id\":\"setup-container\"}},[_c('nav-header',{attrs:{\"title\":\"Automate Rules Setup\"}}),(_vm.userHasViewPermissions || _vm.userHasEditPermissions)?_c('div',[_c('generic-table',{ref:\"genericTable\",attrs:{\"id\":\"rulesTable\",\"term\":\"Rule\",\"columns\":_vm.columns,\"dataList\":_vm.dataWithActions,\"totalAvailableRows\":_vm.totalRecords,\"isLoading\":_vm.isLoading,\"data-cy\":\"rulesEngineSetupTableGenericTable\",\"useModal\":false,\"use-slot-actions\":\"\"},on:{\"search-filter-updated\":_vm.updateData},scopedSlots:_vm._u([{key:\"grouping\",fn:function(slotProps){return [_vm._v(\" \"+_vm._s(_vm.getGroupingTitle(slotProps.row.grouping))+\" \")]}},{key:\"actions\",fn:function(slotProps){return [_c('b-button-group',{attrs:{\"size\":\"sm\"}},[_c('b-button',{staticClass:\"action-button\",attrs:{\"id\":\"btnDelete\",\"data-cy\":\"delete-rule-button\"},on:{\"click\":function($event){return _vm.handleDeleteClick(slotProps.row)}}},[_c('i',{staticClass:\"fas\",class:{'fa-trash': _vm.userHasEditPermissions}})]),_c('b-button',{staticClass:\"action-button\",attrs:{\"id\":\"btnEdit\",\"data-cy\":\"edit-button\"},on:{\"click\":function($event){return _vm.handleEditClick(slotProps.row, slotProps.index)}}},[_c('i',{staticClass:\"fas\",class:{'fa-edit': _vm.userHasEditPermissions, 'fa-eye': !_vm.userHasEditPermissions}})])],1)]}},{key:\"custom-button\",fn:function(){return [(_vm.userHasEditPermissions)?_c('button',{staticClass:\"btn btn-primary add-btn\",on:{\"click\":function($event){return _vm.handleAddClick()}}},[_vm._v(\"Add Rule\")]):_vm._e()]},proxy:true}],null,false,3269224799)}),_c('rules-engine-setup-modal',{attrs:{\"readOnly\":!_vm.userHasEditPermissions,\"showModal\":_vm.isSetupModalShown},on:{\"triggerReload\":_vm.updateData,\"closeSetupModal\":_vm.closeSetupModal}}),_c('rules-engine-delete-modal',{attrs:{\"rule\":_vm.selectedDeleteRule,\"showModal\":_vm.isDeleteModalShown},on:{\"closeDeleteModal\":_vm.closeDeleteModal}})],1):_c('h4',{attrs:{\"id\":\"setupErrorContainer\"}},[_vm._v(\"You do not have permissions to view this page\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{staticClass:\"full-page-modal\",attrs:{\"size\":\"xxl\",\"id\":\"rules-engine-setup-modal\",\"visible\":_vm.showModal},on:{\"hidden\":_vm.closeRulesEngineSetupModal,\"shown\":_vm.configureCurrentRule},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('div',[(_vm.readOnly)?_c('h4',[_c('i',{staticClass:\"fa fa-eye\"}),_vm._v(\" Viewing \"+_vm._s(_vm.currentRule.title))]):_vm._e(),(!_vm.readOnly && !_vm.existingRule)?_c('h4',[_c('i',{staticClass:\"fa fa-edit-icon\"}),_vm._v(\" Creating new Rule\")]):_vm._e(),(!_vm.readOnly && _vm.existingRule)?_c('h4',[_c('i',{staticClass:\"fa fa-edit-icon\"}),_vm._v(\" Editing \"+_vm._s(_vm.currentRule.title))]):_vm._e()])]},proxy:true},{key:\"modal-footer\",fn:function(){return [_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){return _vm.closeRulesEngineSetupModal()}}},[_vm._v(\" \"+_vm._s(_vm.readOnly ? \"Close\" : \"Cancel\")+\" \")]),(!_vm.readOnly)?_c('b-button',{attrs:{\"variant\":\"primary\",\"disabled\":_vm.ruleIsInvalid},on:{\"click\":function($event){return _vm.saveCurrentRule()}}},[_vm._v(\" Save \")]):_vm._e()]},proxy:true}])},[_c('div',{staticClass:\"mx-auto thin-scroll\",staticStyle:{\"max-height\":\"70vh\",\"overflow-y\":\"auto\"}},[_c('rules-card',{attrs:{\"cardTitle\":\"Title\",\"cardContent\":_vm.getTitleComponentConfig,\"readOnly\":_vm.readOnly,\"hasValidation\":\"\"},on:{\"isValid\":_vm.titleValid},model:{value:(_vm.currentRule.title),callback:function ($$v) {_vm.$set(_vm.currentRule, \"title\", $$v)},expression:\"currentRule.title\"}}),_c('br'),_c('rules-card',{staticClass:\"scope-size\",attrs:{\"cardTitle\":\"Scope\",\"cardContent\":_vm.getScopeBuilderConfig,\"readOnly\":_vm.readOnly,\"hasValidation\":\"\"},on:{\"isValid\":_vm.scopeValid,\"input\":_vm.scopeUpdated},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',{staticClass:\"grouping-row\"},[_c('label',[_c('b',[_vm._v(\"Grouping:\")])]),_c('vue-select',{staticClass:\"dark grouping-select\",attrs:{\"label\":\"title\",\"options\":_vm.getGrouping,\"reduce\":function (val) { return val.id; },\"appendToBody\":\"\",\"disabled\":_vm.readOnly},on:{\"input\":_vm.groupingUpdated},model:{value:(_vm.grouping),callback:function ($$v) {_vm.grouping=$$v},expression:\"grouping\"}})],1)]},proxy:true}]),model:{value:(_vm.ruleScope),callback:function ($$v) {_vm.ruleScope=$$v},expression:\"ruleScope\"}}),_c('br'),_c('rules-card',{staticClass:\"rule-card-size\",attrs:{\"cardTitle\":\"Triggers\",\"cardContent\":_vm.getTriggerBuilderConfig,\"readOnly\":_vm.readOnly,\"hasValidation\":\"\"},on:{\"isValid\":_vm.triggersValid},model:{value:(_vm.currentRule.ruleTriggers),callback:function ($$v) {_vm.$set(_vm.currentRule, \"ruleTriggers\", $$v)},expression:\"currentRule.ruleTriggers\"}}),_c('br'),_c('rules-card',{staticClass:\"rule-card-size mb-1\",attrs:{\"cardTitle\":\"Actions\",\"cardContent\":_vm.getActionBuilderConfig,\"readOnly\":_vm.readOnly,\"hasValidation\":\"\"},on:{\"isValid\":_vm.actionsValid},model:{value:(_vm.currentRule.ruleActions),callback:function ($$v) {_vm.$set(_vm.currentRule, \"ruleActions\", $$v)},expression:\"currentRule.ruleActions\"}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{staticClass:\"bg-gray\",class:_vm.validationClass,attrs:{\"header-class\":\"h4\",\"body-class\":\"py-3 bg-gray\",\"header\":_vm.cardTitle}},[_vm._t(\"header\"),_vm._t(\"content\",[(_vm.cardContent)?_c(_vm.cardContent.component,_vm._b({tag:\"component\",attrs:{\"readOnly\":_vm.readOnly},on:{\"input\":_vm.valueUpdated,\"isValid\":_vm.validationUpdated},model:{value:(_vm.inputValue),callback:function ($$v) {_vm.inputValue=$$v},expression:\"inputValue\"}},'component',_vm.cardContent.props,false)):_vm._e(),_c('b-alert',{staticClass:\"mt-3 mb-0\",attrs:{\"variant\":\"danger\",\"show\":!_vm.isValid && _vm.validationMessage && _vm.hasValidation}},[_vm._v(_vm._s(this.componentValidation.message))])]),_vm._t(\"footer\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { clone, isEqual } from 'lodash';\r\nimport { CardComponent, CardValidation } from '@/store/rules-engine/types';\r\n\r\n\r\n@Component({})\r\nexport default class RulesCard extends Vue {\r\n @Prop({type: String, default: \"\"})\r\n private cardTitle: string;\r\n\r\n @Prop()\r\n private cardContent: CardComponent\r\n\r\n @Prop()\r\n private value: any;\r\n\r\n @Prop({type: Boolean, default: false})\r\n private hasValidation: boolean;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tprivate readOnly: boolean;\r\n\r\n private componentValidation: CardValidation = { isValid:false, message: null };\r\n private inputValue: any = null;\r\n\r\n //Getters\r\n private get validationClass(): string\r\n {\r\n if(!this.hasValidation)\r\n {\r\n return \"border-left-blue\"\r\n }\r\n\r\n return this.componentValidation.isValid ? \"border-left-green\" : \"border-left-red\";\r\n }\r\n\r\n private get isValid(): boolean\r\n {\r\n return this.componentValidation ? this.componentValidation.isValid : true;\r\n }\r\n\r\n private get validationMessage(): string\r\n {\r\n return this.componentValidation ? this.componentValidation.message : null;\r\n }\r\n\r\n // Methods\r\n private mounted(): void\r\n {\r\n this.valueChanged();\r\n }\r\n\r\n @Watch(\"value\")\r\n private valueChanged(): void\r\n {\r\n if(!this.checkHasChanged)\r\n {\r\n return;\r\n }\r\n\r\n this.inputValue = (this.value == null || this.value == undefined) ? null : clone(this.value);\r\n }\r\n\r\n\t@Emit(\"isValid\")\r\n private validationUpdated(isValid: CardValidation): CardValidation\r\n {\r\n \tthis.componentValidation = isValid;\r\n\t\treturn isValid;\r\n }\r\n\r\n @Emit(\"input\")\r\n private valueUpdated(value: any): any\r\n {\r\n this.inputValue = value;\r\n if(!this.checkHasChanged)\r\n {\r\n return\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private checkHasChanged(): boolean\r\n {\r\n let valueA = this.value;\r\n let valueB = this.inputValue;\r\n\r\n if (valueA != null && valueB != null)\r\n {\r\n if (typeof valueA === \"object\" && !isEqual(valueA, valueB)) {\r\n return true;\r\n }\r\n else if (valueA.toString() != valueB.toString())\r\n {\r\n return true;\r\n }\r\n }\r\n else if (valueA != valueB)\r\n {\r\n return true;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesCard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesCard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RulesCard.vue?vue&type=template&id=40b2a860\"\nimport script from \"./RulesCard.vue?vue&type=script&lang=ts\"\nexport * from \"./RulesCard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RulesCard.vue?vue&type=style&index=0&id=40b2a860&prod&lang=css\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Emit, Watch } from \"vue-property-decorator\";\r\nimport { Rule, CardComponent, EditingRule, RuleScope, CardValidation, Grouping } from \"@/store/rules-engine/types\";\r\nimport RulesCard from \"@/components/rules-engine-setup/RulesCard.vue\";\r\nimport RulesText from '@/components/rules-engine-setup/RulesText.vue';\r\nimport RulesLogicStep from '@/components/rules-engine-setup/RulesLogicStep.vue';\r\nimport { Getter, namespace } from \"vuex-class\";\r\nimport { Cancelable, cloneDeep, debounce, isEqual } from \"lodash\";\r\nimport vSelect from \"vue-select\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\n\r\nconst RuleStore = namespace(\"rulesEngine\");\r\nconst SessionStore = namespace(\"sessions\");\r\n\r\n@Component({\r\n\tcomponents:\r\n {\r\n\t\t\t\"vue-select\": vSelect,\r\n \"rules-card\": RulesCard,\r\n \"rules-text\": RulesText,\r\n \"rules-logic-step\": RulesLogicStep\r\n }\r\n})\r\nexport default class RulesEngineSetupModal extends Vue {\r\n\t@RuleStore.Getter private getTitleComponentConfig: CardComponent;\r\n\t@RuleStore.Getter private getScopeBuilderConfig: CardComponent;\r\n\t@RuleStore.Getter private getTriggerBuilderConfig: CardComponent;\r\n\t@RuleStore.Getter private getActionBuilderConfig: CardComponent;\r\n\t@RuleStore.Getter private getGrouping: Grouping[];\r\n\t@RuleStore.Action private saveRule: (rule: EditingRule) => Promise;\r\n\t@RuleStore.Mutation private updateEditingRule: (rule: Rule) => void;\r\n\t@RuleStore.State private editingRule: EditingRule;\r\n\t@Getter getUserTenantGroupId: number;\r\n\t@SessionStore.Action updateSession: ({ resourceId: SessionResource }) => Promise;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tprivate readOnly: boolean;\r\n\r\n\t@Prop({ required: true, default: false})\r\n\tprivate showModal: boolean = false;\r\n\r\n\tprivate titleIsValid: boolean = false;\r\n\tprivate scopeIsValid: boolean = false;\r\n\tprivate triggersIsValid: boolean = false;\r\n\tprivate actionsIsValid: boolean = false;\r\n\r\n\t// Default grouping area which has an Id of 2\r\n\tprivate currentRule: EditingRule = {\r\n\t\truleId: 0,\r\n\t\ttitle: \"\",\r\n\t\ttenantId: null,\r\n\t\tgrouping: 2,\r\n\t\truleTriggers: [],\r\n\t\truleActions: [],\r\n\t\tresponseId: null,\r\n\t\tserverId: null,\r\n\t\tserverTypeId: null,\r\n\t\tserverTypeEventNum: null,\r\n\t\tinput1: null,\r\n\t\tinput2: null\r\n\t};\r\n\r\n\t// Default grouping area which has an Id of 2\r\n\tprivate grouping: Grouping = {\r\n\t\tid: 2,\r\n\t\ttitle: null\r\n\t};\r\n\r\n\tprivate ruleScope: RuleScope = {\r\n\t\tresponseId: null,\r\n\t\tserverId: null,\r\n\t\tserverTypeId: null,\r\n\t\teventNum: null,\r\n\t\tinput1: null,\r\n\t\tinput2: null\r\n\t};\r\n\r\n\tprivate mounted(): void {\r\n\t\tthis.currentRule.tenantId = this.getUserTenantGroupId;\r\n\t\tthis.updateGrouping();\r\n\t}\r\n\r\n\t@Watch(\"editingRule\")\r\n\tprivate onEditingRuleChanged(): void {\r\n\t\tthis.configureCurrentRule();\r\n\t}\r\n\r\n\tprivate configureCurrentRule(): void {\r\n\t\tif(this.existingRule){\r\n\t\t\tthis.currentRule = cloneDeep(this.editingRule);\r\n\t\t\tthis.updateRuleScope();\r\n\t\t}\r\n\t\tthis.updateGrouping();\r\n\t}\r\n\r\n\tprivate updateRuleScope(): void {\r\n\t\tthis.ruleScope = {\r\n\t\t\tresponseId: this.currentRule.responseId,\r\n\t\t\tserverId: this.currentRule.serverId,\r\n\t\t\tserverTypeId: this.currentRule.serverTypeId,\r\n\t\t\teventNum: this.currentRule.serverTypeEventNum,\r\n\t\t\tinput1: this.currentRule.input1,\r\n\t\t\tinput2: this.currentRule.input2\r\n\t\t};\r\n\t}\r\n\r\n\tprivate updateGrouping(): void {\r\n\t\tthis.grouping = this.getGrouping.firstOrDefault(g => g.id === this.currentRule.grouping);\r\n\t}\r\n\r\n\tprivate get existingRule(): boolean {\r\n\t\treturn !!this.editingRule?.ruleId;\r\n\t}\r\n\r\n\tprivate get ruleIsInvalid(): boolean {\r\n\t\tif(!this.existingRule){\r\n\t\t\t// Check cards are valid\r\n\t\t\treturn !(this.titleIsValid && this.scopeIsValid && this.triggersIsValid && this.actionsIsValid);\r\n\t\t} else {\r\n\t\t\t// Check if any changes have been made and all cards are valid\r\n\t\t\tconst hasChanged = !isEqual(this.editingRule, this.currentRule);\r\n\t\t\treturn !(this.titleIsValid && this.scopeIsValid && this.triggersIsValid && this.actionsIsValid) || !hasChanged;\r\n\t\t}\r\n\t}\r\n\r\n\t@Emit(\"closeSetupModal\")\r\n\tprivate closeRulesEngineSetupModal(): void {\r\n\t\tthis.setDataForCloseModal();\r\n\t}\r\n\r\n\tprivate async saveCurrentRule(): Promise {\r\n\t\t// Only close modal if actions.saveRule is successful\r\n\t\tconst result = await this.saveRule(this.currentRule);\r\n \tif (result) {\r\n\t\t\tthis.closeRulesEngineSetupModal();\r\n\t\t\tthis.$emit(\"triggerReload\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setDataForCloseModal(): void {\r\n\t\tthis.updateEditingRule(null);\r\n\r\n\t\t// Default grouping area which has an Id of 2\r\n\t\tthis.currentRule = {\r\n\t\t\truleId: 0,\r\n\t\t\ttitle: \"\",\r\n\t\t\ttenantId: this.getUserTenantGroupId,\r\n\t\t\tgrouping: 2,\r\n\t\t\truleTriggers: [],\r\n\t\t\truleActions: [],\r\n\t\t\tresponseId: null,\r\n\t\t\tserverId: null,\r\n\t\t\tserverTypeId: null,\r\n\t\t\tserverTypeEventNum: null,\r\n\t\t\tinput1: null,\r\n\t\t\tinput2: null\r\n\t\t};\r\n\t\tthis.ruleScope = {\r\n\t\t\tresponseId: null,\r\n\t\t\tserverId: null,\r\n\t\t\tserverTypeId: null,\r\n\t\t\teventNum: null,\r\n\t\t\tinput1: null,\r\n\t\t\tinput2: null\r\n\t\t};\r\n\t\tthis.grouping = {\r\n\t\t\tid: 2,\r\n\t\t\ttitle: null\r\n\t\t};\r\n\t}\r\n\r\n\tprivate titleValid(value: CardValidation): void {\r\n\t\tthis.titleIsValid = value.isValid;\r\n\t}\r\n\r\n\tprivate scopeValid(value: CardValidation): void {\r\n\t\tthis.scopeIsValid = value.isValid;\r\n\t}\r\n\r\n\tprivate scopeUpdated(value: RuleScope): void {\r\n\t\tthis.currentRule.responseId = value.responseId;\r\n\t\tthis.currentRule.serverId = value.serverId;\r\n\t\tthis.currentRule.serverTypeId = value.serverTypeId;\r\n\t\tthis.currentRule.serverTypeEventNum = value.eventNum;\r\n\t\tthis.currentRule.input1 = value.input1;\r\n\t\tthis.currentRule.input2 = value.input2;\r\n\t}\r\n\r\n\tprivate triggersValid(value: CardValidation): void {\r\n\t\tthis.triggersIsValid = value.isValid;\r\n\t}\r\n\r\n\tprivate actionsValid(value: CardValidation): void {\r\n\t\tthis.actionsIsValid = value.isValid;\r\n\t}\r\n\r\n\tprivate groupingUpdated(value: Grouping): void {\r\n\t\tif(value) {\r\n\t\t\tthis.currentRule.grouping = value.id;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"ruleScope\", { deep: true })\r\n\t@Watch(\"currentRule\", { deep: true })\r\n\tprivate async reloadSession(): Promise {\r\n\t\tawait this.reloadSessionDebounced();\r\n\t}\r\n\r\n\tprivate get reloadSessionDebounced(): (() => Promise) & Cancelable {\r\n\t\treturn debounce(async () => this.updateSession({ resourceId: SessionResource.StandardLoginSession }),\r\n\t\t\t1000,\r\n\t\t\t{ leading: true, trailing: false}\r\n\t\t);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesEngineSetupModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesEngineSetupModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RulesEngineSetupModal.vue?vue&type=template&id=72f522ae\"\nimport script from \"./RulesEngineSetupModal.vue?vue&type=script&lang=ts\"\nexport * from \"./RulesEngineSetupModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RulesEngineSetupModal.vue?vue&type=style&index=0&id=72f522ae&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"header-class\":\"delete-confirm-modal\",\"visible\":_vm.showModal,\"data-cy\":\"delete-rule-modal\"},on:{\"hidden\":function($event){return _vm.closeModal()}}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header\"},[_c('i',{staticClass:\"fas fa-trash d-inline pr-2 text-danger\"}),_c('h4',{staticClass:\"d-inline\"},[_vm._v(\"Delete Rule\")])])]),(_vm.rule)?_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('h5',[_vm._v(\"Are you sure you want to delete the rule: \"+_vm._s(_vm.rule.title)+\" ?\")])]):_vm._e(),_c('template',{slot:\"modal-footer\"},[_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"btn-delete-rule\"},on:{\"click\":function($event){return _vm.removeRule()}}},[_vm._v(\"Delete\")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"btn-close-delete-modal\"},on:{\"click\":function($event){return _vm.closeModal()}}},[_vm._v(\"Cancel\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Vue, } from \"vue-property-decorator\";\r\nimport { Rule } from \"@/store/rules-engine/types\";\r\nimport { namespace } from \"vuex-class\";\r\n\r\nconst RulesEngineStore = namespace(\"rulesEngine\")\r\n\r\n@Component({})\r\nexport default class RulesEngineDeleteModal extends Vue {\r\n\t@Prop({required: true}) rule: Rule;\r\n\t@Prop({ default: false, type: Boolean }) showModal: boolean;\r\n\r\n\t@RulesEngineStore.Action deleteRule: (ruleId: number) => Promise;\r\n\r\n\t@Emit(\"closeDeleteModal\")\r\n\tprivate closeModal(): void {}\r\n\r\n\tprivate async removeRule(): Promise {\r\n\t\tawait this.deleteRule(this.rule.ruleId);\r\n\t\tthis.closeModal();\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesEngineDeleteModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesEngineDeleteModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RulesEngineDeleteModal.vue?vue&type=template&id=77f54b84\"\nimport script from \"./RulesEngineDeleteModal.vue?vue&type=script&lang=ts\"\nexport * from \"./RulesEngineDeleteModal.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { RulesWithPagination, Rule, EditingRule, RulesWithTableActions, Grouping } from \"@/store/rules-engine/types\";\r\nimport { PaginatedSearchQueryParams, UserPermissions } from \"@/store/types\";\r\nimport PaginatedSearch, { PaginatedSearchRequest } from \"@/mixins/PaginatedSearch\";\r\nimport RulesEngineSetupModal from \"@/components/rules-engine-setup/RulesEngineSetupModal.vue\";\r\nimport RulesEngineDeleteModal from \"@/components/rules-engine-setup/RulesEngineDeleteModal.vue\";\r\n\r\nconst RuleStore = namespace(\"rulesEngine\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"generic-table\": GenericTable,\r\n\t\t\"rules-engine-setup-modal\": RulesEngineSetupModal,\r\n\t\t\"rules-engine-delete-modal\": RulesEngineDeleteModal\r\n\t}\r\n})\r\nexport default class RulesEngineSetup extends Mixins(PaginatedSearch) {\r\n\t@RuleStore.Action private retrieveRules: (paginatedSearchRequest: PaginatedSearchRequest) => Promise;\r\n\t@RuleStore.Action private configureRuleForUI: (rule: Rule) => Promise;\r\n\t@RuleStore.Action private retrieveRuleServerTypes: () => Promise;\r\n\t@RuleStore.Action private retrieveRuleActionPlans: () => Promise;\r\n\t@RuleStore.State private rules: RulesWithPagination;\r\n\t@RuleStore.State private editingRule: EditingRule;\r\n\t@RuleStore.State private setupModalVisible: boolean;\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@RuleStore.Getter private getGrouping: Grouping[];\r\n\r\n\tprivate isLoading: boolean = false;\r\n\tprivate totalRecords: number = 0;\r\n\tprivate isSetupModalShown: boolean = false;\r\n\tprivate isDeleteModalShown: boolean = false;\r\n\tprivate selectedDeleteRule: Rule = null;\r\n\r\n\tprivate get userHasViewPermissions(): boolean {\r\n\t\treturn this.getPermissions.canViewRulesEngine;\r\n\t}\r\n\r\n\tprivate get userHasEditPermissions(): boolean {\r\n\t\treturn this.getPermissions.canEditRulesEngine;\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tawait Promise.all([this.updateData(), this.retrieveRuleServerTypes(), this.retrieveRuleActionPlans()]);\r\n }\r\n\r\n\tprivate columns: TableHeader[] = [\r\n\t\t{\r\n\t\t\ttitle: \"Title\",\r\n\t\t\tkey: \"title\",\r\n\t\t\torder: 1,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The Server Title\",\r\n\t\t\tsearchable: false,\r\n\t\t\tsortable: true,\r\n\t\t\tsortKey: \"serverTitle\",\r\n\t\t\tisTermLabel: true,\r\n\t\t\tvisible: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Grouping\",\r\n\t\t\tkey: \"grouping\",\r\n\t\t\torder: 2,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The Rule Grouping\",\r\n\t\t\tsearchable: false,\r\n\t\t\tsortable: true,\r\n\t\t\tisSortedByDefault: true,\r\n\t\t\tvisible: true,\r\n\t\t\tuseCustomCell: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Device\",\r\n\t\t\tkey: \"ServerTitle\",\r\n\t\t\torder: 3,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The Server Title\",\r\n\t\t\tsearchable: false,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Alarm\",\r\n\t\t\tkey: \"responseTitle\",\r\n\t\t\torder: 4,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The Response Title\",\r\n\t\t\tsearchable: false,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Event Type\",\r\n\t\t\tkey: \"eventNum\",\r\n\t\t\torder: 5,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The Event Type\",\r\n\t\t\tsearchable: false,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Device Type\",\r\n\t\t\tkey: \"serverTypeTitle\",\r\n\t\t\torder: 6,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The Device Type\",\r\n\t\t\tsearchable: false,\r\n\t\t}\r\n\t];\r\n\r\n\tprivate async updateData(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\r\n\t\t\tconst request = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\t\t\tawait this.retrieveRules(request);\r\n\r\n\t\t\tlet rulesWithPagination = this.rules;\r\n\t\t\tthis.totalRecords = rulesWithPagination.totalRecords;\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tconsole.log(\"Unexpected error fetching rules: \" + ex);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate handleEditClick(rule: Rule, index: number): void {\r\n\t\tthis.configureRuleForUI(rule);\r\n\t\tthis.isSetupModalShown = true;\r\n\t}\r\n\r\n\tprivate handleAddClick(): void {\r\n\t\t// Open RuleEngineSetupModal with a blank rule if userHasEditPermissions\r\n\t\tthis.isSetupModalShown = true;\r\n\t}\r\n\r\n\tprivate get dataWithActions(): RulesWithTableActions[] {\r\n\t\treturn this.rules.data.map(ruleData => {\r\n\t\t\treturn {...ruleData, controls: true}\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate handleDeleteClick(rule: Rule): void {\r\n\t\tthis.selectedDeleteRule = rule;\r\n\t\tthis.isDeleteModalShown = true;\r\n\t}\r\n\r\n\tprivate closeDeleteModal(): void {\r\n\t\tthis.selectedDeleteRule = null;\r\n\t\tthis.isDeleteModalShown = false;\r\n\t}\r\n\r\n\tprivate closeSetupModal(): void {\r\n\t\tthis.isSetupModalShown = false;\r\n\t}\r\n\r\n\tprivate getGroupingTitle(id: number): string {\r\n\t\tif (id) {\r\n\t\t\treturn this.getGrouping.firstOrDefault(g => g.id === id)?.title;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesEngineSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesEngineSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RulesEngineSetup.vue?vue&type=template&id=68e32ed0&scoped=true\"\nimport script from \"./RulesEngineSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./RulesEngineSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RulesEngineSetup.vue?vue&type=style&index=0&id=68e32ed0&prod&scoped=true&lang=css\"\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 \"68e32ed0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\",attrs:{\"id\":\"setup-container\"}},[_c('nav-header',{attrs:{\"title\":\"Status\"}}),(_vm.getPermissions.isSystemAdmin || _vm.getPermissions.canViewSystemView)?_c('div',{staticClass:\"feature-container flex-grow-1 flex-shrink-1 d-flex flex-column\"},[_c('div',{staticClass:\"card-body d-flex\"},[_c('div',{staticClass:\"setup-column\"},[_c('system-view-tree',{on:{\"itemSelected\":_vm.updateSelectedItem}})],1),_c('div',{staticClass:\"flex-grow-1 display-column d-flex flex-column\",staticStyle:{\"position\":\"relative\"}},[_c('setup-overview',{attrs:{\"selectedNode\":this.selectedItem}})],1)])]):_c('h4',{attrs:{\"id\":\"setupErrorContainer\"}},[_vm._v(\"You do not have permissions to view this page\")])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"title-header\"},[_c('h3',[_vm._v(\"Filters\")]),_c('ops-links')],1),_c('b-container',{staticClass:\"filter-container\"},[_c('b-row',{staticClass:\"pb-1\"},[_c('b-col',{attrs:{\"cols\":\"3\",\"align-self\":\"end\"}},[_c('label',{staticClass:\"filter-label\"},[_vm._v(\"Health:\")])]),_c('b-col',{staticClass:\"pl-0\",attrs:{\"align-self\":\"end\"}},[_c('system-view-health-filter')],1)],1),(_vm.advancedFilterId === null)?_c('b-row',{staticClass:\"filter-row\"},[_c('b-col',{attrs:{\"cols\":\"3\",\"align-self\":\"end\"}},[_c('label',{staticClass:\"filter-label\"},[_vm._v(\"Area:\")])]),_c('b-col',{staticClass:\"pl-0\",attrs:{\"align-self\":\"end\"}},[_c('area-tree-path',{attrs:{\"disabled\":_vm.isLoadingAreas},on:{\"onAreaSelected\":_vm.updateSelectedArea,\"homeSelected\":_vm.loadHome},model:{value:(_vm.selectedArea),callback:function ($$v) {_vm.selectedArea=$$v},expression:\"selectedArea\"}})],1)],1):_vm._e(),_c('b-row',{staticClass:\"filter-row\"},[_c('b-col',{attrs:{\"cols\":\"3\",\"align-self\":\"end\"}},[_c('label',{staticClass:\"filter-label\"},[_vm._v(\"Title:\")])]),_c('b-col',{staticClass:\"pl-0\",attrs:{\"align-self\":\"end\"}},[_c('b-input',{attrs:{\"placeholder\":\"Enter a title...\",\"debounce\":\"500\"},model:{value:(_vm.titleFilter),callback:function ($$v) {_vm.titleFilter=$$v},expression:\"titleFilter\"}})],1)],1),(_vm.isAdvancedFilteringEnabled)?_c('b-row',{staticClass:\"filter-row\"},[_c('b-col',{attrs:{\"cols\":\"3\",\"align-self\":\"end\"}},[_c('label',{staticClass:\"filter-label\"},[_vm._v(\"Advanced Filter: \")])]),_c('b-col',{staticClass:\"pl-0\",attrs:{\"align-self\":\"end\"}},[_c('system-view-advanced-filters',{on:{\"input\":_vm.onAdvancedFilterInput},model:{value:(_vm.advancedFilterId),callback:function ($$v) {_vm.advancedFilterId=$$v},expression:\"advancedFilterId\"}})],1)],1):_vm._e()],1),_c('br'),_c('h3',[_vm._v(\"Items\")]),_c('div',{staticClass:\"tree-container-system-view\"},[(!_vm.isLoading)?_c('div',[(!!_vm.systemViewTree && _vm.systemViewTree.length > 0)?_c('div',[_c('tree-picker',{attrs:{\"isLoading\":_vm.isLoading,\"tree\":_vm.systemViewTree,\"healthFilters\":_vm.requestParams,\"data-cy\":\"system-view-tree-picker\"},on:{\"itemSelected\":_vm.onItemSelected,\"treeUpdated\":_vm.onTreeUpdated}})],1):_c('div',{attrs:{\"data-cy\":\"no-items\"}},[_vm._v(\" No items available. \")])]):_c('div',{staticClass:\"p-2 pl-4\"},[_c('i',{staticClass:\"fas fa-spinner fa-spin\",attrs:{\"data-cy\":\"system-view-loading-spinner\"}}),_c('span',{staticClass:\"pl-1\"},[_vm._v(\"Loading...\")])])]),(false)?_c('div',[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"add-item-btn\",\"disabled\":\"\"}},[_c('span',[_c('i',{staticClass:\"fa fa-plus\"}),_vm._v(\" Add item...\")])])],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.treeIsReady)?_c('vue-treeselect',{key:_vm.rerenderKey,ref:\"treeSelect\",attrs:{\"append-to-body\":false,\"options\":_vm.tree,\"searchable\":false,\"always-open\":true,\"multiple\":false,\"auto-load-root-options\":false,\"load-options\":_vm.loadOptions,\"show-count\":false,\"flat\":false,\"defaultExpandLevel\":2,\"no-children-text\":'No items found.',\"no-options-text\":_vm.isLoading ? 'Loading...' : 'No items available',\"no-results-text\":_vm.isLoading ? 'Loading...' : 'No results found',\"limit\":0,\"max-height\":500,\"zIndex\":1,\"cacheOptions\":true,\"data-cy\":\"tree-select\"},on:{\"select\":_vm.itemSelected},scopedSlots:_vm._u([{key:\"option-label\",fn:function(ref){\nvar node = ref.node;\nvar labelClassName = ref.labelClassName;\nreturn _c('label',{ref:node.id,class:labelClassName},[_c('i',{staticClass:\"tree-node fas\",class:_vm.getNodeIcon(node.raw)}),_vm._v(\" \"+_vm._s(node.label)+\" \"),(node.raw.lastInteractionHealthy === false)?_c('b-tooltip',{attrs:{\"target\":function () { return _vm.$refs[node.id]; },\"placement\":\"right\",\"boundary\":\"viewport\"}},[_vm._v(\" \"+_vm._s(node.raw.lastError)+\" \")]):_vm._e()],1)}}],null,false,2965800716)}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface ExternalMapLayerState {\r\n\texternalMapLayers: ExternalMapLayer[];\r\n\texternalMapLayerTypes: ExternalMapLayerType[];\r\n}\r\n\r\nexport interface ExternalMapLayer {\r\n\texternalMapLayerID?: number;\r\n\ttitle: string;\r\n\texternalMapLayerTypeID: ExternalMapLayerTypeID;\r\n\turl: string;\r\n\tdataObjectURL?: string;\r\n\tcustomClickHandler?: string;\r\n\tgroupID?: number;\r\n\tdefaultVisible: boolean;\r\n\tdisplaying?: boolean;\r\n\tcustomClickHandlerAttribute?: string;\r\n\tparameters?: ExternalMapLayerParameter[];\r\n\tusername?: string;\r\n\tpassword?: string;\r\n\ttokenServiceUrl?: string;\r\n\trefreshInterval?: number;\r\n}\r\n\r\nexport interface ExternalMapLayerUserLink {\r\n\tuserId: number;\r\n\texternalMapLayerID: number;\r\n\tdisplay: boolean;\r\n}\r\n\r\nexport interface ExternalMapLayerType {\r\n\texternalMapLayerTypeId: number;\r\n\ttitle: string;\r\n}\r\n\r\n// Class that handles converting ArcGis Fields\r\nexport class ExternalMapLayerParameter {\r\n\tconstructor(properties = null, externalMapLayerId: number) {\r\n\t\tif (properties) {\r\n\t\t\tthis.title = this.checkNameOrTitle(properties);\r\n\t\t\tthis.externalMapLayerId = externalMapLayerId;\r\n\t\t\tthis.defaultValue = this.setDefaultValue(properties);\r\n\t\t\tthis.type = properties.type;\r\n\t\t}\r\n\t}\r\n\r\n\texternalMapLayerParameterId: number = 0;\r\n\texternalMapLayerId: number = 0;\r\n\ttype: string = \"\";\r\n\ttitle: string = \"\";\r\n\tdefaultValue: string = \"\";\r\n\tisVisible: boolean = true;\r\n\r\n\t// Check the properties object for the appropriate field to assign to title\r\n\tprivate checkNameOrTitle(properties: any): string {\r\n\t\tif (properties.hasOwnProperty(\"name\")) {\r\n\t\t\treturn properties.name;\r\n\t\t} else if (properties.hasOwnProperty(\"alias\")) {\r\n\t\t\treturn properties.alias;\r\n\t\t} else return \"\";\r\n\t}\r\n\r\n\t// Sets an appropriate default value\r\n\tprivate setDefaultValue(properties: any): string {\r\n\t\tif (properties.type.includes(\"integer\" || \"double\")) {\r\n\t\t\treturn \"0\";\r\n\t\t} else if (properties.type.includes(\"float\")) {\r\n\t\t\treturn \"0.0\";\r\n\t\t} else return \"\";\r\n\t}\r\n}\r\n\r\nexport const enum ExternalMapLayerTypeID {\r\n\tKML = 1,\r\n\tGeoJSON = 2,\r\n\tArcGIS = 3,\r\n\tImageMap = 4,\r\n\tFirstTwo = 5,\r\n}\r\n","\n\timport { Component, Emit, Prop, Vue, Watch } from \"vue-property-decorator\";\n\timport VueTreeselect from \"@riophae/vue-treeselect\";\n\timport SystemViewTreeNode from \"@/types/sv-data/system-view/SystemViewTreeNode\";\n\timport ObjectTypeId from \"@/types/sv-data/enums/ObjectTypeIds\";\n\timport api from \"@/services/api.service\";\n\timport { BTooltip } from \"bootstrap-vue\";\n import SystemViewRequestTreeParams from \"@/types/sv-data/system-view/SystemViewRequestTreeParams\";\n\n\t@Component({\n\t\tcomponents: {\n\t\t\tVueTreeselect,\n\t\t\tBTooltip\n\t\t}\n\t})\n\texport default class TreePicker extends Vue {\n\t\t$refs!: {\n\t\t\ttreeSelect: any\n\t\t};\n\n\t\t@Prop({required: false, default: false}) isLoading: boolean;\n\t\t@Prop({required: true}) tree: SystemViewTreeNode[];\n\t\t@Prop({required: true}) healthFilters: SystemViewRequestTreeParams\n\n\t\tpublic loadMoreLabel: string = \"Load more...\";\n\n\t\t// This is required due to VueTreeselect not re-rendering correctly\n\t\t// See https://github.com/riophae/vue-treeselect/issues/483\n\t\tprivate rerenderKey: number = 0;\n\n\t\tprivate get treeIsReady(): boolean {\n\t\t\treturn !!this.tree &&\n\t\t\t\tthis.tree.length > 0 &&\n\t\t\t\t!!this.tree[0].id;\n\t\t}\n\n\t\t@Watch(\"tree\")\n\t\tprivate onTreeChanged(): void {\n\t\t\tthis.rerenderKey++;\n\t\t}\n\n\t\tprivate async loadOptions({ action, parentNode, callback, searchQuery }) {\n\t\t\tthis.updateNodeWithMoreOptions(parentNode);\n\t\t\tcallback();\n\t\t}\n\n\t\tprivate async updateNodeWithMoreOptions(parentNode: SystemViewTreeNode): Promise {\n\t\t\tvar totalDevices = 0;\n\t\t\tvar totalResponses = 0;\n\n\t\t\t// Remove the load more node if it exists\n\t\t\tif (!!parentNode.children && parentNode.children.length > 0 &&\n\t\t\t\tparentNode.children[parentNode.children.length -1].label === this.loadMoreLabel) {\n\t\t\t\tparentNode.children.pop();\n\t\t\t}\n\n\t\t\tif (!!parentNode && !!parentNode.children && parentNode.children.length > 0) {\n\t\t\t\t// We need to get the total number of responses in the child collection\n\t\t\t\ttotalResponses = parentNode.children.filter((node) => node.objectTypeId === ObjectTypeId.Alarm).length;\n\n\t\t\t\t// Using the totalResponses we can now get the total devices\n\t\t\t\ttotalDevices = parentNode.children.length - totalResponses;\n\t\t\t}\n\n\t\t\tlet updatedParent = await api.getSystemViewSetupEntities(parentNode.objectTypeId, parentNode.objectId, totalDevices, totalResponses, this.healthFilters);\n\n\t\t\tupdatedParent.children.forEach(node => {\n\t\t\t\tnode.label = node.title;\n\t\t\t\tnode.id = `${node.objectTypeId}-${node.objectId}-${node.title}`;\n\t\t\t\tnode.children = undefined;\n\t\t\t});\n\n\t\t\tif (!!parentNode.children && parentNode.children.length > 0) {\n\t\t\t\tparentNode.children.push(...updatedParent.children);\n\t\t\t} else {\n\t\t\t\tparentNode.children = updatedParent.children;\n\t\t\t}\n\t\t\tparentNode.totalChildItems = updatedParent.totalChildItems;\n\n\t\t\tif (parentNode.children.length < parentNode.totalChildItems) {\n\t\t\t\t// This is a placeholder node to trigger an add more children if the parentNode has more\n\t\t\t\tvar loadMoreNode: SystemViewTreeNode = {\n\t\t\t\t\ttitle: this.loadMoreLabel,\n\t\t\t\t\tlabel: this.loadMoreLabel,\n\t\t\t\t\tid: `${parentNode.objectTypeId}-${parentNode.objectId}-${this.loadMoreLabel}`,\n\t\t\t\t\tobjectId: parentNode.objectId,\n\t\t\t\t\tobjectTypeId: parentNode.objectTypeId,\n\t\t\t\t\tisExpandable: false,\n\t\t\t\t\tshouldDisplayData: true,\n\t\t\t\t\tchildren: undefined,\n\t\t\t\t\ttotalChildItems: 0,\n\t\t\t\t};\n\n\t\t\t\tparentNode.children.push(loadMoreNode);\n\t\t\t}\n\n\t\t\tthis.onTreeUpdated();\n\t\t}\n\n\t\tprivate getNodeIcon(node: SystemViewTreeNode): string {\n\n\t\t\tvar css = \"\";\n\n\t\t\tif(node.title === this.loadMoreLabel) {\n\t\t\t\treturn css;\n\t\t\t}\n\n\t\t\tswitch(node.objectTypeId) {\n\t\t\t\tcase ObjectTypeId.Server:\n\t\t\t\t\tcss += \"fa-server\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ObjectTypeId.GroupSync:\n\t\t\t\t\tcss += \"fa-sync\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ObjectTypeId.Alarm:\n\t\t\t\t\tcss += \"fa-bell\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ObjectTypeId.Camera:\n\t\t\t\t\tcss += \"fa-cctv\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ObjectTypeId.Door:\n\t\t\t\t\tcss += \"fa-door-open\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ObjectTypeId.Audio:\n\t\t\t\t\tcss += \"fa-volume\";\n\t\t\t\t\tbreak;\n\t\t\t\tcase ObjectTypeId.Relay:\n\t\t\t\t\tcss += \"fa-sign-out\";\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tcss += \"fa-circle\";\n\t\t\t}\n\n\t\t\tif(node.lastInteractionHealthy === true)\n\t\t\t{\n\t\t\t\tcss += \" healthy-item\";\n\t\t\t}\n\t\t\telse if(node.lastInteractionHealthy === false)\n\t\t\t{\n\t\t\t\tcss += \" unhealthy-item\";\n\t\t\t}\n\n\t\t\treturn css;\n\t\t}\n\n\t\tprivate async itemSelected(node: SystemViewTreeNode): Promise {\n\t\t\t// Vue-TreeSelect only triggers loadOptions once so we need to manually trigger\n\t\t\t// a load when the LoadMore item is selected.\n\t\t\tif (node.label === this.loadMoreLabel) {\n\t\t\t\tthis.loadMoreOptions(node);\n\n\t\t\t\t// We do not want the Load More button selected.\n\t\t\t\tthis.$refs.treeSelect.clear();\n\t\t\t} else {\n\t\t\t\tthis.emitItemSelected(node);\n\t\t\t}\n\t\t}\n\n\t\tprivate async loadMoreOptions(node: SystemViewTreeNode): Promise {\n\t\t\t// Due to this update being a special case (Vue-TreeSelect only triggers loadOptions once)\n\t\t\t// We need to find the parent node (GroupSync node) for the devices to load them manually\n\t\t\tthis.tree.forEach(applianceNode => {\n\t\t\t\tif (!!applianceNode.children && applianceNode.children.length > 0) {\n\t\t\t\t\tapplianceNode.children.forEach(serverNode => {\n\t\t\t\t\t\tif (!!serverNode.children && serverNode.children.length > 0) {\n\t\t\t\t\t\t\tserverNode.children.forEach(groupSyncNode => {\n\t\t\t\t\t\t\t\tif (groupSyncNode.objectId === node.objectId && groupSyncNode.objectTypeId === node.objectTypeId) {\n\t\t\t\t\t\t\t\t\t// Now update the node with more children.\n\t\t\t\t\t\t\t\t\tthis.updateNodeWithMoreOptions(groupSyncNode);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t@Emit(\"itemSelected\")\n\t\tprivate emitItemSelected(node: SystemViewTreeNode): SystemViewTreeNode {\n\t\t\tif (node.shouldDisplayData) {\n\t\t\t\treturn node;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t}\n\n\t\t@Emit(\"treeUpdated\")\n\t\tprivate onTreeUpdated(): SystemViewTreeNode[] {\n\t\t\treturn this.tree;\n\t\t}\n\t}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TreePicker.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TreePicker.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TreePicker.vue?vue&type=template&id=67bee432&scoped=true\"\nimport script from \"./TreePicker.vue?vue&type=script&lang=ts\"\nexport * from \"./TreePicker.vue?vue&type=script&lang=ts\"\nimport style0 from \"./TreePicker.vue?vue&type=style&index=0&id=67bee432&prod&lang=css&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 \"67bee432\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isAdvancedFilteringEnabled)?_c('div',[_c('b-dropdown',{staticClass:\"d-inline-block filter-dropdown\",on:{\"show\":function($event){_vm.dropdownShown = true},\"hide\":function($event){_vm.dropdownShown = false}},scopedSlots:_vm._u([{key:\"button-content\",fn:function(){return [_c('span',[_vm._v(_vm._s(_vm.activeFilterName)+\" \"),_c('i',{staticClass:\"float-right pt-1 pl-2\",class:[ !_vm.dropdownShown ? 'fa fa-caret-down' : 'fa fa-caret-up' ],attrs:{\"aria-hidden\":\"true\"}})])]},proxy:true}],null,false,2616968634)},[_c('b-dropdown-form',[_c('b-input-group',{staticClass:\"p-0 align-items-center\"},[_c('b-input-group-text',{staticClass:\"p-0\"},[_c('i',{staticClass:\"fa fa-search\"})]),_c('b-input',{attrs:{\"aria-label\":\"Search\",\"placeholder\":\"Search\",\"data-cy\":\"search-dropdown-input-search\"},model:{value:(_vm.searchTerm),callback:function ($$v) {_vm.searchTerm=$$v},expression:\"searchTerm\"}})],1)],1),_c('VuePerfectScrollbar',{staticClass:\"filters-list\"},[_c('div',{staticClass:\"list-group\",attrs:{\"data-cy\":\"available-filters-list\"}},_vm._l((_vm.advancedStatusFilters),function(filter){return _c('b-dropdown-item-button',{key:filter.advancedStatusFilterId,staticClass:\"list-group-item list-group-item-action no-uppercase\",on:{\"click\":function($event){$event.preventDefault();return _vm.changeActiveFilter(filter)}}},[_c('span',{staticClass:\"flex-grow filter-title pr-4\"},[_vm._v(_vm._s(filter.name))]),_c('div',{staticClass:\"row-buttons\"},[(_vm.canModifyFilter(filter))?_c('i',{staticClass:\"fas fa-edit pt-1 mr-1\",attrs:{\"title\":\"Edit Filter\",\"data-cy\":\"edit-filter-btn\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.editFilter(filter)}}}):_vm._e(),(_vm.canModifyFilter(filter))?_c('i',{staticClass:\"fas fa-trash hover-icon pt-1\",attrs:{\"title\":\"Delete Filter\",\"data-cy\":\"show-delete-filter-popup\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.confirmDeleteFilter(filter)}}}):_vm._e()])])}),1)]),(_vm.hasEditFilterPermission)?_c('b-dropdown-item-button',{staticClass:\"list-group-item list-group-item-action add-new-item-row\",attrs:{\"data-cy\":\"create-filter-btn\"},on:{\"click\":_vm.createFilter}},[_c('i',{staticClass:\"fas fa-plus-circle p-r-5\"}),_c('span',[_vm._v(\"Create New Filter\")])]):_vm._e(),_c('b-dropdown-item-button',{staticClass:\"list-group-item list-group-item-action add-new-item-row\",attrs:{\"data-cy\":\"clear-filter-btn\"},on:{\"click\":_vm.clearActiveFilter}},[_c('i',{staticClass:\"fas fa-minus-circle p-r-5\"}),_c('span',[_vm._v(\"Clear Filter\")])])],1),_c('system-view-advanced-filter-edit',{attrs:{\"shown\":_vm.createFilterModalShow,\"filter\":_vm.editingFilter,\"all-available-filters\":_vm.advancedStatusFilters},on:{\"submit\":_vm.finishEditFilter,\"cancel\":_vm.cancelEditFilter}}),_c('b-modal',{attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"header-class\":\"delete-confirm-modal\"},model:{value:(_vm.confirmDeleteModalShow),callback:function ($$v) {_vm.confirmDeleteModalShow=$$v},expression:\"confirmDeleteModalShow\"}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header d-flex align-items-center\"},[_c('i',{staticClass:\"fas fa-trash hover-icon pr-2\",attrs:{\"title\":\"Delete Advanced Filter Icon\"}}),_c('h4',[_vm._v(\"Delete Advanced Filter\")])])]),_c('div',{attrs:{\"data-cy\":\"delete-filter-popup\"}},[_c('h5',{staticClass:\"confirmation-text default-error-message\"},[_vm._v(\" Are you sure you want to delete the advanced filter \\\"\"+_vm._s((_vm.filterToDelete !== null ? _vm.filterToDelete.name : \"\"))+\"\\\"? \")])]),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-danger ksConfirm\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"delete-filter-btn\"},on:{\"click\":function($event){return _vm.deleteFilter(_vm.filterToDelete)}}},[_c('span',[_vm._v(\"Delete\")])]),_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"data-dismiss\":\"modal\"},on:{\"click\":function($event){_vm.confirmDeleteModalShow = false}}},[_c('span',[_vm._v(\"Cancel\")])])])],2)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { AxiosInstance } from \"axios\";\r\nimport { axiosInstance, axiosJsonInstance } from \"@/axios.instance\";\r\nimport { AdvancedStatusFilter, AdvancedStatusFilterRequest } from \"@/types/sv-data/system-view/advanced-filters/AdvancedStatusFilter\";\r\n\r\nclass SystemViewAdvancedFiltersApi {\r\n\tprivate axios: AxiosInstance;\r\n\tprivate axiosJson: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.axios = axiosInstance;\r\n\t\tthis.axiosJson = axiosJsonInstance;\r\n\t}\r\n\r\n\tpublic async getAdvancedStatusFilters(request: AdvancedStatusFilterRequest): Promise {\r\n\t\tlet query = `/AdvancedStatusFilters?` +\r\n\t\t\t`searchTerm=${request.searchTerm}`;\r\n\r\n\t\tconst { data } = await this.axiosJson.get(query);\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createAdvancedStatusFilter(advancedFilter: AdvancedStatusFilter): Promise {\r\n\t\treturn await this.axiosJson.post(\"/AdvancedStatusFilters\", advancedFilter);\r\n\t}\r\n\r\n\tpublic async updateAdvancedStatusFilter(advancedFilter: AdvancedStatusFilter): Promise {\r\n\t\treturn await this.axiosJson.put(\"/AdvancedStatusFilters\", advancedFilter);\r\n\t}\r\n\r\n\tpublic async deleteAdvancedStatusFilter(advancedStatusFilterId: number): Promise {\r\n\t\tawait this.axios.delete(`/AdvancedStatusFilters/${advancedStatusFilterId}`)\r\n\t}\r\n}\r\n\r\nconst systemViewAdvancedFiltersApi = new SystemViewAdvancedFiltersApi();\r\nexport default systemViewAdvancedFiltersApi;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.newFilter != null)?_c('b-modal',{ref:\"modal\",attrs:{\"data-cy\":\"advanced-filter-form\",\"id\":\"modal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\"},on:{\"hidden\":_vm.onCancel},model:{value:(_vm.shown),callback:function ($$v) {_vm.shown=$$v},expression:\"shown\"}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',[_vm._v(_vm._s(this.filter ? \"Update Advanced Filter\" : \"Create Advanced Filter\"))])])]),_c('b-card',{staticClass:\"new-filter-form\"},[_c('b-form',{on:{\"submit\":_vm.onSubmit}},[_c('VuePerfectScrollbar',{staticClass:\"rules-list\"},[_c('label',[_vm._v(\"Filter Name: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('div',{staticClass:\"form-group d-flex flex-column new-filter-form\",attrs:{\"id\":\"newFilterForm\"}},[_c('p',{staticClass:\"d-flex\"},[_c('b-form-input',{class:[{ invalid: _vm.$v.newFilter.name.$error, 'error-animated': _vm.showErrorAnimation }],attrs:{\"id\":\"newFilterTitle\",\"placeholder\":\"New Advanced Filter\",\"data-cy\":\"filter-title\",\"maxlength\":\"250\"},model:{value:(_vm.$v.newFilter.name.$model),callback:function ($$v) {_vm.$set(_vm.$v.newFilter.name, \"$model\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"$v.newFilter.name.$model\"}}),_c('b-form-checkbox',{staticClass:\"shared-check\",model:{value:(_vm.newFilter.shared),callback:function ($$v) {_vm.$set(_vm.newFilter, \"shared\", $$v)},expression:\"newFilter.shared\"}},[_vm._v(\" Shared \")])],1),(_vm.$v.newFilter.name.$error && !_vm.$v.newFilter.name.validateDuplicate)?_c('sub',{staticClass:\"small text-danger mb-3\"},[_vm._v(\" A filter with the title \"+_vm._s(_vm.newFilter.name)+\" already exists, please choose another \")]):_vm._e(),_c('label',[_vm._v(\"Areas: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('area-tree-select',{staticClass:\"mb-3\",attrs:{\"value\":_vm.areaList,\"append-to-body\":true,\"multiple\":\"\"},on:{\"input\":_vm.areaSelected}}),(_vm.emptyAreaAfterInput)?_c('sub',{staticClass:\"small text-danger mb-3\"},[_vm._v(\" At least one area must be selected \")]):_vm._e(),_c('div',{staticClass:\"pt-2\"},[_c('table',{staticClass:\"w-100\"},[_c('device-name-advanced-filter',{attrs:{\"value\":_vm.getDeviceNameRule},on:{\"input\":_vm.updateFilterRule}}),_c('device-type-advanced-filter',{attrs:{\"value\":_vm.getDeviceTypeRule},on:{\"input\":_vm.updateFilterRule}}),_c('last-time-alarm-advanced-filter',{attrs:{\"value\":_vm.getLastTimeAlarmRule,\"device-type-rule\":_vm.getDeviceTypeRule},on:{\"input\":_vm.updateFilterRule}}),_c('period-alarm-count-advanced-filter',{attrs:{\"value\":_vm.getPeriodAlarmCountRule,\"device-type-rule\":_vm.getDeviceTypeRule},on:{\"input\":_vm.updateFilterRule}})],1)]),_c('label',{staticClass:\"pt-2\"},[_vm._v(\"Options:\")]),_c('b-form-checkbox',{staticClass:\"mr-2 pt-3\",model:{value:(_vm.newFilter.combineFilters),callback:function ($$v) {_vm.$set(_vm.newFilter, \"combineFilters\", $$v)},expression:\"newFilter.combineFilters\"}},[_vm._v(\" All enabled filter rules must be satisfied \")])],1)])],1)],1),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"pull-right ksConfirm\",attrs:{\"variant\":\"primary\",\"data-cy\":\"submit-advanced-filter\",\"data-dismiss\":\"modal\",\"disabled\":_vm.disableSubmit},on:{\"click\":_vm.onSubmit}},[_c('span',[_vm._v(_vm._s(_vm.submitButtonTitle))]),(_vm.isLoading)?_c('i',{staticClass:\"fas fa-spinner fa-spin ml-1\"}):_vm._e()]),_c('b-button',{staticClass:\"pull-right\",attrs:{\"variant\":\"secondary\",\"data-cy\":\"cancel-advanced-filter-creation\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.onCancel}},[_c('span',[_vm._v(\"Close\")])])],1)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"d-flex align-middle pt-1\"},[_c('td',[_c('b-form-checkbox',{staticClass:\"mr-2\",model:{value:(_vm.ruleSettings.enabled),callback:function ($$v) {_vm.$set(_vm.ruleSettings, \"enabled\", $$v)},expression:\"ruleSettings.enabled\"}})],1),_c('td',{staticClass:\"form-label\"},[_vm._v(\" Device Name Contains \")]),_c('td',{staticClass:\"w-100\"},[_c('b-form-input',{staticClass:\"pl-2\",attrs:{\"disabled\":!_vm.ruleSettings.enabled,\"id\":\"deviceNameFilter\",\"placeholder\":\"Device Name\"},model:{value:(_vm.ruleSettings.deviceName),callback:function ($$v) {_vm.$set(_vm.ruleSettings, \"deviceName\", $$v)},expression:\"ruleSettings.deviceName\"}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport { DeviceNameAdvancedFilterRule } from \"@/types/sv-data/system-view/advanced-filters/AdvancedStatusFilterRules\";\r\n\r\n@Component({})\r\nexport default class DeviceNameAdvancedFilter extends Vue {\r\n\t@Prop(Object) value: DeviceNameAdvancedFilterRule;\r\n\r\n\tpublic static readonly RuleIdentifier: string = \"DeviceName\";\r\n\r\n\tprivate ruleSettings: DeviceNameAdvancedFilterRule = {\r\n\t\tfilterRuleType: DeviceNameAdvancedFilter.RuleIdentifier,\r\n\t\tdeviceName: \"\",\r\n\t\tenabled: false\r\n\t};\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tif(this.value !== null) {\r\n\t\t\tthis.ruleSettings = this.value;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"ruleSettings\", { deep: true })\r\n\tprivate async ruleUpdated(): Promise {\r\n\t\tthis.$emit(\"input\", this.ruleSettings);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceNameAdvancedFilter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceNameAdvancedFilter.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeviceNameAdvancedFilter.vue?vue&type=template&id=3d440b14&scoped=true\"\nimport script from \"./DeviceNameAdvancedFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./DeviceNameAdvancedFilter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeviceNameAdvancedFilter.vue?vue&type=style&index=0&id=3d440b14&prod&scoped=true&lang=scss\"\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 \"3d440b14\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"d-flex align-middle pt-1\"},[_c('td',[_c('b-form-checkbox',{staticClass:\"mr-2\",model:{value:(_vm.ruleSettings.enabled),callback:function ($$v) {_vm.$set(_vm.ruleSettings, \"enabled\", $$v)},expression:\"ruleSettings.enabled\"}})],1),_c('td',{staticClass:\"form-label\"},[_vm._v(\" Device Type \")]),_c('td',{staticClass:\"w-100\"},[_c('v-select-3',{staticClass:\"w-100\",attrs:{\"disabled\":!_vm.ruleSettings.enabled,\"options\":_vm.options,\"reduce\":function (dt) { return dt.value; },\"clearable\":false,\"id\":\"deviceTypeFilter\",\"label\":\"title\",\"placeholder\":\"Device Type\",\"appendToBody\":\"\"},model:{value:(_vm.ruleSettings.deviceType),callback:function ($$v) {_vm.$set(_vm.ruleSettings, \"deviceType\", $$v)},expression:\"ruleSettings.deviceType\"}})],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport vSelect3 from \"vselect3\";\r\nimport { DeviceTypeAdvancedFilterRule } from \"@/types/sv-data/system-view/advanced-filters/AdvancedStatusFilterRules\";\r\n\r\ninterface DeviceTypeOption {\r\n\ttitle: string,\r\n\tvalue: number\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vSelect3\r\n\t}\r\n})\r\nexport default class DeviceTypeAdvancedFilter extends Vue {\r\n\t@Prop(Object) value: DeviceTypeAdvancedFilterRule;\r\n\r\n\tpublic static readonly RuleIdentifier: string = \"DeviceType\";\r\n\r\n\tprivate options: DeviceTypeOption[] = [\r\n\t\t{ title: \"Alarms\", value: -1 },\r\n\t\t{ title: \"Camera\", value: 1 },\r\n\t\t{ title: \"Audio\", value: 2 },\r\n\t\t{ title: \"Relay\", value: 3 },\r\n\t\t{ title: \"Split Camera\", value: 4 }\r\n\t];\r\n\r\n\tprivate ruleSettings: DeviceTypeAdvancedFilterRule = {\r\n\t\tfilterRuleType: DeviceTypeAdvancedFilter.RuleIdentifier,\r\n\t\tdeviceType: -1,\r\n\t\tenabled: false\r\n\t};\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tif(this.value !== null) {\r\n\t\t\tthis.ruleSettings = this.value;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"ruleSettings\", { deep: true })\r\n\tprivate async ruleUpdated(): Promise {\r\n\t\tthis.$emit(\"input\", this.ruleSettings);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceTypeAdvancedFilter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceTypeAdvancedFilter.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeviceTypeAdvancedFilter.vue?vue&type=template&id=4e36e25c&scoped=true\"\nimport script from \"./DeviceTypeAdvancedFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./DeviceTypeAdvancedFilter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeviceTypeAdvancedFilter.vue?vue&type=style&index=0&id=4e36e25c&prod&scoped=true&lang=scss\"\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 \"4e36e25c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isRuleApplicable)?_c('tr',{staticClass:\"d-flex align-middle pt-1\"},[_c('td',[_c('b-form-checkbox',{staticClass:\"mr-2\",model:{value:(_vm.ruleSettings.enabled),callback:function ($$v) {_vm.$set(_vm.ruleSettings, \"enabled\", $$v)},expression:\"ruleSettings.enabled\"}})],1),_c('td',{staticClass:\"form-label\"},[_vm._v(\" Last Alarm Triggered \")]),_c('td',{staticClass:\"form-label w-25\"},[_c('v-select-3',{staticClass:\"w-100\",attrs:{\"disabled\":!_vm.ruleSettings.enabled,\"reduce\":function (option) { return option.value; },\"options\":_vm.comparisonOptions,\"clearable\":false,\"label\":\"title\",\"placeholder\":\"Before/After\",\"appendToBody\":\"\"},model:{value:(_vm.ruleSettings.greaterThan),callback:function ($$v) {_vm.$set(_vm.ruleSettings, \"greaterThan\", $$v)},expression:\"ruleSettings.greaterThan\"}})],1),_c('td',{staticClass:\"w-50\"},[_c('b-form-input',{staticClass:\"pl-2\",attrs:{\"disabled\":!_vm.ruleSettings.enabled,\"id\":\"deviceAddedWithinFilter\",\"placeholder\":\"Period Hours\"},model:{value:(_vm.ruleSettings.period),callback:function ($$v) {_vm.$set(_vm.ruleSettings, \"period\", $$v)},expression:\"ruleSettings.period\"}})],1),_c('td',{staticClass:\"unit-label\"},[_vm._v(\" Hours \")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Watch, Prop } from \"vue-property-decorator\";\r\nimport vSelect3 from \"vselect3\";\r\nimport { LastTimeAlarmAdvancedFilterRule, DeviceTypeAdvancedFilterRule }\r\n\tfrom \"@/types/sv-data/system-view/advanced-filters/AdvancedStatusFilterRules\";\r\n\r\ninterface ComparisonOptions {\r\n\ttitle: string,\r\n\tvalue: boolean\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vSelect3\r\n\t}\r\n})\r\nexport default class LastTimeAlarmAdvancedFilter extends Vue {\r\n\t@Prop(Object) value: LastTimeAlarmAdvancedFilterRule;\r\n\t@Prop(Object) deviceTypeRule: DeviceTypeAdvancedFilterRule;\r\n\r\n\tpublic static readonly RuleIdentifier: string = \"LastTimeAlarm\";\r\n\r\n\tprivate readonly ApplicableDeviceType: number = -1;\r\n\r\n\tprivate isRuleApplicable: boolean = false;\r\n\r\n\tprivate comparisonOptions: ComparisonOptions[] = [\r\n\t\t{ title: `Later Than`, value: true },\r\n\t\t{ title: `Within`, value: false }\r\n\t];\r\n\r\n\tprivate ruleSettings: LastTimeAlarmAdvancedFilterRule = {\r\n\t\tfilterRuleType: LastTimeAlarmAdvancedFilter.RuleIdentifier,\r\n\t\tenabled: false,\r\n\t\tperiod: 0,\r\n\t\tgreaterThan: true\r\n\t};\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tif(this.value !== null) {\r\n\t\t\tthis.ruleSettings = this.value;\r\n\t\t}\r\n\t\tawait this.updateApplicability();\r\n\t}\r\n\r\n\t@Watch(\"deviceTypeRule\", { deep: true })\r\n\tprivate async updateApplicability(): Promise {\r\n\t\tif(this.deviceTypeRule !== null) {\r\n\t\t\tthis.isRuleApplicable = this.deviceTypeRule.deviceType == this.ApplicableDeviceType\r\n\t\t\t\t&& this.deviceTypeRule.enabled;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.isRuleApplicable = false;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"ruleSettings\", { deep: true })\r\n\tprivate async ruleUpdated(): Promise {\r\n\t\tthis.$emit(\"input\", this.ruleSettings);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LastTimeAlarmAdvancedFilter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LastTimeAlarmAdvancedFilter.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LastTimeAlarmAdvancedFilter.vue?vue&type=template&id=61799a53&scoped=true\"\nimport script from \"./LastTimeAlarmAdvancedFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./LastTimeAlarmAdvancedFilter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./LastTimeAlarmAdvancedFilter.vue?vue&type=style&index=0&id=61799a53&prod&scoped=true&lang=scss\"\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 \"61799a53\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isRuleApplicable)?_c('tr',{staticClass:\"d-flex align-middle pt-1\"},[_c('td',[_c('b-form-checkbox',{staticClass:\"mr-2\",model:{value:(_vm.ruleSettings.enabled),callback:function ($$v) {_vm.$set(_vm.ruleSettings, \"enabled\", $$v)},expression:\"ruleSettings.enabled\"}})],1),_c('td',{staticClass:\"form-label\"},[_vm._v(\" Alarm Triggered At Least \")]),_c('td',{staticClass:\"w-25\"},[_c('b-form-input',{staticClass:\"pl-2\",attrs:{\"disabled\":!_vm.ruleSettings.enabled,\"id\":\"deviceAddedWithinFilter\",\"placeholder\":\"Times Triggered\"},model:{value:(_vm.ruleSettings.count),callback:function ($$v) {_vm.$set(_vm.ruleSettings, \"count\", $$v)},expression:\"ruleSettings.count\"}})],1),_c('td',{staticClass:\"within-label\"},[_vm._v(\" Times Within \")]),_c('td',{staticClass:\"w-25\"},[_c('b-form-input',{staticClass:\"pl-2\",attrs:{\"disabled\":!_vm.ruleSettings.enabled,\"id\":\"deviceAddedWithinFilter\",\"placeholder\":\"Period Hours\"},model:{value:(_vm.ruleSettings.period),callback:function ($$v) {_vm.$set(_vm.ruleSettings, \"period\", $$v)},expression:\"ruleSettings.period\"}})],1),_c('td',{staticClass:\"unit-label\"},[_vm._v(\" Hours \")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport { PeriodAlarmCountAdvancedFilterRule, DeviceTypeAdvancedFilterRule }\r\n\tfrom \"@/types/sv-data/system-view/advanced-filters/AdvancedStatusFilterRules\";\r\n\r\n@Component({})\r\nexport default class PeriodAlarmCountAdvancedFilter extends Vue {\r\n\t@Prop(Object) value: PeriodAlarmCountAdvancedFilterRule;\r\n\t@Prop(Object) deviceTypeRule: DeviceTypeAdvancedFilterRule;\r\n\r\n\tpublic static readonly RuleIdentifier: string = \"PeriodAlarmCount\";\r\n\tprivate readonly ApplicableDeviceType: number = -1;\r\n\r\n\tprivate isRuleApplicable: boolean = false;\r\n\r\n\tprivate ruleSettings: PeriodAlarmCountAdvancedFilterRule = {\r\n\t\tfilterRuleType: PeriodAlarmCountAdvancedFilter.RuleIdentifier,\r\n\t\tperiod: 0,\r\n\t\tcount: 0,\r\n\t\tenabled: false\r\n\t};\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tif(this.value !== null) {\r\n\t\t\tthis.ruleSettings = this.value;\r\n\t\t\tif(this.deviceTypeRule !== null) {\r\n\t\t\t\tthis.isRuleApplicable = this.deviceTypeRule.deviceType == this.ApplicableDeviceType;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.isRuleApplicable = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"deviceTypeRule\", { deep: true })\r\n\tprivate async updateApplicability(): Promise {\r\n\t\tif(this.deviceTypeRule !== null) {\r\n\t\t\tthis.isRuleApplicable = this.deviceTypeRule.deviceType == this.ApplicableDeviceType\r\n\t\t\t\t&& this.deviceTypeRule.enabled;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.isRuleApplicable = false;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"ruleSettings\", { deep: true })\r\n\tprivate async ruleUpdated(): Promise {\r\n\t\tthis.$emit(\"input\", this.ruleSettings);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeriodAlarmCountAdvancedFilter.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PeriodAlarmCountAdvancedFilter.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PeriodAlarmCountAdvancedFilter.vue?vue&type=template&id=5fd30a73&scoped=true\"\nimport script from \"./PeriodAlarmCountAdvancedFilter.vue?vue&type=script&lang=ts\"\nexport * from \"./PeriodAlarmCountAdvancedFilter.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PeriodAlarmCountAdvancedFilter.vue?vue&type=style&index=0&id=5fd30a73&prod&scoped=true&lang=scss\"\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 \"5fd30a73\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Vue, Component, Emit, Prop, Watch } from \"vue-property-decorator\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport vSelect from \"vue-select\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport {AdvancedStatusFilter} from \"@/types/sv-data/system-view/advanced-filters/AdvancedStatusFilter\";\r\nimport { maxLength, minLength, required } from \"vuelidate/lib/validators\";\r\nimport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\r\nimport ApiSystemViewAdvancedFiltersService from \"@/services/api.systemViewAdvancedFilters.service\";\r\nimport { get } from \"lodash\";\r\nimport DeviceNameAdvancedFilter from \"@/components/system-view/advanced-filters/DeviceNameAdvancedFilter.vue\";\r\nimport DeviceTypeAdvancedFilter from \"@/components/system-view/advanced-filters/DeviceTypeAdvancedFilter.vue\";\r\nimport LastTimeAlarmAdvancedFilter from \"@/components/system-view/advanced-filters/LastTimeAlarmAdvancedFilter.vue\";\r\nimport PeriodAlarmCountAdvancedFilter\r\n\tfrom \"@/components/system-view/advanced-filters/PeriodAlarmCountAdvancedFilter.vue\";\r\nimport { AdvancedStatusFilterRuleBase,\r\n\tDeviceNameAdvancedFilterRule,\r\n\tDeviceTypeAdvancedFilterRule,\r\n\tLastTimeAlarmAdvancedFilterRule,\r\n\tPeriodAlarmCountAdvancedFilterRule }\r\n\tfrom \"@/types/sv-data/system-view/advanced-filters/AdvancedStatusFilterRules\";\r\n\r\nconst removeWhiteSpace = (value: string) => {\r\n\treturn value.toLowerCase().replace(/\\s/g, \"\");\r\n};\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tvalidations() {\r\n\t\treturn {\r\n\t\t\tnewFilter: {\r\n\t\t\t\tname: {\r\n\t\t\t\t\trequired,\r\n\t\t\t\t\tminLength: minLength(1),\r\n\t\t\t\t\tmaxLength: maxLength(250),\r\n\t\t\t\t\tvalidateDuplicate: formTitle => {\r\n\t\t\t\t\t\tconst title: undefined | string = get(this.newFilter, \"name\");\r\n\t\t\t\t\t\tif(this.filter?.name == title) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn (this.allAvailableFilters\r\n\t\t\t\t\t\t\t.every(({ name }) => name !== formTitle));\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\tcomponents: {\r\n\t\tPeriodAlarmCountAdvancedFilter,\r\n\t\tLastTimeAlarmAdvancedFilter,\r\n\t\tDeviceTypeAdvancedFilter,\r\n\t\tDeviceNameAdvancedFilter,\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\tVuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class SystemViewAdvancedFilterEdit extends Vue {\r\n\t@Prop(Boolean) shown: boolean;\r\n\t@Prop(Object) filter: AdvancedStatusFilter;\r\n\t@Prop({ type: Array, default: () => [] }) allAvailableFilters: AdvancedStatusFilter[];\r\n\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@Getter(\"getUserId\") private userId: number;\r\n\r\n\tprivate isLoading: boolean = false;\r\n\tprivate areaList: AreaNode[] = [];\r\n\tprivate showErrorAnimation: boolean = false;\r\n\tprivate newFilter: AdvancedStatusFilter = null;\r\n\tprivate rulesCollection: any[] = [];\r\n\tprivate emptyAreaAfterInput: boolean = false;\r\n\r\n\tpublic async onSubmit(): Promise {\r\n\t\tif (this.isLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.newFilter.areas = this.areaList;\r\n\t\tthis.newFilter.rules = JSON.stringify(this.rulesCollection);\r\n\r\n\t\ttry {\r\n\t\t\tlet result;\r\n\t\t\tif (this.newFilter.advancedStatusFilterId !== null) {\r\n\t\t\t\t// Update\r\n\t\t\t\tresult = await ApiSystemViewAdvancedFiltersService.updateAdvancedStatusFilter(this.newFilter);\r\n\t\t\t} else {\r\n\t\t\t\t// Create\r\n\t\t\t\tresult = await ApiSystemViewAdvancedFiltersService.createAdvancedStatusFilter(this.newFilter);\r\n\t\t\t}\r\n\t\t\tif(result != null) {\r\n\t\t\t\tthis.$emit(\"submit\");\r\n\t\t\t\tawait this.resetNewFilter();\r\n\t\t\t}\r\n\t\t} catch (exception) {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Error\",\r\n\t\t\t\ttext: exception.message\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t@Emit(\"cancel\")\r\n\tpublic onCancel() {\r\n\t\treturn;\r\n\t}\r\n\r\n\t@Watch(\"shown\")\r\n\tprivate async onShow(): Promise {\r\n\t\tif (!this.shown) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.emptyAreaAfterInput = false;\r\n\r\n\t\tif (this.filter !== null) {\r\n\t\t\ttry {\r\n\t\t\t\tthis.newFilter = Object.assign({}, this.filter);\r\n\t\t\t\tthis.rulesCollection = JSON.parse(this.filter.rules);\r\n\t\t\t\tthis.areaList = [];\r\n\t\t\t\tthis.filter.areas.forEach((value) => {\r\n\t\t\t\t\tthis.areaList.push({\r\n\t\t\t\t\t\tid: value.id,\r\n\t\t\t\t\t\tlabel: value.label\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tcatch(exception) {\r\n\r\n\t\t\t\tthis.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Error\",\r\n\t\t\t\t\ttext: \"Failed to get advanced filter information\"\r\n\t\t\t\t});\r\n\t\t\t\tconsole.error(exception.message);\r\n\r\n\t\t\t\tawait this.resetNewFilter();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tawait this.resetNewFilter();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tthis.$v.$reset();\r\n\t\tawait this.resetNewFilter();\r\n\t}\r\n\r\n\tprivate areaSelected(selectedArea: AreaNode): void {\r\n\t\tif (!selectedArea) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet groupIndex = this.areaList.findIndex((area: any) => area.id == selectedArea.id);\r\n\r\n\t\tif (groupIndex < 0 || groupIndex === null || groupIndex === undefined) {\r\n\t\t\tthis.areaList.push({\r\n\t\t\t\tid: selectedArea.id,\r\n\t\t\t\tlabel: selectedArea.label\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.areaList.splice(groupIndex, 1);\r\n\t\t}\r\n\t\tthis.emptyAreaAfterInput = this.areaList.length == 0;\r\n\t}\r\n\r\n\tprivate async resetNewFilter(): Promise {\r\n\t\tthis.newFilter = {\r\n\t\t\tadvancedStatusFilterId: null,\r\n\t\t\tname: \"\",\r\n\t\t\tuserId: this.userId,\r\n\t\t\tareas: [],\r\n\t\t\tshared: false,\r\n\t\t\tcombineFilters: false,\r\n\t\t\trules: \"\"\r\n\t\t};\r\n\t\tthis.areaList = [];\r\n\t\tthis.rulesCollection = [];\r\n\t}\r\n\r\n\tprivate get getDeviceNameRule(): DeviceNameAdvancedFilterRule {\r\n\t\tlet rule = this.rulesCollection.filter(rules => rules.filterRuleType == DeviceNameAdvancedFilter.RuleIdentifier);\r\n\t\tif(rule !== null && rule.length > 0) {\r\n\t\t\treturn rule[0] as DeviceNameAdvancedFilterRule;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate get getDeviceTypeRule(): DeviceTypeAdvancedFilterRule {\r\n\t\tlet rule = this.rulesCollection.filter(rules => rules.filterRuleType == DeviceTypeAdvancedFilter.RuleIdentifier);\r\n\t\tif(rule !== null && rule.length > 0) {\r\n\t\t\treturn rule[0] as DeviceTypeAdvancedFilterRule;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate get getLastTimeAlarmRule(): LastTimeAlarmAdvancedFilterRule {\r\n\t\tlet rule = this.rulesCollection.filter(rules => rules.filterRuleType == LastTimeAlarmAdvancedFilter.RuleIdentifier);\r\n\t\tif(rule !== null && rule.length > 0) {\r\n\t\t\treturn rule[0] as LastTimeAlarmAdvancedFilterRule;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate get getPeriodAlarmCountRule(): PeriodAlarmCountAdvancedFilterRule {\r\n\t\tlet rule = this.rulesCollection.filter(rules => rules.filterRuleType == PeriodAlarmCountAdvancedFilter.RuleIdentifier);\r\n\t\tif(rule !== null && rule.length > 0) {\r\n\t\t\treturn rule[0] as PeriodAlarmCountAdvancedFilterRule;\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate async updateFilterRule(filterRule: AdvancedStatusFilterRuleBase): Promise {\r\n\t\tlet existing = this.rulesCollection.findIndex((rule: AdvancedStatusFilterRuleBase) => rule.filterRuleType == filterRule.filterRuleType);\r\n\t\tif(existing !== -1) {\r\n\t\t\tthis.rulesCollection.splice(existing, 1);\r\n\t\t}\r\n\t\tthis.rulesCollection.push(filterRule);\r\n\t}\r\n\r\n\tprivate get submitButtonTitle(): string {\r\n\t\treturn this.filter ? \"Save\" : \"Add\";\r\n\t}\r\n\r\n\tprivate get disableSubmit(): boolean {\r\n\t\treturn this.isLoading || this.$v.$invalid || this.areaList?.length === 0;\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAdvancedFilterEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAdvancedFilterEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemViewAdvancedFilterEdit.vue?vue&type=template&id=22152951&scoped=true\"\nimport script from \"./SystemViewAdvancedFilterEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemViewAdvancedFilterEdit.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemViewAdvancedFilterEdit.vue?vue&type=style&index=0&id=22152951&prod&scoped=true&lang=scss\"\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 \"22152951\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Vue, Component, Watch } from \"vue-property-decorator\";\r\nimport SystemViewAdvancedFiltersApi from \"@/services/api.systemViewAdvancedFilters.service\";\r\nimport {AdvancedStatusFilter, AdvancedStatusFilterRequest} from \"@/types/sv-data/system-view/advanced-filters/AdvancedStatusFilter\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { debounce } from \"lodash\";\r\nimport SystemViewAdvancedFilterEdit from \"@/components/system-view/advanced-filters/SystemViewAdvancedFilterEdit.vue\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tSystemViewAdvancedFilterEdit,\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class SystemViewAdvancedFilters extends Vue {\r\n\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter(\"getUserId\") private userId: number;\r\n\r\n\t// noinspection JSMismatchedCollectionQueryUpdate\r\n\tprivate advancedStatusFilters: AdvancedStatusFilter[] = [];\r\n\tprivate searchTerm: string = \"\";\r\n\tprivate activeFilter: AdvancedStatusFilter = null;\r\n\tprivate editingFilter: AdvancedStatusFilter = null;\r\n\tprivate createFilterModalShow = false;\r\n\tprivate confirmDeleteModalShow = false;\r\n\tprivate filterToDelete: AdvancedStatusFilter = null;\r\n\tprivate dropdownShown: boolean = false;\r\n\r\n\tprivate get isAdvancedFilteringEnabled(): boolean {\r\n\t\treturn this.getFeature([\"SystemView\", \"AdvancedStatusFilters\"])\r\n\t\t\t&& this.permissions.canViewAdvancedStatusFilters;\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tawait this.getAvailableAdvancedFilters();\r\n\t}\r\n\r\n\tprivate async getAvailableAdvancedFilters(): Promise {\r\n\t\tif(!this.isAdvancedFilteringEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet request: AdvancedStatusFilterRequest = {\r\n\t\t\tsearchTerm: this.searchTerm\r\n\t\t};\r\n\t\tthis.advancedStatusFilters = await SystemViewAdvancedFiltersApi.getAdvancedStatusFilters(request);\r\n\t}\r\n\r\n\tprivate async clearActiveFilter(): Promise {\r\n\t\tthis.activeFilter = null;\r\n\t\tthis.$emit(\"input\", null);\r\n\t}\r\n\r\n\tprivate async createFilter(): Promise {\r\n\t\tif(!this.isAdvancedFilteringEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.editingFilter = null;\r\n\t\tthis.createFilterModalShow = true;\r\n\t}\r\n\r\n\tprivate async editFilter(filter: AdvancedStatusFilter): Promise {\r\n\t\tif(!this.isAdvancedFilteringEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.editingFilter = filter;\r\n\t\tthis.createFilterModalShow = true;\r\n\t}\r\n\r\n\tprivate async finishEditFilter(): Promise {\r\n\t\tlet selected = this.activeFilter;\r\n\t\tthis.createFilterModalShow = false;\r\n\t\tthis.editingFilter = null;\r\n\r\n\t\tawait this.getAvailableAdvancedFilters();\r\n\r\n\t\tif(selected !== null) {\r\n\t\t\tlet existing = this.advancedStatusFilters.findIndex((filter: AdvancedStatusFilter) => filter.advancedStatusFilterId == selected.advancedStatusFilterId);\r\n\t\t\tif(existing !== null) {\r\n\t\t\t\tawait this.changeActiveFilter(this.advancedStatusFilters[existing]);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tawait this.clearActiveFilter();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async confirmDeleteFilter(filter: AdvancedStatusFilter): Promise {\r\n\t\tthis.filterToDelete = filter;\r\n\t\tthis.confirmDeleteModalShow = true;\r\n\t}\r\n\r\n\tprivate async deleteFilter(filter: AdvancedStatusFilter): Promise {\r\n\t\tif(!this.isAdvancedFilteringEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.confirmDeleteModalShow = false;\r\n\r\n\t\ttry {\r\n\t\t\tawait SystemViewAdvancedFiltersApi.deleteAdvancedStatusFilter(filter.advancedStatusFilterId);\r\n\t\t\tif (this.activeFilter?.advancedStatusFilterId === filter.advancedStatusFilterId) {\r\n\t\t\t\tawait this.clearActiveFilter();\r\n\t\t\t}\r\n\t\t\tthis.$notify(\r\n\t\t\t\t{\r\n\t\t\t\t\ttype: \"success\",\r\n\t\t\t\t\ttitle: \"Advanced Filter Deleted\",\r\n\t\t\t\t\ttext: \"Successfully deleted filter '\" + filter.name + \"'\"\r\n\t\t\t\t});\r\n\t\t} catch (e) {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Error\",\r\n\t\t\t\ttext: \"Unable to delete filter - please try again later, or contact support if the problem persists.\"\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tawait this.getAvailableAdvancedFilters();\r\n\r\n\t\tthis.filterToDelete = null;\r\n\t}\r\n\r\n\t@Watch(\"searchTerm\")\r\n\tpublic debouncedFilterSearch: (() => Promise) = debounce(async () => {\r\n\t\tawait this.getAvailableAdvancedFilters();\r\n\t}, 200);\r\n\r\n\tprivate async changeActiveFilter(filter: AdvancedStatusFilter): Promise {\r\n\t\tthis.activeFilter = filter;\r\n\t\tthis.$emit(\"input\", this.activeFilter?.advancedStatusFilterId);\r\n\t}\r\n\r\n\tprivate async cancelEditFilter(): Promise {\r\n\t\tthis.createFilterModalShow = false;\r\n\t\tthis.editingFilter = null;\r\n\t}\r\n\r\n\tprivate get activeFilterName(): string {\r\n\t\tif (this.activeFilter == null) {\r\n\t\t\treturn \"None Selected\";\r\n\t\t}\r\n\t\treturn this.activeFilter.name;\r\n\t}\r\n\r\n\tprivate get hasEditFilterPermission(): boolean {\r\n\t\treturn this.permissions.canEditAdvancedStatusFilters;\r\n\t}\r\n\r\n\tprivate canModifyFilter(filter: AdvancedStatusFilter): boolean {\r\n\t\tif (!this.permissions.canEditAdvancedStatusFilters) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn !(filter.userId !== null && filter.userId != this.userId);\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAdvancedFilters.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAdvancedFilters.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemViewAdvancedFilters.vue?vue&type=template&id=0e8d8113&scoped=true\"\nimport script from \"./SystemViewAdvancedFilters.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemViewAdvancedFilters.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemViewAdvancedFilters.vue?vue&type=style&index=0&id=0e8d8113&prod&scoped=true&lang=scss\"\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 \"0e8d8113\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Emit, Vue, Watch } from \"vue-property-decorator\";\nimport TreePicker from '@/components/form/TreePicker.vue';\nimport SystemViewHealthFilter from \"./SystemViewHealthFilter.vue\";\nimport AreaTreePath from \"@/views/AreaSetup/AreaTreePath.vue\";\nimport GroupRow from \"@/types/sv-data/groups/GroupRow\";\nimport api from \"@/services/api.service\";\nimport SystemViewTreeNode from '@/types/sv-data/system-view/SystemViewTreeNode';\nimport SystemViewHealthStatusCount from '@/types/sv-data/system-view/SystemViewHealthStatusCount';\nimport SystemViewRequestTreeParams from '@/types/sv-data/system-view/SystemViewRequestTreeParams';\nimport ObjectTypeId from '@/types/sv-data/enums/ObjectTypeIds';\nimport { Getter, namespace } from \"vuex-class\";\nimport SystemViewAdvancedFilters from \"@/components/system-view/advanced-filters/SystemViewAdvancedFilters.vue\";\nimport { UserPermissions } from \"@/store/types\";\nimport OpsLinks from '../OpsLinks.vue';\n\nconst SystemHealth = namespace(\"systemHealth\");\n\n@Component({\n\tcomponents: {\n\t\tTreePicker,\n\t\tSystemViewHealthFilter,\n\t\tAreaTreePath,\n\t\tSystemViewAdvancedFilters,\n\t\t\"ops-links\": OpsLinks\n\t}\n})\nexport default class SystemViewTree extends Vue {\n\n\t@Getter getUserGroupId: number;\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\n\n\t@SystemHealth.Getter('getHealthStatus') private healthStatusCount: SystemViewHealthStatusCount;\n\t@SystemHealth.Getter('getStatusFilter') private statusFilter: string;\n\t@SystemHealth.Mutation setHealthStatus: (status: SystemViewHealthStatusCount) => void;\n\t@SystemHealth.Mutation setStatusFilter: (filter: string) => void;\n\n\tprivate viewPermissions: string [] = ['CanViewSystemView'];\n\tprivate selectedPage: number = 1;\n\tprivate resultsPerPage: string = \"25\";\n\tprivate systemViewTree: SystemViewTreeNode[] = [];\n\n\tprivate selectedArea: GroupRow[] = [];\n\tprivate rootArea: GroupRow[] = [];\n\tprivate titleFilter: string = null;\n\tprivate isLoading: boolean = false;\n\tprivate isLoadingAreas: boolean = false;\n\n\tprivate selectedGroupId: number = null;\n\tprivate advancedFilterId: number = null;\n\tprivate previousAdvancedFilterId: number = null;\n\n\tprivate requestParams: SystemViewRequestTreeParams = {\n\t\tfilter: null,\n\t\texcludeHealthyItems: false,\n\t\texcludeUnhealthyItems: false,\n\t\texcludeUntestedItems: false,\n\t\tadvancedFilterId: null\n\t};\n\n\tpublic loadMoreLabel: string = \"Load more...\";\n\n\tprivate async mounted(): Promise {\n\t\tthis.onStatusFilterChange();\n\t\tawait this.setupAreas();\n\t}\n\n\tprivate async setupAreas(): Promise {\n\t\t// Setup the Area Select\n\t\ttry {\n\t\t\tthis.isLoadingAreas = true;\n\t\t\tconst rootGroupsPagedResponse = await api.getRootGroups(this.viewPermissions, this.selectedPage, parseInt(this.resultsPerPage));\n\n\t\t\tif (!!rootGroupsPagedResponse &&\n\t\t\t\t!!rootGroupsPagedResponse.data &&\n\t\t\t\trootGroupsPagedResponse.data.length === 1) {\n\t\t\t\tthis.selectedArea = rootGroupsPagedResponse.data;\n\t\t\t\tthis.selectedGroupId = this.selectedArea[0].groupID;\n\t\t\t\tthis.rootArea = rootGroupsPagedResponse.data;\n\t\t\t} else {\n\t\t\t\tthis.selectedGroupId = this.getUserGroupId;\n\t\t\t}\n\t\t}\n\t\tcatch (ex) {\n\t\t\tconsole.error(\"Unexpected error occurred while filtering areas on System View: \" + ex);\n\t\t}\n\n\t\tthis.isLoadingAreas = false;\n\t}\n\n\tprivate get isAdvancedFilteringEnabled(): boolean {\n\t\treturn this.getFeature([\"SystemView\", \"AdvancedStatusFilters\"])\n\t\t\t&& this.permissions.canViewAdvancedStatusFilters;\n\t}\n\n\t@Watch(\"selectedGroupId\")\n\tprivate async onSelectedGroupIdChanged(): Promise {\n\t\tawait this.getTree();\n\t}\n\n\t@Watch(\"healthStatusCount\")\n\tprivate async onHealthStatusCountChanged(): Promise {\n\t}\n\n\t@Watch(\"titleFilter\")\n\tprivate async onTitleFilterChanged(): Promise {\n\t\tthis.requestParams.filter = this.titleFilter;\n\t\tawait this.getTree();\n\t}\n\n\tprivate async onAdvancedFilterInput(): Promise {\n\t\tif(!this.isAdvancedFilteringEnabled) {\n\t\t\treturn;\n\t\t}\n\t\tthis.requestParams.advancedFilterId = this.advancedFilterId;\n\t\tif(this.previousAdvancedFilterId !== this.advancedFilterId || this.advancedFilterId !== null) {\n\t\t\tthis.previousAdvancedFilterId = this.advancedFilterId;\n\t\t\tawait this.getTree();\n\t\t}\n\t}\n\n\t@Watch(\"requestParams\")\n\tprivate async updateTree(): Promise {\n\t\tawait this.getTree();\n\t}\n\n\tprivate async getTree(): Promise {\n\t\tif (this.selectedGroupId) {\n\t\t\tthis.isLoading = true;\n\t\t\ttry {\n\t\t\t\tvar tree = await api.getSystemViewTree(this.selectedGroupId, this.requestParams);\n\t\t\t\tif (tree) {\n\t\t\t\t\ttree = this.setLeafNodes(tree);\n\t\t\t\t\tthis.systemViewTree = tree;\n\t\t\t\t}\n\t\t\t} catch (ex) {\n\t\t\t\tconsole.error(\"Unexpected error loading SystemView Item tree: \" + ex);\n\t\t\t}\n\t\t\tthis.isLoading = false;\n\t\t}\n\t}\n\n\tprivate setLeafNodes(tree: SystemViewTreeNode[]): SystemViewTreeNode[] {\n\t\tif(!tree) {\n\t\t\treturn null;\n\t\t}\n\n\t\ttree.forEach(node => {\n\t\t\tnode.label = node.title;\n\n\t\t\t// For Vue-TreeSelect each node needs a unique id and as we cross tables objectId alone cannot be used\n\t\t\tnode.id = `${node.objectTypeId}-${node.objectId}-${node.title}`;\n\t\t\tif (node.children && node.children.length > 0) {\n\t\t\t\tnode.children = this.setLeafNodes(node.children);\n\t\t\t\tnode.isDefaultExpanded = true;\n\n\t\t\t\tif ((node.objectTypeId === ObjectTypeId.GroupSync ||\n\t\t\t\t\t(node.objectTypeId === ObjectTypeId.Server && node.title.toLowerCase() === \"not synced\")) &&\n\t\t\t\t\tnode.children.length < node.totalChildItems) {\n\t\t\t\t\tthis.addLoadMoreNode(node);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnode.isDefaultExpanded = false;\n\t\t\t\tif (node.totalChildItems > 0 && (node.objectTypeId === ObjectTypeId.GroupSync ||\n\t\t\t\t\t(node.objectTypeId === ObjectTypeId.Server && node.title.toLowerCase() === \"not synced\"))) {\n\t\t\t\t\t// Set to null so we can trigger a load for the children when opened\n\t\t\t\t\tnode.children = null;\n\t\t\t\t} else {\n\t\t\t\t\t// This is to remove the expand/collapse icon\n\t\t\t\t\tnode.children = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn tree;\n\t}\n\n\tprivate addLoadMoreNode(parentNode: SystemViewTreeNode): void {\n\t\t// This is a placeholder node to trigger an add more children if the parentNode has more\n\t\tvar loadMoreNode: SystemViewTreeNode = {\n\t\t\ttitle: this.loadMoreLabel,\n\t\t\tlabel: this.loadMoreLabel,\n\t\t\tid: `${parentNode.objectTypeId}-${parentNode.objectId}-${this.loadMoreLabel}`,\n\t\t\tobjectId: parentNode.objectId,\n\t\t\tobjectTypeId: parentNode.objectTypeId,\n\t\t\tisExpandable: false,\n\t\t\tshouldDisplayData: true,\n\t\t\tchildren: undefined,\n\t\t\ttotalChildItems: 0,\n\t\t};\n\n\t\tparentNode.children.push(loadMoreNode);\n\t}\n\n\t@Watch(\"statusFilter\")\n\tprivate async onStatusFilterChange(): Promise {\n\t\tvar statusFilter = this.statusFilter ? this.statusFilter.toLowerCase() : \"\";\n\t\tswitch(statusFilter){\n\t\t\tcase \"healthy\":\n\t\t\t\tthis.requestParams.excludeHealthyItems = false;\n\t\t\t\tthis.requestParams.excludeUnhealthyItems = true;\n\t\t\t\tthis.requestParams.excludeUntestedItems = true;\n\t\t\t\tbreak;\n\t\t\tcase \"unhealthy\":\n\t\t\t\tthis.requestParams.excludeHealthyItems = true;\n\t\t\t\tthis.requestParams.excludeUnhealthyItems = false;\n\t\t\t\tthis.requestParams.excludeUntestedItems = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthis.requestParams.excludeHealthyItems = false;\n\t\t\t\tthis.requestParams.excludeUnhealthyItems = false;\n\t\t\t\tthis.requestParams.excludeUntestedItems = false;\n\t\t}\n\t\tthis.getTree();\n\t}\n\n\tprivate updateSelectedArea(): void {\n\t\tthis.selectedGroupId = this.selectedArea[this.selectedArea.length-1].groupID;\n\t}\n\n\t@Emit(\"itemSelected\")\n\tprivate async onItemSelected(node: SystemViewTreeNode): Promise {\n\t\treturn node;\n\t}\n\n\tprivate isLeafNode(item: SystemViewTreeNode): boolean {\n\t\treturn item.objectTypeId === ObjectTypeId.Camera ||\n\t\titem.objectTypeId === ObjectTypeId.Door ||\n\t\titem.objectTypeId === ObjectTypeId.Relay ||\n\t\titem.objectTypeId === ObjectTypeId.Audio ||\n\t\titem.objectTypeId === ObjectTypeId.Alarm;\n\t}\n\n\tprivate loadHome(): void {\n\t\ttry {\n\t\t\tthis.isLoadingAreas = true;\n\t\t\tthis.selectedArea = this.rootArea;\n\t\t\tthis.updateSelectedArea();\n\t\t} catch (ex) {\n\t\t\tconsole.error(\"Unexpected error loading SystemView home area filter: \" + ex);\n\t\t}\n\n\t\tthis.isLoadingAreas = false;\n\t}\n\n\t@Watch(\"systemViewTree\")\n\tprivate onTreeUpdated(updatedTree: SystemViewTreeNode[]): void {\n\t\tthis.systemViewTree = updatedTree;\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewTree.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewTree.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemViewTree.vue?vue&type=template&id=2b59042e\"\nimport script from \"./SystemViewTree.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemViewTree.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemViewTree.vue?vue&type=style&index=0&id=2b59042e&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!!this.selectedNode)?_c('div',{attrs:{\"id\":\"setup-overview\"}},[_c('h3',{staticStyle:{\"display\":\"inline-block\"}},[_vm._v(\"Selected \"+_vm._s(this.selectedComponentText))]),_c('span',{staticStyle:{\"font-size\":\"20px\",\"padding-left\":\"5px\",\"font-weight\":\"100\"}},[_vm._v(_vm._s(!!this.selectedNode ? this.selectedNode.title : \"\"))]),_c('b-tabs',{staticClass:\"p-1\",attrs:{\"justified\":\"\"}},[_c('b-tab',{staticClass:\"h-100 flex-column\"},[_c('template',{slot:\"title\"},[_c('h4',[_vm._v(\"Settings\")])]),_c('br'),_c(_vm.getComponentToLoad,{tag:\"component\",attrs:{\"selectedNode\":this.selectedNode},on:{\"should-refresh-history\":_vm.performHealthHistoryRefresh}})],2),_c('b-tab',[_c('template',{slot:\"title\"},[_c('h4',[_vm._v(\"Health History\")])]),_c('br'),_c('health-history',{key:_vm.healthHistoryIteration,attrs:{\"selectedNode\":this.selectedNode}})],2)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"setup-camera\",\"data-cy\":\"setup-overview-camera\"}},[(_vm.showPreviewModal)?_c('camera-preview',{attrs:{\"previewDetails\":{ deviceId: _vm.selectedNode.objectId, title: _vm.selectedNode.title }},on:{\"hidden\":_vm.toggleCameraPreviewModal}}):_vm._e(),(this.setupResponse)?_c('div',[(this.setupResponse.error)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"role\":\"alert\",\"data-cy\":\"response-error-alert\"}},[_vm._v(\" \"+_vm._s(this.setupResponse.error)+\" \")]):_c('div',[_c('b-container',{staticClass:\"summary-container\",attrs:{\"data-cy\":\"setup-overview-summary-container\"}},[_c('b-row',{staticClass:\"h-50 w-100\"},[_c('b-col',{attrs:{\"data-cy\":\"b-col-system-overview\",\"cols\":_vm.getSystemOverviewCols}},[(!!_vm.cameraSummary)?_c('system-overview',{attrs:{\"showLastAlarm\":\"\",\"data-cy\":\"system-view-summary\"},model:{value:(_vm.cameraSummary),callback:function ($$v) {_vm.cameraSummary=$$v},expression:\"cameraSummary\"}}):_vm._e(),_c('b-button',{staticClass:\"mt-3\",attrs:{\"variant\":\"primary\",\"data-cy\":\"add-item-btn\"},on:{\"click\":function($event){return _vm.toggleCameraPreviewModal(true)}}},[_c('b',{staticClass:\"pr-2\"},[_vm._v(\"View Camera\")]),_c('i',{staticClass:\"fas fa-cctv hover-icon\",attrs:{\"title\":\"Preview\",\"data-cy\":\"preview-button\"}})]),(_vm.canUseDevicePing)?_c('ping-button',{staticClass:\"ml-3 mt-3\",attrs:{\"data-cy\":\"ping-device-btn\",\"object-id\":_vm.selectedNode.objectId,\"object-type-id\":_vm.selectedNode.objectTypeId},on:{\"health-history-changed\":_vm.shouldRefreshHistory}}):_vm._e()],1),(!_vm.isHideMapsEnabled)?_c('b-col',{attrs:{\"data-cy\":\"b-col-system-map\"}},[_c('system-view-map',{attrs:{\"locationDetails\":_vm.locationDetails,\"data-cy\":\"system-view-map\"}})],1):_vm._e()],1),_c('b-row',{staticClass:\"pb-1 mt-2\"},[_c('b-col',[_c('h5',[_vm._v(\"Linked Alarms\")]),_c('vue-perfect-scrollbar',{staticClass:\"flex-shrink-1 flex-grow-1 m-t-2\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"}},[(!!_vm.cameraSummary)?_c('system-view-alarm-setup',{attrs:{\"objectId\":_vm.cameraSummary.deviceID,\"objectTypeId\":_vm.objectTypeId,\"alarmInformation\":_vm.cameraSummary.linkedAlarmInformation,\"data-cy\":\"system-view-alarm-setup\"}}):_vm._e()],1)],1)],1)],1)],1)]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!!_vm.value)?_c('b-container',{attrs:{\"data-cy\":\"system-view-summary-data\"}},[_c('b-row',[_c('b-col',{staticClass:\"px-0\",attrs:{\"cols\":\"3\"}},[_c('b',[_vm._v(\"Server name: \")])]),_c('b-col',[_vm._v(\" \"+_vm._s(this.value.serverTitle)+\" \")])],1),_c('b-row',[_c('b-col',{staticClass:\"px-0\",attrs:{\"cols\":\"3\"}},[_c('b',[_vm._v(\"Area: \")])]),_c('b-col',[_vm._v(\" \"+_vm._s(this.value.areaTitle)+\" \")])],1),_c('b-row',[_c('b-col',{staticClass:\"px-0\",attrs:{\"cols\":\"3\"}},[_c('b',[_vm._v(\"Title: \")])]),_c('b-col',[_vm._v(\" \"+_vm._s(this.value.title)+\" \")])],1),_c('b-row',[_c('b-col',{staticClass:\"px-0\",attrs:{\"cols\":\"3\"}},[_c('b',[_vm._v(\"Input 1: \")])]),_c('b-col',[_vm._v(\" \"+_vm._s(this.value.input1)+\" \")])],1),_c('b-row',[_c('b-col',{staticClass:\"px-0\",attrs:{\"cols\":\"3\"}},[_c('b',[_vm._v(\"Input 2: \")])]),_c('b-col',[_vm._v(\" \"+_vm._s(this.value.input2)+\" \")])],1),_c('b-row',[_c('b-col',{staticClass:\"px-0\",attrs:{\"cols\":\"3\"}},[_c('b',[_vm._v(\"Extra Value: \")])]),_c('b-col',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"clickable\",attrs:{\"title\":this.value.extraValue}},[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(this.value.extraValue,100))+\" \")])],1),(!!this.value.isGroupSync)?_c('b-row',[_c('b-col',{staticClass:\"px-0\",attrs:{\"cols\":\"3\"}},[_c('b',[_vm._v(\"Last Sync: \")])]),_c('b-col',[_vm._v(\" \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(this.value.lastSyncedAt))+\" \")])],1):_vm._e(),(_vm.showLastAlarm)?_c('b-row',[_c('b-col',{staticClass:\"px-0\",attrs:{\"cols\":\"3\"}},[_c('b',[_vm._v(\"Last Alarm: \")])]),_c('b-col',[_vm._v(\" \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(this.value.lastAlarmedAt))+\" \")])],1):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { truncateString } from \"@/filters\";\nimport { BaseDeviceSummary } from \"@/types/sv-data/system-view/SetupSummary\";\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\n\n@Component({\n\tfilters: { truncateString }\n})\nexport default class SystemOverview extends Vue {\n\t@Prop({required: true})\n\tprivate value: BaseDeviceSummary;\n\n\t@Prop({required: false, default: false, type: Boolean})\n\tprivate showLastAlarm: boolean;\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemOverview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemOverview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemOverview.vue?vue&type=template&id=0a23eb2e&scoped=true\"\nimport script from \"./SystemOverview.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemOverview.vue?vue&type=script&lang=ts\"\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 \"0a23eb2e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-overlay',{staticClass:\"h-100\",attrs:{\"show\":!_vm.locationDetails || _vm.locationDetails.length === 0,\"rounded\":\"sm\",\"variant\":\"dark\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_vm._v(\" No locations plotted. \")]},proxy:true}])},[_c('div',{ref:\"mappingContainer\",staticClass:\"h-100\",class:_vm.getMapType,staticStyle:{\"background-color\":\"white\"},attrs:{\"id\":\"divMappingContainer\",\"data-cy\":\"system-view-summary-map\"}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Mixins, Prop, Watch } from \"vue-property-decorator\";\nimport {\n\tgetEnhancedMapping,\n\tIEnhancedMapping,\n\tIMap,\n\tILatLng,\n\tIMarker,\n} from \"@sureview/v2-mapping-saas\";\nimport { Getter } from \"vuex-class\";\nimport { getMapStyle } from \"@/scripts/mapping/mapStyle\";\nimport { LocationBounds } from \"@/services/gps.service\";\nimport FieldOpsMixin from \"@/mixins/FieldOpsMixin\";\nimport { MapLayerItem } from \"@/types/sv-data/system-view/MapLayerItem\";\n\n@Component({})\nexport default class SystemViewMap extends Mixins(FieldOpsMixin) {\n\n\tpublic $refs: any = {\n\t\tmappingContainer: HTMLElement\n\t};\n\n\t@Prop({required: false, default: []}) private locationDetails: MapLayerItem[];\n\n\t@Getter(\"getMapKey\") private mapKey: any;\n\t@Getter private getMapType: any;\n\n\tprivate enhancedMapping: IEnhancedMapping | null = null;\n\tprivate map: IMap = null;\n\tprivate markers: IMarker[] = [];\n\tprivate readonly noLocation: string[] = [\"0\", \"\", \"0\"];\n\n\tprivate async mounted(): Promise {\n\t\tthis.enhancedMapping = await getEnhancedMapping(\"google\", this.mapKey);\n\t\tthis.setupMap();\n\t\tthis.setMarkerLocation();\n\t}\n\n\tprivate destroyed() {\n\t\tthis.removeMarkers();\n\t}\n\n\t@Watch(\"locationDetails\")\n\tprivate onLocationChanged(): void {\n\t\tthis.removeMarkers();\n\t\tthis.setupMap();\n\t\tthis.setMarkerLocation();\n\t}\n\n\tprivate removeMarkers(): void {\n\t\tif (!!this.markers && this.markers.length > 0) {\n\t\t\tthis.markers.forEach(marker => {\n\t\t\t\tmarker.visible = false;\n\t\t\t\tmarker.remove();\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate setupMap(): void {\n\t\t// Use the first location as the map view area\n\t\tvar locationArray: string[] = this.getLocationArray(this.locationDetails[0]?.latLong ?? null);\n\n\t\tlet pos: LocationBounds = {\n\t\t\tlocation: { lat: +locationArray[0], lng: +locationArray[2] },\n\t\t\tviewport: null\n\t\t};\n\n\t\tthis.map = this.enhancedMapping.createMap(\n\t\t\tthis.$refs.mappingContainer,\n\t\t\tpos.location,\n\t\t\t0,\n\t\t\tfalse,\n\t\t\tthis.getMapType,\n\t\t\tgetMapStyle(this.getMapType, false)\n\t\t);\n\n\t\tthis.map.map.setZoom(0);\n\t}\n\n\tprivate getLocationArray(location: string): string[] {\n\t\tif (location) {\n\t\t\treturn location.split(/(\\s+)/);\n\t\t}\n\n\t\treturn this.noLocation;\n\t}\n\n\tprivate setMarkerLocation(): void {\n\n\t\tif (!this.locationDetails || this.locationDetails.length === 0) {\n\t\t\tthis.map.map.setZoom(0);\n\t\t\treturn;\n\t\t}\n\n\t\tlet bounds = new google.maps.LatLngBounds();\n\n\t\tthis.locationDetails.forEach(location => {\n\n\t\t\tvar locationArray: string[] = this.getLocationArray(location.latLong);\n\n\t\t\tif (locationArray === this.noLocation) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Only showing for camera for now\n\t\t\tconst markerLocation: ILatLng = {\n\t\t\t\tlat: +locationArray[0],\n\t\t\t\tlng: +locationArray[2]\n\t\t\t};\n\n\t\t\tconst id = !!this.markers && this.markers.length > 0 ? this.markers.length : 0;\n\n\t\t\t// We are only concerned with displaying so only provide Type and location\n\t\t\tconst marker = this.enhancedMapping.createMarker(\n\t\t\t\tthis.map,\n\t\t\t\tid, // mapLayerItemId // This will be used to identify it to kill it\n\t\t\t\tnull, // eventRecordId\n\t\t\t\tlocation.mapLayerItemTypeId, // mapLayerItemTypeId: number | string | MarkerType\n\t\t\t\tnull, // asset type\n\t\t\t\tlocation.title, // title\n\t\t\t\tmarkerLocation, // location\n\t\t\t\tnull, // region\n\t\t\t\tnull, // minElevation\n\t\t\t\tnull, // maxElevation\n\t\t\t\ttrue // visible: boolean\n\t\t\t);\n\n\t\t\tthis.markers.push(marker);\n\t\t\tbounds.extend(marker.position);\n\t\t});\n\n\t\tthis.map.map.fitBounds(bounds);\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewMap.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewMap.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemViewMap.vue?vue&type=template&id=361799bb&scoped=true\"\nimport script from \"./SystemViewMap.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemViewMap.vue?vue&type=script&lang=ts\"\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 \"361799bb\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-table',{staticClass:\"information-table hideHover\",attrs:{\"fields\":_vm.visibleAlarmSetupFields,\"items\":_vm.alarmInformation,\"show-empty\":\"\",\"responsive\":\"\",\"striped\":\"\",\"sticky-header\":\"\",\"stacked\":\"md\",\"sort-by\":\"lastOccurred\",\"head-variant\":\"dark\",\"sort-desc\":true,\"empty-text\":\"No linked Alarms\",\"data-cy\":\"alarm-setup-information-table\"},scopedSlots:_vm._u([{key:\"cell(autoHandled)\",fn:function(row){return [_c('span',[_vm._v(_vm._s(row.item.autoHandled ? \"Yes\": \"No\"))])]}},{key:\"cell(ignore)\",fn:function(row){return [_c('span',[_vm._v(_vm._s(row.item.ignore ? \"Yes\": \"No\"))])]}},{key:\"cell(lastOccurred)\",fn:function(row){return [_c('span',[_vm._v(_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(row.item.lastOccurred)))])]}},{key:\"cell(showAutomations)\",fn:function(row){return [_c('i',{staticClass:\"fa mr-2\",class:[row.item._showDetails ? 'fa-chevron-down' : 'fa-chevron-right'],on:{\"click\":row.toggleDetails}})]}},{key:\"row-details\",fn:function(row){return [_c('system-view-alarm-automations',{attrs:{\"alarmAutomations\":row.item.alarmActions,\"data-cy\":\"system-view-alarm-automations\"}})]}}])})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-table',{staticClass:\"action-table\",attrs:{\"fields\":_vm.alarmActionsFields,\"items\":_vm.alarmAutomations,\"head-variant\":\"dark\",\"show-empty\":\"\",\"responsive\":\"\",\"striped\":\"\",\"stacked\":\"md\",\"empty-text\":\"No Alarm Actions\",\"data-cy\":\"alarm-setup-actions-table\"},scopedSlots:_vm._u([{key:\"cell(responseActionTypeId)\",fn:function(row){return [_vm._v(\" Record Camera \")]}},{key:\"cell(description)\",fn:function(row){return [_c('span',{attrs:{\"data-cy\":\"description\"}},_vm._l((_vm.getDescriptionParts(row.item.description)),function(descriptionPart,name,index){return _c('span',{key:index,class:[\n\t\t\t\t\t\t'd-inline-block',\n\t\t\t\t\t\t{ 'font-weight-bold text-primary': descriptionPart.emphasised }\n\t\t\t\t\t]},[(index && !descriptionPart.value.startsWith(','))?_c('span',{staticClass:\"d-inline-block\"}):_vm._e(),_vm._v(\" \"+_vm._s(descriptionPart.value)+\" \")])}),0)]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { FeaturesList, VueBootstrapField } from \"@/store/types\";\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport { AlarmAutomation } from '@/types/sv-data/system-view/SetupSummary';\n\ninterface stringFormattedDictionaryObject {\n\temphasised: boolean;\n\tvalue: string;\n}\n\n@Component({\n\tcomponents: {\n\t\tVuePerfectScrollbar\n\t}\n})\nexport default class SystemViewAlarmAutomations extends Vue {\n\t@Prop({required: true}) private alarmAutomations: AlarmAutomation [];\n\t@Getter getFeaturesList: FeaturesList;\n\n\tprivate get alarmActionsFields(): VueBootstrapField[] {\n\t\treturn [\n\t\t\t{\n\t\t\t\tkey: \"responseActionTypeId\",\n\t\t\t\tlabel: \"Type\",\n\t\t\t\tsortable: false\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: \"description\",\n\t\t\t\tlabel: \"Description\",\n\t\t\t\tsortable: false\n\t\t\t},\n\t\t];\n\t}\n\n\t/**\n\t * @summary This function uses a regular expression to match strings <***>like this.\n\t * @param rawString The string to match the regular expression on.\n\t * @returns A dictionary, containing a variable amount of entries.\n\t * \t\t\tEach property contains an object stating the string value and if it should be emphasised or not.\n\t */\n\tprivate getDescriptionParts(rawString: string): Record {\n\t\tconst boldPartRegEx = /<\\*\\*\\*>([^<]{1,})<\\/\\*\\*\\*>/g;\n\n\t\tlet match;\n\t\tlet startIndex = 0;\n\t\tlet currentStringNumber = 1;\n\t\tlet stringFormattedDictionary = {} as Record;\n\n\t\tif(!rawString){\n\t\t\treturn stringFormattedDictionary;\n\t\t}\n\n\t\twhile ((match = boldPartRegEx.exec(rawString)) !== null) {\n\n\t\t\tconst descriptionBeginningPart = rawString.substring(startIndex, rawString.indexOf(match[0])).trim();\n\n\t\t\t// our non-matches should not be emphasised\n\t\t\tif (descriptionBeginningPart) {\n\t\t\t\tstringFormattedDictionary[`string${currentStringNumber++}`] = {\n\t\t\t\t\temphasised: false,\n\t\t\t\t\tvalue: descriptionBeginningPart\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// our regex match should be emphasised\n\t\t\tstringFormattedDictionary[`string${currentStringNumber++}`] = {\n\t\t\t\temphasised: true,\n\t\t\t\tvalue: match[1].trim()\n\t\t\t};\n\n\t\t\t// set startIndex for next loop\n\t\t\tstartIndex += boldPartRegEx.lastIndex - startIndex;\n\t\t}\n\n\t\t// add whatever is leftover as non-emphasised\n\t\tif (startIndex < rawString.length) {\n\t\t\tstringFormattedDictionary[`string${currentStringNumber}`] = {\n\t\t\t\temphasised: false,\n\t\t\t\tvalue: rawString.substring(startIndex).trim()\n\t\t\t};\n\t\t}\n\n\t\treturn stringFormattedDictionary;\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAlarmAutomations.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAlarmAutomations.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemViewAlarmAutomations.vue?vue&type=template&id=f4e0deee&scoped=true\"\nimport script from \"./SystemViewAlarmAutomations.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemViewAlarmAutomations.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemViewAlarmAutomations.vue?vue&type=style&index=0&id=f4e0deee&prod&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 \"f4e0deee\",\n null\n \n)\n\nexport default component.exports","\nimport { FeaturesList, VueBootstrapField } from \"@/store/types\";\nimport { get } from \"lodash\";\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { Getter } from \"vuex-class\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport ObjectTypeId from \"@/types/sv-data/enums/ObjectTypeIds\";\nimport SystemViewAlarmAutomations from './SystemViewAlarmAutomations.vue';\nimport { AlarmAutomation } from '@/types/sv-data/system-view/SetupSummary';\n\n@Component({\n\tcomponents: {\n\t\tVuePerfectScrollbar,\n\t\t\"system-view-alarm-automations\": SystemViewAlarmAutomations\n\t}\n})\nexport default class SystemViewAlarmSetup extends Vue {\n\n\t@Prop({required: true}) private objectId: number;\n\t@Prop({required: true}) private objectTypeId: ObjectTypeId;\n\t@Prop({required: true}) private alarmInformation: AlarmAutomation[];\n\n\t@Getter getFeaturesList: FeaturesList;\n\n\tprivate get alarmSetupFields(): VueBootstrapField[] {\n\treturn [\n\t\t{\n\t\t\tkey: \"alarmTitle\",\n\t\t\tlabel: \"Alarm\",\n\t\t\tvisible: true,\n\t\t\tsortable: true\n\t\t},\n\t\t{\n\t\t\tkey: \"serverTitle\",\n\t\t\tlabel: \"Server\",\n\t\t\tvisible: true,\n\t\t\tsortable: true\n\t\t},\n\t\t{\n\t\t\tkey: \"serverTypeTitle\",\n\t\t\tlabel: \"Integration\",\n\t\t\tvisible: true,\n\t\t\tsortable: true\n\t\t},\n\t\t{\n\t\t\tkey: \"actionPlanTitle\",\n\t\t\tlabel: \"Action Plan\",\n\t\t\tvisible: true,\n\t\t\tsortable: true\n\t\t},\n\t\t{\n\t\t\tkey: \"priority\",\n\t\t\tlabel: \"Priority\",\n\t\t\tvisible: true,\n\t\t\tsortable: true\n\t\t},\n\t\t{\n\t\t\tkey: \"autoHandled\",\n\t\t\tlabel: \"Auto Handled\",\n\t\t\tvisible: true,\n\t\t\tsortable: true\n\t\t},\n\t\t{\n\t\t\tkey: \"ignore\",\n\t\t\tlabel: \"Ignore\",\n\t\t\tvisible: true,\n\t\t\tsortable: true\n\t\t},\n\t\t{\n\t\t\tkey: \"lastOccurred\",\n\t\t\tlabel: \"Last Occurrence\",\n\t\t\tvisible: true,\n\t\t\tsortable: true\n\t\t},\n\t\t{\n\t\t\tkey: \"showAutomations\",\n\t\t\tlabel: \"Alarm Actions\",\n\t\t\tvisible: this.showAutomations,\n\t\t\tsortable: false\n\t\t},\n\t];\n\t}\n\n\tprivate get visibleAlarmSetupFields(): VueBootstrapField[] {\n\t\treturn this.alarmSetupFields.filter(field => !!field.visible);\n\t}\n\n\tprivate get showAutomations(): boolean {\n\t\treturn !!get(this.getFeaturesList, [\"Alarms\", \"CameraAutomation\"]);\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAlarmSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAlarmSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemViewAlarmSetup.vue?vue&type=template&id=2490667e&scoped=true\"\nimport script from \"./SystemViewAlarmSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemViewAlarmSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemViewAlarmSetup.vue?vue&type=style&index=0&id=2490667e&prod&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 \"2490667e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-button',{attrs:{\"variant\":_vm.buttonVariant,\"disabled\":_vm.isButtonDisabled,\"title\":_vm.tooltip,\"data-cy\":\"ping-device-btn\"},on:{\"click\":_vm.onClick}},[_c('b',{staticClass:\"pr-2\"},[_vm._v(\"Ping Device\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport { DeviceService } from \"@sureview/camera\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport { ServerDetails } from \"@/store/devices/types\";\r\nimport { Action, namespace } from \"vuex-class\";\r\nimport api from \"@/services/api.service\";\r\nimport { debounce } from \"lodash\";\r\nimport { stringMixin } from \"@/mixins\";\r\nimport ObjectTypeId from \"@/types/sv-data/enums/ObjectTypeIds\";\r\nimport HealthCheckRequest from \"@/types/system-health/HealthCheckRequest\";\r\n\r\nconst { isNullOrWhitespace } = stringMixin.methods;\r\nconst Devices = namespace(\"devices\");\r\nconst Session = namespace(\"sessions\")\r\n\r\n@Component({})\r\nexport default class PingButton extends Vue {\r\n\r\n\t@Session.Action updateSession: any;\r\n\t@Session.Getter getSession: any;\r\n\r\n\t@Prop(Number) private objectId: number;\r\n\t@Prop(Number) private objectTypeId: number;\r\n\r\n\t@Action(\"raiseSystemLog\") private raiseSystemLog: (healthcheckRequest: HealthCheckRequest) => Promise;\r\n\r\n\t@Devices.Action private getServer: (serverId: number) => Promise;\r\n\t@Devices.State(\"serversList\") private serversListFromStore: ServerDetails[];\r\n\r\n\tprivate serverId: number;\r\n\tprivate host: string = null\r\n\tprivate port: number = null;\r\n\tprivate applianceId: number = null;\r\n\tprivate isServer: boolean;\r\n\tprivate pingResult: boolean = null;\r\n\tprivate debouncePing;\r\n\r\n\tprivate tooltip: string = \"\";\r\n\r\n\tpublic async mounted(): Promise {\r\n\t\tthis.updateSession({\r\n\t\t\tresourceId: SessionResource.DeviceServiceSession\r\n\t\t});\r\n\r\n\t\tthis.debouncePing = debounce(() => {\r\n\t\t\tthis.performPing();\r\n\t\t}, 500);\r\n\r\n\t\tawait this.reset();\r\n\t}\r\n\r\n\t@Watch(\"objectId\")\r\n\tpublic async reset(): Promise {\r\n\t\tthis.pingResult = null;\r\n\t\tthis.tooltip = \"Ping this device, and update it's current status\";\r\n\t\tthis.isServer = this.objectTypeId == ObjectTypeId.Server;\r\n\r\n\t\tif (this.isServer) {\r\n\t\t\tthis.serverId = this.objectId;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tawait this.fetchServerId();\r\n\t\t}\r\n\r\n\t\tawait this.getServer(this.serverId);\r\n\r\n\t\tlet server = this.serversListFromStore.firstOrDefault(s => s.serverID == this.serverId);\r\n\t\tif (server != null) {\r\n\t\t\tthis.host = server.host;\r\n\t\t\tthis.port = server.port;\r\n\t\t\tthis.applianceId = server.applianceId;\r\n\t\t\tif (isNullOrWhitespace(this.host)) {\r\n\t\t\t\tthis.tooltip = \"Device has no host to ping\";\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconsole.error(`Failed to get server information for server ${this.serverId}`);\r\n\t\t\tthis.tooltip = \"No device information available\";\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async performPing(): Promise {\r\n\t\tif (isNullOrWhitespace(this.host)) {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Device Ping\",\r\n\t\t\t\ttext: \"This device has no host set\"\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet auth = this.getSession(SessionResource.DeviceServiceSession);\r\n\t\tlet deviceService = new DeviceService(api.getDeviceServiceAddress());\r\n\r\n\t\ttry {\r\n\t\t\tlet response = await deviceService.pingDevice(auth, this.host, this.port, this.applianceId);\r\n\t\t\tthis.pingResult = true;\r\n\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"success\",\r\n\t\t\t\ttitle: \"Device Ping\",\r\n\t\t\t\ttext: \"The ping was successful\"\r\n\t\t\t});\r\n\r\n\t\t\tthis.tooltip = \"The last ping attempt was successful\";\r\n\r\n\t\t\tawait this.raiseSystemLog({\r\n\t\t\t\tObjectId: this.objectId,\r\n\t\t\t\tObjectTypeId: this.objectTypeId,\r\n\t\t\t\tIsError: false,\r\n\t\t\t\tMessage: \"Manual ping success\",\r\n\t\t\t\tData: response.statusText,\r\n\t\t\t\tEventId: null,\r\n\t\t\t});\r\n\r\n\t\t\tthis.$emit(\"health-history-changed\");\r\n\t\t}\r\n\t\tcatch(error) {\r\n\t\t\tthis.pingResult = false;\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Device Ping\",\r\n\t\t\t\ttext: `The ping was not successful. ${error.statusText}`\r\n\t\t\t});\r\n\t\t\tthis.tooltip = error.statusText;\r\n\r\n\t\t\tawait this.raiseSystemLog({\r\n\t\t\t\tObjectId: this.objectId,\r\n\t\t\t\tObjectTypeId: this.objectTypeId,\r\n\t\t\t\tIsError: true,\r\n\t\t\t\tMessage: `Manual ping failed. ${error.statusText}`,\r\n\t\t\t\tData: error.statusText,\r\n\t\t\t\tEventId: null,\r\n\t\t\t});\r\n\r\n\t\t\tthis.$emit(\"health-history-changed\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async fetchServerId(): Promise {\r\n\t\ttry {\r\n\t\t\tlet deviceInfos = await api.getDeviceServerDetails([this.objectId]);\r\n\t\t\tif (deviceInfos.length !== 0) {\r\n\t\t\t\tthis.serverId = deviceInfos[0].serverId;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch(e) {\r\n\t\t\tconsole.error(\"Failed to retrieve device server id: \" + e);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async onClick(): Promise {\r\n\t\tthis.debouncePing();\r\n\t}\r\n\r\n\tprivate get isButtonDisabled(): boolean {\r\n\t\treturn isNullOrWhitespace(this.host);\r\n\t}\r\n\r\n\tprivate get buttonVariant(): string {\r\n\t\tif (this.pingResult !== null) {\r\n\t\t\treturn this.pingResult ? \"success\" : \"danger\";\r\n\t\t}\r\n\t\treturn \"primary\";\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PingButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PingButton.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PingButton.vue?vue&type=template&id=ce80d73a\"\nimport script from \"./PingButton.vue?vue&type=script&lang=ts\"\nexport * from \"./PingButton.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\nimport { Prop, Mixins, Component, Watch } from \"vue-property-decorator\";\nimport api from \"@/services/api.service\";\nimport SystemViewTreeNode from '@/types/sv-data/system-view/SystemViewTreeNode';\nimport { SetupSummaryResponse, CameraSummary } from '@/types/sv-data/system-view/SetupSummary';\nimport { Getter } from 'vuex-class';\nimport { UserPermissions, FeaturesList } from '@/store/types';\nimport { get } from 'lodash';\nimport SystemOverview from \"./SystemOverview.vue\";\nimport SystemViewMap from \"./SystemViewMap.vue\";\nimport SystemViewAlarmSetup from \"./SystemViewAlarmSetup.vue\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport ObjectTypeId from \"@/types/sv-data/enums/ObjectTypeIds\";\nimport { MapLayerItem } from \"@/types/sv-data/system-view/MapLayerItem\";\nimport CameraPreview from '../device-setup/CameraPreview.vue';\nimport HideMapMixin from \"@/mixins/HideMapMixin\";\nimport PingButton from \"@/components/system-view/PingButton.vue\";\n\n@Component({\n\tcomponents:{\n\t\tSystemOverview,\n\t\tSystemViewMap,\n\t\tSystemViewAlarmSetup,\n\t\tVuePerfectScrollbar,\n\t\tCameraPreview,\n\t\tPingButton\n\t}\n})\nexport default class SetupOverviewCamera extends Mixins(HideMapMixin) {\n\t@Prop({ required: true, default: null }) private selectedNode: SystemViewTreeNode;\n\n\t@Getter getPermissions: UserPermissions;\n\t@Getter getFeaturesList: FeaturesList;\n\n\tprivate setupResponse: SetupSummaryResponse = null;\n\tprivate cameraSummary: CameraSummary = null;\n\tprivate objectTypeId: ObjectTypeId = ObjectTypeId.Camera;\n\tprivate locationDetails: MapLayerItem[] = [];\n\tprivate showPreviewModal: boolean = false;\n\n\tprivate async mounted(): Promise {\n\t\tawait this.retrieveCameraDetails();\n\t}\n\n\t@Watch(\"selectedNode\", { deep: true })\n\tprivate async retrieveCameraDetails(): Promise {\n\t\tif(this.selectedNode && this.canUseSystemView)\n\t\t{\n\t\t\tthis.cameraSummary = null; // Reset previous display data\n\n\t\t\tthis.setupResponse = await api.getSetupSummary(this.selectedNode.objectTypeId, this.selectedNode.objectId)\n\n\t\t\tif(this.setupResponse && !this.setupResponse?.error ) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.cameraSummary = JSON.parse(this.setupResponse.summary) as CameraSummary;\n\t\t\t\t}\n\t\t\t\tcatch (e) {\n\t\t\t\t\tconsole.error(\"Failed to Parse Camera summary: \" + e);\n\t\t\t\t\tthis.setupResponse.error = \"Failed to Parse Camera summary\";\n\t\t\t\t} finally {\n\t\t\t\t\tthis.updateMapData();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate get canUseSystemView(): boolean {\n\t\treturn get(this.getFeaturesList, [\"SystemView\"]) && (this.getPermissions.canViewSystemView || this.getPermissions.isSystemAdmin);\n\t}\n\n\tprivate get canUseDevicePing(): boolean {\n\t\treturn get(this.getFeaturesList, [\"SystemView\", \"PingDeviceStatus\"]) && this.canUseSystemView;\n\t}\n\n\tprivate get getSystemOverviewCols(): string{\n\t\treturn this.isHideMapsEnabled ? '12' : '6';\n\t}\n\n\tprivate updateMapData(): void {\n\t\tif (!!this.cameraSummary && !!this.cameraSummary.mapLayerItems) {\n\t\t\tthis.locationDetails = this.cameraSummary.mapLayerItems;\n\t\t} else {\n\t\t\tthis.locationDetails = [];\n\t\t}\n\t}\n\n\tprivate toggleCameraPreviewModal(value: boolean): void\n\t{\n\t\tthis.showPreviewModal = value;\n\t}\n\n\tprivate shouldRefreshHistory(): void {\n\t\tthis.$emit(\"should-refresh-history\");\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewCamera.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewCamera.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SetupOverviewCamera.vue?vue&type=template&id=7085f22f&scoped=true\"\nimport script from \"./SetupOverviewCamera.vue?vue&type=script&lang=ts\"\nexport * from \"./SetupOverviewCamera.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SetupOverviewCamera.vue?vue&type=style&index=0&id=7085f22f&prod&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 \"7085f22f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"setup-device\",\"data-cy\":\"setup-overview-device\"}},[(this.setupResponse)?_c('div',[(this.setupResponse.error)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"role\":\"alert\",\"data-cy\":\"response-error-alert\"}},[_vm._v(\" \"+_vm._s(this.setupResponse.error)+\" \")]):_c('div',[_c('b-container',{staticClass:\"summary-container\",attrs:{\"data-cy\":\"setup-overview-summary-container\"}},[_c('b-row',{staticClass:\"h-50 w-100\"},[_c('b-col',{attrs:{\"data-cy\":\"b-col-system-overview\",\"cols\":_vm.getSystemOverviewCols}},[(!!_vm.deviceSummary)?_c('system-overview',{attrs:{\"data-cy\":\"system-view-summary\"},model:{value:(_vm.deviceSummary),callback:function ($$v) {_vm.deviceSummary=$$v},expression:\"deviceSummary\"}}):_vm._e(),(_vm.canUseDevicePing)?_c('ping-button',{staticClass:\"mt-3\",attrs:{\"data-cy\":\"ping-device-btn\",\"object-id\":_vm.selectedNode.objectId,\"object-type-id\":_vm.selectedNode.objectTypeId},on:{\"health-history-changed\":_vm.shouldRefreshHistory}}):_vm._e()],1),(!_vm.isHideMapsEnabled)?_c('b-col',{attrs:{\"data-cy\":\"b-col-system-map\"}},[_c('system-view-map',{attrs:{\"locationDetails\":_vm.locationDetails,\"data-cy\":\"system-view-map\"}})],1):_vm._e()],1)],1)],1)]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Prop, Mixins, Component, Watch } from \"vue-property-decorator\";\nimport api from '@/services/api.service';\nimport SystemViewTreeNode from '@/types/sv-data/system-view/SystemViewTreeNode';\nimport { SetupSummaryResponse, DeviceSummary } from '@/types/sv-data/system-view/SetupSummary';\nimport { Getter } from 'vuex-class';\nimport { UserPermissions, FeaturesList } from '@/store/types';\nimport { get } from 'lodash';\nimport SystemOverview from \"./SystemOverview.vue\";\nimport SystemViewMap from \"./SystemViewMap.vue\";\nimport SetupOverviewAlarmSetup from \"./SystemViewAlarmSetup.vue\";\nimport { MapLayerItem } from \"@/types/sv-data/system-view/MapLayerItem\";\nimport HideMapMixin from \"@/mixins/HideMapMixin\";\nimport PingButton from \"@/components/system-view/PingButton.vue\";\n\n@Component({\n\tcomponents:{\n\t\tPingButton,\n\t\tSystemOverview,\n\t\tSystemViewMap,\n\t\tSetupOverviewAlarmSetup,\n\t}\n})\nexport default class SetupOverviewDevice extends Mixins(HideMapMixin) {\n\t@Prop({ required: true, default: null }) private selectedNode: SystemViewTreeNode;\n\n\t@Getter getPermissions: UserPermissions;\n\t@Getter getFeaturesList: FeaturesList;\n\n\tprivate setupResponse: SetupSummaryResponse = null;\n\tprivate deviceSummary: DeviceSummary = null;\n\tprivate locationDetails: MapLayerItem[] = [];\n\n\tprivate async mounted(): Promise {\n\t\tawait this.retrieveDeviceDetails();\n\t}\n\n\t@Watch(\"selectedNode\", { deep: true })\n\tprivate async retrieveDeviceDetails(): Promise {\n\t\tif(this.selectedNode && this.canUseSystemView)\n\t\t{\n\t\t\tthis.deviceSummary = null; // Reset previous display data\n\n\t\t\tthis.setupResponse = await api.getSetupSummary(this.selectedNode.objectTypeId, this.selectedNode.objectId);\n\n\t\t\tif(this.setupResponse && !this.setupResponse?.error ) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.deviceSummary = JSON.parse(this.setupResponse.summary) as DeviceSummary;\n\t\t\t\t}\n\t\t\t\tcatch (e) {\n\t\t\t\t\tconsole.error(\"Failed to Parse Device summary: \" + e);\n\t\t\t\t\tthis.setupResponse.error = \"Failed to Parse Device summary\";\n\t\t\t\t} finally {\n\t\t\t\t\tthis.updateMapData();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate get canUseSystemView(): boolean {\n\t\treturn get(this.getFeaturesList, [\"SystemView\"]) && (this.getPermissions.canViewSystemView || this.getPermissions.isSystemAdmin);\n\t}\n\n\tprivate get canUseDevicePing(): boolean {\n\t\treturn get(this.getFeaturesList, [\"SystemView\", \"PingDeviceStatus\"]) && this.canUseSystemView;\n\t}\n\n\tprivate get getSystemOverviewCols(): string{\n\t\treturn this.isHideMapsEnabled ? '12' : '6';\n\t}\n\n\tprivate updateMapData(): void {\n\t\tif (!!this.deviceSummary && !!this.deviceSummary.mapLayerItems) {\n\t\t\tthis.locationDetails = this.deviceSummary.mapLayerItems;\n\t\t} else {\n\t\t\tthis.locationDetails = [];\n\t\t}\n\t}\n\n\tprivate shouldRefreshHistory(): void {\n\t\tthis.$emit(\"should-refresh-history\");\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewDevice.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewDevice.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SetupOverviewDevice.vue?vue&type=template&id=ac0a538a&scoped=true\"\nimport script from \"./SetupOverviewDevice.vue?vue&type=script&lang=ts\"\nexport * from \"./SetupOverviewDevice.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SetupOverviewDevice.vue?vue&type=style&index=0&id=ac0a538a&prod&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 \"ac0a538a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"setup-appliance\",\"data-cy\":\"setup-overview-appliance\"}},[(this.setupResponse)?_c('div',[(this.setupResponse.error)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"role\":\"alert\",\"data-cy\":\"response-error-alert\"}},[_vm._v(\" \"+_vm._s(this.setupResponse.error)+\" \")]):_c('div',[_c('span',[_c('b',[_vm._v(\"Appliance name: \")]),_vm._v(\" \"+_vm._s(this.applianceSummary.applianceTitle)+\" \")]),_c('br'),_c('b',[_vm._v(\"Area: \")]),_vm._v(\" \"+_vm._s(this.applianceSummary.areaTitle)+\" \"),_c('br'),_c('b',[_vm._v(\"First Connection: \")]),_vm._v(\" \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(this.applianceSummary.firstConnection))+\" \"),_c('br'),_c('b',[_vm._v(\"Version: \")]),_vm._v(\" \"+_vm._s(this.applianceSummary.version)+\" \")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Prop, Vue, Component, Watch } from \"vue-property-decorator\";\r\nimport SystemViewTreeNode from '@/types/sv-data/system-view/SystemViewTreeNode';\r\nimport api from \"@/services/api.service\";\r\nimport { Getter } from 'vuex-class';\r\nimport { UserPermissions, FeaturesList } from '@/store/types';\r\nimport { get } from 'lodash';\r\nimport { SetupSummaryResponse, ApplianceSummary } from '@/types/sv-data/system-view/SetupSummary';\r\n\r\n@Component({})\r\nexport default class SetupOverviewAppliance extends Vue {\r\n\t@Prop({ required: true, default: null }) private selectedNode: SystemViewTreeNode;\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getFeaturesList: FeaturesList;\r\n\r\n\tprivate setupResponse: SetupSummaryResponse = null;\r\n\tprivate applianceSummary: ApplianceSummary = null;\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tawait this.retrieveApplianceDetails();\r\n\t}\r\n\r\n\t@Watch(\"selectedNode\", { deep: true })\r\n\tprivate async retrieveApplianceDetails(): Promise {\r\n\t\tif(this.selectedNode && this.canUseSystemView)\r\n\t\t{\r\n\t\t\tthis.applianceSummary = null; // Reset previous display data\r\n\r\n\t\t\tthis.setupResponse = await api.getSetupSummary(this.selectedNode.objectTypeId, this.selectedNode.objectId)\r\n\r\n\t\t\tif(this.setupResponse && !this.setupResponse?.error ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.applianceSummary = JSON.parse(this.setupResponse.summary) as ApplianceSummary\r\n\t\t\t\t}\r\n\t\t\t\tcatch(e) {\r\n\t\t\t\t\tconsole.error(\"Failed to Parse appliance summary: \"+ e)\r\n\t\t\t\t\tthis.setupResponse.error = \"Failed to Parse appliance summary\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get canUseSystemView(): boolean {\r\n return get(this.getFeaturesList, [\"SystemView\"]) && (this.getPermissions.canViewSystemView || this.getPermissions.isSystemAdmin);\r\n }\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewAppliance.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewAppliance.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SetupOverviewAppliance.vue?vue&type=template&id=dbe921bc&scoped=true\"\nimport script from \"./SetupOverviewAppliance.vue?vue&type=script&lang=ts\"\nexport * from \"./SetupOverviewAppliance.vue?vue&type=script&lang=ts\"\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 \"dbe921bc\",\n null\n \n)\n\nexport default component.exports","var render = function () {\nvar this$1 = this;\nvar _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"setup-Server\",\"data-cy\":\"setup-overview-server\"}},[(this.setupResponse)?_c('div',[(this.setupResponse.error)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"role\":\"alert\",\"data-cy\":\"response-error-alert\"}},[_vm._v(\" \"+_vm._s(this.setupResponse.error)+\" \")]):_c('div',[_c('b',[_vm._v(\"Integration Type: \")]),_vm._v(\" \"+_vm._s(this.serverOverview.integration)+\" \"),_c('br'),_c('b',[_vm._v(\"Area: \")]),_vm._v(\" \"+_vm._s(this.serverOverview.areaTitle)+\" \"),_c('br'),_c('b',[_vm._v(\"Host: \")]),_vm._v(\" \"+_vm._s(this.serverOverview.host)+\" \"),_c('br'),_c('b',[_vm._v(\"Port: \")]),_vm._v(\" \"+_vm._s(this.serverOverview.port)+\" \"),_c('br'),_c('b',[_vm._v(\"Username: \")]),_vm._v(\" \"+_vm._s(this.serverOverview.username)+\" \"),_c('br'),_c('span',[_c('b',[_vm._v(\"Password: \")]),(this.serverOverview && this.serverOverview.password)?_c('span',[_c('span',[_vm._v(_vm._s(this.showPassword ? this.serverOverview.password : \"********\"))]),_c('b-button',{staticClass:\"ml-2\",attrs:{\"size\":\"sm\",\"data-cy\":\"overview-server-show-password-btn-es\",\"id\":\"overview-server-show-password-btn\"},on:{\"click\":function () { return this$1.showPassword = !this$1.showPassword; }}},[_c('i',{staticClass:\"fa\",class:[{ 'fa-eye': !this.showPassword, 'fa-eye-slash': this.showPassword }]})])],1):_vm._e()]),_c('br'),_c('span',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"clickable\",attrs:{\"title\":this.serverOverview.extraValue}},[_c('b',[_vm._v(\"ExtraValue: \")]),_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(this.serverOverview.extraValue,100))+\" \")]),_c('br'),(_vm.canUseDevicePing)?_c('ping-button',{staticClass:\"mt-3\",attrs:{\"data-cy\":\"ping-device-btn\",\"object-id\":_vm.selectedNode.objectId,\"object-type-id\":_vm.selectedNode.objectTypeId},on:{\"health-history-changed\":_vm.shouldRefreshHistory}}):_vm._e()],1)]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Prop, Vue, Component, Watch } from \"vue-property-decorator\";\r\nimport SystemViewTreeNode from '@/types/sv-data/system-view/SystemViewTreeNode';\r\nimport api from \"@/services/api.service\";\r\nimport { Getter } from 'vuex-class';\r\nimport { UserPermissions, FeaturesList } from '@/store/types';\r\nimport { get } from 'lodash';\r\nimport { SetupSummaryResponse, ServerOverview } from '@/types/sv-data/system-view/SetupSummary';\r\nimport { truncateString } from \"@/filters\";\r\nimport PingButton from \"@/components/system-view/PingButton.vue\";\r\n\r\n@Component({\r\n\tcomponents: { PingButton },\r\n\tfilters: {\r\n\t\ttruncateString\r\n\t}\r\n})\r\nexport default class SetupOverviewServer extends Vue {\r\n\t@Prop({ required: true, default: null }) private selectedNode: SystemViewTreeNode;\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getFeaturesList: FeaturesList;\r\n\r\n\tprivate setupResponse: SetupSummaryResponse = null;\r\n\tprivate serverOverview: ServerOverview = null;\r\n\r\n\tprivate showPassword: boolean = false;\r\n\tprivate passwordButtonText: string = \"Show\";\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tawait this.retrieveServerDetails();\r\n\t}\r\n\r\n\t@Watch(\"selectedNode\", { deep: true })\r\n\tprivate async retrieveServerDetails(): Promise {\r\n\t\tif(this.selectedNode && this.canUseSystemView)\r\n\t\t{\r\n\t\t\tthis.serverOverview = null; // Reset previous display data\r\n\r\n\t\t\tthis.setupResponse = await api.getSetupSummary(this.selectedNode.objectTypeId, this.selectedNode.objectId)\r\n\r\n\t\t\tif(this.setupResponse && !this.setupResponse?.error ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.serverOverview = JSON.parse(this.setupResponse.summary) as ServerOverview\r\n\t\t\t\t}\r\n\t\t\t\tcatch(e) {\r\n\t\t\t\t\tconsole.error(\"Failed to Parse server summary: \"+ e)\r\n\t\t\t\t\tthis.setupResponse.error = \"Failed to Parse server summary\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get canUseSystemView(): boolean {\r\n return get(this.getFeaturesList, [\"SystemView\"]) && (this.getPermissions.canViewSystemView || this.getPermissions.isSystemAdmin);\r\n }\r\n\r\n\tprivate get canUseDevicePing(): boolean {\r\n\t\treturn get(this.getFeaturesList, [\"SystemView\", \"PingDeviceStatus\"]) && this.canUseSystemView;\r\n\t}\r\n\r\n\tprivate shouldRefreshHistory(): void {\r\n\t\tthis.$emit(\"should-refresh-history\");\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewServer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewServer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SetupOverviewServer.vue?vue&type=template&id=c45e265c&scoped=true\"\nimport script from \"./SetupOverviewServer.vue?vue&type=script&lang=ts\"\nexport * from \"./SetupOverviewServer.vue?vue&type=script&lang=ts\"\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 \"c45e265c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-cy\":\"health-history\"}},[_c('b-alert',{attrs:{\"show\":_vm.selectedNode == null || _vm.logs.length <= 0}},[_vm._v(\"No Recorded Health History Available\")]),(_vm.logs.length > 0)?_c('div',[_c('div',{staticClass:\"thin-scroll\",attrs:{\"id\":\"healthHistory\"}},[_c('b-table',{attrs:{\"items\":_vm.logs,\"fields\":_vm.fields,\"responsive\":\"\",\"hover\":\"\",\"stacked\":\"md\",\"head-variant\":\"dark\",\"data-cy\":\"health-history-table\"}})],1),_c('span',{attrs:{\"id\":\"loadMoreEntriesBtnWrapper\"}},[_c('b-button',{attrs:{\"id\":\"loadMoreEntriesBtn\",\"disabled\":_vm.isDisabled,\"data-cy\":\"health-history-load-more\"},on:{\"click\":_vm.fetchHealthHistory}},[_vm._v(\" \"+_vm._s(_vm.loadMoreButtonText)+\" \")]),(_vm.isDisabled)?_c('b-tooltip',{attrs:{\"target\":\"loadMoreEntriesBtnWrapper\",\"trigger\":\"hover\",\"placement\":\"right\"}},[_vm._v(\" No more entries available. \")]):_vm._e()],1)]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport SystemViewTreeNode from \"@/types/sv-data/system-view/SystemViewTreeNode\";\nimport { Prop, Vue, Component, Watch } from \"vue-property-decorator\";\nimport api from \"@/services/api.service\";\nimport { BAlert, BTable, BButton, BTooltip, BCardFooter } from \"bootstrap-vue\";\nimport { last } from \"lodash\";\nimport { HealthHistoryEntry } from \"@/types/sv-data/system-view/HealthHistory\";\nimport moment from \"moment\";\n\n@Component({\n\tcomponents: {\n\t\tBAlert,\n\t\tBTable,\n\t\tBButton,\n\t\tBTooltip,\n\t\tBCardFooter\n\t}\n})\n\nexport default class HealthHistory extends Vue\n{\n\t@Prop({ required: true, default: null }) private selectedNode: SystemViewTreeNode\n\n\tprivate hasNextPage: boolean = false;\n\tprivate logs: HealthHistoryEntry[] = [];\n\tprivate lastLogId: number | null = null;\n\tprivate loading: boolean = false;\n\tprivate fields =\n\t[\n\t\t{\n\t\t\tlabel: \"Time (UTC)\",\n\t\t\tkey: \"time\",\n\t\t\tformatter: (time: Date) => moment(time).format(\"YYYY-MM-DD h:mm:ss A\"),\n\t\t\tthStyle:\"width:175px!important\"\n\t\t},\n\t\t\"status\"\n\t];\n\n\t@Watch(\"selectedNode\", { immediate: true, deep: true })\n\tprivate async onNodeChange() : Promise\n\t{\n\t\tthis.logs = [];\n\t\tthis.hasNextPage = false;\n\t\tthis.lastLogId = null;\n\n\t\tawait this.fetchHealthHistory();\n\t}\n\n\tprivate async fetchHealthHistory() : Promise\n\t{\n\t\tif (!this.loading) {\n\t\t\tif(this.selectedNode == null)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.loading = true;\n\t\t\tconst { objectId, objectTypeId } = this.selectedNode;\n\n\t\t\ttry\n\t\t\t{\n\t\t\t\tconst {logs, hasNextPage} = await api.getSystemLogs(objectTypeId, objectId, 10, this.lastLogId);\n\t\t\t\tthis.logs = this.logs.concat(logs);\n\t\t\t\tthis.hasNextPage = hasNextPage;\n\t\t\t\tthis.lastLogId = last(this.logs)?.logId;\n\t\t\t}\n\t\t\tcatch(error)\n\t\t\t{\n\t\t\t\tthis.logs = [];\n\t\t\t\tthis.hasNextPage = false;\n\t\t\t\tthis.lastLogId = null;\n\t\t\t}\n\n\t\t\tthis.loading = false;\n\t\t}\n\t}\n\n\tprivate async mounted() : Promise\n\t{\n\t\tawait this.fetchHealthHistory();\n\t}\n\n\tprivate get isDisabled() : boolean\n\t{\n\t\tif(this.loading)\n\t\t{\n\t\t\treturn true;\n\t\t}\n\n\t\treturn !this.hasNextPage;\n\t}\n\n\tprivate get loadMoreButtonText(): string {\n\t\treturn this.isDisabled && !this.loading ? \"No more entries\" : \"Load More\"\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HealthHistory.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HealthHistory.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./HealthHistory.vue?vue&type=template&id=0a9204ee&scoped=true\"\nimport script from \"./HealthHistory.vue?vue&type=script&lang=ts\"\nexport * from \"./HealthHistory.vue?vue&type=script&lang=ts\"\nimport style0 from \"./HealthHistory.vue?vue&type=style&index=0&id=0a9204ee&prod&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 \"0a9204ee\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"setup-group-sync\",\"data-cy\":\"setup-overview-group-sync\"}},[(this.setupResponse)?_c('div',[(this.setupResponse.error)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"role\":\"alert\",\"data-cy\":\"response-error-alert\"}},[_vm._v(\" \"+_vm._s(this.setupResponse.error)+\" \")]):_c('div',[_c('span',[_c('b',[_vm._v(\"Sync System: \")]),_vm._v(\" \"+_vm._s(this.groupSyncSummary.syncSystemTitle)+\" \")]),_c('br'),_c('b',[_vm._v(\"Area: \")]),_vm._v(\" \"+_vm._s(this.groupSyncSummary.areaTitle)+\" \"),_c('br'),_c('span',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],attrs:{\"title\":this.groupSyncSummary.identifier}},[_c('b',[_vm._v(\"Identifier: \")]),_vm._v(\" \"+_vm._s(this.groupSyncSummary.identifier || _vm.truncateString(100))+\" \")]),_c('br'),_c('b',[_vm._v(\"Interval: \")]),_vm._v(\" \"+_vm._s(this.groupSyncSummary.interval)+\" \"),_c('br'),_c('b',[_vm._v(\"Enabled: \")]),_vm._v(\" \"+_vm._s(this.groupSyncSummary.enabled)+\" \"),_c('br'),_c('b',[_vm._v(\"Additional Configuration: \")]),_c('br'),_c('br'),_c('div',[_c('group-sync-config',{attrs:{\"readonly\":true,\"value\":this.groupSyncSummary.additionalConfig}})],1),_c('br'),_c('b',[_vm._v(\"Last Run: \")]),_vm._v(\" \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(this.groupSyncSummary.lastRun))+\" \"),_c('br'),_c('b',[_vm._v(\"Next Run Date: \")]),_vm._v(\" \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(this.groupSyncSummary.nextRunDate))+\" \")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Prop, Vue, Component, Watch } from \"vue-property-decorator\";\r\nimport SystemViewTreeNode from '@/types/sv-data/system-view/SystemViewTreeNode';\r\nimport api from \"@/services/api.service\";\r\nimport { Getter } from 'vuex-class';\r\nimport { UserPermissions, FeaturesList } from '@/store/types';\r\nimport { get } from 'lodash';\r\nimport { SetupSummaryResponse, GroupSyncSummary } from '@/types/sv-data/system-view/SetupSummary';\r\nimport GroupSyncConfig from '../device-setup/sync/GroupSyncConfig.vue';\r\nimport { truncateString } from \"@/filters\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"group-sync-config\": GroupSyncConfig\r\n\t},\r\n\tfilters: {\r\n\t\ttruncateString\r\n\t}\r\n})\r\nexport default class SetupOverviewGroupSync extends Vue {\r\n\t@Prop({ required: true, default: null }) private selectedNode: SystemViewTreeNode;\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter getFeaturesList: FeaturesList;\r\n\r\n\tprivate setupResponse: SetupSummaryResponse = null;\r\n\tprivate groupSyncSummary: GroupSyncSummary = null;\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tawait this.retrieveGroupSyncDetails();\r\n\t}\r\n\r\n\t@Watch(\"selectedNode\", { deep: true })\r\n\tprivate async retrieveGroupSyncDetails(): Promise {\r\n\t\tif(this.selectedNode && this.canUseSystemView)\r\n\t\t{\r\n\t\t\tthis.groupSyncSummary = null; // Reset previous display data\r\n\r\n\t\t\tthis.setupResponse = await api.getSetupSummary(this.selectedNode.objectTypeId, this.selectedNode.objectId)\r\n\r\n\t\t\tif(this.setupResponse && !this.setupResponse?.error ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.groupSyncSummary = JSON.parse(this.setupResponse.summary) as GroupSyncSummary\r\n\t\t\t\t}\r\n\t\t\t\tcatch(e) {\r\n\t\t\t\t\tconsole.error(\"Failed to Parse server summary: \"+ e)\r\n\t\t\t\t\tthis.setupResponse.error = \"Failed to Parse server summary\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get canUseSystemView(): boolean {\r\n return get(this.getFeaturesList, [\"SystemView\"]) && (this.getPermissions.canViewSystemView || this.getPermissions.isSystemAdmin);\r\n }\r\n}\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewGroupSync.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewGroupSync.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SetupOverviewGroupSync.vue?vue&type=template&id=47dee957&scoped=true\"\nimport script from \"./SetupOverviewGroupSync.vue?vue&type=script&lang=ts\"\nexport * from \"./SetupOverviewGroupSync.vue?vue&type=script&lang=ts\"\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 \"47dee957\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"setup-alarm\",\"data-cy\":\"setup-overview-alarm\"}},[(this.setupResponse)?_c('div',[(this.setupResponse.error)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"role\":\"alert\",\"data-cy\":\"response-error-alert\"}},[_vm._v(\" \"+_vm._s(this.setupResponse.error)+\" \")]):(!!this.alarmSummary)?_c('div',[_c('b-container',{staticClass:\"summary-container\",attrs:{\"data-cy\":\"setup-overview-summary-container\"}},[_c('b-row',{staticClass:\"w-100\"},[_c('b-col',{attrs:{\"data-cy\":\"b-col-system-overview\",\"cols\":_vm.getSystemOverviewCols}},[_c('div',{staticClass:\"scroll-area scroll-area-override thin-scroll\"},[_c('b',[_vm._v(\"Server Title: \")]),_vm._v(\" \"+_vm._s(this.alarmSummary.serverTitle)+\" \"),_c('br'),_c('b',[_vm._v(\"Area: \")]),_vm._v(\" \"+_vm._s(this.alarmSummary.areaTitle)+\" \"),_c('br'),_c('b',[_vm._v(\"Event Type: \")]),_vm._v(\" \"+_vm._s(this.serverTypeEventTitle)+\" \"),_c('br'),_c('b',[_vm._v(\"Action Plan: \")]),_vm._v(\" \"+_vm._s(this.alarmSummary.scriptTitle)+\" \"),_c('br'),_c('b',[_vm._v(\"Input 1: \")]),_vm._v(\" \"+_vm._s(this.alarmSummary.input1)+\" \"),_c('br'),_c('b',[_vm._v(\"Input 2: \")]),_vm._v(\" \"+_vm._s(this.alarmSummary.input2)+\" \"),_c('br'),_c('span',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip.hover\",modifiers:{\"hover\":true}}],staticClass:\"clickable\",attrs:{\"title\":this.alarmSummary.extraValue}},[_c('b',[_vm._v(\"Extra value: \")]),_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(this.alarmSummary.extraValue,100))+\" \")]),_c('br'),_c('b',[_vm._v(\"Priority: \")]),_vm._v(\" \"+_vm._s(this.alarmSummary.priority)+\" \"),_c('br'),_c('b',[_vm._v(\"Grouping: \")]),_vm._v(\" \"+_vm._s(this.alarmGrouping)+\" \"),_c('br'),_c('b',[_vm._v(\"Auto Handle: \")]),_vm._v(\" \"+_vm._s(this.alarmSummary.autoHandle ? \"Yes\" : \"Not Set\")+\" \"),_c('br'),_c('b',[_vm._v(\"Last Alarm: \")]),_vm._v(\" \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(this.alarmSummary.lastOccurred))+\" \"),_c('br'),(_vm.isCustomFieldAlarmsEnabled && !!this.alarmCustomFields && !!this.customFieldsForObject && !!this.customFieldsForObject.length)?_c('div',[_c('b',[_vm._v(\"Additional Information:\")]),_c('custom-fields-display',{class:'custom-field-alt-display',attrs:{\"customFieldTableType\":_vm.alarmCustomFieldType,\"values\":_vm.customFieldsForObject,\"allowHorizontal\":false,\"data-cy\":\"custom-fields-display\",\"maxCharacters\":this.maxCharacters}})],1):_vm._e()])]),(!_vm.isHideMapsEnabled)?_c('b-col',{attrs:{\"data-cy\":\"b-col-system-map\"}},[_c('system-view-map',{attrs:{\"locationDetails\":_vm.locationDetails,\"data-cy\":\"system-view-map\"}})],1):_vm._e()],1),_c('b-row',{staticClass:\"pb-1 mt-4\"},[_c('b-col',[(!_vm.showAutomations)?_c('div',[_c('h5',[_vm._v(\"Linked Cameras\")]),_c('b-row',{staticClass:\"container\"},[(_vm.hasLinkedCameras)?_c('div',_vm._l((this.alarmSummary.automations),function(camera){return _c('b-badge',{key:camera.deviceId,staticClass:\"m-2\",attrs:{\"variant\":\"primary\"}},[_c('label',{staticClass:\"m-1\"},[_c('i',{staticClass:\"fas fa-cctv mr-2\"}),_c('b',[_vm._v(_vm._s(camera.deviceTitle))])])])}),1):_c('div',[_vm._v(\" No Linked Cameras \")])])],1):_c('div',[_c('h5',[_vm._v(\"Linked Automations\")]),_c('b-row',{staticClass:\"container\"},[_c('vue-perfect-scrollbar',{staticClass:\"flex-shrink-1 flex-grow-1 m-t-2\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"}},[(!!_vm.alarmSummary)?_c('system-view-alarm-automations',{attrs:{\"alarmAutomations\":_vm.alarmSummary.automations,\"data-cy\":\"system-view-alarm-automations\"}}):_vm._e()],1)],1)],1)])],1)],1)],1):_vm._e()]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Prop, Mixins, Component, Watch } from \"vue-property-decorator\";\nimport api from \"@/services/api.service\";\nimport SystemViewTreeNode from '@/types/sv-data/system-view/SystemViewTreeNode';\nimport { SetupSummaryResponse, SystemViewAlarmOverview } from '@/types/sv-data/system-view/SetupSummary';\nimport { Getter, namespace } from 'vuex-class';\nimport { UserPermissions, FeaturesList } from '@/store/types';\nimport { get } from 'lodash';\nimport SystemViewMap from \"./SystemViewMap.vue\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport { MapLayerItem } from \"@/types/sv-data/system-view/MapLayerItem\";\nimport SystemViewAlarmAutomations from './SystemViewAlarmAutomations.vue';\nimport { truncateString } from \"@/filters\";\nimport HideMapMixin from \"@/mixins/HideMapMixin\";\nimport customFieldsApi from \"@/services/api.customField.service\";\nimport CustomDefinedFieldsDisplay from \"@/components/custom-fields/CustomDefinedFieldsDisplay.vue\";\nimport { CustomFieldDto, CustomFieldTableTypes, CustomFieldValues } from \"@/store/custom-fields/types\";\n\nconst CustomFields = namespace(\"customFields\");\n\n@Component({\n\tcomponents:{\n\t\t\"system-view-map\": SystemViewMap,\n\t\t\"system-view-alarm-automations\": SystemViewAlarmAutomations,\n\t\t\"custom-fields-display\": CustomDefinedFieldsDisplay,\n\t\tVuePerfectScrollbar\n\t},\n\tfilters: {\n\t\ttruncateString\n\t}\n})\nexport default class SetupOverviewAlarm extends Mixins(HideMapMixin) {\n\n\t@Prop({ required: true, default: null }) private selectedNode: SystemViewTreeNode;\n\n\t@Getter getPermissions: UserPermissions;\n\t@Getter getFeaturesList: FeaturesList;\n\n\t@CustomFields.Action private retrieveCustomFields: ({ tableType: number, live: boolean }) => Promise;\n\t@CustomFields.State private alarmCustomFields: CustomFieldDto[];\n\n\tprivate setupResponse: SetupSummaryResponse = null;\n\tprivate alarmSummary: SystemViewAlarmOverview = null;\n\tprivate locationDetails: MapLayerItem[] = [];\n\tprivate customFieldsForObject: CustomFieldValues[] = [];\n\tprivate maxCharacters: number = 27;\n\n\tprivate readonly alarmCustomFieldType = CustomFieldTableTypes.Alarm;\n\tprivate readonly defaultMaxCharacters = 27;\n\tprivate readonly maxCharacterDivider = 70\n\n\tprivate async mounted(): Promise {\n\t\tawait this.retrieveAlarmDetails();\n\n\t\twindow.addEventListener(\"resize\", this.onWindowResized);\n\t}\n\n\t@Watch(\"selectedNode\", { deep: true })\n\tprivate async retrieveAlarmDetails(): Promise {\n\t\tif(this.selectedNode && this.canUseSystemView)\n\t\t{\n\t\t\tthis.alarmSummary = null; // Reset previous display data\n\n\t\t\tthis.setupResponse = await api.getSetupSummary(this.selectedNode.objectTypeId, this.selectedNode.objectId)\n\n\t\t\tif(this.setupResponse && !this.setupResponse?.error ) {\n\t\t\t\ttry {\n\t\t\t\t\tthis.alarmSummary = JSON.parse(this.setupResponse.summary) as SystemViewAlarmOverview;\n\t\t\t\t}\n\t\t\t\tcatch (e) {\n\t\t\t\t\tconsole.error(\"Failed to Parse Alarm summary: \" + e);\n\t\t\t\t\tthis.setupResponse.error = \"Failed to Parse Alarm summary\";\n\t\t\t\t} finally {\n\t\t\t\t\tthis.updateMapData();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.isCustomFieldAlarmsEnabled) {\n\t\t\t\tthis.customFieldsForObject = await customFieldsApi.retrieveCustomFieldsForObject(this.selectedNode.objectId, CustomFieldTableTypes.Alarm);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate get canUseSystemView(): boolean {\n\t\treturn get(this.getFeaturesList, [\"SystemView\"]) && (this.getPermissions.canViewSystemView || this.getPermissions.isSystemAdmin);\n\t}\n\n\tprivate get showAutomations(): boolean {\n\t\treturn !!get(this.getFeaturesList, [\"Alarms\", \"CameraAutomation\"]);\n\t}\n\n\tprivate get isCustomFieldAlarmsEnabled(): boolean {\n\t\treturn get(this.getFeaturesList, [\"CustomFields\", \"Alarms\"]);\n\t}\n\n\tprivate get getSystemOverviewCols(): string{\n\t\treturn this.isHideMapsEnabled ? '12' : '6';\n\t}\n\n\tprivate updateMapData(): void {\n\t\tif (!!this.alarmSummary && !!this.alarmSummary.mapLocations) {\n\t\t\tthis.locationDetails = this.alarmSummary.mapLocations;\n\t\t} else {\n\t\t\tthis.locationDetails = [];\n\t\t}\n\t}\n\n\tprivate get alarmGrouping(): string {\n\t\tswitch(this.alarmSummary.isRaiseIndividual) {\n\t\t\tcase false:\n\t\t\t\treturn this.alarmSummary.isRaiseGrouped ? \"By Alarm\" : \"By Area\";\n\t\t\tcase true:\n\t\t\t\treturn \"Not Grouped\";\n\t\t\tdefault:\n\t\t\t\treturn \"Not Set\"\n\t\t}\n\t}\n\n\tprivate get hasLinkedCameras(): boolean {\n\t\treturn !!this.alarmSummary.automations && this.alarmSummary.automations.length > 0;\n\t}\n\n\tprivate get serverTypeEventTitle(): string {\n\t\treturn this.alarmSummary?.serverTypeEventTitle ?? \"Default\" ;\n\t}\n\n\tprivate onWindowResized(): void {\n\t\tthis.maxCharacters = Math.min(this.defaultMaxCharacters, window.innerWidth / this.maxCharacterDivider);\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewAlarm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewAlarm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SetupOverviewAlarm.vue?vue&type=template&id=f152d7f8&scoped=true\"\nimport script from \"./SetupOverviewAlarm.vue?vue&type=script&lang=ts\"\nexport * from \"./SetupOverviewAlarm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SetupOverviewAlarm.vue?vue&type=style&index=0&id=f152d7f8&prod&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 \"f152d7f8\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Prop, Vue, Component } from \"vue-property-decorator\";\r\nimport SystemViewTreeNode from \"@/types/sv-data/system-view/SystemViewTreeNode\";\r\nimport SetupOverviewCamera from \"./SetupOverviewCamera.vue\";\r\nimport SetupOverviewDevice from \"./SetupOverviewDevice.vue\";\r\nimport SetupOverviewAppliance from \"./SetupOverviewAppliance.vue\";\r\nimport SetupOverviewServer from \"./SetupOverviewServer.vue\";\r\nimport ObjectTypeId from '@/types/sv-data/enums/ObjectTypeIds';\r\nimport HealthHistory from \"./HealthHistory.vue\";\r\nimport SetupOverviewGroupSync from \"./SetupOverviewGroupSync.vue\";\r\nimport SetupOverviewAlarm from './SetupOverviewAlarm.vue';\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"setup-overview-camera\": SetupOverviewCamera,\r\n\t\t\"setup-overview-device\": SetupOverviewDevice,\r\n\t\t\"setup-overview-appliance\": SetupOverviewAppliance,\r\n\t\t\"setup-overview-server\" : SetupOverviewServer,\r\n\t\t\"setup-overview-groupSync\" : SetupOverviewGroupSync,\r\n\t\t\"setup-overview-alarm\": SetupOverviewAlarm,\r\n\t\t\"health-history\": HealthHistory\r\n\t}\r\n})\r\n\r\n\texport default class SetupOverview extends Vue {\r\n\t\t@Prop({ required: true, default: null }) private selectedNode: SystemViewTreeNode\r\n\r\n\t\tprivate healthHistoryIteration: number = 0;\r\n\r\n\t\tprivate get getComponentToLoad(): string{\r\n\t\t\tif(!this.selectedNode?.objectTypeId){\r\n\t\t\t\treturn \"\"\r\n\t\t\t}\r\n\r\n\t\t\tconst type = this.selectedNode.objectTypeId;\r\n\t\t\tswitch (+type) {\r\n\t\t\t\tcase ObjectTypeId.Camera:\r\n\t\t\t\t\treturn \"setup-overview-camera\";\r\n\t\t\t\tcase ObjectTypeId.Door:\r\n\t\t\t\tcase ObjectTypeId.Relay:\r\n\t\t\t\tcase ObjectTypeId.Audio:\r\n\t\t\t\t\treturn \"setup-overview-device\";\r\n\t\t\t\tcase ObjectTypeId.Appliance:\r\n\t\t\t\t\treturn \"setup-overview-appliance\";\r\n\t\t\t\tcase ObjectTypeId.SyncSystem:\r\n\t\t\t\tcase ObjectTypeId.GroupSync:\r\n\t\t\t\t\treturn \"setup-overview-groupSync\";\r\n\t\t\t\tcase ObjectTypeId.Server:\r\n\t\t\t\t\treturn \"setup-overview-server\";\r\n\t\t\t\tcase ObjectTypeId.Alarm:\r\n\t\t\t\t\treturn \"setup-overview-alarm\";\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate get selectedComponentText(): string\r\n\t\t{\r\n\t\t\tif(!this.selectedNode?.objectTypeId){\r\n\t\t\t\treturn \"\"\r\n\t\t\t}\r\n\r\n\t\t\tconst type = this.selectedNode.objectTypeId;\r\n\t\t\tswitch (+type) {\r\n\t\t\t\tcase ObjectTypeId.Camera:\r\n\t\t\t\t\treturn \"Camera: \";\r\n\t\t\t\tcase ObjectTypeId.Door:\r\n\t\t\t\t\treturn \"Door: \";\r\n\t\t\t\tcase ObjectTypeId.Relay:\r\n\t\t\t\t\treturn \"Relay: \";\r\n\t\t\t\tcase ObjectTypeId.Audio:\r\n\t\t\t\t\treturn \"Audio: \";\r\n\t\t\t\tcase ObjectTypeId.Appliance:\r\n\t\t\t\t\treturn \"Appliance: \";\r\n\t\t\t\tcase ObjectTypeId.SyncSystem:\r\n\t\t\t\t\treturn \"Sync System: \";\r\n\t\t\t\tcase ObjectTypeId.GroupSync:\r\n\t\t\t\t\treturn \"Sync: \";\r\n\t\t\t\tcase ObjectTypeId.Server:\r\n\t\t\t\t\treturn \"Device: \";\r\n\t\t\t\tcase ObjectTypeId.Alarm:\r\n\t\t\t\t\treturn \"Alarm: \";\r\n\t\t\t\tdefault:\r\n\t\t\t\t\treturn \"Item:\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tprivate performHealthHistoryRefresh(): void {\r\n\t\t\t// Increase the health history component's key value to force it to update\r\n\t\t\t// without having to refresh this entire component\r\n\t\t\tthis.healthHistoryIteration += 1;\r\n\t\t}\r\n\t}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SetupOverview.vue?vue&type=template&id=ea8a4b3c&scoped=true\"\nimport script from \"./SetupOverview.vue?vue&type=script&lang=ts\"\nexport * from \"./SetupOverview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SetupOverview.vue?vue&type=style&index=0&id=ea8a4b3c&prod&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 \"ea8a4b3c\",\n null\n \n)\n\nexport default component.exports","\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport SystemViewTreeNode from \"@/types/sv-data/system-view/SystemViewTreeNode\";\r\nimport SystemViewTree from \"@/components/system-view/SystemViewTree.vue\";\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\nimport SetupOverview from '@/components/system-view/SetupOverview.vue';\r\n\r\nconst SystemHealth = namespace(\"systemHealth\");\r\n\r\n@Component({\r\n\tcomponents:{\r\n\t\tSystemViewTree,\r\n\t\tNavHeader,\r\n\t\t\"setup-overview\": SetupOverview\r\n\t}\r\n})\r\nexport default class SystemView extends Vue {\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@SystemHealth.Action retrieveHealthStatuses: (refreshCache: boolean) => Promise;\r\n\r\n\tprivate selectedItem: SystemViewTreeNode = null;\r\n\tprivate canViewSystemView: boolean = false;\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tthis.canViewSystemView = this.getPermissions.canViewSystemView || this.getPermissions.isSystemAdmin;\r\n\t\t// if user does not have access take them to the event queue\r\n\t\tif (!this.isSystemViewEnabled || !this.canViewSystemView) {\r\n\t\t\tthis.$router.push(\"/event-queue\");\r\n\t\t}\r\n\t\tawait this.retrieveHealthStatuses(true);\r\n\t}\r\n\r\n\tprivate updateSelectedItem(selectedItem: SystemViewTreeNode): void {\r\n\t\tthis.selectedItem = selectedItem;\r\n\t}\r\n\r\n\tprivate get isSystemViewEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"SystemView\"]);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemView.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemView.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SystemView.vue?vue&type=template&id=1912d50f&scoped=true\"\nimport script from \"./SystemView.vue?vue&type=script&lang=ts\"\nexport * from \"./SystemView.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SystemView.vue?vue&type=style&index=0&id=1912d50f&prod&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 \"1912d50f\",\n null\n \n)\n\nexport default component.exports","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\",attrs:{\"data-cy\":\"external-map-layer-container\"}},[_c('nav-header',{attrs:{\"title\":\"External Map Layer\"}}),(_vm.isExternalMapLayersEnabled)?_c('b-container',{staticClass:\"px-0\",attrs:{\"fluid\":\"\",\"data-cy\":\"external-map-layer-setup\"}},[_c('b-row',{staticClass:\"px-4 pt-2\"},[_c('b-col',{staticClass:\"external-map-layer-container\",attrs:{\"cols\":\"6\"}},[_c('b-input-group',{scopedSlots:_vm._u([(_vm.canEditExternalMapLayers)?{key:\"append\",fn:function(){return [_c('button',{staticClass:\"btn btn-primary ml-2\",attrs:{\"data-cy\":\"add-new-external-map-layer\"},on:{\"click\":function($event){_vm.mapLayerModal = !_vm.mapLayerModal}}},[_vm._v(\" Add External Map Layer \")])]},proxy:true}:null],null,true)},[_c('b-form-input',{attrs:{\"data-cy\":\"filter-query\",\"type\":\"search\",\"placeholder\":\"Search...\",\"max\":\"250\"},model:{value:(_vm.filterSearch),callback:function ($$v) {_vm.filterSearch=$$v},expression:\"filterSearch\"}})],1),_c('b-table',{staticClass:\"mt-4 table-container\",attrs:{\"fields\":_vm.fields,\"items\":_vm.layersList,\"hover\":\"\",\"head-variant\":\"dark\",\"id\":\"external-map-layer-table\",\"data-cy\":\"external-map-layer-table\",\"responsive\":\"\",\"striped\":\"\",\"busy\":_vm.mapLayerTableIsBusy,\"show-empty\":\"\",\"stacked\":\"lg\",\"filter\":_vm.filterSearch},scopedSlots:_vm._u([{key:\"cell(url)\",fn:function(row){return [_vm._v(\" \"+_vm._s(_vm.ellipseUrl(row.item))+\" \")]}},{key:\"cell(actions)\",fn:function(row){return [_c('i',{class:{\r\n\t\t\t\t\t\t\t'fas fa-edit e-click px-2':_vm.canEditExternalMapLayers,\r\n\t\t\t\t\t\t\t'fas fa-eye e-click px-2':!_vm.canEditExternalMapLayers,\r\n\t\t\t\t\t\t\t},attrs:{\"data-cy\":\"external-map-layer-edit-view\"},on:{\"click\":function($event){return _vm.setSelectMapLayer(row.item)}}}),(_vm.canEditExternalMapLayers)?_c('i',{staticClass:\"fas fa-trash e-click\",attrs:{\"data-cy\":\"external-map-layer-delete\"},on:{\"click\":function($event){return _vm.setDeleteMapLayer(row.item)}}}):_vm._e()]}},{key:\"cell(displaying)\",fn:function(row){return [_c('i',{class:{\r\n\t\t\t\t\t\t\t\t'fas fa-eye e-click text-success': row.item.displaying,\r\n\t\t\t\t\t\t\t\t'fas fa-eye-slash e-click text-danger': !row.item.displaying,\r\n\t\t\t\t\t\t\t},attrs:{\"data-cy\":\"external-map-layer-toggle-visible\"},on:{\"click\":function($event){return _vm.toggleLayerVisible(row.item)}}})]}},{key:\"table-busy\",fn:function(){return [_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1)]},proxy:true}],null,false,1901011103)})],1),_c('b-col',{staticClass:\"mt-3 external-map-layer-map\",attrs:{\"cols\":\"6\"}},[_c('enhanced-single-map',{ref:\"enhancedMap\",attrs:{\"id\":\"enhancedMap\",\"router\":_vm.$router,\"alwayShowMap\":true,\"showMapToggle\":false,\"data-cy\":\"ExternalMapLayerSetup-Map\"}})],1)],1),_c('external-map-layer-modal',{attrs:{\"selectedMapLayer\":_vm.selectedMapLayer,\"visible\":_vm.mapLayerModal,\"readonly\":!_vm.canEditExternalMapLayers,\"layerTitles\":_vm.getMapLayerTitles,\"enhancedMap\":_vm.$refs.enhancedMap},on:{\"toggle-modal\":function () { return (_vm.mapLayerModal = false); },\"external-map-layer\":function () { return (_vm.selectedMapLayer = null); }}}),_c('delete-external-map-layer-modal',{attrs:{\"selectedMapLayer\":_vm.selectedMapLayer,\"visible\":_vm.deleteLayerModal},on:{\"toggle-modal\":function () { return (_vm.deleteLayerModal = false); },\"delete-external-map-layer\":function () { return (_vm.selectedMapLayer = null); }}})],1):_c('div',{staticClass:\"card-body d-flex row\",attrs:{\"data-cy\":\"feature-disabled\"}},[_c('p',[_vm._v(\"External Map Layers is not enabled or you do not have permission to access it\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canViewProperties)?_c('div',{staticClass:\"card-body\",attrs:{\"data-cy\":\"external-map-layer-parameters\"}},[_c('b-table',{staticClass:\"parameters-table\",attrs:{\"data-cy\":\"parameters-table\",\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"items\":this.getTableItems(),\"fields\":this.getTableFields(),\"busy\":_vm.isLoading,\"hover\":\"\",\"head-variant\":\"dark\"},scopedSlots:_vm._u([{key:\"table-busy\",fn:function(){return [_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1)]},proxy:true},{key:\"cell(defaultValue)\",fn:function(row){return [_c('b-form-input',{attrs:{\"readonly\":!_vm.canEditProperties && _vm.isSetup,\"name\":\"input\"},model:{value:(row.item.defaultValue),callback:function ($$v) {_vm.$set(row.item, \"defaultValue\", $$v)},expression:\"row.item.defaultValue\"}})]}},{key:\"cell(isVisible)\",fn:function(row){return [_c('b-form-checkbox',{attrs:{\"disabled\":!_vm.canEditProperties && _vm.isSetup,\"name\":\"checkbox-checked\"},model:{value:(row.item.isVisible),callback:function ($$v) {_vm.$set(row.item, \"isVisible\", $$v)},expression:\"row.item.isVisible\"}})]}}],null,false,2705373325)})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n// Vue\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { Getter } from \"vuex-class\";\r\n\r\n// Types\r\nimport { UserPermissions, FeaturesList, VueBootstrapField } from \"@/store/types\";\r\nimport { ExternalMapLayerParameter } from \"@/store/external-map-layers/types\";\r\n\r\n// Third Party\r\nimport { get } from \"lodash\";\r\n\r\n// Sv Child components\r\nimport SureViewIcon from \"@/components/SureViewIcon.vue\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"sureview-icon\": SureViewIcon,\r\n\t}\r\n})\r\nexport default class ExternalMapLayerPropertiesSetup extends Vue {\r\n\t@Prop({ type: Array, default: () => [] }) private layerParameters: ExternalMapLayerParameter[];\r\n\t@Prop({ type: Boolean, default: true }) private isLoading: boolean;\r\n\t@Prop({ type: Boolean, default: true }) private isReadOnly: boolean;\r\n\t@Prop({ type: Boolean, default: false }) private isSetup: boolean;\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t// If feature is on / off\r\n\tprivate get isExternalMapLayerPropertiesEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"ExternalMapLayers\", \"AutoSyncAttributes\"]);\r\n\t}\r\n\r\n\tprivate get canEditProperties(): boolean {\r\n\t\treturn (\r\n\t\t\t!this.isReadOnly &&\r\n\t\t\tthis.isExternalMapLayerPropertiesEnabled &&\r\n\t\t\tthis.getPermissions && this.getPermissions.canEditExternalMapLayers\r\n\t\t);\r\n\t}\r\n\r\n\tprivate get canViewProperties(): boolean {\r\n\t\treturn this.getPermissions.canViewExternalMapLayers && this.isExternalMapLayerPropertiesEnabled;\r\n\t}\r\n\r\n\tprivate getTableFields(): VueBootstrapField[] {\r\n\t\t// Gets the appropriate fields\r\n\t\tif (this.layerParameters && this.layerParameters.length > 0) {\r\n\t\t\tlet fields: VueBootstrapField[] = [{ key: \"title\", label: \"Title\", sortable: true }];\r\n\t\t\tif (this.isSetup == true) {\r\n\t\t\t\tfields.push({ key: \"type\", label: \"Type\", sortable: true });\r\n\t\t\t\tfields.push({ key: \"isVisible\", label: \"IsVisible\", sortable: true });\r\n\t\t\t}\r\n\t\t\tfields.push({ key: \"defaultValue\", label: this.isSetup == true ? \"Default Value\" : \"Value\" });\r\n\r\n\t\t\treturn fields;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getTableItems(): ExternalMapLayerParameter[] {\r\n\t\t// Filterer out table items that arent set to be visible outside of setup\r\n\t\tif (!this.isSetup) {\r\n\t\t\treturn this.layerParameters.filter(f => f.isVisible);\r\n\t\t}\r\n\t\treturn this.layerParameters;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerPropertiesSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerPropertiesSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ExternalMapLayerPropertiesSetup.vue?vue&type=template&id=b367731a&scoped=true\"\nimport script from \"./ExternalMapLayerPropertiesSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./ExternalMapLayerPropertiesSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ExternalMapLayerPropertiesSetup.vue?vue&type=style&index=0&id=b367731a&prod&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 \"b367731a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-modal',{attrs:{\"visible\":_vm.visible,\"title\":_vm.readonly == true ? 'External Map Layer' : _vm.isNew ? 'New External Map Layer' : 'Update External Map Layer',\"size\":\"lg\",\"body-class\":\"modal-card-body modal-overflow modal-container sv-scroll\",\"static\":\"\",\"data-cy\":\"external-map-layer-modal\",\"centered\":\"\",\"scrollable\":\"\"},on:{\"hidden\":function($event){return _vm.closeModal()}},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('div',{staticClass:\"w-100\"},[(!_vm.isNew)?_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"btn-delete-contact\",\"disabled\":_vm.readonly},on:{\"click\":function($event){_vm.deleteLayerModal = !_vm.deleteLayerModal}}},[_vm._v(\" Delete \")]):_vm._e(),_c('b-button',{staticClass:\"float-right mx-1\",attrs:{\"data-cy\":\"btn-save-contact\",\"variant\":\"primary\",\"disabled\":_vm.$v.currentExternalMapLayer.$invalid || _vm.$v.hasDataChanged.$invalid || _vm.readonly},on:{\"click\":function($event){return _vm.saveExternalMapLayer()}}},[_vm._v(\" Save \")]),_c('b-button',{staticClass:\"float-right mx-1\",attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){return _vm.closeModal()}}},[_vm._v(\"Close\")])],1)]},proxy:true}])},[(_vm.currentExternalMapLayer && _vm.isExternalMapLayersEnabled)?_c('b-row',{staticClass:\"py-4\",attrs:{\"data-cy\":\"external-map-layer-modal-container\"}},[_c('b-col',{staticClass:\"py-2 mx-auto\",attrs:{\"cols\":\"11\"}},[_c('b-form-group',{attrs:{\"label-for\":\"Title\"}},[[_vm._v(\" Title: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])],_c('b-form-input',{attrs:{\"data-cy\":\"title-input\",\"type\":\"text\",\"placeholder\":\"Title\",\"disabled\":_vm.readonly},model:{value:(_vm.currentExternalMapLayer.title),callback:function ($$v) {_vm.$set(_vm.currentExternalMapLayer, \"title\", $$v)},expression:\"currentExternalMapLayer.title\"}}),(_vm.titleAlreadyExists)?_c('div',{staticClass:\"text-danger\"},[_vm._v(\"External Map Layer title already in use\")]):_vm._e()],2),_c('b-form-group',{attrs:{\"label-for\":\"type\"}},[[_vm._v(\" Type: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])],_c('vue-select',{attrs:{\"data-cy\":\"type-select\",\"options\":_vm.externalMapLayerTypes,\"reduce\":function (exl) { return exl.externalMapLayerTypeId; },\"label\":\"title\",\"disabled\":_vm.readonly,\"placeholder\":\"Select an external map layer type\"},on:{\"input\":function($event){return _vm.typeChange()}},model:{value:(_vm.currentExternalMapLayer.externalMapLayerTypeID),callback:function ($$v) {_vm.$set(_vm.currentExternalMapLayer, \"externalMapLayerTypeID\", $$v)},expression:\"currentExternalMapLayer.externalMapLayerTypeID\"}})],2),_c('b-form-group',{attrs:{\"label-for\":\"url\"}},[[_vm._v(\" URL: \")],_c('b-form-input',{attrs:{\"data-cy\":\"url-input\",\"type\":\"text\",\"placeholder\":\"URL\",\"disabled\":_vm.readonly},on:{\"input\":function($event){return _vm.urlChangeDebounce()}},model:{value:(_vm.currentExternalMapLayer.url),callback:function ($$v) {_vm.$set(_vm.currentExternalMapLayer, \"url\", $$v)},expression:\"currentExternalMapLayer.url\"}})],2),_c('b-form-group',{attrs:{\"label-for\":\"clickHandler\"}},[[_vm._v(\" Click Handler: \")],_c('vue-select',{attrs:{\"data-cy\":\"click-handler-select\",\"options\":_vm.clickHandlerList,\"label\":\"label\",\"disabled\":_vm.readonly,\"placeholder\":\"None selected\"},model:{value:(_vm.selectedClickHandler),callback:function ($$v) {_vm.selectedClickHandler=$$v},expression:\"selectedClickHandler\"}})],2),(_vm.selectedClickHandler)?_c('div',[_c('b-form-group',{attrs:{\"label-for\":\"attribute\"}},[[_vm._v(\" Click Handler Attribute: \")],_c('b-form-input',{attrs:{\"data-cy\":\"attribute-input\",\"type\":\"text\",\"placeholder\":\"Attribute name\",\"disabled\":_vm.readonly},model:{value:(_vm.currentExternalMapLayer.customClickHandlerAttribute),callback:function ($$v) {_vm.$set(_vm.currentExternalMapLayer, \"customClickHandlerAttribute\", $$v)},expression:\"currentExternalMapLayer.customClickHandlerAttribute\"}})],2)],1):_vm._e(),_c('b-form-group',{attrs:{\"label-for\":\"refreshInterval\"}},[[_vm._v(\" Refresh Interval: \")],_c('b-form-input',{attrs:{\"data-cy\":\"refreshInterval-input\",\"type\":\"number\",\"placeholder\":\"Refresh Interval in whole minutes\",\"min\":\"1\",\"step\":\"1\",\"formatter\":_vm.refreshIntervalFormatter,\"disabled\":_vm.readonly},model:{value:(_vm.currentExternalMapLayer.refreshInterval),callback:function ($$v) {_vm.$set(_vm.currentExternalMapLayer, \"refreshInterval\", $$v)},expression:\"currentExternalMapLayer.refreshInterval\"}})],2),_c('br'),_c('b-form-group',{staticClass:\"pl-4\",attrs:{\"label-for\":\"defaultVisible\"}},[_c('b-form-checkbox',{attrs:{\"data-cy\":\"defaultVisible-checkbox\",\"id\":\"defaultVisible-check\",\"disabled\":_vm.readonly},model:{value:(_vm.currentExternalMapLayer.defaultVisible),callback:function ($$v) {_vm.$set(_vm.currentExternalMapLayer, \"defaultVisible\", $$v)},expression:\"currentExternalMapLayer.defaultVisible\"}},[_vm._v(\" Visible By Default \")])],1),_c('b-form-group',{staticClass:\"pl-4\",attrs:{\"data-cy\":\"isSecure-formgroup\",\"label-for\":\"isSecure\"}},[_c('b-form-checkbox',{attrs:{\"data-cy\":\"isSecure-checkbox\",\"id\":\"isSecure-check\",\"disabled\":_vm.readonly},on:{\"input\":function($event){return _vm.secureChange()}},model:{value:(_vm.isSecure),callback:function ($$v) {_vm.isSecure=$$v},expression:\"isSecure\"}},[_vm._v(\" Secure Layer \")]),_c('br'),(_vm.isSecure)?_c('div',[[_vm._v(\" Username: \")],_c('b-form-input',{attrs:{\"data-cy\":\"username-input\",\"type\":\"text\",\"placeholder\":\"Username\",\"disabled\":_vm.readonly},on:{\"input\":function($event){return _vm.urlChangeDebounce()}},model:{value:(_vm.currentExternalMapLayer.username),callback:function ($$v) {_vm.$set(_vm.currentExternalMapLayer, \"username\", $$v)},expression:\"currentExternalMapLayer.username\"}}),[_vm._v(\" Password: \")],_c('b-form-input',{attrs:{\"data-cy\":\"password-input\",\"type\":\"password\",\"placeholder\":\"Password\",\"disabled\":_vm.readonly},on:{\"input\":function($event){return _vm.urlChangeDebounce()}},model:{value:(_vm.currentExternalMapLayer.password),callback:function ($$v) {_vm.$set(_vm.currentExternalMapLayer, \"password\", $$v)},expression:\"currentExternalMapLayer.password\"}}),(_vm.currentExternalMapLayer.externalMapLayerTypeID == 3)?_c('div',[[_vm._v(\" Token Service URL: \")],_c('b-form-input',{attrs:{\"data-cy\":\"token-service-input\",\"type\":\"text\",\"placeholder\":\"Token service URL\",\"disabled\":_vm.readonly},on:{\"input\":function($event){return _vm.urlChangeDebounce()}},model:{value:(_vm.currentExternalMapLayer.tokenServiceUrl),callback:function ($$v) {_vm.$set(_vm.currentExternalMapLayer, \"tokenServiceUrl\", $$v)},expression:\"currentExternalMapLayer.tokenServiceUrl\"}})],2):_vm._e()],2):_vm._e()],1),(\n\t\t\t\t\t\t_vm.isExternalMapLayerPropertiesEnabled &&\n\t\t\t\t\t\t_vm.currentExternalMapLayer.externalMapLayerTypeID == 3 &&\n\t\t\t\t\t\tthis.currentExternalMapLayer.url &&\n\t\t\t\t\t\tthis.currentExternalMapLayer.parameters &&\n\t\t\t\t\t\t_vm.currentExternalMapLayer.parameters.length > 0\n\t\t\t\t\t)?_c('b-form-group',[[_vm._v(\"Properties:\")],_c('external-properties',{attrs:{\"data-cy\":\"external-properties\",\"layerParameters\":_vm.currentExternalMapLayer.parameters,\"isReadOnly\":_vm.readonly,\"isLoading\":_vm.isLoading,\"isSetup\":true}})],2):_vm._e()],1)],1):_vm._e()],1),_c('delete-external-map-layer-modal',{attrs:{\"selectedMapLayer\":_vm.selectedMapLayer,\"visible\":_vm.deleteLayerModal},on:{\"delete-successful\":function () { return _vm.closeModal(); },\"toggle-modal\":function () { return (_vm.deleteLayerModal = false); },\"external-map-layer\":function (closeModal) { return (_vm.selectedMapLayer = null); }}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"header-class\":\"delete-confirm-modal\",\"visible\":_vm.visible,\"data-cy\":\"delete-external-map-layer-modal\"},on:{\"hidden\":function($event){return _vm.closeModal()}}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header\"},[_c('i',{staticClass:\"fas fa-trash d-inline pr-2 text-danger\"}),_c('h4',{staticClass:\"d-inline\"},[_vm._v(\"Delete External Map Layer\")])])]),(_vm.selectedMapLayer)?_c('div',{staticClass:\"d-flex justify-content-between align-items-center\"},[_c('h5',[_vm._v(\"Do you want to delete External Map Layer: \"+_vm._s(_vm.selectedMapLayer.title)+\" ?\")])]):_vm._e(),_c('template',{slot:\"modal-footer\"},[_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"btn-delete-external-map-layer\"},on:{\"click\":function($event){return _vm.removeExternalMapLayer()}}},[_vm._v(\"Delete\")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"btn-close-delete-modal\"},on:{\"click\":function($event){return _vm.closeModal()}}},[_vm._v(\"Cancel\")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n// Vue\r\nimport { Component, Vue, Prop, Emit } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\n\r\nimport { validationMixin } from \"vuelidate\";\r\n// Components\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport vSelect from \"vue-select\";\r\nimport { ExternalMapLayer } from \"@/store/external-map-layers/types\";\r\n\r\n// Namespaces\r\nconst ExternalMapLayerStore = namespace(\"externalMapLayers\");\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tvalidations: {},\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t},\r\n})\r\nexport default class DeleteExternalMapLayerModal extends Vue {\r\n\t@Prop({ default: null, type: Object }) selectedMapLayer: ExternalMapLayer;\r\n\t@Prop({ default: false, type: Boolean }) visible: boolean;\r\n\r\n\t@ExternalMapLayerStore.Action deleteExternalMapLayer: (externalMapLayerID: number) => Promise;\r\n\t@ExternalMapLayerStore.Action updateExternalMapLayerVisibilityForDelete: (externalMapLayerId: number) => Promise;\r\n\r\n\t@Emit(\"toggle-modal\")\r\n\t@Emit(\"delete-external-map-layer\")\r\n\tprivate closeModal(): void {}\r\n\r\n\tprivate async removeExternalMapLayer(): Promise {\r\n\t\tawait this.updateExternalMapLayerVisibilityForDelete(this.selectedMapLayer.externalMapLayerID);\r\n\t\tawait this.deleteExternalMapLayer(this.selectedMapLayer.externalMapLayerID);\r\n\t\tthis.closeModal();\r\n\t\tthis.$emit(\"delete-successful\");\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteExternalMapLayerModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteExternalMapLayerModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeleteExternalMapLayerModal.vue?vue&type=template&id=302d648e&scoped=true\"\nimport script from \"./DeleteExternalMapLayerModal.vue?vue&type=script&lang=ts\"\nexport * from \"./DeleteExternalMapLayerModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeleteExternalMapLayerModal.vue?vue&type=style&index=0&id=302d648e&prod&scoped=true&lang=css\"\nimport style1 from \"./DeleteExternalMapLayerModal.vue?vue&type=style&index=1&id=302d648e&prod&lang=css\"\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 \"302d648e\",\n null\n \n)\n\nexport default component.exports","\r\n// Vue\r\nimport { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\n\r\n// Third Party\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required, requiredIf, minLength, maxLength, minValue, not } from \"vuelidate/lib/validators\";\r\nimport { isEqual, debounce, get } from \"lodash\";\r\n\r\n// Components\r\nimport vSelect from \"vselect3\";\r\nimport { ExternalMapLayer, ExternalMapLayerParameter, ExternalMapLayerType, ExternalMapLayerTypeID } from \"@/store/external-map-layers/types\";\r\nimport ExternalMapLayerPropertiesSetup from \"@/components/external-map-layer/ExternalMapLayerPropertiesSetup.vue\";\r\nimport DeleteExternalMapLayerModal from \"@/components/external-map-layer/DeleteExternalMapLayerModal.vue\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { getDebouncePeriod } from \"@/utils/debounce-helper\";\r\n\r\n// Namespaces\r\nconst ExternalMapLayerStore = namespace(\"externalMapLayers\");\r\nconst SettingsStore = namespace(\"settings\");\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\tcurrentExternalMapLayer: {\r\n\t\t\ttitle: {\r\n\t\t\t\trequired,\r\n\t\t\t\tminLength: minLength(1),\r\n\t\t\t\tmaxLength: maxLength(50),\r\n\t\t\t\tdoesntExist: not(function(value) {\r\n\t\t\t\t\treturn this.layerTitles.includes(this.currentExternalMapLayer.title) && this.isNew;\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\texternalMapLayerTypeID: {\r\n\t\t\t\trequired,\r\n\t\t\t\tminLength: minValue(1) // Unselected is 0\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\thasDataChanged: {\r\n\t\t\trequired: requiredIf(function() {\r\n\t\t\t\t!isEqual(this.isNew ? this.emlTemplate : this.selectedMapLayer, this.currentExternalMapLayer);\r\n\t\t\t})\r\n\t\t}\r\n\t},\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"external-properties\": ExternalMapLayerPropertiesSetup,\r\n\t\t\"delete-external-map-layer-modal\": DeleteExternalMapLayerModal\r\n\t}\r\n})\r\nexport default class ExternalMapLayerModal extends Vue {\r\n\t@Prop({ default: null, type: Object }) selectedMapLayer: ExternalMapLayer;\r\n\t@Prop({ default: false, type: Boolean }) visible: boolean;\r\n\t@Prop({ default: true, type: Boolean }) readonly: boolean;\r\n\t@Prop({ default: [], type: Array }) layerTitles: string[];\r\n\t@Prop({ default: null }) enhancedMap: any;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\t@ExternalMapLayerStore.State externalMapLayerTypes!: ExternalMapLayerType[];\r\n\t@ExternalMapLayerStore.Action createOrUpdateExternalMapLayer: (externalMapLayer: ExternalMapLayer) => Promise;\r\n\r\n\tprivate deleteLayerModal: boolean = false;\r\n\tprivate isNew: boolean = true;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate isReadOnly: boolean = false;\r\n\tprivate isSecure: boolean = false;\r\n\r\n\t// A list of functions to be called by the click handler when the items displayed by the layer is selected and the name of the attribute to be passed into the function\r\n\tprivate clickHandlerList = [\r\n\t\t{ label: \"View Cameras\", functionName: \"viewSelectedCamera\" },\r\n\t\t{ label: \"FirstTwo\", functionName: \"firstTwoIntegration\" }\r\n\t];\r\n\r\n\tprivate selectedClickHandler = null;\r\n\r\n\tprivate readonly emlTemplate: ExternalMapLayer = {\r\n\t\ttitle: \"\",\r\n\t\turl: \"\",\r\n\t\tdataObjectURL: \"\",\r\n\t\tparameters: [],\r\n\t\tcustomClickHandler: null,\r\n\t\tcustomClickHandlerAttribute: null,\r\n\t\texternalMapLayerTypeID: 0,\r\n\t\texternalMapLayerID: 0,\r\n\t\tdefaultVisible: false,\r\n\t\tgroupID: 0,\r\n\t\tdisplaying: false,\r\n\t\tusername: null,\r\n\t\tpassword: null,\r\n\t\ttokenServiceUrl: null,\r\n\t\trefreshInterval: null\r\n\t};\r\n\r\n\tprivate currentExternalMapLayer: ExternalMapLayer = { ...this.emlTemplate };\r\n\r\n\t@Emit(\"toggle-modal\")\r\n\t@Emit(\"external-map-layer\")\r\n\tprivate closeModal(): void {\r\n\t\tthis.currentExternalMapLayer = { ...this.emlTemplate };\r\n\t\tthis.selectedClickHandler = null;\r\n\t}\r\n\r\n\t@Watch(\"visible\")\r\n\tprivate modalToggle(toggle: boolean) {\r\n\t\tthis.isSecure = false;\r\n\t\tthis.isNew = !this.selectedMapLayer;\r\n\t\tif (toggle) {\r\n\t\t\tthis.currentExternalMapLayer = this.isNew ? { ...this.emlTemplate } : { ...this.selectedMapLayer };\r\n\r\n\t\t\tthis.isSecure =\r\n\t\t\t\tthis.selectedMapLayer &&\r\n\t\t\t\tthis.selectedMapLayer.username !== undefined &&\r\n\t\t\t\tthis.selectedMapLayer.username !== null\r\n\t\t\t\t\t? true\r\n\t\t\t\t\t: false;\r\n\t\t\tif (this.selectedMapLayer) {\r\n\t\t\t\tthis.selectedClickHandler = this.clickHandlerList.find(\r\n\t\t\t\t\tf => f.functionName == this.selectedMapLayer.customClickHandler\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tthis.urlChange();\r\n\t\t} else {\r\n\t\t\tthis.currentExternalMapLayer = { ...this.emlTemplate };\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async saveExternalMapLayer(): Promise {\r\n\t\tif (this.selectedClickHandler) {\r\n\t\t\tthis.currentExternalMapLayer.customClickHandler = this.selectedClickHandler.functionName;\r\n\t\t}\r\n\t\t//sudo call action to save\r\n\t\tawait this.createOrUpdateExternalMapLayer(this.currentExternalMapLayer);\r\n\t\t//sudo call close modal method\r\n\t\tthis.closeModal();\r\n\t}\r\n\r\n\tprivate async urlChange(): Promise {\r\n\t\tif (this.currentExternalMapLayer.url) {\r\n\t\t\tthis.currentExternalMapLayer.url = this.currentExternalMapLayer.url.trim();\r\n\t\t}\r\n\r\n\t\tlet tokenServiceUrl = this.currentExternalMapLayer.tokenServiceUrl;\r\n\r\n\t\tif (tokenServiceUrl) {\r\n\t\t\ttokenServiceUrl = tokenServiceUrl.trim();\r\n\t\t\tthis.currentExternalMapLayer.tokenServiceUrl = tokenServiceUrl;\r\n\t\t}\r\n\t\t// We only need to query for properties if we are an ArcGis layer and properties are enabled\r\n\t\tif (\r\n\t\t\tthis.isExternalMapLayerPropertiesEnabled &&\r\n\t\t\tthis.currentExternalMapLayer.externalMapLayerTypeID === ExternalMapLayerTypeID.ArcGIS &&\r\n\t\t\tthis.currentExternalMapLayer.url\r\n\t\t) {\r\n\t\t\tif (!this.isSecure) {\r\n\t\t\t\tawait this.setArcGisParametersOnLayer();\r\n\t\t\t}\r\n\t\t\t// ensure we have all credentials before attempting to query if this layer is secure\r\n\t\t\telse if (\r\n\t\t\t\tthis.currentExternalMapLayer.username &&\r\n\t\t\t\tthis.currentExternalMapLayer.password &&\r\n\t\t\t\tthis.currentExternalMapLayer.tokenServiceUrl\r\n\t\t\t) {\r\n\t\t\t\tawait this.setArcGisParametersOnLayer();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate urlChangeDebounce = debounce(async () => await this.urlChange(), getDebouncePeriod());\r\n\r\n\tprivate typeChange(): void {\r\n\t\t// FirstTwo Layer should be secure\r\n\t\tif (this.currentExternalMapLayer.externalMapLayerTypeID == ExternalMapLayerTypeID.FirstTwo) {\r\n\t\t\tthis.isSecure = true;\r\n\t\t} else {\r\n\t\t\tthis.isSecure = false;\r\n\t\t}\r\n\r\n\t\t// If we change the type and were not ArgGis layer, empty parameters otherwise get the parameters\r\n\t\tif (this.currentExternalMapLayer.externalMapLayerTypeID != ExternalMapLayerTypeID.ArcGIS) {\r\n\t\t\tthis.currentExternalMapLayer.parameters = [];\r\n\t\t} else {\r\n\t\t\tthis.urlChange();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async secureChange(): Promise {\r\n\t\t// If we toggle the secure layer off clear the relevant fields\r\n\t\tif (!this.isSecure) {\r\n\t\t\tthis.currentExternalMapLayer.username = null;\r\n\t\t\tthis.currentExternalMapLayer.password = null;\r\n\t\t\tthis.currentExternalMapLayer.tokenServiceUrl = null;\r\n\r\n\t\t\t// Requery to update parameters\r\n\t\t\tthis.currentExternalMapLayer.parameters = [];\r\n\t\t\tawait this.setArcGisParametersOnLayer();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getArcGisParameters(requestedLayer: ExternalMapLayer): Promise {\r\n\t\t// ToDo: Will this impact being able to display ArcGIS layers?\r\n\t\t/* const prefRequest: PrefTypeRequest = {\r\n\t\t\t\tprefTypeID: PrefTypesEnum.ESRIAuthenticationPostRestType,\r\n\t\t\t\tgroupID: null\r\n\t\t\t}\r\n\r\n\t\tconst prefEnabled = this.getPrefBoolValue(prefRequest);\r\n\t\tconst data = await this.enhancedMap.getArcGisParameters(requestedLayer, false);\r\n\t\treturn data;*/\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate async setArcGisParametersOnLayer(): Promise {\r\n\t\tthis.isLoading = true;\r\n\t\tlet parameters: any = await this.getArcGisParameters(this.currentExternalMapLayer);\r\n\t\ttry {\r\n\t\t\tif (parameters && parameters.fields) {\r\n\t\t\t\t// Clear existing parameters if new to prevent keeping outdated params when querying an existing url\r\n\t\t\t\tif (this.isNew) {\r\n\t\t\t\t\tthis.currentExternalMapLayer.parameters = [];\r\n\t\t\t\t}\r\n\t\t\t\t// For every parameter received from the api create a new Parameter object for the layer\r\n\t\t\t\tparameters.fields.forEach(parameter => {\r\n\t\t\t\t\tif (!this.currentExternalMapLayer.parameters.find(emlp => emlp.title == parameter.name)) {\r\n\t\t\t\t\t\tlet newParam = new ExternalMapLayerParameter(\r\n\t\t\t\t\t\t\tparameter,\r\n\t\t\t\t\t\t\tthis.currentExternalMapLayer.externalMapLayerID\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\tthis.currentExternalMapLayer.parameters.push(newParam);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t// Delete any parameters that already exist that we don't get back from the api\r\n\t\t\t\tthis.currentExternalMapLayer.parameters.forEach(localParam => {\r\n\t\t\t\t\tif (parameters.fields.find(apiParam => apiParam.name == localParam.title) == null) {\r\n\t\t\t\t\t\tthis.currentExternalMapLayer.parameters = this.currentExternalMapLayer.parameters.filter(\r\n\t\t\t\t\t\t\tfilterParam => filterParam !== localParam\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch(err) {\r\n\t\t\tconsole.log(\"Error setting ArcGIS Parameter on layer: \" + err)\r\n\t\t}\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\tprivate get isExternalMapLayersEnabled(): boolean {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"ExternalMapLayers\"]) &&\r\n\t\t\t(this.getPermissions.canViewExternalMapLayers || this.getPermissions.canEditExternalMapLayers)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate get isExternalMapLayerPropertiesEnabled(): boolean {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"ExternalMapLayers\"]) &&\r\n\t\t\tthis.getPermissions.canEditExternalMapLayers\r\n\t\t);\r\n\t}\r\n\r\n\tprivate get titleAlreadyExists(): boolean {\r\n\t\treturn (\r\n\t\t\t!!this.currentExternalMapLayer &&\r\n\t\t\t!this.$v.currentExternalMapLayer.title.doesntExist &&\r\n\t\t\t!!this.currentExternalMapLayer.title &&\r\n\t\t\tthis.currentExternalMapLayer.title.length > 0 &&\r\n\t\t\tthis.isNew\r\n\t\t);\r\n\t}\r\n\r\n\tprivate refreshIntervalFormatter(value): number {\r\n\t\tif (value == null || value < 1 ){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn Math.floor(value);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ExternalMapLayerModal.vue?vue&type=template&id=350413fe&scoped=true\"\nimport script from \"./ExternalMapLayerModal.vue?vue&type=script&lang=ts\"\nexport * from \"./ExternalMapLayerModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ExternalMapLayerModal.vue?vue&type=style&index=0&id=350413fe&prod&scoped=true&lang=css\"\nimport style1 from \"./ExternalMapLayerModal.vue?vue&type=style&index=1&id=350413fe&prod&lang=css\"\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 \"350413fe\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { ExternalMapLayer, ExternalMapLayerType, ExternalMapLayerParameter } from \"@/store/external-map-layers/types\";\r\n// SV components\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport vSelect from \"vue-select\";\r\nimport EnhancedSingleMap from \"@/components/EnhancedSingleMap.vue\";\r\nimport { FeaturesList, UserPermissions, VueBootstrapField } from \"@/store/types\";\r\nimport { get } from \"lodash\";\r\n\r\nimport ExternalMapLayerPropertiesSetup from \"@/components/external-map-layer/ExternalMapLayerPropertiesSetup.vue\";\r\nimport ExternalMapLayerModal from \"@/components/external-map-layer/ExternalMapLayerModal.vue\";\r\nimport DeleteExternalMapLayerModal from \"@/components/external-map-layer/DeleteExternalMapLayerModal.vue\";\r\nimport SureViewIcon from \"@/components/SureViewIcon.vue\"\r\nimport { stringMixin } from \"@/mixins\";\r\n\r\nconst ExternalMapLayerStore = namespace(\"externalMapLayers\");\r\n\r\nconst { ellipseAfterX } = stringMixin.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"enhanced-single-map\": EnhancedSingleMap,\r\n\t\t\"external-properties\": ExternalMapLayerPropertiesSetup,\r\n\t\t\"external-map-layer-modal\": ExternalMapLayerModal,\r\n\t\t\"delete-external-map-layer-modal\": DeleteExternalMapLayerModal,\r\n\t\t\"sureview-icon\": SureViewIcon,\r\n\t}\r\n})\r\nexport default class ExternalMapLayerSetup extends Vue {\r\n\t@ExternalMapLayerStore.Getter(\"getExternalMapLayers\") layersList!: ExternalMapLayer[];\r\n\t@ExternalMapLayerStore.Getter(\"getExternalMapLayerTypes\") typesList!: ExternalMapLayerType[];\r\n\t@ExternalMapLayerStore.Action loadExternalMapLayers: () => Promise;\r\n\t@ExternalMapLayerStore.Action loadExternalMapLayerTypes: () => Promise;\r\n\t@ExternalMapLayerStore.Action createOrUpdateExternalMapLayer: (externalMapLayer: ExternalMapLayer) => Promise;\r\n\t@ExternalMapLayerStore.Action deleteExternalMapLayer: (externalMapLayerID: number) => Promise;\r\n\t@ExternalMapLayerStore.Action updateExternalMapLayerVisibility: (externalMapLayer: ExternalMapLayer) => Promise;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\t// new bootstrap table data\r\n\tprivate fields: VueBootstrapField[] = [\r\n\t\t{ key: \"title\", label: \"Title\", sortable: true },\r\n\t\t{ key: \"url\", label: \"URL\", sortable: true },\r\n\t\t{ key: \"displaying\", label: \"Displaying\", sortable: true },\r\n\t\t{ key: \"actions\", label: \"Actions\", sortable: false },\r\n\t];\r\n\r\n\tprivate mapLayerTableIsBusy: boolean = true;\r\n\tprivate selectedMapLayer: ExternalMapLayer = null;\r\n\tprivate mapLayerModal: boolean = false;\r\n\tprivate deleteLayerModal: boolean = false;\r\n\tprivate filterSearch: string = \"\";\r\n\r\n\texternalMapLayerParameters: ExternalMapLayerParameter[];\r\n\texternalMapLayerType: number = 0;\r\n\r\n\tprivate setDeleteMapLayer(mapLayer: ExternalMapLayer): void {\r\n\t\tthis.selectedMapLayer = mapLayer;\r\n\t\tthis.deleteLayerModal = !this.deleteLayerModal;\r\n\t}\r\n\r\n\tprivate setSelectMapLayer(mapLayer: ExternalMapLayer): void {\r\n\t\tthis.selectedMapLayer = mapLayer;\r\n\t\tthis.mapLayerModal = !this.mapLayerModal;\r\n\t}\r\n\r\n\tprivate async toggleLayerVisible(mapLayer: ExternalMapLayer): Promise {\r\n\t\tthis.updateExternalMapLayerVisibility(mapLayer);\r\n\t}\r\n\r\n\t// If feature is on / off\r\n\tprivate get isExternalMapLayersEnabled(): boolean {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"ExternalMapLayers\"]) &&\r\n\t\t\t(this.getPermissions.canViewExternalMapLayers || this.getPermissions.canEditExternalMapLayers)\r\n\t\t);\r\n\t}\r\n\r\n\t// If feature is on / off\r\n\tprivate get isExternalMapLayerPropertiesEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"ExternalMapLayers\", \"AutoSyncAttributes\"]);\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tif (this.isExternalMapLayersEnabled) {\r\n\t\t\tawait this.loadExternalMapLayerTypes();\r\n\t\t\tawait this.loadExternalMapLayers();\r\n\t\t}\r\n\t\tthis.mapLayerTableIsBusy = false;\r\n\t}\r\n\r\n\tpublic get canEditExternalMapLayers(): boolean {\r\n\t\treturn this.getPermissions.canEditExternalMapLayers;\r\n\t}\r\n\r\n\tprivate get getMapLayerTitles(): string[] {\r\n\t\tif (this.layersList && this.layersList.length > 0) {\r\n\t\t\treturn this.layersList.map(layer => layer.title);\r\n\t\t}\r\n\r\n\t\treturn [];\r\n\t}\r\n\r\n\tprivate ellipseUrl(row: ExternalMapLayer): string {\r\n\t\treturn ellipseAfterX(row.url, 100);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ExternalMapLayerSetup.vue?vue&type=template&id=460ee798&scoped=true\"\nimport script from \"./ExternalMapLayerSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./ExternalMapLayerSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ExternalMapLayerSetup.vue?vue&type=style&index=0&id=460ee798&prod&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 \"460ee798\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card h-100 card-secondary overflow-hidden\",attrs:{\"id\":\"setup-container\"}},[_c('nav-header',{attrs:{\"title\":\"Schedules\"}}),_c('b-tabs',[(_vm.canAccessSchedules)?_c('b-tab',{attrs:{\"title\":\"Schedules\",\"data-cy\":\"schedules-tab\"}},[_c('schedule-setup',{attrs:{\"data-cy\":\"schedule-setup\"}})],1):_vm._e(),_c('b-tab',{attrs:{\"id\":\"btPublicHolidays\",\"title\":\"Public Holidays\"}},[_c('public-holiday-setup')],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.canViewSchedules)?_c('div',{staticClass:\"card-body d-flex flex-column h-100\"},[_c('div',{staticClass:\"d-flex top-bar pb-4\"},[_c('b-form-input',{attrs:{\"data-cy\":\"search-input\",\"type\":\"search\",\"placeholder\":\"Search...\",\"max\":\"250\"},on:{\"keyup\":_vm.handleSearchString},model:{value:(_vm.filterSearch),callback:function ($$v) {_vm.filterSearch=$$v},expression:\"filterSearch\"}}),(_vm.canEditSchedules)?_c('b-button',{staticClass:\"ml-2\",attrs:{\"data-cy\":\"add-btn\",\"variant\":\"primary\"},on:{\"click\":_vm.showCreateModal}},[_vm._v(\" Add Schedule \")]):_vm._e()],1),_c('b-container',{staticClass:\"p-0\",attrs:{\"fluid\":\"\"}},[_c('b-row',{staticClass:\"pt-2\"},[_c('b-col',{attrs:{\"cols\":\"2\"}},[_c('b-form-group',{attrs:{\"label-for\":\"area\"}},[[_vm._v(\" Area: \")],_c('area-tree-select',{attrs:{\"clearable\":false,\"append-to-body\":\"\",\"reduce\":function (group) { return group.id; },\"placeholder\":\"Please Select an Area\",\"id\":\"GroupsForSchedules\"},on:{\"input\":function($event){return _vm.handleSelectedGroup()},\"deselect\":function($event){return _vm.handleSelectedGroup()}},model:{value:(_vm.selectedArea),callback:function ($$v) {_vm.selectedArea=$$v},expression:\"selectedArea\"}})],2),_c('b-form-group',{attrs:{\"label-for\":\"scheduleTypes\"}},[[_vm._v(\" Schedule Types: \")],_c('div',{staticClass:\"pb-4\"},_vm._l((_vm.filteredScheduleTypes),function(scheduleType){return _c('div',{key:scheduleType.scheduleTypeId,staticClass:\"p-1 p-l-10\"},[_c('div',{staticClass:\"d-flex schedule-types-container\"},[_c('div',[_c('div',{staticClass:\"d-inline-block\"},[_c('input',{attrs:{\"type\":\"checkbox\",\"data-cy\":(\"schedule-type-selected-\" + (scheduleType.scheduleTypeId))},domProps:{\"checked\":_vm.getScheduleTypeState(scheduleType.scheduleTypeId)},on:{\"change\":function($event){return _vm.scheduleTypeToggled(scheduleType.scheduleTypeId)}}}),_c('div',{staticClass:\"box d-inline-block mr-1 ml-1\",style:(_vm.getColor(scheduleType.scheduleTypeId))})]),_c('div',{staticClass:\"schedule-type-title d-inline-block\"},[_c('span',[_vm._v(_vm._s(scheduleType.title))])])])])])}),0)],2),_c('b-form-group',{attrs:{\"label-for\":\"disabledFilter\"}},[[_vm._v(\" Filter by Enabled/Disabled \")],_c('div',{staticClass:\"pb-4\"},[_c('v-select-3',{staticClass:\"dark\",attrs:{\"data-cy\":\"schedule-disabled-filter-dropdown\",\"id\":\"disabledFilter\",\"options\":[{title: \"Enabled\", value: true}, {title: \"Disabled\", value: false}, {title: \"Both\", value: null}],\"label\":\"title\",\"reduce\":function (option) { return option.value; }},model:{value:(_vm.enabledFilter),callback:function ($$v) {_vm.enabledFilter=$$v},expression:\"enabledFilter\"}})],1)],2)],1),_c('b-col',[_c('b-tabs',[_c('b-tab',{attrs:{\"active\":\"\",\"data-cy\":\"schedule-calendar-tab\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('i',{staticClass:\"far fa-calendar\"})]},proxy:true}],null,false,743180586)},[_c('schedules-calendar',{attrs:{\"data-cy\":\"schedule-calendar-component\"}})],1),_c('b-tab',{attrs:{\"lazy\":\"\",\"data-cy\":\"schedule-table-tab\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('i',{staticClass:\"far fa-table\"})]},proxy:true}],null,false,4078704806)},[_c('schedules-table',{attrs:{\"data-cy\":\"schedule-table-component\"}})],1)],1)],1)],1)],1),_c('schedule-modal')],1):_c('div',[_c('p',[_vm._v(\"You do not have permissions to view this page\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-cy\":\"schedule-table\"}},[_c('b-overlay',{attrs:{\"show\":_vm.isDisabled,\"variant\":\"dark\",\"data-cy\":\"schedules-table-disabled-overlay\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('div',{staticClass:\"text-center overlay-content\"},[_c('p',[_vm._v(\"Please select an Area to continue.\")])])]},proxy:true}])},[_c('div',{staticClass:\"card fill-body card-secondary\"},[_c('generic-table',{staticClass:\"schedules-table thin-scroll\",attrs:{\"term\":'Schedule',\"dataList\":_vm.schedules,\"columns\":_vm.columns,\"isLoading\":_vm.isLoading,\"totalAvailableRows\":_vm.totalRecords,\"isShowSearch\":false,\"useModal\":false,\"use-slot-actions\":\"\",\"data-cy\":\"table-schedule-generic-table\"},on:{\"search-filter-updated\":_vm.updateData},scopedSlots:_vm._u([{key:\"actions\",fn:function(slotProps){return [_c('b-button-group',{attrs:{\"size\":\"sm\"}},[(_vm.canDelete(slotProps.row))?_c('b-button',{staticClass:\"action-button\",attrs:{\"id\":\"btnDelete\",\"data-cy\":\"delete-btn\"},on:{\"click\":function($event){return _vm.onDeleteClick(slotProps.row)}}},[_c('i',{staticClass:\"fas fa-trash\"})]):_vm._e(),_c('b-button',{staticClass:\"action-button\",attrs:{\"id\":\"btnEdit\",\"data-cy\":\"edit-btn\"},on:{\"click\":function($event){return _vm.onEditClick(slotProps.row)}}},[_c('i',{staticClass:\"fas fa-edit\"})])],1)]}}])})],1)]),(_vm.isLoading)?_c('div',{attrs:{\"id\":\"loader-wrapper\"}},[_c('sureview-icon',{staticClass:\"align-items-center d-flex flex-column\",attrs:{\"id\":\"loader\",\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n// Vue\r\nimport { TimeZone } from \"@/store/types\";\r\nimport { Schedule, ScheduleType, ScheduleTableRow } from \"@/store/schedules/types\";\r\nimport { PaginatedSearchQueryParams, } from \"@/store/types\";\r\nimport { Component, Watch, Mixins } from \"vue-property-decorator\";\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport { namespace, State, Getter } from \"vuex-class\";\r\nimport { debounce } from \"lodash\";\r\nimport axios, { CancelTokenSource } from \"axios\";\r\nimport SureViewIcon from \"../SureViewIcon.vue\";\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport api from \"@/services/api.schedules.service\";\r\n\r\n// Namespaces\r\nconst SchedulesStore = namespace(\"schedules\");\r\n\r\nconst debouncePeriod: number = process.env.NODE_ENV === \"test\" ? 1 : 500;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"generic-table\": GenericTable,\r\n\t\t\"sureview-icon\": SureViewIcon,\r\n\t},\r\n})\r\n\r\nexport default class SchedulesTable extends Mixins(PaginatedSearch) {\r\n\t// State\r\n\t@State private timeZones: TimeZone[];\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n\t@SchedulesStore.State(\"selectedGroup\") private selectedGroup: number;\r\n\t@SchedulesStore.State(\"searchString\") private searchString: string;\r\n\t@SchedulesStore.State(\"selectedScheduleTypes\") private selectedScheduleTypes: number[];\r\n\t@SchedulesStore.State scheduleTypes: ScheduleType[];\r\n\t@SchedulesStore.State(\"isReloadRequired\") private isReloadRequired: boolean;\r\n\t@SchedulesStore.State(\"enabledScheduleFilter\") private enabledScheduleFilter: boolean | null;\r\n\r\n\t// Mutations\r\n\t@SchedulesStore.Mutation setIsReloadRequired: (isReloadRequired: boolean) => void;\r\n\t@SchedulesStore.Mutation setIsScheduleModalVisible: (isVisible: boolean) => void;\r\n\t@SchedulesStore.Mutation setTempSchedule: (tempSchedule: Schedule) => void;\r\n\t@SchedulesStore.Mutation setIsDeleteConfirmationVisible: (isVisible: boolean) => void;\r\n\r\n\t/**\r\n\t*\t@returns Table columns\r\n\t*/\r\n\tpublic get columns (): TableHeader[] {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Title\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\torder: 1,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Schedule title\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisSortedByDefault: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"areaTitle\",\r\n\t\t\t\torder: 2,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Schedule area\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisSortedByDefault: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Next Run Date (My Time)\",\r\n\t\t\t\tkey: \"nextRunLocalTime\",\r\n\t\t\t\torder: 3,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Next Run Date in local time\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisSortedByDefault: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Next Run Date (Area Time)\",\r\n\t\t\t\tkey: \"nextRunAreaTime\",\r\n\t\t\t\torder: 4,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Next Run Date in area time\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisSortedByDefault: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Schedule Type\",\r\n\t\t\t\tkey: \"scheduleType\",\r\n\t\t\t\torder: 5,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Type of schedule\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisSortedByDefault: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Disabled\",\r\n\t\t\t\tkey: \"disabled\",\r\n\t\t\t\torder: 6,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Is the schedule going to be run\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tisTermLabel: true,\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tisSortedByDefault: true,\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\tprivate schedules: ScheduleTableRow[] = [];\r\n\tprivate totalRecords: number = 0;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate updateToken: CancelTokenSource | null = null;\r\n\r\n\t// Getter\r\n\tprivate get isDisabled(): boolean {\r\n\t\treturn this.selectedGroup <= 0;\r\n\t}\r\n\r\n\tprivate get locale(): string {\r\n\t\tconst { locale } = Intl.DateTimeFormat().resolvedOptions();\r\n\t\treturn locale;\r\n\t}\r\n\r\n\tprivate get isMaskingEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Schedules\", \"Masking\"]);\r\n\t}\r\n\r\n\tprivate get isEventRaiseEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Schedules\", \"EventRaise\"]);\r\n\t}\r\n\r\n\t// Public\r\n\tpublic async updateData(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.schedules = [];\r\n\r\n\t\t\tif (!this.selectedGroup){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.generateNewPaginatedSearchRequest(paginatedSearchQueryParams)\r\n\r\n\t\t\tlet schedulesWithPagination = await api.getPaginatedSchedules(\r\n\t\t\t\tthis.mostRecentSearchParams.page,\r\n\t\t\t\tthis.mostRecentSearchParams.pageSize,\r\n\t\t\t\tthis.mostRecentSearchParams.sortBy,\r\n\t\t\t\tthis.mostRecentSearchParams.sortDesc,\r\n\t\t\t\tthis.selectedGroup,\r\n\t\t\t\tthis.searchString,\r\n\t\t\t\tthis.selectedScheduleTypes,\r\n\t\t\t\tthis.enabledScheduleFilter);\r\n\r\n\t\t\t// if nothing returned exit early\r\n\t\t\tif (!schedulesWithPagination){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.totalRecords = schedulesWithPagination.totalRecords;\r\n\r\n\t\t\tthis.schedules = schedulesWithPagination.data.map(s => {\r\n\r\n\t\t\t\tlet nextOccurrenceDisplay = \"\";\r\n\t\t\t\tlet nextOccurrenceAreaTimeDisplay = \"\";\r\n\r\n\t\t\t\tif (s.nextOccurrence != null) {\r\n\t\t\t\t\tconst nextOccurrence = new Date(`${s.nextOccurrence}Z`);\r\n\t\t\t\t\tnextOccurrenceDisplay = nextOccurrence.toLocaleString(this.locale);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (s.nextOccurrenceAreaTime != null) {\r\n\t\t\t\t\tconst nextOccurrenceAreaTime = new Date(s.nextOccurrenceAreaTime);\r\n\t\t\t\t\tnextOccurrenceAreaTimeDisplay = nextOccurrenceAreaTime.toLocaleString(this.locale)\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttitle: s.title,\r\n\t\t\t\t\tnextRunLocalTime: nextOccurrenceDisplay,\r\n\t\t\t\t\tnextRunAreaTime: nextOccurrenceAreaTimeDisplay,\r\n\t\t\t\t\tscheduleId: s.scheduleId,\r\n\t\t\t\t\tscheduleType: this.scheduleTypes[s.scheduleTypeId - 1].title,\r\n\t\t\t\t\tareaTitle: s.areaTitle,\r\n\t\t\t\t\tdisabled: s.disabled,\r\n\t\t\t\t\tparentSchedule: s as Schedule\r\n\t\t\t\t} as ScheduleTableRow;\r\n\t\t\t});\r\n\t\t}\r\n\t\tcatch (ex) {\r\n\t\t\tconsole.error(\"Unexpected error fetching schedules: \" + ex);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\t// Private\r\n\tprivate async triggerGetEvents(): Promise {\r\n\t\tawait this.performGetSchedules();\r\n\t}\r\n\r\n\tprivate performGetSchedules: () => Promise = debounce(\r\n\t\tasync function () {\r\n\t\t\tif (this.updateToken) {\r\n\t\t\t\tthis.updateToken.cancel(\"Cancel Search\");\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateToken = axios.CancelToken.source();\r\n\t\t\ttry {\r\n\t\t\t\tawait this.updateData(this.mostRecentSearchParams);\r\n\t\t\t} catch (e) {\r\n\t\t\t\treturn; //Return when past requests are cancelled\r\n\t\t\t}\r\n\t\t},\r\n\t\tdebouncePeriod,\r\n\t\t{ leading: false, trailing: true }\r\n\t);\r\n\r\n\tprivate getTimeZone(timeZoneId: number): TimeZone {\r\n\t\treturn this.timeZones.firstOrDefault(tz => tz.timeZoneID == timeZoneId);\r\n\t}\r\n\r\n\tprivate onEditClick(row: ScheduleTableRow): void {\r\n\t\tthis.setTempSchedule(row.parentSchedule);\r\n\t\tthis.setIsScheduleModalVisible(true);\r\n\t}\r\n\r\n\tprivate onDeleteClick(row: ScheduleTableRow): void {\r\n\t\tthis.setTempSchedule(row.parentSchedule);\r\n\t\tthis.setIsDeleteConfirmationVisible(true);\r\n\t}\r\n\r\n\tprivate canDelete(row: ScheduleTableRow): boolean {\r\n\t\tif(!this.isMaskingEnabled && row.scheduleType == \"Masking\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif(!this.isEventRaiseEnabled && row.scheduleType == \"Event Raise\"){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate async mounted() : Promise {\r\n\t\tawait this.updateData();\r\n\t}\r\n\r\n\t// Watchers\r\n\t@Watch(\"isReloadRequired\")\r\n\tprivate async onReloadRequiredChanged(changeRequired: boolean): Promise {\r\n\t\tif (changeRequired) {\r\n\t\t\tawait this.triggerGetEvents();\r\n\t\t\tthis.setIsReloadRequired(false);\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SchedulesTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SchedulesTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SchedulesTable.vue?vue&type=template&id=454116f6&scoped=true\"\nimport script from \"./SchedulesTable.vue?vue&type=script&lang=ts\"\nexport * from \"./SchedulesTable.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SchedulesTable.vue?vue&type=style&index=0&id=454116f6&prod&scoped=true&lang=scss\"\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 \"454116f6\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, } from \"vue-property-decorator\";\r\nimport { UserPermissions, TimeZone } from \"@/store/types\";\r\nimport { Getter, namespace, State, Action } from \"vuex-class\";\r\nimport AreaTreeSelect from \"../form/AreaTreeSelect.vue\";\r\nimport ScheduleModal from \"./ScheduleModal.vue\";\r\nimport SchedulesCalendar from \"./SchedulesCalendar.vue\";\r\nimport SchedulesTable from \"./SchedulesTable.vue\";\r\nimport { ScheduleType } from \"@/store/schedules/types\";\r\nimport { EventColor, ScheduleInfo, ScheduleTypes } from \"./ScheduleEnums\";\r\nimport vSelect3 from \"vselect3\";\r\n\r\nconst SchedulesStore = namespace(\"schedules\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"schedules-calendar\": SchedulesCalendar,\r\n\t\t\"schedules-table\": SchedulesTable,\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\t\"schedule-modal\": ScheduleModal,\r\n\t\t\"v-select-3\": vSelect3\r\n\t}\r\n})\r\n\r\nexport default class ScheduleSetup extends Vue {\r\n\t// Root store\r\n\t@State private timeZones: TimeZone[];\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Action getTimeZones: () => Promise;\r\n\r\n\t// Schedule store.\r\n\t@SchedulesStore.State private scheduleTypes: ScheduleType[];\r\n\t@SchedulesStore.State private enabledScheduleFilter: boolean | null;\r\n\t@SchedulesStore.State selectedGroup: number;\r\n\t@SchedulesStore.Mutation setIsReloadRequired: (isReloadRequired: boolean) => void;\r\n\t@SchedulesStore.Mutation setIsScheduleModalVisible: (isVisible: boolean) => void;\r\n\t@SchedulesStore.Mutation updateSearchString: (searchString: string) => void;\r\n\t@SchedulesStore.Mutation addSelectedScheduleType: (scheduleTypeId: number) => void;\r\n\t@SchedulesStore.Mutation removeSelectedScheduleType: (scheduleTypeId: number) => void;\r\n\t@SchedulesStore.Mutation setSelectedGroup: (selectedGroup: number) => void;\r\n\t@SchedulesStore.Mutation resetSelectedGroup: () => void;\r\n\t@SchedulesStore.Mutation setEnabledScheduleFilter: (disabled: boolean | null) => void;\r\n\t@SchedulesStore.Action loadScheduleTypes: () => Promise;\r\n\t@SchedulesStore.Getter isScheduleTypeSelected: (scheduleTypeId: number) => boolean;\r\n\r\n\tprivate filterSearch: string = \"\";\r\n\r\n\tpublic async mounted(): Promise {\r\n\t\tawait this.loadScheduleTypes();\r\n\r\n\t\tthis.setEnabledScheduleFilter(true);\r\n\t\tthis.scheduleTypes.forEach(scheduleType => {this.scheduleTypeSelect(scheduleType.scheduleTypeId)});\r\n\r\n\t\tthis.selectedArea = this.selectedGroup > 0 ? this.selectedGroup : null;\r\n\r\n\t\tif (!this.timeZones) {\r\n\t\t\tawait this.getTimeZones();\r\n\t\t}\r\n\t}\r\n\r\n\tbeforeDestroy(): void {\r\n\t\tthis.resetSelectedGroup();\r\n\t}\r\n\r\n\tprivate get canViewSchedules(): boolean {\r\n\t\treturn this.permissions.isSystemAdmin || this.permissions.canViewSchedules;\r\n\t}\r\n\r\n\tprivate get canEditSchedules(): boolean {\r\n\t\treturn this.permissions.isSystemAdmin || this.permissions.canEditSchedules;\r\n\t}\r\n\r\n\tprivate get enabledFilter(): boolean | null {\r\n\t\treturn this.enabledScheduleFilter;\r\n\t}\r\n\r\n\tprivate get isMaskingEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Schedules\", \"Masking\"]);\r\n\t}\r\n\r\n\tprivate get isEventRaiseEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Schedules\", \"EventRaise\"]);\r\n\t}\r\n\r\n\tprivate get filteredScheduleTypes(): ScheduleType[] {\r\n\t\tlet schedulesTypeList = this.scheduleTypes;\r\n\r\n\t\tif (!this.isMaskingEnabled) {\r\n\t\t\tschedulesTypeList = schedulesTypeList.filter(st => st.scheduleTypeId != ScheduleTypes.Masking);\r\n\t\t}\r\n\r\n\t\tif (!this.isEventRaiseEnabled) {\r\n\t\t\tschedulesTypeList = schedulesTypeList.filter(st => st.scheduleTypeId != ScheduleTypes.EventRaise);\r\n\t\t}\r\n\r\n\t\treturn schedulesTypeList;\r\n\t}\r\n\r\n\tprivate set enabledFilter(value: boolean | null) {\r\n\t\tthis.setEnabledScheduleFilter(value);\r\n\t\tthis.triggerFiltering();\r\n\t}\r\n\r\n\tprivate async handleSelectedGroup(): Promise {\r\n\t\tthis.setSelectedGroup(this.selectedArea);\r\n\t\tthis.triggerFiltering();\r\n\t}\r\n\r\n\tprivate getScheduleTypeState(scheduleTypeId: number): boolean {\r\n\t\treturn this.isScheduleTypeSelected(scheduleTypeId);\r\n\t}\r\n\r\n\tprivate scheduleTypeSelect(scheduleTypeId: number): void {\r\n\t\tif (!this.isScheduleTypeSelected(scheduleTypeId)) {\r\n\t\t\tthis.addSelectedScheduleType(scheduleTypeId);\r\n\t\t}\r\n\t\tthis.triggerFiltering();\r\n\t}\r\n\r\n\tprivate scheduleTypeToggled(scheduleTypeId: number): void {\r\n\t\tif (!this.isScheduleTypeSelected(scheduleTypeId)) {\r\n\t\t\tthis.addSelectedScheduleType(scheduleTypeId);\r\n\t\t} else {\r\n\t\t\tthis.removeSelectedScheduleType(scheduleTypeId);\r\n\t\t}\r\n\t\tthis.triggerFiltering();\r\n\t}\r\n\r\n\tprivate showCreateModal(): void {\r\n\t\tthis.setIsScheduleModalVisible(true);\r\n\t}\r\n\r\n\tprivate handleSearchString(): void {\r\n\t\tthis.updateSearchString(this.filterSearch);\r\n\t\tthis.triggerFiltering();\r\n\t}\r\n\r\n\tprivate triggerFiltering(): void {\r\n\t\tthis.setIsReloadRequired(true);\r\n\t}\r\n\r\n\tprivate reloadData(): void {\r\n\t\tthis.setIsReloadRequired(true);\r\n\t}\r\n\r\n\tprivate getColor(scheduleTypeId: number): string {\r\n\t\tlet color = ScheduleInfo.find((x) => x.id == scheduleTypeId)?.color;\r\n\t\treturn \"background-color:\" + (color ?? EventColor.DefaultColour);\r\n\t}\r\n\r\n\tprivate get selectedArea(): number | null {\r\n\t\treturn this.selectedGroup > 0 ? this.selectedGroup : null;\r\n\t}\r\n\r\n\tprivate set selectedArea(value: number | null) {\r\n\t\tthis.setSelectedGroup(value);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduleSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScheduleSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ScheduleSetup.vue?vue&type=template&id=5127af44&scoped=true\"\nimport script from \"./ScheduleSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./ScheduleSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ScheduleSetup.vue?vue&type=style&index=0&id=5127af44&prod&scoped=true&lang=scss\"\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 \"5127af44\",\n null\n \n)\n\nexport default component.exports","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 public-holiday-setup\"},[_c('generic-table',{staticClass:\"flex-grow-1\",attrs:{\"term\":'Public Holiday',\"dataList\":_vm.publicHolidays,\"columns\":_vm.columns,\"modalItems\":_vm.modalItems,\"on-save\":_vm.putPublicHoliday,\"on-add-new\":_vm.putPublicHoliday,\"on-delete\":_vm.deletePublicHoliday,\"totalAvailableRows\":_vm.totalRecords,\"isLoading\":_vm.isLoading,\"editPermissions\":['canEditSiteSetup']},on:{\"search-filter-updated\":_vm.updateData},scopedSlots:_vm._u([{key:\"year\",fn:function(slotProps){return [(slotProps.row.year == 0)?_c('div',[_vm._v(\" Repeats Yearly \")]):_c('div',[_vm._v(\" \"+_vm._s(slotProps.row.year)+\" \")])]}}])})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport GenericTable, { TableHeader } from \"../../table/generic-table.vue\";\r\nimport { ModalItem } from \"../../table/generic-update-modal.vue\";\r\nimport api from \"@/services/api.schedules.service\";\r\nimport DatePicker from \"@sureview/vuejs-datepicker\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport { PaginatedSearchQueryParams } from \"@/store/types\";\r\nimport { PublicHolidayApiContract, PublicHolidayDto } from \"@/store/schedules/types\";\r\nimport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\r\nimport moment from \"moment\";\r\nimport { cloneDeep } from \"lodash\";\r\nimport { Datetime } from \"vue-datetime\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"generic-table\": GenericTable,\r\n\t},\r\n})\r\nexport default class PublicHolidaySetup extends Mixins(PaginatedSearch) {\r\n\tprivate columns: TableHeader[] = [\r\n\t\t{\r\n\t\t\ttitle: \"Title\",\r\n\t\t\tkey: \"title\",\r\n\t\t\torder: 1,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The public holiday title\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"title\",\r\n\t\t\tisTermLabel: true,\r\n\t\t\tsortable: true,\r\n\t\t\tisSortedByDefault: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Area\",\r\n\t\t\tkey: \"groupTitle\",\r\n\t\t\torder: 2,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The public holiday area\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"string\",\r\n\t\t\tisTermLabel: true,\r\n\t\t\tsortable: true,\r\n\t\t\tisSortedByDefault: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Day\",\r\n\t\t\tkey: \"day\",\r\n\t\t\torder: 3,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The public holiday day\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"number\",\r\n\t\t\tisTermLabel: true,\r\n\t\t\tsortable: true,\r\n\t\t\tisSortedByDefault: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Month\",\r\n\t\t\tkey: \"month\",\r\n\t\t\torder: 4,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The public holiday month\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"number\",\r\n\t\t\tisTermLabel: true,\r\n\t\t\tsortable: true,\r\n\t\t\tisSortedByDefault: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Year\",\r\n\t\t\tkey: \"year\",\r\n\t\t\torder: 5,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"The public holiday year\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n\t\t\tisTermLabel: true,\r\n\t\t\tsortable: true,\r\n\t\t\tisSortedByDefault: true,\r\n\t\t\tuseCustomCell: true,\r\n\t\t},\r\n\t];\r\n\r\n\tpublic get modalItems (): ModalItem[] {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Public Holiday\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tplaceholder: \"Enter a public holiday\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"groupId\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: AreaTreeSelect,\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tplaceholder: \"Enter an Area\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (area: AreaNode) => area.id,\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Inherited\",\r\n\t\t\t\tkey: \"inherited\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tdescription: \"Public Holiday will apply to all child areas\",\r\n\t\t\t},\r\n \t\t\t{\r\n\t\t\t\ttitle: \"Date\",\r\n\t\t\t\tkey: \"publicHolidayDate\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: Datetime,\r\n\t\t\t\tdefaultValue: new Date().toISOString(),\r\n\t\t\t\trequired: true,\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tcsvComponent:'input',\r\n\t\t\t\tprops: {\r\n\t\t\t\t\ttype: \"date\",\r\n\t\t\t\t\tinputClass: \"public-holiday-calendar-input\"\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Repeat Yearly\",\r\n\t\t\t\tkey: \"repeatYearly\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\tdescription: \"Is the public holiday repeated yearly\"\r\n\t\t\t},\r\n\t\t]\r\n\t}\r\n\r\n\tprivate publicHolidays: PublicHolidayDto[] = [];\r\n\tprivate totalRecords: number = 0;\r\n\tprivate isLoading: boolean = false;\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tawait this.updateData();\r\n\t}\r\n\r\n\tprivate async putPublicHoliday(publicHoliday: PublicHolidayDto): Promise {\r\n\t\tawait api.createOrUpdatePublicHoliday(this.mapDtoToApiContract(publicHoliday));\r\n\t\tawait this.updateData(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tprivate async deletePublicHoliday(request: PublicHolidayDto): Promise {\r\n\t\tawait api.deletePublicHoliday(request.publicHolidayId);\r\n\t\tawait this.updateData(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tprivate async updateData(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\ttry {\r\n\t\t\tthis.isLoading = true;\r\n\r\n\t\t\tconst request = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\r\n\t\t\tlet publicHolidaysWithPagination = await api.getPublicHolidays(request)\r\n\r\n\t\t\tthis.totalRecords = publicHolidaysWithPagination.totalRecords;\r\n\r\n\t\t\tthis.publicHolidays = publicHolidaysWithPagination.data.map(x => this.apiContractToPublicHolidayDto(x));\r\n\t\t}\r\n\t\tcatch (ex)\r\n\t\t{\r\n\t\t\tconsole.error(\"Unexpected error fetching public holidays: \" + ex);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate apiContractToPublicHolidayDto(value: PublicHolidayDto | null) : PublicHolidayDto {\r\n\t\tif(value != null)\r\n\t\t{\r\n\t\t\tlet mappedHoliday: PublicHolidayDto = cloneDeep(value);\r\n\r\n\t\t\t// As publicHolidayDate is only for display purposes we need to ensure the date aligns with\r\n\t\t\t// Datetime format so the GenericModal does not register a change\r\n\t\t\tmappedHoliday.publicHolidayDate = new Date(mappedHoliday.year == 0 ? new Date().getFullYear() : mappedHoliday.year,\r\n\t\t\t\tmappedHoliday.month - 1,\r\n\t\t\t\tmappedHoliday.day).toISOString().replace(/T.*/, 'T00:00:00.000+00:00');\r\n\r\n\t\t\tmappedHoliday.repeatYearly = mappedHoliday.year == 0;\r\n\r\n\t\t\treturn mappedHoliday\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate mapDtoToApiContract(data: PublicHolidayDto): PublicHolidayApiContract {\r\n\t\tlet date = moment(data.publicHolidayDate);\r\n\t\treturn {\r\n\t\t\ttitle: data.title,\r\n\t\t\tpublicHolidayId: data.publicHolidayId,\r\n\t\t\tgroupId: data.groupId,\r\n\t\t\tgroupTitle: null,\r\n\t\t\tday: date.date(),\r\n\t\t\tmonth: date.month() + 1,\r\n\t\t\tyear: data.repeatYearly ? 0 : date.year(),\r\n\t\t\tinherited: data.inherited ?? false,\r\n\t\t} as PublicHolidayApiContract\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublicHolidaySetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublicHolidaySetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PublicHolidaySetup.vue?vue&type=template&id=46268c73&scoped=true\"\nimport script from \"./PublicHolidaySetup.vue?vue&type=script&lang=ts\"\nexport * from \"./PublicHolidaySetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PublicHolidaySetup.vue?vue&type=style&index=0&id=46268c73&prod&scoped=true&lang=scss\"\nimport style1 from \"./PublicHolidaySetup.vue?vue&type=style&index=1&id=46268c73&prod&lang=scss\"\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 \"46268c73\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport { LogoutPayload, UserPermissions } from '@/store/types';\r\nimport { Action, Getter } from 'vuex-class';\r\nimport { Constants } from \"@/types/Constants\";\r\nimport ScheduleSetup from \"@/components/Schedules/ScheduleSetup.vue\";\r\nimport PublicHolidaySetup from \"@/components/Schedules/public-holidays/PublicHolidaySetup.vue\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"public-holiday-setup\": PublicHolidaySetup,\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"schedule-setup\": ScheduleSetup,\r\n\t}\r\n})\r\nexport default class Schedules extends Vue {\r\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\r\n\t@Getter getIsFieldOpsLicensed: boolean;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n\t// logout\r\n\t@Action logout: (payload?: LogoutPayload) => void;\r\n\t@Action serverLogout: () => Promise;\r\n\r\n\tprivate created(): void {\r\n\t\tif(!this.isSchedulesEnabled || (!this.canAccessSiteSetup && !this.canAccessSchedules)) {\r\n\t\t\tthis.logoutUser(Constants.NO_PERMISSION_TO_PAGE);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async logoutUser(errorMessage: string = null): Promise {\r\n\t\tawait this.serverLogout();\r\n\t\tif(errorMessage) {\r\n\t\t\tconst logoutPayload: LogoutPayload = {\r\n\t\t\t\thasSessionExpired: false,\r\n\t\t\t\tplayAudioAlert: false,\r\n\t\t\t\terrorMessage: errorMessage\r\n\t\t\t}\r\n\t\t\tawait this.logout(logoutPayload);\r\n\t\t} else {\r\n\t\t\tawait this.logout();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get canAccessSchedules() : boolean {\r\n\t\treturn !!(this.permissions.canViewSchedules || this.permissions.canEditSchedules);\r\n\t}\r\n\r\n\tprivate get isSchedulesEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Schedules\"]);\r\n\t}\r\n\r\n\tprivate get canAccessSiteSetup(): boolean {\r\n\t\treturn !!(this.permissions.canEditSiteSetup || this.permissions.canViewSiteSetup);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Schedules.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Schedules.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Schedules.vue?vue&type=template&id=f7803a26&scoped=true\"\nimport script from \"./Schedules.vue?vue&type=script&lang=ts\"\nexport * from \"./Schedules.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Schedules.vue?vue&type=style&index=0&id=f7803a26&prod&scoped=true&lang=scss\"\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 \"f7803a26\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary\",attrs:{\"id\":\"setup-container\"}},[_c('nav-header',{attrs:{\"title\":\"Masking Reasons Setup\",\"data-cy\":\"nav-header-masking-reasons\"}}),(!_vm.isMaskingAdvancedEnabled)?_c('div',{staticClass:\"alert alert-danger m-10\",attrs:{\"data-cy\":\"warning-page-disabled\"}},[_vm._v(\"You do not have permissions to view this page\")]):_vm._e(),(_vm.isMaskingAdvancedEnabled)?_c('generic-table',{attrs:{\"data-cy\":\"generic-table-masking-reasons\",\"term\":\"Masking Reason\",\"dataList\":_vm.maskingReasons,\"columns\":_vm.columns,\"modalItems\":_vm.modalItems,\"onSave\":_vm.putMaskingReason,\"onDelete\":_vm.deleteMaskingReason,\"onAddNew\":_vm.postMaskingReason,\"isLoading\":_vm.isLoading,\"deleteActionMessages\":_vm.deleteMaskingReasonMessage,\"totalAvailableRows\":_vm.totalRecords,\"hideAdd\":!this.permissions.canEditMaskReasons,\"editPermissions\":['canEditMaskReasons'],\"deletePermissions\":['canEditMaskReasons']},on:{\"search-filter-updated\":_vm.loadMaskingReasons}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport { PaginatedSearchQueryParams, UserPermissions } from \"@/store/types\";\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport { Getter } from 'vuex-class';\r\nimport { MaskingReason } from \"@/types/sv-data/masking/MaskingReason.ts\";\r\nimport maskingApi from '@/services/api.masking.service';\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport MaskingReasonsPagedResponse from \"@/types/sv-data/masking/MaskingReasonsPagedResponse\";\r\nimport { ModalItem } from \"@/components/table/generic-update-modal.vue\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n \"nav-header\": NavHeader,\r\n \"generic-table\": GenericTable\r\n\t}\r\n})\r\nexport default class MaskingReasonsSetup extends Mixins(PaginatedSearch) {\r\n // Getters\r\n @Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n // Private Vars\r\n private maskingReasons: MaskingReason[] = [];\r\n private isLoading: boolean = false;\r\n private totalRecords: number = 0;\r\n\r\n // Private Methods\r\n private async mounted(): Promise {\r\n if (!this.isMaskingAdvancedFeature){\r\n this.$router.push({ path: \"/event-queue\" });\r\n }\r\n\r\n await this.loadMaskingReasons();\r\n }\r\n\r\n public async loadMaskingReasons(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise { \r\n if (!this.isMaskingAdvancedEnabled){\r\n return;\r\n }\r\n\r\n try {\r\n this.isLoading = true;\r\n const cancellableQuery = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n const getMaskingReasonsPagedResponse: MaskingReasonsPagedResponse = await maskingApi.getPagedMaskingReasons(cancellableQuery);\r\n this.totalRecords = getMaskingReasonsPagedResponse.totalRecords;\r\n this.maskingReasons = getMaskingReasonsPagedResponse.data;\r\n }\r\n catch (ex) {\r\n console.log(\"Unexpected error fetching masking reasons: \" + ex);\r\n }\r\n finally {\r\n this.isLoading = false;\r\n }\r\n }\r\n\r\n private async postMaskingReason(maskingReason: MaskingReason): Promise {\r\n await maskingApi.createMaskingReason(maskingReason);\r\n await this.loadMaskingReasons(this.mostRecentSearchParams);\r\n }\r\n\r\n private async putMaskingReason(maskingReason: MaskingReason): Promise {\r\n await maskingApi.updateMaskingReason(maskingReason);\r\n await this.loadMaskingReasons(this.mostRecentSearchParams);\r\n }\r\n\r\n private async deleteMaskingReason(maskingReason: MaskingReason): Promise {\r\n await maskingApi.deleteMaskingReason(maskingReason.maskingReasonId);\r\n await this.loadMaskingReasons(this.mostRecentSearchParams);\r\n }\r\n\r\n private validateForm(maskingReason: MaskingReason): boolean {\r\n if(maskingReason?.title && maskingReason.title.trim() === \"\")\r\n {\r\n return false;\r\n }\r\n\r\n if(!maskingReason.isGroup){\r\n maskingReason.isGroup = false;\r\n }\r\n\r\n if(!maskingReason.isResponse){\r\n maskingReason.isResponse = false;\r\n }\r\n\r\n return maskingReason.isGroup || maskingReason.isResponse;\r\n }\r\n\r\n private deleteMaskingReasonMessage(maskingReason: MaskingReason): string[] {\r\n return [`All alarms/areas currently masked with ${maskingReason.title} will lose their masking reason.`];\r\n }\r\n\r\n // Get Methods\r\n\tprivate get isMaskingAdvancedEnabled(): boolean {\r\n\t\treturn this.isMaskingAdvancedFeature && \r\n (this.permissions.canViewMaskReasons || this.permissions.canEditMaskReasons);\r\n\t}\r\n\r\n private get isMaskingAdvancedFeature(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"Masking\", \"Advanced\", \"Reasons\"]);\r\n\t}\r\n\r\n public get columns (): TableHeader[] {\r\n return [\r\n {\r\n title: \"Title\",\r\n key: \"title\",\r\n order: 1,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"The masking reason title\",\r\n searchable: true,\r\n visible: true,\r\n dataType: \"input\",\r\n isTermLabel: true,\r\n sortable: true,\r\n isSortedByDefault: true\r\n },\r\n {\r\n title: \"Area\",\r\n key: \"isGroup\",\r\n dataType: \"checkbox\",\r\n order: 2,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"If the reason applies to an area\",\r\n visible: true,\r\n isTermLabel: true,\r\n sortable: true,\r\n },\r\n {\r\n title: \"Alarm\",\r\n key: \"isResponse\",\r\n dataType: \"checkbox\",\r\n order: 3,\r\n sortOrder: 0,\r\n sortOrderReversed: false,\r\n description: \"If the reason applies to an alarm\",\r\n visible: true,\r\n isTermLabel: true,\r\n sortable: true,\r\n }\r\n ];\r\n }\r\n\r\n public get modalItems (): ModalItem[] {\r\n return [\r\n {\r\n title: \"Title\",\r\n key: \"title\",\r\n dataType: \"text\",\r\n maxLength: 250,\r\n required: true,\r\n placeholder: \"Enter the masking reason title\",\r\n validations: this.validateForm,\r\n }, \r\n {\r\n title: \"Area\",\r\n key: \"isGroup\",\r\n dataType: \"checkbox\",\r\n description: \"If the reason applies to an area\",\r\n validations: this.validateForm, \r\n },\r\n {\r\n title: \"Alarm\",\r\n key: \"isResponse\",\r\n dataType: \"checkbox\",\r\n description: \"If the reason applies to an alarm\",\r\n validations: this.validateForm,\r\n },\r\n ]\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingReasonsSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingReasonsSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MaskingReasonsSetup.vue?vue&type=template&id=6f90c609&scoped=true\"\nimport script from \"./MaskingReasonsSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./MaskingReasonsSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MaskingReasonsSetup.vue?vue&type=style&index=0&id=6f90c609&prod&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 \"6f90c609\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"fill-body card\"},[_c('nav-header',{attrs:{\"title\":\"Notification Templates\"}}),(_vm.isNotificationTemplatesEnabled && _vm.hasNotificationTemplatePermissions)?_c('div',{staticClass:\"content-container\"},[_c('generic-table',{staticClass:\"flex-grow-1\",attrs:{\"term\":'Notification Template',\"dataList\":_vm.notificationTemplates,\"columns\":_vm.columns,\"modalItems\":_vm.modalItems,\"onSave\":_vm.updateNotificationTemplate,\"onDelete\":_vm.deleteNotificationTemplate,\"onAddNew\":_vm.createNotificationTemplate,\"onModalOpen\":_vm.onModalOpen,\"totalAvailableRows\":_vm.totalRecords,\"isLoading\":_vm.isLoading,\"editPermissions\":['canEditNotificationTemplates'],\"data-cy\":\"notification-template-table\"},on:{\"search-filter-updated\":_vm.getPaginatedNotificationTemplates},scopedSlots:_vm._u([{key:\"contactGroups\",fn:function(slotProps){return [(slotProps.row.contactGroups)?_c('div',[_c('b-tooltip',{attrs:{\"target\":(\"contact-group-names-\" + (slotProps.row.notificationTemplateId)),\"triggers\":\"hover\",\"data-cy\":\"contact-group-names-tooltip\"}},[_vm._v(\" \"+_vm._s(_vm.concatContactGroupTitles(slotProps.row.contactGroups))+\" \")]),_c('div',{attrs:{\"id\":(\"contact-group-names-\" + (slotProps.row.notificationTemplateId)),\"title\":slotProps.row.notificationTemplateId,\"data-cy\":(\"notification-template-contact-group-\" + (slotProps.row.notificationTemplateId))}},_vm._l((slotProps.row.contactGroups),function(contactGroup){return _c('b-badge',{key:contactGroup.contactGroupId,staticClass:\"badge badge-primary mr-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(\" \"+_vm._s(contactGroup.title)+\" \")])}),1)],1):_c('span',{attrs:{\"data-cy\":\"notification-template-contact-group-none\"}})]}},(_vm.selectedNotificationTemplate != null)?{key:\"additional-footer\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.previewEventId),expression:\"previewEventId\"}],staticClass:\"form-control event-input\",attrs:{\"id\":\"previewEventId\",\"type\":\"text\",\"placeholder\":\"Event Id\",\"data-cy\":\"preview-event-id-input\"},domProps:{\"value\":(_vm.previewEventId)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.previewEventId=$event.target.value}}}),_c('b-button',{staticClass:\"btn btn-primary btn-left\",attrs:{\"type\":\"submit\",\"variant\":\"primary\",\"disabled\":!(_vm.previewEventId > 0),\"data-cy\":\"preview-button\"},on:{\"click\":_vm.requestNotificationPreview}},[_vm._v(\" Preview \")])]}}:null],null,true)})],1):_c('div',[_c('h3',{staticClass:\"pt-4 text-center\"},[_vm._v(\"You don't have permission to view this page\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column rich-text-editor\",style:({ minHeightStyleString: !!_vm.minHeight, 'max-height-300px': _vm.applyMaxHeight }),on:{\"focusout\":_vm.focusOut,\"click\":_vm.clickAndFocus}},[_c('scrollbar',{style:({ minHeightStyleString: !!_vm.minHeight })},[_c('div',{staticClass:\"editor-parent\",on:{\"focusin\":function($event){$event.stopPropagation();}}},[_c('div',{staticClass:\"editor-container\",attrs:{\"data-cy\":\"rich-text-editor-editor-container\"}},[_c('div',{staticClass:\"external-buttons-container\"},[(_vm.manualFields)?_c('search-dropdown',{attrs:{\"text\":\"Add manual field\",\"options\":_vm.manualFields,\"term\":\"manual field\",\"size\":\"sm\",\"can-create-option\":\"\",\"right\":\"\",\"data-cy\":\"addManualFieldDropdown\"},on:{\"itemClick\":_vm.addManualField,\"addNewItem\":_vm.addCustomManualField}}):_vm._e(),(_vm.placeholders)?_c('search-dropdown',{attrs:{\"text\":\"Add placeholder\",\"options\":_vm.placeholders,\"term\":\"placeholder\",\"size\":\"sm\",\"right\":\"\",\"data-cy\":\"addPlaceholderDropdown\"},on:{\"itemClick\":_vm.addPlaceholder}}):_vm._e()],1),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.value),expression:\"value\"}],ref:\"editorContainer\",domProps:{\"value\":(_vm.value)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.value=$event.target.value}}})])])]),_c('b-modal',{attrs:{\"title\":\"Update margin\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('div',{staticClass:\"d-flex w-100\"},[_c('div',{staticClass:\"flex-grow-1\"}),_c('div',[_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){return _vm.closeMarginModal()}}},[_vm._v(\" Cancel \")]),_c('b-button',{staticClass:\"m-r-5\",attrs:{\"variant\":\"primary\",\"data-cy\":\"Confirm\",\"disabled\":!_vm.marginsValid},on:{\"click\":function($event){return _vm.onMarginInput()}}},[_vm._v(\" Ok \")])],1)])]},proxy:true}]),model:{value:(_vm.marginModalOpen),callback:function ($$v) {_vm.marginModalOpen=$$v},expression:\"marginModalOpen\"}},[_c('div',{staticClass:\"margin-setup-container\"},[(!_vm.marginsValid)?_c('span',{staticClass:\"text-danger\"},[_vm._v(\"Margins must be between 0mm and 100mm.\")]):_vm._e(),_c('div',{staticClass:\"margin-setup-row\"},[_c('div',{staticClass:\"margin-setup-item\"},[_c('label',{attrs:{\"for\":\"margin-top\"}},[_vm._v(\"Top:\")]),_c('div',{staticClass:\"margin-input\"},[_c('b-form-input',{attrs:{\"type\":\"number\",\"id\":\"margin-top\",\"min\":\"0\"},model:{value:(_vm.editingMargin.top),callback:function ($$v) {_vm.$set(_vm.editingMargin, \"top\", _vm._n($$v))},expression:\"editingMargin.top\"}}),_c('span',[_vm._v(\"mm\")])],1)]),_c('div',{staticClass:\"margin-setup-item\"},[_c('label',{attrs:{\"for\":\"margin-bottom\"}},[_vm._v(\"Bottom:\")]),_c('div',{staticClass:\"margin-input\"},[_c('b-form-input',{attrs:{\"type\":\"number\",\"id\":\"margin-top\",\"min\":\"0\"},model:{value:(_vm.editingMargin.bottom),callback:function ($$v) {_vm.$set(_vm.editingMargin, \"bottom\", _vm._n($$v))},expression:\"editingMargin.bottom\"}}),_c('span',[_vm._v(\"mm\")])],1)])]),_c('div',{staticClass:\"margin-setup-row\"},[_c('div',{staticClass:\"margin-setup-item\"},[_c('label',{attrs:{\"for\":\"margin-left\"}},[_vm._v(\"Left:\")]),_c('div',{staticClass:\"margin-input\"},[_c('b-form-input',{attrs:{\"type\":\"number\",\"id\":\"margin-top\",\"min\":\"0\"},model:{value:(_vm.editingMargin.left),callback:function ($$v) {_vm.$set(_vm.editingMargin, \"left\", _vm._n($$v))},expression:\"editingMargin.left\"}}),_c('span',[_vm._v(\"mm\")])],1)]),_c('div',{staticClass:\"margin-setup-item\"},[_c('label',{attrs:{\"for\":\"margin-right\"}},[_vm._v(\"Right:\")]),_c('div',{staticClass:\"margin-input\"},[_c('b-form-input',{attrs:{\"type\":\"number\",\"id\":\"margin-top\",\"min\":\"0\"},model:{value:(_vm.editingMargin.right),callback:function ($$v) {_vm.$set(_vm.editingMargin, \"right\", _vm._n($$v))},expression:\"editingMargin.right\"}}),_c('span',[_vm._v(\"mm\")])],1)])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Ref, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Getter, namespace } from \"vuex-class\";\r\n\r\n// tinymce imports\r\nimport tinymce, { Editor, RawEditorOptions } from \"tinymce\";\r\nimport 'tinymce/icons/default';\r\nimport 'tinymce/themes/silver';\r\nimport 'tinymce/skins/ui/oxide/skin.css';\r\nimport 'tinymce/plugins/advlist';\r\nimport \"tinymce/plugins/autolink\";\r\nimport \"tinymce/plugins/fullscreen\";\r\nimport \"tinymce/plugins/image\";\r\nimport \"tinymce/plugins/lists\";\r\nimport 'tinymce/plugins/link';\r\nimport \"tinymce/plugins/preview\";\r\nimport \"tinymce/plugins/searchreplace\";\r\nimport 'tinymce/plugins/table';\r\nimport \"tinymce/plugins/pagebreak\";\r\nimport \"tinymce/plugins/anchor\";\r\nimport \"tinymce/models/dom\";\r\nimport \"tinymce/plugins/visualblocks\";\r\n\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\"\r\nimport SearchDropDown from \"@/components/form/SearchDropDown.vue\"\r\nimport { TenantFeatures } from \"@/store/types\";\r\nimport { FormatMargin, FormatStyle } from \"@/types/format\"\r\nimport RichTextEditorPlaceholder from \"@/types/RichTextEditorPlaceholder\";\r\nimport { debounce } from \"lodash\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\n\r\nconst SessionStore = namespace(\"sessions\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"scrollbar\": VuePerfectScrollbar,\r\n\t\t\"search-dropdown\": SearchDropDown,\r\n\t}\r\n})\r\n\r\nexport default class RichTextEditor extends Vue {\r\n\t@SessionStore.Action updateSession: ({resourceId: SessionResource}) => Promise;\r\n\r\n\t@Ref() editorContainer!: HTMLTextAreaElement;\r\n\r\n\t// Store\r\n\t@Getter isFeatureEnabled!: (featureKey: TenantFeatures) => boolean;\r\n\r\n\t// Props\r\n\t@Prop({ type: String, default: \"\" })\r\n\tpublic value!: string;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tpublic readonly!: boolean;\r\n\r\n\t@Prop({ default: null })\r\n\tpublic minHeight!: string | null;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tpublic userHistoryOnly!: boolean;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tpublic applyMaxHeight!: boolean;\r\n\r\n\t@Prop({ type: Array, default: () => null })\r\n\tpublic placeholders!: RichTextEditorPlaceholder[] | null;\r\n\r\n\t@Prop({ type: Array, default: () => null })\r\n\tpublic manualFields!: RichTextEditorPlaceholder[] | null;\r\n\r\n\t@Prop({ type: Boolean, default: false})\r\n\tpublic isPrintTemplate!: boolean;\r\n\r\n\t@Prop({ default: null })\r\n\tpublic formatMargin!: FormatMargin | null;\r\n\r\n\t@Prop({ default: null })\r\n\tpublic formatStyles!: FormatStyle | null;\r\n\r\n\t@Watch(\"value\")\r\n\tprivate debounceOnValueChanged = debounce(async () => await this.onValueChanged(), 30000);\r\n\r\n\tprivate async onValueChanged() {\r\n\t\tawait this.updateSession({\r\n\t\t\tresourceId: SessionResource.StandardLoginSession\r\n\t\t});\r\n\t}\r\n\r\n\t// Data\r\n\tprivate editor: Editor | null = null;\r\n\tprivate focusWhenReady: boolean = false;\r\n\tprivate marginModalOpen: boolean = false;\r\n\t// Source of truth for the current margins\r\n\tprivate currentMargin: FormatMargin = {\r\n\t\ttop: 5,\r\n\t\tright: 5,\r\n\t\tbottom: 5,\r\n\t\tleft: 5\r\n\t};\r\n\t// Margins to use when editing to ensure they don't overwrite existing margins until saved\r\n\tprivate editingMargin: FormatMargin = {\r\n\t\ttop: 25,\r\n\t\tright: 25,\r\n\t\tbottom: 25,\r\n\t\tleft: 25\r\n\t};\r\n\t// Editor font formats\r\n\tprivate currentFormatStyles: FormatStyle = {\r\n\t\tfontSize: \"10pt\",\r\n\t\tfontName: \"Helvetica,Arial,sans-serif\"\r\n\t}\r\n\r\n\t// Editor Options\r\n\t// TinyMCE plugins\r\n\tprivate plugins: string[] =\r\n\t\t[\r\n\t\t\t\"advlist\", \"autolink\", \"fullscreen\", \"image\", \"lists\", \"link\", \"searchreplace\", \"table\", \"pagebreak\", \"anchor\", \"visualblocks\"\r\n\t\t];\r\n\r\n\t// Specific styles to be passed into the TinyMCE editor.\r\n\tprivate get editorStyles(): string {\r\n\t\treturn `\r\n\t\t\tbody\r\n\t\t\t{\r\n\t\t\t\tfont-family:${this.currentFormatStyles.fontName};\r\n\t\t\t\tfont-size: ${this.currentFormatStyles.fontSize};\r\n\t\t\t\tmargin-top: ${this.currentMargin.top}mm;\r\n\t\t\t\tmargin-left: ${this.currentMargin.left}mm;\r\n\t\t\t\tmargin-bottom: ${this.currentMargin.bottom}mm;\r\n\t\t\t\tmargin-right: ${this.currentMargin.right}mm;\r\n\t\t\t\tbackground-color: white !important;\r\n\t\t\t}\r\n\t\t\t.mce-offscreen-selection\r\n\t\t\t{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t\t.mce-pagebreak {\r\n\t\t\t\twidth: 100%;\r\n\t\t\t\theight: 1px;\r\n\t\t\t\tdisplay: block;\r\n\t\t\t\tborder-top: 1px dashed darkgray;\r\n\t\t\t}\r\n\t\t\t.placeholder {\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tpadding: .25em .4em;\r\n\t\t\t\tfont-size: 75%;\r\n\t\t\t\tfont-weight: 700;\r\n\t\t\t\tline-height: 1;\r\n\t\t\t\ttext-align: center;\r\n\t\t\t\twhite-space: nowrap;\r\n\t\t\t\tvertical-align: baseline;\r\n\t\t\t\tborder-radius: .25rem;\r\n\t\t\t\tcolor: #fff;\r\n\t\t\t\tbackground-color: #2196f3;\r\n\t\t\t}\r\n\t\t\t.manualField {\r\n\t\t\t\tdisplay: inline-block;\r\n\t\t\t\tpadding: .25em .4em;\r\n\t\t\t\tfont-size: 75%;\r\n\t\t\t\tfont-weight: 700;\r\n\t\t\t\tline-height: 1;\r\n\t\t\t\ttext-align: center;\r\n\t\t\t\twhite-space: nowrap;\r\n\t\t\t\tvertical-align: baseline;\r\n\t\t\t\tborder-radius: .25rem;\r\n\t\t\t\tcolor: #fff;\r\n\t\t\t\tbackground-color: #E86908;\r\n\t\t\t}`\r\n\t}\r\n\r\n\t// Getters\r\n\tprivate get marginsValid(): boolean {\r\n\t\t// Must check if the type is a number as inputting a minus symbol \"-\" is a string and will pass validation without type check\r\n\t\treturn (typeof this.editingMargin.top === \"number\" && this.editingMargin.top >= 0 && this.editingMargin.top <= 100) &&\r\n\t\t\t(typeof this.editingMargin.left === \"number\" && this.editingMargin.left >= 0 && this.editingMargin.left <= 100) &&\r\n\t\t\t(typeof this.editingMargin.right === \"number\" && this.editingMargin.right >= 0 && this.editingMargin.right <= 100) &&\r\n\t\t\t(typeof this.editingMargin.bottom === \"number\" && this.editingMargin.bottom >= 0 && this.editingMargin.bottom <= 100);\r\n\t}\r\n\r\n\tprivate handleFormatUpdate(event: any): void {\r\n\t\tlet selectedContent = this.editor?.selection.getContent();\r\n\t\tif (event && !selectedContent) {\r\n\t\t\tswitch (event.format) {\r\n\t\t\t\tcase \"fontsize\":\r\n\t\t\t\t\tthis.currentFormatStyles.fontSize = event.vars.value;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"fontname\":\r\n\t\t\t\t\tthis.currentFormatStyles.fontName = event.vars.value;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateEditorStyle();\r\n\t\t\tthis.$emit(\"setCssOverrides\", this.currentFormatStyles);\r\n\t\t}\r\n\t}\r\n\r\n\t// TinyMCE setup function to be run when the editor is first initialised.\r\n\tprivate onEditorSetup (editor: Editor): void {\r\n\t\teditor.on(\"input\", () => this.$emit(\"input\", editor.getContent()));\r\n\r\n\t\t// when a user uses a button emit the content up.\r\n\t\teditor.on(\"ExecCommand\", () => this.$emit(\"input\", editor.getContent()));\r\n\r\n\t\t// when a user applies a format, update if necessary\r\n\t\teditor.on(\"FormatApply\", (e) => this.handleFormatUpdate(e));\r\n\r\n\t\t// this resolves an issue where you cannot interact with the TinyMCE dialogues within BModal.\r\n\t\tdocument.addEventListener(\"focusin\", function (e) {\r\n\t\t\tlet target = e.target as Element;\r\n\t\t\tlet closest = target.closest(\".tox-tinymce-aux, .tox-dialog, .moxman-window, .tam-assetmanager-root\");\r\n\t\t\tif (closest !== null && closest !== undefined) {\r\n\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// add the custom buttons\r\n\t\tif (this.isPrintTemplate) {\r\n\t\t\teditor.ui.registry.addButton(\"includeMargins\", {\r\n\t\t\t\ttext: \"Margin\",\r\n\t\t\t\tonAction: this.openMarginSetup\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t// Initialise TinyMCE editor on Mounted.\r\n\tprivate async initialiseTinyMCE(): Promise {\r\n\t\tconst tinyMCEConfig: RawEditorOptions =\r\n\t\t\t{\r\n\t\t\t\ttarget: this.editorContainer,\r\n\t\t\t\theight: this.minHeight || 550,\r\n\t\t\t\tresize: false,\r\n\t\t\t\tplugins: this.plugins,\r\n\t\t\t\ttoolbar: \"undo redo | bold italic forecolor | alignleft aligncenter alignright alignjustify pagebreak | bullist numlist | link image table | includeHeader usePageNumbers includeMargins\",\r\n\t\t\t\tcontent_style: this.editorStyles,\r\n\t\t\t\tpromotion: false,\r\n\t\t\t\tvisualblocks_default_state: true,\r\n\t\t\t\tpagebreak_separator: `
`,\r\n\t\t\t\tnoneditable_class: \"ql-placeholder-content\",\r\n\t\t\t\tmenubar: \"edit insert view format table\",\r\n\t\t\t\tsetup: this.onEditorSetup\r\n\t\t\t};\r\n\r\n\t\tthis.editor = (await tinymce.init(tinyMCEConfig))[0];\r\n\t}\r\n\r\n\t// Methods\r\n\tfocusOut(event: FocusEvent): void {\r\n\t\t// Ensure that this event isn't triggered when changing between children, e.g. clicking a button while focused on text\r\n\t\tif (!event.relatedTarget || !this.$el.contains(event.relatedTarget as Element)) {\r\n\t\t\tthis.$emit(\"blur\")\r\n\t\t}\r\n\t}\r\n\r\n\tclickAndFocus(): void {\r\n\t\tif (this.readonly) {\r\n\t\t\tthis.focusWhenReady = true\r\n\t\t\tthis.$emit(\"focus\")\r\n\t\t}\r\n\t}\r\n\r\n\tprivate closeMarginModal(): void {\r\n\t\tthis.marginModalOpen = false;\r\n\t}\r\n\r\n\tprivate setupStyles(): void {\r\n\t\tif (this.formatMargin != null) {\r\n\t\t\tthis.currentMargin = { ...this.formatMargin };\r\n\t\t}\r\n\r\n\t\tif (this.formatStyles != null) {\r\n\t\t\tthis.currentFormatStyles = { ...this.formatStyles };\r\n\t\t}\r\n\t}\r\n\r\n\tprivate openMarginSetup(): void {\r\n\t\tif (this.formatMargin != null) {\r\n\t\t\tthis.editingMargin = { ...this.currentMargin };\r\n\t\t}\r\n\r\n\t\tthis.marginModalOpen = true;\r\n\t}\r\n\r\n\tprivate onMarginInput(): void {\r\n\t\tthis.marginModalOpen = !this.marginModalOpen;\r\n\r\n\t\tthis.currentMargin = { ...this.editingMargin };\r\n\t\tthis.$emit(\"setFormatMargin\", this.currentMargin);\r\n\r\n\t\t// Update the editor margins when margin modal closes\r\n\t\tthis.updateEditorStyle();\r\n\t}\r\n\r\n\tprivate updateEditorStyle(): void {\r\n\t\tif (this.editor) {\r\n\t\t\tthis.editor.iframeElement!.contentDocument!.getElementsByTagName(\"style\")[0].innerHTML = this.editorStyles;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate addPlaceholder (placeholder: RichTextEditorPlaceholder) : void {\r\n\t\tlet content: string = `${placeholder.label}`;\r\n\t\tthis.editor!.insertContent(content);\r\n\t\tthis.$emit(\"input\", this.editor?.getContent());\r\n\t}\r\n\r\n\tprivate addManualField (manualField: RichTextEditorPlaceholder) : void {\r\n\t\tlet content: string = `${manualField.label}`;\r\n\t\tthis.editor!.insertContent(content);\r\n\t\tif(this.manualFields.filter((element) => element.id == manualField.id).length === 0) {\r\n\t\t\tthis.manualFields.push(manualField);\r\n\t\t}\r\n\t\tthis.$emit(\"input\", this.editor?.getContent());\r\n\t}\r\n\r\n\tprivate addCustomManualField(label: string) {\r\n\t\tlet key = label.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function(letter, index) {\r\n\t\t\treturn index == 0 ? letter.toLowerCase() : letter.toUpperCase();\r\n\t\t}).replace(/\\s+/g, '');\r\n\t\tthis.addManualField({\r\n\t\t\tid: key,\r\n\t\t\tlabel: label\r\n\t\t});\r\n\t}\r\n\r\n\t// Watchers\r\n\t@Watch(\"readonly\")\r\n\tprivate onReadonlyChanged(readonly: boolean): void {\r\n\t\tif (this.editor) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.editor!.readonly = !readonly;\r\n\r\n\t\tif (this.focusWhenReady && !readonly) {\r\n\t\t\tthis.focusWhenReady = false\r\n\t\t\tthis.editor!.focus()\r\n\t\t}\r\n\t}\r\n\r\n\t// Vue lifecycle methods\r\n\tprivate async mounted(): Promise {\r\n\t\tthis.setupStyles();\r\n\t\tawait this.initialiseTinyMCE();\r\n\t}\r\n\r\n\tprivate beforeDestroy(): void {\r\n\t\tif (!this.editor) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.currentMargin = {\r\n\t\t\ttop: 25,\r\n\t\t\tright: 25,\r\n\t\t\tbottom: 25,\r\n\t\t\tleft: 25\r\n\t\t};\r\n\r\n\t\tthis.editor = null;\r\n\t\ttinymce.remove();\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichTextEditor.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RichTextEditor.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RichTextEditor.vue?vue&type=template&id=ce0e07e6&scoped=true\"\nimport script from \"./RichTextEditor.vue?vue&type=script&lang=ts\"\nexport * from \"./RichTextEditor.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RichTextEditor.vue?vue&type=style&index=0&id=ce0e07e6&prod&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 \"ce0e07e6\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Mixins } from \"vue-property-decorator\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport PaginatedSearch, { PaginatedSearchRequest } from \"@/mixins/PaginatedSearch\";\r\nimport NotificationTemplate from \"@/types/sv-data/notification-templates/NotificationTemplate\";\r\nimport NotificationTemplatePagedRequest from \"@/types/sv-data/notification-templates/NotificationTemplatePagedRequest\";\r\nimport NotificationTemplateApi from \"@/services/api.notificationTemplate.service\";\r\nimport { PaginatedSearchQueryParams, UserPermissions } from \"@/store/types\";\r\nimport { Getter } from \"vuex-class\";\r\nimport GenericTable, { TableHeader } from \"@/components/table/generic-table.vue\";\r\nimport { ModalItem } from \"@/components/table/generic-update-modal.vue\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport { AreaNode } from \"@/types/sv-data/groups/AreaNode\";\r\nimport RichTextEditor from \"@/components/form/RichTextEditor.vue\";\r\nimport RichTextEditorPlaceholder from \"@/types/RichTextEditorPlaceholder\";\r\nimport NotificationTemplateTypeId from \"@/types/sv-data/enums/NotificationTemplateTypeIds\";\r\nimport NotificationTemplatePreviewRequest\r\n\tfrom \"@/types/sv-data/notification-templates/NotificationTemplatePreviewRequest\";\r\nimport NotificationDocumentTypeId from \"@/types/sv-data/enums/NotificationDocumentTypeIds\";\r\nimport axios, { CancelTokenSource } from \"axios\";\r\nimport api from '@/services/api.service';\r\nimport ContactGroup from '@/types/sv-data/contact-groups/ContactGroup';\r\nimport { debounce } from 'lodash';\r\nimport { getDebouncePeriod } from '@/utils/debounce-helper';\r\nimport { truncateString } from '@/filters';\r\n\r\n@Component({\r\n\tfilters: { truncateString },\r\n\tcomponents: {\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"generic-table\": GenericTable\r\n\t}\r\n})\r\nexport default class NotificationTemplateSetup extends Mixins(PaginatedSearch) {\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n\tprivate notificationTemplates: NotificationTemplate[] = [];\r\n\tprivate manualFields: RichTextEditorPlaceholder[] = [];\r\n\tprivate selectedNotificationTemplate: NotificationTemplate = null;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate totalRecords: number = 0;\r\n\tprivate previewEventId: number = null;\r\n\tprivate contactGroupSearchToken: CancelTokenSource = null;\r\n\tprivate contactGroups: ContactGroup[] = [];\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tawait this.getPaginatedNotificationTemplates();\r\n\r\n\t\tif (this.isContactGroupsEnabled) {\r\n\t\t\tawait this.retrieveContactGroups();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isNotificationTemplatesEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"SiteMonitor\", \"Email\", \"NotificationTemplates\"]);\r\n\t}\r\n\r\n\tprivate get isInvolvedPartiesEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"SiteMonitor\", \"InvolvedParties\"])\r\n\t}\r\n\r\n\tprivate get isContactGroupsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"SiteMonitor\", \"Email\", \"NotificationTemplates\", \"NotificationGroups\"]);\r\n\t}\r\n\r\n\tprivate get hasNotificationTemplatePermissions(): boolean {\r\n\t\treturn this.permissions.canViewNotificationTemplates || this.permissions.canEditNotificationTemplates;\r\n\t}\r\n\r\n\tprivate async createNotificationTemplate(notificationTemplate: NotificationTemplate): Promise {\r\n\t\tawait NotificationTemplateApi.createNotificationTemplate(notificationTemplate);\r\n\t\tawait this.getPaginatedNotificationTemplates(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tprivate async getPaginatedNotificationTemplates(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\r\n\t\tthis.isLoading = true;\r\n\t\tthis.notificationTemplates = [];\r\n\r\n\t\tif (!paginatedSearchQueryParams) {\r\n\t\t\tpaginatedSearchQueryParams = {\r\n\t\t\t\tpage: 1,\r\n\t\t\t\tpageSize: 25,\r\n\t\t\t\tsortDesc: false,\r\n\t\t\t\tsortBy: \"Title\",\r\n\t\t\t\tsearchTerm: \"\"\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tconst searchParams = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\r\n\t\tlet request = { ...searchParams, ...paginatedSearchQueryParams } as NotificationTemplatePagedRequest;\r\n\r\n\t\t// Hard coded as no other types exist\r\n\t\trequest.notificationTemplateTypeId = NotificationTemplateTypeId.Event;\r\n\r\n\t\tthis.mostRecentSearchParams = request;\r\n\r\n\t\tlet results = await NotificationTemplateApi.getNotificationTemplates(request, request.groupId);\r\n\t\tthis.totalRecords = results.totalRecords;\r\n\t\tthis.notificationTemplates = results.data;\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\tprivate async updateNotificationTemplate(notificationTemplate: NotificationTemplate) {\r\n\t\tawait NotificationTemplateApi.updateNotificationTemplate(notificationTemplate);\r\n\t\tawait this.getPaginatedNotificationTemplates(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tprivate async deleteNotificationTemplate(notificationTemplate: NotificationTemplate) {\r\n\t\tawait NotificationTemplateApi.deleteNotificationTemplate(notificationTemplate.notificationTemplateId);\r\n\t\tawait this.getPaginatedNotificationTemplates(this.mostRecentSearchParams);\r\n\t}\r\n\r\n\tprivate async requestNotificationPreview(): Promise {\r\n\t\tif(this.selectedNotificationTemplate == null || this.previewEventId < 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.previewEventId = Number(this.previewEventId);\r\n\r\n\t\tconst request: NotificationTemplatePreviewRequest = {\r\n\t\t\tnotificationTemplate: this.selectedNotificationTemplate,\r\n\t\t\tnotificationDocumentTypeId: NotificationDocumentTypeId.Pdf,\r\n\t\t\tmanualInputFields: {},\r\n\t\t}\r\n\r\n\t\tawait NotificationTemplateApi.previewNotificationTemplate(this.previewEventId, request);\r\n\t}\r\n\r\n\tprivate handleSearchInput = debounce(async (searchTerm: string): Promise => {\r\n\t\t\tawait this.retrieveContactGroups(searchTerm);\r\n\t\t},\r\n\t\tgetDebouncePeriod(),\r\n\t\t{ leading: false, trailing: true });\r\n\r\n\tprivate async retrieveContactGroups(searchTerm: string = \"\"): Promise {\r\n\t\tconst params: PaginatedSearchQueryParams = {\r\n\t\t\tpage: 1,\r\n\t\t\tpageSize: 50,\r\n\t\t\tsortBy: \"title\",\r\n\t\t\tsearchTerm: searchTerm\r\n\t\t}\r\n\r\n\t\tthis.contactGroupSearchToken = axios.CancelToken.source();\r\n\r\n\t\tconst request: PaginatedSearchRequest = {\r\n\t\t\tparams: params,\r\n\t\t\tcancelToken: this.contactGroupSearchToken.token\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tthis.contactGroups = (await api.getContactGroups(request)).data;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Retrieving Contact Groups\",\r\n\t\t\t\ttext: err.message\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async onModalOpen(value: NotificationTemplate): Promise {\r\n\t\tif (value) {\r\n\t\t\tthis.selectedNotificationTemplate = value;\r\n\t\t\tthis.manualFields = this.selectedNotificationTemplate.manualFields;\r\n\t\t} else {\r\n\t\t\tthis.selectedNotificationTemplate = null;\r\n\t\t\tthis.manualFields = [];\r\n\t\t}\r\n\t}\r\n\r\n\tprivate concatContactGroupTitles(contactGroups: ContactGroup[]): string {\r\n\t\treturn contactGroups.map(cg => cg.title).join(\", \");\r\n\t}\r\n\r\n\tprivate contactGroupIdToTitle(contactGroupId: string): string{\r\n\t\tconst matchingContactGroup = this.contactGroups.find(contactGroup => contactGroup.contactGroupId === contactGroupId)\r\n\t\treturn matchingContactGroup ? matchingContactGroup.title : \"No Title Found\";\r\n\t}\r\n\r\n\tprivate get columns(): TableHeader[] {\r\n\t\tconst _columns: TableHeader[] = [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Title\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\torder: 1,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tdescription: \"Notification Template Title\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\tisTermLabel: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"groupTitle\",\r\n\t\t\t\torder: 2,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tdescription: \"Area Title\",\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Inherited\",\r\n\t\t\t\tkey: \"inherited\",\r\n\t\t\t\torder: 3,\r\n\t\t\t\tdataType: \"checkbox\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tvisible: true\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\tif (this.isContactGroupsEnabled) {\r\n\t\t\t_columns.push({\r\n\t\t\t\ttitle: \"Default Contact Groups\",\r\n\t\t\t\tkey: \"contactGroups\",\r\n\t\t\t\torder: 4,\r\n\t\t\t\tdataType: \"input\",\r\n\t\t\t\tdescription: \"Default Contact Groups\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tuseCustomCell: true,\r\n\t\t\t\tvisible: this.isContactGroupsEnabled\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn _columns;\r\n\t}\r\n\r\n\tprivate get placeholders(): RichTextEditorPlaceholder[] {\r\n\t\tlet placeholderItems: RichTextEditorPlaceholder[] = [\r\n\t\t\t{\r\n\t\t\t\tid: \"areaName\",\r\n\t\t\t\tlabel: \"Affected Area\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: \"areaAddress\",\r\n\t\t\t\tlabel: \"Area Address\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: \"areaReferenceId\",\r\n\t\t\t\tlabel: \"Area Unique Identifier\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: \"eventCreatedDate\",\r\n\t\t\t\tlabel: \"Event Started\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: \"alarms\",\r\n\t\t\t\tlabel: \"Alarms\",\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: \"eventOutcome\",\r\n\t\t\t\tlabel: \"Event Outcome\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: \"eventOutcomeNote\",\r\n\t\t\t\tlabel: \"Event Outcome Note\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: \"note\",\r\n\t\t\t\tlabel: \"Note\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: \"senderName\",\r\n\t\t\t\tlabel: \"Sender Name\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: \"eventUsers\",\r\n\t\t\t\tlabel: \"Event Users\"\r\n\t\t\t}\r\n\t\t];\r\n\r\n\t\tif (this.isInvolvedPartiesEnabled) {\r\n\t\t\tlet involvedPartyPlaceholder: RichTextEditorPlaceholder = {\r\n\t\t\t\tid: \"involvedParties\",\r\n\t\t\t\tlabel: \"Involved Parties\"\r\n\t\t\t}\r\n\r\n\t\t\tplaceholderItems.push(involvedPartyPlaceholder as RichTextEditorPlaceholder);\r\n\t\t}\r\n\r\n\t\treturn placeholderItems;\r\n\t}\r\n\r\n\tprivate get modalItems(): ModalItem[] {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Title\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\trequired: true,\r\n\t\t\t\tmaxLength: 50,\r\n\t\t\t\tdescription: \"Enter a notification template title\",\r\n\t\t\t\tplaceholder: \"Notification template title\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Inherited\",\r\n\t\t\t\tkey: \"inherited\",\r\n\t\t\t\trequired: false,\r\n\t\t\t\tdataType: \"checkbox\"\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"groupId\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: AreaTreeSelect,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (area: AreaNode) => area.id,\r\n\t\t\t\t\tclearable: false\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Default Contact Groups\",\r\n\t\t\t\tkey: \"contactGroups\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tdata: this.contactGroups,\r\n\t\t\t\tvisible: this.isContactGroupsEnabled,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tonSearch: (searchTerm: string) => {\r\n\t\t\t\t\t\tthis.handleSearchInput(searchTerm);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmultiple: true\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Body\",\r\n\t\t\t\tkey: \"body\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: RichTextEditor,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tplaceholders: this.placeholders,\r\n\t\t\t\t\tmanualFields: this.manualFields,\r\n\t\t\t\t\tminHeight: \"350px\"\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationTemplateSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationTemplateSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./NotificationTemplateSetup.vue?vue&type=template&id=1a90e893&scoped=true\"\nimport script from \"./NotificationTemplateSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./NotificationTemplateSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./NotificationTemplateSetup.vue?vue&type=style&index=0&id=1a90e893&prod&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 \"1a90e893\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\r\nimport Router from \"vue-router\";\r\n\r\nimport { get } from \"lodash\";\r\n\r\nimport Login from \"@/views/Login.vue\";\r\nimport LoginSaml from \"@/views/LoginSaml.vue\";\r\nimport TempLogin from \"@/views/TempLogin.vue\";\r\nimport EventQueue from \"@/views/EventQueue.vue\";\r\nimport SiteMonitor from \"@/views/SiteMonitor.vue\";\r\nimport SiteMonitorCameras from \"@/views/SiteMonitorCameras.vue\";\r\nimport Cameras from \"@/views/Cameras.vue\";\r\nimport EventSearchPage from \"@/views/EventSearchPage.vue\";\r\nimport ConfigureTasks from \"@/views/ConfigureTasks.vue\";\r\nimport SiteAdminLanding from \"@/views/SiteAdminLanding.vue\";\r\nimport MobileCore from \"@/views/MobileCore.vue\";\r\nimport UserManagementSetup from \"./views//UserSetup/UserManagementSetup.vue\";\r\nimport Contacts from \"./views/Contacts.vue\";\r\nimport ContactRoles from \"./views/ContactRoles.vue\";\r\nimport Reports from \"@/views/Reports.vue\";\r\nimport ActivityLogManagement from \"./views/ActivityLogManagement.vue\";\r\nimport FeatureSetup from \"@/views/FeatureSetup.vue\";\r\nimport TourSetup from \"./views/TourSetup.vue\";\r\nimport Permissions from \"./views/Permissions.vue\";\r\nimport AlarmSetup from \"./views/AlarmSetup.vue\"\r\nimport MobileRaiseSetup from \"./views/MobileRaiseSetup.vue\";\r\nimport SubscriptionDetails from \"./views/SubscriptionDetails.vue\";\r\nimport SignUp from \"@/views/SignUp/SignUp.vue\";\r\nimport CompanyInfo from \"@/views/SignUp/CompanyInfo.vue\";\r\nimport ContactInfo from \"@/views/SignUp/ContactInfo.vue\";\r\nimport SecurityInfo from \"@/views/SignUp/SecurityInfo.vue\";\r\nimport PaymentInfo from \"@/views/SignUp/PaymentInfo.vue\";\r\nimport EventCategorySetup from \"./views/EventCategorySetup.vue\";\r\nimport SetPassword from \"@/views/SetPassword.vue\";\r\nimport ResetPassword from \"@/views/ResetPassword.vue\";\r\nimport AreaSetupPage from \"@/views/AreaSetup/AreaSetupPage.vue\";\r\nimport AssetSetup from \"@/views/AssetSetup.vue\";\r\nimport MapSetup from \"./views/MapSetup.vue\";\r\nimport RulesEngineSetup from \"@/views/RulesEngineSetup.vue\";\r\nimport SystemView from \"@/views/SystemView.vue\";\r\nimport ExternalMapLayerSetup from \"@/views/ExternalMapLayerSetup.vue\";\r\nimport Schedules from \"@/views/Schedules.vue\";\r\nimport MaskingReasonsSetup from \"@/views/Masking/MaskingReasonsSetup.vue\";\r\nimport NotificationTemplateSetup from \"@/views/NotificationTemplateSetup.vue\";\r\n\r\nVue.use(Router);\r\n\r\nexport default new Router({\r\n\troutes: [\r\n\t\t{\r\n\t\t\tpath: \"/\",\r\n\t\t\tname: \"home\",\r\n\t\t\tredirect: \"login\",\r\n\t\t\tmeta: { auth: true }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/login\",\r\n\t\t\tname: \"login\",\r\n\t\t\tcomponent: Login,\r\n\t\t\tmeta: { loadFeatures: false }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/login/saml\",\r\n\t\t\tname: \"loginSaml\",\r\n\t\t\tcomponent: LoginSaml,\r\n\t\t\tmeta: { loadFeatures: false }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/Access/:sessionID?\",\r\n\t\t\tname: \"singleEventLogin\",\r\n\t\t\tcomponent: TempLogin\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/Views/Access/:sessionID\",\r\n\t\t\tname: \"singleEventLoginForViews\",\r\n\t\t\tcomponent: TempLogin\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/event-queue\",\r\n\t\t\tname: \"event-queue\",\r\n\t\t\tcomponent: EventQueue,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Alarm Processing\",\r\n\t\t\t\tshow: (permissions, featuresList) => permissions.canHandleAlarms,\r\n\t\t\t\ticonClass: \"fas fa-bell\",\r\n\t\t\t\tmenuGroup: 1,\r\n\t\t\t\tmenuOrder: 1,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/site-monitor/:eventId\",\r\n\t\t\tname: \"site-monitor\",\r\n\t\t\tcomponent: SiteMonitor,\r\n\t\t\tmeta: { auth: true }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/site-monitor-cameras\",\r\n\t\t\tname: \"site-monitor-cameras\",\r\n\t\t\tcomponent: SiteMonitorCameras,\r\n\t\t\tmeta: { auth: true, closeOnLogout: true }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/activity-log\",\r\n\t\t\tname: \"activity-log\",\r\n\t\t\tcomponent: ActivityLogManagement,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Activity Log\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\tget(featuresList, [\"ActivityLog\"]) && permissions.canViewActivityLogManagement,\r\n\t\t\t\ticonClass: \"fa fa-list-alt\",\r\n\t\t\t\tmenuGroup: 1,\r\n\t\t\t\tmenuOrder: 3,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/field-ops\",\r\n\t\t\tname: \"field-ops\",\r\n\t\t\tcomponent: () => import(\"@/views/FieldOps.vue\"),\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Field Ops\",\r\n\t\t\t\ticonClass: \"fas fa-street-view\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\tget(featuresList, [\"MobileUsers\"]) && (permissions.canViewFieldOps || permissions.canEditFieldOps),\r\n\t\t\t\tmenuGroup: 1,\r\n\t\t\t\tmenuOrder: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/cameras\",\r\n\t\t\tname: \"cameras\",\r\n\t\t\tcomponent: Cameras,\r\n\t\t\tmeta: { auth: true }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/eventsearch/:eventId?\",\r\n\t\t\tname: \"eventsearch\",\r\n\t\t\tcomponent: EventSearchPage,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Event Search\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\tpermissions.canViewEvents && get(featuresList, [\"Alarms\", \"EventSearch\"]),\r\n\t\t\t\ticonClass: \"fas fa-search\",\r\n\t\t\t\tmenuGroup: 1,\r\n\t\t\t\tmenuOrder: 4,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/admin\",\r\n\t\t\tname: \"admin\",\r\n\t\t\tcomponent: SiteAdminLanding,\r\n\t\t\tmeta: { auth: true }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/mobile\",\r\n\t\t\tname: \"mobile\",\r\n\t\t\tcomponent: MobileCore,\r\n\t\t\tmeta: { auth: true, redirectOnLogin: true }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/reports/\",\r\n\t\t\tname: \"reports\",\r\n\t\t\tcomponent: Reports,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Insight\",\r\n\t\t\t\tshow: (permissions, featuresList) => permissions.canViewReports && get(featuresList, [\"Insights\"]),\r\n\t\t\t\ticonClass: \"fas fa-chart-bar\",\r\n\t\t\t\tmenuGroup: 1,\r\n\t\t\t\tmenuOrder: 5,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/reports/:reportType\",\r\n\t\t\tname: \"reports-loaded-report\",\r\n\t\t\tcomponent: Reports,\r\n\t\t\tmeta: { auth: true }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/contacts/\",\r\n\t\t\tname: \"contacts\",\r\n\t\t\tcomponent: Contacts,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Contacts\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\t(permissions.canEditSiteSetup || permissions.canViewSiteSetup) && get(featuresList, [\"Contacts\"]),\r\n\t\t\t\ticonClass: \"fas fa-address-book\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/devices/\",\r\n\t\t\tname: \"devices\",\r\n\t\t\tcomponent: () => import(\"@/views/Devices.vue\"),\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"devices\",\r\n\t\t\t\tshow: (permissions, featuresList) => permissions.canEditSiteSetup && get(featuresList, [\"Devices\"]),\r\n\t\t\t\ticonClass: \"fas fa-power-off\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/device-setup/\",\r\n\t\t\tname: \"device-setup\",\r\n\t\t\tcomponent: () => import(\"@/views/DeviceSetup.vue\"),\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Device Setup\",\r\n\t\t\t\tshow: (permissions, featuresList) => (permissions.isSystemAdmin || permissions.isAccountAdmin) && get(featuresList, [\"Devices\", \"AdvancedSetup\"]),\r\n\t\t\t\ticonClass: \"fas fa-power-off\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/contact-roles/\",\r\n\t\t\tname: \"contact-roles\",\r\n\t\t\tcomponent: ContactRoles,\r\n\t\t\tmeta: { auth: true }\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/areas\",\r\n\t\t\tname: \"areas\",\r\n\t\t\tcomponent: AreaSetupPage,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Areas\",\r\n\t\t\t\tshow: (permissions, featuresList) => get(featuresList, [\"Areas\"]) && permissions.canViewSiteSetup,\r\n\t\t\t\ticonClass: \"fas fa-city\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/admin/configure-action-plans\",\r\n\t\t\tname: \"configure-tasks\",\r\n\t\t\tcomponent: ConfigureTasks,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Actions\",\r\n\t\t\t\tshow: (permissions, featuresList) => permissions.canEditSettings,\r\n\t\t\t\ticonClass: \"fas fa-clipboard-list-check\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/event-configuration\",\r\n\t\t\tname: \"event-configuration\",\r\n\t\t\tcomponent: () => import(\"@/views/EventConfigurationPage.vue\"),\r\n\t\t\tmeta: {\r\n\t\t\t\ttitle: \"Event Types\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\tget(featuresList, [\"EventTypeSetup\"]) && permissions.canEditSettings,\r\n\t\t\t\ticonClass: \"fas fa-cog\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/users/\",\r\n\t\t\tname: \"users\",\r\n\t\t\tcomponent: UserManagementSetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Users\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\t(permissions.isSystemAdmin ||\r\n\t\t\t\t\t\t\tpermissions.canEditUserPermissions ||\r\n\t\t\t\t\t\t\tpermissions.canViewUserSetup) &&\r\n\t\t\t\t\tget(featuresList, [\"Users\"]),\r\n\t\t\t\ticonClass: \"fas fa-users\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/permissions/\",\r\n\t\t\tname: \"permissions\",\r\n\t\t\tcomponent: Permissions,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"User Permissions\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\t(permissions.isSystemAdmin || permissions.canEditUserGroups) && get(featuresList, [\"UserGroups\"]),\r\n\t\t\t\ticonClass: \"fas fa-user-check\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tours\",\r\n\t\t\tname: \"tours\",\r\n\t\t\tcomponent: TourSetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Video Tour\",\r\n\t\t\t\tshow: (permissions, featuresList) => permissions.canEditSettings && get(featuresList, [\"VideoTours\"]),\r\n\t\t\t\ticonClass: \"far fa-play-circle\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/mobile-raise-setup\",\r\n\t\t\tname: \"mobile-raise-setup\",\r\n\t\t\tcomponent: MobileRaiseSetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Mobile Raise\",\r\n\t\t\t\tshow: (permissions, featuresList) => {\r\n\t\t\t\t\tconst userHavePermission = permissions.canViewMobileRaise || permissions.canEditMobileRaise\r\n\t\t\t\t\tconst featureEnabled = get(featuresList, [\"Mobile\", \"MobileRaise\"])\r\n\t\t\t\t\treturn featureEnabled && userHavePermission\r\n\t\t\t\t},\r\n\t\t\t\ticonClass: \"fas fa-mobile-alt\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/feature-setup/\",\r\n\t\t\tname: \"feature-setup\",\r\n\t\t\tcomponent: FeatureSetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Features\",\r\n\t\t\t\tshow: (permissions, featuresList) => permissions.isSystemAdmin,\r\n\t\t\t\ticonClass: \"fas fa-cubes\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/map-setup\",\r\n\t\t\tname: \"map-setup\",\r\n\t\t\tcomponent: MapSetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Map Setup\",\r\n\t\t\t\tshow: (permissions, featuresList) => get(featuresList, [\"MapSetup\"]) && permissions.canEditSiteSetup,\r\n\t\t\t\ticonClass: \"fas fa-map\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/organization\",\r\n\t\t\tname: \"organization\",\r\n\t\t\tcomponent: SubscriptionDetails,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Organization Settings\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\t(get(featuresList, [\"Billing\"]) ||\r\n\t\t\t\t\t\tget(featuresList, [\"SAMLAuthentication\"]) ||\r\n\t\t\t\t\t\tget(featuresList, [\"Suite\"]) ||\r\n\t\t\t\t\t\tget(featuresList, [\"Alarms\",\"SiteMonitor\",\"QuickEnd\"]) ||\r\n\t\t\t\t\t\tget(featuresList, [\"Alarms\",\"AlarmAgeWarning\"]) ||\r\n\t\t\t\t\t\tget(featuresList, [\"Alarms\",\"EventQueue\",\"PriorityColors\"]) ||\r\n\t\t\t\t\t\tget(featuresList, [\"TenantSettings\"])) &&\r\n\t\t\t\t\t(permissions.isSystemAdmin ||\r\n permissions.isAccountAdmin ||\r\n permissions.canViewSubscriptionDetails),\r\n\t\t\t\ticonClass: \"fas fa-clipboard-check\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n {\r\n path: \"/signup\",\r\n name: \"signup\",\r\n component: SignUp,\r\n meta: { loadFeatures: false },\r\n children: [\r\n {\r\n path: \"contactinfo\",\r\n component: ContactInfo,\r\n\t\t\t\t\tmeta: { loadFeatures: false },\r\n\r\n },\r\n {\r\n path: \"companyinfo\",\r\n component: CompanyInfo,\r\n \t\t\tmeta: { loadFeatures: false },\r\n\t\t\t\t},\r\n {\r\n path: \"securityinfo\",\r\n component: SecurityInfo,\r\n\t\t\t\t\tmeta: { loadFeatures: false },\r\n },\r\n {\r\n path: \"paymentInfo\",\r\n component: PaymentInfo,\r\n\t\t\t\t\tmeta: { loadFeatures: false },\r\n },\r\n ]\r\n },\r\n\t\t{\r\n\t\t\tpath: \"/alarmSetup\",\r\n\t\t\tname: \"alarmSetup\",\r\n\t\t\tcomponent: AlarmSetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Alarms\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\tpermissions.canEditSiteSetup &&\r\n\t\t\t\t\tget(featuresList, [\"AlarmSetup\"]),\r\n\t\t\t\ticonClass: \"fas fa-bell-plus\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/EventCategorySetup\",\r\n\t\t\tname: \"eventCategorySetup\",\r\n\t\t\tcomponent: EventCategorySetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Event Categories\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\t\tpermissions.canEditEventCategorySetup && get(featuresList, \"EventCategorySetup\"),\r\n\t\t\t\ticonClass: \"far fa-object-ungroup\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/AssetSetup\",\r\n\t\t\tname: \"assetSetup\",\r\n\t\t\tcomponent: AssetSetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Asset Setup\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\tget(featuresList, [\"MobileUsers\"]) && (permissions.canViewAssetSetup || permissions.canEditAssetSetup),\r\n\t\t\t\ticonClass: \"fas fa-walking\",\r\n\t\t\t\ticonMask: \"far fa-star\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/Schedules\",\r\n\t\t\tname: \"schedules\",\r\n\t\t\tcomponent: Schedules,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Schedules\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\tget(featuresList, [\"Schedules\"]) && (permissions.canViewSiteSetup || permissions.canEditSiteSetup || permissions.canViewSchedules || permissions.canEditSchedules),\r\n\t\t\t\ticonClass: \"fad fa-calendar-alt\",\r\n\t\t\t\ticonMask: \"fad fa-clock\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/setPassword\",\r\n\t\t\tname: \"set-password\",\r\n\t\t\tcomponent: SetPassword,\r\n\t\t\tmeta: { loadFeatures: false },\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/resetPassword\",\r\n\t\t\tname: \"reset-password\",\r\n\t\t\tcomponent: ResetPassword,\r\n\t\t\tmeta: { loadFeatures: false },\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/rules-engine\",\r\n\t\t\tname: \"rules-engine\",\r\n\t\t\tcomponent: RulesEngineSetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Automate\",\r\n\t\t\t\ticonClass: \"far fa-pencil-ruler\",\r\n\t\t\t\tshow: (permissions, features) => (permissions.canViewRulesEngine || permissions.canEditRulesEngine || permissions.isSystemAdmin) && get(features, [\"RulesEngine\"]),\r\n\t\t\t\tmenuGroup: 2\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/system-view\",\r\n\t\t\tname: \"system-view\",\r\n\t\t\tcomponent: SystemView,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Status\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\t(permissions.canViewSystemView || permissions.isSystemAdmin) &&\r\n\t\t\t\t\tget(featuresList, [\"SystemView\"]),\r\n\t\t\t\ticonClass: \"fas fa-sitemap\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/ExternalMapLayerSetup\",\r\n\t\t\tname: \"externalMapLayerSetup\",\r\n\t\t\tcomponent: ExternalMapLayerSetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"External Map Layers\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\t(permissions.isSystemAdmin || permissions.canViewExternalMapLayers || permissions.canEditExternalMapLayers) &&\r\n\t\t\t\t\tget(featuresList, [\"ExternalMapLayers\"]),\r\n\t\t\t\ticonClass: \"fas fa-layer-group\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/masking-reasons-setup\",\r\n\t\t\tname: \"maskingReasonsSetup\",\r\n\t\t\tcomponent: MaskingReasonsSetup,\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Masking Reasons\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\t(permissions.canEditMaskReasons || permissions.canViewMaskReasons) && get(featuresList, [\"Alarms\",\"Masking\", \"Advanced\", \"Reasons\"]),\r\n\t\t\t\ticonClass: \"fas fa-shield\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/event-edit/:eventId\",\r\n\t\t\tname: \"eventEdit\",\r\n\t\t\tcomponent: () => import(\"@/views/EventEdit.vue\"),\r\n\t\t\tmeta: {\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Edit Event\",\r\n\t\t\t\tshow: () => false,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/NotificationTemplates\",\r\n\t\t\tname: \"notificationTemplates\",\r\n\t\t\tcomponent: NotificationTemplateSetup,\r\n\t\t\tmeta:{\r\n\t\t\t\tauth: true,\r\n\t\t\t\ttitle: \"Notification Templates\",\r\n\t\t\t\tshow: (permissions, featuresList) =>\r\n\t\t\t\t\t(permissions.canEditNotificationTemplates || permissions.canViewNotificationTemplates) && get(featuresList, [\"Alarms\", \"SiteMonitor\", \"Email\", \"NotificationTemplates\"]),\r\n\t\t\t\ticonClass: \"fas fa-comment-alt-edit\",\r\n\t\t\t\tmenuGroup: 2,\r\n\t\t\t}\r\n\t\t},\r\n\t\t{\r\n\t\t\t// handle a non-existing route - redirect to root route\r\n\t\t\tpath: \"*\",\r\n\t\t\tredirect: \"/\"\r\n\t\t},\r\n\t]\r\n});\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemView.vue?vue&type=style&index=0&id=1912d50f&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BufferSeek.vue?vue&type=style&index=0&id=6a44dff8&prod&scoped=true&lang=scss\"","import { SubscriptionDto } from \"@/store/subscription/types\";\r\nimport { CancelTokenSource } from \"axios\";\r\n\r\nexport interface RootState {\r\n\t[x: string]: any; // hacky,\r\n\t// solves problem described here\r\n\t// @ref https://forum.vuejs.org/t/vuex-submodules-with-typescript/40903/4\r\n\tappInitialised: boolean;\r\n\tdataError: boolean;\r\n\tUser: User;\r\n\tUserGroups: UserGroup[];\r\n\tsystemPrefs: SystemPrefs;\r\n\tmobilePrefs: MobilePrefs;\r\n\tkeyboardShortcuts: KeyboardShortcut[];\r\n\ttimeZoneAbbr: string;\r\n\twindowId: string;\r\n\tactiveRegion: ActiveRegion;\r\n\tlocalUserData: User;\r\n\tfeaturesList: FeaturesList;\r\n\ttimeZones: TimeZone[];\r\n\tisSessionHeartBeatActive: boolean;\r\n\tisSystemAdminAccessTimeModalHidden: boolean;\r\n\televationLabels: ElevationLabelType[];\r\n\tappOptions: AppOptions | null;\r\n\trequiresConfiguration: boolean | null;\r\n\ttenantSystemPrefs: TenantSystemPrefs;\r\n\treloadEventQueue: boolean;\r\n\tautoFeedAlarms: boolean;\r\n}\r\n\r\nexport interface User {\r\n\tloggedIn: boolean;\r\n\tfullName: string;\r\n\tuserId: number;\r\n\tusername: string;\r\n\tuserGroupId: number;\r\n\terror: string;\r\n\tisFullUser: boolean;\r\n\tuserPermissions: UserPermissions;\r\n\tuserPrefs: UserPrefs;\r\n\tisFirstLogin: boolean;\r\n\ttenantGroupId: number;\r\n\tdynamicLinkConfig?: DynamicLinkConfig;\r\n\tmobileAppEnabled?: boolean;\r\n\tsuiteUserId?: string;\r\n\tsuiteResponseLicenced?: boolean;\r\n\tsuiteCasesLicenced?: boolean;\r\n\tsuiteTenantId?: string;\r\n}\r\n\r\nexport interface FeatureTreeNode {\r\n\tchildren?: FeatureTreeNode[];\r\n\tdescription?: string | null;\r\n\tenabled: boolean;\r\n\tisDefault?: boolean;\r\n\tisRelease?: string;\r\n\tname: string;\r\n\tsupportLink?: string;\r\n\tisLicenseable?: boolean;\r\n\tisEnabledInCurrentLicense?: boolean;\r\n\texpanded?: boolean;\r\n}\r\n\r\nexport interface UserPermissions {\r\n\tcanManageContactRoles: boolean;\r\n\tcanEditSettings: boolean;\r\n\tcanHandleAlarms: boolean;\r\n\tcanViewReports: boolean;\r\n\tcanAddIndividualActions: boolean;\r\n\tcanEditUserPermissions: boolean;\r\n\tcanViewSiteSetup: boolean;\r\n\tcanEditSiteSetup: boolean;\r\n\tisSystemAdmin: boolean;\r\n\tcanRaiseActivityLog: boolean;\r\n\tcanToggleLogVisibility: boolean;\r\n\tcanEditOwnActivityLog: boolean;\r\n\tcanEditOtherActivityLogs: boolean;\r\n\tcanDisarmSites: boolean;\r\n\tcanDisarmSitesExtended: boolean;\r\n\tcanSetResponseToMasked: boolean;\r\n\tcanSetSiteToOnTest: boolean;\r\n\tcanSetSiteToAuditMode: boolean;\r\n\tcanViewEvents: boolean;\r\n\tcanAccessQuickControl: boolean;\r\n\tcanViewMediaMatrixControls: boolean;\r\n\tcanAccessManualRaise: boolean;\r\n\tcanAccessManualTour: boolean;\r\n\tcanViewSitRep: boolean;\r\n canUseMobile: boolean;\r\n\tcanViewMobileRaise: boolean;\r\n\tcanEditMobileRaise: boolean;\r\n\tcanDownloadEventSearchSitRep: boolean;\r\n\tcanDownloadEventSearchMedia: boolean;\r\n\tcanViewSubscriptionDetails: boolean;\r\n\tcanProcessActiveAlarms: boolean;\r\n\tcanDownloadSingleClip: boolean;\r\n\tisAccountAdmin: boolean;\r\n canViewExternalMapLayers: boolean;\r\n\tcanEditExternalMapLayers: boolean;\r\n\tcanEditInsightsTitle: boolean;\r\n\tcanExtendAlerts: boolean;\r\n\tcanEditMaps: boolean;\r\n\tcanEditSystemSettings: boolean;\r\n\tcanEditEventCategorySetup: boolean;\r\n\tcanEditGuardTours: boolean;\r\n\tcanAssignGuardTour: boolean;\r\n\tcanConductGuardTour: boolean;\r\n\tcanClaimFromMobileRaise: boolean;\r\n\tcanPreserveEvents: boolean;\r\n\tcanRequestSupport: boolean;\r\n\tcanEditAssetSetup: boolean;\r\n\tcanViewFieldOps: boolean;\r\n\tcanEditFieldOps: boolean;\r\n\tcanOverrideGroupSync: boolean;\r\n\tcanUpdateEventLocation: boolean;\r\n\tcanUpdateEndedEventLocation: boolean;\r\n\tcanEditAutomations: boolean;\r\n\tcanViewAutomations: boolean;\r\n\tcanViewSystemView: boolean;\r\n\tcanViewSituationalAwarenessEvents: boolean;\r\n\tcanPromoteSituationalAwarenessEvent: boolean;\r\n\tcanDismissSituationalAwarenessEvent: boolean;\r\n\tcanViewRulesEngine: boolean;\r\n\tcanEditRulesEngine: boolean;\r\n\tcanUpdateEventCategory: boolean;\r\n\tcanViewSchedules: boolean;\r\n\tcanEditSchedules: boolean;\r\n\tcanEndMultipleEvents: boolean;\r\n\tcanEditMaskReasons: boolean;\r\n\tcanViewMaskReasons: boolean;\r\n\tcanEditPostEvent: boolean;\r\n\tcanMaskUntilDateTime: boolean;\r\n\tcanChangeMaskAction: boolean;\r\n\tcanViewEventHistory: boolean;\r\n\tcanPutAlarmPointsOnTest: boolean;\r\n\tcanUseVirtualAssistSummary: boolean;\r\n\tcanViewNotificationTemplates: boolean;\r\n\tcanEditNotificationTemplates: boolean;\r\n\tcanConfigureSuiteSync: boolean;\r\n\tcanConfigureDeviceSync: boolean;\r\n\tcanEditInvolvedParties: boolean;\r\n\tcanUseVirtualOperators: boolean;\r\n\tcanViewCustomFields: boolean;\r\n\tcanEditCustomFields: boolean;\r\n\tcanViewAdvancedStatusFilters: boolean;\r\n\tcanEditAdvancedStatusFilters: boolean;\r\n\tcanViewSLAs: boolean;\r\n\tcanEditSLAs: boolean;\r\n\talarmQueueFilterRestrictions: boolean;\r\n\tcanFailOverAppliance: boolean;\r\n\tcanPerformMatrixSnapshot: boolean;\r\n\tcanOverrideEventActionPlan: boolean;\r\n}\r\n\r\nexport interface UserGroup {\r\n\tgroupID: number;\r\n\tparentGroupID: number;\r\n\tgroupTypeID: number;\r\n\ttitle: string;\r\n\tarmed: boolean;\r\n\tdisabledAt: string;\r\n\tmobileAppEnabled: boolean;\r\n\tlicenseTypeID: number;\r\n}\r\n\r\nexport interface KeyboardShortcut {\r\n\tkeys: string;\r\n\taction: string;\r\n\tfeatureFlag?: string;\r\n}\r\n\r\nexport interface LegendKey {\r\n\ticon: string;\r\n\tdetails: string;\r\n}\r\n\r\nexport interface RoutingGroup {\r\n\troutingGroupID: number;\r\n\tgroupID: number;\r\n\ttitle: string;\r\n\tisDefault: boolean;\r\n\tisActive: boolean;\r\n\tunattendedEscalateTo: number;\r\n\tcanEscalateTo: string;\r\n\tcolourCode: string;\r\n}\r\n\r\nexport interface ActiveRegion {\r\n\tregionId: number;\r\n\tregionUrl: string;\r\n}\r\n\r\nexport interface EventSearchFeatures {\r\n\tPreserveEvents: boolean | undefined | null;\r\n\tSupplementalNotes: boolean | undefined | null;\r\n\tAlarmTag: boolean | undefined | null;\r\n\tDownloadEvent: boolean | undefined | null;\r\n\tDownloadSingleClip: boolean | undefined | null;\r\n}\r\n\r\nexport interface MediaMatrixFeatures {\r\n\tAreaTree: boolean | undefined | null;\r\n\tRelayControl: boolean | undefined | null;\r\n\tTours: boolean | undefined | null;\r\n\tDeviceAudit: boolean | undefined | null;\r\n\tLinkedCameras: boolean | undefined | null;\r\n\tClear: boolean | undefined | null;\r\n\tHideMenu: boolean | undefined | null;\r\n}\r\n\r\nexport interface SiteMonitorFeatures {\r\n\tMap: boolean | undefined | null;\r\n\tEventSharing: boolean | undefined | null;\r\n\tSitRep: boolean | undefined | null;\r\n\tRaise: boolean | undefined | null;\r\n\tSiteDetails: boolean | undefined | null;\r\n\tNoteAttachments: boolean | undefined | null;\r\n\tPark: boolean | undefined | null;\r\n\tLinkedCameras: boolean | undefined | null;\r\n\tEventFlagging: boolean | undefined | null;\r\n\tAcknowledgeAll: boolean | undefined | null;\r\n\tQuickEnd: boolean | undefined | null;\r\n}\r\n\r\nexport interface EventQueueFeatures {\r\n\tAutoFeedNextAlarm: boolean | undefined | null;\r\n\tMap: boolean | undefined | null;\r\n\tManualRaise: ManualRaiseFeatures | undefined | null;\r\n\tManualTour: boolean | undefined | null;\r\n\tInProcessing: boolean | undefined | null;\r\n\tParked: boolean | undefined | null;\r\n\tPatrol: boolean | undefined | null;\r\n\tDisableProcessingActiveAlarms: | boolean | undefined | null;\r\n}\r\n\r\nexport interface ManualRaiseFeatures {\r\n\tRequireNote: boolean | undefined | null;\r\n}\r\n\r\nexport interface ActionPlanFeatures {\r\n\tAssignActions: boolean | undefined | null;\r\n}\r\n\r\nexport interface AlarmPointsFeatures {\r\n\tOnTest: boolean | undefined | null;\r\n\tMasking: boolean | undefined | null;\r\n\tAuditMode: boolean | undefined | null;\r\n\tAlarmHistory: boolean | undefined | null;\r\n}\r\n\r\nexport interface AlarmFeatures {\r\n\tMediaMatrix: MediaMatrixFeatures | undefined | null;\r\n\tEventSearch: EventSearchFeatures | undefined | null;\r\n\tSiteMonitor: SiteMonitorFeatures | undefined | null;\r\n\tEventQueue: EventQueueFeatures | undefined | null;\r\n\tQuickControl: boolean | undefined | null;\r\n\tAlarmQueueFilters: boolean | undefined | null;\r\n\tActionPlans: ActionPlanFeatures | undefined | null;\r\n\tAlarmPoints: AlarmPointsFeatures | undefined | null;\r\n\tAutoPassAlarmOnLeave: boolean | undefined | null;\r\n\tMaps: MapsFeatures | undefined | null;\r\n\tSessionExpiryAudioSound: boolean | undefined | null;\r\n}\r\n\r\nexport interface MapsFeatures {\r\n\tToggleSiteMonitor: boolean | undefined | null;\r\n\tToggleEventQueue: boolean | undefined | null;\r\n}\r\n\r\nexport interface ActionsFeatures {\r\n\tChoices: boolean | undefined | null;\r\n\tCallContact: boolean | undefined | null;\r\n\tMassNotification: boolean | undefined | null;\r\n\tSitRep: boolean | undefined | null;\r\n\tCCure: boolean | undefined | null;\r\n\tViewAudit: boolean | undefined | null;\r\n\tDynamicDataList: boolean | undefined | null;\r\n\tCollapseCompletedActions: boolean | undefined | null;\r\n}\r\n\r\nexport interface CCureUIFeatures {\r\n\tLogALL: boolean | undefined | null;\r\n\tLogSingle: boolean | undefined | null;\r\n}\r\n\r\nexport interface CCureFeatures {\r\n\tUI: CCureUIFeatures | undefined | null;\r\n}\r\n\r\nexport interface IntegrationFeatures {\r\n\tLenel: boolean | undefined | null;\r\n\tCCure: CCureFeatures | undefined | null;\r\n\tGenetec: boolean | undefined | null;\r\n}\r\n\r\nexport interface MobileFeatures {\r\n\tManualRaise: boolean | undefined | null;\r\n\tTracking: boolean | undefined | null;\r\n Views: boolean | undefined | null;\r\n ManualLocation: boolean | undefined | null;\r\n FieldOps: FieldOpsFeatures | undefined | null;\r\n}\r\n\r\nexport interface FieldOpsFeatures {\r\n\tEventShare: FieldOpsEventShareFeatures | undefined | null;\r\n}\r\n\r\nexport interface FieldOpsEventShareFeatures {\r\n\tFileUpload: boolean | undefined | null;\r\n}\r\n\r\nexport interface UsersFeatures {}\r\n\r\nexport interface EventTypeSetupFeatures {\r\n\tGeofence?: boolean | undefined | null;\r\n}\r\n\r\nexport interface TenantFeatures {\r\n\tDefaultMasking: boolean | undefined | null;\r\n\tDefaultParking: boolean | undefined | null;\r\n}\r\n\r\nexport interface ValidatePinCodeRequest {\r\n\tUserId: number;\r\n\tEventId: number;\r\n\tPinCode: string;\r\n}\r\n\r\nexport interface FeaturesList {\r\n\tAlarms: AlarmFeatures | undefined | null;\r\n\tActions: ActionsFeatures | undefined | null;\r\n\tIntegration: IntegrationFeatures | undefined | null;\r\n\tActivityLog: boolean | undefined | null;\r\n\tInsights: boolean | undefined | null;\r\n\tDispatch: DispatchFeatures | undefined | null;\r\n\tMobile: MobileFeatures | undefined | null;\r\n\tView: boolean | undefined | null;\r\n\tUsers: boolean | undefined | null;\r\n\tEventTypeSetup: EventTypeSetupFeatures | undefined | null;\r\n EventCategorySetup: boolean | undefined | null;\r\n CaseManagement: CaseManagementFeatures | undefined | null;\r\n MobileUsers: boolean | undefined | null;\r\n\tSystemView: boolean | undefined | null;\r\n\tSituationalAwareness: SituationalAwarenessFeatures | undefined | null;\r\n\tTenantSettings: TenantFeatures | undefined | null;\r\n}\r\n\r\nexport interface SituationalAwarenessFeatures {\r\n\tExternalAlerts: boolean | undefined | null;\r\n}\r\n\r\nexport interface DispatchFeatures {\r\n\tFilters: boolean | undefined | null;\r\n}\r\n\r\nexport interface TimeZone {\r\n\ttimeZoneID: number;\r\n\tid: string; // this is the name of the timezone\r\n\tdisplayName: string;\r\n\tiana?: string; // Used for TimeZone conversion\r\n}\r\n\r\nexport interface DynamicLinkConfig {\r\n\ttestPattern: string;\r\n\tlinkFormatter: string;\r\n}\r\n\r\nexport interface CaseManagementFeatures {\r\n RaiseToCaseManagement: boolean | undefined | null;\r\n}\r\n\r\nexport interface LoginRequest {\r\n\tusername: string,\r\n\tpassword: string,\r\n\tauthCode?: string,\r\n\ttoken?: string\r\n}\r\n\r\nexport interface LoginResult {\r\n\tauthenticationStatus: AuthenticationStatus;\r\n\tuserId: number;\r\n\tusername: string;\r\n\tgroupId: number;\r\n\ttenantGroupId: number;\r\n\tfullName: string;\r\n\tpermissions: UserPermissions;\r\n\tfeatures: FeaturesList;\r\n\tsubscription: SubscriptionDto\r\n\tuserPrefs: UserPrefs;\r\n\tsystemPrefs: SystemPrefs;\r\n\tredirectRoute: string;\r\n\tisFirstLogin: boolean;\r\n\tmfaToken: string;\r\n\tmobileAppEnabled: boolean;\r\n\tsuiteUserId: string;\r\n\tsuiteResponseLicenced: boolean;\r\n\tsuiteCasesLicenced: boolean;\r\n\tsuiteTenantId?: string;\r\n\televationLabels: ElevationLabelType;\r\n\ttenantSystemPrefs: TenantSystemPrefs;\r\n}\r\n\r\nexport interface LoginProviderResult {\r\n\tisExternal: boolean;\r\n\tauthorizationEndpoint: string;\r\n}\r\n\r\nexport enum AuthenticationStatus {\r\n\tNone = -1,\r\n\tSuccess,\r\n\tLockedOut,\r\n\tDisabledUser,\r\n\tPasswordExpired,\r\n\tConfigureMfa\r\n}\r\n\r\nexport interface UserPrefs {\r\n\tuseImperialMeasurements: boolean;\r\n}\r\n\r\nexport interface MobilePrefs {\r\n\tmapStyle?: string;\r\n}\r\n\r\nexport interface SystemPrefs {\r\n\tmapType: string;\r\n\thideLabels: boolean;\r\n\trequireMapPin: boolean;\r\n\tcanUsersAddIndividualActions: boolean;\r\n\talarmScreenTimeoutSeconds: number;\r\n\talarmAgeWarningSeconds: number;\r\n}\r\n\r\nexport interface PaginatedQueryParams {\r\n\tpage: number;\r\n\tpageSize: number;\r\n\tsortBy?: string;\r\n\tsortDesc?: boolean;\r\n}\r\n\r\nexport interface PaginatedSearchQueryParams extends PaginatedQueryParams {\r\n\tsearchTerm?: string;\r\n\tserverId?: number;\r\n\tisEmailAlarms?: boolean;\r\n\tisResponseId?: boolean;\r\n}\r\n\r\nexport interface MaskingModalPaginatedSearchQueryParams extends PaginatedSearchQueryParams {\r\n\tfilterMaskingType?: MaskingTypeEnum;\r\n}\r\n\r\nexport interface AreaContactModalPaginatedSearchQueryParams extends PaginatedSearchQueryParams {\r\n\troleSearchTerm?: string;\r\n}\r\n\r\nexport enum MaskingTypeEnum {\r\n\tUnarmed = 0,\r\n\tArmed = 1,\r\n\tAll = 2\r\n}\r\n\r\nexport interface PaginatedSearchQueryParamsCustomField extends PaginatedQueryParams {\r\n\tcustomFieldTableType?: number;\r\n\tlive?: boolean;\r\n}\r\n\r\nexport interface VueBootstrapField {\r\n\tkey: string;\r\n\tlabel: string;\r\n\tsortable?: boolean;\r\n\tsortDirection?: string;\r\n\tformatter?: any;\r\n\tclass?: string;\r\n\tisActive?: boolean;\r\n\tfilterByFormatted?: boolean;\r\n\tsortByFormatted?: boolean;\r\n\theaderTitle?: string;\r\n\tvisible?: boolean;\r\n\tsearchable?: boolean;\r\n\tdataType?: string;\r\n\tthStyle?: Object;\r\n\tthClass?: string;\r\n\teditable?: boolean;\r\n}\r\n\r\nexport interface VueBootstrapFieldTableSortEvent {\r\n\tapiUrl: string;\r\n\tcurrentPage: number;\r\n\tperPage: number;\r\n\tfilter: string;\r\n\tsortBy: string;\r\n\tsortDesc: boolean;\r\n}\r\n\r\nexport interface VueBootstrapFieldEx extends VueBootstrapField {\r\n\tkeySort?: string;\r\n}\r\n\r\nexport interface CancellableQuery {\r\n\tparams: T;\r\n\tcancelTokenSource: CancelTokenSource;\r\n}\r\n\r\nexport interface LogoutPayload {\r\n\thasSessionExpired: boolean,\r\n\tplayAudioAlert: boolean,\r\n\terrorMessage?: string,\r\n}\r\n\r\nexport interface ElevationLabelType {\r\n\tmapElevationId?: number;\r\n\ttenantId?: number;\r\n\ttitle: string;\r\n\televation: number;\r\n}\r\n\r\nexport interface AppOptions {\r\n\tversion: string;\r\n\tdeployed?: string;\r\n}\r\n\r\nexport interface TenantSystemPrefs {\r\n\tdefaultMaskValue: number;\r\n\tdefaultParkValue: number;\r\n\talarmAgeWarningSeconds: number;\r\n\tdefaultMaskAction: boolean;\r\n\tmaxResponseSlaDuration: number | null;\r\n\tresponseSlaNotifyAtSecondsRemaining: number | null;\r\n}\r\n\r\nexport interface UserInfo {\r\n\tuserId: number;\r\n\tfullName: string;\r\n\tnotes: string;\r\n\temail: string;\r\n}\r\n\r\nexport enum PlatformTypeEnum {\r\n\tResponse = 1,\r\n}\r\n\r\nexport interface VueSelectDropdownProperties {\r\n\twidth: string;\r\n\ttop: string;\r\n\tleft: string;\r\n}\r\n\r\nexport type NumberToStringMap = { [key: number]: string };\r\nexport type NumberToNumberMap = {[key: number]: {[key:number]: any }};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"no-body\":\"\"}},[_c('div',{staticClass:\"card-body\",on:{\"click\":_vm.openEventQueue}},[_c('p',{staticClass:\"updatedAt\"},[_vm._v(\"Last Updated: \"+_vm._s(_vm.updatedAt))]),(_vm.status)?_c('div',{attrs:{\"align\":\"center\"}},[_c('table',{staticClass:\"events-table\",staticStyle:{\"width\":\"320px\"}},[_c('tr',[_c('td',[_vm._v(\"Events:\")]),_c('td',[_vm._v(\"Active \"),_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.status.inQueue))])],1),_c('td',[_vm._v(\"In Processing \"),_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.status.inProc))])],1),_c('td',[_vm._v(\"Parked \"),_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.status.parked))])],1)])])]):_vm._e()]),_c('audio',{attrs:{\"id\":\"newAlarmAudio\"}},[_c('source',{attrs:{\"src\":\"media/alarm.wav\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport _Vue from \"vue\";\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport api from \"@/services/api.service\";\r\nimport { Getter } from 'vuex-class';\r\n\r\nexport interface EventQueueStatusInfo {\r\n\tinQueue: number, \r\n\tinProc: number, \r\n\tparked: number\r\n}\r\n\r\n@Component({\r\n\tcomponents: {}\r\n})\r\nexport default class EqStatusInfoBar extends Vue {\r\n\tprivate status: any = null;\r\n\tprivate updatedAt: string = \"\";\r\n\tprivate timeoutId: NodeJS.Timeout = null;\r\n\r\n\t@Getter(\"getFeature\") private getFeature: (featureName: string[]) => boolean;\r\n\r\n\r\n\t@Prop({type:Boolean, default: false })\r\n\tprivate readonly: Boolean; \r\n\r\n\tprivate mounted(): void {\r\n\t\tthis.poll();\r\n\t}\r\n\r\n\tprivate beforeDestroy(): void {\r\n\t\tif (this.timeoutId) {\r\n\t\t\tclearTimeout(this.timeoutId);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async poll(): Promise {\r\n\t\tthis.status = await api.getEventQueueState();\r\n\t\tthis.updatedAt = new Date().toLocaleString();\r\n\t\tthis.timeoutId = setTimeout(this.poll, 10000);\r\n\t}\r\n\r\n\tprivate openEventQueue(): void {\r\n\t\tif(this.readonly)\r\n\t\t\treturn;\r\n\t\t\t\r\n\t\tthis.$router.push(\"/event-queue\");\r\n\t}\r\n\r\n\tprivate get isNewAlarmAudioEnabled(): boolean {\r\n\t\treturn this.getFeature([\"SystemInfoBar\", \"NewAlarmAudio\"]);\r\n\t}\r\n\r\n\t@Watch(\"status\", {deep: true})\r\n\tprivate statusWatcher(newValue: EventQueueStatusInfo | null, oldValue: EventQueueStatusInfo | null): void {\r\n\t\tif(!newValue || !oldValue || !this.isNewAlarmAudioEnabled)\r\n\t\t\treturn;\r\n\t\t\t\r\n\t\tconst oldValueTotal = oldValue.inQueue + oldValue.inProc + oldValue.parked;\r\n\t\tconst newValueTotal = newValue.inQueue + newValue.inProc + newValue.parked;\r\n\r\n\t\tif(newValueTotal > oldValueTotal){\r\n\t\t\tif (this.isNewAlarmAudioEnabled){\r\n\t\t\t\tconst audio = document.getElementById(\"newAlarmAudio\");\r\n\t\t\t\t(audio as HTMLAudioElement).play();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EqStatusInfoBar.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EqStatusInfoBar.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EqStatusInfoBar.vue?vue&type=template&id=d9d1c9e8&scoped=true\"\nimport script from \"./EqStatusInfoBar.vue?vue&type=script&lang=ts\"\nexport * from \"./EqStatusInfoBar.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EqStatusInfoBar.vue?vue&type=style&index=0&id=d9d1c9e8&prod&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 \"d9d1c9e8\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoundIconButton.vue?vue&type=style&index=0&id=a7c60cd6&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewDevice.vue?vue&type=style&index=0&id=ac0a538a&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSelectSlot.vue?vue&type=style&index=0&id=2b028ac4&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueHeader.vue?vue&type=style&index=0&id=252d91bc&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tour.vue?vue&type=style&index=0&id=2aac8bbe&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualRaise.vue?vue&type=style&index=1&id=659481a4&prod&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualAction.vue?vue&type=style&index=0&id=63e0ad5a&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityLogPopup.vue?vue&type=style&index=0&id=421cd554&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventOutcomeTask.vue?vue&type=style&index=0&id=01d12a4a&prod&scoped=true&lang=css\"","enum MaskType {\r\n schedule = 0,\r\n duration = 1,\r\n until = 2\r\n}\r\n\r\nexport default MaskType;","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmDecoderEventSetup.vue?vue&type=style&index=0&id=61dcf3ae&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form',[(_vm.isMaskingReasonsFeatureEnabled || this.getAreaMaskingMode)?_c('b-form-group',{staticClass:\"form-group\",attrs:{\"label-for\":\"reason-select\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" Reason: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]},proxy:true}],null,false,3884019485)},[_c('v-select-3',{attrs:{\"id\":\"reason-select\",\"appendToBody\":\"\",\"placeholder\":\"Reasons\",\"label\":\"title\",\"options\":_vm.maskingReasons,\"data-cy\":\"select-masking-reasons\",\"reduce\":function (maskingReason) { return maskingReason.maskingReasonId; }},model:{value:(_vm.$v.selectedMaskingReason.$model),callback:function ($$v) {_vm.$set(_vm.$v.selectedMaskingReason, \"$model\", $$v)},expression:\"$v.selectedMaskingReason.$model\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no masking reasons were found.\")])])],1):_vm._e(),(_vm.isMaskUntilValid)?_c('b-form-group',{staticClass:\"form-group\"},[_c('b-form-radio-group',{attrs:{\"name\":\"radio-inline\"},model:{value:(_vm.maskType),callback:function ($$v) {_vm.maskType=$$v},expression:\"maskType\"}},[_c('b-form-radio',{attrs:{\"value\":1,\"data-cy\":\"radio-fixed-period\"}},[_vm._v(\"Mask for a Fixed Period\")]),_c('b-form-radio',{attrs:{\"value\":2,\"data-cy\":\"radio-until\"}},[_vm._v(\"Mask until Date/Time\")])],1)],1):_vm._e(),(_vm.isHoursMinutesInputValid)?_c('div',{staticClass:\"form-row\"},[_c('b-form-group',{staticClass:\"form-group col-sm-6\",attrs:{\"label-for\":\"hours-input\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" Hours: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]},proxy:true}],null,false,51138666)},[_c('b-form-input',{attrs:{\"id\":\"hours-input\",\"type\":\"number\",\"min\":\"0\",\"placeholder\":\"Hours\",\"data-cy\":\"input-hours\",\"formatter\":_vm.formatterForHoursAndMinutes},on:{\"blur\":_vm.$v.maskHours.$touch},model:{value:(_vm.$v.maskHours.$model),callback:function ($$v) {_vm.$set(_vm.$v.maskHours, \"$model\", $$v)},expression:\"$v.maskHours.$model\"}}),(!_vm.$v.maskHours.validateRange)?_c('div',{staticClass:\"error text-danger m-1\",attrs:{\"data-cy\":\"div-hours-range-warning\"}},[_vm._v(\" \"+_vm._s(this.hoursRangeWarning)+\" \")]):_vm._e()],1),_c('b-form-group',{staticClass:\"col-sm-6\",attrs:{\"label-for\":\"minutes-input\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" Minutes: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]},proxy:true}],null,false,1344904868)},[_c('b-form-input',{attrs:{\"id\":\"minutes-input\",\"type\":\"number\",\"min\":\"0\",\"max\":\"59\",\"placeholder\":\"Minutes\",\"data-cy\":\"input-minutes\",\"formatter\":_vm.formatterForHoursAndMinutes},on:{\"blur\":_vm.$v.maskMinutes.$touch},model:{value:(_vm.$v.maskMinutes.$model),callback:function ($$v) {_vm.$set(_vm.$v.maskMinutes, \"$model\", $$v)},expression:\"$v.maskMinutes.$model\"}}),(!_vm.$v.maskMinutes.validateRange)?_c('div',{staticClass:\"error text-danger m-1\",attrs:{\"data-cy\":\"div-minutes-range-warning\"}},[_vm._v(\" Minutes must be between 0 and 59. \")]):_vm._e()],1),(!_vm.$v.maskMinutes.validateMaxDuration)?_c('div',{staticClass:\"error text-danger m-1\",attrs:{\"data-cy\":\"div-hours-minutes-duration-warning\"}},[_vm._v(\" \"+_vm._s(this.hoursMinutesDurationWarning)+\" \")]):_vm._e()],1):_vm._e(),(_vm.isDateTimeInputEnabled)?_c('b-form-group',{staticClass:\"form-group\",attrs:{\"label-for\":\"date-input\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" Date: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]},proxy:true}],null,false,3949088973)},[_c('date-time',{staticClass:\"p-r-5\",attrs:{\"id\":\"date-input\",\"type\":\"datetime\",\"inputId\":\"EndDate\",\"zone\":_vm.timeZoneIana,\"data-cy\":\"date-time-entry\"},model:{value:(_vm.$v.maskUntilDateTime.$model),callback:function ($$v) {_vm.$set(_vm.$v.maskUntilDateTime, \"$model\", $$v)},expression:\"$v.maskUntilDateTime.$model\"}},[_c('label',{attrs:{\"slot\":\"after\",\"for\":\"EndDate\"},slot:\"after\"},[_c('i',{staticClass:\"far fa-calendar-alt clickable-row medium-icon\"})])]),(_vm.$v.maskUntilDateTime.$error)?_c('div',{staticClass:\"error text-danger pt-1\",attrs:{\"data-cy\":\"div-mask-until-date-time-warning\"}},[_vm._v(\" Masking date must be greater than current date / time and less than: \"+_vm._s(this.maximumMaskUntilDate)+\". \")]):_vm._e()],1):_vm._e(),_c('b-form-group',{staticClass:\"form-group\",attrs:{\"label-for\":\"note-input\"},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_vm._v(\" Note: \"),(_vm.isMaskingReasonNoteFeatureEnabled)?_c('span',{staticClass:\"text-danger\",attrs:{\"data-cy\":\"span-note-asterisk\"}},[_vm._v(\"*\")]):_vm._e()]},proxy:true}])},[_c('b-form-input',{attrs:{\"id\":\"note-input\",\"placeholder\":\"Masking note\",\"required\":_vm.isMaskingReasonNoteFeatureEnabled,\"data-cy\":\"input-note\"},model:{value:(_vm.$v.maskingNote.$model),callback:function ($$v) {_vm.$set(_vm.$v.maskingNote, \"$model\", $$v)},expression:\"$v.maskingNote.$model\"}}),(_vm.$v.maskingNote.$error)?_c('div',{staticClass:\"error text-danger pt-1\"},[_vm._v(\" Masking note is required. \")]):_vm._e()],1),(_vm.showConfirmationButtons)?_c('div',{staticClass:\"pt-4\",staticStyle:{\"text-align\":\"right\"}},[_c('button',{staticClass:\"btn btn-primary mr-3\",class:{ disabled: _vm.formInvalid },attrs:{\"data-cy\":\"btn-mask-alarm\",\"type\":\"button\",\"disabled\":_vm.formInvalid},on:{\"click\":_vm.maskConfirm}},[_vm._v(\" \"+_vm._s(this.getAreaMaskingMode ? \"Mask Area\" : \"Mask Alarm\")+\" \")]),_c('button',{staticClass:\"btn btn-secondary\",on:{\"click\":function($event){$event.stopPropagation();return _vm.close($event)}}},[_vm._v(\"Cancel\")])]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport maskingApi from \"@/services/api.masking.service\";\r\n import { Response } from \"@/store/alarm-masking/types\";\r\n import { TimeZone, UserPermissions } from \"@/store/types\";\r\n import { MaskingReason } from \"@/types/sv-data/masking/MaskingReason\";\r\n import { Component, Vue, Prop, Watch, Emit } from \"vue-property-decorator\";\r\n import { Getter, namespace } from \"vuex-class\";\r\n import vSelect3 from \"vselect3\";\r\n import MaskType from \"@/types/sv-data/enums/MaskType\";\r\n import { Datetime } from \"vue-datetime\";\r\n import { Group } from \"@/store/eventqueue/types\";\r\n import { validationMixin } from \"vuelidate\";\r\n import { requiredIf, minValue, numeric } from \"vuelidate/lib/validators\";\r\n import moment from \"moment\";\r\n\timport { numberFormattingMixins } from '@/mixins';\r\n import { Constants } from \"@/types/Constants\";\r\n\r\n const Eventqueue = namespace(\"eventqueue\");\r\n const AlarmMasking = namespace(\"alarmMasking\");\r\n\r\n\tconst { enforceWholeNumber } = numberFormattingMixins.methods;\r\n\r\n\t@Component({\r\n components: {\r\n \"v-select-3\": vSelect3,\r\n \"date-time\": Datetime\r\n },\r\n mixins: [validationMixin],\r\n validations() {\r\n\t\t return {\r\n selectedMaskingReason: {\r\n required: requiredIf(function() {\r\n return this.isMaskingReasonsFeatureEnabled\r\n }),\r\n validate: function(maskingReasonId: number){\r\n if (!this.isMaskingReasonsFeatureEnabled){\r\n return true;\r\n }\r\n\r\n return maskingReasonId > 0;\r\n }\r\n },\r\n maskHours: {\r\n numeric,\r\n required: requiredIf(function() { return this.isHoursMinutesInputValid}),\r\n minValue: minValue(0),\r\n\t\t\t\t\tvalidateRange: function(newValue: number) {\r\n if (!this.isHoursMinutesInputValid) {\r\n return true;\r\n }\r\n\r\n return newValue >= 0 && newValue <= this.maxMaskHoursDuration;\r\n },\r\n validateMaxDuration: this.validateMaskDuration\r\n },\r\n maskMinutes: {\r\n numeric,\r\n required: requiredIf(function() { return this.isHoursMinutesInputValid}),\r\n validateRange: function(newValue: number) {\r\n if (!this.isHoursMinutesInputValid){\r\n return true;\r\n }\r\n\r\n return newValue >= 0 && newValue < 60;\r\n },\r\n validateMaxDuration: this.validateMaskDuration\r\n },\r\n maskUntilDateTime: {\r\n minTime: function () {\r\n if (!this.isDateTimeInputEnabled || !this.maskUntilDateTime) {\r\n return true;\r\n }\r\n return moment(this.maskUntilDateTime).isAfter();\r\n },\r\n maxTime: function () {\r\n if (!this.isDateTimeInputEnabled || !this.maskUntilDateTime) {\r\n return true;\r\n }\r\n\r\n\t\t\t\t\t\tconst duration = moment.duration(moment(this.maskUntilDateTime).diff(moment())).asMinutes();\r\n\t\t\t\t\t\treturn !duration || duration < this.maxMaskDuration;\r\n },\r\n required: requiredIf(function() { return this.isDateTimeInputEnabled && !!this.maskUntilDateTime })\r\n },\r\n maskingNote: {\r\n required: requiredIf(function() { return this.isMaskingReasonNoteFeatureEnabled})\r\n }\r\n }\r\n }\r\n\t})\r\n\r\n\texport default class MaskingForm extends Vue {\r\n // Props\r\n @Prop({ type: Array, default(){ return [] }})\r\n public selectedResponses: Response[];\r\n\r\n @Prop({default: false, type: Boolean})\r\n public readonly showConfirmationButtons: boolean;\r\n\r\n // Getters\r\n @Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t @Getter(\"getPermissions\") permissions: UserPermissions;\r\n @Getter getTimeZone: (timeZoneId: number) => TimeZone;\r\n @AlarmMasking.Getter getAreaMaskingMode: boolean;\r\n\r\n // Mutations\r\n @AlarmMasking.Mutation setAreaMaskingMode: (areaMaskingMode: boolean) => void;\r\n @AlarmMasking.Mutation setIsUpdatingArea: (isUpdatingArea: boolean) => void;\r\n\r\n // State\r\n @Eventqueue.State(\"selectedGroup\") selectedArea: Group;\r\n\r\n // Private Vars\r\n private maskingReasons: MaskingReason[] = [];\r\n private maskType: MaskType = MaskType.duration;\r\n private selectedMaskingReason: number = null;\r\n private maskHours: number = null;\r\n private maskMinutes: number = null;\r\n private maskUntilDateTime: string = \"\";\r\n private maximumMaskUntilDate: string = \"\";\r\n private maskingNote: string = \"\";\r\n private maxMaskDurationLimit: number = Constants.MAX_MASKING_DURATION;\r\n\r\n\t\tprivate async mounted(): Promise {\r\n if (this.isMaskingReasonsFeatureEnabled || this.getAreaMaskingMode)\r\n {\r\n this.maskingReasons = await maskingApi.getMaskingReasons(this.getAreaMaskingMode ? false : this.hasResponses);\r\n }\r\n\t\t}\r\n\r\n // Getter Methods\r\n private get isMaskingReasonsFeatureEnabled(): boolean {\r\n\t\t\treturn this.getFeature([\"Alarms\", \"Masking\", \"Advanced\", \"Reasons\"]);\r\n\t\t}\r\n\r\n private get isMaskingReasonNoteFeatureEnabled(): boolean {\r\n\t\t\treturn this.getFeature([\"Alarms\", \"Masking\", \"Advanced\", \"Reasons\", \"NoteRequired\"]);\r\n\t\t}\r\n\r\n private get isMaskUntilFeatureEnabled(): boolean {\r\n\t\t\treturn this.getFeature([\"Alarms\", \"Masking\", \"Advanced\", \"MaskUntil\"]);\r\n\t\t}\r\n\r\n private get isMaskUntilValid(): boolean {\r\n return this.isMaskUntilFeatureEnabled &&\r\n this.permissions.canMaskUntilDateTime &&\r\n this.hasResponses;\r\n }\r\n\r\n private get isHoursMinutesInputValid(): boolean {\r\n return (this.isMaskUntilValid && this.maskType == MaskType.duration) || !this.isMaskUntilValid;\r\n }\r\n\r\n private get isDateTimeInputEnabled(): boolean {\r\n return this.isMaskUntilValid && this.maskType == MaskType.until;\r\n }\r\n\r\n public get timeZoneIana(): string {\r\n\t\t // Get timezone based on selected area or browser if area not set\r\n\t\t return this.getTimeZone(this.selectedArea.timeZoneID)?.iana ?? Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\t }\r\n\r\n private get hasResponses(): boolean {\r\n return this.selectedResponses != null && this.selectedResponses.length != 0;\r\n }\r\n\r\n public get formInvalid(): boolean {\r\n return this.$v.$invalid;\r\n }\r\n\r\n private get maxMaskDuration(): number {\r\n if (this.permissions.canDisarmSitesExtended) {\r\n return this.maxMaskDurationLimit;\r\n }\r\n\r\n var responsesMin = Math.min(...this.selectedResponses.map(response => response.maskDurationLimit));\r\n return this.hasResponses ? responsesMin : this.selectedArea.maskDurationLimit;\r\n }\r\n\r\n private get getMaskDuration(): number {\r\n if(!this.maskHours){\r\n return this.maskMinutes;\r\n }\r\n\r\n return +(this.maskHours * 60) + +this.maskMinutes;\r\n }\r\n\r\n\t\tprivate get maxMaskHoursDuration(): number {\r\n\t\t\tvar maxHours = Math.floor(this.maxMaskDuration / 60);\r\n\t\t\tif((this.maxMaskDuration % 60) ==0){\r\n\t\t\t\tmaxHours--;\r\n\t\t\t}\r\n return maxHours;\r\n }\r\n\r\n\t\tprivate get hoursMinutesDurationWarning(): string {\r\n\t\t\tif(this.maxMaskDuration <= 60) {\r\n\t\t\t\treturn (`Masking duration must be more than 0 and less than max mask duration: ${this.maxMaskDuration} minutes.`);\r\n\t\t\t}\r\n\t\t\tvar hours = Math.floor(this.maxMaskDuration / 60);\r\n\t\t\treturn (`Masking duration must be more than 0 minutes and less than max mask duration: ${hours} hours and ${(this.maxMaskDuration % 60)} minutes.`);\r\n\t\t}\r\n\r\n\t\tprivate get hoursRangeWarning(): string {\r\n\t\t\tif(this.maxMaskDuration <= 60) {\r\n\t\t\t\treturn (\"Hours must be 0.\");\r\n\t\t\t}\r\n\t\t\treturn (`Hours must be between 0 and ${this.maxMaskHoursDuration}.`);\r\n\t\t}\r\n\r\n // Watchers\r\n @Watch(\"maskType\")\r\n private onMaskTypeChange(): void {\r\n this.maskHours = null;\r\n this.maskMinutes = null;\r\n this.maskUntilDateTime = \"\";\r\n }\r\n\r\n @Watch(\"maskUntilDateTime\")\r\n private onMaskDateTimeChanged(): void {\r\n this.$v.maskUntilDateTime.$touch();\r\n var futureDate = new Date(new Date().getTime() + this.maxMaskDuration * 60000);\r\n this.maximumMaskUntilDate = futureDate.toLocaleString()\r\n }\r\n\r\n @Watch(\"$v.$invalid\")\r\n private evaluateMaskingFormValid(){\r\n this.$emit('masking-form-valid', this.$v.$invalid);\r\n\t }\r\n\r\n // Public Methods\r\n public async maskAlarms(): Promise {\r\n if (this.hasResponses) {\r\n this.selectedResponses.forEach(response => {\r\n maskingApi.maskAlarm(\r\n {\r\n responseID: response.responseID,\r\n groupID: response.groupID,\r\n eventID: response.eventID,\r\n disarmReasonID: this.selectedMaskingReason,\r\n disarmNote: this.maskingNote,\r\n maskType: this.maskType,\r\n hours: this.maskHours,\r\n minutes: this.maskMinutes,\r\n date: this.maskUntilDateTime\r\n }\r\n );\r\n });\r\n }\r\n else\r\n {\r\n await maskingApi.maskAllAlarmsInArea(\r\n this.selectedArea.groupID,\r\n this.getMaskDuration,\r\n this.selectedMaskingReason,\r\n this.maskingNote,\r\n );\r\n }\r\n\r\n if (this.showConfirmationButtons) {\r\n this.$emit('masked-alarm');\r\n }\r\n }\r\n\r\n public async maskAlarm(): Promise {\r\n var response = this.selectedResponses.find(r => r !== undefined);\r\n await maskingApi.maskAlarm({\r\n responseID: response.responseID,\r\n groupID: response.groupID,\r\n eventID: response.eventID,\r\n disarmReasonID: this.selectedMaskingReason,\r\n disarmNote: this.maskingNote,\r\n maskType: this.maskType,\r\n hours: this.maskHours,\r\n minutes: this.maskMinutes,\r\n date: this.maskUntilDateTime\r\n }\r\n );\r\n\r\n this.$emit('masked-alarm');\r\n }\r\n\r\n public async maskArea(): Promise {\r\n this.setIsUpdatingArea(true);\r\n\r\n try {\r\n if (this.selectedArea.armed) {\r\n await maskingApi.maskArea(this.selectedArea.groupID, this.getMaskDuration, this.selectedMaskingReason, this.maskingNote);\r\n }\r\n } catch {\r\n this.setIsUpdatingArea(false);\r\n return;\r\n }\r\n\r\n this.setIsUpdatingArea(false);\r\n }\r\n\r\n // Private Methods\r\n private validateMaskDuration(): boolean {\r\n if (!this.isHoursMinutesInputValid){\r\n return true;\r\n }\r\n\r\n var maskDuration = this.getMaskDuration;\r\n\t\t\tif(maskDuration == null) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n return maskDuration > 0 && maskDuration < this.maxMaskDuration;\r\n }\r\n\r\n\t\tprivate formatterForHoursAndMinutes(value:number): number {\r\n\t\t\treturn enforceWholeNumber(value);\r\n\t\t}\r\n\r\n private destroyed(): void {\r\n this.clearState();\r\n\t }\r\n\r\n private clearState(): void {\r\n // Clear State\r\n\t\t this.selectedResponses = null;\r\n this.maskingReasons = [];\r\n this.maskType = MaskType.duration;\r\n this.selectedMaskingReason = null;\r\n this.maskHours = null;\r\n this.maskMinutes = null;\r\n this.maskUntilDateTime = \"\";\r\n this.maskingNote = \"\";\r\n this.$v.$reset();\r\n }\r\n\r\n private async maskConfirm(): Promise {\r\n return this.getAreaMaskingMode ? await this.maskArea() : await this.maskAlarms();\r\n }\r\n\r\n // Emitters\r\n @Emit(\"close\")\r\n private close(): void {\r\n this.clearState();\r\n\t }\r\n }\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MaskingForm.vue?vue&type=template&id=5648bddc&scoped=true\"\nimport script from \"./MaskingForm.vue?vue&type=script&lang=ts\"\nexport * from \"./MaskingForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MaskingForm.vue?vue&type=style&index=0&id=5648bddc&prod&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 \"5648bddc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.editing)?_c('div',{staticClass:\"flex-grow-1\",attrs:{\"data-cy\":\"basic-edit\"}}):_c('div',{attrs:{\"data-cy\":\"non-edit\"}},[(!_vm.task.completed)?_c('div',{staticClass:\"container\",attrs:{\"data-cy\":\"raise-to-cm-task-not-completed\"}},[_c('div',{staticClass:\"row mb-2\"},[_c('label',{attrs:{\"for\":\"caseType\"}},[_vm._v(\"Case Type\")]),_c('vue-select',{staticClass:\"dark flex-search w-100\",attrs:{\"id\":\"caseType\",\"options\":_vm.caseTypes,\"placeholder\":\"Select Template\",\"label\":\"title\",\"data-cy\":\"case-type-select-input\"},on:{\"input\":function($event){{}}},model:{value:(_vm.selectedCaseType),callback:function ($$v) {_vm.selectedCaseType=$$v},expression:\"selectedCaseType\"}})],1),_c('div',{staticClass:\"row mb-2\"},[_c('b-form-group',{staticClass:\"mb-0 w-100\",attrs:{\"label\":\"Summary\",\"label-for\":\"summary\"}},[_c('b-form-textarea',{staticStyle:{\"height\":\"auto\"},attrs:{\"id\":\"summary\",\"data-cy\":\"summary-field\",\"placeholder\":\"Summary\",\"size\":\"sm\",\"rows\":\"4\"},model:{value:(_vm.caseData.Summary),callback:function ($$v) {_vm.$set(_vm.caseData, \"Summary\", $$v)},expression:\"caseData.Summary\"}})],1)],1),_c('div',{staticClass:\"row\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"disabled\":this.selectedCaseType == null || this.caseData.Summary == null || this.caseData.Summary.length === 0,\"data-cy\":\"raise-to-case-management-btn\"},on:{\"click\":function($event){return _vm.raiseToCaseManagement()}}},[_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.raisingToCases),expression:\"raisingToCases\"}],staticClass:\"fas fa-circle-notch fa-spin mr-2\"}),_vm._v(\" Raise \")])])]):_c('div',{staticClass:\"text-break\",attrs:{\"data-cy\":\"raise-to-cm-task-complete\"}},[_c('p',[_vm._v(\"Task completed: Raise to Case Management\")]),_c('p',[_vm._v(\"Case Type: \"+_vm._s(_vm.task.taskData.Template))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue, Emit } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { ActionPlanTask } from \"@/store/tasks/types\";\r\n\r\nimport api from \"@/services/api.service\";\r\nimport vSelect from \"vue-select\";\r\nimport { CaseData, CaseType } from \"@/store/case-management/types\";\r\nimport { stringMixin } from \"@/mixins\";\r\n\r\nconst { isNullOrWhitespace } = stringMixin.methods;\r\n\r\nconst CaseManagement = namespace(\"caseManagement\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t},\r\n})\r\nexport default class RaiseToCasesTask extends Vue {\r\n\t@CaseManagement.State((state) => state.caseTypes) caseTypes: CaseType[];\r\n\r\n\t@Prop(Boolean) public editing: Boolean;\r\n\r\n\t@Prop()\r\n\tpublic task!: ActionPlanTask;\r\n\r\n\tpublic raisingToCases: boolean = false;\r\n\tpublic selectedCaseType: any = null;\r\n\tpublic caseData: CaseData = {\r\n\t\tEventId: null,\r\n\t\tTemplateId: null,\r\n\t\tSummary: null,\r\n\t};\r\n\r\n\tpublic mounted() {\r\n\t\tthis.$nextTick(() => {\r\n\t\t\tif (this.editing) {\r\n\t\t\t\tthis.onValidateTask();\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.task.taskText = \"Raise to case management\";\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the event ID for the current event, based on our route.\r\n\t */\r\n\tpublic get eventId() {\r\n\t\treturn parseInt(this.$route.params.eventId);\r\n\t}\r\n\r\n\t/**\r\n\t * Task by default is always validated as it requires no initial editing.\r\n\t */\r\n\t@Emit(\"validate-task\")\r\n\tpublic onValidateTask() {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Method to raise event to case management system.\r\n\t */\r\n\tprivate async raiseToCaseManagement() {\r\n\t\t// When case type is not selected and summary is not entered, dont run method.\r\n\t\tif (this.selectedCaseType == null || isNullOrWhitespace(this.caseData.Summary)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Set loading icon to show.\r\n\t\tthis.raisingToCases = true;\r\n\t\t// Update data.\r\n\t\tthis.caseData.EventId = this.eventId;\r\n\t\tthis.caseData.TemplateId = this.selectedCaseType.id;\r\n\r\n\t\tthis.task.taskData = {\r\n\t\t\tTemplate: this.selectedCaseType.title,\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\t// Raise the event to case management.\r\n\t\t\tawait api.raiseToCases(this.caseData);\r\n\t\t\t// No exception thrown, emit that the task is completed.\r\n\t\t\tthis.$emit(\"complete-task\", {\r\n\t\t\t\t...this.task,\r\n\t\t\t\tresult: this.selectedCaseType.title,\r\n\t\t\t\tcompleted: true,\r\n\t\t\t});\r\n\t\t} catch (ex) {\r\n\t\t\t// Notify user with response exception msg in data property.\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Error\",\r\n\t\t\t\ttext: ex.response.data,\r\n\t\t\t});\r\n\t\t} finally {\r\n\t\t\t// In all cases, hide loading icon.\r\n\t\t\tthis.raisingToCases = false;\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseToCasesTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseToCasesTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RaiseToCasesTask.vue?vue&type=template&id=4e413b0c&scoped=true\"\nimport script from \"./RaiseToCasesTask.vue?vue&type=script&lang=ts\"\nexport * from \"./RaiseToCasesTask.vue?vue&type=script&lang=ts\"\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 \"4e413b0c\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventDetails.vue?vue&type=style&index=0&id=39d3d30e&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionLibrarySimpleList.vue?vue&type=style&index=1&id=77c293af&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualOperatorsPopup.vue?vue&type=style&index=0&id=46ff93a5&prod&lang=css\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublicHolidaySetup.vue?vue&type=style&index=1&id=46268c73&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValidatePinCodeModal.vue?vue&type=style&index=0&id=178de80c&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmQueueFilterEdit.vue?vue&type=style&index=0&id=367688bc&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinksSelector.vue?vue&type=style&index=0&id=33cc9fce&prod&lang=scss&scoped=true\"","import { PaginatedSearchQueryParams, PaginatedSearchQueryParamsCustomField } from \"@/store/types\";\r\nimport axios, { CancelToken, CancelTokenSource } from \"axios\";\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\n\r\nexport interface PaginatedSearchRequest {\r\n\tparams: PaginatedSearchQueryParams;\r\n\tcancelToken: CancelToken;\r\n}\r\n\r\nexport interface PaginatedSearchRequestCustomField {\r\n\tparams: PaginatedSearchQueryParamsCustomField;\r\n\tcancelToken: CancelToken;\r\n}\r\n\r\n@Component({})\r\nexport default class PaginatedSearch extends Vue {\r\n\tprivate activePaginatedSearchCancelTokenSource: CancelTokenSource = null;\r\n\r\n\tprivate defaultPaginatedSearchParams: PaginatedSearchQueryParams = {\r\n\t\tpage: 1,\r\n\t\tpageSize: 25\r\n\t};\r\n\r\n\tpublic mostRecentSearchParams: PaginatedSearchQueryParams;\r\n\r\n\tpublic generateNewPaginatedSearchRequest(params?: PaginatedSearchQueryParams): PaginatedSearchRequest {\r\n\t\tif (!params) {\r\n\t\t\tparams = this.defaultPaginatedSearchParams;\r\n\t\t}\r\n\r\n\t\tthis.mostRecentSearchParams = params;\r\n\r\n\t\tif (this.activePaginatedSearchCancelTokenSource) {\r\n\t\t\tthis.activePaginatedSearchCancelTokenSource.cancel();\r\n\t\t}\r\n\t\tthis.activePaginatedSearchCancelTokenSource = axios.CancelToken.source();\r\n\t\treturn {\r\n\t\t\tparams,\r\n\t\t\tcancelToken: this.activePaginatedSearchCancelTokenSource.token\r\n\t\t}\r\n\t}\r\n}\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetTypeSetup.vue?vue&type=style&index=0&id=4ab4724d&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ManualRaiseDetails.vue?vue&type=style&index=0&id=bf733dac&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAdvancedFilterEdit.vue?vue&type=style&index=0&id=22152951&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapSetup.vue?vue&type=style&index=0&id=06902793&prod&lang=scss&scoped=true\"","export * from \"-!../../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MapRadius.vue?vue&type=style&index=0&id=0b7a504a&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesLogicBuilder.vue?vue&type=style&index=0&id=40e58ad1&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Sidebar.vue?vue&type=style&index=0&id=647245e2&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.node.show),expression:\"node.show\"}],attrs:{\"data-cy\":\"site-tree\"}},[(_vm.isFocused)?_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:(['enter']),expression:\"['enter']\"}],staticStyle:{\"display\":\"hidden\"},on:{\"shortkey\":function($event){return _vm.treeShortcut('select')}}}):_vm._e(),(_vm.isFocused)?_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:(['space']),expression:\"['space']\"}],staticStyle:{\"display\":\"hidden\"},on:{\"shortkey\":function($event){return _vm.treeShortcut('toggle')}}}):_vm._e(),_c('a',{staticClass:\"node-title list-group-item-action p-1\",class:[\n\t\t\t\t{'has-children': (_vm.subGroups != null && _vm.subGroups.length > 0) || ((_vm.subGroups == null || _vm.subGroups.length == 0) && _vm.isClickableChildNode)},\n\t\t\t\t{ 'selected': _vm.group.selected || _vm.selectedGroupIDs.indexOf(_vm.group.groupID) > -1 }\n\t\t\t],attrs:{\"tabindex\":\"0\"},on:{\"mousedown\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.mouseDown()},\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.selectNode()},\"focus\":function($event){_vm.isFocused = true},\"blur\":function($event){_vm.isFocused = false}}},[((_vm.subGroups != null && _vm.subGroups.length > 0) || ((_vm.subGroups == null || _vm.subGroups.length == 0) && _vm.isClickableChildNode))?_c('i',{staticClass:\"fas\",class:[{'fa-minus-square': _vm.node.isOpen}, {'fa-plus-square': !_vm.node.isOpen}],on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.openNode($event)}}}):_vm._e(),(_vm.showState && _vm.group.state)?_c('i',{staticClass:\"pl-1 pr-1\",class:[\n\t\t\t\t\t{'fas fa-shield unmasked-color': _vm.group.state === 'Unmasked'},\n\t\t\t\t\t{'fal fa-shield-alt partially-masked-color': _vm.group.state === 'Partially Masked'},\n\t\t\t\t\t{'fal fa-shield masked-color': _vm.group.state === 'Masked'} ],attrs:{\"title\":(\"Area is \" + (_vm.group.state))},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.openNode($event)}}}):_vm._e(),_c('span',{class:!_vm.showState ? 'nodeLabel' : ''},[_vm._v(_vm._s(_vm.title))])]),_c('div',{staticClass:\"tree-menu\"},[(_vm.node.loadingContents && _vm.node.contentsOpen)?_c('div',{staticClass:\"loading\"},[_vm._t(\"loading\",[[_vm._m(0)]],{\"node\":_vm.node})],2):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.node.isOpen),expression:\"node.isOpen\"}]},[(!_vm.node.loadingContents && _vm.node.contentsOpen)?_c('div',{staticClass:\"contents\"},[_vm._t(\"contents\",[[_c('div')]],{\"node\":_vm.node})],2):_vm._e(),_vm._l((_vm.subGroups),function(node){return _c('tree',{key:node.groupID,attrs:{\"id\":'TreeGroup_' + node.group.groupID,\"group\":node.group,\"subGroups\":node.subGroups,\"title\":node.group.title,\"node\":node,\"selectedGroupIDs\":_vm.selectedGroupIDs,\"isClickableChildNode\":_vm.isClickableChildNode,\"showState\":_vm.showState},on:{\"onSelected\":_vm.nodeSelected,\"onDoubleClick\":_vm.nodeDoubleClick,\"onOpenNode\":_vm.nodeOpened},scopedSlots:_vm._u([_vm._l((_vm.$scopedSlots),function(_,slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)})})],2)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('i',{staticClass:\"fas fa-spinner fa-spin\"}),_c('span',{staticStyle:{\"margin-left\":\"10px\"}},[_vm._v(\"Loading ...\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { SiteTreeNode } from \"@/store/eventqueue/types\";\nimport { Component, Vue, Prop, Emit, Watch } from \"vue-property-decorator\";\nimport { namespace } from \"vuex-class\";\n\nconst Eventqueue = namespace(\"eventqueue\");\n\n@Component({\n\tcomponents: {\n\t\ttree: () => import(\"./Tree.vue\")\n\t}\n})\nexport default class tree extends Vue {\n\t@Prop(Object) group: any;\n\t@Prop(String) title: string;\n\t@Prop(Array) subGroups: any[];\n\t@Prop(Boolean) open: boolean;\n\t@Prop(Object) node: any;\n\t@Prop(Boolean) isClickableChildNode: boolean;\n\t@Prop(Boolean) showState: boolean;\n\tprivate isFocused = false;\n\tprivate isOpen: boolean = true;\n\n\t//Trigger is string translating to which method to trigger with the shortcut\n\tprivate treeShortcut(trigger: string): void{\n\t\tif(trigger === \"select\"){\n\t\t\tthis.nodeSelected({\n\t\t\t\tgroup: this.group,\n\t\t\t\ttree: this,\n\t\t\t\tnode: this.node\n\t\t\t});\n\t\t} else if(trigger === \"toggle\"){\n\t\t\tthis.openNode()\n\t\t}\n\t}\n\n\t@Prop({ default: () => { return [] } })\n\tpublic selectedGroupIDs: number[];\n\n\t@Prop({ default: true }) allowDoubleclick: boolean;\n\n\tclicks: number = 0;\n\tclickTimer: any;\n\n\t@Eventqueue.Mutation toggleSiteTreeNodeOpen: any;\n\t@Eventqueue.Mutation collapseSiteTreeNode: (node: SiteTreeNode) => void;\n\n\tpublic openNode() {\n\t\tthis.isOpen = !this.isOpen;\n\t\tthis.toggleSiteTreeNodeOpen(this.node);\n\t\tthis.nodeOpened(this.node);\n\t}\n\n\tpublic selectNode() {\n\t\tif (this.allowDoubleclick) {\n\t\t\tthis.clicks++;\n\n\t\t\tif (this.clicks === 1) {\n\t\t\t\tthis.clickTimer = setTimeout(() => {\n\t\t\t\t\tthis.nodeSelected({\n\t\t\t\t\t\tgroup: this.group,\n\t\t\t\t\t\ttree: this,\n\t\t\t\t\t\tnode: this.node\n\t\t\t\t\t});\n\t\t\t\t\tthis.clicks = 0;\n\t\t\t\t}, 0.5 * this.$config.ANIMATION_DURATION);\n\t\t\t} else {\n\t\t\t\tif (this.clickTimer != null) clearTimeout(this.clickTimer);\n\n\t\t\t\tthis.clicks = 0;\n\t\t\t\tthis.nodeDoubleClick({\n\t\t\t\t\tgroup: this.group,\n\t\t\t\t\ttree: this,\n\t\t\t\t\tnode: this.node\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tthis.nodeSelected({\n\t\t\t\tgroup: this.group,\n\t\t\t\ttree: this,\n\t\t\t\tnode: this.node\n\t\t\t});\n\t\t}\n\t}\n\n\t@Emit(\"onSelected\")\n\tpublic nodeSelected(args: any) {\n\t\treturn args;\n\t}\n\n\t@Emit(\"onDoubleClick\")\n\tpublic nodeDoubleClick(args: any) {\n\t\treturn args;\n\t}\n\n\t@Emit(\"onOpenNode\")\n\tpublic nodeOpened(args: any) {\n\t\treturn args;\n\t}\n\n\tprivate mouseDown() {\n\n\t}\n\n\t@Watch(\"node\")\n\tprivate nodeUpdated() {\n\t\tif (!this.isOpen) {\n\t\t\tthis.collapseSiteTreeNode(this.node);\n\t\t}\n\t}\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tree.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tree.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Tree.vue?vue&type=template&id=661da9c3&scoped=true\"\nimport script from \"./Tree.vue?vue&type=script&lang=ts\"\nexport * from \"./Tree.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Tree.vue?vue&type=style&index=0&id=661da9c3&prod&scoped=true&lang=scss\"\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 \"661da9c3\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileMenu.vue?vue&type=style&index=0&id=5f203246&prod&scoped=true&lang=scss\"","import { ResponseAction } from \"@/store/response-actions/types\";\r\nimport { Vue, Component } from \"vue-property-decorator\";\r\n\r\nexport interface AutomationBadgeInfo\r\n{\r\n objectId: number,\r\n deviceTitle: string,\r\n description: string\r\n}\r\n\r\n@Component({})\r\nexport default class AutomationMixin extends Vue {\r\n public retrieveAutomationBadges(automations: ResponseAction[]): AutomationBadgeInfo[]\r\n {\r\n var badges = [];\r\n if(automations && automations.length > 0)\r\n {\r\n automations.forEach(automation => {\r\n var badgeEntry = badges.find(b => b.objectID == automation.objectID);\r\n if (badgeEntry)\r\n {\r\n badgeEntry.description = badgeEntry.description + \", \" + automation.description\r\n }\r\n else\r\n {\r\n badges.push({ objectID: automation.objectID, deviceTitle: automation.deviceTitle, description: automation.description })\r\n }\r\n })\r\n }\r\n return badges;\r\n }\r\n}\r\n","// Enum for render Types for Tasks\r\n\r\nexport enum renderChoiceEnum {\r\n Listbox = \"Listbox\",\r\n Button = \"Button\"\r\n}\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Tree.vue?vue&type=style&index=0&id=661da9c3&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('Datetime',{attrs:{\"type\":_vm.type,\"inputClass\":_vm.inputStylingClass,\"model\":_vm.model,\"data-cy\":\"date-component\"},on:{\"input\":_vm.onChange},model:{value:(_vm.dateValue),callback:function ($$v) {_vm.dateValue=$$v},expression:\"dateValue\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Prop} from \"vue-property-decorator\";\nimport { Datetime } from \"vue-datetime\";\n\n@Component({\n\tcomponents: {\n\t\tDatetime\n\t}\n})\nexport default class CustomFieldDatePicker extends Vue {\n\t@Prop({ type: String, default: null })\n\tprivate value: string;\n\n\t@Prop({ default: null })\n\tprivate model: any;\n\n\t@Prop({ type: String, default: null })\n\tprivate type: string;\n\n\t@Prop({ type: String, default: null })\n\tprivate inputClass: string;\n\n\t@Prop({ type: Boolean, default: false })\n\tprivate readonly: boolean;\n\n\tprivate dateString: string = \"\";\n\n\tprivate get dateValue(): string {\n\t\tif (!this.dateString) {\n\t\t\tthis.dateString = this.value;\n\t\t}\n\n\t\treturn this.dateString;\n\t}\n\n\tprivate get inputStylingClass(): string {\n\t\tif (this.readonly) {\n\t\t\treturn \"cf-date-input \" + this.inputClass + \" disabled\";\n\t\t}\n\t\treturn \"cf-date-input \" + this.inputClass;\n\t}\n\n\tprivate set dateValue(value) {\n\t\tthis.dateString = value;\n\t}\n\n\tprivate onChange(): void {\n\t\tif (this.dateValue) {\n\t\t\tthis.$emit(\"input\", this.dateValue);\n\t\t}\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomFieldDatePicker.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomFieldDatePicker.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomFieldDatePicker.vue?vue&type=template&id=0508f2e6&scoped=true\"\nimport script from \"./CustomFieldDatePicker.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomFieldDatePicker.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CustomFieldDatePicker.vue?vue&type=style&index=0&id=0508f2e6&prod&scoped=true&lang=scss\"\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 \"0508f2e6\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./account-details.vue?vue&type=style&index=0&id=5d3ba72a&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseManualRaise.vue?vue&type=style&index=0&id=b2088022&prod&lang=scss&scoped=true\"","import { Vue, Component } from \"vue-property-decorator\";\r\nimport { Getter } from \"vuex-class\";\r\n\r\n@Component({})\r\nexport default class HideMapMixin extends Vue {\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\r\n public get isHideMapsEnabled(): boolean {\r\n return this.getFeature([\"HideMaps\"]);\r\n }\r\n}\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaDetails.vue?vue&type=style&index=0&id=0dd6939a&prod&lang=css&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityLogTable.vue?vue&type=style&index=0&id=3259daf6&prod&lang=scss&scoped=true\"","export enum EndTypes {\r\n None = \"None\",\r\n OnDate = \"On date\",\r\n After = \"After\"\r\n}\r\n\r\nexport enum EventColor {\r\n\tBlue = \"#051882\",\r\n\tYellow = \"#FFD700\",\r\n\tOrange = \"#FF8C00\",\r\n\tCyan = \"#008B8B\",\r\n\tGreen = \"#008000\",\r\n\tRed = \"#FF6347\",\r\n\tPurple = \"#800080\",\r\n\tDarkSlateBlue = \"#483D8B\",\r\n\tGrey = \"#808080\",\r\n\tDefaultColour = \"transparent\"\r\n}\r\n\r\nexport enum ScheduleTypes {\r\n ExpectedAlarm = 1,\r\n\tMasking = 2,\r\n\tEventRaise = 3\r\n}\r\n\r\nexport let ScheduleInfo: IScheduleInfo[] = [\r\n\t{ color: EventColor.Cyan, id: ScheduleTypes.ExpectedAlarm, title: ScheduleTypes[ScheduleTypes.ExpectedAlarm] },\r\n\t{ color: EventColor.Orange, id: ScheduleTypes.Masking, title: ScheduleTypes[ScheduleTypes.Masking] },\r\n\t{ color: EventColor.Purple, id: ScheduleTypes.EventRaise, title: ScheduleTypes[ScheduleTypes.EventRaise] },\r\n];\r\n\r\nexport interface IScheduleInfo {\r\n color: EventColor,\r\n id: ScheduleTypes,\r\n title: string\r\n}\r\n\r\nexport enum DeletionType {\r\n Single = 1,\r\n All = 2\r\n}\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorWarning.vue?vue&type=style&index=0&id=5bccbc12&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FieldOps.vue?vue&type=style&index=0&id=084e4ba4&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InvitationCheck.vue?vue&type=style&index=0&id=56b0f4d7&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PatrolQueue.vue?vue&type=style&index=0&id=1c8544e3&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UrlInputLine.vue?vue&type=style&index=0&id=e7f51dee&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileMap.vue?vue&type=style&index=0&id=7457f122&prod&lang=css&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SchedulesCalendar.vue?vue&type=style&index=0&id=9d2476f4&prod&scoped=true&lang=css\"","/**\r\n * @license\r\n *\r\n * Copyright 2011 Google Inc.\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/**\r\n * @fileoverview Map Label.\r\n *\r\n * @author Luke Mahe (lukem@google.com),\r\n * Chris Broadfoot (cbro@google.com)\r\n * https://github.com/googlemaps/js-map-label/\r\n */\r\n\r\nimport {} from \"googlemaps\";\r\n\r\nexport default class MapLabel extends google.maps.OverlayView {\r\n\tpublic canvas: HTMLCanvasElement | null = null;\r\n\r\n\tconstructor(options: any) {\r\n\t\tsuper();\r\n\t\tthis.set(\"fontFamily\", \"sans-serif\");\r\n\t\tthis.set(\"fontSize\", 8);\r\n\t\tthis.set(\"fontColor\", \"#d13935\");\r\n\t\tthis.set(\"strokeWeight\", 4);\r\n\t\tthis.set(\"strokeColor\", \"#ffffff\");\r\n\t\tthis.set(\"align\", \"center\");\r\n\t\tthis.set(\"zIndex\", 1e3);\r\n\t\tthis.setValues(options);\r\n\t}\r\n\r\n\tpublic changed(prop: string) {\r\n\t\tswitch (prop) {\r\n\t\t\tcase \"fontFamily\":\r\n\t\t\tcase \"fontSize\":\r\n\t\t\tcase \"fontColor\":\r\n\t\t\tcase \"strokeWeight\":\r\n\t\t\tcase \"strokeColor\":\r\n\t\t\tcase \"align\":\r\n\t\t\tcase \"text\":\r\n\t\t\t\treturn this.drawCanvas_();\r\n\t\t\tcase \"maxZoom\":\r\n\t\t\tcase \"minZoom\":\r\n\t\t\tcase \"position\":\r\n\t\t\t\treturn this.draw();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic onAdd() {\r\n\t\tconst canvas = (this.canvas = document.createElement(\"canvas\"));\r\n\t\tconst style = canvas.style;\r\n\t\tstyle.position = \"absolute\";\r\n\r\n\t\tconst ctx = canvas.getContext(\"2d\");\r\n\t\tctx!.lineJoin = \"round\";\r\n\t\tctx!.textBaseline = \"top\";\r\n\r\n\t\tthis.drawCanvas_();\r\n\r\n\t\tconst panes = this.getPanes();\r\n\t\tif (panes) {\r\n\t\t\tpanes.mapPane.appendChild(canvas);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic draw() {\r\n\t\tconst projection = this.getProjection();\r\n\r\n\t\tif (!projection) {\r\n\t\t\t// The map projection is not ready yet so do nothing\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this.canvas) {\r\n\t\t\t// onAdd has not been called yet.\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst latLng: google.maps.LatLng = this.get(\"position\");\r\n\t\tif (!latLng) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst pos = projection.fromLatLngToDivPixel(latLng);\r\n\t\tconst style = this.canvas.style;\r\n\r\n\t\tstyle[\"top\"] = pos.y + \"px\";\r\n\t\tstyle[\"left\"] = pos.x + \"px\";\r\n\t\tstyle[\"visibility\"] = this.getVisible_();\r\n\t}\r\n\r\n\tpublic onRemove() {\r\n\t\tconst canvas = this.canvas;\r\n\t\tif (canvas && canvas.parentNode) {\r\n\t\t\tcanvas.parentNode.removeChild(canvas);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate drawCanvas_() {\r\n\t\tconst canvas = this.canvas;\r\n\t\tif (!canvas) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst style = canvas.style;\r\n\t\tstyle.zIndex = this.get(\"zIndex\");\r\n\r\n\t\tconst ctx = canvas.getContext(\"2d\");\r\n\t\tctx!.clearRect(0, 0, canvas.width, canvas.height);\r\n\t\tctx!.strokeStyle = this.get(\"strokeColor\");\r\n\t\tctx!.fillStyle = this.get(\"fontColor\");\r\n\t\tctx!.font = this.get(\"fontSize\") + \"px \" + this.get(\"fontFamily\");\r\n\r\n\t\tconst strokeWeight = Number(this.get(\"strokeWeight\"));\r\n\r\n\t\tconst text = this.get(\"text\");\r\n\t\tif (text) {\r\n\t\t\tif (strokeWeight) {\r\n\t\t\t\tctx!.lineWidth = strokeWeight;\r\n\t\t\t\tctx!.strokeText(text, strokeWeight, strokeWeight);\r\n\t\t\t}\r\n\r\n\t\t\tctx!.fillText(text, strokeWeight, strokeWeight);\r\n\r\n\t\t\tconst textMeasure = ctx!.measureText(text);\r\n\t\t\tconst textWidth = textMeasure.width + strokeWeight;\r\n\t\t\tstyle.marginLeft = this.getMarginLeft_(textWidth) + \"px\";\r\n\t\t\t// Bring actual text top in line with desired latitude.\r\n\t\t\t// Cheaper than calculating height of text.\r\n\t\t\tstyle.marginTop = \"-1.5em\";\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getMarginLeft_(textWidth: number) {\r\n\t\tswitch (this.get(\"align\")) {\r\n\t\t\tcase \"left\":\r\n\t\t\t\treturn 0;\r\n\t\t\tcase \"right\":\r\n\t\t\t\treturn -textWidth;\r\n\t\t}\r\n\t\treturn textWidth / -2;\r\n\t}\r\n\r\n\tprivate getVisible_() {\r\n\t\tconst minZoom: number = this.get(\"minZoom\");\r\n\t\tconst maxZoom: number = this.get(\"maxZoom\");\r\n\r\n\t\tif (minZoom === undefined && maxZoom === undefined) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tconst map = this.getMap();\r\n\t\tif (!map) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tconst mapZoom = map.getZoom();\r\n\t\tif (mapZoom < minZoom || mapZoom > maxZoom) {\r\n\t\t\treturn \"hidden\";\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n}\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChoicesTask.vue?vue&type=style&index=0&id=3f8edbd0&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EnhancedSingleMap.vue?vue&type=style&index=1&id=28331b7e&prod&scoped=true&lang=css\"","import { CachedMarkerIcon } from \"@/scripts/mapping/markerTypes\";\r\n\r\nexport const walkingIcon: string = \"m178.434991,90.102926c10.188692,0 18.45499,-8.266298 18.45499,-18.45499s-8.266298,-18.45499 -18.45499,-18.45499s-18.45499,8.266298 -18.45499,18.45499s8.266298,18.45499 18.45499,18.45499zm36.333261,57.325812l-8.95836,-4.536852l-3.729446,-11.303681c-5.651841,-17.147761 -21.415478,-29.143505 -39.293749,-29.181953c-13.841242,-0.038448 -21.492374,3.883237 -35.871887,9.68887c-8.304745,3.344967 -15.110023,9.68887 -19.108604,17.762928l-2.576009,5.228914c-2.998936,6.074768 -0.576718,13.456763 5.459601,16.494147c5.997872,3.037384 13.302972,0.576718 16.340356,-5.498049l2.576009,-5.228914c1.345676,-2.691353 3.575654,-4.805987 6.343903,-5.920976l10.304036,-4.152373l-5.84408,23.337873c-1.999291,7.997162 0.153792,16.494147 5.728736,22.607363l23.030289,25.144924c2.768248,3.037384 4.729091,6.689934 5.728736,10.650067l7.035965,28.182308c1.65326,6.57459 8.343193,10.611619 14.917784,8.95836c6.57459,-1.65326 10.611619,-8.343193 8.95836,-14.917784l-8.535433,-34.218627c-0.999645,-3.960133 -2.960488,-7.651131 -5.728736,-10.650067l-17.493793,-19.108604l6.613038,-26.413704l2.114634,6.343903c2.037738,6.190111 6.420799,11.303681 12.187983,14.225721l8.95836,4.536852c5.997872,3.037384 13.302972,0.576718 16.340356,-5.498049c2.960488,-6.03632 0.538271,-13.495211 -5.498049,-16.532595zm-88.007233,54.096189c-1.230333,3.11428 -3.075832,5.920976 -5.459601,8.266298l-19.223948,19.262396c-4.805987,4.805987 -4.805987,12.61091 0,17.416897s12.572462,4.805987 17.378449,0l22.83805,-22.83805c2.345322,-2.345322 4.190821,-5.152018 5.459601,-8.266298l5.190466,-12.995389c-21.261686,-23.184081 -14.879336,-16.07122 -18.224303,-20.64652l-7.958714,19.800666z\";\r\nexport const starIcon: string = \"m150.771,68.28346l-24.41129,49.49548l-54.61699,7.96264c-9.79442,1.42057 -13.71967,13.49537 -6.61684,20.41128l39.51414,38.50479l-9.34582,54.39269c-1.68225,9.83181 8.67292,17.19631 17.34585,12.59817l48.85996,-25.68232l48.85996,25.68232c8.67292,4.56076 19.0281,-2.76636 17.34585,-12.59817l-9.34582,-54.39269l39.51414,-38.50479c7.10283,-6.91591 3.17758,-18.99071 -6.61684,-20.41128l-54.61699,-7.96264l-24.41129,-49.49548c-4.37385,-8.82246 -17.04678,-8.93461 -21.45801,0l-0.00001,0z\";\r\nexport const trackedAssetIcon: string = \"M 212.0213 110.99 L 95.0831 164.9619 c -13.4916 6.2972 -8.9944 26.0859 5.3972 26.0859 h 49.4747 v 49.4747 c 0 14.3916 19.7888 18.8916 26.0859 5.3972 l 53.9719 -116.9381 c 4.4972 -10.7972 -7.1972 -22.4916 -17.9916 -17.9916 z\";\r\nexport let cachedTrackedAssetIcon: string = \"\";\r\nexport const iconCache: CachedMarkerIcon[] = [];\r\n\r\nexport const getCachedIconUrl = (isAsset:boolean, selected: boolean, color: string, activeEventShare: boolean) => {\r\n\tvar cachedIcon = iconCache.find(i => i.isAsset === isAsset && i.isSelect === selected && i.iconColor === color && i.hasActiveShare === activeEventShare);\r\n\treturn cachedIcon? cachedIcon.iconUrl : null;\r\n}\r\n\r\nexport const setCachedIconUrl = (isAsset:boolean, selected: boolean, color: string, activeEventShare: boolean, url: string) => {\r\n\tif(!getCachedIconUrl(isAsset, selected, color, activeEventShare)){\r\n\t\ticonCache.push({\r\n\t\t\tisAsset: isAsset,\r\n\t\t\tisSelect: selected,\r\n\t\t\thasActiveShare: activeEventShare,\r\n\t\t\ticonColor: color,\r\n\t\t\ticonUrl: url\r\n\t\t});\r\n\t}\r\n}\r\n\r\nexport const getAssetIcon = (color: string, isAsset: boolean, selected: boolean, activeEventShare: boolean = false) => {\r\n // If we have the icon cached, dont regenerate it\r\n\tconst cachedUrl = getCachedIconUrl(isAsset, selected, color, activeEventShare);\r\n\tif (cachedUrl) {\r\n\t\treturn cachedUrl;\r\n\t}\r\n\r\n\tconst svgString = `\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t${selected ? '' : \"\"}\r\n\t\t\t\r\n\t\t\t${activeEventShare ? '' : \"\"}\r\n\t\t\r\n `;\r\n\tconst blob = new Blob([svgString], { type: \"image/svg+xml\" });\r\n\tconst url = URL.createObjectURL(blob);\r\n\r\n\t// since we generated a new icon - save it in our cache so we dont have to do it again\r\n\tsetCachedIconUrl(isAsset, selected, color, activeEventShare, url);\r\n\treturn url;\r\n};\r\n\r\nexport const getTrackedAssetIcon = () => {\r\n\t// If we have the icon cached, dont regenerate it\r\n\tif (cachedTrackedAssetIcon) {\r\n\t\treturn cachedTrackedAssetIcon;\r\n\t}\r\n\r\n\tconst svgString = `\r\n \r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n \r\n `;\r\n\r\n\tconst blob = new Blob([svgString], { type: \"image/svg+xml\" });\r\n const url = URL.createObjectURL(blob);\r\n\r\n // since we generated a new icon - save it in our cache so we dont have to do it again\r\n cachedTrackedAssetIcon = url;\r\n return url;\r\n};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"size\":\"md\",\"centered\":\"\",\"role\":\"dialog\"},on:{\"hidden\":_vm.closeModal},model:{value:(_vm.isReportModalShown),callback:function ($$v) {_vm.isReportModalShown=$$v},expression:\"isReportModalShown\"}},[_c('template',{slot:\"modal-title\"},[_c('div',[_c('h4',[_vm._v(\"Generate Situation Report\")])])]),_c('h5',[_vm._v(\"Summary\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.eventSummary),expression:\"eventSummary\"}],staticClass:\"custom-textarea\",attrs:{\"placeholder\":\"Summarize event status\",\"maxlength\":\"25000\"},domProps:{\"value\":(_vm.eventSummary)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.eventSummary=$event.target.value}}}),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"ksConfirm\",attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.onGenerateReportClick}},[(_vm.generatingReport)?_c('i',{staticClass:\"fas fa-circle-notch fa-spin\",staticStyle:{\"margin-right\":\"8px\"}}):_vm._e(),_vm._v(\"Generate Report \")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.closeModal}},[_c('span',{staticClass:\"glyphicon glyphicon-remove\"}),_vm._v(\" Close \")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{attrs:{\"data-cy\":\"download-incident-report-link\"},on:{\"click\":_vm.downloadIncidentReport}},[_vm._t(\"default\",[_vm._v(_vm._s(_vm.eventId))])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\nimport { axiosInstance } from \"@/axios.instance\";\n\nclass ReportData {\n\tpublic constructor(eventID: number, summary: string) {\n\t\tthis.EventID = eventID;\n\t\tthis.Summary = summary;\n\t}\n\n\tEventID: number | null = null;\n\tSummary: string = \"\";\n\tIncludeMap: boolean;\n\tIncludeAuditTrail: boolean;\n\tIncludeClips: boolean;\n}\n\ntype IncidentReportSelections = {\n\tIncludeMap: IncidentReportSelection,\n\tIncludeAuditTrail: IncidentReportSelection,\n\tIncludeClips: IncidentReportSelection,\n}\n\ntype IncidentReportSelection = {\n\ttitle: string,\n\tselected: boolean\n};\n\n@Component({})\nexport default class IncidentReportDownload extends Vue {\n\t@Prop({ type: Number, required: true })\n\tprivate eventId: number;\n\n\tprivate selections: IncidentReportSelections = {\n\t\tIncludeMap: {\n\t\t\ttitle: \"Map\",\n\t\t\tselected: false\n\t\t},\n\t\tIncludeAuditTrail: {\n\t\t\ttitle: \"Current Audit Trail\",\n\t\t\tselected: true //Include Audit Trail by Default\n\t\t},\n\t\tIncludeClips: {\n\t\t\ttitle: \"Event Thumbnail\",\n\t\t\tselected: false\n\t\t}\n\t};\n\n\tprivate async downloadIncidentReport(): Promise {\n\t\ttry {\n\t\t\tawait this.generateReport(this.eventId);\n\t\t}\n\t\tcatch (error) {\n\t\t\tthis.$notify({\n\t\t\t\ttype: \"error\",\n\t\t\t\ttitle: \"Situation Report\",\n\t\t\t\ttext: \"Unable to generate the report - please try again later, or contact support if the problem persists\"\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic async generateReport(eventId: number, eventSummary: string = \"\"): Promise {\n\t\tlet reportData = new ReportData(eventId, eventSummary);\n\n\t\treportData.IncludeAuditTrail = this.selections.IncludeAuditTrail.selected;\n\t\treportData.IncludeClips = this.selections.IncludeClips.selected;\n\t\treportData.IncludeMap = this.selections.IncludeMap.selected;\n\n\t\tlet response = await axiosInstance.post(\"Report/Incident\", reportData);\n\n\t\tlet incidentReportID = response.data.reportID;\n\t\tlet downloadUrl = `${axiosInstance.defaults.baseURL}/Report/Incident/${incidentReportID}`;\n\n\t\tlet link = document.createElement(\"a\");\n\t\tlink.href = downloadUrl;\n\t\tlink.download = downloadUrl;\n\n\t\tlink.click();\n\t}\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IncidentReportDownload.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IncidentReportDownload.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./IncidentReportDownload.vue?vue&type=template&id=5c91da54&scoped=true\"\nimport script from \"./IncidentReportDownload.vue?vue&type=script&lang=ts\"\nexport * from \"./IncidentReportDownload.vue?vue&type=script&lang=ts\"\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 \"5c91da54\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport IncidentReportDownload from \"./IncidentReportDownload.vue\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst EventSearch = namespace(\"eventSearch\");\r\n\r\n@Component({})\r\nexport default class IncidentReport extends IncidentReportDownload {\r\n\t@Prop(Number) eventid?: number;\r\n\r\n\t@SiteMonitor.Getter(\"getEventDetails\") EventDetails: EventDetails;\r\n\t@SiteMonitor.Getter(\"getIncidentReportShown\") incidentReportShown: any;\r\n\t@EventSearch.State IncidentReportOpen: boolean;\r\n\t@SiteMonitor.Mutation setIncidentReportShown: any;\r\n\t@EventSearch.Mutation setEventSearchIncidentReportShown: any;\r\n\t@SiteMonitor.Mutation setIncidentReportDownloaded: any;\r\n\t@SiteMonitor.Mutation setActivity;\r\n\t@EventSearch.Mutation setEventSearchIncidentReportDownloaded: any;\r\n\r\n\tprivate get hasLocationDetails(): boolean {\r\n\t\treturn !(this.EventDetails == null || this.EventDetails.latLong == \"\");\r\n\t}\r\n\r\n\tpublic eventSummary: string = \"\";\r\n\tpublic generatingReport = false;\r\n\tprivate isReportModalShown = false;\r\n\r\n\tprivate async onGenerateReportClick(): Promise {\r\n\t\tif (this.eventid == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.setActivity();\r\n\r\n\t\ttry {\r\n\t\t\tthis.generatingReport = true;\r\n\r\n\t\t\tawait this.generateReport(this.eventid, this.eventSummary);\r\n\r\n\t\t\tthis.generatingReport = false;\r\n\t\t\tthis.closeModal();\r\n\t\t\tthis.setIncidentReportDownloaded(true);\r\n\t\t\tthis.setEventSearchIncidentReportDownloaded(true);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Situation Report\",\r\n\t\t\t\ttext: \"Unable to generate the report - please try again later, or contact support if the problem persists\"\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate created() {\r\n\t\tthis.setIncidentReportShown(false);\r\n\t\tthis.setEventSearchIncidentReportShown(false);\r\n\t}\r\n\r\n\t@Watch(\"incidentReportShown\")\r\n\tonIncidentReportShownChanged(value: boolean, oldValue: boolean) {\r\n\t\tif (value) {\r\n\t\t\tthis.setIncidentReportDownloaded(false);\r\n\t\t\tthis.isReportModalShown = true;\r\n\t\t} else {\r\n\t\t\tthis.isReportModalShown = false;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"IncidentReportOpen\")\r\n\tonEventSearchIncidentReportShownChanged(value: boolean, oldValue: boolean) {\r\n\t\tif (value) {\r\n\t\t\tthis.setEventSearchIncidentReportDownloaded(false);\r\n\t\t\tthis.isReportModalShown = true;\r\n\t\t} else {\r\n\t\t\tthis.isReportModalShown = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate closeModal() {\r\n\t\tthis.setIncidentReportShown(false);\r\n\t\tthis.setEventSearchIncidentReportShown(false);\r\n\t\t\tthis.setActivity();\r\n\t\t}\r\n\r\n\t@Watch(\"eventSummary\")\r\n\tprivate onEventSummaryChanged() {\r\n\t\tthis.setActivity();\r\n\t}\r\n\r\n\t@Watch(\"selections\", { deep: true })\r\n\tprivate onSelectionChanged() {\r\n\t\tthis.setActivity();\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IncidentReport.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IncidentReport.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./IncidentReport.vue?vue&type=template&id=0adccdc9&scoped=true\"\nimport script from \"./IncidentReport.vue?vue&type=script&lang=ts\"\nexport * from \"./IncidentReport.vue?vue&type=script&lang=ts\"\nimport style0 from \"./IncidentReport.vue?vue&type=style&index=0&id=0adccdc9&prod&scoped=true&lang=scss\"\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 \"0adccdc9\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Schedules.vue?vue&type=style&index=0&id=f7803a26&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"enhanced-map-wrapper\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:((!_vm.isToggleMapEnabled) || (!_vm.hideMapFlag && _vm.isToggleMapEnabled)),expression:\"(!isToggleMapEnabled) || (!hideMapFlag && isToggleMapEnabled)\"}],staticClass:\"controls\"},[_c('div',{staticClass:\"input-group mb-3\"},[(_vm.elevationList.length > 0)?_c('b-dropdown',{staticClass:\"elevation-select\",attrs:{\"text\":_vm.displayElevation}},[_c('b-dropdown-group',{staticStyle:{\"max-height\":\"200px\",\"overflow-y\":\"auto\"}},_vm._l((_vm.elevationList),function(elevationOpt,i){return _c('b-dropdown-item-btn',{key:i,class:{ active: _vm.elevation == elevationOpt },on:{\"click\":function($event){return _vm.gotoElevation(elevationOpt)}}},[_vm._v(\" \"+_vm._s(elevationOpt.name)+\" \")])}),1)],1):_vm._e(),_c('div',{staticClass:\"input-group-append\"},[_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"type\":\"button\",\"data-cy\":\"decrease-elevation\",\"disabled\":!_vm.canGoDown},on:{\"click\":function($event){return _vm.downLevel()}}},[_c('i',{staticClass:\"fas fa-level-down-alt\"})]),_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"data-cy\":\"increase-elevation\",\"disabled\":!_vm.canGoUp,\"type\":\"button\"},on:{\"click\":function($event){return _vm.upLevel()}}},[_c('i',{staticClass:\"fas fa-level-up-alt\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"dropdown dispatch d-inline-block\"},[(!_vm.hideMapFlag && _vm.isToggleMapEnabled)?_c('div',{staticClass:\"toggle-map-btns-container\"},[_c('button',{staticClass:\"btn btn-secondary hide-map-btn\",on:{\"click\":function($event){return _vm.setHideMapFlag(true)}}},[_c('i',{staticClass:\"fas fa-chevron-down\"})])]):_vm._e()])],1)]),_c('div',{ref:\"mappingContainer\",staticClass:\"h-100\",class:_vm.mapType,attrs:{\"id\":\"divMappingContainer\"}}),(_vm.noMapData)?_c('div',{staticClass:\"card d-flex justify-content-center align-items-center no-map-data-message\"},[_c('span',[_vm._v(\"No map data available\")])]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\r\nimport { Component, Vue, Watch, Prop } from \"vue-property-decorator\";\r\nimport { State, Getter, Action, Mutation, namespace } from \"vuex-class\";\r\nimport getScript from \"@/services/insertScript.service\";\r\nimport { axiosInstance } from \"@/axios.instance\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport {\r\n\tgetEnhancedMapping,\r\n\tIEnhancedMapping,\r\n\tIMap,\r\n\tIMarker,\r\n\tILayer,\r\n\tICircle,\r\n\tILatLng,\r\n\tILatLngBounds,\r\n\tconvertStringToLatLng,\r\n\taddMeterToCoord,\r\n\tstringToBounds,\r\n\tunion,\r\n\textend,\r\n\tMarkerIcons\r\n} from \"@sureview/v2-mapping-saas\";\r\nimport { get, keyBy } from \"lodash\";\r\nimport { darkMapStyle, satelliteMapStyle, getMapStyle } from \"@/scripts/mapping/mapStyle\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\n\r\nimport { config } from \"@vue/test-utils\";\r\nimport GPSService from \"@/services/gps.service\";\r\nimport { MapBounds, MapData } from \"@/store/map-layers/types\";\r\n\r\nclass LocationBounds {\r\n\tpublic location: ILatLng;\r\n\tpublic viewport: {\r\n\t\tnortheast: ILatLng;\r\n\t\tsouthwest: ILatLng;\r\n\t};\r\n}\r\n\r\nclass MapLayerData {\r\n\tpublic mapLayerId: number = 0;\r\n\tpublic minElevation: number | null = null;\r\n\tpublic maxElevation: number | null = null;\r\n\r\n\tpublic title: string = \"\";\r\n\tpublic ne: string = \"\";\r\n\tpublic sw: string = \"\";\r\n\r\n\tpublic rotation: number = 0;\r\n}\r\n\r\nclass MapItemData {\r\n\tpublic mapLayerItemId: number = 0;\r\n\tpublic mapLayerItemTypeId: number = 0;\r\n\r\n\tpublic minElevation: number | null = null;\r\n\tpublic maxElevation: number | null = null;\r\n\r\n\tpublic objectId: number | null = null;\r\n\tpublic extraValue: string = \"\";\r\n\r\n\tpublic title: string = \"\";\r\n\tpublic regionPath: string | null = null;\r\n\tpublic latLong: string | null = null;\r\n}\r\n\r\nclass MapItemTypeData {\r\n\tpublic mapLayerItemTypeId: number = 0;\r\n\tpublic title: string = \"\";\r\n\tpublic visible: boolean = true;\r\n\tpublic any: boolean = false;\r\n\tpublic hideByDefault: boolean = false;\r\n}\r\n\r\nclass MapItemIcon {}\r\n\r\nclass LayerMap {\r\n\t[s: number]: ILayer;\r\n}\r\nclass ItemMap {\r\n\t[s: number]: IMarker;\r\n}\r\nclass ItemObjectMap {\r\n\t[s: number]: IMarker[];\r\n}\r\nclass ItemTypeObjectMap {\r\n\t[s: number]: ItemObjectMap;\r\n}\r\n\r\nclass LayerTypeMap {\r\n\t[s: number]: boolean;\r\n}\r\n\r\nconst MapLayers = namespace(\"mapLayers\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst SMCameras = namespace(\"siteMonitorCameras\");\r\nconst Eventqueue = namespace(\"eventqueue\");\r\n\r\n@Component({\r\n\tcomponents: {}\r\n})\r\nexport default class EnhancedMap extends Vue {\r\n\t@Prop({ default: () => 19 })\r\n\tpublic zoomLevel: number;\r\n\r\n\t@Prop({ default: () => true })\r\n\tpublic showCircle: boolean;\r\n\r\n // Flag to specify if toggle map feature flag enabled, is it enabled for this instance of the re-usable component.\r\n\t@Prop({ default: () => false })\r\n\tprivate showMapToggle: boolean;\r\n\r\n\tpublic $refs: any = {\r\n\t\tmappingContainer: HTMLElement\r\n\t};\r\n\r\n\t@Getter(\"getMapKey\") public mapKey: any;\r\n\r\n\tpublic elevation: number = 0;\r\n\tpublic displayElevation: string = \"\";\r\n\r\n\tpublic layersAdded = new LayerMap();\r\n\tpublic itemsAdded = new ItemMap();\r\n\tpublic markersByTypeAndObject = new ItemTypeObjectMap();\r\n\r\n\tpublic alarmsAdded = [];\r\n\tpublic eventIcons = {};\r\n\r\n\tpublic activeItems = new Array();\r\n\tpublic activeAlarmIDs = new Set();\r\n\tpublic activeItemIDs = new Set();\r\n\r\n\tpublic adHocAlarmMarkers = new ItemMap();\r\n\tpublic pendingAdHocMarkers: any[] = [];\r\n\tpublic mapCenter: ILatLng | null = null;\r\n\r\n\tpublic enhancedMapping: IEnhancedMapping | null = null;\r\n\tpublic map: IMap | null = null;\r\n\r\n\tpublic clickCircleEventID: number = 0;\r\n\tpublic clickCircle: ICircle | null = null;\r\n\r\n\tpublic layersVisible = false;\r\n\r\n\tpublic elevationList: any[] = [];\r\n\r\n\tpublic noMapData: boolean = true;\r\n\tpublic mapType: string = \"\";\r\n\tpublic marker: any = null\r\n\r\n // Getter and setter for toggling the map.\r\n\t@SiteMonitor.Action setHideMapFlag: any;\r\n\t@SiteMonitor.Getter('getHideMapFlag') hideMapFlag: boolean;\r\n\r\n\t@MapLayers.Action public loadMapDataByBounds: (bounds: MapBounds) => Promise;\r\n\t@MapLayers.Action public loadMapLayersItemTypes: () => Promise;\r\n\t@MapLayers.Getter(\"getMapLayerItemTypes\") public mapItemTypes;\r\n\t@MapLayers.State(\"mapItemIcons\") private mapIcons!: MarkerIcons;\r\n\t@MapLayers.State private mapData: MapData;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@SiteMonitor.Getter(\"getEventDetails\") public EventDetails: EventDetails;\r\n\t@SiteMonitor.Getter(\"getActiveMapItemsRequired\")\r\n\tpublic activeMapItemsRequired: any;\r\n\t@SiteMonitor.Getter(\"getActiveMapItems\") public activeMapItems: any;\r\n\t@SiteMonitor.State public AdhocLocationEventRecords!: any[];\r\n\t@SiteMonitor.Getter(\"getEventLocationLastSet\")\r\n\tpublic eventLocationLastSet: number;\r\n\t@SiteMonitor.Getter(\"getActiveResponseIDs\") public activeResponseIDs: any;\r\n\t@SiteMonitor.Mutation public setActiveMapItems: any;\r\n\t@SiteMonitor.Mutation public setActiveMapItemsRequired: any;\r\n\t@SiteMonitor.Mutation public setMapCircleCenter: any;\r\n\t@SiteMonitor.Mutation setActivity;\r\n\r\n\t@Eventqueue.Getter(\"getActiveEvents\") events!: any[];\r\n\t@Eventqueue.Action(\"fetchEventQueue\") fetchEventQueue: any;\r\n\r\n\t@SMCameras.Mutation public setAwaitingCamera: any;\r\n\t@SMCameras.Mutation clearDeviceControllerCameras: any;\r\n\r\n\t@Getter public getUseImperialMeasurements: any;\r\n\t@Getter public getMapType: any;\r\n\t@Getter public getHideLabels: any;\r\n\t@Mutation public setMapType: any;\r\n\t@MapLayers.Mutation public setMapLayersItemType: any;\r\n\r\n\tpublic get formattedEventsByEventId() {\r\n\t\treturn this.events && keyBy(this.events, 'eventID')\r\n\t}\r\n\r\n\tpublic get eventLocation() {\r\n\t\tif (this.EventDetails == null) return \"\";\r\n\r\n\t\treturn this.EventDetails.latLong;\r\n\t}\r\n\r\n\tpublic get allowSpotlightScaling() {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"Map\", \"SpotlightScaling\"]);\r\n\t}\r\n\r\n\tpublic get canGoUp() {\r\n\t\treturn this.elevationList.some(elevation => elevation.elevationValue > this.elevation);\r\n\t}\r\n\tpublic get canGoDown() {\r\n\t\tconst index = this.elevationList.findIndex(x => x.elevationValue == this.elevation);\r\n\t\tif(index == 0 || index == -1) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.elevationList.some(elevation => elevation.elevationValue < this.elevation);\r\n\t}\r\n\r\n\tpublic get nearbyCameraRadius() {\r\n\t\tif (this.EventDetails == null ||\r\n\t\t\tthis.EventDetails.cameraNearbyRadius == null ||\r\n\t\t\tthis.EventDetails.cameraNearbyRadius == undefined ||\r\n\t\t\tthis.EventDetails.cameraNearbyRadius < 1) {\r\n\t\t\treturn 30;\r\n\t\t}\r\n\t\treturn this.EventDetails.cameraNearbyRadius;\r\n\t}\r\n\r\n\tpublic get staticMapIcon(): boolean {\r\n\t\tif (this.EventDetails == null ||\r\n\t\t\tthis.EventDetails.staticMapIcon == null ||\r\n\t\t\tthis.EventDetails.staticMapIcon == undefined) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn this.EventDetails.staticMapIcon;\r\n\t}\r\n\r\n\tpublic get eventElevations() {\r\n\t\tvar details = this.EventDetails;\r\n\r\n\t\tif (details == null) {\r\n\t\t\treturn {\r\n\t\t\t\tminElevation: null,\r\n\t\t\t\tmaxElevation: null\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tminElevation: details.minElevation,\r\n\t\t\tmaxElevation: details.maxElevation\r\n\t\t};\r\n\t}\r\n\r\n\t// Feature flag checker for toggle maps feature.\r\n\tprivate get isToggleMapEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"Maps\", \"ToggleSiteMonitor\"]) && this.showMapToggle;\r\n\t}\r\n\r\n\tprivate async decodeLocation(location: string): Promise {\r\n\t\tif (/^-?[\\d.]+[NS]? -?[\\d.]+[WE]?($|,)/.test(location)) {\r\n\t\t\treturn {\r\n\t\t\t\tlocation: convertStringToLatLng(location),\r\n\t\t\t\tviewport: null\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tlet geoCoder = new GPSService();\r\n\t\t\tlet response = await geoCoder.GeoCodeLookup(location, this.mapKey);\r\n\r\n\t\t\tif (response.results.length == 0)\r\n\t\t\t\treturn null;\r\n\r\n\t\t\tlet addressGeometry = response.results[0].geometry;\r\n\r\n\t\t\tif (addressGeometry.viewport) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tlocation: {\r\n\t\t\t\t\t\tlat: addressGeometry.location.lat,\r\n\t\t\t\t\t\tlng: addressGeometry.location.lng\r\n\t\t\t\t\t},\r\n\t\t\t\t\tviewport: {\r\n\t\t\t\t\t\tnortheast: addressGeometry.viewport.northeast,\r\n\t\t\t\t\t\tsouthwest: addressGeometry.viewport.southwest\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t} else {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tlocation: {\r\n\t\t\t\t\t\tlat: addressGeometry.location.lat,\r\n\t\t\t\t\t\tlng: addressGeometry.location.lng\r\n\t\t\t\t\t},\r\n\t\t\t\t\tviewport: null\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"eventLocationLastSet\")\r\n\tpublic async onEventLocationChanged(value: string, oldValue: string) {\r\n\t\tif (this.map != null && this.EventDetails != null) {\r\n\t\t\tlet elevationBounds = this.eventElevations;\r\n\r\n\t\t\tif (this.EventDetails.alarmElevation) {\r\n\t\t\t\tthis.elevation = this.EventDetails.alarmElevation;\r\n\t\t\t} else if (elevationBounds.minElevation != null && this.elevation <= elevationBounds.minElevation) {\r\n\t\t\t\tthis.elevation = elevationBounds.minElevation;\r\n\t\t\t} else if (elevationBounds.maxElevation != null && this.elevation <= elevationBounds.maxElevation) {\r\n\t\t\t\tthis.elevation = elevationBounds.maxElevation;\r\n\t\t\t} else {\r\n\t\t\t\tthis.elevation = elevationBounds.minElevation;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.eventLocation == \"\") {\r\n\t\t\t\tthis.noMapData = true;\r\n\t\t\t} else {\r\n\t\t\t\tlet gpsLocation = await this.decodeLocation(this.eventLocation);\r\n\r\n\t\t\t\tif (gpsLocation) {\r\n\t\t\t\t\tthis.mapCenter = gpsLocation.location;\r\n\r\n\t\t\t\t\tif (this.showCircle)\r\n\t\t\t\t\t\tthis.loadRadius(this.mapCenter);\r\n\r\n\t\t\t\t\tif (gpsLocation.viewport) {\r\n\t\t\t\t\t\tgpsLocation;\r\n\t\t\t\t\t\tthis.map.mapBounds = {\r\n\t\t\t\t\t\t\tnorth: gpsLocation.viewport.northeast.lat,\r\n\t\t\t\t\t\t\teast: gpsLocation.viewport.northeast.lng,\r\n\t\t\t\t\t\t\tsouth: gpsLocation.viewport.southwest.lat,\r\n\t\t\t\t\t\t\twest: gpsLocation.viewport.southwest.lng\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.map.center = this.mapCenter;\r\n\t\t\t\t\t\tthis.map.zoom = this.zoomLevel;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.noMapData = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.noMapData = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get adhocLocationEventRecords() {\r\n\t\treturn this.AdhocLocationEventRecords;\r\n\t}\r\n\r\n\t@Watch(\"adhocLocationEventRecords\")\r\n\tpublic onAdhocLocationEventRecordsChange(records: any[], oldRecords: any[]) {\r\n\t\tthis.removeAdhocAlarmMarkers();\r\n\r\n\t\tif (this.map != null) {\r\n\t\t\trecords.forEach(record => {\r\n\t\t\t\tif (this.adHocAlarmMarkers[record.eventRecordID] == null) {\r\n\t\t\t\t\tthis.createAdHocMarker(record);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"activeMapItemsRequired\")\r\n\tpublic onActiveMapItemsRequiredChange(required: boolean, oldRequired: boolean) {\r\n\t\tif (required) {\r\n\t\t\tthis.setActiveMapItems(this.activeMapItems);\r\n\t\t\tthis.setActiveMapItemsRequired(false);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async mounted() {\r\n\t\tawait this.loadMapLayersItemTypes();\r\n\t\tawait this.init();\r\n\r\n\t\tif (this.EventDetails) {\r\n\t\t\tthis.onEventLocationChanged(null, null);\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"elevationList\", { deep: true })\r\n\tprivate updateDisplayElevation() {\r\n\t\tif(this.displayElevation == \"\" && this.elevationList.length > 0) {\r\n\t\t\tthis.displayElevation = this.elevationList[0].name;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic beforeDestroy() {\r\n\t\tthis.map.reset();\r\n\t\tthis.clearMap();\r\n\t\tif(this.marker) this.marker.remove()\r\n\r\n\t\tthis.removeAdhocAlarmMarkers();\r\n\r\n\t\tif (this.clickCircle != null) {\r\n\t\t\tthis.clickCircle.remove();\r\n\t\t\tthis.clickCircle = null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async init() {\r\n\t\tthis.enhancedMapping = await getEnhancedMapping(\"google\", this.mapKey);\r\n\r\n\t\tlet pos: LocationBounds = {\r\n\t\t\tlocation: { lat: 0, lng: 0 },\r\n\t\t\tviewport: null\r\n\t\t};\r\n\r\n\t\tif (this.eventLocation != null && this.eventLocation != \"\") {\r\n\t\t\tpos = await this.decodeLocation(this.eventLocation);\r\n\r\n\t\t\tlet elevationBounds = this.eventElevations;\r\n\r\n\t\t\tif (this.EventDetails.alarmElevation) {\r\n\t\t\t\tthis.elevation = this.EventDetails.alarmElevation;\r\n\t\t\t} else if (elevationBounds.minElevation != null && this.elevation <= elevationBounds.minElevation) {\r\n\t\t\t\tthis.elevation = elevationBounds.minElevation;\r\n\t\t\t} else if (elevationBounds.maxElevation != null && this.elevation <= elevationBounds.maxElevation) {\r\n\t\t\t\tthis.elevation = elevationBounds.maxElevation;\r\n\t\t\t} else {\r\n\t\t\t\tthis.elevation = elevationBounds.minElevation;\r\n\t\t\t}\r\n\r\n\t\t\tif (pos) {\r\n\t\t\t\tthis.noMapData = false;\r\n\t\t\t} else {\r\n\t\t\t\tthis.noMapData = true;\r\n\t\t\t\tpos = {\r\n\t\t\t\t\tlocation: { lat: 0, lng: 0 },\r\n\t\t\t\t\tviewport: null\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.noMapData = true;\r\n\t\t}\r\n\r\n\t\tthis.mapCenter = pos.location;\r\n\t\tthis.map = this.enhancedMapping.createMap(\r\n\t\t\tthis.$refs.mappingContainer,\r\n\t\t\tpos.location,\r\n\t\t\t0,\r\n\t\t\tfalse,\r\n\t\t\tthis.getMapType,\r\n\t\t\tgetMapStyle(this.getMapType, this.getHideLabels)\r\n\t\t);\r\n\r\n\t\tif (pos.viewport) {\r\n\t\t\tconst sw = pos.viewport.southwest;\r\n\t\t\tconst ne = pos.viewport.northeast;\r\n\r\n\t\t\tthis.map.mapBounds = {\r\n\t\t\t\tnorth: ne.lat,\r\n\t\t\t\teast: ne.lng,\r\n\t\t\t\tsouth: sw.lat,\r\n\t\t\t\twest: sw.lng\r\n\t\t\t};\r\n\t\t}\r\n\r\n\r\n\t\tthis.map!.staticMapIcon = this.staticMapIcon;\r\n\t\tthis.mapType = this.getMapType;\r\n\r\n\t\tthis.map!.registerEvent(\"onMapTypeChanged\", (mapType: string) => {\r\n\t\t\tthis.setActivity();\r\n\t\t\tthis.mapType = mapType;\r\n\t\t\tthis.setMapType(mapType);\r\n\r\n\t\t\tthis.map!.map.setOptions({\r\n\t\t\t\tstyles: getMapStyle(this.getMapType, this.getHideLabels)\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.map!.registerEvent(\"onViewportChangedDelayed\", () => {\r\n\t\t\tthis.setActivity();\r\n\t\t\tif (this.map!.currentViewState == \"narrow\") {\r\n\t\t\t\tthis.loadInBounds(this.map!.mapBounds, true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.clearMap();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.map!.registerEvent(\"onDisplayTypeChanged\", (data: any) => {\r\n\t\t\tthis.setActivity();\r\n\t\t\tvar layersVisible = data.viewState === \"narrow\";\r\n\r\n\t\t\tfor (var layerId in this.layersAdded) {\r\n\t\t\t\tthis.layersAdded[layerId].visible = layersVisible;\r\n\t\t\t}\r\n\r\n\t\t\tfor (var layerItemId in this.itemsAdded) {\r\n\t\t\t\tthis.itemsAdded[layerItemId].visible = layersVisible;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.AdhocLocationEventRecords.forEach((record: any) => {\r\n\t\t\tthis.createAdHocMarker(record);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getLatLngPolarity(latLng: string) {\r\n\t\tvar regex = /([1-8]?[1-9]|[1-9])\\.{1}\\d{1,16}([A-Z])/g;\r\n\r\n\t\tvar result = regex.exec(latLng);\r\n\t\tif (typeof result !== \"undefined\" && result !== null && result.length === 3) {\r\n\t\t\treturn result[2];\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate async loadInBounds(mapBounds: any, layersVisible: boolean) {\r\n\t\tif (this.layersVisible != layersVisible) {\r\n\t\t\tfor (var eventrecordId in this.adHocAlarmMarkers) {\r\n\t\t\t\tthis.adHocAlarmMarkers[eventrecordId].visible = layersVisible;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.layersVisible = layersVisible;\r\n\r\n\t\tlet bounds = {\r\n\t\t\tnorth: mapBounds.north,\r\n\t\t\tsouth: mapBounds.south,\r\n\t\t\teast: mapBounds.east,\r\n\t\t\twest: mapBounds.west\r\n\t\t} as MapBounds;\r\n\r\n\t\tif (this.elevation) bounds.elevation = this.elevation;\r\n\r\n\t\tawait this.loadMapDataByBounds(bounds);\r\n\r\n\t\tconst elevations = this.mapData.elevations.slice(); // make a deep copy,\r\n\t\t// preventing mutation state outside mutation handlers.\r\n\t\t// Proper way would be to spread this logic accross the\r\n\t\t// `action -> service -> mutation -> getter` chain\r\n\r\n\t\tthis.elevationList = elevations.sort(function(a, b) {\r\n\t\t\treturn a.elevationValue - b.elevationValue;\r\n\t\t});\r\n\r\n\t\tif (this.elevation) {\r\n\t\t\tlet currentElevation = elevations.find(\r\n\t\t\t\t(elevationFloor: any) => elevationFloor.elevationValue == this.elevation\r\n\t\t\t);\r\n\t\t\tif (currentElevation != null) {\r\n\t\t\t\tthis.displayElevation = currentElevation.name;\r\n\t\t\t}\r\n\t\t} else if (elevations.length > 0) {\r\n\t\t\tlet currentElevation = this.elevationList[0];\r\n\t\t\tif (currentElevation != null) {\r\n\t\t\t\tthis.elevation = currentElevation.elevationValue;\r\n\t\t\t\tthis.displayElevation = currentElevation.name;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.displayLayers(this.mapData.layers as MapLayerData[]);\r\n\r\n\t\tconst isShowMarkerByEventDetail = this.showCircle && !this.mapData.items.length && !this.AdhocLocationEventRecords.length\r\n\r\n\t\tif(isShowMarkerByEventDetail) this.setMarkerByEventDetails()\r\n\t\telse this.displayItems(this.mapData.items as MapItemData[]);\r\n\r\n\t\tif (this.showCircle) {\r\n\t\t\tif (this.clickCircle == null || this.clickCircleEventID != this.EventDetails.eventID) {\r\n\t\t\t\tthis.clickCircleEventID = this.EventDetails.eventID;\r\n\t\t\t\tthis.loadRadius(this.mapCenter);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate displayLayers(layers: MapLayerData[]) {\r\n\t\tconst itemLayerIDs: string[] = [];\r\n\r\n\t\tlayers.forEach(layer => {\r\n\t\t\t/* let isElevated = (layer.minElevation == null || layer.minElevation! <= this.elevation) &&\r\n\t\t\t\t\t\t\t\t\t\t\t\t (layer.maxElevation == null || layer.maxElevation! >= this.elevation); */\r\n\t\t\tconst elevation = this.elevation;\r\n\r\n\t\t\tlet isElevated =\r\n\t\t\t\t(layer.minElevation == null || layer.minElevation! <= elevation) &&\r\n\t\t\t\t(layer.maxElevation == null || layer.maxElevation! >= elevation);\r\n\r\n\t\t\tif (isElevated) {\r\n\t\t\t\titemLayerIDs.push(layer.mapLayerId.toString());\r\n\r\n\t\t\t\tif (this.layersAdded[layer.mapLayerId] == undefined) {\r\n\t\t\t\t\tthis.layersAdded[layer.mapLayerId] = this.enhancedMapping.createOverlay(\r\n\t\t\t\t\t\tthis.map!,\r\n\t\t\t\t\t\tlayer.mapLayerId,\r\n\t\t\t\t\t\tlayer.title,\r\n\t\t\t\t\t\tstringToBounds(layer.ne, layer.sw), // boundaries\r\n\t\t\t\t\t\tlayer.rotation, // rotation\r\n\t\t\t\t\t\taxiosInstance.defaults.baseURL + \"/MapLayers/Image/\" + layer.mapLayerId.toString(), //imageUrl\r\n\t\t\t\t\t\tlayer.minElevation, // minElevation,\r\n\t\t\t\t\t\tlayer.maxElevation, // maxElevation\r\n\t\t\t\t\t\tthis.layersVisible // , visible\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfor (var layerId in this.layersAdded) {\r\n\t\t\tif (itemLayerIDs.indexOf(layerId) == -1) {\r\n\t\t\t\tlet layer = this.layersAdded[layerId];\r\n\r\n\t\t\t\tlayer.remove();\r\n\t\t\t\tdelete this.layersAdded[layerId];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async setMarkerByEventDetails() {\r\n\t\tconst marker = this.enhancedMapping.createMarker(\r\n\t\t\tthis.map!,\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\t4,\r\n\t\t\tnull,\r\n\t\t\tthis.EventDetails.eventTitle,\r\n\t\t\tconvertStringToLatLng(this.EventDetails.latLong),\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\ttrue\r\n\t\t);\r\n\t\tawait this.fetchEventQueue();\r\n\t\tconst inProcessing = get(this.formattedEventsByEventId, `[${this.EventDetails.eventID}].inProcessing`)\r\n\t\tconst isProcessing = inProcessing || this.EventDetails.unParkAt !== null\r\n\r\n\t\tmarker.state = isProcessing ? \"processing\" : \"active\";\r\n\t\tthis.marker = marker\r\n\t}\r\n\r\n\tpublic displayItems(mapItems: MapItemData[]) {\r\n\t\tlet mapItemIDs: string[] = [];\r\n\t\tlet markerTypeVisibilityByID = new LayerTypeMap();\r\n\r\n\t\tthis.mapItemTypes.forEach(markerType => {\r\n\t\t\tmarkerTypeVisibilityByID[markerType.mapLayerItemTypeId] = markerType.visible;\r\n\t\t});\r\n\r\n\t\tmapItems.forEach(mapItem => {\r\n\t\t\tlet mapLayerItemId = mapItem.mapLayerItemId;\r\n\r\n\t\t\tif (\r\n\t\t\t\t(mapItem.minElevation == null || mapItem.minElevation! <= this.elevation) &&\r\n\t\t\t\t(mapItem.maxElevation == null || mapItem.maxElevation! >= this.elevation)\r\n\t\t\t) {\r\n\t\t\t\tmapItemIDs.push(mapItem.mapLayerItemId.toString());\r\n\r\n\t\t\t\tif (this.itemsAdded[mapLayerItemId] == undefined) {\r\n\t\t\t\t\tlet mapMarkerItem = this.enhancedMapping.createMarker(\r\n\t\t\t\t\t\tthis.map!,\r\n\t\t\t\t\t\tmapItem.mapLayerItemId,\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\tmapItem.mapLayerItemTypeId,\r\n\t\t\t\t\t\tmapItem.objectId,\r\n\t\t\t\t\t\tmapItem.title,\r\n\t\t\t\t\t\tconvertStringToLatLng(mapItem.latLong!),\r\n\t\t\t\t\t\tmapItem.regionPath,\r\n\t\t\t\t\t\tmapItem.minElevation,\r\n\t\t\t\t\t\tmapItem.maxElevation,\r\n\t\t\t\t\t\tthis.layersVisible\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tthis.itemsAdded[mapLayerItemId] = mapMarkerItem;\r\n\r\n\t\t\t\t\tif (markerTypeVisibilityByID[mapItem.mapLayerItemTypeId] != null) {\r\n\t\t\t\t\t\tthis.itemsAdded[mapLayerItemId].markerTypeVisible =\r\n\t\t\t\t\t\t\tmarkerTypeVisibilityByID[mapItem.mapLayerItemTypeId];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (mapItem.objectId != null) {\r\n\t\t\t\t\t\tif (this.markersByTypeAndObject[mapItem.mapLayerItemTypeId] == null) {\r\n\t\t\t\t\t\t\tthis.markersByTypeAndObject[mapItem.mapLayerItemTypeId] = new ItemObjectMap();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!this.markersByTypeAndObject[mapItem.mapLayerItemTypeId][mapItem.objectId!]) {\r\n\t\t\t\t\t\t\tthis.markersByTypeAndObject[mapItem.mapLayerItemTypeId][mapItem.objectId!] = [];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.markersByTypeAndObject[mapItem.mapLayerItemTypeId][mapItem.objectId!].push(mapMarkerItem);\r\n\r\n\t\t\t\t\t\tif (mapItem.mapLayerItemTypeId == 4) {\r\n\t\t\t\t\t\t\tconst activeStatus = this.activeResponseIDs[mapItem.objectId!.toString()];\r\n\t\t\t\t\t\t\tif (activeStatus == null) {\r\n\t\t\t\t\t\t\t\tmapMarkerItem.state = \"\";\r\n\t\t\t\t\t\t\t} else if (activeStatus.awaitingAcknowledgement) {\r\n\t\t\t\t\t\t\t\tmapMarkerItem.state = \"active\";\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tmapMarkerItem.state = \"processing\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tif (mapItem.mapLayerItemTypeId == 1) {\r\n\t\t\t\t\t\t\t\tmapMarkerItem.isClickable = true;\r\n\t\t\t\t\t\t\t\tmapMarkerItem.click = () => {\r\n\t\t\t\t\t\t\t\t\tthis.$emit(\"onCameraIconClick\");\r\n\t\t\t\t\t\t\t\t\tthis.setAwaitingCamera({\r\n\t\t\t\t\t\t\t\t\t\tobjectId: mapItem.objectId,\r\n\t\t\t\t\t\t\t\t\t\ttitle: mapItem.title\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (this.activeItemIDs.has(mapLayerItemId)) {\r\n\t\t\t\t\t\t\t\tmapMarkerItem.state = \"active\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfor (var itemId in this.itemsAdded) {\r\n\t\t\tif (mapItemIDs.indexOf(itemId) == -1) {\r\n\t\t\t\tvar item = this.itemsAdded[itemId];\r\n\r\n\t\t\t\titem.state = \"\";\r\n\r\n\t\t\t\tif (this.markersByTypeAndObject[item.mapLayerItemTypeId] != null) {\r\n\t\t\t\t\tif (this.markersByTypeAndObject[item.mapLayerItemTypeId][item.objectId!] != null) {\r\n\t\t\t\t\t\tdelete this.markersByTypeAndObject[item.mapLayerItemTypeId][item.objectId!];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\titem.remove();\r\n\t\t\t\tdelete this.itemsAdded[itemId];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic loadRadius(position: any) {\r\n\t\tif (this.clickCircle != null) {\r\n\t\t\tthis.clickCircle.remove();\r\n\t\t\tthis.clickCircle = null;\r\n\t\t}\r\n\r\n\t\tthis.clickCircle = this.enhancedMapping.createCircle(\r\n\t\t\tthis.map!,\r\n\t\t\t\"#0d87e9\",\r\n\t\t\t0.8,\r\n\t\t\t2,\r\n\t\t\t\"#0d87e9\",\r\n\t\t\t0.05,\r\n\t\t\tposition,\r\n\t\t\tthis.nearbyCameraRadius,\r\n\t\t\tthis.allowSpotlightScaling\r\n\t\t);\r\n\r\n\t\tthis.clickCircle.editted = latLng => this.getItemsInCircle();\r\n\t\tthis.getItemsInCircle();\r\n\t}\r\n\r\n\tprivate rad(x: number) {\r\n\t\treturn (x * Math.PI) / 180;\r\n\t}\r\n\r\n\tpublic getDistance(p1: any, p2: any): number {\r\n\t\tlet R = 6378137; // Earth's mean radius in meters\r\n\r\n\t\tlet dLat = this.rad(p2.lat - p1.lat);\r\n\t\tlet dLong = this.rad(p2.lng - p1.lng);\r\n\t\tlet a =\r\n\t\t\tMath.sin(dLat / 2) * Math.sin(dLat / 2) +\r\n\t\t\tMath.cos(this.rad(p1.lat)) * Math.cos(this.rad(p2.lat)) * Math.sin(dLong / 2) * Math.sin(dLong / 2);\r\n\t\tlet c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\r\n\t\tlet d = R * c;\r\n\r\n\t\treturn Math.round(d);\r\n\t}\r\n\r\n\tpublic async getItemsInCircle() {\r\n\t\tthis.clearDeviceControllerCameras();\r\n\t\tconst bounds = this.clickCircle.squareBounds;\r\n\r\n\t\tlet center = this.clickCircle!.center;\r\n\t\tthis.setMapCircleCenter(center.lat + \" \" + center.lng);\r\n\r\n\t\tlet mapBounds = {\r\n\t\t\tnorth: bounds.north,\r\n\t\t\tsouth: bounds.south,\r\n\t\t\teast: bounds.east,\r\n\t\t\twest: bounds.west\r\n\t\t} as MapBounds;\r\n\r\n\t\tif (this.elevation) {\r\n\t\t\tmapBounds.elevation = this.elevation;\r\n\t\t} else {\r\n\t\t\t// If we don't have any elevation at this point,\r\n\t\t\t// set elevation to be default: 0\r\n\t\t\tthis.elevation = 0;\r\n\t\t}\r\n\r\n\t\tawait this.loadMapDataByBounds(mapBounds);\r\n\r\n\t\tlet items = this.mapData.items as Array;\r\n\r\n\t\tlet newActiveItems = new Array();\r\n\t\tthis.activeItemIDs = new Set();\r\n\r\n\t\tlet centerPosition = { lat: center.lat, lng: center.lng };\r\n\t\tlet radius = this.clickCircle!.radius;\r\n\t\tlet itemDistances = new Array();\r\n\r\n\t\tlet activeMapLayerItems = new Set();\r\n\r\n\t\titems.forEach(item => {\r\n\t\t\tif (item.mapLayerItemTypeId != 4) {\r\n\t\t\t\tlet marker = this.itemsAdded[item.mapLayerItemId];\r\n\t\t\t\tlet distance;\r\n\r\n\t\t\t\tif (marker != null) {\r\n\t\t\t\t\tdistance = this.getDistance(centerPosition, {\r\n\t\t\t\t\t\tlat: marker.position.lat,\r\n\t\t\t\t\t\tlng: marker.position.lng\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (distance <= radius) {\r\n\t\t\t\t\t\tmarker.state = \"active\";\r\n\r\n\t\t\t\t\t\titemDistances.push({\r\n\t\t\t\t\t\t\tdistance: distance,\r\n\t\t\t\t\t\t\titemType: item.mapLayerItemTypeId,\r\n\t\t\t\t\t\t\ttitle: marker.title,\r\n\t\t\t\t\t\t\tobjectId: marker.objectId\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tnewActiveItems.push(marker);\r\n\t\t\t\t\t\tactiveMapLayerItems.add(item.mapLayerItemId);\r\n\t\t\t\t\t\tthis.activeItemIDs.add(item.mapLayerItemId);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (item!.latLong != null) {\r\n\t\t\t\t\tconst position = convertStringToLatLng(item!.latLong!);\r\n\t\t\t\t\tdistance = this.getDistance(centerPosition, {\r\n\t\t\t\t\t\tlat: position.lat,\r\n\t\t\t\t\t\tlng: position.lng\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (distance <= radius && item.minElevation == this.elevation) {\r\n\t\t\t\t\t\tthis.activeItemIDs.add(item.mapLayerItemId);\r\n\t\t\t\t\t\tactiveMapLayerItems.add(item.mapLayerItemId);\r\n\t\t\t\t\t\titemDistances.push({\r\n\t\t\t\t\t\t\tdistance: distance,\r\n\t\t\t\t\t\t\titemType: item.mapLayerItemTypeId,\r\n\t\t\t\t\t\t\ttitle: item.title,\r\n\t\t\t\t\t\t\tobjectId: item.objectId,\r\n\t\t\t\t\t\t\timperial: false\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif (this.activeItems != null) {\r\n\t\t\tthis.activeItems.forEach(marker => {\r\n\t\t\t\tif (!activeMapLayerItems.has(marker.mapLayerItemId)) {\r\n\t\t\t\t\tif (marker.mapLayerItemTypeId != 4) marker.state = \"\";\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tthis.activeItems = newActiveItems;\r\n\r\n\t\titemDistances = itemDistances.sort((a, b) => {\r\n\t\t\treturn a.distance - b.distance;\r\n\t\t});\r\n\r\n\t\tvar uniqueDistances = [];\r\n\t\titemDistances.forEach(distance => {\r\n\t\t\tif (\r\n\t\t\t\t!uniqueDistances.find(\r\n\t\t\t\t\titem => item.itemType == distance.itemType && item.objectId == distance.objectId\r\n\t\t\t\t)\r\n\t\t\t) {\r\n\t\t\t\tuniqueDistances.push(distance);\r\n\t\t\t}\r\n\t\t});\r\n\t\titemDistances = uniqueDistances;\r\n\r\n\t\tif (this.getUseImperialMeasurements) {\r\n\t\t\titemDistances.forEach(distance => {\r\n\t\t\t\tdistance.distance = this.metersToFeet(distance.distance);\r\n\t\t\t\tdistance.imperial = true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.setActiveMapItems(itemDistances);\r\n\t\tthis.setActiveMapItemsRequired(false);\r\n\r\n\t\tif (this.clickCircle && this.allowSpotlightScaling) this.clickCircle!.editable = true;\r\n\t}\r\n\r\n\tprivate metersToFeet(meters) {\r\n\t\tif (meters < 0) return 0;\r\n\t\telse return Math.round(meters / 0.3048);\r\n\t}\r\n\r\n\tprivate createAdHocMarker(record: any) {\r\n\t\tvar location = record.location.split(\",\");\r\n\t\tthis.adHocAlarmMarkers[record.eventRecordID] = this.enhancedMapping.createMarker(\r\n\t\t\tthis.map!,\r\n\t\t\tnull,\r\n\t\t\trecord.eventRecordID.toString(),\r\n\t\t\t4,\r\n\t\t\trecord.objectId,\r\n\t\t\trecord.details,\r\n\t\t\tconvertStringToLatLng(location[0]),\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\tnull,\r\n\t\t\ttrue\r\n\t\t);\r\n\r\n\t\tthis.adHocAlarmMarkers[record.eventRecordID].state = record.awaitingAcknowledgement ? \"active\" : \"processing\";\r\n\t}\r\n\r\n\tpublic clearMap() {\r\n\t\tfor (var layerId in this.layersAdded) {\r\n\t\t\tlet layer = this.layersAdded[layerId];\r\n\r\n\t\t\tlayer.remove();\r\n\t\t\tdelete this.layersAdded[layerId];\r\n\t\t}\r\n\r\n\t\tfor (var itemId in this.itemsAdded) {\r\n\t\t\tlet item = this.itemsAdded[itemId];\r\n\r\n\t\t\titem.state = \"\";\r\n\r\n\t\t\tif (this.markersByTypeAndObject[item.mapLayerItemTypeId] != null) {\r\n\t\t\t\tif (this.markersByTypeAndObject[item.mapLayerItemTypeId][item.objectId!] != null) {\r\n\t\t\t\t\tdelete this.markersByTypeAndObject[item.mapLayerItemTypeId][item.objectId!];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\titem.remove();\r\n\t\t\tdelete this.itemsAdded[itemId];\r\n\t\t}\r\n\t}\r\n\r\n\tpublic upLevel() {\r\n\t\tlet higherFloors = this.elevationList.filter(elevation => elevation.elevationValue > this.elevation);\r\n\t\tif (higherFloors.length > 0) {\r\n\t\t\tthis.elevation = higherFloors[0].elevationValue;\r\n\t\t\tthis.updateElevation();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic downLevel() {\r\n\t\tlet lowerFloors = this.elevationList.filter(elevation => elevation.elevationValue < this.elevation);\r\n\t\tif (lowerFloors.length > 0) {\r\n\t\t\tthis.elevation = lowerFloors[lowerFloors.length - 1].elevationValue;\r\n\t\t\tthis.updateElevation();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic gotoElevation(elevation: any) {\r\n\t\tthis.elevation = elevation.elevationValue;\r\n\t\tthis.displayElevation = elevation.name;\r\n\t\tthis.updateElevation();\r\n\t}\r\n\r\n\tpublic updateElevation() {\r\n\t\tthis.clearMap();\r\n\r\n\t\tthis.loadInBounds(this.map!.mapBounds, this.map!.currentViewState == \"narrow\");\r\n\t\tthis.getItemsInCircle();\r\n\t}\r\n\r\n\tpublic toggleVisibility(mapItemType: any) {\r\n\t\tvar newMapItem = {\r\n\t\t\t...mapItemType,\r\n\t\t\tvisible: !mapItemType.visible\r\n\t\t};\r\n\r\n\t\tthis.setMapLayersItemType({ id: mapItemType.mapLayerItemTypeId, data: newMapItem });\r\n\r\n\t\tif (this.markersByTypeAndObject[newMapItem.mapLayerItemTypeId] != null) {\r\n\t\t\tvar ByObject = this.markersByTypeAndObject[newMapItem.mapLayerItemTypeId];\r\n\r\n\t\t\tfor (var objectId in ByObject) {\r\n\t\t\t\tByObject[objectId].forEach(marker => (marker.markerTypeVisible = newMapItem.visible));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (newMapItem.mapLayerItemTypeId == 4) {\r\n\t\t\tfor (let eventRecordID in this.adHocAlarmMarkers) {\r\n\t\t\t\tthis.adHocAlarmMarkers[eventRecordID].visible = newMapItem.visible;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic destroy() {\r\n\t\tthis.clearMap();\r\n\t}\r\n\r\n\tpublic removeAdhocAlarmMarkers() {\r\n\t\tfor (let eventRecordId in this.adHocAlarmMarkers) {\r\n\t\t\t// if this object isn't null and it has the remove function\r\n\t\t\tif (this.adHocAlarmMarkers[eventRecordId] !== null\r\n\t\t\t\t&& typeof this.adHocAlarmMarkers[eventRecordId].remove === \"function\") {\r\n\t\t\t\tthis.adHocAlarmMarkers[eventRecordId].remove();\r\n\t\t\t}\r\n\t\t\tthis.adHocAlarmMarkers[eventRecordId] = null;\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EnhancedMap.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EnhancedMap.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EnhancedMap.vue?vue&type=template&id=8bc4d622&scoped=true\"\nimport script from \"./EnhancedMap.vue?vue&type=script&lang=ts\"\nexport * from \"./EnhancedMap.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EnhancedMap.vue?vue&type=style&index=0&id=8bc4d622&prod&scoped=true&lang=scss\"\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 \"8bc4d622\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ForceRestore.vue?vue&type=style&index=0&id=427c0240&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(!_vm.isConfirmationShown && !_vm.isCloseConfirmationShown && _vm.index != null)?_c('b-modal',{attrs:{\"data-cy\":\"generic-update-dialog\",\"id\":\"genericUpdateDialog\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\"},on:{\"click\":function($event){return _vm.hideUpdateDialog(false)}},model:{value:(_vm.isShown),callback:function ($$v) {_vm.isShown=$$v},expression:\"isShown\"}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',{attrs:{\"hidden\":_vm.isAddingNew}},[_vm._v(\" \"+_vm._s(_vm.title ? _vm.title : _vm.term)+\" Details \"),_c('span',{staticClass:\"text-danger\",attrs:{\"hidden\":!_vm.hasChanged}},[_vm._v(\"*\")])]),_c('h4',{attrs:{\"hidden\":!_vm.isAddingNew}},[_vm._v(\"Add \"+_vm._s(_vm.term))])]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":function($event){return _vm.hideUpdateDialog(false)}}},[_vm._v(\"×\")])]),_c('scrollbar',{staticStyle:{\"height\":\"100%\"}},[_c('section',[(_vm.getRow() && _vm.getRow().readOnly && _vm.getRow().readOnlyMessage)?_c('b-alert',{attrs:{\"variant\":\"info\",\"show\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.getRow().readOnlyMessage)+\" \")]):_vm._e()],1),(_vm.getRow() && _vm.getRow().warningMessage)?_c('section',[_c('div',{staticClass:\"d-flex align-items-center mb-4 text-warning\"},[_c('i',{staticClass:\"fas fa-exclamation-circle mr-2\"}),_c('strong',{staticClass:\"m-0\",attrs:{\"data-cy\":\"update-modal-warning-message\"}},[_vm._v(\" \"+_vm._s(_vm.getRow().warningMessage)+\" \")])])]):_vm._e(),_vm._l((_vm.getModalItems),function(item){return _c('b-form',{key:item.key},[(item.dataType == 'checkbox')?_c('b-form-group',{staticClass:\"custom-control custom-checkbox\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.getRow()[item.key]),expression:\"getRow()[item.key]\"}],staticClass:\"custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":item.key,\"required\":item.required,\"disabled\":_vm.isReadOnly(item)},domProps:{\"checked\":Array.isArray(_vm.getRow()[item.key])?_vm._i(_vm.getRow()[item.key],null)>-1:(_vm.getRow()[item.key])},on:{\"change\":[function($event){var $$a=_vm.getRow()[item.key],$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.getRow(), item.key, $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.getRow(), item.key, $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.getRow(), item.key, $$c)}},function($event){return _vm.entryChanged()}]}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":item.key}},[_vm._v(_vm._s(item.title))]),_c('span',{staticClass:\"text-danger\",attrs:{\"hidden\":!item.required}},[_vm._v(\"*\")]),_vm._v(\" \"),(item.description)?_c('small',{staticClass:\"form-text text-muted\",domProps:{\"innerHTML\":_vm._s(item.description)}}):_vm._e()]):(item.dataType == 'textarea')?_c('b-form-group',[_c('label',{attrs:{\"for\":item.key}},[_vm._v(_vm._s(item.title)+\":\")]),_c('span',{staticClass:\"text-danger\",attrs:{\"hidden\":!item.required}},[_vm._v(\"*\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.getRow()[item.key]),expression:\"getRow()[item.key]\"}],staticClass:\"custom-textarea\",attrs:{\"placeholder\":item.placeholder,\"maxlength\":item.maxLength || 500,\"id\":item.key,\"required\":item.required,\"disabled\":_vm.isReadOnly(item)},domProps:{\"value\":(_vm.getRow()[item.key])},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(_vm.getRow(), item.key, $event.target.value)},function($event){return _vm.entryChanged()}]}}),(item.description)?_c('small',{staticClass:\"form-text text-muted\",domProps:{\"innerHTML\":_vm._s(item.description)}}):_vm._e()]):(item.dataType == 'select')?_c('b-form-group',[_c('div',[_c('label',[_vm._v(\" \"+_vm._s(item.title)+\": \"),_c('span',{staticClass:\"text-danger\",attrs:{\"hidden\":!item.required}},[_vm._v(\"*\")])])]),_c('vue-select',{staticClass:\"dark flex-search w-100\",attrs:{\"id\":item.key,\"required\":item.required,\"disabled\":_vm.isReadOnly(item),\"options\":item.data,\"placeholder\":item.placeholder,\"label\":\"title\"},on:{\"input\":function($event){return _vm.entryChanged()}},model:{value:(_vm.getRow()[item.key]),callback:function ($$v) {_vm.$set(_vm.getRow(), item.key, $$v)},expression:\"getRow()[item.key]\"}}),(item.description)?_c('small',{staticClass:\"form-text text-muted\",domProps:{\"innerHTML\":_vm._s(item.description)}}):_vm._e()],1):(item.dataType == 'vselect3')?_c('b-form-group',[_c('div',[_c('label',[_vm._v(\" \"+_vm._s(item.title)+\": \"),_c('span',{staticClass:\"text-danger\",attrs:{\"hidden\":!item.required}},[_vm._v(\"*\")])])]),_c('vselect3',_vm._b({staticClass:\"w-100\",attrs:{\"id\":item.key,\"required\":item.required,\"disabled\":_vm.isReadOnly(item),\"options\":item.data,\"placeholder\":item.placeholder,\"label\":\"title\",\"clearable\":!item.required,\"appendToBody\":true,\"selectOnTab\":true,\"autoscroll\":true},on:{\"input\":_vm.entryChanged,\"search\":function (searchTerm) { return _vm.onSearch(searchTerm, item); }},model:{value:(_vm.getRow()[item.key]),callback:function ($$v) {_vm.$set(_vm.getRow(), item.key, $$v)},expression:\"getRow()[item.key]\"}},'vselect3',item.props,false)),(item.description)?_c('small',{staticClass:\"form-text text-muted\",domProps:{\"innerHTML\":_vm._s(item.description)}}):_vm._e()],1):(item.dataType == 'multiselect')?_c('b-form-group',[_c('div',[_c('label',[_vm._v(\" \"+_vm._s(item.title)+\": \"),_c('span',{staticClass:\"text-danger\",attrs:{\"hidden\":!item.required}},[_vm._v(\"*\")])])]),_c('vue-select',{staticClass:\"dark flex-search w-100\",attrs:{\"multiple\":\"\",\"id\":item.key,\"required\":item.required,\"disabled\":_vm.isReadOnly(item),\"options\":item.data,\"placeholder\":item.placeholder,\"label\":\"title\"},on:{\"input\":function($event){return _vm.entryChanged()}},model:{value:(_vm.getRow()[item.key]),callback:function ($$v) {_vm.$set(_vm.getRow(), item.key, $$v)},expression:\"getRow()[item.key]\"}}),(item.description)?_c('small',{staticClass:\"form-text text-muted\",domProps:{\"innerHTML\":_vm._s(item.description)}}):_vm._e()],1):(item.dataType == 'component')?_c('b-form-group',[(item.title)?_c('div',[_c('label',[_vm._v(\" \"+_vm._s(item.title)+\": \"),_c('span',{staticClass:\"text-danger\",attrs:{\"hidden\":!item.required}},[_vm._v(\"*\")])])]):_vm._e(),_c(item.data,_vm._b({ref:item.key+'-component',refInFor:true,tag:\"component\",class:item.title.toLowerCase().replace(' ', '-') + '-component',attrs:{\"readonly\":_vm.isReadOnly(item),\"disabled\":_vm.isReadOnly(item),\"is-adding-new\":_vm.isAddingNew,\"model\":_vm.newEntry},on:{\"input\":_vm.componentItemChanged,\"change\":_vm.componentItemChanged,\"isValid\":_vm.checkIsValid,\"change-entry\":_vm.componentChangeNewEntry},model:{value:(_vm.getRow()[item.key]),callback:function ($$v) {_vm.$set(_vm.getRow(), item.key, $$v)},expression:\"getRow()[item.key]\"}},'component',item.props,false)),(item.description)?_c('small',{staticClass:\"form-text text-muted\",domProps:{\"innerHTML\":_vm._s(item.description)}}):_vm._e()],1):(item.dataType == 'hyperlink')?_c('b-form-group',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":item.key}},[_vm._v(_vm._s(item.title)+\":\")]),_c('span',{staticClass:\"text-danger\",attrs:{\"hidden\":!item.required}},[_vm._v(\"*\")]),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":item.key,\"required\":item.required,\"maxlength\":item.maxLength || 30,\"max\":item.max,\"min\":item.min,\"data-cy\":'gmi-'+item.key,\"disabled\":_vm.isReadOnly(item),\"placeholder\":item.placeholder,\"type\":'text',\"formatter\":item.formatter},on:{\"input\":function($event){return _vm.entryChanged()}},model:{value:(_vm.getRow()[item.key]),callback:function ($$v) {_vm.$set(_vm.getRow(), item.key, $$v)},expression:\"getRow()[item.key]\"}}),(item.dataType == 'hyperlink')?_c('small',[_c('a',{attrs:{\"href\":_vm.newEntry[item.key],\"data-cy\":\"hyperlink-type-display\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.newEntry[item.key]))])]):_vm._e()],1):_c('b-form-group',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":item.key}},[_vm._v(_vm._s(item.title)+\":\")]),_c('span',{staticClass:\"text-danger\",attrs:{\"hidden\":!item.required}},[_vm._v(\"*\")]),_vm._v(\" \"),_c('b-form-input',{attrs:{\"id\":item.key,\"required\":item.required,\"maxlength\":item.maxLength || 30,\"max\":item.max,\"min\":item.min,\"data-cy\":'gmi-'+item.key,\"disabled\":_vm.isReadOnly(item),\"placeholder\":item.placeholder,\"type\":item.dataType,\"formatter\":item.formatter},on:{\"input\":function($event){return _vm.entryChanged()}},model:{value:(_vm.getRow()[item.key]),callback:function ($$v) {_vm.$set(_vm.getRow(), item.key, $$v)},expression:\"getRow()[item.key]\"}}),(item.description)?_c('small',{staticClass:\"form-text text-muted\",domProps:{\"innerHTML\":_vm._s(item.description)}}):_vm._e(),(_vm.$v.newEntry[item.key] && _vm.$v.newEntry[item.key].$invalid)?_c('ul',{staticClass:\"p-t-5 p-l-15\"},[(_vm.getValidationErrorForItem(item.key))?_c('li',{staticClass:\"small text-danger\"},[_vm._v(\" \"+_vm._s(_vm.getValidationErrorForItem(item.key))+\" \")]):_vm._e(),(!_vm.$v.newEntry[item.key].minLength === false)?_c('li',{staticClass:\"small text-danger\"},[_vm._v(\" Must have at least \"+_vm._s(_vm.$v.newEntry[item.key].$params.minLength.min)+\" characters. \")]):_vm._e()]):_vm._e()],1)],1)})],2),_c('template',{slot:\"modal-footer\"},[_vm._t(\"additional-footer\",null,{\"item\":_vm.newEntry}),(!_vm.isAddingNew)?_c('b-button',{staticClass:\"btn btn-primary btn-right ksConfirm\",attrs:{\"hidden\":_vm.readOnly,\"disabled\":!_vm.isValid || _vm.$v.newEntry.$invalid || !_vm.hasChanged || _vm.isCheckingEffectsOfSave || _vm.isValidCustomComponents,\"type\":\"submit\",\"variant\":\"primary\"},on:{\"click\":function($event){_vm.performSave(_vm.getRow())}}},[_vm._v(_vm._s(_vm.isCheckingEffectsOfSave ? \"Checking...\" : \"Save\")+\" \")]):_c('b-button',{staticClass:\"btn btn-primary btn-right ksConfirm\",attrs:{\"disabled\":!_vm.isValid || _vm.$v.newEntry.$invalid || _vm.isValidCustomComponents,\"type\":\"submit\",\"variant\":\"primary\"},on:{\"click\":function($event){_vm.confirmAdd(_vm.getRow())}}},[_vm._v(\"Add \")]),_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"close-history-btn\",\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.hideUpdateDialog(false)}}},[_c('span',[_vm._v(\"Close\")])])],2)],2):(_vm.isCloseConfirmationShown)?_c('b-modal',{attrs:{\"data-cy\":\"update-user-dialog\",\"id\":\"confirmCloseModal\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\"},model:{value:(_vm.isCloseConfirmationShown),callback:function ($$v) {_vm.isCloseConfirmationShown=$$v},expression:\"isCloseConfirmationShown\"}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',[_vm._v(\"Unsaved Changes\")])])]),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-primary pull-right\",on:{\"click\":function($event){return _vm.hideUpdateDialog(true)}}},[_vm._v(\"Yes\")]),_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"close-history-btn\"},on:{\"click\":function($event){return _vm.hideCloseConfirmationDialog()}}},[_c('span',[_vm._v(\"No\")])])]),_c('div',[_c('p',[_vm._v(\"You have unsaved changes, do you want to leave without saving?\")])])],2):_vm._e(),_c('b-modal',{attrs:{\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"header-class\":[(_vm.saveActionErrorsResult && _vm.saveActionErrorsResult.length > 0) ? 'delete-confirm-modal': ''],\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\"},model:{value:(_vm.isSaveConfirmDialogShown),callback:function ($$v) {_vm.isSaveConfirmDialogShown=$$v},expression:\"isSaveConfirmDialogShown\"}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"confirmation-modal-header\"},[_c('h4',[((_vm.saveActionErrorsResult && _vm.saveActionErrorsResult.length > 0))?_c('i',{staticClass:\"fas fa-fw fa-exclamation-triangle mr-2 danger-color\"}):_vm._e(),_vm._v(\"Save \"+_vm._s(_vm.term.toLowerCase())+\" \")])])]),_c('template',{slot:\"modal-footer\"},[_c('b-button',{staticClass:\"ksConfirm\",attrs:{\"variant\":\"primary\",\"disabled\":_vm.isSaveConfirmButtonDisabled},on:{\"click\":function($event){_vm.confirmSave(_vm.getRow())}}},[_vm._v(\" Save \")]),_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.cancelSave}},[_vm._v(\" Cancel \")])],1),((!_vm.saveActionErrorsResult || _vm.saveActionErrorsResult.length == 0))?_c('div',[_c('h5',{staticClass:\"default-save-message\"},[_vm._v(\" Are you sure you want to save changes to the \"+_vm._s(_vm.term.toLowerCase())+\" \\\"\"),_c('strong',[_vm._v(_vm._s(_vm.getRow().title))]),_vm._v(\"\\\"? \")]),(_vm.saveActionMessageResult.length > 0)?_c('div',{staticClass:\"save-action-context\"},[_c('h5',[_vm._v(\"This action will:\")]),_c('ul',_vm._l((_vm.saveActionMessageResult),function(saveMessage,index){return _c('li',{key:index},[_vm._v(\" \"+_vm._s(typeof saveMessage === \"function\" ? saveMessage(_vm.getRow()) : saveMessage)+\" \")])}),0)]):_vm._e()]):_c('div',[_c('h5',{staticClass:\"default-save-message\"},[_vm._v(\" Changes cannot be saved to \"+_vm._s(_vm.term.toLowerCase())+\" \\\"\"),_c('strong',[_vm._v(_vm._s(_vm.getRow().title))]),_vm._v(\"\\\"? \")]),((_vm.saveActionErrorsResult && _vm.saveActionErrorsResult.length > 0))?_c('div',{staticClass:\"save-action-context\"},[_c('b-alert',{staticClass:\"mb-0\",attrs:{\"variant\":\"danger\",\"show\":\"\"}},_vm._l((_vm.saveActionErrorsResult),function(errorMessage,index){return _c('li',{key:index},[_vm._v(_vm._s(errorMessage))])}),0)],1):_vm._e()])],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport vSelect from \"vue-select\";\r\nimport vselect3 from \"vselect3\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { isEqual } from \"lodash\";\r\n\r\nexport interface ModalItem {\r\n\ttitle: string;\r\n\tkey: string;\r\n\tdataType: string;\r\n\treadOnly?: boolean;\r\n\treadOnlyMessage?: string;\r\n\tnewOnly?: boolean;\r\n\treadOnlyIfEdit?: any;\r\n\tupdateOnly?: boolean;\r\n\tdata?: any;\r\n\tplaceholder?: string;\r\n\trequired?: boolean;\r\n\trequiredMethod?: any;\r\n\tcustomPermissions?: any[];\r\n\tuseCustomRender?: boolean;\r\n\tmaxLength?: number;\r\n\torder?: number;\r\n\tdefaultValue?: any;\r\n\tprops?: any;\r\n\tvisible?: any;\r\n\tvisibleMethod?: any;\r\n\tdescription?: string;\r\n\tmax?: number | null;\r\n\tmin?: number | null;\r\n\tvalidations?: any;\r\n\tcomponentHasValidation?: boolean;\r\n\tcsvComponent?: string;\r\n\tuseCustomCell?: boolean;\r\n\texcludeCSV?: boolean;\r\n\treadOnlyMethod?: (item: any, row: any) => boolean;\r\n\tformatter?: (value: any) => any;\r\n}\r\n\r\nconst GenericTable = namespace(\"GenericTable\");\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tvalidations() {\r\n\t\tvar validationModel = {\r\n\t\t\tnewEntry: {}\r\n\t\t};\r\n\r\n\t\tvar modalItems = this.getModalItems;\r\n\r\n\t\tmodalItems.forEach(modalItem => {\r\n\t\t\tif (modalItem.validations) {\r\n\t\t\t\tvalidationModel.newEntry[modalItem.key] = modalItem.validations;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn validationModel;\r\n\t},\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\tvselect3,\r\n\t\tscrollbar: VuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class GenericUpdateModal extends Vue {\r\n\t$refs!: {\r\n\t\tgenericUpdateModal: any;\r\n\t};\r\n\r\n\t@Prop() public deletePermissions!: any[];\r\n\t@Prop() public modalItems!: ModalItem[];\r\n\t@Prop() public dataList!: any[];\r\n\t@Prop({ default: \"\" }) public term!: string;\r\n\t@Prop() public title!: string;\r\n\r\n\t@Prop() public onSave;\r\n\t@Prop() public onDelete;\r\n\t@Prop() public onAddNew;\r\n\t@Prop({ default: \"\" }) public idColumn!: string;\r\n\r\n\t@Prop({ type: Boolean, default: false}) public refreshAllowed: boolean;\r\n\t@Prop({ type: Boolean, default: false}) public clearOnClose: boolean;\r\n\r\n\t@Prop({ type: Boolean, default: false }) isSaveConfirmationEnabled: boolean;\r\n\t@Prop() saveActionMessages: any;\r\n\t@Prop() saveActionErrors: any;\r\n\t@Prop({ type: Boolean, default: true }) closeOnSave: boolean = true;\r\n\r\n\t@GenericTable.Getter getModalRow: any;\r\n\t@GenericTable.Mutation setModalRow: any;\r\n\t@GenericTable.Mutation setRowHasChanges: any;\r\n\r\n\tindex: number = null;\r\n\tisAddingNew: boolean = false;\r\n\tisShown: boolean = false;\r\n\treadOnly: boolean = false;\r\n\tisValid: boolean = false;\r\n\thasChanged: boolean = false;\r\n\tisConfirmationShown: boolean = false;\r\n\tisCloseConfirmationShown: boolean = false;\r\n\tmodalItemRefresh: boolean = false;\r\n\r\n\tprivate isSaveConfirmDialogShown: boolean = false;\r\n\tprivate isCheckingEffectsOfSave: boolean = false;\r\n\tprivate saveActionMessageResult = [];\r\n\tprivate saveActionErrorsResult = [];\r\n\tprivate validationComponent = {};\r\n\r\n\tpublic newEntry: any = {};\r\n\r\n\t// == Methods == //\r\n\tpublic showUpdateDialog(dataRow?, readOnly?, addNew?) {\r\n\t\tif (readOnly) {\r\n\t\t\tthis.readOnly = true;\r\n\t\t} else {\r\n\t\t\tthis.readOnly = false;\r\n\t\t}\r\n\t\tif (addNew) {\r\n\t\t\tthis.isAddingNew = true;\r\n\t\t\tthis.isValid = false;\r\n\t\t\tthis.hasChanged = false;\r\n\t\t\tthis.clearNewEntryModelValues();\r\n\t\t} else {\r\n\t\t\tthis.isAddingNew = false;\r\n\t\t}\r\n\t\tif (dataRow) {\r\n\t\t\tif (this.idColumn) {\r\n\t\t\t\tthis.index = this.dataList.findIndex(x => x[this.idColumn] === dataRow[this.idColumn]);\r\n\r\n\t\t\t\t// force update the data list with provided row\r\n\t\t\t\tthis.dataList.splice(this.index, 1, dataRow);\r\n\t\t\t} else {\r\n\t\t\t\tthis.index = this.dataList.findIndex(x => x === dataRow);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.index = -1;\r\n\t\t}\r\n\t\t// Update our object in the store\r\n\t\tthis.setupEntry();\r\n\t\tthis.isShown = true;\r\n\t\tthis.getModalItems;\r\n\t}\r\n\r\n\tpublic hideUpdateDialog(confirmed) {\r\n\t\tif (this.hasChanged && !confirmed) {\r\n\t\t\t// confirmation\r\n\t\t\tthis.isShown = true;\r\n\t\t\tthis.isCloseConfirmationShown = true;\r\n\t\t} else {\r\n\t\t\tthis.isShown = false;\r\n\t\t\tthis.isConfirmationShown = false;\r\n\t\t\tthis.isCloseConfirmationShown = false;\r\n\t\t\tthis.index = -1;\r\n\t\t\tthis.$emit(\"closed\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate showCloseConfirmationDialog() {\r\n\t\tthis.isCloseConfirmationShown = true;\r\n\t}\r\n\r\n\tprivate hideCloseConfirmationDialog() {\r\n\t\tthis.isCloseConfirmationShown = false;\r\n\t}\r\n\r\n\tprivate showDeleteConfirmationDialog() {\r\n\t\tthis.isConfirmationShown = true;\r\n\t}\r\n\r\n\tprivate hideDeleteConfirmationDialog() {\r\n\t\tthis.isConfirmationShown = false;\r\n\t}\r\n\r\n\tprivate async performSave(itemToUpdate) {\r\n\t\tif (this.isSaveConfirmationEnabled) {\r\n\t\t\tif (!this.saveActionMessages && !this.saveActionErrors) {\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tthis.isCheckingEffectsOfSave = true;\r\n\r\n\t\t\t\tthis.saveActionMessageResult = this.saveActionMessages ? await this.saveActionMessages(itemToUpdate) : [];\r\n\t\t\t\tif (!this.saveActionMessageResult) {\r\n\t\t\t\t\tthis.saveActionMessageResult = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.saveActionErrorsResult = this.saveActionErrors ? await this.saveActionErrors(itemToUpdate) : [];\r\n\t\t\t\tif (!this.saveActionErrorsResult) {\r\n\t\t\t\t\tthis.saveActionErrorsResult = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.saveActionMessageResult.length === 0 && this.saveActionErrorsResult.length === 0) {\r\n\t\t\t\t\tthis.onSave(itemToUpdate);\r\n\t\t\t\t\tif (this.closeOnSave) {\r\n\t\t\t\t\t\tthis.hideUpdateDialog(true);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.isSaveConfirmDialogShown = true;\r\n\t\t\t\t}\r\n\t\t\t} catch (ex) {\r\n\t\t\t\tconsole.log(\"Unexpected error checking save action messages: \" + ex);\r\n\t\t\t} finally {\r\n\t\t\t\tthis.isCheckingEffectsOfSave = false;\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tthis.onSave(itemToUpdate);\r\n\t\t\tif (this.closeOnSave) {\r\n\t\t\t\tthis.hideUpdateDialog(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate confirmAdd(itemToAdd) {\r\n\t\tthis.onAddNew(itemToAdd);\r\n\t\tthis.hideUpdateDialog(true);\r\n\t}\r\n\r\n\tpublic async validate(): Promise {\r\n\t\tlet row = this.newEntry;\r\n\t\tfor (var item in row) {\r\n\t\t\tlet header = this.modalItems.find(modalItem => modalItem.key == item);\r\n\t\t\tif (header && header.hasOwnProperty(\"max\") && header.hasOwnProperty(\"dataType\") && header.dataType == \"number\") {\r\n\t\t\t\tif (Number(row[item]) > header.max) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (header && header.hasOwnProperty(\"min\") && header.hasOwnProperty(\"dataType\") && header.dataType == \"number\") {\r\n\t\t\t\tif (Number(row[item]) < header.min) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (header && header.dataType === \"component\" && header.componentHasValidation) {\r\n\t\t\t\tvar componentRef = this.$refs[header.key + \"-component\"];\r\n\t\t\t\tif (componentRef && componentRef[0]) {\r\n\t\t\t\t\tif (this.$refs[header.key + \"-component\"][0].validate) {\r\n\t\t\t\t\t\t//Only return if the component validation fails as we may still want to check the required flag\r\n\t\t\t\t\t\tvar result = await this.$refs[header.key + \"-component\"][0].validate();\r\n\t\t\t\t\t\tif (result === false) {\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow \"component does not have a validate function\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (header && header.required) {\r\n\t\t\t\tif (header.newOnly && header.newOnly == this.isAddingNew && !row[item]) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t} else if (!header.newOnly && !row[item]) {\r\n\t\t\t\t\t// Account for cases in which numerical falsy values are treated as invalid\r\n\t\t\t\t\tif (!(header.dataType == \"number\" && typeof row[item] === 'number')) {\r\n\t\t\t\t\t\treturn false;\r\n }\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ((header.dataType === \"component\" || header.dataType === \"vselect3\") && header.props && header.props.multiple && row[item].length === 0) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet isComponentWithRequiredFields = header.dataType === \"component\" && header.props && header.props.multiple && header.props.requiredFields;\r\n\t\t\t\tlet isAnArrayWithALeastOneItem = Array.isArray(row[item]) && row[item].length > 0;\r\n\t\t\t\tif (isComponentWithRequiredFields && isAnArrayWithALeastOneItem) {\r\n\t\t\t\t\treturn row[item].every(i => {\r\n\t\t\t\t\t\treturn header.props.requiredFields.every(f => {\r\n\t\t\t\t\t\t\treturn f.isSet(i[f.key]);\r\n\t\t\t\t\t\t});\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\treturn true;\r\n\t}\r\n\r\n\tprivate setupEntry() {\r\n\t\tif (this.index == -1 && this.isAddingNew) {\r\n\t\t\tfor (var i in this.modalItems) {\r\n\t\t\t\tVue.set(this.newEntry, this.modalItems[i].key, \"null\");\r\n\t\t\t\tconst modelItem = this.modalItems[i];\r\n\t\t\t\tthis.newEntry[modelItem.key] = modelItem.defaultValue || null;\r\n\t\t\t}\r\n\t\t\tthis.setModalRow({ ...this.newEntry });\r\n\t\t} else {\r\n\t\t\tfor (var j in this.modalItems) {\r\n\t\t\t\tVue.set(this.newEntry, this.modalItems[j].key, \"null\");\r\n\t\t\t}\r\n\t\t\tfor (var key in this.dataList[this.index]) {\r\n\t\t\t\tconst data = this.dataList[this.index][key];\r\n\r\n\t\t\t\tif (typeof data === \"object\") {\r\n\t\t\t\t\tif (Array.isArray(data)) {\r\n\t\t\t\t\t\t// Deep clone array contents\r\n\t\t\t\t\t\tconst dataCopy = [];\r\n\t\t\t\t\t\tdata.forEach(item => {\r\n\t\t\t\t\t\t\tif (typeof item === \"object\") {\r\n\t\t\t\t\t\t\t\tconst itemClone = (Vue as any).util.extend({}, item);\r\n\t\t\t\t\t\t\t\tdataCopy.push(itemClone);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tdataCopy.push(item);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.newEntry[key] = dataCopy;\r\n\t\t\t\t\t} else if (!data) {\r\n\t\t\t\t\t\tthis.newEntry[key] = data;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Deep clone object\r\n\t\t\t\t\t\tthis.newEntry[key] = (Vue as any).util.extend({}, data);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.newEntry[key] = data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.setModalRow({ ...this.newEntry });\r\n\t\t\tthis.hasChanged = false;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"newEntry\", { deep: true })\r\n\tpublic async entryChanged() {\r\n\t\t// ensure we have the latest component data.\r\n\t\tawait this.$forceUpdate();\r\n\r\n\t\t//only trigger if allowed\r\n\t\tthis.modalItemRefresh = !this.modalItemRefresh;\r\n\t\tthis.getModalItems;\r\n\t\tthis.isValid = await this.validate();\r\n\t\tthis.hasChanged = this.checkHasChanged();\r\n\t\tthis.setModalRow({ ...this.newEntry });\r\n\t}\r\n\r\n\t@Watch(\"isShown\")\r\n\tprivate clearEntry(): void {\r\n\t\tif (this.clearOnClose){\r\n\t\t\tif (!this.isShown) {\r\n\t\t\t\tthis.newEntry = {};\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getRow() {\r\n\t\treturn this.newEntry;\r\n\t}\r\n\r\n\tcreated() {\r\n\t\tfor (var i in this.modalItems) {\r\n\t\t\tVue.set(this.newEntry, this.modalItems[i].key, \"null\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate checkHasChanged() {\r\n\t\tif (this.index != -1) {\r\n\t\t\tfor (var key in this.dataList[this.index]) {\r\n\t\t\t\tlet valueA = this.newEntry[key];\r\n\t\t\t\tlet valueB = this.dataList[this.index][key];\r\n\t\t\t\tif (valueA != null && valueB != null) {\r\n\t\t\t\t\tif (typeof valueA === \"object\") {\r\n\t\t\t\t\t\tif (!isEqual(valueA, valueB)) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif (valueA.toString() != valueB.toString()) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (valueA != valueB) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate isEquivalent(a, b) {\r\n\t\t// Create arrays of property names\r\n\t\tvar aProps = Object.getOwnPropertyNames(a);\r\n\t\tvar bProps = Object.getOwnPropertyNames(b);\r\n\r\n\t\t// If number of properties is different,\r\n\t\t// objects are not equivalent\r\n\t\tif (aProps.length != bProps.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < aProps.length; i++) {\r\n\t\t\tvar propName = aProps[i];\r\n\r\n\t\t\t// If values of same property are not equal,\r\n\t\t\t// objects are not equivalent\r\n\t\t\tif (a[propName] !== b[propName]) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If we made it this far, objects\r\n\t\t// are considered equivalent\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate get getModalItems() {\r\n\t\tif(this.refreshAllowed)\r\n\t\t{\r\n\t\t\t//trigger the getModalItems to reset if enabled.\r\n\t\t\tvar triggerRefresh = this.modalItemRefresh; // Important: Assigning local variable in get causes re-render, preventing bugs.\r\n\t\t}\r\n\r\n\t\tlet items = [];\r\n\t\tif (this.isAddingNew) {\r\n\t\t\titems = this.modalItems.filter(item => item.updateOnly != true);\r\n\t\t} else {\r\n\t\t\titems = this.modalItems.filter(item => item.newOnly != true);\r\n\t\t}\r\n\t\titems.sort(function(a, b) {\r\n\t\t\treturn a.order - b.order;\r\n\t\t});\r\n\r\n\t\t// only show inputs that are marked as visible or with the value not set\r\n\t\titems.forEach(item => {\r\n\t\t\tif (typeof (item.visibleMethod) === \"function\") {\r\n\t\t\t\ttry {\r\n\t\t\t\t\titem.visible = item.visibleMethod(this.getRow());\r\n\t\t\t\t} catch (ex) {\r\n\t\t\t\t\tthrow \"visibleMethod Exception: \" + ex.message;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// only show inputs that are marked as visible or with the value not set\r\n\t\titems.filter(item => typeof (item.requiredMethod) === \"function\").forEach(item => {\r\n\t\t\ttry {\r\n\t\t\t\titem.required = item.requiredMethod(this.getRow());\r\n\t\t\t} catch (ex) {\r\n\t\t\t\tthrow \"requiredMethod Exception: \" + ex.message;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\titems = items.filter(item => item.visible || item.visible == undefined);\r\n\r\n\t\treturn items;\r\n\t}\r\n\r\n\tprivate getSelectedModalItem(item, id) {\r\n\t\tlet value = null;\r\n\t\tif (item && item.data && id) {\r\n\t\t\tvalue = item.data.find(i => {\r\n\t\t\t\treturn i[item.key] == id;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\tprivate checkPermissions(required, current) {\r\n\t\tif (required == null || this.isAddingNew) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// no permissions were passed in\r\n\t\tif (!current) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn required.some(r => Object.keys(current).includes(r));\r\n\t}\r\n\r\n\tprivate async componentItemChanged(newValue: any) {\r\n\t\tthis.isValid = await this.validate();\r\n\t\tthis.hasChanged = this.checkHasChanged();\r\n\t}\r\n\r\n\t@Watch(\"hasChanged\")\r\n\tprivate onHasChangedUpdated() {\r\n\t\tthis.setRowHasChanges(this.hasChanged);\r\n\t}\r\n\r\n\tprivate getValidationErrorForItem(field: string) {\r\n\r\n\t\t// the custom error message exists within vuelidates $params property\r\n\t\tvar fieldParams = this.$v.newEntry[field].$params;\r\n\t\tfor (var property in fieldParams) {\r\n\r\n\t\t\t// check for and retreive custom error message\r\n\t\t\tif (fieldParams[property] && fieldParams[property].hasOwnProperty(\"errorMessage\")) {\r\n\t\t\t\tif (!this.$v.newEntry[field][property]) {\r\n\t\t\t\t\treturn fieldParams[property].errorMessage;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// if we got here the field doesn't have any custom validations or custom errorMessages\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate clearNewEntryModelValues() {\r\n\t\t// get every attribute in the current newEntry model\r\n\t\tlet fields = this.$v.newEntry.$model;\r\n\r\n\t\t// null out all the fields to prevent previously edited values bleeding into the new item\r\n\t\tfor (let property in fields) {\r\n\t\t\t// if the value is one of our modal items - null it out\r\n\t\t\tif (this.propertyInModalItems(property)) {\r\n\t\t\t\tfields[property] = null;\r\n\t\t\t} else {\r\n\t\t\t\t// else just delete the attribute from the model object, it wont be used anyway\r\n\t\t\t\t// this situation only happens when adding a new item after editing an item\r\n\t\t\t\tdelete this.$v.newEntry.$model[property];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate propertyInModalItems(key: string) {\r\n\t\treturn this.modalItems.some((modalItem) => {\r\n\t\t\treturn modalItem.key == key;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate confirmSave(row) {\r\n\t\tthis.isSaveConfirmDialogShown = false;\r\n\t\tthis.onSave(row);\r\n\t\tthis.hideUpdateDialog(true);\r\n\t}\r\n\r\n\tprivate cancelSave() {\r\n\t\tthis.isSaveConfirmDialogShown = false;\r\n\t}\r\n\r\n\tprivate checkIsValid(value) {\r\n\t\tif (value?.isValid !== undefined) {\r\n\t\t\tthis.validationComponent = {\r\n\t\t\t\t...this.validationComponent,\r\n\t\t\t\t[value.name]: value?.isValid\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isValidCustomComponents() {\r\n\t\tconst values = Object.values(this.validationComponent);\r\n\r\n\t\tif (!values.length) return false;\r\n\r\n\t\treturn values.some(isValid => !isValid);\r\n\t}\r\n\r\n\tprivate componentChangeNewEntry({ key, value }) {\r\n\t\tthis.newEntry[key] = value;\r\n\t}\r\n\r\n\tprivate isReadOnly(item: ModalItem): boolean {\r\n\t\treturn (!this.checkPermissions(item.customPermissions, this.getRow().permissions)\r\n\t\t\t|| item.readOnly\r\n\t\t\t|| (!this.isAddingNew && item.readOnlyIfEdit)\r\n\t\t\t|| this.readOnly\r\n\t\t\t|| (item.readOnlyMethod && item.readOnlyMethod(item, this.getRow())));\r\n\t}\r\n\r\n\tprivate get isSaveConfirmButtonDisabled(): boolean {\r\n\t\tif (this.saveActionErrorsResult && this.saveActionErrorsResult.length > 0) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic updateNewEntry(entry: any, keys: string[]): void {\r\n\t\tfor (let i = 0; i < keys.length; i++) {\r\n\t\t\tVue.set(this.newEntry, keys[i], entry[keys[i]]);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onSearch(searchTerm: string, item: any): void{\r\n\t\tif (item.props && item.props.onSearch) {\r\n\t\t\titem.props.onSearch(searchTerm)\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./generic-update-modal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./generic-update-modal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./generic-update-modal.vue?vue&type=template&id=36c0fe25&scoped=true\"\nimport script from \"./generic-update-modal.vue?vue&type=script&lang=ts\"\nexport * from \"./generic-update-modal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./generic-update-modal.vue?vue&type=style&index=0&id=36c0fe25&prod&lang=scss&scoped=true\"\nimport style1 from \"./generic-update-modal.vue?vue&type=style&index=1&id=36c0fe25&prod&lang=scss\"\nimport style2 from \"./generic-update-modal.vue?vue&type=style&index=2&id=36c0fe25&prod&lang=scss\"\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 \"36c0fe25\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"static\":\"\",\"size\":\"lg\",\"centered\":\"\",\"content-class\":\"modal-xl-content\",\"dialog-class\":\"justify-content-center\",\"hide-footer\":\"\"},on:{\"hidden\":function($event){return _vm.handleModalHidden()}},model:{value:(_vm.isVisible),callback:function ($$v) {_vm.isVisible=$$v},expression:\"isVisible\"}},[_c('template',{slot:\"modal-header\"},[_c('h4',[_c('i',{staticClass:\"fas fa-eye p-2\"}),_vm._v(\" \"+_vm._s(_vm.title))]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\",\"data-cy\":\"close-button\"},on:{\"click\":function($event){_vm.isVisible = false}}},[_vm._v(\"×\")])]),_c('div',{staticClass:\"camera-control-container\"},[_c('camera-control',{ref:\"cameraControl\"})],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Ref, Vue, Emit, Prop } from \"vue-property-decorator\";\nimport { namespace } from \"vuex-class\";\n\nimport { CameraPreviewDeviceDetails } from \"@/store/devices/types\";\nimport { ResourceType, UpdateSessionParams } from \"@/store/sessions/types\";\nimport api from \"@/services/api.service\";\n\nconst Sessions = namespace(\"sessions\");\n\n@Component({})\nexport default class CameraPreview extends Vue {\n\t@Prop({ default: null, required: false }) previewDetails: CameraPreviewDeviceDetails;\n\n\t@Sessions.Action private updateSession: (params: UpdateSessionParams) => Promise;\n\t@Sessions.Getter private getSession: (resourceId: number) => any;\n\n\t@Ref() private cameraControl: any;\n\n\tprivate isVisible: boolean = true;\n\tprivate deviceServiceAddress: string = \"\";\n\tprivate deviceTitle: string = \"\";\n\n\t@Emit(\"hidden\")\n\tprivate handleModalHidden(): void {\n\t\tthis.cameraControl.stop();\n\t}\n\n\tprivate async created(): Promise {\n\t\tthis.deviceServiceAddress = api.getDeviceServiceAddress();\n\t}\n\n\tprivate async mounted(): Promise {\n\t\tawait this.updateSession({ resourceId: ResourceType.Proxy });\n\t\tthis.deviceTitle = this.previewDetails.title;\n\t\tthis.cameraControl.startCamera(this.previewDetails.deviceId);\n\t}\n\n\tprivate get title(): string {\n\t\treturn `Viewing camera \"${this.deviceTitle}\"`;\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraPreview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CameraPreview.vue?vue&type=template&id=2a7a5f0a&scoped=true\"\nimport script from \"./CameraPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./CameraPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CameraPreview.vue?vue&type=style&index=0&id=2a7a5f0a&prod&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 \"2a7a5f0a\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchSelect.vue?vue&type=style&index=0&id=510ea6fd&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraModal.vue?vue&type=style&index=0&id=7e38f4e5&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"eventCloseModal\",attrs:{\"id\":\"eventClose\",\"centered\":\"\",\"role\":\"dialog\",\"no-close-on-backdrop\":_vm.enforceModalButtonDismissal,\"no-close-on-esc\":_vm.enforceModalButtonDismissal},on:{\"hidden\":function($event){return _vm.setEventCloseShown(false)}}},[_c('template',{slot:\"modal-title\"},[_c('h4',[_vm._v(_vm._s(_vm.modalTitle))])]),_c('form',{attrs:{\"role\":\"form\"}},[(!_vm.singleEvent)?_c('div',{staticClass:\"alert alert-danger\"},[_vm._v(\" Warning: You are about to close multiple alarms. This action cannot be undone. \")]):_vm._e(),(_vm.useEventOutcomeTask)?_c('div',{staticClass:\"alert alert-primary\",attrs:{\"data-cy\":\"action-plan-alert\"}},[_vm._v(\" If you would like to change the outcome please revise in the action plan. \")]):_vm._e(),(_vm.otherUserCount > 0)?_c('div',{staticClass:\"alert alert-primary\"},[_vm._v(\" \"+_vm._s(_vm.otherUserCount)+\" other operators are currently in this event. Ending this will also end the event for them. \")]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.getIsUploadingFile && _vm.singleEvent),expression:\"getIsUploadingFile && singleEvent\"}],staticClass:\"alert alert-danger\"},[_vm._v(\"One or more files are still uploading. Are you sure you wish to leave?\")]),(_vm.eventCloseError != null)?_c('div',{staticClass:\"alert alert-danger\"},[_vm._v(_vm._s(_vm.eventCloseError))]):_vm._e(),(_vm.isInvalidCategoryWarning)?_c('div',{staticClass:\"alert alert-danger\",attrs:{\"id\":\"div-invalid-outcome-warning\"}},[_vm._v(\"Previously selected Outcome is no longer valid, please select a new outcome\")]):_vm._e(),_c('label',[_vm._v(\" Event Outcome: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('nested-select',{attrs:{\"optionTree\":_vm.outcomeTree,\"disabled\":_vm.useEventOutcomeTask,\"childrenPath\":\"childOutcomes\",\"data-cy\":\"eventclose-nestedselect-selectoutcome\"},model:{value:(_vm.outcomeSelectionPath),callback:function ($$v) {_vm.outcomeSelectionPath=$$v},expression:\"outcomeSelectionPath\"}}),(_vm.errors.form.outcomeChoice.isValid === false)?_c('p',{staticClass:\"text-danger\"},[_vm._v(_vm._s(_vm.errors.form.outcomeChoice.message)+\" \")]):_vm._e(),_c('div',{staticClass:\"form-group\"},[_c('textarea',_vm._g({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.outcomeNote),expression:\"outcomeNote\"}],staticClass:\"custom-textarea\",attrs:{\"id\":\"txt-event-close-outcome-note\",\"disabled\":_vm.useEventOutcomeTask,\"placeholder\":\"Notes\",\"max\":\"5000\"},domProps:{\"value\":(_vm.outcomeNote)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.outcomeNote=$event.target.value}}},(_vm.updateEventOutcome || !_vm.singleEvent) ? { input: _vm.validate } : {})),_c('p',{class:{ 'text-danger': _vm.outcomeNote.length > 5000 }},[_vm._v(_vm._s(_vm.outcomeNote.length)+\" | 5000\")])]),(_vm.errors.form.outcomeNote.isValid === false)?_c('p',{staticClass:\"text-danger\"},[_vm._v(_vm._s(_vm.errors.form.outcomeNote.message))]):_vm._e()],1),(_vm.errors.http.closeEvent !== null)?_c('p',{staticClass:\"text-danger\"},[_vm._v(_vm._s(_vm.errors.http.closeEvent))]):_vm._e(),(!_vm.isOutcomeNoteValid)?_c('p',{staticClass:\"text-danger\"},[_vm._v(\"*Note is required.\")]):_vm._e(),_c('template',{slot:\"modal-footer\"},[(_vm.isVirtualAssistSummaryEnabled)?_c('div',{staticClass:\"virtual-assist\",attrs:{\"id\":\"executiveSummaryWidget\"}}):_vm._e(),(_vm.isAutoFeedAlarmsEnabled)?_c('auto-feed-alarms'):_vm._e(),_c('b-button',{staticClass:\"btn btn-primary pull-right ksConfirm\",attrs:{\"id\":\"btn-event-close-outcome-ok\",\"variant\":\"primary\",\"disabled\":!_vm.isEventOutcomeValid,\"data-cy\":\"btn-ok-close\"},on:{\"click\":function($event){return _vm.onConfirmClicked($event)}}},[_c('transition',{ref:\"btn-event-close-outcome-ok-content\",attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(_vm.isClosingInProcess)?_c('i',{staticClass:\"fas fa-spinner fa-spin\"}):(_vm.isClosingSuccess)?_c('i',{staticClass:\"fas fa-check cl-success\"}):(_vm.isClosingFail)?_c('i',{staticClass:\"fas fa-times cl-fail\"}):_c('span',{staticClass:\"glyphicon glyphicon-remove\"},[_vm._v(_vm._s(this.confirmBtnText))])])],1),_c('b-button',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"id\":\"btn-event-close-outcome-cancel\",\"data-dismiss\":\"modal\"},on:{\"click\":_vm.cancelCloseEvent}},[_c('span',{staticClass:\"glyphicon glyphicon-remove\"}),_vm._v(\" Cancel \")])],1)],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Watch, Prop, Mixins } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Mutation, State } from \"vuex-class\";\r\nimport vSelect3 from \"vselect3\";\r\nimport { EventDetails } from '@/store/site-monitor/types';\r\nimport { EventOutcome, EventOutcomeResponse } from '@/types/EventOutcome';\r\nimport api from \"@/services/api.service\";\r\nimport apiKeyApi from \"@/services/api.apiKey.service\";\r\nimport settingsApi from \"@/services/api.settings.service\";\r\nimport CloseEventResultDTO from \"@/types/sv-data/events/CloseEventResultDTO\";\r\nimport CloseMultipleEventsDTO from \"@/types/sv-data/events/CloseMultipleEventsDTO\";\r\nimport ActionState from \"@/types/sv-data/events/ActionState\";\r\nimport { UserPermissions } from \"@/store/types\";\r\nimport NestedSelect from \"@/components/utilities/NestedSelect.vue\";\r\nimport AutoFeedAlarms from \"./event-queue/AutoFeedAlarms.vue\";\r\nimport { AlarmQueueFilterID } from \"@/store/eventqueue/types\";\r\nimport RegionalHandlerMixin from \"@/mixins/RegionalHandlerMixin\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst Tasks = namespace(\"tasks\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vSelect3,\r\n\t\t\"nested-select\": NestedSelect,\r\n\t\t\"auto-feed-alarms\": AutoFeedAlarms\r\n\t}\r\n})\r\nexport default class EventClose extends Mixins(RegionalHandlerMixin) {\r\n\t$refs!: {\r\n\t\teventCloseModal: any;\r\n\t};\r\n\r\n\t@State private autoFeedAlarms: boolean;\r\n\t@Eventqueue.Getter(\"getActiveFilterID\") currentFilterID!: AlarmQueueFilterID;\r\n\r\n\t@SiteMonitor.Getter getEventShare!: any[];\r\n\t@SiteMonitor.Getter(\"getEventCloseShown\") eventCloseShown!: boolean;\r\n\t@SiteMonitor.Getter getIsUploadingFile: boolean;\r\n\t@SiteMonitor.Getter getEventDetails: EventDetails;\r\n\t@SiteMonitor.Getter(\"eventOutcomesFlatList\") private outcomesFlatList: EventOutcome[];\r\n\r\n\t@SiteMonitor.Mutation setEventCloseShown: any;\r\n\t@SiteMonitor.Mutation setEventDetails: any;\r\n\t@SiteMonitor.Mutation resetEventRecords: () => void;\r\n\r\n\t@SiteMonitor.Action(\"loadOutcomesForEvent\") loadOutcomes: (eventId: number) => Promise;\r\n\t@SiteMonitor.Action loadAllOutcomesForAlarms: () => Promise;\r\n\t@SiteMonitor.Action(\"closeEvent\") closeEvent: (data: any) => Promise;\r\n\t@SiteMonitor.Action(\"closeMultipleEvents\") closeEvents: (data: CloseMultipleEventsDTO) => Promise;\r\n\t@SiteMonitor.Action private fetchEventDetails: (eventId: number) => Promise;\r\n\r\n\t@Getter getFeature: (featuresList: string[]) => boolean;\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\t@Tasks.Getter hasEventOutcomeTask: boolean;\r\n\r\n\t@Eventqueue.Getter(\"getSelectedAlarms\") selectedAlarms: number[];\r\n\t@Eventqueue.Getter(\"getClosingAction\") closingAction: ActionState;\r\n\t@Eventqueue.Mutation removeSelectedAlarm: (data: number) => void;\r\n\t@Eventqueue.Mutation setRefreshQueue: (refresh: boolean) => void;\r\n\t@Eventqueue.Mutation setClosingAction: (action: ActionState) => void;\r\n\r\n\t@Getter getUserTenantGroupId: number;\r\n\t@Getter getUserSuiteTenantId: string;\r\n\r\n\t@Mutation setReloadEventQueue: (boolean) => void;\r\n\r\n\t@Prop(Number) eventid?: number;\r\n\t@Prop({ default: true }) singleEvent: boolean;\r\n\r\n\t@Prop({ type: Boolean, required: false, default: false })\r\n\tprivate updateEventOutcome: boolean;\r\n\r\n\tpublic eventRecords: any[] = [];\r\n\tpublic errors: any = {\r\n\t\thttp: {\r\n\t\t\tgetOutcomes: null,\r\n\t\t\tcloseEvent: null\r\n\t\t},\r\n\t\tform: {\r\n\t\t\tisValid: null,\r\n\t\t\toutcomeChoice: {\r\n\t\t\t\tmessage: null,\r\n\t\t\t\tisValid: null\r\n\t\t\t},\r\n\t\t\toutcomeNote: {\r\n\t\t\t\tmessage: null,\r\n\t\t\t\tisValid: null\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tpublic lastRecord: number = 0;\r\n\r\n\t// tree of all possible outcomes, of unpredictable depth, as received by API\r\n\tpublic outcomeTree: any[] = [];\r\n\t// to allow for infinite depth in outcomes tree above, this array maintains currrent\r\n\t// breadcrumbs path of selections made by the user, and is used as a support datastructre\r\n\tpublic outcomeSelectionPath: EventOutcome[] = [];\r\n\t// is iterated by template to display\r\n\tpublic outcomeSelectionControls: any[] = [];\r\n\r\n\tpublic clearGuards: boolean = false;\r\n\tpublic outcomeNote: string = \"\";\r\n\tpublic eventCloseError: string | null = null;\r\n\r\n\tpublic get otherUserCount() {\r\n\t\tconst SharedUsers = this.getEventShare.filter((user: any) => user.isActive)\r\n\t\t\t.length;\r\n\t\treturn SharedUsers - 1;\r\n\t}\r\n\r\n\tpublic get currentSelectedOutcome() {\r\n\t\tconst lastOutcome = this.outcomeSelectionPath[\r\n\t\t\tthis.outcomeSelectionPath.length - 1\r\n\t\t];\r\n\t\tif (lastOutcome == null) return \"\";\r\n\r\n\t\treturn lastOutcome.title;\r\n\t}\r\n\r\n\tpublic get isInvalidCategoryWarning(): boolean {\r\n\t\treturn this.eventOutcome == null && this.updateEventOutcome;\r\n\t}\r\n\r\n\t/*\r\n\t* Getter to validate if the current event outcome note meets the required criteria.\r\n\t*/\r\n\tprivate get isOutcomeNoteValid(): boolean {\r\n\t\treturn !this.getEventDetails?.eventNoteRequired ||\r\n\t\t\t(this.getEventDetails?.eventNoteRequired && this.outcomeNote.length > 0) ||\r\n\t\t\t(!!this.updateEventOutcome && this.outcomeNote.length > 0);\r\n\t}\r\n\r\n\tprivate get eventOutcome(): EventOutcome | null {\r\n\t\treturn this.outcomeSelectionPath.length === 0\r\n\t\t\t? null\r\n\t\t\t: this.outcomeSelectionPath[this.outcomeSelectionPath.length - 1];\r\n\t}\r\n\r\n\tpublic created(): void {\r\n\t\tthis.setEventCloseShown(false);\r\n\t}\r\n\r\n\tpublic resetData(): void {\r\n\t\tthis.eventCloseError = null;\r\n\t\tthis.outcomeNote = \"\";\r\n\t\tthis.setClosingAction(ActionState.Undefined);\r\n\t}\r\n\r\n\t@Watch(\"eventCloseShown\")\r\n\tpublic async onEventCloseShownChanged(value: boolean, oldValue: boolean): Promise {\r\n\t\tif (value) {\r\n\t\t\t// Event Close modal load\r\n\t\t\tif (this.eventid) {\r\n\t\t\t\tawait this.fetchEventDetails(this.eventid);\r\n\t\t\t}\r\n\t\t\tawait this.loadOutcomesForEvent();\r\n\r\n\t\t\tthis.resetData();\r\n\r\n\t\t\tif (this.useEventOutcomeTask || this.getEventDetails?.eventOutcomeNote) {\r\n\t\t\t\tthis.outcomeNote = this.getEventDetails?.eventOutcomeNote ?? \"\";\r\n\t\t\t}\r\n\r\n\t\t\tthis.$refs.eventCloseModal.show();\r\n\r\n\t\t\t// Wait for the next tick - the modal should be visible then\r\n\t\t\tawait this.$nextTick();\r\n\r\n\t\t\tif (!this.updateEventOutcome) {\r\n\t\t\t\tconst outcomeSelect0 = (this.$refs[\"outcomeSelect0\"] as any)?.[0];\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\toutcomeSelect0?.$el.querySelector(\"input\").focus();\r\n\t\t\t\t}, 0.5 * this.$config.ANIMATION_DURATION);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t// Sets the outcome not when updateEventOutcome feature is enabled\r\n\t\t\t\tthis.outcomeNote = this.getEventDetails?.eventOutcomeNote ?? \"\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.isVirtualAssistSummaryEnabled)\r\n\t\t\t{\r\n\t\t\t\t// VO widget load\r\n\t\t\t\tconst aiDataApiKey = await apiKeyApi.getApiKey(\"VirtualOperator\");\r\n\t\t\t\tconst aiDataUrl = await settingsApi.getAiDataUrl();\r\n\t\t\t\tconst tenantId = this.getUserTenantGroupId;\r\n\r\n\t\t\t\twindow.executivesummarywidget.mount(\r\n\t\t\t\t\t\"#executiveSummaryWidget\",\r\n\t\t\t\t\taiDataApiKey,\r\n\t\t\t\t\ttenantId,\r\n\t\t\t\t\tthis.eventid,\r\n\t\t\t\t\taiDataUrl,\r\n\t\t\t\t\tthis.onSummaryGenerated);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.$refs.eventCloseModal.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate onSummaryGenerated(summary: string): void\r\n\t{\r\n\t\tthis.outcomeNote = summary;\r\n\t}\r\n\r\n\tpublic mounted(): void { }\r\n\r\n\tpublic async loadOutcomesForEvent(): Promise\r\n\t\t{\r\n\t\tlet response: EventOutcomeResponse = null;\r\n\t\tif (this.singleEvent) {\r\n\t\t\tresponse = await this.loadOutcomes(this.eventid);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tresponse = await this.loadAllOutcomesForAlarms();\r\n\t\t}\r\n\r\n\t\tthis.outcomeTree = response.eventOutcomeTree;\r\n\r\n\t\tif (this.updateEventOutcome || this.getEventDetails?.eventOutcomeID > 0) {\r\n\t\t\tthis.outcomeSelectionPath = [];\r\n\t\t\tthis.buildOutcomePath();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async onConfirmClicked(): Promise {\r\n\t\tif (!this.validate()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar triggerReload: boolean = false;\r\n\t\tif (this.errors.form.isValid) {\r\n\t\t\tthis.eventCloseError = null;\r\n\t\t\tlet closureResult: CloseEventResultDTO = null;\r\n\t\t\tthis.setClosingAction(ActionState.InProcess);\r\n\r\n\t\t\tif (this.updateEventOutcome) {\r\n\t\t\t\tawait api.updateClosedEventOutcome({\r\n\t\t\t\t\teventId: this.eventid,\r\n\t\t\t\t\teventOutcomeId: this.eventOutcome?.eventOutcomeID,\r\n\t\t\t\t\tnote: this.outcomeNote\r\n\t\t\t\t});\r\n\t\t\t\tthis.$emit(\"updatedEventOutcome\");\r\n\t\t\t\tthis.outcomeNote = \"\";\r\n\t\t\t\tthis.setEventCloseShown(false);\r\n\t\t\t} else if (this.singleEvent) {\r\n\t\t\t\tclosureResult = await this.closeSingleEvent();\r\n\r\n\t\t\t\tif (this.isReloadEventQueueEnabled && this.getEventDetails?.groupID && await api.getReloadEventQueuePref(this.getEventDetails?.groupID))\r\n\t\t\t\t{\r\n\t\t\t\t\ttriggerReload = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tclosureResult = await this.closeMultipleEvents();\r\n\t\t\t}\r\n\r\n\t\t\t// if this is a bulk close\r\n\t\t\t// set the flag in the state to trigger the event queue refresh\r\n\t\t\tif (!this.singleEvent) {\r\n\t\t\t\tthis.setRefreshQueue(true);\r\n\t\t\t}\r\n\r\n\t\t\tif (closureResult != null)\r\n\t\t\t{\r\n\t\t\t\tif (closureResult.success === true) {\r\n\t\t\t\t\tthis.setClosingAction(ActionState.Success);\r\n\r\n\t\t\t\t\tthis.setEventDetails(null);\r\n\t\t\t\t\tthis.resetEventRecords();\r\n\r\n\t\t\t\t\tthis.setEventCloseShown(false);\r\n\r\n\t\t\t\t\tif (this.singleEvent) {\r\n\t\t\t\t\t\tif (!this.isAutoFeedAlarmsEnabled || (this.isAutoFeedAlarmsEnabled && !this.autoFeedAlarms))\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.setReloadEventQueue(triggerReload);\r\n\t\t\t\t\t\t\tthis.$router.push({ path: \"/event-queue\" });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tthis.setPendingEventPickup({\r\n\t\t\t\t\t\t\t\thighestPriorityAlarm: true,\r\n\t\t\t\t\t\t\t\tpickupMethod: \"auto feed\",\r\n\t\t\t\t\t\t\t\tcurrentFilterID: this.currentFilterID.filterId,\r\n\t\t\t\t\t\t\t\tcheckInProcessing: false,\r\n\t\t\t\t\t\t\t\topenInNewWindow: false\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tawait this.processTopAlarm(this.currentFilterID, \"auto feed\", true)\r\n\t\t\t\t\t\t\tthis.$router.go(0);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.eventCloseError = closureResult.error;\r\n\r\n\t\t\t\t\tthis.setClosingAction(ActionState.Undefined);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async closeMultipleEvents(): Promise {\r\n\t\tconst payload: CloseMultipleEventsDTO = {\r\n\t\t\teventIds: this.selectedAlarms,\r\n\t\t\teventOutcomeId: this.eventOutcome!.eventOutcomeID,\r\n\t\t\toutcomeNote: this.outcomeNote\r\n\t\t};\r\n\r\n\t\treturn this.closeEvents(payload);\r\n\t}\r\n\r\n\tprivate async closeSingleEvent(): Promise {\r\n\t\tconst payload = {\r\n\t\t\teventId: this.eventid,\r\n\t\t\teventOutcomeId: this.eventOutcome!.eventOutcomeID,\r\n\t\t\toutcomeNote: this.outcomeNote,\r\n\t\t\tclearGuards: true,\r\n\t\t};\r\n\r\n\t\treturn this.closeEvent(payload);\r\n\t}\r\n\r\n\tpublic cancelCloseEvent(): void {\r\n\t\tthis.setEventCloseShown(false);\r\n\t}\r\n\r\n\t// @todo - ensure that in future we use a validation library (vuelidate), makes doing this stuff\r\n\t// a thousand times simpler!!\r\n\tprivate validate() {\r\n\t\tthis.errors.form.isValid = true;\r\n\r\n\t\tif (!this.eventOutcome)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// selected outcome is leaf node of possible outcomes tree\r\n\t\tif (this.eventOutcome.childOutcomes && this.eventOutcome.childOutcomes.length > 0) {\r\n\t\t\tthis.errors.form[\"outcomeChoice\"].message =\r\n\t\t\t\t\"Please select a specific outcome\";\r\n\t\t\tthis.errors.form[\"outcomeChoice\"].isValid = false;\r\n\t\t\tthis.errors.form.isValid = false;\r\n\t\t} else {\r\n\t\t\tthis.errors.form[\"outcomeChoice\"].message = null;\r\n\t\t\tthis.errors.form[\"outcomeChoice\"].isValid = null;\r\n\t\t}\r\n\r\n\t\t// outcome note less than 5000 symbols, optional\r\n\t\tif (this.outcomeNote.length > 5000) {\r\n\t\t\tthis.errors.form[\"outcomeNote\"].message =\r\n\t\t\t\t\"Note too long - max length of 5000 chars allowed\";\r\n\t\t\tthis.errors.form[\"outcomeNote\"].isValid = false;\r\n\t\t\tthis.errors.form.isValid = false;\r\n\t\t} else if ((this.updateEventOutcome || !this.singleEvent) && this.outcomeNote.length == 0) {\r\n\t\t\tthis.errors.form[\"outcomeNote\"].message =\r\n\t\t\t\t\"Note is required\";\r\n\t\t\tthis.errors.form[\"outcomeNote\"].isValid = false;\r\n\t\t\tthis.errors.form.isValid = false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.errors.form[\"outcomeNote\"].message = null;\r\n\t\t\tthis.errors.form[\"outcomeNote\"].isValid = null;\r\n\t\t}\r\n\r\n\t\treturn this.errors.form.isValid;\r\n\t}\r\n\r\n\tprivate isLeafNode(choice: EventOutcome) {\r\n\t\treturn choice.childOutcomes !== undefined &&\r\n\t\t\tchoice.childOutcomes.length === 0\r\n\t\t\t? true\r\n\t\t\t: false;\r\n\t}\r\n\r\n\tprivate getParent(nodeOutcome: any, findOutcome: any) {\r\n\t\tif (nodeOutcome.childOutcomes != null) {\r\n\t\t\tlet foundOutcome = null;\r\n\t\t\tnodeOutcome.childOutcomes.forEach((outcome: any) => {\r\n\t\t\t\tif (outcome.eventOutcomeID == findOutcome.eventOutcomeID) {\r\n\t\t\t\t\tfoundOutcome = nodeOutcome;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (foundOutcome != null) {\r\n\t\t\t\treturn foundOutcome;\r\n\t\t\t}\r\n\r\n\t\t\tnodeOutcome.childOutcomes.forEach((outcome: any) => {\r\n\t\t\t\tlet recurseOutcome = this.getParent(outcome, findOutcome);\r\n\t\t\t\tif (recurseOutcome != null) {\r\n\t\t\t\t\tfoundOutcome = recurseOutcome;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (foundOutcome != null) {\r\n\t\t\t\treturn foundOutcome;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate buildOutcomePath(): void {\r\n\t\tif (this.getEventDetails.eventOutcomeID) {\r\n\t\t\tvar IdToFind = this.getEventDetails.eventOutcomeID;\r\n\t\t\tfor (var outcome of this.outcomeTree)\r\n\t\t\t{\r\n\t\t\t\t// If we have the path setup\r\n\t\t\t\tif (this.checkOutcomeInPath(outcome, IdToFind)) {\r\n\t\t\t\t\tthis.outcomeSelectionPath = [outcome, ...this.outcomeSelectionPath];\r\n\t\t\t\t\t// Finish\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.outcomeSelectionPath = [];\r\n\t}\r\n\r\n\tprivate checkOutcomeInPath(outcome: any, idToFind: number): boolean {\r\n\t\tif (outcome.eventOutcomeID == idToFind) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!!outcome.childOutcomes && outcome.childOutcomes.length > 0) {\r\n\t\t\tfor (var child of outcome.childOutcomes)\r\n\t\t\t{\r\n\t\t\t\tif (this.checkOutcomeInPath(child, idToFind)) {\r\n\t\t\t\t\tthis.outcomeSelectionPath = [child, ...this.outcomeSelectionPath];\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate get useEventOutcomeTask(): boolean {\r\n\t\treturn !this.updateEventOutcome && this.getFeature([\"Actions\", \"EventOutcome\"]) && this.hasEventOutcomeTask;\r\n\t}\r\n\r\n\tprivate get modalTitle(): string {\r\n\t\tvar closeText = this.singleEvent ? \"Close\" : \"End Events\";\r\n\t\treturn this.updateEventOutcome ? \"Change Category\" : closeText;\r\n\t}\r\n\r\n\tprivate get confirmBtnText(): string {\r\n\t\treturn this.singleEvent ? \"OK\" : \"Confirm\";\r\n\t}\r\n\r\n\tprivate get isEventOutcomeValid(): boolean {\r\n\t\treturn this.validate() && this.isOutcomeNoteValid;\r\n\t}\r\n\r\n\tprivate get isClosingInProcess(): boolean {\r\n\t\treturn this.closingAction == ActionState.InProcess;\r\n\t}\r\n\r\n\tprivate get isClosingSuccess(): boolean {\r\n\t\treturn this.closingAction == ActionState.Success;\r\n\t}\r\n\r\n\tprivate get isClosingFail(): boolean {\r\n\t\treturn this.closingAction == ActionState.Fail;\r\n\t}\r\n\r\n\tprivate get isVirtualAssistSummaryEnabled(): boolean {\r\n\t\treturn this.getFeature([\"AI\", \"VirtualAssist\"]) && this.getPermissions.canUseVirtualAssistSummary && this.singleEvent;\r\n\t}\r\n\r\n\tprivate get enforceModalButtonDismissal(): boolean {\r\n\t\treturn this.getFeature([\"TenantSettings\", \"EnforceDismissingModalByButtons\"]);\r\n\t}\r\n\r\n\tprivate get isReloadEventQueueEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Temp_EventReload\"]);\r\n\t}\r\n\r\n\tprivate get isAutoFeedAlarmsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Alarms\", \"EventQueue\", \"AutoFeedNextAlarm\"]);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventClose.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventClose.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventClose.vue?vue&type=template&id=a4f3d6ca&scoped=true\"\nimport script from \"./EventClose.vue?vue&type=script&lang=ts\"\nexport * from \"./EventClose.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventClose.vue?vue&type=style&index=0&id=a4f3d6ca&prod&scoped=true&lang=scss\"\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 \"a4f3d6ca\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RaiseSelect.vue?vue&type=style&index=0&id=3a6acbce&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotes.vue?vue&type=style&index=0&id=3821878a&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesTable.vue?vue&type=style&index=0&id=7886192a&prod&lang=scss&scoped=true\"","// API definition is available at https://dev.sureviewops.com/api/swagger/index.html\r\n\r\nimport {\r\n\taxiosInstance,\r\n\taxiosJsonInstance,\r\n\taxiosJsonDirectInstance,\r\n\taxiosNoContentTypeInstance\r\n} from \"@/axios.instance\";\r\nimport { AxiosRequestConfig, CancelToken, AxiosResponse } from \"axios\";\r\nimport { AlarmQueueFilter, AlarmQueueFilterID } from \"@/store/eventqueue/types\";\r\nimport axios from \"axios\";\r\nimport {\r\n\tEventRecordDetails,\r\n\tApplianceServerDetails,\r\n\tDeviceServerDetails,\r\n\tAddInvolvedPartyRequest,\r\n\tRemoveInvolvedPartyRequest,\r\n\tInvolvedParty\r\n} from \"@/store/site-monitor/types\";\r\nimport { ExternalMapLayer } from \"@/store/external-map-layers/types\";\r\nimport { Group, ServerTypeEvent, Tag } from \"@/types\";\r\nimport { CaseData } from \"@/store/case-management/types\";\r\nimport { AreaNode, GroupAdvancedSearchQuery } from \"@/types/sv-data/groups/AreaNode\";\r\nimport { AssetAuditHistory, AssetStatusInfo, AuditRequest, AssetMapLayerItem } from \"@/components/mobile-assets/types\";\r\nimport { apiFormattingMixins } from \"@/mixins\";\r\nconst { arrayToQueryString } = apiFormattingMixins.methods\r\nimport UsersPagedResponse from \"@/types/sv-data/users/UsersPagedResponse\";\r\nimport UserDTO from \"@/types/sv-data/users/UserDTO\";\r\nimport GroupRowPagedResponse from \"@/types/sv-data/groups/GrowRowPagedResponse\";\r\nimport Script from \"@/types/sv-data/events/Script\";\r\nimport { ContactRole, UserContactDetails, UserGroup, UserRole } from \"@/store/user-management/types\";\r\nimport ResponseAlarmType from \"@/types/sv-data/events/ResponseAlarmType\";\r\nimport EventCategory from \"@/types/sv-data/events/EventCategory\";\r\nimport { DeviceDetails, ServerDetails, ServerType, ServerLineProfile, ServersWithEnabledDeviceTypesParams, SyncSystem, DeviceConfigurationPresetPayload, DeviceConfigurationPreset } from \"@/store/devices/types\";\r\nimport PersonalInfo from \"@/types/sv-data/users/PersonalInfo\";\r\nimport { AppOptions, LoginRequest, LoginResult, UserInfo, ValidatePinCodeRequest } from \"@/store/types\";\r\nimport { MobileEventShareInfo } from \"@/store/mobile/types\";\r\nimport { ScriptCategoryLink, CategoryReorderRequest } from \"@/store/tasks/types\";\r\nimport ShareAsset from \"@/types/sv-data/ShareAsset\";\r\nimport AssetType from \"@/types/sv-data/AssetType\";\r\nimport EventUser from \"@/types/sv-data/events/EventUser\";\r\nimport MapAreaRegion from \"@/types/sv-data/maps/MapAreaRegion\";\r\nimport MapAreaRegionDetails from \"@/types/sv-data/maps/MapAreaRegionDetails\";\r\nimport Asset from \"@/types/sv-data/Asset\";\r\nimport AssetsWithPagination from \"@/types/sv-data/AssetsWithPagination\";\r\nimport AssetTypesWithPagination from \"@/types/sv-data/AssetTypesWithPagination\";\r\nimport AlarmDecoder, { AlarmDecoderExtended } from \"@/types/sv-data/alarms/AlarmDecoder\";\r\nimport IdValue from \"@/types/sv-data/IdValue\";\r\nimport SamlSettings from \"@/types/sv-data/SamlSettings\";\r\nimport {\r\n\tMapBounds,\r\n\tMapData,\r\n\tMapLayerItemType,\r\n\tMapLayer,\r\n\tMapLayerItem\r\n} from \"@/store/map-layers/types\";\r\nimport ShortContact from \"@/types/sv-data/users/ShortContact\";\r\nimport EmailNotificationRequest from \"@/types/sv-data/events/EmailNotificationRequest\";\r\nimport { HousekeepingSettings, OrganizationSettings } from \"@/types/sv-data/OrganizationSettings\";\r\nimport { Response } from \"@/store/responses/types\";\r\nimport { AudioDevice } from \"@/types/audio/audio\";\r\nimport ResponsesPagedResponse from \"@/types/sv-data/responses/ResponsesPagedResponse\";\r\nimport ResponseDtoPagedResponse from \"@/types/sv-data/responses/ResponseDtoPagedResponse\";\r\nimport ServerDetailsPagedResponse from \"@/types/sv-data/devices/ServerDetailsPagedResponse\";\r\nimport { ILatLng } from \"@sureview/v2-mapping-saas\";\r\nimport { PaginatedSearchRequest } from \"@/mixins/PaginatedSearch\";\r\nimport ContactsPagedResponse from \"@/types/sv-data/users/ContactsPagedResponse\";\r\nimport AlarmDecoderPagedResponse from \"@/types/sv-data/alarms/AlarmDecoderPagedResponse\";\r\nimport { GetChildGroupsListRequest } from \"@/types/sv-data/groups/GetChildGroupsListRequest\";\r\nimport ServerTypeEventsPagedResponse from \"@/types/sv-data/events/ServerTypeEventPagedResponse\";\r\nimport { ServerTypeEventsPagedQueryParams } from \"@/types/sv-data/events/ServerTypeEventsRequest\";\r\nimport Vue from \"vue\";\r\nimport { AreaMaskingCount, FlatAreaList, FlatAreaListRequest } from \"@/store/areas/types\";\r\nimport { ManualRaiseResult } from \"@/store/manual-raise/types\";\r\nimport { GroupSyncAudit, GroupSyncModel, GroupSyncQueue, SyncStateResponse } from \"@/types/sv-data/devices/SyncSystem\";\r\nimport Matrix from \"@/types/sv-data/media-matrix/Matrix\";\r\nimport { ResponseAction, ResponseActionType } from \"@/store/response-actions/types\";\r\nimport { SetupSummaryResponse } from \"@/types/sv-data/system-view/SetupSummary\";\r\nimport HealthCheckRequest from \"@/types/system-health/HealthCheckRequest\";\r\nimport SystemViewTreeNode from \"@/types/sv-data/system-view/SystemViewTreeNode\";\r\nimport SystemViewRequestTreeParams from \"@/types/sv-data/system-view/SystemViewRequestTreeParams\";\r\nimport ObjectTypeId from \"@/types/sv-data/enums/ObjectTypeIds\";\r\nimport { HealthHistoryResponse } from \"@/types/sv-data/system-view/HealthHistory\";\r\nimport SystemViewHealthStatusCount from \"@/types/sv-data/system-view/SystemViewHealthStatusCount\";\r\nimport { ServerTypeOption } from \"@/types/sv-data/events/ServerTypeOption\";\r\nimport {\r\n\tSituationalAwarenessEventQueue,\r\n\tSituationalAwarenessEventQueueActionRequest,\r\n\tSituationalAwarenessEventQueueActionResult,\r\n} from \"@/store/situational-awareness/types\";\r\nimport { RulesWithPagination, RuleServer, RuleActionPlan, RuleServerTypeEvent, RuleServerType, RuleAlarm, Rule } from \"@/store/rules-engine/types\";\r\nimport { EventOutcomeResponse } from \"@/types/EventOutcome\";\r\nimport {\r\n\tDistanceConfiguration,\r\n\tDistanceConfigurationAlarmDecoder,\r\n\tDistanceConfigurationPagedResponse\r\n} from \"@/store/distance-configuration/types\";\r\nimport UpdateEventOutcomeRequest from \"@/types/sv-data/requests/UpdateEventOutcome\";\r\nimport CloseMultipleEventsDTO from \"@/types/sv-data/events/CloseMultipleEventsDTO\";\r\nimport CloseEventResultDTO from \"@/types/sv-data/events/CloseEventResultDTO\";\r\nimport SyncSystemsPagedResponse from \"@/types/sv-data/devices/SyncSystemsPagedResponse\";\r\nimport { AreaEventHistoryPaginatedSearchParams, AreaEventHistoryWithPagination } from \"@/types/sv-data/AreaEventHistory\";\r\nimport { ServerTypeEventFilterOption, ServerTypeFilterOption } from \"@/store/reports/types\";\r\nimport ContactGroupsPagedResponse from \"@/types/sv-data/contact-groups/ContactGroupsPagedResponse\";\r\nimport { AreaSearchAdditionalFieldsSettingResponse } from \"@/types/area-tree-select/AreaSearchAdditionalFieldsSettingResponse\";\r\n\r\ninterface ScreenshotInfo {\r\n\tDeviceID: number;\r\n\tImage: string;\r\n}\r\ninterface InterDataServiceLoginTokenContainer {\r\n\tKey: string;\r\n\tRegionalUserID: number;\r\n}\r\ninterface UserLoginData {\r\n\tsessionID: string;\r\n\taccessCode: string;\r\n}\r\n\r\nexport interface CompleteTaskPayload {\r\n\tEventID: number;\r\n\tEventTaskID: string;\r\n\tTaskComplete: boolean;\r\n\tResult?: string;\r\n\ttaskData?: any;\r\n}\r\n\r\n// @contributing\r\n// awoid naming methods prefixed `get`, e.g. no getEvents,\r\n// using `load` hints at presence of an async operation\r\n\r\nclass ImmixCloudV2ApiHttp {\r\n\tpublic static readonly apiRoot = \"\";\r\n\t// true for formdata payloads, false for application/json, applies to POST and PUT\r\n\tprivate readonly STRINGIFY_PAYLOADS: boolean = true;\r\n\r\n\tprivate axios: any;\r\n\tprivate axiosJson: any;\r\n\tprivate axiosPost: any;\r\n\tprivate axiosJsonDirectInstance: any;\r\n\tprivate axiosNoContentTypeInstance: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.axios = axiosInstance;\r\n\t\tthis.axiosJson = axiosJsonInstance;\r\n\r\n\t\t// Used to skip the interceptor if we want to handle our exceptions\r\n\t\t// within our eco-system.\r\n\t\tthis.axiosJsonDirectInstance = axiosJsonDirectInstance;\r\n\t\tthis.axiosNoContentTypeInstance = axiosNoContentTypeInstance;\r\n\t}\r\n\r\n\tpublic async getAppOptions(): Promise\r\n\t{\r\n\t\tconst manifestRequest = axios.create({\r\n\t\t\theaders: {\r\n\t\t\t\tAccept: \"application/json, text/javascript, */*; q=0.01\",\r\n\t\t\t\t\"Content-Type\": \"application/json\"\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tconst { data } = await manifestRequest.get(\"./manifest.json\");\r\n\t\t\treturn data;\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic get getOriginalApiUrl() {\r\n\t\treturn axiosInstance.prototype._originalBaseUrl;\r\n\t}\r\n\r\n\tpublic setBaseApiUrl(apiUrl: string) {\r\n\t\tthis.axios.prototype.setApiBaseUrl(apiUrl);\r\n\t}\r\n\r\n\tpublic startHeartbeat() {\r\n\t\tthis.axios.prototype.startHeartbeatToOriginalServer();\r\n\t}\r\n\r\n\tpublic stopHeartbeat() {\r\n\t\tthis.axios.prototype.stopHeartbeatToOriginalServer();\r\n\t}\r\n\r\n\tpublic async saveCameraScreenshot(data: ScreenshotInfo) {\r\n\t\tthis.axios.post(\"/Devices/SaveCameraSnapshot\", data);\r\n\t}\r\n\r\n\tpublic async login(credentials: LoginRequest): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/login\", credentials);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async logout(): Promise {\r\n\t\tconst response = await this.axios.get(\"/Login/Logout\");\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async singleEventLogin(credentials: UserLoginData): Promise {\r\n\t\tconst response = await this.axios.post(\"/login/SingleEvent\", credentials);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async loginToRegion(token: InterDataServiceLoginTokenContainer): Promise {\r\n\t\tconst response = await this.axios.post(\"/login/InterDataServiceLogin\", token);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async getInterDataServiceLoginToken(regionId: number): Promise {\r\n\t\treturn (await this.axios.get(`/Login/GenerateInterDataServiceLoginToken/${regionId}`)).data;\r\n\t}\r\n\r\n\tpublic async getLoginSession(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/login/session\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getMapDataInBounds(mapViewport: MapBounds, cancelToken: CancelToken = null): Promise {\r\n\t\treturn (await this.axios.post(\"/MapLayers\", mapViewport, { cancelToken: cancelToken })).data;\r\n\t}\r\n\r\n\tpublic async getDefaultMapBounds(): Promise {\r\n\t\treturn (await this.axios.get(\"/MapLayers/Bounds\")).data;\r\n\t}\r\n\r\n\tpublic async getBoundsForArea(areaId: number): Promise {\r\n\t\treturn (await this.axios.get(`/MapLayers/Bounds/${areaId}`)).data;\r\n\t}\r\n\r\n\tpublic async searchAssets(mapQuery: any): Promise {\r\n\t\tconst response = await this.axios.get(\"/MapLayers/SearchAssets\", {\r\n\t\t\tparams: mapQuery\r\n\t\t});\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getMapLayerAssets(noUserAsset: boolean = false): Promise {\r\n\t\tconst response = await this.axios.get(`/MapLayers/Assets/${noUserAsset}`)\r\n\t\treturn response.data\r\n\t}\r\n\r\n\tpublic async updateAssetMapLayerItem(mapLayerItem: AssetMapLayerItem): Promise{\r\n\t\tawait this.axiosJson.put(\"/MapLayers/MapItems\", mapLayerItem);\r\n\t}\r\n\r\n\tpublic async getMapLayer(mapLayerId: number): Promise {\r\n\t\treturn (await this.axios.get(`/MapLayers/Image/${mapLayerId}`)).data;\r\n\t}\r\n\r\n\tpublic async getAssetMapItemForUser(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/MapLayers/UserAssetMapItem/`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async putMapLayerItem(mapLayerItem: MapLayerItem) {\r\n\t\treturn await this.axiosJsonDirectInstance.put(\"/MapLayers/MapItems\", mapLayerItem);\r\n\t}\r\n\r\n\tpublic async deleteMapLayer(mapLayerId: number): Promise {\r\n\t\treturn await this.axiosJson.delete(`/MapLayers/${mapLayerId}`);\r\n\t}\r\n\r\n\tpublic async updateAreaLatLong(groupId: number, latLong: ILatLng): Promise {\r\n\t\tawait this.axiosJsonDirectInstance.post(`/groups/UpdateLatLong/${groupId}`, latLong);\r\n\t}\r\n\r\n\tpublic async putMapLayer(mapLayer: FormData) {\r\n\t\treturn (await this.axiosNoContentTypeInstance.put(\"/MapLayers\", mapLayer, {\r\n\t\t\theaders: {\r\n\t\t\t\t\"Content-Type\": \"multipart/form-data\"\r\n\t\t\t}\r\n\t\t})).data;\r\n\t}\r\n\r\n\tpublic async deleteMapLayerItem(mapLayerItemId: number): Promise {\r\n\t\treturn await this.axiosJsonDirectInstance.delete(`/MapLayers/MapItems/${mapLayerItemId}`);\r\n\t}\r\n\r\n\tpublic async getAssetTypeByID(assetTypeId: number): Promise {\r\n\t\tconst { data } = await this.axiosJson.get(`/Assets/AssetTypes/${assetTypeId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAssetTypes(paginatedSearchRequest: PaginatedSearchRequest): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Assets/AssetTypes`, paginatedSearchRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async searchAssetTypes(query: string, pageNumber: number, pageSize: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Assets/AssetTypes/Search?query=${query}&pageNumber=${pageNumber}&pageSize=${pageSize}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getCachedAssetTypes(): Promise {\r\n\t\tconst { data } = await this.axiosJson.get(\"/Assets/AssetTypes/Cache\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdateAssetType(assetType: AssetType): Promise {\r\n\t\tconst { data } = await this.axios.put(\"/Assets/AssetType\", assetType);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteAssetType(assetTypeId: number): Promise {\r\n\t\tconst { data } = await this.axiosJson.delete(`/Assets/AssetType/${assetTypeId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getPagedStandaloneAssets(paginatedSearchRequest: PaginatedSearchRequest): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Assets/AssetOnly`, paginatedSearchRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdateAsset(asset: Asset): Promise {\r\n\t\tconst { data } = await this.axios.put(\"/Assets\", asset);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async disableAsset(assetId: number): Promise {\r\n\t\tawait this.axios.post(`/Assets/Disable/${assetId}`);\r\n\t}\r\n\r\n\tpublic async setAssetStatus(assetStatus: AssetStatusInfo): Promise{\r\n\t\tawait this.axios.post(\"/Assets/SetStatusInfo\", assetStatus);\r\n\t}\r\n\r\n\tpublic async setMultiMapLayerAssetStatuses(status: string, note:string, assetIds: number[]): Promise{\r\n\t\tconst assetsUpdate = {\r\n\t\t\tstatus: status,\r\n\t\t\tstatusNote: note,\r\n\t\t\tassetIds: assetIds\r\n\t\t}\r\n\t\tawait this.axiosJson.post(\"/Assets/SetStatusInfo/Multiple\", assetsUpdate);\r\n\t}\r\n\r\n\tpublic async getAssetAuditHistory(auditRequest: AuditRequest): Promise{\r\n\t\tconst response = await this.axios.get(`/Assets/AuditHistory`,{\r\n\t\t\tparams:{\r\n\t\t\t\tassetId : auditRequest.assetId,\r\n\t\t\t\tbeforeEventRecordId : auditRequest.beforeEventRecordId,\r\n\t\t\t\tmaxRows : auditRequest.maxRows,\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getAssetsStatusHistory(maxRows: number, beforeEventRecordId: number): Promise{\r\n\t\tconst response = await this.axios.get(`/Assets/StatusHistory`,{\r\n\t\t\tparams:{\r\n\t\t\t\tbeforeEventRecordId,\r\n\t\t\t\tmaxRows\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getRecentStatuses(mapLayerItemId: number): Promise{\r\n\t\tconst response = await this.axios.get(`/Assets/RecentStatuses/${mapLayerItemId}`)\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getRecentStatusesMultiAssets(assetIds: number[]): Promise{\r\n\t\tconst response = await this.axios\r\n\t\t\t.get(`/Assets/RecentStatuses?${arrayToQueryString(\"assetIds\", assetIds)}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getShareableAssets(): Promise{\r\n\t\tconst response = await this.axios.get(`/EventShare/ShareableAssets/`)\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getMapLayerAssetStatus(statusId: any): Promise{\r\n\t\tconst response = await this.axios.get(`/MapLayers/Assets/${statusId}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async closeEvent(outcome: any): Promise {\r\n\t\tconst response = await this.axios.post(\"/Event/Close\", outcome);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async closeMultipleEvents(data: CloseMultipleEventsDTO): Promise {\r\n\t\tconst response = await this.axios.post(\"/Event/CloseMultiple\", data);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async flagEventForReview(eventId: number, flagged: boolean): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/Event/Flag\", {\r\n\t\t\teventId,\r\n\t\t\tflagged\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async preserveEvent(eventId: number, preserved: boolean): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/Event/Preserve\", {\r\n\t\t\teventId,\r\n\t\t\tpreserved\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async groupsForFilter(filterId: any): Promise {\r\n\t\treturn (\r\n\t\t\tawait this.axios.get(\"/AlarmQueueFilters/GroupsForFilter\", {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tAlarmQueueFilterID: filterId\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t).data;\r\n\t}\r\n\tpublic async loadAlarmQueueFiltersForGuards(): Promise{\r\n\t\tconst { data } =\r\n\t\t\tawait this.axios.get(\"/DispatchSetup/AlarmFilters\");\r\n\t\tvar mappedFilters = data.map(item =>\r\n\t\t\t{\r\n\t\t\t\tconst container = { title:\"\",alarmQueueFilterID:null };\r\n\t\t\t\tcontainer.title = item.title;\r\n\t\t\t\tcontainer.alarmQueueFilterID = item.alarmQueueFilterID;\r\n\r\n\t\t\t\treturn container;\r\n\t\t\t})\r\n\t\treturn mappedFilters;\r\n\t}\r\n\tpublic async loadEventQueueFiltered(filters: any): Promise {\r\n\t\tconst response = await this.axios.post(\"/eventqueue\", filters);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async eventHandleTop(filter: AlarmQueueFilterID): Promise {\r\n\t\tconst regionId = filter.regionId > 0 ? filter.regionId : null;\r\n\t\tconst { data } = await this.axios.get(`/EventQueue/HandleTop/${filter.filterId}`, {\r\n\t\t\tparams: { regionId }\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async postAudit(data: any): Promise {\r\n\t\tconst response = await this.axios.post(\"/EventRecords\", data);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async auditReviewAction(data: any) {\r\n\t\tconst response = await this.axios.post(\"/EventRecords/AuditReview\", data);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async forceRestore({ eventRecordID, restoralReason }): Promise {\r\n\t\treturn await this.axios.post(\"/EventRecords/ForceRestore\", {\r\n\t\t\tId: eventRecordID,\r\n\t\t\tReason: restoralReason\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async forceRestoreAllAlarms(eventId: number, reason: string ): Promise {\r\n\t\treturn await this.axios.post(\"/EventRecords/ForceRestoreAllAlarms\", {\r\n\t\t\tId: eventId,\r\n\t\t\tReason: reason\r\n\t\t});\r\n\t}\r\n\r\n\tpublic devicesByGroup(groupID: number, params: any): Promise {\r\n\t\treturn axiosInstance.get(\"/devices/byGroup/\" + groupID, {\r\n\t\t\tparams\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async allDevicesByGroup(groupID: number, params: any) {\r\n\t\tparams.page = 1;\r\n\t\tvar loadMore = true;\r\n\t\tvar allDevices = [];\r\n\r\n\t\twhile (loadMore) {\r\n\t\t\tvar sample = await axiosInstance.get(\"/devices/byGroup/\" + groupID, {\r\n\t\t\t\tparams\r\n\t\t\t});\r\n\r\n\t\t\tsample.data.devices.forEach(record => {\r\n\t\t\t\tallDevices.push(record);\r\n\t\t\t});\r\n\r\n\t\t\tif (sample.data.devices.length < 100) {\r\n\t\t\t\tloadMore = false;\r\n\t\t\t}\r\n\r\n\t\t\tparams.page = params.page + 1;\r\n\t\t}\r\n\r\n\t\treturn allDevices;\r\n\t}\r\n\r\n\tpublic async devicesSearchNear(params: any) {\r\n\t\treturn await axiosInstance.get(\"/Devices/SearchNear\", {\r\n\t\t\tparams\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async deviceAction(deviceID: number, payload: any): Promise {\r\n\t\tconst { data } = await axiosInstance.post(\"/devices/\" + deviceID, payload);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async isUrlReachable(baseUrl: string, route: string): Promise {\r\n\t\ttry {\r\n\t\t\tvar externalAxios = axios.create({\r\n\t\t\t\tbaseURL: baseUrl,\r\n\t\t\t\twithCredentials: true,\r\n\t\t\t\theaders: {\r\n\t\t\t\t\tAccept: \"application/json, text/javascript, */*; q=0.01\",\r\n\t\t\t\t\t\"Content-Type\": \"application/json\",\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar response = await externalAxios.get(route);\r\n\t\t\tif (response && response.status === 200){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t} catch (ex) {\r\n\t\t\tconsole.error(\"isUrlReachable Exception: \", ex)\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tpublic async loadDeviceById(deviceId: number, params: any): Promise {\r\n\t\t// Avoid axios interceptor to we can handle when devices arent found\r\n\t\tvar response = await this.axiosJsonDirectInstance.get(`/devices/${deviceId}`, {\r\n\t\t\tparams\r\n\t\t});\r\n\r\n\t\tif (!response) {\r\n\t\t\tthrow(\"No Response received\")\r\n\t\t}\r\n\r\n\t\tif (response.status != 200) {\r\n\t\t\tthrow (response)\r\n\t\t}\r\n\r\n\t\tvar { data } = response;\r\n\r\n\t\tif(!data.deviceServerEndpoint){\r\n\t\t\tdata.deviceServerEndpoint = api.getDeviceServiceAddress();\r\n\t\t}\r\n\r\n\t\tif(!data.auditServiceEndpoint){\r\n\t\t\tdata.auditServiceEndpoint = api.getAuditServiceAddress();\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getDevices(serverId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/devices/GetByServerId?serverId=${serverId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deviceQuickControl(deviceID: number, Reason: string): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/devices/QuickControl\", {\r\n\t\t\tdeviceID,\r\n\t\t\tReason\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deviceSearch(deviceTypeId: number, query: string, cancelToken: any): Promise {\r\n\t\treturn this.axios.get(`/devices/search/${deviceTypeId}`, {\r\n\t\t\tparams: {\r\n\t\t\t\tsearch: query\r\n\t\t\t},\r\n\t\t\tcancelToken\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async deviceSearchNear(params): Promise {\r\n\t\treturn this.axios.get(\"/Devices/SearchNear\", {\r\n\t\t\tparams\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async getDevicesByIds(deviceIds: number[]): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(`/Devices/GetDeviceInfoFromIds`, deviceIds);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async unlinkCamera({ objectId, deviceId }): Promise {\r\n\t\treturn await this.axios.get(`/Responses/Unlink/${objectId}/${deviceId}`);\r\n\t}\r\n\r\n\tpublic async createResponseActionForEventRecord({ eventRecordId, title, priority, groupId }): Promise {\r\n\t\treturn await this.axios.post(`/Responses/Link/${eventRecordId}/${title}/${priority}/${groupId}`);\r\n\t}\r\n\r\n\tpublic async EventPark(payload): Promise {\r\n\t\treturn this.axios.post(\"/Event/Park\", payload);\r\n\t}\r\n\r\n\tpublic async raiseManualAlarm(payload): Promise {\r\n\t\treturn (await this.axiosJson.post(\"/Event\", payload)).data;\r\n\t}\r\n\r\n\tpublic async raiseAndJoinManualAlarm(payload, templateId): Promise {\r\n\t\treturn (await this.axiosJson.post(\"/Event/ManualRaiseAndJoin\", { ... payload, templateID: templateId })).data;\r\n\t}\r\n\r\n\tpublic async eventControl(eventObject): Promise {\r\n\t\t// eventObject is the payload.\r\n\t\t// Post using axiosJsonInstance, with path/route and payload.\r\n\t\treturn await this.axiosJson.post(\"/Event/Patrol\", eventObject);\r\n\t\t// ^^ return data.\r\n\t}\r\n\r\n\tpublic async tourNotesRequired(): Promise {\r\n\t\t// Calls Backend to see if the notes are required or not.\r\n\t\treturn await this.axios.get(`/Event/Patrol/NoteRequired`);\r\n\t}\r\n\r\n\tpublic async disableAutomaticLoad(): Promise {\r\n\t\treturn await this.axios.get(`/Event/AlarmPoint/DisableAutomaticLoad`);\r\n\t}\r\n\r\n\tpublic async EventPassControl(eventid: number | string, userId: number): Promise {\r\n\t\treturn this.axios.get(\"/EventShare/PassControl/\" + eventid, {\r\n\t\t\tparams: {\r\n\t\t\t\tuserId\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async leaveEvent(EventID: number): Promise {\r\n\t\treturn await this.axios.post(`/EventShare/LeaveEvent?eventId=${EventID}`);\r\n\t}\r\n\r\n\tpublic async changeEventRoutingGroup(data: any): Promise {\r\n\t\tconst response = await this.axios.post(\"/RoutingGroups/Raise\", data);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async loadEventHandle(EventID: number): Promise {\r\n\t\tconst response = await this.axios.get(\"EventQueue/Handle\", { EventID });\r\n\t\treturn response;\r\n\t}\r\n\tpublic async loadEventHandleAllowInProcessing(eventId: number, allowInProcessing?: any): Promise {\r\n\t\tconst response = await this.axios.get(`EventQueue/Handle/${eventId}?AllowInProcessing=${allowInProcessing}`);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async loadResponseStates(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"eventqueue/ResponseState\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadAlarmQueueFilters(): Promise {\r\n\t\treturn await this.axios.get(\"/AlarmQueueFilters\");\r\n\t}\r\n\r\n\tpublic async loadAlarmQueueFiltersForTenant(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"AlarmQueueFilters/ForTenant\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async addAlarmQueueFilter(alarmQueueFilterID: AlarmQueueFilterID): Promise {\r\n\t\tconst endpoint = `/AlarmQueueFilters/AddFilter/${alarmQueueFilterID.filterId}`;\r\n\t\tconst regionId = alarmQueueFilterID.regionId > 0 ? alarmQueueFilterID.regionId : null;\r\n\r\n\t\treturn await this.axios.get(endpoint, {\r\n\t\t\tparams: { regionId }\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async removeAlarmQueueFilter(alarmQueueFilterID: AlarmQueueFilterID): Promise {\r\n\t\tconst endpoint = `/AlarmQueueFilters/RemoveFilter/${alarmQueueFilterID.filterId}`;\r\n\t\tconst regionId = alarmQueueFilterID.regionId > 0 ? alarmQueueFilterID.regionId : null;\r\n\r\n\t\treturn await this.axios.get(endpoint, {\r\n\t\t\tparams: { regionId }\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async loadAvailableAlarmQueueFilters(): Promise {\r\n\t\treturn await this.axios.get(\"/AlarmQueueFilters/Available\");\r\n\t}\r\n\r\n\tpublic async loadAlarmQueueFilterBounds(filterId: number): Promise {\r\n\t\treturn await this.axios.get(`/AlarmQueueFilters/Bounds/${filterId}`);\r\n\t}\r\n\r\n\tpublic async loadOutcomesForEvent(eventId: number): Promise {\r\n\t\tconst response = await this.axios.get(`/Outcomes/ForEvent/${eventId}`);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async loadAllOutcomes(): Promise> {\r\n\t\treturn await this.axios.get(`/Outcomes/AllOutcomes/`);\r\n\t}\r\n\r\n\tpublic async loadAllOutcomesForAlarms(): Promise> {\r\n\t\treturn await this.axios.get(`/Outcomes/ForAnyAlarm/`);\r\n\t}\r\n\r\n\tpublic async loadEventDetails(eventId: number): Promise {\r\n\t\tconst response = await this.axios.get(`/Event/Details/${eventId}`);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async loadRaisedCaseNumber(eventId: number): Promise {\r\n return (await this.axios.get(`/Event/raisedCaseNumber/${eventId}`)).data;\r\n }\r\n\r\n\tpublic async retrieveAwaitingAckCountForEvent(eventId: number): Promise\r\n\t{\r\n\t\treturn (await this.axios.get(`/Event/AwaitingAckCount/${eventId}`)).data;\r\n\t}\r\n\r\n\tpublic async loadEventDetailsDirect(eventId: number): Promise {\r\n\t\ttry {\r\n\t\t\tconst response = await this.axiosJsonDirectInstance.get(`/Event/Details/${eventId}`);\r\n\t\t\treturn response;\r\n\t\t} catch(e) {\r\n\t\t\tconsole.error(e);\r\n\t\t\tif(e.response)\r\n\t\t\t{\r\n\t\t\t\tVue.prototype.$notify({\r\n\t\t\t\t\ttype: e.response.status == 404 ? \"neutralError\" : \"error\",\r\n\t\t\t\t\ttitle: \"Error\",\r\n\t\t\t\t\ttext: e.response.data,\r\n\t\t\t\t\tignoreDuplicates: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tVue.prototype.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Error\",\r\n\t\t\t\t\ttext: \"No response received\",\r\n\t\t\t\t\tignoreDuplicates: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async loadEventRecordDetails(eventRecordId: number): Promise {\r\n\t\tconst response = await this.axios.get(`/Event/EventRecordDetails/${eventRecordId}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async loadRoutingGroups(): Promise {\r\n\t\tconst response = await this.axios.get(\"/RoutingGroups\");\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async loadRoutingGroupsByEvent(eventId: number): Promise {\r\n\t\tconst response = await this.axios.get(\"/RoutingGroups/ByEvent/\" + eventId);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async loadEventRecords(EventID: number, fromRecord: number): Promise {\r\n\t\tconst response = await this.axios.get(\"/EventRecords/\" + EventID, {\r\n\t\t\tparams: { fromRecord }\r\n\t\t});\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async loadEventRecordsForMobile(EventID: number): Promise {\r\n\t\tconst response = await this.axios.get(\"/EventRecords/ForMobile/\" + EventID);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async eventRecordAcknowledgement(EventRecordID: number): Promise {\r\n\t\tconst response = await this.axios.get(`/EventRecords/Acknowledge/${EventRecordID}`);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async eventRecordAllAcknowledgement(EventID: number): Promise {\r\n\t\tconst response = await this.axios.get(`/EventRecords/AcknowledgeAll/${EventID}`);\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async eventShareRemove(eventID: number, uniqueId: any, isMobile: boolean = false) {\r\n\t\treturn await this.axios.get(`/EventShare/RemoveShare/${eventID}`, {\r\n\t\t\tparams: {\r\n\t\t\t\tuniqueId,\r\n\t\t\t\tisMobile\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async eventShareSearch(SearchTerm: string): Promise {\r\n\t\tconst response = await this.axios.get(\"/EventShare/Search\", {\r\n\t\t\tparams: {\r\n\t\t\t\tSearchTerm\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async loadShareForEvent(eventId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/EventShare/${eventId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadHistoricalShareForEvent(eventId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/EventShare/Historical/${eventId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadExternalUserShareFlag(eventId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/EventShare/ExternalShareAllowed/${eventId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async shareEventWithAsset(eventId: number, assetId: number): Promise {\r\n\t\tawait this.axios.post(`/EventShare/Mobile/ShareEventToAsset/${eventId}/${assetId}`)\r\n\t}\r\n\r\n\tpublic async loadGroupSummary(): Promise {\r\n\t\tconst response = await this.axios.get(\"/eventqueue/GroupSummary\");\r\n\t\treturn response;\r\n\t}\r\n\r\n\tpublic async loadGroupPermissions(groupID: number): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/groups/Permissions/\" + groupID);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadGroupOnTestEvent(groupID: number): Promise {\r\n\t\tconst response = await this.axios.get(\"/OnTest/TestEvent/\" + groupID);\r\n\t\treturn response.status === 204 ? null : response.data;\r\n\t}\r\n\r\n\tpublic async loadResponseOnTestEvent(responseID: number): Promise {\r\n\t\tconst response = await this.axios.get(\"/OnTest/ResponseTestEvent/\" + responseID);\r\n\t\treturn response.status === 204 ? null : response.data;\r\n\t}\r\n\r\n\tpublic async loadGroupOnTestRecords(eventID: number, fromRecord: number): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/OnTest/TestEventRecords/\" + eventID, {\r\n\t\t\tparams: {\r\n\t\t\t\tfromRecord\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async startTest(payload: any): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/OnTest/StartTest\", payload);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async extendTest(payload: any): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/OnTest/ExtendTest\", payload);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async endTest(eventId: number): Promise {\r\n\t\tawait this.axios.get(\"/OnTest/EndTest/\" + eventId);\r\n\t}\r\n\r\n\t// TASKS\r\n\t//\r\n\tpublic async loadTasks(): Promise {\r\n\t\treturn await this.axios.get(\"/All\");\r\n\t}\r\n\r\n\tpublic async triggeredTasks(taskID: number): Promise {\r\n\t\treturn (await this.axios.get(`/Tasks/Triggers/${taskID}`)).data;\r\n\t}\r\n\r\n\tpublic async triggeredTasksSave(taskID: number, tasks: any[]): Promise {\r\n\t\tawait this.axiosJson.post(`/Tasks/Triggers/${taskID}`, tasks);\r\n\t}\r\n\r\n\tpublic async loadTaskTypes(): Promise {\r\n\t\treturn await this.axios.get(\"/Tasks/TaskTypes\");\r\n\t}\r\n\r\n\tpublic async loadTasksForEvent(eventId: number): Promise {\r\n\t\treturn await this.axios.get(`/Tasks/${eventId}`);\r\n\t}\r\n\r\n\tpublic async fetchCallContacts(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/Tasks/CallList\", payload);\r\n\t}\r\n\r\n\tpublic async searchTasks(searchPhrase: string): Promise {\r\n\t\treturn await this.axios.get(`/TaskSearch?search=${searchPhrase}`);\r\n\t}\r\n\r\n\t// save a task to task library - to a general \"library\" of tasks\r\n\tpublic async createTask(taskData: any): Promise {\r\n\t\tconst payload = {\r\n\t\t\tTaskTypeID: taskData.taskTypeID,\r\n\t\t\tTaskCategoryID: taskData.taskCategoryID,\r\n\t\t\tTaskData: JSON.stringify(taskData.taskData),\r\n\t\t\tTaskText: taskData.taskText\r\n\t\t};\r\n\t\tif (taskData.title) {\r\n\t\t\tpayload[\"TaskText\"] = taskData.title;\r\n\t\t}\r\n\t\treturn await this.axios.post(\"/CreateTask\", payload);\r\n\t}\r\n\r\n\tpublic async deleteTask(taskData: any) {\r\n\t\treturn await this.axios.post(\"/DeleteTask\", taskData);\r\n\t}\r\n\r\n\t// save a task to task library - to a general \"library\" of tasks\r\n\tpublic async updateTask(taskData: any): Promise {\r\n\t\tconst payload = {\r\n\t\t\ttaskID: taskData.taskID,\r\n\t\t\ttaskTypeID: taskData.taskTypeID,\r\n\t\t\ttaskCategoryID: taskData.taskCategoryID,\r\n\t\t\ttaskText: taskData.taskText,\r\n\t\t\ttaskData: taskData.taskData,\r\n\t\t\tgroupID: taskData.groupID\r\n\t\t};\r\n\r\n\t\treturn await this.axiosJson.post(\"/UpdateTask\", payload);\r\n\t}\r\n\r\n\t// save an event-specific task\r\n\tpublic async saveEventTask(task: any): Promise {\r\n\t\treturn await this.axiosJson.post(\"/Tasks\", task);\r\n\t}\r\n\r\n\tpublic async completeTask(payload: CompleteTaskPayload): Promise {\r\n\t\treturn await this.axios.post(\"/Tasks/Complete\", payload);\r\n\t}\r\n\r\n\tpublic async assignTask(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/Tasks/Assign\", payload);\r\n\t}\r\n\r\n\tpublic async assignAllTask(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/Tasks/AssignAll\", payload);\r\n\t}\r\n\r\n\tpublic async assignAllTasks(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/Tasks/AssignAll\", payload);\r\n\t}\r\n\r\n\tpublic async createTaskCategory(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/CreateTaskCategory\", payload);\r\n\t}\r\n\r\n\tpublic async updateTaskCategory(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/UpdateTaskCategory\", payload);\r\n\t}\r\n\r\n\tpublic async deleteTaskCategory(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/DeleteTaskCategory\", payload);\r\n\t}\r\n\r\n\t// \"Action Plans\" (i.e. \"Scripts\")\r\n\t//\r\n\tpublic async loadActionPlans(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/Scripts\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createActionPlan(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/CreateScript\", payload);\r\n\t}\r\n\r\n\tpublic async deleteActionPlan(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/DeleteScript\", payload);\r\n\t}\r\n\r\n\tpublic async updateActionPlan(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/UpdateScript\", payload);\r\n\t}\r\n\r\n\tpublic async updateActionOrderInPlan(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/UpdateTaskOrderInScript\", payload);\r\n\t}\r\n\r\n\tpublic async getScriptCategoryLinks(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/Tasks/GetScriptCategoryLinks\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateCategoryOrderInScript(categoryReorderRequest: CategoryReorderRequest): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(\"/Tasks/UpdateCategoryOrderInScript\", categoryReorderRequest)\r\n\t\treturn data\r\n\t}\r\n\r\n\t// load Task Library\r\n\tpublic async loadActionPlanActions(scriptId: number): Promise {\r\n\t\treturn await this.axios.get(`/ScriptTasks/${scriptId}`);\r\n\t}\r\n\r\n\tpublic async addActionToPlan(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/AddTaskToScript\", payload);\r\n\t}\r\n\r\n\tpublic async updateActionForPlan(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/UpdateTaskForScript\", payload);\r\n\t}\r\n\r\n\tpublic async removeActionFromPlan(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/RemoveTaskFromScript\", payload);\r\n\t}\r\n\r\n\tpublic async loadTaskCategories(): Promise {\r\n\t\treturn await this.axios.get(\"/TaskCategories\");\r\n\t}\r\n\t//\r\n\t// END \"Action Plans\" (i.e. \"Scripts\")\r\n\r\n\tpublic async loadTasksByCategory(taskCategoryID: number): Promise {\r\n\t\treturn await this.axios.get(`/TasksByCategory/${taskCategoryID}`);\r\n\t}\r\n\r\n\t// DispatchSetup\r\n\tpublic async loadGuards(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/DispatchSetup/AllGuards\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\t// Used in dispatch - loads all the guard types from the database\r\n\tpublic async loadGuardTypes(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/DispatchSetup/AllGuardTypes\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadGuardsForFilter(alarmQueueFilterID: number): Promise {\r\n\t\tconst { data } = this.axios.get(`/DispatchSetup/GuardsForFilter/${alarmQueueFilterID}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async addNewGuard(guard: any): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/DispatchSetup/AddGuard\", guard);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async assignGuardToZone(data: any): Promise {\r\n\t\treturn await this.axios.post(\"/DispatchSetup/PatrolZones/AssignGuard\", data);\r\n\t}\r\n\r\n\tpublic async removeGuardFromZone(data: any): Promise {\r\n\t\treturn await this.axios.post(\"/DispatchSetup/PatrolZones/RemoveGuard\", data);\r\n\t}\r\n\r\n\tpublic async updateGuard(data: any): Promise {\r\n\t\treturn await this.axios.post(\"/DispatchSetup/UpdateGuard\", data);\r\n\t}\r\n\r\n\tpublic async deleteGuard(dispatchGuardID: number): Promise {\r\n\t\treturn await this.axios.get(`/DispatchSetup/DeleteGuard/${dispatchGuardID}`);\r\n\t}\r\n\r\n\t// Dispatch\r\n\tpublic async loadGuardsForEvent(eventId: number, location: string): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Dispatch/ForLocation/${eventId}`, {\r\n\t\t\tparams: {\r\n\t\t\t\tlocation\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadDispatchedGuardsForEvent(eventId: number): Promise {\r\n\t\treturn await this.axios.get(`/Dispatch/DispatchStatus/${eventId}`);\r\n\t}\r\n\r\n\tpublic async dispatchGuard(dispatchGuardRequest: { guardID; eventID; status; location; }): Promise {\r\n\t\treturn await this.axios.post(\"/Dispatch\", dispatchGuardRequest);\r\n\t}\r\n\r\n\t// Gets the list of groups the current user can access\r\n\tpublic async loadUserGroups(): Promise {\r\n\t\tconst response = await this.axios.get(\"/Groups\");\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\t// Gets a group by ID\r\n\tpublic async loadGroup(groupID: number): Promise {\r\n\t\tconst response = await this.axios.get(`/Groups/${groupID}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async loadUserZone(): Promise {\r\n\t\tconst response = await this.axios.get(\"/Groups/UsersGroup\");\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\t// Gets the tree of groups a user can access\r\n\tpublic async loadGroupsTree(multiTenant?: boolean): Promise {\r\n\t\tif (multiTenant) {\r\n\t\t\tconst response = await this.axios.get(\"/Groups/Tree?multiTenant=true\");\r\n\t\t\treturn response.data;\r\n\t\t}\r\n\t\tconst response = await this.axios.get(\"/Groups/Tree\");\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getRootGroups(requiredPermissions: string[], pageNumber: number, pageSize: number): Promise {\r\n\t\tlet permissionsAsQueryString = arrayToQueryString(\"requiredPermissions\", requiredPermissions);\r\n\t\tconst response = await this.axios.get(`groups/rootGroups?${permissionsAsQueryString}&pageNumber=${pageNumber}&pageSize=${pageSize}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getChildGroups(paginatedSearchRequest: GetChildGroupsListRequest): Promise {\r\n\t\tlet permissionsAsQueryString = arrayToQueryString(\"requiredPermissions\", paginatedSearchRequest.requiredPermissions);\r\n\t\tconst response = await this.axios.get(`groups/childGroups?groupId=${paginatedSearchRequest.groupId}&`\r\n\t\t\t+ `${permissionsAsQueryString}` +\r\n\t\t\t`&page=${paginatedSearchRequest.page}` +\r\n\t\t\t`&pageSize=${paginatedSearchRequest.pageSize}` +\r\n\t\t\t`&searchTerm=${paginatedSearchRequest.searchTerm}` +\r\n\t\t\t`&sortBy=${paginatedSearchRequest.sortBy}` +\r\n\t\t\t`&sortDesc=${paginatedSearchRequest.sortDesc}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getGroupTreeNode(groupId: number, requiredPermissions: string[]): Promise {\r\n\t\tconst response = await this.axios.get(`/groups/treeNode/${groupId}?requiredPermissions=${requiredPermissions}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getGroupTreeNodeExtend(groupId: number, requiredPermissions: string[]): Promise {\r\n\t\tconst response = await this.axios.get(`/groups/treeNodeExtend/${groupId}?requiredPermissions=${requiredPermissions}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getGroupTreeNodeChildrenCount(groupId: number, requiredPermissions: string[]): Promise {\r\n\t\tconst response = await this.axios.get(`/groups/treeNodeChildren/${groupId}?requiredPermissions=${requiredPermissions}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getGroupPathToRoot(groupId: number, requiredPermissions: string[]): Promise {\r\n\t\tconst response = await this.axios.get(`/groups/pathToRoot/${groupId}?requiredPermissions=${requiredPermissions}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getGroupTreeNodes(groupIds: number[]): Promise {\r\n\t\tlet nodesAsQueryString = arrayToQueryString(\"groupIds\", groupIds);\r\n\t\tconst response = await this.axios.get(`/groups/treeNodes?${nodesAsQueryString}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async searchGroupTree(query: string, requiredPermissions: string[]): Promise {\r\n\t\tconst response = await this.axios.post(\"/groups/tree/search\", { query, requiredPermissions });\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async advancedSearchGroupTree(query: GroupAdvancedSearchQuery, requiredPermissions: string[], subtreeGroupId: number = null): Promise {\r\n\t\tconst response = await this.axios.post(\"/groups/tree/advancedSearch\", { query, requiredPermissions, subtreeGroupId });\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async searchGroupSubtree(query: string, subtreeRoot: number, requiredPermissions: string[]): Promise {\r\n\t\tconst response = await this.axios.post(\"/groups/subtree/search\", { query, subtreeRoot, requiredPermissions });\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async searchUsingAdditionalFields(query: string, fields: string[], requiredPermissions: string[], subtreeGroupId: number | null): Promise {\r\n\t\tconst response = await this.axios.post(\"/groups/tree/additionalSearch\", { query, fields, requiredPermissions, subtreeGroupId });\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getFullGroupsTree(requiredPermissions: string[]): Promise {\r\n\t\tconst response = await this.axios.get(`/groups/fullGroupTree?requiredPermissions=${requiredPermissions}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async loadGroupsList(): Promise {\r\n\t\tconst response = await this.axios.get(\"/Groups\");\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async subgroups(parentGroupId: number): Promise {\r\n\t\tconst response = await this.axiosJson.get(\"/groups/subgroups\", {\r\n\t\t\tparams: {\r\n\t\t\t\tparentGroupId\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async groupsToRoot(groupId: number): Promise {\r\n\t\tconst response = await this.axiosJson.get(\"/groups/toroot\", {\r\n\t\t\tparams: {\r\n\t\t\t\tgroupId\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async searchGroup(SearchTerm: string): Promise {\r\n\t\tconst response = await this.axios.get(\"/Groups/Search\", {\r\n\t\t\tparams: {\r\n\t\t\t\tSearchTerm\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async searchGroupFull(cancelToken: any, SearchTerm: string): Promise {\r\n\t\tconst response = await this.axios.get(\"/Groups/SearchFull\", {\r\n\t\t\tparams: {\r\n\t\t\t\tSearchTerm\r\n\t\t\t},\r\n\t\t\tcancelToken\r\n\t\t});\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async fetchAreaEventHistory(requestParams: AreaEventHistoryPaginatedSearchParams): Promise {// Promise {\r\n\t\tlet eventTypeIdsAsQueryString = arrayToQueryString(\"eventHistoryTypeIds\", requestParams.eventHistoryTypeIds);\r\n\t\tlet responseIdsAsQueryString = arrayToQueryString(\"responseIds\", requestParams.responseIds);\r\n\t\tconst { data } = await this.axios.get(\"/EventHistory?\" +\r\n\t\t\t`fromDate=${requestParams.fromDate.toISOString()}&\r\n\t\t\ttoDate=${requestParams.toDate.toISOString()}&\r\n\t\t\tgroupId=${requestParams.groupId}&\r\n\t\t\t${eventTypeIdsAsQueryString}&\r\n\t\t\tincludeAutohandled=${requestParams.includeAutohandled}&\r\n\t\t\t${responseIdsAsQueryString}&\r\n\t\t\tpage=${requestParams.page}&\r\n\t\t\tpageSize=${requestParams.pageSize}&\r\n\t\t\tsortBy=${requestParams.sortBy}&\r\n\t\t\tsortDesc=${requestParams.sortDesc ?? true}`\r\n\t\t);\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadPatrolZones(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/DispatchSetup/PatrolZones\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async addPatrolZone(zone: any): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/DispatchSetup/PatrolZones/Add\", zone);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updatePatrolZone(zone: any): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/DispatchSetup/PatrolZones/Update\", zone);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deletePatrolZone(PatrolZoneID: number): Promise {\r\n\t\tawait this.axios.get(`/DispatchSetup/PatrolZones/Delete/${PatrolZoneID}`);\r\n\t}\r\n\r\n\t// Mobile Dispatch Control in Site Monitor\r\n\tpublic async loadMobileGuardsForEvent(eventId: number, location: string): Promise {\r\n\t\tconst response = await this.axiosJson.get(`/Dispatch/MobileGuardsForEvent`, {\r\n\t\t\tparams: {\r\n\t\t\t\teventId,\r\n\t\t\t\tlocation\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn response && response.data ? response.data : null;\r\n\t}\r\n\r\n\t// Mobile Dispatch\r\n\tpublic async extendGuardSession(): Promise {\r\n\t\tawait this.axiosJson.post(\"/DispatchGuard/Session/Extend\");\r\n\t}\r\n\r\n\tpublic async registerUserDevice(deviceID: string, deviceTypeID: number): Promise {\r\n\t\tconst userDevicePayload = {\r\n\t\t\tDeviceID: deviceID,\r\n\t\t\tDeviceType: deviceTypeID\r\n\t\t};\r\n\r\n\t\tawait this.axiosJson.post(\"/DispatchGuard/Device/Register\", userDevicePayload);\r\n\t}\r\n\r\n\tpublic async mobileLogout(guardID: number, deviceID: string, deviceTypeID: number): Promise {\r\n\t\tconst logoutPayload = {\r\n\t\t\tGuardID: guardID,\r\n\t\t\tUserDevice: {\r\n\t\t\t\tDeviceID: deviceID,\r\n\t\t\t\tDeviceType: deviceTypeID\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tawait this.axiosJson.post(\"/DispatchGuard/Session/Logout\", logoutPayload);\r\n\t}\r\n\r\n\tpublic async fetchAuditEndpoint(): Promise {\r\n\t\tconst response = await this.axiosJson.get(`/DispatchGuard/FetchAuditEndpoint`);\r\n\t\treturn response && response.data ? response.data : null;\r\n\t}\r\n\r\n\tpublic async addEventRecordForGuard(\r\n\t\teventId: number,\r\n\t\tdetails: string,\r\n\t\tobjectId: number,\r\n\t\teventRecordTypeId: number\r\n\t): Promise {\r\n\t\tconst eventRecordPayload = {\r\n\t\t\tEventID: eventId,\r\n\t\t\tDetails: details,\r\n\t\t\tObjectID: objectId,\r\n\t\t\tEventRecordTypeID: eventRecordTypeId\r\n\t\t};\r\n\r\n\t\tconst response = await this.axiosJson.post(`/DispatchGuard/EventRecord/Add`, eventRecordPayload);\r\n\t\treturn response && response.data ? response.data : null;\r\n\t}\r\n\r\n\tpublic async loadCallSigns(): Promise {\r\n\t\tconst response = await this.axios.get(\"/DispatchGuard/CallSign/LoadAll\");\r\n\t\treturn response && response.data ? response.data : null;\r\n\t}\r\n\r\n\tpublic async setGuardForUser(guardId: number): Promise {\r\n\t\tconst response = await this.axiosJson.post(`/DispatchGuard/Session/SetGuardForUser`, guardId);\r\n\t\treturn response && response.data ? response.data : null;\r\n\t}\r\n\r\n\tpublic async loadGuardForUser(): Promise {\r\n\t\tconst response = await this.axiosJson.get(`/DispatchGuard/Session/GetGuardForUser`);\r\n\t\treturn response && response.data ? response.data : null;\r\n\t}\r\n\r\n\tpublic async loadGuardStatus(guardId: number): Promise {\r\n\t\tconst response = await this.axiosJson.get(`/DispatchGuard/Status/`, {\r\n\t\t\tparams: {\r\n\t\t\t\tguardId\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn response && response.data ? response.data : null;\r\n\t}\r\n\r\n\tpublic async loadUnavailableStatuses(): Promise {\r\n\t\tconst response = await this.axiosJson.get(`/DispatchGuard/UnavailableStatus/LoadAll`);\r\n\t\treturn response && response.data ? response.data : null;\r\n\t}\r\n\r\n\tpublic async setUnavailableStatus(\r\n\t\tguardId: number,\r\n\t\tunavailableStatusId: number,\r\n\t\tunavailableReason: string\r\n\t): Promise {\r\n\t\tconst unavailableStatusPayload = {\r\n\t\t\tGuardId: guardId,\r\n\t\t\tUnavailableStatusId: unavailableStatusId,\r\n\t\t\tUnavailableReason: unavailableReason\r\n\t\t};\r\n\r\n\t\tawait this.axiosJson.post(`/DispatchGuard/UnavailableStatus/Set`, unavailableStatusPayload);\r\n\t}\r\n\r\n\tpublic async loadDispatchRequestsForGuard(GuardID: number): Promise {\r\n\t\tconst response = await this.axiosJson.get(`/DispatchGuard/DispatchRequest/LoadAll`, {\r\n\t\t\tparams: {\r\n\t\t\t\tGuardID\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn response && response.data ? response.data : null;\r\n\t}\r\n\r\n\tpublic async claimDispatchRequest(dispatchQueueId: number, guardId: number): Promise {\r\n\t\tconst claimPayload = {\r\n\t\t\tDispatchQueueId: dispatchQueueId,\r\n\t\t\tGuardId: guardId\r\n\t\t};\r\n\r\n\t\tawait this.axiosJson.post(`/DispatchGuard/DispatchRequest/Claim`, claimPayload);\r\n\t}\r\n\r\n\tpublic async unclaimDispatchRequest(dispatchQueueId: number, guardId: number): Promise {\r\n\t\tconst unclaimPayload = {\r\n\t\t\tDispatchQueueId: dispatchQueueId,\r\n\t\t\tGuardId: guardId\r\n\t\t};\r\n\r\n\t\tawait this.axiosJson.post(`/DispatchGuard/DispatchRequest/Unclaim`, unclaimPayload);\r\n\t}\r\n\r\n\tpublic async activateDispatchRequest(dispatchQueueId: number, guardId: number): Promise {\r\n\t\tconst activatePayload = {\r\n\t\t\tDispatchQueueId: dispatchQueueId,\r\n\t\t\tGuardId: guardId\r\n\t\t};\r\n\r\n\t\tawait this.axiosJson.post(`/DispatchGuard/DispatchRequest/Activate`, activatePayload);\r\n\t}\r\n\r\n\tpublic async inactivateDispatchRequest(dispatchQueueId: number, guardId: number): Promise {\r\n\t\tconst inactivatePayload = {\r\n\t\t\tDispatchQueueId: dispatchQueueId,\r\n\t\t\tGuardId: guardId\r\n\t\t};\r\n\r\n\t\tawait this.axiosJson.post(`/DispatchGuard/DispatchRequest/Inactivate`, inactivatePayload);\r\n\t}\r\n\r\n\tpublic async guardArrived(dispatchQueueId: number, guardId: number): Promise {\r\n\t\tconst statusPayload = {\r\n\t\t\tDispatchQueueId: dispatchQueueId,\r\n\t\t\tGuardId: guardId\r\n\t\t};\r\n\r\n\t\tawait this.axiosJson.post(`/DispatchGuard/Arrived`, statusPayload);\r\n\t}\r\n\r\n\tpublic async guardAvailable(guardId: number): Promise {\r\n\t\tawait this.axiosJson.post(`/DispatchGuard/Available`, guardId);\r\n\t}\r\n\r\n\tpublic async addDispatchRequest(\r\n\t\tpreferredGuardId: number,\r\n\t\tpatrolZoneId: number,\r\n\t\teventId: number,\r\n\t\trequester: string,\r\n\t\trequesterDescription: string,\r\n\t\tlocation: string,\r\n\t\tsiteTitle: string\r\n\t): Promise {\r\n\t\tconst dispatchRequestPayload = {\r\n\t\t\tPreferredGuardID: preferredGuardId,\r\n\t\t\tPatrolZoneID: patrolZoneId,\r\n\t\t\tEventID: eventId,\r\n\t\t\tRequester: requester,\r\n\t\t\tRequesterDescription: requesterDescription,\r\n\t\t\tLocation: location,\r\n\t\t\tSiteTitle: siteTitle\r\n\t\t};\r\n\r\n\t\treturn await this.axiosJson.post(\"/DispatchGuard/DispatchRequest/Add\", dispatchRequestPayload);\r\n\t}\r\n\r\n\tpublic async finishDispatchRequest(dispatchQueueId: number, guardId: number): Promise {\r\n\t\tconst finishPayload = {\r\n\t\t\tDispatchQueueId: dispatchQueueId,\r\n\t\t\tGuardId: guardId\r\n\t\t};\r\n\t\tawait this.axiosJson.post(`/DispatchGuard/DispatchRequest/Finish`, finishPayload);\r\n\t}\r\n\r\n\tpublic async loadNotesForEvent(eventId: number): Promise {\r\n\t\tconst response = await this.axiosJson.get(`/DispatchGuard/Notes/ForEvent`, {\r\n\t\t\tparams: {\r\n\t\t\t\teventId\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn response && response.data ? response.data : null;\r\n\t}\r\n\r\n\t/* public async eventSearch(filters: any): Promise {\r\n\tconst { data } = await this.axios.post('/eventSearch', filters);\r\n\treturn data;\r\n } */\r\n\r\n\tpublic async eventSearch(filters: any): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(\"/EventReports/Search\", filters);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async paginatedEventSearch(filters: any): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(\"/EventReports/PaginatedSearch\", filters);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async eventTags(): Promise {\r\n\t\treturn (await this.axios.get(\"/Event/Tags\")).data;\r\n\t}\r\n\r\n\tpublic async loadEventNotes(eventId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Notes/ForEvent/${eventId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async matrixGet(eventId): Promise {\r\n\t\treturn (await this.axios.get(\"/Matrix/\" + eventId)).data;\r\n\t}\r\n\r\n\tpublic async matrixSave(payload: any): Promise {\r\n\t\treturn this.axios.post(\"/Matrix\", payload);\r\n\t}\r\n\r\n\tpublic async loadSearchableEventTypes(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/EventReports/SearchableEventTypes\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadAvailableEventCategories(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/EventReports/Categories\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadAvailableEventOperators(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/EventReports/Operators\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadAlarmTypes(serverTypeID: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/EventReports/EventTypes/${serverTypeID}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadAreaNotesForEvent(eventId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/notes/ForEvent/${eventId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadAreaNotesForGroup(groupId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Notes/ForGroup/${groupId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async addAreaNote(note: any): Promise {\r\n\t\treturn await this.axios.post(\"/notes/Add\", note);\r\n\t}\r\n\r\n\tpublic async editAreaNote(note: any): Promise {\r\n\t\treturn await this.axios.post(\"/notes/Edit\", note);\r\n\t}\r\n\r\n\tpublic async deleteAreaNote(noteId: number): Promise {\r\n\t\tconst { data } = await this.axios.delete(\"/notes/Delete\", {\r\n\t\t\tparams: {\r\n\t\t\t\tnoteId\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateMatrixCell(data: any): Promise {\r\n\t\treturn await this.axios.post(\"/Matrix/Cell\", data);\r\n\t}\r\n\r\n\tpublic async sessionGet(resourceId: number, eventId: number, baseUrl: string) {\r\n\t\tconst sessionRequestConfig: AxiosRequestConfig = {\r\n\t\t\tparams: {\r\n\t\t\t\teventId\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tif (baseUrl !== null && baseUrl !== undefined) {\r\n\t\t\tsessionRequestConfig.baseURL = baseUrl;\r\n\t\t}\r\n\r\n\t\treturn await axiosInstance.get(\"/session/\" + resourceId, sessionRequestConfig);\r\n\t}\r\n\r\n\tpublic async saveMatrix(data: any): Promise {\r\n\t\treturn await this.axios.post(\"/Matrix\", data);\r\n\t}\r\n\r\n\tpublic async fetchMatrixForEvent(eventID: number): Promise {\r\n\t\treturn await this.axios.get(`/Matrix/${eventID}`);\r\n\t}\r\n\r\n\tpublic async serverLogout(): Promise {\r\n\t\treturn await this.axios.get(\"/Login/Logout\");\r\n\t}\r\n\r\n\tpublic async loadAlarmTags(): Promise {\r\n\t\treturn await this.axios.get(\"/AlarmQueueFilters/AlarmTags\");\r\n\t}\r\n\r\n\tpublic async createAlarmQueueFilter(data: any): Promise {\r\n\t\treturn await this.axiosJson.post(\"/AlarmQueueFilters/CreateFilter\", data);\r\n\t}\r\n\r\n\tpublic async editAlarmQueueFilter(data: any): Promise {\r\n\t\treturn await this.axiosJson.post(\"/AlarmQueueFilters/EditFilter\", data);\r\n\t}\r\n\r\n\tpublic async loadNotificationTemplate(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/Notification/Template\", payload);\r\n\t}\r\n\r\n\tpublic async loadTemplateDetails(templateId: number): Promise {\r\n\t\treturn await this.axios.get(`/Notification/Template/Details/${templateId}`);\r\n\t}\r\n\r\n\tpublic async loadEventShareInvites(): Promise {\r\n\t\treturn await this.axios.get(\"EventShare/Invites\");\r\n\t}\r\n\r\n\tpublic async acceptEventShareInvite(eventUserID: number): Promise {\r\n\t\treturn await this.axios.get(`EventShare/Accept/${eventUserID}`);\r\n\t}\r\n\r\n\tpublic async ignoreEventShareInvite(eventUserID: number): Promise {\r\n\t\treturn await this.axios.get(`EventShare/Ignore/${eventUserID}`);\r\n\t}\r\n\r\n\tpublic async addAdhocEventShare(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/EventShare/InviteAdhoc\", payload);\r\n\t}\r\n\r\n\tpublic async shareEventWithUser(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/EventShare/InviteUser\", payload);\r\n\t}\r\n\r\n\tpublic async shareEventWithGroup(payload: any): Promise {\r\n\t\treturn await this.axios.post(\"/EventShare/InviteGroup\", payload);\r\n\t}\r\n\r\n\tpublic async deleteAlarmQueueFilter(filterId: number): Promise {\r\n\t\treturn await this.axios.get(`/AlarmQueueFilters/DeleteFilter/${filterId}`);\r\n\t}\r\n\r\n\tpublic async loadServerEventTypes(\r\n\t\tserverType: number,\r\n\t\tserverTypeGroupID: number | null,\r\n\t\tpageSize?: number | null,\r\n\t\tfilter?: string | null\r\n\t): Promise {\r\n\t\treturn await this.axios.get(`/servers/EventTypes/${serverType}`, {\r\n\t\t\tparams: {\r\n\t\t\t\tgroupID: serverTypeGroupID,\r\n\t\t\t\tpageSize,\r\n\t\t\t\tfilter,\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async searchGroups(params): Promise {\r\n\t\treturn await this.axios.get(\"/groups/search\", {\r\n\t\t\tparams\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async loadMapLayersByGroupId(groupId: number): Promise {\r\n\t\treturn (await this.axios.get(`/MapLayers/ByGroup/${groupId}`)).data;\r\n\t}\r\n\r\n\tpublic async loadOrCreateMapLayersByGroupID(groupId: number, location: string = \"\"): Promise {\r\n\t\treturn await this.axios.get(`/MapLayers/ByGroup/GetOrCreate`,{\r\n\t\t\tparams:{\r\n\t\t\t\tGroupID : groupId,\r\n\t\t\t\tLocation: location\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async getMapLayerById(mapLayerId: number): Promise {\r\n\t\treturn (await this.axios.get(`/MapLayers/${mapLayerId}`)).data;\r\n\t}\r\n\r\n\tpublic async loadMapLayersItemsByMapLayerId(layerId: number): Promise {\r\n\t\treturn (await this.axios.get(`/MapLayers/MapItems/ByLayer/${layerId}`)).data;\r\n\t}\r\n\r\n\tpublic async getMapLayerItemsByBounds(bounds: MapBounds): Promise {\r\n\t\treturn (await this.axios.post(\"/MapLayers/MapItems\", bounds)).data;\r\n\t}\r\n\r\n\tpublic async responseGet(responseId: number): Promise {\r\n\t\treturn (await this.axios.get(`/Responses/${responseId}`)).data;\r\n\t}\r\n\r\n\tpublic async responsesByArea(groupId: number): Promise {\r\n\t\treturn (await this.axios.get(\"/Responses/ByArea/\" + groupId)).data;\r\n\t}\r\n\r\n\tpublic async getPagedResponsesByArea(groupId: number, paginatedSearchRequest?: PaginatedSearchRequest): Promise {\r\n\t\treturn (await this.axiosJson.get(`/Responses/PagedByArea/${groupId}`, paginatedSearchRequest)).data;\r\n\t}\r\n\r\n\tpublic async responsesDisarmed(): Promise {\r\n\t\treturn (await this.axios.get(\"/Responses/Disarmed/\")).data;\r\n\t}\r\n\r\n\tpublic async responseSearch(cancelToken: any, searchTerm: string): Promise {\r\n\t\treturn (\r\n\t\t\tawait this.axios.get(\"/Responses/Search\", {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tsearch: searchTerm\r\n\t\t\t\t},\r\n\t\t\t\tcancelToken\r\n\t\t\t})\r\n\t\t).data;\r\n\t}\r\n\r\n\tpublic async fetchResponses(\r\n\t\tpage: number,\r\n\t\tpageSize: number,\r\n\t\tserverId: number | null,\r\n\t\tsearchTerm: string,\r\n\t\tcancelToken?: CancelToken\r\n\t): Promise {\r\n\t\treturn await this.axiosJsonDirectInstance.get(`/Responses/GetResponses/${page}/${pageSize}`, {\r\n\t\t\tparams: {\r\n\t\t\t\tserverId,\r\n\t\t\t\tsearchTerm\r\n\t\t\t},\r\n\t\t\tcancelToken\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async responseHistory(responseId: number): Promise {\r\n\t\treturn (await this.axios.get(\"/EventRecords/AlarmPointHistory/\" + responseId)).data;\r\n\t}\r\n\r\n\tpublic async accessControlHistory(responseId: number): Promise {\r\n\t\treturn (\r\n\t\t\tawait this.axiosJsonDirectInstance.get(\"/AccessControl/History/Latest\", {\r\n\t\t\t\tparams: {\r\n\t\t\t\t\tresponseId\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t).data;\r\n\t}\r\n\r\n\tpublic async fetchServers(groupId: number, pageSize?: number, filter?: string): Promise {\r\n\t\treturn await this.axios.get(`/servers?groupId=${groupId}`, {\r\n\t\t\tparams: {\r\n\t\t\t\tpageSize,\r\n\t\t\t\tfilter\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async getServers(paginatedSearchRequest?: PaginatedSearchRequest): Promise {\r\n\t\tconst { data } = await this.axios.get(`/servers/GetServerList`, paginatedSearchRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getServersWithEnabledDeviceTypes(\r\n\t\tparams: ServersWithEnabledDeviceTypesParams\r\n\t): Promise> {\r\n\t\treturn await this.axios.get(`/servers/ByDeviceTypesEnabled`, { params });\r\n\t}\r\n\r\n\tpublic async getContactsForRole(contactRoleId: number, groupId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/users/ContactsForRole/${contactRoleId}/${groupId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getContactRoles(paginatedSearchRequest: PaginatedSearchRequest): Promise> {\r\n\t\treturn await this.axios.get(`/users/ContactRolesPaginated`, paginatedSearchRequest);\r\n\t}\r\n\r\n\tpublic async getServer(serverId: number): Promise> {\r\n\t\treturn await this.axios.get(`/servers/${serverId}`);\r\n\t}\r\n\r\n\tpublic async fetchServersByGroup(payload: any): Promise {\r\n\t\treturn await this.axios.get(`/servers/ServersByGroup/${payload.groupId}/${payload.page}/${payload.pageSize}`);\r\n\t}\r\n\r\n\tpublic async fetchServerLineProfiles(): Promise> {\r\n\t\treturn await this.axios.get(\"/servers/LineProfiles\");\r\n\t}\r\n\r\n\tpublic async fetchNotificationServers(): Promise {\r\n\t\treturn await this.axios.get(\"/servers/Notification\");\r\n\t}\r\n\r\n\tpublic async fetchNotificationTemplates(serverId: number): Promise {\r\n\t\treturn await this.axios.get(`/Notification/Template/${serverId}`);\r\n\t}\r\n\r\n\tpublic async getMatrixDeviceDetails(deviceIds: number[], eventId: number, latLong: string) {\r\n\t\tconst { data } = await this.axios.post(\"/DeviceDetails\", {\r\n\t\t\tdeviceIds,\r\n\t\t\teventId,\r\n\t\t\tlatLong\r\n\t\t});\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadAvailableReports(apiUrl: string): Promise {\r\n\t\treturn await this.axios.get(\"/Reports/AvailableReports\", {\r\n\t\t\tbaseURL: apiUrl\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async runReport(apiUrl: string, url: string, payload: any): Promise {\r\n\t\treturn await this.axiosJsonDirectInstance.post(`/Reports/GetReport${url}`, payload, {\r\n\t\t\tbaseURL: apiUrl\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async DownloadReport(apiUrl: string, url: string, payload: any): Promise {\r\n\t\treturn await this.axiosJson.post(`/Reports/DownloadReport${url}`, payload, {\r\n\t\t\tbaseURL: apiUrl\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async getReportServiceEndpoint(): Promise {\r\n\t\treturn await this.axios.get(\"/Reports/GetReportsDataServiceEndpoint\");\r\n\t}\r\n\r\n\tpublic async loadReportTypes(url: string): Promise {\r\n\t\treturn await this.axios.get(\"/Reports/GetReportTypes\", {\r\n\t\t\tbaseURL: url\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async heartbeatToCurrentServer(): Promise {\r\n\t\treturn await this.axios.get(\"/session/HeartbeatLoginSession\");\r\n\t}\r\n\r\n\tpublic async heartbeatToServer(apiUrl: string): Promise {\r\n\t\treturn await this.axios.get(\"/session/HeartbeatLoginSession\", {\r\n\t\t\tbaseURL: apiUrl\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async getUsers(paginatedSearchRequest: PaginatedSearchRequest): Promise {\r\n\t\tconst { data } = await this.axios.get(`/users/`, paginatedSearchRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getContacts(paginatedSearchRequest: PaginatedSearchRequest): Promise {\r\n\t\tconst { data } = await this.axios.get(`/users/Contacts`, paginatedSearchRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getContactsForGroup(groupId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/users/Contacts/ForGroup/${groupId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getContactGroups(request: PaginatedSearchRequest): Promise {\r\n\t\tconst { data } = await this.axios.get(`/NotificationTemplates/GetContactGroups`, request);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async setMfa(credentials: any): Promise {\r\n\t\tif (credentials.username && credentials.password) {\r\n\t\t\treturn await this.axios.post(\"/users/SetupMFA\", credentials);\r\n\t\t}\r\n\r\n\t\treturn await this.axios.post(\"/users/SetMFA\", {\r\n\t\t\tAuthCode: credentials.authCode,\r\n\t\t\tToken: credentials.token\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async clearMfa(authCode: string): Promise{\r\n\t\tconst { data } = await this.axios.post(`/users/ClearMFA`, {\r\n\t\t\tauthCode\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getUserById(userId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/users/GetUser/${userId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getContactRole(userId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/users/${userId}/ContactRole`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getCurrentUserMobileStateId(userId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/users/GetUser/${userId}`);\r\n\t\treturn data.mobileStatusID;\r\n\t}\r\n\r\n\tpublic async getAvailableStatuses(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/users/MobileStatuses`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async setMobileUserState(mobileStatusID: string): Promise {\r\n\t\tconst { data } = await this.axiosJson.put(`/users/SetMobileStatus`, {\r\n\t\t\tmobileStatusID\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async toggleCurrentMobileUserState(toggle: boolean): Promise {\r\n\t\tawait this.axios.put(`/users/ToggleMobileUserState/${toggle}`);\r\n\t}\r\n\r\n\tpublic async setUserMapDisplayName(title: string): Promise {\r\n\t\tconst { data } = await this.axios.post(`Assets/MyAsset/UpdateDisplayName/${title}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getContactRoleGroups(userId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/users/ContactRoleGroups/${userId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateContactRole(updatedContactRole: any): Promise {\r\n\t\tconst { data } = await this.axios.put(\"/users/ContactRole\", updatedContactRole);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteContactRole(contactRoleId: any): Promise {\r\n\t\treturn await this.axios.delete(`/users/ContactRole/${contactRoleId}`);\r\n\t}\r\n\r\n\tpublic async createContactRole(newContactRole: any): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/users/ContactRole\", newContactRole);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadContactRoleList(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/users/ContactRoles\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateUser(user: UserDTO): Promise {\r\n\t\treturn await this.axiosJson.post(\"/users/UpdateUser\", user);\r\n\t}\r\n\r\n\tpublic async updatePersonalInfo(personalInfo: PersonalInfo): Promise {\r\n\t\treturn await this.axiosJson.put(\"/users/UpdatePersonalInfo\", personalInfo);\r\n\t}\r\n\r\n\tpublic async updateRole(params): Promise {\r\n\t\treturn await this.axiosJson.post(\"/users/UpdateRole\", params);\r\n\t}\r\n\r\n\tpublic async deleteUser(userId: number): Promise {\r\n\t\treturn await this.axios.delete(`/users/DeleteUser/${userId}`);\r\n\t}\r\n\r\n\tpublic async createUser(newUser: any): Promise {\r\n\t\treturn await this.axios.post(\"/users/CreateUser\", newUser);\r\n\t}\r\n\r\n\tpublic async createOrUpdateContactUser(newUser: UserContactDetails): Promise {\r\n\t\treturn await this.axiosJson.post(\"/users/CreateOrUpdateContactUser\", {\r\n\t\t\tuserID: newUser.userID,\r\n\t\t\tFullName: newUser.fullName,\r\n\t\t\tGroupID: newUser.groupID,\r\n\t\t\tEmail: newUser.email,\r\n\t\t\tTelephone: newUser.telephone,\r\n\t\t\tMobile: newUser.mobile\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async getUserRoles(): Promise {\r\n\t\treturn (await this.axios.get(`/UserSetup/UserRoles`)).data;\r\n\t}\r\n\r\n\tpublic async saveUserRole(userRole: UserRole): Promise {\r\n\t\treturn (await this.axiosJson.put(`/UserSetup/UserRole`, userRole)).data;\r\n\t}\r\n\r\n\tpublic async deleteUserRole(userRoleId: number): Promise {\r\n\t\tawait this.axiosJson.delete(`/UserSetup/UserRole/Delete/${userRoleId}`);\r\n\t}\r\n\r\n\tpublic async getUserGroups(): Promise {\r\n\t\treturn (await this.axios.get(`/UserSetup/UserGroups`)).data;\r\n\t}\r\n\r\n\tpublic async saveUserGroup(userGroup: UserGroup): Promise {\r\n\t\treturn await this.axiosJson.put(`/UserSetup/UserGroup`, userGroup);\r\n\t}\r\n\r\n\tpublic async deleteUserGroup(userGroupId: number): Promise {\r\n\t\tawait this.axiosJson.delete(`/UserSetup/UserGroup/Delete/${userGroupId}`);\r\n\t}\r\n\r\n\tpublic async getUserGroup(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/users/GetUserGroup\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getUserGroupDictionary(): Promise> {\r\n\t\tconst { data } = await this.axios.get(\"/UserSetup/UserGroupDictionary\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getUserRoleDictionary(): Promise> {\r\n\t\tconst { data } = await this.axios.get(\"/UserSetup/UserRoleDictionary\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async permissionsGet(): Promise {\r\n\t\treturn (await this.axios.get(\"/UserSetup/Permissions\")).data;\r\n\t}\r\n\r\n\tpublic async getPermissionsForUserGroups(userGroupIds: number[]): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(\"/UserSetup/PermissionsForUserGroups\", userGroupIds);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getMapItemTypes(): Promise {\r\n const { data } = await this.axiosJson.get(\"/MapLayers/MapItemTypes\");\r\n return data;\r\n\t}\r\n\r\n\tpublic async loadAllFeatures(tenantId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/Features?featureGroup=\" + tenantId);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async toggleFeatures(features: any[], tenantId: number): Promise {\r\n\t\tconst { data } = await this.axiosJson.put(\"/Features?featureGroup=\" + tenantId, features);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async loadJsonConfig(): Promise {\r\n\t\tconst { data } = this.axios.get(\"/Features/Config\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async refreshGroupCache(): Promise {\r\n\t\tawait this.axios.get(\"/groups/UpdateBulkAreaUploadState\");\r\n\t}\r\n\r\n\tpublic async bulkAddAreas(areas: any): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(\"/groups/BulkAddGroups\", areas);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async addArea(area: any): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(\"/groups/AddGroup\", area);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateArea(area: any): Promise {\r\n\t\treturn await this.axiosJson.post(\"/groups/UpdateGroup\", area);\r\n\t}\r\n\r\n\tpublic async getArea(areaId: number, liveData: boolean = false): Promise {\r\n\t\tconst { data } = await this.axios.get(`/groups/${areaId}?liveData=${liveData}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAreaList(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/groups/GetGroups`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getFlatAreaList(params: FlatAreaListRequest): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/groups/FlatGroupsList\", { params });\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAreaDictionary(): Promise> {\r\n\t\tconst { data } = await this.axios.get(`/groups/dictionary`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteArea(areaId: number): Promise {\r\n\t\treturn await this.axios.get(`/groups/DeleteGroup/${areaId}`);\r\n\t}\r\n\r\n\tpublic async getReportTemplates(reportKey: string): Promise {\r\n\t\treturn await this.axios.get(\"/Reports/Templates/\" + reportKey);\r\n\t}\r\n\r\n\tpublic async getAvailableReportTemplatesForArea(areaId: number): Promise {\r\n\t\treturn await this.axios.get(`/Reports/AvailableReportTemplatesForArea?AreaId=${areaId}`);\r\n\t}\r\n\r\n\tpublic async getActivityLog(queryStr): Promise {\r\n\t\tlet url = \"/ActivityLog/GetList\";\r\n\t\tif (queryStr && queryStr.length > 0) {\r\n\t\t\turl += queryStr;\r\n\t\t}\r\n\t\treturn await this.axios.get(url);\r\n\t}\r\n\r\n\tpublic async addActivityLog(payload: any): Promise {\r\n\t\treturn await this.axios.post(`/ActivityLog/Add`, payload);\r\n\t}\r\n\r\n\tpublic async editActivityLog(payload: any): Promise {\r\n\t\treturn await this.axios.post(`/ActivityLog/Edit`, payload);\r\n\t}\r\n\r\n\tpublic async hideActivityLog(activityLogId: number): Promise {\r\n\t\treturn await this.axios.post(`/ActivityLog/Hide/${activityLogId}`);\r\n\t}\r\n\r\n\tpublic async unHideActivityLog(activityLogId: number): Promise {\r\n\t\treturn await this.axios.post(`/ActivityLog/Unhide/${activityLogId}`);\r\n\t}\r\n\r\n\tpublic async getActivityLogOutcomes(areaId: null | boolean): Promise {\r\n\t\tlet url = \"/Outcomes/GetActivityLogOutcomes\";\r\n\r\n\t\tif (areaId) {\r\n\t\t\turl += \"?areaID=\" + areaId;\r\n\t\t}\r\n\r\n\t\treturn await this.axios.get(url);\r\n\t}\r\n\r\n\tpublic async getActivityLogEntry(activityLogId: number): Promise {\r\n\t\treturn await this.axios.get(`/ActivityLog/${activityLogId}`);\r\n\t}\r\n\r\n\tpublic async enableArea(areaId: number): Promise {\r\n\t\treturn await this.axios.get(`/groups/enableGroup/${areaId}`);\r\n\t}\r\n\r\n\tpublic async disableArea(areaId: number): Promise {\r\n\t\treturn await this.axios.get(`/groups/DisableGroup/${areaId}`);\r\n\t}\r\n\r\n\tpublic async fetchFeaturesList(): Promise {\r\n\t\treturn await this.axios.get(\"/Features/getFeaturesList\");\r\n\t}\r\n\r\n\tpublic async getTimeZones(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/groups/TimeZones\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async fetchDynamicDataList(): Promise {\r\n\t\treturn await this.axios.get(\"/Tasks/GetDynamicDataList\");\r\n\t}\r\n\r\n\tpublic async fetchDynamicData(payload: any): Promise {\r\n\t\treturn await this.axios.post(`/Tasks/GetDynamicData`, payload);\r\n\t}\r\n\r\n\tpublic async putEventOnTest(payload: any): Promise {\r\n\t\treturn await this.axiosJson.post(\"OnTest/PutEventOnTest\", payload);\r\n\t}\r\n\r\n\tpublic async changePassword(payload: any): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(`/users/ChangePassword`, payload);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async register(payload: any): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(`/register`, payload);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async serverTypeEventUpdate(serverTypeEvent: ServerTypeEvent): Promise {\r\n\t\treturn (await this.axiosJson.post(\"/servertypeevents\", serverTypeEvent)).data;\r\n\t}\r\n\r\n\tpublic async serverTypeEventDelete(serverTypeEvent: ServerTypeEvent): Promise {\r\n\t\tawait this.axiosJson.delete(\"/servertypeevents\", {\r\n\t\t\tparams: {\r\n\t\t\t\tserverTypeId: serverTypeEvent.serverTypeID,\r\n\t\t\t\teventNum: serverTypeEvent.eventNum\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async responseAlarmTypes(groupId?: number): Promise {\r\n\t\treturn (await this.axiosJson.get(\"/Responses/ResponseAlarmTypes\", {\r\n\t\t\tparams: {\r\n\t\t\t\tgroupId\r\n\t\t\t}\r\n\t\t})).data;\r\n\t}\r\n\r\n\tpublic async retrieveServer(serverId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/servers/Server/${serverId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async addServer(newServer: ServerDetails): Promise {\r\n\t\tconst { data } = await this.axios.post(\"/servers/AddServer\", newServer);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateServer(updatedServer: ServerDetails): Promise {\r\n\t\treturn await this.axiosJsonDirectInstance.post(\"/servers/UpdateServer\", updatedServer);\r\n\t}\r\n\r\n\tpublic async deleteServer(serverId: number): Promise {\r\n\t\treturn await this.axios.delete(`/servers/DeleteServer/${serverId}`);\r\n\t}\r\n\r\n\tpublic async addDevice(newDevice: any): Promise {\r\n\t\treturn await this.axios.post(\"/devices/AddDevice\", newDevice);\r\n\t}\r\n\r\n\tpublic async updateDevice(updatedDevice: any): Promise {\r\n\t\treturn await this.axios.post(\"/devices/UpdateDevice\", updatedDevice);\r\n\t}\r\n\r\n\tpublic async deleteDevice(deviceId: number): Promise {\r\n\t\treturn await this.axios.delete(`/devices/DeleteDevice/${deviceId}`);\r\n\t}\r\n\r\n\tpublic async getServerTypes(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/servers/IntegrationServerTypes`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getApplianceList(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/servers/GetApplianceList`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getApplianceServerDetails(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/servers/GetApplianceServers`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async serversChangeAppliance(fromApplianceId: number | null, toApplianceId: number | null): Promise {\r\n\t\treturn await this.axiosJsonDirectInstance.post(`/servers/ServersChangeAppliance/${fromApplianceId}/${toApplianceId}`);\r\n\t}\r\n\r\n\tpublic async updateSecondaryAppliance(applianceId: number | null, secondaryApplianceId: number | null): Promise {\r\n\t\treturn await this.axiosJsonDirectInstance.post(`/servers/UpdateSecondaryAppliance/${applianceId}/${secondaryApplianceId}`);\r\n\t}\r\n\r\n\tpublic async getIsFeaturesConfigControlledByFile(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/Features/GetFunctionalityExists\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async fetchAllTours(): Promise {\r\n\t\treturn await this.axios.get(\"/Tours/GetAllTours\");\r\n\t}\r\n\r\n\tpublic async fetchDeviceList(groupID: number): Promise {\r\n\t\treturn await this.axios.get(`/Tours/GetAllDevices/${groupID}`);\r\n\t}\r\n\r\n\tpublic async searchDeviceList(groupID: number, searchText: string): Promise {\r\n\t\treturn await this.axios.get(`/Tours/SearchDeviceList/${groupID}/${searchText}`);\r\n\t}\r\n\r\n\tpublic async addTour(tour: any): Promise {\r\n\t\treturn await this.axiosJson.post(\"/Tours/InsertTour\", tour);\r\n\t}\r\n\r\n\tpublic async updateTour(tour: any): Promise {\r\n\t\treturn await this.axiosJson.post(\"/Tours/UpdateTour\", tour);\r\n\t}\r\n\r\n\tpublic async deleteTour(tourId: number): Promise {\r\n\t\treturn await this.axios.delete(`/Tours/DeleteTour/${tourId}`);\r\n\t}\r\n\r\n\tpublic async fetchGuardTours(groupID: number): Promise {\r\n\t\treturn await this.axios.get(`/GuardTours/GuardToursByGroup/${groupID}`);\r\n\t}\r\n\r\n\tpublic async fetchGuardTour(guardTourId: number): Promise {\r\n\t\treturn await this.axios.get(`/GuardTours/GuardTour/${guardTourId}`);\r\n\t}\r\n\r\n\tpublic async addGuardTour(guardTour: any): Promise {\r\n\t\treturn await this.axiosJson.post(\"/GuardTours/CreateGuardTour\", guardTour);\r\n\t}\r\n\r\n\tpublic async deleteGuardTour(guardTourId: number): Promise {\r\n\t\treturn await this.axios.delete(`/GuardTours/DeleteGuardTour/${guardTourId}`);\r\n\t}\r\n\r\n\tpublic async updateGuardTour(tour: any): Promise {\r\n\t\treturn await this.axiosJson.post(\"/GuardTours/UpdateGuardTour\", tour);\r\n\t}\r\n\r\n\tpublic async getTenants(): Promise {\r\n\t\treturn await this.axios.get(\"/Groups/Tenants\");\r\n\t}\r\n\r\n\tpublic async getWeeklyDisarmSchedule(groupID: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Groups/WeeklyDisarmSchedule/${groupID}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getResponses(paginatedSearchRequest?: PaginatedSearchRequest): Promise {\r\n\t\treturn (await this.axiosJson.get(`/Responses/GetResponses`, paginatedSearchRequest)).data;\r\n\t}\r\n\r\n\tpublic async getHttpResponses(paginatedSearchRequest?: PaginatedSearchRequest): Promise {\r\n\t\treturn (await this.axiosJson.get(`/Responses/GetHttpResponses`, paginatedSearchRequest)).data;\r\n\t}\r\n\r\n\tpublic async getAllResponsesByArea(groupId?: number, filter?: string, isInsights: boolean = false): Promise {\r\n\t\treturn (await this.axios.get(`/Responses/GetAllResponsesByArea`,\r\n\t\t{\r\n\t\t\tparams: {\r\n\t\t\t\tgroupId: groupId,\r\n\t\t\t\tfilter: filter,\r\n\t\t\t\tisInsights: isInsights\r\n\t\t\t}\r\n\t\t})).data;\r\n\t}\r\n\r\n\tpublic async createNewResponse(response: Response): Promise {\r\n\t\treturn await this.axios.post(\"/Responses/CreateEmailResponse\", response);\r\n\t}\r\n\r\n\tpublic async createDeviceResponse(response: Response): Promise {\r\n\t\treturn await this.axios.post(\"/Responses/CreateDeviceResponse\", response);\r\n\t}\r\n\r\n\tpublic async updateResponse(response: Response): Promise {\r\n\t\treturn await this.axios.put(\"/Responses/UpdateResponse\", response);\r\n\t}\r\n\r\n\tpublic async deleteResponse(responseId: number): Promise {\r\n\t\treturn await this.axiosJson.delete(`/Responses/DeleteResponse/${responseId}`);\r\n\t}\r\n\r\n\tpublic async createNewHttpResponse(response: Response): Promise {\r\n\t\treturn await this.axios.post(\"/Responses/CreateHttpResponse\", response);\r\n\t}\r\n\r\n\tpublic async getResponseScripts() {\r\n return (await this.axios.get(`/Responses/Scripts`)).data;\r\n }\r\n\r\n\tpublic async getDefaultResponseGrouping(cancelToken?: CancelToken): Promise {\r\n\t\treturn await this.axios.get(\"/Responses/GetDefaultResponseGrouping\", {\r\n\t\t\tcancelToken\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async getSubscription(tenantGroupId?: number): Promise {\r\n\t\tif (tenantGroupId) {\r\n\t\t\tconst { data } = await this.axios.get(`/Subscription?tenantGroupId=${tenantGroupId}`);\r\n\t\t\treturn data;\r\n\t\t} else {\r\n\t\t\tconst { data } = await this.axios.get(`/Subscription/`);\r\n\t\t\treturn data;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async reloadSubscription(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Subscription/Reload`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getExternalMapLayerTypes(): Promise {\r\n\t\treturn await this.axios.get(\"/ExternalMapLayers/GetTypes\");\r\n\t}\r\n\r\n\tpublic async getExternalMapLayers(): Promise {\r\n\t\treturn await this.axios.get(\"/ExternalMapLayers\");\r\n\t}\r\n\r\n\tpublic async createOrUpdateExternalMapLayer(externalMapLayer: ExternalMapLayer): Promise {\r\n\t\treturn await this.axiosJson.put(\"/ExternalMapLayers\", externalMapLayer);\r\n\t}\r\n\r\n\tpublic async deleteExternalMapLayer(externalMapLayerID: number): Promise {\r\n\t\treturn await this.axiosJson.delete(`/ExternalMapLayers/${externalMapLayerID}`);\r\n\t}\r\n\r\n\tpublic getOnlineUserLocations() {\r\n\t\treturn axiosInstance.get(\"/MapLayers/MapItems/OnlineUserLocations\")\r\n\t}\r\n\r\n\tpublic async updateExternalMapLayerUserLink(externalMapLayerUserLink: any) {\r\n\t\treturn await this.axiosJson.put(\"/ExternalMapLayerUserLink\", externalMapLayerUserLink);\r\n\t}\r\n\r\n\tpublic async getBilledUserPermissions() {\r\n\t\treturn (await this.axios.get(\"/Subscription/BilledUserSets\")).data;\r\n\t}\r\n\r\n\tpublic async getSubscriptionUsageForUserRole(userRole: any) {\r\n\t\treturn (await this.axios.post(\"/Subscription/SubscriptionUsageForUserRole\", userRole)).data;\r\n\t}\r\n\r\n\tpublic async getSubscriptionUsageForUserGroup(userGroup: any) {\r\n\t\treturn (await this.axios.post(\"/Subscription/SubscriptionUsageForUserGroup\", userGroup)).data;\r\n\t}\r\n\r\n\tpublic async getUserCountForUserRole(userRoleId: number) {\r\n\t\treturn (await this.axios.post(`/UserSetup/UserCountForUserRole?userRoleId=${userRoleId}`)).data;\r\n\t}\r\n\r\n\tpublic async getUserCountForUserGroup(userGroupId: number) {\r\n\t\treturn (await this.axios.post(`/UserSetup/UserCountForUserGroup?userGroupId=${userGroupId}`)).data;\r\n\t}\r\n\r\n\tpublic async updateSubscription(subscriptionUpdateRequest): Promise {\r\n\t\treturn (await this.axios.post(\"/Subscription/Update\", { subscriptionUpdateRequest })).data;\r\n\t}\r\n\r\n\tpublic async getSamlSettings(): Promise {\r\n\t\treturn (await this.axios.get(\"/settings/saml\")).data;\r\n\t}\r\n\r\n\tpublic async setSamlSettings(settings: SamlSettings): Promise {\r\n\t\tawait this.axiosJson.put(\"/settings/saml\", settings);\r\n\t}\r\n\r\n\tpublic async isCreditCardRequired() {\r\n\t return (await this.axios.get(\"/Register/IsCreditCardRequired\")).data;\r\n }\r\n\r\n\tpublic async putCustomer(customer: any) {\r\n\t return (await this.axiosJson.put(\"/Customer\", customer)).data;\r\n }\r\n\r\n public async createPaymentProfileForCustomer(paymentProfile: any) {\r\n return (await this.axiosJson.post(\"/Customer/PaymentProfile\", paymentProfile)).data;\r\n }\r\n\r\n public async validateContactInfo(contactInfo: any) {\r\n return (await this.axiosJson.post(\"/Register/CheckContactInfo\", contactInfo)).data;\r\n }\r\n\r\n\tpublic async updateEventOutcome(eventOutcome: EventCategory): Promise {\r\n\t\treturn await this.axiosJsonDirectInstance.post(\"/Outcomes/UpdateOutcome\", eventOutcome);\r\n\t}\r\n\r\n\tpublic async deleteEventOutcome(eventOutcome: EventCategory): Promise {\r\n\t\treturn await this.axiosJson.post(\"/Outcomes/DeleteOutcome\", eventOutcome);\r\n\t}\r\n\r\n\tpublic async createEventOutcome(eventOutcome: EventCategory): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(\"/Outcomes/CreateOutcome\", eventOutcome);\r\n\t\treturn data;\r\n\t}\r\n\r\n public async fetchEventOutcomesForUser(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/Outcomes/GetEventOutcomes\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async fetchEventOutcomeTree(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/Outcomes/GetEventOutcomeTree\");\r\n\t\treturn data;\r\n\t}\r\n\r\n // Case management\r\n public async getTemplates(eventId: number) {\r\n return await this.axios.get(`/cases/templates/${eventId}`);\r\n }\r\n\r\n public async getTemplatesForUser() {\r\n return await this.axios.get(\"/cases/templates\");\r\n }\r\n\r\n public async raiseToCases(caseData: CaseData) {\r\n return await this.axiosJsonDirectInstance.post(\"/cases/raiseToCases\", caseData);\r\n }\r\n\r\n public async casesLogin(suiteSession: boolean = false): Promise<{ url: string; token: string }> {\r\n return (await this.axiosJson.post(`/cases/casesLogin/${suiteSession}`)).data;\r\n }\r\n\r\n public async inviteUser(userId: number) {\r\n return await this.axios.post(`/users/InviteUser/${userId}`);\r\n }\r\n\r\n public async setPassword(token: string, password: string): Promise {\r\n\t\t\tconst request = {\r\n\t\t\t\ttoken: token,\r\n\t\t\t\tpassword: password\r\n\t\t\t}\r\n\r\n\t\t\tawait this.axiosJson.post(`/users/SetPassword`, request);\r\n }\r\n\r\n public async resetPassword(email: string) {\r\n return (await this.axios.post(\"/users/ResetPassword?emailAddress=\" + encodeURIComponent(email))).data;\r\n }\r\n\r\n\tpublic async validatePinCode(validatePinCodeRequest: ValidatePinCodeRequest): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(`/users/ValidatePinCode`, validatePinCodeRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n public getDeviceServiceAddress(): string {\r\n\t\treturn location.origin;\r\n\t}\r\n\r\n\tpublic getAuditServiceAddress(): string {\r\n\t\treturn location.origin;\r\n\t}\r\n\r\n\tpublic async setTenant(groupId: number) {\r\n\t\treturn await this.axios.post(`/users/SetTenant/${groupId}`);\r\n\t}\r\n\r\n\tpublic async resetTenant(): Promise {\r\n\t\treturn await this.axios.post(\"/users/resetTenant\");\r\n\t}\r\n\r\n\tpublic async getTenantOverview(): Promise {\r\n\t\tconst response = await this.axios.get(\"/UserContext/TenantOverview\");\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async groupsWithPermission(permissions: string []): Promise {\r\n\t\tlet permissionsAsQueryString = arrayToQueryString(\"permissions\", permissions);\r\n\t\tconst response = await this.axios.get(`/UserContext/GroupsWithPermission?${permissionsAsQueryString}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getMobileEventShareQueueForUser() : Promise{\r\n\t\tconst response = await this.axios.get(`/EventShare/Mobile/ForUser`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async getEventUsersForEvent(eventID: number) : Promise{\r\n\t\tconst response = await this.axios.get(`/Event/EventUsers/${eventID}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async setMobileEventShareItem(eventShareInfo: MobileEventShareInfo) {\r\n return (await this.axios.post(\"/EventShare/Mobile/Update\", eventShareInfo)).data;\r\n }\r\n\r\n\tpublic async getEventQueueState(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/eventqueue/GetCurrentSystemState\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getRegionForGroup(groupID: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/MapRegion/ForGroup/${groupID}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAllRegions(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/MapRegion/AreaRegionTree`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdateRegion(region: MapAreaRegion): Promise {\r\n\t\tconst { data } = await this.axiosJson.put(\"/MapRegion/\", region);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getDevicesByType(groupId: number, deviceTypeId: number, filter: string | null | undefined): Promise {\r\n\t\tlet uri = `/Devices/GetDevicesByType/${groupId}/${deviceTypeId}`\r\n\t\tif (filter && filter.length > 0) {\r\n\t\t\turi += `?filter=${filter}`\r\n\t\t}\r\n\t\tconst { data } = await this.axiosJson.get(uri);\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getExtendedDevicesByType(groupId: number, deviceTypeId: number, filter: string | null | undefined): Promise {\r\n\t\tlet uri = `/Devices/GetExtendedDevicesByType/${groupId}/${deviceTypeId}`\r\n\t\tif (filter && filter.length > 0) {\r\n\t\t\turi += `?filter=${filter}`\r\n\t\t}\r\n\t\tconst { data } = await this.axiosJson.get(uri);\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAllDevicesByType(deviceTypeId: number, filter: string | null | undefined): Promise {\r\n\t\tlet uri = `/Devices/GetDevicesByType/${deviceTypeId}`\r\n\t\tif (filter && filter.length > 0) {\r\n\t\t\turi += `?filter=${filter}`\r\n\t\t}\r\n\t\tconst { data } = await this.axiosJson.get(uri);\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getDeviceServerDetails(deviceIds: number[]): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(\"/Devices/ServerDetails\", deviceIds);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAlarmDecoders(paginatedSearchRequest: PaginatedSearchRequest): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/servers/AlarmDecoders\", paginatedSearchRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAlarmDecoder(serverTypeId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/servers/AlarmDecoder/${serverTypeId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteAlarmDecoder(serverTypeId: number): Promise {\r\n\t\tconst { data } = await this.axios.delete(`/servers/AlarmDecoder/${serverTypeId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdateAlarmDecoder(alarmDecoder: AlarmDecoder): Promise {\r\n\t\treturn await this.axios.put(\"/servers/AlarmDecoder\", alarmDecoder);\r\n\t}\r\n\r\n\tpublic async getAlarmDecoderServerList(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/servers/AlarmDecoders/Servers`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async auditEventPickUp(eventID: number, pickupMethod: string){\r\n\t\tawait this.axios.post(`/Event/AuditEventPickup/${eventID}/${pickupMethod}`)\r\n\t}\r\n\r\n\tpublic async sendEventNotification(eventId: number, payload: EmailNotificationRequest): Promise {\r\n\t\tawait this.axiosJson.post(`/Event/${eventId}/Notification`, payload);\r\n\t}\r\n\r\n\tpublic async getOrganizationSettings(): Promise {\r\n\t\treturn (await this.axios.get(\"/OrganizationSettings\")).data;\r\n\t}\r\n\r\n\tpublic async setHousekeepingSettings(housekeepingSettings: HousekeepingSettings): Promise {\r\n\t\tawait this.axios.post(\"/OrganizationSettings/HousekeepingSettings\", housekeepingSettings);\r\n\t}\r\n\r\n\tpublic async createHttpAlarmReceiverApiKey(): Promise {\r\n\t\treturn (await this.axios.post(\"/OrganizationSettings/GenerateHttpAlarmReceiverApiKey\")).data;\r\n\t}\r\n\r\n\tpublic async getDevicesByMapLayerItemType(\r\n\t\tgroupId: number,\r\n\t\tdeviceTypeId: number,\r\n\t\tfilter: string | null | undefined\r\n\t): Promise {\r\n\r\n\t\tlet uri = `/AdvancedDevices/GetDevicesByMapLayerItemType/${groupId}/${deviceTypeId}`;\r\n\t\tif (filter && filter.length > 0) {\r\n\t\t\turi += `?filter=${filter}`;\r\n\t\t}\r\n\t\tconst { data } = await this.axiosJson.get(uri);\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async fetchAudioDevicesByIds(deviceIds: number[]): Promise {\r\n\t\tlet idsAsQueryString = arrayToQueryString(\"deviceIds\", deviceIds);\r\n\t\tconst response = await this.axios.get(`/AdvancedDevices/AudioDeviceInformation?${idsAsQueryString}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async fetchAudioDevicesByGroupId(groupId: number): Promise {\r\n\t\tconst response = await this.axios.get(`/AdvancedDevices/AudioDeviceInformationForGroup/${groupId}`);\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async pagedServerTypeEvents(paginatedSearchRequest: ServerTypeEventsPagedQueryParams): Promise {\r\n\t\tlet serverTypesAsQueryString = arrayToQueryString(\"serverTypeIds\",paginatedSearchRequest.serverTypeIds)\r\n\t\tconst { data } = await this.axios.get(`/servertypeevents?`+\r\n\t\t\t\t\t\t\t\t\t\t\t\t`${serverTypesAsQueryString}` +\r\n\t\t\t\t\t\t\t\t\t\t\t\t`&page=${paginatedSearchRequest.page}` +\r\n\t\t\t\t\t\t\t\t\t\t\t\t`&pageSize=${paginatedSearchRequest.pageSize}` +\r\n\t\t\t\t\t\t\t\t\t\t\t\t`&searchTerm=${paginatedSearchRequest.searchTerm}` +\r\n\t\t\t\t\t\t\t\t\t\t\t\t`&sortBy=${paginatedSearchRequest.sortBy}` +\r\n\t\t\t\t\t\t\t\t\t\t\t\t`&sortDesc=${paginatedSearchRequest.sortDesc}`\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAreaMaskingCount(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/groups/MaskingStatesCount\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveSyncSystems(pageRequest?: PaginatedSearchRequest): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Sync/SyncSystems`, pageRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveSyncSystemsCount(): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Sync/SyncSystems/Count`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async addOrUpdateSyncSystem(syncSystem: SyncSystem): Promise {\r\n\t\tvar response = await this.axios.put(\"/Sync/SyncSystem\", syncSystem)\r\n\t\tif (response) {\r\n\t\t\tif (response.status == 200 && syncSystem.syncSystemId > 0)\r\n\t\t\t{\r\n\t\t\t\treturn syncSystem.syncSystemId\r\n\t\t\t}\r\n\t\t\telse if (response.status == 201)\r\n\t\t\t{\r\n\t\t\t\treturn parseInt(response.data.replace(/\\D/g,\"\"));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async deleteSyncSystem(syncSystemId: number): Promise {\r\n\t\tawait this.axios.delete(`/Sync/SyncSystem/${syncSystemId}`);\r\n\t}\r\n\r\n\tpublic async groupSyncsForSyncSystem(syncSystemId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/Sync/GroupSyncsForSync/${syncSystemId}`)\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async RetrieveLatestQueueStateForGroupSync(groupSyncId: number): Promise {\r\n\t\tconst response = await this.axios.get(`/Sync/LatestGroupSyncQueue/${groupSyncId}`)\r\n\t\treturn response.data;\r\n\t}\r\n\r\n\tpublic async addOrUpdateGroupSync(groupSync: GroupSyncModel): Promise {\r\n\t\tawait this.axiosJson.put(`/Sync/GroupSync/`, groupSync)\r\n\t}\r\n\r\n\tpublic async deleteGroupSync(groupSyncId: number): Promise {\r\n\t\tawait this.axiosJsonDirectInstance.delete(`/Sync/GroupSync/${groupSyncId}`)\r\n\t}\r\n\r\n\tpublic async queueGroupSync(groupSyncId: number): Promise {\r\n\t\tawait this.axios.post(`/Sync/QueueGroupSync/${groupSyncId}`)\r\n\t}\r\n\r\n\tpublic async retrieveLastSyncQueueStates(syncSystemId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`Sync/LatestQueue/${syncSystemId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async syncQueueForGroupSync(groupSyncId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`Sync/SyncQueueForGroupSync/${groupSyncId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async auditTrailForGroupSyncQueue(syncQueueId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`Sync/GroupSyncQueueAudit/${syncQueueId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateInitialAlarmLocation(eventId : number , latlng: string) : Promise {\r\n\t\treturn await this.axios.post(`Event/UpdateInitialAlarmLocation`, { eventId: eventId , latLngString: latlng });\r\n\t}\r\n\r\n\tpublic async suiteSamlGenerate(user: string, isMobile: boolean = false): Promise {\r\n\t\treturn await this.axios.get(`login/SuiteSaml?user=${encodeURIComponent(user)}&isFieldOpsMobile=${isMobile}`);\r\n\t}\r\n\r\n\tpublic async mfaRedirectUrl(): Promise {\r\n\t\tconst { data } = await this.axios.get(`login/MFARedirectUrl`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAlarmAutomations(alarmId: number): Promise{\r\n\t\tconst { data } = await this.axiosJson.get(`Alarms/${alarmId}/Actions`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateAlarmAutomation(alarmId: number, responseAction: ResponseAction): Promise {\r\n\t\tconst { data } = await this.axiosJson.put(`Alarms/${alarmId}/Actions`, responseAction);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createAlarmAutomation(alarmId: number, responseAction: ResponseAction): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(`Alarms/${alarmId}/Actions`, responseAction);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAlarmAutomation(alarmId: number, actionId: number): Promise{\r\n\t\tconst { data } = await this.axiosJson.get(`Alarms/${alarmId}/Actions/${actionId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteAlarmAutomation(alarmId: number, actionId: number): Promise {\r\n\t\tconst { data } = await this.axiosJson.delete(`Alarms/${alarmId}/Actions/${actionId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getSupportedActionTypes(): Promise {\r\n\t\tconst { data } = await this.axiosJson.get(`alarms/SupportedActionTypes`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getAutomationLimit(groupID: number): Promise {\r\n\t\tconst { data } = await this.axiosJson.get(`alarms/AutomationLimit/${groupID}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getElevationLabels(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"MapLayers/MapItems/GetElevationLabelsByTenantId\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async requiresConfiguration(): Promise\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tconst { data } = await this.axios.get(\"Login/RequiresConfiguration\");\r\n\t\t\treturn data;\r\n\t\t}\r\n\t\tcatch (err)\r\n\t\t{\r\n\t\t\tconsole.error(err);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async raiseSystemLog(healthCheckRequest : HealthCheckRequest) {\r\n\t\tconst { data } = await this.axiosJson.post(`systemView/addHealthEntry`, healthCheckRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getSystemViewTree(groupID: number, params: SystemViewRequestTreeParams): Promise {\r\n\t\tconst { data } = await this.axiosJson.get(`SystemView/SetupTree/${groupID}`, {\r\n\t\t\tparams\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getSetupSummary(objectTypeId: number, objectId: number): Promise {\r\n\t\tconst { data } = await this.axiosJson.get(`SystemView/SetupSummary?objectTypeId=${objectTypeId}&objectId=${objectId}`);\r\n\t\treturn data\r\n\t}\r\n\r\n\tpublic async getSystemViewSetupEntities(\r\n\t\tobjectTypeId: ObjectTypeId,\r\n\t\tobjectId: number,\r\n\t\tdevicesToSkip:number,\r\n\t\tresponsesToSkip:number,\r\n\t\tparams: SystemViewRequestTreeParams,\r\n\t\tcount: number = 200\r\n\t): Promise {\r\n\t\tconst { data } = await this.axiosJson.get(`SystemView/SetupEntities/${objectTypeId}/${objectId}/${devicesToSkip}/${responsesToSkip}/${count}`, { params });\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getSystemLogs(objectTypeId: ObjectTypeId, objectId: number, count: number = 10, maxSystemLogId: number = null): Promise\r\n\t{\r\n\t\tconst { data } = await this.axiosJson.get(`SystemLog/GetSystemLogByObjectTypeIdAndObjectId?objectTypeId=${objectTypeId}&objectId=${objectId}&count=${count}&maxSystemLogId=${maxSystemLogId}`)\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getSystemHealthStatus(refresh: boolean = false): Promise\r\n\t{\r\n\t\tconst { data } = await this.axiosJson.get(`SystemView/GetSystemHealthStatus?refreshCache=${refresh}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getSituationalAwarenessQueue() : Promise {\r\n\t\tconst { data } = await this.axios.get(\"/SituationalAwarenessEventQueue\");\r\n\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async promoteSituationalAwarenessQueueEntry(promoteRequest: SituationalAwarenessEventQueueActionRequest) : Promise\r\n\t{\r\n\t\tconst { data } = await this.axios.post(\"/SituationalAwarenessEventQueue/Promote\", promoteRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async dismissSituationalAwarenessQueueEntry(dismissRequest: SituationalAwarenessEventQueueActionRequest) : Promise\r\n\t{\r\n\t\tconst { data } = await this.axios.post(\"/SituationalAwarenessEventQueue/Dismiss\", dismissRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getServerTypesForTenant(): Promise\r\n\t{\r\n\t\tconst { data } = await this.axiosJson.get(\"Servers/ServerTypesForTenant\");\r\n\t\treturn data?.map(type => { return { serverTypeId: type.serverTypeID, title: type.title }});\r\n\t}\r\n\r\n\tpublic async retrieveRules(paginatedSearchRequest: PaginatedSearchRequest): Promise\r\n\t{\r\n\t\tconst { data } = await this.axios.get(\"/Rules\", paginatedSearchRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdateRule(rule: Rule): Promise {\r\n\t\ttry {\r\n\t\t\tawait this.axiosJsonDirectInstance.put(\"/Rules\", rule);\r\n\t\t\treturn true;\r\n\t\t} catch(e) {\r\n\t\t\tif(e.response)\r\n\t\t\t{\r\n\t\t\t\tVue.prototype.$notify({\r\n\t\t\t\t\ttype: e.response.status == 404 ? \"neutralError\" : \"error\",\r\n\t\t\t\t\ttitle: \"Error\",\r\n\t\t\t\t\ttext: e.response.data,\r\n\t\t\t\t\tignoreDuplicates: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tVue.prototype.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Error\",\r\n\t\t\t\t\ttext: \"Unknown issue occurred\",\r\n\t\t\t\t\tignoreDuplicates: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async DeleteRule(ruleId: number): Promise {\r\n\t\treturn await this.axios.delete(`/rules/${ruleId}`);\r\n\t}\r\n\r\n\tpublic async retrieveRuleServerTypes(): Promise\r\n\t{\r\n\t\tconst { data } = await this.axios.get(\"/Rules/ServerTypes\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveRuleServersForServerType(serverTypeId: number): Promise\r\n\t{\r\n\t\tconst { data } = await this.axios.get(`/Rules/Servers/${serverTypeId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveRuleServerTypeEventsForServerType(serverTypeId: number): Promise\r\n\t{\r\n\t\tconst { data } = await this.axios.get(`/Rules/ServerTypeEvents/${serverTypeId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveRuleActionPlans(): Promise\r\n\t{\r\n\t\tconst { data } = await this.axios.get(\"/Rules/ActionPlans\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveRuleAlarmsForGroupId(groupId: number): Promise\r\n\t{\r\n\t\tconst { data } = await this.axios.get(`/Rules/Alarms/${groupId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getCameraPresets(device: DeviceDetails) : Promise {\r\n\t\tconst { data } = await this.axiosJson.get(`/Presets/GetPresets`, {\r\n\t\t\tparams: {\r\n\t\t\t\tdeviceId: device.deviceID\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createNewCameraPreset(presetConfigPayload : DeviceConfigurationPresetPayload) : Promise {\r\n\t\tconst { data } = await this.axiosJson.post(`/Presets/CreatePreset`, presetConfigPayload);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateCameraPreset(presetConfigPayload : DeviceConfigurationPresetPayload) : Promise {\r\n\t\tconst { data } = await this.axiosJson.put(`/Presets/UpdatePreset`, presetConfigPayload);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteCameraPreset(presetConfigPayload : DeviceConfigurationPresetPayload) : Promise {\r\n\t\tconst { data } = await this.axiosJson.delete(`/Presets/DeletePreset`, {\r\n\t\t\tparams: {\r\n\t\t\t\tdeviceId: presetConfigPayload.deviceId,\r\n\t\t\t\tgroupId: presetConfigPayload.groupId,\r\n\t\t\t\tname: presetConfigPayload.name,\r\n\t\t\t\tposition: presetConfigPayload.position\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdateCameraPresets(presetPayloads: DeviceConfigurationPresetPayload[]): Promise\r\n\t{\r\n\t\tconst { data } = await this.axiosJson.put(`/Presets/CreateOrUpdatePresets`, presetPayloads);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveDistanceConfigurations(paginatedSearchRequest?: PaginatedSearchRequest): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/DistanceConfiguration\", paginatedSearchRequest);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async createOrUpdateDistanceConfiguration(distanceConfiguration: DistanceConfiguration): Promise {\r\n\t\tawait this.axiosJson.put(\"/DistanceConfiguration\", distanceConfiguration);\r\n\t}\r\n\r\n\tpublic async deleteDistanceConfiguration(distanceConfigurationId: number): Promise {\r\n\t\tawait this.axios.delete(`/DistanceConfiguration/${distanceConfigurationId}`);\r\n\t}\r\n\r\n\tpublic async retrieveDistanceConfigurationMaxRadius(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/DistanceConfiguration/maxRadius\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveDistanceConfigurationAlarmDecoders(): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/DistanceConfiguration/ServerTypes\");\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateClosedEventOutcome(request: UpdateEventOutcomeRequest): Promise {\r\n\t\tawait this.axiosJson.post(`/Outcomes/UpdateEventOutcome`, request);\r\n\t}\r\n\r\n\tpublic async updateEventOutcomeByNotification(request: UpdateEventOutcomeRequest): Promise {\r\n\t\tawait this.axiosJson.post(`/Outcomes/UpdateEventOutcomeByNotification`, request);\r\n\t}\r\n\r\n\tpublic async joinClosedEvent(eventId: number) : Promise {\r\n\t\tawait this.axios.get(`/EventShare/JoinClosedEvent/${eventId}`);\r\n\t}\r\n\r\n\tpublic async getUsersInfoBySearchTerm(searchQuery: string, userLimit: number, excludeUsers: boolean): Promise {\r\n\t\tconst { data } = await this.axios.get(\"/users/GetUsersAndContactsBySearch\", {\r\n\t\t\tparams: {\r\n\t\t\t\tsearchQuery: searchQuery,\r\n\t\t\t\tuserLimit: userLimit,\r\n\t\t\t\tExcludeUsers: excludeUsers,\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async addInvolvedParty(request: AddInvolvedPartyRequest): Promise {\r\n\t\tawait this.axiosJson.put(\"/InvolvedParty/AddInvolvedParty\", request);\r\n\t}\r\n\r\n\tpublic async removeInvolvedParty(request: RemoveInvolvedPartyRequest): Promise {\r\n\t\tawait this.axiosJson.put(\"/InvolvedParty/RemoveInvolvedParty\", request);\r\n\t}\r\n\r\n\tpublic async getInvolvedPartiesForEvent(eventId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/InvolvedParty/InvolvedPartiesForEvent/${eventId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getReloadEventQueuePref(groupId: number): Promise {\r\n\t\tconst { data } = await this.axios.get(`/groups/ReloadEventQueue/${groupId}`);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async getServerTypeFilterOptions(\r\n\t\tpage: number,\r\n\t\tpageSize: number,\r\n\t\tsearchTerm: string)\r\n\t\t: Promise {\r\n\r\n\t\tlet query = `/servers/GetServerTypesForTenantBySearch?` +\r\n\t\t\t`page=${page}&` +\r\n\t\t\t`pageSize=${pageSize}&` +\r\n\t\t\t`searchTerm=${searchTerm}`;\r\n\r\n\t\tconst { data } = await this.axios.get(query);\r\n\t\treturn data\r\n\t}\r\n\r\n\tpublic async getServerTypeEventsFilterOptions(\r\n\t\tpage: number,\r\n\t\tpageSize: number,\r\n\t\tsearchTerm: string,\r\n\t\tserverTypeIds: number[])\r\n\t\t: Promise {\r\n\r\n\t\tlet query = `/servertypeevents/GetServerTypeEventFilterOptions?` +\r\n\t\t\t`${arrayToQueryString(\"serverTypeIds\", serverTypeIds)}&` +\r\n\t\t\t`page=${page}&` +\r\n\t\t\t`pageSize=${pageSize}&` +\r\n\t\t\t`searchTerm=${searchTerm}`;\r\n\r\n\t\tconst { data } = await this.axios.get(query);\r\n\t\treturn data\r\n\t}\r\n}\r\nconst api = new ImmixCloudV2ApiHttp();\r\nexport default api;\r\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExternalMapLayerPropertiesSetup.vue?vue&type=style&index=0&id=b367731a&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaTable.vue?vue&type=style&index=0&id=d3c3de5c&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column\"},[_c('scrollbar',{ref:\"scrollbar\",staticClass:\"flex-dynamic\",attrs:{\"settings\":{ suppressScrollX: true }},on:{\"ps-y-reach-end\":function($event){return _vm.reachedEndOfHistory()}}},[_c('b-table',{staticClass:\"verticalAlign\",attrs:{\"fields\":_vm.fields,\"items\":_vm.assetHistory,\"show-empty\":true},scopedSlots:_vm._u([{key:\"cell(details)\",fn:function(row){return [_vm._v(\" \"+_vm._s(row.item.details)+\" \"),(!_vm.selectedAssetID)?_c('section',[_c('i',{staticStyle:{\"font-size\":\"0.8em\"}},[_vm._v(\" \"+_vm._s(\"Changed by: \" + row.item.name))])]):_vm._e()]}},{key:\"custom-foot\",fn:function(){return [(_vm.loadingHistory)?_c('td',{attrs:{\"colspan\":\"3\"}},[_c('i',{staticClass:\"fas fa-spinner fa-spin ml-1\"}),_vm._v(\" Loading, please wait... \")]):_vm._e()]},proxy:true}])})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue, Watch, Mixins } from \"vue-property-decorator\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport api from '@/services/api.service';\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport { AssetAuditHistory } from './types';\r\nimport RegionalHandlerMixin from '@/mixins/RegionalHandlerMixin';\r\nconst { displayDateFromISOString, fromNow } = formatDateMixin.methods;\r\n\r\nconst maxRows = 50;\r\n@Component({\r\n\tcomponents: { scrollbar: VuePerfectScrollbar }\r\n})\r\nexport default class MobileAssetHistory extends Vue {\r\n @Prop()\r\n private selectedAssetID: number | null;\r\n\r\n @Prop({default: false, type:Boolean})\r\n private showExactTime: boolean; \r\n\r\n private endOfHistory: boolean = false;\r\n private loadingHistory: boolean = false;\r\n private fields: any[] =\r\n [\r\n {\r\n key: \"created\",\r\n label : \"Time\",\r\n formatter: created => { \r\n if(this.showExactTime)\r\n return displayDateFromISOString(created);\r\n return fromNow(created).replace('hours', 'hrs').replace('minutes','min');\r\n },\r\n thStyle: { width: '20%'}\r\n },\r\n {\r\n key: \"assetTitle\",\r\n label : \"Asset\",\r\n thStyle: { width: '20%'},\r\n tdClass: this.selectedAssetID ? \"d-none\" : \"\",\r\n thClass: this.selectedAssetID ? \"d-none\" : \"\",\r\n },\r\n {\r\n key: \"name\",\r\n label : \"Name\",\r\n thStyle: { width: '20%'},\r\n tdClass: !this.selectedAssetID ? \"d-none\" : \"\",\r\n thClass: !this.selectedAssetID ? \"d-none\" : \"\",\r\n },\r\n {\r\n key: \"details\",\r\n label : \"Details\"\r\n }\r\n ];\r\n\r\n private assetHistory: any[] = [];\r\n private currentRows: number = maxRows;\r\n\r\n private async mounted() {\r\n if(this.selectedAssetID){\r\n this.loadAssetHistory(null, this.selectedAssetID);\r\n } else {\r\n this.assetHistory = await this.getHistory(maxRows);\r\n }\r\n }\r\n\r\n private async reachedEndOfHistory(){\r\n if(this.endOfHistory || this.loadingHistory)\r\n return;\r\n\r\n\r\n let nextHistory = await this.getHistory(maxRows)\r\n nextHistory = nextHistory.filter(x => !this.assetHistory.map(x => { return x.eventRecordID }).includes(x.eventRecordID));\r\n\r\n if (nextHistory && nextHistory.length > 0){\r\n this.assetHistory = this.assetHistory.concat(nextHistory);\r\n this.currentRows += maxRows; //increment the current row count\r\n } else {\r\n this.endOfHistory = true;\r\n }\r\n\r\n //set a short delay in between loading to ensure multiple calls aren't made\r\n setTimeout(() => { this.loadingHistory = false }, 150);\r\n }\r\n\r\n private get lastEventRecordId() : number | null {\r\n if(!this.assetHistory || this.assetHistory.length === 0){\r\n return 0;\r\n } else {\r\n return this.assetHistory[this.assetHistory.length - 1].eventRecordID;\r\n }\r\n }\r\n\r\n public async reloadHistory(){\r\n this.assetHistory = await this.getHistory(this.currentRows, true)\r\n }\r\n\r\n @Watch(\"selectedAssetID\")\r\n private async loadAssetHistory(oldId:number | null, newId: number | null){\r\n if(oldId === newId){\r\n if(oldId && newId){\r\n this.reloadHistory();\r\n }\r\n return;\r\n }\r\n\r\n if(this.selectedAssetID){\r\n //reset state\r\n this.assetHistory = [];\r\n this.endOfHistory = false;\r\n this.currentRows = maxRows;\r\n this.assetHistory = await this.getHistory(maxRows);\r\n }\r\n }\r\n\r\n private async getHistory(rowCount:number, fromStart: boolean = false): Promise{\r\n this.loadingHistory = true;\r\n try \r\n {\r\n if(this.selectedAssetID){\r\n return await api.getAssetAuditHistory({\r\n assetId: this.selectedAssetID,\r\n maxRows: rowCount,\r\n beforeEventRecordId: fromStart ? 0 : this.lastEventRecordId\r\n });\r\n } else {\r\n return await api.getAssetsStatusHistory(\r\n rowCount,\r\n fromStart ? 0 : this.lastEventRecordId\r\n );\r\n }\r\n } finally {\r\n this.loadingHistory = false;\r\n }\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileAssetHistory.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileAssetHistory.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MobileAssetHistory.vue?vue&type=template&id=0634d8cd&scoped=true\"\nimport script from \"./MobileAssetHistory.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileAssetHistory.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MobileAssetHistory.vue?vue&type=style&index=0&id=0634d8cd&prod&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 \"0634d8cd\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{attrs:{\"visible\":_vm.getPutEventOnTestShown},on:{\"hidden\":_vm.close}},[_c('template',{slot:\"modal-header\"},[_c('div',{staticClass:\"text-left\"},[_c('h5',{staticClass:\"mb-0\"},[_vm._v(\"Put Event on Test (Audit Mode)\")])])]),_c('on-test-schedule-form',{ref:\"scheduleForm\",on:{\"validate\":function($event){_vm.isValid = $event}},model:{value:(_vm.onTestRequest),callback:function ($$v) {_vm.onTestRequest=$$v},expression:\"onTestRequest\"}}),_c('template',{slot:\"modal-footer\"},[_c('button',{staticClass:\"btn btn-primary ksConfirm\",attrs:{\"disabled\":!_vm.isValid || _vm.isProcessing},on:{\"click\":_vm.submit}},[(!_vm.isProcessing)?_c('span',[_vm._v(\"Ok\")]):_c('span',[_c('i',{staticClass:\"fas fa-spinner fa-spin\"})])]),_c('button',{staticClass:\"btn btn-secondary\",attrs:{\"disabled\":_vm.isProcessing},on:{\"click\":_vm.close}},[_vm._v(\"Cancel\")])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { CancelTokenSource } from \"axios\";\r\n\r\nexport interface AlarmPointState {\r\n\tselectedArea: any,\r\n\tdisplayResponseId: number | null,\r\n\tresponses: any[],\r\n\talarmPointManagerOpen: boolean,\r\n\tcancelTokenSource: CancelTokenSource | null,\r\n\tselectedResponse: any,\r\n\tdisableAutomaticLoad: boolean\r\n}\r\n\r\nexport enum OnTestScheduleType {\r\n\tForPeriod = 1,\r\n\tUntilDate = 2\r\n}\r\n\r\nexport class OnTestRequest {\r\n\tgroupId?: number;\r\n\tresponseId?: number;\r\n\r\n\thours: number | null;\r\n\tminutes: number | null;\r\n\tdate: Date | null;\r\n\ttime?: string;\r\n\tscheduleType: number;\r\n\tauditMode: boolean;\r\n\tonTestNote: string;\r\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex\"},[_c('b-form',{staticClass:\"flex-grow-1\"},[_c('b-form-group',[_c('b-form-radio-group',{attrs:{\"id\":\"schedule-type-select\"},model:{value:(_vm.onTestRequest.scheduleType),callback:function ($$v) {_vm.$set(_vm.onTestRequest, \"scheduleType\", $$v)},expression:\"onTestRequest.scheduleType\"}},[_c('b-form-radio',{staticClass:\"custom-control-sm\",attrs:{\"value\":_vm.scheduleType.forPeriod}},[_vm._v(\" For a Fixed Period \")]),_c('b-form-radio',{staticClass:\"custom-control-sm\",attrs:{\"value\":_vm.scheduleType.untilDate}},[_vm._v(\" Until Date/Time \")])],1)],1),(_vm.onTestRequest.scheduleType === _vm.scheduleType.forPeriod)?_c('div',{key:0,staticClass:\"form-row\"},[_c('b-form-group',{staticClass:\"col-sm-6\",attrs:{\"label\":\"Hours\",\"label-class\":\"pb-0\",\"state\":_vm.$v.onTestRequest.hours.$dirty ? !_vm.$v.onTestRequest.hours.$error : null}},[_c('template',{slot:\"label\"},[_c('label',[_vm._v(\" Hours: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-input',{class:['mr-sm-2', _vm.$v.onTestRequest.hours.$error ? 'invalid' : ''],attrs:{\"id\":\"schedule-hours\",\"placeholder\":\"Hours\",\"type\":\"number\"},on:{\"blur\":_vm.$v.onTestRequest.hours.$touch},model:{value:(_vm.onTestRequest.hours),callback:function ($$v) {_vm.$set(_vm.onTestRequest, \"hours\", $$v)},expression:\"onTestRequest.hours\"}}),(_vm.$v.onTestRequest.hours.$error)?_c('sub',{staticClass:\"animated-fast fadeInDown small text-danger\"},[_vm._v(\" Required \")]):_vm._e()],2),_c('b-form-group',{staticClass:\"col-sm-6\",attrs:{\"label\":\"Minutes\",\"label-class\":\"pb-0\"}},[_c('template',{slot:\"label\"},[_c('label',[_vm._v(\" Minutes: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-input',{class:['mr-sm-2', _vm.$v.onTestRequest.minutes.$error ? 'invalid' : ''],attrs:{\"id\":\"schedule-minutes\",\"placeholder\":\"Minutes\",\"type\":\"number\"},on:{\"blur\":_vm.$v.onTestRequest.minutes.$touch},model:{value:(_vm.onTestRequest.minutes),callback:function ($$v) {_vm.$set(_vm.onTestRequest, \"minutes\", $$v)},expression:\"onTestRequest.minutes\"}}),(_vm.$v.onTestRequest.minutes.$error)?_c('sub',{staticClass:\"animated-fast fadeInDown small text-danger\"},[_vm._v(\" Required \")]):_vm._e()],2)],1):(_vm.onTestRequest.scheduleType === _vm.scheduleType.untilDate)?_c('div',{key:1,staticClass:\"form-row\"},[_c('b-form-group',{staticClass:\"col-sm-8\",attrs:{\"label\":\"Date\",\"label-class\":\"pb-0\"}},[_c('template',{slot:\"label\"},[_c('label',[_vm._v(\" Date: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('date-picker',{staticClass:\"form-group mr-sm-2 m-b-0\",attrs:{\"id\":\"schedule-datepicker\",\"placeholder\":\"Date\",\"lang\":\"en\",\"calendar-class\":\"calendar\",\"typeable\":true,\"input-class\":_vm.$v.onTestRequest.date.$error ? 'invalid' : '',\"bootstrap-styling\":true,\"disabled-dates\":_vm.calendarDisabledDates,\"highlighted\":{ includeDisabled: true },\"format\":_vm.calendarDateFormatter,\"monday-first\":true,\"append-to-body\":true},on:{\"blur\":_vm.$v.onTestRequest.date.$touch},model:{value:(_vm.onTestRequest.date),callback:function ($$v) {_vm.$set(_vm.onTestRequest, \"date\", $$v)},expression:\"onTestRequest.date\"}}),(_vm.$v.onTestRequest.date.$error)?_c('span',{staticClass:\"fadeInDown animated-fast\"},[(!_vm.$v.onTestRequest.date.required)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\" Required \")]):_vm._e(),(!_vm.$v.onTestRequest.date.minValue)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\" Cannot be in the past \")]):_vm._e()]):_vm._e()],2),_c('b-form-group',{staticClass:\"col-sm-4\",attrs:{\"label\":\"Time\",\"label-class\":\"pb-0\"}},[_c('template',{slot:\"label\"},[_c('label',[_vm._v(\" Time: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-input',{class:['time-input mr-sm-2', _vm.$v.onTestRequest.time.$error ? 'invalid' : ''],attrs:{\"id\":\"schedule-time\",\"pattern\":\"[0-9]{2}:[0-9]{2}\",\"placeholder\":\"HH:mm\",\"type\":\"time\",\"min\":_vm.minTimeForSelectedDate},on:{\"blur\":_vm.$v.onTestRequest.time.$touch},model:{value:(_vm.onTestRequest.time),callback:function ($$v) {_vm.$set(_vm.onTestRequest, \"time\", $$v)},expression:\"onTestRequest.time\"}}),(_vm.$v.onTestRequest.time.$error)?_c('span',{staticClass:\"fadeInDown animated-fast\"},[(!_vm.$v.onTestRequest.time.minTime)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\" Cannot be in the past \")]):(!_vm.$v.onTestRequest.time.pattern)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\" Must be in the format HH:mm \")]):(!_vm.$v.onTestRequest.time.required)?_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\" Required \")]):_vm._e()]):_vm._e()],2)],1):_vm._e(),_c('b-form-group',{attrs:{\"label\":\"Note\",\"label-class\":\"pb-0\"}},[_c('template',{slot:\"label\"},[_c('label',[_vm._v(\" Note: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])])]),_c('b-textarea',{class:['custom-textarea', _vm.$v.onTestRequest.onTestNote.$error ? 'invalid' : ''],attrs:{\"id\":\"schedule-note\",\"placeholder\":\"On test note\",\"max\":\"500\",\"no-resize\":\"\"},on:{\"blur\":_vm.$v.onTestRequest.onTestNote.$touch},model:{value:(_vm.onTestRequest.onTestNote),callback:function ($$v) {_vm.$set(_vm.onTestRequest, \"onTestNote\", $$v)},expression:\"onTestRequest.onTestNote\"}}),(_vm.$v.onTestRequest.onTestNote.$error)?_c('sub',{staticClass:\"fadeInDown animated-fast small text-danger\"},[_vm._v(\" Required \")]):_vm._e()],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Component, Prop, Watch, Emit } from \"vue-property-decorator\";\r\nimport { OnTestRequest, OnTestScheduleType } from \"@/store/alarm-points/types\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required, requiredIf, minValue, maxValue, numeric, minLength } from \"vuelidate/lib/validators\";\r\n\r\nimport moment from \"moment\";\r\nimport DatePicker from \"@sureview/vuejs-datepicker\";\r\nimport { stringMixin } from \"@/mixins\";\r\n\r\nconst { isNullOrWhitespace } = stringMixin.methods;\r\n\r\n@Component({\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\tonTestRequest: {\r\n\t\t\thours: {\r\n\t\t\t\tnumeric,\r\n\t\t\t\trequired: requiredIf(function() {\r\n\t\t\t\t\treturn this.onTestRequest.scheduleType == this.scheduleType.forPeriod && !this.onTestRequest.minutes;\r\n\t\t\t\t}),\r\n\t\t\t\tminValue: minValue(0)\r\n\t\t\t},\r\n\t\t\tminutes: {\r\n\t\t\t\tnumeric,\r\n\t\t\t\trequired: requiredIf(function() {\r\n\t\t\t\t\treturn this.onTestRequest.scheduleType == this.scheduleType.forPeriod && !this.onTestRequest.hours;\r\n\t\t\t\t}),\r\n\t\t\t\tminValue: minValue(0)\r\n\t\t\t},\r\n\t\t\tdate: {\r\n\t\t\t\trequired: requiredIf(function() {\r\n\t\t\t\t\treturn this.onTestRequest.scheduleType == this.scheduleType.untilDate;\r\n\t\t\t\t}),\r\n\t\t\t\tminValue: minValue(new Date().setHours(0, 0, 0, 0))\r\n\t\t\t},\r\n\t\t\ttime: {\r\n\t\t\t\tpattern: function(value) {\r\n\t\t\t\t\tif (typeof value == \"undefined\" || value == null || value == \"\") return true;\r\n\t\t\t\t\treturn /^[0-9]{2}:[0-9]{2}$/.test(value);\r\n\t\t\t\t},\r\n\t\t\t\tminTime: function(value) {\r\n\t\t\t\t\tlet timeHasValue = typeof value !== \"undefined\" && !isNullOrWhitespace(value);\r\n\t\t\t\t\tlet dateHasValue =\r\n\t\t\t\t\t\ttypeof this.onTestRequest.date !== \"undefined\" && this.onTestRequest.date !== null;\r\n\t\t\t\t\tlet needsChecking = this.onTestRequest.scheduleType === this.scheduleType.untilDate;\r\n\r\n\t\t\t\t\tif (!timeHasValue || !dateHasValue || !needsChecking) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst now = new Date().setHours(0, 0, 0, 0);\r\n\t\t\t\t\tconst requestDate = this.onTestRequest.date.setHours(0, 0, 0, 0);\r\n\r\n\t\t\t\t\tif (now === requestDate) {\r\n\t\t\t\t\t\t// If the user has chosen today as the re-arm date, we need to make sure that the time they've\r\n\t\t\t\t\t\t// entered is greater than the current time.\r\n\t\t\t\t\t\tvar momentTime = moment(value, \"HH:mm\", true).toDate();\r\n\t\t\t\t\t\treturn momentTime > new Date();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// If the user hasn't chosen today, just make sure that the date they've entered is in the future.\r\n\t\t\t\t\t\treturn requestDate > now;\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\trequired: requiredIf(function() {\r\n\t\t\t\t\treturn this.onTestRequest.scheduleType == this.scheduleType.untilDate;\r\n\t\t\t\t})\r\n\t\t\t},\r\n\t\t\tonTestNote: {\r\n\t\t\t\trequired,\r\n\t\t\t\tminLength: minLength(1)\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tcomponents: {\r\n\t\t\"date-picker\": DatePicker\r\n\t}\r\n})\r\nexport default class OnTestScheduleForm extends Vue {\r\n\t@Prop() public readonly value: OnTestRequest;\r\n\r\n\t/** Consts */\r\n\tpublic scheduleType = {\r\n\t\tforPeriod: OnTestScheduleType.ForPeriod,\r\n\t\tuntilDate: OnTestScheduleType.UntilDate\r\n\t};\r\n\r\n\tpublic readonly today = new Date();\r\n\r\n\t/**\r\n\t * Copy of the value, where the edits are to be applied.\r\n\t */\r\n\tprivate onTestRequest: OnTestRequest = {\r\n\t\thours: null,\r\n\t\tminutes: null,\r\n\t\tdate: new Date(),\r\n\t\ttime: this.defaultTime,\r\n\t\tscheduleType: OnTestScheduleType.ForPeriod,\r\n\t\tauditMode: true,\r\n\t\tonTestNote: null\r\n\t};\r\n\r\n\t/**\r\n\t * Disables any dates before today in the calendar.\r\n\t */\r\n\tprivate calendarDisabledDates = {\r\n\t\tto: new Date(this.today.setDate(this.today.getDate() - 1))\r\n\t};\r\n\r\n\t/**\r\n\t * May not be entirely required - this is just used to set the min property for the HTML5 time input,\r\n\t * but we don't actually use HTML5 validation.\r\n\t */\r\n\tpublic get minTimeForSelectedDate() {\r\n\t\tconst today = new Date().setHours(0, 0, 0, 0);\r\n\t\tconst defaultMinTime = \"00:00\";\r\n\r\n\t\tif (typeof this.onTestRequest.date == \"undefined\" || this.onTestRequest.date == null) {\r\n\t\t\treturn defaultMinTime;\r\n\t\t}\r\n\r\n\t\tvar selectedDate = this.onTestRequest.date.setHours(0, 0, 0, 0);\r\n\r\n\t\tif (selectedDate === today) {\r\n\t\t\treturn moment().format(\"HH:mm\");\r\n\t\t} else {\r\n\t\t\treturn defaultMinTime;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a default time (current time + 1 hour) to end the test.\r\n\t */\r\n\tpublic get defaultTime() {\r\n\t\treturn moment()\r\n\t\t\t.add({ hours: 1 })\r\n\t\t\t.format(\"HH:mm\");\r\n\t}\r\n\r\n\t/**\r\n\t * Watcher to ensure our edit model is kept up-to-date.\r\n\t */\r\n\t@Watch(\"value\")\r\n\tpublic onValueChanged(newValue) {\r\n\t\tthis.onTestRequest = newValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Watcher which allows us to bubble up validation, and trigger a v-model update if we have valid data.\r\n\t */\r\n\t@Watch(\"$v.$invalid\", { immediate: true })\r\n\tpublic onValidate(hasErrors) {\r\n\t\tif (!hasErrors) {\r\n\t\t\tthis.onInput();\r\n\t\t}\r\n\r\n\t\tthis.$emit(\"validate\", !hasErrors);\r\n\t}\r\n\r\n\t/**\r\n\t * Emitter to update our v-model binding\r\n\t */\r\n\t@Emit(\"input\")\r\n\tpublic onInput() {\r\n\t\treturn this.onTestRequest;\r\n\t}\r\n\r\n\t/**\r\n\t * Formatting function for the date picker.\r\n\t */\r\n\tpublic calendarDateFormatter(date: string) {\r\n\t\treturn moment(date).format(\"L\");\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnTestScheduleForm.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnTestScheduleForm.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./OnTestScheduleForm.vue?vue&type=template&id=798357ac&scoped=true\"\nimport script from \"./OnTestScheduleForm.vue?vue&type=script&lang=ts\"\nexport * from \"./OnTestScheduleForm.vue?vue&type=script&lang=ts\"\nimport style0 from \"./OnTestScheduleForm.vue?vue&type=style&index=0&id=798357ac&prod&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 \"798357ac\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Vue, Prop, Component, Watch, Emit } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Mutation } from \"vuex-class\";\r\nimport OnTestScheduleForm from \"@/components/alarm-points/OnTestScheduleForm.vue\";\r\nimport { OnTestRequest, OnTestScheduleType } from \"@/store/alarm-points/types\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport moment from \"moment\";\r\n\r\nconst siteMonitor = namespace(\"siteMonitor\");\r\n\r\n/**\r\n * Modal dialog which allows users to put an in-processing event into On Test mode via the site monitor.\r\n */\r\n@Component({\r\n\tcomponents: {\r\n\t\tOnTestScheduleForm\r\n\t}\r\n})\r\nexport default class PutEventOnTestModal extends Vue {\r\n\t@siteMonitor.Getter getPutEventOnTestShown: boolean;\r\n\t@siteMonitor.Getter(\"getEventDetails\") eventDetails: EventDetails;\r\n\r\n\t@siteMonitor.Mutation setPutEventOnTestShown: (shown: boolean) => void;\r\n\r\n\t@siteMonitor.Action fetchEventDetails: (eventId: number) => Promise;\r\n\t@siteMonitor.Action putEventOnTest: ({\r\n\t\teventId,\r\n\t\tgroupId,\r\n\t\thours,\r\n\t\tminutes,\r\n\t\tdate,\r\n\t\tscheduleType,\r\n\t\tauditMode,\r\n\t\tonTestNote\r\n\t}) => Promise;\r\n\r\n\t/**\r\n\t * Is our form data valid?\r\n\t */\r\n\tprivate isValid: boolean = false;\r\n\r\n\t/**\r\n\t * Request object.\r\n\t */\r\n\tprivate onTestRequest: OnTestRequest = null;\r\n\r\n\t/**\r\n\t * Indicates the request is being processed.\r\n\t */\r\n\tprivate isProcessing: boolean = false;\r\n\r\n\t/**\r\n\t * Checks if we've got valid data, and if we have, submits it to the data service.\r\n\t */\r\n\tpublic async submit() {\r\n\t\tif (this.isValid && typeof this.onTestRequest !== \"undefined\" && this.onTestRequest !== null) {\r\n\t\t\tthis.isProcessing = true;\r\n\r\n\t\t\t\r\n\r\n\t\t\t// Attempt to submit the request, fetch the updated event data, and close the modal\r\n\t\t\ttry {\r\n\t\t\t\t// If someone has entered either minutes or hours, set the other to 0\r\n\t\t\t\tif (this.onTestRequest.scheduleType == OnTestScheduleType.ForPeriod) {\r\n\t\t\t\t\tif (this.onTestRequest.hours || this.onTestRequest.minutes) {\r\n\t\t\t\t\t\tthis.onTestRequest.hours = this.onTestRequest.hours || 0;\r\n\t\t\t\t\t\tthis.onTestRequest.minutes = this.onTestRequest.minutes || 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tawait this.putEventOnTest({\r\n\t\t\t\t\t\teventId: this.eventDetails.eventID,\r\n\t\t\t\t\t\tgroupId: this.eventDetails.groupID,\r\n\t\t\t\t\t\t...this.onTestRequest\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Combine the Date and Time parts of the request for submission\r\n\t\t\t\t\tvar momentTime = moment(this.onTestRequest.time, \"HH:mm\", true);\r\n\t\t\t\t\tvar hours = momentTime.hours();\r\n\t\t\t\t\tvar minutes = momentTime.minutes();\r\n\r\n\t\t\t\t\t// Calculate the datetime when this alarm is to be un-masked, and convert it to UTC\r\n\t\t\t\t\tvar formattedDate = moment(this.onTestRequest.date)\r\n\t\t\t\t\t\t.set({ hours, minutes, seconds: 0 })\r\n\t\t\t\t\t\t.utc()\r\n\t\t\t\t\t\t.format();\r\n\r\n\t\t\t\t\tawait this.putEventOnTest({\r\n\t\t\t\t\t\teventId: this.eventDetails.eventID,\r\n\t\t\t\t\t\tgroupId: this.eventDetails.groupID,\r\n\t\t\t\t\t\t...this.onTestRequest,\r\n\t\t\t\t\t\tdate: formattedDate\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Fetch updated event details which will trigger the 'extend test' etc buttons to appear\r\n\t\t\t\tawait this.fetchEventDetails(this.eventDetails.eventID);\r\n\t\t\t} catch (err) {\r\n\t\t\t\tconsole.error(`Could not put event into on test mode: ${err}`);\r\n\t\t\t} finally {\r\n\t\t\t\t// Set processing back to false and close the modal\r\n\t\t\t\tthis.isProcessing = false;\r\n\t\t\t\tthis.close();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Close the modal.\r\n\t */\r\n\tpublic close() {\r\n\t\tthis.setPutEventOnTestShown(false);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PutEventOnTestModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PutEventOnTestModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PutEventOnTestModal.vue?vue&type=template&id=7238ed6d&scoped=true\"\nimport script from \"./PutEventOnTestModal.vue?vue&type=script&lang=ts\"\nexport * from \"./PutEventOnTestModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./PutEventOnTestModal.vue?vue&type=style&index=0&id=7238ed6d&prod&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 \"7238ed6d\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmMaskDurationInput.vue?vue&type=style&index=0&id=676ec72a&prod&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"v-select dark\",class:[{ 'single': !_vm.multiple }, { 'open': _vm.isInputFocused }]},[_c('area-tree-select',{attrs:{\"placeholder\":\"Search all Areas...\",\"data-label\":\"areaTreeSelect\",\"reduce\":function (a) { return a.id; },\"append-to-body\":\"\",\"clearable\":false},model:{value:(_vm.selectedGroup),callback:function ($$v) {_vm.selectedGroup=$$v},expression:\"selectedGroup\"}}),(_vm.selectedGroup || _vm.selectedCameras.length > 0)?_c('div',{ref:\"toggleBox\",staticClass:\"dropdown-toggle\"},[_c('div',{staticClass:\"vs__selected-options\",class:{'focused': _vm.isInputFocused}},[_vm._l((_vm.selectedCameras),function(camera){return _c('span',{key:camera.deviceID,staticClass:\"selected-tag\"},[_vm._v(\" \"+_vm._s(camera.title)+\" \"),_c('i',{staticClass:\"remove-group fas fa-times\",on:{\"click\":function($event){return _vm.deselectCamera(camera)}}})])}),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.searchQuery),expression:\"searchQuery\"}],ref:\"searchBox\",staticClass:\"form-control\",staticStyle:{\"min-width\":\"100px\"},attrs:{\"type\":\"search\",\"placeholder\":(_vm.multiple || _vm.isInputFocused || !_vm.selectedCameras || _vm.selectedCameras.length === 0) ? 'Search or click an area to load cameras' : '',\"data-cy\":\"camera-select\",\"maxlength\":\"250\"},domProps:{\"value\":(_vm.searchQuery)},on:{\"focus\":_vm.displayDropdown,\"blur\":_vm.onBlur,\"input\":function($event){if($event.target.composing){ return; }_vm.searchQuery=$event.target.value}}})],2),_c('div',{staticClass:\"vs__actions\"},[_c('i',{staticClass:\"open-indicator\",attrs:{\"role\":\"presentation\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.setSearchFocus($event)}}})])]):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isInputFocused),expression:\"isInputFocused\"}],staticClass:\"dropdown-menu\",staticStyle:{\"overflow\":\"hidden\"},style:(_vm.menuStyle)},[_c('VuePerfectScrollbar',{ref:\"areaTreeScrollBar\",staticClass:\"p-1 flex-grow-1\",staticStyle:{\"height\":\"100%\"}},[(_vm.isLoading || _vm.areaCameras.length == 0)?_c('div',{staticClass:\"list-group-item\"},[(_vm.isLoading)?_c('span',[_vm._v(\" Loading... \"),_c('i',{staticClass:\"fas fa-spinner fa-spin\"})]):(_vm.areaCameras.length == 0)?_c('span',[_vm._v(\"No Cameras in Area\")]):_vm._e()]):_vm._e(),_vm._l((_vm.areaCameras),function(camera){return _c('div',{key:camera.objectID},[_c('div',[_c('a',{staticClass:\"list-group-item list-group-item-action a-flex\",on:{\"click\":function($event){return _vm.selectCamera(camera)}}},[_vm._v(\" \"+_vm._s(camera.title)+\" \")])])])})],2)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\n import { namespace } from \"vuex-class\";\n import TextHighlight from \"vue-text-highlight\";\n import VuePerfectScrollbar from \"vue-perfect-scrollbar\";\n import { debounce } from \"lodash\";\n import api from \"@/services/api.service\";\n import AreaTreeSelect from './AreaTreeSelect.vue';\n import { CameraType, SearchedCamera } from '@/store/site-monitor-cameras/types';\n\n const Areas = namespace(\"areas\");\n const SMCameras = namespace(\"siteMonitorCameras\");\n \n const PAGE_SIZE: number = 20; \n\tconst DEBOUNCE_WAIT_TIME: number = 1000;\n\n\t@Component({\n\t\tcomponents: {\n VuePerfectScrollbar: VuePerfectScrollbar,\n \"text-highlight\": TextHighlight,\n \"area-tree-select\": AreaTreeSelect,\n\t\t}\n\t})\n\texport default class CameraSelect extends Vue {\n\t\t$refs!: {\n\t\t\tareaTreeScrollBar: any;\n\t\t\ttoggleBox: HTMLDivElement;\n\t\t\tsearchBox: HTMLInputElement;\n\t\t};\n\n @Areas.Getter getAreaTitle: (id: number) => string;\n\n @SMCameras.Action fetchAreaCameras: (params: { groupID: number, pageNumber: number, paginated: boolean }) => Promise;\n @SMCameras.Action searchForCameras: (params: { query: string, groupID: number, page: number, reset: boolean }) => Promise;\n\n @SMCameras.Getter(\"getAreaCameras\") groupCameras: CameraType[];\n @SMCameras.Getter searchedCameras: SearchedCamera[];\n\n @SMCameras.Mutation setAreaCameras: any;\n\t @SMCameras.Mutation setAreaCameraCount: any;\n\t @SMCameras.Mutation setSearchedGroupCameraCount: any;\n\n @SMCameras.State(\"areaCameraCount\") public areaCameraCount: number;\n\t @SMCameras.State(\"searchedGroupCameraCount\") public searchedGroupCameraCount: number;\n\n @Prop({ type: Boolean, default: false }) \n\t\tpublic multiple: boolean;\n\n @Prop()\n public value: any;\n\n\t\tpublic pageNumber: number = 1;\n\t\tpublic selectedGroup: number = null;\n public searchPageSize: number = PAGE_SIZE;\n\n private isInputFocused: boolean = false;\n private selectedCameras: any[] = [];\n private searchQuery: string = \"\";\n private isLoading: boolean = false;\n\n private menuStyle: any = {\n top: \"0px\",\n left: \"0px\",\n width: \"auto\"\n }\n\n private async mounted(): Promise {\n if (this.value) {\n await this.updateFromValue();\n }\n\n this.setAreaCameras([]);\n\t\t\tthis.setAreaCameraCount(0);\n\t\t\tthis.setSearchedGroupCameraCount(0);\n\t\t\tthis.selectedGroup = null;\n\t\t\tthis.searchQuery = null;\n }\n\n @Watch(\"value\")\n private async updateFromValue(): Promise {\n if (!this.selectedCameras) {\n this.selectedCameras = [];\n }\n\n if (this.value) {\n if (this.multiple) {\n // Value set, and we are using an array of cameras\n\n // Remove any from selected cameras list that don't appear in the model\n this.selectedCameras = this.selectedCameras.filter(camera => !this.value.some(cameraDeviceID => cameraDeviceID == camera.deviceID));\n\n // Find an add any cameras that are in the model but not the selected cameras list\n // noinspection ES6MissingAwait\n this.value.forEach(async cameraDevice => {\n if (this.selectedCameras.some(camera => camera.deviceID == cameraDevice.deviceID)) {\n return;\n }\n\n let camera = await api.loadDeviceById(cameraDevice.deviceID, null);\n if (camera) {\n this.selectedCameras.push(camera);\n }\n });\n } else {\n // Already current value - do nothing\n if (this.selectedCameras.some(camera => camera.deviceID == this.value.deviceID)) {\n return;\n }\n\n // Set selected groups list to new value\n this.selectedCameras = [];\n let cameraDevice = await api.loadDeviceById(this.value.deviceID, null);\n if (cameraDevice) {\n this.selectedCameras.push(cameraDevice);\n }\n }\n } else {\n // Value is null, so reset list\n this.selectedCameras = [];\n }\n }\n\n private selectCamera(camera): void {\n if (!camera) {\n return;\n }\n\n camera.deviceID = camera.objectID;\n\n if (!this.multiple && this.selectedCameras.length > 0) {\n this.selectedCameras = [];\n } else {\n if (this.selectedCameras.some(alreadySelected => alreadySelected.deviceID === camera.deviceID)) {\n return;\n }\n }\n\n this.selectedCameras.push(camera);\n this.searchQuery = \"\";\n\n if (this.multiple) {\n this.$emit(\"input\", this.selectedCameras);\n } else {\n this.$emit(\"input\", camera);\n this.$refs.searchBox.blur();\n }\n\n this.onBlur();\n }\n\n private deselectCamera(camera): void {\n const cameraIndex = this.selectedCameras.findIndex(alreadySelected => alreadySelected.deviceID === camera.deviceID);\n if (cameraIndex > -1) {\n this.selectedCameras.splice(cameraIndex, 1);\n }\n\n if (this.multiple) {\n this.$emit(\"input\", this.selectedCameras);\n }\n }\n\n private async displayDropdown(): Promise {\n const left = (this.$refs.toggleBox.offsetParent as HTMLElement).offsetLeft +\n this.$refs.toggleBox.offsetLeft;\n\n const top = this.$refs.toggleBox.getBoundingClientRect().top;\n this.menuStyle.top = top + \"px\";\n this.menuStyle.left = left + \"px\";\n this.menuStyle.width = (this.$refs.toggleBox.offsetWidth + 2) + \"px\";\n\n const maxHeight = document.documentElement.clientHeight - top - 40;\n this.menuStyle.height = Math.min(250, maxHeight) + \"px\";\n\n this.isInputFocused = true;\n }\n\n private onBlur(): void {\n setTimeout(() => {\n this.isInputFocused = false;\n this.searchQuery = \"\";\n } , 200);\n }\n\n private setSearchFocus (): void {\n if (!this.isInputFocused) {\n this.$refs.searchBox.focus();\n }\n }\n\n public get areaCameras(): any[] {\n\t\t if (!this.filterActive)\n\t\t {\n\t\t\t return this.groupCameras;\n\t\t }\n\n\t\t return this.searchedCameras.filter(\n\t\t\t camera => camera.areaTitle == this.getAreaTitle(this.selectedGroup)\n\t\t ).slice(0, this.searchPageSize);\n\t }\n\n private get filterActive(): boolean {\n\t\t return !!this.searchQuery;\n\t }\n\n @Watch(\"selectedGroup\")\n\t public async querySearch(newValue: number, oldValue: number): Promise {\n\t\t try\n\t\t {\n\t\t\t this.isLoading = true;\n\n\t\t\t if(newValue != oldValue){\n\t\t\t\t this.setAreaCameras([]);\n\t\t\t }\n\n\t\t\t await this.fetchAreaCameras({ groupID: this.selectedGroup, pageNumber: this.pageNumber, paginated: true } );\n\t\t }\n\t\t catch(err)\n\t\t {\n\t\t\t console.error(\"Error Loading Area Cameras\", err);\n\t\t\t this.setAreaCameras([]);\n\t\t }\n\t\t finally\n\t\t {\n\t\t\t this.isLoading = false;\n\t\t }\n\t }\n\n @Watch(\"searchQuery\")\n\t public debouncedFilterSearch: (() => Promise) = debounce(async () => {\n\t\t await this.searchForDebounce();\n\t }, DEBOUNCE_WAIT_TIME);\n\n\t private async searchForDebounce(): Promise {\n\t\t try\n\t\t {\n\t\t\t this.isLoading = true;\n\t\t\t await this.searchForCameras({ query: this.searchQuery, groupID: this.selectedGroup, page: this.pageNumber, reset: true });\n\t\t }\n\t\t catch(err)\n\t\t {\n\t\t\t console.error(\"Error searching for cameras\", err);\n\t\t }\n\t\t finally\n\t\t {\n\t\t\t this.isLoading = false;\n\t\t }\n\t }\n\t}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CameraSelect.vue?vue&type=template&id=4a777123&scoped=true\"\nimport script from \"./CameraSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./CameraSelect.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CameraSelect.vue?vue&type=style&index=0&id=4a777123&prod&scoped=true&lang=scss\"\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 \"4a777123\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityLogPopup.vue?vue&type=style&index=1&id=421cd554&prod&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./IconUpload.vue?vue&type=style&index=0&id=d479cf9a&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputTask.vue?vue&type=style&index=0&id=0fe64d58&prod&last=scss&scoped=true&lang=css\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomFieldModalDeleteView.vue?vue&type=style&index=0&id=fa15527e&prod&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ShortcutHelp.vue?vue&type=style&index=0&id=48b910f6&prod&scoped=true&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isEnabled)?_c('i',{staticClass:\"fas fa-info-circle fa m-l-10\",class:_vm.isIconActive ? 'fa-info-circle-active' : '',attrs:{\"data-cy\":\"area-notes-icon\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.launchModal($event)},\"mouseover\":function($event){_vm.isIconActive = true},\"mouseout\":function($event){_vm.isIconActive = false}}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport { get } from 'lodash';\r\nimport { FilteredEvent } from \"@/store/eventqueue/types\";\r\nimport EventDetails from \"@/components/EventDetails.vue\";\r\n\r\nconst AreaNotes = namespace(\"areaNotes\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"event-details\": EventDetails\r\n\t}\r\n})\r\nexport default class EventQueueAreaInfoIcon extends Vue {\r\n\t@Prop()\r\n\tpublic event: FilteredEvent;\r\n\r\n\t@Prop({ type: Number })\r\n\tpublic groupId: Number;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@AreaNotes.Mutation setAreaNoteGroupDetails: any;\r\n\t@SiteMonitor.Mutation setEventDetailsShown: any;\r\n\t@SiteMonitor.Mutation setAreaDetailsTabIndex: any;\r\n\r\n\tprivate isIconActive: boolean = false;\r\n\r\n\tpublic get siteTitle(): string {\r\n\t\treturn this.event ? this.event.groupTitle : \"\";\r\n\t}\r\n\r\n\tpublic get getGroupId(): Number {\r\n\t\treturn this.groupId ? this.groupId : null;\r\n\t}\r\n\r\n\tprivate get isEnabled(): boolean {\r\n\t\treturn (get(this.featuresList, [\"AreaNotes\"]) &&\r\n\t\tget(this.featuresList, [\"AreaNotes\", \"Icons\"]));\r\n\t}\r\n\r\n\tprivate launchModal(): void {\r\n\t\tthis.setEventDetailsShown(true);\r\n\t\tthis.setAreaDetailsTabIndex(2);\r\n\t\tthis.setAreaNoteGroupDetails({ groupId: this.getGroupId, groupTitle: this.siteTitle });\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventQueueAreaInfoIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventQueueAreaInfoIcon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventQueueAreaInfoIcon.vue?vue&type=template&id=502bfa0b&scoped=true\"\nimport script from \"./EventQueueAreaInfoIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./EventQueueAreaInfoIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventQueueAreaInfoIcon.vue?vue&type=style&index=0&id=502bfa0b&prod&scoped=true&lang=scss\"\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 \"502bfa0b\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"container\",staticStyle:{\"position\":\"fixed\",\"z-index\":\"9999\"},on:{\"mousedown\":_vm.startDrag}},[_vm._t(\"content\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\n\r\nexport interface Positions {\r\n clientX: any; \r\n clientY: any; \r\n movementX: number;\r\n movementY: number;\r\n}\r\n@Component({})\r\nexport default class Draggable extends Vue {\r\n\r\n private containerPosition: Positions = {\r\n clientX: undefined, \r\n clientY: undefined, \r\n movementX: 0, \r\n movementY: 0\r\n };\r\n\r\n $refs!: {\r\n container: any;\r\n };\r\n\r\n private mounted(){\r\n this.containerPosition.clientX = 0;\r\n this.containerPosition.clientY = 0;\r\n }\r\n\r\n private startDrag(event: any) {\r\n this.containerPosition.clientX = event.clientX;\r\n this.containerPosition.clientY = event.clientY;\r\n\r\n //assign the on mouse events to the drag and stop drag\r\n document.onmousemove = this.dragging;\r\n document.onmouseup = this.endDrag;\r\n }\r\n\r\n private dragging(event: any) {\r\n event.preventDefault()\r\n this.containerPosition.movementX = this.containerPosition.clientX - event.clientX;\r\n this.containerPosition.movementY = this.containerPosition.clientY - event.clientY;\r\n this.containerPosition.clientX = event.clientX;\r\n this.containerPosition.clientY = event.clientY;\r\n\r\n // set the element's new position:\r\n this.$refs.container.style.top = (this.$refs.container.offsetTop - this.containerPosition.movementY) + 'px';\r\n this.$refs.container.style.left = (this.$refs.container.offsetLeft - this.containerPosition.movementX) + 'px';\r\n }\r\n\r\n private endDrag () {\r\n // clear functions\r\n document.onmouseup = null;\r\n document.onmousemove = null;\r\n }\r\n\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draggable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./draggable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./draggable.vue?vue&type=template&id=1572fd99\"\nimport script from \"./draggable.vue?vue&type=script&lang=ts\"\nexport * from \"./draggable.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('span',{staticClass:\"cardSpan\"},[_c('span',{staticClass:\"icon\"},[_c('svg',{class:_vm.svgClass,attrs:{\"version\":\"1.1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"preserveAspectRatio\":\"xMidYMid meet\",\"viewBox\":\"0 0 1536 1536\",\"width\":_vm.width,\"height\":_vm.height}},[_c('defs',[_c('path',{attrs:{\"d\":\"M-0.7 0L1536 0L1536 1538.98L-0.7 1538.98L-0.7 0Z\",\"id\":\"container\"}}),_c('path',{attrs:{\"d\":\"M622.59 299.58L643.37 340.95L699.76 454.25L455.25 454.25L455.25 700.69L185 564.67L185 185.45L565.99 185.45L622.79 299.58L622.59 299.58Z\",\"id\":\"module-top-left\"}}),_c('path',{attrs:{\"d\":\"M904.79 1228.3L904.98 1228.3L884.21 1186.94L827.82 1073.63L1072.33 1073.63L1072.33 827.18L1342.58 963.21L1342.58 1342.42L961.59 1342.42L961.59 1342.42L904.79 1228.3Z\",\"id\":\"module-bottom-right\"}}),_c('path',{attrs:{\"d\":\"M827.82 453.8L884.2 340.5L904.98 299.13L904.79 299.13L961.59 185L1342.58 185L1342.58 564.21L1072.33 700.24L1072.33 453.8L1072.33 453.8L827.82 453.8Z\",\"id\":\"module-top-right\"}}),_c('path',{attrs:{\"d\":\"M623.48 1228.49L623.67 1228.49L566.88 1342.62L185.89 1342.62L185.89 963.41L456.14 827.38L456.14 1073.82L700.65 1073.82L644.26 1187.13L644.26 1187.13L623.48 1228.49Z\",\"id\":\"module-bottom-left\"}})]),_c('g',[_c('g',[_c('g',[_c('use',{attrs:{\"xlink:href\":\"#container\",\"opacity\":\"0\"}})]),_c('g',[_c('use',{attrs:{\"xlink:href\":\"#module-top-left\",\"opacity\":\"1\",\"fill\":\"#ffffff\",\"fill-opacity\":\"1\"}})]),_c('g',[_c('use',{attrs:{\"xlink:href\":\"#module-bottom-right\",\"opacity\":\"1\",\"fill\":\"#ffffff\",\"fill-opacity\":\"1\"}})]),_c('g',[_c('use',{attrs:{\"xlink:href\":\"#module-top-right\",\"opacity\":\"1\",\"fill\":\"#ffffff\",\"fill-opacity\":\"1\"}})]),_c('g',[_c('use',{attrs:{\"xlink:href\":\"#module-bottom-left\",\"opacity\":\"1\",\"fill\":\"#ffffff\",\"fill-opacity\":\"1\"}})])])])])]),_c('span',{staticClass:\"text ml-2\"},[(_vm.text)?_c('strong',[_vm._v(_vm._s(_vm.text))]):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter, Mutation, Action } from \"vuex-class\";\r\n@Component({})\r\nexport default class SureViewIcon extends Vue {\r\n @Prop({type: String, default: \"\"}) text;\r\n @Prop({type: Number, default: 40}) width;\r\n @Prop({type: Number, default: 40}) height;\r\n @Prop({type: String, default: \"\"}) svgClass;\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SureViewIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SureViewIcon.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SureViewIcon.vue?vue&type=template&id=5c309666&scoped=true\"\nimport script from \"./SureViewIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./SureViewIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SureViewIcon.vue?vue&type=style&index=0&id=5c309666&prod&scoped=true&lang=css\"\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 \"5c309666\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ContactsFor.vue?vue&type=style&index=0&id=3e8d0d2a&prod&scoped=true&lang=css\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadFileButton.vue?vue&type=style&index=0&id=584aeed1&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssetColorPicker.vue?vue&type=style&index=0&id=1b7eef36&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfigureTasks.vue?vue&type=style&index=0&id=449580c6&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSearchPage.vue?vue&type=style&index=0&id=4fac35e0&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MaskingReasonsSetup.vue?vue&type=style&index=0&id=6f90c609&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaAlarms.vue?vue&type=style&index=0&id=753c8984&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSearch.vue?vue&type=style&index=0&id=88cefba4&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDefinedFieldsDisplay.vue?vue&type=style&index=0&id=f4fa7d80&prod&lang=css\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('ul',_vm._l((_vm.localFeatures),function(feature,index){return _c('li',{key:feature.name},[_c('div',{staticClass:\"row\",attrs:{\"id\":\"featureContainer\"}},[_c('b-form-checkbox',{on:{\"change\":function($event){return _vm.toggleFeature({ name: feature.name, enabled: feature.enabled })}},model:{value:(feature.enabled),callback:function ($$v) {_vm.$set(feature, \"enabled\", $$v)},expression:\"feature.enabled\"}}),_c('div',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle\",value:('collapse' + feature.name + index),expression:\"'collapse' + feature.name + index\"}],staticClass:\"flex-grow-1\",class:['card-header', { 'card-header-clickable': _vm.featureHasChildren(feature) }, 'rounded-0']},[(_vm.featureHasChildren(feature))?_c('i',{staticClass:\"fas p-r-5\",class:feature.expanded ? 'fa-angle-down' : 'fa-angle-right'}):_vm._e(),(!feature.isReleased)?_c('span',{staticClass:\"badge badge-pill badge-warning\",staticStyle:{\"margin-right\":\"5px\"},attrs:{\"id\":'beta-warning-' + feature.name}},[_c('i',{staticClass:\"fas fa-exclamation-triangle\"}),_vm._v(\" BETA \")]):_vm._e(),_vm._v(\" \"+_vm._s(feature.name)+\" \"),(feature.description || feature.supportLink)?_c('div',[_c('small',[_vm._v(\" \"+_vm._s(feature.description)+\" \"),(feature.supportLink)?_c('a',{staticClass:\"m-l-5\",attrs:{\"href\":feature.supportLink,\"target\":\"_blank\"}},[_vm._v(\" ( \"),_c('i',{staticClass:\"fas fa-external-link-alt\"}),_vm._v(\" More information) \")]):_vm._e()])]):_vm._e()])],1),_c('b-collapse',{attrs:{\"id\":'collapse' + feature.name + index},model:{value:(feature.expanded),callback:function ($$v) {_vm.$set(feature, \"expanded\", $$v)},expression:\"feature.expanded\"}},[(_vm.featureHasChildren(feature))?_c('feature-tree',{attrs:{\"id\":\"childrenContainer\",\"features\":feature.children,\"parentName\":_vm.parentName ? (_vm.parentName + \"/\" + (feature.name)) : feature.name,\"parentDisabled\":feature.enabled},on:{\"statusChanged\":function($event){return _vm.toggleFeature($event, feature)}}}):_vm._e()],1)],1)}),0)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Emit, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { get } from \"lodash\";\r\n\r\nconst SetupStore = namespace(\"setup\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"feature-tree\": () => import(\"@/components/setup/FeatureTree.vue\")\r\n\t}\r\n})\r\nexport default class FeatureTree extends Vue {\r\n\t@Prop(Array) features: any;\r\n\t@Prop(Boolean) parentDisabled: boolean;\r\n\t@Prop(String) parentName: string;\r\n\r\n\tprivate localFeatures: any[] = [];\r\n\r\n\tprivate async mounted() {\r\n\t\tthis.localCopyFeatures();\r\n\t}\r\n\r\n\tprivate featureHasChildren(feature) {\r\n\t\treturn feature.children && feature.children.length > 0;\r\n\t}\r\n\r\n\tprivate async localCopyFeatures() {\r\n\t\tthis.localFeatures = this.features.map(feature => {\r\n\t\t\treturn { ...feature };\r\n\t\t});\r\n\t}\r\n\r\n\t@Emit(\"statusChanged\")\r\n\tprivate async toggleFeature(feature: any, localFeature: any = null) {\r\n\t\t// Captures the status changed event bubbled up from child component (checkbox changed) and emits the object to the parent component\r\n\t\tif (localFeature && feature.enabled) {\r\n\t\t\tlocalFeature.enabled = feature.enabled;\r\n\t\t}\r\n\r\n\t\t// Appends the parent name onto the bubbled up child feature to form the full feature path\r\n\t\treturn {\r\n\t\t\tname: !localFeature && this.parentName ? `${this.parentName}/${feature.name}` : feature.name,\r\n\t\t\tenabled: feature.enabled\r\n\t\t};\r\n\t}\r\n\r\n\t@Watch(\"features\", { immediate: true, deep: true })\r\n\tprivate onFeaturesChanged(value: any) {\r\n\t\tthis.localCopyFeatures();\r\n\t}\r\n\r\n\t@Watch(\"parentDisabled\", { immediate: true, deep: true })\r\n\tprivate onParentDisabled(value: boolean, oldValue: boolean) {\r\n\t\t// only toggle the child features if we're going from true to false\r\n\t\tif (!value && oldValue) {\r\n\t\t\tthis.localFeatures.forEach(localFeature => {\r\n\t\t\t\t// toggle the child feature that are enabled, ignore the disabled child feature.\r\n\t\t\t\tif(localFeature.enabled) {\r\n\t\t\t\t\tlocalFeature.enabled = value;\r\n\t\t\t\t\tthis.toggleFeature(localFeature);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FeatureTree.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FeatureTree.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FeatureTree.vue?vue&type=template&id=dd6ad71c&scoped=true\"\nimport script from \"./FeatureTree.vue?vue&type=script&lang=ts\"\nexport * from \"./FeatureTree.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FeatureTree.vue?vue&type=style&index=0&id=dd6ad71c&prod&scoped=true&lang=scss\"\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 \"dd6ad71c\",\n null\n \n)\n\nexport default component.exports","import {\r\n\tIMarker,\r\n\tILayer,\r\n\tILatLng,\r\n} from \"@sureview/v2-mapping-saas\";\r\n\r\nexport class LocationBounds {\r\n\tpublic location: ILatLng;\r\n\tpublic viewport: {\r\n\t\tnortheast: ILatLng;\r\n\t\tsouthwest: ILatLng;\r\n\t};\r\n}\r\n\r\nexport class MapItemIcon {}\r\n\r\nexport class LayerMap {\r\n\t[s: number]: ILayer;\r\n}\r\nexport class ItemMap {\r\n\t[s: number]: IMarker;\r\n}\r\nexport class ItemObjectMap {\r\n\t[s: number]: IMarker[];\r\n}\r\nexport class ItemTypeObjectMap {\r\n\t[s: number]: ItemObjectMap;\r\n}\r\n\r\nexport class LayerTypeMap {\r\n\t[s: number]: boolean;\r\n}\r\n\r\nexport class MarkerArrayMap {\r\n\t[s: number]: IMarker[];\r\n}\r\n\r\nexport class SubscriberExpiry {\r\n\tpublic subscriber: string;\r\n\tpublic expiry: number;\r\n}\r\n\r\nexport class MapCameraDevice {\r\n\tpublic id: number;\r\n\tpublic title: string;\r\n}\r\n\r\nexport enum EnhancedMapMode {\r\n\tSiteMonitor = 1,\r\n\tFieldOps = 2,\r\n\tEventQueue = 3,\r\n\tEventSearch = 4,\r\n}","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewTree.vue?vue&type=style&index=0&id=2b59042e&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaNotesForm.vue?vue&type=style&index=0&id=584f19f2&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QuickSelect.vue?vue&type=style&index=0&id=0e3aa324&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PublicHolidaySetup.vue?vue&type=style&index=0&id=46268c73&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ZendeskHelp.vue?vue&type=style&index=0&id=2f9b5200&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ControlSetup.vue?vue&type=style&index=0&id=ee331af0&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SwitchTenant.vue?vue&type=style&index=0&id=2844a3cc&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EnhancedSingleMapControls.vue?vue&type=style&index=0&id=4aa0f76e&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ElevationSelect.vue?vue&type=style&index=0&id=e1735ff8&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserManagementSetup.vue?vue&type=style&index=0&id=4c0482a0&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DrawdownBreadcrumbs.vue?vue&type=style&index=1&id=048e6942&prod&lang=scss&scoped=true\"","export const Constants = {\r\n\tMAXIMUM_INTEGER_VALUE: 2147483647,\r\n\tFIELD_OPS_NO_LICENCE_ERROR: \"User does not have a licence for Field Ops\",\r\n\tNO_PERMISSION_TO_PAGE: \"You do not have permission to this page\",\r\n\tMAX_MASKING_DURATION: 2147483647\r\n} as const;\r\n\r\nexport const AreaDetailsIndexValues = {\r\n\tCONTACTS: 0,\r\n\tSCHEDULES: 1,\r\n\tNOTES: 2,\r\n\tHISTORY: 3,\r\n} as const;\r\n\r\nexport const GenericTableConstants = {\r\n\tSortDirectionAscending: \"ascending\",\r\n\tSortDirectionDescending: \"descending\"\r\n} as const;\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"d-flex flex-column\",staticStyle:{\"overflow\":\"hidden\"}},[_c('b-form-input',{staticClass:\"flex-fixed\",staticStyle:{\"width\":\"unset\"},attrs:{\"type\":\"text\",\"autocomplete\":\"off\",\"placeholder\":\"Find assets\"},model:{value:(_vm.filter),callback:function ($$v) {_vm.filter=$$v},expression:\"filter\"}}),_c('scrollbar',{staticClass:\"flex-dynamic\",attrs:{\"settings\":{ suppressScrollX: true }}},[_c('b-overlay',{staticStyle:{\"min-height\":\"200px\"},attrs:{\"show\":this.localSet,\"rounded\":\"sm\",\"variant\":\"dark\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('div',{staticClass:\"text-center\",staticStyle:{\"font-size\":\"18px\"}},[_c('p',[_vm._v(\"Click on the Map to place the asset at that location\")]),_c('b-button',{staticClass:\"btn-smd mr-1\",staticStyle:{\"width\":\"80%\"},attrs:{\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.setAction(null,7)}}},[_vm._v(\" CANCEL \")])],1)]},proxy:true}])},[_c('b-table',{ref:\"bTable\",staticClass:\"verticalAlign\",attrs:{\"fields\":_vm.fields,\"items\":_vm.filteredAssets,\"select-mode\":\"single\",\"selectable\":\"\",\"no-select-on-click\":\"\",\"tbody-tr-class\":_vm.rowClass,\"head-variant\":\"dark\"},on:{\"row-clicked\":_vm.onRowClicked},scopedSlots:_vm._u([{key:\"cell(title)\",fn:function(row){return [(row.item.isAsset && !row.item.latLng)?_c('i',{staticClass:\"fas fa-plus mr-2\",on:{\"click\":function($event){return _vm.setAction(row.item, 4)}}}):(row.item.isAsset && row.item.latLng && row.item.hideOnMap)?_c('i',{staticClass:\"fas fa-eye-slash mr-2\",on:{\"click\":function($event){return _vm.setAction(row.item, 5)}}}):(row.item.isAsset && row.item.latLng && !row.item.hideOnMap)?_c('i',{staticClass:\"fas fa-map-marker mr-2\",style:({ color: _vm.getColor(row.item) }),on:{\"click\":function($event){return _vm.setAction(row.item, 6)}}}):(!row.item.isAsset)?_c('i',{staticClass:\"fas fa-map-marker mr-2\",style:({ color: _vm.getColor(row.item) })}):_vm._e(),_c('span',{staticClass:\"mr-2\",on:{\"click\":function($event){return _vm.setAction(row.item, null)}}},[_vm._v(_vm._s(row.item.title))]),(!row.item.isAsset && row.item.unackedMessageCount && row.item.unackedMessageCount > 0 && !_vm.mobileMode)?_c('span',[_c('b-badge',{attrs:{\"pill\":\"\",\"variant\":\"danger\"}},[_vm._v(\" \"+_vm._s(_vm.limitUnackedCount(row.item.unackedMessageCount))+\" \")])],1):_vm._e()]}},{key:\"cell(status)\",fn:function(row){return [_c('span',{style:({'font-style': (row.item.status ? 'normal' : 'italic')})},[_vm._v(_vm._s(row.item.status ? row.item.status : 'No Status Set'))])]}}])})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Ref, Vue } from \"vue-property-decorator\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { AssetMapLayerItem, ActionType, ActionRequest } from \"./types\";\r\nimport { namespace } from \"vuex-class\";\r\nconst Mobile = namespace(\"mobile\");\r\n\r\nconst maxUnackedCount = 99;\r\n\r\n@Component({\r\n\tcomponents: { scrollbar: VuePerfectScrollbar }\r\n})\r\nexport default class MobileAssetList extends Vue {\r\n\t@Prop() assets!: AssetMapLayerItem[];\r\n\t@Prop() assetTypes!: Map;\r\n\t@Prop() selectedAssetID: number | null;\r\n\t@Ref() bTable: any;\r\n @Prop() settingLocation: boolean | false;\r\n\t@Prop({default: false, type:Boolean}) mobileMode;\r\n\r\n\r\n\t@Mobile.Mutation toggleRightSideBarVisibility: () => void;\r\n\r\n\tprivate localSet: boolean = false;\r\n\tprivate filter: string = \"\";\r\n\tprivate fields = [\r\n\t\t{\r\n\t\t\tkey: \"title\",\r\n\t\t\tlabel: \"Name\",\r\n\t\t\tsortable: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey:\"type\",\r\n\t\t\tlabel:\"Type\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey:\"status\",\r\n\t\t\tlabel:\"Status\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t];\r\n\r\n\tprivate get filteredAssets() {\r\n\t\tconst assetList = this.assets.filter(ast => !ast.isTrackedAsset).map(asset => { return {\r\n\t\t\t\t...asset,\r\n\t\t\t\ttype: this.getTypeTitle(asset)\r\n\t\t\t}});\r\n\r\n\t\tif (this.filter !== \"\") {\r\n\t\t\treturn assetList.filter(u => u.title.toLowerCase().includes(this.filter.toLowerCase()))\r\n\t\t}\r\n\t\treturn assetList;\r\n\t}\r\n\r\n\tprivate getColor(item: AssetMapLayerItem) : string {\r\n\t\tif(item.iconColor)\r\n\t\t\treturn item.iconColor;\r\n\r\n\t\tif(!this.assetTypes || (this.assetTypes && !this.assetTypes.get))\r\n\t\t\treturn this.mobileMode ? \"\" : \"#000000\";\r\n\r\n\t\treturn this.assetTypes.get(item.assetTypeId.toString()).iconColor\r\n\t\t\t\t? this.assetTypes.get(item.assetTypeId.toString()).iconColor\r\n\t\t\t\t: ( this.mobileMode ? \"\": \"#000000\")\r\n\t}\r\n\r\n\tprivate onRowClicked(item: AssetMapLayerItem) {\r\n\t\tthis.$emit(\"itemSelected\", item);\r\n\t}\r\n\r\n\tprivate rowClass(item: AssetMapLayerItem) : string[] {\r\n\t\tif (item.assetId === this.selectedAssetID) {\r\n\t\t\treturn [ (this.mobileMode ? \"mobileSelectedRow\" : \"table-primary\"), \"cursor-pointer\"];\r\n\t\t}\r\n\t\treturn [\"cursor-pointer\"];\r\n\t}\r\n\r\n\tpublic isSettingLocation(currentlySetting: boolean){\r\n\t\tthis.localSet = currentlySetting;\r\n\t}\r\n\r\n\t@Emit(\"setAction\")\r\n\tprivate setAction(asset: AssetMapLayerItem, action: ActionType): ActionRequest {\r\n\t\tif(this.mobileMode){\r\n\t\t\tthis.toggleRightSideBarVisibility();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tswitch(action){\r\n\t\t\tcase ActionType.ShowLocation: asset.hideOnMap = false; break;\r\n\t\t\tcase ActionType.HideLocation: asset.hideOnMap = true; break;\r\n\t\t}\r\n\r\n\t\tthis.onRowClicked(asset);\r\n\t\treturn {\r\n\t\t\tasset : asset,\r\n\t\t\taction : action,\r\n\t\t\titem : asset\r\n\t\t};\r\n\t}\r\n\r\n\tprivate getTypeTitle(item: AssetMapLayerItem) : string{\r\n\t\tvar typeTitle;\r\n\t\ttry{\r\n\t\t\ttypeTitle = this.assetTypes.get(item.assetTypeId.toString()).title ? this.assetTypes.get(item.assetTypeId.toString()).title : \"\";\r\n\t\t} catch {\r\n\t\t\ttypeTitle = \"\";\r\n\t\t} finally {\r\n\t\t\ttypeTitle ? typeTitle : \"\";\r\n\t\t}\r\n\r\n\t\treturn typeTitle;\r\n\t}\r\n\r\n\tprivate limitUnackedCount(unackedCount: number) {\r\n\t\treturn unackedCount > maxUnackedCount ? maxUnackedCount : unackedCount;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileAssetList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileAssetList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MobileAssetList.vue?vue&type=template&id=55c6260e&scoped=true\"\nimport script from \"./MobileAssetList.vue?vue&type=script&lang=ts\"\nexport * from \"./MobileAssetList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./MobileAssetList.vue?vue&type=style&index=0&id=55c6260e&prod&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 \"55c6260e\",\n null\n \n)\n\nexport default component.exports","import { axiosInstance, axiosJsonInstance } from \"@/axios.instance\";\r\nimport { PaginatedSearchRequestCustomField } from \"@/mixins/PaginatedSearch\";\r\nimport PagedResponse from \"@/types/sv-data/PagedResponse\";\r\nimport { CustomFieldDto, CustomFieldTableTypes, CustomFieldValues } from \"@/store/custom-fields/types\";\r\nimport { AxiosInstance, } from \"axios\";\r\n\r\nconst CustomFieldRoute = \"/CustomField\";\r\n\r\nclass CustomFieldsApi {\r\n\tprivate axios: AxiosInstance;\r\n\tprivate axiosJson: any;\r\n\r\n\tconstructor() {\r\n\t\tthis.axios = axiosInstance;\r\n\t\tthis.axiosJson = axiosJsonInstance;\r\n\t}\r\n\r\n\tpublic async createCustomField(customField: CustomFieldDto): Promise {\r\n\t\tconst { data } = await this.axiosJson.post(`${CustomFieldRoute}/Create`, customField);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async retrieveCustomFields(paginatedSearchRequest: PaginatedSearchRequestCustomField) : Promise {\r\n\t\tconst { data } = await this.axiosJson.get(`${CustomFieldRoute}`, paginatedSearchRequest);\r\n\t\treturn data;\r\n }\r\n\r\n\tpublic async retrieveCustomFieldsForObject(objectId: number, tableTypeId: CustomFieldTableTypes) :Promise {\r\n\t\tconst { data } = await this.axios.get(`${CustomFieldRoute}/Retrieve/CustomFieldsForObject/${objectId}`, {\r\n\t\t\tparams: {\r\n\t\t\t\ttableTypeId: tableTypeId\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async updateCustomField(customField: CustomFieldDto): Promise {\r\n\t\tconst { data } = await this.axiosJson.put(`${CustomFieldRoute}/Update`, customField);\r\n\t\treturn data;\r\n\t}\r\n\r\n\tpublic async deleteCustomField(customFieldId: string): Promise {\r\n\t\tconst { data } = await this.axios.delete(`${CustomFieldRoute}/Delete/${customFieldId}`);\r\n\t\treturn data;\r\n\t}\r\n}\r\n\r\nconst customFieldsApi = new CustomFieldsApi();\r\nexport default customFieldsApi;\r\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceTypeAdvancedFilter.vue?vue&type=style&index=0&id=4e36e25c&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPointManagerDialog.vue?vue&type=style&index=0&id=e29d5602&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesEngineSetupModal.vue?vue&type=style&index=0&id=72f522ae&prod&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"area-details\"},[(_vm.showTitle)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h4',{attrs:{\"data-cy\":\"area-title\"}},[_vm._v(_vm._s(_vm.eventAreaDetails.title))])])]):_vm._e(),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h5',[_vm._v(\"Address\")]),_c('p',[_vm._v(_vm._s(_vm.eventAreaDetails.address))])]),_c('div',{staticClass:\"col\",staticStyle:{\"padding-bottom\":\"20px\"}},[_c('h5',[_vm._v(\"Primary Contacts\")]),(_vm.eventAreaDetails)?_c('span',{attrs:{\"data-cy\":\"area-telephone\"}},[_vm._v(\" Main Phone: \"),_c('hyperlink-contact',{attrs:{\"value\":_vm.eventAreaDetails.telephone,\"showHyperlinks\":_vm.showHyperlinks,\"type\":\"tel\",\"data-cy\":\"area-telephone\"}})],1):_vm._e(),_c('br'),(_vm.eventAreaDetails)?_c('span',{attrs:{\"data-cy\":\"area-telephonePolice\"}},[_vm._v(\" Local Police: \"),_c('hyperlink-contact',{attrs:{\"value\":_vm.eventAreaDetails.telephonePolice,\"showHyperlinks\":_vm.showHyperlinks,\"type\":\"tel\",\"data-cy\":\"area-telephonePolice\"}})],1):_vm._e(),_c('br'),(_vm.eventAreaDetails)?_c('span',{attrs:{\"data-cy\":\"area-telephoneFire\"}},[_vm._v(\" Local Fire: \"),_c('hyperlink-contact',{attrs:{\"value\":_vm.eventAreaDetails.telephoneFire,\"showHyperlinks\":_vm.showHyperlinks,\"type\":\"tel\",\"data-cy\":\"area-telephoneFire\"}})],1):_vm._e()])]),_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col\"},[_c('h5',[_vm._v(\"Reference Id\")]),_c('p',{attrs:{\"data-cy\":\"area-referenceId\"}},[_vm._v(_vm._s(_vm.eventAreaDetails.referenceId))])]),_c('div',{staticClass:\"col\",staticStyle:{\"padding-bottom\":\"20px\"}},[_c('h5',[_vm._v(\"Summary\")]),_c('p',[_vm._v(_vm._s(_vm.eventAreaDetails.notes))])])]),_c('b-tabs',{staticClass:\"area-details-tabs\",attrs:{\"b-tabs\":\"\"},model:{value:(_vm.areaDetailsTabIndex),callback:function ($$v) {_vm.areaDetailsTabIndex=$$v},expression:\"areaDetailsTabIndex\"}},[(!_vm.disableContacts && _vm.isContactsEnabled)?_c('b-tab',{attrs:{\"title\":\"Contacts\",\"data-cy\":\"contacts-section\",\"id\":'Contacts'}},[_c('area-contacts',{attrs:{\"areaContacts\":_vm.areaContacts,\"groupId\":this.groupId,\"group-title\":_vm.eventAreaDetails.title},scopedSlots:_vm._u([{key:\"phone\",fn:function(ref){\nvar phone = ref.phone;\nreturn [_c('hyperlink-contact',{attrs:{\"value\":phone,\"showHyperlinks\":_vm.showHyperlinks,\"type\":\"tel\",\"data-cy\":\"contact-telephone\"}})]}},{key:\"mobile\",fn:function(ref){\nvar mobile = ref.mobile;\nreturn [_c('hyperlink-contact',{attrs:{\"value\":mobile,\"showHyperlinks\":_vm.showHyperlinks,\"type\":\"tel\",\"data-cy\":\"contact-mobile\"}})]}},{key:\"email\",fn:function(ref){\nvar email = ref.email;\nreturn [_c('hyperlink-contact',{attrs:{\"value\":email,\"showHyperlinks\":_vm.showHyperlinks,\"type\":\"email\",\"data-cy\":\"contact-email\"}})]}}],null,false,855857486)})],1):_vm._e(),(_vm.showSchedules)?_c('b-tab',{attrs:{\"title\":\"Schedule\",\"data-cy\":\"schedule-section\",\"id\":'Schedules'}},[_c('div',{attrs:{\"data-cy\":\"inside-schedules-tab\"}},[_c('b-row',{staticClass:\"my-2 py-2\"},[_c('b-col',[_c('label',[_vm._v(\"Search for a Schedule\")]),_c('b-input',{attrs:{\"placeholder\":\"Search\"},model:{value:(_vm.scheduleSearchFilter),callback:function ($$v) {_vm.scheduleSearchFilter=$$v},expression:\"scheduleSearchFilter\"}})],1),_c('b-col',[_c('label',[_vm._v(\"Filter by Schedule Types\")]),_c('v-select-3',{attrs:{\"label\":\"title\",\"reduce\":function (scheduleType) { return scheduleType.scheduleTypeId; },\"options\":_vm.filteredScheduleTypes,\"multiple\":\"\",\"placeholder\":\"Select a Schedule Type\"},on:{\"input\":_vm.onScheduleTypeChanged},model:{value:(_vm.selectedScheduleTypeOptions),callback:function ($$v) {_vm.selectedScheduleTypeOptions=$$v},expression:\"selectedScheduleTypeOptions\"}})],1),_c('b-col',[_c('label',[_vm._v(\"Filter by Enabled/Disabled Schedules\")]),_c('v-select-3',{attrs:{\"label\":\"title\",\"reduce\":function (option) { return option.value; },\"options\":[{ title: \"Enabled\", value: true }, { title: \"Disabled\", value: false }, { title: \"Both\", value: null }],\"placeholder\":\"Filter by Enabled or Disabled\"},model:{value:(_vm.enabledScheduleFilter),callback:function ($$v) {_vm.enabledScheduleFilter=$$v},expression:\"enabledScheduleFilter\"}})],1)],1),_c('schedules-calendar',{staticClass:\"no-scroll\"}),_c('schedule-modal',{attrs:{\"readonly\":\"\"}})],1)]):_vm._e(),(_vm.showAreaNotes)?_c('b-tab',{attrs:{\"title\":\"Notes\",\"data-cy\":\"notes-section\",\"id\":'Notes'}},[_c('div',{attrs:{\"data-cy\":\"inside-notes-tab\"}},[_c('area-notes-form',{staticClass:\"padding-top-20\"}),_c('area-notes-table',{staticClass:\"padding-top-20\"})],1)]):_vm._e(),(_vm.isEventHistoryEnabled)?_c('b-tab',{attrs:{\"title\":\"History\",\"data-cy\":\"history-section\",\"id\":'History'}},[_c('div',{attrs:{\"data-cy\":\"inside-history-tab\"}},[_c('area-event-history-tab',{attrs:{\"groupId\":this.groupId,\"timeZoneId\":this.eventAreaDetails.timeZoneID}})],1)]):_vm._e(),(_vm.isCustomFieldsEnabled && _vm.eventAreaDetails)?_c('b-tab',{attrs:{\"title\":\"More Info\",\"data-cy\":\"more-info-section\"}},[_c('div',{attrs:{\"data-cy\":\"inside-more-info-tab\"}},[_c('custom-fields-display',{staticClass:\"padding-top-20\",attrs:{\"customFieldTableType\":_vm.areaCustomFieldType,\"values\":_vm.eventAreaDetails.customFieldValues,\"allowHorizontal\":\"\"}})],1)]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"validate-pin-code\",attrs:{\"data-cy\":\"validate-pin-code\"}},[_c('i',{directives:[{name:\"b-tooltip\",rawName:\"v-b-tooltip\"}],staticClass:\"fad fa-key\",attrs:{\"title\":\"Validate Pin Code\",\"data-cy\":\"validate-pin-code-tooltip\"},on:{\"click\":function($event){return _vm.showValidatePinCodeModal()}}}),_c('b-modal',{attrs:{\"visible\":_vm.modalVisible,\"title\":\"Validate Pin Code\",\"data-cy\":\"validate-pin-code-modal\",\"size\":\"md\",\"centered\":\"\",\"role\":\"dialog\"},on:{\"hide\":function($event){return _vm.resetModalValues()}}},[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\"},[(_vm.contact)?_c('b-row',[_c('b-col',[[_vm._v(\" Pin Code: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])],_c('b-form-input',{attrs:{\"data-cy\":\"pin-code-input\",\"id\":\"PinCode\",\"type\":\"password\",\"autocomplete\":\"new-password\",\"placeholder\":\"Pin Code\"},model:{value:(_vm.pinCodeToValidate),callback:function ($$v) {_vm.pinCodeToValidate=$$v},expression:\"pinCodeToValidate\"}})],2)],1):_vm._e(),(_vm.validationResult)?_c('b-row',[_c('b-col',[_c('span',{staticClass:\"validation-result\",class:_vm.validationResult,attrs:{\"data-cy\":\"validation-result\"}},[(_vm.validationResult == 'valid')?_c('i',{staticClass:\"fal fa-check\"}):_vm._e(),(_vm.validationResult == 'invalid')?_c('i',{staticClass:\"fas fa-times\"}):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(\"Pin Code is \"+_vm._s(_vm.validationResult))])])])],1):_vm._e(),_c('b-row',[_c('b-col',[_c('b-button',{staticClass:\"validate-pin-code\",attrs:{\"data-cy\":\"validate-pin-code\",\"variant\":\"primary\"},on:{\"click\":function($event){return _vm.validatePinCode()}}},[(!_vm.validating)?_c('span',[_vm._v(\" Validate \")]):_vm._e(),(_vm.validating)?_c('span',[_c('i',{staticClass:\"fas fa-spinner fa-spin\"})]):_vm._e()])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport api from \"@/services/api.service\";\r\nimport { KeyContact } from '@/store/user-management/types';\r\nimport { ValidatePinCodeRequest } from '@/store/types';\r\n\r\n@Component({\r\n})\r\n\r\nexport default class ValidatePinCodeModal extends Vue {\r\n\t@Prop() public contact: KeyContact;\r\n\t@Prop() public eventId: number;\r\n\r\n\tprivate modalVisible: boolean = false;\r\n\tprivate pinCodeToValidate: string = null;\r\n\tprivate validationResult: string = null;\r\n\tprivate validating: boolean = false;\r\n\r\n\tprivate showValidatePinCodeModal(): void {\r\n\t\tthis.modalVisible = true;\r\n\t}\r\n\r\n\tprivate async validatePinCode(): Promise {\r\n\t\tif (this.validating) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.validating = true;\r\n\r\n\t\tconst validatePinCodeRequest: ValidatePinCodeRequest = {\r\n\t\t\tUserId: this.contact.userId,\r\n\t\t\tEventId: this.eventId,\r\n\t\t\tPinCode: this.pinCodeToValidate\r\n\t\t}\r\n\r\n\t\tlet pinCodeIsValid: boolean = false;\r\n\r\n\t\t// Only make the api call if a pin code has been provided\r\n\t\tif (this.pinCodeToValidate) {\r\n\t\t\ttry {\r\n\t\t\t\tpinCodeIsValid = await api.validatePinCode(validatePinCodeRequest);\r\n\t\t\t}\r\n\t\t\tcatch (ex) {\r\n\t\t\t\tconsole.log(\"Unexpected error ocurred validating Pin Code: \" + ex)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.validating = false;\r\n\r\n\t\tthis.validationResult = pinCodeIsValid ? \"valid\" : \"invalid\";\r\n\t}\r\n\r\n\tprivate resetModalValues(): void {\r\n\t\tthis.modalVisible = false;\r\n\t\tthis.pinCodeToValidate = null;\r\n\t\tthis.validationResult = null;\r\n\t\tthis.validating = false;\r\n\t}\r\n\r\n\tbeforeDestroy(): void {\r\n\t\tthis.resetModalValues();\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValidatePinCodeModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ValidatePinCodeModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ValidatePinCodeModal.vue?vue&type=template&id=178de80c&scoped=true\"\nimport script from \"./ValidatePinCodeModal.vue?vue&type=script&lang=ts\"\nexport * from \"./ValidatePinCodeModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ValidatePinCodeModal.vue?vue&type=style&index=0&id=178de80c&prod&scoped=true&lang=scss\"\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 \"178de80c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-cy\":\"inside-contacts-tab\"}},[_c('label',{staticClass:\"my-2 py-2\"},[_vm._v(_vm._s(this.queryHasContacts))]),_c('b-row',{attrs:{\"align-v\":\"end\"}},[_c('b-col',{attrs:{\"sm\":\"8\"}},[_c('b-form-group',{attrs:{\"label-for\":\"filterInput\"}},[_c('b-input-group',[_c('b-form-input',{ref:\"contactFilterSearch\",staticClass:\"contact-search-container\",attrs:{\"type\":\"search\",\"max\":\"250\",\"id\":\"filterInput\",\"placeholder\":\"Search...\",\"data-cy\":\"contact-search-input\"},on:{\"input\":function($event){return _vm.handleSearchInput($event)}},model:{value:(_vm.contactFilter),callback:function ($$v) {_vm.contactFilter=$$v},expression:\"contactFilter\"}})],1)],1)],1),_c('b-col',{staticClass:\"results-per-page-container\",attrs:{\"sm\":\"4\",\"data-cy\":\"resultsPerPage\"}},[_c('label',{attrs:{\"for\":\"resultsPerPageInput\"}},[_vm._v(\" Results per page: \")]),_c('b-form-input',{attrs:{\"id\":\"resultsPerPageInput\",\"type\":\"text\",\"formatter\":_vm.removeNonDigitsFromString,\"size\":\"sm\",\"max\":_vm.recordsPageSizeMax,\"data-cy\":\"page-size-input\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onRecordsPerPageClick()}},model:{value:(_vm.recordsPageSizeUpdated),callback:function ($$v) {_vm.recordsPageSizeUpdated=$$v},expression:\"recordsPageSizeUpdated\"}}),_c('b-button',{attrs:{\"id\":\"resultsPerPageButton\",\"variant\":\"primary\",\"size\":\"sm\",\"data-cy\":\"page-size-button\"},on:{\"click\":function($event){return _vm.onRecordsPerPageClick()}}},[_vm._v(\"Update\")])],1)],1),(_vm.isLoadingContacts)?_c('div',{staticClass:\"p-2 pl-4\"},[_c('i',{staticClass:\"fas fa-spinner fa-spin\"}),_c('span',{staticClass:\"pl-1\"},[_vm._v(\"Loading...\")])]):_vm._e(),(_vm.eventUniqueRoles && _vm.eventUniqueRoles.length > 1 && this.isLoadingContacts == false)?_c('b-table',{attrs:{\"data-cy\":\"contacts-table\",\"id\":\"contact-table\",\"striped\":\"\",\"stacked\":\"md\",\"fields\":_vm.visibleFields,\"items\":_vm.areaContacts,\"hover\":\"\",\"head-variant\":\"dark\",\"no-local-sorting\":true,\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc},on:{\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":function($event){_vm.sortBy=$event},\"update:sortDesc\":function($event){_vm.sortDesc=$event},\"update:sort-desc\":function($event){_vm.sortDesc=$event},\"sort-changed\":_vm.onSortChange},scopedSlots:_vm._u([{key:\"head(roles)\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('v-select-3',{staticClass:\"dark flex-grow-1 thin-scroll\",attrs:{\"id\":\"role-select\",\"data-cy\":\"contacts-table-role-select\",\"clearable\":false,\"options\":_vm.eventUniqueRoles,\"label\":\"Role\"},model:{value:(_vm.eventActiveRole),callback:function ($$v) {_vm.eventActiveRole=$$v},expression:\"eventActiveRole\"}})]}},{key:\"cell(roles)\",fn:function(row){return [(_vm.eventActiveRole === 'All Roles')?_c('div',[_vm._l((row.item.roles.slice(0, 5)),function(item,roleIndex){return _c('b-badge',{key:roleIndex,staticClass:\"badge badge-primary mr-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(\" \"+_vm._s(item)+\" \")])}),(row.item.roles.length === 6)?_c('b-badge',{staticClass:\"pl-1 mr-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(_vm.con.item.roles[5])+\" \")]):_vm._e(),(row.item.roles.length > 6)?_c('b-badge',{staticClass:\"pl-1 mr-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(row.item.roles.length - 5)+\" more... \")]):_vm._e()],2):_c('div',[_c('b-badge',{staticClass:\"pl-1\",attrs:{\"variant\":\"primary\"}},[_vm._v(_vm._s(_vm.eventActiveRole))])],1)]}},{key:\"head(sort)\",fn:function(ref){\nvar item = ref.item;\nreturn [_c('i',{staticClass:\"hover-icon fas fa-filter\",attrs:{\"id\":\"filter-icon\",\"data-cy\":\"filter-column-header\"},on:{\"click\":function($event){return _vm.setFilterModalOpen()}}})]}},{key:\"cell(sort)\",fn:function(row){return [(_vm.isCustomFieldsEnabled && row.item.customFieldValues && row.item.customFieldValues.length > 0)?_c('i',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle\",value:('cf' + row.index),expression:\"'cf' + row.index\"}],staticClass:\"clickable p-5\",class:_vm.getCustomFieldCollapseState(row.item.userId) ? 'fas fa-chevron-up m-r-10' : 'fas fa-chevron-down m-r-10',attrs:{\"id\":'contact-custom-field' + row.index},on:{\"click\":row.toggleDetails}}):_vm._e()]}},{key:\"cell(pin)\",fn:function(row){return [(row.item.hasPinCode && _vm.eventId)?_c('div',[_c('validate-pin-code-modal',{attrs:{\"contact\":row.item,\"eventId\":_vm.eventId}})],1):_vm._e()]}},{key:\"cell(telephone)\",fn:function(row){return [_vm._t(\"phone\",[_c('span',{attrs:{\"data-cy\":\"contact-telephone\"}},[_vm._v(_vm._s(row.item.telephone))])],{\"phone\":row.item.telephone})]}},{key:\"cell(mobile)\",fn:function(row){return [_vm._t(\"mobile\",[_c('span',{attrs:{\"data-cy\":\"contact-mobile\"}},[_vm._v(_vm._s(row.item.mobile))])],{\"mobile\":row.item.mobile})]}},{key:\"cell(email)\",fn:function(row){return [_vm._t(\"email\",[_c('span',{attrs:{\"data-cy\":\"contact-email\"}},[_vm._v(_vm._s(row.item.email))])],{\"email\":row.item.email})]}},{key:\"cell(customFields)\",fn:function(row){return [_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isCustomFieldsEnabled),expression:\"isCustomFieldsEnabled\"}]},[_c('custom-field-priority-display',{attrs:{\"priorities\":row.item.customFieldPriorities,\"data-cy\":\"custom-field-priority-display\"}})],1)]}},{key:\"row-details\",fn:function(row){return [_c('b-card',[(_vm.isCustomFieldsEnabled && (_vm.eventActiveRole === 'All Roles' || row.item.roles.includes(_vm.eventActiveRole)))?_c('div',[_c('custom-fields-display',{attrs:{\"customFieldTableType\":_vm.contactCustomFieldType,\"values\":row.item.customFieldValues,\"allowHorizontal\":\"\"}})],1):_vm._e()])]}}],null,true)}):_vm._e(),_c('div',[_c('b-modal',{attrs:{\"data-cy\":\"filter-modal\",\"id\":\"modal-columns-filter\",\"title\":\"Select Columns to Display\"},model:{value:(_vm.showColumnModal),callback:function ($$v) {_vm.showColumnModal=$$v},expression:\"showColumnModal\"}},_vm._l((_vm.contactTableColumns.filter(function (r) { return r.label != 'Sort' && r.label != 'Roles'; })),function(column){return _c('div',{key:column.key},[_c('b-form-group',{staticClass:\"custom-control custom-checkbox\"},[_c('span',{staticClass:\"left-filter-span\"},[_c('b-form-checkbox',{model:{value:(column.visible),callback:function ($$v) {_vm.$set(column, \"visible\", $$v)},expression:\"column.visible\"}},[_vm._v(\" \"+_vm._s(column.label)+\" \")])],1)])],1)}),0)],1),_c('b-card-footer',{staticClass:\"area-contacts-footer\",attrs:{\"data-cy\":\"area-contacts-footer\"}},[_c('b-pagination',{staticClass:\"pagination\",attrs:{\"total-rows\":this.totalRecords,\"per-page\":this.recordsPageSize,\"align\":\"center\",\"data-cy\":\"pagination\",\"disabled\":this.totalRecords < _vm.recordsPageSize},on:{\"input\":_vm.onPageClick},model:{value:(this.recordsPage),callback:function ($$v) {_vm.$set(this, \"recordsPage\", $$v)},expression:\"this.recordsPage\"}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.priorities),function(priority,index){return _c('b-td',{key:index},[(_vm.getCustomFieldType(priority) == 'Hyperlink')?_c('span',{attrs:{\"data-cy\":\"hyperlink-display\"}},[_vm._v(\" \"+_vm._s(priority.title)+\": \"),_c('a',{attrs:{\"href\":priority.value,\"target\":\"_blank\"}},[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(priority.value,_vm.customFieldCharacterLimit))+\" \")])]):(_vm.getCustomFieldType(priority) == 'Icon')?_c('span',[(priority.value.toLowerCase().startsWith('fa'))?_c('span',{attrs:{\"data-cy\":\"font-awesome-icon-display\"}},[_vm._v(\" \"+_vm._s(priority.title)+\": \"),_c('span',{class:priority.value})]):_c('span',{attrs:{\"data-cy\":\"file-or-url-icon-display\"}},[_vm._v(\" \"+_vm._s(priority.title)+\": \"),_c('img',{attrs:{\"src\":priority.value}})])]):(_vm.getCustomFieldType(priority) == 'Date')?_c('span',{attrs:{\"data-cy\":\"date-display\"}},[_vm._v(\" \"+_vm._s(priority.title)+\": \"+_vm._s(_vm.getConvertedCustomFieldDateValue(priority.value))+\" \")]):_c('span',{attrs:{\"data-cy\":\"baseType-priority-display\"}},[_vm._v(\" \"+_vm._s(priority.title)+\": \"+_vm._s(_vm._f(\"truncateString\")(priority.value,_vm.customFieldCharacterLimit))+\" \")])])}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Vue, Component, Prop } from \"vue-property-decorator\";\r\nimport { CustomFieldDto, CustomFieldTypes } from '@/store/custom-fields/types';\r\nimport { customFieldMixins } from \"@/mixins/customFieldMixins\";\r\nimport { namespace } from 'vuex-class';\r\nimport { truncateString } from '@/filters';\r\n\r\nconst CustomFields = namespace(\"customFields\");\r\nconst { convertCustomFieldDateValue } = customFieldMixins.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t},\r\n\tfilters: { truncateString }\r\n})\r\nexport default class CustomFieldPriorityDisplay extends Vue {\r\n\t@Prop({required:false}) private priorities: any;\r\n\r\n\t@CustomFields.State contactCustomFields: CustomFieldDto[];\r\n\r\n\tprivate customFieldCharacterLimit: number = 30;\r\n\r\n\tprivate getCustomFieldType(customFieldValue): string {\r\n\t\tconst field = this.contactCustomFields.find(field => field.id.toString() == customFieldValue.id)\r\n\t\tif (field) {\r\n\t\t\treturn CustomFieldTypes[field.customFieldTypeId]\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate getConvertedCustomFieldDateValue(date: string): string {\r\n\t\treturn convertCustomFieldDateValue(date);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomFieldPriorityDisplay.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomFieldPriorityDisplay.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomFieldPriorityDisplay.vue?vue&type=template&id=6360f4a2\"\nimport script from \"./CustomFieldPriorityDisplay.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomFieldPriorityDisplay.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Prop, Watch, Mixins } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport vSelect3 from \"vselect3\";\r\nimport userApi from \"@/services/api.user.service\";\r\nimport {\r\n\tAreaContactModalPaginatedSearchQueryParams,\r\n\tUserPermissions,\r\n\tVueBootstrapField,\r\n\tVueBootstrapFieldTableSortEvent\r\n} from \"@/store/types\";\r\nimport ValidatePinCodeModal from \"@/components/ValidatePinCodeModal.vue\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport CustomDefinedFieldsDisplay from \"@/components/custom-fields/CustomDefinedFieldsDisplay.vue\";\r\nimport { CustomFieldDto, CustomFieldTableTypes, CustomFieldToggleCollapseState } from \"@/store/custom-fields/types\";\r\nimport { truncateString } from '@/filters';\r\nimport CustomFieldPriorityDisplay from \"@/components/custom-fields/CustomFieldPriorityDisplay.vue\";\r\nimport AreaContactsPagedResponse, { AreaContactsResponse } from \"@/types/sv-data/contacts/AreaContactsPaginatedResponse\";\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport { debounce } from \"lodash\";\r\nimport { getDebouncePeriod } from \"@/utils/debounce-helper\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst CustomFields = namespace(\"customFields\");\r\nconst defaultMinPage: number = 1;\r\nconst defaultRole: string = \"All Roles\";\r\nconst customFieldsColumnKey: string = \"customFields\"\r\nconst pinColumnKey: string = \"pin\"\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vSelect3,\r\n\t\t\"validate-pin-code-modal\": ValidatePinCodeModal,\r\n\t\t\"custom-fields-display\": CustomDefinedFieldsDisplay,\r\n\t\t\"custom-field-priority-display\": CustomFieldPriorityDisplay\r\n\t},\r\n\tfilters: { truncateString }\r\n})\r\nexport default class AreaContacts extends Mixins(PaginatedSearch) {\r\n\t@SiteMonitor.Mutation setEventDetailsShown: any;\r\n\t@SiteMonitor.Action loadAreaKeyContacts: any;\r\n\t@SiteMonitor.Getter(\"getEventDetails\") private eventDetails: EventDetails;\r\n\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\r\n\r\n\tpublic areaContacts: AreaContactsResponse[] = [];\r\n\tpublic eventUniqueRoles: string[] = [defaultRole];\r\n\tpublic eventActiveRole: string = defaultRole;\r\n\r\n\tprivate customFieldsCollapseOpen: CustomFieldToggleCollapseState[] = [];\r\n\r\n\tprivate showColumnModal: boolean = false;\r\n\tprivate totalRecords: number = 0;\r\n\tprivate recordsPage: number = 1;\r\n\tprivate recordsPageSize: number = 25;\r\n\tprivate recordsPageSizeMax: string = \"200\";\r\n\tprivate recordsPageSizeUpdated: string = \"25\";\r\n\tprivate sortDesc: boolean = false;\r\n\tprivate sortBy: string = \"title\";\r\n\tprivate contactFilter: string = \"\";\r\n\tprivate isLoadingContacts: boolean = false;\r\n\r\n\tprivate readonly contactCustomFieldType = CustomFieldTableTypes.Contact;\r\n\t@Prop({ type: Number, default: false }) groupId: number;\r\n\t@Prop(String) groupTitle: string;\r\n\r\n\t@CustomFields.Action retrieveCustomFields: ({ tableType, live }) => Promise;\r\n\t@CustomFields.State areaCustomFields: CustomFieldDto[];\r\n\t@CustomFields.State contactCustomFields: CustomFieldDto[];\r\n\r\n\tprivate contactTableColumns: VueBootstrapField[] =\r\n\t\t[\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Roles',\r\n\t\t\t\tkey: 'roles',\r\n\t\t\t\tvisible: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Name',\r\n\t\t\t\tkey: 'name',\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Phone',\r\n\t\t\t\tkey: 'telephone',\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Cell',\r\n\t\t\t\tkey: 'mobile',\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Email',\r\n\t\t\t\tkey: 'email',\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Pin',\r\n\t\t\t\tkey: pinColumnKey,\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Priority Custom Fields',\r\n\t\t\t\tkey: customFieldsColumnKey,\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tlabel: 'Sort',\r\n\t\t\t\tkey: 'sort',\r\n\t\t\t\tvisible: true\r\n\t\t\t}\r\n\t\t]\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tthis.isLoadingContacts = true;\r\n\r\n\t\tif (!this.isCustomFieldsEnabled) {\r\n\t\t\tthis.contactTableColumns.removeWhere(obj => obj.key === customFieldsColumnKey);\r\n\t\t}\r\n\r\n\t\tif (!this.eventId) {\r\n\t\t\tthis.contactTableColumns.removeWhere(obj => obj.key === pinColumnKey);\r\n\t\t}\r\n\r\n\t\tawait this.getAreaContacts();\r\n\r\n\t\tif (this.areaContacts != null) {\r\n\t\t\tthis.customFieldsCollapseOpen = this.areaContacts.map(item => ({\r\n\t\t\t\tid: item.userId,\r\n\t\t\t\tisOpen: false\r\n\t\t\t}));\r\n\t\t}\r\n\r\n\t\tthis.isLoadingContacts = false;\r\n\t}\r\n\r\n\tprivate async getAreaContacts(): Promise {\r\n\t\tconst queryParams: AreaContactModalPaginatedSearchQueryParams = {\r\n\t\t\tpage: this.recordsPage,\r\n\t\t\tpageSize: this.recordsPageSize,\r\n\t\t\tsortBy: this.sortBy,\r\n\t\t\tsortDesc: this.sortDesc,\r\n\t\t\tsearchTerm: this.contactFilter,\r\n\t\t\troleSearchTerm: this.eventActiveRole != defaultRole ? this.eventActiveRole : \"\"\r\n\t\t};\r\n\r\n\t\tthis.isLoadingContacts = true;\r\n\r\n\t\ttry {\r\n\t\t\tconst result: AreaContactsPagedResponse = await userApi.getKeyContactsByGroup(this.groupId, this.generateNewPaginatedSearchRequest(queryParams));\r\n\t\t\tif(!result){\r\n\t\t\t\tthis.areaContacts = [];\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.areaContacts = result.data;\r\n\t\t\tthis.totalRecords = result.totalRecords;\r\n\t\t}\r\n\t\tcatch {\r\n\t\t\tthis.isLoadingContacts = false;\r\n\t\t}\r\n\r\n\t\tawait this.mapEventUniqueRoles();\r\n\r\n\t\tthis.isLoadingContacts = false;\r\n\t\tif (this.isCustomFieldsEnabled && this.contactCustomFields) {\r\n\t\t\tthis.mapCustomFieldPriorities();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate mapCustomFieldPriorities(): void {\r\n\t\tthis.areaContacts.map(contact => {\r\n\t\t\tcontact.customFieldPriorities.forEach(priority => {\r\n\t\t\t\tconst matchingCustomField = (this.contactCustomFields).find(cf => cf.id.toString() == priority.id);\r\n\t\t\t\tpriority.title = matchingCustomField?.title;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async mapEventUniqueRoles(): Promise {\r\n\t\tlet uniqueRoles: string[] = await userApi.getContactRolesByGroup(this.groupId);\r\n\t\tthis.eventUniqueRoles = [defaultRole, ...uniqueRoles];\r\n\t}\r\n\r\n\tprivate get visibleFields(): VueBootstrapField[] {\r\n\t\treturn this.contactTableColumns.filter(c => c.visible);\r\n\t}\r\n\r\n\tprivate getCustomFieldCollapseState(id: number): boolean {\r\n\t\tlet isOpen: boolean = false;\r\n\r\n\t\tthis.customFieldsCollapseOpen.forEach(element => {\r\n\t\t\tif (element.id === id) {\r\n\t\t\t\tisOpen = element.isOpen;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn isOpen;\r\n\t}\r\n\r\n\t@Watch(\"eventActiveRole\")\r\n\t@Watch(\"eventUniqueRole\")\r\n\tprivate resetCustomFieldCollapseState(): void {\r\n\t\tthis.recordsPage = 1;\r\n\t\tthis.getAreaContacts();\r\n\r\n\t\tthis.customFieldsCollapseOpen.forEach(element => {\r\n\t\t\telement.isOpen = false;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get showContacts(): boolean {\r\n\t\treturn this.eventUniqueRoles && this.eventUniqueRoles.length > 1;\r\n\t}\r\n\r\n\tprivate get isCustomFieldsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"CustomFields\"]);\r\n\t}\r\n\r\n\t// Gets the Event Id from Event Details if there are any\r\n\tprivate get eventId(): number {\r\n\t\treturn this.eventDetails ? this.eventDetails.eventID : null;\r\n\t}\r\n\r\n\tprivate async onRecordsPerPageClick(): Promise {\r\n\t\tif (parseInt(this.recordsPageSizeUpdated) !== this.recordsPageSize) {\r\n\t\t\tthis.recordsPage = 1;\r\n\t\t}\r\n\r\n\t\tthis.recordsPageSize = parseInt(this.recordsPageSizeUpdated);\r\n\t\tawait this.onPageClick(this.recordsPage);\r\n\t}\r\n\r\n\tprivate async onPageClick(page: number): Promise {\r\n\t\tif (this.isLoadingContacts)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.recordsPage = page || this.recordsPage;\r\n\r\n\t\tawait this.getAreaContacts();\r\n\t}\r\n\r\n\tprivate removeNonDigitsFromString(value: string): string {\r\n\t\tif (!value) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tconst digitFind = value.match(/\\d+/g);\r\n\t\tif (!digitFind) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\r\n\t\tif (parseInt(digitFind.join(\"\")) > parseInt(this.recordsPageSizeMax)) {\r\n\t\t\tthis.recordsPageSizeUpdated = this.recordsPageSizeMax;\r\n\t\t}\r\n\r\n\t\treturn digitFind.join(\"\");\r\n\t}\r\n\r\n\tprivate setFilterModalOpen(): void {\r\n\t\tthis.showColumnModal = true;\r\n\t}\r\n\r\n\tprivate handleSearchInput = debounce(async (searchTerm: string): Promise => {\r\n\t\tawait this.performSearch(searchTerm);\r\n\t}, getDebouncePeriod());\r\n\r\n\tprivate async performSearch(searchTerm: string): Promise {\r\n\t\tthis.contactFilter = searchTerm;\r\n\t\tthis.recordsPage = defaultMinPage;\r\n\t\tawait this.getAreaContacts();\r\n\t}\r\n\r\n\tprivate async onSortChange(event: VueBootstrapFieldTableSortEvent): Promise {\r\n\t\tif (this.isLoadingContacts || event.sortBy == '') {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.recordsPage = 1;\r\n\t\tthis.sortBy = event.sortBy || this.sortBy;\r\n\t\tthis.sortDesc = event.sortDesc;\r\n\r\n\t\tawait this.getAreaContacts();\r\n\t}\r\n\r\n\tprivate get queryHasContacts(): string {\r\n\t\tif(!this.showContacts && !this.isLoadingContacts) {\r\n\t\t\treturn 'No contacts for ' + this.groupTitle\r\n\t\t}\r\n\r\n\t\tif(this.contactFilter.length > 0 && this.areaContacts.length < 1 && !this.isLoadingContacts){\r\n\t\t\treturn 'No contacts exist for search term: ' + this.contactFilter;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaContacts.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaContacts.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaContacts.vue?vue&type=template&id=4928cc29\"\nimport script from \"./AreaContacts.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaContacts.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaContacts.vue?vue&type=style&index=0&id=4928cc29&prod&lang=scss\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{attrs:{\"data-cy\":_vm.dataCyTag}},[(_vm.showHyperlinks)?_c('span',[_c('a',{attrs:{\"data-cy\":(_vm.dataCyTag + \"-link\"),\"href\":_vm.href}},[_vm._v(\" \"+_vm._s(_vm.value)+\" \")])]):_c('span',{attrs:{\"data-cy\":(_vm.dataCyTag + \"-static\")}},[_vm._v(\" \"+_vm._s(_vm.value)+\" \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\n\r\n@Component\r\nexport default class HyperlinkContact extends Vue {\r\n @Prop({ type: String, required: true }) value!: string;\r\n @Prop({ type: Boolean, required: true }) showHyperlinks!: boolean;\r\n @Prop({ type: String, default: \"tel\" }) type?: \"tel\" | \"email\";\r\n @Prop({ type: String, required: true }) dataCy?: string;\r\n\r\n private get href(): string {\r\n if (!this.value) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n const prefixes = {\r\n tel: \"tel:\",\r\n email: \"mailto:\"\r\n };\r\n\r\n return `${prefixes[this.type]}${this.value}`;\r\n }\r\n\r\n private get dataCyTag(): string {\r\n return this.dataCy || \"\";\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HyperlinkContact.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./HyperlinkContact.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./HyperlinkContact.vue?vue&type=template&id=3fc782cb\"\nimport script from \"./HyperlinkContact.vue?vue&type=script&lang=ts\"\nexport * from \"./HyperlinkContact.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport vSelect3 from \"vselect3\";\r\nimport { UserPermissions } from '@/store/types';\r\nimport SchedulesCalendar from './Schedules/SchedulesCalendar.vue';\r\nimport ScheduleModal from \"./Schedules/ScheduleModal.vue\";\r\nimport { ScheduleType } from '@/store/schedules/types';\r\nimport { ScheduleTypes } from \"@/components/Schedules/ScheduleEnums\";\r\nimport ValidatePinCodeModal from \"@/components/ValidatePinCodeModal.vue\";\r\nimport AreaNotesForm from '@/components/area-notes/AreaNotesForm.vue';\r\nimport AreaNotesTable from '@/components/area-notes/AreaNotesTable.vue';\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport AreaEventHistory from \"./area-event-history/AreaEventHistory.vue\";\r\nimport { CustomFieldDto, CustomFieldTableTypes } from \"@/store/custom-fields/types\";\r\nimport { truncateString } from '@/filters';\r\nimport AreaContacts from \"@/components/contacts/AreaContacts.vue\";\r\nimport CustomDefinedFieldsDisplay from \"@/components/custom-fields/CustomDefinedFieldsDisplay.vue\";\r\nimport HyperlinkContact from \"@/components/area-details/HyperlinkContact.vue\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst Schedules = namespace(\"schedules\");\r\nconst CustomFields = namespace(\"customFields\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vSelect3,\r\n\t\t\"schedules-calendar\": SchedulesCalendar,\r\n\t\t\"schedule-modal\": ScheduleModal,\r\n\t\t\"area-notes-form\": AreaNotesForm,\r\n\t\t\"area-notes-table\": AreaNotesTable,\r\n\t\t\"area-event-history-tab\": AreaEventHistory,\r\n\t\t\"validate-pin-code-modal\": ValidatePinCodeModal,\r\n\t\t\"custom-fields-display\": CustomDefinedFieldsDisplay,\r\n\t\t\"area-contacts\": AreaContacts,\r\n\t\t\"hyperlink-contact\": HyperlinkContact\r\n\t},\r\n\tfilters: { truncateString }\r\n})\r\nexport default class AreaDetails extends Vue {\r\n\t@SiteMonitor.Mutation setEventDetailsShown: any;\r\n\t@SiteMonitor.Action loadEventGroup: any;\r\n\t@SiteMonitor.State areaDetailsTabIndex: number;\r\n\t@SiteMonitor.Getter(\"getEventDetails\") private eventDetails: EventDetails;\r\n\r\n\t@Schedules.State selectedGroup: number | null;\r\n\t@Schedules.State scheduleTypes: ScheduleType[];\r\n\t@Schedules.State selectedScheduleTypes: number[];\r\n\t@Schedules.Action loadScheduleTypes: () => Promise;\r\n\r\n\t@Schedules.Mutation setSelectedGroup: (selectedGroup: number) => void;\r\n\t@Schedules.Mutation setEnabledScheduleFilter: (disabled: boolean | null) => void;\r\n\t@Schedules.Mutation updateSearchString: (searchString: string) => void;\r\n\t@Schedules.Mutation addSelectedScheduleType: (scheduleTypeId: number) => void;\r\n\t@Schedules.Mutation removeSelectedScheduleType: (scheduleTypeId: number) => void;\r\n\t@Schedules.Mutation setIsReloadRequired: (isReloadRequired: boolean) => void;\r\n\t@Schedules.Mutation resetSelectedGroup: () => void;\r\n\r\n\t@Schedules.Getter isScheduleTypeSelected: (scheduleTypeId: number) => boolean;\r\n\r\n\t@Getter(\"getFeature\") getFeature: (featureName: string[]) => boolean;\r\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\r\n\r\n\tpublic eventAreaDetails: any = {};\r\n\r\n\tprivate enabledScheduleFilter: boolean = true;\r\n\tprivate scheduleSearchFilter: string = \"\";\r\n\tprivate scheduleCollapseOpen: boolean = false;\r\n\tprivate selectedScheduleTypeOptions: number[] = [];\r\n\tprivate readonly areaCustomFieldType = CustomFieldTableTypes.Area;\r\n\r\n\t@Prop({ type: Boolean, default: false }) showTitle: boolean;\r\n\t@Prop({ type: Number, default: false }) groupId: number;\r\n\r\n\t@CustomFields.Action retrieveCustomFields: ({ tableType, live }) => Promise;\r\n\t@CustomFields.State areaCustomFields: CustomFieldDto[];\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tif (this.isCustomFieldsEnabled) {\r\n\t\t\tawait this.retrieveCustomFields({ tableType: CustomFieldTableTypes.Area, live: true });\r\n\t\t}\r\n\r\n\t\tawait this.loadEventAreaDetails();\r\n\r\n\t\tthis.selectedScheduleTypeOptions = this.selectedScheduleTypes;\r\n\r\n\t\tif (!this.isMaskingEnabled && this.selectedScheduleTypeOptions.includes(ScheduleTypes.Masking)) {\r\n\t\t\tthis.selectedScheduleTypeOptions.removeWhere(s => s == ScheduleTypes.Masking);\r\n\t\t}\r\n\r\n\t\tif (!this.isEventRaiseEnabled && this.selectedScheduleTypeOptions.includes(ScheduleTypes.EventRaise)) {\r\n\t\t\tthis.selectedScheduleTypeOptions.removeWhere(s => s == ScheduleTypes.EventRaise);\r\n\t\t}\r\n\r\n\t\tif (this.showSchedules) {\r\n\t\t\tawait this.loadSchedules();\r\n\t\t}\r\n\t}\r\n\r\n\tbeforeDestroy(): void {\r\n\t\tthis.resetSelectedGroup();\r\n\t}\r\n\r\n\tprivate async loadEventAreaDetails(): Promise {\r\n\t\tthis.eventAreaDetails = await this.loadEventGroup(this.groupId);\r\n\t\t// emit the area details back up to the parent component in Views (saving multiple requests for the same data)\r\n\t\tthis.$emit(\"areaDetails\", this.eventAreaDetails);\r\n\t}\r\n\r\n\tprivate async loadSchedules(): Promise {\r\n\t\tif (this.selectedGroup != this.groupId) {\r\n\t\t\tthis.setSelectedGroup(this.groupId);\r\n\t\t}\r\n\r\n\t\tthis.setEnabledScheduleFilter(true);\r\n\r\n\t\tawait this.loadScheduleTypes();\r\n\t}\r\n\r\n\tprivate get showSchedules(): boolean {\r\n\t\treturn this.getFeature([\"Schedules\"]) && !!(this.permissions.canViewSchedules || this.permissions.canEditSchedules);\r\n\t}\r\n\r\n\tprivate get disableContacts(): boolean {\r\n\t\treturn this.getFeature([\"Temp_DisableAreaModalContacts\"]);\r\n\t}\r\n\r\n\tprivate get isContactsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Contacts\"]);\r\n\t}\r\n\r\n\tprivate get isMaskingEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Schedules\", \"Masking\"]);\r\n\t}\r\n\r\n\tprivate get isEventRaiseEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Schedules\", \"EventRaise\"]);\r\n\t}\r\n\r\n\tprivate get isEventHistoryEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Areas\", \"AreaEventHistory\"]) && this.permissions.canViewEventHistory;\r\n\t}\r\n\r\n\tprivate get showHyperlinks(): boolean {\r\n\t\treturn this.getFeature([\"AreaNotes\", \"Hyperlinks\"]);\r\n\t}\r\n\r\n\tprivate get isCustomFieldsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"CustomFields\"]);\r\n\t}\r\n\r\n\tpublic get showAreaNotes() {\r\n\t\treturn this.getFeature([\"AreaNotes\"]);\r\n\t}\r\n\r\n\tprivate get filteredScheduleTypes(): ScheduleType[] {\r\n\t\tlet schedulesTypeList = this.scheduleTypes;\r\n\r\n\t\tif (!this.isMaskingEnabled) {\r\n\t\t\tschedulesTypeList = schedulesTypeList.filter(st => st.scheduleTypeId != ScheduleTypes.Masking);\r\n\t\t}\r\n\r\n\t\tif (!this.isEventRaiseEnabled) {\r\n\t\t\tschedulesTypeList = schedulesTypeList.filter(st => st.scheduleTypeId != ScheduleTypes.EventRaise);\r\n\t\t}\r\n\r\n\t\treturn schedulesTypeList;\r\n\t}\r\n\r\n\t@Watch(\"enabledScheduleFilter\")\r\n\tprivate onEnabledFilterChanged(disabled: boolean | null): void {\r\n\t\tthis.setEnabledScheduleFilter(disabled);\r\n\t\tthis.setIsReloadRequired(true);\r\n\t}\r\n\r\n\t@Watch(\"scheduleSearchFilter\")\r\n\tprivate onScheduleSearch(filter: string): void {\r\n\t\tthis.updateSearchString(filter);\r\n\t\tthis.setIsReloadRequired(true);\r\n\t}\r\n\r\n\tprivate onScheduleTypeChanged(newScheduleTypes: number[]): void {\r\n\t\tthis.selectedScheduleTypes.forEach(s => {\r\n\t\t\tthis.removeSelectedScheduleType(s);\r\n\t\t});\r\n\r\n\t\tnewScheduleTypes.forEach(s => {\r\n\t\t\tthis.addSelectedScheduleType(s);\r\n\t\t});\r\n\r\n\t\tthis.setIsReloadRequired(true);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaDetails.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaDetails.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AreaDetails.vue?vue&type=template&id=0dd6939a&scoped=true\"\nimport script from \"./AreaDetails.vue?vue&type=script&lang=ts\"\nexport * from \"./AreaDetails.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AreaDetails.vue?vue&type=style&index=0&id=0dd6939a&prod&lang=css&scoped=true\"\nimport style1 from \"./AreaDetails.vue?vue&type=style&index=1&id=0dd6939a&prod&lang=scss\"\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 \"0dd6939a\",\n null\n \n)\n\nexport default component.exports","import { DeviceDetails, DeviceTypeCounts, ServerDetails, DeviceResponseRecordsRetrievalStatus } from \"@/store/devices/types\";\r\n\r\nexport const getNewServerDetailsTemplate = (): ServerDetails => {\r\n\treturn {\r\n\t\tserverID: null,\r\n\t\tserverTypeID: null,\r\n\t\ttitle: null,\r\n\t\tgroupID: null,\r\n\t\thost: null,\r\n\t\tport: null,\r\n\t\tusername: null,\r\n\t\tpassword: null,\r\n\t\textraValue: null,\r\n\t\tlogDisarmedAlarms: false,\r\n\t\tshowEdge: false,\r\n\t\tedgePath: null,\r\n\t\tedgeUser: null,\r\n\t\tedgePassword: null,\r\n\t\tdeviceTypeCounts: getDeviceTypeCountsDefaults(),\r\n\t\taccountNumber: \"\",\r\n\t\tserverLineProfileId: null,\r\n\t};\r\n};\r\n\r\nexport const getNewDeviceDetailsTemplate = (): DeviceDetails => {\r\n\treturn {\r\n\t\tdeviceID: null,\r\n\t\tserverID: null,\r\n\t\tdeviceTypeID: null,\r\n\t\ttitle: null,\r\n\t\tquality: null,\r\n\t\tspeed: null,\r\n\t\thasPtz: null,\r\n\t\tauditServiceEndpoint: null,\r\n\t\tdeviceServerEndpoint: null,\r\n\t\teventRecordId: null,\r\n\t\tpresets: null,\r\n\t\tinput1: null,\r\n\t\tinput2: null,\r\n\t\textraValue: null,\r\n\t\tsettingsMeta: null,\r\n\t\tcameraSettings: null,\r\n\t\taudioSettings: null,\r\n\t\trelaySettings: null,\r\n\t\tdeviceServiceSession: null,\r\n\t\tcomment: null,\r\n\t\torderNum: null,\r\n\t\trelayType: null,\r\n\t\teventRecordID: null,\r\n\t\tliveVideoDelay: null,\r\n\t\tsupportsAudio: null,\r\n\t\treceivesAudio: null,\r\n\t\ttransmitsAudio: null,\r\n\t\ttranscodingAllowed: false,\r\n\t};\r\n};\r\n\r\nexport const getAudioSettingsDefaults = () => {\r\n\treturn {\r\n\t\treceiveEnabled: false,\r\n\t\ttransmitEnabled: false\r\n\t};\r\n};\r\n\r\nexport const getCameraSettingsDefaults = () => {\r\n\treturn {\r\n\t\tqual: \"Lowest\",\r\n\t\ttelemServerId: -1,\r\n\t\ttelemSpeed: \"Default\"\r\n\t};\r\n};\r\n\r\nexport const getDoorRelaySettingsDefaults = () => {\r\n\treturn {\r\n\t\tonOffEnabled: false,\r\n\t\tpulseEnabled: false,\r\n\t\tstateSwitchEnabled: false,\r\n\t\tstateSwitchDefaultState: false\r\n\t};\r\n};\r\n\r\nexport const getOutputRelaySettingsDefaults = () => {\r\n\treturn {\r\n\t\t...getDoorRelaySettingsDefaults(),\r\n\t\trelayType: \"Output\"\r\n\t};\r\n};\r\n\r\nexport const getDeviceTypeCountsDefaults = (): DeviceTypeCounts => {\r\n\treturn {\r\n\t\tdevices: 0,\r\n\t\tcameras: 0,\r\n\t\taudios: 0,\r\n\t\tdoors: 0,\r\n\t\toutputs: 0,\r\n\t\talarms: 0\r\n\t};\r\n};\r\n\r\nexport const getDeviceResponseRecordsRetrievalStatusDefaults = (): DeviceResponseRecordsRetrievalStatus => {\r\n\treturn {\r\n\t\tallAlarmsRetrieved: false,\r\n\t\tallServersRetrieved: false,\r\n\t\tallFilteredServersRetrieved: false,\r\n\t\tallCamerasRetrieved: false,\r\n\t\tallFilteredCamerasRetrieved: false,\r\n\t\tallAudiosRetrieved: false,\r\n\t\tallFilteredAudiosRetrieved: false,\r\n\t\tallDoorsRetrieved: false,\r\n\t\tallFilteredDoorsRetrieved: false,\r\n\t\tallOutputsRetrieved: false,\r\n\t\tallFilteredOutputsRetrieved: false\r\n\t};\r\n};\r\n","export function getDebouncePeriod(debouncePeriod: number = 500) {\r\n\treturn process.env.NODE_ENV === \"test\" ? 1 : debouncePeriod;\r\n}\r\n","import { PaginatedSearchQueryParams } from \"../types\";\r\n\r\nexport interface DevicesState {\r\n\tcancelTokenSource: any;\r\n\tdoors: DeviceDetails[];\r\n\tserversList: ServerDetails[];\r\n\tsyncSystems: SyncSystem[];\r\n\ttotalSyncSystems: number;\r\n\tfilteredServersList: ServerDetails[];\r\n\ttotalServers: number;\r\n\tcurrentServer: ServerDetails;\r\n\tdevices: DeviceDetails[];\r\n\ttotalDevices: number\r\n\tdevice: DeviceDetails;\r\n\tcurrentDeviceTypeIdentifier: DeviceTypeIdentifier;\r\n\tserverTypes: ServerType[];\r\n\tdeviceConfigurationErrors: DeviceConfigurationErrors;\r\n\tdeviceResponseRecordsRetrievalStatus: DeviceResponseRecordsRetrievalStatus;\r\n\tdeviceTypeCounts?: DeviceTypeCounts;\r\n\talarms?: number;\r\n\tdeleteChildDeviceModalVisible: boolean;\r\n\teditChildDeviceModalVisible: boolean;\r\n\tcameraPreviewModalVisible: boolean;\r\n\tnotificationOptions: NotificationOptions | null;\r\n\tserverLineProfiles: ServerLineProfile[];\r\n\tserverConfig: DeviceConfiguration[];\r\n\tgettingConfig: boolean;\r\n\tsettingConfig: boolean;\r\n\tserverModalOpened: boolean;\r\n\tserverModalStartTab: ServerModalStartTab\r\n}\r\n\r\nexport interface SyncSystem {\r\n\tsyncSystemId: number;\r\n\tserverTypeId: number;\r\n\tserverId?: number;\r\n\tapplianceId?: number;\r\n\ttitle: string;\r\n\thost: string;\r\n\tport: number;\r\n\tusername: string;\r\n\tpassword: string;\r\n\textraValue: string;\r\n\ttenantId: number;\r\n\tisSuiteSync: boolean;\r\n\tisDeviceSync: boolean;\r\n\tlinkedSyncSystemId?: number;\r\n\tlinkedSyncSystemTitle?: string;\r\n\tprimaryApplianceId?: number;\r\n\tsecondaryApplianceId?: number;\r\n}\r\n\r\nexport interface DeviceDetails {\r\n\tdeviceID: number;\r\n\tserverID: number;\r\n\tdeviceTypeID: number;\r\n\ttitle: string;\r\n\tquality: string;\r\n\tspeed: string;\r\n\thasPtz: boolean;\r\n\tauditServiceEndpoint: string;\r\n\tdeviceServerEndpoint: string;\r\n\teventRecordId: number | null;\r\n\ttimeZone?: string | null;\r\n\tpresets: DevicePreset[];\r\n\tinput1: number;\r\n\tinput2: number;\r\n\tserverTitle?: string | null | undefined;\r\n\textraValue?: string;\r\n\tsettingsMeta: string | null;\r\n\taudioSettings?: AudioSettingsMeta;\r\n\tcameraSettings?: CameraSettingsMeta;\r\n\trelaySettings?: RelaySettingsMeta;\r\n\tdefaultReferenceShot?: string;\r\n\tgroupID?: number;\r\n\tdeviceServiceSession: string;\r\n\tcomment: string;\r\n\torderNum: number;\r\n\trelayType: string;\r\n\teventRecordID: number | null;\r\n\tliveVideoDelay?: number | null;\r\n\tsupportsAudio: boolean;\r\n\treceivesAudio: boolean;\r\n\ttransmitsAudio: boolean;\r\n\tgroupSyncId?: string;\r\n\treadonly?: string;\r\n\treadonlyMessage?: string;\r\n\ttranscodingAllowed?: boolean;\r\n\tcanTimeTravel?: boolean;\r\n}\r\n\r\nexport interface DevicePreset {\r\n\tpresetNumber: number;\r\n\ttitle: string;\r\n}\r\n\r\nexport interface ServerDetails {\r\n\tserverID: number;\r\n\tserverTypeID: number;\r\n\ttitle: string;\r\n\tgroupID: number;\r\n\thost: string;\r\n\tport: number;\r\n\tusername: string;\r\n\tpassword: string;\r\n\textraValue: string;\r\n\tgroupName?: string;\r\n\textraValueName?: string;\r\n\tdevices?: any[];\r\n\tisRaiseIndividual?: boolean;\r\n\tisRaiseGrouped?: boolean;\r\n\tdeviceTypeTitle?: string;\r\n\tapplianceId?: number;\r\n\tlogDisarmedAlarms?: boolean;\r\n\tshowEdge?: boolean;\r\n\tedgePath?: string;\r\n\tedgeUser?: string;\r\n\tedgePassword?: string;\r\n\tdeviceTypeCounts?: DeviceTypeCounts;\r\n\talarms?: number;\r\n\taccountNumber?: string;\r\n\tserverLineProfileId?: number;\r\n\tsyncSystemId?: number;\r\n\treadonly?: boolean;\r\n\treadonlyMessage?: string;\r\n\tdeviceServiceEndpoint?: string;\r\n\tslaBreachSeconds?: number | null;\r\n\tprimaryApplianceId?: number;\r\n\tsecondaryApplianceId?: number;\r\n}\r\n\r\nexport interface AlarmDecoderServer {\r\n\tserverID: number;\r\n\ttitle: string;\r\n}\r\n\r\nexport interface ServerConfiguration {\r\n serverId: number;\r\n\textraValue: string;\r\n\tdeviceConfiguration: DeviceConfiguration;\r\n}\r\n\r\nexport interface ServerConfigurationResponse {\r\n serverConfiguration: ServerConfiguration,\r\n\terrors: DeviceConfigurationErrors;\r\n}\r\n\r\nexport interface DeviceConfigurationErrors {\r\n\talarms: DeviceConfigurationAlarm[];\r\n\tcameras: DeviceConfigurationCamera[];\r\n\toutputs: DeviceConfigurationRelay[];\r\n\tdoors: DeviceConfigurationRelay[];\r\n\taudios: DeviceConfigurationAudio[];\r\n}\r\n\r\nexport interface DeviceConfiguration {\r\n\tname: string;\r\n\textraValue: string;\r\n\thost: string;\r\n\tport: number;\r\n\tusername: string;\r\n\tpassword: string;\r\n\tsyncIdentifier: string;\r\n\talarms: DeviceConfigurationAlarm[];\r\n\tcameras: DeviceConfigurationCamera[];\r\n\trelays: DeviceConfigurationRelay[];\r\n\taudios: DeviceConfigurationAudio[];\r\n\tusers: DeviceConfigurationUser[];\r\n}\r\n\r\nexport interface DeviceConfigurationSelections {\r\n\tname: string;\r\n\textraValue: string;\r\n\thost: string;\r\n\tport: number;\r\n\tusername: string;\r\n\tpassword: string;\r\n\tsyncIdentifier: string;\r\n\talarms: DeviceConfigurationAlarmSelection[];\r\n\tcameras: DeviceConfigurationCameraSelection[];\r\n\tdoors: DeviceConfigurationRelaySelection[];\r\n\toutputs: DeviceConfigurationRelaySelection[];\r\n\taudios: DeviceConfigurationAudioSelection[];\r\n\tusers: DeviceConfigurationUser[];\r\n}\r\n\r\nexport interface DeviceConfigurationAlarmSelection extends DeviceConfigurationAlarm {\r\n\tselected: boolean\r\n}\r\nexport interface DeviceConfigurationAlarm {\r\n\ttitle: string;\r\n\tinput1: number;\r\n\tinput2: number;\r\n\teventType: number;\r\n\tsyncIdentifier: string;\r\n\textraValue: string;\r\n\tlinkedCameraInput: number;\r\n\thighPriority: boolean;\r\n}\r\n\r\nexport interface DeviceConfigurationCameraSelection extends DeviceConfigurationCamera {\r\n\tselected: boolean\r\n}\r\n\r\nexport interface DeviceConfigurationCamera {\r\n\tname: string;\r\n input1: number;\r\n hasPtz: boolean;\r\n presets: DeviceConfigurationPreset[];\r\n referenceImage: number[];\r\n syncIdentifier: string;\r\n\textraValue: string;\r\n features: DeviceFeature[];\r\n\tlatLong: string;\r\n}\r\n\r\nexport interface DeviceConfigurationRelaySelection extends DeviceConfigurationRelay {\r\n\tselected: boolean\r\n}\r\n\r\nexport interface DeviceConfigurationRelay {\r\n\tname: string;\r\n input1: number;\r\n\tinput2: number;\r\n type: number;\r\n syncIdentifier: string;\r\n\textraValue: string;\r\n features: DeviceFeature[];\r\n\tlatLong: string;\r\n}\r\n\r\nexport interface DeviceConfigurationAudioSelection extends DeviceConfigurationAudio {\r\n\tselected: boolean\r\n}\r\n\r\nexport interface DeviceConfigurationAudio {\r\n\tname: string;\r\n input1: number;\r\n type: number;\r\n syncIdentifier: string;\r\n\textraValue: string;\r\n features: DeviceFeature[];\r\n\tlatLong: string;\r\n}\r\n\r\nexport interface DeviceConfigurationUser {\r\n\tname: string;\r\n\taddress: string;\r\n\temail: string;\r\n\tphone: string;\r\n\textraValue: string;\r\n\texternalID: string;\r\n\tserverID: number;\r\n}\r\n\r\nexport interface DeviceFeature {\r\n\tname: string;\r\n\tvalue: string;\r\n}\r\n\r\nexport interface DeviceConfigurationPreset {\r\n\tname: string;\r\n\tposition: number;\r\n}\r\n\r\nexport interface DeviceConfigurationPresetTableItems extends DeviceConfigurationPreset {\r\n\tediting: boolean;\r\n\tcreating: boolean;\r\n}\r\n\r\nexport interface DeviceConfigurationPresetPayload extends DeviceConfigurationPreset {\r\n\tdeviceId: number;\r\n\tgroupId: number;\r\n}\r\n\r\nexport interface DeviceSearchResult {\r\n\tdeviceId: number;\r\n\tdeviceTypeId: number;\r\n\tgroupId: number;\r\n\tsettingsMeta: string;\r\n\ttitle: string;\r\n\tserverTypeId?: number;\r\n}\r\n\r\nexport interface DeviceSearchQuery {\r\n\tquery: string;\r\n\tdeviceTypeId: number;\r\n\tsearchTermsInAnyOrder?: boolean;\r\n}\r\n\r\nexport interface DeviceSearchSwipeAndShowQuery {\r\n\tquery: string;\r\n\tsearchTermsInAnyOrder?: boolean;\r\n\tregionUrl?: string;\r\n}\r\n\r\nexport interface FetchServerByGroupParams {\r\n\tgroupId: number;\r\n\tpageSize?: number;\r\n}\r\n\r\nexport interface FetchConfigForServerParams {\r\n\tserver: ServerDetails;\r\n\tserverType: ServerType;\r\n\tauth: string;\r\n}\r\n\r\nexport interface SearchServerByGroupParams extends FetchServerByGroupParams {\r\n\tfilter: string;\r\n}\r\n\r\nexport interface GetDevicesByTypeParams {\r\n\tdeviceTypeId: number;\r\n\tserverId?: number | null | undefined;\r\n\tpage: number;\r\n\tpageSize: number;\r\n\tsortBy?: string;\r\n\tsortDesc?: boolean;\r\n\tsearchTerm?: string | null | undefined;\r\n\tselectOutputs?: boolean | null | undefined;\r\n\tincludeReferenceShots?: boolean | null | undefined;\r\n}\r\n\r\nexport interface GetDeviceForGroupByTypeParams {\r\n\tgroupId: number;\r\n\tdeviceTypeId: number;\r\n\tfilter: string | null | undefined;\r\n}\r\n\r\nexport interface GetDeviceParams {\r\n\teventId: number;\r\n\tdeviceAction: string;\r\n\tnoRecordingCamera: boolean;\r\n}\r\n\r\nexport enum DeviceType {\r\n\tCamera = 1,\r\n\tAudio = 2,\r\n\tRelay = 3,\r\n\tSplitCamera = 4,\r\n\tOutput = 5,\r\n}\r\n\r\nexport enum DeviceTypeIdentifier {\r\n\tCamera = 1,\r\n\tAudio = 2,\r\n\tOutput = 3,\r\n\tDoor = 4\r\n}\r\n\r\nexport enum ServerModalStartTab {\r\n\tServer = 1,\r\n\tSync = 2,\r\n}\r\n\r\nexport interface ServerType {\r\n\tserverTypeID: number;\r\n\ttitle: string;\r\n\tdll: string;\r\n\tdllDeviceType: string;\r\n\tnumAudioInputs: number;\r\n\tnumAudioOutputs: number;\r\n\tcanSendMessage: boolean;\r\n\tcanNotifyRadio: boolean;\r\n\textraValueName: string;\r\n\tusesExtraCameraIDs: string;\r\n\tusesDeviceExtraValue: boolean;\r\n\tusesExtraCameraIds: boolean;\r\n\tusesExtraRelayIds: boolean;\r\n\tusesExtraAudioIds: boolean;\r\n\turlTemplate: string;\r\n\tnumCameras: number;\r\n\tnumRelays: number;\r\n\tnumAlarmInputs: number;\r\n\thasMatrixBuiltIn: boolean;\r\n\thidden: boolean;\r\n\tdefaultPort: number;\r\n\tserverParams: string;\r\n\talarmResponseCodeRegex: string;\r\n\talarmEventCodeRegex: string;\r\n\tcanGetConfig: boolean;\r\n\tisAlarmPanel: boolean;\r\n}\r\n\r\nexport interface DeviceSearchResult {\r\n\tdeviceId: number;\r\n\tdeviceTypeId: number;\r\n\tgroupId: number;\r\n\tsettingsMeta: string;\r\n\ttitle: string;\r\n}\r\n\r\nexport interface DeviceSearchQuery {\r\n\tquery: string;\r\n\tdeviceTypeId: number;\r\n}\r\n\r\nexport interface DevicePreset {\r\n\tpresetNumber: number;\r\n\ttitle: string;\r\n}\r\n\r\nexport interface DeviceTypeCounts {\r\n\tdevices: number;\r\n\tcameras: number;\r\n\taudios: number;\r\n\tdoors: number;\r\n\toutputs: number;\r\n\talarms: number;\r\n}\r\n\r\nexport interface DeviceResponseRecordsRetrievalStatus extends DeviceRecordsRetrievalStatus {\r\n\tallAlarmsRetrieved: boolean;\r\n}\r\n\r\nexport interface DeviceRecordsRetrievalStatus {\r\n\tallServersRetrieved: boolean;\r\n\tallFilteredServersRetrieved: boolean;\r\n\tallCamerasRetrieved: boolean;\r\n\tallFilteredCamerasRetrieved: boolean;\r\n\tallAudiosRetrieved: boolean;\r\n\tallFilteredAudiosRetrieved: boolean;\r\n\tallDoorsRetrieved: boolean;\r\n\tallFilteredDoorsRetrieved: boolean;\r\n\tallOutputsRetrieved: boolean;\r\n\tallFilteredOutputsRetrieved: boolean;\r\n}\r\n\r\nexport interface ServersWithEnabledDeviceTypesParams extends PaginatedSearchQueryParams {\r\n\taudiosEnabled?: boolean;\r\n\tcamerasEnabled?: boolean;\r\n\trelaysEnabled?: boolean;\r\n}\r\n\r\nexport interface AudioSettingsMeta {\r\n\ttransmitEnabled: boolean;\r\n\treceiveEnabled: boolean;\r\n}\r\n\r\nexport interface CameraSettingsMeta {\r\n\tqual: string;\r\n\ttelemServerId: number;\r\n\ttelemSpeed: string;\r\n}\r\n\r\nexport interface RelaySettingsMeta {\r\n\trelayType?: string;\r\n\tonOffEnabled: boolean;\r\n\tpulseEnabled: boolean;\r\n\tstateSwitchEnabled: boolean;\r\n\tstateSwitchDefaultState: boolean;\r\n}\r\n\r\nexport interface ServerLineProfile {\r\n\tserverLineProfileId: number;\r\n\ttitle: string;\r\n\tgroupId?: number;\r\n}\r\n\r\nexport interface CameraPreviewDeviceDetails {\r\n\ttitle: string;\r\n\tdeviceId: number;\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-overlay',{attrs:{\"show\":_vm.showDeleteConfirmation,\"rounded\":\"sm\",\"bg-color\":\"#181818\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('div',{staticClass:\"d-flex text-center align-items-baseline delete-overlay\"},[_c('div',{staticClass:\"text-lg\"},[_vm._v(\"Are you sure you want to delete these rules?\")]),_c('b-button-group',{staticClass:\"float-right\"},[_c('b-button',{attrs:{\"variant\":\"secondary\"},on:{\"click\":function($event){_vm.showDeleteConfirmation = false}}},[_vm._v(\" Cancel \")]),_c('b-button',{attrs:{\"variant\":\"danger\"},on:{\"click\":function($event){return _vm.deleteRule()}}},[_vm._v(\" Delete \")])],1)],1)]},proxy:true}])},[(this.logicStep)?_c('b-row',{attrs:{\"no-gutters\":\"\"}},[(this.nestedLevel != 1)?_c('b-col',{attrs:{\"cols\":_vm.nestedLevel-1}}):_vm._e(),_c('b-col',{staticClass:\"d-flex bg-rule-left p-1 text-lg\",class:_vm.sidebarClass,attrs:{\"cols\":1}},[_c('div',{staticClass:\"align-self-center text-center w-100\"},[_vm._v(\" \"+_vm._s(_vm.operatorText)+\" \")])]),_c('b-col',{staticClass:\"d-flex p-1 border-all\",attrs:{\"cols\":_vm.selectorCols}},[_c('div',{staticClass:\"align-self-center w-100\"},[(_vm.section)?_c('rules-selector',{attrs:{\"conditionSection\":_vm.section,\"parentTypeId\":_vm.parentRuleCondition ? _vm.parentRuleCondition.typeId : null,\"readOnly\":_vm.readOnly,\"data-cy\":\"rule-selector-component\"},on:{\"isValid\":_vm.selectorComponentValidationUpdated},model:{value:(_vm.logicStep.condition.typeId),callback:function ($$v) {_vm.$set(_vm.logicStep.condition, \"typeId\", $$v)},expression:\"logicStep.condition.typeId\"}}):_vm._e(),(this.selectorComponentValidation && this.selectorComponentValidation.isValid === false)?_c('span',{staticClass:\"danger-color\",attrs:{\"data-cy\":\"selector-component-validation-message\"}},[_vm._v(_vm._s(this.selectorComponentValidation.message))]):_vm._e()],1)]),_c('b-col',{staticClass:\"d-flex p-2 border-all border-left-0\"},[_c('div',{staticClass:\"align-self-center w-100\"},[(_vm.valueComponentSet && _vm.logicStep.condition)?_c(_vm.valueComponent.component,_vm._b({tag:\"component\",attrs:{\"section\":_vm.section,\"parentCondition\":_vm.parentRuleCondition,\"readOnly\":_vm.readOnly,\"data-cy\":\"rule-value-component\"},on:{\"input\":_vm.valueComponentValueUpdated,\"isValid\":_vm.valueComponentValidationUpdated},model:{value:(_vm.logicStep.condition.value),callback:function ($$v) {_vm.$set(_vm.logicStep.condition, \"value\", $$v)},expression:\"logicStep.condition.value\"}},'component',_vm.valueComponent.props,false)):_vm._e(),(this.valueComponentValidation && this.valueComponentValidation.isValid === false)?_c('span',{staticClass:\"danger-color\",attrs:{\"data-cy\":\"value-component-validation-message\"}},[_vm._v(_vm._s(this.valueComponentValidation.message))]):_vm._e()],1)]),_c('b-col',{staticClass:\"d-flex text-center p-3 border-all border-left-0\",attrs:{\"cols\":\"1\"}},[(!_vm.readOnly)?_c('div',{staticClass:\"align-self-center w-100\"},[_c('b-button-group',{staticClass:\"align-self-center\"},[(_vm.allowAnd)?_c('b-button',{attrs:{\"size\":\"sm\"},on:{\"click\":function($event){return _vm.addSubRule('AND')}}},[_vm._v(\"AND\")]):_vm._e(),(_vm.allowOr)?_c('b-button',{attrs:{\"size\":\"sm\"},on:{\"click\":function($event){return _vm.addSubRule('OR')}}},[_vm._v(\"OR\")]):_vm._e(),(_vm.section == 'Trigger' || (_vm.section == 'Action' && !_vm.isRoute))?_c('b-button',{attrs:{\"size\":\"sm\"},on:{\"click\":function($event){_vm.showDeleteConfirmation = true}}},[_c('i',{staticClass:\"fa fa-trash hover-icon\",attrs:{\"title\":\"Delete\"}})]):_vm._e()],1)],1):_vm._e()])],1):_vm._e(),(_vm.logicStep)?_c('div',_vm._l((_vm.logicStep.subRules),function(subRule){return _c('rules-logic-step-nest',{key:subRule.id,attrs:{\"allowAnd\":_vm.allowAnd,\"allowOr\":_vm.allowOr,\"parentRuleCondition\":_vm.logicStep.condition,\"nestedLevel\":_vm.ruleScopeLevel,\"value\":subRule,\"section\":_vm.section,\"readOnly\":_vm.readOnly},on:{\"input\":_vm.subRuleUpdated,\"isValid\":function (value) { return _vm.subRuleValidationUpdated(value, subRule.id); },\"deleted-step\":_vm.subRuleDeleted}})}),1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('vue-select',{staticClass:\"dark flex-search w-100\",attrs:{\"label\":\"title\",\"options\":_vm.selectorOptions,\"reduce\":function (val) { return val.id; },\"appendToBody\":\"\",\"disabled\":_vm.readOnly},on:{\"input\":_vm.selectedValueUpdated},model:{value:(_vm.selectedValue),callback:function ($$v) {_vm.selectedValue=$$v},expression:\"selectedValue\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { cloneDeep, get } from 'lodash';\r\nimport vSelect from \"vue-select\";\r\nimport { ActionOption } from \"@/store/rules-engine/types\";\r\nimport { Getter } from \"vuex-class\";\r\nimport { FeaturesList } from \"@/store/types\";\r\n\r\n@Component({\r\n\t\tcomponents: {\r\n\t\t\t\"vue-select\": vSelect\r\n\t\t}\r\n\t})\r\nexport default class RulesSelector extends Vue {\r\n //Move all getters into a vuex store\r\n private get triggerOptions(): any[] {\r\n return [\r\n {\r\n id: 1,\r\n title: \"Device Type\",\r\n excludes: [1,4,5,6,7]\r\n },\r\n {\r\n id: 2,\r\n title: \"Alarm Type\",\r\n excludes: [1,4,5,6,7]\r\n },\r\n {\r\n id: 3,\r\n title: \"X seconds after the Scope was triggered\"\r\n },\r\n {\r\n id: 4,\r\n title: \"Device\",\r\n excludes: [4],\r\n requires: [1, 4, 5, 6, 7]\r\n },\r\n {\r\n id: 5,\r\n title: \"Event Type\",\r\n excludes: [5, 4],\r\n requires: [1, 4, 5, 6, 7]\r\n },\r\n {\r\n id: 6,\r\n title: \"Input 1\",\r\n excludes: [6],\r\n requires: [1, 4, 5, 6, 7]\r\n },\r\n {\r\n id: 7,\r\n title: \"Input 2\",\r\n excludes: [7],\r\n requires: [1, 4, 5, 6, 7]\r\n },\r\n {\r\n id: 8,\r\n title: \"X seconds before the Scope was triggered\",\r\n },\r\n ];\r\n }\r\n\r\n\tprivate get defaultActionOptions(): ActionOption[] {\r\n return [\r\n {\r\n id: 1,\r\n title: \"Change Priority\"\r\n },\r\n {\r\n id: 2,\r\n title: \"Action Plan\"\r\n },\r\n {\r\n id: 3,\r\n title: \"Combine Alarms\"\r\n },\r\n {\r\n id: 4,\r\n title: \"Close Event\"\r\n }\r\n ];\r\n\t}\r\n\r\n private get actionOptions(): ActionOption[] {\r\n\t\tconst options = this.defaultActionOptions;\r\n\r\n\t\tif (this.isActionPlanRegexEnabled) {\r\n\t\t\toptions.push({\r\n id: 5,\r\n title: \"Action Plan Regex\"\r\n });\r\n\t\t}\r\n\r\n\t\treturn options;\r\n }\r\n\r\n private get scopeOptions(): any[] {\r\n return [\r\n {\r\n id: 1,\r\n title: \"Device Type\"\r\n },\r\n {\r\n id: 2,\r\n title: \"Alarm Type\"\r\n }\r\n ];\r\n }\r\n\r\n private get selectorOptions(): any\r\n {\r\n switch(this.conditionSection){\r\n case \"Trigger\":\r\n return this.triggerOptions\r\n .filter(to =>\r\n (!to.requires || to.requires.includes(this.parentTypeId))\r\n && (!to.excludes || !to.excludes.includes(this.parentTypeId))\r\n );\r\n case \"Action\":\r\n return this.actionOptions;\r\n //TODO: Filter out any action options that have a limit of 1\r\n case \"Scope\":\r\n return this.scopeOptions;\r\n //TODO: Filter out any scope options that are dependent on another field\r\n default:\r\n return [];\r\n }\r\n }\r\n\r\n //Action, Trigger, Scope\r\n @Prop()\r\n private conditionSection: string;\r\n\r\n @Prop()\r\n private value: any;\r\n\r\n @Prop()\r\n private parentTypeId: number;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tprivate readOnly: boolean;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n private selectedValue: any = null;\r\n\r\n private mounted() {\r\n this.valueUpdated();\r\n }\r\n\r\n\tprivate get isActionPlanRegexEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"RulesEngine\", \"ActionPlanRegex\"])\r\n\t}\r\n\r\n @Watch(\"value\")\r\n private valueUpdated() {\r\n if(this.value == null) {\r\n this.selectedValue = null;\r\n }\r\n else if(this.value == this.selectedValue?.id) {\r\n this.$emit(\"isValid\", { isValid: true, message: \"\" });\r\n return;\r\n }\r\n else {\r\n var optionMatch = this.selectorOptions.firstOrDefault(so => so.id == this.value)\r\n\r\n\t\t\tif (!optionMatch && !!this.value) {\r\n \tthis.$emit(\"isValid\", { isValid: false, message: \"Selected option is not available\" });\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.selectedValue = optionMatch ? cloneDeep(optionMatch) : null;\r\n }\r\n\t\tthis.$emit(\"isValid\", { isValid: true, message: \"\" });\r\n }\r\n\r\n @Emit(\"input\")\r\n private selectedValueUpdated(value) {\r\n if(value) {\r\n return value.id;\r\n }\r\n return null;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesSelector.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RulesSelector.vue?vue&type=template&id=6db4ca13&scoped=true\"\nimport script from \"./RulesSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./RulesSelector.vue?vue&type=script&lang=ts\"\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 \"6db4ca13\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Emit, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport RulesSelector from './RulesSelector.vue';\r\nimport { isEqual, cloneDeep } from 'lodash';\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { RuleCondition, CardValidation, RuleStep, CardValidationMap } from '@/store/rules-engine/types';\r\nimport { namespace } from \"vuex-class\";\r\n\r\nconst RuleStore = namespace(\"rulesEngine\");\r\n@Component({\r\n components:\r\n {\r\n \"rules-selector\" : RulesSelector,\r\n \"rules-logic-step-nest\": () => import(\"./RulesLogicStep.vue\")\r\n }\r\n})\r\nexport default class RulesLogicStep extends Vue {\r\n //Props\r\n @Prop()\r\n private parentRuleCondition: RuleCondition;\r\n\r\n @Prop({type: Boolean, default: false})\r\n private allowAnd: boolean;\r\n\r\n @Prop({type: Boolean, default: false})\r\n private allowOr: boolean;\r\n\r\n @Prop()\r\n private section: string;\r\n\r\n @Prop({type: String, default: \"Criteria\"})\r\n private rootText: string;\r\n\r\n @Prop({type:Boolean, default: false})\r\n private isRoute: boolean\r\n\r\n @Prop()\r\n private nestedLevel: number;\r\n\r\n @Prop({required: false})\r\n private value: RuleStep;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tprivate readOnly: boolean;\r\n\r\n //Variables\r\n private logicStep: RuleStep = null;\r\n private valueComponentValidation: CardValidation = { isValid: null, message: \"\"};\r\n private selectorComponentValidation: CardValidation = { isValid: null, message: \"\"};\r\n private ruleValidation: CardValidation = { isValid: false, message: \"\"};\r\n private subRulesValid: CardValidationMap = new CardValidationMap();\r\n private valueComponent: any = null;\r\n\tprivate showDeleteConfirmation: boolean = false;\r\n\r\n //Actions\r\n @RuleStore.Action private retrieveComponentForTypeId: (request: {section: string, typeId: number}) => Promise;\r\n\r\n //Getters\r\n private get ruleScopeLevel(): number {\r\n return this.nestedLevel + 1;\r\n }\r\n\r\n private get operatorText(): string {\r\n\t\tif (this.section == \"Action\") {\r\n\t\t\treturn \"Action\"\r\n\t\t} else {\r\n\t\t\treturn this.isRoute ? this.rootText : this.logicStep.operator\r\n\t\t}\r\n }\r\n\r\n private get valueComponentSet(): boolean {\r\n return !!this.valueComponent?.component;\r\n }\r\n\r\n private get sidebarClass(): string {\r\n return this.ruleValidation?.isValid ? \"border-left-green\" : \"border-left-red\";\r\n }\r\n\r\n private get hasValueCell(): boolean {\r\n if(!this.logicStep || !this.logicStep.condition) {\r\n return true;\r\n }\r\n return this.logicStep.condition.typeId ? !!this.valueComponent?.component : true;\r\n }\r\n\r\n //Methods\r\n private mounted(): void {\r\n this.valueComponentValidation = { isValid: false, message: \"\" };\r\n this.selectorComponentValidation = { isValid: false, message: \"\" };\r\n this.$emit(\"isValid\", { isValid: false, message: \"\" });\r\n this.updateValue();\r\n }\r\n\r\n @Emit(\"input\")\r\n private addSubRule(operator: string): RuleStep {\r\n this.logicStep.subRules.push({id: uuidv4(), operator: operator, condition: { typeId: null, value: null}, subRules: []});\r\n return this.logicStep;\r\n }\r\n\r\n @Emit(\"deleted-step\")\r\n private deleteRule(): RuleStep {\r\n\t\t// Rule is being deleted so it can now be flagged as valid to align validation\r\n this.$emit(\"isValid\", { isValid: true, message: \"\" });\r\n\t\tthis.showDeleteConfirmation = false;\r\n return this.logicStep;\r\n }\r\n\r\n @Emit(\"input\")\r\n private subRuleUpdated(rule: RuleStep): RuleStep {\r\n var index = this.logicStep.subRules.findIndex(c => c.id == rule.id);\r\n if(index != null && index != undefined && index > -1){\r\n this.logicStep.subRules[index] = rule;\r\n this.$forceUpdate();\r\n }\r\n return this.logicStep;\r\n }\r\n\r\n @Emit(\"input\")\r\n private subRuleDeleted(rule: RuleStep): RuleStep {\r\n this.logicStep.subRules = this.logicStep.subRules.filter((sr: RuleStep) => sr.id != rule.id);\r\n return this.logicStep;\r\n }\r\n\r\n @Watch(\"value\")\r\n private updateValue(): void {\r\n if(!this.value) {\r\n this.logicStep = null;\r\n return;\r\n }\r\n\r\n if(!isEqual(this.logicStep, this.value)) {\r\n this.logicStep = cloneDeep(this.value);\r\n }\r\n\r\n this.$forceUpdate();\r\n }\r\n\r\n // Clears the condition value if the type is changed;\r\n @Watch(\"logicStep.condition.typeId\")\r\n private conditionTypeChanged(newValue: number, oldValue: number): void {\r\n if(oldValue && newValue != oldValue && this.logicStep && this.logicStep.condition)\r\n {\r\n this.logicStep.condition.value = null;\r\n this.valueComponentValidation = { isValid: !this.hasValueCell, message: \"\" };\r\n }\r\n this.validateRule();\r\n }\r\n\r\n @Watch(\"logicStep\", { deep:true })\r\n @Emit(\"input\")\r\n private logicStepUpdate(): any {\r\n return this.logicStep;\r\n }\r\n\r\n\t@Watch(\"logicStep.condition.typeId\")\r\n private async updateComponent(): Promise {\r\n if(!this.logicStep || !this.logicStep.condition) {\r\n this.valueComponent = null;\r\n }\r\n this.valueComponent = null;\r\n this.valueComponent = await this.retrieveComponentForTypeId({section: this.section, typeId: this.logicStep.condition.typeId});\r\n this.$forceUpdate();\r\n }\r\n\r\n private valueComponentValueUpdated(value: any): void {\r\n //Implement if component value is an object\r\n }\r\n\r\n\tprivate selectorComponentValidationUpdated(value: CardValidation): void {\r\n\t\tthis.selectorComponentValidation = value;\r\n\t\tthis.validateRule();\r\n\t}\r\n\r\n private valueComponentValidationUpdated(value: CardValidation): void {\r\n this.valueComponentValidation = value;\r\n this.validateRule();\r\n }\r\n\r\n @Emit(\"isValid\")\r\n private validateRule(): CardValidation {\r\n var isValid: boolean = false;\r\n\r\n\t\t// If the selector component is invalid that takes priority\r\n\t\tif (this.selectorComponentValidation.isValid) {\r\n\t\t\tif(this.hasValueCell) {\r\n\t\t\t\tisValid = this.valueComponentValidation.isValid && !!this.logicStep.condition.typeId;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tisValid = !!this.logicStep.condition.typeId;\r\n\t\t\t}\r\n\t\t}\r\n this.ruleValidation.isValid = isValid;\r\n return this.ruleValidation;\r\n }\r\n\r\n @Emit(\"isValid\")\r\n private subRuleValidationUpdated(isValid: CardValidation, ruleId: string): CardValidation {\r\n\t\tthis.subRulesValid[ruleId] = isValid;\r\n let notValid = {isValid: false, message: `One or more ${this.section}s are not valid`};\r\n\r\n if(!this.ruleValidation.isValid)\r\n {\r\n return notValid;\r\n }\r\n\r\n for (var ruleValid in this.subRulesValid)\r\n {\r\n if(!this.subRulesValid[ruleValid].isValid)\r\n {\r\n return notValid;\r\n }\r\n }\r\n return { isValid: true, message: \"\" };\r\n }\r\n\r\n private get selectorCols(): number\r\n {\r\n if(this.nestedLevel == 1)\r\n {\r\n return 5;\r\n }\r\n else if(this.nestedLevel == 2)\r\n {\r\n return 4;\r\n }\r\n else if(this.nestedLevel == 3)\r\n {\r\n return 3;\r\n }\r\n else if (this.nestedLevel > 3 && this.nestedLevel < 8)\r\n {\r\n return 2\r\n }\r\n return 1;\r\n }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesLogicStep.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RulesLogicStep.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RulesLogicStep.vue?vue&type=template&id=09c6603e&scoped=true\"\nimport script from \"./RulesLogicStep.vue?vue&type=script&lang=ts\"\nexport * from \"./RulesLogicStep.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RulesLogicStep.vue?vue&type=style&index=0&id=09c6603e&prod&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 \"09c6603e\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmSetup.vue?vue&type=style&index=0&id=bfba64c6&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AlarmPoint.vue?vue&type=style&index=2&id=7e62b193&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PutOnTest.vue?vue&type=style&index=0&id=02bf2dbd&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SystemViewAlarmSetup.vue?vue&type=style&index=0&id=2490667e&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BasicTask.vue?vue&type=style&index=0&id=6ae4be54&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MobileRaiseSetup.vue?vue&type=style&index=0&id=dcb3ddec&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioControl.vue?vue&type=style&index=0&id=1193763a&prod&lang=scss\"","import { ILatLng } from \"@sureview/v2-mapping-saas\";\r\n\r\nexport interface AssetMapLayerItem {\r\n\tmapLayerItemId: number;\r\n\ttitle: string;\r\n\textraValue: string;\r\n\tlatLng: ILatLng;\r\n\tlatLong: string;\r\n\tobjectId: number;\r\n\tregionPath: string;\r\n\tmapLayerItemTypeId: number;\r\n\tmapLayerIds: number[];\r\n\tstatus: string;\r\n\tstatusNote: string;\r\n\tisAsset: boolean;\r\n\thideOnMap: boolean;\r\n\tunackedMessageCount?: number\r\n\tassetId: number;\r\n\tuserId?: number;\r\n\tshareable: boolean;\r\n\tactiveEventShare: boolean;\r\n\teventDetails: string;\r\n\tassetTypeId: number;\r\n\ticonColor: string;\r\n\tlastLocationUpdate: Date;\r\n\tisTrackedAsset?: boolean;\r\n\ttrackedAssetId?: number;\r\n}\r\n\r\nexport interface MapLayerItemWithExpiry{\r\n\tmapLayerItem: AssetMapLayerItem;\r\n\tchecksRemaining: number;\r\n}\r\n\r\nexport interface AssetStatusInfo {\r\n assetId: number,\r\n status: string,\r\n statusNote:string,\r\n title?: string\r\n}\r\n\r\nexport interface AssetAuditHistory {\r\n\teventRecordID: number,\r\n\tassetTitle: string,\r\n\tcreated: Date,\r\n\tname: string,\r\n\tdetails : string\r\n}\r\n\r\nexport interface ActionRequest {\r\n\tasset: AssetStatusInfo,\r\n\taction: ActionType,\r\n\titem: AssetMapLayerItem\r\n}\r\n\r\nexport interface MappedAsset {\r\n\tId: number,\r\n\tlabel: string,\r\n\tknownLoc: string,\r\n\titem: AssetMapLayerItem\r\n}\r\n\r\nexport const enum ActionType {\r\n\tStatus = 0,\r\n\tChat = 1,\r\n\tHistory = 2,\r\n\tMove = 3,\r\n\tSetLocation = 4,\r\n\tShowLocation = 5,\r\n\tHideLocation = 6,\r\n\tCancelSetLocation = 7\r\n}\r\nexport interface AuditRequest {\r\n\tassetId: number,\r\n\tbeforeEventRecordId: number,\r\n\tmaxRows: number\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.featureEnabled)?_c('div',{attrs:{\"data-cy\":\"ccure\"}},[(_vm.editing)?_c('div',{attrs:{\"data-cy\":\"ccure-edit\"}},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.task.taskText),expression:\"task.taskText\"}],class:[{invalid: _vm.hasValidationErrors, 'error-animated': _vm.showErrorAnimation}, 'form-control'],attrs:{\"placeholder\":\"CCure message\",\"type\":\"text\"},domProps:{\"value\":(_vm.task.taskText)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.task, \"taskText\", $event.target.value)}}})]):_c('div',{attrs:{\"data-cy\":\"ccure-task\"}},[(!_vm.task.completed)?_c('div',{attrs:{\"data-cy\":\"ccure-task-todo\"}},[(_vm.task.taskText)?_c('div',[_c('a',{staticClass:\"btn btn-secondary ccure-button\",attrs:{\"data-cy\":\"ccure-task-todo-button\"},on:{\"click\":function($event){return _vm.logToCCure()}}},[_vm._v(\"Log to CCure\")]),_vm._v(\" Message: \"+_vm._s(_vm.task.taskText)+\" \")]):_c('div',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.ccureMessageInput),expression:\"ccureMessageInput\"}],staticClass:\"form-control\",attrs:{\"placeholder\":\"CCure Message\",\"type\":\"text\",\"data-cy\":\"ccure-task-todo-input\"},domProps:{\"value\":(_vm.ccureMessageInput)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.ccureMessageInput=$event.target.value}}}),_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"data-cy\":\"ccure-task-todo-button\"},on:{\"click\":function($event){return _vm.logToCCure()}}},[_vm._v(\"Log to CCure\")])])]):_c('div',{attrs:{\"data-cy\":\"ccure-task-complete\"}},[_vm._v(_vm._s(_vm.task.taskText)+\" logged to CCure.\")])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue, Watch, Emit } from \"vue-property-decorator\";\nimport { namespace, Getter, Mutation } from \"vuex-class\";\nimport api from \"@/services/api.ccure.service\";\nimport { ActionPlanTask } from \"@/store/tasks/types\";\nimport { FeaturesList } from \"@/store/types\";\nimport { get } from \"lodash\";\n\n@Component({\n\tcomponents: {}\n})\nexport default class CCureTask extends Vue {\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\n\t@Prop(Boolean)\n\tpublic editing: Boolean;\n\n\t@Prop()\n\tpublic task!: ActionPlanTask;\n\n\tpublic ccureMessageInput: string = \"\";\n\n\tpublic logTypes: any[] = [\n\t\t{ logTypeID: -1, title: \"[Custom Message]\" },\n\t\t{ logTypeID: 3, title: \"1-Dispatch FC/PD\" },\n\t\t{ logTypeID: 4, title: \"1-Dispatch Facilities\" },\n\t\t{ logTypeID: 5, title: \"1-Contact Responsible Party\" },\n\t\t{ logTypeID: 6, title: \"2-Review Recorded Video\" },\n\t\t{ logTypeID: 7, title: \"2-Arrived / Investigating Locally\" },\n\t\t{\n\t\t\tlogTypeID: 8,\n\t\t\ttitle: \"6-Disposition: Area Secure / Situation Normal\"\n\t\t},\n\t\t{ logTypeID: 9, title: \"6-Disposition: Situation in progress\" },\n\t\t{ logTypeID: 10, title: \"8-Action: Incident Report Filed\" },\n\t\t{ logTypeID: 11, title: \"8-Action: Task Created\" }\n\t];\n\tpublic logType: any = this.logTypes[0];\n\tpublic logTypeAll: any = this.logTypes[0];\n\n\tpublic hasValidationErrors: boolean = false;\n\tpublic showErrorAnimation: boolean = false;\n\n\tpublic mounted() {\n\t\tif (this.editing) {\n\t\t\t// No validation needed so call valid task by default.\n\t\t\tthis.onValidateTask();\n\t\t}\n\t}\n\n\t@Emit(\"validate-task\")\n\tpublic onValidateTask() {\n\t\treturn true;\n\t}\n\n\t@Emit(\"complete-task\")\n\tpublic onCompleteTask() {\n\t\treturn {\n\t\t\t...this.task,\n\t\t\tcompleted: true,\n\t\t\tresult: this.task.taskText\n\t\t};\n\t}\n\n\tpublic async logToCCure() {\n\t\t// Check to see if user input should be used.\n\t\tif (this.task.taskText === \"\") {\n\t\t\tthis.task.taskText = this.ccureMessageInput;\n\t\t}\n\n\t\ttry {\n\t\t\tawait api.postLogMessageAll(\n\t\t\t\tthis.logTypeAll.logTypeID == -1 ? \"\" : this.logTypeAll.title,\n\t\t\t\tthis.task.taskText,\n\t\t\t\tthis.task.eventID\n\t\t\t);\n\t\t} catch (err) {\n\t\t\tconsole.error(`Could not post CCure message: ${err}`);\n\t\t}\n\n\t\tthis.onCompleteTask();\n\t}\n\n\tprivate get featureEnabled() {\n\t\treturn get(this.featuresList, [\"Actions\", \"CCure\"], false)\n\t}\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CCureTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CCureTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CCureTask.vue?vue&type=template&id=6473346b\"\nimport script from \"./CCureTask.vue?vue&type=script&lang=ts\"\nexport * from \"./CCureTask.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MessageBlock.vue?vue&type=style&index=0&id=1d0fecea&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetPassword.vue?vue&type=style&index=0&id=998ae414&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InactivityWarning.vue?vue&type=style&index=0&id=7b736248&prod&scoped=true&lang=scss\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupSyncConfig.vue?vue&type=style&index=0&id=0c86ccf4&prod&lang=css\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActivityLogManagement.vue?vue&type=style&index=0&id=19b5d61a&prod&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 flex-grow-1 flex-shrink-1 d-flex flex-column component-container h-100\",class:[_vm.peekMode ? 'peek-height' : '']},[_c('div',{staticClass:\"card-header p-5\"},[_c('div',{class:[_vm.peekMode ? 'peek-header' : '']},[_c('div',{staticClass:\"btn-group\",attrs:{\"role\":\"group\"}},[_c('b-button',{staticClass:\"btn\",attrs:{\"tabindex\":\"0\",\"variant\":_vm.filterIndex == -1 ? 'primary' : 'secondary'},on:{\"click\":function($event){return _vm.filterOff()}}},[(_vm.getEventDetails && _vm.getEventDetails.eventRecordCount > _vm.eventRecords.length)?_c('i',{staticClass:\"fas fa-spinner fa-spin loader-icon\",attrs:{\"data-cy\":\"loading-spinner\"}}):_vm._e(),_vm._v(\" All \")]),_vm._l((_vm.filters.filter(function (f) { return f.enabled; })),function(filter){return _c('b-button',{key:filter.filterIndex,staticClass:\"btn\",attrs:{\"variant\":_vm.filterIndex == filter.filterIndex ? 'primary' : 'secondary',\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.filterOn(filter)}}},[_vm._v(\" \"+_vm._s(filter.filterTitle)+\" \"),(filter.showNew && _vm.getNewCount(filter) > 0)?_c('span',{staticClass:\"badge badge-pill\",class:[_vm.awaitingAck > 0 ? 'badge-danger' : 'badge-success']},[_vm._v(_vm._s(_vm.getNewCount(filter)))]):_vm._e()])})],2),_c('span',{staticClass:\"pull-right\",class:[_vm.peekMode ? 'peek-layout' : ''],attrs:{\"data-cy\":\"event-record-header-right\"}},[_vm._v(\" Event ID: \"+_vm._s(_vm.eventid)+\" \"),_c('span',{staticClass:\"no-display\"},[_vm._v(_vm._s(_vm.selectedEventRecordID))]),(_vm.peekMode)?_c('label',[_vm._v(\" \"+_vm._s(_vm.timeSincePeekUpdate())+\" \")]):_vm._e()])]),(_vm.isFullUser && _vm.showAckAllBar && _vm.awaitingAck > 0 && !_vm.reviewMode && !_vm.peekMode)?_c('div',{staticClass:\"alert alert-secondary d-flex flex-row align-items-center\"},[_c('span',{staticClass:\"flex-grow-1 message-block\"},[_vm._v(_vm._s(_vm.awaitingAck)+\" alarms awaiting acknowledgement.\")]),_c('b-button',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({ down: ['shift', 'c'] }),expression:\"{ down: ['shift', 'c'] }\"}],attrs:{\"variant\":\"primary\",\"id\":\"btn-ack-all-alarms\",\"data-cy\":\"ackAllButton\"},on:{\"shortkey\":function($event){return _vm.ackAll()},\"click\":function($event){return _vm.ackAll()}}},[(!_vm.ackingAll)?_c('span',[_vm._v(\"Ack All\")]):_vm._e(),(_vm.ackingAll)?_c('span',{staticClass:\"fas fa-circle-notch fa-spin\"}):_vm._e()])],1):_vm._e(),_vm._t(\"header\")],2),(!_vm.hideMessages && !_vm.peekMode)?_c('MessagesList',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isMessagesFilter),expression:\"isMessagesFilter\"}],ref:\"messagesList\",staticClass:\"flex-grow-1 flex-shrink-1 messages-container w-100\",attrs:{\"newestAt\":_vm.newestMessagesAt,\"messages\":_vm.messages,\"loadMessagesAction\":function () { return _vm.loadMessages(_vm.eventid); },\"data-cy\":\"event-records-messages-list\"},on:{\"onBeforeDestroy\":_vm.resetState,\"onScrollToLastMessage\":function () { return _vm.setNumberOfUnread(0); }}}):_vm._e(),_c('VuePerfectScrollbar',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isMessagesFilter),expression:\"!isMessagesFilter\"}],ref:\"ps\",staticClass:\"flex-grow-1 flex-shrink-1\",on:{\"ps-y-reach-end\":function($event){return _vm.onScrollToEnd()}}},[_c('table',{staticClass:\"table table-striped table-hover event-records-table\"},[_c('colgroup',[_c('col',{attrs:{\"width\":\"70px\"}}),_c('col',{attrs:{\"width\":\"70px\"}}),(_vm.hasPriorityColumn)?_c('col',{attrs:{\"width\":\"50px\"}}):_vm._e(),_c('col',{attrs:{\"width\":\"*\"}}),(_vm.hasLinkedCameraColumn)?_c('col',{attrs:{\"width\":\"150px\"}}):_vm._e(),_c('col',{attrs:{\"width\":\"125px\"}}),_c('col',{attrs:{\"width\":\"50px\"}}),_c('col',{attrs:{\"width\":\"30px\"}}),(_vm.hasMatrixGridLocationColumn)?_c('col',{attrs:{\"width\":\"70px\"}}):_vm._e(),(_vm.isEventRecordDetailsEnabled)?_c('col',{attrs:{\"width\":\"15px\"}}):_vm._e()]),_c('thead',[_vm._t(\"row-header\",[_c('tr',[_c('th',{staticClass:\"time\",attrs:{\"title\":_vm.getTimeZoneAbbr}},[_vm._v(\"My Time\")]),_c('th',{staticClass:\"time\",attrs:{\"title\":_vm.areaTimeZoneTitle}},[_vm._v(\"Area Time\")]),(_vm.hasPriorityColumn)?_c('th',[_vm._v(\"Priority\")]):_vm._e(),_c('th',[_vm._v(\"Details\")]),(_vm.hasLinkedCameraColumn)?_c('th',[_vm._v(\"Linked Camera\")]):_vm._e(),(_vm.hasVideoAvailableColumn)?_c('th',[_vm._v(\"Video Available\")]):_vm._e(),_c('th',[_vm._v(\"Operator\")]),(_vm.hasMatrixGridLocationColumn)?_c('th',[_vm._v(\"Clip\")]):_vm._e(),_c('th'),(_vm.isEventRecordDetailsEnabled)?_c('th'):_vm._e()])])],2),_c('tbody',[_vm._t(\"rows\",[_vm._l((_vm.parsedEventRecords),function(event,i){return [_c('tr',{key:event.eventRecordID,class:{\n\t\t'table-danger': event.awaitingAcknowledgement && !event.selected,\n\t\t'table-primary': event.selected,\n\t\t'table-bold table-underline': event.awaitingRestore\n\t},attrs:{\"id\":event.eventRecordID,\"eventid\":event.eventRecordID},on:{\"click\":function($event){return _vm.viewRecord(event)}}},[_vm._t(\"row\",[_c('td',[_c('span',{staticClass:\"text-nowrap\",attrs:{\"title\":_vm.convertUtcDateTimeToLocalDateTimeString(event.created)}},[_vm._v(\" \"+_vm._s(_vm.convertUtcDateTimeToLocalTimeString(event.created))+\" \")])]),_c('td',{staticClass:\"half-screen-max-size\"},[_c('span',{staticClass:\"text-nowrap-mQ\",attrs:{\"title\":_vm.displayDateFromISOString(event.groupCreated)}},[_vm._v(\" \"+_vm._s(_vm.displayDateFromISOString(event.groupCreated))+\" \")])]),(_vm.hasPriorityColumn)?_c('td',{attrs:{\"data-cy\":\"eventRecordPriority\"}},[_vm._v(\" \"+_vm._s(event.responsePriority)+\" \")]):_vm._e(),_c('td',{staticClass:\"event-details\"},[_vm._v(\" \"+_vm._s(event.details)+\" \"),(event.restoredAt)?_c('div',{staticClass:\"m-t-10\"},[_c('b',[_vm._v(\"Restored at\")]),_vm._v(\" : \"+_vm._s(event.restoredAt.format(\"L LT\"))+\" \")]):_vm._e()]),(_vm.hasLinkedCameraColumn)?_c('td',[(!event.camerasExpanded &&\n\t\tevent.attachedCameras &&\n\t\tevent.attachedCameras.length > 0\n\t\t)?_c('a',{staticClass:\"click-span\",on:{\"click\":function($event){event.camerasExpanded = true}}},[_vm._v(\" \"+_vm._s(event.attachedCameras.length)+\" linked camera\"+_vm._s(event.attachedCameras.length > 1 ? \"s\" : \"\")+\" \")]):_vm._e(),(event.camerasExpanded)?_c('div',[_vm._l((event.attachedCameras),function(camera,i){return _c('div',{key:i,staticClass:\"d-flex flex-row\"},[_c('a',{staticClass:\"camera-link flex-grow-1 click-span\",on:{\"click\":function($event){return _vm.displayCamera(camera)}}},[_vm._v(\" \"+_vm._s(camera.title)+\" \")]),(_vm.getEventDetails != null &&\n\t\t_vm.getEventDetails.permissions.CanLinkAlarmToCamera\n\t\t)?_c('span',{staticClass:\"flex-shrink-0\"},[_c('span',{staticClass:\"span-link badge badge-pill dark-background badge-danger\",attrs:{\"title\":'Unlink ' + camera.title},on:{\"click\":function($event){return _vm.unlinkCamera(event, camera)}}},[_c('span',{staticClass:\"fas fa-times fa-sm\"})])]):_vm._e()])}),_c('a',{staticClass:\"click-span\",on:{\"click\":function($event){event.camerasExpanded = false}}},[_vm._v(\"Hide\")])],2):_vm._e(),(!_vm.reviewMode &&\n\t\tevent.eventRecordTypeID == 1 &&\n\t\tevent.objectID != null &&\n\t\t_vm.getEventDetails != null &&\n\t\t_vm.getEventDetails.permissions.CanLinkAlarmToCamera\n\t\t)?_c('span',{staticClass:\"span-link badge badge-pill dark-background badge-success\",attrs:{\"title\":\"Link Camera\"},on:{\"click\":function($event){return _vm.linkCamera(event)}}},[_vm._v(\" Link Camera \")]):_vm._e(),(event.eventRecordTypeID == 1 &&\n\t\t_vm.getEventDetails != null &&\n\t\t!event.details &&\n\t\t_vm.getEventDetails.permissions.CanLinkAlarmToCamera\n\t\t)?_c('CreateNewResponse',{attrs:{\"selectedEventRecord\":event,\"groupId\":_vm.groupID,\"eventId\":_vm.eventid}}):_vm._e()],1):_vm._e(),(_vm.hasVideoAvailableColumn)?_c('td',{staticClass:\"text-center\"},[(_vm.canDeviceHaveClip(event))?_c('div',[(event.hasClip)?_c('i',{staticClass:\"fa fa-video\",attrs:{\"title\":\"Clip is available\"}}):_vm._e(),(!event.hasClip)?_c('i',{staticClass:\"fa fa-video-slash clip-not-available\",attrs:{\"alt\":\"Clip is not available.\"}}):_vm._e()]):_vm._e()]):_vm._e(),_c('td',{staticClass:\"text-center\"},[(event.eventUserID != null && event.colorIndex != undefined)?_c('div',{staticClass:\"circle small\",class:'user-' + event.colorIndex,attrs:{\"title\":event.userName}},[_vm._v(\" \"+_vm._s(event.initials)+\" \")]):_vm._e()]),(_vm.hasMatrixGridLocationColumn)?_c('td',{staticClass:\"text-center\"},[(_vm.recordHasClips(event.eventRecordID))?_c('div',_vm._l((_vm.recordClips(event.eventRecordID)),function(clips,i){return _c('div',{key:i},[_c('table',{key:_vm.layoutIndex,staticClass:\"camera-indicator\",attrs:{\"data-cy\":\"clip-matrix-cell\"}},_vm._l((_vm.layoutVertical),function(i){return _c('tr',{key:i,staticClass:\"camera-indicator-row\"},_vm._l((_vm.layoutHorizontal),function(j){return _c('td',{key:j,class:_vm.cameraIconColor(clips, i, j)})}),0)}),0)])}),0):_vm._e(),(!_vm.recordHasClips(event.eventRecordID) && _vm.isAutoPopulateEnabled)?_c('i',{staticClass:\"fa fa-video-slash clip-not-available\",attrs:{\"alt\":\"No clips available.\",\"data-cy\":\"record-clip-not-available\"}}):_vm._e()]):_vm._e(),_c('td',{staticClass:\"icon\"},[_c('div',{staticClass:\"icon-wrapper\"},[(event.awaitingRestore && !_vm.getRestoredIconEnabled && event.eventRecordTypeID == 1)?_c('span',{staticClass:\"fas fa-bell m-r-5\",class:{\n\t\t'text-danger': !event.awaitingAcknowledgement,\n\t\t'click-span': _vm.isFullUser\n\t},attrs:{\"title\":\"Awaiting Restoral\"},on:{\"click\":function($event){return _vm.setForceRestoreOpen(event)}}}):(_vm.getRestoredIconEnabled && event.eventRecordTypeID == 1)?_c('span',{staticClass:\"fas fa-bell m-r-5 icon-label\",class:{\n\t\t'text-danger': event.awaitingRestore,\n\t\t'text-muted': !event.awaitingRestore\n\t},attrs:{\"title\":event.awaitingRestore ? 'Awaiting restoral' : 'Restored',\"data-cy\":\"restored-icon\"},on:{\"click\":function($event){event.awaitingRestore ? _vm.setForceRestoreOpen(event) : ''}}}):_vm._e(),(_vm.isOnTestEnabled &&\n\t\tevent.eventRecordTypeID == 1 &&\n\t\tevent.objectID &&\n\t\t!_vm.reviewMode &&\n\t\t!_vm.peekMode)?_c('span',{staticClass:\"fas fa-tools click-span m-r-5\",attrs:{\"data-cy\":\"review-alarm-point-icon\",\"title\":\"Review alarm point\"},on:{\"click\":function($event){return _vm.setDisplayResponseId(event.objectID)}}}):_vm._e(),(!_vm.reviewMode || _vm.areEventFilesAvailable)?[(event.hasFiles === true &&\n\t\tevent.eventRecordID &&\n\t\t!_vm.checkCurrentlyDownloading(event.eventRecordID))?_c('span',{staticClass:\"fas fa-download click-span m-r-5\",attrs:{\"title\":\"Download attached files\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.downloadAttachedFiles(event.eventRecordID)}}}):_vm._e()]:[(event.hasFiles === true && event.eventRecordID)?_c('span',{staticClass:\"far fa-download m-r-5\",attrs:{\"title\":'Media is no longer available as of ' + _vm.convertUtcDateTimeToLocalDateTimeString(_vm.eventFilesPreservedUntil)}}):_vm._e()],_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.checkCurrentlyDownloading(event.eventRecordID)),expression:\"checkCurrentlyDownloading(event.eventRecordID)\"}],staticClass:\"fas fa-spinner fa-spin m-r-5\",attrs:{\"title\":\"Download attached files\"}}),(_vm.isAlarmMaskingEnabled && event && event.eventRecordTypeID === 1 && event.objectID)?_c('i',{staticClass:\"fal fa-shield-alt hover-icon\",attrs:{\"title\":\"Click to view alarm masking details.\"},on:{\"click\":function($event){return _vm.launchMaskingModal(event)}}}):_vm._e(),(event.latLong)?_c('i',{staticClass:\"fas fa-map-marker-alt\",attrs:{\"title\":\"Show on the map\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.jumpToLocation(event)}}}):_vm._e(),_vm._t(\"icon\",null,{\"eventRecord\":event,\"index\":i})],2)]),(_vm.isEventRecordDetailsEnabled)?_c('td',{staticClass:\"expandIcon\"},[(!event.expanded && _vm.isEventRecordOfExpandableType(event))?_c('a',{staticClass:\"btn btn-link icon-button fas fa-chevron-down\",attrs:{\"tabindex\":\"0\",\"id\":'expandButtonDown' + i,\"title\":\"Expand event details\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.showEventRecordDetails(event)},\"click\":function($event){return _vm.showEventRecordDetails(event)}}}):_vm._e(),(event.expanded && _vm.isEventRecordOfExpandableType(event))?_c('a',{staticClass:\"icon-button btn btn-link fas fa-chevron-up\",attrs:{\"tabindex\":\"0\",\"id\":'expandButtonUp' + i,\"title\":\"Collapse event details\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.hideEventRecordDetails(event)},\"click\":function($event){return _vm.hideEventRecordDetails(event)}}}):_vm._e()]):_vm._e()],{\"eventRecord\":event,\"index\":i})],2),(event.expanded)?_c('tr',{key:i},[_c('td',{staticClass:\"event-record-details\",attrs:{\"id\":'expandedEventRecordDetails' + i,\"colspan\":\"100%\"}},[(event.EventRecordDetails)?_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-3\"},[(event.EventRecordDetails.eventRecordID)?_c('span',{attrs:{\"id\":'expandedEventRecordID' + i}},[_c('b',[_vm._v(\"Event Record ID:\")]),_c('i',[_vm._v(_vm._s(event.EventRecordDetails.eventRecordID))]),_c('br')]):_vm._e(),(event.EventRecordDetails.input1)?_c('span',{attrs:{\"id\":'expandedInput1' + i}},[_c('b',[_vm._v(\"Input 1:\")]),_c('i',[_vm._v(_vm._s(event.EventRecordDetails.input1))]),_c('br')]):_vm._e(),(event.EventRecordDetails.input2)?_c('span',{attrs:{\"id\":'expandedInput2' + i}},[_c('b',[_vm._v(\"Input 2:\")]),_c('i',[_vm._v(_vm._s(event.EventRecordDetails.input2))]),_c('br')]):_vm._e()]),_c('div',{staticClass:\"col-3\"},[(event.EventRecordDetails.device)?_c('span',{attrs:{\"id\":'expandedDevice' + i}},[_c('b',[_vm._v(\"Device:\")]),_c('i',[_vm._v(_vm._s(event.EventRecordDetails.device))]),_c('br')]):_vm._e(),(event.EventRecordDetails.device)?_c('span',{attrs:{\"id\":'expandedDeviceType' + i}},[_c('b',[_vm._v(\"Device Type:\")]),_c('i',[_vm._v(_vm._s(event.EventRecordDetails.deviceType))]),_c('br')]):_vm._e(),(event.EventRecordDetails.eventType)?_c('span',{attrs:{\"id\":'expandedEventType' + i}},[_c('b',[_vm._v(\"Event Type:\")]),_c('i',[_vm._v(_vm._s(event.EventRecordDetails.eventType))]),_c('br')]):_vm._e(),(event.EventRecordDetails.deviceTime)?_c('span',{attrs:{\"id\":'expandedDeviceTime' + i}},[_c('b',[_vm._v(\"Device Time:\")]),_c('i',[_vm._v(\" \"+_vm._s(_vm.displayDateFromISOString(event.EventRecordDetails.deviceTime))+\" \")]),_c('br')]):_vm._e()]),_c('div',{staticClass:\"col-5 record-details-wrapper\"},[(event.EventRecordDetails.location)?_c('span',{attrs:{\"id\":'expandedLocation' + i}},[_c('b',[_vm._v(\"Location:\")]),_c('i',[_c('a',{staticClass:\"eventRecordDetailsLocation\",attrs:{\"href\":\"javascript:void(0)\",\"title\":\"Show on the map\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.jumpToLocation(event)}}},[_vm._v(\" \"+_vm._s(event.EventRecordDetails.location)+\" \")])]),_c('br')]):_vm._e(),(event.EventRecordDetails.url)?_c('span',{attrs:{\"id\":'expandedURL' + i}},[_c('b',[_vm._v(\"URL:\")]),_vm._l((_vm.getExpandedUrls(event.EventRecordDetails)),function(url){return _c('i',{key:url},[_c('a',{attrs:{\"href\":url,\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"data-cy\":\"renderedLink\"}},[_vm._v(\" \"+_vm._s(url)+\" \")])])}),_c('br')],2):_vm._e(),(_vm.hasRawData && _vm.isDownloadRawEmailEnabled)?_c('span',[_c('i',{staticClass:\"fas fa-envelope-open-text hover-icon\",attrs:{\"id\":\"icon-open-original-email\"},on:{\"click\":function($event){return _vm.downloadRawData(event.eventRecordID)}}}),_c('b-tooltip',{attrs:{\"target\":\"icon-open-original-email\",\"title\":\"Open Original Email\",\"placement\":\"bottom\",\"triggers\":['hover', 'focus']}})],1):_vm._e()]),(_vm.isCustomFieldAlarmsEnabled &&\n\t\tevent.EventRecordDetails &&\n\t\tevent.EventRecordDetails.eventRecordTypeId == 1 &&\n\t\tevent.EventRecordDetails.objectId != null &&\n\t\t(!_vm.isDetailsPopoutModalShown || event.EventRecordDetails.objectId != _vm.poppedOutEventRecord.objectID))?_c('div',{staticClass:\"details-popout-column col-1\"},[_c('b-button',{staticClass:\"fas fa-expand\",attrs:{\"id\":\"details-popout-button\"},on:{\"click\":function($event){return _vm.enableDetailsPopout(event)}}})],1):_vm._e()]):_vm._e()])]):_vm._e(),_vm._t(\"sub-row\",null,{\"eventRecord\":event,\"index\":i})]})],{\"eventRecords\":_vm.parsedEventRecords})],2)])]),(!_vm.reviewMode)?_c('div',{class:[\n\t\t{ 'error-animated': _vm.showErrorAnimation },\n\t\t{ 'note-input-container': _vm.fileAttachmentsEnabled },\n\t\t'card-footer p-5'\n\t]},[_vm._t(\"footer\"),_c('div',{staticClass:\"form-group d-flex note-control\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.auditNote),expression:\"auditNote\"}],class:[{ invalid: this.invalidNote }, 'form-control flex-grow-1 flex-shrink-1'],attrs:{\"type\":\"text\",\"placeholder\":_vm.isMessagesFilter ? 'Send a message' : 'Add a note'},domProps:{\"value\":(_vm.auditNote)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.postAudit()},\"input\":function($event){if($event.target.composing){ return; }_vm.auditNote=$event.target.value}}}),(_vm.canUploadFiles)?_c('form',{ref:\"fileUploadForm\"},[_c('input',{ref:\"fileUploader\",staticClass:\"no-display\",attrs:{\"type\":\"file\",\"id\":\"fileUploader\",\"multiple\":\"\",\"disabled\":_vm.savingRecord},on:{\"change\":function($event){return _vm.filesChanged($event.target.name, $event.target.files)},\"click\":function($event){return _vm.setActivity()}}}),_c('label',{class:['file-upload', 'btn', _vm.fileListHasValue ? 'btn-primary' : 'btn-secondary'],attrs:{\"for\":\"fileUploader\",\"title\":_vm.selectedFileNames}},[_c('i',{staticClass:\"fas fa-paperclip\"})])]):_vm._e(),_c('button',{staticClass:\"btn btn-secondary save-note-button\",attrs:{\"disabled\":_vm.auditNote.length == 0 || _vm.savingRecord},on:{\"click\":function($event){return _vm.postAudit()}}},[_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.savingRecord),expression:\"savingRecord\"}],staticClass:\"fas fa-spinner fa-spin\"}),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.savingRecord),expression:\"!savingRecord\"}],staticClass:\"fas fa-plus\"})]),_c('b-modal',{attrs:{\"id\":\"errorHandlerAlert\",\"scrollable\":\"\",\"ok-only\":\"\",\"centered\":\"\",\"role\":\"dialog\"},on:{\"ok\":function($event){return _vm.resetErrorModal()}},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(ref){\n\tvar close = ref.close;\nreturn [_c('i',{staticClass:\"fas fa-exclamation-triangle fa-2x mx-3 text-danger\"}),_c('h5',[_vm._v(\"File upload error\")]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":function($event){return _vm.resetErrorModal()}}},[_vm._v(\"×\")])]}}],null,false,2093375068),model:{value:(_vm.errorExists),callback:function ($$v) {_vm.errorExists=$$v},expression:\"errorExists\"}},[_c('ul',_vm._l((_vm.errorList),function(error){return _c('li',{key:error},[_c('p',{staticClass:\"confirmation-text modalBodyText\"},[_vm._v(_vm._s(error))])])}),0)])],1)],2):_vm._e(),(_vm.reviewMode && _vm.isSupplementalNotesEnabled)?_c('div',{class:[\n\t\t{ 'error-animated': _vm.showErrorAnimation },\n\t\t{ 'note-input-container': _vm.fileAttachmentsEnabled },\n\t\t'card-footer p-5'\n\t]},[_vm._t(\"footer\"),_c('div',{staticClass:\"form-group d-flex note-control\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.auditNote),expression:\"auditNote\"}],class:[{ invalid: this.invalidNote }, 'form-control flex-grow-1 flex-shrink-1'],attrs:{\"type\":\"text\",\"placeholder\":\"Add supplemental info\"},domProps:{\"value\":(_vm.auditNote)},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.postSupplemental()},\"input\":function($event){if($event.target.composing){ return; }_vm.auditNote=$event.target.value}}}),(_vm.canUploadFiles)?_c('form',{ref:\"fileUploadForm\"},[_c('input',{ref:\"fileUploader\",staticClass:\"no-display\",attrs:{\"type\":\"file\",\"id\":\"fileUploader\",\"multiple\":\"\",\"disabled\":_vm.savingRecord},on:{\"change\":function($event){return _vm.filesChanged($event.target.name, $event.target.files)},\"click\":function($event){return _vm.setActivity()}}}),_c('label',{class:['file-upload', 'btn', _vm.fileListHasValue ? 'btn-primary' : 'btn-secondary'],attrs:{\"for\":\"fileUploader\",\"title\":_vm.selectedFileNames}},[_c('i',{staticClass:\"fas fa-paperclip\"})])]):_vm._e(),_c('button',{staticClass:\"btn btn-secondary save-note-button\",attrs:{\"disabled\":_vm.auditNote.length == 0 || _vm.savingRecord},on:{\"click\":function($event){return _vm.postSupplemental()}}},[_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.savingRecord),expression:\"savingRecord\"}],staticClass:\"fas fa-spinner fa-spin\"}),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.savingRecord),expression:\"!savingRecord\"}],staticClass:\"fas fa-plus\"})]),_c('b-modal',{attrs:{\"id\":\"errorHandlerAlert\",\"scrollable\":\"\",\"ok-only\":\"\",\"centered\":\"\",\"role\":\"dialog\"},on:{\"ok\":function($event){return _vm.resetErrorModal()}},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(ref){\n\tvar close = ref.close;\nreturn [_c('i',{staticClass:\"fas fa-exclamation-triangle fa-2x mx-3 text-danger\"}),_c('h5',[_vm._v(\"File upload error\")]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":function($event){return _vm.resetErrorModal()}}},[_vm._v(\"×\")])]}}],null,false,2093375068),model:{value:(_vm.errorExists),callback:function ($$v) {_vm.errorExists=$$v},expression:\"errorExists\"}},[_c('ul',_vm._l((_vm.errorList),function(error){return _c('li',{key:error},[_c('p',{staticClass:\"confirmation-text modalBodyText\"},[_vm._v(_vm._s(error))])])}),0)])],1)],2):_vm._e(),_c('b-modal',{attrs:{\"id\":\"rawDataModal\",\"size\":\"lg\",\"dialog-class\":\"email-data-modal\",\"ok-only\":\"\",\"ok-variant\":\"secondary\",\"ok-title\":\"Close\"},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(ref){\n\tvar close = ref.close;\nreturn [_c('h5',[_vm._v(\"Original Email\")]),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"aria-label\":\"Close\"},on:{\"click\":function($event){(_vm.resetErrorModal(), close())}}},[_vm._v(\"×\")])]}},{key:\"modal-footer\",fn:function(ref){\n\tvar close = ref.close;\nreturn [_c('b-button',{attrs:{\"variant\":\"primary\",\"disabled\":_vm.checkCurrentlyDownloading(_vm.emailId),\"aria-label\":\"Download\"},on:{\"click\":function($event){return _vm.downloadEmail()}}},[_vm._v(\"Download\")]),_c('b-button',{attrs:{\"aria-label\":\"Close\"},on:{\"click\":function($event){_vm.resetErrorModal(), close()}}},[_vm._v(\"Close\")])]}}])},[_c('email-holder',{attrs:{\"email-id\":_vm.emailId},on:{\"downloadEmail\":_vm.downloadEmail}})],1),_c('masking-modal',{attrs:{\"group-id\":_vm.groupID,\"event-id\":_vm.eventid,\"response-id\":_vm.selectedResponseId},on:{\"closed\":_vm.onMaskingModalClose},model:{value:(_vm.isMaskingModalShown),callback:function ($$v) {_vm.isMaskingModalShown=$$v},expression:\"isMaskingModalShown\"}}),_c('event-record-popout',{attrs:{\"isModalShown\":_vm.isDetailsPopoutModalShown,\"eventRecord\":_vm.poppedOutEventRecord},on:{\"disableDetailsPopout\":_vm.disableDetailsPopout}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(\n\t\t\tthis.selectedEventRecord.eventRecordTypeID == 1 &&\n\t\t\t\t_vm.getEventDetails != null &&\n\t\t\t\t!this.selectedEventRecord.details &&\n\t\t\t\t_vm.getEventDetails.permissions.CanLinkAlarmToCamera\n\t\t)?_c('span',{staticClass:\"span-link badge badge-pill dark-background badge-success\",attrs:{\"title\":\"Create Response\",\"data-cy\":\"CreateResponseButton\"},on:{\"click\":function($event){return _vm.$refs.createResponseDialog.show()}}},[_vm._v(\" Create response \")]):_vm._e(),_c('b-modal',{ref:\"createResponseDialog\",attrs:{\"id\":\"createResponseDialog\",\"size\":\"lg\",\"role\":\"dialog\",\"title\":\"Create Response\",\"centered\":\"\"}},[_c('b-form',[_c('b-form-group',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"newResponseTitle\"}},[_vm._v(\"Title:\")]),_c('b-form-input',{class:[{ invalid: _vm.responseBuilderForm.title == '' }],attrs:{\"id\":\"newResponseTitle\",\"required\":\"\",\"placeholder\":\"Enter a title...\"},model:{value:(_vm.responseBuilderForm.title),callback:function ($$v) {_vm.$set(_vm.responseBuilderForm, \"title\", $$v)},expression:\"responseBuilderForm.title\"}})],1),_c('b-form-group',{staticClass:\"form-group\"},[_c('label',{attrs:{\"for\":\"newResponsePriority\"}},[_vm._v(\"Priority:\")]),_c('b-form-input',{class:[{ invalid: !_vm.isValid() }],attrs:{\"id\":\"newResponsePriority\",\"required\":\"\",\"placeholder\":\"Enter a priority...\"},model:{value:(_vm.responseBuilderForm.priority),callback:function ($$v) {_vm.$set(_vm.responseBuilderForm, \"priority\", $$v)},expression:\"responseBuilderForm.priority\"}})],1)],1),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"id\":\"btn-submit-response-only\"},on:{\"click\":function($event){return _vm.submit(false)}}},[_vm._v(\"Create Response Only\")]),_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"id\":\"btn-submit-link-camera\"},on:{\"click\":function($event){return _vm.submit(true)}}},[_vm._v(\" Create and Link Camera \"),_c('i',{staticClass:\"fas fa-link\"})]),_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"id\":\"btn-cancel\"},on:{\"click\":function($event){return _vm.$refs.createResponseDialog.hide()}}},[_vm._v(\"Cancel\")])])],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { EventRecord, EventDetails } from \"@/store/site-monitor/types\";\r\nimport { ServerEventType } from \"@/store/eventqueue/types\";\r\n\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst Eventqueue = namespace(\"eventqueue\");\r\nconst SMCameras = namespace(\"siteMonitorCameras\");\r\n\r\n@Component\r\nexport default class CreateNewResponse extends Vue {\r\n\t$refs!: {\r\n\t\tcreateResponseDialog: any;\r\n\t};\r\n\r\n\t@Prop(Number)\r\n\teventId!: number;\r\n\r\n\t@Prop(Object)\r\n\tselectedEventRecord!: EventRecord;\r\n\r\n\t@Prop(Number)\r\n\tgroupId: number;\r\n\r\n\t@SiteMonitor.Getter getEventDetails: EventDetails;\r\n\t@Eventqueue.Getter(\"serverEventTypes\") eventTypes: ServerEventType[];\r\n\t@SiteMonitor.Action createResponseActionForEventRecord: any;\r\n\t@SiteMonitor.Mutation setEventRecordResponse: any;\r\n\t@SMCameras.Mutation setLinkRecord: any;\r\n\r\n\tpublic responseBuilderForm: any = {\r\n\t\ttitle: \"\"\r\n\t};\r\n\r\n\tmounted() {\r\n\t\tthis.responseBuilderForm.eventRecordID = this.selectedEventRecord.eventRecordID;\r\n\t\tthis.responseBuilderForm.title = this.getDefaultResponseTitle();\r\n\t}\r\n\r\n\tgetDefaultResponseTitle() {\r\n\t\tlet title = \"\";\r\n\t\tlet matchingEventType = this.eventTypes.find(\r\n\t\t\teventType =>\r\n\t\t\t\teventType.eventNum ==\r\n\t\t\t\tthis.selectedEventRecord.serverTypeEventNum\r\n\t\t);\r\n\t\tif (matchingEventType) {\r\n\t\t\ttitle = `${matchingEventType.title} from input ${this.selectedEventRecord.input1}`;\r\n\t\t} else {\r\n\t\t\ttitle = `Alarm type ${this.selectedEventRecord.serverTypeEventNum} from input ${this.selectedEventRecord.input1}`;\r\n\t\t}\r\n\t\treturn title;\r\n\t}\r\n\r\n\tisValid() {\r\n\t\treturn (\r\n\t\t\tthis.responseBuilderForm.priority &&\r\n\t\t\t!isNaN(Number(this.responseBuilderForm.priority))\r\n\t\t);\r\n\t}\r\n\r\n\tasync submit(shouldLinkCamera: boolean) {\r\n\t\tif (this.isValid()) {\r\n\t\t\tawait this.createResponseActionForEventRecord({\r\n\t\t\t\teventRecordId: this.responseBuilderForm.eventRecordID,\r\n\t\t\t\ttitle: this.responseBuilderForm.title,\r\n\t\t\t\tpriority: this.responseBuilderForm.priority,\r\n\t\t\t\tgroupId: this.groupId\r\n\t\t\t});\r\n\t\t\tif (shouldLinkCamera) {\r\n\t\t\t\tthis.setLinkRecord(this.selectedEventRecord);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreateNewResponse.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CreateNewResponse.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CreateNewResponse.vue?vue&type=template&id=49805900&scoped=true\"\nimport script from \"./CreateNewResponse.vue?vue&type=script&lang=ts\"\nexport * from \"./CreateNewResponse.vue?vue&type=script&lang=ts\"\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 \"49805900\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isModalShown)?_c('draggable',[_c('template',{slot:\"content\"},[_c('b-overlay',{staticStyle:{\"height\":\"100%\"},attrs:{\"show\":_vm.isLoading,\"rounded\":\"lg\",\"variant\":\"dark\"}},[(_vm.getEventRecordDetails)?_c('div',{staticClass:\"event-record-popout card\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(_vm._s(_vm._f(\"truncateString\")((_vm.displayDateFromISOString(_vm.eventRecord.EventRecordDetails.deviceTime) + ' - ' + _vm.eventRecord.details),_vm.maxTitleCharacters)))]),_c('b-button',{staticClass:\"event-record-popout-close fas fa-times\",on:{\"click\":_vm.disableDetailsPopout}}),_c('div',{staticClass:\"card-body row\"},[_c('div',{staticClass:\"col-5\"},[(_vm.eventRecord.eventRecordID)?_c('div',{staticClass:\"event-details\"},[_c('div',{staticClass:\"details-title\"},[_vm._v(\" Event Record ID: \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.eventRecord.eventRecordID.toString(),_vm.maxValueCharacters))+\" \")])]):_vm._e(),(_vm.eventRecord.EventRecordDetails.input1)?_c('div',{staticClass:\"event-details\"},[_c('div',{staticClass:\"details-title\"},[_vm._v(\" Input 1: \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.eventRecord.EventRecordDetails.input1.toString(),_vm.maxValueCharacters))+\" \")])]):_vm._e(),(_vm.eventRecord.EventRecordDetails.input2)?_c('div',{staticClass:\"event-details\"},[_c('div',{staticClass:\"details-title\"},[_vm._v(\" Input 2: \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.eventRecord.EventRecordDetails.input2.toString(),_vm.maxValueCharacters))+\" \")])]):_vm._e(),(_vm.eventRecord.EventRecordDetails.device)?_c('div',{staticClass:\"event-details\"},[_c('div',{staticClass:\"details-title\"},[_vm._v(\" Device: \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.eventRecord.EventRecordDetails.device,_vm.maxValueCharacters))+\" \")])]):_vm._e()]),_c('div',{staticClass:\"col-7\"},[(_vm.eventRecord.EventRecordDetails.deviceType)?_c('div',{staticClass:\"event-details\"},[_c('div',{staticClass:\"details-title\"},[_vm._v(\" Device Type: \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.eventRecord.EventRecordDetails.deviceType,_vm.maxValueCharacters))+\" \")])]):_vm._e(),(_vm.eventRecord.EventRecordDetails.eventType)?_c('div',{staticClass:\"event-details\"},[_c('div',{staticClass:\"details-title\"},[_vm._v(\" Event Type: \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.eventRecord.EventRecordDetails.eventType,_vm.maxValueCharacters))+\" \")])]):_vm._e(),(_vm.eventRecord.EventRecordDetails.location)?_c('div',{staticClass:\"event-details\"},[_c('div',{staticClass:\"details-title\"},[_vm._v(\" Location: \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.eventRecord.EventRecordDetails.location,_vm.maxValueCharacters))+\" \")])]):_vm._e(),(_vm.eventRecord.EventRecordDetails.url)?_c('div',{staticClass:\"event-details\"},[_c('div',{staticClass:\"details-title\"},[_vm._v(\" URL: \")]),_c('div',[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(_vm.eventRecord.EventRecordDetails.url,_vm.maxValueCharacters))+\" \")])]):_vm._e()])])],1):_vm._e(),_c('div',{staticClass:\"card mb-1\",attrs:{\"no-body\":\"\"}},[_c('div',{staticClass:\"card-header p-1\"},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.additional-info-accordion\",modifiers:{\"additional-info-accordion\":true}}],staticClass:\"additional-info-button\",attrs:{\"block\":\"\"}},[_c('span',{staticClass:\"additional-info-opened\"},[_c('i',{staticClass:\"fa fa-chevron-up\"})]),_c('span',{staticClass:\"additional-info-closed\"},[_c('i',{staticClass:\"fa fa-chevron-down\"})]),_vm._v(\" Additional Information \")])],1),_c('b-collapse',{attrs:{\"id\":\"additional-info-accordion\"}},[_c('b-card-body',{class:['additional-info-body', _vm.customFieldsEmpty]},[(_vm.customFieldsEmpty)?_c('b-card-text',[_vm._v(\"No Additional Information\")]):_c('custom-defined-fields-display',{attrs:{\"customFieldTableType\":_vm.customFieldAlarmTableType,\"values\":_vm.customFieldObjectValues}})],1)],1)],1)])],1)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Emit, Watch } from \"vue-property-decorator\";\r\nimport Draggable from \"./utilities/draggable.vue\";\r\nimport { EventRecord, EventRecordDetails } from \"@/store/site-monitor/types\";\r\nimport { truncateString } from '@/filters';\r\nimport { Getter, namespace } from 'vuex-class';\r\nimport { CustomFieldDto, CustomFieldTableTypes, CustomFieldValues } from \"@/store/custom-fields/types\";\r\nimport customFieldsApi from \"@/services/api.customField.service\";\r\nimport CustomDefinedFieldsDisplay from \"./custom-fields/CustomDefinedFieldsDisplay.vue\";\r\nimport { FeaturesList } from \"@/store/types\";\r\n\r\nconst CustomFields = namespace(\"customFields\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"draggable\": Draggable,\r\n\t\t\"custom-defined-fields-display\": CustomDefinedFieldsDisplay\r\n\t},\r\n\tfilters: { truncateString }\r\n})\r\nexport default class EventRecordDetailsPopout extends Vue {\r\n\t@Prop({ type: Boolean, default: false }) isModalShown: Boolean;\r\n\t@Prop({ type: Object }) eventRecord: EventRecord;\r\n\t@Prop({ type: Number, default: 75 }) maxTitleCharacters: Number;\r\n\t@Prop({ type: Number, default: 30 }) maxValueCharacters: Number;\r\n\r\n\t@CustomFields.Action retrieveCustomFields: ({ tableType, live }: { tableType: number, live: boolean; }) => Promise;\r\n\t@CustomFields.State alarmCustomFields: CustomFieldDto[];\r\n\r\n\tprivate customFieldAlarmTableType = CustomFieldTableTypes.Alarm;\r\n\tprivate customFieldObjectValues: CustomFieldValues[] = [];\r\n\tprivate isLoading: boolean = false;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t@Watch(\"eventRecord.EventRecordDetails.objectId\")\r\n\tprivate async retrieveCustomFieldValues(): Promise {\r\n\t\tif (this.eventRecord?.EventRecordDetails?.objectId) {\r\n\t\t\ttry {\r\n\t\t\t\tthis.isLoading = true;\r\n\t\t\t\tthis.customFieldObjectValues = await customFieldsApi.retrieveCustomFieldsForObject(this.eventRecord.EventRecordDetails.objectId, CustomFieldTableTypes.Alarm);\r\n\t\t\t}\r\n\t\t\tcatch {\r\n\t\t\t\tconsole.log(\"Failed to get Custom Fields for object with objectId: \" + this.eventRecord?.EventRecordDetails?.objectId);\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t\tthis.customFieldObjectValues = [];\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.customFieldObjectValues = [];\r\n\t\t}\r\n\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\t@Emit(\"disableDetailsPopout\")\r\n\tprivate disableDetailsPopout(): boolean {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate get customFieldsEmpty(): string {\r\n\t\treturn (!this.customFieldObjectValues || this.customFieldObjectValues.length == 0) ? \"custom-fields-empty\" : \"\";\r\n\t}\r\n\r\n\tprivate get getEventRecordDetails(): EventRecordDetails {\r\n\t\tif (this.eventRecord?.EventRecordDetails) {\r\n\t\t\treturn this.eventRecord.EventRecordDetails;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventRecordDetailsPopout.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventRecordDetailsPopout.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventRecordDetailsPopout.vue?vue&type=template&id=f367e19c&scoped=true\"\nimport script from \"./EventRecordDetailsPopout.vue?vue&type=script&lang=ts\"\nexport * from \"./EventRecordDetailsPopout.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventRecordDetailsPopout.vue?vue&type=style&index=0&id=f367e19c&prod&scoped=true&lang=scss\"\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 \"f367e19c\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Prop, Watch, Emit, Ref } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport {\r\n\tEventRecordFilter,\r\n\tEventRecord,\r\n\tEventDetails,\r\n\tEventRecordDetails,\r\n\tMaskedAlarm\r\n} from \"@/store/site-monitor/types\";\r\nimport { CameraType, ClipType, MultipleClipsIndex } from \"@/store/site-monitor-cameras/types\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport CreateNewResponse from \"./CreateNewResponse.vue\";\r\nimport EmailHolder from '@/components/emails/email-holder.vue';\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { AuditService } from \"@/services/auditService\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required } from \"vuelidate/lib/validators\";\r\nimport { get } from \"lodash\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport { MessageWithAttachment } from \"@/store/guard-chat/types\";\r\nimport MaskingModal from \"@/components/alarm-masking/MaskingModal.vue\";\r\nimport MessagesList from \"@/components/mobile/messages/MessagesList.vue\";\r\nimport * as messagesApi from \"@/services/api.guardChat.service\";\r\nimport { NewestAt } from '@/components/mobile/messages/NewestAt';\r\nimport { EventRecordHasClipStatus } from \"@/store/event-search/types\";\r\nimport EventRecordTypes from \"@/types/sv-data/enums/EventRecordTypes\";\r\nimport EventRecordDetailsPopout from \"./EventRecordDetailsPopout.vue\";\r\n\r\nconst SessionStore = namespace(\"sessions\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst SMCameras = namespace(\"siteMonitorCameras\");\r\nconst Emails = namespace(\"emails\");\r\nconst GuardChat = namespace(\"guardChat\");\r\nconst EventSearchStore = namespace(\"eventSearch\");\r\nconst AlarmPoints = namespace(\"alarmPoints\");\r\n\r\n// There is no clear unique identity in filters objects.\r\n// In order to prevent multiple messages filter pushes in created hook,\r\n// filter title used as unique prop (assuming no filters with duplicate titles should be added).\r\n// In created hook filters checked for it's presence (by title), and messages filter is not added when found.\r\nconst messagesFilterTitle = \"Messages\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t'masking-modal': MaskingModal,\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar,\r\n\t\tCreateNewResponse,\r\n\t\tEmailHolder,\r\n\t\tMessagesList,\r\n\t\t'event-record-popout': EventRecordDetailsPopout\r\n\t},\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\tauditNote: {\r\n\t\t\trequired\r\n\t\t}\r\n\t}\r\n})\r\nexport default class EventRecords extends Vue {\r\n\t$refs!: {\r\n\t\tmaskAlarmDialog: any;\r\n\t\tfileUploadForm: any;\r\n\t\tfileUploader: any;\r\n\t};\r\n\r\n\t@Prop(Number)\r\n\teventid!: number;\r\n\r\n\t@Prop({ default: \"siteMonitor/fetchEventRecords\" })\r\n\tfetchMutation: string = \"siteMonitor/fetchEventRecords\";\r\n\r\n\t@Prop(Boolean)\r\n\treviewMode!: boolean;\r\n\r\n\t@Prop(String)\r\n\teventFilesPreservedUntil!: string;\r\n\r\n\t@Prop(Boolean)\r\n\teventDetailsAvailable!: Boolean;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tshowVideoAvailableColumn: Boolean;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tprivate peekMode: Boolean;\r\n\r\n\t@Prop({ type: String, default: \"\" })\r\n\tprivate peekUser: string;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tprivate hideMessages: boolean;\r\n\r\n\t@SessionStore.Getter getSession: any;\r\n\t@SessionStore.Action updateSession: any;\r\n\r\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\r\n\r\n\t@SiteMonitor.Getter(\"getAuditService\") auditService: AuditService;\r\n\t@SiteMonitor.Getter(\"getEventRecords\") eventRecords!: EventRecord[];\r\n\t@SiteMonitor.Getter(\"getCurrentRecordFilter\")\r\n\tcurrentFilter!: null | EventRecordFilter;\r\n\t@SiteMonitor.Getter getSelectedEventRecord: EventRecord;\r\n\t@SiteMonitor.Getter getEventDetails: EventDetails;\r\n\t@SiteMonitor.Getter filterIndex: number;\r\n\t@SiteMonitor.Getter(\"getFilteredRecords\") filteredRecords!: EventRecord[];\r\n\t@SiteMonitor.Getter(\"getEventRecordFilters\") filters!: EventRecordFilter[];\r\n\t@SiteMonitor.Getter(\"getEventRecordsAwaitingAckCount\") awaitingAck: number;\r\n\t@SiteMonitor.Getter(\"getEventRecordsWithFiles\")\r\n\teventRecordsWithFiles: number[];\r\n\r\n\t@SiteMonitor.Getter groupID!: number | null;\r\n\t@SiteMonitor.Getter maskedAlarms!: MaskedAlarm[];\r\n\t@SiteMonitor.Getter getEventRecordsNoFilterRenderIndex: any;\r\n\r\n\t@SiteMonitor.Mutation setEventRecordFilterRenderIndex: any;\r\n\t@SiteMonitor.Mutation setEventRecordsNoFilterRenderIndex: any;\r\n\t@SiteMonitor.Mutation resetEventRecords: any;\r\n\t@SiteMonitor.Mutation setGoToLocation: (location: string) => void;\r\n\t@SiteMonitor.Mutation setSelectedEventRecord: any;\r\n\t@SiteMonitor.Mutation setRequestingEventRecords: any;\r\n\t@SiteMonitor.Mutation setActivity: () => void;\r\n\t@SiteMonitor.Mutation setForceRestoreEventRecord: any;\r\n\t@SiteMonitor.Mutation setIsUploadingFile: any;\r\n\t@SiteMonitor.Mutation setEventRecordExpanded: any;\r\n\t@SiteMonitor.Mutation setEventRecordEventRecordDetails: any;\r\n\t@SiteMonitor.Mutation setEventRecordFilters: any;\r\n\r\n\t@SiteMonitor.Action setEventRecordFilter: any;\r\n\t@SiteMonitor.Action eventRecordAcknowledgement: any;\r\n\t@SiteMonitor.Action createAuditRecord: any;\r\n\t@SiteMonitor.Action createReviewRecord: any;\r\n\t@SiteMonitor.Action fetchEventRecords: any;\r\n\t@SiteMonitor.Action(\"unlinkCamera\") sendUnlinkCameraRequest: any;\r\n\t@SiteMonitor.Action eventRecordAllAcknowledgement: any;\r\n\t@SiteMonitor.Action loadMaskedAlarms: any;\r\n\t@SiteMonitor.Action ackEventRecord: any;\r\n\t@SiteMonitor.Action fetchEventRecordDetails: ({ eventRecordID }) => Promise;\r\n\t@SiteMonitor.Action private fetchEventDetails: (eventId: number) => Promise;\r\n\r\n\t@SMCameras.Mutation setAwaitingCamera: any;\r\n\t@SMCameras.Mutation setLinkRecord: any;\r\n\t@SMCameras.Mutation setSaveLink: any;\r\n\t@SMCameras.Getter(\"getLayoutIndex\") layoutIndex!: number;\r\n\t@SMCameras.Getter(\"getLayouts\") layouts!: number[][];\r\n\t@SMCameras.Getter(\"getDeviceControllerClips\") currentClips: ClipType[];\r\n\r\n\t@Emails.Action loadEmailData: any;\r\n\r\n\t@Getter getTimeZoneAbbr: string;\r\n\t@Getter isFullUser: boolean;\r\n\t@Getter getUserName: string;\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\t// Getter and setter for toggling the display of the map.\r\n\t@SiteMonitor.Action setHideMapFlag: any;\r\n\t@SiteMonitor.Getter(\"getHideMapFlag\") hideMapFlag: boolean;\r\n\r\n\t@GuardChat.State(s => s.numberOfUnread) numberOfUnread: number;\r\n\t@GuardChat.Getter(\"getMessages\") messages: MessageWithAttachment[];\r\n\t@GuardChat.Mutation setNumberOfUnread: (newValue: number) => void;\r\n\t@GuardChat.Mutation resetState: () => void;\r\n\t@GuardChat.Action loadMessages: (eventId: number) => Promise;\r\n\r\n\t@Ref() readonly messagesList: MessagesList;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t@EventSearchStore.State EventRecordsWithClips: EventRecordHasClipStatus[];\r\n\r\n\t@AlarmPoints.Mutation setDisplayResponseId: (responseId: number | null) => void;\r\n\r\n\tpublic error: string = \"\";\r\n\tpublic lastRecord: number = 0;\r\n\tpublic filteredTypeIds: any[] = [];\r\n\tpublic auditNote: string = \"\";\r\n\tpublic ps: any;\r\n\tpublic updateInterval: number | null = null;\r\n\tpublic ackingAll: boolean = false;\r\n\tprivate firstUpdateEventId: number | null = null;\r\n\tprivate fileList: FileList | null = null;\r\n\tprivate fileListName: string = \"\";\r\n\tprivate currentDownloadingRecord: number = 0;\r\n\tprivate invalidNote: boolean = false;\r\n\tprivate showErrorAnimation: boolean = false;\r\n\tprivate peekLastUpdated: string = \"\";\r\n\r\n\t//Error Modal\r\n\tprivate errorList: string[] = [];\r\n\tprivate errorExists: boolean = false;\r\n\r\n\tprivate ended: boolean = false;\r\n\tprivate _renderedFilterIndex: number = -1;\r\n\tprivate _renderedIndex: number = -1;\r\n\tprivate _renderedRecords: any[] = null;\r\n\r\n\tprivate rendering: boolean = false;\r\n\tprivate savingRecord: boolean = false;\r\n\tprivate awaitingNew: boolean = true;\r\n\tprivate downloading: boolean = false;\r\n\r\n\tprivate isMaskingModalShown: boolean = false;\r\n\tprivate selectedResponseId: number = null;\r\n\r\n\t// Details Popout Modal\r\n\tprivate isDetailsPopoutModalShown: boolean = false;\r\n\tprivate poppedOutEventRecord: EventRecord = null;\r\n\r\n\tpublic get getRestoredIconEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"RestoredIcon\"]);\r\n\t}\r\n\r\n\tpublic get fileAttachmentsEnabled(): boolean {\r\n\t\tif (this.isMessagesFilter) {\r\n\t\t\t// commented until until we re-introduce\r\n\t\t\t// get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"Messages\", \"Attachments\"]);\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"NoteAttachments\"]);\r\n\t}\r\n\r\n\t/** Checks if the supplemental notes feature is enabled */\r\n\tpublic get isSupplementalNotesEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"EventSearch\", \"SupplementalNotes\"], false);\r\n\t}\r\n\r\n\t/** Checks if the Expandable event details feature is enabled */\r\n\tpublic get isEventRecordDetailsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"ExpandableEventDetails\"], false);\r\n\t}\r\n\r\n\t/** Checks if the AcknowledgeAllEnabled feature is enabled */\r\n\tpublic get isAcknowledgeAllEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"AcknowledgeAll\"], false);\r\n\t}\r\n\r\n\tpublic get isDownloadRawEmailEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"DownloadRawEmail\"], false);\r\n\t}\r\n\r\n\tpublic get isDevicesEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\"], false);\r\n\t}\r\n\r\n\tpublic get isMessagesEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"Messages\"], false);\r\n\t}\r\n\r\n\tpublic get isAlarmMaskingEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"Masking\"], false) &&\r\n\t\t\t(this.getPermissions.canDisarmSites || this.getPermissions.canDisarmSitesExtended);\r\n\t}\r\n\r\n\tpublic get isOnTestEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"AlarmPoints\", \"OnTest\"], false) && !!this.permissions.canPutAlarmPointsOnTest;\r\n\t}\r\n\r\n\tpublic get isCustomFieldAlarmsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"CustomFields\", \"Alarms\"], false);\r\n\t}\r\n\r\n\t/** Currently rendered event records. Caches, and updates on filter change or render index update */\r\n\tpublic get renderedRecords() {\r\n\t\tlet currentFilter = this.currentFilter;\r\n\t\tif (currentFilter == null) {\r\n\t\t\tlet noFilterIndex = this.getEventRecordsNoFilterRenderIndex;\r\n\t\t\tif (\r\n\t\t\t\tthis._renderedRecords == null ||\r\n\t\t\t\tthis._renderedFilterIndex != -1 ||\r\n\t\t\t\tthis._renderedIndex != noFilterIndex\r\n\t\t\t) {\r\n\t\t\t\tthis._renderedFilterIndex = -1;\r\n\t\t\t\tthis._renderedIndex = noFilterIndex;\r\n\t\t\t\tthis._renderedRecords = this.filteredRecords.slice(0, noFilterIndex);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (\r\n\t\t\t\tthis._renderedRecords == null ||\r\n\t\t\t\tthis._renderedFilterIndex != currentFilter.filterIndex ||\r\n\t\t\t\tthis._renderedIndex != currentFilter.renderIndex\r\n\t\t\t) {\r\n\t\t\t\tthis._renderedFilterIndex = currentFilter.filterIndex;\r\n\t\t\t\tthis._renderedIndex = currentFilter.renderIndex;\r\n\t\t\t\tthis._renderedRecords = this.filteredRecords.slice(0, currentFilter.renderIndex);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this._renderedRecords;\r\n\t}\r\n\r\n\tpublic get parsedEventRecords(): EventRecord[] {\r\n\t\treturn this.filteredRecords.map(x => {\r\n\t\t\tlet y = { ...x };\r\n\t\t\tif (y.details) {\r\n\t\t\t\ty.hasFiles = y.details.includes(\"{FilesUploaded}\");\r\n\t\t\t\ty.details = y.details.replace(\"{FilesUploaded}\", \"\");\r\n\t\t\t}\r\n\r\n\t\t\tif (this.eventRecordsWithFiles) {\r\n\t\t\t\ty.hasFiles = this.eventRecordsWithFiles.includes(y.eventRecordID);\r\n\t\t\t}\r\n\r\n\t\t\ty.hasClip = this.EventRecordsWithClips?.find(event => event.eventRecordId === x.eventRecordID)?.hasClip ?? false;\r\n\r\n\t\t\treturn y;\r\n\t\t});\r\n\t}\r\n\r\n\t/** If the current filter uses a Priority column */\r\n\tpublic get hasPriorityColumn(): boolean {\r\n\t\treturn this.currentFilter == null || this.currentFilter.hasPriorityColumn;\r\n\t}\r\n\r\n\t/** If the current filter shows the Linked Camera column */\r\n\tpublic get hasLinkedCameraColumn(): boolean {\r\n\t\treturn this.currentFilter == null || this.currentFilter.hasLinkedCameraColumn;\r\n\t}\r\n\r\n\tpublic get hasVideoAvailableColumn(): boolean {\r\n\t\treturn this.showVideoAvailableColumn &&\r\n\t\t\t(this.currentFilter == null || this.currentFilter.hasVideoAvailableColumn);\r\n\t}\r\n\r\n\tpublic get hasMatrixGridLocationColumn(): boolean {\r\n\t\treturn ((this.currentFilter == null || this.currentFilter.showMatrixGridLocation) && !this.reviewMode);\r\n\t}\r\n\r\n\tprivate canDeviceHaveClip(event: EventRecord): Boolean {\r\n\t\tif (!event) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn event.eventRecordTypeID === EventRecordTypes.Alarm ||\r\n\t\t\tevent.eventRecordTypeID === EventRecordTypes.CameraEvent;\r\n\t}\r\n\r\n\t/** If the current filter shows the \"Acknowledge All\" bar */\r\n\tpublic get showAckAllBar() {\r\n\t\treturn this.filterIndex <= 0 && this.isAcknowledgeAllEnabled && !this.peekMode;\r\n\t}\r\n\r\n\t/** If we are ready to satr requesting event records */\r\n\tpublic get startRequestingEventRecords() {\r\n\t\treturn !this.reviewMode || this.eventDetailsAvailable;\r\n\t}\r\n\r\n\t/** Currently selected event record ID */\r\n\tpublic get selectedEventRecordID() {\r\n\t\tlet selectedRecord = this.getSelectedEventRecord;\r\n\t\tif (selectedRecord == null) return 0;\r\n\r\n\t\treturn selectedRecord.eventRecordID;\r\n\t}\r\n\r\n\t/** the readable title for the current timezone */\r\n\tpublic get areaTimeZoneTitle() {\r\n\t\treturn this.getEventDetails === null ? \"\" : this.getEventDetails.timeZoneTitle;\r\n\t}\r\n\r\n\tpublic get selectedFileNames() {\r\n\t\tlet fileNamesUploaded = \"\";\r\n\r\n\t\tif (this.fileListHasValue) {\r\n\t\t\tArray.from(Array(this.fileList.length).keys()).map(x => {\r\n\t\t\t\tfileNamesUploaded = `${fileNamesUploaded}${fileNamesUploaded ? \",\\n\" : \"Files attached:\\n\"}${this.fileList[x].name\r\n\t\t\t\t\t}`;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tfileNamesUploaded = \"No files selected\";\r\n\t\t}\r\n\r\n\t\treturn fileNamesUploaded;\r\n\t}\r\n\r\n\tpublic get fileListHasValue() {\r\n\t\tif (this.fileList && this.fileList.length) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// Feature flag for map display toggling functionality.\r\n\tprivate get isToggleMapEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"Maps\", \"ToggleSiteMonitor\"]);\r\n\t}\r\n\r\n\tpublic get layoutHorizontal(): number {\r\n\t\treturn this.layouts[this.layoutIndex][0];\r\n\t}\r\n\r\n\tpublic get layoutVertical(): number {\r\n\t\treturn this.layouts[this.layoutIndex][1];\r\n\t}\r\n\r\n\tpublic get isAutoPopulateEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"MediaMatrix\", \"AutoPopulate\"]);\r\n\t}\r\n\r\n\t/** On mount, configure records */\r\n\tpublic async mounted(): Promise {\r\n\t\tthis.resetEventRecords();\r\n\t\tthis.ended = false;\r\n\t\tthis.setRequestingEventRecords(false);\r\n\t\tawait this.fetchEventDetails(this.eventid);\r\n\t\tthis.update();\r\n\t\tthis.setSaveLink(true);\r\n\t\tawait this.updateSession({\r\n\t\t\tresourceId: SessionResource.AuditServiceSession,\r\n\t\t\teventId: this.eventid\r\n\t\t});\r\n\r\n\t\tthis.configureFilters();\r\n\t}\r\n\r\n\t/** Stop updating when component is closed */\r\n\tpublic beforeDestroy() {\r\n\t\tthis.ended = true;\r\n\r\n\t\tif (this.updateInterval != null) {\r\n\t\t\tclearInterval(this.updateInterval);\r\n\t\t}\r\n\t}\r\n\r\n\t/** Refresh current event records\r\n\t * If the Event Peek modal is closed, don't keep updating\r\n\t*/\r\n\tpublic update(): void {\r\n\t\tif (this.ended) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.peekMode && this.eventid == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//this.loadMaskedAlarms(this.groupID);\r\n\t\tif (this.fetchMutation != undefined && Number(this.eventid) > 0 && this.startRequestingEventRecords) {\r\n\t\t\tlet update = this.fetchEventRecords({ eventID: this.eventid, reviewMode: this.reviewMode });\r\n\t\t\tif (update != null) {\r\n\t\t\t\tupdate.then(\r\n\t\t\t\t\teventRecordCount => {\r\n\t\t\t\t\t\tif (this.firstUpdateEventId == null || this.firstUpdateEventId != this.eventid) {\r\n\t\t\t\t\t\t\tthis.firstUpdateEventId = this.eventid;\r\n\r\n\t\t\t\t\t\t\tif (this.getSelectedEventRecord) {\r\n\t\t\t\t\t\t\t\tthis.$emit(\"eventRecordSelected\", this.getSelectedEventRecord);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t\t!this.reviewMode &&\r\n\t\t\t\t\t\t\t\tthis.getSelectedEventRecord &&\r\n\t\t\t\t\t\t\t\tthis.getSelectedEventRecord.awaitingAcknowledgement\r\n\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\tthis.ackEventRecord(this.getSelectedEventRecord);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tsetTimeout(() => this.update(), 2000);\r\n\r\n\t\t\t\t\t\tif (this.awaitingNew && eventRecordCount > 0) {\r\n\t\t\t\t\t\t\t//console.log(\"Rendering more event records ... \");\r\n\t\t\t\t\t\t\tVue.nextTick(() => {\r\n\t\t\t\t\t\t\t\tthis.onScrollToEnd();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\terror => {\r\n\t\t\t\t\t\tsetTimeout(() => this.update(), 2000);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tsetTimeout(() => this.update(), 2000);\r\n\t\t}\r\n\r\n\t\t// Update time for event peek\r\n\t\tif (this.peekMode) {\r\n\t\t\tthis.peekLastUpdated = new Date().toLocaleString();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate timeSincePeekUpdate(): string {\r\n\t\treturn `Last Updated: ${this.peekLastUpdated}`;\r\n\t}\r\n\r\n\t// To handle peeking different events, we refresh the peek when the eventid changes\r\n\t@Watch('eventid')\r\n\tprivate onEventIdChanged(): void {\r\n\t\t// clear guard chat state when the eventid changes\r\n\t\tthis.resetState();\r\n\r\n\t\tif (this.eventid != null) {\r\n\t\t\tif (this.peekMode) {\r\n\t\t\t\tthis.resetEventRecords();\r\n\t\t\t\tthis.update();\r\n\t\t\t\tthis.configureFilters();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Moved existing code to this function as it will now be used with event peek too\r\n\tprivate configureFilters(): void {\r\n\t\tlet filters = Object.assign([], this.filters);\r\n\r\n\t\tlet deviceFilter = filters.find(f => f.filterTitle === \"Devices\");\r\n\t\tdeviceFilter.enabled = this.isDevicesEnabled;\r\n\r\n\t\tconst messagesFilter = filters.find(f => f.filterTitle === messagesFilterTitle);\r\n\r\n\t\tif (this.peekMode || this.hideMessages) {\r\n\t\t\tmessagesFilter.enabled = false;\r\n\t\t} else {\r\n\t\t\tmessagesFilter.enabled = this.isMessagesEnabled;\r\n\t\t}\r\n\r\n\t\tthis.setEventRecordFilters(filters);\r\n\t}\r\n\r\n\tpublic filterOn(filter: EventRecordFilter) {\r\n\t\tthis.setEventRecordFilter(filter.filterIndex);\r\n\t\tthis.setActivity();\r\n\t}\r\n\r\n\tpublic filterOff() {\r\n\t\tthis.setEventRecordFilter(-1);\r\n\t\tthis.setActivity();\r\n\t}\r\n\r\n\tpublic async jumpToLocation(eventRecord: EventRecord): Promise {\r\n\t\tif (eventRecord.latLong != \"\") {\r\n\t\t\t// if the toggle map feature is on, hide the map.\r\n\t\t\tif (this.isToggleMapEnabled) {\r\n\t\t\t\tthis.setHideMapFlag(false);\r\n\t\t\t}\r\n\t\t\tthis.setGoToLocation(null);\r\n\t\t\tawait this.$nextTick();\r\n\t\t\tthis.setGoToLocation(eventRecord.latLong);\r\n\t\t}\r\n\t}\r\n\r\n\t@Emit(\"eventRecordSelected\")\r\n\tpublic async viewRecord(eventRecord: EventRecord) {\r\n\t\tif (this.peekMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (eventRecord.eventRecordTypeID == EventRecordTypes.SnapShot || eventRecord.eventRecordTypeID == EventRecordTypes.RecordedVideoSnapShot) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.$emit(\"eventRecordSelected\", eventRecord);\r\n\t\tthis.setSelectedEventRecord(eventRecord);\r\n\r\n\t\tif (!this.reviewMode && eventRecord.awaitingAcknowledgement) {\r\n\t\t\tthis.ackEventRecord(eventRecord);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic async ackAll() {\r\n\t\tif (this.ackingAll && !this.isAcknowledgeAllEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.reviewMode || this.peekMode) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.ackingAll = true;\r\n\t\tawait this.eventRecordAllAcknowledgement(this.eventid);\r\n\t\tthis.ackingAll = false;\r\n\t}\r\n\r\n\t/*** Adds new event record for audit note. Resets activity.\r\n\t * If user is in peek mode, audit note is appended with user name\r\n\t*/\r\n\tpublic async postAudit() {\r\n\t\tif (this.peekMode) {\r\n\t\t\tthis.auditNote = `${this.auditNote} - ${this.peekUser} in Peek`;\r\n\t\t}\r\n\t\tif (!this.savingRecord) {\r\n\t\t\tthis.$v.$touch();\r\n\t\t\tif (this.$v.auditNote.$error) {\r\n\t\t\t\tthis.invalidNote = true;\r\n\t\t\t\tthis.showErrorAnimation = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tthis.savingRecord = true;\r\n\t\t\tlet fileNamesUploaded = \"\";\r\n\r\n\t\t\tconst eventRecordId = await this.createRecord();\r\n\r\n\t\t\tif (this.fileListHasValue) {\r\n\t\t\t\tawait this.setIsUploadingFile(true);\r\n\t\t\t\tawait this.renewAuditSession();\r\n\r\n\t\t\t\tArray.from(this.fileList).forEach(async (file, index) => {\r\n\t\t\t\t\tawait this.auditService\r\n\t\t\t\t\t\t.uploadFileForEventRecord(\r\n\t\t\t\t\t\t\tthis.fileListName,\r\n\t\t\t\t\t\t\tfile,\r\n\t\t\t\t\t\t\tthis.getSession(SessionResource.AuditServiceSession),\r\n\t\t\t\t\t\t\tthis.eventid,\r\n\t\t\t\t\t\t\teventRecordId\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.then(async (response: any) => {\r\n\t\t\t\t\t\t\tawait this.createAuditRecord({\r\n\t\t\t\t\t\t\t\teventId: this.eventid,\r\n\t\t\t\t\t\t\t\teventRecordTypeId: 23,\r\n\t\t\t\t\t\t\t\tdetails: `File ${file.name} upload complete for EventRecordID: ${eventRecordId}`,\r\n\t\t\t\t\t\t\t\tobjectId: eventRecordId\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tawait this.resetFileList(index);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(async err => {\r\n\t\t\t\t\t\t\tawait this.resetFileList(index);\r\n\t\t\t\t\t\t\tconsole.log(`Upload failed!`, err);\r\n\t\t\t\t\t\t\tif (err.response && err.response.data) {\r\n\t\t\t\t\t\t\t\tthis.errorList.push(err.response.data);\r\n\t\t\t\t\t\t\t} else if (err.message) {\r\n\t\t\t\t\t\t\t\tthis.errorList.push(err.message);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.errorList.push(`Unknown error occurred`);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.errorExists = true;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tawait this.setActivity();\r\n\t\t\t\tthis.auditNote = \"\";\r\n\t\t\t\tthis.savingRecord = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get isMessagesFilter(): boolean {\r\n\t\treturn this.filters[this.filterIndex] && this.filters[this.filterIndex].filterTitle === messagesFilterTitle;\r\n\t}\r\n\r\n\tprivate async createRecord(): Promise {\r\n\t\tif (this.isMessagesFilter) {\r\n\t\t\ttry {\r\n\t\t\t\treturn await messagesApi.sendMessage({\r\n\t\t\t\t\teventId: this.eventid,\r\n\t\t\t\t\tmessageType: \"operator\",\r\n\t\t\t\t\tmessage: this.auditNote\r\n\t\t\t\t});\r\n\t\t\t} catch {\r\n\t\t\t\tconsole.error(`Failed to send Message.`);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst eventRecord = await this.createAuditRecord({\r\n\t\t\t\teventId: this.eventid,\r\n\t\t\t\teventRecordTypeId: 103,\r\n\t\t\t\tdetails: this.auditNote\r\n\t\t\t});\r\n\t\t\treturn eventRecord.eventRecordID;\r\n\t\t}\r\n\t}\r\n\r\n\t/***\r\n\t * adds new event record for supplemental notes\r\n\t * Used in event search\r\n\t */\r\n\tpublic async postSupplemental() {\r\n\t\tif (!this.savingRecord) {\r\n\t\t\tthis.$v.$touch();\r\n\t\t\tif (this.$v.auditNote.$error) {\r\n\t\t\t\tthis.invalidNote = true;\r\n\t\t\t\tthis.showErrorAnimation = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.savingRecord = true;\r\n\t\t\tconst record = await this.createReviewRecord({\r\n\t\t\t\teventId: this.eventid,\r\n\t\t\t\teventRecordTypeId: 17,\r\n\t\t\t\tdetails: `Supplemental Information: ${this.auditNote}`\r\n\t\t\t});\r\n\t\t\tif (this.fileListHasValue) {\r\n\t\t\t\tawait this.setIsUploadingFile(true);\r\n\t\t\t\tawait this.renewAuditSession();\r\n\t\t\t\tArray.from(this.fileList).forEach(async (file, index) => {\r\n\t\t\t\t\tawait this.auditService\r\n\t\t\t\t\t\t.uploadFileForEventRecord(\r\n\t\t\t\t\t\t\tthis.fileListName,\r\n\t\t\t\t\t\t\tfile,\r\n\t\t\t\t\t\t\tthis.getSession(SessionResource.AuditServiceSession),\r\n\t\t\t\t\t\t\tthis.eventid,\r\n\t\t\t\t\t\t\trecord.eventRecord.eventRecordID\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t\t.then(async (response: any) => {\r\n\t\t\t\t\t\t\tawait this.createReviewRecord({\r\n\t\t\t\t\t\t\t\teventId: this.eventid,\r\n\t\t\t\t\t\t\t\teventRecordTypeId: 23,\r\n\t\t\t\t\t\t\t\tdetails: `Supplemental Information: File ${file.name} upload complete for EventRecordID: ${record.eventRecord.eventRecordID}`,\r\n\t\t\t\t\t\t\t\tobjectId: record.eventRecord.eventRecordID\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tawait this.resetFileList(index);\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.catch(async err => {\r\n\t\t\t\t\t\t\tawait this.resetFileList(index);\r\n\t\t\t\t\t\t\tconsole.log(\"Upload failed! Error\", err);\r\n\t\t\t\t\t\t\tif (err.response && err.response.data) {\r\n\t\t\t\t\t\t\t\tthis.errorList.push(err.response.data);\r\n\t\t\t\t\t\t\t} else if (err.message) {\r\n\t\t\t\t\t\t\t\tthis.errorList.push(err.message);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.errorList.push(`Unknown error occurred`);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tthis.errorExists = true;\r\n\t\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tawait this.setActivity();\r\n\t\t\t\tthis.auditNote = \"\";\r\n\t\t\t\tthis.savingRecord = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate resetErrorModal() {\r\n\t\tthis.errorExists = false;\r\n\t\tthis.errorList = [];\r\n\t}\r\n\r\n\tprivate async resetFileList(index) {\r\n\t\tif (index + 1 == this.fileList.length) {\r\n\t\t\tawait this.setActivity();\r\n\t\t\tthis.auditNote = \"\";\r\n\t\t\tthis.savingRecord = false;\r\n\t\t\tawait this.setIsUploadingFile(false);\r\n\t\t\tthis.fileList = null;\r\n\t\t\tthis.$refs.fileUploadForm.reset();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async downloadAttachedFiles(eventRecordId: number) {\r\n\t\tawait this.renewAuditSession();\r\n\t\tthis.downloading = true;\r\n\t\tthis.currentDownloadingRecord = eventRecordId;\r\n\t\tawait this.auditService\r\n\t\t\t.getAllFiles(this.getSession(SessionResource.AuditServiceSession), eventRecordId)\r\n\t\t\t.then(async (response: any) => {\r\n\t\t\t\tconst fileName = response.headers[\"x-suggested-filename\"];\r\n\t\t\t\tlet link = document.createElement(\"a\");\r\n\t\t\t\tlink.href = window.URL.createObjectURL(response.data);\r\n\t\t\t\tlink.download = fileName;\r\n\t\t\t\tlink.click();\r\n\r\n\t\t\t\tawait this.createReviewRecord({\r\n\t\t\t\t\teventId: this.eventid,\r\n\t\t\t\t\teventRecordTypeId: 23,\r\n\t\t\t\t\tdetails: `Files downloaded by user: ${this.getUserName}`\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t\t.catch(err => {\r\n\t\t\t\tconsole.log(`Download failed: ${err.response.data}`);\r\n\t\t\t\tthis.errorList.push(`Download failed: ${err.response.data}`);\r\n\t\t\t\tthis.errorExists = true;\r\n\t\t\t});\r\n\r\n\t\tthis.downloading = false;\r\n\t}\r\n\r\n\t/**\r\n\t * Opens the Mask Alarm Dialog specified by the name\r\n\t */\r\n\tpublic showMaskAlarmDialog(event: EventRecord) {\r\n\t\tthis.$refs.maskAlarmDialog.show(event.eventID, event.objectID, this.maskedAlarmForEvent(event));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the masked alarm (response) for the given event, if any. Otherwise, this returns undefined.\r\n\t */\r\n\tpublic maskedAlarmForEvent(event: EventRecord) {\r\n\t\treturn this.maskedAlarms.find(alarm => alarm.responseID == event.objectID);\r\n\t}\r\n\r\n\t/**\r\n\t * Performs a check to see if the given event record has had it's alarm response masked.\r\n\t */\r\n\tpublic isAlarmMasked(event: EventRecord) {\r\n\t\treturn typeof this.maskedAlarmForEvent(event) != \"undefined\";\r\n\t}\r\n\r\n\tpublic displayCamera(camera: CameraType) {\r\n\t\tthis.setAwaitingCamera({\r\n\t\t\tobjectID: camera.deviceID,\r\n\t\t\ttitle: camera.title\r\n\t\t});\r\n\t}\r\n\r\n\tpublic linkCamera(record: EventRecord) {\r\n\t\tthis.setLinkRecord(record);\r\n\t}\r\n\r\n\tpublic async unlinkCamera(eventRecord: EventRecord, camera: CameraType) {\r\n\t\tawait this.sendUnlinkCameraRequest({\r\n\t\t\tobjectId: eventRecord.objectID,\r\n\t\t\tdeviceId: camera.deviceID\r\n\t\t});\r\n\t\tlet cameraIndex = eventRecord.attachedCameras.findIndex(\r\n\t\t\tlinkedCamera => linkedCamera.deviceID == camera.deviceID\r\n\t\t);\r\n\t\teventRecord.attachedCameras.splice(cameraIndex, 1);\r\n\t}\r\n\r\n\tpublic setForceRestoreOpen(eventRecord: EventRecord) {\r\n\t\tthis.setForceRestoreEventRecord(eventRecord);\r\n\t}\r\n\r\n\tonScrollToEnd() {\r\n\t\tif (this.filteredRecords && this.filteredRecords.length == 0) {\r\n\t\t\tthis.awaitingNew = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.rendering) return;\r\n\r\n\t\tthis.rendering = true;\r\n\t\tlet currentFilter = this.currentFilter;\r\n\r\n\t\tif (currentFilter == null) {\r\n\t\t\tlet noFilterIndex = this.getEventRecordsNoFilterRenderIndex;\r\n\t\t\tlet max = this.filteredRecords.length;\r\n\t\t\tlet renderIndex = Math.min(max, noFilterIndex + 50);\r\n\r\n\t\t\tthis.setEventRecordsNoFilterRenderIndex(renderIndex);\r\n\r\n\t\t\tthis.awaitingNew = noFilterIndex + 50 > max;\r\n\t\t} else {\r\n\t\t\tlet max = currentFilter.filterRecords.length;\r\n\t\t\tlet renderIndex = Math.min(max, currentFilter.renderIndex + 50);\r\n\r\n\t\t\tthis.setEventRecordFilterRenderIndex({\r\n\t\t\t\tfilterIndex: currentFilter.filterIndex,\r\n\t\t\t\trenderIndex: renderIndex\r\n\t\t\t});\r\n\r\n\t\t\tthis.awaitingNew = currentFilter.renderIndex + 50 > currentFilter.filterRecords.length;\r\n\t\t}\r\n\r\n\t\tVue.nextTick(() => {\r\n\t\t\tthis.rendering = false;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate filesChanged(name, files: FileList) {\r\n\t\tconst arrayFiles = Array.from(files);\r\n\t\tconst invalidFiles = arrayFiles.filter(file => file.name.length > 240);\r\n\r\n\t\tif (invalidFiles.length > 0) {\r\n\t\t\tthis.errorList.push(\r\n\t\t\t\t`${invalidFiles.length} File(s) are exceeding the character limit. The limit is 240 characters.`\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (\r\n\t\t\tarrayFiles.reduce((acc, file) => acc + file.size, 0) >=\r\n\t\t\tthis.getEventDetails.fileSizeLimit * 1000000\r\n\t\t) {\r\n\t\t\tthis.errorList.push(`Maximum upload size is ${this.getEventDetails.fileSizeLimit}MB`);\r\n\t\t}\r\n\r\n\t\tif (arrayFiles.filter(file => file.name.toLowerCase().endsWith(\"exe\")).length > 0) {\r\n\t\t\tthis.errorList.push(`.exe files can not be uploaded`);\r\n\t\t}\r\n\r\n\t\tif (this.errorList.length > 0) {\r\n\t\t\tthis.errorExists = true;\r\n\t\t} else {\r\n\t\t\tthis.fileListName = name;\r\n\t\t\tthis.fileList = files;\r\n\t\t}\r\n\r\n\t\tthis.$refs.fileUploader.files = null;\r\n\t\tthis.$refs.fileUploader.value = this.fileList;\r\n\t}\r\n\r\n\tprivate async renewAuditSession() {\r\n\t\tawait this.updateSession({\r\n\t\t\tresourceId: SessionResource.AuditServiceSession,\r\n\t\t\teventId: this.eventid\r\n\t\t});\r\n\t}\r\n\r\n\tprivate checkCurrentlyDownloading(eventRecordId: number) {\r\n\t\treturn this.currentDownloadingRecord == eventRecordId && this.downloading;\r\n\t}\r\n\r\n\t/** Expands the event details for a record */\r\n\tprivate async showEventRecordDetails(eventRecord: EventRecord) {\r\n\t\tthis.hasRawData = false;\r\n\t\t//Show EventRecordDetails\r\n\t\tlet EventRecordDetails = await this.fetchEventRecordDetails({ eventRecordID: eventRecord.eventRecordID });\r\n\r\n\t\tthis.setEventRecordEventRecordDetails({\r\n\t\t\teventRecordID: eventRecord.eventRecordID,\r\n\t\t\tEventRecordDetails: EventRecordDetails\r\n\t\t});\r\n\r\n\t\tthis.setEventRecordExpanded({\r\n\t\t\teventRecordID: eventRecord.eventRecordID,\r\n\t\t\texpanded: true\r\n\t\t});\r\n\r\n\t\t// no need to await\r\n\t\tthis.checkForRawData(eventRecord.eventRecordID);\r\n\t}\r\n\r\n\t/** unexpands the event details for a record */\r\n\tprivate async hideEventRecordDetails(eventRecord: EventRecord) {\r\n\t\t//Hide EventRecordDetails\r\n\t\tthis.setEventRecordExpanded({\r\n\t\t\teventRecordID: eventRecord.eventRecordID,\r\n\t\t\texpanded: false\r\n\t\t});\r\n\t}\r\n\r\n\t@Watch(\"auditNote\")\r\n\tprivate onAuditNoteChanged() {\r\n\t\tthis.setActivity();\r\n\t}\r\n\r\n\t@Watch(\"EventRecordsWithClips\")\r\n\tprivate onEventRecordsWithClipsChanged() {\r\n\t\t// Updated parsedEventRecords\r\n\t\tthis.parsedEventRecords;\r\n\t}\r\n\r\n\r\n\t/*\r\n\t\tTEMP RawDataLogic section - This may move / get changed hence why its at the bottom of file instead of properly\r\n\t\tgrouped\r\n\t */\r\n\tprivate hasRawData: boolean = false;\r\n\tprivate emailId: string = \"\";\r\n\tprivate showRawDataModal: boolean = false;\r\n\tprivate gettingRawDataStatus: boolean = false;\r\n\r\n\t/**\r\n\t * Download the raw data and put it into rawDataHtml to be leverage in modal\r\n\t * @param eventRecordId\r\n\t */\r\n\tpublic async downloadRawData(eventRecordId: number) {\r\n\t\tconst recordId = `${eventRecordId}`;\r\n\t\tconst auth = this.getSession(SessionResource.AuditServiceSession);\r\n\r\n\t\tawait this.loadEmailData({ auth, recordId });\r\n\t\tthis.emailId = recordId;\r\n\t\tthis.$bvModal.show('rawDataModal');\r\n\t}\r\n\r\n\t/**\r\n\t * Check to see if this filestore contains a raw data .eml file for this event record\r\n\t * @param eventRecordID\r\n\t */\r\n\tprivate async checkForRawData(eventRecordID: number) {\r\n\t\t// if we're already getting clips\r\n\t\tif (this.gettingRawDataStatus) {\r\n\t\t\tconsole.log(\"Already fetching raw data status.\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// mark that we're getting clips; prevent duplicate operations.\r\n\t\tthis.gettingRawDataStatus = true;\r\n\t\tlet auth = this.getSession(SessionResource.AuditServiceSession);\r\n\t\t// do request to audit service to get media list.\r\n\t\tthis.auditService.mediaList(auth, eventRecordID).then(\r\n\t\t\t(response: any) => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t// get the raw clips\r\n\t\t\t\t\tlet rawClips = response.data;\r\n\t\t\t\t\t// check if any of the items are `RAW DATA` / .eml items.\r\n\t\t\t\t\tthis.hasRawData = rawClips.some((clip) => {\r\n\t\t\t\t\t\treturn clip.MediaType == \"RAW DATA\";\r\n\t\t\t\t\t});\r\n\t\t\t\t} catch (err) {\r\n\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.gettingRawDataStatus = false;\r\n\t\t\t},\r\n\t\t\t(errorResponse: any) => {\r\n\t\t\t\tthis.hasRawData = false;\r\n\t\t\t\tthis.gettingRawDataStatus = false;\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tprivate launchMaskingModal(event: EventRecord) {\r\n\t\tthis.selectedResponseId = event.objectID;\r\n\t\tthis.isMaskingModalShown = true;\r\n\t}\r\n\r\n\tprivate onMaskingModalClose() {\r\n\t\tthis.isMaskingModalShown = false;\r\n\t}\r\n\r\n\tprivate updatedTask: (() => void) | undefined;\r\n\r\n\t@Watch(\"isMessagesFilter\")\r\n\tprivate onMessagesVisibilityChange(newVal, oldVal) {\r\n\t\tif (newVal) {\r\n\t\t\tthis.updatedTask = () => { this.messagesList.restoreScrolling(); };\r\n\t\t} else {\r\n\t\t\tthis.messagesList.storeScrolling();\r\n\t\t\tthis.updatedTask = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updated() {\r\n\t\tif (this.updatedTask) {\r\n\t\t\tthis.updatedTask();\r\n\t\t\tthis.updatedTask = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getNewCount(filter: EventRecordFilter) {\r\n\t\tif (filter.filterTitle === messagesFilterTitle) {\r\n\t\t\treturn this.numberOfUnread;\r\n\t\t} else {\r\n\t\t\treturn filter.newCount;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get newestMessagesAt(): NewestAt {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SiteMonitor\", \"ChatMessagesNewestOnTop\"]) ? \"top\" : \"bottom\";\r\n\t}\r\n\r\n\tprivate isEventRecordOfExpandableType(parsedEventRecord) {\r\n\t\treturn parsedEventRecord.eventRecordTypeID === 1 || parsedEventRecord.eventRecordTypeID === 149;\r\n\t}\r\n\r\n\tprivate enableDetailsPopout(event: EventRecord): void {\r\n\t\tthis.poppedOutEventRecord = event;\r\n\t\tthis.isDetailsPopoutModalShown = true;\r\n\t}\r\n\r\n\tprivate disableDetailsPopout(): void {\r\n\t\tthis.isDetailsPopoutModalShown = false;\r\n\t}\r\n\r\n\tprivate get areEventFilesAvailable(): boolean {\r\n\t\treturn new Date(this.eventFilesPreservedUntil ? this.eventFilesPreservedUntil : 0) > new Date();\r\n\t}\r\n\r\n\tprivate get canUploadFiles(): boolean {\r\n\t\tif (this.reviewMode) {\r\n\t\t\treturn this.fileAttachmentsEnabled && this.areEventFilesAvailable;\r\n\t\t} else {\r\n\t\t\treturn this.fileAttachmentsEnabled;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate downloadEmail(): void {\r\n\t\tif (!this.emailId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.downloadAttachedFiles(Number(this.emailId));\r\n\t}\r\n\r\n\tprivate getExpandedUrls(eventRecordDetails: EventRecordDetails): string[] {\r\n\t\tvar httpRegex = new RegExp(\"^http[s]?:([\\\\]{2}|[/]{2})\", \"i\");\r\n\t\tvar internalRegex = new RegExp(\"^[#]?/\");\r\n\t\tvar httpsPrefix = \"https://\";\r\n\t\tvar internalPrefix = \"#/\";\r\n\r\n\t\treturn (eventRecordDetails.url ?? \"\").split(',').reduce(function (urls, item) {\r\n\t\t\tlet urlPath = item.trim();\r\n\r\n\t\t\t// checks if the trimmed string is empty\r\n\t\t\tif (urlPath) {\r\n\t\t\t\tif (internalRegex.test(urlPath)) {\r\n\t\t\t\t\t// prefix is internal path\r\n\t\t\t\t\turls.push(internalPrefix.concat(urlPath.split('/')[1]));\r\n\t\t\t\t}\r\n\t\t\t\telse if (!httpRegex.test(urlPath)) {\r\n\t\t\t\t\t// has no prefix\r\n\t\t\t\t\turls.push(httpsPrefix.concat(urlPath));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// has valid http prefix\r\n\t\t\t\t\turls.push(urlPath);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn urls;\r\n\t\t}, []);\r\n\t}\r\n\r\n\tpublic cameraIconColor(clips: number[], i: number, j: number): string {\r\n\t\tif (clips.length == 0) {\r\n\t\t\treturn \"empty-clip\";\r\n\t\t}\r\n\r\n\t\tlet indexCalc = ((i - 1) * this.layoutHorizontal + j);\r\n\r\n\t\tif (clips.includes(indexCalc)) {\r\n\t\t\treturn \"red-camera-indicator\";\r\n\t\t}\r\n\r\n\t\treturn \"grey-camera-indicator\";\r\n\t}\r\n\r\n\tpublic recordClips(recordId: number): MultipleClipsIndex {\r\n\t\tlet clipIndexes: MultipleClipsIndex = {\r\n\t\t\tindexes: []\r\n\t\t};\r\n\r\n\t\tif (!this.currentClips) {\r\n\t\t\treturn clipIndexes;\r\n\t\t}\r\n\r\n\t\tlet clipsForRecord = this.currentClips.filter(clip => clip.EventRecordId == recordId);\r\n\r\n\t\tif (clipsForRecord.length > 0) {\r\n\t\t\tlet indexes = clipsForRecord.map(clip => clip.index);\r\n\t\t\tclipIndexes.indexes = indexes;\r\n\t\t\treturn clipIndexes;\r\n\t\t}\r\n\r\n\t\treturn clipIndexes;\r\n\t}\r\n\r\n\tpublic recordHasClips(recordId: number): boolean {\r\n\t\tlet clipsExist = this.recordClips(recordId);\r\n\t\tif (clipsExist !== null && clipsExist.indexes.length > 0) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventRecords.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventRecords.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventRecords.vue?vue&type=template&id=1b7d5e52&scoped=true\"\nimport script from \"./EventRecords.vue?vue&type=script&lang=ts\"\nexport * from \"./EventRecords.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventRecords.vue?vue&type=style&index=0&id=1b7d5e52&prod&scoped=true&lang=scss\"\nimport style1 from \"./EventRecords.vue?vue&type=style&index=1&id=1b7d5e52&prod&lang=scss\"\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 \"1b7d5e52\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserGroupInput.vue?vue&type=style&index=0&id=1164f70e&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoundIcon.vue?vue&type=style&index=0&id=8f4465b0&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{attrs:{\"id\":\"tasks\"}},[_c('a',{directives:[{name:\"shortkey\",rawName:\"v-shortkey\",value:({down: ['shift', 'a']}),expression:\"{down: ['shift', 'a']}\"}],staticClass:\"hidden\",on:{\"shortkey\":function($event){return _vm.focusOnIncompletedGroup()}}}),_c('vue-perfect-scrollbar',{staticStyle:{\"height\":\"100%\"}},[(!_vm.loadingActions)?_c('div',_vm._l((_vm.eventTasks),function(taskGroup){return _c('event-task-group',{key:taskGroup.title + taskGroup.index,ref:taskGroup.title + taskGroup.index,refInFor:true,attrs:{\"id\":taskGroup.title + taskGroup.index,\"task-group\":taskGroup,\"event-id\":_vm.eventId,\"data-cy\":\"event-task-group\"},on:{\"completed-task\":function($event){return _vm.focusOnIncompletedGroup()},\"focusTask\":_vm.focusTask,\"add-task\":function($event){return _vm.onSaveTask($event, false)}}})}),1):_c('div',{staticClass:\"text-center\"},[_c('i',{staticClass:\"fas fa-spinner fa-spin display-4 p-3\",attrs:{\"data-cy\":\"loading-spinner\"}})]),(!_vm.addingNewTaskToNewGroup)?_c('ul',{staticClass:\"list-group\"},[(_vm.canAddIndividualActions)?_c('li',{staticClass:\"list-group-item list-group-item-action d-flex justify-content-between align-items-center\",attrs:{\"data-cy\":\"AddNewTaskToNewGroup\"},on:{\"click\":function($event){return _vm.onAddNewTaskToNewGroup()}}},[_c('div',{staticClass:\"flex-grow-1\"},[_c('b',[_vm._v(\"Add action to new category\")])])]):_vm._e(),_c('li',{staticClass:\"list-group-item list-group-item-action d-flex justify-content-between align-items-center\",attrs:{\"data-cy\":\"add-library-action-modal\"},on:{\"click\":function($event){return _vm.onAddNewTaskToGroupFromLibrary()}}},[_c('div',{staticClass:\"flex-grow-1\"},[(_vm.canAddIndividualActions)?_c('b',[_vm._v(\"Add action from library\")]):_vm._e(),(!_vm.canAddIndividualActions)?_c('b',[_vm._v(\"Add action plan from library\")]):_vm._e()])]),(_vm.canOverrideActionPlans)?_c('li',{staticClass:\"list-group-item list-group-item-action d-flex justify-content-between align-items-center\",class:{ disabled: _vm.loadingActions},attrs:{\"data-cy\":\"override-action-plan-option\"},on:{\"click\":_vm.openActionPlansModal}},[_c('div',{staticClass:\"flex-grow-1\"},[_c('b',{attrs:{\"title\":\"Override existing Action Plan\"}},[_vm._v(\"Apply new Action Plan\")])])]):_vm._e()]):_vm._e(),(_vm.addingNewTaskToNewGroup)?_c('ul',{staticClass:\"list-group\",staticStyle:{\"margin-bottom\":\"10px\"}},[_c('li',{staticClass:\"list-group-item list-group-item-action d-flex justify-content-between align-items-center\"},[_c('div',{staticClass:\"flex-grow-1\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newTaskCategoryTitle),expression:\"newTaskCategoryTitle\"}],staticClass:\"form-control\",class:[\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tinvalid: _vm.isTaskCategoryTitleValid,\n\t\t\t\t\t\t\t\t\t'error-animated': _vm.showErrorAnimation\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t'form-control'\n\t\t\t\t\t\t\t],attrs:{\"placeholder\":\"Category\",\"type\":\"text\",\"maxlength\":\"250\"},domProps:{\"value\":(_vm.newTaskCategoryTitle)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newTaskCategoryTitle=$event.target.value}}})]),_c('div',{staticClass:\"flex-grow-0\"},[_c('div',{staticClass:\"btn-group\"},[_c('a',{staticClass:\"btn btn-secondary\",on:{\"click\":_vm.reset}},[_vm._v(\"Cancel\")])])])]),_c('li',{staticClass:\"list-group-item d-flex justify-content-between align-items-center\",staticStyle:{\"transition\":\"padding 0.3s\"}},[_c('add-new-event-task',{attrs:{\"task-category-title\":_vm.newTaskCategoryTitle,\"event-id\":_vm.eventId},on:{\"save\":function($event){return _vm.onSaveTask($event, true)},\"cancel\":_vm.reset}})],1)]):_vm._e()]),_c('b-modal',{ref:\"actionLibrary\",attrs:{\"id\":\"actionLibrary\",\"size\":\"lg\",\"centered\":\"\",\"role\":\"dialog\",\"title\":\"Action Library\"},on:{\"hidden\":_vm.onCancelAddNewTaskToGroupFromLibrary}},[_c('div',{staticClass:\"d-flex flex-column\",staticStyle:{\"height\":\"70vh\"},attrs:{\"data-cy\":\"action-library\"}},[_c('action-library-simple-list',{ref:\"actionLibraryList\",staticClass:\"flex-grow-1 flex-shrink-1\",attrs:{\"data-cy\":\"action-library-list\"}}),_c('div',{staticClass:\"flex-shrink-0\",staticStyle:{\"margin-top\":\"10px\",\"margin-left\":\"10px\"}},[_c('b-form-checkbox',{staticClass:\"mr-2\",attrs:{\"data-cy\":\"-library-tasks-required\"},model:{value:(_vm.isNewTaskRequired),callback:function ($$v) {_vm.isNewTaskRequired=$$v},expression:\"isNewTaskRequired\"}},[_vm._v(\"Required\")])],1)],1),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-secondary pull-right ksConfirm\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"add-actions-from-library-btn\"},on:{\"click\":_vm.onAddTasksToGroupFromLibrary}},[_c('span',[_vm._v(\"Add\")])]),_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"data-dismiss\":\"modal\",\"data-cy\":\"cancel-add-actions-from-library-btn\"},on:{\"click\":_vm.onCancelAddNewTaskToGroupFromLibrary}},[_c('span',[_vm._v(\"Cancel\")])])])],2),(_vm.canOverrideActionPlans)?_c('action-plans-override-modal',{attrs:{\"showModal\":_vm.showActionPlansModal,\"data-cy\":\"action-plans-override-modal\"},on:{\"closeModal\":_vm.closeActionPlansModal,\"actionPlanSelected\":_vm.onNewActionPlanSelected}}):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-grow-1\"},[_c('div',{staticClass:\"form-group\"},[_c('label',[_vm._v(\"Choose action type:\")]),_c('div',[_c('vue-select',{staticClass:\"dark\",attrs:{\"name\":\"task-type-select\",\"id\":\"task-type-select\",\"label\":\"title\",\"clearable\":false,\"placeholder\":'Select Action Type',\"options\":_vm.enabledActionTypes},model:{value:(_vm.selectedTaskType),callback:function ($$v) {_vm.selectedTaskType=$$v},expression:\"selectedTaskType\"}})],1)]),(_vm.newTask && _vm.newTask.taskTypeID)?_c('div',{staticClass:\"card shadow-sm p-3\"},[(_vm.newTask.taskTypeID === 6)?_c('div',{staticClass:\"flex-grow-1\"},[_c('notification-setup',{on:{\"validate-task\":_vm.onTaskValidated},model:{value:(_vm.newTask),callback:function ($$v) {_vm.newTask=$$v},expression:\"newTask\"}})],1):(_vm.newTask.taskTypeID === 7)?_c('div',{staticClass:\"flex-grow-1\"},[_c('choices-task-setup',{on:{\"validate-task\":_vm.onTaskValidated},model:{value:(_vm.newTask),callback:function ($$v) {_vm.newTask=$$v},expression:\"newTask\"}})],1):(_vm.newTask.taskTypeID === 8)?_c('div',{staticClass:\"flex-grow-1\"},[_c('call-contact-setup',{on:{\"validate-task\":_vm.onTaskValidated},model:{value:(_vm.newTask),callback:function ($$v) {_vm.newTask=$$v},expression:\"newTask\"}})],1):(_vm.newTask.taskTypeID === 13)?_c('div',{staticClass:\"flex-grow-1\"},[_c('control-task',{on:{\"validate-task\":_vm.onTaskValidated},model:{value:(_vm.newTask),callback:function ($$v) {_vm.newTask=$$v},expression:\"newTask\"}})],1):(_vm.newTask.taskTypeID === _vm.TaskTypeIdEnum.EventOutcome && _vm.eventOutcomeEnabled)?_c('div',{staticClass:\"flex-grow-1\"},[_c('event-outcome-task',{attrs:{\"editing\":\"\",\"task\":_vm.newTask},on:{\"validate-task\":_vm.onTaskValidated},model:{value:(_vm.newTask),callback:function ($$v) {_vm.newTask=$$v},expression:\"newTask\"}})],1):_c(_vm.taskToRender,{tag:\"component\",attrs:{\"editing\":true,\"task\":_vm.newTask},on:{\"validate-task\":_vm.onTaskValidated}})],1):_vm._e(),_c('div',{staticClass:\"custom-control custom-checkbox py-2\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newTask.required),expression:\"newTask.required\"}],staticClass:\"custom-checkbox custom-control-input\",attrs:{\"type\":\"checkbox\",\"id\":'customCheck' + _vm.createId},domProps:{\"checked\":Array.isArray(_vm.newTask.required)?_vm._i(_vm.newTask.required,null)>-1:(_vm.newTask.required)},on:{\"change\":function($event){var $$a=_vm.newTask.required,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.newTask, \"required\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.newTask, \"required\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.newTask, \"required\", $$c)}}}}),_c('label',{staticClass:\"custom-control-label\",attrs:{\"for\":'customCheck' + _vm.createId}},[_vm._v(\"Required\")])]),_c('div',[_c('div',{staticClass:\"btn-group\"},[_c('a',{staticClass:\"btn btn-primary\",class:{\n\t\t\t\t\tdisabled: !this.isValid\n\t\t\t\t},attrs:{\"data-cy\":\"add-action-btn\",\"disabled\":!this.isValid},on:{\"click\":function($event){return _vm.onSave()}}},[_vm._v(\"Add\")]),_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"data-cy\":\"cancel-add-action-btn\"},on:{\"click\":function($event){return _vm.onCancel()}}},[_vm._v(\"Cancel\")])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\timport { Component, Prop, Vue, Watch, Emit } from \"vue-property-decorator\";\n\timport UrlInputLine from \"@/components/UrlInputLine.vue\";\n\timport NotificationSetup from \"@/components/tasks/notification/NotificationSetup.vue\";\n\timport { EventTask } from \"@/store/tasks/types\";\n\timport ChoicesTaskSetup from \"@/components/tasks/choices/ChoicesTaskSetup.vue\";\n\timport CallContactSetup from \"@/components/tasks/call-contact/CallContactSetup.vue\";\n\timport { Getter, namespace } from \"vuex-class\";\n\timport { TaskType } from \"@/store/tasks/types\";\n\timport BasicTask from \"@/components/tasks/task-types/BasicTask.vue\";\n import RaiseToCasesTask from \"@/components/tasks/task-types/RaiseToCasesTask.vue\";\n\timport InputTask from \"@/components/tasks/task-types/InputTask.vue\";\n\timport YesNoTask from \"@/components/tasks/task-types/YesNoTask.vue\";\n\timport UrlTask from \"@/components/tasks/task-types/UrlTask.vue\";\n\timport SitRepTask from \"@/components/tasks/task-types/SitRepTask.vue\";\n\timport CCureTask from \"@/components/tasks/task-types/CCureTask.vue\";\n\timport AuditTask from \"@/components/tasks/task-types/AuditTask.vue\";\n\timport DynamicDataList from \"@/components/tasks/task-types/DynamicDataList.vue\"\n\timport EventOutcomeTask from \"@/components/tasks/task-types/EventOutcomeTask.vue\"\n\timport ControlTask from \"@/components/tasks/control/ControlSetup.vue\"\n\timport { FeaturesList } from \"@/store/types\";\n\timport { stringMixin } from \"@/mixins\";\n\n\timport { get } from \"lodash\";\n\timport VueSelect from \"vue-select\";\n\timport TaskTypeIds from '@/types/sv-data/enums/TaskTypeIds';\n\tconst { isNullOrWhitespace } = stringMixin.methods;\n\n\t// @techdebt @refactor break up into sub-components\n\tconst Tasks = namespace(\"tasks\");\n\tconst SiteMonitor = namespace(\"siteMonitor\");\n\n\t// component for adding new task to event\n\t@Component({\n\t\tcomponents: {\n\t\t\t\"url-input\": UrlInputLine,\n\t\t\t\"notification-setup\": NotificationSetup,\n\t\t\t\"basic-task\": BasicTask,\n\t\t\t\"input-task\": InputTask,\n\t\t\t\"yes-no-task\": YesNoTask,\n\t\t\t\"url-task\": UrlTask,\n\t\t\t\"sitrep-task\": SitRepTask,\n\t\t\t\"ccure-task\": CCureTask,\n\t\t\t\"audit-task\": AuditTask,\n\t\t\t\"choices-task-setup\": ChoicesTaskSetup,\n\t\t\t\"call-contact-setup\": CallContactSetup,\n\t\t\t\"vue-select\": VueSelect,\n\t\t\t\"dynamic-data-list\": DynamicDataList,\n\t\t\t\"event-outcome-task\" : EventOutcomeTask,\n\t\t\t\"control-task\": ControlTask,\n \"raise-to-cases-task\": RaiseToCasesTask,\n\t\t}\n\t})\n\texport default class AddNewEventTask extends Vue {\n\t\t@Tasks.Getter(\"getEnabledActionTypes\") enabledActionTypes: TaskType[];\n\t\t@Tasks.Getter(\"getTaskTypesByTitle\") taskTypesByTitle: string[];\n\n\t\t@SiteMonitor.Mutation setActivity;\n\n\t\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\n\t\t@Prop() public eventId: number;\n\t\t@Prop() public taskCategoryTitle: string;\n\n\t\tprivate newTask: EventTask = {\n\t\t\ttaskID: null,\n\t\t\ttaskTypeID: 1,\n\t\t\ttaskText: \"\",\n\t\t\ttaskData: null,\n\t\t\ttaskCategoryTitle: \"\",\n\t\t\teventTaskID: null,\n\t\t\teventID: this.eventId,\n\t\t\trequired: false,\n\t\t\tresult: null,\n\t\t\tisMine: false,\n\t\t\tcompleted: false\n\t\t};\n\n\t\tprivate TaskTypeIdEnum: typeof TaskTypeIds = TaskTypeIds;\n\n\t\tprivate createId: string = Math.random().toString();\n\t\tprivate selectedTaskType: any = null;\n\t\tprivate taskToRender: string = \"basic-task\";\n\t\tprivate isTaskValid: boolean = false;\n\n\t\tprivate get massNotificationEnabled() {\n\t\t\treturn get(this.featuresList, [\"Actions\", \"MassNotification\"], false);\n\t\t}\n\n\t\tprivate get choicesEnabled() {\n\t\t\treturn get(this.featuresList, [\"Actions\", \"Choices\"], false);\n\t\t}\n\n\t\tprivate get callContactsEnabled() {\n\t\t\treturn get(this.featuresList, [\"Actions\", \"CallContacts\"], false);\n\t\t}\n\n\t\tprivate get eventOutcomeEnabled(): boolean {\n\t\t\treturn get(this.featuresList, [\"Actions\", \"EventOutcome\"], false);\n\t\t}\n\n\t\t/**\n\t\t * Computed prop, handles validation of the action type.\n\t\t */\n\t\tpublic get isValid() {\n\t\t\tlet isValid = this.isTaskValid;\n\n\t\t\t// taskType defaults to basic\n\t\t\tif (!this.newTask.taskTypeID) {\n\t\t\t\tthis.newTask.taskTypeID = 1;\n\t\t\t}\n\n\t\t\treturn isValid;\n\t\t}\n\n\t\t/**\n\t\t * Handles the task type selection change.\n\t\t */\n\t\t@Watch(\"selectedTaskType\")\n\t\tpublic onTaskTypeChange(newTaskType: TaskType) {\n\t\t\tthis.setActivity();\n\t\t\tif (newTaskType === null || newTaskType === undefined) return;\n\n\t\t\t// Reset any content back to default\n\t\t\tthis.resetValue();\n\n\t\t\t// Reset the task type ID\n\t\t\tthis.newTask.taskTypeID = newTaskType.taskTypeID;\n\n\t\t\tthis.loadCorrectComponent();\n\t\t}\n\n\t\tpublic mounted() {\n\t\t\tthis.loadCorrectComponent();\n\n\t\t\tthis.selectedTaskType = this.enabledActionTypes.find(\n\t\t\t\ttaskType => taskType.taskTypeID == 1\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Resets the value of newTask back to default.\n\t\t */\n\t\tpublic resetValue() {\n\t\t\tthis.newTask = {\n\t\t\t\ttaskID: null,\n\t\t\t\ttaskTypeID: 1,\n\t\t\t\ttaskText: \"\",\n\t\t\t\ttaskData: null,\n\t\t\t\ttaskCategoryTitle: \"\",\n\t\t\t\teventTaskID: null,\n\t\t\t\teventID: this.eventId,\n\t\t\t\trequired: false,\n\t\t\t\tresult: null,\n\t\t\t\tisMine: false,\n\t\t\t\tcompleted: false\n\t\t\t};\n\t\t}\n\n\t\tpublic loadCorrectComponent() {\n\t\t\tlet task = this.enabledActionTypes.find(\n\t\t\t\t(taskType: TaskType) =>\n\t\t\t\t\ttaskType.taskTypeID === this.newTask.taskTypeID &&\n\t\t\t\t\ttaskType.componentFile !== null\n\t\t\t);\n\n\t\t\t// Avoid property undefined errors if a task was not returned.\n\t\t\tif (task !== undefined) {\n\t\t\t\tthis.taskToRender = task.componentFile;\n\t\t\t}\n\t\t}\n\n\t\t// Called when a task component verifies that it is valid.\n\t\tpublic onTaskValidated(valid: boolean) {\n\t\t\tthis.isTaskValid = valid;\n\t\t}\n\n\t\t/**\n\t\t * Performs a validation check and, if vaild, emits a save event.\n\t\t */\n\t\tpublic onSave() {\n\t\t\tif (this.isValid && !isNullOrWhitespace(this.taskCategoryTitle)) {\n\t\t\t\tthis.newTask.taskCategoryTitle = this.taskCategoryTitle;\n\t\t\t\tthis.$emit(\"save\", this.newTask);\n\t\t\t\tthis.resetValue();\n\t\t\t}\n\t\t}\n\n\t\t@Watch(\"newTask\", { deep: true })\n\t\tprivate onNewTaskUpdated() {\n\t\t\tthis.setActivity();\n\t\t}\n\n\t\t@Emit(\"cancel\")\n\t\tpublic onCancel() {}\n\t}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewEventTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AddNewEventTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AddNewEventTask.vue?vue&type=template&id=586b09ce&scoped=true\"\nimport script from \"./AddNewEventTask.vue?vue&type=script&lang=ts\"\nexport * from \"./AddNewEventTask.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AddNewEventTask.vue?vue&type=style&index=0&id=586b09ce&prod&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 \"586b09ce\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"multipleAssignControl\",attrs:{\"id\":\"multipleAssignControl\",\"role\":\"dialog\",\"size\":\"sm\",\"centered\":\"\"},on:{\"hidden\":_vm.onCloseEventHandler}},[_c('template',{slot:\"modal-header\"},[_c('div',[_c('h4',[_vm._v(\"Assign user\")])])]),_c('vue-select',{staticClass:\"dark\",attrs:{\"options\":_vm.usersToAssign,\"label\":\"name\"},model:{value:(_vm.assignedUser),callback:function ($$v) {_vm.assignedUser=$$v},expression:\"assignedUser\"}}),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-secondary pull-right ksConfirm\",attrs:{\"data-dismiss\":\"modal\"},on:{\"click\":_vm.onAssign}},[_c('span',[_vm._v(\"Assign\")])]),_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"data-dismiss\":\"modal\"},on:{\"click\":_vm.hideModal}},[_c('span',[_vm._v(\"Close\")])])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Watch, Vue, Emit } from \"vue-property-decorator\";\nimport vSelect from \"vue-select\";\n@Component({\n\tcomponents: {\n\t\t\"vue-select\": vSelect\n\t}\n})\nexport default class MultipleAssignToAction extends Vue {\n\t$refs!: {\n\t\tmultipleAssignControl: any;\n\t};\n\n\t@Prop(Boolean)\n\tisControlVisible: boolean;\n\n\t@Prop(String)\n\tgroupTitle: string;\n\n\t@Prop({\n\t\tdefault: () => []\n\t})\n\tusersToAssign: any[];\n\n\t@Watch(\"isControlVisible\")\n\tonEventDetailsShownChanged(value: boolean) {\n\t\tif (value) {\n\t\t\tthis.$refs.multipleAssignControl.show();\n\t\t} else {\n\t\t\tthis.$refs.multipleAssignControl.hide();\n\t\t}\n\t}\n\n\tpublic assignedUser = null;\n\n\t@Emit(\"selectUser\")\n\tpublic onAssign() {\n\t\tthis.hideModal();\n\t\treturn {\n\t\t\t...this.assignedUser,\n\t\t\tgroupTitle: this.groupTitle\n\t\t};\n\t}\n\n\tpublic hideModal() {\n\t\tthis.$refs.multipleAssignControl.hide();\n\t}\n\n\t@Emit(\"hide\")\n\tpublic onCloseEventHandler() {}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleAssignToAction.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MultipleAssignToAction.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./MultipleAssignToAction.vue?vue&type=template&id=328eaeb9\"\nimport script from \"./MultipleAssignToAction.vue?vue&type=script&lang=ts\"\nexport * from \"./MultipleAssignToAction.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"task-collection-main-header\"},[(_vm.taskCategories.length == 0)?_c('div',{staticClass:\"text-center\"},[_vm._v(\"No actions found in action library\")]):_vm._e(),_c('div',{staticClass:\"form-group d-flex note-control\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.filter),expression:\"filter\"}],staticClass:\"form-control flex-grow-1 flex-shrink-1\",attrs:{\"type\":\"text\",\"placeholder\":\"Search actions\"},domProps:{\"value\":(_vm.filter)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.filter=$event.target.value}}})]),_c('vue-perfect-scrollbar',{staticClass:\"border border-faint rounded p-2\"},_vm._l((_vm.taskCategoriesWithTasks),function(taskCategory,index){return _c('div',{key:index,attrs:{\"data-cy\":\"actions-library-list\"}},[_c('div',{staticClass:\"card card-secondary card-category m-b-10 action-category\"},[_c('div',{staticClass:\"card-header d-flex align-items-center task-category-title\"},[_c('b-form-checkbox',{staticClass:\"mr-2\",attrs:{\"data-cy-group\":\"check-all-in-category\",\"data-cy\":(\"check-all-in-category-\" + (taskCategory.taskCategoryID))},on:{\"change\":function($event){return _vm.selectCategory(taskCategory)}},model:{value:(taskCategory.selected),callback:function ($$v) {_vm.$set(taskCategory, \"selected\", $$v)},expression:\"taskCategory.selected\"}}),_c('div',{staticClass:\"flex-grow-1 align-items-center\"},[_c('h6',{staticClass:\"mb-0\"},[_vm._v(_vm._s(taskCategory.title))]),_c('span',[_vm._v(\"(\"+_vm._s(_vm.filteredTasks(taskCategory, taskCategory.tasks).length)+\")\")])])],1),(_vm.canAddIndividualActions)?_c('div',{ref:\"task-library-container\",refInFor:true,staticClass:\"task-library-container no-padding card-body\"},[_c('transition-group',{staticClass:\"list-group\",attrs:{\"type\":\"transition\",\"tag\":\"ul\",\"data-cy\":\"category-actions-list\"}},_vm._l((_vm.filteredTasks(taskCategory, taskCategory.tasks)),function(task){return _c('li',{key:task.taskID,staticClass:\"list-group-item d-flex\"},[_c('div',{staticClass:\"list-group-item-body task-item\"},[_c('b-form-checkbox',{staticClass:\"mr-2\",attrs:{\"data-cy-group\":\"check-task\",\"data-cy\":(\"check-task-\" + (task.taskID))},model:{value:(task.selected),callback:function ($$v) {_vm.$set(task, \"selected\", $$v)},expression:\"task.selected\"}}),_c('span',{staticClass:\"task-type-label\"},[_vm._v(_vm._s(_vm.taskTypesByTitle[task.taskTypeID] || 'Unknown'))]),_c('span',{staticClass:\"task-title\"},[_vm._v(_vm._s(_vm._f(\"parseTaskText\")(task)))])],1)])}),0)],1):_vm._e()])])}),0)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Watch, Vue, Prop } from \"vue-property-decorator\";\nimport { namespace, Getter } from \"vuex-class\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport { UserPermissions } from \"@/store/types\";\nimport { parseTaskText } from \"@/filters\";\nimport { stringMixin } from \"@/mixins\";\n\nconst Tasks = namespace(\"tasks\");\n\nconst { isNullOrWhitespace } = stringMixin.methods;\n\n@Component({\n\tcomponents: {\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar\n\t},\n\tfilters: {\n\t\tparseTaskText\n\t}\n})\nexport default class ActionLibrarySimpleList extends Vue {\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\n\t@Getter(\"getCanAddIndividualActionsOverride\")\n\tcanAddIndividualActionsOverride: boolean;\n\n\t@Tasks.Getter(\"getTaskLibrary\") taskLibrary: any;\n\t@Tasks.Getter(\"getTaskCategories\") taskCategories: any;\n\t@Tasks.Getter(\"getTaskLibraryByCategoryID\") taskLibraryByCategoryID: any;\n\t@Tasks.Getter(\"getTaskTypes\") taskTypes: any;\n\t@Tasks.Getter(\"getSelectedActions\") selectedActions: any;\n\t@Tasks.Getter(\"getTaskTypesByTitle\") taskTypesByTitle: any;\n\t@Tasks.Getter toggleActionListModal: any;\n\n\t@Tasks.Mutation resetTasksSelected: () => void;\n\t@Tasks.Mutation setCategorySelected: ({ categoryId, selected }) => void;\n\t@Tasks.Mutation setActionSelected: ({\n\t\tcategoryId,\n\t\ttaskId,\n\t\tselected\n\t}) => void;\n\n\t@Tasks.Action fetchActionLibrary: any;\n\t@Tasks.Action fetchTaskCategories: any;\n\n\tpublic filter: string = \"\";\n\tpublic actionsInActionPlansByCategory: any = {};\n\tpublic selected: any = {};\n\tpublic selectedCategories: string[] = [];\n\n\tpublic get canAddIndividualActions() {\n\t\treturn this.canAddIndividualActionsOverride\n\t\t\t? true\n\t\t\t: this.permissions.canAddIndividualActions;\n\t}\n\n\tpublic get filterLowerCase() {\n\t\treturn this.filter.toLowerCase();\n\t}\n\n\tpublic get taskCategoriesWithTasks() {\n\t\tif (this.canAddIndividualActions) {\n\t\t\treturn this.taskCategories.filter(\n\t\t\t\t(category: any) =>\n\t\t\t\t\tthis.filteredTasks(category, category.tasks).length > 0\n\t\t\t);\n\t\t} else {\n\t\t\tif (isNullOrWhitespace(this.filter)) {\n\t\t\t\treturn this.taskCategories;\n\t\t\t} else {\n\t\t\t\treturn this.taskCategories.filter(this.categoryInFilter);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic categoryInFilter(category: any) {\n\t\treturn (\n\t\t\tthis.filter !== null &&\n\t\t\tthis.filter.length > 0 &&\n\t\t\tcategory.tasks.length > 0 &&\n\t\t\tcategory.title.toLowerCase().indexOf(this.filterLowerCase) > -1\n\t\t);\n\t}\n\n\tpublic filteredTasks(category: any, taskList: any[]) {\n\t\tif (isNullOrWhitespace(this.filter)) return taskList;\n\t\tif (this.categoryInFilter(category)) return taskList;\n\n\t\treturn taskList.filter((task: any) => {\n\t\t\treturn (\n\t\t\t\t(task.taskText\n\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t.indexOf(this.filterLowerCase)) > -1\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic selectCategory(category: any) {\n\t\tif (!category) {\n\t\t\treturn;\n\t\t}\n\t\t\n\t\tconst categoryPrevState = { ...category };\n\n\t\tthis.setCategorySelected({\n\t\t\tcategoryId: category.taskCategoryID,\n\t\t\tselected: categoryPrevState.selected\n\t\t});\n\n\t\tthis.filteredTasks(category, category.tasks).forEach((action: any) => {\n\t\t\tthis.setActionSelected({\n\t\t\t\tcategoryId: category.taskCategoryID,\n\t\t\t\ttaskId: action.taskID,\n\t\t\t\tselected: categoryPrevState.selected\n\t\t\t});\n\t\t});\n\t}\n\n\t@Watch(\"toggleActionListModal\", { immediate: true })\n\tpublic onModalVisibilityChange() {\n\t\tthis.resetTasksSelected();\n\t}\n\n\tpublic async created() {\n\t\tawait this.fetchActionLibrary();\n\t\tawait this.fetchTaskCategories();\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionLibrarySimpleList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionLibrarySimpleList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ActionLibrarySimpleList.vue?vue&type=template&id=77c293af&scoped=true\"\nimport script from \"./ActionLibrarySimpleList.vue?vue&type=script&lang=ts\"\nexport * from \"./ActionLibrarySimpleList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ActionLibrarySimpleList.vue?vue&type=style&index=0&id=77c293af&prod&lang=scss&scoped=true\"\nimport style1 from \"./ActionLibrarySimpleList.vue?vue&type=style&index=1&id=77c293af&prod&lang=scss\"\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 \"77c293af\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"event-task-group\",attrs:{\"tabindex\":\"0\"}},[_c('transition-group',{staticClass:\"list-group\",staticStyle:{\"margin-bottom\":\"10px\"},attrs:{\"tag\":\"ul\",\"name\":\"event-action-group-transition\",\"enter-active-class\":\"fadeInRight animated-fast\",\"leave-active-class\":\"fadeOutRight animated-fast\"}},[_c('li',{key:'header',staticClass:\"list-group-item d-flex justify-content-between align-items-center\",class:{ active: _vm.hasActiveTasks }},[_c('div',{staticClass:\"flex-grow-1\"},[_c('b',[_vm._v(\" \"+_vm._s(_vm.taskGroup.title)+\" (\"+_vm._s(_vm.completedTasks.length)+\"/\"+_vm._s(_vm.taskGroup.tasks.length)+\") \")])]),(_vm.hasActiveTasks)?_c('div',[_c('b-dropdown',{attrs:{\"title\":\"Assign All\",\"variant\":\"link\",\"toggle-class\":\"btn-assign fas fa-user userFocus\",\"right\":\"\",\"no-caret\":\"\"}},[_c('b-dropdown-group',_vm._l((_vm.eventShares),function(share){return _c('b-dropdown-item-button',{key:share.EventUserID,staticClass:\"list-group-item list-group-item-action no-uppercase\",staticStyle:{\"padding\":\"5px 10px\"},on:{\"click\":function($event){return _vm.onAssignAllTasks(_vm.taskGroup.title, share.eventUserID)}}},[_c('div',{staticClass:\"circle small\",class:'user-' + share.colorIndex,attrs:{\"title\":share.name}},[_vm._v(_vm._s(share.initials))]),_vm._v(\" \"+_vm._s(share.name)+\" \")])}),1)],1)],1):_vm._e(),(_vm.canAddIndividualActions)?_c('div',{staticClass:\"flex-grow-0\",attrs:{\"id\":\"add-action\"}},[_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"title\":'Add action to ' + _vm.taskGroup.title},on:{\"click\":function($event){_vm.addingNewTask = !_vm.addingNewTask}}},[_vm._v(\"+\")])]):_vm._e()]),(_vm.completedTasks.length > 0 && _vm.canCollapseCompletedTasks)?_c('li',{key:\"-1\",staticClass:\"list-group-item d-flex justify-content-between align-items-center completed-list-item\",staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){_vm.showCompletedTasks = !_vm.showCompletedTasks}}},[_c('span',[_vm._v(_vm._s(_vm.completedTasks.length)+\" completed tasks\")]),_c('div',{staticClass:\"ml-3 mr-auto\"},[_c('i',{staticClass:\"fa text-primary\",class:_vm.showCompletedTasks ? 'fa-chevron-circle-up' : 'fa-chevron-circle-down'})]),(!_vm.showCompletedTasks)?_c('div',{staticClass:\"ml-auto mr-3\"},[_c('i',{staticClass:\"fa fa-check-circle text-success\"})]):_vm._e()]):_vm._e(),_vm._l((_vm.visibleTasks),function(task){return _c('li',{key:task.eventTaskID,ref:'eventTask-' + task.eventTaskID,refInFor:true,staticClass:\"list-group-item d-flex justify-content-between align-items-center transition-padding\",class:{ disabled: !task.isMine, 'bg-danger muted-color text-white': task.required && !task.completed, 'py-3 px-3': !task.completed, 'py-2 px-3': task.completed },attrs:{\"id\":'eventTask-' + task.eventTaskID,\"tabindex\":\"0\"},on:{\"focus\":function($event){return _vm.focusTask(task.eventTaskID)}}},[_c('complete-task-line',{attrs:{\"task\":task,\"eventShares\":_vm.eventShares},on:{\"assign-task-to-user\":_vm.onAssignTaskToUser,\"complete-task\":_vm.onCompleteTask,\"completed-task-now-close-event\":_vm.onTaskCloseEvent}})],1)}),(_vm.addingNewTask)?_c('li',{key:'add',staticClass:\"list-group-item d-flex justify-content-between align-items-center\"},[_c('add-new-event-task',{attrs:{\"task-category-title\":_vm.taskGroup.title,\"event-id\":_vm.eventId},on:{\"save\":function($event){return _vm.onAddTask($event)},\"cancel\":_vm.onCancelAddingTask}})],1):_vm._e()],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"complete-task-line-container py-2 align-items-center\"},[_c('div',{staticClass:\"task-line-content\"},[(_vm.task.taskTypeID === 6 && !_vm.task.isNew && _vm.massNotificationEnabled)?_c('div',{staticClass:\"task-line-content\"},[(!_vm.task.completed)?_c('div',[_c('notification-task',{attrs:{\"taskText\":_vm.task.taskText,\"taskData\":_vm.task.taskData},on:{\"complete\":function($event){return _vm.onCompleteTask()},\"result-changed\":function($event){_vm.task.result = $event}}})],1):_c('div',[_vm._v(\" Completed. \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.task.result || \"Notification sent.\")+\" \")])]):(_vm.task.taskTypeID === 7 && !_vm.task.isNew && _vm.choicesEnabled)?_c('div',{staticClass:\"task-line-content\"},[(!_vm.task.completed)?_c('div',[_c('choice-task',{attrs:{\"task\":_vm.task},on:{\"complete\":function($event){return _vm.onCompleteTask()},\"result-changed\":function($event){_vm.task.result = $event}}})],1):_c('div',[_vm._v(\" Completed. \"),_c('br'),_vm._v(\" \"+_vm._s(((_vm.task.taskText) + \": \" + (_vm.task.result)))+\" \")])]):(_vm.task.taskTypeID === 8 && !_vm.task.isNew && _vm.callContactsEnabled)?_c('div',{staticClass:\"task-line-content\"},[(!_vm.task.completed)?_c('div',[_c('call-contact-task',{attrs:{\"eventTaskID\":_vm.task.eventTaskID,\"task\":_vm.task},on:{\"complete\":function($event){return _vm.onCompleteTask()},\"result-changed\":function($event){_vm.task.result = $event}}})],1):_c('div',[_vm._v(\" Completed. \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.task.result || \"User was called\")+\" \")])]):(_vm.task.taskTypeID === 13 && !_vm.task.isNew && _vm.controlsEnabled)?_c('div',{staticClass:\"task-line-content\"},[(!_vm.task.completed)?_c('div',[_c('control-task',{attrs:{\"eventTaskID\":_vm.task.eventTaskID,\"task\":_vm.task},on:{\"complete\":function($event){return _vm.onCompleteTask()},\"result-changed\":function($event){_vm.task.result = $event}}})],1):_c('div',[_vm._v(\" Completed. \")])]):(_vm.taskHasComponent && !_vm.task.isNew)?_c(_vm.taskToRender,{tag:\"component\",attrs:{\"editing\":false,\"task\":_vm.task},on:{\"complete-task\":_vm.passTask,\"completed-task-now-close-event\":_vm.passTaskEventClosure}}):_vm._e()],1),_c('div',{staticClass:\"task-line-toolbar align-items-center\"},[_c('transition',{attrs:{\"enter-active-class\":\"animated heartBeat\",\"leave-active-class\":\"animated fadeOut\"}},[(_vm.task.completed)?_c('div',{staticClass:\"float-left\"},[_c('i',{staticClass:\"fa fa-check-circle complete-circle\",attrs:{\"title\":\"This task is complete\"}})]):_vm._e()]),(_vm.task.completed && _vm.task.taskTypeID != 14)?_c('div',{staticClass:\"reopen-task\"},[_c('SVButton',{staticClass:\"btn btn-link fas fa-undo\",attrs:{\"type\":\"a\",\"href\":\"javascript:void(0)\",\"title\":\"Re-open task\"},on:{\"click\":function($event){return _vm.onReOpenTask()}}})],1):_vm._e(),((_vm.task.assignedToEventUser == null || _vm.task.isMine || _vm.isController) && !_vm.task.completed)?_c('div',{staticClass:\"assign-task\"},[_c('b-dropdown',{attrs:{\"variant\":\"link\",\"right\":\"\",\"no-caret\":\"\",\"toggle-class\":\"text-white fas fa-user\",\"title\":\"Assign\"}},[(_vm.task.assignedToEventUser != null)?_c('b-dropdown-item-btn',{staticClass:\"list-group-item list-group-item-action text-left\",on:{\"click\":function($event){return _vm.onAssignTaskToUser(_vm.task.eventTaskID)}}},[_vm._v(\"Unassign\")]):_vm._e(),_vm._l((_vm.unremovedEventShares),function(share){return _c('b-dropdown-item-btn',{key:share.EventUserID,staticClass:\"list-group-item list-group-item-action text-left\",on:{\"click\":function($event){return _vm.onAssignTaskToUser(_vm.task.eventTaskID, share.eventUserID)}}},[_c('div',{staticClass:\"circle small\",class:'user-' + share.colorIndex,attrs:{\"title\":share.name}},[_c('span',[_vm._v(_vm._s(share.initials))])]),_vm._v(\" \"+_vm._s(share.name)+\" \")])})],2)],1):_vm._e(),(_vm.task.assignedToEventUser != null && !_vm.task.completed)?_c('div',{staticClass:\"circle task-assignees\",class:'user-' + _vm.task.assignedToEventUser.colorIndex,attrs:{\"title\":'Assigned to ' + _vm.task.assignedToEventUser.name}},[_c('span',[_vm._v(_vm._s(_vm.task.assignedToEventUser.initials))])]):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-grow-1 form-group\"},[(!_vm.showAdvanced)?_c('div',[_c('li',{class:[\n\t\t\t\t'list-group-item',\n\t\t\t\t'list-group-item-action',\n\t\t\t\t'd-flex',\n\t\t\t\t'justify-content-between',\n\t\t\t\t'align-items-center',\n\t\t\t\t{\n\t\t\t\t\tdisabled: _vm.isSending\n\t\t\t\t}\n\t\t\t],attrs:{\"id\":\"sendNotification\"},on:{\"click\":function($event){return _vm.sendNotification()}}},[_c('div',{staticClass:\"flex-grow-1 text-left\"},[_c('span',[_vm._v(\"Send notification using \\\"\"+_vm._s(_vm.template.title)+\"\\\" template\")]),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isSending),expression:\"isSending\"}],staticClass:\"fas fa-spinner fa-spin m-l-10\"})])]),_c('li',{staticClass:\"list-group-item list-group-item-action d-flex justify-content-between align-items-center\",attrs:{\"id\":\"advancedOptionsOpen\"},on:{\"click\":function($event){_vm.showAdvanced = true}}},[_vm._m(0)])]):_c('div',[_c('div',{staticClass:\"card card-secondary row p-5\"},[_c('div',{staticClass:\"card-header\"},[_vm._v(\" Recipients \"),_c('span',{class:[\n\t\t\t\t\t\t'span-link',\n\t\t\t\t\t\t'badge',\n\t\t\t\t\t\t'badge-pill',\n\t\t\t\t\t\t'dark-background',\n\t\t\t\t\t\t'float-right',\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t'badge-success': !_vm.showUserSearch,\n\t\t\t\t\t\t\t'badge-danger': _vm.showUserSearch\n\t\t\t\t\t\t}\n\t\t\t\t\t],attrs:{\"id\":\"addUser\",\"title\":_vm.showUserSearch ? 'Cancel adding new recipient' : 'Add new recipient'},on:{\"click\":function($event){_vm.showUserSearch = !_vm.showUserSearch}}},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showUserSearch),expression:\"!showUserSearch\"}],staticClass:\"fas fa-plus fa-sm\"}),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUserSearch),expression:\"showUserSearch\"}],staticClass:\"fas fa-ban fa-sm\"})])]),_c('div',{staticClass:\"card-body no-padding\"},[_c('VuePerfectScrollbar',{staticClass:\"shared-list\"},[_c('div',{staticClass:\"list-group\"},_vm._l((_vm.totalUsers),function(user,i){return _c('div',{key:i,staticClass:\"list-group-item\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('div',{staticClass:\"flex-grow-1\"},[_vm._v(\" \"+_vm._s(user.name + (user.default ? \" (From Template)\" : \"\"))+\" \")]),_c('div',[_c('span',{staticClass:\"span-link badge badge-pill dark-background badge-danger\",attrs:{\"title\":\"Remove\",\"id\":\"removeShare\"},on:{\"click\":function($event){return _vm.removeUser(user.userID)}}},[_c('span',{staticClass:\"fas fa-times fa-sm\"})])])])])}),0)])],1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showUserSearch),expression:\"showUserSearch\"}],staticClass:\"row p-5\"},[_c('multiselect',{attrs:{\"id\":\"sharePersonSelect\",\"track-by\":\"userID\",\"label\":\"name\",\"placeholder\":\"Type to search\",\"openDirection\":\"below\",\"options\":_vm.searchedUsers,\"searchable\":true,\"allow-empty\":true,\"loading\":_vm.isSearching,\"internal-search\":false,\"multiple\":true,\"hideSelected\":true,\"showNoResults\":false,\"clear-on-select\":true,\"selectLabel\":\"\",\"deselectLabel\":\"\",\"selectedLabel\":\"\"},on:{\"search-change\":_vm.eventShareFind},scopedSlots:_vm._u([{key:\"singleLabel\",fn:function(ref){\n\t\t\t\t\tvar option = ref.option;\nreturn [_c('span',[_vm._v(_vm._s(option.name))])]}}]),model:{value:(_vm.selectedUsers),callback:function ($$v) {_vm.selectedUsers=$$v},expression:\"selectedUsers\"}},[_c('template',{slot:\"noOptions\"},[_c('span',[_vm._v(\"Search for a person\")])])],2)],1),_c('div',{staticClass:\"row p-5 form-group p-t-25\"},[_c('label',{attrs:{\"for\":\"inputSubject\"}},[_vm._v(\"Subject\")]),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.template.subject),expression:\"template.subject\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"inputSubject\"},domProps:{\"value\":(_vm.template.subject)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.template, \"subject\", $event.target.value)}}})]),_c('div',{staticClass:\"row p-5 form-group\"},[_c('label',{attrs:{\"for\":\"inputMessage\"}},[_vm._v(\"Message\")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.template.message),expression:\"template.message\"}],staticClass:\"form-control\",attrs:{\"type\":\"text\",\"id\":\"inputMessage\",\"rows\":\"5\"},domProps:{\"value\":(_vm.template.message)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.template, \"message\", $event.target.value)}}})]),_c('div',{staticClass:\"row p-5 form-group\"},[_c('a',{class:[\n\t\t\t\t\t'btn',\n\t\t\t\t\t'btn-primary',\n\t\t\t\t\t'm-r-20',\n\t\t\t\t\t{\n\t\t\t\t\t\tdisabled: _vm.isSending\n\t\t\t\t\t}\n\t\t\t\t],attrs:{\"id\":\"advancedSendNotification\",\"disabled\":_vm.isSending},on:{\"click\":function($event){return _vm.sendNotification()}}},[_vm._v(\" Send \"),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isSending),expression:\"isSending\"}],staticClass:\"fas fa-spinner fa-spin m-l-10\",attrs:{\"id\":\"advancedSendingSpinner\"}})]),_c('a',{staticClass:\"btn btn-secondary\",attrs:{\"id\":\"advancedHide\"},on:{\"click\":function($event){_vm.showAdvanced = false}}},[_vm._v(\"Hide\")])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$v.template.subject.$error),expression:\"$v.template.subject.$error\"}],staticClass:\"row fadeInDown animated\"},[_vm._m(1)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$v.template.message.$error),expression:\"$v.template.message.$error\"}],staticClass:\"row fadeInDown animated\"},[_vm._m(2)]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$v.totalUsers.$error),expression:\"$v.totalUsers.$error\"}],staticClass:\"row fadeInDown animated\"},[_vm._m(3)])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-grow-1 text-left\"},[_c('span',[_vm._v(\"Show advanced options\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\"Subject Required\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\"Message Body Required\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_c('sub',{staticClass:\"small text-danger\"},[_vm._v(\"You must have at least 1 recipient\")])])}]\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { ShareWithPerson, EventDetails } from \"@/store/site-monitor/types\";\r\nimport { DeviceService } from \"@sureview/camera\";\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport Multiselect from \"vue-multiselect\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required, minLength } from \"vuelidate/lib/validators\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\nimport api from \"@/services/api.service\";\r\nimport { DeviceDetails } from \"@/store/devices/types\";\r\n\r\nconst Tasks = namespace(\"tasks\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst SessionStore = namespace(\"sessions\");\r\nconst Devices = namespace(\"devices\");\r\n\r\nconst { displayDateFromISOString } = formatDateMixin.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tmultiselect: Multiselect,\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar\r\n\t},\r\n\tmixins: [validationMixin],\r\n\tvalidations: {\r\n\t\ttemplate: {\r\n\t\t\tsubject: {\r\n\t\t\t\trequired\r\n\t\t\t},\r\n\t\t\tmessage: {\r\n\t\t\t\trequired\r\n\t\t\t}\r\n\t\t},\r\n\t\ttotalUsers: {\r\n\t\t\trequired,\r\n\t\t\tminLength: minLength(1)\r\n\t\t\t// name: {\r\n\t\t\t// \trequired\r\n\t\t\t// },\r\n\t\t\t// email: {\r\n\t\t\t// \trequired\r\n\t\t\t// },\r\n\t\t\t// telephone: {\r\n\t\t\t// \trequired\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n})\r\nexport default class NotificationTask extends Vue {\r\n\t@SessionStore.Getter getSession: any;\r\n\t@SessionStore.Action updateSession: any;\r\n\t@SiteMonitor.Action eventShareSearch: any;\r\n\t@SiteMonitor.Action createAuditRecord: any;\r\n\t@SiteMonitor.Getter shareWithPersons: ShareWithPerson[];\r\n\t@SiteMonitor.Getter(\"getEventDetails\") eventDetails: EventDetails;\r\n\t@Devices.State(\"device\") private deviceFromStore: DeviceDetails;\r\n\t@Tasks.Action fetchTemplateDetails: any;\r\n\r\n\t@Prop(String) taskText: string;\r\n\t@Prop(Object) taskData: object;\r\n\t@Prop(String) result: string;\r\n\r\n\tpublic isSearching: boolean = false;\r\n\tpublic isSending: boolean = false;\r\n\tpublic showAdvanced: boolean = false;\r\n\tpublic showUserSearch: boolean = false;\r\n\tpublic selectedUsers: any[] = [];\r\n\tpublic serverId: number = null;\r\n\tpublic templateId: number = null;\r\n\tpublic notificationName: string = null;\r\n\tpublic template: any = {};\r\n\tpublic templateUsers: any[] = [];\r\n\r\n\tget totalUsers() {\r\n\t\treturn this.templateUsers.concat(this.selectedUsers);\r\n\t}\r\n\r\n\tget searchedUsers() {\r\n\t\treturn this.shareWithPersons.filter(x => !this.templateUsers.map(y => y.userID).includes(x.userID));\r\n\t}\r\n\r\n\tasync eventShareFind(query: any) {\r\n\t\tthis.isSearching = true;\r\n\t\ttry {\r\n\t\t\tawait this.eventShareSearch(query);\r\n\t\t\tthis.isSearching = false;\r\n\t\t} catch (e) {\r\n\t\t\tthis.isSearching = false;\r\n\t\t}\r\n\t}\r\n\r\n\tremoveUser(userId: number) {\r\n\t\tthis.templateUsers = this.templateUsers.filter(x => x.userID !== userId);\r\n\t\tthis.selectedUsers = this.selectedUsers.filter(x => x.userID !== userId);\r\n\t}\r\n\r\n\treplaceKeywords(message: string) {\r\n\t\treturn message\r\n\t\t\t.replace(\"{SiteName}\", this.eventDetails.siteTitle)\r\n\t\t\t.replace(\"{EventName}\", this.eventDetails.eventTitle)\r\n\t\t\t.replace(\"{EventTime}\", displayDateFromISOString(this.eventDetails.created))\r\n\t\t\t.replace(\"{EventID}\", this.eventDetails.eventID.toString());\r\n\t}\r\n\r\n\tasync sendNotification() {\r\n\t\tthis.$v.$reset();\r\n\t\tthis.$v.$touch();\r\n\r\n\t\tif (!this.isSending && !this.$v.template.$error && !this.$v.totalUsers.$error) {\r\n\t\t\tthis.isSending = true;\r\n\t\t\tlet deviceService = new DeviceService(api.getDeviceServiceAddress(), this.eventDetails?.devicesEndpoint);\r\n\t\t\tlet authSessionID = this.getSession(SessionResource.DeviceServiceSession);\r\n\t\t\tlet recipients = [];\r\n\r\n\t\t\tthis.totalUsers.forEach((user: any) => {\r\n\t\t\t\trecipients.push({\r\n\t\t\t\t\tFullname: user.name,\r\n\t\t\t\t\tExternalID: user.externalID,\r\n\t\t\t\t\tEmail: user.email,\r\n\t\t\t\t\tTelephone: user.telephone\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tconst message = {\r\n\t\t\t\tContent: this.replaceKeywords(this.template.message),\r\n\t\t\t\tSubject: this.replaceKeywords(this.template.subject),\r\n\t\t\t\tParameters: this.template.parameters\r\n\t\t\t};\r\n\r\n\t\t\ttry {\r\n\t\t\t\tawait this.createAuditRecord({\r\n\t\t\t\t\teventId: this.eventDetails.eventID,\r\n\t\t\t\t\teventRecordTypeId: 41,\r\n\t\t\t\t\tdetails: `Sending notification to Server with ID ${this.serverId}`\r\n\t\t\t\t});\r\n\r\n\t\t\t\tawait deviceService.sendNotification(authSessionID, this.serverId, recipients, message);\r\n\r\n\t\t\t\tthis.$emit(\"complete\");\r\n\r\n\t\t\t\tawait this.createAuditRecord({\r\n\t\t\t\t\teventId: this.eventDetails.eventID,\r\n\t\t\t\t\teventRecordTypeId: 41,\r\n\t\t\t\t\tdetails: `Completed sending notification to Server with ID ${this.serverId}`\r\n\t\t\t\t});\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.error(error);\r\n\t\t\t\talert(\"There has been an error sending this notification. Please try again later or contact support.\");\r\n\t\t\t\tawait this.createAuditRecord({\r\n\t\t\t\t\teventId: this.eventDetails.eventID,\r\n\t\t\t\t\teventRecordTypeId: 41,\r\n\t\t\t\t\tdetails: `Failed sending notification to Server with ID ${this.serverId}`\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.isSending = false;\r\n\t\t}\r\n\t}\r\n\r\n\tcreated() {\r\n\t\tthis.updateSession({ resourceId: SessionResource.DeviceServiceSession });\r\n\t}\r\n\r\n\tasync mounted() {\r\n\t\tif (this.taskData) {\r\n\t\t\tif (Object.keys(this.taskData).length === 3) {\r\n\t\t\t\tthis.notificationName = this.taskData[\"title\"];\r\n\t\t\t\tthis.serverId = this.taskData[\"serverId\"];\r\n\t\t\t\tthis.templateId = this.taskData[\"templateId\"];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.templateId) {\r\n\t\t\tthis.template = await this.fetchTemplateDetails(this.templateId);\r\n\t\t\tthis.templateUsers = this.template.users.map(x => ({\r\n\t\t\t\tuserID: x.userID,\r\n\t\t\t\tname: x.fullName,\r\n\t\t\t\temail: x.email,\r\n\t\t\t\ttelephone: x.telephone,\r\n\t\t\t\texternalID: x.externalID,\r\n\t\t\t\tdefault: true\r\n\t\t\t}));\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NotificationTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./NotificationTask.vue?vue&type=template&id=0d4e75af\"\nimport script from \"./NotificationTask.vue?vue&type=script&lang=ts\"\nexport * from \"./NotificationTask.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-grow-1 form-group\"},[_c('p',{staticClass:\"h6\"},[_vm._v(_vm._s(_vm.choiceDescription))]),_c('div',{},[_c('div',{staticClass:\"d-flex\"},[(_vm.selectedChoice == _vm.choiceListTypes.Listbox)?_c('div',{staticClass:\"flex-grow-1\"},[_c('vue-perfect-scrollbar',{staticClass:\"choices-list-container\"},[_c('b-list-group',{attrs:{\"id\":\"choices-list\"}},_vm._l((_vm.taskOutcomes),function(taskOutcome,i){return _c('b-list-group-item',{key:i,attrs:{\"id\":(\"choices-item-\" + i),\"button\":\"\"},on:{\"click\":function($event){return _vm.submitOutcome(taskOutcome)}}},[_vm._v(_vm._s(taskOutcome))])}),1)],1)],1):_vm._e(),(_vm.selectedChoice == _vm.choiceListTypes.Button)?_c('div',{staticClass:\"flex-grow-1\"},_vm._l((_vm.taskOutcomes),function(taskOutcome,i){return _c('button',{key:i,staticClass:\"btn btn-secondary m-2\",attrs:{\"data-cy\":\"buttonOption\"},on:{\"click\":function($event){return _vm.submitOutcome(taskOutcome)}}},[_vm._v(_vm._s(taskOutcome))])}),0):_vm._e()])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { Getter, Action, namespace } from \"vuex-class\";\nimport Multiselect from \"vue-multiselect\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport { renderChoiceEnum } from \"@/models/Tasks/renderType\";\n\nconst Tasks = namespace(\"tasks\");\nconst SiteMonitor = namespace(\"siteMonitor\");\n\n@Component({\n\tcomponents: {\n\t\tmultiselect: Multiselect,\n\t\tVuePerfectScrollbar: VuePerfectScrollbar\n\t}\n})\nexport default class ChoicesTask extends Vue {\n\t@Getter getUserName: string;\n\t@SiteMonitor.Action createAuditRecord: any;\n\t@SiteMonitor.Getter(\"getEventDetails\") eventDetails: any;\n\n\t@Prop() public task: any;\n\t@Prop(String) result: string;\n\n\tprivate choiceDescription: string = \"\";\n\tprivate taskOutcomes: any[] = [];\n\tprivate selectedChoice: string = \"\";\n\tprivate choiceListTypes: object = renderChoiceEnum;\n\n\t/** Method to emit to parent and Complete Task. */\n\tprivate async submitOutcome(outcome) {\n\t\t// Emit for the result within parent\n\t\tthis.$emit(\"result-changed\", outcome);\n\t\t// Emit for the @complete within parent.\n\t\tthis.$emit(\"complete\");\n\t}\n\n\tpublic async mounted() {\n\t\ttry {\n\t\t\tlet {\n\t\t\t\tchoiceDescription,\n\t\t\t\tchoiceOptions,\n\t\t\t\tselectedChoice\n\t\t\t} = this.task.taskData;\n\n\t\t\tthis.choiceDescription = choiceDescription;\n\t\t\tthis.taskOutcomes = choiceOptions;\n\t\t\tthis.selectedChoice = selectedChoice;\n\t\t} catch (Ex) {\n\t\t\tconsole.error(\"error occured: ChoicesTask \" + Ex);\n\t\t}\n\t}\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChoicesTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChoicesTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ChoicesTask.vue?vue&type=template&id=3f8edbd0&scoped=true\"\nimport script from \"./ChoicesTask.vue?vue&type=script&lang=ts\"\nexport * from \"./ChoicesTask.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ChoicesTask.vue?vue&type=style&index=0&id=3f8edbd0&prod&scoped=true&lang=scss\"\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 \"3f8edbd0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"flex-grow-1 form-group\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-12\"},[_c('div',{staticClass:\"dropdown fixed-dropdown d-inline-flex dropdown-container\"},[(_vm.callList.length > 0)?_c('div',{attrs:{\"data-cy\":\"callContactContainer\"}},[(_vm.renderType.name === 'Contact Role')?_c('div',{staticClass:\"pb-2\"},[_c('p',[_vm._v(\"Please contact: \"+_vm._s(_vm.renderType.value.role))]),_c('table',{staticClass:\"table dark table-striped table-bordered\"},[_vm._m(0),_c('tbody',_vm._l((_vm.callList),function(contact){return _c('tr',{key:contact.userID},[_c('td',{staticClass:\"px-2\"},[_vm._v(_vm._s(contact.fullName))]),_c('td',{staticClass:\"px-2\"},[_vm._v(_vm._s(contact.telephone))]),_c('td',{staticClass:\"px-2\"},[_vm._v(_vm._s(contact.email))])])}),0)]),_c('button',{staticClass:\"btn btn-secondary mx-1\",attrs:{\"data-cy\":\"callResultNo\"},on:{\"click\":function($event){return _vm.callResultYes()}}},[_vm._v(\" Close \")])]):(_vm.renderType.value == 'CallList')?_c('div',{staticClass:\"pb-2\"},[_vm._v(\" Did \"+_vm._s(_vm.callList[_vm.callListIndex].fullname)+\" pickup? \"),_c('ul',[(_vm.callList[_vm.callListIndex].mobile)?_c('li',{staticClass:\"font-italic letter-spaceing\",attrs:{\"data-cy\":\"callListMobile\"}},[_vm._v(\" Mobile: \"+_vm._s(_vm.callList[_vm.callListIndex].mobile)+\" \")]):_vm._e(),(_vm.callList[_vm.callListIndex].telephone)?_c('li',{staticClass:\"font-italic letter-spaceing\",attrs:{\"data-cy\":\"callListTelephone\"}},[_vm._v(\" Telephone: \"+_vm._s(_vm.callList[_vm.callListIndex].telephone)+\" \")]):_vm._e()])]):_c('div',{staticClass:\"pb-2\"},[_vm._v(\" Did the \"+_vm._s(_vm.callList[_vm.callListIndex].fullname)+\" pickup? \"),_c('ul',[_c('li',{staticClass:\"font-italic letter-spaceing\"},[_vm._v(\" Telephone: \"+_vm._s(_vm.callList[_vm.callListIndex].telephone)+\" \")])])]),(_vm.renderType.name !== 'Contact Role')?_c('div',[_c('button',{staticClass:\"btn btn-secondary mx-2\",attrs:{\"data-cy\":\"callResultYes\"},on:{\"click\":function($event){return _vm.callResultYes()}}},[_vm._v(\" Yes \")]),_c('button',{staticClass:\"btn btn-secondary mx-1\",attrs:{\"data-cy\":\"callResultNo\"},on:{\"click\":function($event){return _vm.callResultNo()}}},[_vm._v(\" No \")])]):_vm._e()]):_c('div',[_c('div',{staticClass:\"pb-2\"},[(_vm.renderType.value === 'CallList')?_c('p',[_vm._v(\" There are no contact details in the call list. \")]):_c('p',[_vm._v(\" There are no contact details available for \"+_vm._s((\"\" + (_vm.task.taskData.name) + (_vm.renderType.name === 'Contact Role' ? (\" : \" + (_vm.renderType.value.role)) : \"\")))+\". \")])]),_c('button',{staticClass:\"btn btn-secondary mx-1\",attrs:{\"data-cy\":\"callResultNo\"},on:{\"click\":function($event){return _vm.callResultExit()}}},[_vm._v(\" Close \")])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',{staticClass:\"header\"},[_c('th',{staticClass:\"px-2\",attrs:{\"scope\":\"col\"}},[_vm._v(\"Name\")]),_c('th',{staticClass:\"px-2\",attrs:{\"scope\":\"col\"}},[_vm._v(\"Telephone\")]),_c('th',{staticClass:\"px-2\",attrs:{\"scope\":\"col\"}},[_vm._v(\"Email\")])])])}]\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Watch, Vue } from \"vue-property-decorator\";\r\nimport { Getter, Action, namespace } from \"vuex-class\";\r\nimport Multiselect from \"vue-multiselect\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { UserContactDetails, CallContactPayload } from '@/store/tasks/types';\r\n\r\nconst Tasks = namespace(\"tasks\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\tmultiselect: Multiselect,\r\n\t\tVuePerfectScrollbar: VuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class CallContactTask extends Vue {\r\n\t@Getter getUserName: string;\r\n\t@SiteMonitor.Action createAuditRecord: any;\r\n\t@SiteMonitor.Getter(\"getEventDetails\") eventDetails: any;\r\n\t@Tasks.Action fetchCallContacts: (payload: CallContactPayload) => Promise;\r\n\t@Tasks.Getter(\"getCallContacts\") getCallContacts: UserContactDetails[];\r\n\r\n\t@Prop() public task!: any;\r\n\t@Prop(String) public result!: string;\r\n\t@Prop(String) public eventTaskID!: string;\r\n\r\n\tprivate renderType: any = { name: \"\", value: \"\" };\r\n\r\n\tprivate callName: string = \"\";\r\n\tprivate callList: UserContactDetails[] = [];\r\n\tprivate callListIndex: number = 0;\r\n\r\n\tprivate contactRoleRenderType: string = \"Contact Role\";\r\n\r\n\t/** submit data to complete Task */\r\n\tprivate submitOutcome(outcome: string): void \r\n\t{\r\n\t\tthis.$emit(\"result-changed\", outcome);\r\n\t\tthis.$emit(\"complete\");\r\n\t}\r\n\r\n\tprivate get isContactRoleRenderType(): boolean \r\n\t{\r\n\t\treturn this.renderType.name === this.contactRoleRenderType;\r\n\t}\r\n\r\n\tprivate get currentCaller(): UserContactDetails \r\n\t{\r\n\t\treturn this.callList[this.callListIndex];\r\n\t}\r\n\r\n\tprivate callResultYes(): void \r\n\t{\r\n\t\tconst mobile = this.callList[this.callListIndex][\"mobile\"];\r\n\t\tconst telephone = this.callList[this.callListIndex][\"telephone\"];\r\n\t\tconst bothNumbers = mobile && telephone ? true : false;\r\n\r\n\t\tif (this.renderType.value === \"CallList\") {\r\n\t\t\t// Set the currently selected users fullname to callName\r\n\t\t\tthis.callName = this.callList[this.callListIndex][\"fullname\"];\r\n\r\n\t\t\t//Complete task with this user called.\r\n\t\t\tthis.submitOutcome(\r\n\t\t\t\t`Call ${this.callName} (${mobile} ${\r\n\t\t\t\t\tbothNumbers ? \"/\" : \"\"\r\n\t\t\t\t} ${telephone}) : Call Made`\r\n\t\t\t);\r\n\t\t}\r\n\t\t// If rendertype is call contact role\r\n\t\telse if (this.isContactRoleRenderType) {\r\n\t\t\t// Set the currently selected users fullname to callName\r\n\t\t\tthis.callName = this.callList[this.callListIndex][\"fullname\"];\r\n\r\n\t\t\t//Complete task with this user called.\r\n\t\t\tthis.submitOutcome(`Contacts for ${this.renderType.value.role} were displayed and have been closed.`);\r\n\t\t}\r\n\t\t// If rendertype is either FireFighters or Police\r\n\t\telse if (\r\n\t\t\tthis.renderType.value === \"Fire Dept\" ||\r\n\t\t\tthis.renderType.value === \"Police\"\r\n\t\t) {\r\n\t\t\tthis.submitOutcome(\r\n\t\t\t\t` Call ${this.renderType.name} \"${telephone}\" ${this.getUserName} entry: \"Call Made\"`\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async callResultNo(): Promise \r\n\t{\r\n\t\tconst mobile = this.callList[this.callListIndex][\"mobile\"];\r\n\t\tconst telephone = this.callList[this.callListIndex][\"telephone\"];\r\n\t\tconst bothNumbers = mobile && telephone ? true : false;\r\n\r\n\t\tif (this.renderType.value == \"CallList\") {\r\n\t\t\t// Set the currently selected users fullname to callName\r\n\t\t\tthis.callName = this.callList[this.callListIndex][\"fullname\"];\r\n\r\n\t\t\t//Check if we have ran out of users within the call list.\r\n\t\t\tif (this.callListIndex >= this.callList.length - 1) {\r\n\t\t\t\t//If no users are left, set complete task to be no users picked up.\r\n\t\t\t\tthis.submitOutcome(\"No users picked up\");\r\n\r\n\t\t\t\t// If it's not the last user and they didn't pick up the phone\r\n\t\t\t} else {\r\n\t\t\t\t// Increment to the next user\r\n\t\t\t\tthis.callListIndex++;\r\n\t\t\t}\r\n\r\n\t\t\t// Create audit saying that the user didn't pick up the phone.\r\n\t\t\tawait this.createAuditRecord({\r\n\t\t\t\teventId: this.eventDetails.eventID,\r\n\t\t\t\teventRecordTypeId: 111,\r\n\t\t\t\tdetails: `Call ${this.callName} (${mobile} ${\r\n\t\t\t\t\tbothNumbers ? \"/\" : \"\"\r\n\t\t\t\t} ${telephone}) : No Answer`\r\n\t\t\t});\r\n\t\t}\r\n\t\t// If rendertype is either FireFighters or Police\r\n\t\telse if (\r\n\t\t\tthis.renderType.value == \"Fire Dept\" ||\r\n\t\t\tthis.renderType.value == \"Police\"\r\n\t\t) {\r\n\t\t\t// Complete Task with msg below\r\n\t\t\tthis.submitOutcome(\r\n\t\t\t\t` Call ${this.renderType.name} \"${telephone}\" ${this.getUserName} entry: \"No Answer\"`\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate callResultExit(): void \r\n\t{\r\n\t\tconst outcome = `The ${this.renderType.name} has not been setup or configured correctly.`;\r\n\t\tthis.submitOutcome(outcome);\r\n\t}\r\n\r\n\tprivate async mounted(): Promise \r\n\t{\r\n\t\tawait this.configureCallContacts();\r\n\t}\r\n\r\n\t@Watch(\"eventDetails.groupID\")\r\n\tprivate async configureCallContacts(): Promise\r\n\t{\r\n\t\t// Get taskText object thats created in setup.\r\n\t\tconst settings = this.task.taskData;\r\n\r\n\t\t// Check if settings is not undefined and contains the desired key.\r\n\t\tif (settings !== null && settings !== undefined) {\r\n\t\t\t// Insert settings Name value in this.renderType\r\n\t\t\tthis.renderType = settings;\r\n\r\n\t\t\tconst payload = {\r\n\t\t\t\tGroupId: this.eventDetails.groupID,\r\n\t\t\t\tAll: false,\r\n\t\t\t\tParent: true,\r\n\t\t\t\tCallType: settings.value,\r\n\t\t\t\tEventTaskId: this.eventTaskID,\r\n\t\t\t\tvalue: undefined,\r\n\t\t\t};\r\n\r\n\t\t\tif (this.isContactRoleRenderType) {\r\n\t\t\t\tpayload.CallType = this.renderType.name;\r\n\t\t\t\tpayload.value = this.renderType.value;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tawait this.fetchCallContacts(payload);\r\n\r\n\t\t\tthis.getCallContacts.forEach(element => {\r\n\t\t\t\tif (this.eventTaskID == element.eventTaskID || this.isContactRoleRenderType && !this.callList.find(contact => contact.userID == element.userID)) {\r\n\t\t\t\t\tthis.callList.push(element);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CallContactTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CallContactTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CallContactTask.vue?vue&type=template&id=a2dd9efc&scoped=true\"\nimport script from \"./CallContactTask.vue?vue&type=script&lang=ts\"\nexport * from \"./CallContactTask.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CallContactTask.vue?vue&type=style&index=0&id=a2dd9efc&prod&scoped=true&lang=scss\"\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 \"a2dd9efc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('p',{staticClass:\"h6\"},[_vm._v(\"Trigger control - \"+_vm._s(_vm.deviceTitle))]),_c('button',{staticClass:\"btn btn-secondary m-2\",attrs:{\"data-cy\":\"buttonOption\"},on:{\"click\":function($event){return _vm.submitOutcome()}}},[_vm._v(_vm._s(_vm.controlActionType.title))])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { namespace, Getter } from \"vuex-class\";\nimport { DeviceService } from \"@sureview/camera\";\nimport api from \"@/services/api.service\";\n\nconst SiteMonitor = namespace(\"siteMonitor\");\n\n@Component({})\nexport default class ControlTask extends Vue {\n\t@Getter getUserName: string;\n\t@SiteMonitor.Action createAuditRecord: any;\n\t@SiteMonitor.Getter(\"getEventDetails\") eventDetails: any;\n\n\t@Prop() public task: any;\n\t@Prop(String) result: string;\n\n\tprivate deviceId: any = 0;\n\tprivate deviceTitle: string = \"\";\n\tprivate controlActionType: any = {};\n\tprivate description: string = \"\";\n\n\t/** Method to emit to parent and Complete Task. */\n\tprivate async submitOutcome() {\n\t\t// Get the details reqd to trigger the relay, and attach the note\n\t\tconst device = await api.deviceQuickControl(this.deviceId, \"Action triggered in event\");\n\n\t\t// If we got a device back, we can trigger it with the device service\n\t\tif (device && device.eventRecordID) {\n\t\t\tconst deviceSvce = new DeviceService(api.getDeviceServiceAddress(), device.deviceServerEndpoint);\n\n\t\t\ttry {\n\t\t\t\tawait deviceSvce.sendOutputCmd(\n\t\t\t\t\tdevice.deviceServiceSession,\n\t\t\t\t\tdevice.deviceID,\n\t\t\t\t\tnull, // outputType does not exist in device model so pass null at the moment\n\t\t\t\t\tthis.controlActionType.title\n\t\t\t\t);\n\t\t\t\t// Emit for the result within parent\n\t\t\t\tthis.$emit(\"result-changed\", true);\n\t\t\t\t// Emit for the @complete within parent.\n\t\t\t\tthis.$emit(\"complete\");\n\t\t\t} catch (err) {\n\t\t\t\tthis.$emit(\"result-changed\", false);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async mounted() {\n\t\ttry {\n\t\t\tthis.deviceId = this.task.taskData.control.deviceId;\n\t\t\tthis.deviceTitle = this.task.taskData.control.title;\n\t\t\tthis.controlActionType = this.task.taskData.controlAction;\n\t\t\tthis.description = this.task.taskText;\n\t\t} catch (Ex) {\n\t\t\tconsole.error(\"error occured: ControlTask \" + Ex);\n\t\t}\n\t}\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ControlTask.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ControlTask.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ControlTask.vue?vue&type=template&id=538b0d3c\"\nimport script from \"./ControlTask.vue?vue&type=script&lang=ts\"\nexport * from \"./ControlTask.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","\r\nimport PerfectScrollbar from \"perfect-scrollbar\";\r\nimport { Component, Prop, Watch, Vue } from \"vue-property-decorator\";\r\nimport { Getter, Action, namespace } from \"vuex-class\";\r\nimport { TaskType } from \"@/store/tasks/types\";\r\nimport vSelect from \"vue-select\";\r\nimport NotificationTask from \"@/components/tasks/notification/NotificationTask.vue\";\r\nimport { eventSearch } from \"@/store/event-search\";\r\nimport BasicTask from \"@/components/tasks/task-types/BasicTask.vue\";\r\nimport RaiseToCasesTask from \"@/components/tasks/task-types/RaiseToCasesTask.vue\";\r\nimport InputTask from \"@/components/tasks/task-types/InputTask.vue\";\r\nimport YesNoTask from \"@/components/tasks/task-types/YesNoTask.vue\";\r\nimport UrlTask from \"@/components/tasks/task-types/UrlTask.vue\";\r\nimport SitRepTask from \"@/components/tasks/task-types/SitRepTask.vue\";\r\nimport CCureTask from \"@/components/tasks/task-types/CCureTask.vue\";\r\nimport AuditTask from \"@/components/tasks/task-types/AuditTask.vue\";\r\nimport ChoicesTask from \"@/components/tasks/choices/ChoicesTask.vue\";\r\nimport CallContactTask from \"@/components/tasks/call-contact/CallContactTask.vue\";\r\nimport DynamicDataList from \"@/components/tasks/task-types/DynamicDataList.vue\";\r\nimport ControlTask from \"@/components/tasks/control/ControlTask.vue\";\r\nimport EventOutcomeTask from \"@/components/tasks/task-types/EventOutcomeTask.vue\";\r\nimport { stringMixin } from \"@/mixins\";\r\nimport { FeaturesList } from \"@/store/types\";\r\nimport SVButton from \"@/components/form/SVButton.vue\";\r\n\r\nimport { get } from \"lodash\";\r\n\r\nconst Tasks = namespace(\"tasks\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\nconst { isNullOrWhitespace } = stringMixin.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-select\": vSelect,\r\n\t\t\"notification-task\": NotificationTask,\r\n\t\t\"basic-task\": BasicTask,\r\n\t\t\"input-task\": InputTask,\r\n\t\t\"yes-no-task\": YesNoTask,\r\n\t\t\"url-task\": UrlTask,\r\n\t\t\"sitrep-task\": SitRepTask,\r\n\t\t\"ccure-task\": CCureTask,\r\n\t\t\"audit-task\": AuditTask,\r\n\t\t\"choice-task\": ChoicesTask,\r\n\t\t\"call-contact-task\": CallContactTask,\r\n\t\t\"dynamic-data-list\": DynamicDataList,\r\n\t\t\"control-task\": ControlTask,\r\n\t\tSVButton: SVButton,\r\n \"raise-to-cases-task\": RaiseToCasesTask,\r\n\t\t\"event-outcome-task\": EventOutcomeTask\r\n\t}\r\n\t// emits events:\r\n\t// - @assign-task-to-user\r\n\t// - @complete-task\r\n})\r\nexport default class CompleteTaskLine extends Vue {\r\n\t@Tasks.Getter(\"getEnabledActionTypes\") enabledActionTypes: TaskType[];\r\n\t@SiteMonitor.Getter(\"getIsController\") isController: boolean;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t@Prop() public availableGuards!: any[];\r\n\r\n\t@Prop({\r\n\t\t// @todo type\r\n\t\tdefault: () => []\r\n\t})\r\n\tpublic eventShares!: any[];\r\n\r\n\t@Prop({\r\n\t\tdefault: () => ({\r\n\t\t\ttitle: {\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tgroupTitle: {\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\tresult: {\r\n\t\t\t\ttype: String,\r\n\t\t\t\trequired: true\r\n\t\t\t},\r\n\t\t\ttaskTypeID: {\r\n\t\t\t\ttype: Number,\r\n\t\t\t\trequired: false\r\n\t\t\t},\r\n\t\t\ttaskData: {\r\n\t\t\t\ttype: Object,\r\n\t\t\t\trequired: false\r\n\t\t\t}\r\n\t\t})\r\n\t})\r\n\tpublic task!: any;\r\n\r\n\tpublic taskToRender: string = \"basic-task\";\r\n\tpublic taskResult: any = \"\";\r\n\r\n\tpublic get unremovedEventShares() {\r\n\t\treturn this.eventShares.filter(eventShare => !eventShare.removed);\r\n\t}\r\n\r\n\tpublic get eventGuards() {\r\n\t\treturn this.availableGuards;\r\n\t}\r\n\r\n\tpublic get taskHasComponent() {\r\n\t\treturn this.enabledActionTypes.some(\r\n\t\t\ttt => tt.taskTypeID === this.task.taskTypeID && !isNullOrWhitespace(tt.componentFile)\r\n\t\t);\r\n\t}\r\n\r\n\t@Watch(\"enabledActionTypes\", { deep: true })\r\n\tprivate actionTypeWatcher(){\r\n\t\tthis.loadTaskType();\r\n\t}\r\n\r\n\tprivate loadTaskType(){\r\n\t\tlet task = this.enabledActionTypes.find(\r\n\t\t\t(taskType: any) => taskType.taskTypeID === this.task.taskTypeID && taskType.componentFile !== null\r\n\t\t);\r\n\r\n\t\t// Avoid property undefined errors if a task was not returned.\r\n\t\tif (task !== undefined) {\r\n\t\t\tthis.taskToRender = task.componentFile;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic mounted() {\r\n\t\tthis.loadTaskType();\r\n\t}\r\n\r\n\tpublic onAssignTaskToUser(eventTaskID: number, eventUserID: number | null) {\r\n\t\tthis.$emit(\"assign-task-to-user\", eventTaskID, eventUserID);\r\n\t}\r\n\r\n\tpublic onCompleteTask($event: any) {\r\n\t\tconst completedTask = {\r\n\t\t\t...this.task,\r\n\t\t\tcompleted: true\r\n\t\t};\r\n\t\tswitch (this.task.taskTypeID) {\r\n\t\t\tcase 6: //Notification type\r\n\t\t\t\tthis.$emit(\"complete-task\", completedTask);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 7: //Choices\r\n\t\t\t\tthis.$emit(\"complete-task\", completedTask);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 8: //Call Contact\r\n\t\t\t\tthis.$emit(\"complete-task\", completedTask);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 13: //Control\r\n\t\t\t\tthis.$emit(\"complete-task\", completedTask);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\t// safeguard against unknown task types\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Pass any emited events back up the chain.\r\n\tpublic passTask(completedTask: object) {\r\n\t\tthis.$emit(\"complete-task\", completedTask);\r\n\t}\r\n\r\n\tpublic onReOpenTask() {\r\n\t\t// send \"/Complete\" request with {complete: false}\r\n\t\tthis.$emit(\"complete-task\", {\r\n\t\t\t...this.task,\r\n\t\t\tcompleted: false\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get massNotificationEnabled() {\r\n\t\treturn get(this.featuresList, [\"Actions\", \"MassNotification\"], false);\r\n\t}\r\n\r\n\tprivate get choicesEnabled() {\r\n\t\treturn get(this.featuresList, [\"Actions\", \"Choices\"], false);\r\n\t}\r\n\r\n\tprivate get callContactsEnabled() {\r\n\t\treturn get(this.featuresList, [\"Actions\", \"CallContacts\"], false);\r\n\t}\r\n\r\n\tprivate get controlsEnabled() {\r\n\t\treturn get(this.featuresList, [\"Actions\", \"Control\"], false);\r\n\t}\r\n\r\n\t// Pass any emitted \"completed-task-now-close-event\" events back up the chain.\r\n\tpublic passTaskEventClosure(completedTask: object) {\r\n\t\tthis.$emit(\"completed-task-now-close-event\", completedTask);\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompleteTaskLine.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CompleteTaskLine.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CompleteTaskLine.vue?vue&type=template&id=ab70100a&scoped=true\"\nimport script from \"./CompleteTaskLine.vue?vue&type=script&lang=ts\"\nexport * from \"./CompleteTaskLine.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CompleteTaskLine.vue?vue&type=style&index=0&id=ab70100a&prod&scoped=true&lang=scss\"\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 \"ab70100a\",\n null\n \n)\n\nexport default component.exports","\nimport { Vue, Component, Prop, Emit } from \"vue-property-decorator\";\nimport { sortBy } from \"lodash\";\nimport { TaskGroup, EventTask, ActionPlanTask, Task } from \"@/store/tasks/types\";\nimport { namespace, Getter } from \"vuex-class\";\nimport { UserPermissions } from \"@/store/types\";\nimport { EventShareUser } from \"@/store/site-monitor/types\";\nimport { CompleteTaskPayload } from \"@/services/api.service\";\n\nimport CompleteTaskLine from \"@/components/tasks/CompleteTaskLine.vue\";\nimport AddNewEventTask from \"@/components/tasks/AddNewEventTask.vue\";\n\nconst SiteMonitor = namespace(\"siteMonitor\");\nconst Tasks = namespace(\"tasks\");\n\n@Component({\n\tcomponents: {\n\t\t\"complete-task-line\": CompleteTaskLine,\n\t\t\"add-new-event-task\": AddNewEventTask\n\t}\n})\nexport default class EventTaskGroup extends Vue {\n\t@Prop() public taskGroup: TaskGroup;\n\t@Prop() public eventId: number;\n\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\n\t@Getter(\"getCanAddIndividualActionsOverride\") canAddIndividualActionsOverride: boolean;\n\t@Getter getFeature: (featureNames: string[]) => boolean;\n\n\t@Tasks.Action completeTask: (payload: CompleteTaskPayload) => Promise;\n\t@Tasks.Action fetchEventTasks: ({ eventId }) => Promise;\n\t@Tasks.Action assignTask: (payload) => Promise;\n\t@Tasks.Action assignAllTasks: (payload) => Promise;\n\n\t@Tasks.Getter getOutstandingRequiredTaskCount: number;\n\n\t@SiteMonitor.Mutation setActivity: () => void;\n\t@SiteMonitor.Getter(\"getEventShare\") eventShares: any[];\n\t@SiteMonitor.Mutation private setEventCloseShown: (visible: boolean) => void;\n\n\tprivate showCompletedTasks: boolean = false;\n\tprivate addingNewTask: boolean = false;\n\n\t/** Getters */\n\n\t/**\n\t * Returns an array of tasks marked as complete.\n\t */\n\tpublic get completedTasks() {\n\t\treturn this.taskGroup.tasks.filter(task => task.completed);\n\t}\n\n\t/**\n\t * Returns an array of tasks, and depending on if we're hiding completed tasks, filters those out.\n\t */\n\tpublic get visibleTasks() {\n\t\tconst sortedTasks = sortBy(this.taskGroup.tasks, [\"order\"]);\n\t\tif (this.canCollapseCompletedTasks) {\n\t\t\treturn sortedTasks.filter(task => (this.showCompletedTasks ? true : !task.completed));\n\t\t} else {\n\t\t\treturn sortedTasks;\n\t\t}\n\t}\n\n\t/**\n\t * Returns true if this task group has any incomplete tasks.\n\t */\n\tpublic get hasActiveTasks() {\n\t\treturn this.taskGroup.tasks.filter(task => !task.completed).length > 0;\n\t}\n\n\t/**\n\t * Checks if the user has permission to add individual actions, or just action groups.\n\t */\n\tpublic get canAddIndividualActions() {\n\t\treturn this.canAddIndividualActionsOverride ? true : this.permissions.canAddIndividualActions;\n\t}\n\n\t/**\n\t * Returns true if the user has the 'collapse completed actions' feature enabled.\n\t */\n\tpublic get canCollapseCompletedTasks() {\n\t\treturn this.getFeature([\"Actions\", \"CollapseCompletedActions\"]);\n\t}\n\n\t/** Events */\n\n\t@Emit(\"add-task\")\n\tpublic onAddTask(task: EventTask) {\n\t\tthis.onCancelAddingTask();\n\t}\n\n\t/** Methods */\n\n\t/**\n\t * Handler for when the user cancels adding a new task.\n\t */\n\tpublic onCancelAddingTask() {\n\t\tthis.addingNewTask = false;\n\t}\n\n\t/**\n\t * Handler for when the user completes (or resets) a task.\n\t */\n\tpublic async onCompleteTask(completedTaskLine: any) {\n\t\tthis.focusTask(completedTaskLine.eventTaskID);\n\n\t\tconst completeTaskPayload: CompleteTaskPayload = {\n\t\t\tEventID: completedTaskLine.eventID,\n\t\t\tEventTaskID: completedTaskLine.eventTaskID,\n\t\t\tTaskComplete: completedTaskLine.completed,\n\t\t\tResult: completedTaskLine.result || \"\",\n\t\t\ttaskData: JSON.stringify(completedTaskLine.taskData)\n\t\t};\n\t\tawait this.completeTask(completeTaskPayload);\n\t\tawait this.setActivity();\n\t\tif(completedTaskLine.completed){\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$emit(\"completed-task\")\n\t\t\t}, 200);\n\t\t}\n\t}\n\n\t/**\n\t * Handler for when the user assigns a task to another user within this event.\n\t */\n\tpublic async onAssignTaskToUser(eventTaskID: string, eventUserID: string) {\n\t\tawait this.assignTask({\n\t\t\teventID: this.eventId,\n\t\t\teventTaskID: eventTaskID,\n\t\t\teventUserID: eventUserID\n\t\t});\n\n\t\tawait this.fetchEventTasks({ eventId: this.eventId });\n\t\tthis.setActivity();\n\t}\n\n\t/**\n\t * Handler for when the user assigns all the tasks within a group to another user within this event.\n\t */\n\tpublic async onAssignAllTasks(categoryTitle: string, eventUserID: string) {\n\t\tawait this.assignAllTasks({\n\t\t\teventID: this.eventId,\n\t\t\ttaskCategoryTitle: categoryTitle,\n\t\t\teventUserID: eventUserID\n\t\t});\n\n\t\tawait this.fetchEventTasks({ eventId: this.eventId });\n\t\tthis.setActivity();\n\t}\n\n\tpublic async onTaskCloseEvent(taskCompleted: ActionPlanTask): Promise {\n\t\tawait this.fetchEventTasks({ eventId: this.eventId });\n\n\t\t// Open close modal if no outstanding required tasks.\n\t\tif (this.getOutstandingRequiredTaskCount === 0) {\n\t\t\tthis.setEventCloseShown(true);\n\t\t}\n\t}\n\n\tprivate focusTask(task: string){\n\t\tthis.$emit(\"focusTask\", task)\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventTaskGroup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventTaskGroup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventTaskGroup.vue?vue&type=template&id=245ec5f5&scoped=true\"\nimport script from \"./EventTaskGroup.vue?vue&type=script&lang=ts\"\nexport * from \"./EventTaskGroup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventTaskGroup.vue?vue&type=style&index=0&id=245ec5f5&prod&scoped=true&lang=css\"\nimport style1 from \"./EventTaskGroup.vue?vue&type=style&index=1&id=245ec5f5&prod&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 \"245ec5f5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('action-plans-modal',{attrs:{\"showModal\":_vm.isModalShown,\"data-cy\":\"action-plans-modal\"},on:{\"closeModal\":_vm.closeModal,\"actionPlanSelected\":_vm.actionPlanSelected}}),_c('confirmation-modal',{attrs:{\"visible\":_vm.isConfirmationModalShown,\"okBtnText\":\"Confirm\",\"cancelBtnText\":\"Cancel\",\"danger\":true,\"title\":\"Clear ALL current Actions\",\"data-cy\":\"confirm-delete-action-plans-modal\"},on:{\"ok\":_vm.confirmActionPlanSelectedConfirmed,\"cancel\":_vm.confirmActionPlanSelectedClosed}},[_c('p',[_c('strong',[_vm._v(\" Applying this Action Plan will remove ALL current Actions from the event this includes completed Actions. \")])]),_c('p',[_c('strong',[_vm._v(\" Are you sure you want to do this? \")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{key:\"updateModalKey\",attrs:{\"id\":\"action-plan-modal\",\"title\":\"Action Plans\",\"visible\":_vm.isModalShown,\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"data-cy\":\"action-plan-modal\",\"size\":\"lg\"},on:{\"hide\":_vm.hideModal,\"cancel\":_vm.closeModal,\"ok\":_vm.actionPlanSelected}},[_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1 setup-column d-flex flex-column\"},[_c('div',{staticClass:\"task-collections-drop-area card card-secondary flex-grow-1 model-content\"},[_c('div',{staticClass:\"card-header\"},[_c('div',{staticClass:\"d-flex\"},[_c('div',{staticClass:\"flex-grow-1\"},[(!_vm.actionPlans || _vm.actionPlans.length === 0)?_c('div',{staticClass:\"flex-grow-0 alert alert-secondary\"},[_vm._v(\" No action plans found \")]):_c('div',[_c('vue-select',{staticClass:\"dark flex-grow-1\",attrs:{\"name\":\"task-collection-selection-control\",\"clearable\":false,\"placeholder\":'Select Action Plan',\"options\":_vm.actionPlans,\"label\":\"title\",\"data-cy\":\"action-plans-dropdown\"},model:{value:(_vm.selectedActionPlan),callback:function ($$v) {_vm.selectedActionPlan=$$v},expression:\"selectedActionPlan\"}})],1)])])]),(_vm.selectedActionPlan)?_c('vue-perfect-scrollbar',{staticClass:\"card-body task-plan-container\"},[(_vm.selectedActionPlan.scriptID && !_vm.actionsInActionPlansByCategory[_vm.selectedActionPlan.scriptID])?_c('div',{key:'noactions_' + _vm.selectedActionPlan.scriptID,staticClass:\"alert alert-secondary\",attrs:{\"id\":'noactions_' + _vm.selectedActionPlan.scriptID}},[_c('span',[_vm._v(\"No actions in plan\")])]):_vm._e(),_vm._l((_vm.actionPlanCategories(_vm.selectedActionPlan.scriptID)),function(categoryLink){return _c('div',{key:categoryLink.taskCategoryId,staticClass:\"card card-secondary card-category\"},[(_vm.decoratedActionCategoriesInCurrentScript[categoryLink.taskCategoryId])?_c('div',{staticClass:\"card-header\"},[(_vm.actionCategoriesExpandedState[_vm.selectedActionPlan.scriptID][categoryLink.taskCategoryId] === true)?_c('i',{staticClass:\"fa fa-caret-down\",class:_vm.isReorderCategoriesEnabled ? 'pl-3' : '',attrs:{\"aria-hidden\":\"true\",\"title\":\"Collapse action category\"},on:{\"click\":function($event){return _vm.collapseCategory(categoryLink.taskCategoryId)}}}):_c('i',{staticClass:\"fa fa-caret-right\",class:_vm.isReorderCategoriesEnabled ? 'pl-3' : '',attrs:{\"aria-hidden\":\"true\",\"title\":\"Expand action category\"},on:{\"click\":function($event){return _vm.expandCategory(categoryLink.taskCategoryId)}}}),_vm._v(\" \"+_vm._s(_vm.decoratedActionCategoriesInCurrentScript[categoryLink.taskCategoryId].title)+\" (\"+_vm._s(_vm.decoratedActionCategoriesInCurrentScript[categoryLink.taskCategoryId].numActionsAddedToScript)+\" / \"+_vm._s(_vm.decoratedActionCategoriesInCurrentScript[categoryLink.taskCategoryId].totalNumActions)+\") \")]):_vm._e(),(_vm.actionCategoriesExpandedState[_vm.selectedActionPlan.scriptID][categoryLink.taskCategoryId] === true)?_c('div',{staticClass:\"card-body p-0\"},_vm._l((_vm.orderedActionPlanByCategory(_vm.selectedActionPlan.scriptID, categoryLink.taskCategoryId)),function(action){return _c('li',{key:action.taskID,staticClass:\"list-group-item action-list-group-item d-flex\"},[_c('div',{staticClass:\"list-group-item-body flex-grow-1\"},[_c('table',{staticClass:\"w-100\"},[_c('tr',[_c('td',{staticClass:\"col-md-4\"},[(action.taskTypeID == _vm.taskTypeIds.URL)?_c('span',[_c('a',{attrs:{\"href\":action.taskData ? action.taskData : action.taskText,\"target\":\"_blank\"}},[_vm._v(\" \"+_vm._s(action.taskText ? action.taskText : action.taskData)+\" \")])]):_c('span',[_vm._v(\" \"+_vm._s(_vm._f(\"parseTaskText\")(action))+\" \")])]),_c('td',{staticClass:\"task-type-label col-md-1\"},[_vm._v(\" \"+_vm._s(_vm.taskTypesByTitle[action.taskTypeID] || 'Unknown')+\" \")])])])])])}),0):_vm._e()])})],2):_vm._e()],1)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Emit, Prop, Vue, Watch } from 'vue-property-decorator';\nimport { Getter, namespace } from 'vuex-class';\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport vSelect from \"vue-select\";\nimport { parseTaskText } from '@/filters';\nimport { ActionCategoriesExpandedState, ActionPlan, ActionPlanTask, DecoratedActionCategories, ScriptCategoryLink, TaskCategory, TaskType } from '@/store/tasks/types';\nimport { orderBy } from 'lodash';\nimport TaskTypeIds from '@/types/sv-data/enums/TaskTypeIds';\nimport { BModal, BvModalEvent } from 'bootstrap-vue';\nimport ConfirmationModal from '@/components/mobile-raise-templates/ConfirmationModal.vue';\nimport { NumberToNumberMap, NumberToStringMap } from '@/store/types';\n\nconst Tasks = namespace(\"tasks\");\n\n@Component({\n components: {\n \"vue-select\": vSelect,\n \"vue-perfect-scrollbar\": VuePerfectScrollbar,\n \"b-modal\": BModal,\n \"confirmation-modal\": ConfirmationModal\n },\n filters: {\n parseTaskText\n }\n})\nexport default class ActionPlansModal extends Vue {\n\n @Prop({ type: Boolean, default: false})\n private showModal: boolean;\n\n @Getter getFeature: (featureList: string[]) => boolean;\n\n @Tasks.Action fetchTaskTypes: () => Promise;\n @Tasks.Action fetchActionPlans: () => Promise;\n @Tasks.Action fetchTaskCategories: () => Promise;\n @Tasks.Action fetchActionLibrary: () => Promise;\n @Tasks.Action getScriptCategoryLinks: () => Promise;\n\n @Tasks.Getter(\"getTaskLibrary\") taskLibrary: ActionPlanTask[];\n @Tasks.Getter(\"getActionPlans\") actionPlans: ActionPlan[];\n @Tasks.Getter(\"getTaskCategories\") taskCategories: TaskCategory[];\n @Tasks.Getter(\"getTaskTypes\") taskTypes: TaskType[];\n @Tasks.Getter(\"getScriptCategoryLinks\") scriptCategoryLinks: ScriptCategoryLink[];\n\n private selectedActionPlan: ActionPlan | null = null;\n private actionsInActionPlansByCategory: NumberToNumberMap = {};\n private actionCategoriesExpandedState: ActionCategoriesExpandedState = {};\n private taskTypeIds = TaskTypeIds;\n private isModalShown: boolean = false;\n\n private async mounted(): Promise {\n await this.fetchTaskCategories();\n await this.fetchActionPlans();\n await this.fetchActionLibrary();\n await this.fetchTaskTypes();\n this.setDefaultSelectedActionPlan();\n this.initActionsInActionPlansByCategoryPlaceholder();\n this.initActionCategoriesExpandedState();\n\n if (this.isReorderCategoriesEnabled) {\n await this.getScriptCategoryLinks();\n }\n }\n\n private get isReorderCategoriesEnabled(): boolean {\n return this.getFeature([\"Actions\", \"ReorderCategories\"]);\n }\n\n private get taskTypesByTitle(): NumberToStringMap {\n let taskTypes: NumberToStringMap = {};\n this.taskTypes.forEach(type => {\n taskTypes[type.taskTypeID] = type.title;\n });\n return taskTypes;\n }\n \n private get decoratedActionCategoriesInCurrentScript(): DecoratedActionCategories {\n let relevantCategoryIDs = [];\n if (this.selectedActionPlan.scriptID) {\n relevantCategoryIDs = this.taskLibrary\n .filter(t => this.selectedActionPlan.scriptID in t.scripts)\n .map(t => t.taskCategoryID)\n .filter((value, index, self) => self.indexOf(value) === index);\n }\n\n const decoratedActionCategories: DecoratedActionCategories = {};\n this.taskCategories.forEach(cat => {\n if (relevantCategoryIDs.includes(cat.taskCategoryID)) {\n decoratedActionCategories[cat.taskCategoryID] = {\n title: cat.title,\n totalNumActions: this.taskLibrary.filter(t => t.taskCategoryID === cat.taskCategoryID).length,\n numActionsAddedToScript: this.taskLibrary.filter(t => {\n return (\n t.taskCategoryID === cat.taskCategoryID &&\n this.selectedActionPlan.scriptID in t.scripts\n );\n }).length\n };\n }\n });\n\n return decoratedActionCategories;\n }\n\n @Watch(\"showModal\")\n private onShowModalChanged(): void {\n this.isModalShown = this.showModal;\n }\n\n @Watch(\"actionsPlans\")\n @Watch(\"taskLibrary\")\n private initActionsInActionPlansByCategoryPlaceholder(): void {\n this.actionsInActionPlansByCategory = {};\n // 1st level nesting by action plan ID\n this.actionPlans.forEach(p => {\n // 2nd level nesting by action category id\n this.taskLibrary\n .filter(task => p.scriptID in task.scripts)\n .map(task => task.taskCategoryID)\n .filter((value, index, self) => self.indexOf(value) === index)\n .forEach(categoryID => {\n\n if (!this.actionsInActionPlansByCategory[p.scriptID]) {\n this.actionsInActionPlansByCategory[p.scriptID] = {};\n }\n this.actionsInActionPlansByCategory[p.scriptID][categoryID] = this.taskLibrary.filter(\n task => p.scriptID in task.scripts && task.taskCategoryID === categoryID\n );\n });\n });\n }\n\n @Watch(\"actionsInActionPlansByCategory\")\n private initActionCategoriesExpandedState(): void {\n this.actionPlans.forEach(actionPlan => {\n if (!this.actionCategoriesExpandedState[actionPlan.scriptID]) {\n Vue.set(this.actionCategoriesExpandedState, actionPlan.scriptID, {});\n }\n\n if (this.actionsInActionPlansByCategory[actionPlan.scriptID]) {\n Object.entries(this.actionsInActionPlansByCategory[actionPlan.scriptID]).forEach(\n ([categoryID, _]) => {\n Vue.set(this.actionCategoriesExpandedState[actionPlan.scriptID], categoryID, true);\n }\n );\n }\n });\n }\n\n private actionPlanCategories(scriptId: number): ScriptCategoryLink[] {\n const actionPlanTasksInScript = this.actionsInActionPlansByCategory[scriptId];\n const unorderedActionPlanTasks = orderBy(actionPlanTasksInScript, category => category.taskCategoryID, [\"asc\"]);\n const unorderedCategories: ActionPlanTask[] = [].concat.apply([], unorderedActionPlanTasks);\n\n let orderedCategories: ScriptCategoryLink[] = [];\n\n if (!this.isReorderCategoriesEnabled) {\n let unorderedCategoryLinks: ScriptCategoryLink[] = [];\n\n unorderedCategories.forEach((actionPlanTask: ActionPlanTask) => {\n if (!unorderedCategoryLinks.some(x => x.taskCategoryId === actionPlanTask.taskCategoryID)) {\n let unorderedCategoryToAdd: ScriptCategoryLink = {\n scriptId: scriptId,\n taskCategoryId: actionPlanTask.taskCategoryID,\n order: null\n };\n\n unorderedCategoryLinks.push(unorderedCategoryToAdd)\n }\n });\n return unorderedCategoryLinks;\n } else {\n unorderedCategories.forEach((actionPlanTask: ActionPlanTask) => {\n // Default ScriptCategoryLinkOrder to use if the ScriptCategoryLink cannot be obtained\n const scriptCategoryLinkOrderDefault = 100;\n\n let scriptCategoryLink = this.getScriptCategoryLinkById(scriptId, actionPlanTask.taskCategoryID);\n let scriptCategoryLinkOrder: number = scriptCategoryLinkOrderDefault;\n\n if (scriptCategoryLink != null) {\n scriptCategoryLinkOrder = scriptCategoryLink.order\n }\n\n actionPlanTask.scriptCategoryLink = scriptCategoryLink;\n\n if (!orderedCategories.some(x => x.taskCategoryId === actionPlanTask.taskCategoryID)) {\n let orderedCategoryToAdd: ScriptCategoryLink = {\n scriptId: scriptId,\n taskCategoryId: actionPlanTask.taskCategoryID,\n order: scriptCategoryLinkOrder\n };\n\n orderedCategories.push(orderedCategoryToAdd)\n }\n });\n }\n\n return orderBy(orderedCategories, category => category.order, [\"asc\"]);\n }\n\n private getScriptCategoryLinkById(scriptId: number, taskCategoryId: number): ScriptCategoryLink {\n const scriptCategoryLinks: ScriptCategoryLink[] = this.scriptCategoryLinks;\n let scriptCategoryLink = null;\n\n if (scriptCategoryLinks) {\n scriptCategoryLink = scriptCategoryLinks.find(x => x.scriptId === scriptId && x.taskCategoryId === taskCategoryId);\n }\n\n return scriptCategoryLink;\n }\n\n private setDefaultSelectedActionPlan(): void {\n if (this.actionPlans.length > 0) {\n this.selectedActionPlan = this.actionPlans[0];\n }\n }\n\n private collapseCategory(actionCategoryID: number): void {\n Vue.set(this.actionCategoriesExpandedState[this.selectedActionPlan.scriptID], actionCategoryID, false);\n }\n\n private expandCategory(actionCategoryID: number): void {\n Vue.set(this.actionCategoriesExpandedState[this.selectedActionPlan.scriptID], actionCategoryID, true);\n }\n\n private orderedActionPlanByCategory(scriptId: number, categoryId: number): ActionPlanTask[] {\n const unorderedActions = this.actionsInActionPlansByCategory[scriptId][categoryId] as ActionPlanTask[];\n return orderBy(unorderedActions, action => action.scripts[scriptId].order, [\"asc\"]);\n }\n \n @Emit(\"actionPlanSelected\")\n private actionPlanSelected(): ActionPlan {\n const selectedActionPlan = {...this.selectedActionPlan};\n this.setDefaultSelectedActionPlan();\n this.isModalShown = false;\n return selectedActionPlan;\n }\n\n @Emit(\"closeModal\")\n private closeModal(): void {\n this.setDefaultSelectedActionPlan();\n return;\n }\n\n // Ok and Cancel handled by closeModal\n // but headerclose (x button top right) will need to be triggered.\n private hideModal(bvEvent: BvModalEvent): void {\n const headerCloseTrigger = \"headerclose\";\n if (bvEvent.trigger === headerCloseTrigger) {\n this.setDefaultSelectedActionPlan();\n this.$emit(\"closeModal\");\n } \n }\n}\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionPlansModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionPlansModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ActionPlansModal.vue?vue&type=template&id=a31b23bc&scoped=true\"\nimport script from \"./ActionPlansModal.vue?vue&type=script&lang=ts\"\nexport * from \"./ActionPlansModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ActionPlansModal.vue?vue&type=style&index=0&id=a31b23bc&prod&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 \"a31b23bc\",\n null\n \n)\n\nexport default component.exports","\nimport { Component, Emit, Prop, Vue, Watch } from 'vue-property-decorator';\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport vSelect from \"vue-select\";\nimport { parseTaskText } from '@/filters';\nimport { BModal } from 'bootstrap-vue';\nimport ConfirmationModal from '@/components/mobile-raise-templates/ConfirmationModal.vue';\nimport ActionPlansModal from \"./ActionPlansModal.vue\"\nimport { ActionPlan } from '@/store/tasks/types';\n\n@Component({\n components: {\n \"vue-select\": vSelect,\n \"vue-perfect-scrollbar\": VuePerfectScrollbar,\n \"b-modal\": BModal,\n \"action-plans-modal\": ActionPlansModal,\n \"confirmation-modal\": ConfirmationModal\n },\n filters: {\n parseTaskText\n }\n})\nexport default class ActionPlansOverrideModal extends Vue {\n\n @Prop({ type: Boolean, default: false })\n private showModal: boolean;\n\n private isModalShown: boolean = false;\n private isConfirmationModalShown: boolean = false;\n private selectedActionPlan: ActionPlan | null = null;\n\n @Watch(\"showModal\")\n public onShowModalChanged(): void {\n this.isModalShown = this.showModal;\n }\n\n @Emit(\"closeModal\")\n private closeModal(): void {\n return;\n }\n \n public actionPlanSelected(actionPlan: ActionPlan): void {\n this.selectedActionPlan = actionPlan;\n this.isModalShown = false;\n this.isConfirmationModalShown = true;\n }\n\n public confirmActionPlanSelectedClosed(): void {\n this.isConfirmationModalShown = false;\n this.isModalShown = true;\n }\n\n public confirmActionPlanSelectedConfirmed(): void {\n this.$emit(\"actionPlanSelected\", {...this.selectedActionPlan});\n this.isConfirmationModalShown = false;\n this.selectedActionPlan = null;\n }\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionPlansOverrideModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionPlansOverrideModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ActionPlansOverrideModal.vue?vue&type=template&id=0f82fc49&scoped=true\"\nimport script from \"./ActionPlansOverrideModal.vue?vue&type=script&lang=ts\"\nexport * from \"./ActionPlansOverrideModal.vue?vue&type=script&lang=ts\"\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 \"0f82fc49\",\n null\n \n)\n\nexport default component.exports","import { axiosJsonInstance } from \"@/axios.instance\";\r\nimport { AxiosInstance } from \"axios\";\r\n\r\nclass EventTasksApi {\r\n\tprivate axiosJson: AxiosInstance;\r\n\r\n\tconstructor() {\r\n\t\tthis.axiosJson = axiosJsonInstance;\r\n\t}\r\n\r\n\tpublic async overrideActionPlan(eventId: number, actionPlanId: number): Promise {\r\n\t\tawait this.axiosJson.post(`/Tasks/OverrideActionPlan`, {\r\n\t\t\teventId,\r\n\t\t\tactionPlanId\r\n\t\t});\r\n\t}\r\n}\r\n\r\nconst eventTasksApi = new EventTasksApi();\r\nexport default eventTasksApi;","\nimport { Component, Watch, Vue } from \"vue-property-decorator\";\nimport { Getter, namespace } from \"vuex-class\";\n\nimport { ActionPlan, EventTask } from \"@/store/tasks/types\";\n\nimport AddNewEventTask from \"./AddNewEventTask.vue\";\nimport MultipleAssignToAction from \"./MultipleAssignToAction.vue\";\nimport ActionLibrarySimpleList from \"./ActionLibrarySimpleList.vue\";\nimport EventTaskGroup from \"@/components/tasks/EventTaskGroup.vue\";\n\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport { UserPermissions } from \"@/store/types\";\n\nimport { stringMixin } from \"@/mixins\";\nimport ActionPlansOverrideModal from \"@/components/action-plans/ActionPlansOverrideModal.vue\";\nimport eventTasksApi from \"@/services/api.eventTasks.service\";\n\nconst Tasks = namespace(\"tasks\");\nconst SiteMonitor = namespace(\"siteMonitor\");\n\nconst { isNullOrWhitespace } = stringMixin.methods;\n\n// @note\n// Entity called \"Action\" used to be called \"Task\", and is still\n// Called \"Task\" in API and UI internals. For display purposes\n// \"tasks\" are \"actions\", please use the new terminology\n// whenver doing new work, sorry for the confusion.\n\n@Component({\n\tcomponents: {\n\t\t\"add-new-event-task\": AddNewEventTask,\n\t\t\"multiple-assign\": MultipleAssignToAction,\n\t\t\"action-library-simple-list\": ActionLibrarySimpleList,\n\t\t\"event-task-group\": EventTaskGroup,\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\n\t\t\"action-plans-override-modal\": ActionPlansOverrideModal\n\t}\n})\nexport default class TaskContainer extends Vue {\n\t$refs!: {\n\t\tactionLibrary: any;\n\t\tactionLibraryList: any;\n\t};\n\n\t@Getter(\"getPermissions\") permissions: UserPermissions;\n\t@Getter(\"getCanAddIndividualActionsOverride\") canAddIndividualActionsOverride: boolean;\n\t@Getter getFeature: (featureList: string[]) => boolean;\n\n\t@Tasks.Getter(\"getTaskTypes\") taskTypes: any;\n\t@Tasks.Getter(\"getEventTasks\") eventTasks: any;\n\t@Tasks.Getter selectedActions: any;\n\n\t@Tasks.Action(\"fetchTaskTypes\") private fetchTaskTypes: () => Promise;\n\t@Tasks.Action fetchEventTasks: (payload: { eventId: number }) => Promise;\n\t@Tasks.Action assignUserToTaskCategory: any;\n\t@Tasks.Action addTaskToEvent: any;\n\n\t@Tasks.Mutation toggleActionListModal: any;\n\n\t@SiteMonitor.Mutation setActivity: () => void;\n\t@SiteMonitor.Getter(\"getEventShare\") eventShares!: any[];\n\n\t/**\n\t * The binding for a new category title when creating one\n\t */\n\tprivate newTaskCategoryTitle: string = \"\";\n\n\t/**\n\t * Indicates that we're creating a new category & action\n\t */\n\tprivate addingNewTaskToNewGroup: boolean = false;\n\n\t/**\n\t * Indicates that the new task being added is required\n\t */\n\tprivate isNewTaskRequired: boolean = false;\n\n\t/**\n\t * Indicates that the task category title is invalid, and should show\n\t * the error animation\n\t */\n\tprivate hasValidationErrors: boolean = false;\n\tprivate showErrorAnimation: boolean = false;\n\n\tprivate updateTimeout: NodeJS.Timer | null = null;\n\tprivate isDestroyed: boolean = false;\n\tprivate focusedActionTask: string = null;\n\tprivate showActionPlansModal: boolean = false;\n\tprivate loadingActions: boolean = false;\n\n\t/** Computed Props */\n\n\t/**\n\t * Gets the event ID for the current event, based on our route.\n\t */\n\tpublic get eventId() {\n\t\treturn parseInt(this.$route.params.eventId);\n\t}\n\n\t/**\n\t * Checks if the task category currently being added (if any), is valid.\n\t */\n\tpublic get isTaskCategoryTitleValid() {\n\t\treturn isNullOrWhitespace(this.newTaskCategoryTitle);\n\t}\n\n\t/**\n\t * Checks if the user has permission to add individual actions, or just action groups.\n\t */\n\tpublic get canAddIndividualActions() {\n\t\treturn this.canAddIndividualActionsOverride ? true : this.permissions.canAddIndividualActions;\n\t}\n\t\n\tprivate get canOverrideActionPlans(): boolean {\n\t\treturn this.getFeature([\"Actions\", \"ActionPlanOrdering\", \"EnableActionPlanOverride\"]) && this.permissions.canOverrideEventActionPlan;\n\t}\n\n\t/** Methods */\n\n\t/**\n\t * Mounted lifecycle handler, sets up our poll to fetch updated event tasks and resets component state.\n\t */\n\tpublic async mounted() {\n\t\tthis.isDestroyed = false;\n\t\tawait this.fetchTaskTypes();\n\t\tthis.reset();\n\t\tthis.$refs.actionLibrary.hide();\n\t\tthis.updateEventTasks();\n\t}\n\n\t/**\n\t * Before Destroyed lifecycle handler, clears the update poll.\n\t */\n\tpublic beforeDestroy() {\n\t\tthis.isDestroyed = true;\n\t\tif (this.updateTimeout != null) clearTimeout(this.updateTimeout);\n\t}\n\n\t/**\n\t * Performs a poll to fetch updated event tasks on a 5 second interval.\n\t */\n\t@Watch(\"getTaskTypes\", { deep : true })\n\tpublic async updateEventTasks(): Promise {\n\t\tthis.updateTimeout = null;\n\t\t// @todo investigate, move to store\n\t\tif (this.eventId && !this.isDestroyed) {\n\t\t\tawait this.fetchEventTasks({eventId: this.eventId}).then(() => {\n\t\t\t\tif (!this.isDestroyed) this.updateTimeout = setTimeout(() => this.updateEventTasks(), 5000);\n\t\t\t});\n\t\t}\n\t}\n\n\t@Watch(\"newTaskCategoryTitle\")\n\tprivate onTaskTitleChange() {\n\t\tthis.setActivity();\n\t}\n\n\t/**\n\t * Resets the state of the inputs within the component.\n\t */\n\tprivate reset() {\n\t\tthis.addingNewTaskToNewGroup = false;\n\t\tthis.newTaskCategoryTitle = \"\";\n\t\tthis.setActivity();\n\t}\n\n\t/**\n\t * Opens up the action list modal so our user can add actions/action plans to the current event.\n\t */\n\tpublic onAddNewTaskToGroupFromLibrary() {\n\t\tthis.reset();\n\t\tthis.toggleActionListModal();\n\t\tthis.$refs.actionLibrary.show();\n\t}\n\n\t/**\n\t * Adds the tasks the user has selected in the action plan modal to the current event.\n\t */\n\tpublic onAddTasksToGroupFromLibrary() {\n\t\tthis.$refs.actionLibraryList.selectedActions.forEach(action => {\n\t\t\tlet newEventTask: EventTask = {\n\t\t\t\t...action,\n\t\t\t\trequired: this.isNewTaskRequired\n\t\t\t};\n\n\t\t\tthis.onSaveTask(newEventTask, false);\n\t\t});\n\n\t\tthis.$refs.actionLibrary.hide();\n\t\tthis.setActivity();\n\t}\n\n\t/**\n\t * Handler for when the user wishes to add an entirely new group and task.\n\t */\n\tpublic onAddNewTaskToNewGroup() {\n\t\tthis.reset();\n\t\tthis.addingNewTaskToNewGroup = true;\n\t\tthis.setActivity();\n\t}\n\n\t/**\n\t * Handler for when the user clicks the 'cancel' button in the action plan modal.\n\t */\n\tpublic onCancelAddNewTaskToGroupFromLibrary() {\n\t\tthis.reset();\n\t\tthis.$refs.actionLibrary.hide();\n\t\tthis.setActivity();\n\t}\n\n\t/**\n\t * Handler for when the user saves a task/group that they're adding in the container.\n\t */\n\tpublic onSaveTask(task: EventTask, newGroup: boolean) {\n\t\tif (!newGroup || !isNullOrWhitespace(this.newTaskCategoryTitle)) {\n\t\t\tthis.addTaskToEvent({\n\t\t\t\ttask,\n\t\t\t\teventId: this.eventId\n\t\t\t});\n\n\t\t\tthis.reset();\n\t\t\tthis.setActivity();\n\t\t} else {\n\t\t\tthis.hasValidationErrors = true;\n\t\t\tthis.showErrorAnimation = true;\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.showErrorAnimation = false;\n\t\t\t}, 1000);\n\t\t}\n\t}\n\n\tprivate get taskList() {\n\t\tif(!this.eventTasks || this.eventTasks.length === 0)\n\t\t\treturn [];\n\n\t\treturn this.eventTasks.map(taskGroup => {\n\t\t\treturn taskGroup.tasks.map((task) => {\n\t\t\t\treturn {...task, taskGroupRef: taskGroup.title + taskGroup.index}\n\t\t\t});\n\t\t})\n\t\t.flat(1) //converts the array to a 1 dimensional object array\n\t\t.map((task, index) => {return {...task, index: index}});\n\t}\n\n\tprivate async focusOnIncompletedGroup() {\n\t\tif(!this.eventTasks || this.eventTasks.length === 0)\n\t\t\treturn;\n\n\t\tlet incompleteTasks = this.taskList.filter(task => !task.completed);\n\n\t\tif(this.focusedActionTask){\n\t\t\tlet currentActionTask = this.taskList.find(task => task.eventTaskID === this.focusedActionTask);\n\t\t\tconst tasksAfter = currentActionTask ? currentActionTask.index : -1;\n\n\t\t\tif (!(incompleteTasks && incompleteTasks.length === 1 && incompleteTasks[0].eventTaskID === this.focusedActionTask)){\n\t\t\t\tlet filteredTasks = incompleteTasks.filter(task => task.index > tasksAfter);\n\n\t\t\t\t//If not uncompleted tasks after, check before\n\t\t\t\tif(!filteredTasks || filteredTasks.length === 0)\n\t\t\t\t\tfilteredTasks.filter(task => task.index < tasksAfter);\n\n\t\t\t\t//only set if we have another task otherwise let it remain on the only incompleted task\n\t\t\t\tif(filteredTasks.length > 0)\n\t\t\t\t\tincompleteTasks = filteredTasks;\n\t\t\t}\n\t\t}\n\n\t\t//If we don't have any uncompleted tasks left return to the first task\n\t\tvar nextTask = incompleteTasks.find(task => !task.completed);\n\t\tif(!nextTask)\n\t\t\tnextTask = this.taskList[0];\n\n\t\tconst groupRef = this.$refs[nextTask.taskGroupRef][0];\n\t\tif(!groupRef)\n\t\t\treturn;\n\n\t\t//find the ref and focus\n\t\tconst taskRef = groupRef.$refs[\"eventTask-\"+ nextTask.eventTaskID][0];\n\t\tif(!taskRef)\n\t\t\treturn;\n\n\t\tthis.focusedActionTask = nextTask.eventTaskID;\n\t\ttaskRef.focus();\n\t}\n\n\tprivate focusTask(value: string){\n\t\tthis.focusedActionTask = value;\n\t}\n\n\tprivate openActionPlansModal(): void {\n\t\tthis.showActionPlansModal = true;\n\t}\n\n\tprivate async onNewActionPlanSelected(plan: ActionPlan): Promise {\n\t\tthis.loadingActions = true;\n\t\tawait eventTasksApi.overrideActionPlan(this.eventId, plan.scriptID);\n\t\tawait this.updateEventTasks().then(() => {\n\t\t\tsetTimeout(() => this.loadingActions = false, 5000)\n\t\t});\n\t\tthis.closeActionPlansModal();\n\t}\n\n\tprivate closeActionPlansModal(): void {\n\t\tthis.showActionPlansModal = false;\n\t}\n}\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventTaskContainer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventTaskContainer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventTaskContainer.vue?vue&type=template&id=7487bf44&scoped=true\"\nimport script from \"./EventTaskContainer.vue?vue&type=script&lang=ts\"\nexport * from \"./EventTaskContainer.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventTaskContainer.vue?vue&type=style&index=0&id=7487bf44&prod&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 \"7487bf44\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinkingCamera.vue?vue&type=style&index=0&id=28e72572&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetupOverviewCamera.vue?vue&type=style&index=0&id=7085f22f&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-button',{attrs:{\"title\":_vm.autoFeedTooltipMessage,\"variant\":_vm.autoFeedVariantProp,\"data-cy\":\"auto-feed-button\"},on:{\"click\":function($event){return _vm.toggleAutoFeed()}}},[_c('span',[_c('i',{staticClass:\"far fa-infinity fa-lg\"})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport Vue from \"vue\";\r\nimport { Component } from \"vue-property-decorator\";\r\nimport { Mutation, State } from \"vuex-class\";\r\n\r\nconst autoFeedEnabledMessage = \"Auto Feed Enabled: Closing this event will take you to the next in the queue\";\r\nconst autoFeedDisabledMessage = \"Auto Feed Disabled: Closing this event will take you back to the queue\";\r\n\r\n@Component\r\nexport default class AutoFeedAlarms extends Vue {\r\n\t@State autoFeedAlarms: boolean;\r\n\t@Mutation toggleAutoFeedAlarms: () => void;\r\n\r\n\tprivate toggleAutoFeed(): void {\r\n\t\tthis.toggleAutoFeedAlarms();\r\n\t}\r\n\r\n\tprivate get autoFeedVariantProp(): string {\r\n\t\treturn this.autoFeedAlarms ? \"primary\" : \"secondary\";\r\n\t}\r\n\r\n\tprivate get autoFeedTooltipMessage(): string {\r\n\t\treturn this.autoFeedAlarms ? autoFeedEnabledMessage : autoFeedDisabledMessage;\r\n\t}\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoFeedAlarms.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AutoFeedAlarms.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AutoFeedAlarms.vue?vue&type=template&id=cc9182d8\"\nimport script from \"./AutoFeedAlarms.vue?vue&type=script&lang=ts\"\nexport * from \"./AutoFeedAlarms.vue?vue&type=script&lang=ts\"\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 null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventEnded.vue?vue&type=style&index=0&id=01d6c498&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TourSetupModal.vue?vue&type=style&index=0&id=62c49b28&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdvancedAreaSearch.vue?vue&type=style&index=0&id=b61668d0&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventSearch.vue?vue&type=style&index=1&id=88cefba4&prod&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventQueueAreaInfoIcon.vue?vue&type=style&index=0&id=502bfa0b&prod&scoped=true&lang=scss\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AreaEventHistory.vue?vue&type=style&index=0&id=2332a878&prod&lang=scss&scoped=true\"","import { axiosInstance } from \"@/axios.instance\";\r\n\r\nclass ImmixCloudV2ApiHttpCCure {\r\n\tprivate axios: any;\r\n\tconstructor() {\r\n\t\tthis.axios = axiosInstance;\r\n\t}\r\n\r\n\tpublic async postLogMessageAll(\r\n\t\tpredefinedMessage: string,\r\n\t\tfreeFormMessage: string,\r\n\t\teventID: number | string\r\n\t): Promise {\r\n\t\treturn this.axios.post(\"/CCure/Log/All\", {\r\n\t\t\tPredefinedMessage: predefinedMessage,\r\n\t\t\tFreeFormMessage: freeFormMessage,\r\n\t\t\tEventID: eventID\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async postLogMessage(\r\n\t\teventRecordID: number | string,\r\n\t\tpredefinedMessage: string,\r\n\t\tfreeFormMessage: string,\r\n\t\teventID: number | string\r\n\t): Promise {\r\n\t\treturn this.axios.post(`/CCure/Log/${eventRecordID}`, {\r\n\t\t\tPredefinedMessage: predefinedMessage,\r\n\t\t\tFreeFormMessage: freeFormMessage,\r\n\t\t\tEventID: eventID\r\n\t\t});\r\n\t}\r\n\r\n\tpublic async resetActions(eventRecordID: any) {\r\n\t\treturn this.axios.get(`/CCure/ResetActions/${eventRecordID}`);\r\n\t}\r\n\r\n\tpublic async resetAllActions(eventID: any) {\r\n\t\treturn this.axios.get(`/CCure/ResetAllActions/${eventID}`);\r\n\t}\r\n\r\n\tpublic async resetAllActionsWithRegion(eventID: any, regionID: any) {\r\n\t\treturn this.axios.get(`/CCure/ResetAllActions/${eventID}/${regionID}`);\r\n\t}\r\n}\r\n\r\nconst ccureapi = new ImmixCloudV2ApiHttpCCure();\r\nexport default ccureapi;\r\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MatrixContainer.vue?vue&type=style&index=0&id=4693b3e9&prod&scoped=true&lang=scss\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FieldOps.vue?vue&type=style&index=1&id=084e4ba4&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SubscriptionDetails.vue?vue&type=style&index=1&id=ff66e8d0&prod&lang=scss\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"event-ended-container\",class:{'hide': !_vm.showOverlay}},[_c('div',{staticClass:\"card text-white bg-danger mb-3\"},[_c('div',{staticClass:\"card-body\"},[_c('h4',{staticClass:\"card-title\"},[_vm._v(\"Event Closed\")]),_c('div',{staticClass:\"card-text\"},[_vm._v(\" This event has ended, or you have been removed.\"),_c('br'),(_vm.isFullUser)?_c('div',[_c('a',{staticClass:\"btn btn-secondary float-right\",on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"OK\")])]):_vm._e()])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { Mutation, namespace, Getter } from 'vuex-class';\r\n\r\nconst SiteMonitor = namespace('siteMonitor');\r\n\r\n@Component({})\r\nexport default class ErrorWarning extends Vue {\r\n @Getter isFullUser: boolean;\r\n @SiteMonitor.Getter('getEventNoPermission') showOverlay!: boolean;\r\n\r\n close() {\r\n this.$router.push({ path: '/event-queue' });\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventEnded.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventEnded.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EventEnded.vue?vue&type=template&id=01d6c498&scoped=true\"\nimport script from \"./EventEnded.vue?vue&type=script&lang=ts\"\nexport * from \"./EventEnded.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EventEnded.vue?vue&type=style&index=0&id=01d6c498&prod&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 \"01d6c498\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-modal',{ref:\"restoreModal\",attrs:{\"id\":\"restoreModal\",\"size\":\"sm\",\"centered\":\"\",\"role\":\"dialog\",\"title\":\"Force Restore\"},on:{\"hidden\":_vm.cancel}},[(_vm.forceRestoreEventRecord != null)?_c('div',[_vm._v(\" Are you sure you wish to force restore \"+_vm._s(_vm.forceRestoreEventRecord.details)+\"? \"),_c('div',{staticClass:\"form-group restore-reason-form\"},[_c('label',[_vm._v(\"Reason: \")]),_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.restoralReason),expression:\"restoralReason\"}],staticClass:\"custom-textarea\",attrs:{\"placeholder\":\"Reason for forcing restoral\",\"max\":\"5000\"},domProps:{\"value\":(_vm.restoralReason)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.restoralReason=$event.target.value}}})])]):_vm._e(),_c('template',{slot:\"modal-footer\"},[_c('a',{staticClass:\"btn btn-secondary pull-right ksConfirm\",class:{'disabled': _vm.restoralReason.length == 0},attrs:{\"data-dismiss\":\"modal\",\"disabled\":_vm.restoralReason.length == 0},on:{\"click\":function($event){return _vm.ok()}}},[_vm._v(\"OK\")]),_c('a',{staticClass:\"btn btn-secondary pull-right\",attrs:{\"data-dismiss\":\"modal\"},on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(\"Cancel\")])])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Watch, Prop } from 'vue-property-decorator';\r\nimport { namespace } from 'vuex-class';\r\nimport Multiselect from 'vue-multiselect';\r\nimport { EventRecord } from '@/store/site-monitor/types';\r\nimport api from '../services/api.service';\r\n\r\nconst SiteMonitor = namespace('siteMonitor');\r\n\r\n@Component({\r\n components: {\r\n 'multiselect': Multiselect\r\n }\r\n})\r\nexport default class EventLeave extends Vue {\r\n @Prop(String) eventid?: string;\r\n\r\n @SiteMonitor.Getter('getForceRestoreEventRecord') forceRestoreEventRecord!: any;\r\n @SiteMonitor.Mutation setForceRestoreEventRecord: any;\r\n @SiteMonitor.Mutation forceRestore: any;\r\n\r\n $refs!: {\r\n restoreModal: any;\r\n };\r\n\r\n restoralReason: string = \"\";\r\n \r\n @Watch(\"forceRestoreEventRecord\")\r\n onEventRaiseShownChanged(value: EventRecord | null, oldValue: EventRecord | null) {\r\n if (value) {\r\n this.restoralReason = \"\";\r\n this.$refs.restoreModal.show();\r\n } else {\r\n this.$refs.restoreModal.hide();\r\n }\r\n }\r\n\r\n created() {\r\n this.setForceRestoreEventRecord(null);\r\n }\r\n\r\n ok() {\r\n if (this.restoralReason.length > 0) {\r\n api.forceRestore({\r\n eventRecordID: this.forceRestoreEventRecord.eventRecordID,\r\n restoralReason: this.restoralReason\r\n }).then((response) => {\r\n this.restoralReason = \"\";\r\n this.setForceRestoreEventRecord(null);\r\n });\r\n }\r\n }\r\n\r\n cancel() {\r\n this.setForceRestoreEventRecord(null);\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ForceRestore.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ForceRestore.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ForceRestore.vue?vue&type=template&id=427c0240&scoped=true\"\nimport script from \"./ForceRestore.vue?vue&type=script&lang=ts\"\nexport * from \"./ForceRestore.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ForceRestore.vue?vue&type=style&index=0&id=427c0240&prod&scoped=true&lang=scss\"\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 \"427c0240\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.btnType,{tag:\"component\",attrs:{\"title\":_vm.title,\"href\":_vm.ahref,\"data-sv-button\":\"\"},on:{\"click\":_vm.debouncedFunction}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n/*\r\nSVButton Component\r\nThis is a reusable button component that can be used instead of a standard