UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

1 lines 23.3 kB
{"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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"}