UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

87 lines 17 kB
import { Component } from '@angular/core'; import { gettext } from '@c8y/ngx-components'; import { BaseStepperComponent } from '@c8y/ngx-components/operations/bulk-operation-stepper'; import { BulkOperationsService, BulkOperationType } from '@c8y/ngx-components/operations/bulk-operations-service'; import { TranslateService } from '@ngx-translate/core'; import { get } from 'lodash-es'; import { BehaviorSubject } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "@c8y/ngx-components/operations/bulk-operations-service"; import * as i2 from "@ngx-translate/core"; import * as i3 from "@c8y/ngx-components/operations/bulk-operation-stepper"; import * as i4 from "@c8y/ngx-components/operations/stepper-frames"; import * as i5 from "./version-or-patch.component"; import * as i6 from "./select-firmware.component"; import * as i7 from "@c8y/ngx-components"; export class StepperBulkTypeFirmwareComponent extends BaseStepperComponent { constructor(bulkOperationService, translate) { super(); this.bulkOperationService = bulkOperationService; this.translate = translate; this.type = BulkOperationType.FIRMWARE; this.descriptionTemplate = gettext('{{ name }} (version {{ version }})'); this.textFilter$ = new BehaviorSubject(''); this.stepData = { firmware: undefined, versionOrPatch: undefined }; } goToVersionOrPatchStep({ stepper }) { const selectedFirmware = this.stepData.firmware; this.bulkOperationService.setFirmwareId(selectedFirmware.id); this.deviceTypes = (selectedFirmware.c8y_Filter || {}).type; stepper.next(); } onVersionOrPatchSelected(versionOrPatch) { this.stepData.versionOrPatch = versionOrPatch; } onFirmwareSelected(fw) { this.stepData.firmware = fw; } ngOnDestroy() { if (this.subscription) { this.subscription.unsubscribe(); } } retrieveOperationPrototype() { const selectedFirmware = this.stepData.firmware; const selectedVersionOrPatch = this.stepData.versionOrPatch; if (!selectedFirmware || !selectedVersionOrPatch) { return; } const firmware = { name: selectedFirmware.name, version: selectedVersionOrPatch.c8y_Firmware.version, url: selectedVersionOrPatch.c8y_Firmware.url }; if (selectedVersionOrPatch.c8y_Patch) { firmware.isPatch = true; firmware.dependency = selectedVersionOrPatch.c8y_Patch.dependency; } const name = selectedFirmware.name; const version = selectedVersionOrPatch.c8y_Firmware.version; const description = `Update firmware to: ${name} (version: ${version}).`; return { name: gettext('Firmware update'), description: this.translate.instant(this.descriptionTemplate, { name: get(this.stepData, 'firmware.name'), version: get(this.stepData, 'versionOrPatch.c8y_Firmware.version') }), prototype: { description, c8y_Firmware: firmware } }; } onSelectionChange(event) { this.textFilter$.next(''); super.onSelectionChange(event); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StepperBulkTypeFirmwareComponent, deps: [{ token: i1.BulkOperationsService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: StepperBulkTypeFirmwareComponent, selector: "c8y-stepper-firmware", usesInheritance: true, ngImport: i0, template: "<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select firmware' | translate;\n completed: !!stepData?.firmware;\n buttonsDisabled: !stepData?.firmware;\n onNext: goToVersionOrPatchStep.bind(this)\n \"\n >\n <c8y-select-firmware-step\n [selected]=\"stepData?.firmware\"\n (firmware)=\"onFirmwareSelected($event)\"\n class=\"d-contents\"\n ></c8y-select-firmware-step\n ></ng-container>\n <ng-container\n *customStep=\"\n 'Select version or patch' | translate;\n completed: !!stepData?.versionOrPatch;\n buttonsDisabled: !stepData?.versionOrPatch\n \"\n >\n <c8y-preview-selection-frame\n [header]=\"'Select version or patch' | translate\"\n [name]=\"stepData?.firmware?.name\"\n [description]=\"stepData?.firmware?.description\"\n >\n <c8y-version-or-patch-step\n list\n [selected]=\"stepData?.versionOrPatch\"\n (versionOrPatch)=\"onVersionOrPatchSelected($event)\"\n >\n </c8y-version-or-patch-step>\n </c8y-preview-selection-frame>\n </ng-container>\n</c8y-bulk-operation-stepper>\n", dependencies: [{ kind: "component", type: i3.BulkOperationStepper, selector: "c8y-bulk-operation-stepper", inputs: ["type"], outputs: ["selectionChange"] }, { kind: "directive", type: i3.CustomStep, selector: "[customStep]", inputs: ["customStep", "customStepCompleted", "customStepButtonsDisabled", "customStepOnNext"] }, { kind: "component", type: i4.PreviewSelectionFrameComponent, selector: "c8y-preview-selection-frame", inputs: ["header", "name", "description", "type"] }, { kind: "component", type: i5.VersionOrPatchComponent, selector: "c8y-version-or-patch-step", inputs: ["selected"], outputs: ["versionOrPatch"] }, { kind: "component", type: i6.SelectFirmwareComponent, selector: "c8y-select-firmware-step", inputs: ["selected"], outputs: ["firmware"] }, { kind: "pipe", type: i7.C8yTranslatePipe, name: "translate" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: StepperBulkTypeFirmwareComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-stepper-firmware', template: "<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select firmware' | translate;\n completed: !!stepData?.firmware;\n buttonsDisabled: !stepData?.firmware;\n onNext: goToVersionOrPatchStep.bind(this)\n \"\n >\n <c8y-select-firmware-step\n [selected]=\"stepData?.firmware\"\n (firmware)=\"onFirmwareSelected($event)\"\n class=\"d-contents\"\n ></c8y-select-firmware-step\n ></ng-container>\n <ng-container\n *customStep=\"\n 'Select version or patch' | translate;\n completed: !!stepData?.versionOrPatch;\n buttonsDisabled: !stepData?.versionOrPatch\n \"\n >\n <c8y-preview-selection-frame\n [header]=\"'Select version or patch' | translate\"\n [name]=\"stepData?.firmware?.name\"\n [description]=\"stepData?.firmware?.description\"\n >\n <c8y-version-or-patch-step\n list\n [selected]=\"stepData?.versionOrPatch\"\n (versionOrPatch)=\"onVersionOrPatchSelected($event)\"\n >\n </c8y-version-or-patch-step>\n </c8y-preview-selection-frame>\n </ng-container>\n</c8y-bulk-operation-stepper>\n" }] }], ctorParameters: () => [{ type: i1.BulkOperationsService }, { type: i2.TranslateService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcHBlci1idWxrLXR5cGUtZmlybXdhcmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vb3BlcmF0aW9ucy9zdGVwcGVyLWJ1bGstdHlwZS1maXJtd2FyZS9zdGVwcGVyLWJ1bGstdHlwZS1maXJtd2FyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL3N0ZXBwZXItYnVsay10eXBlLWZpcm13YXJlL3N0ZXBwZXItYnVsay10eXBlLWZpcm13YXJlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFFckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQzdGLE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsaUJBQWlCLEVBRWxCLE1BQU0sd0RBQXdELENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBTXJELE1BQU0sT0FBTyxnQ0FBaUMsU0FBUSxvQkFBb0I7SUFnQnhFLFlBQ1Usb0JBQTJDLEVBQzNDLFNBQTJCO1FBRW5DLEtBQUssRUFBRSxDQUFDO1FBSEEseUJBQW9CLEdBQXBCLG9CQUFvQixDQUF1QjtRQUMzQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQWpCNUIsU0FBSSxHQUFzQixpQkFBaUIsQ0FBQyxRQUFRLENBQUM7UUFDckQsd0JBQW1CLEdBQVcsT0FBTyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFFckYsZ0JBQVcsR0FBNEIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7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cnQgeyBTdGVwcGVyU2VsZWN0aW9uRXZlbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvc3RlcHBlcic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIElPcGVyYXRpb24gfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBCYXNlU3RlcHBlckNvbXBvbmVudCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9idWxrLW9wZXJhdGlvbi1zdGVwcGVyJztcbmltcG9ydCB7XG4gIEJ1bGtPcGVyYXRpb25zU2VydmljZSxcbiAgQnVsa09wZXJhdGlvblR5cGUsXG4gIE9wZXJhdGlvbkRldGFpbHNcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9ucy1zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc3RlcHBlci1maXJtd2FyZScsXG4gIHRlbXBsYXRlVXJsOiAnc3RlcHBlci1idWxrLXR5cGUtZmlybXdhcmUuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFN0ZXBwZXJCdWxrVHlwZUZpcm13YXJlQ29tcG9uZW50IGV4dGVuZHMgQmFzZVN0ZXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICByZWFkb25seSB0eXBlOiBCdWxrT3BlcmF0aW9uVHlwZSA9IEJ1bGtPcGVyYXRpb25UeXBlLkZJUk1XQVJFO1xuICByZWFkb25seSBkZXNjcmlwdGlvblRlbXBsYXRlOiBzdHJpbmcgPSBnZXR0ZXh0KCd7eyBuYW1lIH19ICh2ZXJzaW9uIHt7IHZlcnNpb24gfX0pJyk7XG5cbiAgdGV4dEZpbHRlciQ6IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCgnJyk7XG5cbiAgc3RlcERhdGE6IHsgZmlybXdhcmU6IElNYW5hZ2VkT2JqZWN0OyB2ZXJzaW9uT3JQYXRjaDogSU1hbmFnZWRPYmplY3QgfSA9IHtcbiAgICBmaXJtd2FyZTogdW5kZWZpbmVkLFxuICAgIHZlcnNpb25PclBhdGNoOiB1bmRlZmluZWRcbiAgfTtcblxuICBzZWxlY3RlZEZpcm13YXJlOiBJTWFuYWdlZE9iamVjdDtcbiAgc2VsZWN0ZWRWZXJzaW9uT3JQYXRjaDogSU1hbmFnZWRPYmplY3Q7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJ1bGtPcGVyYXRpb25TZXJ2aWNlOiBCdWxrT3BlcmF0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGdvVG9WZXJzaW9uT3JQYXRjaFN0ZXAoeyBzdGVwcGVyIH0pIHtcbiAgICBjb25zdCBzZWxlY3RlZEZpcm13YXJlID0gdGhpcy5zdGVwRGF0YS5maXJtd2FyZTtcbiAgICB0aGlzLmJ1bGtPcGVyYXRpb25TZXJ2aWNlLnNldEZpcm13YXJlSWQoc2VsZWN0ZWRGaXJtd2FyZS5pZCk7XG4gICAgdGhpcy5kZXZpY2VUeXBlcyA9IChzZWxlY3RlZEZpcm13YXJlLmM4eV9GaWx0ZXIgfHwge30pLnR5cGU7XG4gICAgc3RlcHBlci5uZXh0KCk7XG4gIH1cblxuICBvblZlcnNpb25PclBhdGNoU2VsZWN0ZWQodmVyc2lvbk9yUGF0Y2g6IElNYW5hZ2VkT2JqZWN0KSB7XG4gICAgdGhpcy5zdGVwRGF0YS52ZXJzaW9uT3JQYXRjaCA9IHZlcnNpb25PclBhdGNoO1xuICB9XG5cbiAgb25GaXJtd2FyZVNlbGVjdGVkKGZ3OiBJTWFuYWdlZE9iamVjdCkge1xuICAgIHRoaXMuc3RlcERhdGEuZmlybXdhcmUgPSBmdztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcmV0cmlldmVPcGVyYXRpb25Qcm90b3R5cGUoKTogT3BlcmF0aW9uRGV0YWlscyB7XG4gICAgY29uc3Qgc2VsZWN0ZWRGaXJtd2FyZSA9IHRoaXMuc3RlcERhdGEuZmlybXdhcmU7XG4gICAgY29uc3Qgc2VsZWN0ZWRWZXJzaW9uT3JQYXRjaCA9IHRoaXMuc3RlcERhdGEudmVyc2lvbk9yUGF0Y2g7XG5cbiAgICBpZiAoIXNlbGVjdGVkRmlybXdhcmUgfHwgIXNlbGVjdGVkVmVyc2lvbk9yUGF0Y2gpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJtd2FyZTogSU1hbmFnZWRPYmplY3QgPSB7XG4gICAgICBuYW1lOiBzZWxlY3RlZEZpcm13YXJlLm5hbWUsXG4gICAgICB2ZXJzaW9uOiBzZWxlY3RlZFZlcnNpb25PclBhdGNoLmM4eV9GaXJtd2FyZS52ZXJzaW9uLFxuICAgICAgdXJsOiBzZWxlY3RlZFZlcnNpb25PclBhdGNoLmM4eV9GaXJtd2FyZS51cmxcbiAgICB9IGFzIHVua25vd24gYXMgSU1hbmFnZWRPYmplY3Q7XG5cbiAgICBpZiAoc2VsZWN0ZWRWZXJzaW9uT3JQYXRjaC5jOHlfUGF0Y2gpIHtcbiAgICAgIGZpcm13YXJlLmlzUGF0Y2ggPSB0cnVlO1xuICAgICAgZmlybXdhcmUuZGVwZW5kZW5jeSA9IHNlbGVjdGVkVmVyc2lvbk9yUGF0Y2guYzh5X1BhdGNoLmRlcGVuZGVuY3k7XG4gICAgfVxuXG4gICAgY29uc3QgbmFtZSA9IHNlbGVjdGVkRmlybXdhcmUubmFtZTtcbiAgICBjb25zdCB2ZXJzaW9uID0gc2VsZWN0ZWRWZXJzaW9uT3JQYXRjaC5jOHlfRmlybXdhcmUudmVyc2lvbjtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGBVcGRhdGUgZmlybXdhcmUgdG86ICR7bmFtZX0gKHZlcnNpb246ICR7dmVyc2lvbn0pLmA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogZ2V0dGV4dCgnRmlybXdhcmUgdXBkYXRlJyksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aGlzLmRlc2NyaXB0aW9uVGVtcGxhdGUsIHtcbiAgICAgICAgbmFtZTogZ2V0KHRoaXMuc3RlcERhdGEsICdmaXJtd2FyZS5uYW1lJyksXG4gICAgICAgIHZlcnNpb246IGdldCh0aGlzLnN0ZXBEYXRhLCAndmVyc2lvbk9yUGF0Y2guYzh5X0Zpcm13YXJlLnZlcnNpb24nKVxuICAgICAgfSksXG4gICAgICBwcm90b3R5cGU6IHtcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIGM4eV9GaXJtd2FyZTogZmlybXdhcmVcbiAgICAgIH0gYXMgdW5rbm93biBhcyBJT3BlcmF0aW9uXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvblNlbGVjdGlvbkNoYW5nZShldmVudDogU3RlcHBlclNlbGVjdGlvbkV2ZW50KSB7XG4gICAgdGhpcy50ZXh0RmlsdGVyJC5uZXh0KCcnKTtcbiAgICBzdXBlci5vblNlbGVjdGlvbkNoYW5nZShldmVudCk7XG4gIH1cbn1cbiIsIjxjOHktYnVsay1vcGVyYXRpb24tc3RlcHBlciBbdHlwZV09XCJ0eXBlXCI+XG4gIDxuZy1jb250YWluZXJcbiAgICAqY3VzdG9tU3RlcD1cIlxuICAgICAgJ1NlbGVjdCBmaXJtd2FyZScgfCB0cmFuc2xhdGU7XG4gICAgICBjb21wbGV0ZWQ6ICEhc3RlcERhdGE/LmZpcm13YXJlO1xuICAgICAgYnV0dG9uc0Rpc2FibGVkOiAhc3RlcERhdGE/LmZpcm13YXJlO1xuICAgICAgb25OZXh0OiBnb1RvVmVyc2lvbk9yUGF0Y2hTdGVwLmJpbmQodGhpcylcbiAgICBcIlxuICA+XG4gICAgPGM4eS1zZWxlY3QtZmlybXdhcmUtc3RlcFxuICAgICAgW3NlbGVjdGVkXT1cInN0ZXBEYXRhPy5maXJtd2FyZVwiXG4gICAgICAoZmlybXdhcmUpPVwib25GaXJtd2FyZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICA+PC9jOHktc2VsZWN0LWZpcm13YXJlLXN0ZXBcbiAgPjwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyXG4gICAgKmN1c3RvbVN0ZXA9XCJcbiAgICAgICdTZWxlY3QgdmVyc2lvbiBvciBwYXRjaCcgfCB0cmFuc2xhdGU7XG4gICAgICBjb21wbGV0ZWQ6ICEhc3RlcERhdGE/LnZlcnNpb25PclBhdGNoO1xuICAgICAgYnV0dG9uc0Rpc2FibGVkOiAhc3RlcERhdGE/LnZlcnNpb25PclBhdGNoXG4gICAgXCJcbiAgPlxuICAgIDxjOHktcHJldmlldy1zZWxlY3Rpb24tZnJhbWVcbiAgICAgIFtoZWFkZXJdPVwiJ1NlbGVjdCB2ZXJzaW9uIG9yIHBhdGNoJyB8IHRyYW5zbGF0ZVwiXG4gICAgICBbbmFtZV09XCJzdGVwRGF0YT8uZmlybXdhcmU/Lm5hbWVcIlxuICAgICAgW2Rlc2NyaXB0aW9uXT1cInN0ZXBEYXRhPy5maXJtd2FyZT8uZGVzY3JpcHRpb25cIlxuICAgID5cbiAgICAgIDxjOHktdmVyc2lvbi1vci1wYXRjaC1zdGVwXG4gICAgICAgIGxpc3RcbiAgICAgICAgW3NlbGVjdGVkXT1cInN0ZXBEYXRhPy52ZXJzaW9uT3JQYXRjaFwiXG4gICAgICAgICh2ZXJzaW9uT3JQYXRjaCk9XCJvblZlcnNpb25PclBhdGNoU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICA+XG4gICAgICA8L2M4eS12ZXJzaW9uLW9yLXBhdGNoLXN0ZXA+XG4gICAgPC9jOHktcHJldmlldy1zZWxlY3Rpb24tZnJhbWU+XG4gIDwvbmctY29udGFpbmVyPlxuPC9jOHktYnVsay1vcGVyYXRpb24tc3RlcHBlcj5cbiJdfQ==