{"version":3,"file":"c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs","sources":["../../operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.ts","../../operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.html","../../operations/stepper-bulk-type-device-profile/select-device-profile-step.component.ts","../../operations/stepper-bulk-type-device-profile/select-device-profile-step.component.html","../../operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.ts","../../operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.html","../../operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.ts","../../operations/stepper-bulk-type-device-profile/c8y-ngx-components-operations-stepper-bulk-type-device-profile.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { get } from 'lodash-es';\nimport { IManagedObject } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  ListGroupComponent,\n  ListItemComponent,\n  ListItemIconComponent,\n  IconDirective,\n  ListItemBodyComponent,\n  C8yTranslateDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n  PreviewSelectionFrameComponent,\n  PreviewBlockDirective\n} from '@c8y/ngx-components/operations/stepper-frames';\nimport { NgIf, NgFor } from '@angular/common';\n\n@Component({\n  selector: 'c8y-confirm-device-profile-selection-step',\n  templateUrl: 'confirm-device-profile-selection-step.component.html',\n  imports: [\n    PreviewSelectionFrameComponent,\n    PreviewBlockDirective,\n    NgIf,\n    ListGroupComponent,\n    ListItemComponent,\n    ListItemIconComponent,\n    IconDirective,\n    ListItemBodyComponent,\n    C8yTranslateDirective,\n    NgFor,\n    C8yTranslatePipe\n  ]\n})\nexport class ConfirmDeviceProfileSelectionStepComponent {\n  @Input() selectedDeviceProfile: IManagedObject;\n  readonly DEVICE_TYPE_NOT_DEFINED = gettext('Device type not defined');\n\n  constructor(private translate: TranslateService) {}\n\n  get softwares() {\n    return get(this.selectedDeviceProfile, ['c8y_DeviceProfile', 'software'], []);\n  }\n\n  get configurations() {\n    return get(this.selectedDeviceProfile, ['c8y_DeviceProfile', 'configuration'], []);\n  }\n\n  getDeviceTypeTitle(deviceProfile: IManagedObject): string {\n    return get(\n      deviceProfile,\n      'c8y_Filter.type',\n      this.translate.instant(this.DEVICE_TYPE_NOT_DEFINED)\n    );\n  }\n}\n","<c8y-preview-selection-frame\n  [header]=\"'Confirm selection' | translate\"\n  [name]=\"selectedDeviceProfile?.name\"\n>\n  <ng-container *previewBlock=\"'Device type' | translate\">\n    <ng-container *ngIf=\"selectedDeviceProfile?.c8y_Filter?.type; else noType\">\n      <span>{{ selectedDeviceProfile.c8y_Filter.type }}</span>\n    </ng-container>\n    <ng-template #noType> --- </ng-template>\n  </ng-container>\n  <c8y-list-group\n    *previewBlock=\"'Firmware' | translate; if: selectedDeviceProfile?.c8y_DeviceProfile.firmware\"\n  >\n    <c8y-li>\n      <c8y-li-icon>\n        <i c8yIcon=\"c8y-firmware\"></i>\n      </c8y-li-icon>\n      <c8y-li-body class=\"content-flex-500\">\n        <div class=\"col-5\">\n          {{ selectedDeviceProfile.c8y_DeviceProfile.firmware.name }}\n        </div>\n        <div class=\"col-5\">\n          <span class=\"text-label-small m-r-8\" translate> Version </span>\n          <span>\n            {{ selectedDeviceProfile.c8y_DeviceProfile.firmware.version }}\n          </span>\n        </div>\n      </c8y-li-body>\n    </c8y-li>\n  </c8y-list-group>\n  <c8y-list-group *previewBlock=\"'Software' | translate; if: softwares?.length\">\n    <c8y-li *ngFor=\"let software of softwares\">\n      <c8y-li-icon>\n        <i c8yIcon=\"c8y-tools\"></i>\n      </c8y-li-icon>\n      <c8y-li-body class=\"content-flex-500\">\n        <div class=\"col-5\">\n          {{ software.name }}\n        </div>\n        <div class=\"col-5\">\n          <span class=\"text-label-small m-r-8\" translate> Version </span>\n          <span>\n            {{ software.version }}\n          </span>\n        </div>\n      </c8y-li-body>\n    </c8y-li>\n  </c8y-list-group>\n  <c8y-list-group *previewBlock=\"'Configuration' | translate; if: configurations?.length\">\n    <c8y-li *ngFor=\"let configuration of configurations\">\n      <c8y-li-icon>\n        <i c8yIcon=\"c8y-tools\"></i>\n      </c8y-li-icon>\n      <c8y-li-body class=\"content-flex-500\">\n        <div class=\"col-5\">\n          {{ configuration.name }}\n        </div>\n        <div class=\"col-5\">\n          <span class=\"label label-info\" *ngIf=\"configuration.type\">\n            {{ configuration.type }}\n          </span>\n        </div>\n      </c8y-li-body>\n    </c8y-li>\n  </c8y-list-group>\n</c8y-preview-selection-frame>\n","import { Component, Output, EventEmitter } from '@angular/core';\nimport { Observable, BehaviorSubject, combineLatest, Subscription, from } from 'rxjs';\nimport { switchMap, shareReplay, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { IResultList, IManagedObject } from '@c8y/client';\nimport { isEqual, uniqWith, get } from 'lodash-es';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  IconDirective,\n  FormGroupComponent,\n  TypeaheadComponent,\n  ListItemComponent,\n  HighlightComponent,\n  MessagesComponent,\n  MessageDirective,\n  ListItemIconComponent,\n  ListItemBodyComponent,\n  ListGroupComponent,\n  ForOfDirective,\n  ListItemRadioComponent,\n  C8yTranslateDirective,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DeviceProfileService } from '@c8y/ngx-components/device-profile';\nimport { SelectStepFrameComponent } from '@c8y/ngx-components/operations/stepper-frames';\nimport { FormsModule } from '@angular/forms';\nimport { NgIf, NgFor, AsyncPipe } from '@angular/common';\n\n@Component({\n  selector: 'c8y-select-device-profile-step',\n  templateUrl: 'select-device-profile-step.component.html',\n  imports: [\n    SelectStepFrameComponent,\n    FormsModule,\n    NgIf,\n    IconDirective,\n    FormGroupComponent,\n    TypeaheadComponent,\n    ListItemComponent,\n    NgFor,\n    HighlightComponent,\n    MessagesComponent,\n    MessageDirective,\n    ListItemIconComponent,\n    ListItemBodyComponent,\n    ListGroupComponent,\n    ForOfDirective,\n    ListItemRadioComponent,\n    C8yTranslateDirective,\n    C8yTranslatePipe,\n    AsyncPipe\n  ]\n})\nexport class SelectDeviceProfileStepComponent {\n  @Output() deviceProfile: EventEmitter<IManagedObject> = new EventEmitter<IManagedObject>();\n  textFilter$: BehaviorSubject<string> = new BehaviorSubject('');\n  deviceType$: BehaviorSubject<string> = new BehaviorSubject('');\n  readonly DEVICE_TYPE_NOT_DEFINED = gettext('Device type not defined');\n  deviceTypes = [];\n  selectedDeviceType = { name: '' };\n  deviceProfile$: Observable<IResultList<IManagedObject>> = combineLatest(\n    this.textFilter$,\n    this.deviceType$\n  ).pipe(\n    switchMap(([name, deviceType]) => this.getDeviceProfiles(name, deviceType)),\n    shareReplay(1)\n  );\n  private deviceTypeSubscription: Subscription;\n\n  constructor(\n    private deviceProfileService: DeviceProfileService,\n    private translate: TranslateService\n  ) {\n    this.loadDeviceTypes();\n  }\n\n  loadDeviceTypes() {\n    this.deviceTypeSubscription = this.deviceType$\n      .pipe(\n        debounceTime(300),\n        distinctUntilChanged(),\n        switchMap(searchStr => {\n          const query = { 'c8y_Filter.type': `*${searchStr}*` };\n          return from(this.deviceProfileService.getDeviceProfiles(query));\n        })\n      )\n      .subscribe(({ data }) => {\n        this.deviceTypes = uniqWith(\n          data.map(val => ({ name: val.c8y_Filter.type })).filter(val => val.name),\n          isEqual\n        );\n      });\n  }\n\n  ngOnDestroy() {\n    this.deviceTypeSubscription.unsubscribe();\n  }\n\n  selectDeviceProfile(deviceProfile: IManagedObject) {\n    this.deviceProfile.emit(deviceProfile);\n  }\n\n  getDeviceTypeTitle(deviceProfile: IManagedObject): string {\n    return get(\n      deviceProfile,\n      'c8y_Filter.type',\n      this.translate.instant(this.DEVICE_TYPE_NOT_DEFINED)\n    );\n  }\n\n  private getDeviceProfiles(name?: string, deviceType?: string) {\n    const query: any = deviceType ? { 'c8y_Filter.type': deviceType } : {};\n    if (name) {\n      query.name = `*${name}*`;\n    }\n    return this.deviceProfileService.getDeviceProfiles(query);\n  }\n}\n","<c8y-select-step-frame\n  [header]=\"'Select device profile' | translate\"\n  [noResults]=\"\n    ((textFilter$ | async)?.length || (deviceType$ | async)?.length) &&\n    (deviceProfile$ | async)?.data.length === 0\n  \"\n>\n  <div\n    class=\"row\"\n    filters\n  >\n    <div class=\"col-md-6 m-b-xs-8 m-b-sm-8\">\n      <div class=\"input-group input-group-search\">\n        <input\n          class=\"form-control\"\n          title=\"{{ 'Filter…' | translate }}\"\n          placeholder=\"{{ 'Filter…' | translate }}\"\n          type=\"search\"\n          [ngModel]=\"textFilter$ | async\"\n          (ngModelChange)=\"textFilter$.next($event)\"\n        />\n        <span class=\"input-group-addon\">\n          <i\n            c8yIcon=\"search\"\n            *ngIf=\"(textFilter$ | async).length === 0\"\n          ></i>\n          <i\n            class=\"text-muted\"\n            c8yIcon=\"times\"\n            *ngIf=\"(textFilter$ | async).length\"\n            (click)=\"textFilter$.next('')\"\n          ></i>\n        </span>\n      </div>\n    </div>\n    <div class=\"col-md-6 m-b-xs-8 m-b-sm-8\">\n      <c8y-form-group class=\"m-0\">\n        <c8y-typeahead\n          placeholder=\"{{ 'Type to filter device types…' | translate }}\"\n          name=\"deviceType\"\n          [(ngModel)]=\"selectedDeviceType\"\n          (onSearch)=\"deviceType$.next($event)\"\n          [allowFreeEntries]=\"false\"\n        >\n          <c8y-li\n            class=\"p-l-8 p-r-8 c8y-list__item--link\"\n            (click)=\"selectedDeviceType = { name: '' }; deviceType$.next('')\"\n          >\n            <span>{{ 'All device types' | translate }}</span>\n          </c8y-li>\n          <c8y-li\n            class=\"p-l-8 p-r-8 c8y-list__item--link\"\n            *ngFor=\"let deviceType of deviceTypes\"\n            (click)=\"selectedDeviceType = deviceType; deviceType$.next(deviceType.name)\"\n            [active]=\"selectedDeviceType === deviceType\"\n          >\n            <c8y-highlight\n              [text]=\"deviceType.name\"\n              [pattern]=\"deviceType$ | async\"\n            ></c8y-highlight>\n          </c8y-li>\n        </c8y-typeahead>\n        <c8y-messages>\n          <c8y-message\n            name=\"notExisting\"\n            [text]=\"'Select one of the existing device types.' | translate\"\n          ></c8y-message>\n        </c8y-messages>\n      </c8y-form-group>\n    </div>\n  </div>\n  <c8y-li\n    class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n    header\n  >\n    <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n    <c8y-li-body class=\"content-flex-40\">\n      <div class=\"col-5\">\n        <span\n          class=\"text-truncate\"\n          title=\" {{ 'Name' | translate }} \"\n        >\n          {{ 'Name' | translate }}\n        </span>\n      </div>\n      <div class=\"col-3\">\n        <span\n          class=\"text-truncate\"\n          title=\"{{ 'Device type' | translate }}\"\n        >\n          {{ 'Device type' | translate }}\n        </span>\n      </div>\n    </c8y-li-body>\n  </c8y-li>\n  <c8y-list-group list>\n    <c8y-li *c8yFor=\"let deviceProfile of deviceProfile$ | async; loadMore: 'auto'\">\n      <c8y-li-radio (onSelect)=\"selectDeviceProfile(deviceProfile)\"></c8y-li-radio>\n      <c8y-li-icon>\n        <i c8yIcon=\"c8y-device-profile\"></i>\n      </c8y-li-icon>\n      <c8y-li-body class=\"content-flex-40\">\n        <div class=\"col-5 m-b-xs-8\">\n          <div\n            class=\"text-truncate\"\n            title=\"{{ deviceProfile.name }}\"\n          >\n            {{ deviceProfile.name }}\n          </div>\n        </div>\n        <div class=\"col-3 m-b-xs-8\">\n          <div\n            class=\"text-truncate\"\n            title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(deviceProfile) }}\"\n          >\n            <span\n              class=\"text-label-small m-r-8 visible-xs visible-sm\"\n              translate\n            >\n              Device type\n            </span>\n            <span *ngIf=\"deviceProfile.c8y_Filter?.type; else noType\">\n              {{ deviceProfile.c8y_Filter?.type }}\n            </span>\n            <ng-template #noType>\n              <small>\n                <em\n                  class=\"text-muted\"\n                  translate\n                >\n                  Undefined`device type`\n                </em>\n              </small>\n            </ng-template>\n          </div>\n        </div>\n      </c8y-li-body>\n    </c8y-li>\n  </c8y-list-group>\n</c8y-select-step-frame>\n","import { CdkStep } from '@angular/cdk/stepper';\nimport { Component } from '@angular/core';\nimport { IManagedObject, IOperation } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { C8yStepper, C8yTranslatePipe } from '@c8y/ngx-components';\nimport {\n  BaseStepperComponent,\n  BulkOperationStepper,\n  CustomStep\n} from '@c8y/ngx-components/operations/bulk-operation-stepper';\nimport {\n  BulkOperationType,\n  OperationDetails\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { get } from 'lodash-es';\nimport { SelectDeviceProfileStepComponent } from './select-device-profile-step.component';\nimport { ConfirmDeviceProfileSelectionStepComponent } from './confirm-device-profile-selection-step.component';\n\n@Component({\n  selector: 'c8y-stepper-bulk-type-device-profile',\n  templateUrl: 'stepper-bulk-type-device-profile.component.html',\n  imports: [\n    BulkOperationStepper,\n    CustomStep,\n    SelectDeviceProfileStepComponent,\n    ConfirmDeviceProfileSelectionStepComponent,\n    C8yTranslatePipe\n  ]\n})\nexport class StepperBulkTypeDeviceProfileComponent extends BaseStepperComponent {\n  readonly type: BulkOperationType = BulkOperationType.DEVICE_PROFILE;\n  selectedDeviceProfile: IManagedObject;\n\n  goToConfirmSelection($event: { stepper: C8yStepper; step: CdkStep }) {\n    this.deviceTypes = get(this.selectedDeviceProfile, 'c8y_Filter.type');\n    $event.stepper.next();\n  }\n\n  onDeviceProfileSelected(selectedItem) {\n    this.selectedDeviceProfile = selectedItem;\n  }\n\n  protected retrieveOperationPrototype(): OperationDetails {\n    return {\n      name: gettext('Apply device profile'),\n      description: get(this.selectedDeviceProfile, 'name'),\n      prototype: {\n        description: `Apply device profile: ${this.selectedDeviceProfile.name}`,\n        profileId: this.selectedDeviceProfile.id,\n        profileName: this.selectedDeviceProfile.name,\n        c8y_DeviceProfile: this.selectedDeviceProfile.c8y_DeviceProfile\n      } as unknown as IOperation\n    };\n  }\n}\n","<c8y-bulk-operation-stepper [type]=\"type\">\n  <ng-container\n    *customStep=\"\n      'Select device profile' | translate;\n      completed: !!selectedDeviceProfile;\n      buttonsDisabled: !selectedDeviceProfile;\n      onNext: goToConfirmSelection.bind(this)\n    \"\n  >\n    <c8y-select-device-profile-step\n      (deviceProfile)=\"onDeviceProfileSelected($event)\"\n      class=\"d-contents\"\n    ></c8y-select-device-profile-step>\n  </ng-container>\n  <ng-container *customStep=\"'Confirm selected device profile' | translate\">\n    <c8y-confirm-device-profile-selection-step\n      class=\"d-contents\"\n      [selectedDeviceProfile]=\"selectedDeviceProfile\"\n    ></c8y-confirm-device-profile-selection-step>\n  </ng-container>\n</c8y-bulk-operation-stepper>\n","import { NgModule } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  baseUrl,\n  BulkOperationType,\n  hookListBulkType\n} from '@c8y/ngx-components/operations/bulk-operations-service';\nimport { ConfirmDeviceProfileSelectionStepComponent } from './confirm-device-profile-selection-step.component';\nimport { SelectDeviceProfileStepComponent } from './select-device-profile-step.component';\nimport { StepperBulkTypeDeviceProfileComponent } from './stepper-bulk-type-device-profile.component';\n\n/** Module for the 'Apply device profile' operation type stepper */\n@NgModule({\n  imports: [\n    StepperBulkTypeDeviceProfileComponent,\n    SelectDeviceProfileStepComponent,\n    ConfirmDeviceProfileSelectionStepComponent\n  ],\n  providers: [\n    hookListBulkType({\n      type: BulkOperationType.DEVICE_PROFILE,\n      c8yIcon: 'c8y-device-profile',\n      name: gettext('Apply device profile'),\n      path: `${baseUrl}device-profile`,\n      component: StepperBulkTypeDeviceProfileComponent,\n      fragments: ['c8y_DeviceProfile'],\n      selected: false\n    })\n  ],\n  exports: [StepperBulkTypeDeviceProfileComponent]\n})\nexport class StepperBulkTypeDeviceProfileModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}