{"version":3,"file":"c8y-ngx-components-device-protocol-object-mappings.mjs","sources":["../../device-protocol-object-mappings/default-object-mapping-types/base-mapping.ts","../../device-protocol-object-mappings/default-object-mapping-types/measurement-mapping.ts","../../device-protocol-object-mappings/default-object-mapping-types/event-mapping.ts","../../device-protocol-object-mappings/default-object-mapping-types/alarm-mapping.ts","../../device-protocol-object-mappings/default-object-mapping-types/index.ts","../../device-protocol-object-mappings/object-mapping.component.ts","../../device-protocol-object-mappings/object-mapping.component.html","../../device-protocol-object-mappings/c8y-ngx-components-device-protocol-object-mappings.ts"],"sourcesContent":["import { gettext } from '@c8y/ngx-components/gettext';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { filter, Subject, takeUntil, tap } from 'rxjs';\nimport { MappingConfig } from './index';\nimport { FormlyValueChangeEvent } from '@ngx-formly/core/lib/models';\n\nexport abstract class BaseObjectMapping {\n  private formlyFieldCfg: FormlyFieldConfig;\n  private destroy$: Subject<void> = new Subject();\n\n  constructor(config: MappingConfig) {\n    if (config.formlyFieldConfig) {\n      config.formlyFieldConfig.expressions = {\n        hide: field => {\n          return !field.parent.get(`has${config.formlyFieldConfig.key}`).formControl.getRawValue();\n        }\n      };\n      config.formlyFieldConfig.hooks = {\n        onInit: field => {\n          field.parent\n            .get(`has${config.formlyFieldConfig.key}`)\n            .formControl.patchValue(!!field.parent.model[`${config.formlyFieldConfig.key}`]);\n\n          field.options.fieldChanges\n            .pipe(\n              filter((changes: FormlyValueChangeEvent) => {\n                return (\n                  changes.type === 'valueChanges' && changes.field === field.parent.fieldGroup[0]\n                );\n              }),\n              tap((changes: FormlyValueChangeEvent) => {\n                if (changes.value === 'undefined') {\n                  field.parent\n                    .get(`has${config.formlyFieldConfig.key}`)\n                    .formControl.patchValue(\n                      !!field.parent.model[`${config.formlyFieldConfig.key}`]\n                    );\n\n                  const formField = field.parent.get(\n                    config.formlyFieldConfig.key as string\n                  ).formControl;\n                  if (formField) {\n                    formField.markAsPristine();\n                    formField.markAsUntouched();\n                  }\n                }\n              }),\n              takeUntil(this.destroy$)\n            )\n            .subscribe();\n        },\n        onDestroy: () => {\n          this.destroy$.next();\n          this.destroy$.complete();\n        }\n      };\n    }\n\n    config.buttonType = config.buttonType || 'switch';\n\n    const buttonConfig =\n      config.buttonType !== 'none'\n        ? {\n            className: 'list-group-item',\n            key: `has${config.formlyFieldConfig ? config.formlyFieldConfig.key : 'Switch'}`,\n            type: config.buttonType,\n            props: {\n              label: gettext(config.label),\n              icon: config.icon,\n              description: config.tooltip,\n              switchMode: config.buttonType === 'switch'\n            },\n            expressions: {\n              'props.disabled': config.disabled || (() => false)\n            }\n          }\n        : undefined;\n\n    if (config.formlyFieldConfig) {\n      config.formlyFieldConfig.expressions = {\n        hide: field => {\n          return !field.parent.get(`has${config.formlyFieldConfig.key}`).formControl.getRawValue();\n        }\n      };\n      config.formlyFieldConfig.hooks = {\n        onInit: field => {\n          field.parent\n            .get(`has${config.formlyFieldConfig.key}`)\n            .formControl.patchValue(!!field.parent.model[`${config.formlyFieldConfig.key}`]);\n\n          field.options.fieldChanges\n            .pipe(\n              filter((changes, _index) => {\n                return (\n                  changes.type === 'valueChanges' && changes.field === field.parent.fieldGroup[0]\n                );\n              }),\n              tap(changes => {\n                if (changes.value === 'undefined') {\n                  field.parent\n                    .get(`has${config.formlyFieldConfig.key}`)\n                    .formControl.patchValue(\n                      !!field.parent.model[`${config.formlyFieldConfig.key}`]\n                    );\n\n                  const formField = field.parent.get(\n                    config.formlyFieldConfig.key as string\n                  ).formControl;\n                  if (formField) {\n                    formField.markAsPristine();\n                    formField.markAsUntouched();\n                  }\n                }\n              }),\n              takeUntil(this.destroy$)\n            )\n            .subscribe();\n        },\n        onDestroy: () => {\n          this.destroy$.next();\n          this.destroy$.complete();\n        }\n      };\n    }\n\n    this.formlyFieldCfg = {\n      fieldGroup: [buttonConfig, config.formlyFieldConfig]\n    };\n  }\n\n  getFormlyFieldConfig() {\n    return this.formlyFieldCfg;\n  }\n}\n","import { gettext } from '@c8y/ngx-components/gettext';\nimport { BaseObjectMapping } from '.';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { Injector } from '@angular/core';\n\nexport class MeasurementObjectMapping extends BaseObjectMapping {\n  constructor(\n    _injector: Injector = null,\n    measurementKey = 'measurementMapping',\n    smallFormGroup = false,\n    tooltip?: string,\n    fieldGroup?: FormlyFieldConfig[]\n  ) {\n    super({\n      icon: 'line-chart',\n      label: gettext('Send measurement'),\n      tooltip,\n      formlyFieldConfig: {\n        key: measurementKey,\n        className: 'tight-grid p-t-16',\n        fieldGroup: fieldGroup || [\n          {\n            key: 'type',\n            type: 'string',\n            props: {\n              label: gettext('Type'),\n              required: true,\n              smallFormGroup\n            },\n            className: 'col-md-3 col-sm-6'\n          },\n          {\n            key: 'series',\n            type: 'string',\n            props: {\n              label: gettext('Series'),\n              required: true,\n              smallFormGroup\n            },\n            className: 'col-md-3 col-sm-6'\n          },\n          {\n            key: 'unit',\n            type: 'string',\n            props: {\n              label: gettext('Unit'),\n              required: true,\n              smallFormGroup\n            },\n            className: 'col-md-3 col-sm-6'\n          }\n        ]\n      }\n    });\n  }\n}\n","import { gettext } from '@c8y/ngx-components/gettext';\nimport { BaseObjectMapping } from '.';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { Injector } from '@angular/core';\n\nexport class EventObjectMapping extends BaseObjectMapping {\n  constructor(\n    _injector: Injector = null,\n    eventKey = 'eventMapping',\n    smallFormGroup = false,\n    tooltip?: string,\n    fieldGroup?: FormlyFieldConfig[]\n  ) {\n    super({\n      icon: 'online1',\n      label: gettext('Send event'),\n      tooltip,\n      formlyFieldConfig: {\n        key: eventKey,\n        className: 'tight-grid p-t-16',\n        fieldGroup: fieldGroup || [\n          {\n            key: 'fragmentType',\n            type: 'string',\n            props: {\n              label: gettext('Fragment type'),\n              required: true,\n              smallFormGroup\n            },\n            className: 'col-md-3 col-sm-6'\n          },\n          {\n            key: 'innerType',\n            type: 'string',\n            props: {\n              label: gettext('Inner type'),\n              required: true,\n              smallFormGroup\n            },\n            className: 'col-md-3 col-sm-6'\n          },\n          {\n            key: 'text',\n            type: 'string',\n            props: {\n              label: gettext('Text'),\n              required: true,\n              smallFormGroup\n            },\n            className: 'col-md-3 col-sm-6'\n          },\n          {\n            key: 'type',\n            type: 'string',\n            props: {\n              label: gettext('Type'),\n              required: true,\n              smallFormGroup\n            },\n            className: 'col-md-3 col-sm-6'\n          }\n        ]\n      }\n    });\n  }\n}\n","import { gettext } from '@c8y/ngx-components/gettext';\nimport { BaseObjectMapping } from './base-mapping';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { Injector } from '@angular/core';\nimport { ALARM_SEVERITY, ALARM_STATUS } from './index';\n\nexport class AlarmObjectMapping extends BaseObjectMapping {\n  constructor(\n    _injector: Injector = null,\n    alarmKey = 'alarmMapping',\n    smallFormGroup = false,\n    tooltip?: string,\n    fieldGroup?: FormlyFieldConfig[]\n  ) {\n    super({\n      icon: 'bell',\n      label: gettext('Raise alarm'),\n      tooltip,\n      formlyFieldConfig: {\n        key: alarmKey,\n        className: 'tight-grid p-t-16',\n        fieldGroup: fieldGroup || [\n          {\n            key: 'severity',\n            type: 'select',\n            props: {\n              label: gettext('Severity'),\n              options: [...Object.values(ALARM_SEVERITY).map(value => ({ label: value, value }))],\n              required: true,\n              smallFormGroup\n            },\n            className: 'col-md-3 col-sm-6'\n          },\n          {\n            key: 'status',\n            type: 'select',\n            props: {\n              label: gettext('Status'),\n              options: [...Object.values(ALARM_STATUS).map(value => ({ label: value, value }))],\n              required: true\n            },\n            className: 'col-md-3 col-sm-6'\n          },\n          {\n            key: 'text',\n            type: 'string',\n            props: {\n              label: gettext('Text'),\n              required: true\n            },\n            className: 'col-md-3 col-sm-6'\n          },\n          {\n            key: 'type',\n            type: 'string',\n            props: {\n              label: gettext('Type'),\n              required: true\n            },\n            className: 'col-md-3 col-sm-6'\n          }\n        ]\n      }\n    });\n  }\n}\n","import { gettext } from '@c8y/ngx-components/gettext';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\n\n//Functionalities\nexport * from './base-mapping';\nexport * from './measurement-mapping';\nexport * from './event-mapping';\nexport * from './alarm-mapping';\n\nexport type MappingConfig = {\n  icon: string;\n  label: string;\n  tooltip?: string;\n  formlyFieldConfig?: FormlyFieldConfig;\n  disabled?: (config?: FormlyFieldConfig) => boolean;\n  buttonType?: 'checkbox' | 'switch' | 'none';\n};\n\nexport const ALARM_SEVERITY = {\n  WARNING: gettext('WARNING'),\n  MINOR: gettext('MINOR'),\n  MAJOR: gettext('MAJOR'),\n  CRITICAL: gettext('CRITICAL')\n};\n\nexport const ALARM_STATUS = {\n  ACTIVE: gettext('ACTIVE'),\n  ACKNOWLEDGED: gettext('ACKNOWLEDGED'),\n  CLEARED: gettext('CLEARED')\n};\n","import {\n  AfterViewInit,\n  Component,\n  EventEmitter,\n  Injector,\n  Input,\n  OnInit,\n  Output,\n  Type\n} from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyModule } from '@ngx-formly/core';\nimport {\n  DynamicFormsModule,\n  CommonModule as C8yCommonModule,\n  FormsModule as C8yFormsModule,\n  CoreModule\n} from '@c8y/ngx-components';\nimport { BaseObjectMapping } from './default-object-mapping-types';\nimport { ObjectMappingsValidationObject } from './index';\n\n@Component({\n  selector: 'c8y-device-protocol-object-mappings',\n  standalone: true,\n  templateUrl: `./object-mapping.component.html`,\n  imports: [C8yCommonModule, C8yFormsModule, DynamicFormsModule, FormlyModule, CoreModule]\n})\nexport class ObjectMappingComponent implements OnInit, AfterViewInit {\n  @Input('data') model: unknown = {};\n  @Input() objectMappingTypes: Type<BaseObjectMapping>[];\n  @Output() onUpdate = new EventEmitter<ObjectMappingsValidationObject>();\n\n  form = new FormGroup({});\n  fields: FormlyFieldConfig[] = [];\n  options: FormlyFormOptions = {\n    formState: {\n      disabled: false\n    }\n  };\n\n  constructor(private injector: Injector) {}\n\n  ngOnInit(): void {\n    this.fillFormlyForm();\n  }\n\n  ngAfterViewInit() {\n    if (this.fields?.length > 0) {\n      this.options.detectChanges(this.fields[0]);\n    }\n  }\n\n  onChange(_event) {\n    const { dirty, valid, touched } = this.form;\n    this.onUpdate.emit({ dirty, valid, touched } as ObjectMappingsValidationObject);\n  }\n\n  private fillFormlyForm() {\n    if (this.objectMappingTypes && this.objectMappingTypes.length > 0) {\n      this.objectMappingTypes.forEach(functionalityType => {\n        const instance = new functionalityType(this.injector);\n\n        if (instance instanceof BaseObjectMapping) {\n          this.fields.push(instance.getFormlyFieldConfig());\n        }\n      });\n    }\n  }\n}\n","<div class=\"form m-b-16 object-mappings\">\n  <div class=\"legend form-block\">{{ 'Functionalities' | translate }}</div>\n  <formly-form\n    [model]=\"model\"\n    [form]=\"form\"\n    [fields]=\"fields\"\n    [options]=\"options\"\n    (modelChange)=\"onChange($event)\"\n    data-cy=\"device-protocol-object-mappings--formly-form\"\n  ></formly-form>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["C8yCommonModule","C8yFormsModule"],"mappings":"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"}