@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
1 lines • 39.7 kB
Source Map (JSON)
{"version":3,"file":"c8y-ngx-components-sigfox-device-registration.mjs","sources":["../../sigfox-device-registration/sigfox-device-registration.model.ts","../../sigfox-device-registration/sigfox-provider.service.ts","../../sigfox-device-registration/sigfox-device-registration.component.ts","../../sigfox-device-registration/sigfox-device-registration.component.html","../../sigfox-device-registration/sigfox-device-registration-button.component.ts","../../sigfox-device-registration/sigfox-device-registration-button.component.html","../../sigfox-device-registration/sigfox-device-registration.factory.ts","../../sigfox-device-registration/sigfox-device-registration.module.ts","../../sigfox-device-registration/c8y-ngx-components-sigfox-device-registration.ts"],"sourcesContent":["import { IManagedObject } from '@c8y/client';\n\nexport interface SigfoxDevice {\n id: string;\n pac: string;\n deviceType: IManagedObject;\n contractId: string;\n prototype: boolean;\n productCertificate: string;\n error?: string;\n lnsConnectionName: string;\n}\n\nexport interface Contract {\n id: string;\n name: string;\n}\n\nexport interface SigfoxDeviceFormly extends SigfoxDevice {\n contract: Contract;\n connection: {\n name: string;\n description: string;\n baseUrl: string;\n parentGroupId: string;\n username: string;\n password: string;\n };\n}\n\nexport const PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION = {\n EVENT: 'deviceRegistration',\n COMPONENT: 'sigfox-registration',\n RESULT: { SUCCESS: 'registrationSuccess', FAILURE: 'registrationFailure' }\n} as const;\n","import { Injectable } from '@angular/core';\nimport {\n FetchClient,\n IFetchOptions,\n IManagedObject,\n InventoryService,\n IResult,\n IResultList,\n ITenantOption,\n TenantOptionsService\n} from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AppStateService } from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SigfoxDevice } from './sigfox-device-registration.model';\n\nexport enum SigfoxErrorName {\n NoDeviceProtocolsError = 'NoDeviceProtocolsError',\n NoConnectivitySettingsError = 'NoConnectivitySettingsError',\n ConnectivitySettingsError = 'ConnectivitySettingsError',\n ContractError = 'ContractError',\n NoContractsError = 'NoContractsError',\n RegistrationError = 'RegistrationError',\n DeviceProtocolsFetchError = 'DeviceProtocolsFetchError'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SigfoxProviderService {\n private readonly baseUrl: string = '/service/sigfox-agent/';\n private readonly registrationUrl: string = `${this.baseUrl}newDeviceRequest`;\n private readonly contractsUrl: string = `${this.baseUrl}contract`;\n private readonly header: any = { 'Content-Type': 'application/json' };\n\n constructor(\n private client: FetchClient,\n private inventoryService: InventoryService,\n private tenantOptions: TenantOptionsService,\n private translateService: TranslateService,\n private appState: AppStateService\n ) {}\n async getConnections() {\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.header\n };\n const res = await this.client.fetch(`${this.baseUrl}lns-connection`, options);\n const data = await res.json();\n\n if (res.status === 200) {\n if (data.length === 0) {\n await this.throwNoConnectivitySettingsError();\n }\n } else {\n await this.throwConnectivitySettingsError(data);\n }\n return { res, data };\n }\n\n /**\n * Gets contracts from Sigfox platform.\n * @param connectionName The name of connection for which contracts will be retrieved\n * @returns The result list with contract, or throws an error with exception.\n */\n async getContracts(connectionName: string): Promise<IResultList<any>> {\n const options: IFetchOptions = {\n method: 'GET',\n headers: this.header,\n params: {\n sigfoxConnectionName: connectionName\n }\n };\n const res = await this.client.fetch(this.contractsUrl, options);\n\n const data = await res.json();\n\n if (res.status === 200) {\n if (data.length === 0) {\n this.throwNoContractsError();\n }\n } else {\n this.throwContractError(data);\n }\n return { res, data };\n }\n\n async createDevice(device: SigfoxDevice): Promise<IResult<SigfoxDevice>> {\n const options: IFetchOptions = {\n method: 'POST',\n headers: this.header,\n body: JSON.stringify(device)\n };\n const res = await this.client.fetch(this.registrationUrl, options);\n const data = await res.json();\n\n if (res.status !== 201) {\n this.throwRegistrationError(data);\n }\n return { res, data };\n }\n\n async getAvailableProtocols(\n filter: object = { withTotalPages: true }\n ): Promise<IResultList<IManagedObject>> {\n const query = {\n __filter: {\n __and: [\n { __has: 'c8y_IsDeviceType' },\n {\n type: { __in: ['c8y_SigfoxDeviceType', 'c8y_LpwanDeviceType'] }\n }\n ]\n },\n __orderby: [{ name: 1 }]\n };\n const deviceProtocolsList = await this.inventoryService.listQuery(query, filter);\n const { res, data } = deviceProtocolsList;\n\n if (res.status === 200) {\n if (data.length === 0) {\n this.throwNoDeviceProtocolsError();\n }\n } else {\n this.throwDeviceProtocolsFetchError();\n }\n return deviceProtocolsList;\n }\n\n async hasConnectivitySettings(): Promise<boolean> {\n const option: ITenantOption = {\n category: 'sigfox-agent',\n key: 'provider.token'\n };\n try {\n await this.tenantOptions.detail(option);\n return true;\n } catch (e) {\n await this.throwNoConnectivitySettingsError();\n }\n }\n\n private async throwNoConnectivitySettingsError() {\n const error = new Error();\n error.name = SigfoxErrorName.NoConnectivitySettingsError;\n const hasAdminRight = await this.appState.isApplicationAvailable('administration');\n if (hasAdminRight) {\n error.message = this.translateService.instant(\n gettext(\n `Connectivity settings are not configured. Configure them in the Administration application under <a href=\"{{ link }}\">Settings</a>.`\n ),\n {\n link: '/apps/administration/index.html#/connectivitySettings/multiple_lns_connectors_sigfox'\n }\n );\n } else {\n error.message = gettext(\n 'Connectivity settings are not configured. Contact the administrator.'\n );\n }\n\n throw error;\n }\n\n private throwConnectivitySettingsError(data: { message: string }) {\n const error = new Error();\n error.name = SigfoxErrorName.ConnectivitySettingsError;\n error.message = data.message;\n throw error;\n }\n private throwRegistrationError(data: { message: string }) {\n const error = new Error();\n error.name = SigfoxErrorName.RegistrationError;\n error.message = data.message;\n throw error;\n }\n\n private throwDeviceProtocolsFetchError() {\n const error = new Error();\n error.name = SigfoxErrorName.DeviceProtocolsFetchError;\n error.message = gettext('Could not load device protocols.');\n throw error;\n }\n\n private throwNoDeviceProtocolsError() {\n const error = new Error();\n error.name = SigfoxErrorName.NoDeviceProtocolsError;\n error.message = this.translateService.instant(\n gettext(\n `No device protocols configured. Create a Sigfox device protocol in <a href=\"{{ link }}\">Device protocols</a>.`\n ),\n {\n link: '/apps/devicemanagement/#/deviceprotocols'\n }\n );\n throw error;\n }\n\n private throwContractError(data: { message: string }) {\n const error = new Error();\n error.name = SigfoxErrorName.ContractError;\n error.message = data.message;\n throw error;\n }\n\n private throwNoContractsError() {\n const error = new Error();\n error.name = SigfoxErrorName.NoContractsError;\n error.message = gettext(\n 'No contracts found. New contracts must be created via the Sigfox platform.'\n );\n throw error;\n }\n}\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n C8yStepper,\n GainsightService,\n ModalComponent,\n IconDirective,\n LoadingComponent,\n C8yStepperButtons,\n OperationResultComponent,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { cloneDeep, uniq } from 'lodash-es';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { BehaviorSubject, defer, forkJoin, from, of, Subject, throwError } from 'rxjs';\nimport { catchError, map, mergeMap, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\nimport {\n SigfoxDevice,\n SigfoxDeviceFormly,\n PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION\n} from './sigfox-device-registration.model';\nimport { SigfoxErrorName, SigfoxProviderService } from './sigfox-provider.service';\nimport { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common';\n\ntype SigfoxState =\n | 'loadPending'\n | 'loadSuccess'\n | 'loadError'\n | 'registrationPending'\n | 'registrationSuccess'\n | 'registrationError';\n\n@Component({\n selector: 'c8y-sigfox-device-registration',\n templateUrl: 'sigfox-device-registration.component.html',\n imports: [\n ModalComponent,\n IconDirective,\n NgIf,\n LoadingComponent,\n C8yStepper,\n CdkStep,\n FormlyModule,\n C8yStepperButtons,\n OperationResultComponent,\n NgFor,\n NgClass,\n C8yTranslatePipe,\n AsyncPipe\n ]\n})\nexport class SigfoxDeviceRegistrationComponent {\n stepper: C8yStepper;\n readonly PAGING: object = {\n withTotalPages: true,\n pageSize: 10\n };\n\n form = new FormGroup({});\n model: SigfoxDeviceFormly = {} as any;\n protocols$ = this.getProtocols$();\n connections$ = this.getConnections$();\n unsubscribe$: Subject<void> = new Subject();\n\n load$ = this.connections$.pipe(\n catchError((error: Error) => of(error)),\n switchMap(connections => {\n if (\n connections instanceof Error &&\n connections.name === SigfoxErrorName.NoConnectivitySettingsError\n ) {\n return of([connections]);\n }\n return forkJoin([\n of(connections),\n this.protocols$.pipe(catchError((error: Error) => of(error)))\n ]);\n }),\n map(results => {\n return results.filter(result => {\n return result instanceof Error;\n });\n }),\n switchMap(errors => {\n return errors.length === 0 ? of([]) : throwError(errors);\n })\n );\n\n fields: FormlyFieldConfig[] = [\n {\n key: 'id',\n type: 'string',\n templateOptions: {\n placeholder: 'FED987',\n label: gettext('ID'),\n required: true,\n pattern: '(0x){0,1}[0-9A-F]+(h){0,1}'\n },\n validation: {\n messages: {\n pattern: gettext('Must be a valid hexadecimal number.')\n }\n }\n },\n {\n key: 'pac',\n type: 'string',\n templateOptions: {\n placeholder: 'FEDCBA9876543210',\n label: gettext('PAC'),\n required: true,\n pattern: '^([a-fA-F0-9]{16})$'\n },\n validation: {\n messages: {\n pattern: gettext('Must be a valid 16 digit hexadecimal number.')\n }\n }\n },\n {\n key: 'connection',\n type: 'typeahead',\n templateOptions: {\n label: gettext('Connection'),\n required: true,\n c8yForOptions: this.connections$,\n displayProperty: 'name',\n valueProperties: ['name']\n }\n },\n {\n key: 'contract',\n type: 'typeahead',\n templateOptions: {\n label: gettext('Contract'),\n required: true,\n placeholder: 'Free contract_25',\n displayProperty: 'name',\n valueProperties: ['id'],\n description: gettext('Only active contracts with free slots are displayed.')\n },\n hooks: {\n onInit: field => {\n const connectionControl = field.form.get('connection');\n connectionControl.valueChanges\n .pipe(\n takeUntil(this.unsubscribe$),\n mergeMap(({ name }) => this.getContracts$(name))\n )\n .subscribe(\n profiles => {\n field.templateOptions.c8yForOptions = of(profiles);\n field.formControl.setValue(null);\n },\n error => {\n field.form.get('contract').setErrors({ contract: true });\n field.validators.contract.message = error.message;\n }\n );\n }\n },\n validators: {\n contract: {\n expression: (control: AbstractControl) => {\n return control.status === 'VALID';\n },\n message: () => ''\n }\n }\n },\n {\n key: 'deviceType',\n type: 'typeahead',\n templateOptions: {\n label: gettext('Device protocol'),\n required: true,\n c8yForOptions: this.protocols$,\n displayProperty: 'name',\n valueProperties: ['id', 'name']\n }\n },\n {\n key: 'productCertificate',\n type: 'string',\n templateOptions: {\n placeholder: 'P_001F_EDCB_01',\n label: gettext('Product certificate key'),\n pattern: 'P_[0-9A-F]{4}_[0-9A-F]{4}_[0-9A-F]{2}',\n description: gettext(\n 'If no product certificate key is specified, the device is considered a prototype.'\n )\n },\n validation: {\n messages: {\n pattern: (_error, _field: FormlyFieldConfig) =>\n this.translateService.instant(\n gettext('Must be a valid product certificate key, for example, {{ example }}'),\n { example: 'P_001F_EDCB_01' }\n )\n }\n }\n }\n ];\n\n registrationStepLabels = {\n next: gettext('Register')\n };\n finalStepLabels = {\n back: gettext('Close')\n };\n\n state: SigfoxState = 'loadPending';\n errors$ = new BehaviorSubject<Error[]>([]);\n errorMessages$ = this.errors$.pipe(\n map(errors => errors.map(error => error.message)),\n map(messages => uniq(messages))\n );\n constructor(\n public bsModalRef: BsModalRef,\n private sigfoxService: SigfoxProviderService,\n private translateService: TranslateService,\n private gainsightService: GainsightService\n ) {\n this.load$.subscribe(\n () => {\n this.state = 'loadSuccess';\n },\n errors => {\n this.state = 'loadError';\n this.errors$.next(errors);\n }\n );\n }\n\n async create(event: { stepper: C8yStepper; step: CdkStep }) {\n this.state = 'registrationPending';\n const sigfoxDevice = this.getSigfoxDeviceToSend();\n try {\n await this.sigfoxService.createDevice(sigfoxDevice);\n this.state = 'registrationSuccess';\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.EVENT, {\n result: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.RESULT.SUCCESS,\n component: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.COMPONENT\n });\n } catch (error) {\n this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.EVENT, {\n result: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.RESULT.FAILURE,\n component: PRODUCT_EXPERIENCE_SIGFOX_REGISTRATION.COMPONENT\n });\n this.state = 'registrationError';\n this.errors$.next([error]);\n }\n\n event.stepper.next();\n }\n\n getSigfoxDeviceToSend() {\n const sigfoxDevice: SigfoxDevice = cloneDeep(this.model);\n sigfoxDevice.lnsConnectionName = this.model.connection.name;\n sigfoxDevice.contractId = this.model.contract.id;\n sigfoxDevice.prototype = !sigfoxDevice.productCertificate;\n delete (sigfoxDevice as any).contract;\n delete (sigfoxDevice as any).connection;\n return sigfoxDevice;\n }\n\n getContracts$(name) {\n return defer(() => from(this.sigfoxService.getContracts(name))).pipe(shareReplay(1));\n }\n\n getProtocols$() {\n return defer(() => from(this.sigfoxService.getAvailableProtocols())).pipe(shareReplay(1));\n }\n\n getConnections$() {\n return defer(() => from(this.sigfoxService.getConnections())).pipe(shareReplay(1));\n }\n\n ngOnDestroy(): void {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<c8y-modal\n [title]=\"'Sigfox registration' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'c8y-device-connect'\"></span>\n </ng-container>\n <ng-container *ngIf=\"state === 'loadPending'; else registrationForm\">\n <div class=\"p-16 text-center\">\n <c8y-loading></c8y-loading>\n </div>\n </ng-container>\n\n <ng-template #registrationForm>\n <c8y-stepper\n [hideStepProgress]=\"true\"\n linear\n c8y-modal-body\n *ngIf=\"(errorMessages$ | async).length === 0; else errorMessagesPresent\"\n >\n <cdk-step [stepControl]=\"form\">\n <div class=\"p-b-16\">\n <p class=\"modal-subtitle sticky-top\">\n {{ 'Register a single Sigfox device' | translate }}\n </p>\n <formly-form\n class=\"d-block p-l-24 p-r-24 p-t-16\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n ></formly-form>\n </div>\n <c8y-stepper-buttons\n class=\"modal-footer d-block sticky-bottom separator-top bg-component\"\n [labels]=\"registrationStepLabels\"\n (onNext)=\"create($event)\"\n (onCancel)=\"bsModalRef.hide()\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [pending]=\"state === 'registrationPending'\"\n [disabled]=\"!form.valid\"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step state=\"final\">\n <div\n class=\"p-16 text-center\"\n *ngIf=\"state === 'registrationPending'\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"m-24\">\n <c8y-operation-result\n class=\"lead m-b-0\"\n type=\"success\"\n *ngIf=\"state === 'registrationSuccess'\"\n text=\"{{ 'Device registered' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n </div>\n\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-component\"\n (onCustom)=\"bsModalRef.hide()\"\n [showButtons]=\"{ custom: true }\"\n [labels]=\"finalStepLabels\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n </ng-template>\n\n <ng-template #errorMessagesPresent>\n <div class=\"m-24\">\n <c8y-operation-result\n class=\"lead\"\n type=\"error\"\n *ngIf=\"state === 'registrationError'\"\n text=\"{{ 'Failed to register' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n <div\n class=\"m-b-8\"\n *ngFor=\"let msg of errorMessages$ | async\"\n data-cy=\"sigfox-device-registration.component--registration-error\"\n [ngClass]=\"{\n 'text-center': state === 'registrationError',\n 'alert alert-danger': state === 'loadError'\n }\"\n >\n <span [innerHTML]=\"msg | translate\"></span>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"bsModalRef.hide()\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n </ng-template>\n</c8y-modal>\n","import { Component } from '@angular/core';\nimport { BsModalService } from 'ngx-bootstrap/modal';\nimport { SigfoxDeviceRegistrationComponent } from './sigfox-device-registration.component';\nimport { IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-sigfox-registration',\n templateUrl: 'sigfox-device-registration-button.component.html',\n imports: [IconDirective, C8yTranslatePipe]\n})\nexport class SigfoxDeviceRegistrationButtonComponent {\n constructor(private modalService: BsModalService) {}\n\n open() {\n this.modalService.show(SigfoxDeviceRegistrationComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true\n });\n }\n}\n","<button title=\"{{ 'Sigfox' | translate }}\" type=\"button\" (click)=\"open()\">\n <i c8yIcon=\"c8y-device-connect\"></i>\n {{ 'Sigfox' | translate }}\n</button>\n","import { Injectable } from '@angular/core';\nimport { TenantUiService } from '@c8y/ngx-components';\nimport { SigfoxDeviceRegistrationButtonComponent } from './sigfox-device-registration-button.component';\nimport { RegisterDeviceFactory, RegisterDeviceItem } from '@c8y/ngx-components/register-device';\n@Injectable({\n providedIn: 'root'\n})\nexport class SigfoxDeviceRegistrationFactory implements RegisterDeviceFactory {\n constructor(private tenantService: TenantUiService) {}\n\n get() {\n const items: RegisterDeviceItem[] = [];\n if (this.tenantService.isMicroserviceSubscribedInCurrentTenant('sigfox-agent')) {\n items.push({\n template: SigfoxDeviceRegistrationButtonComponent,\n priority: 98,\n category: 'single'\n } as RegisterDeviceItem);\n }\n return items;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule, CoreModule } from '@c8y/ngx-components';\nimport { hookDeviceRegistration } from '@c8y/ngx-components/register-device';\nimport { SigfoxDeviceRegistrationButtonComponent } from './sigfox-device-registration-button.component';\nimport { SigfoxDeviceRegistrationComponent } from './sigfox-device-registration.component';\nimport { SigfoxDeviceRegistrationFactory } from './sigfox-device-registration.factory';\nimport { SigfoxProviderService } from './sigfox-provider.service';\n\n@NgModule({\n imports: [\n CoreModule,\n CommonModule,\n SigfoxDeviceRegistrationButtonComponent,\n SigfoxDeviceRegistrationComponent\n ],\n providers: [hookDeviceRegistration(SigfoxDeviceRegistrationFactory), SigfoxProviderService]\n})\nexport class SigfoxDeviceRegistrationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.SigfoxProviderService","i3","i4"],"mappings":"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"}