{"version":3,"file":"c8y-ngx-components-computed-asset-properties-alarm-count-config.component-B2cy8gI7.mjs","sources":["../../computed-asset-properties/alarm-count/alarm-count-config.component.ts","../../computed-asset-properties/alarm-count/alarm-count-config.component.html"],"sourcesContent":["import { Component, inject, Input, OnInit } from '@angular/core';\nimport {\n  ControlContainer,\n  FormBuilder,\n  FormGroup,\n  NgForm,\n  ReactiveFormsModule,\n  ValidatorFn,\n  Validators\n} from '@angular/forms';\nimport { C8yTranslatePipe, CommonModule, CoreModule } from '@c8y/ngx-components';\nimport { DatapointSelectorModule } from '@c8y/ngx-components/datapoint-selector';\nimport { Observable } from 'rxjs';\nimport { AlarmCountConfig } from './alarm-count.model';\nimport {\n  AlarmSeverityToIconClassPipe,\n  AlarmSeverityToIconPipe,\n  DEFAULT_SEVERITY_VALUES\n} from '@c8y/ngx-components/alarms';\nimport { SEVERITY_LABELS, SeverityType } from '@c8y/client';\n\n@Component({\n  selector: 'c8y-alarm-count-config',\n  templateUrl: './alarm-count-config.component.html',\n  imports: [\n    CoreModule,\n    DatapointSelectorModule,\n    CommonModule,\n    C8yTranslatePipe,\n    ReactiveFormsModule,\n    AlarmSeverityToIconPipe,\n    AlarmSeverityToIconClassPipe\n  ],\n  viewProviders: [{ provide: ControlContainer, useExisting: NgForm }]\n})\nexport class ComputedPropertyAlarmCountConfigComponent implements OnInit {\n  @Input() config?: AlarmCountConfig;\n  formGroup: ReturnType<ComputedPropertyAlarmCountConfigComponent['createForm']>;\n  severityList = Object.keys(SEVERITY_LABELS) as SeverityType[];\n  readonly SEVERITY_LABELS = SEVERITY_LABELS;\n\n  private formBuilder = inject(FormBuilder);\n  private form = inject(NgForm);\n\n  ngOnInit() {\n    this.initForm();\n  }\n\n  onBeforeSave(config?: AlarmCountConfig): boolean | Promise<boolean> | Observable<boolean> {\n    if (this.formGroup.valid) {\n      Object.assign(config, this.formGroup.value);\n      return true;\n    }\n    return false;\n  }\n\n  private initForm(): void {\n    this.formGroup = this.createForm();\n    this.form.form.addControl('config', this.formGroup);\n    this.formGroup.patchValue(this.config);\n  }\n\n  private createForm() {\n    return this.formBuilder.group({\n      type: ['', [Validators.required]],\n      severities: this.formBuilder.group(DEFAULT_SEVERITY_VALUES, {\n        validators: this.minSelectedCheckboxes(1)\n      })\n    });\n  }\n\n  private minSelectedCheckboxes(min = 1): ValidatorFn {\n    const validator: ValidatorFn = (formGroup: FormGroup) => {\n      const totalSelected = Object.values(formGroup.controls).reduce(\n        (prev, next) => (next.value ? prev + next.value : prev),\n        0\n      );\n\n      return totalSelected >= min ? null : { required: true };\n    };\n\n    return validator;\n  }\n}\n","<form\n  class=\"row d-flex-md\"\n  [formGroup]=\"formGroup\"\n>\n  <div class=\"col-md-6\">\n    <c8y-form-group class=\"m-b-16\">\n      <label\n        [title]=\"'Alarm type' | translate\"\n        translate\n      >\n        Alarm type\n      </label>\n      <input\n        class=\"form-control\"\n        placeholder=\"{{ 'e.g. {{ example }}' | translate: { example: 'c8y_UnavailabilityAlarm' } }}\"\n        name=\"type\"\n        type=\"string\"\n        formControlName=\"type\"\n      />\n      <c8y-messages\n        [show]=\"formGroup.controls?.type?.touched && formGroup?.controls?.type?.errors\"\n      ></c8y-messages>\n    </c8y-form-group>\n  </div>\n  <div class=\"col-md-6\">\n    <div\n      class=\"form-group\"\n      formArrayName=\"severities\"\n    >\n      <label>{{ 'Severities' | translate }}</label>\n      <c8y-form-group\n        [hasError]=\"formGroup.controls.severities.hasError('required')\"\n        [ngClass]=\"{\n          'm-b-8': !formGroup.controls.severities.hasError('required')\n        }\"\n        data-cy=\"c8y-alarm-list-widget-config--severities-elements\"\n      >\n        <div class=\"d-flex gap-8\">\n          <ng-container *ngFor=\"let severityOption of severityList\">\n            <label\n              class=\"c8y-checkbox m-t-0 gap-4\"\n              [title]=\"SEVERITY_LABELS[severityOption] | translate\"\n            >\n              <input\n                type=\"checkbox\"\n                [formControlName]=\"severityOption\"\n                [name]=\"severityOption\"\n              />\n              <span class=\"a-s-center\"></span>\n              <ng-container>\n                <i\n                  class=\"a-s-center m-r-4 icon-20 {{ severityOption | AlarmSeverityToIconClass }}\"\n                  [c8yIcon]=\"severityOption | AlarmSeverityToIcon\"\n                ></i>\n              </ng-container>\n              <span>{{ SEVERITY_LABELS[severityOption] | translate }}</span>\n            </label>\n          </ng-container>\n        </div>\n        <c8y-messages>\n          <c8y-message *ngIf=\"formGroup.controls.severities.hasError('required')\">\n            {{ 'Select at least one severity.' | translate }}\n          </c8y-message>\n        </c8y-messages>\n      </c8y-form-group>\n    </div>\n  </div>\n</form>\n"],"names":[],"mappings":";;;;;;;;;;;MAmCa,yCAAyC,CAAA;AAdtD,IAAA,WAAA,GAAA;AAiBE,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAmB;QACpD,IAAA,CAAA,eAAe,GAAG,eAAe;AAElC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AACjC,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;AAyC9B,IAAA;IAvCC,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,EAAE;IACjB;AAEA,IAAA,YAAY,CAAC,MAAyB,EAAA;AACpC,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YACxB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAC3C,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;IACxC;IAEQ,UAAU,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC5B,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACjC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,uBAAuB,EAAE;AAC1D,gBAAA,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;aACzC;AACF,SAAA,CAAC;IACJ;IAEQ,qBAAqB,CAAC,GAAG,GAAG,CAAC,EAAA;AACnC,QAAA,MAAM,SAAS,GAAgB,CAAC,SAAoB,KAAI;AACtD,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC5D,CAAC,IAAI,EAAE,IAAI,MAAM,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,EACvD,CAAC,CACF;AAED,YAAA,OAAO,aAAa,IAAI,GAAG,GAAG,IAAI,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;AACzD,QAAA,CAAC;AAED,QAAA,OAAO,SAAS;IAClB;+GA/CW,yCAAyC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzC,yCAAyC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnCtD,iwEAoEA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED3CI,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iCAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACV,uBAAuB,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACvB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAEZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACnB,uBAAuB,uDACvB,4BAA4B,EAAA,IAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,aAAA,EAEf,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAA,CAAA,CAAA;;4FAExD,yCAAyC,EAAA,UAAA,EAAA,CAAA;kBAdrD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,OAAA,EAEzB;wBACP,UAAU;wBACV,uBAAuB;wBACvB,YAAY;wBACZ,gBAAgB;wBAChB,mBAAmB;wBACnB,uBAAuB;wBACvB;qBACD,EAAA,aAAA,EACc,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAA,QAAA,EAAA,iwEAAA,EAAA;;sBAGlE;;;;;"}