@c8y/ngx-components 1018.0.162 → 1018.0.170

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/NOTICES +1 -1
  2. package/core/tabs/tab.model.d.ts +5 -0
  3. package/core/tabs/tabs-outlet.component.d.ts +1 -1
  4. package/esm2020/context-dashboard/add-dashboard.factory.mjs +3 -2
  5. package/esm2020/context-dashboard/context-dashboard.service.mjs +7 -1
  6. package/esm2020/core/tabs/tab.model.mjs +1 -1
  7. package/esm2020/core/tabs/tabs-outlet.component.mjs +2 -2
  8. package/esm2020/data-broker/data-broker-subscriptions.service.mjs +2 -2
  9. package/esm2020/protocol-lwm2m/components/post-registration-operations/lwm2m-post-operations.component.mjs +2 -2
  10. package/fesm2015/c8y-ngx-components-context-dashboard.mjs +8 -1
  11. package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  12. package/fesm2015/c8y-ngx-components-data-broker.mjs +1 -2
  13. package/fesm2015/c8y-ngx-components-data-broker.mjs.map +1 -1
  14. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-post-registration-operations.mjs +1 -2
  15. package/fesm2015/c8y-ngx-components-protocol-lwm2m-components-post-registration-operations.mjs.map +1 -1
  16. package/fesm2015/c8y-ngx-components.mjs +1 -1
  17. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  18. package/fesm2020/c8y-ngx-components-context-dashboard.mjs +8 -1
  19. package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  20. package/fesm2020/c8y-ngx-components-data-broker.mjs +1 -2
  21. package/fesm2020/c8y-ngx-components-data-broker.mjs.map +1 -1
  22. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-post-registration-operations.mjs +2 -3
  23. package/fesm2020/c8y-ngx-components-protocol-lwm2m-components-post-registration-operations.mjs.map +1 -1
  24. package/fesm2020/c8y-ngx-components.mjs +1 -1
  25. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  26. package/package.json +1 -1
  27. package/protocol-lwm2m/components/post-registration-operations/lwm2m-post-operations.component.d.ts +23 -3
@@ -5,7 +5,6 @@ import { gettext, CoreModule, ManagedObjectRealtimeService, DeviceBootstrapRealt
5
5
  import { __awaiter } from 'tslib';
6
6
  import * as i2 from '@c8y/client';
7
7
  import { DeviceRegistrationStatus } from '@c8y/client';
8
- import { gettext as gettext$1 } from '@c8y/client/src/gettext';
9
8
  import { set, pick, get } from 'lodash-es';
10
9
  import { BehaviorSubject, Subject, merge, interval } from 'rxjs';
11
10
  import { filter, switchMap, map, takeUntil, tap, distinctUntilChanged } from 'rxjs/operators';
@@ -121,7 +120,7 @@ class DataBrokerSubscriptionsService {
121
120
  * User status text (legacy compatibility)
122
121
  */
123
122
  getVisibleUserStatusText(user) {
124
- return user.enabled ? gettext$1('active`subscription`') : gettext$1('inactive`subscription`');
123
+ return user.enabled ? gettext('active`subscription`') : gettext('inactive`subscription`');
125
124
  }
126
125
  remove(subscription) {
127
126
  return __awaiter(this, void 0, void 0, function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-data-broker.mjs","sources":["../../data-broker/model/data-broker.subscription.model.ts","../../data-broker/factories/data-broker.subscription.factory.ts","../../data-broker/data-broker-subscriptions.service.ts","../../data-broker/data-broker.module.ts","../../data-broker/ng1/downgraded.services.ts","../../data-broker/ng1/index.ts","../../data-broker/c8y-ngx-components-data-broker.ts"],"sourcesContent":["import { IUser } from '@c8y/client';\n\nexport enum DataBrokerConnectorStatus {\n ACTIVE = 'ACTIVE',\n SUSPENDED = 'SUSPENDED',\n WAITING = 'WAITING'\n}\n\nexport interface SubscriptionStatusViewModel {\n icon: string;\n textClass: string;\n text: string;\n iconClass?: string;\n}\n\nexport interface SubscriptionViewModel {\n userEnabled: boolean;\n visibleUserStatus: string;\n userId: string;\n status: SubscriptionStatusViewModel;\n id: string;\n _c8y_BrokerSource: any;\n}\n\nexport interface NewDeviceRequestStatus {\n name: string;\n label: string;\n value: string;\n}\n\nexport interface SubscriptionsViewModelNg1 {\n init(): void;\n reload(): void;\n destroy(): void;\n}\n\nexport type UserStatusPartial = Required<Pick<IUser, 'id' | 'enabled'>>;\n","import { DeviceRegistrationStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport {\n SubscriptionStatusViewModel,\n DataBrokerConnectorStatus,\n NewDeviceRequestStatus\n} from '../model/data-broker.subscription.model';\n\nexport class SubscriptionStatusViewModelFactory {\n build(status: DataBrokerConnectorStatus): SubscriptionStatusViewModel {\n let statusViewModel = null;\n switch (status) {\n case DataBrokerConnectorStatus.ACTIVE: // dataBrokerConnectorsSvc.STATUS.ACTIVE.value\n statusViewModel = {\n icon: 'check-circle',\n textClass: 'text-success',\n text: gettext('Active`data broker subscription`')\n };\n break;\n case DataBrokerConnectorStatus.SUSPENDED: // dataBrokerConnectorsSvc.STATUS.SUSPENDED.value\n statusViewModel = {\n icon: 'exclamation-triangle',\n textClass: 'text-warning',\n text: gettext('Inactive`data broker subscription`')\n };\n break;\n case DataBrokerConnectorStatus.WAITING: // dataBrokerConnectorsSvc.STATUS.WAITING.value\n statusViewModel = {\n icon: 'spinner',\n iconClass: 'icon-spin',\n textClass: 'text-warning',\n text: gettext('Waiting`data broker subscription`')\n };\n break;\n default:\n break;\n }\n return statusViewModel;\n }\n}\n\nexport class NewDeviceRequestStatusFactory {\n build(status: DeviceRegistrationStatus): NewDeviceRequestStatus {\n let result = null;\n switch (status) {\n case DeviceRegistrationStatus.WAITING_FOR_CONNECTION:\n result = {\n name: DeviceRegistrationStatus.WAITING_FOR_CONNECTION,\n label: gettext('Waiting for connection`data broker subscription`'),\n value: DeviceRegistrationStatus.WAITING_FOR_CONNECTION\n };\n break;\n case DeviceRegistrationStatus.PENDING_ACCEPTANCE:\n result = {\n name: DeviceRegistrationStatus.PENDING_ACCEPTANCE,\n label: gettext('Pending acceptance`data broker subscription`'),\n value: DeviceRegistrationStatus.PENDING_ACCEPTANCE\n };\n break;\n case DeviceRegistrationStatus.ACCEPTED:\n result = {\n name: DeviceRegistrationStatus.ACCEPTED,\n label: gettext('Accepted`data broker subscription`'),\n value: DeviceRegistrationStatus.ACCEPTED\n };\n case DeviceRegistrationStatus.BLOCKED:\n result = {\n name: DeviceRegistrationStatus.BLOCKED,\n label: gettext('Blocked`data broker subscription`'),\n value: DeviceRegistrationStatus.BLOCKED\n };\n break;\n }\n return result;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n IDeviceRegistration,\n IManagedObject,\n IUser,\n UserService,\n InventoryService,\n DeviceRegistrationService,\n DeviceRegistrationStatus\n} from '@c8y/client';\nimport { gettext } from '@c8y/client/src/gettext';\nimport { get, pick, set } from 'lodash-es';\nimport { BehaviorSubject, interval, merge, Observable, Subject, Subscription } from 'rxjs';\nimport {\n ManagedObjectRealtimeService,\n DeviceBootstrapRealtimeService,\n AppStateService\n} from '@c8y/ngx-components';\nimport {\n SubscriptionStatusViewModel,\n DataBrokerConnectorStatus,\n SubscriptionViewModel,\n SubscriptionsViewModelNg1\n} from './model/data-broker.subscription.model';\nimport {\n SubscriptionStatusViewModelFactory,\n NewDeviceRequestStatusFactory\n} from './factories/data-broker.subscription.factory';\nimport { distinctUntilChanged, filter, map, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class DataBrokerSubscriptionsService {\n private readonly FRAGMENT_TYPE: string = 'c8y_BrokerSource';\n private readonly NEW_DEVICE_REQUEST_TYPE: string = 'c8y_DataBroker';\n /**\n * inventory polling interval\n */\n private readonly POLL_INTERVAL_FOR_SUBSCRIPTIONS = 15000;\n /**\n * produce status fragment for subscription\n */\n private subscriptionStatusViewModelFactory: SubscriptionStatusViewModelFactory;\n /**\n * produce request status view model\n */\n private newDeviceRequestStatusViewModelFactory: NewDeviceRequestStatusFactory;\n\n private moRealtimeSubscriptionsMap = new Map<string, Subscription>();\n\n private subscriptionsCount;\n\n private refreshPendingTrigger$ = new BehaviorSubject<void>(null);\n\n filters = {\n fragmentType: this.FRAGMENT_TYPE\n };\n\n /**\n * legacy enum values\n */\n NEW_DEVICE_REQUEST_STATUS;\n\n constructor(\n private moRealtimeService: ManagedObjectRealtimeService,\n private deviceBootstrapRealtimeService: DeviceBootstrapRealtimeService,\n private inventoryService: InventoryService,\n private userService: UserService,\n private deviceRegistrationService: DeviceRegistrationService,\n private appStateService: AppStateService\n ) {\n this.subscriptionStatusViewModelFactory = new SubscriptionStatusViewModelFactory();\n this.newDeviceRequestStatusViewModelFactory = new NewDeviceRequestStatusFactory();\n\n // Build legacy enum structure for ng1 component\n this.NEW_DEVICE_REQUEST_STATUS = this.generateDeviceRequestStatusEnum(\n this.newDeviceRequestStatusViewModelFactory\n );\n }\n\n async getBrokerSubscriptionsList(): Promise<IManagedObject[]> {\n return (await this.inventoryService.list(this.filters)).data;\n }\n\n /**\n * User status text (legacy compatibility)\n */\n getVisibleUserStatusText(user): string {\n return user.enabled ? gettext('active`subscription`') : gettext('inactive`subscription`');\n }\n\n async remove(subscription: SubscriptionViewModel) {\n // handle realtime unsubsribe\n if (this.moRealtimeSubscriptionsMap.has(subscription.id)) {\n this.moRealtimeSubscriptionsMap.get(subscription.id).unsubscribe();\n this.moRealtimeSubscriptionsMap.delete(subscription.id);\n }\n // handle removal\n const brokerSourceRenamed = `_${this.FRAGMENT_TYPE}`;\n set(subscription, this.FRAGMENT_TYPE, null);\n\n return await this.inventoryService.update(\n pick(subscription, ['id', this.FRAGMENT_TYPE, brokerSourceRenamed])\n );\n }\n\n async setStatus(\n subscription: SubscriptionViewModel,\n enabled: boolean\n ): Promise<SubscriptionViewModel> {\n const userData = (\n await this.userService.update({\n id: subscription.userId,\n enabled\n } as Partial<IUser>)\n ).data;\n subscription.userEnabled = userData.enabled;\n subscription.visibleUserStatus = this.getVisibleUserStatusText(userData);\n return subscription;\n }\n\n /**\n * List of pending subscriptions\n */\n async listPendingBrokerSubscriptions(): Promise<IDeviceRegistration[]> {\n return (\n await this.deviceRegistrationService.list({\n pageSize: 2000,\n withTotalPages: true\n })\n ).data;\n }\n\n /**\n * Accept subscription\n */\n async accept(code: string): Promise<IDeviceRegistration> {\n return (await this.deviceRegistrationService.accept(code)).data;\n }\n\n /**\n * Discard subscription\n */\n async discard(code: string) {\n return await this.deviceRegistrationService.delete(code);\n }\n\n /**\n * Add new subscription\n */\n async create(code: string): Promise<IDeviceRegistration> {\n return (\n await this.deviceRegistrationService.create({\n id: code,\n type: this.NEW_DEVICE_REQUEST_TYPE\n })\n ).data;\n }\n\n getForNg1({\n pollingInterval,\n onPendingSubscriptions,\n onExistingSubscriptions,\n onMoUpdate\n }): SubscriptionsViewModelNg1 {\n const reload$ = new Subject<void>();\n const destroy$ = new Subject<void>();\n const ready$ = new Subject<void>();\n\n const unsubscribeRealtime = () => {\n const moRealtimeSubscriptionIterator = this.moRealtimeSubscriptionsMap.keys();\n let key = moRealtimeSubscriptionIterator.next().value as string;\n while (this.moRealtimeSubscriptionsMap.has(key)) {\n this.moRealtimeSubscriptionsMap.get(key).unsubscribe();\n this.moRealtimeSubscriptionsMap.delete(key as string);\n key = moRealtimeSubscriptionIterator.next().value as string;\n }\n };\n\n const userInitialized$ = this.appStateService.currentUser.pipe(\n filter(currentUser => currentUser !== null)\n );\n const triggers = merge(reload$, ready$);\n const pendingSubscriptions$: Observable<SubscriptionViewModel[]> = merge(\n triggers,\n this.deviceBootstrapRealtimeService.onAll$(),\n this.refreshPendingTrigger$\n ).pipe(\n switchMap(() => userInitialized$),\n switchMap(() => this.listPendingBrokerSubscriptions()),\n map(pendingSubscriptions =>\n this.convertDeviceRegistrationsToSubscriptionViewModels(pendingSubscriptions)\n ),\n takeUntil(destroy$)\n );\n const existingSubscriptions$: Observable<SubscriptionViewModel[]> = merge(\n triggers,\n interval(pollingInterval)\n ).pipe(\n switchMap(() => userInitialized$),\n switchMap(() => this.getBrokerSubscriptionsList()),\n tap(mos => {\n if (this.subscriptionsCount !== mos.length) {\n this.refreshPendingTrigger$.next();\n this.subscriptionsCount = mos.length;\n }\n mos.forEach(mo => {\n if (!this.moRealtimeSubscriptionsMap.has(mo.id)) {\n const mortObservable = this.moRealtimeService\n .onUpdate$(mo.id)\n .pipe(switchMap(mo => this.convertToViewModel([mo])));\n this.moRealtimeSubscriptionsMap.set(mo.id, mortObservable.subscribe(onMoUpdate));\n }\n });\n }),\n distinctUntilChanged(),\n switchMap(mos => this.convertToViewModel(mos)),\n takeUntil(destroy$)\n );\n\n return {\n init() {\n pendingSubscriptions$.subscribe(onPendingSubscriptions);\n existingSubscriptions$.subscribe(onExistingSubscriptions);\n setTimeout(() => {\n ready$.next();\n }, 1000);\n },\n reload() {\n reload$.next();\n },\n destroy() {\n destroy$.next();\n destroy$.complete();\n unsubscribeRealtime();\n }\n };\n }\n\n private convertDeviceRegistrationsToSubscriptionViewModels(\n pendingSubscriptions\n ): SubscriptionViewModel[] {\n const convertedToViewModel = pendingSubscriptions\n .filter(deviceRequest => deviceRequest.type === this.NEW_DEVICE_REQUEST_TYPE)\n .map(deviceRequest => {\n return Object.assign({}, get(deviceRequest, 'customProperties.c8y_BrokerSource'), {\n status: this.newDeviceRequestStatusViewModelFactory.build(deviceRequest.status),\n type: deviceRequest.type,\n id: deviceRequest.id\n });\n });\n return convertedToViewModel;\n }\n\n private generateDeviceRequestStatusEnum(newDeviceRequestViewModelFactory) {\n const result = {};\n for (const status in DeviceRegistrationStatus) {\n Object.defineProperty(result, status, {\n enumerable: true,\n writable: false,\n configurable: false,\n value: newDeviceRequestViewModelFactory.build(status as any as DeviceRegistrationStatus)\n });\n }\n return result;\n }\n\n // Function maps data in suitable manner to have it easier to display. Used in service mainly for compatibility\n private async convertToViewModel(\n subscriptions: IManagedObject[]\n ): Promise<SubscriptionViewModel[]> {\n const viewModelSubscriptions = subscriptions.map(async subscription => {\n const { data: userDetails } = await this.userService.detail(subscription.owner);\n return {\n userEnabled: userDetails.enabled,\n visibleUserStatus: this.getVisibleUserStatusText(userDetails), //TODO:IIAR should be extracted to ngx pipe when the rest of data-broker is migrated\n userId: userDetails.id,\n status: this.getStatusViewModel(subscription.c8y_BrokerSource.status), //TODO:IIAR should be extracted to ngx pipe when the rest of data-broker is migrated\n id: subscription.id,\n _c8y_BrokerSource: subscription.c8y_BrokerSource\n } as SubscriptionViewModel;\n });\n return Promise.all(viewModelSubscriptions);\n }\n\n // Status decoration (legacy compatibility)\n private getStatusViewModel(status: DataBrokerConnectorStatus): SubscriptionStatusViewModel {\n return this.subscriptionStatusViewModelFactory.build(status);\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n CoreModule,\n ManagedObjectRealtimeService,\n DeviceBootstrapRealtimeService\n} from '@c8y/ngx-components';\nimport { DataBrokerSubscriptionsService } from './data-broker-subscriptions.service';\n\n@NgModule({\n declarations: [],\n imports: [CoreModule],\n entryComponents: [],\n providers: [\n DataBrokerSubscriptionsService,\n ManagedObjectRealtimeService,\n DeviceBootstrapRealtimeService\n ],\n exports: []\n})\nexport class DataBrokerModule {}\n","import { downgradeInjectable } from '@angular/upgrade/static';\nimport { DataBrokerSubscriptionsService } from '../data-broker-subscriptions.service';\nexport const dataBrokerSubscriptionsService = downgradeInjectable(DataBrokerSubscriptionsService);\n","import * as angular from 'angular';\nimport { registerNgModule } from '@c8y/ng1-modules';\nimport { dataBrokerSubscriptionsService } from './downgraded.services';\n\nconst NAME = 'c8y.upgrade.dataBroker';\n\nangular\n .module(NAME, [])\n .service('c8yDataBrokerSubscriptionsService', dataBrokerSubscriptionsService);\n\nexport const ng1Modules = [NAME];\n\nregisterNgModule(ng1Modules);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["gettext"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-data-broker.mjs","sources":["../../data-broker/model/data-broker.subscription.model.ts","../../data-broker/factories/data-broker.subscription.factory.ts","../../data-broker/data-broker-subscriptions.service.ts","../../data-broker/data-broker.module.ts","../../data-broker/ng1/downgraded.services.ts","../../data-broker/ng1/index.ts","../../data-broker/c8y-ngx-components-data-broker.ts"],"sourcesContent":["import { IUser } from '@c8y/client';\n\nexport enum DataBrokerConnectorStatus {\n ACTIVE = 'ACTIVE',\n SUSPENDED = 'SUSPENDED',\n WAITING = 'WAITING'\n}\n\nexport interface SubscriptionStatusViewModel {\n icon: string;\n textClass: string;\n text: string;\n iconClass?: string;\n}\n\nexport interface SubscriptionViewModel {\n userEnabled: boolean;\n visibleUserStatus: string;\n userId: string;\n status: SubscriptionStatusViewModel;\n id: string;\n _c8y_BrokerSource: any;\n}\n\nexport interface NewDeviceRequestStatus {\n name: string;\n label: string;\n value: string;\n}\n\nexport interface SubscriptionsViewModelNg1 {\n init(): void;\n reload(): void;\n destroy(): void;\n}\n\nexport type UserStatusPartial = Required<Pick<IUser, 'id' | 'enabled'>>;\n","import { DeviceRegistrationStatus } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport {\n SubscriptionStatusViewModel,\n DataBrokerConnectorStatus,\n NewDeviceRequestStatus\n} from '../model/data-broker.subscription.model';\n\nexport class SubscriptionStatusViewModelFactory {\n build(status: DataBrokerConnectorStatus): SubscriptionStatusViewModel {\n let statusViewModel = null;\n switch (status) {\n case DataBrokerConnectorStatus.ACTIVE: // dataBrokerConnectorsSvc.STATUS.ACTIVE.value\n statusViewModel = {\n icon: 'check-circle',\n textClass: 'text-success',\n text: gettext('Active`data broker subscription`')\n };\n break;\n case DataBrokerConnectorStatus.SUSPENDED: // dataBrokerConnectorsSvc.STATUS.SUSPENDED.value\n statusViewModel = {\n icon: 'exclamation-triangle',\n textClass: 'text-warning',\n text: gettext('Inactive`data broker subscription`')\n };\n break;\n case DataBrokerConnectorStatus.WAITING: // dataBrokerConnectorsSvc.STATUS.WAITING.value\n statusViewModel = {\n icon: 'spinner',\n iconClass: 'icon-spin',\n textClass: 'text-warning',\n text: gettext('Waiting`data broker subscription`')\n };\n break;\n default:\n break;\n }\n return statusViewModel;\n }\n}\n\nexport class NewDeviceRequestStatusFactory {\n build(status: DeviceRegistrationStatus): NewDeviceRequestStatus {\n let result = null;\n switch (status) {\n case DeviceRegistrationStatus.WAITING_FOR_CONNECTION:\n result = {\n name: DeviceRegistrationStatus.WAITING_FOR_CONNECTION,\n label: gettext('Waiting for connection`data broker subscription`'),\n value: DeviceRegistrationStatus.WAITING_FOR_CONNECTION\n };\n break;\n case DeviceRegistrationStatus.PENDING_ACCEPTANCE:\n result = {\n name: DeviceRegistrationStatus.PENDING_ACCEPTANCE,\n label: gettext('Pending acceptance`data broker subscription`'),\n value: DeviceRegistrationStatus.PENDING_ACCEPTANCE\n };\n break;\n case DeviceRegistrationStatus.ACCEPTED:\n result = {\n name: DeviceRegistrationStatus.ACCEPTED,\n label: gettext('Accepted`data broker subscription`'),\n value: DeviceRegistrationStatus.ACCEPTED\n };\n case DeviceRegistrationStatus.BLOCKED:\n result = {\n name: DeviceRegistrationStatus.BLOCKED,\n label: gettext('Blocked`data broker subscription`'),\n value: DeviceRegistrationStatus.BLOCKED\n };\n break;\n }\n return result;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n IDeviceRegistration,\n IManagedObject,\n IUser,\n UserService,\n InventoryService,\n DeviceRegistrationService,\n DeviceRegistrationStatus\n} from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components';\nimport { get, pick, set } from 'lodash-es';\nimport { BehaviorSubject, interval, merge, Observable, Subject, Subscription } from 'rxjs';\nimport {\n ManagedObjectRealtimeService,\n DeviceBootstrapRealtimeService,\n AppStateService\n} from '@c8y/ngx-components';\nimport {\n SubscriptionStatusViewModel,\n DataBrokerConnectorStatus,\n SubscriptionViewModel,\n SubscriptionsViewModelNg1\n} from './model/data-broker.subscription.model';\nimport {\n SubscriptionStatusViewModelFactory,\n NewDeviceRequestStatusFactory\n} from './factories/data-broker.subscription.factory';\nimport { distinctUntilChanged, filter, map, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n@Injectable()\nexport class DataBrokerSubscriptionsService {\n private readonly FRAGMENT_TYPE: string = 'c8y_BrokerSource';\n private readonly NEW_DEVICE_REQUEST_TYPE: string = 'c8y_DataBroker';\n /**\n * inventory polling interval\n */\n private readonly POLL_INTERVAL_FOR_SUBSCRIPTIONS = 15000;\n /**\n * produce status fragment for subscription\n */\n private subscriptionStatusViewModelFactory: SubscriptionStatusViewModelFactory;\n /**\n * produce request status view model\n */\n private newDeviceRequestStatusViewModelFactory: NewDeviceRequestStatusFactory;\n\n private moRealtimeSubscriptionsMap = new Map<string, Subscription>();\n\n private subscriptionsCount;\n\n private refreshPendingTrigger$ = new BehaviorSubject<void>(null);\n\n filters = {\n fragmentType: this.FRAGMENT_TYPE\n };\n\n /**\n * legacy enum values\n */\n NEW_DEVICE_REQUEST_STATUS;\n\n constructor(\n private moRealtimeService: ManagedObjectRealtimeService,\n private deviceBootstrapRealtimeService: DeviceBootstrapRealtimeService,\n private inventoryService: InventoryService,\n private userService: UserService,\n private deviceRegistrationService: DeviceRegistrationService,\n private appStateService: AppStateService\n ) {\n this.subscriptionStatusViewModelFactory = new SubscriptionStatusViewModelFactory();\n this.newDeviceRequestStatusViewModelFactory = new NewDeviceRequestStatusFactory();\n\n // Build legacy enum structure for ng1 component\n this.NEW_DEVICE_REQUEST_STATUS = this.generateDeviceRequestStatusEnum(\n this.newDeviceRequestStatusViewModelFactory\n );\n }\n\n async getBrokerSubscriptionsList(): Promise<IManagedObject[]> {\n return (await this.inventoryService.list(this.filters)).data;\n }\n\n /**\n * User status text (legacy compatibility)\n */\n getVisibleUserStatusText(user): string {\n return user.enabled ? gettext('active`subscription`') : gettext('inactive`subscription`');\n }\n\n async remove(subscription: SubscriptionViewModel) {\n // handle realtime unsubsribe\n if (this.moRealtimeSubscriptionsMap.has(subscription.id)) {\n this.moRealtimeSubscriptionsMap.get(subscription.id).unsubscribe();\n this.moRealtimeSubscriptionsMap.delete(subscription.id);\n }\n // handle removal\n const brokerSourceRenamed = `_${this.FRAGMENT_TYPE}`;\n set(subscription, this.FRAGMENT_TYPE, null);\n\n return await this.inventoryService.update(\n pick(subscription, ['id', this.FRAGMENT_TYPE, brokerSourceRenamed])\n );\n }\n\n async setStatus(\n subscription: SubscriptionViewModel,\n enabled: boolean\n ): Promise<SubscriptionViewModel> {\n const userData = (\n await this.userService.update({\n id: subscription.userId,\n enabled\n } as Partial<IUser>)\n ).data;\n subscription.userEnabled = userData.enabled;\n subscription.visibleUserStatus = this.getVisibleUserStatusText(userData);\n return subscription;\n }\n\n /**\n * List of pending subscriptions\n */\n async listPendingBrokerSubscriptions(): Promise<IDeviceRegistration[]> {\n return (\n await this.deviceRegistrationService.list({\n pageSize: 2000,\n withTotalPages: true\n })\n ).data;\n }\n\n /**\n * Accept subscription\n */\n async accept(code: string): Promise<IDeviceRegistration> {\n return (await this.deviceRegistrationService.accept(code)).data;\n }\n\n /**\n * Discard subscription\n */\n async discard(code: string) {\n return await this.deviceRegistrationService.delete(code);\n }\n\n /**\n * Add new subscription\n */\n async create(code: string): Promise<IDeviceRegistration> {\n return (\n await this.deviceRegistrationService.create({\n id: code,\n type: this.NEW_DEVICE_REQUEST_TYPE\n })\n ).data;\n }\n\n getForNg1({\n pollingInterval,\n onPendingSubscriptions,\n onExistingSubscriptions,\n onMoUpdate\n }): SubscriptionsViewModelNg1 {\n const reload$ = new Subject<void>();\n const destroy$ = new Subject<void>();\n const ready$ = new Subject<void>();\n\n const unsubscribeRealtime = () => {\n const moRealtimeSubscriptionIterator = this.moRealtimeSubscriptionsMap.keys();\n let key = moRealtimeSubscriptionIterator.next().value as string;\n while (this.moRealtimeSubscriptionsMap.has(key)) {\n this.moRealtimeSubscriptionsMap.get(key).unsubscribe();\n this.moRealtimeSubscriptionsMap.delete(key as string);\n key = moRealtimeSubscriptionIterator.next().value as string;\n }\n };\n\n const userInitialized$ = this.appStateService.currentUser.pipe(\n filter(currentUser => currentUser !== null)\n );\n const triggers = merge(reload$, ready$);\n const pendingSubscriptions$: Observable<SubscriptionViewModel[]> = merge(\n triggers,\n this.deviceBootstrapRealtimeService.onAll$(),\n this.refreshPendingTrigger$\n ).pipe(\n switchMap(() => userInitialized$),\n switchMap(() => this.listPendingBrokerSubscriptions()),\n map(pendingSubscriptions =>\n this.convertDeviceRegistrationsToSubscriptionViewModels(pendingSubscriptions)\n ),\n takeUntil(destroy$)\n );\n const existingSubscriptions$: Observable<SubscriptionViewModel[]> = merge(\n triggers,\n interval(pollingInterval)\n ).pipe(\n switchMap(() => userInitialized$),\n switchMap(() => this.getBrokerSubscriptionsList()),\n tap(mos => {\n if (this.subscriptionsCount !== mos.length) {\n this.refreshPendingTrigger$.next();\n this.subscriptionsCount = mos.length;\n }\n mos.forEach(mo => {\n if (!this.moRealtimeSubscriptionsMap.has(mo.id)) {\n const mortObservable = this.moRealtimeService\n .onUpdate$(mo.id)\n .pipe(switchMap(mo => this.convertToViewModel([mo])));\n this.moRealtimeSubscriptionsMap.set(mo.id, mortObservable.subscribe(onMoUpdate));\n }\n });\n }),\n distinctUntilChanged(),\n switchMap(mos => this.convertToViewModel(mos)),\n takeUntil(destroy$)\n );\n\n return {\n init() {\n pendingSubscriptions$.subscribe(onPendingSubscriptions);\n existingSubscriptions$.subscribe(onExistingSubscriptions);\n setTimeout(() => {\n ready$.next();\n }, 1000);\n },\n reload() {\n reload$.next();\n },\n destroy() {\n destroy$.next();\n destroy$.complete();\n unsubscribeRealtime();\n }\n };\n }\n\n private convertDeviceRegistrationsToSubscriptionViewModels(\n pendingSubscriptions\n ): SubscriptionViewModel[] {\n const convertedToViewModel = pendingSubscriptions\n .filter(deviceRequest => deviceRequest.type === this.NEW_DEVICE_REQUEST_TYPE)\n .map(deviceRequest => {\n return Object.assign({}, get(deviceRequest, 'customProperties.c8y_BrokerSource'), {\n status: this.newDeviceRequestStatusViewModelFactory.build(deviceRequest.status),\n type: deviceRequest.type,\n id: deviceRequest.id\n });\n });\n return convertedToViewModel;\n }\n\n private generateDeviceRequestStatusEnum(newDeviceRequestViewModelFactory) {\n const result = {};\n for (const status in DeviceRegistrationStatus) {\n Object.defineProperty(result, status, {\n enumerable: true,\n writable: false,\n configurable: false,\n value: newDeviceRequestViewModelFactory.build(status as any as DeviceRegistrationStatus)\n });\n }\n return result;\n }\n\n // Function maps data in suitable manner to have it easier to display. Used in service mainly for compatibility\n private async convertToViewModel(\n subscriptions: IManagedObject[]\n ): Promise<SubscriptionViewModel[]> {\n const viewModelSubscriptions = subscriptions.map(async subscription => {\n const { data: userDetails } = await this.userService.detail(subscription.owner);\n return {\n userEnabled: userDetails.enabled,\n visibleUserStatus: this.getVisibleUserStatusText(userDetails), //TODO:IIAR should be extracted to ngx pipe when the rest of data-broker is migrated\n userId: userDetails.id,\n status: this.getStatusViewModel(subscription.c8y_BrokerSource.status), //TODO:IIAR should be extracted to ngx pipe when the rest of data-broker is migrated\n id: subscription.id,\n _c8y_BrokerSource: subscription.c8y_BrokerSource\n } as SubscriptionViewModel;\n });\n return Promise.all(viewModelSubscriptions);\n }\n\n // Status decoration (legacy compatibility)\n private getStatusViewModel(status: DataBrokerConnectorStatus): SubscriptionStatusViewModel {\n return this.subscriptionStatusViewModelFactory.build(status);\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n CoreModule,\n ManagedObjectRealtimeService,\n DeviceBootstrapRealtimeService\n} from '@c8y/ngx-components';\nimport { DataBrokerSubscriptionsService } from './data-broker-subscriptions.service';\n\n@NgModule({\n declarations: [],\n imports: [CoreModule],\n entryComponents: [],\n providers: [\n DataBrokerSubscriptionsService,\n ManagedObjectRealtimeService,\n DeviceBootstrapRealtimeService\n ],\n exports: []\n})\nexport class DataBrokerModule {}\n","import { downgradeInjectable } from '@angular/upgrade/static';\nimport { DataBrokerSubscriptionsService } from '../data-broker-subscriptions.service';\nexport const dataBrokerSubscriptionsService = downgradeInjectable(DataBrokerSubscriptionsService);\n","import * as angular from 'angular';\nimport { registerNgModule } from '@c8y/ng1-modules';\nimport { dataBrokerSubscriptionsService } from './downgraded.services';\n\nconst NAME = 'c8y.upgrade.dataBroker';\n\nangular\n .module(NAME, [])\n .service('c8yDataBrokerSubscriptionsService', dataBrokerSubscriptionsService);\n\nexport const ng1Modules = [NAME];\n\nregisterNgModule(ng1Modules);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,8 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
3
  import { Injectable, Component, ViewChild } from '@angular/core';
4
- import { gettext } from '@c8y/client/src/gettext';
5
4
  import * as i2 from '@c8y/ngx-components';
6
- import { CommonModule, CoreModule } from '@c8y/ngx-components';
5
+ import { gettext, CommonModule, CoreModule } from '@c8y/ngx-components';
7
6
  import { Lwm2mClientService } from '@c8y/ngx-components/protocol-lwm2m/services';
8
7
  import * as i1 from '@c8y/client';
9
8
  import * as i3 from '@angular/common';
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-protocol-lwm2m-components-post-registration-operations.mjs","sources":["../../protocol-lwm2m/components/post-registration-operations/lwm2m-post-operations.service.ts","../../protocol-lwm2m/components/post-registration-operations/lwm2m-post-operations.component.ts","../../protocol-lwm2m/components/post-registration-operations/lwm2m-post-operations.component.html","../../protocol-lwm2m/components/post-registration-operations/c8y-ngx-components-protocol-lwm2m-components-post-registration-operations.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FetchClient, IFetchResponse } from '@c8y/client';\nimport { Lwm2mClientService } from '@c8y/ngx-components/protocol-lwm2m/services';\nimport { LWM2MPostOperationsParameters } from '@c8y/ngx-components/protocol-lwm2m/model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LWM2MPostOperationsParametersService extends Lwm2mClientService<LWM2MPostOperationsParameters> {\n private readonly detailUrl: string = '/postRegistrationOptions';\n\n constructor(client: FetchClient) {\n super(client);\n }\n\n get(): Promise<IFetchResponse> {\n return super.fetch(this.detailUrl);\n }\n\n put(data: LWM2MPostOperationsParameters) {\n const headers = { 'content-type': 'application/json', accept: 'application/json' };\n return super.fetch(this.detailUrl, {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: headers\n });\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { gettext } from '@c8y/client/src/gettext';\nimport { LWM2MPostOperationsParametersService } from './lwm2m-post-operations.service';\nimport { AlertService, CoreModule, CommonModule } from '@c8y/ngx-components';\nimport { LWM2MPostOperationsParameters } from '@c8y/ngx-components/protocol-lwm2m/model';\n\n@Component({\n selector: 'lwm2m-post-operations',\n templateUrl: './lwm2m-post-operations.component.html',\n standalone: true,\n imports: [CommonModule, CoreModule]\n})\nexport class LWM2MPostOperationsComponent implements OnInit {\n @ViewChild('commandsForm') commandsForm: NgForm;\n\n exampleCommands = [\n {\n command: 'discover',\n resource: '<objectId>',\n description: gettext('Discover all resources of Object 3300, the generic sensor.')\n },\n {\n command: 'read',\n resource: '<objectId>/<objectInstanceId>/<resourceId>',\n description: gettext('Read maximum sensor value')\n },\n {\n command: 'write',\n resource: '<objectId>/<objectInstanceId>/<resourceId> <applicationType>',\n description: gettext('Write application type \"CO2\" to device')\n },\n {\n command: 'execute',\n resource: '<objectId>/<objectInstanceId>/<resourceId>',\n description: gettext('Reset min and max values')\n },\n {\n command: 'observe',\n resource: '<objectId>/<objectInstanceId>/<resourceId>',\n description: gettext('Observe sensor value. Causes device to send every new sensor value')\n },\n {\n command: 'writeattr',\n resource: '<objectId>/<objectInstanceId>/<resourceId> greater=<value>',\n description: gettext('Only send observations if sensor value is higher than 100')\n }\n ];\n\n operations: LWM2MPostOperationsParameters = {\n commands: '',\n type: '',\n id: ''\n };\n\n constructor(\n private lwm2mPostOperationsSvc: LWM2MPostOperationsParametersService,\n private alertService: AlertService\n ) {}\n\n async ngOnInit() {\n this.operations = (await this.getPostOperationsParameters()) as LWM2MPostOperationsParameters;\n }\n\n async save(operations: LWM2MPostOperationsParameters) {\n try {\n await this.lwm2mPostOperationsSvc.put(operations);\n this.alertService.success(gettext('Post-operations saved'));\n this.commandsForm.form.markAsPristine();\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n }\n\n async getPostOperationsParameters() {\n try {\n const res = await this.lwm2mPostOperationsSvc.get();\n return (await res.json()) as LWM2MPostOperationsParameters;\n } catch (error) {\n this.alertService.addServerFailure(error);\n return {};\n }\n }\n}\n","<c8y-title>{{ 'LWM2M post-operations' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Device types' | translate\"\n [icon]=\"'c8y-device-protocols'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'LWM2M post-operations' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"card content-fullpage card--grid grid__col--7-5--md grid__row--auto-min-content\">\n <div class=\"inner-scroll bg-component\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div class=\"h4 m-r-16\" id=\"commands\">\n {{ 'Commands' | translate }}\n </div>\n </div>\n <div class=\"card-block large-padding\">\n <form\n #commandsForm=\"ngForm\"\n id=\"commandsForm\"\n class=\"d-flex d-col flex-grow fit-h\"\n (ngSubmit)=\"save(operations)\"\n >\n <div class=\"form-group\">\n <textarea\n [(ngModel)]=\"operations.commands\"\n class=\"form-control\"\n aria-labelledby=\"commands\"\n name=\"commands\"\n rows=\"20\"\n ></textarea>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"inner-scroll bg-level-1\" tabindex=\"0\">\n <div class=\"card-block large-padding\">\n <p class=\"m-b-16\">\n <i class=\"text-info m-r-4 text-14\" c8yIcon=\"info-circle\"></i>\n {{\n 'You can enter a set of LWM2M shell commands. Each command will be sent to every newly registered LWM2M device. Each command must be entered in a new line. Use the following syntax for specifying post-registration actions:'\n | translate\n }}\n </p>\n <pre class=\"bg-level-0 text-pre-normal m-b-0\">\n <ul class=\"list-unstyled m-b-0\">\n <li class=\"m-16\" *ngFor=\"let c of exampleCommands\">\n <p class=\"text-muted\"># {{c.description | translate}}</p>\n <span class=\"text-danger\">{{c.command}}</span>\n <span class=\"text-muted\">{{c.resource}}</span>\n </li>\n </ul>\n </pre>\n </div>\n </div>\n\n <div class=\"card-footer large-padding separator grid__col--fullspan\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n form=\"commandsForm\"\n [disabled]=\"commandsForm.valid && !commandsForm.dirty\"\n [attr.aria-label]=\"'Save' | translate\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.LWM2MPostOperationsParametersService"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-protocol-lwm2m-components-post-registration-operations.mjs","sources":["../../protocol-lwm2m/components/post-registration-operations/lwm2m-post-operations.service.ts","../../protocol-lwm2m/components/post-registration-operations/lwm2m-post-operations.component.ts","../../protocol-lwm2m/components/post-registration-operations/lwm2m-post-operations.component.html","../../protocol-lwm2m/components/post-registration-operations/c8y-ngx-components-protocol-lwm2m-components-post-registration-operations.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FetchClient, IFetchResponse } from '@c8y/client';\nimport { Lwm2mClientService } from '@c8y/ngx-components/protocol-lwm2m/services';\nimport { LWM2MPostOperationsParameters } from '@c8y/ngx-components/protocol-lwm2m/model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LWM2MPostOperationsParametersService extends Lwm2mClientService<LWM2MPostOperationsParameters> {\n private readonly detailUrl: string = '/postRegistrationOptions';\n\n constructor(client: FetchClient) {\n super(client);\n }\n\n get(): Promise<IFetchResponse> {\n return super.fetch(this.detailUrl);\n }\n\n put(data: LWM2MPostOperationsParameters) {\n const headers = { 'content-type': 'application/json', accept: 'application/json' };\n return super.fetch(this.detailUrl, {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: headers\n });\n }\n}\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { gettext } from '@c8y/ngx-components';\nimport { LWM2MPostOperationsParametersService } from './lwm2m-post-operations.service';\nimport { AlertService, CoreModule, CommonModule } from '@c8y/ngx-components';\nimport { LWM2MPostOperationsParameters } from '@c8y/ngx-components/protocol-lwm2m/model';\n\n@Component({\n selector: 'lwm2m-post-operations',\n templateUrl: './lwm2m-post-operations.component.html',\n standalone: true,\n imports: [CommonModule, CoreModule]\n})\nexport class LWM2MPostOperationsComponent implements OnInit {\n @ViewChild('commandsForm') commandsForm: NgForm;\n\n exampleCommands = [\n {\n command: 'discover',\n resource: '<objectId>',\n description: gettext('Discover all resources of Object 3300, the generic sensor.')\n },\n {\n command: 'read',\n resource: '<objectId>/<objectInstanceId>/<resourceId>',\n description: gettext('Read maximum sensor value')\n },\n {\n command: 'write',\n resource: '<objectId>/<objectInstanceId>/<resourceId> <applicationType>',\n description: gettext('Write application type \"CO2\" to device')\n },\n {\n command: 'execute',\n resource: '<objectId>/<objectInstanceId>/<resourceId>',\n description: gettext('Reset min and max values')\n },\n {\n command: 'observe',\n resource: '<objectId>/<objectInstanceId>/<resourceId>',\n description: gettext('Observe sensor value. Causes device to send every new sensor value')\n },\n {\n command: 'writeattr',\n resource: '<objectId>/<objectInstanceId>/<resourceId> greater=<value>',\n description: gettext('Only send observations if sensor value is higher than 100')\n }\n ];\n\n operations: LWM2MPostOperationsParameters = {\n commands: '',\n type: '',\n id: ''\n };\n\n constructor(\n private lwm2mPostOperationsSvc: LWM2MPostOperationsParametersService,\n private alertService: AlertService\n ) {}\n\n async ngOnInit() {\n this.operations = (await this.getPostOperationsParameters()) as LWM2MPostOperationsParameters;\n }\n\n async save(operations: LWM2MPostOperationsParameters) {\n try {\n await this.lwm2mPostOperationsSvc.put(operations);\n this.alertService.success(gettext('Post-operations saved'));\n this.commandsForm.form.markAsPristine();\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n }\n\n async getPostOperationsParameters() {\n try {\n const res = await this.lwm2mPostOperationsSvc.get();\n return (await res.json()) as LWM2MPostOperationsParameters;\n } catch (error) {\n this.alertService.addServerFailure(error);\n return {};\n }\n }\n}\n","<c8y-title>{{ 'LWM2M post-operations' | translate }}</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Device types' | translate\"\n [icon]=\"'c8y-device-protocols'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item [label]=\"'LWM2M post-operations' | translate\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"card content-fullpage card--grid grid__col--7-5--md grid__row--auto-min-content\">\n <div class=\"inner-scroll bg-component\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div class=\"h4 m-r-16\" id=\"commands\">\n {{ 'Commands' | translate }}\n </div>\n </div>\n <div class=\"card-block large-padding\">\n <form\n #commandsForm=\"ngForm\"\n id=\"commandsForm\"\n class=\"d-flex d-col flex-grow fit-h\"\n (ngSubmit)=\"save(operations)\"\n >\n <div class=\"form-group\">\n <textarea\n [(ngModel)]=\"operations.commands\"\n class=\"form-control\"\n aria-labelledby=\"commands\"\n name=\"commands\"\n rows=\"20\"\n ></textarea>\n </div>\n </form>\n </div>\n </div>\n\n <div class=\"inner-scroll bg-level-1\" tabindex=\"0\">\n <div class=\"card-block large-padding\">\n <p class=\"m-b-16\">\n <i class=\"text-info m-r-4 text-14\" c8yIcon=\"info-circle\"></i>\n {{\n 'You can enter a set of LWM2M shell commands. Each command will be sent to every newly registered LWM2M device. Each command must be entered in a new line. Use the following syntax for specifying post-registration actions:'\n | translate\n }}\n </p>\n <pre class=\"bg-level-0 text-pre-normal m-b-0\">\n <ul class=\"list-unstyled m-b-0\">\n <li class=\"m-16\" *ngFor=\"let c of exampleCommands\">\n <p class=\"text-muted\"># {{c.description | translate}}</p>\n <span class=\"text-danger\">{{c.command}}</span>\n <span class=\"text-muted\">{{c.resource}}</span>\n </li>\n </ul>\n </pre>\n </div>\n </div>\n\n <div class=\"card-footer large-padding separator grid__col--fullspan\">\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n form=\"commandsForm\"\n [disabled]=\"commandsForm.valid && !commandsForm.dirty\"\n [attr.aria-label]=\"'Save' | translate\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.LWM2MPostOperationsParametersService"],"mappings":"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"}
@@ -14585,7 +14585,7 @@ class TabsOutletComponent {
14585
14585
  if (this.tabs) {
14586
14586
  visibleTabs = this.tabs.filter(tab => tab.hide !== true);
14587
14587
  }
14588
- return visibleTabs.length > 1;
14588
+ return visibleTabs.length > 1 || visibleTabs.find(tab => tab.showAlways);
14589
14589
  }
14590
14590
  get isHorizontal() {
14591
14591
  return this.orientation === 'horizontal';