{"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/sync/SyncEdit.vue?1bb6","webpack:///./src/components/setup/alarm-setup/DeviceAlarmSetup.vue?b48d","webpack:///./src/components/device-setup/tables/DeviceTable.vue?adaf","webpack:///./src/components/device-setup/GetConfig.vue?1aa0","webpack:///./src/views/DeviceSetup.vue?5000","webpack:///./src/components/device-setup/tabs/ChildDeviceTabWrapper.vue?b303","webpack:///./src/components/device-setup/tables/ChildDeviceTable.vue?3561","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?4a55","webpack:///./src/components/device-setup/editing/AudioEdit.vue?5eff","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?30e8","webpack:///./src/components/device-setup/editing/PresetEdit.vue?5592","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?5447","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?158e","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?ddaa","webpack:///./src/components/device-setup/confirmation-modals/DeleteDeviceModal.vue?d838","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?e796","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?c2c9","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?a71e","webpack:///./src/components/device-setup/editing/DeviceEdit.vue?bbaf","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?6cc1","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?4879","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?bff4","webpack:///./src/components/device-setup/sync/GroupSyncHistory.vue?6381","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/ServerModal.vue?a9b9","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/views/DeviceSetup.vue?6fac","webpack:///./src/components/device-setup/tables/ChildDeviceTable.vue?0222"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","model","value","callback","$$v","tabIndex","expression","scopedSlots","_u","key","fn","_v","_s","totalSyncSystems","proxy","_e","deviceTypeCounts","devices","syncSetupEnabled","_l","childDeviceTypeId","alarms","deviceId","device","deviceID","title","on","handleCameraPreviewHidden","staticRenderFns","allowsDevices","tabLoaded","$event","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","DeviceTable","openModal","totalRecords","updateTable","responses","visibleFields","_f","groupTitle","grouping","readOnly","retrieveAutomationBadges","responseActions","objectID","description","deviceTitle","showModal","selectedResponse","modalTitle","deleteMode","deleteAlarm","responseInvalid","putAlarm","responseTitle","sl","responseID","inModal","serverTypeEvents","ste","eventNum","v","substring","responseScripts","maxNumInputValue","priority","alarmGroupingOptions","yesNoNotSet","ah","showAutomations","responseActionInput","maskDurationLimit","selectedResponseActions","responseActionEdited","keySort","showLinkedCamerasInModal","showMaskDurationLimit","storedResponse","r","serverTypeEventNum","script","autoHandle","linkedCameras","canViewAutomations","canEditAutomations","getResponseScripts","updateResponses","columns","response","scriptID","scriptTitle","selectedServerId","result","createDeviceResponse","updateResponse","updateResponseActions","responseId","newResponseActions","oldResponseActions","i","newAutomation","responseActionID","createAlarmAutomation","oldAutomation","updated","responseActionTypeID","settingsMeta","updateAlarmAutomation","deleteAlarmAutomation","deleteResponse","loadServerTypes","loadServerEventTypes","unshift","generateNewPaginatedSearchRequest","isEmailAlarms","getResponses","responseData","rs","ag","getAlarmAutomations","then","res","serverIdWatch","newServerId","oldServerId","c","input","DeviceAlarmSetup","CameraSelect","ResponseActionSetup","filters","truncateString","maxLength","validateRange","_maxValue","_minValue","PaginatedSearch","AutomationMixin","handleAddSync","syncsToDisplay","confirmDelete","selectedSync","closeDeleteModal","serverTypeId","getSyncSystems","fetchSyncSystems","syncSystems","ss","sync","getServerForSync","syncSystem","retrieveServer","openServerModal","Sync","deleteSyncSystem","SyncTable","modalIcon","handleEditModalCloseClick","deviceInfoTabIndex","userCanSaveSync","handleSyncSaveClick","serverModelDetails","handleServerSaveClick","isSuiteSyncEnabled","syncIsSuiteSync","userCanConfigureSuiteSync","syncDetailsChanged","handleServerModelDetailsChanged","showGetConfig","isGetConfigDisabled","getConfigTooltipText","syncIsDeviceSync","deviceTabIndex","isEditingServer","allowsAlarms","getAlarmTitleText","alarmCount","group","areaSelectComponentLoaded","sortedServerTypes","isApplianceEnabled","serverTypeIsAlarmPanel","isApplianceOnly","isApplianceSelected","extraValueLabel","extraValuePlaceholder","updateExtraValue","handleAlarmGroupingSelected","alarmGrouping","serverLineProfiles","serverLineProfile","serverLineProfileId","AlarmGroupingNone","AlarmGroupingResponse","AlarmGroupingDefault","deviceEditLoaded","areaSelectLoaded","setAlarmGroupingOption","ev","setExtraValue","onComponentLoaded","newValue","oldValue","$emit","handleServerDetailsChanged","selectedServerType","extraValueName","isAlarmPanel","applianceId","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","values","startIndex","totalWillbeReached","endIndex","camerasWithSelect","newCamera","hasPtz","referenceImage","features","latLong","prototype","apply","alarmsWithSelect","newAlarm","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","GetConfig","linkedSystemTitle","isReadOnlyForm","selectedSyncSystem","userCanConfigureDeviceSync","UserManagement","defaultSyncSystem","storedSyncSystem","settingSync","tenantId","getUserTenantGroupId","isSuiteSync","isDeviceSync","linkedSyncSystemId","linkedSyncSystemTitle","handleSyncDetailsChanged","fetchPermissionsState","getPermissions","canConfigureSuiteSync","canConfigureDeviceSync","isLinkedSystem","SyncEdit","storeSync","propFromSelectedSync","propFromStoreSync","setGroupSyncId","groupSyncsForTable","modalItems","addOrUpdateGroupSync","deleteGroupSync","selectedGroupSyncId","slotProps","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","order","sortOrder","sortOrderReversed","searchable","isTermLabel","useCustomCell","width","retrieveGroupSyncQueue","onGroupSyncCompletedKeyChanged","retrieveQueueAudit","syncQueueForGroupSync","gsq","newQueueId","oldQueueId","auditTrailForGroupSyncQueue","friendlyStateText","state","preQueued","queued","processing","failed","processed","partialProcessed","noData","queueItem","lastUpdated","paginatedSearchQueryParams","GroupSyncHistory","isPollingState","statePoll","syncStateArray","isLoadingStates","groupSyncs","lastQueueStates","props","reduce","area","clearable","placeholder","min","defaultValue","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","fetchSyncSystemCount","canViewSiteSetup","notify","notificationOptions","setNotificationOptions","DeviceSetup","CameraPreview","NavHeader"],"mappings":"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","file":"js/chunk-38dfc494.9bae6fc0.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--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=57bf3df5&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!./DeviceAlarmSetup.vue?vue&type=style&index=0&id=49218571&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!./DeviceTable.vue?vue&type=style&index=0&id=b1e117b2&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\":\"\"},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',{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',{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 } 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\t\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","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.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=b1e117b2&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=b1e117b2&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 \"b1e117b2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"data-cy\":\"alarm-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)}},model:{value:(_vm.searchTermPersisted),callback:function ($$v) {_vm.searchTermPersisted=$$v},expression:\"searchTermPersisted\"}})],1),(!_vm.readonly)?_c('b-col',{attrs:{\"cols\":\"auto\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"add-button\"},on:{\"click\":function($event){return _vm.openModal(null)}}},[_vm._v(\"Add Alarm\")])],1):_vm._e()],1),(_vm.totalRecords !== 0 && !_vm.isLoading)?_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',{key:_vm.updateTable,attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"items\":_vm.responses,\"fields\":_vm.visibleFields,\"hover\":\"\",\"head-variant\":\"dark\",\"busy\":_vm.isLoading,\"no-local-sorting\":true,\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc},on:{\"sort-changed\":_vm.onSortChange},scopedSlots:_vm._u([{key:\"cell(linkedCameras)\",fn:function(row){return _vm._l((row.item.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:\"cell(grouping)\",fn:function(row){return [_vm._v(\" \"+_vm._s(row.item.grouping.title)+\" \")]}},{key:\"cell(actions)\",fn:function(row){return [(!_vm.readonly && !row.item.readOnly)?_c('span',[_c('i',{staticClass:\"fas fa-edit hover-icon\",attrs:{\"title\":\"Edit\",\"data-cy\":\"edit-button\"},on:{\"click\":function($event){return _vm.openModal(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.openModal(row.item, true)}}})]):_vm._e()]}},{key:\"cell(responseActions)\",fn:function(row){return _vm._l((_vm.retrieveAutomationBadges(row.item.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)))])])})}}])}),_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}])})],1),_c('b-pagination',{staticClass:\"pagination\",attrs:{\"total-rows\":_vm.totalRecords,\"per-page\":_vm.recordsPageSize,\"align\":\"center\",\"data-cy\":\"pagination\",\"disabled\":_vm.totalRecords < _vm.recordsPageSize},on:{\"input\":_vm.onPageClick},model:{value:(_vm.recordsPage),callback:function ($$v) {_vm.recordsPage=$$v},expression:\"recordsPage\"}}),_c('b-modal',{attrs:{\"v-if\":_vm.showModal && _vm.selectedResponse,\"visible\":_vm.showModal,\"size\":\"lg\",\"static\":\"\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"centered\":\"\",\"title\":_vm.modalTitle,\"data-cy\":\"edit-alarm-modal\",\"header-class\":_vm.deleteMode ? 'delete-confirm-modal' : ''},on:{\"hidden\":function($event){return _vm.handleModalHidden()}},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [(_vm.deleteMode)?_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"delete-button\"},on:{\"click\":function($event){return _vm.deleteAlarm()}}},[_vm._v(\" Delete \")]):(_vm.selectedResponse && !_vm.selectedResponse.readOnly && !_vm.readonly)?_c('b-button',{attrs:{\"variant\":\"primary\",\"disabled\":_vm.responseInvalid,\"data-cy\":\"save-button\"},on:{\"click\":function($event){return _vm.putAlarm()}}},[_vm._v(\" Save \")]):_vm._e(),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"close-button\"},on:{\"click\":function($event){return _vm.handleModalHidden()}}},[_vm._v(\" Close \")])]},proxy:true}])},[(_vm.deleteMode)?_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('h3',[_vm._v(\"Delete \"+_vm._s(_vm.responseTitle))])])]):_vm._e(),(_vm.deleteMode)?_c('h5',{staticClass:\"w-100\"},[_vm._v(\" Are you sure you want to delete the alarm \"),_c('strong',[_vm._v(\"\\\"\"+_vm._s(_vm.responseTitle)+\"\\\"?\")])]):_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\"},[(_vm.showModal && _vm.selectedResponse && !_vm.selectedResponse.deleteMode)?_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(\"*\")])]),_c('v-select-3',{attrs:{\"options\":_vm.serversList,\"placeholder\":\"Search\",\"label\":\"title\",\"reduce\":function (sl) { return sl.serverID; },\"filterable\":false,\"appendToBody\":\"\",\"data-cy\":\"server-select\",\"disabled\":_vm.selectedResponse.readOnly || _vm.readonly || (!_vm.selectedResponse.responseID && _vm.inModal)},model:{value:(_vm.selectedResponse.serverID),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"serverID\", $$v)},expression:\"selectedResponse.serverID\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no devices were found.\")])])],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:{\"data-cy\":\"area-select\",\"reduce\":function (a) { return a.id; },\"append-to-body\":\"\",\"clearable\":false},model:{value:(_vm.selectedResponse.groupID),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"groupID\", $$v)},expression:\"selectedResponse.groupID\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"eventType\",\"label-cols-sm\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Event Type: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('v-select-3',{attrs:{\"id\":\"eventType\",\"options\":_vm.serverTypeEvents,\"placeholder\":\"Select an event type\",\"label\":\"title\",\"reduce\":function (ste) { return ste.eventNum; },\"appendToBody\":\"\",\"data-cy\":\"event-type-select\"},model:{value:(_vm.selectedResponse.serverTypeEventNum),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"serverTypeEventNum\", $$v)},expression:\"selectedResponse.serverTypeEventNum\"}})],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\",\"formatter\":function (v) { return !v ? v : v.substring(0,250); }},model:{value:(_vm.selectedResponse.title),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"title\", $$v)},expression:\"selectedResponse.title\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Action Plan:\",\"label-for\":\"actionPlan\",\"label-cols-sm\":\"2\"}},[_c('v-select-3',{attrs:{\"id\":\"actionPlan\",\"options\":_vm.responseScripts,\"placeholder\":\"Select an action plan\",\"label\":\"title\",\"appendToBody\":\"\",\"data-cy\":\"action-plan-select\"},model:{value:(_vm.selectedResponse.script),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"script\", $$v)},expression:\"selectedResponse.script\"}})],1)],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.selectedResponse.input1),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"input1\", $$v)},expression:\"selectedResponse.input1\"}}),(this.$v.selectedResponse.input1.$invalid)?_c('small',{staticClass:\"text-danger\"},[_vm._v(\"* value must be between -1 and \"+_vm._s(this.maxNumInputValue))]):_vm._e()],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"input-2\",\"label-cols-sm\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Input 2: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('b-form-input',{attrs:{\"id\":\"input-2\",\"placeholder\":\"Input 2\",\"type\":\"number\"},model:{value:(_vm.selectedResponse.input2),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"input2\", $$v)},expression:\"selectedResponse.input2\"}}),(this.$v.selectedResponse.input2.$invalid)?_c('small',{staticClass:\"text-danger\"},[_vm._v(\"* value must be between -1 and \"+_vm._s(this.maxNumInputValue))]):_vm._e()],2)],1),_c('b-col',[_c('b-form-group',{attrs:{\"label\":\"Extra value: \",\"label-for\":\"extra-value\",\"label-cols-sm\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"extra-value\",\"placeholder\":\"Extra value\",\"formatter\":function (v) { return !v ? v : v.substring(0,100); }},model:{value:(_vm.selectedResponse.extraValue),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"extraValue\", $$v)},expression:\"selectedResponse.extraValue\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Priority: \",\"label-for\":\"priority\",\"label-cols-sm\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"priority\",\"placeholder\":\"Enter the alarm priority\",\"type\":\"number\",\"min\":0,\"max\":_vm.maxNumInputValue},model:{value:(_vm.selectedResponse.priority),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"priority\", $$v)},expression:\"selectedResponse.priority\"}}),(this.$v.selectedResponse.priority.$invalid)?_c('small',{staticClass:\"text-danger\"},[_vm._v(\"* value must be between 0 and \"+_vm._s(this.maxNumInputValue))]):_vm._e()],1)],1),(_vm.showLinkedCamerasInModal)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Linked Cameras:\",\"label-for\":\"linkedCameras\",\"label-cols-sm\":\"2\"}},[_c('camera-select',{attrs:{\"id\":\"linkedCameras\",\"data-cy\":\"camera-select\",\"multiple\":\"\"},model:{value:(_vm.selectedResponse.linkedCameras),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"linkedCameras\", $$v)},expression:\"selectedResponse.linkedCameras\"}})],1)],1):_vm._e(),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"grouping\",\"label-cols-sm\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Grouping: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('v-select-3',{attrs:{\"id\":\"grouping\",\"options\":_vm.alarmGroupingOptions,\"placeholder\":\"Select an alarm grouping\",\"label\":\"title\",\"appendToBody\":\"\",\"data-cy\":\"grouping-select\"},model:{value:(_vm.selectedResponse.grouping),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"grouping\", $$v)},expression:\"selectedResponse.grouping\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"autoHandle\",\"label-cols-sm\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Auto Handle: \")]),_c('v-select-3',{attrs:{\"id\":\"autoHandle\",\"options\":_vm.yesNoNotSet,\"placeholder\":\"Select an auto handle setting\",\"label\":\"title\",\"reduce\":function (ah) { return ah.value; },\"appendToBody\":\"\",\"data-cy\":\"auto-handle-select\"},model:{value:(_vm.selectedResponse.autoHandle),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"autoHandle\", $$v)},expression:\"selectedResponse.autoHandle\"}})],2)],1),(_vm.showAutomations && this.selectedResponse.responseID > 0)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"autoHandle\",\"label-cols-sm\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Automations: \")])],2),_c('response-action-setup',{attrs:{\"value\":_vm.selectedResponse.responseActions,\"groupID\":_vm.selectedResponse.groupID},on:{\"input\":_vm.responseActionInput}})],1):_vm._e(),(_vm.showMaskDurationLimit)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Max Mask Duration (minutes): \",\"label-for\":\"maskDurationLimit\",\"label-cols-sm\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"maskDurationLimit\",\"placeholder\":\"Enter the Max Mask Duration\",\"type\":\"number\"},model:{value:(_vm.selectedResponse.maskDurationLimit),callback:function ($$v) {_vm.$set(_vm.selectedResponse, \"maskDurationLimit\", $$v)},expression:\"selectedResponse.maskDurationLimit\"}}),(this.$v.selectedResponse.maskDurationLimit.$invalid)?_c('small',{staticClass:\"text-danger\"},[_vm._v(\"* value must be between 0 and \"+_vm._s(this.maxNumInputValue))]):_vm._e()],1)],1):_vm._e()],1):_vm._e()],1)],2)],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 { debounce, clone, cloneDeep } from \"lodash\";\r\n\r\nimport { FeaturesList, PaginatedSearchQueryParams, UserPermissions, VueBootstrapField, VueBootstrapFieldTableSortEvent, VueBootstrapFieldEx } 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\n\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 { maxValue, minValue, required, maxLength } from \"vuelidate/lib/validators\";\r\nimport { getDebouncePeriod } from '@/utils/debounce-helper';\r\nimport { get } from \"lodash\";\r\nimport ResponseActionSetup from './ResponseActionSetup.vue';\r\nimport { ResponseAction } from \"@/store/response-actions/types\";\r\nimport isEqual from 'lodash.isequal';\r\n\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\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\tResponseActionSetup\r\n\t},\r\n\tfilters: {\r\n truncateString\r\n },\r\n validations: {\r\n selectedResponse: {\r\n serverID: { required, minValue: minValue(1) },\r\n title: { required, maxLength: maxLength(250) },\r\n serverTypeEventNum: { required },\r\n input1: { required, minValue: minValue(-1), maxValue: maxValue(2147483647) },\r\n input2: { required, minValue: minValue(-1), maxValue: maxValue(2147483647) },\r\n priority: { minValue: minValue(0), maxValue: maxValue(2147483647) },\r\n grouping: { required },\r\n groupID: { required, minValue: minValue(1) },\r\n maskDurationLimit: { validateRange: function(){\r\n\t if (this.selectedResponse.maskDurationLimit == null || !this.showMaskDurationLimit) {\r\n\t\t return true;\r\n\t }\r\n\r\n\t var _maxValue: number = 2147483647;\r\n\t var _minValue: number = 0;\r\n\r\n\t return Number(this.selectedResponse.maskDurationLimit) <= _maxValue && Number(this.selectedResponse.maskDurationLimit) >= _minValue;\r\n }}\r\n }\r\n }\r\n})\r\nexport default class DeviceAlarmSetup extends Mixins(PaginatedSearch, validationMixin, AutomationMixin) {\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 })\r\n private inModal: number;\r\n\r\n\t@Getter(\"getPermissions\")\r\n private permissions: UserPermissions;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\r\n\t@Devices.State(\"serversList\")\r\n private serversList: ServerDetails[];\r\n\r\n\tprivate totalRecords: number = 0;\r\n\tprivate isLoading: 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 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 private showModal: boolean = false;\r\n\tprivate updateTable: number = 0;\r\n private responseActionEdited: boolean = false;\r\n\r\n\t/**\r\n\t*\t@returns Table columns\r\n\t*/\r\n\tprivate get columns(): VueBootstrapFieldEx[] {\r\n\t\treturn [\r\n\t\t\t{\r\n\t\t\t\tlabel: \"Alarm Name\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\tsortable: true,\r\n keySort: \"title\",\r\n\t\t\t\tvisible: true\r\n\t\t\t},\r\n {\r\n\t\t\t\tlabel: \"Device\",\r\n key: \"deviceTitle\",\r\n sortable: true,\r\n keySort: \"Server\",\r\n\t\t\t\tvisible: true\r\n\t\t\t},\r\n {\r\n label: \"Area\",\r\n key: \"groupTitle\",\r\n\t\t\t\tsortable: true,\r\n keySort: \"Area\",\r\n\t\t\t\tvisible: true\r\n },\r\n {\r\n label :\"Action Plan\",\r\n key:\"scriptTitle\",\r\n\t\t\t\tsortable: true,\r\n keySort: \"ActionPlan\",\r\n\t\t\t\tvisible: true\r\n },\r\n {\r\n label : \"Input 1\",\r\n key:\"input1\",\r\n\t\t\t\tsortable: true,\r\n keySort: \"input1\",\r\n\t\t\t\tvisible: true\r\n },\r\n {\r\n label : \"Input 2\",\r\n key:\"input2\",\r\n\t\t\t\tsortable: true,\r\n keySort: \"input2\",\r\n\t\t\t\tvisible: true\r\n },\r\n {\r\n label : \"Extra Value\",\r\n key:\"extraValue\",\r\n\t\t\t\tsortable: true,\r\n keySort: \"extraValue\",\r\n\t\t\t\tvisible: true\r\n },\r\n\t\t\t{\r\n\t\t\t\tlabel: \"Priority\",\r\n\t\t\t\tkey: \"priority\",\r\n\t\t\t\tsortable: true,\r\n keySort: \"priority\",\r\n\t\t\t\tvisible: true\r\n\t\t\t},\r\n {\r\n label :\"Grouping\",\r\n key:\"grouping\",\r\n\t\t\t\tsortable: true,\r\n keySort: \"grouping\",\r\n\t\t\t\tvisible: true\r\n },\r\n {\r\n label: \"Linked Camera\",\r\n key: \"linkedCameras\",\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tvisible: this.showLinkedCamerasInModal,\r\n },\r\n {\r\n label: \"Automations\",\r\n key: \"responseActions\",\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tvisible: this.showAutomations,\r\n },\r\n {\r\n\t\t\t\tkey: \"maskDurationLimit\",\r\n\t\t\t\tlabel: \"Max Mask Duration (minutes)\",\r\n\t\t\t\tsortable: false,\r\n visible: this.showMaskDurationLimit\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tkey: \"actions\",\r\n\t\t\t\tlabel: \"Actions\",\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tclass: \"text-center\",\r\n\t\t\t\tvisible: !this.readonly // ToDo: Is this enough for restricting actions?\r\n\t\t\t},\r\n\t\t];\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 private get responseInvalid(): boolean {\r\n let invalid = this.$v.selectedResponse.$invalid\r\n if (invalid) {\r\n return invalid\r\n }\r\n\r\n if (!this.selectedResponse)\r\n {\r\n return false;\r\n }\r\n\r\n const storedResponse = this.responses.find(r => r.responseID == this.selectedResponse.responseID)\r\n if (!storedResponse)\r\n {\r\n return false;\r\n }\r\n\r\n return (\r\n this.selectedResponse &&\r\n this.selectedResponse.title == storedResponse.title &&\r\n this.selectedResponse.serverID == storedResponse.serverID &&\r\n this.selectedResponse.input1 == storedResponse.input1 &&\r\n this.selectedResponse.extraValue == storedResponse.extraValue &&\r\n this.selectedResponse.input2 == storedResponse.input2 &&\r\n this.selectedResponse.serverTypeEventNum == storedResponse.serverTypeEventNum &&\r\n this.selectedResponse.script === storedResponse.script &&\r\n this.selectedResponse.priority == storedResponse.priority &&\r\n isEqual(this.selectedResponse.grouping, storedResponse.grouping) &&\r\n this.selectedResponse.autoHandle === storedResponse.autoHandle &&\r\n isEqual(this.selectedResponse.linkedCameras,storedResponse.linkedCameras) &&\r\n this.selectedResponse.groupID == storedResponse.groupID &&\r\n this.selectedResponse.maskDurationLimit == storedResponse.maskDurationLimit &&\r\n this.responseActionEdited == false\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 private get modalTitle(): string\r\n {\r\n return (this.selectedResponse && this.selectedResponse.responseID) ? `Editing Alarm \"${this.responseTitle}\"` : \"Create New Alarm\"\r\n }\r\n\r\n\tprivate get showAutomations(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]) &&\r\n\t\t(!!this.permissions.canViewAutomations || !!this.permissions.canEditAutomations);\r\n\t}\r\n\r\n\tprivate get showLinkedCamerasInModal(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Devices\"]) && !get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]);\r\n\t}\r\n\r\n\tprivate get showMaskDurationLimit(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"Masking\", \"MaxMaskDuration\"], false);\r\n\t}\r\n\r\n\tprivate async mounted(): Promise\r\n {\r\n\t\tthis.responseScripts = await api.getResponseScripts();\r\n if (!this.readonly)\r\n {\r\n this.addActions();\r\n }\r\n\t\tawait this.updateResponses();\r\n\t}\r\n\r\n private addActions(): void\r\n {\r\n\t\tthis.columns.push({ key: \"actions\", label: \"Actions\", sortable: false, class: \"text-center\" });\r\n\t}\r\n\r\n private async putAlarm(): Promise\r\n {\r\n var response = {...this.selectedResponse};\r\n if (response.script)\r\n {\r\n response.scriptID = response.script.scriptID;\r\n response.scriptTitle = response.script.title;\r\n }\r\n else\r\n {\r\n response.scriptID = null;\r\n response.scriptTitle = null;\r\n }\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 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(): Promise\r\n {\r\n if (this.selectedResponse && this.selectedResponse.responseID)\r\n {\r\n await api.deleteResponse(this.selectedResponse.responseID);\r\n await this.updateResponses();\r\n this.selectedResponse = null;\r\n this.showModal = false;\r\n }\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 private 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\tthis.recordsPage = 1;\r\n\t\tawait this.updateResponses();\r\n\t}\r\n\r\n @Watch(\"selectedServerId\")\r\n\tpublic async updateResponses(): Promise {\r\n\t\ttry\r\n {\r\n\t\t\tthis.isLoading = true;\r\n await this.loadServerTypes(this.selectedServerId);\r\n const sortBy = this.columns.find(f => f.key == this.sortBy)?.keySort;\r\n\r\n const queryParams: PaginatedSearchQueryParams = {\r\n page: this.recordsPage,\r\n pageSize: this.recordsPageSize,\r\n sortBy: sortBy,\r\n sortDesc: this.sortDesc,\r\n searchTerm: this.searchTerm,\r\n };\r\n\r\n const cancellableQuery = this.generateNewPaginatedSearchRequest(queryParams);\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 await api.getAlarmAutomations(response.responseID).then(res => {\r\n response.responseActions = res;\r\n });\r\n }\r\n }\r\n this.updateTable++;\r\n }\r\n\r\n\t\t\tthis.totalRecords = result.totalRecords;\r\n\t\t}\r\n\t\tcatch (ex)\r\n {\r\n\t\t\tconsole.error(\"Unexpected error searching alarms: \" + ex);\r\n\t\t}\r\n finally\r\n {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n }\r\n\r\n private async onRecordsPerPageClick() {\r\n\t\tlet pageSize = +this.recordsPageSizeUpdated;\r\n\r\n\t\tif (pageSize)\r\n {\r\n\t\t\tif (pageSize > this.recordsPageSizeMax)\r\n {\r\n\t\t\t\tpageSize = this.recordsPageSizeMax;\r\n\t\t\t}\r\n\r\n\t\t\tif (pageSize !== this.recordsPageSize)\r\n {\r\n\t\t\t\tthis.recordsPage = 1;\r\n\t\t\t}\r\n\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 private async onPageClick(page: number) {\r\n\t\tif (this.isLoading)\r\n {\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.updateResponses();\r\n\t}\r\n\r\n private async onSortChange(event: VueBootstrapFieldTableSortEvent): Promise {\r\n\t\tif (this.isLoading)\r\n {\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.updateResponses();\r\n\t}\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 = cloneDeep(response);\r\n this.selectedResponse.deleteMode = deleteMode;\r\n\r\n if(this.selectedResponse.responseActions)\r\n {\r\n this.selectedResponseActions = cloneDeep(this.selectedResponse.responseActions)\r\n }\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: null,\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 } 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 this.showModal = true;\r\n }\r\n\r\n private handleModalHidden(): void\r\n {\r\n this.selectedResponse = null;\r\n this.selectedResponseActions = [];\r\n this.showModal = false;\r\n }\r\n\r\n @Watch(\"selectedResponse.serverID\", { deep:true })\r\n private async serverIdWatch(newServerId: number | null, oldServerId: number | null): Promise\r\n {\r\n if (!newServerId)\r\n {\r\n this.serverTypeEvents = [];\r\n if (this.selectedResponse)\r\n {\r\n this.selectedResponse.serverTypeEventNum = null;\r\n }\r\n return;\r\n }\r\n\r\n await this.loadServerTypes(newServerId);\r\n if (this.selectedResponse)\r\n {\r\n\t\t\tif(!!oldServerId && newServerId != oldServerId) {\r\n\t\t\t\tthis.selectedResponse.serverTypeEventNum = -1;\r\n\t\t\t}\r\n\r\n if(!this.selectedResponse.responseID)\r\n {\r\n\t\t\t\tif(!oldServerId) {\r\n\t\t\t\t\tthis.selectedResponse.serverTypeEventNum = -1;\r\n\t\t\t\t}\r\n\r\n const server = this.serversList.find(sl => sl.serverID == newServerId);\r\n this.selectedResponse.groupID = server?.groupID;\r\n }\r\n }\r\n }\r\n\r\n\tprivate get visibleFields(): VueBootstrapFieldEx[] {\r\n\t\treturn this.columns.filter(c => c.visible);\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","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.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=49218571&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=49218571&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 \"49218571\",\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 } 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 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\tlet syncSystems = this.searchTerm ?\r\n\t\tthis.syncSystems.filter(ss => ss.title.toLowerCase().includes(this.searchTerm.toLowerCase())) :\r\n\t\tthis.syncSystems;\r\n\r\n\t\treturn 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\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=498ba6b8\"\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\"},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; }},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\"}}),_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(),_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)],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 } from \"@/store/types\";\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\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@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\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\treturn { invalid: this.$v.$invalid, selectedServer: this.selectedServer };\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 readonly(): boolean {\r\n\t\treturn this.selectedServer && !!this.selectedServer.readonly\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=7d28942e\"\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\"}}),_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360013622797-Ops-Link\",\"target\":\"_blank\"}},[_vm._v(\"More Information\")])],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};\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\t\treturn { invalid: this.$v.$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\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","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.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=57bf3df5&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=57bf3df5&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 \"57bf3df5\",\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=a594e5cc&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=a594e5cc&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 \"a594e5cc\",\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\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}\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\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=ef9d82b2&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=ef9d82b2&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 \"ef9d82b2\",\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!./ServerModal.vue?vue&type=style&index=0&id=a594e5cc&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--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=ef9d82b2&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":""}