{"version":3,"sources":["webpack:///./src/components/device-setup/sync/GroupSyncHistory.vue?bb38","webpack:///./src/components/device-setup/ServerModal.vue?6f13","webpack:///./src/components/device-setup/tabs/ChildDeviceTabWrapper.vue?7ffe","webpack:///./src/components/device-setup/GetConfig.vue?1aa0","webpack:///./src/components/device-setup/editing/ChildDeviceEdit.vue?0630","webpack:///./src/views/DeviceSetup.vue?f5f7","webpack:///./src/components/device-setup/GetConfig.vue?484c","webpack:///./src/components/device-setup/tabs/ChildDeviceTabWrapper.vue?f98d","webpack:///./src/components/device-setup/tables/ChildDeviceTable.vue?d0b2","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?6c9b","webpack:///./src/components/device-setup/editing/AudioEdit.vue?57e1","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?c4b7","webpack:///./src/components/device-setup/editing/PresetEdit.vue?6b6f","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?e79d","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/custom-fields/CustomDefinedFieldInput.vue?4e11","webpack:///./src/components/custom-fields/CustomDefinedFieldInput.vue?4b09","webpack:///./src/components/custom-fields/CustomDefinedFieldInput.vue?f81b","webpack:///./src/components/custom-fields/CustomDefinedFieldInput.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?7b23","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?41ae","webpack:///./src/components/device-setup/confirmation-modals/DeleteDeviceModal.vue?032e","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?d052","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?87bd","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?5cbb","webpack:///./src/components/device-setup/editing/DeviceEdit.vue?7d9e","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?58e1","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?29a3","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?c24a","webpack:///./src/components/device-setup/sync/GroupSyncHistory.vue?0124","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/sync/GroupSync.vue?e0f8","webpack:///./src/components/device-setup/sync/GroupSyncHistory.vue?37c5","webpack:///./src/components/device-setup/tables/DeviceTable.vue?98da","webpack:///./src/views/DeviceSetup.vue?eeda","webpack:///./src/components/device-setup/sync/SyncEdit.vue?7551","webpack:///./src/components/device-setup/tables/ChildDeviceTable.vue?13a5","webpack:///./src/components/setup/alarm-setup/DeviceAlarmSetup.vue?92c5"],"names":["GetConfigStatus","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","scopedSlots","_u","key","fn","on","$event","rerenderKey","proxy","model","value","callback","$$v","tabIndex","expression","_v","_s","totalSyncSystems","_e","deviceTypeCounts","devices","syncSetupEnabled","_l","childDeviceTypeId","alarms","deviceId","device","deviceID","title","handleCameraPreviewHidden","staticRenderFns","allowsDevices","tabLoaded","handleTabLoaded","class","getTitleText","deviceCount","toLocaleString","ref","isForAllServers","visible","deviceTypeIdentifier","readonly","updateDevices","isAddingWithOpsLink","handleSearchInput","searchTermPersisted","hasEditPermission","currentServer","syncSystemId","handleAddDevice","deviceTypeId","deviceTypes","Camera","isCameraDetectionAvailable","canViewCustomFieldsPermission","isCustomFieldDevicesEnabled","openCustomFieldModal","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","customFieldTableType","getDevices","Devices","SiteMonitor","CustomFields","childDeviceTitles","Audio","Output","Door","axiosCancelTokenSource","searchTerm","Device","label","sortable","formatter","groupID","getGroupTitle","Promise","performSearch","created","addAllServersSpecificFields","addChildSpecificFields","tableIsForCameras","addActions","retrieveCustomFields","tableType","live","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","cancelTokenSource","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","canViewCustomFields","$refs","customFieldTableView","showCustomFieldModal","required","Number","default","Boolean","Action","Mutation","State","Getter","ChildDeviceTable","components","SureViewIcon","OpsLinkCameraImport","serverTypes","some","st","numCameras","numAudioInputs","numRelays","serverType","serverTypeID","cameras","audios","doors","outputs","childDeviceTable","ChildDeviceTabWrapper","editChildDeviceModalVisible","handleModalHidden","deviceIsInvalid","handleSaveClick","preventDefault","handleSubmit","slot","creatingFromMainTab","isEditing","handleServerSelected","loading","handleServerSearch","selectedServer","$set","a","id","childDeviceComponent","tag","handleValidationChanged","handleDeviceDetailsChanged","cameraUsageDifference","isCameraSubscriptionValid","subscription","limitedSubscription","camerasLimit","customFieldValues","onCustomFieldsChanged","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","customFieldToShow","customFieldSetting","updateCustomFieldValue","customFieldList","customFieldsToShow","sortByOrder","newCustomFieldValues","customFieldTableTypeId","skipCancel","retrieveCustomFieldsForTableType","sortOrderByNullLast","assignCustomFieldsToShow","setupCustomFieldValuesForEdit","cf","tableTypeId","Server","serverCustomFields","deviceCustomFields","arr","desc","sort","b","aValue","bValue","String","localeCompare","i","foundValue","forEach","cfv","updatedValue","targetCustomField","$emit","Array","CustomDefinedFieldInput","CustomDefinedField","Subscription","childDeviceComponents","childDeviceIsInvalid","debounceSearch","component","searchServers","ChildDeviceEdit","customFields","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","getPermissions","updatedFields","onDeviceCustomFieldsChanged","existingValue","AreaTreeSelect","minValue","maxValue","areCustomFieldsEqual","every","storeField","currentValue","storeValue","handleDeleteConfirmClick","handleCloseDeleteModalClick","deviceTypeTitle","deleteDevice","DeleteChildDeviceModal","isCustomFieldServersEnabled","hasCanViewCustomFieldsPermission","totalServers","serversToDisplay","showDeleteModal","handleDeleteModalClose","getServers","closeModal","deleteServer","getDeviceTypeCounts","DeleteDeviceModal","defaultResponseGrouping","getServerTypeTitle","hasAdvancedAlarmGroupingFlag","addAdvancedAlarmGroupingSpecificFields","addEditPermissionsSpecificFields","all","getDeviceTypes","fetchUserGroups","getDefaultResponseGrouping","getServerLineProfiles","getAlarmGroupingTitle","getFilteredServersPaginated","data","isRaiseIndividual","isRaiseGrouped","isReadOnly","readonlyMessage","setServerModalStartTab","setCurrentServer","setServerModalVisible","deviceEditComponentLoaded","onVisibilityChanged","DeviceTable","responses","genericTableColumns","modalItems","openModal","totalRecords","putAlarm","deleteAlarm","updateResponses","onModalClose","slotProps","_f","groupTitle","grouping","retrieveAutomationBadges","responseActions","objectID","description","deviceTitle","isCustomFieldAlarmsEnabled","GenericTableStore","mapArrayFieldsToObject","mapObjectFieldsToArray","validateSlaBreachSecondsValue","generateErrorMessage","validateExpectedFrequencyInSecondsValue","generateExpectedFrequencyErrorMessage","serverModalAlarmLoaded","responseScripts","selectedResponseActions","selectedResponse","serverTypeEvents","maxNumInputValue","showModal","responseActionEdited","modalIsOpen","Alarm","cancelErrorMessage","yesNoNotSet","alarmGroupingOptions","deleteMode","responseID","r","canViewAutomations","canEditAutomations","getResponseScripts","response","selectedServerId","expectedAlarmFailureEnabled","expectedFrequencyInSeconds","result","createDeviceResponse","updateResponse","updateResponseActions","responseId","newResponseActions","oldResponseActions","newAutomation","responseActionID","createAlarmAutomation","oldAutomation","updated","responseActionTypeID","settingsMeta","updateAlarmAutomation","deleteAlarmAutomation","deleteResponse","loadServerTypes","loadServerEventTypes","unshift","eventNum","paginatedSearchQueryParams","generateNewPaginatedSearchRequest","isEmailAlarms","getResponses","responseData","readOnly","script","rs","scriptID","ag","alarmCustomFields","serverTypeEventNum","priority","linkedCameras","autoHandle","maskDurationLimit","serverIdWatch","newResponse","oldResponse","inModal","genericTable","updateNewEntry","sl","setupServerModalAlarm","newAlarm","selectedGroupId","responseActionInput","input","GenericTableColumns","order","sortOrder","sortOrderReversed","isTermLabel","useCustomCell","disable","showLinkedCamerasInModal","showAutomations","showMaskDurationLimit","searchable","placeholder","readOnlyMethod","props","reduce","clearable","maxLength","ste","v","substring","IsDeviceAlarmInput1Valid","withParams","errorMessage","IsDeviceAlarmInput2Valid","defaultValue","IsDeviceAlarmPriorityValid","CameraSelect","multiple","ah","isServiceLevelAgreementsEnabled","canEditSLAs","canViewSLAs","min","csvComponent","csvValidation","validationCell","currentElement","isValid","csvValue","maxResponseSlaDuration","isSlaValueValid","automationsModalItem","ResponseActionSetup","IsDeviceAlarmMaxMaskingDurationValid","max","Constants","MAX_EXPECTED_FREQUENCY","csvExclude","shellModalItem","customField","externalIds","alarmCustomFieldModalItem","DeviceAlarmSetup","filters","truncateString","PaginatedSearch","AutomationMixin","handleAddSync","syncsToDisplay","confirmDelete","selectedSync","closeDeleteModal","serverTypeId","getSyncSystems","fetchSyncSystems","syncSystems","sync","getServerForSync","syncSystem","retrieveServer","openServerModal","Sync","deleteSyncSystem","fetchSyncSystemCount","SyncTable","modalIcon","modalTitle","handleEditModalCloseClick","deviceInfoTabIndex","userCanSaveSync","handleSyncSaveClick","serverModelDetails","handleServerSaveClick","isSuiteSyncEnabled","syncIsSuiteSync","userCanConfigureSuiteSync","syncDetailsChanged","handleServerModelDetailsChanged","showGetConfig","isGetConfigDisabled","getConfigTooltipText","syncIsDeviceSync","deviceTabIndex","isEditingServer","allowsAlarms","getAlarmTitleText","alarmCount","group","areaSelectComponentLoaded","sortedServerTypes","isApplianceEnabled","isFailoverEnabled","appliancesMatch","applianceHasFailedOver","serverTypeIsAlarmPanel","isApplianceOnly","isApplianceSelected","extraValueLabel","extraValuePlaceholder","updateExtraValue","handleAlarmGroupingSelected","alarmGrouping","isSlaEnabled","isSlaBreachSecondsValid","slaBreachSecondsErrorMessage","serverLineProfiles","serverLineProfile","serverLineProfileId","AlarmGroupingNone","AlarmGroupingResponse","AlarmGroupingDefault","deviceEditLoaded","areaSelectLoaded","setAlarmGroupingOption","ev","setExtraValue","onComponentLoaded","newValue","oldValue","handleServerDetailsChanged","appliancesValid","applianceId","primaryApplianceId","areManuallyValidatedFieldsInvalid","areCustomFieldValuesInvalid","slaBreachSeconds","InvalidSecondaryAppliance","secondaryApplianceId","selectedServerType","extraValueName","isAlarmPanel","canFailOverAppliance","DeviceEdit","ApplianceList","accountNumber","hasDataChanged","selectedServerWithValidationFieldsOnly","storeServerWithValidationFieldsOnly","propFromSelectedServer","propFromStoreServer","progress","doGetConfig","serverDeviceErrorsCount","directives","rawName","modifiers","cameraErrorsCount","deviceConfigurationErrors","deviceErrorFields","audioErrorsCount","outputErrorsCount","doorErrorsCount","alarmErrorsCount","responseErrorFields","gettingConfig","settingConfig","camerasTotal","handleCameraScrollBarReachEnd","toggleCameras","serverConfigData","deviceFields","cameraTableIsBusy","domProps","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","cancel","GroupSyncQueueState","Sessions","getConfigStatus","Inactive","camerasPage","camerasPageSize","alarmsPage","alarmsPageSize","audiosPage","audiosPageSize","doorsPage","doorsPageSize","outputsPage","outputsPageSize","getConfigHasBeenRan","displayFilteredRecords","allCamerasSelected","allAudiosSelected","allAlarmsSelected","allOutputsSelected","allDoorsSelected","noCamerasSelected","noAudiosSelected","noAlarmsSelected","noOutputsSelected","noDoorsSelected","cameraAccordionTabOpened","alarmAccordionTabOpened","audioAccordionTabOpened","doorAccordionTabOpened","outputAccordionTabOpened","updateSession","resourceId","$root","$on","collapseId","isJustShown","resetModal","deviceResponseRecordsRetrievalStatus","allCamerasRetrieved","allCamerasInCurrentQueryAreRetrieved","getCamerasForScroll","getCameras","e","allAlarmsRetrieved","allAlarmsInCurrentQueryAreRetrieved","getAlarmsForScroll","getAlarms","allAudiosRetrieved","allAudiosInCurrentQueryAreRetrieved","getAudiosForScroll","getAudios","allDoorsRetrieved","allDoorsInCurrentQueryAreRetrieved","getDoorsForScroll","getDoors","allFilteredOutputsRetrieved","allOutputsInCurrentQueryAreRetrieved","getOutputsForScroll","getOutputs","populateLocalData","serverConfigAlreadySet","serverConfigDataList","serverConfig","relays","serverConfigDataOutputs","obj","serverConfigDataDoors","host","port","username","password","syncIdentifier","users","Done","getDeviceService","deviceService","window","location","origin","deviceServerEndpoint","authSessionID","getSession","DeviceServiceSession","setDeviceConfigErrors","Connecting","fetchServerConfig","auth","then","values","startIndex","totalWillbeReached","endIndex","camerasWithSelect","newCamera","hasPtz","referenceImage","features","latLong","prototype","apply","alarmsWithSelect","eventType","linkedCameraInput","highPriority","audiosWithSelect","newAudio","doorsWithSelect","newRelay","outputsWithSelect","addConfig","addDevicesForServer","setSettingConfig","selectedCameras","selectedAlarms","selectedAudios","selectedDoors","selectedOutputs","selectedRelays","x","selectedConfig","deviceConfiguration","index","alarmErrorCount","cameraErrorCount","outputErrorCount","doorErrorCount","audioErrorCount","selectedCount","c","GetConfig","linkedSystemTitle","isReadOnlyForm","selectedSyncSystem","UserManagement","defaultSyncSystem","storedSyncSystem","settingSync","tenantId","getUserTenantGroupId","isSuiteSync","linkedSyncSystemId","linkedSyncSystemTitle","handleSyncDetailsChanged","ss","fetchPermissionsState","canConfigureSuiteSync","isLinkedSystem","SyncEdit","storeSync","propFromSelectedSync","propFromStoreSync","setGroupSyncId","groupSyncsForTable","columns","addOrUpdateGroupSync","deleteGroupSync","selectedGroupSyncId","identifier","enabled","queueable","syncNow","fromNow","lastRun","groupSyncQueue","groupSyncQueues","syncQueue","syncQueueId","option","queueOptionLabel","selectedSyncQueue","groupSyncHistoryPage","isLoadingAudit","syncQueueAudit","updatePage","audit","split","line","replaceAll","convertUtcDateTimeToLocalDateTimeString","dateCreated","pageNumber","pageLength","width","retrieveGroupSyncQueue","onGroupSyncCompletedKeyChanged","retrieveQueueAudit","syncQueueForGroupSync","gsq","newQueueId","oldQueueId","auditTrailForGroupSyncQueue","friendlyStateText","state","preQueued","queued","processing","failed","processed","partialProcessed","noData","queueItem","lastUpdated","GroupSyncHistory","isPollingState","statePoll","syncStateArray","isLoadingStates","groupSyncs","lastQueueStates","area","GroupSyncConfig","groupSync","loadGroupSyncs","loadLastQueueStates","retrieveLastSyncQueueStates","lastStates","retrieveFriendlyState","lq","convertQueueStateToFriendlyText","reQueue","groupSyncQueueable","groupSyncsForSyncSystem","gs","manualQueue","lastQueueState","g","queueGroupSync","firstOrDefault","pollGroupSyncState","RetrieveLatestQueueStateForGroupSync","clearTimeout","currentState","setTimeout","reloadGroupSyncs","GroupSync","baseChildDeviceTypeIds","syncModelDetails","setStartTab","open","serverModalStartTab","addChildDeviceTypes","iconClass","clonedServer","updateServer","addServer","addOrUpdateSyncSystem","getFeaturesList","canGetConfig","isGetConfigInDevicesEnabled","numAlarmInputs","aCount","linkedSyncSystem","isParentable","ServerModal","childDeviceTypeIds","resetDevicesState","canViewSiteSetup","notify","notificationOptions","setNotificationOptions","DeviceSetup","CameraPreview","NavHeader","OpsLinks"],"mappings":"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","file":"js/chunk-129eef88.b85baf72.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!./ServerModal.vue?vue&type=style&index=0&id=10dafa67&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!./ChildDeviceTabWrapper.vue?vue&type=style&index=0&id=437de015&prod&lang=scss&scoped=true\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GetConfig.vue?vue&type=style&index=0&id=c5368800&prod&lang=scss&scoped=true\"","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=6266d05e&prod&lang=scss&scoped=true\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary h-100 advanced-device-setup\"},[_c('nav-header',{attrs:{\"title\":\"Device Setup\"}}),(_vm.canViewDeviceSetup)?_c('div',{staticClass:\"content-container\"},[_c('b-tabs',{staticClass:\"page-tabs\",attrs:{\"card\":\"\"},scopedSlots:_vm._u([{key:\"tabs-end\",fn:function(){return [_c('div',{staticClass:\"ops-links-button-container\"},[_c('ops-links',{on:{\"modalClosed\":function($event){_vm.rerenderKey++}}})],1)]},proxy:true}],null,false,3060851227),model:{value:(_vm.tabIndex),callback:function ($$v) {_vm.tabIndex=$$v},expression:\"tabIndex\"}},[(_vm.syncSetupEnabled)?_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Sync \"),_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(\" \"+_vm._s(_vm.totalSyncSystems ? _vm.totalSyncSystems : 0)+\" \")])]},proxy:true}],null,false,508689850)},[_c('sync-table',{key:_vm.rerenderKey,attrs:{\"visible\":_vm.tabIndex === 0}})],1):_vm._e(),_c('b-tab',{attrs:{\"active\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Devices \"),(_vm.deviceTypeCounts)?_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(\" \"+_vm._s(_vm.deviceTypeCounts.devices)+\" \")]):_vm._e()]},proxy:true}],null,false,4103493817)},[_c('device-table',{key:_vm.rerenderKey,attrs:{\"visible\":(_vm.syncSetupEnabled ? _vm.tabIndex === 1 : _vm.tabIndex === 0)}})],1),_vm._l((_vm.childDeviceTypeIds),function(childDeviceTypeId){return _c('child-device-tab-wrapper',{key:childDeviceTypeId,attrs:{\"isForAllServers\":true,\"visible\":(_vm.syncSetupEnabled ? _vm.tabIndex === childDeviceTypeId + 1 : _vm.tabIndex === childDeviceTypeId),\"deviceTypeIdentifier\":childDeviceTypeId}})}),_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{attrs:{\"variant\":\"primary\"}},[_vm._v(\" Alarms \"),_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.deviceTypeCounts ? _vm.deviceTypeCounts.alarms : 0))])],1)]},proxy:true}],null,false,2573995170)},[_c('device-alarm-setup',{attrs:{\"data-cy\":\"responseSetupTable\",\"isEmailAlarms\":false}}),_c('div',{staticClass:\"clear-both\"})],1)],2),_c('delete-child-device-modal'),(_vm.editChildDeviceModalVisible)?_c('child-device-edit'):_vm._e(),(_vm.cameraPreviewModalVisible)?_c('camera-preview',{attrs:{\"previewDetails\":{ deviceId: _vm.device.deviceID, title: _vm.device.title }},on:{\"hidden\":_vm.handleCameraPreviewHidden}}):_vm._e(),_c('server-modal')],1):_c('div',[_c('h3',{staticClass:\"pt-4 text-center\"},[_vm._v(\"You don't have permission to view this page\")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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","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(),(_vm.canViewCustomFieldsPermission && _vm.isCustomFieldDevicesEnabled)?_c('b-col',{attrs:{\"cols\":\"auto\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"custom-fields-button\"},on:{\"click\":_vm.openCustomFieldModal}},[_vm._v(\"Custom Fields\")])],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(),_c('custom-field-table-view',{ref:\"customFieldTableView\",attrs:{\"customFieldTableTypeId\":this.customFieldTableType},on:{\"update-data\":_vm.getDevices}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\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\nimport CustomFieldTableView from '@/components/custom-fields/CustomFieldModalTableView.vue';\r\nimport { CustomFieldTableTypes } from '@/store/custom-fields/types';\r\n\r\nconst Devices = namespace(\"devices\");\r\nconst SiteMonitor = namespace(\"siteMonitor\");\r\nconst CustomFields = namespace(\"customFields\");\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\t\"custom-field-table-view\": CustomFieldTableView\r\n\t}\r\n})\r\nexport default class ChildDeviceTable extends Vue {\r\n\t$refs!: {\r\n\t\tcustomFieldTableView: CustomFieldTableView;\r\n\t};\r\n\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\t@CustomFields.Action retrieveCustomFields: ({ tableType, live }) => Promise;\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\tprivate readonly customFieldTableType: number = CustomFieldTableTypes.Device;\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\tif (this.isCustomFieldDevicesEnabled) {\r\n\t\t\tawait this.retrieveCustomFields({ tableType: this.customFieldTableType, live: true });\r\n\t\t}\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\tpublic get canViewCustomFieldsPermission(): boolean {\r\n\t\treturn this.permissions.canViewCustomFields;\r\n\t}\r\n\r\n\tprivate get isCustomFieldDevicesEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"CustomFields\", \"Devices\"]);\r\n\t}\r\n\r\n\tprivate async openCustomFieldModal(): Promise {\r\n\t\tawait this.$refs.customFieldTableView.showCustomFieldModal();\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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=2e9c23bc&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=2e9c23bc&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 \"2e9c23bc\",\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(),(_vm.isCustomFieldDevicesEnabled && _vm.canViewCustomFieldsPermission)?_c('custom-field-input',{attrs:{\"customFieldValues\":_vm.customFieldValues,\"customFieldTableTypeId\":_vm.customFieldTableType},on:{\"CFValueListChanged\":_vm.onCustomFieldsChanged}}):_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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.customFieldsToShow),function(customFieldToShow){return _c('custom-field',{key:customFieldToShow.id,attrs:{\"value\":customFieldToShow,\"setting\":_vm.customFieldSetting(customFieldToShow),\"isEditable\":true},on:{\"CFValueChanged\":_vm.updateCustomFieldValue}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Vue, Prop } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\nimport CustomDefinedField from \"./CustomDefinedField.vue\";\r\nimport { CustomFieldValues, CustomFieldDto, CustomFieldTableTypes } from \"@/store/custom-fields/types\";\r\n\r\nconst CustomFields = namespace(\"customFields\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"custom-field\": CustomDefinedField\r\n\t}\r\n})\r\nexport default class CustomDefinedFieldInput extends Vue {\r\n\t@Prop({ type: Array, required: false}) public customFieldValues: CustomFieldValues[];\r\n\t@Prop({ type: Number, required: true}) public customFieldTableTypeId: number;\r\n\r\n\t@CustomFields.State private deviceCustomFields: CustomFieldDto[];\r\n\t@CustomFields.State private serverCustomFields: CustomFieldDto[];\r\n\t@CustomFields.Action retrieveCustomFields: ({ tableType, live, skipCancel }) => Promise;\r\n\r\n\tprivate customFieldList: CustomFieldDto[] = [];\r\n\tprivate customFieldsToShow: CustomFieldValues[] = [];\r\n\tprivate sortByOrder: string = \"order\";\r\n\tprivate newCustomFieldValues: CustomFieldValues[] = [];\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tawait this.retrieveCustomFields({ tableType: this.customFieldTableTypeId, live: true , skipCancel: true });\r\n\t\tthis.customFieldList = this.retrieveCustomFieldsForTableType(this.customFieldTableTypeId);\r\n\t\tthis.sortOrderByNullLast(this.customFieldList);\r\n\t\tthis.assignCustomFieldsToShow();\r\n\t\tthis.setupCustomFieldValuesForEdit();\r\n\t}\r\n\r\n\tprivate customFieldSetting(customFieldToShow: CustomFieldValues): CustomFieldDto {\r\n\t\treturn this.customFieldList.find(cf => cf.id == customFieldToShow.id)\r\n\t}\r\n\r\n\tprivate retrieveCustomFieldsForTableType(tableTypeId: number): CustomFieldDto[] {\r\n\t\tif (tableTypeId == CustomFieldTableTypes.Server) {\r\n\t\t\treturn this.serverCustomFields;\r\n\t\t}\r\n\r\n\t\tif (tableTypeId == CustomFieldTableTypes.Device) {\r\n\t\t\treturn this.deviceCustomFields;\r\n\t\t}\r\n\t}\r\n\r\n\t// method used to sort the custom fields modal while taking into account null handling and different data types\r\n\tprivate sortOrderByNullLast(arr: CustomFieldDto[], desc: boolean = false): CustomFieldDto[] {\r\n\t\treturn arr.sort((a, b) => {\r\n\t\t\t// Extract values for the specified key and use optional chaining to prevent null reference exceptions\r\n\t\t\tconst aValue = a?.[this.sortByOrder];\r\n\t\t\tconst bValue = b?.[this.sortByOrder];\r\n\r\n\t\t\t// If both order values are null the sorting is equal relative to each other to prevent unnecessary reordering\r\n\t\t\tif (aValue == null && bValue == null) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t\t// Ensure null values are placed last in the list to reflect the sort order in the Add Alarm modal\r\n\t\t\telse if (aValue == null) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t\telse if (bValue == null) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\t// Accounts for other data types or mixed types to maintain sorting consistency\r\n\t\t\telse {\r\n\t\t\t\treturn desc ? String(bValue).localeCompare(String(aValue)) : String(aValue).localeCompare(String(bValue));\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate assignCustomFieldsToShow(): void {\r\n\t\tif (!this.customFieldValues?.length) {\r\n\t\t\tfor (let i = 0; i cf.id == this.customFieldList[i].id);\r\n\r\n\t\t\t\tif (foundValue) {\r\n\t\t\t\t\tthis.customFieldsToShow.push({\r\n\t\t\t\t\t\tid: this.customFieldList[i].id,\r\n\t\t\t\t\t\tvalue: foundValue.value,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.customFieldsToShow.push({\r\n\t\t\t\t\t\tid: this.customFieldList[i].id,\r\n\t\t\t\t\t\tvalue: \"\",\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupCustomFieldValuesForEdit(): void {\r\n\t\tthis.customFieldsToShow.forEach(cf => {\r\n\t\t\tlet value;\r\n\t\t\tif (this.customFieldValues && this.customFieldValues.length > 0) {\r\n\t\t\t\tvalue = this.customFieldValues.find(cfv => cfv.id == cf.id).value\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = \"\"\r\n\t\t\t}\r\n\r\n\t\t\tthis.newCustomFieldValues.push({\r\n\t\t\t\tid: cf.id,\r\n\t\t\t\tvalue: value\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate updateCustomFieldValue(updatedValue: CustomFieldValues): void {\r\n\t\tlet targetCustomField = this.newCustomFieldValues.find(cf => cf.id === updatedValue.id)\r\n\r\n\t\tif (targetCustomField) {\r\n\t\t\ttargetCustomField.value = updatedValue.value;\r\n\t\t}\r\n\r\n\t\tthis.$emit('CFValueListChanged', this.newCustomFieldValues);\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!./CustomDefinedFieldInput.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomDefinedFieldInput.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomDefinedFieldInput.vue?vue&type=template&id=f21b4986&scoped=true\"\nimport script from \"./CustomDefinedFieldInput.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomDefinedFieldInput.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 \"f21b4986\",\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, UserPermissions } from '@/store/types';\nimport { SubscriptionDto } from '@/store/subscription/types';\nimport AreaTreeSelect from '@/components/form/AreaTreeSelect.vue';\nimport CustomDefinedFieldInput from '@/components/custom-fields/CustomDefinedFieldInput.vue';\nimport { CustomFieldTableTypes, CustomFieldDto, CustomFieldValues } from '@/store/custom-fields/types';\nimport { hasEmptyRequiredCustomFields, hasInvalidCustomFieldValues } from \"@/utils/CustomFieldLogic\";\n\nconst Devices = namespace(\"devices\");\nconst Subscription = namespace(\"subscription\");\nconst CustomFields = namespace(\"customFields\");\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\t\"custom-field-input\": CustomDefinedFieldInput\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\tconst areCustomFieldsEqual = () => {\n\t\t\t\t\tif (!this.device.customFields || !this.deviceFromStore.customFields) {\n\t\t\t\t\t\treturn this.device.customFields === this.deviceFromStore.customFields;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.device.customFields.length !== this.deviceFromStore.customFields.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn this.device.customFields.every(field => {\n\t\t\t\t\t\tconst storeField = this.deviceFromStore.customFields.find(f => f.id === field.id);\n\t\t\t\t\t\tconst currentValue = field.value || \"\";\n\t\t\t\t\t\tconst storeValue = storeField?.value || \"\";\n\t\t\t\t\t\treturn currentValue === storeValue;\n\t\t\t\t\t});\n\t\t\t\t};\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\tareCustomFieldsEqual()\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@CustomFields.State private deviceCustomFields: CustomFieldDto[];\n\n\t@Getter(\"getPermissions\") private getPermissions: UserPermissions;\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\tprivate readonly customFieldTableType: number = CustomFieldTableTypes.Device;\n\tprivate customFieldValues: CustomFieldValues[] = [];\n\n\tprivate async created(): Promise {\n\t\tthis.device = { ...this.deviceFromStore };\n\t\tthis.customFieldValues = this.device.customFields;\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 || (this.isCustomFieldDevicesEnabled && (hasEmptyRequiredCustomFields(this.customFieldValues, this.deviceCustomFields) || hasInvalidCustomFieldValues(this.customFieldValues, this.deviceCustomFields)));\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\t\tthis.device.customFields = this.customFieldValues;\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\tprivate get isCustomFieldDevicesEnabled(): boolean {\n\t\treturn !!get(this.featuresList, [\"CustomFields\", \"Devices\"]);\n\t}\n\n\tpublic get canViewCustomFieldsPermission(): boolean {\n\t\treturn this.getPermissions.canViewCustomFields;\n\t}\n\n\tprivate onCustomFieldsChanged(updatedFields: CustomFieldValues[]): void {\n\t\tthis.customFieldValues = [...updatedFields];\n\t\tthis.device.customFields = [...updatedFields];\n\t}\n\n\t@Watch(\"deviceCustomFields\", { deep: true })\n\tprivate onDeviceCustomFieldsChanged(): void {\n\t\tthis.deviceCustomFields.forEach(field => {\n\t\t\tconst existingValue = this.customFieldValues.find(value => value.id === field.id);\n\t\t\tif (!existingValue) {\n\t\t\t\tthis.customFieldValues.push({\n\t\t\t\t\tid: field.id,\n\t\t\t\t\tvalue: \"\",\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n}\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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=6266d05e&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=6266d05e&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 \"6266d05e\",\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(),(_vm.isCustomFieldServersEnabled && _vm.hasCanViewCustomFieldsPermission)?_c('b-col',{attrs:{\"cols\":\"auto\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"custom-field-button\"},on:{\"click\":function($event){return _vm.openCustomFieldModal()}}},[_vm._v(\"Custom Fields\")])],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()}}}),_c('custom-field-modal-table-view',{ref:\"customFieldTableView\",attrs:{\"customFieldTableTypeId\":this.customFieldTableType},on:{\"update-data\":_vm.getServers}})],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showModal)?_c('b-modal',{attrs:{\"visible\":\"\",\"size\":\"lg\",\"centered\":\"\",\"header-class\":\"delete-confirm-modal\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"static\":\"\",\"data-cy\":\"delete-device-modal\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"confirm-delete-button\"},on:{\"click\":function($event){return _vm.handleDeleteConfirmClick()}}},[_vm._v(\" Delete \")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"close-button\"},on:{\"click\":function($event){return _vm.handleCloseDeleteModalClick()}}},[_vm._v(\" Cancel \")])]},proxy:true}],null,false,419256635)},[_c('template',{staticClass:\"d-flex align-items-center\",slot:\"modal-header\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('i',{staticClass:\"fas fa-trash text-danger mr-2\"}),_c('h4',[_vm._v(\"Delete device\")])])]),_c('h5',[_vm._v(\" Are you sure you want to delete the device \"),_c('strong',[_vm._v(\"\\\"\"+_vm._s(_vm.currentServer.title)+\"\\\"?\")])]),_c('h5',{staticClass:\"mt-2\"},[_vm._v(\"This action will:\")]),_c('ul',[_c('li',[_vm._v(\"Delete all cameras associated with this device\")]),_c('li',[_vm._v(\"Delete all audios associated with this device\")]),_c('li',[_vm._v(\"Delete all doors associated with this device\")]),_c('li',[_vm._v(\"Delete all outputs associated with this device\")]),_c('li',[_vm._v(\"Delete all alarms associated with this device\")])])],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Prop, Vue } from \"vue-property-decorator\";\r\nimport { namespace } from \"vuex-class\";\r\n\r\nimport { ServerDetails } from \"@/store/devices/types\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({})\r\nexport default class DeleteDeviceModal extends Vue {\r\n\t@Prop({ type: Boolean, required: true }) private showModal: boolean;\r\n\r\n\t@Devices.Action private deleteServer: (serverId: number) => Promise;\r\n\t@Devices.Action private getDeviceTypeCounts: (serverId: number) => Promise;\r\n\t@Devices.State private currentServer: ServerDetails;\r\n\r\n\tprivate handleCloseDeleteModalClick(): void {\r\n\t\tthis.closeModal();\r\n\t}\r\n\r\n\tprivate async handleDeleteConfirmClick(): Promise {\r\n\t\tawait this.deleteServer(this.currentServer.serverID);\r\n\t\tawait this.getDeviceTypeCounts(null);\r\n\t\tthis.closeModal();\r\n\t}\r\n\r\n\t@Emit(\"close-modal\")\r\n\tprivate closeModal(): void {}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteDeviceModal.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteDeviceModal.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeleteDeviceModal.vue?vue&type=template&id=50b504b4\"\nimport script from \"./DeleteDeviceModal.vue?vue&type=script&lang=ts\"\nexport * from \"./DeleteDeviceModal.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Action, Getter, namespace, State } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { debounce, get } from \"lodash\";\r\nimport { CancelTokenSource } from \"axios\";\r\n\r\nimport { getDebouncePeriod } from \"@/utils/debounce-helper\";\r\nimport { getNewCancelTokenSource } from \"@/utils/cancellableQueryHelper\";\r\nimport {\r\n\tCancellableQuery,\r\n\tFeaturesList,\r\n\tPaginatedSearchQueryParams,\r\n\tUserGroup,\r\n\tUserPermissions,\r\n\tVueBootstrapField,\r\n \tVueBootstrapFieldTableSortEvent\r\n} from \"@/store/types\";\r\nimport { ServerDetails, ServerType, ServerModalStartTab } from \"@/store/devices/types\";\r\nimport { getNewServerDetailsTemplate } from \"@/store/devices/templates\";\r\nimport api from \"@/services/api.service\";\r\nimport DeleteDeviceModal from \"@/components/device-setup/confirmation-modals/DeleteDeviceModal.vue\";\r\nimport CustomFieldTableView from \"@/components/custom-fields/CustomFieldModalTableView.vue\";\r\nimport { CustomFieldTableTypes } from \"@/store/custom-fields/types\";\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\t\"custom-field-modal-table-view\": CustomFieldTableView\r\n\t}\r\n})\r\nexport default class DeviceTable extends Vue {\r\n\t$refs!: {\r\n\t\tcustomFieldTableView: CustomFieldTableView;\r\n\t}\r\n\r\n\t@Prop({ required: true, default: false, type: Boolean }) private visible;\r\n\t@Action private fetchUserGroups: () => Promise;\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@State private featuresList: FeaturesList;\r\n\t@State private UserGroups: UserGroup[];\r\n\r\n\t@Devices.Action private getDeviceTypes: () => Promise;\r\n\t@Devices.Action private getFilteredServersPaginated: (\r\n\t\tparams: CancellableQuery\r\n\t) => Promise;\r\n\t@Devices.Action private getServerLineProfiles: () => Promise;\r\n\r\n\t@Devices.Mutation private setCurrentServer: (server: ServerDetails) => void;\r\n\t@Devices.Mutation setServerModalVisible: (IsVisible: boolean) => void;\r\n\t@Devices.Mutation private setServerModalStartTab: (startTab: ServerModalStartTab) => void;\r\n\r\n\t@Devices.State private serversList: ServerDetails[];\r\n\t@Devices.State private totalServers: number;\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\r\n\t@Prop() devices: ServerDetails[];\r\n\r\n\tprivate axiosCancelTokenSource: CancelTokenSource = null;\r\n\tprivate defaultResponseGrouping: string = \"\";\r\n\tprivate isLoading: boolean = false;\r\n\tprivate recordsPage: number = 1;\r\n\tprivate recordsPageSize: number = 25;\r\n\tprivate recordsPageSizeMax: number = 200;\r\n\tprivate recordsPageSizeUpdated: number = this.recordsPageSize;\r\n\tprivate sortBy: string = \"title\";\r\n\tprivate sortDesc: boolean = false;\r\n\tprivate searchTerm: string = \"\";\r\n\tprivate showDeleteModal: boolean = false;\r\n\tprivate readonly customFieldTableType: number = CustomFieldTableTypes.Server;\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 get isCustomFieldServersEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"CustomFields\", \"Servers\"]);\r\n\t}\r\n\r\n\tpublic get hasCanViewCustomFieldsPermission(): boolean {\r\n\t\treturn this.permissions.canViewCustomFields;\r\n\t}\r\n\r\n\tprivate getAlarmGroupingTitle(server: ServerDetails): string {\r\n\t\tif (server.isRaiseIndividual) {\r\n\t\t\treturn \"No Grouping\";\r\n\t\t}\r\n\r\n\t\tif (server.isRaiseGrouped) {\r\n\t\t\treturn \"By Response\";\r\n\t\t}\r\n\r\n\t\treturn this.defaultResponseGrouping;\r\n\t}\r\n\r\n\tprivate get serversToDisplay(): ServerDetails[] {\r\n\t\treturn this.serversList.map(server => {\r\n\t\t\tvar isReadOnly = !!server.syncSystemId && !this.permissions.canOverrideGroupSync && !this.permissions.isSystemAdmin;\r\n\t\t\treturn ({\r\n\t\t\t\t...server,\r\n\t\t\t\treadonly: isReadOnly,\r\n\t\t\t\treadonlyMessage: isReadOnly ? \"You do not have permission to edit Sync Devices\": null\r\n\t\t\t})\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async onPageClick(page: number) {\r\n\t\tif (!this.visible || this.isLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.recordsPage = page || this.recordsPage;\r\n\r\n\t\tawait this.getServers();\r\n\t}\r\n\r\n\tprivate async onRecordsPerPageClick() {\r\n\t\tlet pageSize = +this.recordsPageSizeUpdated;\r\n\r\n\t\tif (pageSize) {\r\n\t\t\tif (pageSize > this.recordsPageSizeMax) {\r\n\t\t\t\tpageSize = this.recordsPageSizeMax;\r\n\t\t\t}\r\n\t\t\tif (pageSize !== this.recordsPageSize) {\r\n\t\t\t\tthis.recordsPage = 1;\r\n\t\t\t}\r\n\t\t\tthis.recordsPageSize = pageSize;\r\n\t\t}\r\n\t\tthis.recordsPageSizeUpdated = this.recordsPageSize;\r\n\t\tthis.onPageClick(this.recordsPage);\r\n\t}\r\n\r\n\tprivate handleAddDevice(): void {\r\n\t\tthis.setServerModalStartTab(ServerModalStartTab.Server);\r\n\t\tthis.setCurrentServer(getNewServerDetailsTemplate());\r\n\t\tthis.setServerModalVisible(true);\r\n\t}\r\n\r\n\tprivate handleEditClick(server: ServerDetails): void {\r\n\t\tthis.setServerModalStartTab(ServerModalStartTab.Server);\r\n\t\tthis.setCurrentServer(server);\r\n\t\tthis.setServerModalVisible(true);\r\n\t}\r\n\r\n\tprivate handleDeleteClick(server: ServerDetails): void {\r\n\t\tthis.setCurrentServer(server);\r\n\t\tthis.showDeleteModal = true;\r\n\t}\r\n\r\n\tprivate handleDeleteModalClose(): void {\r\n\t\tthis.showDeleteModal = false;\r\n\t\tthis.setCurrentServer(null);\r\n\t}\r\n\r\n\tprivate handleSearchInput = debounce(async (searchTerm: string): Promise => {\r\n\t\tawait this.performSearch(searchTerm);\r\n\t}, getDebouncePeriod());\r\n\r\n\tprivate async performSearch(searchTerm: string): Promise {\r\n\t\tthis.searchTerm = searchTerm;\r\n\t\tawait this.getServers();\r\n\t}\r\n\r\n\tprivate deviceEditComponentLoaded(): void {\r\n\t\t// this.setIsLoading(false);\r\n\t}\r\n\r\n\tprivate async onSortChange(event: VueBootstrapFieldTableSortEvent): Promise {\r\n\t\tif (!this.visible || this.isLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.sortBy = event.sortBy || this.sortBy;\r\n\t\tthis.sortDesc = event.sortDesc;\r\n\r\n\t\tawait this.getServers();\r\n\t}\r\n\r\n\t@Watch(\"visible\")\r\n\tprivate async onVisibilityChanged(visible: boolean): Promise {\r\n\t\tif (visible) {\r\n\t\t\tthis.searchTerm = null;\r\n\t\t\tawait this.getServers();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async openCustomFieldModal(): Promise {\r\n\t\tthis.$refs.customFieldTableView.showCustomFieldModal();\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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=4f787186&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=4f787186&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 \"4f787186\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"card card-secondary table-container overflow-hidden flex-grow-1\",attrs:{\"data-cy\":\"alarm-device-table\"}},[_c('generic-table',{ref:\"genericTable\",attrs:{\"term\":\"Alarm\",\"dataList\":_vm.responses,\"columns\":_vm.genericTableColumns,\"modalItems\":_vm.modalItems,\"onModalOpen\":_vm.openModal,\"totalAvailableRows\":_vm.totalRecords,\"onAddNew\":_vm.putAlarm,\"onSave\":_vm.putAlarm,\"onDelete\":_vm.deleteAlarm,\"refreshAllowed\":\"\",\"clearOnClose\":\"\",\"data-cy\":\"deviceAlarmSetupGenericTable\",\"isLoading\":_vm.isLoading},on:{\"search-filter-updated\":_vm.updateResponses,\"genericUpdateModalClosed\":_vm.onModalClose},scopedSlots:_vm._u([{key:\"linkedCameras\",fn:function(slotProps){return _vm._l((slotProps.row.linkedCameras),function(item){return _c('span',{key:item.deviceID,staticClass:\"badge badge-primary ml-1\"},[_c('p',{staticClass:\"mb-0\"},[_vm._v(_vm._s(_vm._f(\"truncateString\")(item.title,20)))]),_c('span',{staticClass:\"font-weight-light\"},[_vm._v(_vm._s(item.groupTitle))])])})}},{key:\"grouping\",fn:function(slotProps){return [_vm._v(\" \"+_vm._s(slotProps.row.grouping.title)+\" \")]}},{key:\"responseActions\",fn:function(slotProps){return _vm._l((_vm.retrieveAutomationBadges(slotProps.row.responseActions)),function(item){return _c('span',{key:item.objectID,staticClass:\"badge badge-primary ml-1\",attrs:{\"id\":\"automation-item\"}},[_c('p',{staticClass:\"mb-0\",attrs:{\"title\":item.description}},[_vm._v(_vm._s(_vm._f(\"truncateString\")(item.deviceTitle,20)))])])})}},{key:\"custom-button\",fn:function(){return [(_vm.isCustomFieldAlarmsEnabled && _vm.hasCanViewCustomFieldsPermission)?_c('button',{staticClass:\"btn btn-primary add-btn\",attrs:{\"data-cy\":\"btn-custom-fields\"},on:{\"click\":_vm.openCustomFieldModal}},[_vm._v(\" Custom Fields \")]):_vm._e()]},proxy:true}])}),_c('custom-field-modal-table-view',{ref:\"customFieldTableView\",attrs:{\"customFieldTableTypeId\":this.customFieldTableType},on:{\"update-data\":_vm.updateResponses}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Mixins, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport { FeaturesList, PaginatedSearchQueryParams, UserPermissions } from \"@/store/types\";\r\nimport api from \"@/services/api.service\";\r\nimport CameraSelect from \"@/components/form/CameraSelect.vue\";\r\nimport { truncateString } from \"@/filters\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport _ from 'lodash';\r\nimport PaginatedSearch from \"@/mixins/PaginatedSearch\";\r\nimport AutomationMixin from \"@/mixins/AutomationMixin\";\r\nimport ResponsesPagedResponse from \"@/types/sv-data/responses/ResponsesPagedResponse\";\r\nimport { Response, AlarmGrouping, Script, YesNoOption } from \"@/store/responses/types\";\r\nimport { DeviceDetails, ServerDetails } from '@/store/devices/types';\r\nimport vselect3 from \"vselect3\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { helpers } from \"vuelidate/lib/validators\";\r\nimport { get } from \"lodash\";\r\nimport ResponseActionSetup from './ResponseActionSetup.vue';\r\nimport { ResponseAction } from \"@/store/response-actions/types\";\r\nimport GenericTable, { TableHeader } from '@/components/table/generic-table.vue';\r\nimport { ModalItemCSV } from '@/store/csv-form-handler/types';\r\nimport CustomFieldTableView from \"@/components/custom-fields/CustomFieldModalTableView.vue\";\r\nimport { CustomFieldDto, CustomFieldTableTypes } from \"@/store/custom-fields/types\";\r\nimport { customFieldMixins } from \"@/mixins/customFieldMixins\";\r\nimport { MapCustomFieldToModalItem } from \"@/utils/CustomFieldLogic\";\r\nimport GenericUpdateModal from '@/components/table/generic-update-modal.vue';\r\nimport { serviceLevelAgreementMixins, expectedFrequencyMixins } from '@/mixins';\r\nimport { Constants } from '@/types/Constants';\r\n\r\ninterface ResponseRow extends Response {\r\n readOnly?: boolean;\r\n readOnlyMessage?: string;\r\n deleteMode?: boolean;\r\n scriptTitle: string;\r\n script: Script;\r\n grouping: AlarmGrouping;\r\n linkedCameras: DeviceDetails[];\r\n\tresponseActions?: ResponseAction[];\r\n maskDurationLimit?: number;\r\n}\r\n\r\ninterface ServerTypeEvent {\r\n eventNum: number,\r\n title: string,\r\n}\r\n\r\nconst Devices = namespace(\"devices\");\r\nconst CustomFields = namespace(\"customFields\");\r\nconst GenericTableStore = namespace(\"GenericTable\");\r\n\r\nconst { mapArrayFieldsToObject, mapObjectFieldsToArray } = customFieldMixins.methods;\r\nconst { validateSlaBreachSecondsValue, generateErrorMessage } = serviceLevelAgreementMixins.methods;\r\nconst { validateExpectedFrequencyInSecondsValue, generateExpectedFrequencyErrorMessage } = expectedFrequencyMixins.methods;\r\n\r\n@Component({\r\n components: {\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t\t\"v-select-3\": vselect3,\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n \"camera-select\": CameraSelect,\r\n\t\t\"custom-field-modal-table-view\": CustomFieldTableView,\r\n\t\t\"generic-table\": GenericTable,\r\n\t\tResponseActionSetup\r\n\t},\r\n\tfilters: {\r\n truncateString\r\n },\r\n})\r\nexport default class DeviceAlarmSetup extends Mixins(PaginatedSearch, validationMixin, AutomationMixin) {\r\n\t$refs!: {\r\n\t\tcustomFieldTableView: CustomFieldTableView;\r\n\t\tgenericUpdateModal: GenericUpdateModal;\r\n\t\tgenericTable: GenericTable\r\n\t}\r\n\r\n\t@Prop({ default: null })\r\n private selectedServerId: number;\r\n\r\n\t@Prop({ default: false, type: Boolean })\r\n private readonly: boolean;\r\n\r\n @Prop({ default: false, type: Boolean })\r\n private inModal: number;\r\n\r\n\t@Prop({ default: null })\r\n\tprivate selectedGroupId: number;\r\n\r\n\t@Getter(\"getPermissions\")\r\n private permissions: UserPermissions;\r\n\t@Getter(\"getFeaturesList\") featuresList: FeaturesList;\r\n\t@Getter(\"getMaxResponseSlaDuration\") maxResponseSlaDuration: number;\r\n\r\n\t@Devices.State(\"serversList\")\r\n private serversList: ServerDetails[];\r\n\r\n\t@CustomFields.State private alarmCustomFields: CustomFieldDto[];\r\n\t@CustomFields.Action retrieveCustomFields: ({ tableType, live, skipCancel }) => Promise;\r\n\r\n\t@GenericTableStore.Getter getModalRow: any;\r\n\r\n\tprivate totalRecords: number = 0;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate serverModalAlarmLoaded: boolean = false;\r\n\tprivate responses: ResponseRow[] = [];\r\n\tprivate responseScripts: Script[] = [];\r\n private selectedResponseActions: ResponseAction[] = [];\r\n\tprivate selectedResponse: ResponseRow = null;\r\n\tprivate serverTypeEvents: ServerTypeEvent[] = [];\r\n private maxNumInputValue: number = 2147483647;\r\n private showModal: boolean = false;\r\n private responseActionEdited: boolean = false;\r\n\tprivate modalIsOpen: boolean = false;\r\n\r\n\tprivate readonly customFieldTableType: number = CustomFieldTableTypes.Alarm;\r\n\tprivate readonly cancelErrorMessage: string = \"Cancel\";\r\n\r\n\t/**\r\n\t*\t@returns Table columns\r\n\t*/\r\n\r\n private yesNoNotSet: YesNoOption[] = [\r\n {\r\n title: \"Yes\",\r\n value: true\r\n },\r\n {\r\n title: \"No\",\r\n value: false\r\n },\r\n {\r\n title: \"Not set\",\r\n value: null\r\n }\r\n ];\r\n\r\n private alarmGroupingOptions: AlarmGrouping[] = [\r\n {\r\n title: \"By Area\",\r\n isRaiseIndividual: false,\r\n isRaiseGrouped: false\r\n },\r\n {\r\n title: \"By Alarm\",\r\n isRaiseIndividual: false,\r\n isRaiseGrouped: true\r\n },\r\n {\r\n title: \"Not Grouped\",\r\n isRaiseIndividual: true,\r\n isRaiseGrouped: false\r\n },\r\n {\r\n title: \"Not Set\",\r\n isRaiseIndividual: null,\r\n isRaiseGrouped: null\r\n }\r\n ];\r\n\r\n\r\n private get deleteMode(): boolean\r\n {\r\n return this.selectedResponse && this.selectedResponse.deleteMode;\r\n }\r\n\r\n private get responseTitle(): string\r\n {\r\n if (!this.selectedResponse || !this.selectedResponse.responseID)\r\n {\r\n return \"\";\r\n }\r\n\r\n return this.responses.find(r => r.responseID == this.selectedResponse.responseID)?.title;\r\n }\r\n\r\n\tprivate get showAutomations(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]) &&\r\n\t\t(!!this.permissions.canViewAutomations || !!this.permissions.canEditAutomations);\r\n\t}\r\n\r\n\tpublic get isServiceLevelAgreementsEnabled(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Alarms\", \"SLAs\"]);\r\n\t}\r\n\r\n\tprivate get showLinkedCamerasInModal(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"Devices\"]) && !get(this.featuresList, [\"Alarms\", \"CameraAutomation\"]);\r\n\t}\r\n\r\n\tprivate get showMaskDurationLimit(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"Masking\", \"MaxMaskDuration\"], false);\r\n\t}\r\n\r\n\tprivate get isCustomFieldAlarmsEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"CustomFields\", \"Alarms\"]);\r\n\t}\r\n\r\n\tprivate get expectedAlarmFailureEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"AdvancedSetup\", \"ExpectedAlarmFailures\"]);\r\n\t}\r\n\r\n\tpublic get hasCanViewCustomFieldsPermission(): boolean {\r\n\t\treturn this.permissions.canViewCustomFields;\r\n\t}\r\n\r\n\tprivate async mounted(): Promise {\r\n\t\tthis.responseScripts = await api.getResponseScripts();\r\n\r\n\t\tif (this.isCustomFieldAlarmsEnabled) {\r\n\t\t\tawait this.retrieveCustomFields({ tableType: CustomFieldTableTypes.Alarm, live: true, skipCancel: true });\r\n\t\t}\r\n\r\n\t\tawait this.updateResponses();\r\n\t}\r\n\r\n private async putAlarm(response: ResponseRow): Promise\r\n {\r\n if (!response.serverID)\r\n {\r\n response.serverID = this.selectedServerId;\r\n }\r\n\r\n response.isRaiseIndividual = response.grouping.isRaiseIndividual;\r\n response.isRaiseGrouped = response.grouping.isRaiseGrouped;\r\n\r\n\t\tif (this.isCustomFieldAlarmsEnabled) {\r\n\t\t\tresponse.customFields = mapObjectFieldsToArray(response, \"id\", \"value\", \"cf\");\r\n\t\t} else {\r\n\t\t\tresponse.customFields = null;\r\n\t\t}\r\n\r\n\t\tif (this.expectedAlarmFailureEnabled &&\r\n\t\t\tresponse.expectedFrequencyInSeconds != null &&\r\n\t\t\tresponse.expectedFrequencyInSeconds > 0) {\r\n\t\t\tresponse.expectedFrequencyInSeconds *= 60;\r\n\t\t}\r\n\t\telse if (response.expectedFrequencyInSeconds != null &&\r\n\t\t\t\tresponse.expectedFrequencyInSeconds < 1)\r\n\t\t{\r\n\t\t\tresponse.expectedFrequencyInSeconds = null;\r\n\t\t}\r\n\r\n var result = null;\r\n if (!response.responseID)\r\n {\r\n result = await api.createDeviceResponse(response);\r\n }\r\n else\r\n {\r\n result = await api.updateResponse(response);\r\n }\r\n\r\n if (!result || !result.data)\r\n {\r\n return;\r\n }\r\n\r\n this.selectedResponse = result.data;\r\n await this.updateResponseActions(response.responseID, response.responseActions, this.selectedResponseActions);\r\n await this.updateResponses();\r\n this.showModal = false;\r\n this.selectedResponseActions = [];\r\n this.selectedResponse = null;\r\n\t}\r\n\r\n private async updateResponseActions(responseId: number, newResponseActions: ResponseAction[], oldResponseActions: ResponseAction[]){\r\n\t\t// Cant use foreach loop as it does not play nicely with async calls\r\n\t\t// Create/Update responseActions\r\n\t\tif(newResponseActions != null)\r\n\t\t{\r\n\t\t\tfor(let i = 0; i < newResponseActions.length; i++ ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tvar newAutomation = newResponseActions[i];\r\n newAutomation.description = null;\r\n\r\n\r\n\t\t\t\t\t// If we have no response its a new automation\r\n\t\t\t\t\tif(!newAutomation.responseActionID)\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tnewAutomation.responseID = responseId;\r\n\r\n\t\t\t\t\t\tawait api.createAlarmAutomation(responseId, newAutomation);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\r\n\t\t\t\t\t\t// Check to see if changes have been made to an item before we try and hit the backend\r\n\t\t\t\t\t\t// Shallow compare\r\n\t\t\t\t\t\tvar oldAutomation = oldResponseActions.find(r => r.responseActionID == newResponseActions[i].responseActionID)\r\n\r\n\t\t\t\t\t\tvar updated = newAutomation.objectID != oldAutomation.objectID\r\n\t\t\t\t\t\t\t\t\t|| newAutomation.responseActionTypeID != oldAutomation.responseActionTypeID\r\n\t\t\t\t\t\t\t\t\t|| newAutomation.settingsMeta != oldAutomation.settingsMeta\r\n\t\t\t\t\t\tif(updated)\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tawait api.updateAlarmAutomation(responseId, newAutomation);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tcatch (error) {\r\n\t\t\t\t\tthis.$notify({\r\n\t\t\t\t\ttype: \"error\",\r\n\t\t\t\t\ttitle: \"Failed to create/update automation\",\r\n\t\t\t\t\ttext: error.response.data\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Delete responseActions that no longer exist\r\n\t\tif(oldResponseActions && oldResponseActions.length > 0)\r\n\t\t{\r\n\t\t\tfor(let i = 0; i < oldResponseActions.length ; i++)\r\n\t\t\t{\r\n\t\t\t\tif(!newResponseActions.find(r => r.responseActionID == oldResponseActions[i].responseActionID))\r\n\t\t\t\t{\r\n\t\t\t\t\ttry {\r\n await api.deleteAlarmAutomation(this.selectedResponse.responseID, oldResponseActions[i].responseActionID)\r\n }\r\n catch (error) {\r\n this.$notify({\r\n type: \"error\",\r\n title: \"Failed to delete automation\",\r\n text: error.response.data\r\n\t\t\t\t\t });\r\n\t\t\t\t }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n private async deleteAlarm(response: ResponseRow): Promise\r\n {\r\n\t\tawait api.deleteResponse(response.responseID);\r\n\t\tawait this.updateResponses();\r\n\t\tthis.selectedResponse = null;\r\n\t\tthis.showModal = false;\r\n\t}\r\n\r\n private async loadServerTypes(serverId: number): Promise\r\n {\r\n if (!serverId)\r\n {\r\n this.serverTypeEvents = [];\r\n return;\r\n }\r\n\r\n const selectedServer = this.serversList.find(s => s.serverID == serverId);\r\n if (selectedServer)\r\n {\r\n this.serverTypeEvents = (await api.loadServerEventTypes(selectedServer.serverTypeID, null)).data;\r\n }\r\n else\r\n {\r\n this.serverTypeEvents = [];\r\n }\r\n\r\n if (!this.serverTypeEvents)\r\n {\r\n this.serverTypeEvents = []\r\n }\r\n\r\n this.serverTypeEvents.unshift({eventNum: -1, title: \"Default\"});\r\n }\r\n\r\n @Watch(\"selectedServerId\")\r\n\tpublic async updateResponses(paginatedSearchQueryParams?: PaginatedSearchQueryParams): Promise {\r\n\t\ttry\r\n {\r\n\t\t\tthis.isLoading = true;\r\n await this.loadServerTypes(this.selectedServerId);\r\n\r\n const cancellableQuery = this.generateNewPaginatedSearchRequest(paginatedSearchQueryParams);\r\n\r\n\t\t\tif (this.selectedServerId)\r\n {\r\n\t\t\t\tcancellableQuery.params.serverId = this.selectedServerId;\r\n\t\t\t}\r\n\r\n cancellableQuery.params.isEmailAlarms = false;\r\n\r\n\r\n\t\t\tlet result: ResponsesPagedResponse = await api.getResponses(cancellableQuery);\r\n\t\t\tvar responseData: ResponseRow[] = result.data as ResponseRow[];\r\n\r\n\t\t\tif (responseData) {\r\n\t\t\t\tresponseData = responseData.map(response => {\r\n\t\t\t\t\tresponse.readOnly = !!response.groupSyncId && !this.permissions.canOverrideGroupSync && !this.permissions.isSystemAdmin;\r\n response.deleteMode = false;\r\n\r\n\t\t\t\t\tif (this.expectedAlarmFailureEnabled && response.expectedFrequencyInSeconds != null) {\r\n\t\t\t\t\t\tresponse.expectedFrequencyInSeconds /= 60;\r\n\t\t\t\t\t}\r\n\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 }\r\n\r\n\t\t\tthis.totalRecords = result.totalRecords;\r\n\t\t\tthis.isLoading = false\r\n\t\t}\r\n\t\tcatch (ex)\r\n {\r\n\t\t\tif (ex != this.cancelErrorMessage)\r\n\t\t\t{\r\n\t\t\t\tconsole.error(\"Unexpected error searching alarms: \" + ex);\r\n\t\t\t\tthis.isLoading = false;\r\n\t\t\t}\r\n\t\t}\r\n }\r\n\r\n private async openModal(response: ResponseRow, deleteMode: boolean = false): Promise\r\n {\r\n this.selectedResponseActions = []\r\n\r\n if (response)\r\n {\r\n this.selectedResponse = response;\r\n this.selectedResponse.deleteMode = deleteMode;\r\n\r\n if(this.selectedResponse.responseActions)\r\n {\r\n this.selectedResponseActions = this.selectedResponse.responseActions;\r\n }\r\n\r\n\t\t\tif (this.isCustomFieldAlarmsEnabled) {\r\n\t\t\t\tmapArrayFieldsToObject(this.selectedResponse, this.selectedResponse.customFields, this.alarmCustomFields,\"id\", \"value\", \"cf\");\r\n\t\t\t}\r\n }\r\n else\r\n {\r\n this.selectedResponse = {\r\n responseID: null,\r\n groupID: null,\r\n serverTypeEventNum: -1,\r\n title: null,\r\n script: null,\r\n input1: null,\r\n input2: -1,\r\n extraValue: \"\",\r\n priority: null,\r\n grouping: null,\r\n isRaiseIndividual: null,\r\n isRaiseGrouped: null,\r\n linkedCameras: [],\r\n autoHandle: null,\r\n deleteMode: false,\r\n\t\t\t\tresponseActions: [],\r\n maskDurationLimit: null,\r\n\t\t\t\tcustomFields: []\r\n } as ResponseRow\r\n\r\n if (this.selectedServerId)\r\n {\r\n this.selectedResponse.serverID = this.selectedServerId;\r\n }\r\n }\r\n\r\n await this.loadServerTypes(this.selectedResponse.serverID);\r\n this.responseActionEdited = false;\r\n\t\tthis.modalIsOpen = true;\r\n }\r\n\r\n @Watch(\"getModalRow\", { deep:true })\r\n private async serverIdWatch(newResponse: ResponseRow | null, oldResponse: ResponseRow | null): Promise\r\n {\r\n\t\tif (!newResponse.serverID && !this.inModal)\r\n\t\t{\r\n\t\t\tthis.serverTypeEvents = [];\r\n\t\t\tif (this.selectedResponse)\r\n\t\t\t{\r\n\t\t\t\tthis.selectedResponse.serverTypeEventNum = -1;\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (newResponse.serverID != oldResponse?.serverID) {\r\n\t\t\tawait this.loadServerTypes(newResponse.serverID);\r\n\t\t\tif (this.selectedResponse)\r\n\t\t\t{\r\n\t\t\t\tif(!!oldResponse.serverID && newResponse.serverID != oldResponse.serverID) {\r\n\t\t\t\t\tthis.selectedResponse.serverTypeEventNum = -1;\r\n\t\t\t\t\tthis.$refs.genericTable.updateNewEntry(this.selectedResponse, [\"serverTypeEventNum\"]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!this.selectedResponse.responseID)\r\n\t\t\t\t{\r\n\t\t\t\t\tif(!oldResponse.serverID) {\r\n\t\t\t\t\t\tthis.selectedResponse.serverTypeEventNum = -1;\r\n\t\t\t\t\t\tthis.$refs.genericTable.updateNewEntry(this.selectedResponse, [\"serverTypeEventNum\"]);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst server = this.serversList.find(sl => sl.serverID == newResponse.serverID);\r\n\t\t\t\t\tthis.selectedResponse.groupID = server?.groupID;\r\n\t\t\t\t\tthis.$refs.genericTable.updateNewEntry(this.selectedResponse, [\"groupID\"]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.inModal && !this.selectedResponse?.responseID && !this.serverModalAlarmLoaded && this.modalIsOpen) {\r\n\t\t\tthis.setupServerModalAlarm();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setupServerModalAlarm(): void {\r\n\t\tlet newAlarm = {\r\n responseID: null,\r\n\t\t\t\tserverID: this.selectedServerId,\r\n groupID: this.selectedGroupId,\r\n serverTypeEventNum: -1,\r\n title: null,\r\n script: null,\r\n input1: null,\r\n input2: -1,\r\n extraValue: \"\",\r\n priority: null,\r\n grouping: null,\r\n isRaiseIndividual: null,\r\n isRaiseGrouped: null,\r\n linkedCameras: [],\r\n autoHandle: null,\r\n deleteMode: false,\r\n\t\t\t\tresponseActions: [],\r\n maskDurationLimit: null,\r\n\t\t\t\tcustomFields: []\r\n } as ResponseRow;\r\n\t\tthis.selectedResponse.serverID = this.selectedServerId;\r\n\t\tthis.$refs.genericTable.updateNewEntry(newAlarm, [\"serverID\", \"groupID\", \"serverTypeEventNum\"]);\r\n\t\tthis.serverModalAlarmLoaded = true;\r\n\t}\r\n\r\n private responseActionInput(input: ResponseAction[]): void {\r\n this.selectedResponse.responseActions = input;\r\n this.responseActionEdited = true;\r\n }\r\n\r\n\tprivate async openCustomFieldModal(): Promise {\r\n\t\tthis.$refs.customFieldTableView.showCustomFieldModal();\r\n\t}\r\n\r\n\tprivate get genericTableColumns(): TableHeader[] {\r\n\t\tconst GenericTableColumns: TableHeader[] = [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Alarm Name\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 1,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tisTermLabel: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Device\",\r\n\t\t\t\tkey: \"deviceTitle\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 2,\r\n\t\t\t\tsortOrder: 1,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"groupTitle\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 3,\r\n\t\t\t\tsortOrder: 2,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Action Plan\",\r\n\t\t\t\tkey: \"scriptTitle\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 4,\r\n\t\t\t\tsortOrder: 3,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Input 1\",\r\n\t\t\t\tkey: \"input1\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 5,\r\n\t\t\t\tsortOrder: 4,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Input 2\",\r\n\t\t\t\tkey: \"input2\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 6,\r\n\t\t\t\tsortOrder: 5,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Extra Value\",\r\n\t\t\t\tkey: \"extraValue\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 7,\r\n\t\t\t\tsortOrder: 6,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Priority\",\r\n\t\t\t\tkey: \"priority\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 8,\r\n\t\t\t\tsortOrder: 7,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Grouping\",\r\n\t\t\t\tkey: \"grouping\",\r\n\t\t\t\tsortable: true,\r\n\t\t\t\tvisible: true,\r\n\t\t\t\torder: 9,\r\n\t\t\t\tsortOrder: 8,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Linked Camera\",\r\n\t\t\t\tkey: \"linkedCameras\",\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tdisable: !this.showLinkedCamerasInModal,\r\n\t\t\t\torder: 10,\r\n\t\t\t\tsortOrder: 9,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tuseCustomCell: true\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Automations\",\r\n\t\t\t\tkey: \"responseActions\",\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tdisable: !this.showAutomations,\r\n\t\t\t\torder: 11,\r\n\t\t\t\tsortOrder: 10,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tuseCustomCell: true,\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Max Mask Duration (minutes)\",\r\n\t\t\t\tkey: \"maskDurationLimit\",\r\n\t\t\t\tsortable: false,\r\n\t\t\t\tdisable: !this.showMaskDurationLimit,\r\n\t\t\t\torder: 12,\r\n\t\t\t\tsortOrder: 11,\r\n\t\t\t\tsortOrderReversed: false\r\n\t\t\t},\r\n\t\t]\r\n\r\n\t\tif (this.expectedAlarmFailureEnabled)\r\n\t\t{\r\n\t\t\tGenericTableColumns.push({\r\n\t\t\t\ttitle: \"Expected Frequency (in minutes)\",\r\n\t\t\t\tkey: \"expectedFrequencyInSeconds\",\r\n\t\t\t\torder: 11,\r\n\t\t\t\tsortOrder: 0,\r\n\t\t\t\tsortOrderReversed: false,\r\n\t\t\t\tdescription: \"Expected Frequency (in minutes)\",\r\n\t\t\t\tsearchable: false,\r\n\t\t\t\tvisible: true,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn GenericTableColumns\r\n\t}\r\n\r\n\tprivate get modalItems (): ModalItemCSV[]{\r\n\t\tvar modalItems: ModalItemCSV[] = [\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Device\",\r\n\t\t\t\tkey: \"serverID\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tplaceholder: \"Search\",\r\n\t\t\t\tdata: this.serversList,\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 1,\r\n\t\t\t\treadOnlyMethod: (item, row) => this.inModal || !!row.responseID,\r\n\t\t\t\tprops:\r\n\t\t\t\t{\r\n\t\t\t\t\treduce: (sl) => sl.serverID,\r\n\t\t\t\t\tvalue: this.selectedServerId\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Area\",\r\n\t\t\t\tkey: \"groupID\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tplaceholder: \"Select an area\",\r\n\t\t\t\tdata: AreaTreeSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: a => a.id,\r\n\t\t\t\t\tclearable: false,\r\n\t\t\t\t\t\"append-to-body\": true\r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 2\r\n\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Event Type\",\r\n\t\t\t\tkey: \"serverTypeEventNum\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Select an event type\",\r\n\t\t\t\tdata: this.serverTypeEvents,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (ste) => ste.eventNum,\r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 3\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Title\",\r\n\t\t\t\tkey: \"title\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Title\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"title\",\r\n\t\t\t\t\tformatter: (v) => !v ? v : v.substring(0,250)\r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 4\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Action Plan\",\r\n\t\t\t\tkey: \"scriptID\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Select an action plan\",\r\n\t\t\t\tdata: this.responseScripts,\r\n\t\t\t\torder: 5,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (rs) => rs.scriptID,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Input 1\",\r\n\t\t\t\tkey: \"input1\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\tplaceholder: \"Input 1\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"input-1\"\r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tIsDeviceAlarmInput1Valid: helpers.withParams(\r\n\t\t\t\t\t\t{type: \"IsDeviceAlarmInput1Valid\", errorMessage: `Input 1 must be between -1 and ${this.maxNumInputValue}` },\r\n\t\t\t\t\t\tvalue => {\r\n\t\t\t\t\t\t\treturn -1 <= value && value <= this.maxNumInputValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t},\r\n\t\t\t\torder: 6\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Input 2\",\r\n\t\t\t\tkey: \"input2\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\tplaceholder: \"Input 2\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"input-2\"\r\n\t\t\t\t},\r\n\t\t\t\trequired: true,\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tIsDeviceAlarmInput2Valid: helpers.withParams(\r\n\t\t\t\t\t\t{type: \"IsDeviceAlarmInput2Valid\", errorMessage: `Input 2 must be between -1 and ${this.maxNumInputValue}` },\r\n\t\t\t\t\t\tvalue => {\r\n\t\t\t\t\t\t\treturn -1 <= value && value <= this.maxNumInputValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t},\r\n\t\t\t\torder: 7\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Extra Value\",\r\n\t\t\t\tkey: \"extraValue\",\r\n\t\t\t\tdataType: \"text\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Extra Value\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"extra-value\",\r\n\t\t\t\t\tformatter: (v) => !v ? v : v.substring(0,100)\r\n\t\t\t\t},\r\n\t\t\t\torder: 8\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Priority\",\r\n key: \"priority\",\r\n dataType: \"number\",\r\n defaultValue: null,\r\n required: false,\r\n placeholder: \"Enter the alarm priority\",\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"priority\"\r\n\t\t\t\t},\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tIsDeviceAlarmPriorityValid: helpers.withParams(\r\n\t\t\t\t\t\t{type: \"IsDeviceAlarmPriorityValid\", errorMessage: `Priority must be between 0 and ${this.maxNumInputValue}` },\r\n\t\t\t\t\t\tvalue => {\r\n\t\t\t\t\t\t\treturn !value || (0 <= value && value <= this.maxNumInputValue);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t},\r\n\t\t\t\torder: 9\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Linked Cameras\",\r\n\t\t\t\tkey: \"linkedCameras\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tvisible: this.showLinkedCamerasInModal,\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Search all areas\",\r\n\t\t\t\tdata: CameraSelect,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"linkedCameras\",\r\n\t\t\t\t\tmultiple: true\r\n\t\t\t\t},\r\n\t\t\t\torder: 10\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Grouping\",\r\n\t\t\t\tkey: \"grouping\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Select an alarm grouping\",\r\n\t\t\t\tdata: this.alarmGroupingOptions,\r\n\t\t\t\trequired: true,\r\n\t\t\t\torder: 11\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Auto Handle\",\r\n\t\t\t\tkey: \"autoHandle\",\r\n\t\t\t\tdataType: \"vselect3\",\r\n\t\t\t\tmaxLength: 250,\r\n\t\t\t\tplaceholder: \"Select an auto handle setting\",\r\n\t\t\t\tdata: this.yesNoNotSet,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\treduce: (ah) => ah.value,\r\n\t\t\t\t},\r\n\t\t\t\torder: 12\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\ttitle: \"Service Level Agreement (SLA) in Seconds\",\r\n\t\t\t\tkey: \"slaBreachSeconds\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\treadOnly: !(this.isServiceLevelAgreementsEnabled && this.permissions.canEditSLAs),\r\n\t\t\t\tvisible: this.isServiceLevelAgreementsEnabled && (this.permissions.canViewSLAs || this.permissions.canEditSLAs),\r\n\t\t\t\tplaceholder: 'Enter the number of seconds permitted before an alarm breaches the SLA.',\r\n\t\t\t\tdefaultValue: null,\r\n\t\t\t\tmin: 0,\r\n\t\t\t\tcsvComponent: 'number',\r\n\t\t\t\tcsvValidation: {\r\n\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tisValid: validateSlaBreachSecondsValue(currentElement.csvValue, this.maxResponseSlaDuration)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tisSlaValueValid: helpers.withParams(\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\ttype: \"isSlaValueValid\",\r\n\t\t\t\t\t\t\terrorMessage: generateErrorMessage(this.maxResponseSlaDuration)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t(value) => {\r\n\t\t\t\t\t\t\treturn validateSlaBreachSecondsValue(value, this.maxResponseSlaDuration)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t},\r\n\t\t\t\torder: 13,\r\n\t\t\t},\r\n\t\t] as ModalItemCSV[];\r\n\r\n\t\tif (this.showAutomations && this.selectedResponse?.responseID && this.selectedResponse.responseID > 0) {\r\n\t\t\tvar automationsModalItem: ModalItemCSV = {\r\n\t\t\t\ttitle: \"Automations\",\r\n\t\t\t\tkey: \"responseActions\",\r\n\t\t\t\tdataType: \"component\",\r\n\t\t\t\tdata: ResponseActionSetup,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tvalue: this.selectedResponse.responseActions,\r\n\t\t\t\t\tgroupID: this.selectedResponse.groupID,\r\n\t\t\t\t\tinput: this.responseActionInput\r\n\t\t\t\t},\r\n\t\t\t\torder: modalItems.length + 1\r\n\t\t\t}\r\n\r\n\t\t\tmodalItems.push(automationsModalItem as ModalItemCSV);\r\n\t\t}\r\n\r\n\t\tif (this.showMaskDurationLimit) {\r\n\t\t\tmodalItems.push({\r\n\t\t\t\ttitle: \"Max Mask Duration (minutes)\",\r\n\t\t\t\tkey: \"maskDurationLimit\",\r\n\t\t\t\tdataType: \"number\",\r\n\t\t\t\tmaxLength: 10,\r\n\t\t\t\tmin: 0,\r\n\t\t\t\tplaceholder: \"Enter the Max Mask Duration\",\r\n\t\t\t\tcsvComponent: 'input',\r\n\t\t\t\tvisible: this.showMaskDurationLimit,\r\n\t\t\t\tdefaultValue: null,\r\n\t\t\t\tprops: {\r\n\t\t\t\t\tid: \"maskDurationLimit\"\r\n\t\t\t\t},\r\n\t\t\t\tvalidations: {\r\n\t\t\t\t\tIsDeviceAlarmMaxMaskingDurationValid: helpers.withParams(\r\n\t\t\t\t\t\t{ type: \"IsDeviceAlarmMaxMaskingDurationValid\", errorMessage: `Max Masking Duration must be between 0 and ${this.maxNumInputValue}` },\r\n\t\t\t\t\t\tvalue => {\r\n\t\t\t\t\t\t\tif (!value || !this.showMaskDurationLimit) {\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn (value >= 0 && value <= 2147483647);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t)\r\n\t\t\t\t},\r\n\t\t\t\torder: modalItems.length + 1,\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (this.expectedAlarmFailureEnabled)\r\n\t\t{\r\n\t\t\tmodalItems.push(\r\n\t\t\t\t{\r\n\t\t\t\t\ttitle: \"Expected Frequency (minutes)\",\r\n\t\t\t\t\tkey: \"expectedFrequencyInSeconds\",\r\n\t\t\t\t\tdataType: \"number\",\r\n\t\t\t\t\tvisible: this.expectedAlarmFailureEnabled,\r\n\t\t\t\t\tplaceholder: 'Enter the number of minutes for Expected Frequency of Timer Tests',\r\n\t\t\t\t\tdefaultValue: null,\r\n\t\t\t\t\tmin: 0,\r\n\t\t\t\t\tmax: Constants.MAX_EXPECTED_FREQUENCY,\r\n\t\t\t\t\torder: modalItems.length + 1,\r\n\t\t\t\t\treadOnlyMethod: (item, row) => !!row.groupSyncId,\r\n\t\t\t\t\tcsvComponent: 'number',\r\n\t\t\t\t\tcsvExclude: !(this.expectedAlarmFailureEnabled),\r\n\t\t\t\t\tcsvValidation: {\r\n\t\t\t\t\t\tvalidationCell: ({ currentElement }) => {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tisValid: validateExpectedFrequencyInSecondsValue(currentElement.csvValue, Constants.MAX_EXPECTED_FREQUENCY)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tvalidations: {\r\n\t\t\t\t\t\tisSlaValueValid: helpers.withParams(\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\ttype: \"isExpectedFrequencyValueValid\",\r\n\t\t\t\t\t\t\t\terrorMessage: generateExpectedFrequencyErrorMessage(Constants.MAX_EXPECTED_FREQUENCY)\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t(value) => {\r\n\t\t\t\t\t\t\t\treturn validateExpectedFrequencyInSecondsValue(value, Constants.MAX_EXPECTED_FREQUENCY)\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (this.isCustomFieldAlarmsEnabled && this.alarmCustomFields != null)\r\n\t\t{\r\n\t\t\tvar shellModalItem: ModalItemCSV = {\r\n\t\t\t\ttitle: \"\",\r\n\t\t\t\tkey: \"\",\r\n\t\t\t\tdataType: \"\",\r\n\t\t\t\treadOnly: false,\r\n\t\t\t\torder: modalItems.length + 1,\r\n\t\t\t\tcsvComponent: null\r\n\t\t\t};\r\n\r\n\t\t\tfor (let i = 0; i < this.alarmCustomFields.length; i++) {\r\n\t\t\t\tlet customField = this.alarmCustomFields[i];\r\n\r\n\t\t\t\tif (this.selectedResponse?.groupSyncId && customField.externalIds && customField.externalIds.length > 0) {\r\n shellModalItem.readOnly = true;\r\n } else {\r\n\t\t\t\t\tshellModalItem.readOnly = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet alarmCustomFieldModalItem = MapCustomFieldToModalItem(this.alarmCustomFields[i], shellModalItem);\r\n\t\t\t\tmodalItems.push(alarmCustomFieldModalItem as ModalItemCSV);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn modalItems;\r\n\t}\r\n\r\n\tprivate onModalClose(): void {\r\n\t\tthis.serverModalAlarmLoaded = false;\r\n\t\tthis.modalIsOpen = false;\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceAlarmSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceAlarmSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeviceAlarmSetup.vue?vue&type=template&id=65f77130&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=65f77130&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 \"65f77130\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{attrs:{\"data-cy\":\"sync-table\"}},[_c('b-row',{staticClass:\"mb-4\"},[_c('b-col',[_c('b-form-input',{attrs:{\"type\":\"search\",\"placeholder\":\"Search...\",\"max\":\"250\",\"data-cy\":\"search\"},on:{\"input\":function($event){return _vm.handleSearchInput($event)}}})],1),(_vm.hasEditPermission)?_c('b-col',{attrs:{\"cols\":\"auto\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"add-button\"},on:{\"click\":function($event){return _vm.handleAddSync()}}},[_vm._v(\"Add Sync\")])],1):_vm._e()],1),(_vm.totalSyncSystems !== 0)?_c('div',{staticClass:\"results-per-page-container\",attrs:{\"data-cy\":\"resultsPerPage\"}},[_c('label',{attrs:{\"for\":\"resultsPerPageInput\"}},[_vm._v(\" Results per page: \")]),_c('b-form-input',{attrs:{\"id\":\"resultsPerPageInput\",\"type\":\"text\",\"size\":\"sm\",\"max\":_vm.recordsPageSizeMax},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.onRecordsPerPageClick()}},model:{value:(_vm.recordsPageSizeUpdated),callback:function ($$v) {_vm.recordsPageSizeUpdated=$$v},expression:\"recordsPageSizeUpdated\"}}),_c('b-button',{attrs:{\"id\":\"resultsPerPageButton\",\"variant\":\"primary\",\"size\":\"sm\"},on:{\"click\":function($event){return _vm.onRecordsPerPageClick()}}},[_vm._v(\"Update\")])],1):_vm._e(),_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"}},[_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"items\":_vm.syncsToDisplay,\"fields\":_vm.fields,\"hover\":\"\",\"head-variant\":\"dark\",\"no-local-sorting\":true,\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc},on:{\"sort-changed\":_vm.onSortChange},scopedSlots:_vm._u([{key:\"cell(actions)\",fn:function(row){return [(row.item.readonly && row.item.serverId)?_c('i',{staticClass:\"fas fa-eye hover-icon\",attrs:{\"title\":\"View\",\"data-cy\":\"view-button\"},on:{\"click\":function($event){return _vm.handleEditClick(row.item)}}}):(!row.item.serverId)?_c('p',[_vm._v(\"Sync does not have a configured device\")]):_c('span',[_c('i',{staticClass:\"fas fa-edit hover-icon\",attrs:{\"title\":\"Edit\",\"data-cy\":\"edit-button\"},on:{\"click\":function($event){return _vm.handleEditClick(row.item)}}}),_c('i',{staticClass:\"fas fa-trash hover-icon mx-1\",attrs:{\"title\":\"Delete\",\"data-cy\":\"delete-button\"},on:{\"click\":function($event){return _vm.handleDeleteClick(row.item)}}})])]}}],null,false,991433962)}),_c('b-overlay',{attrs:{\"show\":_vm.isLoading,\"variant\":\"dark\",\"no-wrap\":\"\"},scopedSlots:_vm._u([{key:\"overlay\",fn:function(){return [_c('div',{staticClass:\"text-center\",staticStyle:{\"font-size\":\"18px\"}},[_c('span',[_vm._v(\" Loading... \"),_c('i',{staticClass:\"fa fa-spin fa-spinner\"})])])]},proxy:true}],null,false,89047354)})],1),(_vm.totalSyncSystems > 0)?_c('b-pagination',{staticClass:\"pagination\",attrs:{\"total-rows\":_vm.totalSyncSystems,\"per-page\":_vm.recordsPageSize,\"align\":\"center\",\"data-cy\":\"pagination\",\"disabled\":_vm.totalSyncSystems < _vm.recordsPageSize},on:{\"input\":_vm.onPageClick},model:{value:(_vm.recordsPage),callback:function ($$v) {_vm.recordsPage=$$v},expression:\"recordsPage\"}}):_vm._e(),(_vm.showDeleteModal)?_c('b-modal',{attrs:{\"visible\":\"\",\"size\":\"lg\",\"centered\":\"\",\"header-class\":\"delete-confirm-modal\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"data-cy\":\"delete-sync-modal\"},scopedSlots:_vm._u([{key:\"modal-footer\",fn:function(){return [_c('b-button',{attrs:{\"variant\":\"danger\",\"data-cy\":\"confirm-delete-button\"},on:{\"click\":function($event){return _vm.confirmDelete(_vm.selectedSync.syncSystemId)}}},[_vm._v(\" Delete \")]),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"close-button\"},on:{\"click\":function($event){return _vm.closeDeleteModal()}}},[_vm._v(\" Cancel \")])]},proxy:true}],null,false,836743636)},[_c('template',{staticClass:\"d-flex align-items-center\",slot:\"modal-header\"},[_c('div',{staticClass:\"d-flex align-items-center\"},[_c('i',{staticClass:\"fas fa-trash text-danger mr-2\"}),_c('h4',[_vm._v(\"Delete Sync\")])])]),_c('b-row',{staticClass:\"ml-1\"},[_c('h5',[_vm._v(\" Are you sure you want to delete the Sync \"),_c('strong',[_vm._v(\"\\\"\"+_vm._s(_vm.selectedSync.title)+\"\\\"?\")])])]),_c('b-row',{staticClass:\"ml-3\"},[_c('h5',{staticClass:\"mt-2\"},[_vm._v(\"This action will:\")])]),_c('b-row',{staticClass:\"ml-4\"},[_c('ul',[_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"areas\")]),_vm._v(\" associated with this sync device\")]),_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"attached cameras\")]),_vm._v(\" associated with this sync device\")]),_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"audios\")]),_vm._v(\" associated with this sync device\")]),_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"doors\")]),_vm._v(\" associated with this sync device\")]),_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"outputs\")]),_vm._v(\" associated with this sync device\")]),_c('li',[_vm._v(\"Stop syncing of all \"),_c('strong',[_vm._v(\"alarms\")]),_vm._v(\" associated with this sync device\")])])])],2):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Prop, Vue, Watch } from \"vue-property-decorator\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport { SyncSystem, ServerType, ServerDetails, ServerModalStartTab } from \"@/store/devices/types\";\r\nimport {\r\n\tCancellableQuery,\r\n\tPaginatedSearchQueryParams,\r\n\tUserPermissions,\r\n\tVueBootstrapField,\r\n\tVueBootstrapFieldTableSortEvent\r\n} from \"@/store/types\";\r\nimport { getNewServerDetailsTemplate } from \"@/store/devices/templates\";\r\nimport api from \"@/services/api.service\";\r\nimport { CancelTokenSource } from \"axios\";\r\nimport { getNewCancelTokenSource } from \"@/utils/cancellableQueryHelper\";\r\nimport { debounce } from \"lodash\";\r\nimport { getDebouncePeriod } from \"@/utils/debounce-helper\";\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\ninterface SyncSystemRow extends SyncSystem {\r\n\treadonly?: boolean;\r\n}\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar\r\n\t}\r\n})\r\nexport default class SyncTable extends Vue {\r\n\t@Prop({ required: false, default: false, type: Boolean })\r\n\tprivate visible: boolean;\r\n\r\n\t@Devices.State private syncSystems: SyncSystem[];\r\n\t@Devices.State private totalSyncSystems: number;\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\t@Devices.State private serversList: ServerDetails[];\r\n\r\n\t@Devices.Action private fetchSyncSystems: (\r\n\t\tparams: CancellableQuery\r\n\t) => Promise;\r\n\t@Devices.Action private fetchSyncSystemCount: () => Promise\r\n\t@Devices.Action private getServers: () => Promise;\r\n\t@Devices.Mutation private setCurrentServer: (server: ServerDetails) => void;\r\n\t@Devices.Mutation private setServerModalStartTab: (startTab: ServerModalStartTab) => void;\r\n\t@Devices.Mutation setServerModalVisible: (IsVisible: boolean) => void;\r\n\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\r\n\tprivate searchTerm: string = null;\r\n\tprivate recordsPage: number = 1;\r\n\tprivate recordsPageSize: number = 25;\r\n\tprivate recordsPageSizeMax: number = 200;\r\n\tprivate recordsPageSizeUpdated: number = this.recordsPageSize;\r\n\tprivate sortBy: string = \"title\";\r\n\tprivate sortDesc: boolean = false;\r\n\tprivate isLoading: boolean = false;\r\n\tprivate selectedSync: SyncSystem = null;\r\n\tprivate showDeleteModal: boolean = false;\r\n\tprivate axiosCancelTokenSource: CancelTokenSource = null;\r\n\r\n\tprivate getServerTypeTitle(serverTypeID: number): string {\r\n\t\treturn this.serverTypes.find(st => st.serverTypeID == serverTypeID)?.title;\r\n\t}\r\n\r\n\tprivate fields: VueBootstrapField[] = [\r\n\t\t{\r\n\t\t\tkey: \"title\",\r\n\t\t\tlabel: \"Title\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"serverTypeId\",\r\n\t\t\tlabel: \"Type\",\r\n\t\t\tformatter: serverTypeId => {\r\n\t\t\t\treturn this.getServerTypeTitle(serverTypeId);\r\n\t\t\t},\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"host\",\r\n\t\t\tlabel: \"Host\",\r\n\t\t\tsortable: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tkey: \"port\",\r\n\t\t\tlabel: \"Port\",\r\n\t\t\tsortable: true\r\n\t\t}\r\n\t];\r\n\r\n\tprivate async created(): Promise {\r\n\t\tif (this.hasEditPermission) {\r\n\t\t\tthis.addEditPermissionsSpecificFields();\r\n\t\t}\r\n\r\n\t\tawait this.getSyncSystems();\r\n\t}\r\n\r\n\tprivate get hasEditPermission(): boolean {\r\n\t\treturn this.permissions.isSystemAdmin || ((this.permissions.isAccountAdmin || this.permissions.canEditSiteSetup) && this.permissions.canOverrideGroupSync);\r\n\t}\r\n\r\n\tprivate addEditPermissionsSpecificFields(): void {\r\n\t\tthis.fields.push({ key: \"actions\", label: \"Actions\", sortable: false, class: \"text-center\" });\r\n\t}\r\n\r\n\tprivate async performSearch(searchTerm: string): Promise {\r\n\t\tthis.searchTerm = searchTerm;\r\n\t\tawait this.getSyncSystems();\r\n\t}\r\n\r\n\tprivate handleSearchInput = debounce(async (searchTerm: string): Promise => {\r\n\t\tawait this.performSearch(searchTerm);\r\n\t}, getDebouncePeriod());\r\n\r\n\tprivate async onSortChange(event: VueBootstrapFieldTableSortEvent): Promise {\r\n\t\tif (!this.visible) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.sortBy = event.sortBy || this.sortBy;\r\n\t\tthis.sortDesc = event.sortDesc;\r\n\r\n\t\tawait this.getSyncSystems();\r\n\t}\r\n\r\n\tprivate async onPageClick(page: number) {\r\n\t\tif (!this.visible || this.isLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.recordsPage = page || this.recordsPage;\r\n\r\n\t\tawait this.getSyncSystems();\r\n\t}\r\n\r\n\tprivate async onRecordsPerPageClick() {\r\n\t\tlet pageSize = +this.recordsPageSizeUpdated;\r\n\r\n\t\tif (pageSize) {\r\n\t\t\tif (pageSize > this.recordsPageSizeMax) {\r\n\t\t\t\tpageSize = this.recordsPageSizeMax;\r\n\t\t\t}\r\n\t\t\tif (pageSize !== this.recordsPageSize) {\r\n\t\t\t\tthis.recordsPage = 1;\r\n\t\t\t}\r\n\t\t\tthis.recordsPageSize = pageSize;\r\n\t\t}\r\n\t\tthis.recordsPageSizeUpdated = this.recordsPageSize;\r\n\t\tawait this.onPageClick(this.recordsPage);\r\n\t}\r\n\r\n\tprivate async getSyncSystems(): Promise {\r\n\t\tthis.isLoading = true;\r\n\r\n\t\tthis.axiosCancelTokenSource = getNewCancelTokenSource(this.axiosCancelTokenSource, true);\r\n\r\n\t\tconst sortBy = this.fields.find(f => f.key === this.sortBy)?.label.replace(/\\s/g, \"\");\r\n\r\n\t\tconst cancellableQuery: CancellableQuery = {\r\n\t\t\tparams: {\r\n\t\t\t\tpage: this.recordsPage,\r\n\t\t\t\tpageSize: this.recordsPageSize,\r\n\t\t\t\tsortBy: sortBy || this.sortBy,\r\n\t\t\t\tsortDesc: this.sortDesc,\r\n\t\t\t\tsearchTerm: this.searchTerm\r\n\t\t\t},\r\n\t\t\tcancelTokenSource: this.axiosCancelTokenSource\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\tawait this.fetchSyncSystems(cancellableQuery);\r\n\t\t} catch (e) {\r\n\t\t\tthis.$notify({\r\n\t\t\t\ttype: \"error\",\r\n\t\t\t\ttitle: \"Error loading sync systems\",\r\n\t\t\t\ttext: `Unable to load sync systems`\r\n\t\t\t});\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tthis.isLoading = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get syncsToDisplay(): SyncSystemRow[] {\r\n\t\treturn this.syncSystems.map((sync: SyncSystemRow) => {\r\n\t\t\tsync.readonly = !this.permissions.canOverrideGroupSync && !this.permissions.isSystemAdmin;\r\n\t\t\treturn sync;\r\n\t\t});\r\n\t}\r\n\r\n\tprivate async getServerForSync(syncSystem: SyncSystem): Promise {\r\n\t\tlet server = this.serversList.find(sl => sl.syncSystemId == syncSystem.syncSystemId);\r\n\t\tif (!server) {\r\n\t\t\tserver = await api.retrieveServer(syncSystem.serverId);\r\n\t\t\tserver.syncSystemId = syncSystem.syncSystemId;\r\n\t\t}\r\n\r\n\t\tlet readOnly = !this.permissions.canOverrideGroupSync && !this.permissions.isSystemAdmin;\r\n\r\n\t\treturn {\r\n\t\t\t...server,\r\n\t\t\treadonly: readOnly,\r\n\t\t\treadonlyMessage: readOnly ? \"You do not have permission to edit Sync Devices\" : null\r\n\t\t}\r\n\t}\r\n\r\n\tprivate openServerModal(server: ServerDetails): void {\r\n\t\tif (!server) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.setServerModalStartTab(ServerModalStartTab.Sync);\r\n\t\tthis.setCurrentServer(server);\r\n\t\tthis.setServerModalVisible(true);\r\n\t}\r\n\r\n\tprivate async handleEditClick(syncSystem: SyncSystem): Promise {\r\n\t\tthis.openServerModal(await this.getServerForSync(syncSystem));\r\n\t}\r\n\r\n\tprivate handleAddSync(): void {\r\n\t\tlet server = getNewServerDetailsTemplate();\r\n\t\tserver.syncSystemId = -1;\r\n\t\tthis.openServerModal(server);\r\n\t}\r\n\r\n\tprivate handleDeleteClick(syncSystem: SyncSystem): void {\r\n\t\tthis.selectedSync = syncSystem;\r\n\t\tthis.showDeleteModal = true;\r\n\t}\r\n\r\n\tprivate closeDeleteModal(): void {\r\n\t\tthis.selectedSync = null;\r\n\t\tthis.showDeleteModal = false;\r\n\t}\r\n\r\n\tprivate async confirmDelete(syncSystemId: number): Promise {\r\n\t\tthis.isLoading = true;\r\n\t\ttry {\r\n\t\t\tthis.selectedSync = null;\r\n\t\t\tthis.showDeleteModal = false;\r\n\t\t\tawait api.deleteSyncSystem(syncSystemId);\r\n\t\t\tawait this.getSyncSystems()\r\n\t\t\tawait this.getServers();\r\n\t\t}\r\n\t\tcatch (err) {\r\n\t\t\tconsole.error(err);\r\n\t\t}\r\n\r\n\t\tthis.isLoading = false;\r\n\t}\r\n\r\n\t@Watch(\"visible\")\r\n\tprivate async onVisibilityChanged(visible: boolean): Promise {\r\n\t\tif (visible) {\r\n\t\t\tthis.searchTerm = null;\r\n\t\t\tawait this.getSyncSystems();\r\n\t\t} else {\r\n\t\t\tawait this.fetchSyncSystemCount();\r\n\t\t}\r\n\t}\r\n}\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SyncTable.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SyncTable.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SyncTable.vue?vue&type=template&id=c6740cb6\"\nimport script from \"./SyncTable.vue?vue&type=script&lang=ts\"\nexport * from \"./SyncTable.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.serverModalOpened)?_c('b-modal',{attrs:{\"visible\":\"\",\"size\":\"xl\",\"static\":\"\",\"no-close-on-backdrop\":\"\",\"no-close-on-esc\":\"\",\"footer-class\":\"mt-3\",\"body-class\":\"modal-overflow thin-scroll\"},scopedSlots:_vm._u([{key:\"modal-header\",fn:function(){return [_c('div',{staticClass:\"d-flex w-100 align-items-center\"},[_c('div',{staticClass:\"flex-grow-1\"},[_c('span',{staticClass:\"h-5\"},[_c('i',{class:_vm.modalIcon}),_vm._v(_vm._s(_vm.modalTitle)+\" \")])]),(_vm.currentServer && _vm.currentServer.readonly && _vm.currentServer.readonlyMessage)?_c('b-alert',{staticClass:\"small-alert\",attrs:{\"show\":\"\"}},[_c('i',{staticClass:\"fas fa-eye mr-1\"}),_vm._v(\" \"+_vm._s(_vm.currentServer.readonlyMessage)+\" \")]):_vm._e(),(_vm.syncSetupEnabled && _vm.currentServer && _vm.currentServer.syncSystemId > 0)?_c('span',[_c('i',{staticClass:\"fas fa-exclamation-triangle text-warning pt-6px\",attrs:{\"id\":\"syncWarning\"}}),_c('b-tooltip',{attrs:{\"target\":\"syncWarning\",\"triggers\":\"hover\",\"variant\":\"warning\"}},[_vm._v(\" This device was added to the system via Sync; any changes may be overwritten. \")])],1):_vm._e(),_c('button',{staticClass:\"close\",attrs:{\"type\":\"button\",\"data-cy\":\"close-edit-modal-button\"},on:{\"click\":function($event){return _vm.handleEditModalCloseClick()}}},[_vm._v(\" × \")])],1)]},proxy:true},{key:\"modal-footer\",fn:function(){return [(_vm.tabIndex === _vm.deviceInfoTabIndex && (!_vm.currentServer ? true : !_vm.currentServer.readonly))?_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"save-server-button\",\"disabled\":_vm.serverModelDetails.invalid},on:{\"click\":function($event){return _vm.handleServerSaveClick()}}},[_vm._v(\" Save \")]):(_vm.tabIndex === 0)?_c('div',{attrs:{\"id\":\"save-sync-container\",\"data-cy\":\"save-sync-div\"}},[_c('b-button',{attrs:{\"variant\":\"primary\",\"data-cy\":\"save-sync-button\",\"disabled\":!_vm.userCanSaveSync},on:{\"click\":function($event){return _vm.handleSyncSaveClick()}}},[_vm._v(\" Save Sync \")])],1):_vm._e(),(_vm.tabIndex === 0 &&\n\t\t\t_vm.isSuiteSyncEnabled &&\n\t\t\t_vm.syncIsSuiteSync &&\n\t\t\t!_vm.userCanConfigureSuiteSync)?_c('b-tooltip',{attrs:{\"target\":\"save-sync-container\",\"triggers\":\"hover\",\"placement\":\"top\",\"data-cy\":\"save-sync-tooltip\"}},[_vm._v(\" You do not have permission to update Suite Syncs \")]):_vm._e(),_c('b-button',{attrs:{\"variant\":\"secondary\",\"data-cy\":\"cancel-button\"},on:{\"click\":function($event){return _vm.handleEditModalCloseClick()}}},[_vm._v(\" \"+_vm._s((_vm.currentServer && _vm.currentServer.readonly) ? \"Close\": \"Cancel\")+\" \")])]},proxy:true}],null,false,633090347)},[_c('b-tabs',{staticClass:\"tab-min-height\",attrs:{\"card\":\"\",\"vertical\":\"\"},model:{value:(_vm.tabIndex),callback:function ($$v) {_vm.tabIndex=$$v},expression:\"tabIndex\"}},[(_vm.syncSetupEnabled && _vm.currentServer && (_vm.currentServer.syncSystemId > 0 || _vm.currentServer.syncSystemId == -1))?_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{attrs:{\"variant\":\"primary\"}},[_vm._v(\" Sync Configuration \")])]},proxy:true}],null,false,3984643270)},[_c('sync-edit',{attrs:{\"data-cy\":\"sync-edit\",\"readonly\":_vm.currentServer.readonly},on:{\"syncDetailsUpdated\":_vm.syncDetailsChanged}})],1):_vm._e(),(_vm.syncSetupEnabled && _vm.currentServer && _vm.currentServer.syncSystemId > 0)?_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{attrs:{\"variant\":\"primary\"}},[_vm._v(\" Syncs \")])]},proxy:true}],null,false,2927907685)},[_c('group-sync',{attrs:{\"readonly\":_vm.currentServer.readonly}})],1):_vm._e(),(_vm.currentServer && _vm.currentServer.syncSystemId != -1)?_c('b-tab',{staticClass:\"py-0\",scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" Device Information \")]},proxy:true}],null,false,3208718185)},[_c('device-edit',{attrs:{\"data-cy\":\"device-edit\"},on:{\"server-model-details-changed\":function($event){return _vm.handleServerModelDetailsChanged($event)}}})],1):_vm._e(),(_vm.showGetConfig && !_vm.syncIsSuiteSync)?_c('b-tab',{attrs:{\"disabled\":_vm.isGetConfigDisabled,\"lazy\":\"\"},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{staticClass:\"hover-icon\",attrs:{\"title\":_vm.getConfigTooltipText}},[_c('i',{staticClass:\"fal fa-cogs\"}),_vm._v(\" Device Configuration \")])]},proxy:true}],null,false,305622545)},[_c('get-config')],1):_vm._e(),(!_vm.syncIsSuiteSync && !_vm.syncIsDeviceSync)?_c('div',_vm._l((_vm.childDeviceTypeIds),function(childDeviceTypeId){return _c('child-device-tab-wrapper',{key:childDeviceTypeId,attrs:{\"isForAllServers\":false,\"visible\":_vm.deviceTabIndex === childDeviceTypeId,\"deviceTypeIdentifier\":childDeviceTypeId,\"readonly\":_vm.currentServer && _vm.currentServer.readonly}})}),1):_vm._e(),(_vm.isEditingServer && !_vm.syncIsSuiteSync && !_vm.syncIsDeviceSync)?_c('b-tab',{scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('span',{class:{ 'disabled-fade': !_vm.allowsAlarms },attrs:{\"title\":_vm.getAlarmTitleText,\"variant\":\"primary\"}},[_vm._v(\" Alarms \"),_c('b-badge',{attrs:{\"variant\":\"secondary\"}},[_vm._v(_vm._s(_vm.alarmCount.toLocaleString()))])],1)]},proxy:true}],null,false,1793211930)},[_c('device-alarm-setup',{attrs:{\"data-cy\":\"responseSetupTable\",\"selectedServerId\":_vm.selectedServerId,\"readonly\":_vm.currentServer && _vm.currentServer.readonly,\"inModal\":\"\"}})],1):_vm._e()],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vue-perfect-scrollbar',{staticClass:\"scroll-area\"},[_c('b-row',{staticClass:\"mx-0 mb-2\"},[_c('b-col',[_c('b-card',{attrs:{\"header\":(\"Device\" + (_vm.selectedServer.serverID ? ' ' + _vm.selectedServer.serverID : '') + \" Details\"),\"header-class\":\"h4\"}},[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"title\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Title: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('b-form-input',{attrs:{\"id\":\"title\",\"placeholder\":\"Title\",\"readonly\":_vm.readonly},model:{value:(_vm.selectedServer.title),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"title\", $$v)},expression:\"selectedServer.title\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"area\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Area: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('area-tree-select',{staticClass:\"flex-search w-100 mt-2\",attrs:{\"readonly\":_vm.readonly,\"reduce\":function (group) { return group.id; },\"appendToBody\":\"\"},on:{\"component-loaded\":_vm.areaSelectComponentLoaded},model:{value:(_vm.selectedServer.groupID),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"groupID\", $$v)},expression:\"selectedServer.groupID\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"type\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Type: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('v-select-3',{attrs:{\"options\":_vm.sortedServerTypes,\"placeholder\":\"Search\",\"label\":\"title\",\"reduce\":function (serverType) { return serverType.serverTypeID; },\"appendToBody\":\"\",\"disabled\":_vm.readonly},model:{value:(_vm.selectedServer.serverTypeID),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"serverTypeID\", $$v)},expression:\"selectedServer.serverTypeID\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no types were found.\")])])],2)],1),(_vm.isApplianceEnabled && !_vm.readonly)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"ops-link\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Ops Link: \"),(_vm.isApplianceOnly)?_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")]):_vm._e()]),_c('appliance-list',{model:{value:(_vm.selectedServer.applianceId),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"applianceId\", $$v)},expression:\"selectedServer.applianceId\"}}),(_vm.applianceHasFailedOver)?_c('div',{attrs:{\"data-cy\":\"post-failover-message-device\"}},[_c('span',{staticClass:\"text-danger\"},[_vm._v(\"This device has moved to a Secondary Ops Link.\")]),_c('br')]):_vm._e(),_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360013622797-Ops-Link\",\"target\":\"_blank\"}},[_vm._v(\"More Information\")])],2)],1):_vm._e(),(_vm.isFailoverEnabled && !_vm.readonly)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"primary-appliance\",\"label-cols-lg\":\"2\",\"data-cy\":\"primary-ops-link\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Primary Ops Link: \")]),_c('appliance-list',{attrs:{\"readonly\":\"\"},model:{value:(_vm.selectedServer.primaryApplianceId),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"primaryApplianceId\", $$v)},expression:\"selectedServer.primaryApplianceId\"}})],2)],1):_vm._e(),(_vm.isFailoverEnabled && !_vm.readonly)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"secondary-appliance\",\"label-cols-lg\":\"2\",\"data-cy\":\"secondary-ops-link\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Secondary Ops Link: \")]),_c('appliance-list',{model:{value:(_vm.selectedServer.secondaryApplianceId),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"secondaryApplianceId\", $$v)},expression:\"selectedServer.secondaryApplianceId\"}}),(_vm.appliancesMatch && !_vm.applianceHasFailedOver)?_c('div',[_c('span',{staticClass:\"text-danger\"},[_vm._v(\"Secondary Ops Link cannot be the same as the Ops Link\")]),_c('br')]):_vm._e()],2)],1):_vm._e(),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Host:\",\"label-for\":\"host\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"host\",\"placeholder\":\"Host\",\"disabled\":_vm.serverTypeIsAlarmPanel,\"readonly\":(_vm.isApplianceOnly && _vm.isApplianceSelected) || _vm.readonly},model:{value:(_vm.selectedServer.host),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"host\", $$v)},expression:\"selectedServer.host\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Port:\",\"label-for\":\"port\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"port\",\"placeholder\":\"Port\",\"type\":\"number\",\"disabled\":_vm.serverTypeIsAlarmPanel,\"readonly\":(_vm.isApplianceOnly && _vm.isApplianceSelected) || _vm.readonly},model:{value:(_vm.selectedServer.port),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"port\", $$v)},expression:\"selectedServer.port\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Username:\",\"label-for\":\"username\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"autocomplete\":\"new-password\",\"id\":\"username\",\"placeholder\":\"Username\",\"disabled\":_vm.serverTypeIsAlarmPanel,\"readonly\":(_vm.isApplianceOnly && _vm.isApplianceSelected) || _vm.readonly},model:{value:(_vm.selectedServer.username),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"username\", $$v)},expression:\"selectedServer.username\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Password:\",\"label-for\":\"password\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"autocomplete\":\"new-password\",\"id\":\"password\",\"placeholder\":\"Password\",\"type\":\"password\",\"disabled\":_vm.serverTypeIsAlarmPanel,\"readonly\":(_vm.isApplianceOnly && _vm.isApplianceSelected) || _vm.readonly},model:{value:(_vm.selectedServer.password),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"password\", $$v)},expression:\"selectedServer.password\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":_vm.extraValueLabel,\"label-for\":\"extraValue\",\"label-cols-lg\":\"2\",\"data-cy\":\"extra-value-form-group\"}},[_c('b-form-input',{attrs:{\"id\":\"extraValue\",\"placeholder\":_vm.extraValuePlaceholder,\"value\":_vm.extraValue,\"readonly\":_vm.readonly},on:{\"input\":_vm.updateExtraValue}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Alarm Grouping:\",\"label-for\":\"alarm-grouping\",\"label-cols-lg\":\"2\"}},[_c('v-select-3',{attrs:{\"options\":_vm.alarmGroupingOptions,\"label\":\"title\",\"placeholder\":\"Search\",\"appendToBody\":\"\",\"data-cy\":\"alarm-grouping-select\",\"disabled\":_vm.readonly},on:{\"input\":function($event){return _vm.handleAlarmGroupingSelected()}},model:{value:(_vm.alarmGrouping),callback:function ($$v) {_vm.alarmGrouping=$$v},expression:\"alarmGrouping\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no grouping option was found.\")])])],1)],1),(_vm.isSlaEnabled && (this.permissions.canViewSLAs || this.permissions.canEditSLAs))?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Service Level Agreement (SLA) in Seconds:\",\"label-for\":\"slaBreachSeconds\",\"label-cols-lg\":\"2\",\"data-cy\":\"sla-form-group\",\"state\":_vm.isSlaBreachSecondsValid,\"invalid-feedback\":_vm.slaBreachSecondsErrorMessage}},[_c('b-form-input',{attrs:{\"id\":\"slaBreachSeconds\",\"type\":\"number\",\"placeholder\":'Enter the number of seconds permitted before an alarm breaches the SLA.',\"value\":_vm.extraValue,\"readonly\":!(_vm.isSlaEnabled && _vm.permissions.canEditSLAs),\"data-cy\":\"sla-form-input\"},model:{value:(_vm.selectedServer.slaBreachSeconds),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"slaBreachSeconds\", $$v)},expression:\"selectedServer.slaBreachSeconds\"}})],1)],1):_vm._e()],1)],1),_c('b-col',[_c('b-card',{staticClass:\"mb-3\",attrs:{\"header\":\"Additional Details\",\"header-class\":\"h4\"}},[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Log disarmed alarms:\",\"label-for\":\"logDisarmedAlarms\",\"label-cols-lg\":\"3\"}},[_c('b-form-checkbox',{attrs:{\"id\":\"logDisarmedAlarms\",\"disabled\":_vm.readonly},model:{value:(_vm.selectedServer.logDisarmedAlarms),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"logDisarmedAlarms\", $$v)},expression:\"selectedServer.logDisarmedAlarms\"}})],1)],1),(_vm.serverTypeIsAlarmPanel)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Line profile:\",\"label-for\":\"lineProfile\",\"label-cols-lg\":\"3\",\"data-cy\":\"line-profile\"}},[_c('v-select-3',{attrs:{\"options\":_vm.serverLineProfiles,\"label\":\"title\",\"placeholder\":\"Search\",\"reduce\":function (serverLineProfile) { return serverLineProfile.serverLineProfileId; },\"appendToBody\":\"\",\"disabled\":_vm.readonly},model:{value:(_vm.selectedServer.serverLineProfileId),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"serverLineProfileId\", $$v)},expression:\"selectedServer.serverLineProfileId\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no line profile was found.\")])])],1)],1):_vm._e(),(_vm.serverTypeIsAlarmPanel)?_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Account number:\",\"label-for\":\"accountNumber\",\"label-cols-lg\":\"3\",\"data-cy\":\"account-number\"}},[_c('b-form-input',{attrs:{\"id\":\"accountNumber\",\"placeholder\":\"Account Number\",\"readonly\":_vm.readonly},model:{value:(_vm.selectedServer.accountNumber),callback:function ($$v) {_vm.$set(_vm.selectedServer, \"accountNumber\", $$v)},expression:\"selectedServer.accountNumber\"}})],1)],1):_vm._e(),(_vm.isCustomFieldServersEnabled && _vm.canViewCustomFieldsPermission)?_c('custom-defined-field-input',{attrs:{\"data-cy\":\"custom-defined-field-input-component\",\"customFieldTableTypeId\":this.customFieldTableType,\"customFieldValues\":this.customFieldValues},on:{\"CFValueListChanged\":_vm.onCustomFieldsChanged}}):_vm._e()],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { Component, Emit, Mixins, Watch } from \"vue-property-decorator\";\r\nimport { validationMixin } from \"vuelidate\";\r\nimport { namespace, Getter } from \"vuex-class\";\r\nimport VuePerfectScrollbar from \"vue-perfect-scrollbar\";\r\nimport vselect3 from \"vselect3\";\r\nimport { maxLength, minValue, required, requiredIf } from \"vuelidate/lib/validators\";\r\nimport { isEqualWith, get } from \"lodash\";\r\n\r\nimport { ServerModelDetails } from \"@/components/device-setup/ServerModal.vue\";\r\nimport { ServerDetails, ServerLineProfile, ServerType } from \"@/store/devices/types\";\r\nimport AreaTreeSelect from \"@/components/form/AreaTreeSelect.vue\";\r\nimport ApplianceList from \"@/components/devices/ApplianceList.vue\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { serviceLevelAgreementMixins } from '@/mixins';\r\nimport CustomDefinedFieldInput from '@/components/custom-fields/CustomDefinedFieldInput.vue'\r\nimport { CustomFieldTableTypes, CustomFieldValues, CustomFieldDto } from \"@/store/custom-fields/types\";\r\nimport { hasEmptyRequiredCustomFields, hasInvalidCustomFieldValues } from \"@/utils/CustomFieldLogic\";\r\n\r\nconst Devices = namespace(\"devices\");\r\nconst CustomFields = namespace(\"customFields\");\r\n\r\nconst AlarmGroupingNone: string = \"No Grouping\";\r\nconst AlarmGroupingResponse: string = \"By Response\";\r\nconst AlarmGroupingDefault: string = \"By Area\";\r\n\r\nconst { validateSlaBreachSecondsValue, generateErrorMessage } = serviceLevelAgreementMixins.methods;\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"area-tree-select\": AreaTreeSelect,\r\n\t\t\"v-select-3\": vselect3,\r\n\t\t\"vue-perfect-scrollbar\": VuePerfectScrollbar,\r\n\t\t\"appliance-list\": ApplianceList,\r\n\t\t\"custom-defined-field-input\": CustomDefinedFieldInput\r\n\t},\r\n\tvalidations: {\r\n\t\tselectedServer: {\r\n\t\t\tgroupID: { required, minValue: minValue(1) },\r\n\t\t\tserverTypeID: { required, minValue: minValue(1) },\r\n\t\t\ttitle: { required },\r\n\t\t\tapplianceId: { required: requiredIf(function () {\r\n\t\t\t\treturn this.isApplianceOnly;\r\n\t\t\t})},\r\n\t\t\taccountNumber: { maxLength: maxLength(20) },\r\n\t\t},\r\n\t\thasDataChanged: {\r\n\t\t\trequired: requiredIf(function () {\r\n\t\t\t\tconst selectedServerWithValidationFieldsOnly = {\r\n\t\t\t\t\t...this.selectedServer,\r\n\t\t\t\t\tdeviceTypeCounts: null,\r\n\t\t\t\t};\r\n\r\n\t\t\t\tconst storeServerWithValidationFieldsOnly = {\r\n\t\t\t\t\t...this.currentServer,\r\n\t\t\t\t\tdeviceTypeCounts: null,\r\n\t\t\t\t};\r\n\r\n\t\t\t\treturn isEqualWith(\r\n\t\t\t\t\tselectedServerWithValidationFieldsOnly,\r\n\t\t\t\t\tstoreServerWithValidationFieldsOnly,\r\n\t\t\t\t\t(propFromSelectedServer, propFromStoreServer) => {\r\n\t\t\t\t\t\tif (\r\n\t\t\t\t\t\t\t(propFromSelectedServer === null || propFromSelectedServer === \"\") &&\r\n\t\t\t\t\t\t\t(propFromStoreServer === null || propFromStoreServer === \"\")\r\n\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}),\r\n\t\t},\r\n\t},\r\n})\r\nexport default class DeviceEdit extends Mixins(validationMixin) {\r\n\t@Getter(\"getFeaturesList\") private featuresList: FeaturesList;\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\t@Devices.Action private getDeviceTypeCounts: (serverId: number | null) => Promise;\r\n\t@Devices.State private currentServer: ServerDetails;\r\n\t@Devices.State private serverLineProfiles: ServerLineProfile[];\r\n\t@Devices.State private serverTypes: ServerType[];\r\n\t@Devices.Mutation private setExtraValue: (extraValue: string) => void;\r\n\t@Devices.Getter(\"getSortedServerTypes\") private sortedServerTypes: ServerType[];\r\n\t@Getter(\"getMaxResponseSlaDuration\") maxResponseSlaDuration: number;\r\n\r\n\t@CustomFields.State private serverCustomFields: CustomFieldDto[];\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\tprivate readonly customFieldTableType: number = CustomFieldTableTypes.Server;\r\n\tprivate customFieldValues: CustomFieldValues[] = [];\r\n\r\n\tprivate async created(): Promise {\r\n\t\tthis.selectedServer = { ...this.currentServer };\r\n\t\tthis.customFieldValues = this.selectedServer.customFields;\r\n\r\n\t\tif (this.isEditing) {\r\n\t\t\tthis.setAlarmGroupingOption();\r\n\t\t\tawait this.getDeviceTypeCounts(this.selectedServer.serverID); // Triggers re-render, subsequent state changes may cause race condition\r\n\t\t}\r\n\r\n\t\tthis.deviceEditLoaded = true;\r\n\t}\r\n\r\n\tprivate updateExtraValue(ev) {\r\n\t\tthis.setExtraValue(ev);\r\n\t}\r\n\r\n\tprivate setAlarmGroupingOption(): void {\r\n\t\tif (this.selectedServer.isRaiseIndividual) {\r\n\t\t\tthis.alarmGrouping = AlarmGroupingNone;\r\n\t\t} else if (this.selectedServer.isRaiseGrouped) {\r\n\t\t\tthis.alarmGrouping = AlarmGroupingResponse;\r\n\t\t} else {\r\n\t\t\tthis.alarmGrouping = AlarmGroupingDefault;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"componentLoaded\")\r\n\tprivate onComponentLoaded(newValue: boolean, oldValue: boolean) {\r\n\t\tif (newValue && newValue != oldValue) {\r\n\t\t\tthis.$emit(\"component-loaded\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get componentLoaded(): boolean {\r\n\t\treturn this.deviceEditLoaded && this.areaSelectLoaded;\r\n\t}\r\n\r\n\tprivate get isEditing(): boolean {\r\n\t\treturn this.selectedServer.serverID > 0;\r\n\t}\r\n\r\n\tprivate get alarmGroupingOptions(): string[] {\r\n\t\treturn [AlarmGroupingNone, AlarmGroupingResponse, AlarmGroupingDefault];\r\n\t}\r\n\r\n\tprivate handleAlarmGroupingSelected(): void {\r\n\t\tswitch (this.alarmGrouping) {\r\n\t\t\tcase AlarmGroupingNone:\r\n\t\t\t\tthis.selectedServer.isRaiseIndividual = true;\r\n\t\t\t\tthis.selectedServer.isRaiseGrouped = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase AlarmGroupingResponse:\r\n\t\t\t\tthis.selectedServer.isRaiseIndividual = false;\r\n\t\t\t\tthis.selectedServer.isRaiseGrouped = true;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tthis.selectedServer.isRaiseIndividual = false;\r\n\t\t\t\tthis.selectedServer.isRaiseGrouped = false;\r\n\t\t}\r\n\t}\r\n\r\n\t@Watch(\"selectedServer\", { deep: true })\r\n\t@Watch(\"currentServer\", { deep: true })\r\n\t@Emit(\"server-model-details-changed\")\r\n\tprivate handleServerDetailsChanged(): ServerModelDetails {\r\n\t\tlet invalid = this.$v.$invalid;\r\n\r\n\t\tif (this.isFailoverEnabled) {\r\n\t\t\tinvalid = this.$v.$invalid || !this.appliancesValid;\r\n\r\n\t\t\tif (this.selectedServer.applianceId != null && this.selectedServer.primaryApplianceId == null) {\r\n\t\t\t\tthis.selectedServer.primaryApplianceId = this.selectedServer.applianceId;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tinvalid: invalid || this.areManuallyValidatedFieldsInvalid(),\r\n\t\t\tselectedServer: this.selectedServer\r\n\t\t};\r\n\t}\r\n\r\n\tprivate areManuallyValidatedFieldsInvalid(): boolean {\r\n\t\treturn !this.isSlaBreachSecondsValid || this.areCustomFieldValuesInvalid();\r\n\t}\r\n\r\n\tprivate get isSlaBreachSecondsValid(): boolean {\r\n\t\t// Only consider current value if feature enabled and editing permission enabled\r\n\t\tif (this.isSlaEnabled && this.permissions.canEditSLAs) {\r\n\t\t\treturn validateSlaBreachSecondsValue(this.selectedServer.slaBreachSeconds, this.maxResponseSlaDuration);\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate get slaBreachSecondsErrorMessage(): string {\r\n\t\treturn generateErrorMessage(this.maxResponseSlaDuration);\r\n\t}\r\n\r\n\t/*\r\n\t\tINVALID CASES for Secondary Ops Link\r\n\t\t1. applianceId is not set and secondaryId is set\r\n\t\t\t- this.InvalidSecondaryAppliance\r\n\t\t2. applianceId is the same as the secondaryId BUT a fail over has NOT occurred (applianceId is the same as PrimaryApplianceId)\r\n\t\t\t- this.appliancesMatch && !this.applianceHasFailedOver\r\n\t*/\r\n\r\n\tprivate get appliancesValid(): boolean {\r\n\t\treturn (!this.appliancesMatch && !this.InvalidSecondaryAppliance) || (this.appliancesMatch && this.applianceHasFailedOver) && !this.InvalidSecondaryAppliance;\r\n\t}\r\n\r\n\t// The ApplianceId and the SecondaryApplianceId are the same\r\n\tprivate get appliancesMatch(): boolean {\r\n\t\treturn this.selectedServer?.applianceId != null && this.selectedServer?.applianceId == this.selectedServer?.secondaryApplianceId;\r\n\t}\r\n\r\n\t// The Appliance PrimaryApplianceId is different form the current ApplianceId\r\n\tprivate get applianceHasFailedOver(): boolean {\r\n\t\treturn this.selectedServer?.applianceId != null &&\r\n\t\t\tthis.selectedServer?.primaryApplianceId != null &&\r\n\t\t\tthis.selectedServer?.applianceId != this.selectedServer?.primaryApplianceId;\r\n\t}\r\n\r\n\t// A SecondaryApplianceId has been set without an ApplianceId\r\n\tprivate get InvalidSecondaryAppliance(): boolean {\r\n\t\treturn this.selectedServer?.applianceId == null && this.selectedServer?.secondaryApplianceId != null;\r\n\t}\r\n\r\n\tprivate get extraValueLabel(): string {\r\n\t\treturn `${this.extraValuePlaceholder}:`;\r\n\t}\r\n\r\n\tprivate get extraValuePlaceholder(): string {\r\n\t\tconst serverType = this.selectedServerType;\r\n\r\n\t\tif (serverType && serverType.extraValueName) {\r\n\t\t\treturn serverType.extraValueName;\r\n\t\t}\r\n\r\n\t\treturn \"Extra Value\";\r\n\t}\r\n\r\n\tprivate get selectedServerType(): ServerType {\r\n\t\treturn this.serverTypes.find((st) => st.serverTypeID === this.selectedServer.serverTypeID);\r\n\t}\r\n\r\n\tprivate get serverTypeIsAlarmPanel(): boolean {\r\n\t\tconst serverType = this.selectedServerType;\r\n\r\n\t\tif (serverType && serverType.isAlarmPanel) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tprivate areaSelectComponentLoaded(): void {\r\n\t\tthis.areaSelectLoaded = true;\r\n\t}\r\n\r\n\tpublic get extraValue(): string {\r\n\t\tif (this.currentServer) {\r\n\t\t\treturn this.currentServer.extraValue;\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tprivate get isApplianceEnabled() {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"Appliances\"]);\r\n\t}\r\n\r\n\tprivate get isApplianceOnly() {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"Appliances\", \"ApplianceOnly\"]);\r\n\t}\r\n\r\n\tprivate get isApplianceSelected() {\r\n\t\treturn !!this.selectedServer.applianceId;\r\n\t}\r\n\r\n\tprivate get isSlaEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Alarms\", \"SLAs\"]);\r\n\t}\r\n\r\n\tprivate get readonly(): boolean {\r\n\t\treturn this.selectedServer && !!this.selectedServer.readonly\r\n\t}\r\n\r\n\tprivate get isFailoverEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"AdvancedSetup\", \"ApplianceFailover\"]) && (this.permissions.canFailOverAppliance || this.permissions.isSystemAdmin) && this.isApplianceEnabled;\r\n\t}\r\n\r\n\tprivate get isCustomFieldServersEnabled(): boolean {\r\n\t\treturn !!get(this.featuresList, [\"CustomFields\", \"Servers\"]);\r\n\t}\r\n\r\n\tpublic get canViewCustomFieldsPermission(): boolean {\r\n\t\treturn this.permissions.canViewCustomFields;\r\n\t}\r\n\r\n\tprivate onCustomFieldsChanged(updatedFields: CustomFieldValues[]): void {\r\n\t\tthis.selectedServer.customFields = [...updatedFields];\r\n\t}\r\n\r\n\tprivate areCustomFieldValuesInvalid(): boolean {\r\n\t\t// Only consider current values if feature enabled\r\n\t\tif (this.isCustomFieldServersEnabled) {\r\n\t\t\treturn hasEmptyRequiredCustomFields(this.selectedServer.customFields, this.serverCustomFields) || hasInvalidCustomFieldValues(this.selectedServer.customFields, this.serverCustomFields);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./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=d5b8f7c2\"\nimport script from \"./DeviceEdit.vue?vue&type=script&lang=ts\"\nexport * from \"./DeviceEdit.vue?vue&type=script&lang=ts\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"scrollable-results\"},[_c('h2',[_vm._v(\"Device Configuration\")]),_c('p',[_vm._v(\" Pressing the button below will attempt to connect to \"),_c('b',[_vm._v(_vm._s(_vm.selectedServer.title))]),_vm._v(\" and import Cameras, Audios, Outputs, Doors and Alarms. \")]),_c('p',[_vm._v(\"You can then select what you want to import from the available results.\")]),_c('b-row',{staticClass:\"mx-0 mb-2\"},[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":_vm.extraValueLabel,\"label-for\":\"extraValue\",\"label-cols-lg\":\"2\",\"data-cy\":\"extra-value-form-group\"}},[_c('b-form-input',{attrs:{\"id\":\"extraValue\",\"placeholder\":_vm.extraValuePlaceholder,\"value\":_vm.extraValue},on:{\"input\":_vm.updateExtraValue}})],1)],1),_c('b-col')],1),(_vm.progress == 0)?_c('b-button',{attrs:{\"variant\":\"primary\",\"href\":\"#\"},on:{\"click\":function($event){return _vm.doGetConfig()}}},[_vm._v(\" Get Device Configuration \")]):_vm._e(),_c('div',[(_vm.serverDeviceErrorsCount > 0 && _vm.progress == 100)?_c('div',{staticClass:\"results errors-accordion\"},[_c('transition',{attrs:{\"enter-active-class\":\"animated slideInDown\"}},[_c('bcard',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.device-errors\",modifiers:{\"device-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Device Errors (\"+_vm._s(_vm.serverDeviceErrorsCount)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"device-errors\",\"accordion\":\"device-errors-accordion\",\"role\":\"tabpanel\",\"visible\":\"\"}},[_c('b-card-body',[_vm._v(\" The following devices were not added to the configuration.\"),_c('br'),_vm._v(\" Please check the error log for more information.\"),_c('br'),(_vm.cameraErrorsCount > 0)?_c('div',[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.camera-errors\",modifiers:{\"camera-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Camera Errors (\"+_vm._s(_vm.cameraErrorsCount)+\")\")]),_c('b-collapse',{attrs:{\"id\":\"camera-errors\",\"accordion\":\"camera-errors-accordion\",\"role\":\"tabpanel\"}},[_c('b-table',{ref:\"camera-error-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.deviceConfigurationErrors.cameras,\"fields\":_vm.deviceErrorFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\"}})],1)],1):_vm._e(),(_vm.audioErrorsCount > 0)?_c('div',[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.audio-errors\",modifiers:{\"audio-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Audio Errors (\"+_vm._s(_vm.audioErrorsCount)+\")\")]),_c('b-collapse',{attrs:{\"id\":\"audio-errors\",\"accordion\":\"audio-errors-accordion\",\"role\":\"tabpanel\"}},[_c('b-table',{ref:\"audio-error-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.deviceConfigurationErrors.audios,\"fields\":_vm.deviceErrorFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\"}})],1)],1):_vm._e(),(_vm.outputErrorsCount > 0)?_c('div',[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.output-errors\",modifiers:{\"output-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Output Errors (\"+_vm._s(_vm.outputErrorsCount)+\")\")]),_c('b-collapse',{attrs:{\"id\":\"output-errors\",\"accordion\":\"output-errors-accordion\",\"role\":\"tabpanel\"}},[_c('b-table',{ref:\"output-error-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.deviceConfigurationErrors.outputs,\"fields\":_vm.deviceErrorFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\"}})],1)],1):_vm._e(),(_vm.doorErrorsCount > 0)?_c('div',[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.door-errors\",modifiers:{\"door-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Door Errors (\"+_vm._s(_vm.doorErrorsCount)+\")\")]),_c('b-collapse',{attrs:{\"id\":\"door-errors\",\"accordion\":\"door-errors-accordion\",\"role\":\"tabpanel\"}},[_c('b-table',{ref:\"door-error-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.deviceConfigurationErrors.doors,\"fields\":_vm.deviceErrorFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\"}})],1)],1):_vm._e(),(_vm.alarmErrorsCount > 0)?_c('div',[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.alarm-errors\",modifiers:{\"alarm-errors\":true}}],staticClass:\"error-button\",attrs:{\"block\":\"\"}},[_vm._v(\"Alarm Errors (\"+_vm._s(_vm.alarmErrorsCount)+\")\")]),_c('b-collapse',{attrs:{\"id\":\"alarm-errors\",\"accordion\":\"alarm-errors-accordion\",\"role\":\"tabpanel\"}},[_c('b-table',{ref:\"alarm-error-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.deviceConfigurationErrors.alarms,\"fields\":_vm.responseErrorFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\"}})],1)],1):_vm._e()])],1)],1)],1)],1):_vm._e(),(!_vm.gettingConfig && !_vm.settingConfig && _vm.progress == 100)?_c('div',{staticClass:\"results\"},[_c('transition',{attrs:{\"enter-active-class\":\"animated slideInDown\"}},[_c('div',{staticClass:\"accordion\",attrs:{\"role\":\"tablist\"}},[(_vm.camerasTotal > 0)?_c('b-card',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.accordion-cameras\",modifiers:{\"accordion-cameras\":true}}],attrs:{\"block\":\"\"}},[_vm._v(\"Cameras (\"+_vm._s(_vm.camerasTotal)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"accordion-cameras\",\"accordion\":\"getconfig-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"},on:{\"ps-y-reach-end\":function($event){return _vm.handleCameraScrollBarReachEnd()}}},[_c('div',{staticClass:\"toggleSelections\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleCameras(true)}}},[_vm._v(\"All\")]),_vm._v(\" | \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleCameras(false)}}},[_vm._v(\"None\")])]),_c('b-table',{ref:\"camera-table\",attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.serverConfigData.cameras,\"fields\":_vm.deviceFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\",\"busy\":_vm.cameraTableIsBusy},scopedSlots:_vm._u([{key:\"cell(selected)\",fn:function(row){return [_c('b-form-group',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.item.selected),expression:\"row.item.selected\"}],attrs:{\"type\":\"checkbox\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(row.item.selected)?_vm._i(row.item.selected,null)>-1:(row.item.selected)},on:{\"change\":[function($event){var $$a=row.item.selected,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(row.item, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(row.item, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(row.item, \"selected\", $$c)}},_vm.refreshCameraUsageDifference]}})])]}},(!_vm.loadingMoreCameras)?{key:\"table-busy\",fn:function(){return [_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1)]},proxy:true}:null,{key:\"table-caption\",fn:function(){return [(_vm.loadingMoreCameras)?_c('div',{staticClass:\"text-center text-white py-2 b-table-busy\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()]},proxy:true}],null,true)})],1),(_vm.isBillingEnabled)?_c('div',{staticClass:\"p-t-10\",attrs:{\"data-cy\":\"camera-count-changed-notification\"}},[_c('b-alert',{attrs:{\"variant\":\"info\",\"show\":_vm.cameraUsageDifference != 0 && _vm.isCameraSubscriptionValid}},[_vm._v(\" This action will change camera subscription usage from \"+_vm._s(_vm.subscription.limitedSubscription ? _vm.subscription.cameras + \"/\" + _vm.subscription.camerasLimit : _vm.subscription.cameras)+\" to \"+_vm._s(_vm.subscription.cameras + _vm.cameraUsageDifference)+_vm._s(_vm.subscription.limitedSubscription ? \"/\" + _vm.subscription.camerasLimit : \"\")+\" \")]),_c('b-alert',{staticClass:\"mb-0\",attrs:{\"variant\":\"danger\",\"show\":!_vm.isCameraSubscriptionValid}},[_vm._v(\" Camera usage limit of \"+_vm._s(this.subscription.camerasLimit)+\" will be exceeded \")])],1):_vm._e()],1)],1)],1):_vm._e(),(_vm.audiosTotal > 0)?_c('b-card',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.accordion-audios\",modifiers:{\"accordion-audios\":true}}],attrs:{\"block\":\"\"}},[_vm._v(\"Audio (\"+_vm._s(_vm.audiosTotal)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"accordion-audios\",\"accordion\":\"getconfig-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"},on:{\"ps-y-reach-end\":function($event){return _vm.handleAudioScrollBarReachEnd()}}},[_c('div',{staticClass:\"toggleSelections\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleAudios(true)}}},[_vm._v(\"All\")]),_vm._v(\" | \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleAudios(false)}}},[_vm._v(\"None\")])]),_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.serverConfigData.audios,\"fields\":_vm.deviceFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\",\"busy\":_vm.audioTableIsBusy},scopedSlots:_vm._u([{key:\"cell(selected)\",fn:function(row){return [_c('b-form-group',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.item.selected),expression:\"row.item.selected\"}],attrs:{\"type\":\"checkbox\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(row.item.selected)?_vm._i(row.item.selected,null)>-1:(row.item.selected)},on:{\"change\":function($event){var $$a=row.item.selected,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(row.item, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(row.item, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(row.item, \"selected\", $$c)}}}})])]}},(!_vm.loadingMoreAudios)?{key:\"table-busy\",fn:function(){return [_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1)]},proxy:true}:null,{key:\"table-caption\",fn:function(){return [(_vm.loadingMoreAudios)?_c('div',{staticClass:\"text-center text-white py-2 b-table-busy\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()]},proxy:true}],null,true)})],1)],1)],1)],1):_vm._e(),(_vm.outputsTotal > 0)?_c('b-card',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.accordion-outputs\",modifiers:{\"accordion-outputs\":true}}],attrs:{\"block\":\"\"}},[_vm._v(\"Outputs (\"+_vm._s(_vm.outputsTotal)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"accordion-outputs\",\"accordion\":\"getconfig-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"},on:{\"ps-y-reach-end\":function($event){return _vm.handleOutputScrollBarReachEnd()}}},[_c('div',{staticClass:\"toggleSelections\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleOutputs(true)}}},[_vm._v(\"All\")]),_vm._v(\" | \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleOutputs(false)}}},[_vm._v(\"None\")])]),_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.serverConfigData.outputs,\"fields\":_vm.deviceFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\",\"busy\":_vm.outputTableIsBusy},scopedSlots:_vm._u([{key:\"cell(selected)\",fn:function(row){return [_c('b-form-group',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.item.selected),expression:\"row.item.selected\"}],attrs:{\"type\":\"checkbox\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(row.item.selected)?_vm._i(row.item.selected,null)>-1:(row.item.selected)},on:{\"change\":function($event){var $$a=row.item.selected,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(row.item, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(row.item, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(row.item, \"selected\", $$c)}}}})])]}},(!_vm.loadingMoreOutputs)?{key:\"table-busy\",fn:function(){return [_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1)]},proxy:true}:null,{key:\"table-caption\",fn:function(){return [(_vm.loadingMoreOutputs)?_c('div',{staticClass:\"text-center text-white py-2 b-table-busy\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()]},proxy:true}],null,true)})],1)],1)],1)],1):_vm._e(),(_vm.doorsTotal > 0)?_c('b-card',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.accordion-doors\",modifiers:{\"accordion-doors\":true}}],attrs:{\"block\":\"\"}},[_vm._v(\"Doors (\"+_vm._s(_vm.doorsTotal)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"accordion-doors\",\"accordion\":\"getconfig-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"},on:{\"ps-y-reach-end\":function($event){return _vm.handleDoorScrollBarReachEnd()}}},[_c('div',{staticClass:\"toggleSelections\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleDoors(true)}}},[_vm._v(\"All\")]),_vm._v(\" | \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleDoors(false)}}},[_vm._v(\"None\")])]),_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.serverConfigData.doors,\"fields\":_vm.deviceFields,\"sticky-header\":\"20vh\",\"head-variant\":\"dark\",\"busy\":_vm.doorTableIsBusy},scopedSlots:_vm._u([{key:\"cell(selected)\",fn:function(row){return [_c('b-form-group',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.item.selected),expression:\"row.item.selected\"}],attrs:{\"type\":\"checkbox\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(row.item.selected)?_vm._i(row.item.selected,null)>-1:(row.item.selected)},on:{\"change\":function($event){var $$a=row.item.selected,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(row.item, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(row.item, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(row.item, \"selected\", $$c)}}}})])]}},(!_vm.loadingMoreDoors)?{key:\"table-busy\",fn:function(){return [_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1)]},proxy:true}:null,{key:\"table-caption\",fn:function(){return [(_vm.loadingMoreDoors)?_c('div',{staticClass:\"text-center text-white py-2 b-table-busy\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()]},proxy:true}],null,true)})],1)],1)],1)],1):_vm._e(),(_vm.alarmsTotal > 0)?_c('b-card',{staticClass:\"mb-1\",attrs:{\"no-body\":\"\"}},[_c('b-card-header',{staticClass:\"p-1\",attrs:{\"header-tag\":\"header\",\"role\":\"tab\"}},[_c('b-button',{directives:[{name:\"b-toggle\",rawName:\"v-b-toggle.accordion-alarms\",modifiers:{\"accordion-alarms\":true}}],attrs:{\"block\":\"\"}},[_vm._v(\"Alarms (\"+_vm._s(_vm.alarmsTotal)+\")\")])],1),_c('b-collapse',{attrs:{\"id\":\"accordion-alarms\",\"accordion\":\"getconfig-accordion\",\"role\":\"tabpanel\"}},[_c('b-card-body',[_c('vue-perfect-scrollbar',{staticClass:\"scroll-area\",attrs:{\"data-cy\":\"vue-perfect-scrollbar\"},on:{\"ps-y-reach-end\":function($event){return _vm.handleAlarmScrollBarReachEnd()}}},[_c('div',{staticClass:\"toggleSelections\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleAlarms(true)}}},[_vm._v(\"All\")]),_vm._v(\" | \"),_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){return _vm.toggleAlarms(false)}}},[_vm._v(\"None\")])]),_c('b-table',{attrs:{\"responsive\":\"\",\"striped\":\"\",\"show-empty\":\"\",\"stacked\":\"md\",\"hover\":\"\",\"items\":_vm.serverConfigData.alarms,\"fields\":_vm.responseFields,\"head-variant\":\"dark\",\"busy\":_vm.alarmTableIsBusy},scopedSlots:_vm._u([{key:\"cell(selected)\",fn:function(row){return [_c('b-form-group',[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(row.item.selected),expression:\"row.item.selected\"}],attrs:{\"type\":\"checkbox\",\"checked\":\"\"},domProps:{\"checked\":Array.isArray(row.item.selected)?_vm._i(row.item.selected,null)>-1:(row.item.selected)},on:{\"change\":function($event){var $$a=row.item.selected,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(row.item, \"selected\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(row.item, \"selected\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(row.item, \"selected\", $$c)}}}})])]}},(!_vm.loadingMoreAlarms)?{key:\"table-busy\",fn:function(){return [_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1)]},proxy:true}:null,{key:\"table-caption\",fn:function(){return [(_vm.loadingMoreAlarms)?_c('div',{staticClass:\"text-center text-white py-2 b-table-busy\"},[_c('sureview-icon',{attrs:{\"text\":'Loading...',\"svgClass\":'fa-spin'}})],1):_vm._e()]},proxy:true}],null,true)})],1)],1)],1)],1):_vm._e()],1)]),_c('b-button',{staticClass:\"float-right m-1\",attrs:{\"variant\":\"primary\",\"disabled\":!_vm.isCameraSubscriptionValid},on:{\"click\":function($event){return _vm.save()}}},[_vm._v(\"Save\")]),_vm._v(\" \"),_c('b-button',{staticClass:\"float-right cancel-button m-1\",on:{\"click\":function($event){return _vm.cancel()}}},[_vm._v(\"Cancel\")])],1):_vm._e()]),(_vm.gettingConfig && _vm.progress < 100)?_c('div',{staticClass:\"progress-container\"},[_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":(\"Getting Config for \" + (_vm.selectedServer.title) + \" ...\"),\"svgClass\":'fa-spin'}})],1)]):_vm._e(),(_vm.settingConfig)?_c('div',{staticClass:\"progress-container\"},[_c('div',{staticClass:\"text-center text-white my-2 py-4\"},[_c('sureview-icon',{attrs:{\"text\":(\"Creating Config for \" + (_vm.selectedServer.title) + \" ...\"),\"svgClass\":'fa-spin'}})],1)]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export interface GroupSyncModel {\r\n groupSyncId: number;\r\n title: string;\r\n syncSystemId: number;\r\n identifier: string;\r\n interval: number;\r\n lastRun?: Date;\r\n enabled: boolean;\r\n groupId: number;\r\n additionalConfig: string;\r\n\tlastQueueState?: string;\r\n}\r\n\r\nexport interface GroupSyncAdditionalConfig {\r\n AllowDelete?: boolean;\r\n UpdateGroupId?: boolean;\r\n UpdateSettingsMeta?: boolean;\r\n\tMaskNewAlarmPoints?: boolean;\r\n}\r\n\r\nexport interface SyncStateResponse{\r\n\tstate: string;\r\n\tgroupSyncId: number;\r\n}\r\n\r\nexport interface GroupSyncQueue {\r\n syncQueueId: number;\r\n groupSyncId: number;\r\n state: string;\r\n created: Date;\r\n lastUpdated?: Date;\r\n}\r\n\r\nexport enum GroupSyncQueueState {\r\n preQueued = \"PreQueue\",\r\n reQueue = \"ReQueue\",\r\n queued = \"Queued\",\r\n processing = \"Processing\",\r\n failed = \"Failed\",\r\n processed = \"Processed\",\r\n partialProcessed = \"PartiallyProcessed\",\r\n noData = \"NoData\",\r\n}\r\n\r\nexport interface GroupSyncAudit {\r\n auditId: number;\r\n audit: string;\r\n dateCreated: Date;\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GetConfig.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--14-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GetConfig.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GetConfig.vue?vue&type=template&id=c5368800&scoped=true\"\nimport script from \"./GetConfig.vue?vue&type=script&lang=ts\"\nexport * from \"./GetConfig.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GetConfig.vue?vue&type=style&index=0&id=c5368800&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c5368800\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-card',{attrs:{\"no-body\":\"\"}},[_c('b-card-header',{attrs:{\"header-tag\":\"header\"}},[_c('div',[_c('h4',{staticClass:\"sync-details-header\"},[_vm._v(\"Sync Details\")]),(_vm.isLinkedSystem)?_c('div',{staticClass:\"sync-details-warning d-flex align-items-center text-warning\"},[_c('i',{staticClass:\"fas fa-exclamation-circle mr-2\"}),_c('p',{staticClass:\"m-0\",attrs:{\"data-cy\":\"update-modal-warning-message\"}},[_vm._v(\" This sync is being managed by \"+_vm._s(_vm.linkedSystemTitle)+\" and cannot be edited here \")])]):_vm._e()])]),_c('b-card-body',[_c('b-row',[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"syncTitle\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Title: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('b-form-input',{attrs:{\"id\":\"syncTitle\",\"placeholder\":\"Title\",\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.title),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"title\", $$v)},expression:\"selectedSyncSystem.title\"}})],2)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"syncType\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Type: \"),_c('span',{staticClass:\"text-danger\"},[_vm._v(\"*\")])]),_c('v-select-3',{attrs:{\"options\":_vm.sortedServerTypes,\"placeholder\":\"Search\",\"label\":\"title\",\"reduce\":function (serverType) { return serverType.serverTypeID; },\"appendToBody\":\"\",\"disabled\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.serverTypeId),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"serverTypeId\", $$v)},expression:\"selectedSyncSystem.serverTypeId\"}},[_c('span',{attrs:{\"slot\":\"no-options\"},slot:\"no-options\"},[_vm._v(\"Sorry, no types were found.\")])])],2)],1)],1),_c('b-row',[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Host:\",\"label-for\":\"syncHost\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"syncHost\",\"placeholder\":\"Host\",\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.host),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"host\", $$v)},expression:\"selectedSyncSystem.host\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Port:\",\"label-for\":\"syncPort\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"id\":\"syncPort\",\"placeholder\":\"Port\",\"type\":\"number\",\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.port),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"port\", $$v)},expression:\"selectedSyncSystem.port\"}})],1)],1)],1),_c('b-row',[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Username:\",\"label-for\":\"syncUsername\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"autocomplete\":\"new-password\",\"id\":\"syncUsername\",\"placeholder\":\"Username\",\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.username),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"username\", $$v)},expression:\"selectedSyncSystem.username\"}})],1)],1),_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":\"Password:\",\"label-for\":\"password\",\"label-cols-lg\":\"2\"}},[_c('b-form-input',{attrs:{\"autocomplete\":\"new-password\",\"id\":\"password\",\"placeholder\":\"Password\",\"type\":\"password\",\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.password),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"password\", $$v)},expression:\"selectedSyncSystem.password\"}})],1)],1)],1),_c('b-row',[_c('b-col',[_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label\":_vm.extraValueLabel,\"label-for\":\"syncExtraValue\",\"label-cols-lg\":\"2\",\"data-cy\":\"extra-value-form-group\"}},[_c('b-form-input',{attrs:{\"id\":\"syncExtraValue\",\"placeholder\":_vm.extraValueLabel,\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.extraValue),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"extraValue\", $$v)},expression:\"selectedSyncSystem.extraValue\"}})],1)],1),_c('b-col',[(_vm.isApplianceEnabled)?_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"ops-link\",\"label-cols-lg\":\"2\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Ops Link: \")]),_c('appliance-list',{attrs:{\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.applianceId),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"applianceId\", $$v)},expression:\"selectedSyncSystem.applianceId\"}}),(_vm.applianceHasFailedOver)?_c('div',{attrs:{\"data-cy\":\"post-failover-message-sync\"}},[_c('span',{staticClass:\"text-danger\"},[_vm._v(\"This device has moved to a Secondary Ops Link.\")]),_c('br')]):_vm._e(),_c('a',{attrs:{\"href\":\"https://help.sureviewops.com/hc/en-us/articles/360013622797-Ops-Link\",\"target\":\"_blank\"}},[_vm._v(\"More Information\")])],2):_vm._e(),(_vm.isFailoverEnabled)?_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"ops-link\",\"label-cols-lg\":\"2\",\"data-cy\":\"primary-ops-link\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Primary Ops Link: \")]),_c('appliance-list',{attrs:{\"readonly\":\"\"},model:{value:(_vm.selectedSyncSystem.primaryApplianceId),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"primaryApplianceId\", $$v)},expression:\"selectedSyncSystem.primaryApplianceId\"}})],2):_vm._e(),(_vm.isFailoverEnabled && !_vm.readonly)?_c('b-form-group',{staticClass:\"align-items-center\",attrs:{\"label-for\":\"secondary-appliance\",\"label-cols-lg\":\"2\",\"data-cy\":\"secondary-ops-link\"}},[_c('template',{slot:\"label\"},[_vm._v(\" Secondary Ops Link: \")]),_c('appliance-list',{attrs:{\"readonly\":_vm.isReadOnlyForm},model:{value:(_vm.selectedSyncSystem.secondaryApplianceId),callback:function ($$v) {_vm.$set(_vm.selectedSyncSystem, \"secondaryApplianceId\", $$v)},expression:\"selectedSyncSystem.secondaryApplianceId\"}}),(_vm.appliancesMatch && !_vm.applianceHasFailedOver)?_c('div',[_c('span',{staticClass:\"text-danger\"},[_vm._v(\"Secondary Ops Link cannot be the same as the Ops Link\")]),_c('br')]):_vm._e()],2):_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)],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\tlinkedSyncSystemId: null,\r\n\t\t\tlinkedSyncSystemTitle: null,\r\n\t\t\tsecondaryApplianceId: null\r\n\t\t};\r\n\t}\r\n\r\n\t@Watch(\"selectedSyncSystem\", { deep: true })\r\n\t@Watch(\"storedSyncSystem\", { deep: true })\r\n\t@Emit(\"syncDetailsUpdated\")\r\n\tprivate handleSyncDetailsChanged(): SyncModelDetails {\r\n\t\tif (this.settingSync) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet invalid = this.$v.$invalid;\r\n\r\n\t\tif (this.isFailoverEnabled) {\r\n\t\t\tinvalid = this.$v.$invalid || !this.appliancesValid;\r\n\t\t}\r\n\r\n\t\treturn { invalid: invalid, selectedSync: this.selectedSyncSystem };\r\n\t}\r\n\r\n\t@Watch(\"currentServer\", { deep: true })\r\n\tprivate handleServerDetailsChanged(): void {\r\n\t\tif (!this.currentServer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.settingSync = true;\r\n\t\tif (this.currentServer.syncSystemId == -1) {\r\n\t\t\tthis.selectedSyncSystem = this.defaultSyncSystem();\r\n\t\t\tthis.storedSyncSystem = this.defaultSyncSystem();\r\n\t\t} else if (this.currentServer.syncSystemId > 0) {\r\n\t\t\tvar syncSystem = this.syncSystems.find(ss => ss.syncSystemId == this.currentServer.syncSystemId);\r\n\t\t\tthis.selectedSyncSystem = { ...syncSystem };\r\n\t\t\tthis.storedSyncSystem = { ...syncSystem };\r\n\t\t}\r\n\t\tthis.settingSync = false;\r\n\t}\r\n\r\n\t/*\r\n\t\tINVALID CASES for Secondary Ops Link\r\n\t\t1. applianceId is not set and secondaryId is set\r\n\t\t\t- this.InvalidSecondaryAppliance\r\n\t\t2. applianceId is the same as the secondaryId BUT a fail over has NOT occurred (applianceId is the same as PrimaryApplianceId)\r\n\t\t\t- this.appliancesMatch && !this.applianceHasFailedOver\r\n\t*/\r\n\r\n\tprivate get appliancesValid(): boolean {\r\n\t\treturn (!this.appliancesMatch && !this.InvalidSecondaryAppliance) || (this.appliancesMatch && this.applianceHasFailedOver) && !this.InvalidSecondaryAppliance;\r\n\t}\r\n\r\n\t// The ApplianceId and the SecondaryApplianceId are the same\r\n\tprivate get appliancesMatch(): boolean {\r\n\t\treturn this.selectedSyncSystem?.applianceId != null && this.selectedSyncSystem?.applianceId == this.selectedSyncSystem?.secondaryApplianceId;\r\n\t}\r\n\r\n\t// The Appliance PrimaryApplianceId is different form the current ApplianceId\r\n\tprivate get applianceHasFailedOver(): boolean {\r\n\t\treturn this.selectedSyncSystem?.applianceId != null &&\r\n\t\t\tthis.selectedSyncSystem?.primaryApplianceId != null &&\r\n\t\t\tthis.selectedSyncSystem?.applianceId != this.selectedSyncSystem?.primaryApplianceId;\r\n\t}\r\n\r\n\t// A SecondaryApplianceId has been set without an ApplianceId\r\n\tprivate get InvalidSecondaryAppliance(): boolean {\r\n\t\treturn this.selectedSyncSystem?.applianceId == null && this.selectedSyncSystem?.secondaryApplianceId != null;\r\n\t}\r\n\r\n\tprivate async created(): Promise {\r\n\t\tthis.handleServerDetailsChanged();\r\n\t\tawait this.fetchPermissionsState();\r\n\t}\r\n\r\n\tprivate get selectedServerType(): ServerType {\r\n\t\treturn this.serverTypes.find((st) => st.serverTypeID === this.selectedSyncSystem?.serverTypeId);\r\n\t}\r\n\r\n\tprivate get isApplianceEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"Appliances\"]);\r\n\t}\r\n\r\n\tprivate get isSuiteSyncEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Suite\", \"SuiteSync\"]);\r\n\t}\r\n\r\n\tprivate get userCanConfigureSuiteSync(): boolean {\r\n\t\treturn this.getPermissions.canConfigureSuiteSync;\r\n\t}\r\n\r\n\tprivate get extraValueLabel(): string {\r\n\t\tconst serverType = this.selectedServerType;\r\n\r\n\t\tif (serverType && serverType.extraValueName) {\r\n\t\t\treturn serverType.extraValueName;\r\n\t\t}\r\n\r\n\t\treturn \"Extra Value\";\r\n\t}\r\n\r\n\tprivate get isLinkedSystem(): boolean {\r\n\t\treturn this.selectedSyncSystem?.linkedSyncSystemId != null;\r\n\t}\r\n\r\n\tprivate get linkedSystemTitle(): string | null {\r\n\t\treturn this.selectedSyncSystem?.linkedSyncSystemTitle ?? \"Unknown\";\r\n\t}\r\n\r\n\tprivate get isReadOnlyForm(): boolean {\r\n\t\treturn this.readonly || this.isLinkedSystem;\r\n\t}\r\n\r\n\tprivate get isFailoverEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"AdvancedSetup\", \"ApplianceFailover\"]) && (this.getPermissions.canFailOverAppliance || this.getPermissions.isSystemAdmin) && this.isApplianceEnabled;\r\n\t}\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SyncEdit.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--14-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SyncEdit.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SyncEdit.vue?vue&type=template&id=56682494&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=56682494&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 \"56682494\",\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\nimport { cloneDeep } from \"lodash\";\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\tlet selectedServer = this.serverModelDetails.selectedServer;\r\n\r\n\t\tif (selectedServer.serverID) {\r\n\t\t\tselectedServer.extraValue = this.extraValue;\r\n\r\n\t\t\t// We want to deep clone selectedServer to prevent unwanted reference equality between the currentServer and selectedServer when editing custom fields in DeviceEdit.vue\r\n\t\t\tvar clonedServer = cloneDeep(selectedServer);\r\n\r\n\t\t\tclonedServer.port = clonedServer.port || 0; // empty string or undefined/null value in port will invalidate model\r\n\r\n\t\t\tawait this.updateServer(clonedServer);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tselectedServer.extraValue = this.extraValue;\r\n\r\n\t\tawait this.addServer(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 serverType: ServerType = this.serverTypes.find(\r\n\t\t\tst => st.serverTypeID === this.currentServer.serverTypeID\r\n\t\t\t);\r\n\t\t\r\n\t\treturn serverType && serverType.isParentable;\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=10dafa67&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=10dafa67&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 \"10dafa67\",\n null\n \n)\n\nexport default component.exports","\r\nimport { Component, Vue, Watch } from \"vue-property-decorator\";\r\nimport { Getter, namespace, State } from \"vuex-class\";\r\nimport { get } from \"lodash\";\r\nimport { NotificationOptions } from \"vue-notification\";\r\nimport { FeaturesList, UserPermissions } from \"@/store/types\";\r\nimport { DeviceTypeCounts, DeviceTypeIdentifier, DeviceDetails, SyncSystem } from \"@/store/devices/types\";\r\nimport CameraPreview from \"@/components/device-setup/CameraPreview.vue\";\r\nimport ChildDeviceTabWrapper from \"@/components/device-setup/tabs/ChildDeviceTabWrapper.vue\";\r\nimport ChildDeviceEdit from \"@/components/device-setup/editing/ChildDeviceEdit.vue\";\r\nimport DeleteChildDeviceModal from \"@/components/device-setup/confirmation-modals/DeleteChildDeviceModal.vue\";\r\nimport DeviceTable from \"@/components/device-setup/tables/DeviceTable.vue\";\r\nimport NavHeader from \"@/components/NavHeader.vue\";\r\nimport DeviceAlarmSetup from '@/components/setup/alarm-setup/DeviceAlarmSetup.vue';\r\nimport SyncTable from '@/components/device-setup/sync/SyncTable.vue';\r\nimport ServerModal from '@/components/device-setup/ServerModal.vue';\r\nimport OpsLinks from '@/components/OpsLinks.vue';\r\n\r\nconst Devices = namespace(\"devices\");\r\n\r\n@Component({\r\n\tcomponents: {\r\n\t\t\"camera-preview\": CameraPreview,\r\n\t\t\"child-device-tab-wrapper\": ChildDeviceTabWrapper,\r\n\t\t\"child-device-edit\": ChildDeviceEdit,\r\n\t\t\"delete-child-device-modal\": DeleteChildDeviceModal,\r\n\t\t\"device-table\": DeviceTable,\r\n\t\t\"sync-table\": SyncTable,\r\n\t\t\"server-modal\": ServerModal,\r\n\t\t\"nav-header\": NavHeader,\r\n\t\t\"device-alarm-setup\": DeviceAlarmSetup,\r\n\t\t\"ops-links\": OpsLinks\r\n\t}\r\n})\r\nexport default class DeviceSetup extends Vue {\r\n\t@Getter(\"getPermissions\") private permissions: UserPermissions;\r\n\r\n\t@Devices.Action private getDeviceTypeCounts: (serverId: number | null) => Promise;\r\n\t@Devices.Action private fetchSyncSystemCount: () => Promise\r\n\r\n\t@Devices.Mutation(\"resetState\") private resetDevicesState: () => void;\r\n\t@Devices.Mutation(\"setNotificationOptions\") private setNotificationOptions: (\r\n\t\tnotificationOptions: NotificationOptions\r\n\t) => void;\r\n\t@Devices.Mutation private setCameraPreviewModalVisibility: (visible: boolean) => void;\r\n\r\n\t@Devices.State private device: DeviceDetails;\r\n\t@Devices.State private cameraPreviewModalVisible: boolean;\r\n\t@Devices.State private deviceTypeCounts: DeviceTypeCounts;\r\n\t@Devices.State private editChildDeviceModalVisible: boolean;\r\n\t@Devices.State private notificationOptions: NotificationOptions;\r\n\t@Devices.State private syncSystems: SyncSystem[];\r\n\t@Devices.State private totalSyncSystems: number;\r\n\t@State private featuresList: FeaturesList;\r\n\r\n\tprivate childDeviceTypeIds: number[] = [];\r\n\tprivate tabIndex: number = 1;\r\n\tprivate rerenderKey: number = 0;\r\n\r\n\tprivate async created(): Promise {\r\n\t\tthis.addChildDeviceTypes();\r\n\t\tthis.resetDevicesState();\r\n\t\tawait this.fetchSyncSystemCount();\r\n\t\tawait this.getDeviceTypeCounts(null);\r\n\t}\r\n\r\n\tprivate addChildDeviceTypes(): void {\r\n\t\tfor (let deviceTypeIdentifier in DeviceTypeIdentifier) {\r\n\t\t\tconst id = Number(deviceTypeIdentifier);\r\n\r\n\t\t\tif (!isNaN(id)) {\r\n\t\t\t\tthis.childDeviceTypeIds.push(id);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate get canViewDeviceSetup(): boolean {\r\n\t\treturn (\r\n\t\t\tget(this.featuresList, [\"Devices\"]) &&\r\n\t\t\t(this.permissions.isSystemAdmin || this.permissions.isAccountAdmin ||\r\n\t\t\tthis.permissions.canEditSiteSetup || this.permissions.canViewSiteSetup)\r\n\t\t);\r\n\t}\r\n\r\n\tprivate get syncSetupEnabled(): boolean {\r\n\t\treturn get(this.featuresList, [\"Devices\", \"AdvancedSetup\", \"SyncSystem\"]);\r\n\t}\r\n\r\n\t@Watch(\"notificationOptions\")\r\n\tprivate notify(notificationOptions: NotificationOptions): void {\r\n\t\tif (!notificationOptions) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.$notify(notificationOptions);\r\n\t\tthis.setNotificationOptions(null);\r\n\t}\r\n\r\n\tprivate handleCameraPreviewHidden(): void {\r\n\t\tthis.setCameraPreviewModalVisibility(false);\r\n\t}\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceSetup.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceSetup.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeviceSetup.vue?vue&type=template&id=8474dc88&scoped=true\"\nimport script from \"./DeviceSetup.vue?vue&type=script&lang=ts\"\nexport * from \"./DeviceSetup.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DeviceSetup.vue?vue&type=style&index=0&id=8474dc88&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8474dc88\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--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!./DeviceTable.vue?vue&type=style&index=0&id=4f787186&prod&lang=scss&scoped=true\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceSetup.vue?vue&type=style&index=0&id=8474dc88&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--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=56682494&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!./ChildDeviceTable.vue?vue&type=style&index=0&id=2e9c23bc&prod&lang=scss&scoped=true\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeviceAlarmSetup.vue?vue&type=style&index=0&id=65f77130&prod&lang=scss&scoped=true\""],"sourceRoot":""}