UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

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