{"version":3,"file":"c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.mjs","sources":["../../protocol-lwm2m/components/bootstrap-parameters/lwm2m-bootstrap-parameters.component.ts","../../protocol-lwm2m/components/bootstrap-parameters/lwm2m-bootstrap-parameters.component.html","../../protocol-lwm2m/components/bootstrap-parameters/c8y-ngx-components-protocol-lwm2m-components-bootstrap-parameters.ts"],"sourcesContent":["import { Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { FormlyFieldConfig, FormlyFormBuilder, FormlyFormOptions } from '@ngx-formly/core';\nimport { Lwm2mBootstrapParametersService } from '@c8y/ngx-components/protocol-lwm2m/services';\nimport {\n  BindingMode,\n  Lwm2mBootstrapParameters,\n  SecurityMode\n} from '@c8y/ngx-components/protocol-lwm2m/model';\nimport {\n  gettext,\n  AlertService,\n  Permissions,\n  Alert,\n  CommonModule,\n  CoreModule\n} from '@c8y/ngx-components';\n\n@Component({\n  selector: 'c8y-lwm2m-bootstrap-parameters',\n  templateUrl: './lwm2m-bootstrap-parameters.component.html',\n  imports: [CommonModule, CoreModule],\n  standalone: true\n})\nexport class Lwm2mBootstrapParametersComponent implements OnInit, OnDestroy {\n  fields: FormlyFieldConfig[];\n  form: FormGroup = new FormGroup({});\n  model = {};\n  options: FormlyFormOptions = {\n    formState: {\n      disabled: false,\n      mainModel: this.model\n    }\n  };\n\n  private readonly writePermissionMissingAlert: Alert = {\n    text: gettext('You do not have write permissions. This form is read-only.'),\n    type: 'info'\n  };\n\n  private readonly DISABLED_HINT_TEXT: string = gettext(\n    'Change the security mode to enable this field.'\n  );\n  private readonly pattern: RegExp = /^([a-fA-F0-9]{2})+$/;\n  private deviceId: string;\n\n  constructor(\n    private alertService: AlertService,\n    private permissions: Permissions,\n    private builder: FormlyFormBuilder,\n    private lwm2mBootstrapParametersSvc: Lwm2mBootstrapParametersService,\n    private route: ActivatedRoute\n  ) {\n    this.deviceId = this.route?.snapshot?.parent?.params?.id;\n  }\n\n  async ngOnInit() {\n    const parameters: Lwm2mBootstrapParameters = await this.getBootstrapParameters();\n    const {\n      bindingMode,\n      bootstrapId,\n      bootstrapKey,\n      bootstrapShortServerId,\n      defaultMaximumPeriod,\n      defaultMinimumPeriod,\n      securityMode,\n      endpoint,\n      generateBootstrapServerConfig,\n      lwm2mShortServerId,\n      serverUri,\n      registrationLifeTime,\n      serverPublicKey,\n      securityInstanceOffset,\n      publicKeyOrId,\n      secretKey\n    }: Lwm2mBootstrapParameters = parameters;\n\n    const leftFields: FormlyFieldConfig[] = [\n      {\n        key: 'endpoint',\n        id: 'bs-endpoint',\n        type: 'string',\n        defaultValue: endpoint,\n        templateOptions: {\n          label: gettext('Endpoint'),\n          placeholder: 'urn:imei:012345678901234',\n          readonly: true\n        }\n      },\n      {\n        key: 'securityMode',\n        id: 'bs-securityMode',\n        type: 'select',\n        defaultValue: securityMode || SecurityMode.NO_SEC,\n        templateOptions: {\n          label: gettext('Security mode'),\n          options: [\n            { label: SecurityMode.NO_SEC, value: SecurityMode.NO_SEC },\n            { label: SecurityMode.PSK, value: SecurityMode.PSK }\n          ],\n          required: true\n        }\n      },\n      {\n        key: 'bootstrapId',\n        id: 'bs-bootstrapId',\n        type: 'string',\n        templateOptions: {\n          label: gettext('Bootstrap PSK ID'),\n          description: this.DISABLED_HINT_TEXT,\n          required: true\n        },\n        hooks: {\n          onInit: (field: FormlyFieldConfig) => {\n            field.formControl.patchValue(bootstrapId);\n          }\n        },\n        expressionProperties: {\n          'templateOptions.disabled': (model: any, formState: any, field: FormlyFieldConfig) =>\n            this.disablePSKField(formState, field)\n        }\n      },\n      {\n        key: 'bootstrapKey',\n        id: 'bs-bootstrapKey',\n        type: 'string',\n        templateOptions: {\n          label: gettext('Bootstrap pre-shared key'),\n          description: this.DISABLED_HINT_TEXT,\n          placeholder: '0123456789abcdef',\n          required: true,\n          pattern: this.pattern\n        },\n        hooks: {\n          onInit: (field: FormlyFieldConfig) => {\n            field.formControl.patchValue(bootstrapKey);\n          }\n        },\n        expressionProperties: {\n          'templateOptions.disabled': (model: any, formState: any, field: FormlyFieldConfig) =>\n            this.disablePSKField(formState, field)\n        }\n      },\n      {\n        key: 'securityInstanceOffset',\n        id: 'bs-securityInstanceOffset',\n        type: 'number',\n        defaultValue: securityInstanceOffset,\n        templateOptions: {\n          label: gettext('Security instance offset'),\n          placeholder: '0',\n          min: 0\n        }\n      },\n      {\n        key: 'bootstrapShortServerId',\n        id: 'bs-bootstrapShortServerId',\n        type: 'number',\n        defaultValue: bootstrapShortServerId,\n        templateOptions: {\n          label: gettext('LWM2M bootstrap short server ID'),\n          placeholder: '0',\n          min: 0\n        }\n      },\n      {\n        key: 'registrationLifeTime',\n        id: 'bs-registrationLifeTime',\n        type: 'number',\n        defaultValue: registrationLifeTime,\n        templateOptions: {\n          label: gettext('Registration lifetime'),\n          description: gettext('in seconds'),\n          placeholder: '600',\n          min: 0\n        }\n      },\n      {\n        key: 'bindingMode',\n        id: 'bs-bindingMode',\n        type: 'select',\n        defaultValue: bindingMode || BindingMode.U,\n        templateOptions: {\n          label: gettext('Binding mode'),\n          options: [\n            { label: gettext('UDP'), value: BindingMode.U },\n            { label: gettext('UDP with queue mode'), value: BindingMode.UQ }\n          ]\n        }\n      }\n    ];\n\n    const rightFields: FormlyFieldConfig[] = [\n      {\n        key: 'serverPublicKey',\n        id: 'bs-serverPublicKey',\n        type: 'string',\n        defaultValue: serverPublicKey,\n        templateOptions: {\n          label: gettext('Server public key'),\n          placeholder: 'AAAAB3NzaC1yc2E…'\n        }\n      },\n      {\n        key: 'serverUri',\n        id: 'bs-serverUri',\n        type: 'string',\n        defaultValue: serverUri,\n        templateOptions: {\n          label: gettext('LWM2M server URI'),\n          placeholder: 'coaps://<LWM2M-server-domain>:<coaps-port>'\n        }\n      },\n      {\n        key: 'publicKeyOrId',\n        id: 'bs-publicKeyOrId',\n        type: 'string',\n        templateOptions: {\n          label: gettext('LWM2M PSK ID'),\n          description: this.DISABLED_HINT_TEXT,\n          required: true\n        },\n        hooks: {\n          onInit: (field: FormlyFieldConfig) => {\n            field.formControl.patchValue(publicKeyOrId);\n          }\n        },\n        expressionProperties: {\n          'templateOptions.disabled': (model: any, formState: any, field: FormlyFieldConfig) =>\n            this.disablePSKField(formState, field)\n        }\n      },\n      {\n        key: 'secretKey',\n        id: 'bs-secretKey',\n        type: 'string',\n        templateOptions: {\n          label: gettext('LWM2M pre-shared key'),\n          description: this.DISABLED_HINT_TEXT,\n          placeholder: '0123456789abcdef',\n          required: true,\n          pattern: this.pattern\n        },\n        hooks: {\n          onInit: (field: FormlyFieldConfig) => {\n            field.formControl.patchValue(secretKey);\n          }\n        },\n        expressionProperties: {\n          'templateOptions.disabled': (model: any, formState: any, field: FormlyFieldConfig) =>\n            this.disablePSKField(formState, field)\n        }\n      },\n      {\n        key: 'lwm2mShortServerId',\n        id: 'bs-lwm2mShortServerId',\n        type: 'number',\n        defaultValue: lwm2mShortServerId,\n        templateOptions: {\n          label: gettext('LWM2M short server ID'),\n          placeholder: '0',\n          min: 0\n        }\n      },\n      {\n        key: 'generateBootstrapServerConfig',\n        id: 'bs-generateBootstrapServerConfig',\n        type: 'select',\n        defaultValue: generateBootstrapServerConfig || false,\n        templateOptions: {\n          label: gettext('Generate bootstrap server config'),\n          options: [\n            { label: gettext('Yes'), value: true },\n            { label: gettext('No'), value: false }\n          ]\n        }\n      },\n      {\n        key: 'defaultMinimumPeriod',\n        id: 'bs-defaultMinimumPeriod',\n        type: 'number',\n        defaultValue: defaultMinimumPeriod,\n        templateOptions: {\n          label: gettext('Default minimum period'),\n          description: gettext('in seconds'),\n          placeholder: '10',\n          min: 0\n        }\n      },\n      {\n        key: 'defaultMaximumPeriod',\n        id: 'bs-defaultMaximumPeriod',\n        type: 'number',\n        defaultValue: defaultMaximumPeriod,\n        templateOptions: {\n          label: gettext('Default maximum period'),\n          description: gettext('in seconds'),\n          placeholder: '60',\n          min: 0\n        }\n      }\n    ];\n\n    this.fields = [\n      {\n        fieldGroupClassName: 'card-block d-grid grid__col--6-6',\n        fieldGroup: [\n          {\n            fieldGroupClassName: 'form-group p-24 p-t-8 p-b-8 m-b-0',\n            fieldGroup: leftFields\n          },\n          {\n            fieldGroupClassName: 'form-group p-24 p-t-8 p-b-8 m-b-0',\n            fieldGroup: rightFields\n          }\n        ]\n      }\n    ];\n\n    this.builder.buildForm(this.form, this.fields, this.model, this.options);\n\n    const userHasWritePermission = this.permissions.hasRole(Permissions.ROLE_INVENTORY_ADMIN);\n\n    if (Object.keys(parameters).length === 0 || !userHasWritePermission) {\n      this.form.disable();\n\n      this.options.formState.disabled = true;\n    }\n\n    if (!userHasWritePermission) {\n      this.alertService.info(this.writePermissionMissingAlert.text as string);\n    }\n  }\n\n  ngOnDestroy() {\n    // alertService checks if given alert exists.\n    // save to remove it without additional checks\n    this.alertService.remove(this.writePermissionMissingAlert);\n  }\n\n  disablePSKField(\n    formState: { disabled: boolean; mainModel: Lwm2mBootstrapParameters },\n    field: FormlyFieldConfig\n  ) {\n    if (formState.disabled) {\n      delete field.templateOptions.description;\n      return true;\n    } else if (\n      !formState.mainModel.securityMode ||\n      formState.mainModel.securityMode === SecurityMode.NO_SEC\n    ) {\n      field.templateOptions.description = this.DISABLED_HINT_TEXT;\n      field.formControl.patchValue(null);\n      return true;\n    }\n    delete field.templateOptions.description;\n    return false;\n  }\n\n  async save() {\n    try {\n      await this.lwm2mBootstrapParametersSvc.update({ ...this.model, ...{ id: this.deviceId } });\n      this.alertService.success(gettext('Bootstrap parameters updated'));\n      // disables save button\n      this.form.markAsPristine();\n      this.form.updateValueAndValidity();\n    } catch (error) {\n      this.alertService.addServerFailure({ ...error });\n    }\n  }\n\n  async getBootstrapParameters(): Promise<Lwm2mBootstrapParameters> {\n    try {\n      return (await this.lwm2mBootstrapParametersSvc.detail(this.deviceId))\n        .data as Lwm2mBootstrapParameters;\n    } catch (error) {\n      this.alertService.addServerFailure({ ...error });\n      return {};\n    }\n  }\n}\n","<form (ngSubmit)=\"save()\">\n  <div class=\"card content-fullpage fit-h\">\n    <div class=\"card-header separator grid__col--fullspan\">\n      <h1 class=\"card-title\">{{ 'LWM2M bootstrap parameters' | translate }}</h1>\n    </div>\n    <div class=\"inner-scroll\">\n      <formly-form\n        [form]=\"form\"\n        [fields]=\"fields\"\n        [model]=\"model\"\n        [options]=\"options\"\n      ></formly-form>\n    </div>\n    <div\n      [hidden]=\"options.formState.disabled\"\n      class=\"card-footer separator grid__col--fullspan sticky-bottom\"\n    >\n      <button\n        title=\"{{ 'Save' | translate }}\"\n        type=\"submit\"\n        class=\"btn btn-primary\"\n        [disabled]=\"form.invalid || !form.dirty\"\n      >\n        {{ 'Save' | translate }}\n      </button>\n    </div>\n  </div>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}