{"version":3,"file":"c8y-ngx-components-loriot-device-registration.mjs","sources":["../../loriot-device-registration/loriot-device-registration.model.ts","../../loriot-device-registration/loriot-provider.service.ts","../../loriot-device-registration/loriot-device-registration.component.ts","../../loriot-device-registration/loriot-device-registration.component.html","../../loriot-device-registration/loriot-device-registration-button.component.ts","../../loriot-device-registration/loriot-device-registration-button.component.html","../../loriot-device-registration/loriot-device-registration.factory.ts","../../loriot-device-registration/loriot-device-registration.module.ts","../../loriot-device-registration/c8y-ngx-components-loriot-device-registration.ts"],"sourcesContent":["import { IManagedObject } from '@c8y/client';\n\nexport interface LoriotDevice {\n  title: string;\n  deveui: string;\n  appeui: string;\n  appkey: string;\n  appid: string;\n  deviceType: IManagedObject;\n  error?: string;\n  lnsConnectionName: string;\n}\n\nexport interface Application {\n  deviceLimit: number;\n  devices: number;\n  hexId: string;\n  name: string;\n  outputs: Array<any>;\n}\n\nexport interface LoriotDeviceFormly extends LoriotDevice {\n  connection: {\n    name: string;\n    description: string;\n    baseUrl: string;\n    username: string;\n    password: string;\n  };\n  application: Application;\n}\n\nexport const PRODUCT_EXPERIENCE_LORIOT_REGISTRATION = {\n  EVENT: 'deviceRegistration',\n  COMPONENT: 'loriot-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} from '@c8y/client';\nimport { TranslateService } from '@ngx-translate/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AppStateService } from '@c8y/ngx-components';\nimport { Application, LoriotDevice } from './loriot-device-registration.model';\n\nexport enum LoriotErrorName {\n  NoDeviceProtocolsError = 'NoDeviceProtocolsError',\n  NoConnectivitySettingsError = 'NoConnectivitySettingsError',\n  ConnectivitySettingsError = 'ConnectivitySettingsError',\n  RegistrationError = 'RegistrationError',\n  DeviceProtocolsFetchError = 'DeviceProtocolsFetchError',\n  ApplicationError = 'ApplicationError'\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LoriotProviderService {\n  private readonly baseUrl: string = '/service/loriot/';\n  private readonly registrationUrl: string = `${this.baseUrl}newDeviceRequest`;\n  private readonly header: any = { 'Content-Type': 'application/json' };\n  private readonly applicationsUrl: string = `${this.baseUrl}applications`;\n  constructor(\n    private client: FetchClient,\n    private inventoryService: InventoryService,\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  async createDevice(device: LoriotDevice): Promise<IResult<LoriotDevice>> {\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_LoraDeviceType', '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    if (res.status === 200) {\n      if (data.length === 0) {\n        this.throwNoDeviceProtocolsError();\n      }\n    } else {\n      this.throwDeviceProtocolsFetchError();\n    }\n\n    return deviceProtocolsList;\n  }\n\n  async getApplications(connectionName: string): Promise<IResultList<Application>> {\n    const options: IFetchOptions = {\n      method: 'GET',\n      headers: this.header,\n      params: {\n        loriotConnectionName: connectionName\n      }\n    };\n    const res = await this.client.fetch(this.applicationsUrl, options);\n\n    const data = await res.json();\n    /* Every connection will have atleast 1 application,\n    so having check for this enpoint returning empty result is not needed*/\n    if (res.status !== 200) {\n      this.throwApplicationError(data);\n    }\n    return { res, data };\n  }\n\n  private async throwNoConnectivitySettingsError() {\n    const error = new Error();\n    error.name = LoriotErrorName.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_loriot'\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 = LoriotErrorName.ConnectivitySettingsError;\n    error.message = data.message;\n    throw error;\n  }\n\n  private throwRegistrationError(data: { message: string }) {\n    const error = new Error();\n    error.name = LoriotErrorName.RegistrationError;\n    error.message = data.message;\n    throw error;\n  }\n\n  private throwDeviceProtocolsFetchError() {\n    const error = new Error();\n    error.name = LoriotErrorName.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 = LoriotErrorName.NoDeviceProtocolsError;\n    error.message = this.translateService.instant(\n      gettext(\n        `No device protocols configured. Create a LoRa 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 throwApplicationError(data: { message: string }) {\n    const error = new Error();\n    error.name = LoriotErrorName.ApplicationError;\n    error.message = data.message;\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 { 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  LoriotDevice,\n  LoriotDeviceFormly,\n  PRODUCT_EXPERIENCE_LORIOT_REGISTRATION\n} from './loriot-device-registration.model';\nimport { LoriotErrorName, LoriotProviderService } from './loriot-provider.service';\nimport { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common';\n\ntype LoriotState =\n  | 'loadPending'\n  | 'loadSuccess'\n  | 'loadError'\n  | 'registrationPending'\n  | 'registrationSuccess'\n  | 'registrationError';\n\n@Component({\n  selector: 'c8y-loriot-registration',\n  templateUrl: 'loriot-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 LoriotDeviceRegistrationComponent {\n  stepper: C8yStepper;\n  readonly PAGING: object = {\n    withTotalPages: true,\n    pageSize: 10\n  };\n\n  form = new FormGroup({});\n  model: LoriotDeviceFormly = {} 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 === LoriotErrorName.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: 'title',\n      type: 'string',\n      templateOptions: {\n        placeholder: gettext('LORIOT LoRa'),\n        label: gettext('Title'),\n        required: true\n      }\n    },\n    {\n      key: 'deveui',\n      type: 'string',\n      templateOptions: {\n        placeholder: 'FEDCBA9876543210',\n        label: gettext('Device EUI'),\n        required: true,\n        pattern: '^([A-F0-9]{16})$'\n      },\n      validation: {\n        messages: {\n          pattern: gettext('Must be a valid 16 digit uppercase hexadecimal number.')\n        }\n      }\n    },\n    {\n      key: 'appeui',\n      type: 'string',\n      templateOptions: {\n        placeholder: 'FEDCBA9876543210',\n        label: gettext('Application EUI'),\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: 'appkey',\n      type: 'string',\n      templateOptions: {\n        placeholder: 'FEDCBA9876543210FEDCBA9876543210',\n        label: gettext('Application key'),\n        required: true,\n        pattern: '^([a-fA-F0-9]{32})$'\n      },\n      validation: {\n        messages: {\n          pattern: gettext('Must be a valid 32 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: 'application',\n      type: 'typeahead',\n      templateOptions: {\n        label: gettext('Application name'),\n        required: true,\n        placeholder: gettext('LORIOT application'),\n        displayProperty: 'name',\n        valueProperties: ['hexId']\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.getApplications$(name))\n            )\n            .subscribe(\n              apps => {\n                field.templateOptions.c8yForOptions = of(apps);\n                field.formControl.setValue(null);\n              },\n              error => {\n                field.form.get('application').setErrors({ application: true });\n                field.validators.application.message = error.message;\n              }\n            );\n        }\n      },\n      validators: {\n        application: {\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\n  registrationStepLabels = {\n    next: gettext('Register')\n  };\n  finalStepLabels = {\n    back: gettext('Close')\n  };\n\n  state: LoriotState = '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 loriotService: LoriotProviderService,\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 loriotDevice = this.getLoriotDeviceToSend();\n    try {\n      await this.loriotService.createDevice(loriotDevice);\n      this.state = 'registrationSuccess';\n      this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_LORIOT_REGISTRATION.EVENT, {\n        result: PRODUCT_EXPERIENCE_LORIOT_REGISTRATION.RESULT.SUCCESS,\n        component: PRODUCT_EXPERIENCE_LORIOT_REGISTRATION.COMPONENT\n      });\n    } catch (error) {\n      this.state = 'registrationError';\n      this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_LORIOT_REGISTRATION.EVENT, {\n        result: PRODUCT_EXPERIENCE_LORIOT_REGISTRATION.RESULT.FAILURE,\n        component: PRODUCT_EXPERIENCE_LORIOT_REGISTRATION.COMPONENT\n      });\n      this.errors$.next([error]);\n    }\n\n    event.stepper.next();\n  }\n\n  getLoriotDeviceToSend() {\n    const loriotDevice: LoriotDevice = cloneDeep(this.model);\n    loriotDevice.lnsConnectionName = this.model.connection.name;\n    delete (loriotDevice as any).connection;\n    loriotDevice.appid = this.model.application.hexId;\n    delete (loriotDevice as any).application;\n    return loriotDevice;\n  }\n\n  getProtocols$() {\n    return defer(() => from(this.loriotService.getAvailableProtocols())).pipe(shareReplay(1));\n  }\n\n  getConnections$() {\n    return defer(() => from(this.loriotService.getConnections())).pipe(shareReplay(1));\n  }\n\n  getApplications$(name) {\n    return defer(() => from(this.loriotService.getApplications(name))).pipe(shareReplay(1));\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n}\n","<c8y-modal\n  [title]=\"'LORIOT 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 LORIOT 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=\"loriot-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 { LoriotDeviceRegistrationComponent } from './loriot-device-registration.component';\nimport { IconDirective, C8yTranslatePipe } from '@c8y/ngx-components';\n\n@Component({\n  selector: 'c8y-loriot-registration',\n  templateUrl: 'loriot-device-registration-button.component.html',\n  imports: [IconDirective, C8yTranslatePipe]\n})\nexport class LoriotDeviceRegistrationButtonComponent {\n  constructor(private modalService: BsModalService) {}\n\n  open() {\n    this.modalService.show(LoriotDeviceRegistrationComponent, {\n      class: 'modal-sm',\n      ariaDescribedby: 'modal-body',\n      ariaLabelledBy: 'modal-title',\n      ignoreBackdropClick: true\n    });\n  }\n}\n","<button (click)=\"open()\"><i c8yIcon=\"c8y-device-connect\"></i> {{ 'LORIOT LoRa' | translate }} </button>","import { Injectable } from '@angular/core';\nimport { TenantUiService } from '@c8y/ngx-components';\nimport { LoriotDeviceRegistrationButtonComponent } from './loriot-device-registration-button.component';\nimport { RegisterDeviceFactory, RegisterDeviceItem } from '@c8y/ngx-components/register-device';\n@Injectable({\n  providedIn: 'root'\n})\nexport class LoriotDeviceRegistrationFactory implements RegisterDeviceFactory {\n  constructor(private tenantService: TenantUiService) {}\n\n  get() {\n    const items: RegisterDeviceItem[] = [];\n    if (this.tenantService.isMicroserviceSubscribedInCurrentTenant('loriot')) {\n      items.push({\n        template: LoriotDeviceRegistrationButtonComponent,\n        priority: 97,\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 { LoriotDeviceRegistrationButtonComponent } from './loriot-device-registration-button.component';\nimport { LoriotDeviceRegistrationComponent } from './loriot-device-registration.component';\nimport { LoriotDeviceRegistrationFactory } from './loriot-device-registration.factory';\nimport { LoriotProviderService } from './loriot-provider.service';\n\n@NgModule({\n  imports: [\n    CoreModule,\n    CommonModule,\n    LoriotDeviceRegistrationButtonComponent,\n    LoriotDeviceRegistrationComponent\n  ],\n  providers: [hookDeviceRegistration(LoriotDeviceRegistrationFactory), LoriotProviderService]\n})\nexport class LoriotDeviceRegistrationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2.LoriotProviderService"],"mappings":"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"}