{"version":3,"sources":["webpack:///./src/components/device-setup/sync/GroupSyncHistory.vue?bb38","webpack:///./src/components/device-setup/tabs/ChildDeviceTabWrapper.vue?7ffe","webpack:///./src/components/device-setup/GetConfig.vue?1aa0","webpack:///./src/views/DeviceSetup.vue?8732","webpack:///./src/components/device-setup/tabs/ChildDeviceTabWrapper.vue?ab5f","webpack:///./src/components/device-setup/tables/ChildDeviceTable.vue?0e37","webpack:///./src/utils/cancellableQueryHelper.ts","webpack:///./src/components/device-setup/GetConfig.vue?484c","webpack:///./src/components/device-setup/tables/ChildDeviceTable.vue?9189","webpack:///./src/components/device-setup/tables/ChildDeviceTable.vue?ddce","webpack:///./src/components/device-setup/tables/ChildDeviceTable.vue","webpack:///./src/components/device-setup/tabs/ChildDeviceTabWrapper.vue?cbfe","webpack:///./src/components/device-setup/tabs/ChildDeviceTabWrapper.vue?6965","webpack:///./src/components/device-setup/tabs/ChildDeviceTabWrapper.vue","webpack:///./src/components/device-setup/editing/ChildDeviceEdit.vue?c931","webpack:///./src/components/device-setup/editing/AudioEdit.vue?187b","webpack:///./src/components/device-setup/editing/ChildDeviceEditMixin.ts","webpack:///./src/components/device-setup/editing/AudioEdit.vue?6236","webpack:///./src/components/device-setup/editing/AudioEdit.vue?803e","webpack:///./src/components/device-setup/editing/AudioEdit.vue","webpack:///./src/components/device-setup/editing/CameraEdit.vue?e5a5","webpack:///./src/components/device-setup/editing/PresetEdit.vue?7d28","webpack:///./src/components/device-setup/editing/PresetEdit.vue?6906","webpack:///./src/components/device-setup/editing/PresetEdit.vue?473b","webpack:///./src/components/device-setup/editing/PresetEdit.vue","webpack:///./src/components/device-setup/editing/CameraEdit.vue?2ad6","webpack:///./src/components/device-setup/editing/CameraEdit.vue?83bf","webpack:///./src/components/device-setup/editing/CameraEdit.vue","webpack:///./src/components/device-setup/editing/RelayEdit.vue?3a48","webpack:///./src/components/device-setup/editing/RelayEdit.vue?bd0f","webpack:///./src/components/device-setup/editing/RelayEdit.vue?f2e4","webpack:///./src/components/device-setup/editing/RelayEdit.vue","webpack:///./src/components/device-setup/editing/ChildDeviceEdit.vue?8df5","webpack:///./src/components/device-setup/editing/ChildDeviceEdit.vue?d8b3","webpack:///./src/components/device-setup/editing/ChildDeviceEdit.vue","webpack:///./src/components/device-setup/confirmation-modals/DeleteChildDeviceModal.vue?5e53","webpack:///./src/components/device-setup/confirmation-modals/DeleteChildDeviceModal.vue?711e","webpack:///./src/components/device-setup/confirmation-modals/DeleteChildDeviceModal.vue?090b","webpack:///./src/components/device-setup/confirmation-modals/DeleteChildDeviceModal.vue","webpack:///./src/components/device-setup/tables/DeviceTable.vue?56e5","webpack:///./src/components/device-setup/confirmation-modals/DeleteDeviceModal.vue?f63a","webpack:///./src/components/device-setup/confirmation-modals/DeleteDeviceModal.vue?494e","webpack:///./src/components/device-setup/confirmation-modals/DeleteDeviceModal.vue?c959","webpack:///./src/components/device-setup/confirmation-modals/DeleteDeviceModal.vue","webpack:///./src/components/device-setup/tables/DeviceTable.vue?f07f","webpack:///./src/components/device-setup/tables/DeviceTable.vue?b9ea","webpack:///./src/components/device-setup/tables/DeviceTable.vue","webpack:///./src/components/setup/alarm-setup/DeviceAlarmSetup.vue?33e0","webpack:///./src/components/setup/alarm-setup/DeviceAlarmSetup.vue?e406","webpack:///./src/components/setup/alarm-setup/DeviceAlarmSetup.vue?5adb","webpack:///./src/components/setup/alarm-setup/DeviceAlarmSetup.vue","webpack:///./src/components/device-setup/sync/SyncTable.vue?db45","webpack:///./src/components/device-setup/sync/SyncTable.vue?7833","webpack:///./src/components/device-setup/sync/SyncTable.vue?d841","webpack:///./src/components/device-setup/sync/SyncTable.vue","webpack:///./src/components/device-setup/ServerModal.vue?4e51","webpack:///./src/components/device-setup/editing/DeviceEdit.vue?e522","webpack:///./src/components/device-setup/editing/DeviceEdit.vue?6d3d","webpack:///./src/components/device-setup/editing/DeviceEdit.vue?373f","webpack:///./src/components/device-setup/editing/DeviceEdit.vue","webpack:///./src/components/device-setup/GetConfig.vue?09b6","webpack:///./src/types/sv-data/devices/SyncSystem.ts","webpack:///./src/components/device-setup/GetConfig.vue?9536","webpack:///./src/components/device-setup/GetConfig.vue","webpack:///./src/components/device-setup/sync/SyncEdit.vue?e777","webpack:///./src/components/device-setup/sync/SyncEdit.vue?6337","webpack:///./src/components/device-setup/sync/SyncEdit.vue?4102","webpack:///./src/components/device-setup/sync/SyncEdit.vue","webpack:///./src/components/device-setup/sync/GroupSync.vue?fa16","webpack:///./src/components/device-setup/sync/GroupSyncHistory.vue?b6ac","webpack:///./src/components/device-setup/sync/GroupSyncHistory.vue?d46b","webpack:///./src/components/device-setup/sync/GroupSyncHistory.vue?baa5","webpack:///./src/components/device-setup/sync/GroupSyncHistory.vue","webpack:///./src/components/device-setup/sync/GroupSync.vue?5c9f","webpack:///./src/components/device-setup/sync/GroupSync.vue?4974","webpack:///./src/components/device-setup/sync/GroupSync.vue","webpack:///./src/components/device-setup/ServerModal.vue?0c50","webpack:///./src/components/device-setup/ServerModal.vue?2262","webpack:///./src/components/device-setup/ServerModal.vue","webpack:///./src/views/DeviceSetup.vue?63e1","webpack:///./src/views/DeviceSetup.vue?a928","webpack:///./src/views/DeviceSetup.vue","webpack:///./src/components/device-setup/tables/DeviceTable.vue?13c0","webpack:///./src/components/device-setup/sync/GroupSync.vue?e0f8","webpack:///./src/components/device-setup/sync/GroupSyncHistory.vue?37c5","webpack:///./src/components/device-setup/editing/ChildDeviceEdit.vue?5aa4","webpack:///./src/components/device-setup/sync/SyncEdit.vue?af17","webpack:///./src/components/device-setup/ServerModal.vue?e7de","webpack:///./src/components/setup/alarm-setup/DeviceAlarmSetup.vue?20d0","webpack:///./src/views/DeviceSetup.vue?eeda","webpack:///./src/components/device-setup/tables/ChildDeviceTable.vue?0222"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","scopedSlots","_u","key","fn","on","$event","rerenderKey","proxy","model","value","callback","$$v","tabIndex","expression","_v","_s","totalSyncSystems","_e","deviceTypeCounts","devices","syncSetupEnabled","_l","childDeviceTypeId","alarms","deviceId","device","deviceID","title","handleCameraPreviewHidden","staticRenderFns","allowsDevices","tabLoaded","handleTabLoaded","class","getTitleText","deviceCount","toLocaleString","ref","isForAllServers","visible","deviceTypeIdentifier","readonly","updateDevices","isAddingWithOpsLink","handleSearchInput","searchTermPersisted","hasEditPermission","currentServer","syncSystemId","handleAddDevice","deviceTypeId","deviceTypes","Camera","isCameraDetectionAvailable","totalDevices","isTableBusy","recordsPageSizeMax","type","indexOf","_k","keyCode","onRecordsPerPageClick","recordsPageSizeUpdated","fields","sortBy","sortDesc","onSortChange","row","item","getPreviewImageSource","defaultReferenceShot","extraValue","isCameraEnabled","handlePreviewCameraClick","applianceOfflineNotification","hasEditPermissionToDevice","handleEditClick","handleDeleteClick","isLoading","staticStyle","recordsPageSize","onPageClick","recordsPage","getNewCancelTokenSource","cancelTokenSource","cancelExistingTokenSource","cancel","a","CancelToken","source","GetConfigStatus","Devices","SiteMonitor","childDeviceTitles","Audio","Output","Door","axiosCancelTokenSource","searchTerm","label","sortable","formatter","groupID","getGroupTitle","Promise","performSearch","created","addAllServersSpecificFields","addChildSpecificFields","tableIsForCameras","addActions","getDevices","Math","floor","length","checkCameraDetectionAvailability","mounted","pollApplianceServerAndDeviceServerDetails","beforeDestroy","stopPollingApplianceServerAndDeviceServerDetails","featuresList","includeReferenceShots","splice","push","getAudioCapability","sortByFormatted","getDeviceTitle","permissions","isSystemAdmin","isAccountAdmin","canEditSiteSetup","find","f","replace","queryParams","page","pageSize","serverId","serverID","queryIsForRelays","adjustQueryForRelays","cancellableQuery","params","fetchDevicesForAllGroupsByType","$notify","text","console","error","selectOutputs","Relay","UserGroups","ug","audioSettings","transmitEnabled","receiveEnabled","server","serversList","s","serverTitle","newDevice","deviceTypeID","setDevice","setCurrentDeviceTypeIdentifier","setEditChildDeviceModalVisibility","setCameraPreviewModalVisibility","setDeleteChildDeviceModalVisibility","previewBase64","isFeatureEnabled","getApplianceList","availableDetectors","event","groupSyncId","canOverrideGroupSync","required","Number","default","Boolean","Action","Mutation","State","Getter","ChildDeviceTable","components","SureViewIcon","OpsLinkCameraImport","serverTypes","some","st","numCameras","numAudioInputs","numRelays","serverType","serverTypeID","cameras","audios","doors","outputs","$refs","childDeviceTable","ChildDeviceTabWrapper","editChildDeviceModalVisible","handleModalHidden","deviceIsInvalid","handleSaveClick","preventDefault","handleSubmit","slot","creatingFromMainTab","isEditing","handleServerSelected","loading","handleServerSearch","selectedServer","$set","id","childDeviceComponent","tag","handleValidationChanged","handleDeviceDetailsChanged","cameraUsageDifference","isCameraSubscriptionValid","subscription","limitedSubscription","camerasLimit","deviceFromStore","setSettingsMetasIfNeeded","currentDeviceTypeIdentifier","cameraSettings","relaySettings","handleValidationChange","$invalid","deep","ChildDeviceEditMixin","originalAudioSettings","AudioEdit","validations","hasSettingsMetaChanged","advancedPTZIsEnabled","hasMatrixBuiltIn","qualityOptions","handleTelemetryEnabledInput","telemetryEnabled","telemetrySpeedOptions","presets","presetConfigFields","presetFieldIsInEditMode","field","position","presetPositionConflicts","toString","presetPositionErrorClass","dataType","name","presetTitleErrorClass","editing","creating","editPreset","allowedToUpdate","updatePreset","cancelEditPreset","deletePreset","allowedToSave","createPreset","cancelCreatePreset","currentlyCreating","addBlankPreset","nilNumber","filter","preset","editable","tdClass","getCameraPresets","presetsFromDb","map","presetNumber","undefined","isNaN","presetCheck","parseInt","presetToFind","presetValidityCSSClass","presetsBeingCreated","presetBeingCreated","remove","createOrUpdateCameraPreset","groupId","presetToRemove","deleteCameraPreset","removeWhere","newPreset","PresetEdit","originalCameraSettings","telemServerId","getFeature","CameraEdit","originalRelaySettings","RelayEdit","Subscription","childDeviceComponents","childDeviceIsInvalid","debounceSearch","component","searchServers","ChildDeviceEdit","filterServersListForDeviceType","notEnoughServersDisplayed","serversWithEnabledDeviceTypesParams","adjustQueryForDeviceType","getServersWithEnabledDeviceTypes","deviceServerNotInList","getServer","setInitialSelectedServer","isBillingEnabled","fetchSubscription","serversListFromStore","serverTypesForThisDeviceType","toLowerCase","includes","serverTypesFromStore","selectedServerChange","deviceType","invalid","input1","$v","dataUnchanged","input2","updateDevice","addDevice","camerasEnabled","audiosEnabled","relaysEnabled","usesExtraCameraIds","usesExtraAudioIds","usesExtraRelayIds","usesDeviceExtraValue","AreaTreeSelect","minValue","maxValue","handleDeleteConfirmClick","handleCloseDeleteModalClick","deviceTypeTitle","deleteDevice","DeleteChildDeviceModal","totalServers","serversToDisplay","showDeleteModal","handleDeleteModalClose","closeModal","deleteServer","getDeviceTypeCounts","DeleteDeviceModal","defaultResponseGrouping","getServerTypeTitle","hasAdvancedAlarmGroupingFlag","addAdvancedAlarmGroupingSpecificFields","addEditPermissionsSpecificFields","all","getServers","getDeviceTypes","fetchUserGroups","getDefaultResponseGrouping","getServerLineProfiles","getAlarmGroupingTitle","getFilteredServersPaginated","data","isRaiseIndividual","isRaiseGrouped","isReadOnly","readonlyMessage","setServerModalStartTab","Server","setCurrentServer","setServerModalVisible","deviceEditComponentLoaded","onVisibilityChanged","DeviceTable","responses","genericTableColumns","modalItems","openModal","totalRecords","putAlarm","deleteAlarm","updateResponses","onModalClose","slotProps","_f","groupTitle","grouping","retrieveAutomationBadges","responseActions","objectID","description","deviceTitle","isCustomFieldAlarmsEnabled","hasCanViewCustomFieldsPermission","openCustomFieldModal","customFieldTableType","CustomFields","GenericTableStore","mapArrayFieldsToObject","mapObjectFieldsToArray","validateSlaBreachSecondsValue","generateErrorMessage","serverModalAlarmLoaded","responseScripts","selectedResponseActions","selectedResponse","serverTypeEvents","maxNumInputValue","showModal","responseActionEdited","modalIsOpen","Alarm","cancelErrorMessage","yesNoNotSet","alarmGroupingOptions","deleteMode","responseID","r","canViewAutomations","canEditAutomations","canViewCustomFields","getResponseScripts","retrieveCustomFields","tableType","live","response","selectedServerId","customFields","result","createDeviceResponse","updateResponse","updateResponseActions","responseId","newResponseActions","oldResponseActions","i","newAutomation","responseActionID","createAlarmAutomation","oldAutomation","updated","responseActionTypeID","settingsMeta","updateAlarmAutomation","deleteAlarmAutomation","deleteResponse","loadServerTypes","loadServerEventTypes","unshift","eventNum","paginatedSearchQueryParams","generateNewPaginatedSearchRequest","isEmailAlarms","getResponses","responseData","readOnly","script","rs","scriptID","ag","showAutomations","getAlarmAutomations","alarmCustomFields","serverTypeEventNum","priority","linkedCameras","autoHandle","maskDurationLimit","serverIdWatch","newResponse","oldResponse","inModal","genericTable","updateNewEntry","sl","setupServerModalAlarm","newAlarm","selectedGroupId","responseActionInput","input","customFieldTableView","showCustomFieldModal","GenericTableColumns","order","sortOrder","sortOrderReversed","isTermLabel","useCustomCell","disable","showLinkedCamerasInModal","showMaskDurationLimit","placeholder","readOnlyMethod","props","reduce","clearable","maxLength","ste","v","substring","IsDeviceAlarmInput1Valid","withParams","errorMessage","IsDeviceAlarmInput2Valid","defaultValue","IsDeviceAlarmPriorityValid","CameraSelect","multiple","ah","isServiceLevelAgreementsEnabled","canEditSLAs","canViewSLAs","min","csvComponent","csvValidation","validationCell","currentElement","isValid","csvValue","maxResponseSlaDuration","isSlaValueValid","automationsModalItem","ResponseActionSetup","IsDeviceAlarmMaxMaskingDurationValid","shellModalItem","alarmCustomFieldModalItem","DeviceAlarmSetup","filters","truncateString","PaginatedSearch","AutomationMixin","handleAddSync","syncsToDisplay","confirmDelete","selectedSync","closeDeleteModal","serverTypeId","getSyncSystems","fetchSyncSystems","syncSystems","sync","getServerForSync","syncSystem","retrieveServer","openServerModal","Sync","deleteSyncSystem","fetchSyncSystemCount","SyncTable","modalIcon","modalTitle","handleEditModalCloseClick","deviceInfoTabIndex","userCanSaveSync","handleSyncSaveClick","serverModelDetails","handleServerSaveClick","isSuiteSyncEnabled","syncIsSuiteSync","userCanConfigureSuiteSync","syncDetailsChanged","handleServerModelDetailsChanged","showGetConfig","isGetConfigDisabled","getConfigTooltipText","syncIsDeviceSync","deviceTabIndex","isEditingServer","allowsAlarms","getAlarmTitleText","alarmCount","group","areaSelectComponentLoaded","sortedServerTypes","isApplianceEnabled","isFailoverEnabled","appliancesMatch","applianceHasFailedOver","serverTypeIsAlarmPanel","isApplianceOnly","isApplianceSelected","extraValueLabel","extraValuePlaceholder","updateExtraValue","handleAlarmGroupingSelected","alarmGrouping","isSlaEnabled","isSlaBreachSecondsValid","slaBreachSecondsErrorMessage","serverLineProfiles","serverLineProfile","serverLineProfileId","AlarmGroupingNone","AlarmGroupingResponse","AlarmGroupingDefault","deviceEditLoaded","areaSelectLoaded","setAlarmGroupingOption","ev","setExtraValue","onComponentLoaded","newValue","oldValue","$emit","handleServerDetailsChanged","appliancesValid","manuallyValidateFields","slaBreachSeconds","InvalidSecondaryAppliance","applianceId","secondaryApplianceId","primaryApplianceId","selectedServerType","extraValueName","isAlarmPanel","canFailOverAppliance","DeviceEdit","ApplianceList","accountNumber","hasDataChanged","selectedServerWithValidationFieldsOnly","storeServerWithValidationFieldsOnly","propFromSelectedServer","propFromStoreServer","progress","doGetConfig","serverDeviceErrorsCount","directives","rawName","modifiers","cameraErrorsCount","deviceConfigurationErrors","deviceErrorFields","audioErrorsCount","outputErrorsCount","doorErrorsCount","alarmErrorsCount","responseErrorFields","gettingConfig","settingConfig","camerasTotal","handleCameraScrollBarReachEnd","toggleCameras","serverConfigData","deviceFields","cameraTableIsBusy","domProps","Array","isArray","selected","_i","$$a","$$el","target","$$c","checked","$$i","concat","slice","refreshCameraUsageDifference","loadingMoreCameras","audiosTotal","handleAudioScrollBarReachEnd","toggleAudios","audioTableIsBusy","loadingMoreAudios","outputsTotal","handleOutputScrollBarReachEnd","toggleOutputs","outputTableIsBusy","loadingMoreOutputs","doorsTotal","handleDoorScrollBarReachEnd","toggleDoors","doorTableIsBusy","loadingMoreDoors","alarmsTotal","handleAlarmScrollBarReachEnd","toggleAlarms","responseFields","alarmTableIsBusy","loadingMoreAlarms","save","GroupSyncQueueState","Sessions","getConfigStatus","Inactive","camerasPage","camerasPageSize","alarmsPage","alarmsPageSize","audiosPage","audiosPageSize","doorsPage","doorsPageSize","outputsPage","outputsPageSize","getConfigHasBeenRan","displayFilteredRecords","allCamerasSelected","allAudiosSelected","allAlarmsSelected","allOutputsSelected","allDoorsSelected","noCamerasSelected","noAudiosSelected","noAlarmsSelected","noOutputsSelected","noDoorsSelected","cameraAccordionTabOpened","alarmAccordionTabOpened","audioAccordionTabOpened","doorAccordionTabOpened","outputAccordionTabOpened","updateSession","resourceId","$root","$on","collapseId","isJustShown","resetModal","deviceResponseRecordsRetrievalStatus","allCamerasRetrieved","allCamerasInCurrentQueryAreRetrieved","getCamerasForScroll","getCameras","e","allAlarmsRetrieved","allAlarmsInCurrentQueryAreRetrieved","getAlarmsForScroll","getAlarms","allAudiosRetrieved","allAudiosInCurrentQueryAreRetrieved","getAudiosForScroll","getAudios","allDoorsRetrieved","allDoorsInCurrentQueryAreRetrieved","getDoorsForScroll","getDoors","allFilteredOutputsRetrieved","allOutputsInCurrentQueryAreRetrieved","getOutputsForScroll","getOutputs","populateLocalData","serverConfigAlreadySet","serverConfigDataList","serverConfig","relays","serverConfigDataOutputs","obj","serverConfigDataDoors","host","port","username","password","syncIdentifier","users","Done","getDeviceService","deviceService","window","location","origin","deviceServerEndpoint","authSessionID","getSession","DeviceServiceSession","setDeviceConfigErrors","Connecting","fetchServerConfig","auth","then","values","startIndex","totalWillbeReached","endIndex","camerasWithSelect","newCamera","hasPtz","referenceImage","features","latLong","prototype","apply","alarmsWithSelect","eventType","linkedCameraInput","highPriority","audiosWithSelect","newAudio","doorsWithSelect","newRelay","outputsWithSelect","addConfig","addDevicesForServer","setSettingConfig","selectedCameras","selectedAlarms","selectedAudios","selectedDoors","selectedOutputs","selectedRelays","x","selectedConfig","deviceConfiguration","forEach","index","alarmErrorCount","cameraErrorCount","outputErrorCount","doorErrorCount","audioErrorCount","selectedCount","c","GetConfig","linkedSystemTitle","isReadOnlyForm","selectedSyncSystem","userCanConfigureDeviceSync","UserManagement","defaultSyncSystem","storedSyncSystem","settingSync","tenantId","getUserTenantGroupId","isSuiteSync","isDeviceSync","linkedSyncSystemId","linkedSyncSystemTitle","handleSyncDetailsChanged","ss","fetchPermissionsState","getPermissions","canConfigureSuiteSync","canConfigureDeviceSync","isLinkedSystem","SyncEdit","storeSync","propFromSelectedSync","propFromStoreSync","setGroupSyncId","groupSyncsForTable","columns","addOrUpdateGroupSync","deleteGroupSync","selectedGroupSyncId","identifier","enabled","queueable","syncNow","fromNow","lastRun","groupSyncQueue","groupSyncQueues","syncQueue","syncQueueId","option","queueOptionLabel","selectedSyncQueue","groupSyncHistoryPage","isLoadingAudit","syncQueueAudit","updatePage","audit","split","line","replaceAll","convertUtcDateTimeToLocalDateTimeString","dateCreated","pageNumber","pageLength","searchable","width","retrieveGroupSyncQueue","onGroupSyncCompletedKeyChanged","retrieveQueueAudit","syncQueueForGroupSync","gsq","newQueueId","oldQueueId","auditTrailForGroupSyncQueue","friendlyStateText","state","preQueued","queued","processing","failed","processed","partialProcessed","noData","queueItem","lastUpdated","GroupSyncHistory","isPollingState","statePoll","syncStateArray","isLoadingStates","groupSyncs","lastQueueStates","area","GroupSyncConfig","groupSync","loadGroupSyncs","loadLastQueueStates","retrieveLastSyncQueueStates","lastStates","retrieveFriendlyState","lq","convertQueueStateToFriendlyText","reQueue","groupSyncQueueable","groupSyncsForSyncSystem","gs","manualQueue","lastQueueState","g","queueGroupSync","firstOrDefault","pollGroupSyncState","RetrieveLatestQueueStateForGroupSync","clearTimeout","currentState","setTimeout","reloadGroupSyncs","GroupSync","baseChildDeviceTypeIds","syncModelDetails","setStartTab","open","serverModalStartTab","addChildDeviceTypes","iconClass","updateServer","addServer","addOrUpdateSyncSystem","getFeaturesList","canGetConfig","isGetConfigInDevicesEnabled","numAlarmInputs","aCount","linkedSyncSystem","ServerModal","childDeviceTypeIds","resetDevicesState","canViewSiteSetup","notify","notificationOptions","setNotificationOptions","DeviceSetup","CameraPreview","NavHeader","OpsLinks"],"mappings":"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","file":"js/chunk-7d75d27f.932282cd.js","sourcesContent":["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!./GroupSyncHistory.vue?vue&type=style&index=1&id=6bd95f55&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!./ChildDeviceTabWrapper.vue?vue&type=style&index=0&id=437de015&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!./GetConfig.vue?vue&type=style&index=0&id=c5368800&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 card-secondary h-100 advanced-device-setup\"},[_c('nav-header',{attrs:{\"title\":\"Device Setup\"}}),(_vm.canViewDeviceSetup)?_c('div',{staticClass:\"content-container\"},[_c('b-tabs',{staticClass:\"page-tabs\",attrs:{\"card\":\"\"},scopedSlots:_vm._u([{key:\"tabs-end\",fn:function(){return [_c('div',{staticClass:\"ops-links-button-container\"},[_c('ops-links',{on:{\"modalClosed\":function($event){_vm.rerenderKey++}}})],1)]},proxy:true}],null,false,3060851227),model:{value:(_vm.tabIndex),callback:function ($$v) {_vm.tabIndex=$$v},expression:\"tabIndex\"}},[(_vm.syncSetupEnabled)?_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Sync \"),_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(\" \"+_vm._s(_vm.totalSyncSystems ? _vm.totalSyncSystems : 0)+\" \")])]},proxy:true}],null,false,508689850)},[_c('sync-table',{key:_vm.rerenderKey,attrs:{\"visible\":_vm.tabIndex === 0}})],1):_vm._e(),_c('b-tab',{attrs:{\"active\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Devices \"),(_vm.deviceTypeCounts)?_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(\" \"+_vm._s(_vm.deviceTypeCounts.devices)+\" \")]):_vm._e()]},proxy:true}],null,false,4103493817)},[_c('device-table',{key:_vm.rerenderKey,attrs:{\"visible\":(_vm.syncSetupEnabled ? _vm.tabIndex === 1 : _vm.tabIndex === 0)}})],1),_vm._l((_vm.childDeviceTypeIds),function(childDeviceTypeId){return _c('child-device-tab-wrapper',{key:childDeviceTypeId,attrs:{\"isForAllServers\":true,\"visible\":(_vm.syncSetupEnabled ? _vm.tabIndex === childDeviceTypeId + 1 : _vm.tabIndex === childDeviceTypeId),\"deviceTypeIdentifier\":childDeviceTypeId}})}),_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{attrs:{\"variant\":\"primary\"}},[_vm._v(\" Alarms \"),_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.deviceTypeCounts ? _vm.deviceTypeCounts.alarms : 0))])],1)]},proxy:true}],null,false,2573995170)},[_c('device-alarm-setup',{attrs:{\"data-cy\":\"responseSetupTable\",\"isEmailAlarms\":false}}),_c('div',{staticClass:\"clear-both\"})],1)],2),_c('delete-child-device-modal'),(_vm.editChildDeviceModalVisible)?_c('child-device-edit'):_vm._e(),(_vm.cameraPreviewModalVisible)?_c('camera-preview',{attrs:{\"previewDetails\":{ deviceId: _vm.device.deviceID, title: _vm.device.title }},on:{\"hidden\":_vm.handleCameraPreviewHidden}}):_vm._e(),_c('server-modal')],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('b-tab',{attrs:{\"disabled\":!_vm.allowsDevices,\"lazy\":!_vm.tabLoaded,\"data-cy\":\"tab-button\"},on:{\"click\":function($event){return _vm.handleTabLoaded()}},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{class:{ 'disabled-fade': !_vm.allowsDevices },attrs:{\"title\":_vm.getTitleText(_vm.title),\"variant\":\"primary\"}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \"),(_vm.showDeviceCounts)?_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.deviceCount.toLocaleString()))]):_vm._e()],1)]},proxy:true}])},[_c('child-device-table',{ref:\"childDeviceTable\",attrs:{\"isForAllServers\":_vm.isForAllServers,\"visible\":_vm.visible,\"deviceTypeId\":_vm.deviceTypeIdentifier,\"readonly\":_vm.readonly}})],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.visible)?_c('div',{attrs:{\"data-cy\":\"child-device-table\"}},[_c('ops-link-camera-import',{on:{\"import-complete\":_vm.updateDevices},model:{value:(_vm.isAddingWithOpsLink),callback:function ($$v) {_vm.isAddingWithOpsLink=$$v},expression:\"isAddingWithOpsLink\"}}),_c('b-row',{staticClass:\"mb-4\"},[_c('b-col',[_c('b-form-input',{attrs:{\"type\":\"search\",\"placeholder\":\"Search...\",\"max\":\"250\",\"data-cy\":\"search\"},on:{\"input\":function($event){return _vm.handleSearchInput($event)}},model:{value:(_vm.searchTermPersisted),callback:function ($$v) {_vm.searchTermPersisted=$$v},expression:\"searchTermPersisted\"}})],1),(_vm.hasEditPermission && !_vm.readonly && !(_vm.currentServer && _vm.currentServer.syncSystemId))?_c('b-col',{attrs:{\"cols\":\"auto\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"add-button\"},on:{\"click\":function($event){return _vm.handleAddDevice()}}},[_vm._v(\"Add \"+_vm._s(_vm.title))])],1):_vm._e(),(_vm.isForAllServers && _vm.deviceTypeId === _vm.deviceTypes.Camera && _vm.isCameraDetectionAvailable && !_vm.readonly)?_c('b-col',{attrs:{\"cols\":\"auto\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"add-button\"},on:{\"click\":function($event){_vm.isAddingWithOpsLink = true}}},[_vm._v(\"Camera Detection\")])],1):_vm._e()],1),(_vm.totalDevices !== 0 && !_vm.isTableBusy)?_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\",\"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('vue-perfect-scrollbar',{staticClass:\"scroll-area scroll-area-override\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"}},[_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"items\":_vm.devices,\"fields\":_vm.fields,\"hover\":\"\",\"head-variant\":\"dark\",\"busy\":_vm.isTableBusy,\"no-local-sorting\":true,\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc},on:{\"sort-changed\":_vm.onSortChange},scopedSlots:_vm._u([{key:\"cell(preview)\",fn:function(row){return [(row.item.defaultReferenceShot)?_c('img',{staticClass:\"reference-shot\",attrs:{\"src\":_vm.getPreviewImageSource(row.item.defaultReferenceShot),\"data-cy\":\"default-reference-shot\"}}):_c('i',{staticClass:\"fal fa-fw fa-image font-weight-light no-preview-icon\"})]}},{key:\"cell(extraValue)\",fn:function(row){return [_c('div',{staticClass:\"extra-value\"},[_vm._v(_vm._s(row.item.extraValue))])]}},{key:\"cell(actions)\",fn:function(row){return [(_vm.showCameraPreviewIcon)?_c('span',[(_vm.isCameraEnabled(row.item.deviceID))?_c('i',{staticClass:\"fas fa-cctv hover-icon mr-1\",attrs:{\"title\":\"Preview\",\"data-cy\":\"preview-button\"},on:{\"click\":function($event){return _vm.handlePreviewCameraClick(row.item)}}}):_c('i',{staticClass:\"fal fa-cctv mr-1\",attrs:{\"title\":_vm.applianceOfflineNotification(row.item.deviceID)}})]):_vm._e(),(!_vm.readonly && _vm.hasEditPermissionToDevice(row.item))?_c('span',[_c('i',{staticClass:\"fas fa-edit hover-icon\",attrs:{\"title\":\"Edit\",\"data-cy\":\"edit-button\"},on:{\"click\":function($event){return _vm.handleEditClick(row.item)}}}),_c('i',{staticClass:\"fas fa-trash hover-icon mx-1\",attrs:{\"title\":\"Delete\",\"data-cy\":\"delete-button\"},on:{\"click\":function($event){return _vm.handleDeleteClick(row.item)}}})]):_vm._e()]}},{key:\"table-busy\",fn:function(){return [_c('div',{staticClass:\"my-2 py-4\"})]},proxy:true}],null,false,2592894125)}),_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)})],1),(_vm.totalDevices > 0 && !_vm.isTableBusy)?_c('b-pagination',{staticClass:\"pagination\",attrs:{\"total-rows\":_vm.totalDevices,\"per-page\":_vm.recordsPageSize,\"align\":\"center\",\"data-cy\":\"pagination\",\"disabled\":_vm.totalDevices < _vm.recordsPageSize},on:{\"input\":_vm.onPageClick},model:{value:(_vm.recordsPage),callback:function ($$v) {_vm.recordsPage=$$v},expression:\"recordsPage\"}}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import axios, { CancelTokenSource } from \"axios\";\r\n\r\nexport function getNewCancelTokenSource(\r\n\tcancelTokenSource: CancelTokenSource = null,\r\n\tcancelExistingTokenSource: boolean = false\r\n): CancelTokenSource {\r\n\tif (cancelTokenSource && cancelExistingTokenSource) {\r\n\t\tcancelTokenSource.cancel();\r\n\t}\r\n\r\n\treturn axios.CancelToken.source();\r\n}\r\n","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { VueBootstrapField, FeaturesList } from \"@/store/types\";\r\nimport {\r\n\tServerDetails,\r\n\tServerType,\r\n\tDeviceConfiguration,\r\n\tDeviceConfigurationErrors,\r\n\tServerConfiguration,\r\n\tDeviceConfigurationSelections,\r\n\tDeviceConfigurationCamera,\r\n\tDeviceConfigurationCameraSelection,\r\n\tDeviceConfigurationAlarm,\r\n\tDeviceConfigurationAlarmSelection,\r\n\tDeviceConfigurationAudio,\r\n\tDeviceConfigurationAudioSelection,\r\n\tDeviceConfigurationRelay,\r\n\tDeviceConfigurationRelaySelection,\r\n\tDeviceDetails,\r\n\tDeviceResponseRecordsRetrievalStatus,\r\n\tFetchConfigForServerParams,\r\n} from \"@/store/devices/types\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport SureViewIcon from \"../SureViewIcon.vue\";\r\nimport { DeviceService } from \"@sureview/camera\";\r\nimport { EventDetails } from \"@/store/site-monitor/types\";\r\nimport { SubscriptionDto } from \"@/store/subscription/types\";\r\nimport { get } from \"lodash\";\r\nimport { SessionResource } from \"@/store/sessions/types\";\r\n\r\nenum GetConfigStatus {\r\n\tInactive = \"inactive\",\r\n\tConnecting = \"connecting\",\r\n\tConnected = \"connected\",\r\n\tProcessing = \"processing\",\r\n\tDone = \"done\",\r\n\tError = \"error\",\r\n}\r\n\r\nconst Devices = namespace(\"devices\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst Sessions = namespace(\"sessions\");\r\nconst Subscription = namespace(\"subscription\");\r\n\r\n@Component({\r\n\tcomponents: { \"vue-perfect-scrollbar\": VuePerfectScrollbar, \"sureview-icon\": SureViewIcon },\r\n})\r\nexport default class GetConfig extends Vue {\r\n\tprivate fields: VueBootstrapField[] = [\r\n\t\t{ key: \"title\", label: \"Title\", sortable: false },\r\n\t\t{ key: \"serverTypeID\", label: \"Server Type ID\", sortable: false },\r\n\t\t{ key: \"groupID\", label: \"Area\", sortable: false },\r\n\t\t{ key: \"host\", label: \"Host\", sortable: false },\r\n\t\t{ key: \"port\", label: \"Port\", sortable: false },\r\n\t\t{ key: \"isRaiseIndividual\", label: \"IsRaiseIndividual\", sortable: false, class: \"centered\" },\r\n\t\t{ key: \"isRaiseGrouped\", label: \"IsRaiseGrouped\", sortable: false, class: \"centered\" },\r\n\t\t{ key: \"actions\", label: \"Actions\", sortable: false },\r\n\t];\r\n\r\n\t@Devices.Action private addDevicesForServer: (serverConfig: ServerConfiguration) => Promise;\r\n\t@Devices.Action private fetchServerConfig: (params: FetchConfigForServerParams) => Promise;\r\n\r\n\t@Devices.State private currentServer: ServerDetails;\r\n\t@Devices.State(\"device\") private deviceFromStore: DeviceDetails;\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\t@Devices.State gettingConfig: boolean;\r\n\t@Devices.State settingConfig: boolean;\r\n\t@Devices.State serverConfig: DeviceConfiguration[];\r\n\t@Devices.State deviceConfigurationErrors: DeviceConfigurationErrors;\r\n\t@Devices.State private deviceResponseRecordsRetrievalStatus: DeviceResponseRecordsRetrievalStatus;\r\n\r\n\t@Devices.Mutation private setSettingConfig: (settingConfig: boolean) => void;\r\n\t@Devices.Mutation private setExtraValue: (extraValue: string) => void;\r\n\t@Devices.Mutation setServerModalVisible: (IsVisible: boolean) => void;\r\n\t@Devices.Mutation private setDeviceConfigErrors: (errors: DeviceConfigurationErrors) => void;\r\n\t\r\n\t@Prop(Number) eventid?: number;\r\n\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t@Sessions.Getter getSession: any;\r\n\t@Sessions.Action updateSession: any;\r\n\r\n\t@SiteMonitor.Getter getEventDetails: EventDetails;\r\n\r\n\t@Subscription.State subscription: SubscriptionDto;\r\n\t@Subscription.Action fetchSubscription: () => Promise;\r\n\r\n\tcreated() {\r\n\t\tthis.updateSession({ resourceId: 3 });\r\n\t\tthis.selectedServer = { ...this.currentServer };\r\n\t}\r\n\r\n\tasync mounted() {\r\n\t\tthis.$root.$on(\"bv::collapse::state\", (collapseId, isJustShown) => {\r\n\t\t\tswitch (collapseId) {\r\n\t\t\t\tcase \"accordion-cameras\": {\r\n\t\t\t\t\tthis.cameraAccordionTabOpened = isJustShown;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase \"accordion-alarms\": {\r\n\t\t\t\t\tthis.alarmAccordionTabOpened = isJustShown;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase \"accordion-audios\": {\r\n\t\t\t\t\tthis.audioAccordionTabOpened = isJustShown;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase \"accordion-doors\": {\r\n\t\t\t\t\tthis.doorAccordionTabOpened = isJustShown;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tcase \"accordion-outputs\": {\r\n\t\t\t\t\tthis.outputAccordionTabOpened = isJustShown;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate updateExtraValue(ev: string) {\r\n\t\tthis.setExtraValue(ev);\r\n\t}\r\n\r\n\tresetModal() {}\r\n\r\n\tprivate selectedServer: ServerDetails;\r\n\tprivate getConfigStatus: GetConfigStatus = GetConfigStatus.Inactive;\r\n\tprivate progress = 0;\r\n\tprivate camerasPage: number = 1;\r\n\tprivate camerasPageSize: number = 1000;\r\n\r\n\tprivate alarmsPage: number = 1;\r\n\tprivate alarmsPageSize: number = 1000;\r\n\r\n\tprivate audiosPage: number = 1;\r\n\tprivate audiosPageSize: number = 1000;\r\n\r\n\tprivate doorsPage: number = 1;\r\n\tprivate doorsPageSize: number = 1000;\r\n\r\n\tprivate outputsPage: number = 1;\r\n\tprivate outputsPageSize: number = 1000;\r\n\r\n\tprivate getConfigHasBeenRan = false;\r\n\tprivate displayFilteredRecords: boolean = false;\r\n\tprivate cameraTableIsBusy: boolean = false;\r\n\tprivate loadingMoreCameras: boolean = false;\r\n\r\n\tprivate alarmTableIsBusy: boolean = false;\r\n\tprivate loadingMoreAlarms: boolean = false;\r\n\r\n\tprivate audioTableIsBusy: boolean = false;\r\n\tprivate loadingMoreAudios: boolean = false;\r\n\r\n\tprivate doorTableIsBusy: boolean = false;\r\n\tprivate loadingMoreDoors: boolean = false;\r\n\r\n\tprivate outputTableIsBusy: boolean = false;\r\n\tprivate loadingMoreOutputs: boolean = false;\r\n\r\n\tprivate allCamerasSelected: boolean = true;\r\n\tprivate allAudiosSelected: boolean = true;\r\n\tprivate allAlarmsSelected: boolean = true;\r\n\tprivate allOutputsSelected: boolean = true;\r\n\tprivate allDoorsSelected: boolean = true;\r\n\r\n\tprivate noCamerasSelected: boolean = false;\r\n\tprivate noAudiosSelected: boolean = false;\r\n\tprivate noAlarmsSelected: boolean = false;\r\n\tprivate noOutputsSelected: boolean = false;\r\n\tprivate noDoorsSelected: boolean = false;\r\n\r\n\tprivate camerasTotal = 0;\r\n\tprivate alarmsTotal = 0;\r\n\tprivate audiosTotal = 0;\r\n\tprivate doorsTotal = 0;\r\n\tprivate outputsTotal = 0;\r\n\r\n\tprivate cameraAccordionTabOpened = false;\r\n\tprivate alarmAccordionTabOpened = false;\r\n\tprivate audioAccordionTabOpened = false;\r\n\tprivate doorAccordionTabOpened = false;\r\n\tprivate outputAccordionTabOpened = false;\r\n\r\n\tprivate serverConfigDataList: DeviceConfiguration[];\r\n\tprivate serverConfigData: DeviceConfigurationSelections;\r\n\tprivate serverConfigDataDoors: DeviceConfigurationRelay[];\r\n\tprivate serverConfigDataOutputs: DeviceConfigurationRelay[];\r\n\r\n\tprivate cameraUsageDifference: number = 0;\r\n\r\n\tprivate get extraValueLabel(): string {\r\n\t\treturn `${this.extraValuePlaceholder}:`;\r\n\t}\r\n\r\n\tprivate get extraValuePlaceholder(): string {\r\n\t\tconst serverType = this.selectedServerType;\r\n\r\n\t\tif (serverType && serverType.extraValueName) {\r\n\t\t\treturn serverType.extraValueName;\r\n\t\t}\r\n\r\n\t\treturn \"Extra Value\";\r\n\t}\r\n\r\n\tprivate get selectedServerType(): ServerType {\r\n\t\treturn this.serverTypes.find((st) => st.serverTypeID === this.selectedServer.serverTypeID);\r\n\t}\r\n\r\n\tprivate get allCamerasInCurrentQueryAreRetrieved(): boolean {\r\n\t\treturn this.deviceResponseRecordsRetrievalStatus.allCamerasRetrieved;\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 private get isCameraSubscriptionValid(): boolean {\r\n if(this.subscription && this.subscription.limitedSubscription) {\r\n if((this.subscription.cameras + this.cameraUsageDifference) > this.subscription.camerasLimit) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n\tprivate handleCameraScrollBarReachEnd() {\r\n\t\tif (\r\n\t\t\tthis.cameraTableIsBusy ||\r\n\t\t\tthis.allCamerasInCurrentQueryAreRetrieved ||\r\n\t\t\tthis.loadingMoreCameras ||\r\n\t\t\t!this.cameraAccordionTabOpened\r\n\t\t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.loadingMoreCameras = true;\r\n\t\tthis.camerasPage++;\r\n\t\tthis.getCamerasForScroll();\r\n\t\tthis.loadingMoreCameras = false;\r\n\t}\r\n\r\n\tprivate getCamerasForScroll() {\r\n\t\tthis.cameraTableIsBusy = true;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.getCameras();\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: \"Error loading cameras\",\r\n\t\t\t\ttext: `Unable to load cameras`\r\n\t\t\t});\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.cameraTableIsBusy = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get allAlarmsInCurrentQueryAreRetrieved(): boolean {\r\n\t\treturn this.deviceResponseRecordsRetrievalStatus.allAlarmsRetrieved;\r\n\t}\r\n\r\n\tprivate handleAlarmScrollBarReachEnd() {\r\n\t\tif (\r\n\t\t\tthis.alarmTableIsBusy ||\r\n\t\t\tthis.allAlarmsInCurrentQueryAreRetrieved ||\r\n\t\t\tthis.loadingMoreAlarms ||\r\n\t\t\t!this.alarmAccordionTabOpened\r\n\t\t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.loadingMoreAlarms = true;\r\n\t\tthis.alarmsPage++;\r\n\t\tthis.getAlarmsForScroll();\r\n\t\tthis.loadingMoreAlarms = false;\r\n\t}\r\n\r\n\tprivate getAlarmsForScroll() {\r\n\t\tthis.alarmTableIsBusy = true;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.getAlarms();\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: \"Error loading alarms\",\r\n\t\t\t\ttext: `Unable to load alarms`\r\n\t\t\t});\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.alarmTableIsBusy = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get allAudiosInCurrentQueryAreRetrieved(): boolean {\r\n\t\treturn this.deviceResponseRecordsRetrievalStatus.allAudiosRetrieved;\r\n\t}\r\n\r\n\tprivate handleAudioScrollBarReachEnd() {\r\n\t\tif (\r\n\t\t\tthis.audioTableIsBusy ||\r\n\t\t\tthis.allAudiosInCurrentQueryAreRetrieved ||\r\n\t\t\tthis.loadingMoreAudios ||\r\n\t\t\t!this.audioAccordionTabOpened\r\n\t\t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.loadingMoreAudios = true;\r\n\t\tthis.audiosPage++;\r\n\t\tthis.getAudiosForScroll();\r\n\t\tthis.loadingMoreAudios = false;\r\n\t}\r\n\r\n\tprivate getAudiosForScroll() {\r\n\t\tthis.audioTableIsBusy = true;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.getAudios();\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: \"Error loading audios\",\r\n\t\t\t\ttext: `Unable to load audios`\r\n\t\t\t});\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.audioTableIsBusy = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get allDoorsInCurrentQueryAreRetrieved(): boolean {\r\n\t\treturn this.deviceResponseRecordsRetrievalStatus.allDoorsRetrieved;\r\n\t}\r\n\r\n\tprivate handleDoorScrollBarReachEnd() {\r\n\t\tif (\r\n\t\t\tthis.doorTableIsBusy ||\r\n\t\t\tthis.allDoorsInCurrentQueryAreRetrieved ||\r\n\t\t\tthis.loadingMoreDoors ||\r\n\t\t\t!this.doorAccordionTabOpened\r\n\t\t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.loadingMoreDoors = true;\r\n\t\tthis.doorsPage++;\r\n\t\tthis.getDoorsForScroll();\r\n\t\tthis.loadingMoreDoors = false;\r\n\t}\r\n\r\n\tprivate getDoorsForScroll() {\r\n\t\tthis.doorTableIsBusy = true;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.getDoors();\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: \"Error loading doors\",\r\n\t\t\t\ttext: `Unable to load doors`\r\n\t\t\t});\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.doorTableIsBusy = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get allOutputsInCurrentQueryAreRetrieved(): boolean {\r\n\t\treturn this.deviceResponseRecordsRetrievalStatus.allFilteredOutputsRetrieved;\r\n\t}\r\n\r\n\tprivate handleOutputScrollBarReachEnd() {\r\n\t\tif (\r\n\t\t\tthis.outputTableIsBusy ||\r\n\t\t\tthis.allOutputsInCurrentQueryAreRetrieved ||\r\n\t\t\tthis.loadingMoreOutputs ||\r\n\t\t\t!this.outputAccordionTabOpened\r\n\t\t) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.loadingMoreOutputs = true;\r\n\t\tthis.outputsPage++;\r\n\t\tthis.getOutputsForScroll();\r\n\t\tthis.loadingMoreOutputs = false;\r\n\t}\r\n\r\n\tprivate getOutputsForScroll() {\r\n\t\tthis.outputTableIsBusy = true;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.getOutputs();\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: \"Error loading outputs\",\r\n\t\t\t\ttext: `Unable to load outputs`\r\n\t\t\t});\r\n\t\t\tconsole.error(e);\r\n\t\t}\r\n\t\tfinally {\r\n\t\t\tthis.outputTableIsBusy = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate populateLocalData(serverConfigAlreadySet: boolean) {\r\n\t\tif (serverConfigAlreadySet == null || !serverConfigAlreadySet) {\r\n\t\t\tthis.serverConfigDataList = this.serverConfig;\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigDataList && this.serverConfigDataList[0]) {\r\n\t\t\tif (this.serverConfigDataList[0].cameras != null && this.serverConfigDataList[0].cameras.length > 0) {\r\n\t\t\t\tthis.camerasTotal = this.serverConfigDataList[0].cameras.length;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.serverConfigDataList[0].alarms != null && this.serverConfigDataList[0].alarms.length > 0) {\r\n\t\t\t\tthis.alarmsTotal = this.serverConfigDataList[0].alarms.length;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.serverConfigDataList[0].audios != null && this.serverConfigDataList[0].audios.length > 0) {\r\n\t\t\t\tthis.audiosTotal = this.serverConfigDataList[0].audios.length;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.serverConfigDataList[0].relays != null && this.serverConfigDataList[0].relays.length > 0) {\r\n\t\t\t\tthis.serverConfigDataOutputs = this.serverConfigDataList[0].relays.filter(function (obj) {\r\n\t\t\t\t\treturn obj.type == 0;\r\n\t\t\t\t});\r\n\t\t\t\tthis.outputsTotal = this.serverConfigDataOutputs != null ? this.serverConfigDataOutputs.length : 0;\r\n\t\t\t\tthis.serverConfigDataDoors = this.serverConfigDataList[0].relays.filter(function (obj) {\r\n\t\t\t\t\treturn obj.type != 0;\r\n\t\t\t\t});\r\n\t\t\t\tthis.doorsTotal = this.serverConfigDataDoors != null ? this.serverConfigDataDoors.length : 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Map the config data retrieved to also include selected property in the arrays (set to true by default)\r\n\t\tif (this.serverConfigDataList && this.serverConfigDataList.length) {\r\n\t\t\tthis.serverConfigData = {\r\n\t\t\t\tname: this.serverConfigDataList[0].name,\r\n\t\t\t\textraValue: this.serverConfigDataList[0].extraValue,\r\n\t\t\t\thost: this.serverConfigDataList[0].host,\r\n\t\t\t\tport: this.serverConfigDataList[0].port,\r\n\t\t\t\tusername: this.serverConfigDataList[0].username,\r\n\t\t\t\tpassword: this.serverConfigDataList[0].password,\r\n\t\t\t\tsyncIdentifier: this.serverConfigDataList[0].syncIdentifier,\r\n\t\t\t\talarms: null,\r\n\t\t\t\tcameras: null,\r\n\t\t\t\taudios: null,\r\n\t\t\t\tdoors: null,\r\n\t\t\t\toutputs: null,\r\n\t\t\t\tusers: this.serverConfigDataList[0].users,\r\n\t\t\t};\r\n\r\n\t\t\tthis.getCameras();\r\n\t\t\tthis.getAlarms();\r\n\t\t\tthis.getAudios();\r\n\t\t\tthis.getDoors();\r\n\t\t\tthis.getOutputs();\r\n\t\t}\r\n\r\n\t\tthis.getConfigStatus = GetConfigStatus.Done;\r\n\t\tthis.getConfigHasBeenRan = true;\r\n\t\tthis.progress = 100;\r\n\t}\r\n\r\n\tprivate getDeviceService(): DeviceService {\r\n\t\tlet deviceService = new DeviceService(window.location.origin, this.deviceFromStore?.deviceServerEndpoint);\r\n\t\tdeviceService.authSessionID = this.getSession(SessionResource.DeviceServiceSession);\r\n\t\treturn deviceService;\r\n\t}\r\n\r\n\tprivate async doGetConfig() {\r\n\t\tthis.setDeviceConfigErrors(null);\r\n\r\n\t\tlet deviceService = this.getDeviceService();\r\n\t\tthis.getConfigStatus = GetConfigStatus.Connecting;\r\n\t\tthis.progress = 0;\r\n\r\n\t\tawait Promise.all([this.fetchServerConfig({ server: this.currentServer, serverType: this.selectedServerType, auth: deviceService.authSessionID })]).then(\r\n\t\t\t(values) => {\r\n\t\t\t\tthis.populateLocalData(false);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tprivate async getCameras() {\r\n\t\tif (\r\n\t\t\tthis.serverConfigData == null ||\r\n\t\t\tthis.serverConfigDataList.length == 0 ||\r\n\t\t\tthis.serverConfigDataList[0] == null\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigDataList[0].cameras == null) {\r\n\t\t\tthis.serverConfigDataList[0].cameras = [];\r\n\t\t}\r\n\r\n\t\t//read page number and page size to work out start and end points\r\n\t\tlet startIndex = (this.camerasPage - 1) * this.camerasPageSize;\r\n\r\n\t\tif (startIndex >= this.serverConfigDataList[0].cameras.length) {\r\n\t\t\t//all cameras loaded\r\n\t\t\tthis.deviceResponseRecordsRetrievalStatus.allCamerasRetrieved = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet totalWillbeReached = false;\r\n\t\tlet endIndex = startIndex + this.camerasPageSize;\r\n\r\n\t\tif (endIndex >= this.serverConfigDataList[0].cameras.length) {\r\n\t\t\ttotalWillbeReached = true;\r\n\t\t\tendIndex = this.serverConfigDataList[0].cameras.length;\r\n\t\t}\r\n\r\n\t\tlet camerasWithSelect: DeviceConfigurationCameraSelection[] = [];\r\n\t\tlet selected: boolean = !this.noCamerasSelected;\r\n\r\n\t\tfor (let i = startIndex; i < endIndex; i++) {\r\n\t\t\tlet newCamera: DeviceConfigurationCameraSelection = {\r\n\t\t\t\tname: this.serverConfigDataList[0].cameras[i].name,\r\n\t\t\t\tinput1: this.serverConfigDataList[0].cameras[i].input1,\r\n\t\t\t\thasPtz: this.serverConfigDataList[0].cameras[i].hasPtz,\r\n\t\t\t\tpresets: this.serverConfigDataList[0].cameras[i].presets,\r\n\t\t\t\treferenceImage: this.serverConfigDataList[0].cameras[i].referenceImage,\r\n\t\t\t\tsyncIdentifier: this.serverConfigDataList[0].cameras[i].syncIdentifier,\r\n\t\t\t\textraValue: this.serverConfigDataList[0].cameras[i].extraValue,\r\n\t\t\t\tfeatures: this.serverConfigDataList[0].cameras[i].features,\r\n\t\t\t\tlatLong: this.serverConfigDataList[0].cameras[i].latLong,\r\n\t\t\t\tselected: selected,\r\n\t\t\t};\r\n\t\t\tcamerasWithSelect.push(newCamera);\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigData.cameras == null) {\r\n\t\t\tthis.serverConfigData.cameras = [];\r\n\t\t}\r\n\r\n\t\tArray.prototype.push.apply(this.serverConfigData.cameras, camerasWithSelect);\r\n\r\n\t\tif (totalWillbeReached) {\r\n\t\t\tthis.deviceResponseRecordsRetrievalStatus.allCamerasRetrieved = true;\r\n\t\t}\r\n\t\t\r\n\t\tthis.refreshCameraUsageDifference();\r\n\t}\r\n\r\n\tprivate async getAlarms() {\r\n\t\tif (\r\n\t\t\tthis.serverConfigData == null ||\r\n\t\t\tthis.serverConfigDataList.length == 0 ||\r\n\t\t\tthis.serverConfigDataList[0] == null\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigDataList[0].alarms == null) {\r\n\t\t\tthis.serverConfigDataList[0].alarms = [];\r\n\t\t}\r\n\r\n\t\t//read page number and page size to work out start and end points\r\n\t\tlet startIndex = (this.alarmsPage - 1) * this.alarmsPageSize;\r\n\r\n\t\tif (startIndex >= this.serverConfigDataList[0].alarms.length) {\r\n\t\t\t//all alarms loaded\r\n\t\t\tthis.deviceResponseRecordsRetrievalStatus.allAlarmsRetrieved = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet totalWillbeReached = false;\r\n\t\tlet endIndex = startIndex + this.alarmsPageSize;\r\n\r\n\t\tif (endIndex >= this.serverConfigDataList[0].alarms.length) {\r\n\t\t\ttotalWillbeReached = true;\r\n\t\t\tendIndex = this.serverConfigDataList[0].alarms.length;\r\n\t\t}\r\n\r\n\t\tlet alarmsWithSelect: DeviceConfigurationAlarmSelection[] = [];\r\n\t\tlet selected: boolean = !this.noAlarmsSelected;\r\n\r\n\t\tfor (let i = startIndex; i < endIndex; i++) {\r\n\t\t\tlet newAlarm: DeviceConfigurationAlarmSelection = {\r\n\t\t\t\ttitle: this.serverConfigDataList[0].alarms[i].title,\r\n\t\t\t\tinput1: this.serverConfigDataList[0].alarms[i].input1,\r\n\t\t\t\tinput2: this.serverConfigDataList[0].alarms[i].input2,\r\n\t\t\t\teventType: this.serverConfigDataList[0].alarms[i].eventType,\r\n\t\t\t\tsyncIdentifier: this.serverConfigDataList[0].alarms[i].syncIdentifier,\r\n\t\t\t\textraValue: this.serverConfigDataList[0].alarms[i].extraValue,\r\n\t\t\t\tlinkedCameraInput: this.serverConfigDataList[0].alarms[i].linkedCameraInput,\r\n\t\t\t\thighPriority: this.serverConfigDataList[0].alarms[i].highPriority,\r\n\t\t\t\tselected: selected,\r\n\t\t\t};\r\n\t\t\talarmsWithSelect.push(newAlarm);\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigData.alarms == null) {\r\n\t\t\tthis.serverConfigData.alarms = [];\r\n\t\t}\r\n\r\n\t\tArray.prototype.push.apply(this.serverConfigData.alarms, alarmsWithSelect);\r\n\r\n\t\tif (totalWillbeReached) {\r\n\t\t\tthis.deviceResponseRecordsRetrievalStatus.allAlarmsRetrieved = true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getAudios() {\r\n\t\tif (\r\n\t\t\tthis.serverConfigData == null ||\r\n\t\t\tthis.serverConfigDataList.length == 0 ||\r\n\t\t\tthis.serverConfigDataList[0] == null\r\n\t\t) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigDataList[0].audios == null) {\r\n\t\t\tthis.serverConfigDataList[0].audios = [];\r\n\t\t}\r\n\r\n\t\t//read page number and page size to work out start and end points\r\n\t\tlet startIndex = (this.audiosPage - 1) * this.audiosPageSize;\r\n\r\n\t\tif (startIndex >= this.serverConfigDataList[0].audios.length) {\r\n\t\t\t//all audios loaded\r\n\t\t\tthis.deviceResponseRecordsRetrievalStatus.allAudiosRetrieved = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet totalWillbeReached = false;\r\n\t\tlet endIndex = startIndex + this.audiosPageSize;\r\n\r\n\t\tif (endIndex >= this.serverConfigDataList[0].audios.length) {\r\n\t\t\ttotalWillbeReached = true;\r\n\t\t\tendIndex = this.serverConfigDataList[0].audios.length;\r\n\t\t}\r\n\r\n\t\tlet audiosWithSelect: DeviceConfigurationAudioSelection[] = [];\r\n\t\tlet selected: boolean = !this.noAudiosSelected;\r\n\r\n\t\tfor (let i = startIndex; i < endIndex; i++) {\r\n\t\t\tlet newAudio: DeviceConfigurationAudioSelection = {\r\n\t\t\t\tname: this.serverConfigDataList[0].audios[i].name,\r\n\t\t\t\tinput1: this.serverConfigDataList[0].audios[i].input1,\r\n\t\t\t\ttype: this.serverConfigDataList[0].audios[i].type,\r\n\t\t\t\tsyncIdentifier: this.serverConfigDataList[0].audios[i].syncIdentifier,\r\n\t\t\t\textraValue: this.serverConfigDataList[0].audios[i].extraValue,\r\n\t\t\t\tfeatures: this.serverConfigDataList[0].audios[i].features,\r\n\t\t\t\tlatLong: this.serverConfigDataList[0].audios[i].latLong,\r\n\t\t\t\tselected: selected,\r\n\t\t\t};\r\n\t\t\taudiosWithSelect.push(newAudio);\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigData.audios == null) {\r\n\t\t\tthis.serverConfigData.audios = [];\r\n\t\t}\r\n\r\n\t\tArray.prototype.push.apply(this.serverConfigData.audios, audiosWithSelect);\r\n\r\n\t\tif (totalWillbeReached) {\r\n\t\t\tthis.deviceResponseRecordsRetrievalStatus.allAudiosRetrieved = true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getDoors() {\r\n\t\tif (this.serverConfigData == null || this.serverConfigDataList.length == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigDataDoors == null) {\r\n\t\t\tthis.serverConfigDataDoors = [];\r\n\t\t}\r\n\r\n\t\t//read page number and page size to work out start and end points\r\n\t\tlet startIndex = (this.doorsPage - 1) * this.doorsPageSize;\r\n\r\n\t\tif (startIndex >= this.serverConfigDataDoors.length) {\r\n\t\t\t//all doors loaded\r\n\t\t\tthis.deviceResponseRecordsRetrievalStatus.allDoorsRetrieved = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet totalWillbeReached = false;\r\n\t\tlet endIndex = startIndex + this.doorsPageSize;\r\n\r\n\t\tif (endIndex >= this.serverConfigDataDoors.length) {\r\n\t\t\ttotalWillbeReached = true;\r\n\t\t\tendIndex = this.serverConfigDataDoors.length;\r\n\t\t}\r\n\r\n\t\tlet doorsWithSelect: DeviceConfigurationRelaySelection[] = [];\r\n\t\tlet selected: boolean = !this.noDoorsSelected;\r\n\r\n\t\tfor (let i = startIndex; i < endIndex; i++) {\r\n\t\t\tlet newRelay: DeviceConfigurationRelaySelection = {\r\n\t\t\t\tname: this.serverConfigDataDoors[i].name,\r\n\t\t\t\tinput1: this.serverConfigDataDoors[i].input1,\r\n\t\t\t\tinput2: this.serverConfigDataDoors[i].input2,\r\n\t\t\t\ttype: this.serverConfigDataDoors[i].type,\r\n\t\t\t\tsyncIdentifier: this.serverConfigDataDoors[i].syncIdentifier,\r\n\t\t\t\textraValue: this.serverConfigDataDoors[i].extraValue,\r\n\t\t\t\tfeatures: this.serverConfigDataDoors[i].features,\r\n\t\t\t\tlatLong: this.serverConfigDataDoors[i].latLong,\r\n\t\t\t\tselected: selected,\r\n\t\t\t};\r\n\t\t\tdoorsWithSelect.push(newRelay);\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigData.doors == null) {\r\n\t\t\tthis.serverConfigData.doors = [];\r\n\t\t}\r\n\r\n\t\tArray.prototype.push.apply(this.serverConfigData.doors, doorsWithSelect);\r\n\r\n\t\tif (totalWillbeReached) {\r\n\t\t\tthis.deviceResponseRecordsRetrievalStatus.allDoorsRetrieved = true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async getOutputs() {\r\n\t\tif (this.serverConfigData == null || this.serverConfigDataList.length == 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigDataOutputs == null) {\r\n\t\t\tthis.serverConfigDataOutputs = [];\r\n\t\t}\r\n\r\n\t\t//read page number and page size to work out start and end points\r\n\t\tlet startIndex = (this.outputsPage - 1) * this.outputsPage;\r\n\r\n\t\tif (startIndex >= this.serverConfigDataOutputs.length) {\r\n\t\t\t//all outputs loaded\r\n\t\t\tthis.deviceResponseRecordsRetrievalStatus.allFilteredOutputsRetrieved = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet totalWillbeReached = false;\r\n\t\tlet endIndex = startIndex + this.outputsPageSize;\r\n\r\n\t\tif (endIndex >= this.serverConfigDataOutputs.length) {\r\n\t\t\ttotalWillbeReached = true;\r\n\t\t\tendIndex = this.serverConfigDataOutputs.length;\r\n\t\t}\r\n\r\n\t\tlet outputsWithSelect: DeviceConfigurationRelaySelection[] = [];\r\n\t\tlet selected: boolean = !this.noOutputsSelected;\r\n\r\n\t\tfor (let i = startIndex; i < endIndex; i++) {\r\n\t\t\tlet newRelay: DeviceConfigurationRelaySelection = {\r\n\t\t\t\tname: this.serverConfigDataOutputs[i].name,\r\n\t\t\t\tinput1: this.serverConfigDataOutputs[i].input1,\r\n\t\t\t\tinput2: this.serverConfigDataOutputs[i].input2,\r\n\t\t\t\ttype: this.serverConfigDataOutputs[i].type,\r\n\t\t\t\tsyncIdentifier: this.serverConfigDataOutputs[i].syncIdentifier,\r\n\t\t\t\textraValue: this.serverConfigDataOutputs[i].extraValue,\r\n\t\t\t\tfeatures: this.serverConfigDataOutputs[i].features,\r\n\t\t\t\tlatLong: this.serverConfigDataOutputs[i].latLong,\r\n\t\t\t\tselected: selected,\r\n\t\t\t};\r\n\t\t\toutputsWithSelect.push(newRelay);\r\n\t\t}\r\n\r\n\t\tif (this.serverConfigData.outputs == null) {\r\n\t\t\tthis.serverConfigData.outputs = [];\r\n\t\t}\r\n\r\n\t\tArray.prototype.push.apply(this.serverConfigData.outputs, outputsWithSelect);\r\n\r\n\t\tif (totalWillbeReached) {\r\n\t\t\tthis.deviceResponseRecordsRetrievalStatus.allFilteredOutputsRetrieved = true;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get deviceFields() {\r\n\t\tlet fields = [\r\n\t\t\t{ key: \"selected\", label: \"Selected\", sortable: false },\r\n\t\t\t{ key: \"input1\", label: \"Input1\", sortable: false },\r\n\t\t\t{ key: \"name\", label: \"Name\", sortable: false },\r\n\t\t];\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\tprivate get responseFields() {\r\n\t\tlet fields = [\r\n\t\t\t{ key: \"selected\", label: \"Selected\", sortable: false },\r\n\t\t\t{ key: \"input1\", label: \"Input1\", sortable: false },\r\n\t\t\t{ key: \"title\", label: \"Name\", sortable: false },\r\n\t\t];\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\tprivate get deviceErrorFields() {\r\n\t\tlet fields = [\r\n\t\t\t{ key: \"name\", label: \"Name\", sortable: false },\r\n\t\t\t{ key: \"input1\", label: \"Input1\", sortable: false },\r\n\t\t\t{ key: \"error\", label: \"Error\", sortable: false },\r\n\t\t];\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\tprivate get responseErrorFields() {\r\n\t\tlet fields = [\r\n\t\t\t{ key: \"title\", label: \"Name\", sortable: false },\r\n\t\t\t{ key: \"input1\", label: \"Input1\", sortable: false },\r\n\t\t];\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\tprivate cancel() {\r\n\t\tthis.progress = 0;\r\n\t\tthis.getConfigHasBeenRan = false;\r\n\t\tthis.getConfigStatus = GetConfigStatus.Inactive;\r\n\t}\r\n\r\n\tprivate async addConfig(serverConfig: ServerConfiguration): Promise {\r\n\t\tawait Promise.all([this.addDevicesForServer(serverConfig)]).then((response) => {\r\n\t\t\tthis.progress = 100;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate save() {\r\n\t\tthis.progress = 0;\r\n\t\tthis.setSettingConfig(true);\r\n\r\n\t\tlet selectedCameras: DeviceConfigurationCamera[] = [];\r\n\t\tif (this.serverConfigData.cameras != null) {\r\n\t\t\tselectedCameras = this.serverConfigData.cameras.filter(function (obj) {\r\n\t\t\t\treturn obj.selected === true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet selectedAlarms: DeviceConfigurationAlarm[] = [];\r\n\t\tif (this.serverConfigData.alarms != null) {\r\n\t\t\tselectedAlarms = this.serverConfigData.alarms.filter(function (obj) {\r\n\t\t\t\treturn obj.selected === true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet selectedAudios: DeviceConfigurationAudio[] = [];\r\n\t\tif (this.serverConfigData.audios != null) {\r\n\t\t\tselectedAudios = this.serverConfigData.audios.filter(function (obj) {\r\n\t\t\t\treturn obj.selected === true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet selectedDoors: DeviceConfigurationRelay[] = [];\r\n\t\tif (this.serverConfigData.doors != null) {\r\n\t\t\tselectedDoors = this.serverConfigData.doors.filter(function (obj) {\r\n\t\t\t\treturn obj.selected === true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet selectedOutputs: DeviceConfigurationRelay[] = [];\r\n\t\tif (this.serverConfigData.outputs != null) {\r\n\t\t\tselectedOutputs = this.serverConfigData.outputs.filter(function (obj) {\r\n\t\t\t\treturn obj.selected === true;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet selectedRelays: DeviceConfigurationRelay[] = [];\r\n\r\n\t\t//Add unloaded (through pagination) devices to the lists\r\n\t\tif (this.serverConfigDataList[0].cameras != null) {\r\n\t\t\tif (this.serverConfigData.cameras == null) {\r\n\t\t\t\tthis.serverConfigData.cameras = [];\r\n\t\t\t}\r\n\t\t\tif (this.serverConfigData.cameras.length < this.serverConfigDataList[0].cameras.length) {\r\n\t\t\t\tArray.prototype.push.apply(\r\n\t\t\t\t\tselectedCameras,\r\n\t\t\t\t\tthis.serverConfigDataList[0].cameras.slice(\r\n\t\t\t\t\t\tthis.serverConfigData.cameras.length,\r\n\t\t\t\t\t\tthis.serverConfigDataList[0].cameras.length\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.serverConfigDataList[0].alarms != null) {\r\n\t\t\tif (this.serverConfigData.alarms == null) {\r\n\t\t\t\tthis.serverConfigData.alarms = [];\r\n\t\t\t}\r\n\t\t\tif (this.serverConfigData.alarms.length < this.serverConfigDataList[0].alarms.length) {\r\n\t\t\t\tArray.prototype.push.apply(\r\n\t\t\t\t\tselectedAlarms,\r\n\t\t\t\t\tthis.serverConfigDataList[0].alarms.slice(\r\n\t\t\t\t\t\tthis.serverConfigData.alarms.length,\r\n\t\t\t\t\t\tthis.serverConfigDataList[0].alarms.length\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.serverConfigDataList[0].audios != null) {\r\n\t\t\tif (this.serverConfigData.audios == null) {\r\n\t\t\t\tthis.serverConfigData.audios = [];\r\n\t\t\t}\r\n\t\t\tif (this.serverConfigData.audios.length < this.serverConfigDataList[0].audios.length) {\r\n\t\t\t\tArray.prototype.push.apply(\r\n\t\t\t\t\tselectedAudios,\r\n\t\t\t\t\tthis.serverConfigDataList[0].audios.slice(\r\n\t\t\t\t\t\tthis.serverConfigData.audios.length,\r\n\t\t\t\t\t\tthis.serverConfigDataList[0].audios.length\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.serverConfigDataList[0].relays != null) {\r\n\t\t\tif (this.serverConfigData.doors == null) {\r\n\t\t\t\tthis.serverConfigData.doors = [];\r\n\t\t\t}\r\n\t\t\tif (this.serverConfigData.doors.length <= this.serverConfigDataList[0].relays.filter(x => x.type == 1).length) {\r\n\t\t\t\tArray.prototype.push.apply(\r\n\t\t\t\t\tselectedDoors,\r\n\t\t\t\t\tthis.serverConfigDataDoors.slice(this.serverConfigData.doors.length, this.serverConfigDataDoors.length)\r\n\t\t\t\t);\r\n\t\t\t\tArray.prototype.push.apply(selectedRelays, selectedDoors);\r\n\t\t\t}\r\n\t\t\tif (this.serverConfigData.outputs == null) {\r\n\t\t\t\tthis.serverConfigData.outputs = [];\r\n\t\t\t}\r\n\t\t\tif (this.serverConfigData.outputs.length <= this.serverConfigDataList[0].relays.filter(x => x.type == 0).length) {\r\n\t\t\t\tArray.prototype.push.apply(\r\n\t\t\t\t\tselectedOutputs,\r\n\t\t\t\t\tthis.serverConfigDataOutputs.slice(this.serverConfigData.outputs.length, this.serverConfigDataOutputs.length)\r\n\t\t\t\t);\r\n\t\t\t\tArray.prototype.push.apply(selectedRelays, selectedOutputs);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet selectedConfig: DeviceConfiguration = {\r\n\t\t\tname: this.serverConfigData.name,\r\n\t\t\textraValue: this.serverConfigData.extraValue,\r\n\t\t\thost: this.serverConfigData.host,\r\n\t\t\tport: this.serverConfigData.port,\r\n\t\t\tusername: this.serverConfigData.username,\r\n\t\t\tpassword: this.serverConfigData.password,\r\n\t\t\tsyncIdentifier: this.serverConfigData.syncIdentifier,\r\n\t\t\talarms: selectedAlarms,\r\n\t\t\tcameras: selectedCameras,\r\n\t\t\taudios: selectedAudios,\r\n\t\t\trelays: selectedRelays,\r\n\t\t\tusers: this.serverConfigData.users,\r\n\t\t};\r\n\r\n\t\tlet serverConfig: ServerConfiguration = {\r\n\t\t\tserverId: this.selectedServer.serverID,\r\n\t\t\textraValue: this.currentServer.extraValue,\r\n\t\t\tdeviceConfiguration: selectedConfig,\r\n\t\t};\r\n\r\n\t\tthis.addConfig(serverConfig);\r\n\t}\r\n\r\n\tpublic get extraValue(): string {\r\n\t\tif (this.currentServer) {\r\n\t\t\treturn this.currentServer.extraValue;\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate toggleCameras(all: boolean) {\r\n\t\tthis.allCamerasSelected = all;\r\n\t\tthis.noCamerasSelected = !all;\r\n\r\n\t\tthis.serverConfigData.cameras.forEach((item, index) => {\r\n\t\t\titem.selected = all;\r\n\t\t});\r\n\r\n\t\tthis.refreshCameraUsageDifference();\r\n\t}\r\n\r\n\tprivate toggleAudios(all) {\r\n\t\tthis.allAudiosSelected = all;\r\n\t\tthis.noAudiosSelected = !all;\r\n\r\n\t\tthis.serverConfigData.audios.forEach((item, index) => {\r\n\t\t\titem.selected = all;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate toggleAlarms(all) {\r\n\t\tthis.allAlarmsSelected = all;\r\n\t\tthis.noAlarmsSelected = !all;\r\n\r\n\t\tthis.serverConfigData.alarms.forEach((item, index) => {\r\n\t\t\titem.selected = all;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate toggleOutputs(all) {\r\n\t\tthis.allOutputsSelected = all;\r\n\t\tthis.noOutputsSelected = !all;\r\n\r\n\t\tthis.serverConfigData.outputs.forEach((item, index) => {\r\n\t\t\titem.selected = all;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate toggleDoors(all) {\r\n\t\tthis.allDoorsSelected = all;\r\n\t\tthis.noDoorsSelected = !all;\r\n\r\n\t\tthis.serverConfigData.doors.forEach((item, index) => {\r\n\t\t\titem.selected = all;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get serverDeviceErrorsCount(): number {\r\n\t\treturn this.alarmErrorsCount + this.cameraErrorsCount + this.outputErrorsCount + this.doorErrorsCount + this.audioErrorsCount;\r\n\t}\r\n\r\n\tprivate get alarmErrorsCount(): number {\r\n\t\tlet alarmErrorCount = 0;\r\n\r\n\t\tif (this.deviceConfigurationErrors) {\r\n\t\t\tif (this.deviceConfigurationErrors.alarms != null) {\r\n\t\t\t\talarmErrorCount += this.deviceConfigurationErrors.alarms.length;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn alarmErrorCount;\r\n\t}\r\n\r\n\tprivate get cameraErrorsCount(): number {\r\n\t\tlet cameraErrorCount = 0;\r\n\r\n\t\tif (this.deviceConfigurationErrors) {\r\n\t\t\tif (this.deviceConfigurationErrors.cameras != null) {\r\n\t\t\t\tcameraErrorCount += this.deviceConfigurationErrors.cameras.length;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn cameraErrorCount;\r\n\t}\r\n\r\n\tprivate get outputErrorsCount(): number {\r\n\t\tlet outputErrorCount = 0;\r\n\r\n\t\tif (this.deviceConfigurationErrors) {\r\n\t\t\tif (this.deviceConfigurationErrors.outputs != null) {\r\n\t\t\t\toutputErrorCount += this.deviceConfigurationErrors.outputs.length;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn outputErrorCount;\r\n\t}\r\n\r\n\tprivate get doorErrorsCount(): number {\r\n\t\tlet doorErrorCount = 0;\r\n\r\n\t\tif (this.deviceConfigurationErrors) {\r\n\t\t\tif (this.deviceConfigurationErrors.doors != null) {\r\n\t\t\t\tdoorErrorCount += this.deviceConfigurationErrors.doors.length;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn doorErrorCount;\r\n\t}\r\n\r\n\tprivate get audioErrorsCount(): number {\r\n\t\tlet audioErrorCount = 0;\r\n\r\n\t\tif (this.deviceConfigurationErrors) {\r\n\t\t\tif (this.deviceConfigurationErrors.audios != null) {\r\n\t\t\t\taudioErrorCount += this.deviceConfigurationErrors.audios.length;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn audioErrorCount;\r\n\t}\r\n\r\n\tprivate async refreshCameraUsageDifference(): Promise {\r\n\t\tif (this.isBillingEnabled) {\r\n\t\t\tawait this.fetchSubscription();\r\n\r\n\t\t\tlet selectedCount = this.serverConfigData.cameras.filter((c: DeviceConfigurationCameraSelection) => {\r\n\t\t\t\treturn c.selected;\r\n\t\t\t}).length;\r\n\r\n\t\t\tthis.cameraUsageDifference = selectedCount - this.currentServer.deviceTypeCounts.cameras;\r\n\t\t}\r\n\t}\r\n}\r\n","\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Getter, namespace, State, Mutation } from \"vuex-class\";\r\nimport { debounce, get } from \"lodash\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { CancelTokenSource } from \"axios\";\r\n\r\nimport { getDebouncePeriod } from \"@/utils/debounce-helper\";\r\nimport { getNewCancelTokenSource } from \"@/utils/cancellableQueryHelper\";\r\nimport { CancellableQuery, FeaturesList, UserGroup, UserPermissions, VueBootstrapField, VueBootstrapFieldTableSortEvent } from \"@/store/types\";\r\nimport {\r\n\tDeviceDetails,\r\n\tDeviceType,\r\n\tDeviceTypeIdentifier,\r\n\tGetDevicesByTypeParams,\r\n\tServerDetails\r\n} from \"@/store/devices/types\";\r\nimport { getNewDeviceDetailsTemplate } from \"@/store/devices/templates\";\r\nimport SureViewIcon from \"@/components/SureViewIcon.vue\";\r\nimport OpsLinkCameraImport from \"@/components/OpsLinkCameraImport.vue\";\r\nimport api from \"@/services/api.service\";\r\n\r\nconst Devices = namespace(\"devices\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\n\r\nconst childDeviceTitles: Record = {\r\n\t[DeviceTypeIdentifier.Camera]: \"Camera\",\r\n\t[DeviceTypeIdentifier.Audio]: \"Audio\",\r\n\t[DeviceTypeIdentifier.Output]: \"Output\",\r\n\t[DeviceTypeIdentifier.Door]: \"Door\"\r\n};\r\n\r\nconst outputSettingsMetaLabel = \"Output\";\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"sureview-icon\": SureViewIcon,\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t\t\"ops-link-camera-import\": OpsLinkCameraImport\r\n\t}\r\n})\r\nexport default class ChildDeviceTable extends Vue {\r\n\t@Prop({ required: true, type: Number }) private deviceTypeId: number;\r\n\t@Prop({ required: true, default: false, type: Boolean }) private isForAllServers: boolean;\r\n\t@Prop({ required: true, default: false, type: Boolean }) private visible;\r\n\t@Prop({ default: false, type: Boolean }) private readonly;\r\n\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@State private featuresList: FeaturesList;\r\n\t@State private UserGroups: UserGroup[];\r\n\r\n\t@Devices.Action private fetchDevicesForAllGroupsByType: (\r\n\t\tparams: CancellableQuery\r\n\t) => Promise;\r\n\t@Devices.Mutation private setCameraPreviewModalVisibility: (visible: boolean) => void;\r\n\t@Devices.Mutation private setCurrentDeviceTypeIdentifier: (deviceTypeIdentifier: DeviceTypeIdentifier) => void;\r\n\t@Devices.Mutation private setDeleteChildDeviceModalVisibility: (visible: boolean) => void;\r\n\t@Devices.Mutation private setDevice: (device: DeviceDetails) => void;\r\n\t@Devices.Mutation private setEditChildDeviceModalVisibility: (visible: boolean) => void;\r\n\r\n\t@Devices.State private currentServer: ServerDetails;\r\n\t@Devices.State private devices: DeviceDetails[];\r\n\t@Devices.State private totalDevices: number;\r\n\t@Devices.State private serversList: ServerDetails[];\r\n\r\n\t@SiteMonitor.Action private pollApplianceServerAndDeviceServerDetails: () => Promise;\r\n\t@SiteMonitor.Action private stopPollingApplianceServerAndDeviceServerDetails: () => void;\r\n\t@SiteMonitor.Getter(\"getIsCameraEnabled\") isCameraEnabled: (deviceId: number, test: string) => boolean;\r\n\t@SiteMonitor.Getter(\"getApplianceOfflineNotification\") private applianceOfflineNotification: (deviceId: number) => string;\r\n\r\n\tprivate readonly deviceTypes = DeviceTypeIdentifier;\r\n\r\n\tprivate axiosCancelTokenSource: CancelTokenSource = null;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate isTableBusy: boolean = false;\r\n\tprivate recordsPage: number = 1;\r\n\tprivate recordsPageSize: number = 25;\r\n\tprivate recordsPageSizeMax: number = 200;\r\n\tprivate recordsPageSizeUpdated: number = this.recordsPageSize;\r\n\tprivate sortBy: string = \"title\";\r\n\tprivate sortDesc: boolean = false;\r\n\tprivate searchTerm: string = \"\";\r\n\tprivate searchTermPersisted: string = \"\";\r\n\tprivate title: string = \"\";\r\n\tprivate isAddingWithOpsLink: boolean = false;\r\n\tprivate isCameraDetectionAvailable: boolean = false;\r\n\r\n\tprivate fields: VueBootstrapField[] = [\r\n\t\t{\r\n\t\t\tkey: \"title\",\r\n\t\t\tlabel: \"Title\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"groupID\",\r\n\t\t\tlabel: \"Area\",\r\n\t\t\tformatter: groupID => {\r\n\t\t\t\treturn this.getGroupTitle(groupID);\r\n\t\t\t},\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"input1\",\r\n\t\t\tlabel: \"Input 1\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"input2\",\r\n\t\t\tlabel: \"Input 2\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"extraValue\",\r\n\t\t\tlabel: \"Extra Value\",\r\n\t\t\tsortable: true,\r\n\t\t\tclass: \"extra-value-column\"\r\n\t\t}\r\n\t];\r\n\r\n\tprivate async created(): Promise {\r\n\t\tthis.title = childDeviceTitles[this.deviceTypeId];\r\n\r\n\t\tif (this.isForAllServers) {\r\n\t\t\tthis.addAllServersSpecificFields();\r\n\t\t}\r\n\r\n\t\tthis.addChildSpecificFields();\r\n\r\n\t\tif ((this.hasEditPermission && !this.readonly) || this.tableIsForCameras) {\r\n\t\t\tthis.addActions();\r\n\t\t}\r\n\r\n\t\tthis.isTableBusy = true;\r\n\r\n\t\tawait this.getDevices();\r\n\r\n\t\tthis.isTableBusy = false;\r\n\r\n\t\tif (!this.isForAllServers) {\r\n\t\t\t//Records may have been added from outside this component, so we need to set the page to prevent needless API requests\r\n\t\t\tthis.recordsPage = Math.floor(this.devices.length / this.recordsPageSize) + 1;\r\n\t\t}\r\n\r\n\t\tawait this.checkCameraDetectionAvailability();\r\n\t}\r\n\r\n\tpublic async mounted(): Promise {\r\n\t\tawait this.pollApplianceServerAndDeviceServerDetails();\r\n\t}\r\n\r\n\tpublic beforeDestroy() {\r\n\t\tthis.stopPollingApplianceServerAndDeviceServerDetails();\r\n\t}\r\n\r\n\tprivate get includeReferenceShots(): boolean {\r\n\t\treturn this.tableIsForCameras && get(this.featuresList, [\"Devices\", \"ShowReferenceShots\"]);\r\n\t}\r\n\r\n\tprivate get tableIsForCameras(): boolean {\r\n\t\treturn this.deviceTypeId === DeviceTypeIdentifier.Camera;\r\n\t}\r\n\r\n\tprivate addChildSpecificFields(): void {\r\n\t\tif (this.includeReferenceShots) {\r\n\t\t\tthis.fields.splice(0, 0, {\r\n\t\t\t\tkey: \"preview\",\r\n\t\t\t\tlabel: \"Preview\",\r\n\t\t\t\tsortable: false\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.deviceTypeId === DeviceTypeIdentifier.Audio) {\r\n\t\t\tthis.fields.push({\r\n\t\t\t\tkey: \"capabilities\",\r\n\t\t\t\tlabel: \"Capabilities\",\r\n\t\t\t\tformatter: (value, key, item: DeviceDetails) => {\r\n\t\t\t\t\treturn this.getAudioCapability(item);\r\n\t\t\t\t},\r\n\t\t\t\tsortByFormatted: true\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate addAllServersSpecificFields(): void {\r\n\t\tthis.fields.splice(1, 0, {\r\n\t\t\tkey: \"serverID\",\r\n\t\t\tlabel: \"Device\",\r\n\t\t\tformatter: (value, key, item: DeviceDetails) => {\r\n\t\t\t\treturn this.getDeviceTitle(item);\r\n\t\t\t},\r\n\t\t\tsortable: true\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get hasEditPermission(): boolean {\r\n\t\treturn this.permissions.isSystemAdmin || this.permissions.isAccountAdmin || this.permissions.canEditSiteSetup;\r\n\t}\r\n\r\n\tprivate get showCameraPreviewIcon(): boolean {\r\n\t\treturn this.tableIsForCameras;\r\n\t}\r\n\r\n\tprivate addActions(): void {\r\n\t\tthis.fields.push({ key: \"actions\", label: \"Actions\", sortable: false, class: \"text-center\" });\r\n\t}\r\n\r\n\tprivate async getDevices(): Promise {\r\n\t\tthis.isLoading = true;\r\n\r\n\t\tconst sortBy = this.fields.find(f => f.key === this.sortBy)?.label.replace(/\\s/g,'');\r\n\r\n\t\tconst queryParams: GetDevicesByTypeParams = {\r\n\t\t\tdeviceTypeId: this.deviceTypeId,\r\n\t\t\tpage: this.recordsPage,\r\n\t\t\tpageSize: this.recordsPageSize,\r\n\t\t\tsortBy: sortBy || this.sortBy,\r\n\t\t\tsortDesc: this.sortDesc,\r\n\t\t\tsearchTerm: this.searchTerm\r\n\t\t};\r\n\r\n\t\tif (this.includeReferenceShots) {\r\n\t\t\tqueryParams.includeReferenceShots = true;\r\n\t\t}\r\n\r\n\t\tif (!this.isForAllServers) {\r\n\t\t\tqueryParams.serverId = this.currentServer.serverID;\r\n\t\t}\r\n\r\n\t\tif (this.queryIsForRelays) {\r\n\t\t\tthis.adjustQueryForRelays(queryParams);\r\n\t\t}\r\n\r\n\t\tthis.axiosCancelTokenSource = getNewCancelTokenSource(this.axiosCancelTokenSource, true);\r\n\r\n\t\tconst cancellableQuery: CancellableQuery = {\r\n\t\t\tparams: queryParams,\r\n\t\t\tcancelTokenSource: this.axiosCancelTokenSource\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tawait this.fetchDevicesForAllGroupsByType(cancellableQuery);\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: \"Error loading devices\",\r\n\t\t\t\ttext: `Unable to load devices`\r\n\t\t\t});\r\n\t\t\tconsole.error(e);\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 queryIsForRelays(): boolean {\r\n\t\treturn this.deviceTypeId === DeviceTypeIdentifier.Output || this.deviceTypeId === DeviceTypeIdentifier.Door;\r\n\t}\r\n\r\n\tprivate adjustQueryForRelays(queryParams: GetDevicesByTypeParams): void {\r\n\t\tqueryParams.selectOutputs = queryParams.deviceTypeId === DeviceTypeIdentifier.Output;\r\n\t\tqueryParams.deviceTypeId = DeviceType.Relay;\r\n\t}\r\n\r\n\tprivate getGroupTitle(groupID: number): string {\r\n\t\treturn this.UserGroups.find(ug => ug.groupID == groupID)?.title;\r\n\t}\r\n\r\n\tprivate getAudioCapability(device: DeviceDetails): string {\r\n\t\tif (device.audioSettings?.transmitEnabled && device.audioSettings?.receiveEnabled) {\r\n\t\t\treturn \"2-Way Audio\";\r\n\t\t}\r\n\r\n\t\tif (device.audioSettings?.transmitEnabled) {\r\n\t\t\treturn \"Transmit\";\r\n\t\t}\r\n\r\n\t\tif (device.audioSettings?.receiveEnabled) {\r\n\t\t\treturn \"Receive\";\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate getDeviceTitle(device: DeviceDetails): string {\r\n\t\tconst server = this.serversList.find(s => s.serverID == device.serverID);\r\n\r\n\t\tif (server) {\r\n\t\t\treturn server.title;\r\n\t\t}\r\n\r\n\t\treturn device.serverTitle;\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.searchTerm = searchTerm;\r\n\t\tawait this.getDevices();\r\n\t}\r\n\r\n\tprivate handleAddDevice(): void {\r\n\t\t// this.setIsLoading(true);\r\n\r\n\t\tconst newDevice = getNewDeviceDetailsTemplate();\r\n\t\tnewDevice.deviceTypeID = this.deviceTypeId;\r\n\r\n\t\tif (this.deviceTypeId === DeviceTypeIdentifier.Door || this.deviceTypeId === DeviceTypeIdentifier.Output) {\r\n\t\t\tnewDevice.deviceTypeID = DeviceType.Relay;\r\n\t\t}\r\n\r\n\t\tif (this.currentServer) {\r\n\t\t\tnewDevice.serverID = this.currentServer.serverID;\r\n\t\t\tnewDevice.groupID = this.currentServer.groupID;\r\n\t\t}\r\n\r\n\t\tthis.setDevice(newDevice);\r\n\t\tthis.setCurrentDeviceTypeIdentifier(this.deviceTypeId);\r\n\t\tthis.setEditChildDeviceModalVisibility(true);\r\n\t}\r\n\r\n\tprivate handleEditClick(device: DeviceDetails): void {\r\n\t\t// this.setIsLoading(true);\r\n\t\tthis.setDevice(device);\r\n\t\tthis.setCurrentDeviceTypeIdentifier(this.deviceTypeId);\r\n\t\tthis.setEditChildDeviceModalVisibility(true);\r\n\t}\r\n\r\n\tprivate handlePreviewCameraClick(device: DeviceDetails): void {\r\n\t\tthis.setDevice(device);\r\n\t\tthis.setCameraPreviewModalVisibility(true);\r\n\t}\r\n\r\n\tprivate handleDeleteClick(device: DeviceDetails): void {\r\n\t\tthis.setDevice(device);\r\n\t\tthis.setCurrentDeviceTypeIdentifier(this.deviceTypeId);\r\n\t\tthis.setDeleteChildDeviceModalVisibility(true);\r\n\t}\r\n\r\n\tprivate getPreviewImageSource(previewBase64: string): string {\r\n\t\treturn `data:image;base64,${previewBase64}`;\r\n\t}\r\n\r\n\tprivate async onPageClick(page: number) {\r\n\t\tif (!this.visible || this.isLoading) {\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.getDevices();\r\n\t}\r\n\r\n\tprivate async onRecordsPerPageClick() {\r\n\t\tlet pageSize = +this.recordsPageSizeUpdated;\r\n\r\n\t\tif (pageSize) {\r\n\t\t\tif (pageSize > this.recordsPageSizeMax) {\r\n\t\t\t\tpageSize = this.recordsPageSizeMax;\r\n\t\t\t}\r\n\t\t\tif (pageSize !== this.recordsPageSize) {\r\n\t\t\t\tthis.recordsPage = 1;\r\n\t\t\t}\r\n\t\t\tthis.recordsPageSize = pageSize;\r\n\t\t}\r\n\t\tthis.recordsPageSizeUpdated = this.recordsPageSize;\r\n\t\tthis.onPageClick(this.recordsPage);\r\n\t}\r\n\r\n\tpublic async updateDevices() {\r\n\t\tthis.isTableBusy = true;\r\n\r\n\t\ttry\r\n\t\t{\r\n\t\t\tawait this.getDevices();\r\n\t\t}\r\n\t\tfinally\r\n\t\t{\r\n\t\t\tthis.isTableBusy = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async checkCameraDetectionAvailability() {\r\n\t\tlet isFeatureEnabled = get(this.featuresList, [\"Devices\", \"Appliances\", \"CameraDetection\"]);\r\n\t\tif (!isFeatureEnabled) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet availableDetectors = await api.getApplianceList();\r\n\t\tthis.isCameraDetectionAvailable = availableDetectors.length !== 0;\r\n\t}\r\n\r\n\tprivate async onSortChange(event: VueBootstrapFieldTableSortEvent): Promise {\r\n\t\tif (!this.visible || this.isLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.sortBy = event.sortBy || this.sortBy;\r\n\t\tthis.sortDesc = event.sortDesc;\r\n\r\n\t\tawait this.getDevices();\r\n\t}\r\n\r\n\tprivate hasEditPermissionToDevice(device: DeviceDetails): boolean {\r\n\t\tif (!device || !device.groupSyncId) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn device && device.groupSyncId && (this.permissions.canOverrideGroupSync || this.permissions.isSystemAdmin);\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!./ChildDeviceTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChildDeviceTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ChildDeviceTable.vue?vue&type=template&id=6fc53811&scoped=true\"\nimport script from \"./ChildDeviceTable.vue?vue&type=script&lang=ts\"\nexport * from \"./ChildDeviceTable.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ChildDeviceTable.vue?vue&type=style&index=0&id=6fc53811&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 \"6fc53811\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\n\r\nimport { DeviceTypeCounts, DeviceTypeIdentifier, ServerDetails, ServerType } from \"@/store/devices/types\";\r\nimport ChildDeviceTable from \"@/components/device-setup/tables/ChildDeviceTable.vue\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\nconst childDeviceTitles: Record = {\r\n\t[DeviceTypeIdentifier.Camera]: \"Cameras\",\r\n\t[DeviceTypeIdentifier.Audio]: \"Audios\",\r\n\t[DeviceTypeIdentifier.Output]: \"Outputs\",\r\n\t[DeviceTypeIdentifier.Door]: \"Doors\"\r\n};\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"child-device-table\": ChildDeviceTable\r\n\t}\r\n})\r\nexport default class ChildDeviceTabWrapper extends Vue {\r\n\t$refs!: {\r\n\t\tchildDeviceTable: ChildDeviceTable;\r\n\t};\r\n\r\n\t@Prop({ required: true, type: Number }) private deviceTypeIdentifier: number;\r\n\t@Prop({ required: true, default: true, type: Boolean }) private isForAllServers: boolean;\r\n\t@Prop({ required: true, default: false, type: Boolean }) private visible: boolean;\r\n\t@Prop({ default: false, type: Boolean }) private readonly: boolean;\r\n\r\n\t@Devices.State private currentServer: ServerDetails;\r\n\t@Devices.State private deviceTypeCounts: DeviceTypeCounts;\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\r\n\tprivate tabLoaded: boolean = false;\r\n\tprivate updateDevices: boolean = false;\r\n\tprivate title: string = \"\";\r\n\r\n\tprivate created(): void {\r\n\t\tthis.title = childDeviceTitles[this.deviceTypeIdentifier];\r\n\t}\r\n\r\n\tprivate get allowsDevices(): boolean {\r\n\t\tif (this.isForAllServers) {\r\n\t\t\tswitch (this.deviceTypeIdentifier) {\r\n\t\t\t\tcase DeviceTypeIdentifier.Camera:\r\n\t\t\t\t\treturn this.serverTypes.some(st => st.numCameras !== 0);\r\n\t\t\t\tcase DeviceTypeIdentifier.Audio:\r\n\t\t\t\t\treturn this.serverTypes.some(st => st.numAudioInputs !== 0);\r\n\t\t\t\tcase DeviceTypeIdentifier.Door:\r\n\t\t\t\tcase DeviceTypeIdentifier.Output:\r\n\t\t\t\t\treturn this.serverTypes.some(st => st.numRelays !== 0);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tconst serverType: ServerType = this.serverTypes.find(\r\n\t\t\t\tst => st.serverTypeID === this.currentServer.serverTypeID\r\n\t\t\t);\r\n\r\n\t\t\tswitch (this.deviceTypeIdentifier) {\r\n\t\t\t\tcase DeviceTypeIdentifier.Camera:\r\n\t\t\t\t\treturn serverType && serverType.numCameras !== 0;\r\n\t\t\t\tcase DeviceTypeIdentifier.Audio:\r\n\t\t\t\t\treturn serverType && serverType.numAudioInputs !== 0;\r\n\t\t\t\tcase DeviceTypeIdentifier.Door:\r\n\t\t\t\tcase DeviceTypeIdentifier.Output:\r\n\t\t\t\t\treturn serverType && serverType.numRelays !== 0;\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 deviceCount(): number {\r\n\t\tif (this.isForAllServers) {\r\n\t\t\tswitch (this.deviceTypeIdentifier) {\r\n\t\t\t\tcase DeviceTypeIdentifier.Camera:\r\n\t\t\t\t\treturn this.deviceTypeCounts.cameras;\r\n\t\t\t\tcase DeviceTypeIdentifier.Audio:\r\n\t\t\t\t\treturn this.deviceTypeCounts.audios;\r\n\t\t\t\tcase DeviceTypeIdentifier.Door:\r\n\t\t\t\t\treturn this.deviceTypeCounts.doors;\r\n\t\t\t\tcase DeviceTypeIdentifier.Output:\r\n\t\t\t\t\treturn this.deviceTypeCounts.outputs;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tswitch (this.deviceTypeIdentifier) {\r\n\t\t\t\tcase DeviceTypeIdentifier.Camera:\r\n\t\t\t\t\treturn this.currentServer.deviceTypeCounts.cameras;\r\n\t\t\t\tcase DeviceTypeIdentifier.Audio:\r\n\t\t\t\t\treturn this.currentServer.deviceTypeCounts.audios;\r\n\t\t\t\tcase DeviceTypeIdentifier.Door:\r\n\t\t\t\t\treturn this.currentServer.deviceTypeCounts.doors;\r\n\t\t\t\tcase DeviceTypeIdentifier.Output:\r\n\t\t\t\t\treturn this.currentServer.deviceTypeCounts.outputs;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tprivate get showDeviceCounts(): boolean {\r\n\t\tif (\r\n\t\t\t(this.isForAllServers && this.deviceTypeCounts) ||\r\n\t\t\t(!this.isForAllServers && this.currentServer.deviceTypeCounts)\r\n\t\t) {\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 handleTabLoaded(): void {\r\n\t\tif (this.tabLoaded && this.$refs.childDeviceTable) {\r\n\t\t\tthis.$refs.childDeviceTable.updateDevices();\r\n\t\t}\r\n\t\tthis.tabLoaded = true;\r\n\t}\r\n\r\n\tprivate getTitleText(title: string): string {\r\n\t\tlet text = \"\";\r\n\t\tif (!this.allowsDevices && !this.isForAllServers) {\r\n\t\t\ttext = `${title} are not supported on this device`;\r\n\t\t}\r\n\t\tif (!this.allowsDevices && this.isForAllServers) {\r\n\t\t\ttext = `There are Devices configured that support ${title}`;\r\n\t\t}\r\n\t\treturn text;\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!./ChildDeviceTabWrapper.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChildDeviceTabWrapper.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ChildDeviceTabWrapper.vue?vue&type=template&id=437de015&scoped=true\"\nimport script from \"./ChildDeviceTabWrapper.vue?vue&type=script&lang=ts\"\nexport * from \"./ChildDeviceTabWrapper.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ChildDeviceTabWrapper.vue?vue&type=style&index=0&id=437de015&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 \"437de015\",\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.editChildDeviceModalVisible,\"size\":\"lg\",\"static\":\"\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"centered\":\"\",\"title\":_vm.title,\"data-cy\":\"edit-device-modal\"},on:{\"hidden\":function($event){return _vm.handleModalHidden()}},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('b-button',{attrs:{\"variant\":\"primary\",\"disabled\":_vm.deviceIsInvalid,\"data-cy\":\"save-button\"},on:{\"click\":function($event){return _vm.handleSaveClick()}}},[_vm._v(\" Save \")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"cancel-button\"},on:{\"click\":function($event){return _vm.handleModalHidden()}}},[_vm._v(\" Cancel \")])]},proxy:true}])},[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\"},[_c('b-form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.handleSubmit()}}},[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"Device\",\"label-cols-sm\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Device: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),(_vm.creatingFromMainTab || _vm.isEditing)?_c('v-select-3',{attrs:{\"options\":_vm.serversList,\"placeholder\":\"Search\",\"label\":\"title\",\"filterable\":false,\"appendToBody\":\"\",\"data-cy\":\"server-select\"},on:{\"input\":function($event){return _vm.handleServerSelected()},\"search\":function (searchTerm, loading) { return _vm.handleServerSearch(searchTerm, loading); }},model:{value:(_vm.selectedServer),callback:function ($$v) {_vm.selectedServer=$$v},expression:\"selectedServer\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no devices were found.\")])]):_c('b-form-input',{attrs:{\"readonly\":\"\"},model:{value:(_vm.selectedServer.title),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"title\", $$v)},expression:\"selectedServer.title\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"Area\",\"label-cols-sm\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Area: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('area-tree-select',{attrs:{\"reduce\":function (a) { return a.id; },\"append-to-body\":\"\",\"clearable\":false},model:{value:(_vm.device.groupID),callback:function ($$v) {_vm.$set(_vm.device, \"groupID\", $$v)},expression:\"device.groupID\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"title\",\"label-cols-sm\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Title: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('b-form-input',{attrs:{\"id\":\"title\",\"placeholder\":\"Title\"},model:{value:(_vm.device.title),callback:function ($$v) {_vm.$set(_vm.device, \"title\", $$v)},expression:\"device.title\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"input-1\",\"label-cols-sm\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Input 1: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('b-form-input',{attrs:{\"id\":\"input-1\",\"type\":\"number\",\"placeholder\":\"Input 1\"},model:{value:(_vm.device.input1),callback:function ($$v) {_vm.$set(_vm.device, \"input1\", $$v)},expression:\"device.input1\"}})],2)],1),(_vm.usesInput2)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Input 2\",\"label-for\":\"input-2\",\"label-cols-sm\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"input-2\",\"placeholder\":\"Input 2\",\"type\":\"number\"},model:{value:(_vm.device.input2),callback:function ($$v) {_vm.$set(_vm.device, \"input2\", $$v)},expression:\"device.input2\"}})],1)],1):_vm._e(),(_vm.usesExtraValue)?_c('b-col',{staticClass:\"pt-3\"},[_c('b-form-group',{attrs:{\"label\":\"Extra value\",\"label-for\":\"extra-value\",\"label-cols-sm\":\"2\",\"label-class\":\"py-0\"}},[_c('b-form-textarea',{staticClass:\"py-0 mh-75px\",attrs:{\"id\":\"extra-value\",\"placeholder\":\"Extra value\"},model:{value:(_vm.device.extraValue),callback:function ($$v) {_vm.$set(_vm.device, \"extraValue\", $$v)},expression:\"device.extraValue\"}})],1)],1):_vm._e(),_c(_vm.childDeviceComponent,{tag:\"component\",attrs:{\"serverId\":_vm.device.serverID},on:{\"validation-changed\":function($event){return _vm.handleValidationChanged($event)},\"device-details-changed\":function($event){return _vm.handleDeviceDetailsChanged($event)}}}),(_vm.isBillingEnabled)?_c('b-col',{attrs:{\"data-cy\":\"device-count-changed-notification\"}},[_c('b-alert',{attrs:{\"variant\":\"info\",\"show\":_vm.cameraUsageDifference != 0 && _vm.isCameraSubscriptionValid}},[_vm._v(\" This action will change camera subscription usage from \"+_vm._s(_vm.subscription.limitedSubscription ? _vm.subscription.cameras + \"/\" + _vm.subscription.camerasLimit : _vm.subscription.cameras)+\" to \"+_vm._s(_vm.subscription.cameras + _vm.cameraUsageDifference)+_vm._s(_vm.subscription.limitedSubscription ? \"/\" + _vm.subscription.camerasLimit : \"\")+\" \")]),_c('b-alert',{staticClass:\"mb-0\",attrs:{\"variant\":\"danger\",\"show\":!_vm.isCameraSubscriptionValid}},[_vm._v(\" Camera usage limit of \"+_vm._s(this.subscription.camerasLimit)+\" will be exceeded \")])],1):_vm._e()],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-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Transmit:\",\"label-for\":\"transmit\",\"label-cols-sm\":\"2\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"transmit\",\"data-cy\":\"transmit-checkbox\"},model:{value:(_vm.device.audioSettings.transmitEnabled),callback:function ($$v) {_vm.$set(_vm.device.audioSettings, \"transmitEnabled\", $$v)},expression:\"device.audioSettings.transmitEnabled\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Receive:\",\"label-for\":\"receive\",\"label-cols-sm\":\"2\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"receive\"},model:{value:(_vm.device.audioSettings.receiveEnabled),callback:function ($$v) {_vm.$set(_vm.device.audioSettings, \"receiveEnabled\", $$v)},expression:\"device.audioSettings.receiveEnabled\"}})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Component, Emit, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { cloneDeep } from \"lodash\";\r\n\r\nimport {\r\n\tgetAudioSettingsDefaults,\r\n\tgetCameraSettingsDefaults,\r\n\tgetDoorRelaySettingsDefaults,\r\n\tgetOutputRelaySettingsDefaults\r\n} from \"@/store/devices/templates\";\r\nimport { DeviceDetails, DeviceTypeIdentifier } from \"@/store/devices/types\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component\r\nexport default class ChildDeviceEditMixin extends Vue {\r\n\t@Devices.State private currentDeviceTypeIdentifier: DeviceTypeIdentifier;\r\n\t@Devices.State(\"device\") private deviceFromStore: DeviceDetails;\r\n\r\n\tpublic device: DeviceDetails = null;\r\n\r\n\tpublic created(): void {\r\n\t\tthis.device = cloneDeep(this.deviceFromStore);\r\n\t\tthis.setSettingsMetasIfNeeded();\r\n\t}\r\n\r\n\tprivate setSettingsMetasIfNeeded(): void {\r\n\t\tswitch (this.currentDeviceTypeIdentifier) {\r\n\t\t\tcase DeviceTypeIdentifier.Camera: {\r\n\t\t\t\tif (!this.device.cameraSettings) {\r\n\t\t\t\t\tthis.device.cameraSettings = getCameraSettingsDefaults();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase DeviceTypeIdentifier.Audio: {\r\n\t\t\t\tif (!this.device.audioSettings) {\r\n\t\t\t\t\tthis.device.audioSettings = getAudioSettingsDefaults();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase DeviceTypeIdentifier.Output: {\r\n\t\t\t\tif (!this.device.relaySettings) {\r\n\t\t\t\t\tthis.device.relaySettings = getOutputRelaySettingsDefaults();\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase DeviceTypeIdentifier.Door: {\r\n\t\t\t\tif (!this.device.relaySettings) {\r\n\t\t\t\t\tthis.device.relaySettings = getDoorRelaySettingsDefaults();\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\t}\r\n\r\n\tpublic get isEditing(): boolean {\r\n\t\treturn this.device.deviceID > 0;\r\n\t}\r\n\r\n\t@Watch(\"$v.$invalid\")\r\n\t@Emit(\"validation-changed\")\r\n\tprivate handleValidationChange($invalid: boolean): boolean {\r\n\t\treturn $invalid;\r\n\t}\r\n\r\n\t@Watch(\"device\", { deep: true })\r\n\t@Emit(\"device-details-changed\")\r\n\tprivate handleDeviceDetailsChanged(): void {}\r\n}\r\n","\r\nimport { Component, Mixins, Prop } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required, requiredIf } from \"vuelidate/lib/validators\";\r\nimport vselect3 from \"vselect3\";\r\nimport { isEqual } from \"lodash\";\r\n\r\nimport ChildDeviceEditMixin from \"@/components/device-setup/editing/ChildDeviceEditMixin\";\r\nimport { AudioSettingsMeta } from \"@/store/devices/types\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vselect3\r\n\t},\r\n\tvalidations: {\r\n\t\tdevice: { required },\r\n\t\thasSettingsMetaChanged: {\r\n\t\t\trequired: requiredIf(function() {\r\n\t\t\t\treturn this.isEditing && isEqual(this.device.audioSettings, this.originalAudioSettings);\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n})\r\nexport default class AudioEdit extends Mixins(ChildDeviceEditMixin, validationMixin) {\r\n\tprivate originalAudioSettings: AudioSettingsMeta = null;\r\n\r\n\tpublic created(): void {\r\n\t\tthis.originalAudioSettings = { ...this.device.audioSettings };\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!./AudioEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AudioEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AudioEdit.vue?vue&type=template&id=267a8d12\"\nimport script from \"./AudioEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./AudioEdit.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.advancedPTZIsEnabled && _vm.hasMatrixBuiltIn)?_c('div',{attrs:{\"data-cy\":\"matrix-functionality\"}},[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Quality:\",\"label-for\":\"record-quality\",\"label-cols-sm\":\"2\"}},[_c('v-select-3',{attrs:{\"options\":_vm.qualityOptions,\"placeholder\":\"Please select\",\"searchable\":false,\"appendToBody\":\"\"},model:{value:(_vm.device.cameraSettings.qual),callback:function ($$v) {_vm.$set(_vm.device.cameraSettings, \"qual\", $$v)},expression:\"device.cameraSettings.qual\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no actions were found.\")])])],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"PTZ:\",\"label-for\":\"telemetry\",\"label-cols-sm\":\"2\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"telemetry\",\"data-cy\":\"telemetry-checkbox\"},on:{\"input\":function($event){return _vm.handleTelemetryEnabledInput()}},model:{value:(_vm.telemetryEnabled),callback:function ($$v) {_vm.telemetryEnabled=$$v},expression:\"telemetryEnabled\"}})],1)],1),(_vm.telemetryEnabled)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"PTZ speed:\",\"label-for\":\"telemetry-speed\",\"label-cols-sm\":\"2\"}},[_c('v-select-3',{attrs:{\"options\":_vm.telemetrySpeedOptions,\"placeholder\":\"Please select\",\"searchable\":false,\"appendToBody\":\"\"},model:{value:(_vm.device.cameraSettings.telemSpeed),callback:function ($$v) {_vm.$set(_vm.device.cameraSettings, \"telemSpeed\", $$v)},expression:\"device.cameraSettings.telemSpeed\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no speeds were found.\")])])],1),_c('preset-edit',{attrs:{\"data-cy\":\"presetEdit\"}})],1):_vm._e()],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-table',{attrs:{\"striped\":\"\",\"hover\":\"\",\"items\":_vm.presets,\"fields\":_vm.presetConfigFields},scopedSlots:_vm._u([{key:\"cell(position)\",fn:function(row){return [(_vm.presetFieldIsInEditMode(row.item, row.field))?_c('b-form-group',{attrs:{\"state\":row.item.position == null || !_vm.presetPositionConflicts(row.item.position),\"invalid-feedback\":\"*Preset with this position already exists.\"}},[_c('b-input',{key:[row.field.key, row.item.position].toString(),class:_vm.presetPositionErrorClass(row.item),attrs:{\"type\":row.field.dataType,\"placeholder\":\"Please enter a PTZ Preset Position\"},model:{value:(row.item[row.field.key]),callback:function ($$v) {_vm.$set(row.item, row.field.key, $$v)},expression:\"row.item[row.field.key]\"}})],1):_c('span',{key:[row.field.key, row.item.position].toString()},[_vm._v(\" \"+_vm._s(row.item[row.field.key])+\" \")])]}},{key:\"cell(name)\",fn:function(row){return [(_vm.presetFieldIsInEditMode(row.item, row.field))?_c('b-form-group',{attrs:{\"state\":row.item.name == null || !(row.item.name.length > 50),\"invalid-feedback\":\"*Preset name cannot be greater than 50 characters.\"}},[_c('b-input',{key:[row.field.key, row.item.position].toString(),class:_vm.presetTitleErrorClass(row.item),attrs:{\"type\":row.field.dataType,\"maxlength\":\"50\"},model:{value:(row.item[row.field.key]),callback:function ($$v) {_vm.$set(row.item, row.field.key, $$v)},expression:\"row.item[row.field.key]\"}})],1):_c('span',{key:[row.field.key, row.item.position].toString()},[_vm._v(\" \"+_vm._s(row.item[row.field.key])+\" \")])]}},{key:\"cell(actions)\",fn:function(row){return [(!row.item.editing && !row.item.creating)?_c('i',{staticClass:\"fas fa-edit hover-icon px-1\",attrs:{\"size\":\"sm\",\"data-cy\":\"btn-edit-contact\"},on:{\"click\":function($event){return _vm.editPreset(row.item)}}}):_vm._e(),(row.item.editing && _vm.allowedToUpdate(row.item))?_c('i',{staticClass:\"fas fa-check hover-icon px-1 col-sm-4\",attrs:{\"size\":\"sm\",\"data-cy\":\"btn-edit-contact\"},on:{\"click\":function($event){return _vm.updatePreset(row.item)}}}):_vm._e(),(row.item.editing)?_c('i',{staticClass:\"fas fa-times hover-icon px-1 col-sm-4\",attrs:{\"size\":\"sm\",\"data-cy\":\"btn-edit-contact\"},on:{\"click\":function($event){return _vm.cancelEditPreset(row.item)}}}):_vm._e(),(row.item.editing)?_c('i',{staticClass:\"fas fa-trash hover-icon px-1 col-sm-4\",attrs:{\"size\":\"sm\",\"data-cy\":\"btn-edit-contact\"},on:{\"click\":function($event){return _vm.deletePreset(row.item)}}}):_vm._e(),(row.item.creating && _vm.allowedToSave(row.item))?_c('i',{staticClass:\"fas fa-check hover-icon px-1 col-sm-4\",attrs:{\"size\":\"sm\",\"data-cy\":\"btn-edit-contact\"},on:{\"click\":function($event){return _vm.createPreset(row.item)}}}):_vm._e(),(row.item.creating)?_c('i',{staticClass:\"fas fa-times hover-icon px-1 col-sm-4\",attrs:{\"size\":\"sm\",\"data-cy\":\"btn-edit-contact\"},on:{\"click\":function($event){return _vm.cancelCreatePreset(row.item)}}}):_vm._e()]}}])}),_c('div',{staticClass:\"text-right\"},[(!_vm.currentlyCreating)?_c('b-btn',{attrs:{\"variant\":\"primary\",\"size\":\"sm\",\"data-cy\":\"AddNewPresetButton\"},on:{\"click\":function($event){return _vm.addBlankPreset()}}},[_vm._v(\" Add new preset \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Mixins, Prop } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { validationMixin } from \"vuelidate\";\r\n\r\nimport ChildDeviceEditMixin from \"@/components/device-setup/editing/ChildDeviceEditMixin\";\r\nimport { DevicePreset, DeviceDetails, DeviceConfigurationPreset, DeviceConfigurationPresetTableItems, DeviceConfigurationPresetPayload } from '@/store/devices/types';\r\nimport { VueBootstrapField } from '@/store/types';\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({})\r\nexport default class PresetEdit extends Mixins(ChildDeviceEditMixin, validationMixin) {\r\n\r\n\t@Devices.Action private getCameraPresets: (device: DeviceDetails) => Promise;\r\n\t@Devices.Action private createOrUpdateCameraPreset: (presetConfigPayload : DeviceConfigurationPresetPayload) => Promise;\r\n\t@Devices.Action private deleteCameraPreset: (presetConfigPayload : DeviceConfigurationPresetPayload) => Promise;\r\n\r\n\tprivate nilNumber: string = \"-897432897543\";\r\n\r\n\tpublic presets: DeviceConfigurationPresetTableItems[] = [];\r\n\r\n\tpublic get dataFields(): VueBootstrapField[] {\r\n\t\treturn this.presetConfigFields.filter(preset => preset.key !== \"actions\");\r\n\t}\r\n\r\n\tpublic get presetConfigFields(): VueBootstrapField[] {\r\n\r\n\t\tlet fields = [\r\n\t\t\t{\r\n\t\t\t\tkey: \"position\",\r\n\t\t\t\tlabel: \"PTZ Preset Position\",\r\n\t\t\t\teditable: false,\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\ttdClass: \"align-middle\",\r\n\t\t\t} as VueBootstrapField,\r\n\t\t\t{\r\n\t\t\t\tkey: \"name\",\r\n\t\t\t\tlabel: \"PTZ Preset Name\",\r\n\t\t\t\teditable: true,\r\n\t\t\t\tdataType: \"text\"\r\n\t\t\t} as VueBootstrapField,\r\n\t\t\t{\r\n\t\t\t\tkey: \"actions\",\r\n\t\t\t\tlabel: \"Actions\",\r\n\t\t\t\teditable: false,\r\n\t\t\t\ttdClass: \"align-middle\"\r\n\t\t\t} as VueBootstrapField\r\n\t\t] as VueBootstrapField[];\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\tpublic async mounted(): Promise {\r\n\t\tif (!this.device)\r\n\t\t{\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet presetsFromDb = await this.getCameraPresets(this.device);\r\n\t\tthis.presets = presetsFromDb.map(preset => { return {...preset, editing: false, creating: false} as DeviceConfigurationPresetTableItems});\r\n\r\n\t\tif (this.presets) {\r\n\t\t\tthis.device.presets = this.presets.map(preset => {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tpresetNumber: preset.position,\r\n\t\t\t\t\ttitle: preset.name\r\n\t\t\t\t} as DevicePreset\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate presetFieldIsInEditMode(preset: DeviceConfigurationPresetTableItems, field: VueBootstrapField): boolean {\r\n\t\treturn (preset.editing && field.editable) || preset.creating;\r\n\t}\r\n\r\n\tprivate get currentlyCreating(): boolean {\r\n\t\treturn this.presets.some(preset => preset.creating);\r\n\t}\r\n\r\n\tprivate allowedToSave(preset: DeviceConfigurationPresetTableItems): boolean {\r\n\t\tif (preset.position === null || preset.position === undefined || isNaN(preset.position))\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse if (this.presets.filter(presetCheck =>\r\n\t\t\t\tparseInt(presetCheck.position.toString()) === parseInt((preset.position?.toString()) ?? this.nilNumber)\r\n\t\t\t).length > 1\r\n\t\t)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\telse if (preset.name?.length > 50)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn !isNaN(parseInt(preset.position.toString()));\r\n\t}\r\n\r\n\tprivate allowedToUpdate(preset: DeviceConfigurationPresetTableItems): boolean {\r\n\t\treturn this.allowedToSave(preset) && preset.name !== this.device.presets.find(presetToFind => presetToFind.presetNumber === preset.position).title;\r\n\t}\r\n\r\n\tprivate presetValidityCSSClass(preset: DeviceConfigurationPresetTableItems) : string {\r\n\t\tif (preset.creating) {\r\n\t\t\treturn this.presetPositionErrorClass(preset);\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 presetPositionErrorClass(preset: DeviceConfigurationPresetTableItems): string {\r\n\t\tif (preset.position == null)\r\n\t\t{\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tif (isNaN(preset.position))\r\n\t\t{\r\n\t\t\treturn \"invalid\";\r\n\t\t}\r\n\r\n\t\tif (this.presetPositionConflicts(preset.position))\r\n\t\t{\r\n\t\t\treturn \"invalid\";\r\n\t\t}\r\n\r\n\t\treturn isNaN(preset.position) ? \"invalid\" : \"\";\r\n\t}\r\n\r\n\tprivate presetTitleErrorClass(preset: DeviceConfigurationPresetTableItems): string {\r\n\t\treturn preset.name?.length > 50 ? \"invalid\" : \"error\";\r\n\t}\r\n\r\n\tprivate presetPositionConflicts(position: number)\r\n\t{\r\n\t\tif (position == null)\r\n\t\t{\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tlet presetsBeingCreated = this.presets.filter(presetCheck =>\r\n\t\t\tpresetCheck.creating === false\r\n\t\t);\r\n\t\treturn presetsBeingCreated.some(presetBeingCreated =>\r\n\t\t\tparseInt((presetBeingCreated.position?.toString()) ?? this.nilNumber) === parseInt(position.toString()));\r\n\t}\r\n\r\n\tprivate cancelCreatePreset(preset: DeviceConfigurationPresetTableItems): void {\r\n\t\tpreset.creating = false;\r\n\t\tthis.presets.remove(preset);\r\n\t}\r\n\r\n\tprivate async createPreset(preset: DeviceConfigurationPresetTableItems): Promise {\r\n\t\tawait this.createOrUpdateCameraPreset({\r\n\t\t\tdeviceId: this.device.deviceID,\r\n\t\t\tgroupId: this.device.groupID ?? 0,\r\n\t\t\tposition: parseInt(preset.position.toString()),\r\n\t\t\tname: preset.name\r\n\t\t} as DeviceConfigurationPresetPayload)\r\n\r\n\t\tthis.device.presets.push({presetNumber: preset.position, title: preset.name} as DevicePreset);\r\n\t\tpreset.creating = false;\r\n\t}\r\n\r\n\tprivate async updatePreset(preset: DeviceConfigurationPresetTableItems): Promise {\r\n\t\tawait this.createOrUpdateCameraPreset({\r\n\t\t\tdeviceId: this.device.deviceID,\r\n\t\t\tgroupId: this.device.groupID ?? 0,\r\n\t\t\tposition: parseInt(preset.position.toString()),\r\n\t\t\tname: preset.name\r\n\t\t} as DeviceConfigurationPresetPayload)\r\n\r\n\t\tthis.device.presets.find(presetToRemove => presetToRemove.presetNumber === preset.position).title = preset.name;\r\n\t\tpreset.editing = false;\r\n\t}\r\n\r\n\tprivate editPreset(preset: DeviceConfigurationPresetTableItems): void {\r\n\t\tpreset.editing = true;\r\n\t}\r\n\r\n\tprivate async deletePreset(preset: DeviceConfigurationPresetTableItems): Promise {\r\n\t\tawait this.deleteCameraPreset({\r\n\t\t\tdeviceId: this.device.deviceID,\r\n\t\t\tgroupId: this.device.groupID ?? 0,\r\n\t\t\tposition: parseInt(preset.position.toString()),\r\n\t\t\tname: preset.name\r\n\t\t} as DeviceConfigurationPresetPayload)\r\n\r\n\t\tthis.device.presets.removeWhere(presetToRemove => presetToRemove.presetNumber === preset.position);\r\n\t\tthis.presets.remove(preset);\r\n\t}\r\n\r\n\tprivate cancelEditPreset(preset: DeviceConfigurationPresetTableItems): void {\r\n\t\tpreset.editing = false;\r\n\t\tpreset.name = this.device.presets.find(presetToFind => presetToFind.presetNumber === preset.position).title;\r\n\t}\r\n\r\n\tprivate addBlankPreset(): DeviceConfigurationPresetTableItems {\r\n\t\tlet newPreset = {name: \"New Preset\", position: null, editing: false, creating: true} as DeviceConfigurationPresetTableItems;\r\n\t\tthis.presets.push(newPreset);\r\n\r\n\t\t// return just for easier unit tests.\r\n\t\treturn newPreset;\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!./PresetEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PresetEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PresetEdit.vue?vue&type=template&id=f9ecb674\"\nimport script from \"./PresetEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./PresetEdit.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, Prop } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required, requiredIf } from \"vuelidate/lib/validators\";\r\nimport vselect3 from \"vselect3\";\r\nimport { isEqual } from \"lodash\";\r\n\r\nimport ChildDeviceEditMixin from \"@/components/device-setup/editing/ChildDeviceEditMixin\";\r\nimport { CameraSettingsMeta, ServerDetails, ServerType } from \"@/store/devices/types\";\r\nimport PresetEdit from \"./PresetEdit.vue\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vselect3,\r\n\t\t\"preset-edit\": PresetEdit\r\n\t},\r\n\tvalidations: {\r\n\t\tdevice: { required },\r\n\t\thasSettingsMetaChanged: {\r\n\t\t\trequired: requiredIf(function() {\r\n\t\t\t\treturn this.isEditing && isEqual(this.device.cameraSettings, this.originalCameraSettings);\r\n\t\t\t})\r\n\t\t},\r\n\t}\r\n})\r\nexport default class CameraEdit extends Mixins(ChildDeviceEditMixin, validationMixin) {\r\n\t@Prop({ type: Number }) private serverId: number;\r\n\r\n\t@Devices.State private serversList: ServerDetails[];\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\t@Getter getFeature: (featureList: string[]) => boolean;\r\n\r\n\tprivate originalCameraSettings: CameraSettingsMeta = null;\r\n\tprivate telemetryEnabled: boolean = false;\r\n\r\n\tpublic created(): void {\r\n\t\tthis.originalCameraSettings = { ...this.device.cameraSettings };\r\n\t\tthis.telemetryEnabled = this.device.cameraSettings.telemServerId === 0;\r\n\t}\r\n\r\n\tprivate get qualityOptions(): string[] {\r\n\t\treturn [\"Default\", \"Lowest\", \"Low\", \"Medium\", \"High\", \"Highest\"];\r\n\t}\r\n\r\n\tprivate get telemetrySpeedOptions(): string[] {\r\n\t\treturn [\"Default\", \"Slowest\", \"Slow\", \"Medium\", \"Fast\", \"Fastest\"];\r\n\t}\r\n\r\n\tprivate get hasMatrixBuiltIn(): boolean {\r\n\t\tif (!this.serverId) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst server: ServerDetails = this.serversList.find(s => s.serverID === this.serverId);\r\n\r\n\t\tif (!server) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst serverType: ServerType = this.serverTypes.find(st => st.serverTypeID == server.serverTypeID);\r\n\r\n\t\tif (!serverType) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn serverType.hasMatrixBuiltIn;\r\n\t}\r\n\r\n\tprivate handleTelemetryEnabledInput(): void {\r\n\t\tthis.device.cameraSettings.telemServerId = this.telemetryEnabled ? 0 : -1;\r\n\t}\r\n\r\n\tprivate get advancedPTZIsEnabled(): boolean {\r\n\t\treturn this.getFeature([\"Devices\", \"AdvancedSetup\", \"PTZ\"]);\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!./CameraEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CameraEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CameraEdit.vue?vue&type=template&id=2c8d19b0\"\nimport script from \"./CameraEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./CameraEdit.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-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"On/Off:\",\"label-for\":\"onOff\",\"label-cols-sm\":\"2\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"onOff\",\"data-cy\":\"onoff-checkbox\"},model:{value:(_vm.device.relaySettings.onOffEnabled),callback:function ($$v) {_vm.$set(_vm.device.relaySettings, \"onOffEnabled\", $$v)},expression:\"device.relaySettings.onOffEnabled\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Pulse:\",\"label-for\":\"pulse\",\"label-cols-sm\":\"2\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"pulse\"},model:{value:(_vm.device.relaySettings.pulseEnabled),callback:function ($$v) {_vm.$set(_vm.device.relaySettings, \"pulseEnabled\", $$v)},expression:\"device.relaySettings.pulseEnabled\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Default State Enabled:\",\"label-for\":\"stateSwitch\",\"label-cols-sm\":\"2\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"stateSwitch\"},model:{value:(_vm.device.relaySettings.stateSwitchEnabled),callback:function ($$v) {_vm.$set(_vm.device.relaySettings, \"stateSwitchEnabled\", $$v)},expression:\"device.relaySettings.stateSwitchEnabled\"}})],1)],1),(_vm.device.relaySettings.stateSwitchEnabled)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Default State On:\",\"label-for\":\"stateSwitchDefaultState\",\"label-cols-sm\":\"2\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"stateSwitchDefaultState\"},model:{value:(_vm.device.relaySettings.stateSwitchDefaultState),callback:function ($$v) {_vm.$set(_vm.device.relaySettings, \"stateSwitchDefaultState\", $$v)},expression:\"device.relaySettings.stateSwitchDefaultState\"}})],1)],1):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Mixins, Prop } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { required, requiredIf } from \"vuelidate/lib/validators\";\r\nimport vselect3 from \"vselect3\";\r\nimport { isEqual } from \"lodash\";\r\n\r\nimport ChildDeviceEditMixin from \"@/components/device-setup/editing/ChildDeviceEditMixin\";\r\nimport { RelaySettingsMeta } from \"@/store/devices/types\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vselect3\r\n\t},\r\n\tvalidations: {\r\n\t\tdevice: { required },\r\n\t\thasSettingsMetaChanged: {\r\n\t\t\trequired: requiredIf(function() {\r\n\t\t\t\treturn this.isEditing && isEqual(this.device.relaySettings, this.originalRelaySettings);\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n})\r\nexport default class RelayEdit extends Mixins(ChildDeviceEditMixin, validationMixin) {\r\n\tprivate originalRelaySettings: RelaySettingsMeta = null;\r\n\r\n\tpublic created(): void {\r\n\t\tthis.originalRelaySettings = { ...this.device.relaySettings };\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!./RelayEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RelayEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RelayEdit.vue?vue&type=template&id=692e179b\"\nimport script from \"./RelayEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./RelayEdit.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 { VNode } from \"vue\";\nimport { Component, Mixins, Watch } from \"vue-property-decorator\";\nimport { namespace, Mutation, Getter } from \"vuex-class\";\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\nimport vselect3 from \"vselect3\";\nimport { validationMixin } from \"vuelidate\";\nimport { maxValue, minValue, required, requiredIf } from \"vuelidate/lib/validators\";\nimport { debounce, get } from \"lodash\";\n\nimport { getDebouncePeriod } from \"@/utils/debounce-helper\";\nimport AudioEdit from \"@/components/device-setup/editing/AudioEdit.vue\";\nimport CameraEdit from \"@/components/device-setup/editing/CameraEdit.vue\";\nimport RelayEdit from \"@/components/device-setup/editing/RelayEdit.vue\";\n\nimport {\n\tDeviceDetails,\n\tDeviceType,\n\tDeviceTypeIdentifier,\n\tServerDetails,\n\tServerType,\n\tServersWithEnabledDeviceTypesParams\n} from \"@/store/devices/types\";\nimport { FeaturesList } from '@/store/types';\nimport { SubscriptionDto } from '@/store/subscription/types';\nimport AreaTreeSelect from '@/components/form/AreaTreeSelect.vue';\n\nconst Devices = namespace(\"devices\");\nconst Subscription = namespace(\"subscription\");\n\nconst childDeviceComponents: Record = {\n\t[DeviceTypeIdentifier.Audio]: AudioEdit,\n\t[DeviceTypeIdentifier.Camera]: CameraEdit,\n\t[DeviceTypeIdentifier.Output]: RelayEdit,\n\t[DeviceTypeIdentifier.Door]: RelayEdit\n};\n\n@Component({\n\tcomponents: {\n\t\t\"v-select-3\": vselect3,\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\n\t\t\"area-tree-select\": AreaTreeSelect,\n\t},\n\tvalidations: {\n\t\tdevice: {\n\t\t\tserverID: { required, minValue: minValue(1) },\n\t\t\ttitle: { required },\n\t\t\tinput1: { required, minValue: minValue(-1), maxValue: maxValue(2147483647) },\n\t\t\tinput2: { minValue: minValue(-1), maxValue: maxValue(2147483647) },\n\t\t\tgroupID: { required, minValue: minValue(1) },\n\t\t},\n\t\tdataUnchanged: {\n\t\t\trequired: requiredIf(function() {\n\t\t\t\treturn (\n\t\t\t\t\tthis.device &&\n\t\t\t\t\tthis.device.title === this.deviceFromStore.title &&\n\t\t\t\t\tthis.device.serverID === this.deviceFromStore.serverID &&\n\t\t\t\t\tthis.device.input1.toString() === this.deviceFromStore.input1.toString() &&\n\t\t\t\t\t(this.device.extraValue ?? \"\") === (this.deviceFromStore.extraValue ?? \"\") &&\n\t\t\t\t\tthis.device.input2.toString() === this.deviceFromStore.input2.toString() &&\n\t\t\t\t\tthis.device.groupID === this.deviceFromStore.groupID &&\n\t\t\t\t\tthis.device.presets === this.deviceFromStore.presets\n\t\t\t\t);\n\t\t\t})\n\t\t}\n\t}\n})\nexport default class ChildDeviceEdit extends Mixins(validationMixin) {\n\t@Mutation private setIsLoading: (loading: boolean) => void;\n\n\t@Devices.Action private addDevice: (device: DeviceDetails) => Promise;\n\t@Devices.Action private getServer: (serverId: number) => Promise;\n\t@Devices.Action private getServersWithEnabledDeviceTypes: (\n\t\tparams: ServersWithEnabledDeviceTypesParams\n\t) => Promise;\n\t@Devices.Action private updateDevice: (device: DeviceDetails) => Promise;\n\t@Devices.Mutation private setEditChildDeviceModalVisibility: (visible: boolean) => void;\n\t@Devices.State private currentDeviceTypeIdentifier: DeviceTypeIdentifier;\n\t@Devices.State private currentServer: ServerDetails;\n\t@Devices.State(\"device\") private deviceFromStore: DeviceDetails;\n\t@Devices.State private editChildDeviceModalVisible: boolean;\n\t@Devices.State(\"serversList\") private serversListFromStore: ServerDetails[];\n\t@Devices.State(\"serverTypes\") private serverTypesFromStore: ServerType[];\n\n\t@Subscription.State subscription: SubscriptionDto;\n\t@Subscription.Action fetchSubscription: () => Promise;\n\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\n\n\tprivate childDeviceIsInvalid: boolean = true;\n\tprivate device: DeviceDetails = null;\n\tprivate searchTerm: string = \"\";\n\tprivate selectedServer: ServerDetails = null;\n\tprivate serversList: ServerDetails[] = [];\n\n\tprivate async created(): Promise {\n\t\tthis.device = { ...this.deviceFromStore };\n\t\tthis.filterServersListForDeviceType();\n\n\t\tif ((this.creatingFromMainTab || this.isEditing) && this.notEnoughServersDisplayed) {\n\t\t\tconst serversWithEnabledDeviceTypesParams: ServersWithEnabledDeviceTypesParams = { page: 1, pageSize: 100 };\n\n\t\t\tthis.adjustQueryForDeviceType(serversWithEnabledDeviceTypesParams);\n\n\t\t\tawait this.getServersWithEnabledDeviceTypes(serversWithEnabledDeviceTypesParams);\n\t\t\tthis.filterServersListForDeviceType();\n\t\t}\n\n\t\tif (this.isEditing && this.deviceServerNotInList) {\n\t\t\tawait this.getServer(this.device.serverID);\n\t\t\tthis.filterServersListForDeviceType();\n\t\t}\n\n\t\tthis.setInitialSelectedServer();\n\n\t\tif (this.isBillingEnabled) {\n\t\t\tawait this.fetchSubscription();\n\t\t}\n\t}\n\n\tprivate filterServersListForDeviceType(): void {\n\t\tthis.serversList = this.serversListFromStore.filter(\n\t\t\ts =>\n\t\t\t\t!s.syncSystemId &&\n\t\t\t\tthis.serverTypesForThisDeviceType.some(st => st.serverTypeID === s.serverTypeID) &&\n\t\t\t\t(!this.searchTerm || s.title.toLowerCase().includes(this.searchTerm.toLowerCase()))\n\t\t);\n\t}\n\n\tprivate get serverTypesForThisDeviceType(): ServerType[] {\n\t\tswitch (this.device.deviceTypeID) {\n\t\t\tcase DeviceType.Audio:\n\t\t\t\treturn this.serverTypesFromStore.filter(st => st.numAudioInputs !== 0);\n\t\t\tcase DeviceType.Relay:\n\t\t\t\treturn this.serverTypesFromStore.filter(st => st.numRelays !== 0);\n\t\t\tdefault:\n\t\t\t\treturn this.serverTypesFromStore.filter(st => st.numCameras !== 0);\n\t\t}\n\t}\n\n\tprivate get isBillingEnabled(): boolean {\n\t\treturn (!!get(this.featuresList, [\"Billing\"]) || get(this.featuresList, [\"Suite\"])) && this.currentDeviceTypeIdentifier === DeviceTypeIdentifier.Camera;\n\t}\n\n\tprivate get isCameraSubscriptionValid(): boolean {\n\t\tif (this.subscription && this.subscription.limitedSubscription) {\n\t\t\tif ((this.subscription.cameras + this.cameraUsageDifference) > this.subscription.camerasLimit) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tprivate get cameraUsageDifference(): number {\n\t\treturn this.isEditing ? 0 : 1;\n\t}\n\n\tprivate get notEnoughServersDisplayed(): boolean {\n\t\treturn this.serversList.length < 100;\n\t}\n\n\tprivate get deviceServerNotInList(): boolean {\n\t\treturn this.serversList.find(s => s.serverID == this.device.serverID) === undefined;\n\t}\n\n\tprivate setInitialSelectedServer(): void {\n\t\tthis.selectedServer = this.serversListFromStore.find(s => s.serverID === this.device.serverID);\n\t}\n\n\t@Watch(\"selectedServer\")\n\tprivate selectedServerChange(): void {\n\t\tif(this.device && this.device.deviceID == null && this.selectedServer != null)\n\t\t{\n\t\t\tthis.device.groupID = this.selectedServer.groupID;\n\t\t}\n\t}\n\n\tprivate get isEditing(): boolean {\n\t\treturn this.device.deviceID > 0;\n\t}\n\n\tprivate get title(): string {\n\t\tconst deviceType = DeviceTypeIdentifier[this.currentDeviceTypeIdentifier];\n\n\t\treturn this.isEditing\n\t\t\t? `Editing ${deviceType} Device \"${this.deviceFromStore.title}\"`\n\t\t\t: `Create ${deviceType} Device`;\n\t}\n\n\tprivate get creatingFromMainTab(): boolean {\n\t\treturn this.currentServer === null;\n\t}\n\n\tprivate handleServerSelected(): void {\n\t\tthis.device.serverID = this.selectedServer && this.selectedServer.serverID;\n\t}\n\n\tprivate get childDeviceComponent(): VNode {\n\t\treturn childDeviceComponents[this.currentDeviceTypeIdentifier];\n\t}\n\n\tprivate handleValidationChanged(invalid: boolean): void {\n\t\tthis.childDeviceIsInvalid = invalid;\n\t}\n\n\tprivate handleDeviceDetailsChanged(device: DeviceDetails): void {\n\t\tthis.device = {\n\t\t\t...device,\n\t\t\ttitle: this.device.title,\n\t\t\tserverID: this.device.serverID,\n\t\t\tinput1: this.device.input1\n\t\t};\n\t}\n\n\tprivate handleModalHidden(): void {\n\t\tthis.setEditChildDeviceModalVisibility(false);\n\t}\n\n\tprivate get deviceIsInvalid(): boolean {\n\t\treturn this.$v.device.$invalid || (this.$v.dataUnchanged.$invalid && this.childDeviceIsInvalid) || !this.isCameraSubscriptionValid;\n\t}\n\n\tprivate async handleSaveClick(): Promise {\n\t\t//API will default input2 to 0 if it's empty\n\t\tif (!this.device.input2 && this.device.input2 !== 0) {\n\t\t\tthis.device.input2 = -1;\n\t\t}\n\n\t\tif (this.isEditing) {\n\t\t\tawait this.updateDevice(this.device);\n\t\t} else {\n\t\t\tawait this.addDevice(this.device);\n\t\t}\n\n\t\tthis.setEditChildDeviceModalVisibility(false);\n\t}\n\n\tprivate handleServerSearch(searchTerm: string, loading: (boolean) => void): void {\n\t\tloading(true);\n\t\tthis.debounceSearch(this, searchTerm, loading);\n\t}\n\n\tprivate debounceSearch = debounce(\n\t\tasync (\n\t\t\tcomponent: InstanceType,\n\t\t\tsearchTerm: string,\n\t\t\tloading: (boolean) => void\n\t\t): Promise => {\n\t\t\tcomponent.searchTerm = searchTerm;\n\t\t\tawait this.searchServers(loading);\n\t\t},\n\t\tgetDebouncePeriod()\n\t);\n\n\tprivate async searchServers(loading: (boolean) => void): Promise {\n\t\tif (this.searchTerm) {\n\t\t\tconst serversWithEnabledDeviceTypesParams: ServersWithEnabledDeviceTypesParams = {\n\t\t\t\tpage: 1,\n\t\t\t\tpageSize: 100,\n\t\t\t\tsearchTerm: this.searchTerm\n\t\t\t};\n\n\t\t\tthis.adjustQueryForDeviceType(serversWithEnabledDeviceTypesParams);\n\n\t\t\tawait this.getServersWithEnabledDeviceTypes(serversWithEnabledDeviceTypesParams);\n\t\t}\n\n\t\tthis.filterServersListForDeviceType();\n\n\t\tloading(false);\n\t}\n\n\tprivate adjustQueryForDeviceType(serversWithEnabledDeviceTypesParams: ServersWithEnabledDeviceTypesParams): void {\n\t\tswitch (this.device.deviceTypeID) {\n\t\t\tcase DeviceType.Camera: {\n\t\t\t\tserversWithEnabledDeviceTypesParams.camerasEnabled = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase DeviceType.Audio: {\n\t\t\t\tserversWithEnabledDeviceTypesParams.audiosEnabled = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase DeviceType.Relay: {\n\t\t\t\tserversWithEnabledDeviceTypesParams.relaysEnabled = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate get usesInput2(): boolean {\n\t\tconst serverType: ServerType = this.serverTypesFromStore.find(\n\t\t\tst => st.serverTypeID == this.selectedServer?.serverTypeID\n\t\t);\n\n\t\tif (!serverType) {\n\t\t\treturn false;\n\t\t}\n\n\t\tswitch (this.device.deviceTypeID) {\n\t\t\tcase DeviceType.Camera:\n\t\t\t\treturn serverType.usesExtraCameraIds;\n\t\t\tcase DeviceType.Audio:\n\t\t\t\treturn serverType.usesExtraAudioIds;\n\t\t\tcase DeviceType.Relay:\n\t\t\t\treturn serverType.usesExtraRelayIds;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tprivate get usesExtraValue(): boolean {\n\t\tconst serverType: ServerType = this.serverTypesFromStore.find(\n\t\t\tst => st.serverTypeID == this.selectedServer?.serverTypeID\n\t\t);\n\n\t\tif (!serverType) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn serverType.usesDeviceExtraValue;\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!./ChildDeviceEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChildDeviceEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ChildDeviceEdit.vue?vue&type=template&id=39590dd1&scoped=true\"\nimport script from \"./ChildDeviceEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./ChildDeviceEdit.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ChildDeviceEdit.vue?vue&type=style&index=0&id=39590dd1&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 \"39590dd1\",\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.deleteChildDeviceModalVisible)?_c('b-modal',{attrs:{\"visible\":\"\",\"size\":\"lg\",\"centered\":\"\",\"header-class\":\"delete-confirm-modal\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"data-cy\":\"delete-child-device-modal\",\"static\":\"\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"confirm-delete-button\"},on:{\"click\":function($event){return _vm.handleDeleteConfirmClick()}}},[_vm._v(\" Delete \")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"close-button\"},on:{\"click\":function($event){return _vm.handleCloseDeleteModalClick()}}},[_vm._v(\" Cancel \")])]},proxy:true}],null,false,419256635)},[_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(\"Delete \"+_vm._s(_vm.deviceTypeTitle))])])]),_c('h5',[_vm._v(\" Are you sure you want to delete the \"+_vm._s(_vm.deviceTypeTitle)+\" \"),_c('strong',[_vm._v(\"\\\"\"+_vm._s(_vm.device.title)+\"\\\"?\")])])],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\n\r\nimport { DeviceDetails, DeviceTypeIdentifier } from \"@/store/devices/types\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({})\r\nexport default class DeleteChildDeviceModal extends Vue {\r\n\t@Devices.Action private deleteDevice: (device: DeviceDetails) => Promise;\r\n\t@Devices.Mutation private setDeleteChildDeviceModalVisibility: (visible: boolean) => void;\r\n\t@Devices.State private currentDeviceTypeIdentifier: DeviceTypeIdentifier;\r\n\t@Devices.State private deleteChildDeviceModalVisible: boolean;\r\n\t@Devices.State private device: DeviceDetails;\r\n\r\n\tprivate handleCloseDeleteModalClick(): void {\r\n\t\tthis.setDeleteChildDeviceModalVisibility(false);\r\n\t}\r\n\r\n\tprivate async handleDeleteConfirmClick(): Promise {\r\n\t\tawait this.deleteDevice(this.device);\r\n\t\tthis.setDeleteChildDeviceModalVisibility(false);\r\n\t}\r\n\r\n\tprivate get deviceTypeTitle(): string {\r\n\t\treturn DeviceTypeIdentifier[this.currentDeviceTypeIdentifier].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!./DeleteChildDeviceModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteChildDeviceModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeleteChildDeviceModal.vue?vue&type=template&id=7154edc4\"\nimport script from \"./DeleteChildDeviceModal.vue?vue&type=script&lang=ts\"\nexport * from \"./DeleteChildDeviceModal.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.visible)?_c('div',{attrs:{\"data-cy\":\"device-table\"}},[_c('b-row',{staticClass:\"mb-4\"},[_c('b-col',[_c('b-form-input',{attrs:{\"type\":\"search\",\"placeholder\":\"Search...\",\"max\":\"250\",\"data-cy\":\"search\"},on:{\"input\":function($event){return _vm.handleSearchInput($event)}}})],1),(_vm.hasEditPermission)?_c('b-col',{attrs:{\"cols\":\"auto\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"add-button\"},on:{\"click\":function($event){return _vm.handleAddDevice()}}},[_vm._v(\"Add Device\")])],1):_vm._e()],1),(_vm.totalServers !== 0)?_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\",\"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('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"}},[_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"items\":_vm.serversToDisplay,\"fields\":_vm.fields,\"hover\":\"\",\"head-variant\":\"dark\",\"no-local-sorting\":true,\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc},on:{\"sort-changed\":_vm.onSortChange},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(row){return [(row.item.readonly)?_c('i',{staticClass:\"fas fa-eye hover-icon\",attrs:{\"title\":\"View\",\"data-cy\":\"view-button\"},on:{\"click\":function($event){return _vm.handleEditClick(row.item)}}}):_c('span',[_c('i',{staticClass:\"fas fa-edit hover-icon\",attrs:{\"title\":\"Edit\",\"data-cy\":\"edit-button\"},on:{\"click\":function($event){return _vm.handleEditClick(row.item)}}}),(!row.item.syncSystemId)?_c('i',{staticClass:\"fas fa-trash hover-icon mx-1\",attrs:{\"title\":\"Delete\",\"data-cy\":\"delete-button\"},on:{\"click\":function($event){return _vm.handleDeleteClick(row.item)}}}):_vm._e()])]}}],null,false,684979694)}),_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)})],1),(_vm.totalServers > 0)?_c('b-pagination',{staticClass:\"pagination\",attrs:{\"total-rows\":_vm.totalServers,\"per-page\":_vm.recordsPageSize,\"align\":\"center\",\"data-cy\":\"pagination\",\"disabled\":_vm.totalServers < _vm.recordsPageSize},on:{\"input\":_vm.onPageClick},model:{value:(_vm.recordsPage),callback:function ($$v) {_vm.recordsPage=$$v},expression:\"recordsPage\"}}):_vm._e(),_c('delete-device-modal',{attrs:{\"show-modal\":_vm.showDeleteModal,\"data-cy\":\"delete-device-modal\"},on:{\"close-modal\":function($event){return _vm.handleDeleteModalClose()}}})],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.showModal)?_c('b-modal',{attrs:{\"visible\":\"\",\"size\":\"lg\",\"centered\":\"\",\"header-class\":\"delete-confirm-modal\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"static\":\"\",\"data-cy\":\"delete-device-modal\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"confirm-delete-button\"},on:{\"click\":function($event){return _vm.handleDeleteConfirmClick()}}},[_vm._v(\" Delete \")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"close-button\"},on:{\"click\":function($event){return _vm.handleCloseDeleteModalClick()}}},[_vm._v(\" Cancel \")])]},proxy:true}],null,false,419256635)},[_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(\"Delete device\")])])]),_c('h5',[_vm._v(\" Are you sure you want to delete the device \"),_c('strong',[_vm._v(\"\\\"\"+_vm._s(_vm.currentServer.title)+\"\\\"?\")])]),_c('h5',{staticClass:\"mt-2\"},[_vm._v(\"This action will:\")]),_c('ul',[_c('li',[_vm._v(\"Delete all cameras associated with this device\")]),_c('li',[_vm._v(\"Delete all audios associated with this device\")]),_c('li',[_vm._v(\"Delete all doors associated with this device\")]),_c('li',[_vm._v(\"Delete all outputs associated with this device\")]),_c('li',[_vm._v(\"Delete all alarms associated with this device\")])])],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Vue } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\n\r\nimport { ServerDetails } from \"@/store/devices/types\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({})\r\nexport default class DeleteDeviceModal extends Vue {\r\n\t@Prop({ type: Boolean, required: true }) private showModal: boolean;\r\n\r\n\t@Devices.Action private deleteServer: (serverId: number) => Promise;\r\n\t@Devices.Action private getDeviceTypeCounts: (serverId: number) => Promise;\r\n\t@Devices.State private currentServer: ServerDetails;\r\n\r\n\tprivate handleCloseDeleteModalClick(): void {\r\n\t\tthis.closeModal();\r\n\t}\r\n\r\n\tprivate async handleDeleteConfirmClick(): Promise {\r\n\t\tawait this.deleteServer(this.currentServer.serverID);\r\n\t\tawait this.getDeviceTypeCounts(null);\r\n\t\tthis.closeModal();\r\n\t}\r\n\r\n\t@Emit(\"close-modal\")\r\n\tprivate closeModal(): void {}\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!./DeleteDeviceModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteDeviceModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeleteDeviceModal.vue?vue&type=template&id=50b504b4\"\nimport script from \"./DeleteDeviceModal.vue?vue&type=script&lang=ts\"\nexport * from \"./DeleteDeviceModal.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, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Action, Getter, namespace, State } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { debounce, get } from \"lodash\";\r\nimport { CancelTokenSource } from \"axios\";\r\n\r\nimport { getDebouncePeriod } from \"@/utils/debounce-helper\";\r\nimport { getNewCancelTokenSource } from \"@/utils/cancellableQueryHelper\";\r\nimport {\r\n\tCancellableQuery,\r\n\tFeaturesList,\r\n\tPaginatedSearchQueryParams,\r\n\tUserGroup,\r\n\tUserPermissions,\r\n\tVueBootstrapField,\r\n \tVueBootstrapFieldTableSortEvent\r\n} from \"@/store/types\";\r\nimport { ServerDetails, ServerType, ServerModalStartTab } from \"@/store/devices/types\";\r\nimport { getNewServerDetailsTemplate } from \"@/store/devices/templates\";\r\nimport api from \"@/services/api.service\";\r\nimport DeleteDeviceModal from \"@/components/device-setup/confirmation-modals/DeleteDeviceModal.vue\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"delete-device-modal\": DeleteDeviceModal,\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t}\r\n})\r\nexport default class DeviceTable extends Vue {\r\n\t@Prop({ required: true, default: false, type: Boolean }) private visible;\r\n\t@Action private fetchUserGroups: () => Promise;\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@State private featuresList: FeaturesList;\r\n\t@State private UserGroups: UserGroup[];\r\n\r\n\t@Devices.Action private getDeviceTypes: () => Promise;\r\n\t@Devices.Action private getFilteredServersPaginated: (\r\n\t\tparams: CancellableQuery\r\n\t) => Promise;\r\n\t@Devices.Action private getServerLineProfiles: () => Promise;\r\n\r\n\t@Devices.Mutation private setCurrentServer: (server: ServerDetails) => void;\r\n\t@Devices.Mutation setServerModalVisible: (IsVisible: boolean) => void;\r\n\t@Devices.Mutation private setServerModalStartTab: (startTab: ServerModalStartTab) => void;\r\n\r\n\t@Devices.State private serversList: ServerDetails[];\r\n\t@Devices.State private totalServers: number;\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\r\n\t@Prop() devices: ServerDetails[];\r\n\r\n\tprivate axiosCancelTokenSource: CancelTokenSource = null;\r\n\tprivate defaultResponseGrouping: string = \"\";\r\n\tprivate isLoading: boolean = false;\r\n\tprivate recordsPage: number = 1;\r\n\tprivate recordsPageSize: number = 25;\r\n\tprivate recordsPageSizeMax: number = 200;\r\n\tprivate recordsPageSizeUpdated: number = this.recordsPageSize;\r\n\tprivate sortBy: string = \"title\";\r\n\tprivate sortDesc: boolean = false;\r\n\tprivate searchTerm: string = \"\";\r\n\tprivate showDeleteModal: boolean = false;\r\n\r\n\tprivate fields: VueBootstrapField[] = [\r\n\t\t{\r\n\t\t\tkey: \"title\",\r\n\t\t\tlabel: \"Title\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"serverTypeID\",\r\n\t\t\tlabel: \"Type\",\r\n\t\t\tformatter: serverTypeID => {\r\n\t\t\t\treturn this.getServerTypeTitle(serverTypeID);\r\n\t\t\t},\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"groupID\",\r\n\t\t\tlabel: \"Area\",\r\n\t\t\tformatter: groupID => {\r\n\t\t\t\treturn this.getGroupTitle(groupID);\r\n\t\t\t},\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"host\",\r\n\t\t\tlabel: \"Host\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"port\",\r\n\t\t\tlabel: \"Port\",\r\n\t\t\tsortable: true\r\n\t\t}\r\n\t];\r\n\r\n\tprivate async created(): Promise {\r\n\t\tif (this.hasAdvancedAlarmGroupingFlag) {\r\n\t\t\tthis.addAdvancedAlarmGroupingSpecificFields();\r\n\t\t}\r\n\r\n\t\tif (this.hasEditPermission) {\r\n\t\t\tthis.addEditPermissionsSpecificFields();\r\n\t\t}\r\n\r\n\t\tawait Promise.all([\r\n\t\t\tthis.getServers(),\r\n\t\t\tthis.getDeviceTypes(),\r\n\t\t\tthis.fetchUserGroups(),\r\n\t\t\tthis.getDefaultResponseGrouping(),\r\n\t\t\tthis.getServerLineProfiles()\r\n\t\t]);\r\n\t}\r\n\r\n\tprivate addAdvancedAlarmGroupingSpecificFields(): void {\r\n\t\tthis.fields.push({\r\n\t\t\tkey: \"alarmGrouping\",\r\n\t\t\tlabel: \"Alarm Grouping\",\r\n\t\t\tsortable: true,\r\n\t\t\tformatter: (value, key, item) => this.getAlarmGroupingTitle(item)\r\n\t\t});\r\n\t}\r\n\r\n\tprivate get hasEditPermission(): boolean {\r\n\t\treturn this.permissions.isSystemAdmin || this.permissions.isAccountAdmin || this.permissions.canEditSiteSetup;\r\n\t}\r\n\r\n\tprivate addEditPermissionsSpecificFields(): void {\r\n\t\tthis.fields.push({ key: \"actions\", label: \"Actions\", sortable: false, class: \"text-center\" });\r\n\t}\r\n\r\n\tprivate async getServers(): Promise {\r\n\t\tthis.isLoading = true;\r\n\r\n\t\tthis.axiosCancelTokenSource = getNewCancelTokenSource(this.axiosCancelTokenSource, true);\r\n\r\n\t\tconst sortBy = this.fields.find(f => f.key === this.sortBy)?.label.replace(/\\s/g,'');\r\n\r\n\t\tconst cancellableQuery: CancellableQuery = {\r\n\t\t\tparams: {\r\n\t\t\t\tpage: this.recordsPage,\r\n\t\t\t\tpageSize: this.recordsPageSize,\r\n\t\t\t\tsortBy: sortBy || this.sortBy,\r\n\t\t\t\tsortDesc: this.sortDesc,\r\n\t\t\t\tsearchTerm: this.searchTerm\r\n\t\t\t},\r\n\t\t\tcancelTokenSource: this.axiosCancelTokenSource\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tawait this.getFilteredServersPaginated(cancellableQuery);\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: \"Error loading servers\",\r\n\t\t\t\ttext: `Unable to load servers`\r\n\t\t\t});\r\n\t\t\tconsole.error(e);\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/** If the alarm doesn't have any grouping options set,\r\n\t * then grouping is set in accordance with settings */\r\n\tprivate async getDefaultResponseGrouping(): Promise {\r\n\t\tconst { data }: { data: string } = await api.getDefaultResponseGrouping();\r\n\t\tthis.defaultResponseGrouping = data;\r\n\t}\r\n\r\n\tprivate getServerTypeTitle(serverTypeID: number): string {\r\n\t\treturn this.serverTypes.find(st => st.serverTypeID == serverTypeID)?.title;\r\n\t}\r\n\r\n\tprivate getGroupTitle(groupID: number): string {\r\n\t\treturn this.UserGroups.find(ug => ug.groupID == groupID)?.title;\r\n\t}\r\n\r\n\tprivate get hasAdvancedAlarmGroupingFlag(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"AdvancedAlarmGrouping\"]);\r\n\t}\r\n\r\n\tprivate getAlarmGroupingTitle(server: ServerDetails): string {\r\n\t\tif (server.isRaiseIndividual) {\r\n\t\t\treturn \"No Grouping\";\r\n\t\t}\r\n\r\n\t\tif (server.isRaiseGrouped) {\r\n\t\t\treturn \"By Response\";\r\n\t\t}\r\n\r\n\t\treturn this.defaultResponseGrouping;\r\n\t}\r\n\r\n\tprivate get serversToDisplay(): ServerDetails[] {\r\n\t\treturn this.serversList.map(server => {\r\n\t\t\tvar isReadOnly = !!server.syncSystemId && !this.permissions.canOverrideGroupSync && !this.permissions.isSystemAdmin;\r\n\t\t\treturn ({\r\n\t\t\t\t...server,\r\n\t\t\t\treadonly: isReadOnly,\r\n\t\t\t\treadonlyMessage: isReadOnly ? \"You do not have permission to edit Sync Devices\": null\r\n\t\t\t})\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async onPageClick(page: number) {\r\n\t\tif (!this.visible || this.isLoading) {\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.getServers();\r\n\t}\r\n\r\n\tprivate async onRecordsPerPageClick() {\r\n\t\tlet pageSize = +this.recordsPageSizeUpdated;\r\n\r\n\t\tif (pageSize) {\r\n\t\t\tif (pageSize > this.recordsPageSizeMax) {\r\n\t\t\t\tpageSize = this.recordsPageSizeMax;\r\n\t\t\t}\r\n\t\t\tif (pageSize !== this.recordsPageSize) {\r\n\t\t\t\tthis.recordsPage = 1;\r\n\t\t\t}\r\n\t\t\tthis.recordsPageSize = pageSize;\r\n\t\t}\r\n\t\tthis.recordsPageSizeUpdated = this.recordsPageSize;\r\n\t\tthis.onPageClick(this.recordsPage);\r\n\t}\r\n\r\n\tprivate handleAddDevice(): void {\r\n\t\tthis.setServerModalStartTab(ServerModalStartTab.Server);\r\n\t\tthis.setCurrentServer(getNewServerDetailsTemplate());\r\n\t\tthis.setServerModalVisible(true);\r\n\t}\r\n\r\n\tprivate handleEditClick(server: ServerDetails): void {\r\n\t\tthis.setServerModalStartTab(ServerModalStartTab.Server);\r\n\t\tthis.setCurrentServer(server);\r\n\t\tthis.setServerModalVisible(true);\r\n\t}\r\n\r\n\tprivate handleDeleteClick(server: ServerDetails): void {\r\n\t\tthis.setCurrentServer(server);\r\n\t\tthis.showDeleteModal = true;\r\n\t}\r\n\r\n\tprivate handleDeleteModalClose(): void {\r\n\t\tthis.showDeleteModal = false;\r\n\t\tthis.setCurrentServer(null);\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.searchTerm = searchTerm;\r\n\t\tawait this.getServers();\r\n\t}\r\n\r\n\tprivate deviceEditComponentLoaded(): void {\r\n\t\t// this.setIsLoading(false);\r\n\t}\r\n\r\n\tprivate async onSortChange(event: VueBootstrapFieldTableSortEvent): Promise {\r\n\t\tif (!this.visible || this.isLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.sortBy = event.sortBy || this.sortBy;\r\n\t\tthis.sortDesc = event.sortDesc;\r\n\r\n\t\tawait this.getServers();\r\n\t}\r\n\r\n\t@Watch(\"visible\")\r\n\tprivate async onVisibilityChanged(visible: boolean): Promise {\r\n\t\tif (visible) {\r\n\t\t\tthis.searchTerm = null;\r\n\t\t\tawait this.getServers();\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!./DeviceTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeviceTable.vue?vue&type=template&id=499a449f&scoped=true\"\nimport script from \"./DeviceTable.vue?vue&type=script&lang=ts\"\nexport * from \"./DeviceTable.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeviceTable.vue?vue&type=style&index=0&id=499a449f&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 \"499a449f\",\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 table-container overflow-hidden flex-grow-1\",attrs:{\"data-cy\":\"alarm-device-table\"}},[_c('generic-table',{ref:\"genericTable\",attrs:{\"term\":\"Alarm\",\"dataList\":_vm.responses,\"columns\":_vm.genericTableColumns,\"modalItems\":_vm.modalItems,\"onModalOpen\":_vm.openModal,\"totalAvailableRows\":_vm.totalRecords,\"onAddNew\":_vm.putAlarm,\"onSave\":_vm.putAlarm,\"onDelete\":_vm.deleteAlarm,\"refreshAllowed\":\"\",\"clearOnClose\":\"\",\"data-cy\":\"deviceAlarmSetupGenericTable\",\"isLoading\":_vm.isLoading},on:{\"search-filter-updated\":_vm.updateResponses,\"genericUpdateModalClosed\":_vm.onModalClose},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:\"grouping\",fn:function(slotProps){return [_vm._v(\" \"+_vm._s(slotProps.row.grouping.title)+\" \")]}},{key:\"responseActions\",fn:function(slotProps){return _vm._l((_vm.retrieveAutomationBadges(slotProps.row.responseActions)),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:\"custom-button\",fn:function(){return [(_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}])}),_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, Prop, Mixins, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\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 VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport _ from 'lodash';\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport AutomationMixin from \"@/mixins/AutomationMixin\";\r\nimport ResponsesPagedResponse from \"@/types/sv-data/responses/ResponsesPagedResponse\";\r\nimport { Response, AlarmGrouping, Script, YesNoOption } from \"@/store/responses/types\";\r\nimport { DeviceDetails, ServerDetails } from '@/store/devices/types';\r\nimport vselect3 from \"vselect3\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { helpers } from \"vuelidate/lib/validators\";\r\nimport { get } from \"lodash\";\r\nimport ResponseActionSetup from './ResponseActionSetup.vue';\r\nimport { ResponseAction } from \"@/store/response-actions/types\";\r\nimport GenericTable, { TableHeader } from '@/components/table/generic-table.vue';\r\nimport { ModalItemCSV } from '@/store/csv-form-handler/types';\r\nimport CustomFieldTableView from \"@/components/custom-fields/CustomFieldModalTableView.vue\";\r\nimport { CustomFieldDto, CustomFieldTableTypes } from \"@/store/custom-fields/types\";\r\nimport { customFieldMixins } from \"@/mixins/customFieldMixins\";\r\nimport { MapCustomFieldToModalItem } from \"@/utils/CustomFieldLogic\";\r\nimport GenericUpdateModal from '@/components/table/generic-update-modal.vue';\r\nimport { serviceLevelAgreementMixins } from '@/mixins';\r\n\r\ninterface ResponseRow extends Response {\r\n readOnly?: boolean;\r\n readOnlyMessage?: string;\r\n deleteMode?: boolean;\r\n scriptTitle: string;\r\n script: Script;\r\n grouping: AlarmGrouping;\r\n linkedCameras: DeviceDetails[];\r\n\tresponseActions?: ResponseAction[];\r\n maskDurationLimit?: number;\r\n}\r\n\r\ninterface ServerTypeEvent {\r\n eventNum: number,\r\n title: string,\r\n}\r\n\r\nconst Devices = namespace(\"devices\");\r\nconst CustomFields = namespace(\"customFields\");\r\nconst GenericTableStore = namespace(\"GenericTable\");\r\n\r\nconst { mapArrayFieldsToObject, mapObjectFieldsToArray } = customFieldMixins.methods;\r\nconst { validateSlaBreachSecondsValue, generateErrorMessage } = serviceLevelAgreementMixins.methods;\r\n\r\n@Component({\r\n components: {\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 \"camera-select\": CameraSelect,\r\n\t\t\"custom-field-modal-table-view\": CustomFieldTableView,\r\n\t\t\"generic-table\": GenericTable,\r\n\t\tResponseActionSetup\r\n\t},\r\n\tfilters: {\r\n truncateString\r\n },\r\n})\r\nexport default class DeviceAlarmSetup extends Mixins(PaginatedSearch, validationMixin, AutomationMixin) {\r\n\t$refs!: {\r\n\t\tcustomFieldTableView: CustomFieldTableView;\r\n\t\tgenericUpdateModal: GenericUpdateModal;\r\n\t\tgenericTable: GenericTable\r\n\t}\r\n\r\n\t@Prop({ default: null })\r\n private selectedServerId: number;\r\n\r\n\t@Prop({ default: false, type: Boolean })\r\n private readonly: boolean;\r\n\r\n @Prop({ default: false, type: Boolean })\r\n private inModal: number;\r\n\r\n\t@Prop({ default: null })\r\n\tprivate selectedGroupId: number;\r\n\r\n\t@Getter(\"getPermissions\")\r\n private permissions: UserPermissions;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter(\"getMaxResponseSlaDuration\") maxResponseSlaDuration: number;\r\n\r\n\t@Devices.State(\"serversList\")\r\n private serversList: ServerDetails[];\r\n\r\n\t@CustomFields.State private alarmCustomFields: CustomFieldDto[];\r\n\t@CustomFields.Action retrieveCustomFields: ({ tableType, live }) => Promise;\r\n\r\n\t@GenericTableStore.Getter getModalRow: any;\r\n\r\n\tprivate totalRecords: number = 0;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate serverModalAlarmLoaded: boolean = false;\r\n\tprivate responses: ResponseRow[] = [];\r\n\tprivate responseScripts: Script[] = [];\r\n private selectedResponseActions: ResponseAction[] = [];\r\n\tprivate selectedResponse: ResponseRow = null;\r\n\tprivate serverTypeEvents: ServerTypeEvent[] = [];\r\n private maxNumInputValue: number = 2147483647;\r\n private showModal: boolean = false;\r\n private responseActionEdited: boolean = false;\r\n\tprivate modalIsOpen: boolean = false;\r\n\r\n\tprivate readonly customFieldTableType: number = CustomFieldTableTypes.Alarm;\r\n\tprivate readonly cancelErrorMessage: string = \"Cancel\";\r\n\r\n\t/**\r\n\t*\t@returns Table columns\r\n\t*/\r\n\r\n private yesNoNotSet: YesNoOption[] = [\r\n {\r\n title: \"Yes\",\r\n value: true\r\n },\r\n {\r\n title: \"No\",\r\n value: false\r\n },\r\n {\r\n title: \"Not set\",\r\n value: null\r\n }\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\r\n private get deleteMode(): boolean\r\n {\r\n return this.selectedResponse && this.selectedResponse.deleteMode;\r\n }\r\n\r\n private get responseTitle(): string\r\n {\r\n if (!this.selectedResponse || !this.selectedResponse.responseID)\r\n {\r\n return \"\";\r\n }\r\n\r\n return this.responses.find(r => r.responseID == this.selectedResponse.responseID)?.title;\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\tpublic 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 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\tprivate async mounted(): Promise {\r\n\t\tthis.responseScripts = await api.getResponseScripts();\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\t\tawait this.updateResponses();\r\n\t}\r\n\r\n private async putAlarm(response: ResponseRow): Promise\r\n {\r\n if (!response.serverID)\r\n {\r\n response.serverID = this.selectedServerId;\r\n }\r\n\r\n response.isRaiseIndividual = response.grouping.isRaiseIndividual;\r\n response.isRaiseGrouped = response.grouping.isRaiseGrouped;\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 var result = null;\r\n if (!response.responseID)\r\n {\r\n result = await api.createDeviceResponse(response);\r\n }\r\n else\r\n {\r\n result = await api.updateResponse(response);\r\n }\r\n\r\n if (!result || !result.data)\r\n {\r\n return;\r\n }\r\n\r\n this.selectedResponse = result.data;\r\n await this.updateResponseActions(response.responseID, response.responseActions, this.selectedResponseActions);\r\n await this.updateResponses();\r\n this.showModal = false;\r\n this.selectedResponseActions = [];\r\n this.selectedResponse = null;\r\n\t}\r\n\r\n private async updateResponseActions(responseId: number, newResponseActions: ResponseAction[], oldResponseActions: 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(newResponseActions != null)\r\n\t\t{\r\n\t\t\tfor(let i = 0; i < newResponseActions.length; i++ ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tvar newAutomation = newResponseActions[i];\r\n newAutomation.description = null;\r\n\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 changes 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 = oldResponseActions.find(r => r.responseActionID == newResponseActions[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(oldResponseActions && oldResponseActions.length > 0)\r\n\t\t{\r\n\t\t\tfor(let i = 0; i < oldResponseActions.length ; i++)\r\n\t\t\t{\r\n\t\t\t\tif(!newResponseActions.find(r => r.responseActionID == oldResponseActions[i].responseActionID))\r\n\t\t\t\t{\r\n\t\t\t\t\ttry {\r\n await api.deleteAlarmAutomation(this.selectedResponse.responseID, oldResponseActions[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 async deleteAlarm(response: ResponseRow): Promise\r\n {\r\n\t\tawait api.deleteResponse(response.responseID);\r\n\t\tawait this.updateResponses();\r\n\t\tthis.selectedResponse = null;\r\n\t\tthis.showModal = false;\r\n\t}\r\n\r\n private async loadServerTypes(serverId: number): Promise\r\n {\r\n if (!serverId)\r\n {\r\n this.serverTypeEvents = [];\r\n return;\r\n }\r\n\r\n const selectedServer = this.serversList.find(s => s.serverID == serverId);\r\n if (selectedServer)\r\n {\r\n this.serverTypeEvents = (await api.loadServerEventTypes(selectedServer.serverTypeID, null)).data;\r\n }\r\n else\r\n {\r\n this.serverTypeEvents = [];\r\n }\r\n\r\n if (!this.serverTypeEvents)\r\n {\r\n this.serverTypeEvents = []\r\n }\r\n\r\n this.serverTypeEvents.unshift({eventNum: -1, title: \"Default\"});\r\n }\r\n\r\n @Watch(\"selectedServerId\")\r\n\tpublic async updateResponses(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\ttry\r\n {\r\n\t\t\tthis.isLoading = true;\r\n await this.loadServerTypes(this.selectedServerId);\r\n\r\n const cancellableQuery = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\r\n\t\t\tif (this.selectedServerId)\r\n {\r\n\t\t\t\tcancellableQuery.params.serverId = this.selectedServerId;\r\n\t\t\t}\r\n\r\n cancellableQuery.params.isEmailAlarms = false;\r\n\r\n\r\n\t\t\tlet result: ResponsesPagedResponse = await api.getResponses(cancellableQuery);\r\n\t\t\tvar responseData: ResponseRow[] = result.data as ResponseRow[];\r\n\r\n\t\t\tif (responseData) {\r\n\t\t\t\tresponseData = responseData.map(response => {\r\n\t\t\t\t\tresponse.readOnly = !!response.groupSyncId && !this.permissions.canOverrideGroupSync && !this.permissions.isSystemAdmin;\r\n response.deleteMode = false;\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 {\r\n var response = this.responses[i];\r\n response.script = this.responseScripts.find(rs => rs.scriptID === response.scriptID);\r\n response.grouping = this.alarmGroupingOptions.find(ag =>\r\n ag.isRaiseGrouped == response.isRaiseGrouped &&\r\n ag.isRaiseIndividual == response.isRaiseIndividual);\r\n\r\n if (this.showAutomations) {\r\n response.responseActions = await api.getAlarmAutomations(response.responseID)\r\n }\r\n }\r\n }\r\n\r\n\t\t\tthis.totalRecords = result.totalRecords;\r\n\t\t\tthis.isLoading = false\r\n\t\t}\r\n\t\tcatch (ex)\r\n {\r\n\t\t\tif (ex != this.cancelErrorMessage)\r\n\t\t\t{\r\n\t\t\t\tconsole.error(\"Unexpected error searching alarms: \" + ex);\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n private async openModal(response: ResponseRow, deleteMode: boolean = false): Promise\r\n {\r\n this.selectedResponseActions = []\r\n\r\n if (response)\r\n {\r\n this.selectedResponse = response;\r\n this.selectedResponse.deleteMode = deleteMode;\r\n\r\n if(this.selectedResponse.responseActions)\r\n {\r\n this.selectedResponseActions = this.selectedResponse.responseActions;\r\n }\r\n\r\n\t\t\tif (this.isCustomFieldAlarmsEnabled) {\r\n\t\t\t\tmapArrayFieldsToObject(this.selectedResponse, this.selectedResponse.customFields, this.alarmCustomFields,\"id\", \"value\", \"cf\");\r\n\t\t\t}\r\n }\r\n else\r\n {\r\n this.selectedResponse = {\r\n responseID: null,\r\n groupID: null,\r\n serverTypeEventNum: -1,\r\n title: null,\r\n script: null,\r\n input1: null,\r\n input2: -1,\r\n extraValue: \"\",\r\n priority: null,\r\n grouping: null,\r\n isRaiseIndividual: null,\r\n isRaiseGrouped: null,\r\n linkedCameras: [],\r\n autoHandle: null,\r\n deleteMode: false,\r\n\t\t\t\tresponseActions: [],\r\n maskDurationLimit: null,\r\n\t\t\t\tcustomFields: []\r\n } as ResponseRow\r\n\r\n if (this.selectedServerId)\r\n {\r\n this.selectedResponse.serverID = this.selectedServerId;\r\n }\r\n }\r\n\r\n await this.loadServerTypes(this.selectedResponse.serverID);\r\n this.responseActionEdited = false;\r\n\t\tthis.modalIsOpen = true;\r\n }\r\n\r\n @Watch(\"getModalRow\", { deep:true })\r\n private async serverIdWatch(newResponse: ResponseRow | null, oldResponse: ResponseRow | null): Promise\r\n {\r\n\t\tif (!newResponse.serverID && !this.inModal)\r\n\t\t{\r\n\t\t\tthis.serverTypeEvents = [];\r\n\t\t\tif (this.selectedResponse)\r\n\t\t\t{\r\n\t\t\t\tthis.selectedResponse.serverTypeEventNum = -1;\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (newResponse.serverID != oldResponse?.serverID) {\r\n\t\t\tawait this.loadServerTypes(newResponse.serverID);\r\n\t\t\tif (this.selectedResponse)\r\n\t\t\t{\r\n\t\t\t\tif(!!oldResponse.serverID && newResponse.serverID != oldResponse.serverID) {\r\n\t\t\t\t\tthis.selectedResponse.serverTypeEventNum = -1;\r\n\t\t\t\t\tthis.$refs.genericTable.updateNewEntry(this.selectedResponse, [\"serverTypeEventNum\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!this.selectedResponse.responseID)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(!oldResponse.serverID) {\r\n\t\t\t\t\t\tthis.selectedResponse.serverTypeEventNum = -1;\r\n\t\t\t\t\t\tthis.$refs.genericTable.updateNewEntry(this.selectedResponse, [\"serverTypeEventNum\"]);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst server = this.serversList.find(sl => sl.serverID == newResponse.serverID);\r\n\t\t\t\t\tthis.selectedResponse.groupID = server?.groupID;\r\n\t\t\t\t\tthis.$refs.genericTable.updateNewEntry(this.selectedResponse, [\"groupID\"]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.inModal && !this.selectedResponse?.responseID && !this.serverModalAlarmLoaded && this.modalIsOpen) {\r\n\t\t\tthis.setupServerModalAlarm();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupServerModalAlarm(): void {\r\n\t\tlet newAlarm = {\r\n responseID: null,\r\n\t\t\t\tserverID: this.selectedServerId,\r\n groupID: this.selectedGroupId,\r\n serverTypeEventNum: -1,\r\n title: null,\r\n script: null,\r\n input1: null,\r\n input2: -1,\r\n extraValue: \"\",\r\n priority: null,\r\n grouping: null,\r\n isRaiseIndividual: null,\r\n isRaiseGrouped: null,\r\n linkedCameras: [],\r\n autoHandle: null,\r\n deleteMode: false,\r\n\t\t\t\tresponseActions: [],\r\n maskDurationLimit: null,\r\n\t\t\t\tcustomFields: []\r\n } as ResponseRow;\r\n\t\tthis.selectedResponse.serverID = this.selectedServerId;\r\n\t\tthis.$refs.genericTable.updateNewEntry(newAlarm, [\"serverID\", \"groupID\", \"serverTypeEventNum\"]);\r\n\t\tthis.serverModalAlarmLoaded = true;\r\n\t}\r\n\r\n private responseActionInput(input: ResponseAction[]): void {\r\n this.selectedResponse.responseActions = input;\r\n this.responseActionEdited = true;\r\n }\r\n\r\n\tprivate async openCustomFieldModal(): Promise {\r\n\t\tthis.$refs.customFieldTableView.showCustomFieldModal();\r\n\t}\r\n\r\n\tprivate get genericTableColumns(): TableHeader[] {\r\n\t\tconst GenericTableColumns: 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\tsortable: true,\r\n\t\t\t\tvisible: true,\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\tisTermLabel: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Device\",\r\n\t\t\t\tkey: \"deviceTitle\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 2,\r\n\t\t\t\tsortOrder: 1,\r\n\t\t\t\tsortOrderReversed: false\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\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 3,\r\n\t\t\t\tsortOrder: 2,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Action Plan\",\r\n\t\t\t\tkey: \"scriptTitle\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 4,\r\n\t\t\t\tsortOrder: 3,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Input 1\",\r\n\t\t\t\tkey: \"input1\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 5,\r\n\t\t\t\tsortOrder: 4,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Input 2\",\r\n\t\t\t\tkey: \"input2\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 6,\r\n\t\t\t\tsortOrder: 5,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Extra Value\",\r\n\t\t\t\tkey: \"extraValue\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 7,\r\n\t\t\t\tsortOrder: 6,\r\n\t\t\t\tsortOrderReversed: false\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\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 8,\r\n\t\t\t\tsortOrder: 7,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Grouping\",\r\n\t\t\t\tkey: \"grouping\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 9,\r\n\t\t\t\tsortOrder: 8,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Linked Camera\",\r\n\t\t\t\tkey: \"linkedCameras\",\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tdisable: !this.showLinkedCamerasInModal,\r\n\t\t\t\torder: 10,\r\n\t\t\t\tsortOrder: 9,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Automations\",\r\n\t\t\t\tkey: \"responseActions\",\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tdisable: !this.showAutomations,\r\n\t\t\t\torder: 11,\r\n\t\t\t\tsortOrder: 10,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tuseCustomCell: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Max Mask Duration (minutes)\",\r\n\t\t\t\tkey: \"maskDurationLimit\",\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tdisable: !this.showMaskDurationLimit,\r\n\t\t\t\torder: 12,\r\n\t\t\t\tsortOrder: 11,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t]\r\n\r\n\t\treturn GenericTableColumns\r\n\t}\r\n\r\n\tprivate get modalItems (): ModalItemCSV[]{\r\n\t\tvar modalItems: ModalItemCSV[] = [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Device\",\r\n\t\t\t\tkey: \"serverID\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tplaceholder: \"Search\",\r\n\t\t\t\tdata: this.serversList,\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 1,\r\n\t\t\t\treadOnlyMethod: (item, row) => this.inModal || !!row.responseID,\r\n\t\t\t\tprops:\r\n\t\t\t\t{\r\n\t\t\t\t\treduce: (sl) => sl.serverID,\r\n\t\t\t\t\tvalue: this.selectedServerId\r\n\t\t\t\t},\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\tplaceholder: \"Select an area\",\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\t\"append-to-body\": true\r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 2\r\n\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Event Type\",\r\n\t\t\t\tkey: \"serverTypeEventNum\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Select an event type\",\r\n\t\t\t\tdata: this.serverTypeEvents,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (ste) => ste.eventNum,\r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 3\r\n\t\t\t},\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\tplaceholder: \"Title\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"title\",\r\n\t\t\t\t\tformatter: (v) => !v ? v : v.substring(0,250)\r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 4\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Action Plan\",\r\n\t\t\t\tkey: \"scriptID\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Select an action plan\",\r\n\t\t\t\tdata: this.responseScripts,\r\n\t\t\t\torder: 5,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (rs) => rs.scriptID,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Input 1\",\r\n\t\t\t\tkey: \"input1\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\tplaceholder: \"Input 1\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"input-1\"\r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tIsDeviceAlarmInput1Valid: helpers.withParams(\r\n\t\t\t\t\t\t{type: \"IsDeviceAlarmInput1Valid\", errorMessage: `Input 1 must be between -1 and ${this.maxNumInputValue}` },\r\n\t\t\t\t\t\tvalue => {\r\n\t\t\t\t\t\t\treturn -1 <= value && value <= this.maxNumInputValue;\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: 6\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Input 2\",\r\n\t\t\t\tkey: \"input2\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\tplaceholder: \"Input 2\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"input-2\"\r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tIsDeviceAlarmInput2Valid: helpers.withParams(\r\n\t\t\t\t\t\t{type: \"IsDeviceAlarmInput2Valid\", errorMessage: `Input 2 must be between -1 and ${this.maxNumInputValue}` },\r\n\t\t\t\t\t\tvalue => {\r\n\t\t\t\t\t\t\treturn -1 <= value && value <= this.maxNumInputValue;\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: 7\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Extra Value\",\r\n\t\t\t\tkey: \"extraValue\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Extra Value\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"extra-value\",\r\n\t\t\t\t\tformatter: (v) => !v ? v : v.substring(0,100)\r\n\t\t\t\t},\r\n\t\t\t\torder: 8\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Priority\",\r\n key: \"priority\",\r\n dataType: \"number\",\r\n defaultValue: null,\r\n required: false,\r\n placeholder: \"Enter the alarm priority\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"priority\"\r\n\t\t\t\t},\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tIsDeviceAlarmPriorityValid: helpers.withParams(\r\n\t\t\t\t\t\t{type: \"IsDeviceAlarmPriorityValid\", errorMessage: `Priority must be between 0 and ${this.maxNumInputValue}` },\r\n\t\t\t\t\t\tvalue => {\r\n\t\t\t\t\t\t\treturn !value || (0 <= value && value <= this.maxNumInputValue);\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: 9\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Linked Cameras\",\r\n\t\t\t\tkey: \"linkedCameras\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tvisible: this.showLinkedCamerasInModal,\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Search all areas\",\r\n\t\t\t\tdata: CameraSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"linkedCameras\",\r\n\t\t\t\t\tmultiple: true\r\n\t\t\t\t},\r\n\t\t\t\torder: 10\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Grouping\",\r\n\t\t\t\tkey: \"grouping\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Select an alarm grouping\",\r\n\t\t\t\tdata: this.alarmGroupingOptions,\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 11\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Auto Handle\",\r\n\t\t\t\tkey: \"autoHandle\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Select an auto handle setting\",\r\n\t\t\t\tdata: this.yesNoNotSet,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (ah) => ah.value,\r\n\t\t\t\t},\r\n\t\t\t\torder: 12\r\n\t\t\t},\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\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: 13,\r\n\t\t\t},\r\n\t\t] as ModalItemCSV[];\r\n\r\n\t\tif (this.showAutomations && this.selectedResponse?.responseID && this.selectedResponse.responseID > 0) {\r\n\t\t\tvar automationsModalItem: ModalItemCSV = {\r\n\t\t\t\ttitle: \"Automations\",\r\n\t\t\t\tkey: \"responseActions\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: ResponseActionSetup,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tvalue: this.selectedResponse.responseActions,\r\n\t\t\t\t\tgroupID: this.selectedResponse.groupID,\r\n\t\t\t\t\tinput: this.responseActionInput\r\n\t\t\t\t},\r\n\t\t\t\torder: modalItems.length + 1\r\n\t\t\t}\r\n\r\n\t\t\tmodalItems.push(automationsModalItem as ModalItemCSV);\r\n\t\t}\r\n\r\n\t\tif (this.showMaskDurationLimit) {\r\n\t\t\tmodalItems.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\tplaceholder: \"Enter the Max Mask Duration\",\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\tvisible: this.showMaskDurationLimit,\r\n\t\t\t\tdefaultValue: null,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"maskDurationLimit\"\r\n\t\t\t\t},\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tIsDeviceAlarmMaxMaskingDurationValid: helpers.withParams(\r\n\t\t\t\t\t\t{ type: \"IsDeviceAlarmMaxMaskingDurationValid\", errorMessage: `Max Masking Duration must be between 0 and ${this.maxNumInputValue}` },\r\n\t\t\t\t\t\tvalue => {\r\n\t\t\t\t\t\t\tif (!value || !this.showMaskDurationLimit) {\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\treturn (value >= 0 && value <= 2147483647);\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: modalItems.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: modalItems.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\tmodalItems.push(alarmCustomFieldModalItem as ModalItemCSV);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn modalItems;\r\n\t}\r\n\r\n\tprivate onModalClose(): void {\r\n\t\tthis.serverModalAlarmLoaded = false;\r\n\t\tthis.modalIsOpen = 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!./DeviceAlarmSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceAlarmSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeviceAlarmSetup.vue?vue&type=template&id=b1ea4426&scoped=true\"\nimport script from \"./DeviceAlarmSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./DeviceAlarmSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeviceAlarmSetup.vue?vue&type=style&index=0&id=b1ea4426&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 \"b1ea4426\",\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.visible)?_c('div',{attrs:{\"data-cy\":\"sync-table\"}},[_c('b-row',{staticClass:\"mb-4\"},[_c('b-col',[_c('b-form-input',{attrs:{\"type\":\"search\",\"placeholder\":\"Search...\",\"max\":\"250\",\"data-cy\":\"search\"},on:{\"input\":function($event){return _vm.handleSearchInput($event)}}})],1),(_vm.hasEditPermission)?_c('b-col',{attrs:{\"cols\":\"auto\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"add-button\"},on:{\"click\":function($event){return _vm.handleAddSync()}}},[_vm._v(\"Add Sync\")])],1):_vm._e()],1),(_vm.totalSyncSystems !== 0)?_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\",\"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('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"}},[_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"items\":_vm.syncsToDisplay,\"fields\":_vm.fields,\"hover\":\"\",\"head-variant\":\"dark\",\"no-local-sorting\":true,\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc},on:{\"sort-changed\":_vm.onSortChange},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(row){return [(row.item.readonly && row.item.serverId)?_c('i',{staticClass:\"fas fa-eye hover-icon\",attrs:{\"title\":\"View\",\"data-cy\":\"view-button\"},on:{\"click\":function($event){return _vm.handleEditClick(row.item)}}}):(!row.item.serverId)?_c('p',[_vm._v(\"Sync does not have a configured device\")]):_c('span',[_c('i',{staticClass:\"fas fa-edit hover-icon\",attrs:{\"title\":\"Edit\",\"data-cy\":\"edit-button\"},on:{\"click\":function($event){return _vm.handleEditClick(row.item)}}}),_c('i',{staticClass:\"fas fa-trash hover-icon mx-1\",attrs:{\"title\":\"Delete\",\"data-cy\":\"delete-button\"},on:{\"click\":function($event){return _vm.handleDeleteClick(row.item)}}})])]}}],null,false,991433962)}),_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)})],1),(_vm.totalSyncSystems > 0)?_c('b-pagination',{staticClass:\"pagination\",attrs:{\"total-rows\":_vm.totalSyncSystems,\"per-page\":_vm.recordsPageSize,\"align\":\"center\",\"data-cy\":\"pagination\",\"disabled\":_vm.totalSyncSystems < _vm.recordsPageSize},on:{\"input\":_vm.onPageClick},model:{value:(_vm.recordsPage),callback:function ($$v) {_vm.recordsPage=$$v},expression:\"recordsPage\"}}):_vm._e(),(_vm.showDeleteModal)?_c('b-modal',{attrs:{\"visible\":\"\",\"size\":\"lg\",\"centered\":\"\",\"header-class\":\"delete-confirm-modal\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"data-cy\":\"delete-sync-modal\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"confirm-delete-button\"},on:{\"click\":function($event){return _vm.confirmDelete(_vm.selectedSync.syncSystemId)}}},[_vm._v(\" Delete \")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"close-button\"},on:{\"click\":function($event){return _vm.closeDeleteModal()}}},[_vm._v(\" Cancel \")])]},proxy:true}],null,false,836743636)},[_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(\"Delete Sync\")])])]),_c('b-row',{staticClass:\"ml-1\"},[_c('h5',[_vm._v(\" Are you sure you want to delete the Sync \"),_c('strong',[_vm._v(\"\\\"\"+_vm._s(_vm.selectedSync.title)+\"\\\"?\")])])]),_c('b-row',{staticClass:\"ml-3\"},[_c('h5',{staticClass:\"mt-2\"},[_vm._v(\"This action will:\")])]),_c('b-row',{staticClass:\"ml-4\"},[_c('ul',[_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"areas\")]),_vm._v(\" associated with this sync device\")]),_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"attached cameras\")]),_vm._v(\" associated with this sync device\")]),_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"audios\")]),_vm._v(\" associated with this sync device\")]),_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"doors\")]),_vm._v(\" associated with this sync device\")]),_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"outputs\")]),_vm._v(\" associated with this sync device\")]),_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"alarms\")]),_vm._v(\" associated with this sync device\")])])])],2):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { SyncSystem, ServerType, ServerDetails, ServerModalStartTab } from \"@/store/devices/types\";\r\nimport {\r\n\tCancellableQuery,\r\n\tPaginatedSearchQueryParams,\r\n\tUserPermissions,\r\n\tVueBootstrapField,\r\n\tVueBootstrapFieldTableSortEvent\r\n} from \"@/store/types\";\r\nimport { getNewServerDetailsTemplate } from \"@/store/devices/templates\";\r\nimport api from \"@/services/api.service\";\r\nimport { CancelTokenSource } from \"axios\";\r\nimport { getNewCancelTokenSource } from \"@/utils/cancellableQueryHelper\";\r\nimport { debounce } from \"lodash\";\r\nimport { getDebouncePeriod } from \"@/utils/debounce-helper\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\ninterface SyncSystemRow extends SyncSystem {\r\n\treadonly?: boolean;\r\n}\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 SyncTable extends Vue {\r\n\t@Prop({ required: false, default: false, type: Boolean })\r\n\tprivate visible: boolean;\r\n\r\n\t@Devices.State private syncSystems: SyncSystem[];\r\n\t@Devices.State private totalSyncSystems: number;\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\t@Devices.State private serversList: ServerDetails[];\r\n\r\n\t@Devices.Action private fetchSyncSystems: (\r\n\t\tparams: CancellableQuery\r\n\t) => Promise;\r\n\t@Devices.Action private fetchSyncSystemCount: () => Promise\r\n\t@Devices.Action private getServers: () => Promise;\r\n\t@Devices.Mutation private setCurrentServer: (server: ServerDetails) => void;\r\n\t@Devices.Mutation private setServerModalStartTab: (startTab: ServerModalStartTab) => void;\r\n\t@Devices.Mutation setServerModalVisible: (IsVisible: boolean) => void;\r\n\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\r\n\tprivate searchTerm: string = null;\r\n\tprivate recordsPage: number = 1;\r\n\tprivate recordsPageSize: number = 25;\r\n\tprivate recordsPageSizeMax: number = 200;\r\n\tprivate recordsPageSizeUpdated: number = this.recordsPageSize;\r\n\tprivate sortBy: string = \"title\";\r\n\tprivate sortDesc: boolean = false;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate selectedSync: SyncSystem = null;\r\n\tprivate showDeleteModal: boolean = false;\r\n\tprivate axiosCancelTokenSource: CancelTokenSource = null;\r\n\r\n\tprivate getServerTypeTitle(serverTypeID: number): string {\r\n\t\treturn this.serverTypes.find(st => st.serverTypeID == serverTypeID)?.title;\r\n\t}\r\n\r\n\tprivate fields: VueBootstrapField[] = [\r\n\t\t{\r\n\t\t\tkey: \"title\",\r\n\t\t\tlabel: \"Title\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"serverTypeId\",\r\n\t\t\tlabel: \"Type\",\r\n\t\t\tformatter: serverTypeId => {\r\n\t\t\t\treturn this.getServerTypeTitle(serverTypeId);\r\n\t\t\t},\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"host\",\r\n\t\t\tlabel: \"Host\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"port\",\r\n\t\t\tlabel: \"Port\",\r\n\t\t\tsortable: true\r\n\t\t}\r\n\t];\r\n\r\n\tprivate async created(): Promise {\r\n\t\tif (this.hasEditPermission) {\r\n\t\t\tthis.addEditPermissionsSpecificFields();\r\n\t\t}\r\n\r\n\t\tawait this.getSyncSystems();\r\n\t}\r\n\r\n\tprivate get hasEditPermission(): boolean {\r\n\t\treturn this.permissions.isSystemAdmin || ((this.permissions.isAccountAdmin || this.permissions.canEditSiteSetup) && this.permissions.canOverrideGroupSync);\r\n\t}\r\n\r\n\tprivate addEditPermissionsSpecificFields(): void {\r\n\t\tthis.fields.push({ key: \"actions\", label: \"Actions\", sortable: false, class: \"text-center\" });\r\n\t}\r\n\r\n\tprivate async performSearch(searchTerm: string): Promise {\r\n\t\tthis.searchTerm = searchTerm;\r\n\t\tawait this.getSyncSystems();\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 onSortChange(event: VueBootstrapFieldTableSortEvent): Promise {\r\n\t\tif (!this.visible) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.sortBy = event.sortBy || this.sortBy;\r\n\t\tthis.sortDesc = event.sortDesc;\r\n\r\n\t\tawait this.getSyncSystems();\r\n\t}\r\n\r\n\tprivate async onPageClick(page: number) {\r\n\t\tif (!this.visible || this.isLoading) {\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.getSyncSystems();\r\n\t}\r\n\r\n\tprivate async onRecordsPerPageClick() {\r\n\t\tlet pageSize = +this.recordsPageSizeUpdated;\r\n\r\n\t\tif (pageSize) {\r\n\t\t\tif (pageSize > this.recordsPageSizeMax) {\r\n\t\t\t\tpageSize = this.recordsPageSizeMax;\r\n\t\t\t}\r\n\t\t\tif (pageSize !== this.recordsPageSize) {\r\n\t\t\t\tthis.recordsPage = 1;\r\n\t\t\t}\r\n\t\t\tthis.recordsPageSize = pageSize;\r\n\t\t}\r\n\t\tthis.recordsPageSizeUpdated = this.recordsPageSize;\r\n\t\tawait this.onPageClick(this.recordsPage);\r\n\t}\r\n\r\n\tprivate async getSyncSystems(): Promise {\r\n\t\tthis.isLoading = true;\r\n\r\n\t\tthis.axiosCancelTokenSource = getNewCancelTokenSource(this.axiosCancelTokenSource, true);\r\n\r\n\t\tconst sortBy = this.fields.find(f => f.key === this.sortBy)?.label.replace(/\\s/g, \"\");\r\n\r\n\t\tconst cancellableQuery: CancellableQuery = {\r\n\t\t\tparams: {\r\n\t\t\t\tpage: this.recordsPage,\r\n\t\t\t\tpageSize: this.recordsPageSize,\r\n\t\t\t\tsortBy: sortBy || this.sortBy,\r\n\t\t\t\tsortDesc: this.sortDesc,\r\n\t\t\t\tsearchTerm: this.searchTerm\r\n\t\t\t},\r\n\t\t\tcancelTokenSource: this.axiosCancelTokenSource\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tawait this.fetchSyncSystems(cancellableQuery);\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 loading sync systems\",\r\n\t\t\t\ttext: `Unable to load sync systems`\r\n\t\t\t});\r\n\t\t\tconsole.error(e);\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 syncsToDisplay(): SyncSystemRow[] {\r\n\t\treturn this.syncSystems.map((sync: SyncSystemRow) => {\r\n\t\t\tsync.readonly = !this.permissions.canOverrideGroupSync && !this.permissions.isSystemAdmin;\r\n\t\t\treturn sync;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async getServerForSync(syncSystem: SyncSystem): Promise {\r\n\t\tlet server = this.serversList.find(sl => sl.syncSystemId == syncSystem.syncSystemId);\r\n\t\tif (!server) {\r\n\t\t\tserver = await api.retrieveServer(syncSystem.serverId);\r\n\t\t\tserver.syncSystemId = syncSystem.syncSystemId;\r\n\t\t}\r\n\r\n\t\tlet readOnly = !this.permissions.canOverrideGroupSync && !this.permissions.isSystemAdmin;\r\n\r\n\t\treturn {\r\n\t\t\t...server,\r\n\t\t\treadonly: readOnly,\r\n\t\t\treadonlyMessage: readOnly ? \"You do not have permission to edit Sync Devices\" : null\r\n\t\t}\r\n\t}\r\n\r\n\tprivate openServerModal(server: ServerDetails): void {\r\n\t\tif (!server) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.setServerModalStartTab(ServerModalStartTab.Sync);\r\n\t\tthis.setCurrentServer(server);\r\n\t\tthis.setServerModalVisible(true);\r\n\t}\r\n\r\n\tprivate async handleEditClick(syncSystem: SyncSystem): Promise {\r\n\t\tthis.openServerModal(await this.getServerForSync(syncSystem));\r\n\t}\r\n\r\n\tprivate handleAddSync(): void {\r\n\t\tlet server = getNewServerDetailsTemplate();\r\n\t\tserver.syncSystemId = -1;\r\n\t\tthis.openServerModal(server);\r\n\t}\r\n\r\n\tprivate handleDeleteClick(syncSystem: SyncSystem): void {\r\n\t\tthis.selectedSync = syncSystem;\r\n\t\tthis.showDeleteModal = true;\r\n\t}\r\n\r\n\tprivate closeDeleteModal(): void {\r\n\t\tthis.selectedSync = null;\r\n\t\tthis.showDeleteModal = false;\r\n\t}\r\n\r\n\tprivate async confirmDelete(syncSystemId: number): Promise {\r\n\t\tthis.isLoading = true;\r\n\t\ttry {\r\n\t\t\tthis.selectedSync = null;\r\n\t\t\tthis.showDeleteModal = false;\r\n\t\t\tawait api.deleteSyncSystem(syncSystemId);\r\n\t\t\tawait this.getSyncSystems()\r\n\t\t\tawait this.getServers();\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t}\r\n\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\t@Watch(\"visible\")\r\n\tprivate async onVisibilityChanged(visible: boolean): Promise {\r\n\t\tif (visible) {\r\n\t\t\tthis.searchTerm = null;\r\n\t\t\tawait this.getSyncSystems();\r\n\t\t} else {\r\n\t\t\tawait this.fetchSyncSystemCount();\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!./SyncTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SyncTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SyncTable.vue?vue&type=template&id=c6740cb6\"\nimport script from \"./SyncTable.vue?vue&type=script&lang=ts\"\nexport * from \"./SyncTable.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.serverModalOpened)?_c('b-modal',{attrs:{\"visible\":\"\",\"size\":\"xl\",\"static\":\"\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"footer-class\":\"mt-3\",\"body-class\":\"modal-overflow thin-scroll\"},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('div',{staticClass:\"d-flex w-100 align-items-center\"},[_c('div',{staticClass:\"flex-grow-1\"},[_c('span',{staticClass:\"h-5\"},[_c('i',{class:_vm.modalIcon}),_vm._v(_vm._s(_vm.modalTitle)+\" \")])]),(_vm.currentServer && _vm.currentServer.readonly && _vm.currentServer.readonlyMessage)?_c('b-alert',{staticClass:\"small-alert\",attrs:{\"show\":\"\"}},[_c('i',{staticClass:\"fas fa-eye mr-1\"}),_vm._v(\" \"+_vm._s(_vm.currentServer.readonlyMessage)+\" \")]):_vm._e(),(_vm.syncSetupEnabled && _vm.currentServer && _vm.currentServer.syncSystemId > 0)?_c('span',[_c('i',{staticClass:\"fas fa-exclamation-triangle text-warning pt-6px\",attrs:{\"id\":\"syncWarning\"}}),_c('b-tooltip',{attrs:{\"target\":\"syncWarning\",\"triggers\":\"hover\",\"variant\":\"warning\"}},[_vm._v(\" This device was added to the system via Sync; any changes may be overwritten. \")])],1):_vm._e(),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"data-cy\":\"close-edit-modal-button\"},on:{\"click\":function($event){return _vm.handleEditModalCloseClick()}}},[_vm._v(\" × \")])],1)]},proxy:true},{key:\"modal-footer\",fn:function(){return [(_vm.tabIndex === _vm.deviceInfoTabIndex && (!_vm.currentServer ? true : !_vm.currentServer.readonly))?_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"save-server-button\",\"disabled\":_vm.serverModelDetails.invalid},on:{\"click\":function($event){return _vm.handleServerSaveClick()}}},[_vm._v(\" Save \")]):(_vm.tabIndex === 0)?_c('div',{attrs:{\"id\":\"save-sync-container\",\"data-cy\":\"save-sync-div\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"save-sync-button\",\"disabled\":!_vm.userCanSaveSync},on:{\"click\":function($event){return _vm.handleSyncSaveClick()}}},[_vm._v(\" Save Sync \")])],1):_vm._e(),(_vm.tabIndex === 0 &&\n\t\t\t_vm.isSuiteSyncEnabled &&\n\t\t\t_vm.syncIsSuiteSync &&\n\t\t\t!_vm.userCanConfigureSuiteSync)?_c('b-tooltip',{attrs:{\"target\":\"save-sync-container\",\"triggers\":\"hover\",\"placement\":\"top\",\"data-cy\":\"save-sync-tooltip\"}},[_vm._v(\" You do not have permission to update Suite Syncs \")]):_vm._e(),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"cancel-button\"},on:{\"click\":function($event){return _vm.handleEditModalCloseClick()}}},[_vm._v(\" \"+_vm._s((_vm.currentServer && _vm.currentServer.readonly) ? \"Close\": \"Cancel\")+\" \")])]},proxy:true}],null,false,633090347)},[_c('b-tabs',{staticClass:\"tab-min-height\",attrs:{\"card\":\"\",\"vertical\":\"\"},model:{value:(_vm.tabIndex),callback:function ($$v) {_vm.tabIndex=$$v},expression:\"tabIndex\"}},[(_vm.syncSetupEnabled && _vm.currentServer && (_vm.currentServer.syncSystemId > 0 || _vm.currentServer.syncSystemId == -1))?_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{attrs:{\"variant\":\"primary\"}},[_vm._v(\" Sync Configuration \")])]},proxy:true}],null,false,3984643270)},[_c('sync-edit',{attrs:{\"data-cy\":\"sync-edit\",\"readonly\":_vm.currentServer.readonly},on:{\"syncDetailsUpdated\":_vm.syncDetailsChanged}})],1):_vm._e(),(_vm.syncSetupEnabled && _vm.currentServer && _vm.currentServer.syncSystemId > 0)?_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{attrs:{\"variant\":\"primary\"}},[_vm._v(\" Syncs \")])]},proxy:true}],null,false,2927907685)},[_c('group-sync',{attrs:{\"readonly\":_vm.currentServer.readonly}})],1):_vm._e(),(_vm.currentServer && _vm.currentServer.syncSystemId != -1)?_c('b-tab',{staticClass:\"py-0\",scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Device Information \")]},proxy:true}],null,false,3208718185)},[_c('device-edit',{attrs:{\"data-cy\":\"device-edit\"},on:{\"server-model-details-changed\":function($event){return _vm.handleServerModelDetailsChanged($event)}}})],1):_vm._e(),(_vm.showGetConfig && !_vm.syncIsSuiteSync)?_c('b-tab',{attrs:{\"disabled\":_vm.isGetConfigDisabled,\"lazy\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{staticClass:\"hover-icon\",attrs:{\"title\":_vm.getConfigTooltipText}},[_c('i',{staticClass:\"fal fa-cogs\"}),_vm._v(\" Device Configuration \")])]},proxy:true}],null,false,305622545)},[_c('get-config')],1):_vm._e(),(!_vm.syncIsSuiteSync && !_vm.syncIsDeviceSync)?_c('div',_vm._l((_vm.childDeviceTypeIds),function(childDeviceTypeId){return _c('child-device-tab-wrapper',{key:childDeviceTypeId,attrs:{\"isForAllServers\":false,\"visible\":_vm.deviceTabIndex === childDeviceTypeId,\"deviceTypeIdentifier\":childDeviceTypeId,\"readonly\":_vm.currentServer && _vm.currentServer.readonly}})}),1):_vm._e(),(_vm.isEditingServer && !_vm.syncIsSuiteSync && !_vm.syncIsDeviceSync)?_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{class:{ 'disabled-fade': !_vm.allowsAlarms },attrs:{\"title\":_vm.getAlarmTitleText,\"variant\":\"primary\"}},[_vm._v(\" Alarms \"),_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.alarmCount.toLocaleString()))])],1)]},proxy:true}],null,false,1793211930)},[_c('device-alarm-setup',{attrs:{\"data-cy\":\"responseSetupTable\",\"selectedServerId\":_vm.selectedServerId,\"readonly\":_vm.currentServer && _vm.currentServer.readonly,\"inModal\":\"\"}})],1):_vm._e()],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('vue-perfect-scrollbar',{staticClass:\"scroll-area\"},[_c('b-row',{staticClass:\"mx-0 mb-2\"},[_c('b-col',[_c('b-card',{attrs:{\"header\":(\"Device\" + (_vm.selectedServer.serverID ? ' ' + _vm.selectedServer.serverID : '') + \" Details\"),\"header-class\":\"h4\"}},[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"title\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Title: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('b-form-input',{attrs:{\"id\":\"title\",\"placeholder\":\"Title\",\"readonly\":_vm.readonly},model:{value:(_vm.selectedServer.title),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"title\", $$v)},expression:\"selectedServer.title\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"area\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Area: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('area-tree-select',{staticClass:\"flex-search w-100 mt-2\",attrs:{\"readonly\":_vm.readonly,\"reduce\":function (group) { return group.id; },\"appendToBody\":\"\"},on:{\"component-loaded\":_vm.areaSelectComponentLoaded},model:{value:(_vm.selectedServer.groupID),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"groupID\", $$v)},expression:\"selectedServer.groupID\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"type\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Type: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('v-select-3',{attrs:{\"options\":_vm.sortedServerTypes,\"placeholder\":\"Search\",\"label\":\"title\",\"reduce\":function (serverType) { return serverType.serverTypeID; },\"appendToBody\":\"\",\"disabled\":_vm.readonly},model:{value:(_vm.selectedServer.serverTypeID),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"serverTypeID\", $$v)},expression:\"selectedServer.serverTypeID\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no types were found.\")])])],2)],1),(_vm.isApplianceEnabled && !_vm.readonly)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"ops-link\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Ops Link: \"),(_vm.isApplianceOnly)?_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]):_vm._e()]),_c('appliance-list',{model:{value:(_vm.selectedServer.applianceId),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"applianceId\", $$v)},expression:\"selectedServer.applianceId\"}}),(_vm.applianceHasFailedOver)?_c('div',{attrs:{\"data-cy\":\"post-failover-message-device\"}},[_c('span',{staticClass:\"text-danger\"},[_vm._v(\"This device has moved to a Secondary Ops Link.\")]),_c('br')]):_vm._e(),_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360013622797-Ops-Link\",\"target\":\"_blank\"}},[_vm._v(\"More Information\")])],2)],1):_vm._e(),(_vm.isFailoverEnabled && !_vm.readonly)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"secondary-appliance\",\"label-cols-lg\":\"2\",\"data-cy\":\"secondary-ops-link\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Secondary Ops Link: \")]),_c('appliance-list',{model:{value:(_vm.selectedServer.secondaryApplianceId),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"secondaryApplianceId\", $$v)},expression:\"selectedServer.secondaryApplianceId\"}}),(_vm.appliancesMatch && !_vm.applianceHasFailedOver)?_c('div',[_c('span',{staticClass:\"text-danger\"},[_vm._v(\"Secondary Ops Link cannot be the same as the Ops Link\")]),_c('br')]):_vm._e()],2)],1):_vm._e(),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Host:\",\"label-for\":\"host\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"host\",\"placeholder\":\"Host\",\"disabled\":_vm.serverTypeIsAlarmPanel,\"readonly\":(_vm.isApplianceOnly && _vm.isApplianceSelected) || _vm.readonly},model:{value:(_vm.selectedServer.host),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"host\", $$v)},expression:\"selectedServer.host\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Port:\",\"label-for\":\"port\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"port\",\"placeholder\":\"Port\",\"type\":\"number\",\"disabled\":_vm.serverTypeIsAlarmPanel,\"readonly\":(_vm.isApplianceOnly && _vm.isApplianceSelected) || _vm.readonly},model:{value:(_vm.selectedServer.port),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"port\", $$v)},expression:\"selectedServer.port\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Username:\",\"label-for\":\"username\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"autocomplete\":\"new-password\",\"id\":\"username\",\"placeholder\":\"Username\",\"disabled\":_vm.serverTypeIsAlarmPanel,\"readonly\":(_vm.isApplianceOnly && _vm.isApplianceSelected) || _vm.readonly},model:{value:(_vm.selectedServer.username),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"username\", $$v)},expression:\"selectedServer.username\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Password:\",\"label-for\":\"password\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"autocomplete\":\"new-password\",\"id\":\"password\",\"placeholder\":\"Password\",\"type\":\"password\",\"disabled\":_vm.serverTypeIsAlarmPanel,\"readonly\":(_vm.isApplianceOnly && _vm.isApplianceSelected) || _vm.readonly},model:{value:(_vm.selectedServer.password),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"password\", $$v)},expression:\"selectedServer.password\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":_vm.extraValueLabel,\"label-for\":\"extraValue\",\"label-cols-lg\":\"2\",\"data-cy\":\"extra-value-form-group\"}},[_c('b-form-input',{attrs:{\"id\":\"extraValue\",\"placeholder\":_vm.extraValuePlaceholder,\"value\":_vm.extraValue,\"readonly\":_vm.readonly},on:{\"input\":_vm.updateExtraValue}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Alarm Grouping:\",\"label-for\":\"alarm-grouping\",\"label-cols-lg\":\"2\"}},[_c('v-select-3',{attrs:{\"options\":_vm.alarmGroupingOptions,\"label\":\"title\",\"placeholder\":\"Search\",\"appendToBody\":\"\",\"data-cy\":\"alarm-grouping-select\",\"disabled\":_vm.readonly},on:{\"input\":function($event){return _vm.handleAlarmGroupingSelected()}},model:{value:(_vm.alarmGrouping),callback:function ($$v) {_vm.alarmGrouping=$$v},expression:\"alarmGrouping\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no grouping option was found.\")])])],1)],1),(_vm.isSlaEnabled && (this.permissions.canViewSLAs || this.permissions.canEditSLAs))?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Service Level Agreement (SLA) in Seconds:\",\"label-for\":\"slaBreachSeconds\",\"label-cols-lg\":\"2\",\"data-cy\":\"sla-form-group\",\"state\":_vm.isSlaBreachSecondsValid,\"invalid-feedback\":_vm.slaBreachSecondsErrorMessage}},[_c('b-form-input',{attrs:{\"id\":\"slaBreachSeconds\",\"type\":\"number\",\"placeholder\":'Enter the number of seconds permitted before an alarm breaches the SLA.',\"value\":_vm.extraValue,\"readonly\":!(_vm.isSlaEnabled && _vm.permissions.canEditSLAs),\"data-cy\":\"sla-form-input\"},model:{value:(_vm.selectedServer.slaBreachSeconds),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"slaBreachSeconds\", $$v)},expression:\"selectedServer.slaBreachSeconds\"}})],1)],1):_vm._e()],1)],1),_c('b-col',[_c('b-card',{staticClass:\"mb-3\",attrs:{\"header\":\"Additional Details\",\"header-class\":\"h4\"}},[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Log disarmed alarms:\",\"label-for\":\"logDisarmedAlarms\",\"label-cols-lg\":\"3\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"logDisarmedAlarms\",\"disabled\":_vm.readonly},model:{value:(_vm.selectedServer.logDisarmedAlarms),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"logDisarmedAlarms\", $$v)},expression:\"selectedServer.logDisarmedAlarms\"}})],1)],1),(_vm.serverTypeIsAlarmPanel)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Line profile:\",\"label-for\":\"lineProfile\",\"label-cols-lg\":\"3\",\"data-cy\":\"line-profile\"}},[_c('v-select-3',{attrs:{\"options\":_vm.serverLineProfiles,\"label\":\"title\",\"placeholder\":\"Search\",\"reduce\":function (serverLineProfile) { return serverLineProfile.serverLineProfileId; },\"appendToBody\":\"\",\"disabled\":_vm.readonly},model:{value:(_vm.selectedServer.serverLineProfileId),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"serverLineProfileId\", $$v)},expression:\"selectedServer.serverLineProfileId\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no line profile was found.\")])])],1)],1):_vm._e(),(_vm.serverTypeIsAlarmPanel)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Account number:\",\"label-for\":\"accountNumber\",\"label-cols-lg\":\"3\",\"data-cy\":\"account-number\"}},[_c('b-form-input',{attrs:{\"id\":\"accountNumber\",\"placeholder\":\"Account Number\",\"readonly\":_vm.readonly},model:{value:(_vm.selectedServer.accountNumber),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"accountNumber\", $$v)},expression:\"selectedServer.accountNumber\"}})],1)],1):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Mixins, Watch } from \"vue-property-decorator\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport vselect3 from \"vselect3\";\r\nimport { maxLength, minValue, required, requiredIf } from \"vuelidate/lib/validators\";\r\nimport { isEqualWith, get } from \"lodash\";\r\n\r\nimport { ServerModelDetails } from \"@/components/device-setup/ServerModal.vue\";\r\nimport { ServerDetails, ServerLineProfile, ServerType } from \"@/store/devices/types\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport ApplianceList from \"@/components/devices/ApplianceList.vue\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { serviceLevelAgreementMixins } from '@/mixins';\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\nconst AlarmGroupingNone: string = \"No Grouping\";\r\nconst AlarmGroupingResponse: string = \"By Response\";\r\nconst AlarmGroupingDefault: string = \"By Area\";\r\n\r\nconst { validateSlaBreachSecondsValue, generateErrorMessage } = serviceLevelAgreementMixins.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\t\"v-select-3\": vselect3,\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t\t\"appliance-list\": ApplianceList\r\n\t},\r\n\tvalidations: {\r\n\t\tselectedServer: {\r\n\t\t\tgroupID: { required, minValue: minValue(1) },\r\n\t\t\tserverTypeID: { required, minValue: minValue(1) },\r\n\t\t\ttitle: { required },\r\n\t\t\tapplianceId: { required: requiredIf(function () {\r\n\t\t\t\treturn this.isApplianceOnly;\r\n\t\t\t})},\r\n\t\t\taccountNumber: { maxLength: maxLength(20) },\r\n\t\t},\r\n\t\thasDataChanged: {\r\n\t\t\trequired: requiredIf(function () {\r\n\t\t\t\tconst selectedServerWithValidationFieldsOnly = {\r\n\t\t\t\t\t...this.selectedServer,\r\n\t\t\t\t\tdeviceTypeCounts: null,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst storeServerWithValidationFieldsOnly = {\r\n\t\t\t\t\t...this.currentServer,\r\n\t\t\t\t\tdeviceTypeCounts: null,\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn isEqualWith(\r\n\t\t\t\t\tselectedServerWithValidationFieldsOnly,\r\n\t\t\t\t\tstoreServerWithValidationFieldsOnly,\r\n\t\t\t\t\t(propFromSelectedServer, propFromStoreServer) => {\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t(propFromSelectedServer === null || propFromSelectedServer === \"\") &&\r\n\t\t\t\t\t\t\t(propFromStoreServer === null || propFromStoreServer === \"\")\r\n\t\t\t\t\t\t) {\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);\r\n\t\t\t}),\r\n\t\t},\r\n\t},\r\n})\r\nexport default class DeviceEdit extends Mixins(validationMixin) {\r\n\t@Getter(\"getFeaturesList\") private featuresList: FeaturesList;\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@Devices.Action private getDeviceTypeCounts: (serverId: number | null) => Promise;\r\n\t@Devices.State private currentServer: ServerDetails;\r\n\t@Devices.State private serverLineProfiles: ServerLineProfile[];\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\t@Devices.Mutation private setExtraValue: (extraValue: string) => void;\r\n\t@Devices.Getter(\"getSortedServerTypes\") private sortedServerTypes: ServerType[];\r\n\t@Getter(\"getMaxResponseSlaDuration\") maxResponseSlaDuration: number;\r\n\tprivate alarmGrouping: string = AlarmGroupingDefault;\r\n\tprivate selectedServer: ServerDetails = null;\r\n\tprivate deviceEditLoaded: boolean = false;\r\n\tprivate areaSelectLoaded: boolean = false;\r\n\r\n\tprivate async created(): Promise {\r\n\t\tthis.selectedServer = { ...this.currentServer };\r\n\r\n\t\tif (this.isEditing) {\r\n\t\t\tthis.setAlarmGroupingOption();\r\n\t\t\tawait this.getDeviceTypeCounts(this.selectedServer.serverID);\r\n\t\t}\r\n\r\n\t\tthis.deviceEditLoaded = true;\r\n\t}\r\n\r\n\tprivate updateExtraValue(ev) {\r\n\t\tthis.setExtraValue(ev);\r\n\t}\r\n\r\n\tprivate setAlarmGroupingOption(): void {\r\n\t\tif (this.selectedServer.isRaiseIndividual) {\r\n\t\t\tthis.alarmGrouping = AlarmGroupingNone;\r\n\t\t} else if (this.selectedServer.isRaiseGrouped) {\r\n\t\t\tthis.alarmGrouping = AlarmGroupingResponse;\r\n\t\t} else {\r\n\t\t\tthis.alarmGrouping = AlarmGroupingDefault;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"componentLoaded\")\r\n\tprivate onComponentLoaded(newValue: boolean, oldValue: boolean) {\r\n\t\tif (newValue && newValue != oldValue) {\r\n\t\t\tthis.$emit(\"component-loaded\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get componentLoaded(): boolean {\r\n\t\treturn this.deviceEditLoaded && this.areaSelectLoaded;\r\n\t}\r\n\r\n\tprivate get isEditing(): boolean {\r\n\t\treturn this.selectedServer.serverID > 0;\r\n\t}\r\n\r\n\tprivate get alarmGroupingOptions(): string[] {\r\n\t\treturn [AlarmGroupingNone, AlarmGroupingResponse, AlarmGroupingDefault];\r\n\t}\r\n\r\n\tprivate handleAlarmGroupingSelected(): void {\r\n\t\tswitch (this.alarmGrouping) {\r\n\t\t\tcase AlarmGroupingNone:\r\n\t\t\t\tthis.selectedServer.isRaiseIndividual = true;\r\n\t\t\t\tthis.selectedServer.isRaiseGrouped = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase AlarmGroupingResponse:\r\n\t\t\t\tthis.selectedServer.isRaiseIndividual = false;\r\n\t\t\t\tthis.selectedServer.isRaiseGrouped = true;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.selectedServer.isRaiseIndividual = false;\r\n\t\t\t\tthis.selectedServer.isRaiseGrouped = false;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"selectedServer\", { deep: true })\r\n\t@Watch(\"currentServer\", { deep: true })\r\n\t@Emit(\"server-model-details-changed\")\r\n\tprivate handleServerDetailsChanged(): ServerModelDetails {\r\n\t\tlet invalid = this.$v.$invalid;\r\n\r\n\t\tif (this.isFailoverEnabled) {\r\n\t\t\tinvalid = this.$v.$invalid || !this.appliancesValid;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tinvalid: invalid || !this.manuallyValidateFields(),\r\n\t\t\tselectedServer: this.selectedServer\r\n\t\t};\r\n\t}\r\n\r\n\tprivate manuallyValidateFields(): boolean{\r\n\t\treturn this.isSlaBreachSecondsValid;\r\n\t}\r\n\r\n\tprivate get isSlaBreachSecondsValid(): boolean {\r\n\t\t// Only consider current value if feature enabled and editing permission enabled\r\n\t\tif (this.isSlaEnabled && this.permissions.canEditSLAs) {\r\n\t\t\treturn validateSlaBreachSecondsValue(this.selectedServer.slaBreachSeconds, this.maxResponseSlaDuration);\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate get slaBreachSecondsErrorMessage(): string {\r\n\t\treturn generateErrorMessage(this.maxResponseSlaDuration);\r\n\t}\r\n\r\n\t/*\r\n\t\tINVALID CASES for Secondary Ops Link\r\n\t\t1. applianceId is not set and secondaryId is set\r\n\t\t\t- this.InvalidSecondaryAppliance\r\n\t\t2. applianceId is the same as the secondaryId BUT a fail over has NOT occurred (applianceId is the same as PrimaryApplianceId)\r\n\t\t\t- this.appliancesMatch && !this.applianceHasFailedOver\r\n\t*/\r\n\r\n\tprivate get appliancesValid(): boolean {\r\n\t\treturn (!this.appliancesMatch && !this.InvalidSecondaryAppliance) || (this.appliancesMatch && this.applianceHasFailedOver) && !this.InvalidSecondaryAppliance;\r\n\t}\r\n\r\n\t// The ApplianceId and the SecondaryApplianceId are the same\r\n\tprivate get appliancesMatch(): boolean {\r\n\t\treturn this.selectedServer?.applianceId != null && this.selectedServer?.applianceId == this.selectedServer?.secondaryApplianceId;\r\n\t}\r\n\r\n\t// The Appliance PrimaryApplianceId is different form the current ApplianceId\r\n\tprivate get applianceHasFailedOver(): boolean {\r\n\t\treturn this.selectedServer?.applianceId != null &&\r\n\t\t\tthis.selectedServer?.primaryApplianceId != null &&\r\n\t\t\tthis.selectedServer?.applianceId != this.selectedServer?.primaryApplianceId;\r\n\t}\r\n\r\n\t// A SecondaryApplianceId has been set without an ApplianceId\r\n\tprivate get InvalidSecondaryAppliance(): boolean {\r\n\t\treturn this.selectedServer?.applianceId == null && this.selectedServer?.secondaryApplianceId != null;\r\n\t}\r\n\r\n\tprivate get extraValueLabel(): string {\r\n\t\treturn `${this.extraValuePlaceholder}:`;\r\n\t}\r\n\r\n\tprivate get extraValuePlaceholder(): string {\r\n\t\tconst serverType = this.selectedServerType;\r\n\r\n\t\tif (serverType && serverType.extraValueName) {\r\n\t\t\treturn serverType.extraValueName;\r\n\t\t}\r\n\r\n\t\treturn \"Extra Value\";\r\n\t}\r\n\r\n\tprivate get selectedServerType(): ServerType {\r\n\t\treturn this.serverTypes.find((st) => st.serverTypeID === this.selectedServer.serverTypeID);\r\n\t}\r\n\r\n\tprivate get serverTypeIsAlarmPanel(): boolean {\r\n\t\tconst serverType = this.selectedServerType;\r\n\r\n\t\tif (serverType && serverType.isAlarmPanel) {\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 areaSelectComponentLoaded(): void {\r\n\t\tthis.areaSelectLoaded = true;\r\n\t}\r\n\r\n\tpublic get extraValue(): string {\r\n\t\tif (this.currentServer) {\r\n\t\t\treturn this.currentServer.extraValue;\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate get isApplianceEnabled() {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"Appliances\"]);\r\n\t}\r\n\r\n\tprivate get isApplianceOnly() {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"Appliances\", \"ApplianceOnly\"]);\r\n\t}\r\n\r\n\tprivate get isApplianceSelected() {\r\n\t\treturn !!this.selectedServer.applianceId;\r\n\t}\r\n\r\n\tprivate get isSlaEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SLAs\"]);\r\n\t}\r\n\r\n\tprivate get readonly(): boolean {\r\n\t\treturn this.selectedServer && !!this.selectedServer.readonly\r\n\t}\r\n\r\n\tprivate get isFailoverEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"AdvancedSetup\", \"ApplianceFailover\"]) && (this.permissions.canFailOverAppliance || this.permissions.isSystemAdmin) && this.isApplianceEnabled;\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!./DeviceEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeviceEdit.vue?vue&type=template&id=4c9a9ac5\"\nimport script from \"./DeviceEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./DeviceEdit.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:\"scrollable-results\"},[_c('h2',[_vm._v(\"Device Configuration\")]),_c('p',[_vm._v(\" Pressing the button below will attempt to connect to \"),_c('b',[_vm._v(_vm._s(_vm.selectedServer.title))]),_vm._v(\" and import Cameras, Audios, Outputs, Doors and Alarms. \")]),_c('p',[_vm._v(\"You can then select what you want to import from the available results.\")]),_c('b-row',{staticClass:\"mx-0 mb-2\"},[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":_vm.extraValueLabel,\"label-for\":\"extraValue\",\"label-cols-lg\":\"2\",\"data-cy\":\"extra-value-form-group\"}},[_c('b-form-input',{attrs:{\"id\":\"extraValue\",\"placeholder\":_vm.extraValuePlaceholder,\"value\":_vm.extraValue},on:{\"input\":_vm.updateExtraValue}})],1)],1),_c('b-col')],1),(_vm.progress == 0)?_c('b-button',{attrs:{\"variant\":\"primary\",\"href\":\"#\"},on:{\"click\":function($event){return _vm.doGetConfig()}}},[_vm._v(\" Get Device Configuration \")]):_vm._e(),_c('div',[(_vm.serverDeviceErrorsCount > 0 && _vm.progress == 100)?_c('div',{staticClass:\"results errors-accordion\"},[_c('transition',{attrs:{\"enter-active-class\":\"animated slideInDown\"}},[_c('bcard',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.device-errors\",modifiers:{\"device-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Device Errors (\"+_vm._s(_vm.serverDeviceErrorsCount)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"device-errors\",\"accordion\":\"device-errors-accordion\",\"role\":\"tabpanel\",\"visible\":\"\"}},[_c('b-card-body',[_vm._v(\" The following devices were not added to the configuration.\"),_c('br'),_vm._v(\" Please check the error log for more information.\"),_c('br'),(_vm.cameraErrorsCount > 0)?_c('div',[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.camera-errors\",modifiers:{\"camera-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Camera Errors (\"+_vm._s(_vm.cameraErrorsCount)+\")\")]),_c('b-collapse',{attrs:{\"id\":\"camera-errors\",\"accordion\":\"camera-errors-accordion\",\"role\":\"tabpanel\"}},[_c('b-table',{ref:\"camera-error-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.deviceConfigurationErrors.cameras,\"fields\":_vm.deviceErrorFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\"}})],1)],1):_vm._e(),(_vm.audioErrorsCount > 0)?_c('div',[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.audio-errors\",modifiers:{\"audio-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Audio Errors (\"+_vm._s(_vm.audioErrorsCount)+\")\")]),_c('b-collapse',{attrs:{\"id\":\"audio-errors\",\"accordion\":\"audio-errors-accordion\",\"role\":\"tabpanel\"}},[_c('b-table',{ref:\"audio-error-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.deviceConfigurationErrors.audios,\"fields\":_vm.deviceErrorFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\"}})],1)],1):_vm._e(),(_vm.outputErrorsCount > 0)?_c('div',[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.output-errors\",modifiers:{\"output-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Output Errors (\"+_vm._s(_vm.outputErrorsCount)+\")\")]),_c('b-collapse',{attrs:{\"id\":\"output-errors\",\"accordion\":\"output-errors-accordion\",\"role\":\"tabpanel\"}},[_c('b-table',{ref:\"output-error-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.deviceConfigurationErrors.outputs,\"fields\":_vm.deviceErrorFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\"}})],1)],1):_vm._e(),(_vm.doorErrorsCount > 0)?_c('div',[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.door-errors\",modifiers:{\"door-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Door Errors (\"+_vm._s(_vm.doorErrorsCount)+\")\")]),_c('b-collapse',{attrs:{\"id\":\"door-errors\",\"accordion\":\"door-errors-accordion\",\"role\":\"tabpanel\"}},[_c('b-table',{ref:\"door-error-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.deviceConfigurationErrors.doors,\"fields\":_vm.deviceErrorFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\"}})],1)],1):_vm._e(),(_vm.alarmErrorsCount > 0)?_c('div',[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.alarm-errors\",modifiers:{\"alarm-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Alarm Errors (\"+_vm._s(_vm.alarmErrorsCount)+\")\")]),_c('b-collapse',{attrs:{\"id\":\"alarm-errors\",\"accordion\":\"alarm-errors-accordion\",\"role\":\"tabpanel\"}},[_c('b-table',{ref:\"alarm-error-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.deviceConfigurationErrors.alarms,\"fields\":_vm.responseErrorFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\"}})],1)],1):_vm._e()])],1)],1)],1)],1):_vm._e(),(!_vm.gettingConfig && !_vm.settingConfig && _vm.progress == 100)?_c('div',{staticClass:\"results\"},[_c('transition',{attrs:{\"enter-active-class\":\"animated slideInDown\"}},[_c('div',{staticClass:\"accordion\",attrs:{\"role\":\"tablist\"}},[(_vm.camerasTotal > 0)?_c('b-card',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.accordion-cameras\",modifiers:{\"accordion-cameras\":true}}],attrs:{\"block\":\"\"}},[_vm._v(\"Cameras (\"+_vm._s(_vm.camerasTotal)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"accordion-cameras\",\"accordion\":\"getconfig-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"},on:{\"ps-y-reach-end\":function($event){return _vm.handleCameraScrollBarReachEnd()}}},[_c('div',{staticClass:\"toggleSelections\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleCameras(true)}}},[_vm._v(\"All\")]),_vm._v(\" | \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleCameras(false)}}},[_vm._v(\"None\")])]),_c('b-table',{ref:\"camera-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.serverConfigData.cameras,\"fields\":_vm.deviceFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\",\"busy\":_vm.cameraTableIsBusy},scopedSlots:_vm._u([{key:\"cell(selected)\",fn:function(row){return [_c('b-form-group',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.item.selected),expression:\"row.item.selected\"}],attrs:{\"type\":\"checkbox\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(row.item.selected)?_vm._i(row.item.selected,null)>-1:(row.item.selected)},on:{\"change\":[function($event){var $$a=row.item.selected,$$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(row.item, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(row.item, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(row.item, \"selected\", $$c)}},_vm.refreshCameraUsageDifference]}})])]}},(!_vm.loadingMoreCameras)?{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,{key:\"table-caption\",fn:function(){return [(_vm.loadingMoreCameras)?_c('div',{staticClass:\"text-center text-white py-2 b-table-busy\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()]},proxy:true}],null,true)})],1),(_vm.isBillingEnabled)?_c('div',{staticClass:\"p-t-10\",attrs:{\"data-cy\":\"camera-count-changed-notification\"}},[_c('b-alert',{attrs:{\"variant\":\"info\",\"show\":_vm.cameraUsageDifference != 0 && _vm.isCameraSubscriptionValid}},[_vm._v(\" This action will change camera subscription usage from \"+_vm._s(_vm.subscription.limitedSubscription ? _vm.subscription.cameras + \"/\" + _vm.subscription.camerasLimit : _vm.subscription.cameras)+\" to \"+_vm._s(_vm.subscription.cameras + _vm.cameraUsageDifference)+_vm._s(_vm.subscription.limitedSubscription ? \"/\" + _vm.subscription.camerasLimit : \"\")+\" \")]),_c('b-alert',{staticClass:\"mb-0\",attrs:{\"variant\":\"danger\",\"show\":!_vm.isCameraSubscriptionValid}},[_vm._v(\" Camera usage limit of \"+_vm._s(this.subscription.camerasLimit)+\" will be exceeded \")])],1):_vm._e()],1)],1)],1):_vm._e(),(_vm.audiosTotal > 0)?_c('b-card',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.accordion-audios\",modifiers:{\"accordion-audios\":true}}],attrs:{\"block\":\"\"}},[_vm._v(\"Audio (\"+_vm._s(_vm.audiosTotal)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"accordion-audios\",\"accordion\":\"getconfig-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"},on:{\"ps-y-reach-end\":function($event){return _vm.handleAudioScrollBarReachEnd()}}},[_c('div',{staticClass:\"toggleSelections\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleAudios(true)}}},[_vm._v(\"All\")]),_vm._v(\" | \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleAudios(false)}}},[_vm._v(\"None\")])]),_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.serverConfigData.audios,\"fields\":_vm.deviceFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\",\"busy\":_vm.audioTableIsBusy},scopedSlots:_vm._u([{key:\"cell(selected)\",fn:function(row){return [_c('b-form-group',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.item.selected),expression:\"row.item.selected\"}],attrs:{\"type\":\"checkbox\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(row.item.selected)?_vm._i(row.item.selected,null)>-1:(row.item.selected)},on:{\"change\":function($event){var $$a=row.item.selected,$$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(row.item, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(row.item, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(row.item, \"selected\", $$c)}}}})])]}},(!_vm.loadingMoreAudios)?{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,{key:\"table-caption\",fn:function(){return [(_vm.loadingMoreAudios)?_c('div',{staticClass:\"text-center text-white py-2 b-table-busy\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()]},proxy:true}],null,true)})],1)],1)],1)],1):_vm._e(),(_vm.outputsTotal > 0)?_c('b-card',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.accordion-outputs\",modifiers:{\"accordion-outputs\":true}}],attrs:{\"block\":\"\"}},[_vm._v(\"Outputs (\"+_vm._s(_vm.outputsTotal)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"accordion-outputs\",\"accordion\":\"getconfig-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"},on:{\"ps-y-reach-end\":function($event){return _vm.handleOutputScrollBarReachEnd()}}},[_c('div',{staticClass:\"toggleSelections\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleOutputs(true)}}},[_vm._v(\"All\")]),_vm._v(\" | \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleOutputs(false)}}},[_vm._v(\"None\")])]),_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.serverConfigData.outputs,\"fields\":_vm.deviceFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\",\"busy\":_vm.outputTableIsBusy},scopedSlots:_vm._u([{key:\"cell(selected)\",fn:function(row){return [_c('b-form-group',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.item.selected),expression:\"row.item.selected\"}],attrs:{\"type\":\"checkbox\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(row.item.selected)?_vm._i(row.item.selected,null)>-1:(row.item.selected)},on:{\"change\":function($event){var $$a=row.item.selected,$$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(row.item, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(row.item, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(row.item, \"selected\", $$c)}}}})])]}},(!_vm.loadingMoreOutputs)?{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,{key:\"table-caption\",fn:function(){return [(_vm.loadingMoreOutputs)?_c('div',{staticClass:\"text-center text-white py-2 b-table-busy\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()]},proxy:true}],null,true)})],1)],1)],1)],1):_vm._e(),(_vm.doorsTotal > 0)?_c('b-card',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.accordion-doors\",modifiers:{\"accordion-doors\":true}}],attrs:{\"block\":\"\"}},[_vm._v(\"Doors (\"+_vm._s(_vm.doorsTotal)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"accordion-doors\",\"accordion\":\"getconfig-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"},on:{\"ps-y-reach-end\":function($event){return _vm.handleDoorScrollBarReachEnd()}}},[_c('div',{staticClass:\"toggleSelections\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleDoors(true)}}},[_vm._v(\"All\")]),_vm._v(\" | \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleDoors(false)}}},[_vm._v(\"None\")])]),_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.serverConfigData.doors,\"fields\":_vm.deviceFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\",\"busy\":_vm.doorTableIsBusy},scopedSlots:_vm._u([{key:\"cell(selected)\",fn:function(row){return [_c('b-form-group',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.item.selected),expression:\"row.item.selected\"}],attrs:{\"type\":\"checkbox\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(row.item.selected)?_vm._i(row.item.selected,null)>-1:(row.item.selected)},on:{\"change\":function($event){var $$a=row.item.selected,$$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(row.item, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(row.item, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(row.item, \"selected\", $$c)}}}})])]}},(!_vm.loadingMoreDoors)?{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,{key:\"table-caption\",fn:function(){return [(_vm.loadingMoreDoors)?_c('div',{staticClass:\"text-center text-white py-2 b-table-busy\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()]},proxy:true}],null,true)})],1)],1)],1)],1):_vm._e(),(_vm.alarmsTotal > 0)?_c('b-card',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.accordion-alarms\",modifiers:{\"accordion-alarms\":true}}],attrs:{\"block\":\"\"}},[_vm._v(\"Alarms (\"+_vm._s(_vm.alarmsTotal)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"accordion-alarms\",\"accordion\":\"getconfig-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"},on:{\"ps-y-reach-end\":function($event){return _vm.handleAlarmScrollBarReachEnd()}}},[_c('div',{staticClass:\"toggleSelections\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleAlarms(true)}}},[_vm._v(\"All\")]),_vm._v(\" | \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleAlarms(false)}}},[_vm._v(\"None\")])]),_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.serverConfigData.alarms,\"fields\":_vm.responseFields,\"head-variant\":\"dark\",\"busy\":_vm.alarmTableIsBusy},scopedSlots:_vm._u([{key:\"cell(selected)\",fn:function(row){return [_c('b-form-group',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.item.selected),expression:\"row.item.selected\"}],attrs:{\"type\":\"checkbox\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(row.item.selected)?_vm._i(row.item.selected,null)>-1:(row.item.selected)},on:{\"change\":function($event){var $$a=row.item.selected,$$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(row.item, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(row.item, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(row.item, \"selected\", $$c)}}}})])]}},(!_vm.loadingMoreAlarms)?{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,{key:\"table-caption\",fn:function(){return [(_vm.loadingMoreAlarms)?_c('div',{staticClass:\"text-center text-white py-2 b-table-busy\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()]},proxy:true}],null,true)})],1)],1)],1)],1):_vm._e()],1)]),_c('b-button',{staticClass:\"float-right m-1\",attrs:{\"variant\":\"primary\",\"disabled\":!_vm.isCameraSubscriptionValid},on:{\"click\":function($event){return _vm.save()}}},[_vm._v(\"Save\")]),_vm._v(\" \"),_c('b-button',{staticClass:\"float-right cancel-button m-1\",on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(\"Cancel\")])],1):_vm._e()]),(_vm.gettingConfig && _vm.progress < 100)?_c('div',{staticClass:\"progress-container\"},[_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":(\"Getting Config for \" + (_vm.selectedServer.title) + \" ...\"),\"svgClass\":'fa-spin'}})],1)]):_vm._e(),(_vm.settingConfig)?_c('div',{staticClass:\"progress-container\"},[_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":(\"Creating Config for \" + (_vm.selectedServer.title) + \" ...\"),\"svgClass\":'fa-spin'}})],1)]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface GroupSyncModel {\r\n groupSyncId: number;\r\n title: string;\r\n syncSystemId: number;\r\n identifier: string;\r\n interval: number;\r\n lastRun?: Date;\r\n enabled: boolean;\r\n groupId: number;\r\n additionalConfig: string;\r\n\tlastQueueState?: string;\r\n}\r\n\r\nexport interface GroupSyncAdditionalConfig {\r\n AllowDelete?: boolean;\r\n UpdateGroupId?: boolean;\r\n UpdateSettingsMeta?: boolean;\r\n\tMaskNewAlarmPoints?: boolean;\r\n}\r\n\r\nexport interface SyncStateResponse{\r\n\tstate: string;\r\n\tgroupSyncId: number;\r\n}\r\n\r\nexport interface GroupSyncQueue {\r\n syncQueueId: number;\r\n groupSyncId: number;\r\n state: string;\r\n created: Date;\r\n lastUpdated?: Date;\r\n}\r\n\r\nexport enum GroupSyncQueueState {\r\n preQueued = \"PreQueue\",\r\n reQueue = \"ReQueue\",\r\n queued = \"Queued\",\r\n processing = \"Processing\",\r\n failed = \"Failed\",\r\n processed = \"Processed\",\r\n partialProcessed = \"PartiallyProcessed\",\r\n noData = \"NoData\",\r\n}\r\n\r\nexport interface GroupSyncAudit {\r\n auditId: number;\r\n audit: string;\r\n dateCreated: Date;\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!./GetConfig.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GetConfig.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GetConfig.vue?vue&type=template&id=c5368800&scoped=true\"\nimport script from \"./GetConfig.vue?vue&type=script&lang=ts\"\nexport * from \"./GetConfig.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GetConfig.vue?vue&type=style&index=0&id=c5368800&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 \"c5368800\",\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-card',{attrs:{\"no-body\":\"\"}},[_c('b-card-header',{attrs:{\"header-tag\":\"header\"}},[_c('div',[_c('h4',{staticClass:\"sync-details-header\"},[_vm._v(\"Sync Details\")]),(_vm.isLinkedSystem)?_c('div',{staticClass:\"sync-details-warning d-flex align-items-center text-warning\"},[_c('i',{staticClass:\"fas fa-exclamation-circle mr-2\"}),_c('p',{staticClass:\"m-0\",attrs:{\"data-cy\":\"update-modal-warning-message\"}},[_vm._v(\" This sync is being managed by \"+_vm._s(_vm.linkedSystemTitle)+\" and cannot be edited here \")])]):_vm._e()])]),_c('b-card-body',[_c('b-row',[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"syncTitle\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Title: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('b-form-input',{attrs:{\"id\":\"syncTitle\",\"placeholder\":\"Title\",\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.title),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"title\", $$v)},expression:\"selectedSyncSystem.title\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"syncType\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Type: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('v-select-3',{attrs:{\"options\":_vm.sortedServerTypes,\"placeholder\":\"Search\",\"label\":\"title\",\"reduce\":function (serverType) { return serverType.serverTypeID; },\"appendToBody\":\"\",\"disabled\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.serverTypeId),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"serverTypeId\", $$v)},expression:\"selectedSyncSystem.serverTypeId\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no types were found.\")])])],2)],1)],1),_c('b-row',[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Host:\",\"label-for\":\"syncHost\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"syncHost\",\"placeholder\":\"Host\",\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.host),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"host\", $$v)},expression:\"selectedSyncSystem.host\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Port:\",\"label-for\":\"syncPort\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"syncPort\",\"placeholder\":\"Port\",\"type\":\"number\",\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.port),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"port\", $$v)},expression:\"selectedSyncSystem.port\"}})],1)],1)],1),_c('b-row',[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Username:\",\"label-for\":\"syncUsername\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"autocomplete\":\"new-password\",\"id\":\"syncUsername\",\"placeholder\":\"Username\",\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.username),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"username\", $$v)},expression:\"selectedSyncSystem.username\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Password:\",\"label-for\":\"password\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"autocomplete\":\"new-password\",\"id\":\"password\",\"placeholder\":\"Password\",\"type\":\"password\",\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.password),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"password\", $$v)},expression:\"selectedSyncSystem.password\"}})],1)],1)],1),_c('b-row',[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":_vm.extraValueLabel,\"label-for\":\"syncExtraValue\",\"label-cols-lg\":\"2\",\"data-cy\":\"extra-value-form-group\"}},[_c('b-form-input',{attrs:{\"id\":\"syncExtraValue\",\"placeholder\":_vm.extraValueLabel,\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.extraValue),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"extraValue\", $$v)},expression:\"selectedSyncSystem.extraValue\"}})],1)],1),_c('b-col',[(_vm.isApplianceEnabled)?_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"ops-link\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Ops Link: \")]),_c('appliance-list',{attrs:{\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.applianceId),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"applianceId\", $$v)},expression:\"selectedSyncSystem.applianceId\"}}),(_vm.applianceHasFailedOver)?_c('div',{attrs:{\"data-cy\":\"post-failover-message-sync\"}},[_c('span',{staticClass:\"text-danger\"},[_vm._v(\"This device has moved to a Secondary Ops Link.\")]),_c('br')]):_vm._e(),_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360013622797-Ops-Link\",\"target\":\"_blank\"}},[_vm._v(\"More Information\")])],2):_vm._e(),(_vm.isFailoverEnabled && !_vm.readonly)?_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"secondary-appliance\",\"label-cols-lg\":\"2\",\"data-cy\":\"secondary-ops-link\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Secondary Ops Link: \")]),_c('appliance-list',{attrs:{\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.secondaryApplianceId),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"secondaryApplianceId\", $$v)},expression:\"selectedSyncSystem.secondaryApplianceId\"}}),(_vm.appliancesMatch)?_c('div',[_c('span',{staticClass:\"text-danger\"},[_vm._v(\"Secondary Ops Link cannot be the same as the Ops Link\")]),_c('br')]):_vm._e()],2):_vm._e()],1)],1),_c('b-row',[_c('b-col',[(_vm.isSuiteSyncEnabled)?_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Is Suite Sync?\",\"label-for\":\"isSuiteSync\",\"label-cols-lg\":\"2\",\"data-cy\":\"suite-sync-form-group\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"isSuiteSync\",\"disabled\":_vm.isReadOnlyForm || !_vm.userCanConfigureSuiteSync,\"data-cy\":\"suite-sync-checkbox\"},model:{value:(_vm.selectedSyncSystem.isSuiteSync),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"isSuiteSync\", $$v)},expression:\"selectedSyncSystem.isSuiteSync\"}}),_c('span',{staticClass:\"sync-checkbox-label small\"},[_vm._v(\"Syncs all retrieved data in the Suite\")])],1):_vm._e()],1),_c('b-col',[(_vm.isDeviceSyncEnabled)?_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Is Device Sync?\",\"label-for\":\"isDeviceSync\",\"label-cols-lg\":\"2\",\"data-cy\":\"device-sync-form-group\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"isDeviceSync\",\"disabled\":_vm.isReadOnlyForm || !_vm.userCanConfigureDeviceSync,\"data-cy\":\"device-sync-checkbox\"},model:{value:(_vm.selectedSyncSystem.isDeviceSync),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"isDeviceSync\", $$v)},expression:\"selectedSyncSystem.isDeviceSync\"}}),_c('span',{staticClass:\"sync-checkbox-label small\"},[_vm._v(\"Set this sync system up as a Device Sync\")])],1):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Watch, Emit, Mixins } from \"vue-property-decorator\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { SyncSystem, ServerType, ServerDetails } from \"@/store/devices/types\";\r\nimport { UserPermissions, FeaturesList } from \"@/store/types\";\r\nimport { get, isEqualWith } from \"lodash\";\r\n\r\nimport ApplianceList from \"@/components/devices/ApplianceList.vue\";\r\nimport vselect3 from \"vselect3\";\r\nimport { required, minValue, requiredIf } from \"vuelidate/lib/validators\";\r\nimport { SyncModelDetails } from \"../ServerModal.vue\";\r\n\r\nconst UserManagement = namespace(\"userManagement\");\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"v-select-3\": vselect3,\r\n\t\t\"appliance-list\": ApplianceList\r\n\t},\r\n\tvalidations: {\r\n\t\tselectedSyncSystem: {\r\n\t\t\tserverTypeId: { required, minValue: minValue(1) },\r\n\t\t\tport: { minValue: minValue(0) },\r\n\t\t\ttitle: { required },\r\n\t\t},\r\n\t\thasDataChanged: {\r\n\t\t\trequired: requiredIf(function() {\r\n\t\t\t\tconst selectedSync = {\r\n\t\t\t\t\t...this.selectedSyncSystem\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst storeSync = {\r\n\t\t\t\t\t...this.storedSyncSystem\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn isEqualWith(\r\n\t\t\t\t\tselectedSync,\r\n\t\t\t\t\tstoreSync,\r\n\t\t\t\t\t(propFromSelectedSync, propFromStoreSync) => {\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t(!propFromSelectedSync) &&\r\n\t\t\t\t\t\t\t(!propFromStoreSync)\r\n\t\t\t\t\t\t) {\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);\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n})\r\nexport default class SyncEdit extends Mixins(validationMixin) {\r\n\t@Getter(\"getFeaturesList\") private featuresList: FeaturesList;\r\n\t@Getter private getUserTenantGroupId: number;\r\n\r\n\t@Devices.Getter(\"getSortedServerTypes\") private sortedServerTypes: ServerType[];\r\n\r\n\t@Getter getPermissions: UserPermissions;\r\n\t@UserManagement.Action fetchPermissionsState: () => Promise;\r\n\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\t@Devices.State private syncSystems: SyncSystem[];\r\n\t@Devices.State private currentServer: ServerDetails;\r\n\r\n\t@Prop({ type: Boolean, default: false })\r\n\tprivate readonly: boolean;\r\n\r\n\tpublic selectedSyncSystem: SyncSystem = this.defaultSyncSystem();\r\n\tprivate storedSyncSystem: SyncSystem = this.defaultSyncSystem();\r\n\tprivate settingSync: boolean = false;\r\n\r\n\tprivate defaultSyncSystem(): SyncSystem {\r\n\t\treturn {\r\n\t\t\tsyncSystemId: null,\r\n\t\t\tserverId: null,\r\n\t\t\tserverTypeId: null,\r\n\t\t\tapplianceId: null,\r\n\t\t\ttitle: \"\",\r\n\t\t\thost: \"\",\r\n\t\t\tport: null,\r\n\t\t\tusername: null,\r\n\t\t\tpassword: null,\r\n\t\t\textraValue: null,\r\n\t\t\ttenantId: this.getUserTenantGroupId,\r\n\t\t\tisSuiteSync: null,\r\n\t\t\tisDeviceSync: null,\r\n\t\t\tlinkedSyncSystemId: null,\r\n\t\t\tlinkedSyncSystemTitle: null,\r\n\t\t\tsecondaryApplianceId: null\r\n\t\t};\r\n\t}\r\n\r\n\t@Watch(\"selectedSyncSystem\", { deep: true })\r\n\t@Watch(\"storedSyncSystem\", { deep: true })\r\n\t@Emit(\"syncDetailsUpdated\")\r\n\tprivate handleSyncDetailsChanged(): SyncModelDetails {\r\n\t\tif (this.settingSync) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet invalid = this.$v.$invalid;\r\n\r\n\t\tif (this.isFailoverEnabled) {\r\n\t\t\tinvalid = this.$v.$invalid || !this.appliancesValid;\r\n\t\t}\r\n\r\n\t\treturn { invalid: invalid, selectedSync: this.selectedSyncSystem };\r\n\t}\r\n\r\n\t@Watch(\"currentServer\", { deep: true })\r\n\tprivate handleServerDetailsChanged(): void {\r\n\t\tif (!this.currentServer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.settingSync = true;\r\n\t\tif (this.currentServer.syncSystemId == -1) {\r\n\t\t\tthis.selectedSyncSystem = this.defaultSyncSystem();\r\n\t\t\tthis.storedSyncSystem = this.defaultSyncSystem();\r\n\t\t} else if (this.currentServer.syncSystemId > 0) {\r\n\t\t\tvar syncSystem = this.syncSystems.find(ss => ss.syncSystemId == this.currentServer.syncSystemId);\r\n\t\t\tthis.selectedSyncSystem = { ...syncSystem };\r\n\t\t\tthis.storedSyncSystem = { ...syncSystem };\r\n\t\t}\r\n\t\tthis.settingSync = false;\r\n\t}\r\n\r\n\t/*\r\n\t\tINVALID CASES for Secondary Ops Link\r\n\t\t1. applianceId is not set and secondaryId is set\r\n\t\t\t- this.InvalidSecondaryAppliance\r\n\t\t2. applianceId is the same as the secondaryId BUT a fail over has NOT occurred (applianceId is the same as PrimaryApplianceId)\r\n\t\t\t- this.appliancesMatch && !this.applianceHasFailedOver\r\n\t*/\r\n\r\n\tprivate get appliancesValid(): boolean {\r\n\t\treturn (!this.appliancesMatch && !this.InvalidSecondaryAppliance) || (this.appliancesMatch && this.applianceHasFailedOver) && !this.InvalidSecondaryAppliance;\r\n\t}\r\n\r\n\t// The ApplianceId and the SecondaryApplianceId are the same\r\n\tprivate get appliancesMatch(): boolean {\r\n\t\treturn this.selectedSyncSystem?.applianceId != null && this.selectedSyncSystem?.applianceId == this.selectedSyncSystem?.secondaryApplianceId;\r\n\t}\r\n\r\n\t// The Appliance PrimaryApplianceId is different form the current ApplianceId\r\n\tprivate get applianceHasFailedOver(): boolean {\r\n\t\treturn this.selectedSyncSystem?.applianceId != null &&\r\n\t\t\tthis.selectedSyncSystem?.primaryApplianceId != null &&\r\n\t\t\tthis.selectedSyncSystem?.applianceId != this.selectedSyncSystem?.primaryApplianceId;\r\n\t}\r\n\r\n\t// A SecondaryApplianceId has been set without an ApplianceId\r\n\tprivate get InvalidSecondaryAppliance(): boolean {\r\n\t\treturn this.selectedSyncSystem?.applianceId == null && this.selectedSyncSystem?.secondaryApplianceId != null;\r\n\t}\r\n\r\n\tprivate async created(): Promise {\r\n\t\tthis.handleServerDetailsChanged();\r\n\t\tawait this.fetchPermissionsState();\r\n\t}\r\n\r\n\tprivate get selectedServerType(): ServerType {\r\n\t\treturn this.serverTypes.find((st) => st.serverTypeID === this.selectedSyncSystem?.serverTypeId);\r\n\t}\r\n\r\n\tprivate get isApplianceEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"Appliances\"]);\r\n\t}\r\n\r\n\tprivate get isSuiteSyncEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Suite\", \"SuiteSync\"]);\r\n\t}\r\n\r\n\tprivate get isDeviceSyncEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"AdvancedSetup\", \"SyncSystem\", \"DeviceSync\"]);\r\n\t}\r\n\r\n\tprivate get userCanConfigureSuiteSync(): boolean {\r\n\t\treturn this.getPermissions.canConfigureSuiteSync;\r\n\t}\r\n\r\n\tprivate get userCanConfigureDeviceSync(): boolean {\r\n\t\treturn this.getPermissions.canConfigureDeviceSync;\r\n\t}\r\n\r\n\tprivate get extraValueLabel(): string {\r\n\t\tconst serverType = this.selectedServerType;\r\n\r\n\t\tif (serverType && serverType.extraValueName) {\r\n\t\t\treturn serverType.extraValueName;\r\n\t\t}\r\n\r\n\t\treturn \"Extra Value\";\r\n\t}\r\n\r\n\tprivate get isLinkedSystem(): boolean {\r\n\t\treturn this.selectedSyncSystem?.linkedSyncSystemId != null;\r\n\t}\r\n\r\n\tprivate get linkedSystemTitle(): string | null {\r\n\t\treturn this.selectedSyncSystem?.linkedSyncSystemTitle ?? \"Unknown\";\r\n\t}\r\n\r\n\tprivate get isReadOnlyForm(): boolean {\r\n\t\treturn this.readonly || this.isLinkedSystem;\r\n\t}\r\n\r\n\tprivate get isFailoverEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"AdvancedSetup\", \"ApplianceFailover\"]) && (this.getPermissions.canFailOverAppliance || this.getPermissions.isSystemAdmin) && this.isApplianceEnabled;\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!./SyncEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SyncEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SyncEdit.vue?vue&type=template&id=4577ec9a&scoped=true\"\nimport script from \"./SyncEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./SyncEdit.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SyncEdit.vue?vue&type=style&index=0&id=4577ec9a&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 \"4577ec9a\",\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',[(_vm.selectedGroupSyncId)?_c('b-button',{staticClass:\"float-right mb-1\",attrs:{\"variant\":\"primary\"},on:{\"~click\":function($event){return _vm.setGroupSyncId(null)}}},[_c('i',{staticClass:\"fas fa-fw fa-angle-left\"}),_vm._v(\" Back \")]):_vm._e()],1)],1),_c('b-row',[_c('b-col',[_c('generic-table',{attrs:{\"term\":'Area Sync',\"dataList\":_vm.groupSyncsForTable,\"columns\":_vm.columns,\"modalItems\":_vm.modalItems,\"onSave\":_vm.addOrUpdateGroupSync,\"onDelete\":_vm.deleteGroupSync,\"onAddNew\":_vm.addOrUpdateGroupSync,\"isLoading\":_vm.isLoading,\"tableClass\":null,\"tableBodyClass\":null,\"scrollbarClass\":\"mh-65\",\"readonly\":_vm.readonly,\"isShowSearch\":!_vm.selectedGroupSyncId},scopedSlots:_vm._u([{key:\"identifier\",fn:function(slotProps){return [_c('span',{attrs:{\"title\":slotProps.row.identifier}},[_vm._v(\" \"+_vm._s(_vm._f(\"truncateString\")(slotProps.row.identifier,100))+\" \")])]}},{key:\"manualQueue\",fn:function(slotProps){return [(!_vm.selectedGroupSyncId)?_c('span',[_c('i',{staticClass:\"fas fa-history float-right mt-1 ml-1 clickable hover-icon\",attrs:{\"id\":(\"view-sync-history-\" + (slotProps.row.groupSyncId))},on:{\"click\":function($event){return _vm.setGroupSyncId(slotProps.row.groupSyncId)}}}),_c('b-tooltip',{attrs:{\"target\":(\"view-sync-history-\" + (slotProps.row.groupSyncId)),\"title\":\"View Sync History\",\"placement\":\"top\",\"triggers\":['hover', 'focus']}})],1):_vm._e(),(!_vm.readonly)?_c('span',[_c('i',{staticClass:\"fas fa-sync float-right m-1\",class:(!slotProps.row.enabled || !slotProps.row.queueable) ? 'text-muted' : 'clickable hover-icon',attrs:{\"id\":(\"manual-sync-\" + (slotProps.row.groupSyncId))},on:{\"click\":function($event){(!slotProps.row.enabled || !slotProps.row.queueable) ? null : _vm.syncNow(slotProps.row.groupSyncId)}}}),_c('b-tooltip',{attrs:{\"target\":(\"manual-sync-\" + (slotProps.row.groupSyncId)),\"title\":\"Sync Now\",\"placement\":\"top\",\"triggers\":['hover', 'focus']}})],1):_vm._e()]}},{key:\"lastRun\",fn:function(slotProps){return [_vm._v(\" \"+_vm._s(_vm.fromNow(slotProps.row.lastRun))+\" \")]}}])})],1)],1),(_vm.selectedGroupSyncId)?_c('div',{staticClass:\"mt-1\"},[_c('group-sync-history',{attrs:{\"groupSyncCompletedKey\":_vm.groupSyncQueue,\"groupSyncId\":_vm.selectedGroupSyncId}})],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',[(_vm.groupSyncId)?_c('div',[_c('vue-select',{staticClass:\"w-50 float-left\",attrs:{\"options\":_vm.groupSyncQueues,\"placeholder\":\"Select a historic sync\",\"label\":\"state\",\"reduce\":function (syncQueue) { return syncQueue.syncQueueId; },\"appendToBody\":\"\"},scopedSlots:_vm._u([{key:\"selected-option\",fn:function(option){return [_vm._v(\" \"+_vm._s(_vm.queueOptionLabel(option))+\" \")]}},{key:\"option\",fn:function(option){return [_vm._v(\" \"+_vm._s(_vm.queueOptionLabel(option))+\" \")]}}],null,false,3530203661),model:{value:(_vm.selectedSyncQueue),callback:function ($$v) {_vm.selectedSyncQueue=$$v},expression:\"selectedSyncQueue\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no types were found.\")])]),(!_vm.selectedSyncQueue)?_c('span',[_c('br'),_c('br')]):_vm._e(),_c('div',[_c('br'),_c('br'),_c('generic-table',{attrs:{\"term\":\"Sync Audit\",\"dataList\":_vm.groupSyncHistoryPage,\"columns\":_vm.columns,\"isLoading\":_vm.isLoadingAudit,\"tableClass\":\"\",\"tableBodyClass\":\"groupSyncHistory thin-scroll\",\"readonly\":true,\"useModal\":false,\"isShowAction\":false,\"isShowSearch\":false,\"totalAvailableRows\":_vm.syncQueueAudit ? _vm.syncQueueAudit.length : 0,\"resetPaginationOnRowCountChange\":\"\"},on:{\"search-filter-updated\":_vm.updatePage},scopedSlots:_vm._u([{key:\"audit\",fn:function(slotProps){return _vm._l((slotProps.row.audit.split('\\n')),function(line,index){return _c('span',{key:index},[(index != 0)?_c('span',{staticStyle:{}},[_vm._v(\" \"+_vm._s(line.replaceAll('\\t', \" \"))+\" \"),_c('br')]):_c('span',[_vm._v(\" \"+_vm._s(line)+\" \")])])})}},{key:\"dateCreated\",fn:function(slotProps){return [_c('span',[_vm._v(\" \"+_vm._s(_vm.convertUtcDateTimeToLocalDateTimeString(slotProps.row.dateCreated))+\" \")])]}}],null,false,2241161647)})],1)],1):_c('div',[_vm._v(\" No Group Sync Selected \")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop, Watch } from \"vue-property-decorator\";\r\nimport { GroupSyncQueue, GroupSyncQueueState, GroupSyncAudit } from '@/types/sv-data/devices/SyncSystem';\r\nimport api from '@/services/api.service';\r\nimport vselect3 from \"vselect3\";\r\nimport GenericTable, { TableHeader } from '@/components/table/generic-table.vue';\r\nimport { formatDateMixin } from \"@/mixins\";\r\nimport { PaginatedSearchQueryParams } from '@/store/types';\r\nconst { fromNow } = formatDateMixin.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n \"vue-select\" : vselect3,\r\n\t\t\"generic-table\": GenericTable,\r\n }\r\n})\r\nexport default class GroupSyncHistory extends Vue {\r\n @Prop({required: true, type: Number, default: null })\r\n private groupSyncId: number;\r\n\r\n\t@Prop({type: Number, required: true})\r\n\tprivate groupSyncCompletedKey: number;\r\n\r\n private groupSyncQueues: GroupSyncQueue[] = [];\r\n private syncQueueAudit: GroupSyncAudit[] = [];\r\n private selectedSyncQueue: number = null;\r\n private isLoadingAudit: boolean = false;\r\n private pageNumber: number = 1;\r\n private pageLength: number = 25;\r\n\r\n private columns: TableHeader[] = [\r\n\t\t{\r\n\t\t\ttitle: \"Audit\",\r\n\t\t\tkey: \"audit\",\r\n\t\t\torder: 2,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"Audit Message\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n isTermLabel: true,\r\n\t\t\tuseCustomCell: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Date / Time\",\r\n\t\t\tkey: \"dateCreated\",\r\n\t\t\torder: 1,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"Area\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n isTermLabel: true,\r\n\t\t\tuseCustomCell: true,\r\n width:\"175px\"\r\n\t\t},\r\n\t];\r\n\r\n\r\n private async mounted(): Promise {\r\n this.retrieveGroupSyncQueue();\r\n }\r\n\r\n\t@Watch(\"groupSyncCompletedKey\")\r\n\tprivate async onGroupSyncCompletedKeyChanged(): Promise {\r\n\t\tawait this.retrieveGroupSyncQueue();\r\n\t\tif (this.selectedSyncQueue) {\r\n\t\t\tawait this.retrieveQueueAudit(this.selectedSyncQueue, null);\r\n\t\t}\r\n\t}\r\n\r\n @Watch(\"groupSyncId\")\r\n private async retrieveGroupSyncQueue(): Promise {\r\n try\r\n {\r\n if (!this.groupSyncId) {\r\n this.groupSyncQueues = [];\r\n return;\r\n }\r\n this.groupSyncQueues = (await api.syncQueueForGroupSync(this.groupSyncId)).filter(gsq => gsq.lastUpdated);\r\n this.pageNumber = 1;\r\n this.pageLength = 25;\r\n }\r\n catch(err)\r\n {\r\n console.error(err);\r\n this.groupSyncQueues = [];\r\n }\r\n }\r\n\r\n @Watch(\"selectedSyncQueue\")\r\n private async retrieveQueueAudit(newQueueId: number, oldQueueId: number): Promise {\r\n if (newQueueId == oldQueueId) {\r\n return;\r\n }\r\n\r\n if (!newQueueId) {\r\n this.syncQueueAudit = [];\r\n return;\r\n }\r\n\r\n try\r\n {\r\n this.isLoadingAudit = true;\r\n this.syncQueueAudit = await api.auditTrailForGroupSyncQueue(newQueueId);\r\n }\r\n catch(err)\r\n {\r\n console.error(err);\r\n this.syncQueueAudit = [];\r\n }\r\n this.isLoadingAudit = false;\r\n }\r\n\r\n\r\n\tprivate friendlyStateText(state: string): string {\r\n\t\tswitch (state)\r\n\t\t{\r\n\t\t\tcase GroupSyncQueueState.preQueued:\r\n\t\t\t\treturn \"Pending\";\r\n\t\t\tcase GroupSyncQueueState.queued:\r\n\t\t\t\treturn \"Queued\";\r\n\t\t\tcase GroupSyncQueueState.processing:\r\n\t\t\t\treturn \"Processing\";\r\n\t\t\tcase GroupSyncQueueState.failed:\r\n\t\t\t\treturn \"Failed\";\r\n\t\t\tcase GroupSyncQueueState.processed:\r\n\t\t\t\treturn \"Processed\";\r\n\t\t\tcase GroupSyncQueueState.partialProcessed:\r\n\t\t\t\treturn \"Partially Processed\";\r\n\t\t\tcase GroupSyncQueueState.noData:\r\n\t\t\t\treturn \"No data\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"\";\r\n\t\t}\r\n\t}\r\n\r\n private queueOptionLabel(queueItem: GroupSyncQueue): string {\r\n if (!queueItem) {\r\n return \"\";\r\n }\r\n return `${this.friendlyStateText(queueItem.state)} - ${fromNow(queueItem.lastUpdated)}`;\r\n }\r\n\r\n\tprivate updatePage(paginatedSearchQueryParams?: PaginatedSearchQueryParams): void {\r\n this.pageNumber = paginatedSearchQueryParams.page;\r\n this.pageLength = paginatedSearchQueryParams.pageSize;\r\n }\r\n\r\n private get groupSyncHistoryPage(): GroupSyncAudit[] {\r\n return this.syncQueueAudit.slice(((this.pageNumber - 1) * this.pageLength), (this.pageNumber * this.pageLength));\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!./GroupSyncHistory.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupSyncHistory.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GroupSyncHistory.vue?vue&type=template&id=6bd95f55\"\nimport script from \"./GroupSyncHistory.vue?vue&type=script&lang=ts\"\nexport * from \"./GroupSyncHistory.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GroupSyncHistory.vue?vue&type=style&index=0&id=6bd95f55&prod&lang=css\"\nimport style1 from \"./GroupSyncHistory.vue?vue&type=style&index=1&id=6bd95f55&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, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace, State } from 'vuex-class';\r\nimport { ServerDetails } from '@/store/devices/types';\r\nimport GenericTable, { TableHeader } from '@/components/table/generic-table.vue';\r\nimport { UserGroup } from '@/store/types';\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 api from '@/services/api.service';\r\nimport {\r\n\tGroupSyncModel,\r\n\tGroupSyncQueue,\r\n\tGroupSyncQueueState,\r\n\tSyncStateResponse\r\n} from \"@/types/sv-data/devices/SyncSystem\";\r\nimport GroupSyncConfig from './GroupSyncConfig.vue';\r\nimport GroupSyncHistory from './GroupSyncHistory.vue';\r\nimport { truncateString } from \"@/filters\";\r\nimport { forEach } from \"lodash\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"generic-table\": GenericTable,\r\n\t\t\"group-sync-history\" : GroupSyncHistory\r\n },\r\n\tfilters: {\r\n truncateString\r\n }\r\n})\r\nexport default class GroupSync extends Vue {\r\n\t@Devices.State private currentServer: ServerDetails;\r\n\t@State private UserGroups: UserGroup[];\r\n\r\n @Prop({type:Boolean, default: false})\r\n private readonly: Boolean;\r\n\r\n\tprivate isPollingState: boolean = false;\r\n\tprivate statePoll: NodeJS.Timeout = null;\r\n\tprivate syncStateArray: number[] = [];\r\n\r\n private getGroupTitle(groupID: number): string {\r\n\t\treturn this.UserGroups.find(ug => ug.groupID == groupID)?.title;\r\n\t}\r\n\r\n private 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: \"title\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n isTermLabel: 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: \"Area\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n isTermLabel: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Identifier\",\r\n\t\t\tkey: \"identifier\",\r\n\t\t\torder: 3,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"Identifier filter\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n isTermLabel: true,\r\n\t\t\tuseCustomCell: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Interval\",\r\n\t\t\tkey: \"interval\",\r\n\t\t\torder: 4,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"Duration between syncs (hours)\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n isTermLabel: true,\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Enabled\",\r\n\t\t\tkey: \"enabled\",\r\n\t\t\torder: 5,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"Flag indicating if group sync is enabled\",\r\n\t\t\tsearchable: true,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"checkbox\",\r\n isTermLabel: true,\r\n\t\t},\r\n {\r\n\t\t\ttitle: \"Last Run\",\r\n\t\t\tkey: \"lastRun\",\r\n\t\t\torder: 6,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"Last run time\",\r\n\t\t\tsearchable: false,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n isTermLabel: true,\r\n\t\t\tuseCustomCell: true\r\n\t\t},\r\n\t\t{\r\n\t\t\ttitle: \"Last Sync State\",\r\n\t\t\tkey: \"lastQueueState\",\r\n\t\t\torder: 7,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"State of last sync\",\r\n\t\t\tsearchable: false,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"input\",\r\n isTermLabel: true,\r\n\t\t},\r\n {\r\n\t\t\ttitle: \"\",\r\n\t\t\tkey: \"manualQueue\",\r\n\t\t\torder: 8,\r\n\t\t\tsortOrder: 0,\r\n\t\t\tsortOrderReversed: false,\r\n\t\t\tdescription: \"Actions\",\r\n\t\t\tsearchable: false,\r\n\t\t\tvisible: true,\r\n\t\t\tdataType: \"component\",\r\n isTermLabel: true,\r\n\t\t\tuseCustomCell: true,\r\n\t\t\twidth:\"50px\"\r\n\t\t},\r\n\t];\r\n\r\n private 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\treadOnly: false,\r\n\t\t\t\trequired: true,\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tmaxLength: 200,\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\treadOnly: false,\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\treadonly:this.readonly,\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 {\r\n\t\t\t\ttitle: \"Identifier\",\r\n\t\t\t\tkey: \"identifier\",\r\n\t\t\t\tdataType: \"textarea\",\r\n\t\t\t\tmaxLength: 2000,\r\n placeholder: \"Optional - add identifier\",\r\n },\r\n {\r\n\t\t\t\ttitle: \"Interval\",\r\n\t\t\t\tkey: \"interval\",\r\n\t\t\t\tdataType: \"number\",\r\n description: \"Time in Hours between syncs\",\r\n\t\t\t min: 1,\r\n\t\t\t\tmaxLength: 200,\r\n defaultValue: 24,\r\n },\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Enabled\",\r\n\t\t\t\tkey: \"enabled\",\r\n\t\t\t\tdataType: \"checkbox\",\r\n defaultValue: true,\r\n },\r\n {\r\n\t\t\t\ttitle: \"Additional Config\",\r\n\t\t\t\tkey: \"additionalConfig\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: GroupSyncConfig,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treadonly:this.readonly\r\n\t\t\t\t},\r\n },\r\n ]\r\n }\r\n\r\n private isLoading: boolean = false;\r\n private isLoadingStates: boolean = false;\r\n private groupSyncs: GroupSyncModel[] = [];\r\n private lastQueueStates: GroupSyncQueue[] = [];\r\n\tprivate selectedGroupSyncId: number = null;\r\n\tprivate groupSyncQueue: number = 0;\r\n\r\n private async addOrUpdateGroupSync(groupSync: GroupSyncModel): Promise {\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tif (groupSync) {\r\n\t\t\t\tif (!groupSync.syncSystemId) {\r\n\t\t\t\t\tgroupSync.syncSystemId = this.currentServer.syncSystemId;\r\n\t\t\t\t}\r\n\t\t\t\tawait api.addOrUpdateGroupSync(groupSync);\r\n\t\t\t}\r\n\t\t\tawait this.loadGroupSyncs();\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 }\r\n\r\n private async deleteGroupSync(groupSync: GroupSyncModel): Promise {\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tif (groupSync) {\r\n\t\t\t\tawait api.deleteGroupSync(groupSync.groupSyncId);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.selectedGroupSyncId == groupSync.groupSyncId) {\r\n\t\t\t\tthis.setGroupSyncId(null);\r\n\t\t\t}\r\n\t\t\tawait this.loadGroupSyncs();\r\n\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: \"Group Sync Deleted\",\r\n\t\t\t\t\ttext: \"Successfully deleted group sync '\" + groupSync.title + \"'\"\r\n\t\t\t\t});\r\n\t\t}\r\n\t\tcatch (err)\r\n\t\t{\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: err.response.data\r\n\t\t\t});\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 }\r\n\r\n private async created(): Promise {\r\n await this.loadGroupSyncs();\r\n }\r\n\r\n\tprivate async loadLastQueueStates(): Promise\r\n\t{\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.isLoadingStates = true;\r\n\t\t\tvar lastStates = await api.retrieveLastSyncQueueStates(this.currentServer.syncSystemId);\r\n\t\t\tif (lastStates) {\r\n\t\t\t\tthis.lastQueueStates = lastStates;\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\tfinally\r\n\t\t{\r\n\t\t\tthis.isLoadingStates = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate retrieveFriendlyState(groupSyncId: number): string {\r\n\t\tvar state = this.lastQueueStates.find(lq => lq.groupSyncId == groupSyncId)?.state;\r\n\r\n\t\treturn this.convertQueueStateToFriendlyText(state);\r\n\t}\r\n\tprivate convertQueueStateToFriendlyText(state: string): string {\r\n\t\tswitch (state)\r\n\t\t{\r\n\t\t\tcase GroupSyncQueueState.preQueued:\r\n\t\t\t\treturn \"Waiting to be picked up\";\r\n\t\t\tcase GroupSyncQueueState.queued:\r\n\t\t\t\treturn \"Active queue\";\r\n\t\t\tcase GroupSyncQueueState.reQueue:\r\n\t\t\t\treturn \"Active queue\";\r\n\t\t\tcase GroupSyncQueueState.processing:\r\n\t\t\t\treturn \"Processing...\";\r\n\t\t\tcase GroupSyncQueueState.failed:\r\n\t\t\t\treturn \"Failed to sync\";\r\n\t\t\tcase GroupSyncQueueState.processed:\r\n\t\t\t\treturn \"Processed\";\r\n\t\t\tcase GroupSyncQueueState.partialProcessed:\r\n\t\t\t\treturn \"Partially Processed - some entities were not synced\";\r\n\t\t\tcase GroupSyncQueueState.noData:\r\n\t\t\t\treturn \"No data returned from Device\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"\";\r\n\t\t}\r\n\t}\r\n\r\n\tprivate groupSyncQueueable(groupSyncId: number): boolean {\r\n\t\tlet state = this.lastQueueStates.find(lq => lq.groupSyncId == groupSyncId)?.state;\r\n\r\n\t\tswitch (state)\r\n\t\t{\r\n\t\t\tcase GroupSyncQueueState.preQueued:\r\n\t\t\t\treturn false;\r\n\t\t\tcase GroupSyncQueueState.queued:\r\n\t\t\t\treturn false;\r\n\t\t\tcase GroupSyncQueueState.reQueue:\r\n\t\t\t\treturn false;\r\n\t\t\tcase GroupSyncQueueState.processing:\r\n\t\t\t\treturn false;\r\n\t\t\tdefault:\r\n\t\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\r\n @Watch(\"currentServer\", { deep: true })\r\n private async loadGroupSyncs(): Promise {\r\n if (!this.currentServer || !this.currentServer.syncSystemId) {\r\n this.groupSyncs = [];\r\n return;\r\n }\r\n\t\ttry\r\n\t\t{\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tvar groupSyncs = await api.groupSyncsForSyncSystem(this.currentServer.syncSystemId);\r\n\t\t\tif (!groupSyncs) {\r\n\t\t\t\tgroupSyncs = [];\r\n\t\t\t}\r\n\t\t\tawait this.loadLastQueueStates();\r\n\t\t\tthis.groupSyncs = groupSyncs.map(gs => {\r\n\t\t\t\treturn ({\r\n\t\t\t\t\t...gs,\r\n\t\t\t\t\tmanualQueue: null,\r\n\t\t\t\t\tgroupTitle: this.getGroupTitle(gs.groupId),\r\n\t\t\t\t\tlastQueueState: this.retrieveFriendlyState(gs.groupSyncId),\r\n\t\t\t\t\tqueueable: this.groupSyncQueueable(gs.groupSyncId)\r\n\t\t\t\t})\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\tfinally\r\n\t\t{\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n }\r\n\r\n\tprivate async syncNow(groupSyncId: number): Promise {\r\n\t\ttry\r\n\t\t{\r\n\t\t\tif(!this.syncStateArray.find(g => g === groupSyncId))\r\n\t\t\t{\r\n\t\t\t\tthis.syncStateArray.push(groupSyncId);\r\n\t\t\t}\r\n\r\n\t\t\tawait api.queueGroupSync(groupSyncId);\r\n\r\n\t\t\tconst groupSync = this.groupSyncsForTable.firstOrDefault((g: GroupSyncModel) => g.groupSyncId === groupSyncId);\r\n\t\t\tif (groupSync) {\r\n\t\t\t\tgroupSync.lastQueueState = this.convertQueueStateToFriendlyText(GroupSyncQueueState.preQueued);\r\n\t\t\t\tgroupSync.enabled = false;\r\n\t\t\t}\r\n\r\n\t\t\tthis.isPollingState = true;\r\n\r\n\t\t\tawait this.pollGroupSyncState();\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}\r\n\r\n\tprivate async pollGroupSyncState(): Promise{\r\n\r\n\t\tif (!this.isPollingState){\r\n\t\t\tclearTimeout(this.statePoll)\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet currentState : SyncStateResponse = await api.RetrieveLatestQueueStateForGroupSync(this.syncStateArray[0]);\r\n\r\n\t\tthis.statePoll = setTimeout(() => {this.pollGroupSyncState()},1000);\r\n\r\n\t\tlet reloadGroupSyncs: boolean = false;\r\n\r\n\t\tconst groupSync = this.groupSyncsForTable.firstOrDefault((g: GroupSyncModel) => g.groupSyncId === currentState.groupSyncId);\r\n\t\tif (groupSync) {\r\n\t\t\tgroupSync.lastQueueState = this.convertQueueStateToFriendlyText(currentState.state);\r\n\t\t}\r\n\r\n\t\tif(!reloadGroupSyncs && currentState.state !== GroupSyncQueueState.preQueued\r\n\t\t\t&& currentState.state !== GroupSyncQueueState.queued\r\n\t\t\t&& currentState.state !== GroupSyncQueueState.processing) {\r\n\t\t\treloadGroupSyncs = true;\r\n\t\t\tthis.syncStateArray.remove(currentState.groupSyncId);\r\n\t\t}\r\n\r\n\t\tif(reloadGroupSyncs) {\r\n\t\t\tawait this.loadGroupSyncs();\r\n\r\n\t\t\tif (this.selectedGroupSyncId === currentState.groupSyncId) {\r\n\t\t\t\tthis.groupSyncQueue++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(this.syncStateArray?.length === 0)\r\n\t\t{\r\n\t\t\tclearTimeout(this.statePoll)\r\n\t\t\tthis.isPollingState = false;\r\n\t\t}\r\n\t}\r\n\r\n\tbeforeDestroy() : void {\r\n\t\tthis.isPollingState = false;\r\n\t\tclearTimeout(this.statePoll);\r\n\t\tthis.statePoll = null;\r\n\t}\r\n\r\n\tprivate setGroupSyncId(groupSyncId: number | null): void {\r\n\t\tthis.selectedGroupSyncId = groupSyncId;\r\n\t}\r\n\r\n\tprivate get groupSyncsForTable(): GroupSyncModel[] {\r\n\t\treturn this.selectedGroupSyncId ?\r\n\t\t\tthis.groupSyncs.filter(gs => gs.groupSyncId == this.selectedGroupSyncId)\r\n\t\t\t: this.groupSyncs;\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!./GroupSync.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GroupSync.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GroupSync.vue?vue&type=template&id=faa4c8f8\"\nimport script from \"./GroupSync.vue?vue&type=script&lang=ts\"\nexport * from \"./GroupSync.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GroupSync.vue?vue&type=style&index=0&id=faa4c8f8&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, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from 'vuex-class';\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { FeaturesList, UserPermissions } from '@/store/types';\r\nimport { get } from 'lodash';\r\nimport { DeviceTypeIdentifier, ServerDetails, ServerType, ServerModalStartTab, SyncSystem } from \"@/store/devices/types\";\r\nimport ChildDeviceTabWrapper from './tabs/ChildDeviceTabWrapper.vue';\r\nimport DeviceEdit from './editing/DeviceEdit.vue';\r\nimport GetConfig from './GetConfig.vue';\r\nimport DeviceAlarmSetup from '../setup/alarm-setup/DeviceAlarmSetup.vue';\r\nimport SyncEdit from './sync/SyncEdit.vue';\r\nimport GroupSync from './sync/GroupSync.vue';\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\nexport interface ServerModelDetails {\r\n\tinvalid: boolean;\r\n\tselectedServer: ServerDetails;\r\n}\r\n\r\nexport interface SyncModelDetails {\r\n\tinvalid: boolean;\r\n\tselectedSync: SyncSystem;\r\n}\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t\t\"child-device-tab-wrapper\": ChildDeviceTabWrapper,\r\n\t\t\"device-edit\": DeviceEdit,\r\n\t\t\"sync-edit\": SyncEdit,\r\n\t\t\"group-sync\": GroupSync,\r\n\t\t\"get-config\": GetConfig,\r\n\t\t\"device-alarm-setup\": DeviceAlarmSetup\r\n\t}\r\n})\r\nexport default class ServerModal extends Vue {\r\n\t@Devices.State private currentServer: ServerDetails;\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\t@Devices.State private serverModalOpened: boolean;\r\n\t@Devices.State private serverModalStartTab: ServerModalStartTab;\r\n\t@Devices.State private syncSystems: SyncSystem[];\r\n\r\n\t@Devices.Mutation private setCurrentServer: (server: ServerDetails) => void;\r\n\t@Devices.Mutation setServerModalVisible: (IsVisible: boolean) => void;\r\n\r\n\t@Devices.Action private updateServer: (server: ServerDetails) => Promise;\r\n\t@Devices.Action private addServer: (server: ServerDetails) => Promise;\r\n\t@Devices.Action private addOrUpdateSyncSystem: (sync: SyncSystem) => Promise;\r\n\t@Getter private getFeaturesList: FeaturesList;\r\n\t@Getter getPermissions: UserPermissions;\r\n\r\n\tprivate baseChildDeviceTypeIds: number[] = [];\r\n\tprivate tabIndex: number = 0;\r\n\tprivate serverModelDetails: ServerModelDetails = { invalid: true, selectedServer: null };\r\n\tprivate syncModelDetails: SyncModelDetails = { invalid: true, selectedSync: null };\r\n\r\n\t@Watch(\"serverModalOpened\")\r\n\tprivate setStartTab(open: boolean): void {\r\n\t\tif (!open) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.serverModalStartTab == ServerModalStartTab.Server)\r\n\t\t{\r\n\t\t\tif(this.currentServer && this.currentServer.syncSystemId){\r\n\t\t\t\tthis.tabIndex = 2;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.tabIndex = 0\r\n\t\t}\r\n\t\telse if (this.serverModalStartTab == ServerModalStartTab.Sync)\r\n\t\t{\r\n\t\t\tthis.tabIndex = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get deviceInfoTabIndex(): number {\r\n\t\tif (this.syncSetupEnabled && this.currentServer && (this.currentServer.syncSystemId == -1 || this.currentServer.syncSystemId > 0)){\r\n\t\t\treturn 2;\r\n\t\t}\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tprivate async created(): Promise{\r\n\t\tthis.addChildDeviceTypes();\r\n\t}\r\n\r\n private get isEditingServer(): boolean {\r\n\t\treturn this.currentServer && this.currentServer.serverID > 0;\r\n\t}\r\n\r\n private get modalTitle(): string {\r\n\t\tif (this.isEditingServer) {\r\n\t\t\treturn `${this.currentServer.readonly ? \"Viewing\" : \"Editing\"} ${this.currentServer.title}`;\r\n\t\t}\r\n\r\n\t\treturn \"Create new \" + (this.serverModalStartTab == ServerModalStartTab.Sync ? \"Sync\" : \"Device\");\r\n\t}\r\n\r\n\tprivate get modalIcon(): string {\r\n\t\tvar iconClass = \"fa-edit\"\r\n\t\tif (this.isEditingServer && this.currentServer && this.currentServer.readonly) {\r\n\t\t\ticonClass = \"fa-eye\"\r\n\t\t}\r\n\r\n\t\treturn \"fas mr-1 \" + iconClass;\r\n\t}\r\n\r\n private handleEditModalCloseClick(): void {\r\n\t\tthis.setServerModalVisible(false);\r\n\t\tthis.setCurrentServer(null);\r\n\t}\r\n\r\n private addChildDeviceTypes(): void {\r\n\t\tfor (let deviceTypeIdentifier in DeviceTypeIdentifier) {\r\n\t\t\tconst id = Number(deviceTypeIdentifier);\r\n\r\n\t\t\tif (!isNaN(id)) {\r\n\t\t\t\tthis.baseChildDeviceTypeIds.push(id);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n private get childDeviceTypeIds(): number[] {\r\n\t\tif (this.isEditingServer) {\r\n\t\t\treturn this.baseChildDeviceTypeIds;\r\n\t\t}\r\n\r\n\t\treturn [];\r\n\t}\r\n\r\n\tprivate handleServerModelDetailsChanged(serverModelDetails: ServerModelDetails): void {\r\n\t\tthis.serverModelDetails = serverModelDetails;\r\n\t}\r\n\r\n\tprivate syncDetailsChanged(syncModelDetails: SyncModelDetails): void {\r\n\t\tthis.syncModelDetails = syncModelDetails;\r\n\t}\r\n\r\n\tprivate async handleServerSaveClick(): Promise {\r\n\t\tif (this.serverModelDetails.selectedServer.serverID) {\r\n\t\t\tlet selectedServer = this.serverModelDetails.selectedServer;\r\n\t\t\tselectedServer.extraValue = this.extraValue;\r\n\t\t\tawait this.updateServer(selectedServer);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.addServer(this.serverModelDetails.selectedServer);\r\n\t}\r\n\r\n\tprivate async handleSyncSaveClick(): Promise {\r\n\t\tif(!this.syncModelDetails){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tawait this.addOrUpdateSyncSystem(this.syncModelDetails.selectedSync)\r\n\t}\r\n\r\n\tprivate get deviceTabIndex(): number {\r\n\t\treturn this.tabIndex\r\n\t\t\t- (this.showGetConfig ? 1 : 0)\r\n\t\t\t- ((this.syncSetupEnabled && this.currentServer && this.currentServer.syncSystemId > 0 ? 2 : 0));\r\n\t}\r\n\r\n\tprivate get isGetConfigInDevicesEnabled(): boolean {\r\n\t\treturn get(this.getFeaturesList, [\"Devices\", \"ShowGetConfig\"]);\r\n\t}\r\n\r\n\tprivate get showGetConfig(): boolean {\r\n\t\treturn (this.serverModelDetails != null && this.serverModelDetails.selectedServer != null && this.selectedServerType != null &&\r\n\t\t this.selectedServerType.canGetConfig && this.currentServer && !this.currentServer.syncSystemId && this.isGetConfigInDevicesEnabled);\r\n\t}\r\n\r\n\tprivate get isGetConfigDisabled(): boolean {\r\n\t\treturn (this.serverModelDetails.selectedServer == null || this.serverModelDetails.selectedServer.serverID == null || this.serverModelDetails.selectedServer.serverID == 0);\r\n\t}\r\n\r\n\tprivate get getConfigTooltipText(): string {\r\n\t\treturn this.isGetConfigDisabled ? \"Please click save to create the server before getting config\" : \"\";\r\n\t}\r\n\r\n\tprivate get selectedServerType(): ServerType {\r\n\t\treturn this.serverTypes.find(st => st.serverTypeID === this.serverModelDetails.selectedServer?.serverTypeID);\r\n\t}\r\n\r\n\tpublic get extraValue(): string {\r\n\t\tif (this.currentServer) {\r\n\t\t\treturn this.currentServer.extraValue;\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate get allowsAlarms(): boolean {\r\n\t\tconst serverType: ServerType = this.serverTypes.find(\r\n\t\t\t\tst => st.serverTypeID === this.currentServer.serverTypeID\r\n\t\t\t);\r\n\t\treturn serverType && serverType.numAlarmInputs !== 0;\r\n\t}\r\n\r\n\tprivate get getAlarmTitleText(): string {\r\n\t\tlet text = \"\";\r\n\t\tif (!this.allowsAlarms) {\r\n\t\t\ttext = `Alarms are not supported on this device`;\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tprivate get alarmCount(): number {\r\n\t\tlet aCount = 0;\r\n\t\tif (this.currentServer != null && this.currentServer.deviceTypeCounts != null && this.currentServer.deviceTypeCounts.alarms != null) {\r\n\t\t\taCount = this.currentServer.deviceTypeCounts.alarms;\r\n\t\t}\r\n\r\n\t\treturn aCount;\r\n\t}\r\n\r\n\tprivate get selectedServerId(): number {\r\n\t\tlet id = 0;\r\n\t\tif (this.currentServer != null) {\r\n\t\t\tid = this.currentServer.serverID;\r\n\t\t}\r\n\r\n\t\treturn id;\r\n\t}\r\n\r\n\tprivate get syncSetupEnabled(): boolean {\r\n\t\treturn get(this.getFeaturesList, [\"Devices\", \"AdvancedSetup\", \"SyncSystem\"]);\r\n\t}\r\n\r\n\tprivate get syncIsSuiteSync(): boolean {\r\n\t\tconst linkedSyncSystem = this.syncSystems.firstOrDefault(ss => ss.serverId == this.selectedServerId);\r\n\r\n\t\tif (linkedSyncSystem == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn linkedSyncSystem.isSuiteSync;\r\n\t}\r\n\r\n\tprivate get syncIsDeviceSync(): boolean {\r\n\t\tconst linkedSyncSystem = this.syncSystems.firstOrDefault(ss => ss.serverId == this.selectedServerId);\r\n\r\n\t\tif (linkedSyncSystem == null) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn linkedSyncSystem.isDeviceSync;\r\n\t}\r\n\r\n\tprivate get isSuiteSyncEnabled(): boolean {\r\n\t\treturn get(this.getFeaturesList, [\"Suite\", \"SuiteSync\"]);\r\n\t}\r\n\r\n\tprivate get userCanConfigureSuiteSync(): boolean {\r\n\t\treturn this.getPermissions.canConfigureSuiteSync;\r\n\t}\r\n\r\n\tprivate get userCanSaveSync(): boolean {\r\n\t\tif (this.isSuiteSyncEnabled && this.syncIsSuiteSync) {\r\n\t\t\treturn this.userCanConfigureSuiteSync && !this.syncModelDetails.invalid;\r\n\t\t}\r\n\r\n\t\treturn !this.syncModelDetails.invalid;\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!./ServerModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ServerModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ServerModal.vue?vue&type=template&id=f2d4cff6&scoped=true\"\nimport script from \"./ServerModal.vue?vue&type=script&lang=ts\"\nexport * from \"./ServerModal.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ServerModal.vue?vue&type=style&index=0&id=f2d4cff6&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 \"f2d4cff6\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Getter, namespace, State } from \"vuex-class\";\r\nimport { get } from \"lodash\";\r\nimport { NotificationOptions } from \"vue-notification\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { DeviceTypeCounts, DeviceTypeIdentifier, DeviceDetails, SyncSystem } from \"@/store/devices/types\";\r\nimport CameraPreview from \"@/components/device-setup/CameraPreview.vue\";\r\nimport ChildDeviceTabWrapper from \"@/components/device-setup/tabs/ChildDeviceTabWrapper.vue\";\r\nimport ChildDeviceEdit from \"@/components/device-setup/editing/ChildDeviceEdit.vue\";\r\nimport DeleteChildDeviceModal from \"@/components/device-setup/confirmation-modals/DeleteChildDeviceModal.vue\";\r\nimport DeviceTable from \"@/components/device-setup/tables/DeviceTable.vue\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport DeviceAlarmSetup from '@/components/setup/alarm-setup/DeviceAlarmSetup.vue';\r\nimport SyncTable from '@/components/device-setup/sync/SyncTable.vue';\r\nimport ServerModal from '@/components/device-setup/ServerModal.vue';\r\nimport OpsLinks from '@/components/OpsLinks.vue';\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"camera-preview\": CameraPreview,\r\n\t\t\"child-device-tab-wrapper\": ChildDeviceTabWrapper,\r\n\t\t\"child-device-edit\": ChildDeviceEdit,\r\n\t\t\"delete-child-device-modal\": DeleteChildDeviceModal,\r\n\t\t\"device-table\": DeviceTable,\r\n\t\t\"sync-table\": SyncTable,\r\n\t\t\"server-modal\": ServerModal,\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"device-alarm-setup\": DeviceAlarmSetup,\r\n\t\t\"ops-links\": OpsLinks\r\n\t}\r\n})\r\nexport default class DeviceSetup extends Vue {\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\r\n\t@Devices.Action private getDeviceTypeCounts: (serverId: number | null) => Promise;\r\n\t@Devices.Action private fetchSyncSystemCount: () => Promise\r\n\r\n\t@Devices.Mutation(\"resetState\") private resetDevicesState: () => void;\r\n\t@Devices.Mutation(\"setNotificationOptions\") private setNotificationOptions: (\r\n\t\tnotificationOptions: NotificationOptions\r\n\t) => void;\r\n\t@Devices.Mutation private setCameraPreviewModalVisibility: (visible: boolean) => void;\r\n\r\n\t@Devices.State private device: DeviceDetails;\r\n\t@Devices.State private cameraPreviewModalVisible: boolean;\r\n\t@Devices.State private deviceTypeCounts: DeviceTypeCounts;\r\n\t@Devices.State private editChildDeviceModalVisible: boolean;\r\n\t@Devices.State private notificationOptions: NotificationOptions;\r\n\t@Devices.State private syncSystems: SyncSystem[];\r\n\t@Devices.State private totalSyncSystems: number;\r\n\t@State private featuresList: FeaturesList;\r\n\r\n\tprivate childDeviceTypeIds: number[] = [];\r\n\tprivate tabIndex: number = 1;\r\n\tprivate rerenderKey: number = 0;\r\n\r\n\tprivate async created(): Promise {\r\n\t\tthis.addChildDeviceTypes();\r\n\t\tthis.resetDevicesState();\r\n\t\tawait this.fetchSyncSystemCount();\r\n\t\tawait this.getDeviceTypeCounts(null);\r\n\t}\r\n\r\n\tprivate addChildDeviceTypes(): void {\r\n\t\tfor (let deviceTypeIdentifier in DeviceTypeIdentifier) {\r\n\t\t\tconst id = Number(deviceTypeIdentifier);\r\n\r\n\t\t\tif (!isNaN(id)) {\r\n\t\t\t\tthis.childDeviceTypeIds.push(id);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get canViewDeviceSetup(): boolean {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"Devices\"]) &&\r\n\t\t\t(this.permissions.isSystemAdmin || this.permissions.isAccountAdmin ||\r\n\t\t\tthis.permissions.canEditSiteSetup || this.permissions.canViewSiteSetup)\r\n\t\t);\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\t@Watch(\"notificationOptions\")\r\n\tprivate notify(notificationOptions: NotificationOptions): void {\r\n\t\tif (!notificationOptions) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.$notify(notificationOptions);\r\n\t\tthis.setNotificationOptions(null);\r\n\t}\r\n\r\n\tprivate handleCameraPreviewHidden(): void {\r\n\t\tthis.setCameraPreviewModalVisibility(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!./DeviceSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeviceSetup.vue?vue&type=template&id=8474dc88&scoped=true\"\nimport script from \"./DeviceSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./DeviceSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeviceSetup.vue?vue&type=style&index=0&id=8474dc88&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 \"8474dc88\",\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!./DeviceTable.vue?vue&type=style&index=0&id=499a449f&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!./GroupSync.vue?vue&type=style&index=0&id=faa4c8f8&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!./GroupSyncHistory.vue?vue&type=style&index=0&id=6bd95f55&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!./ChildDeviceEdit.vue?vue&type=style&index=0&id=39590dd1&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!./SyncEdit.vue?vue&type=style&index=0&id=4577ec9a&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!./ServerModal.vue?vue&type=style&index=0&id=f2d4cff6&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!./DeviceAlarmSetup.vue?vue&type=style&index=0&id=b1ea4426&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!./DeviceSetup.vue?vue&type=style&index=0&id=8474dc88&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!./ChildDeviceTable.vue?vue&type=style&index=0&id=6fc53811&prod&lang=scss&scoped=true\""],"sourceRoot":""}