UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

64 lines 12 kB
import { Component, Inject, Input, Optional, ViewChild } from '@angular/core'; import { BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service'; import { assign } from 'lodash-es'; import { BsModalRef, BsModalService } from 'ngx-bootstrap/modal'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT } from './bulk-operation-wrapper.model'; import { ModalBodyHostDirective } from './modal-body-host.directive'; import * as i0 from "@angular/core"; import * as i1 from "@c8y/ngx-components/operations/bulk-operations-service"; import * as i2 from "ngx-bootstrap/modal"; import * as i3 from "./modal-body-host.directive"; import * as i4 from "@c8y/ngx-components"; export class BulkOperationWrapperComponent { constructor(bulkOperationsService, modalRef, modalService, modalBodyConfig) { this.bulkOperationsService = bulkOperationsService; this.modalRef = modalRef; this.modalService = modalService; this.modalBodyConfig = modalBodyConfig; this.destroyed$ = new Subject(); } ngOnInit() { if (this.modalBodyConfig) { const componentRef = this.modalBodyHost.viewContainerRef.createComponent(this.modalBodyConfig.component); assign(componentRef.instance, this.modalBodyConfig.config); componentRef.instance.bulkOperation = this.bulkOperation; componentRef.instance.showFailedOperation .pipe(takeUntil(this.destroyed$)) .subscribe(event => this.openDetails(event)); } } ngOnDestroy() { this.destroyed$.next(); this.destroyed$.complete(); } // openDetails function needs to be defined in the both places (component and the service) to avoid circular dependency. async openDetails(bulkOperationId) { const bulkOperation = (await this.bulkOperationsService.getBulkOperationById(bulkOperationId)).data; const initialState = { bulkOperation }; this.modalService.show(BulkOperationWrapperComponent, { initialState, class: 'modal-lg', ariaDescribedby: 'modal-body', ariaLabelledBy: 'modal-title' }); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BulkOperationWrapperComponent, deps: [{ token: i1.BulkOperationsService }, { token: i2.BsModalRef }, { token: i2.BsModalService }, { token: BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BulkOperationWrapperComponent, selector: "c8y-bulk-operations-wrapper", inputs: { bulkOperation: "bulkOperation" }, viewQueries: [{ propertyName: "modalBodyHost", first: true, predicate: ModalBodyHostDirective, descendants: true, static: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header\">\n <h3 id=\"modal-title\">{{ 'Bulk operation details' | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <ng-container modalBodyHost></ng-container>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"modalRef.hide()\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i3.ModalBodyHostDirective, selector: "[modalBodyHost]" }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BulkOperationWrapperComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-bulk-operations-wrapper', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header\">\n <h3 id=\"modal-title\">{{ 'Bulk operation details' | translate }}</h3>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <ng-container modalBodyHost></ng-container>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"modalRef.hide()\"\n >\n {{ 'Close' | translate }}\n </button>\n </div>\n</div>\n" }] }], ctorParameters: () => [{ type: i1.BulkOperationsService }, { type: i2.BsModalRef }, { type: i2.BsModalService }, { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [BULK_OPERATION_WRAPPER_MODAL_BODY_COMPONENT] }] }], propDecorators: { bulkOperation: [{ type: Input }], modalBodyHost: [{ type: ViewChild, args: [ModalBodyHostDirective, { static: true }] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsay1vcGVyYXRpb24td3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9vcGVyYXRpb25zL2J1bGstb3BlcmF0aW9uLWxpc3QtaXRlbS9idWxrLW9wZXJhdGlvbi13cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL29wZXJhdGlvbnMvYnVsay1vcGVyYXRpb24tbGlzdC1pdGVtL2J1bGstb3BlcmF0aW9uLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBR0wsMkNBQTJDLEVBQzVDLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7OztBQUtyRSxNQUFNLE9BQU8sNkJBQTZCO0lBUXhDLFlBQ1MscUJBQTRDLEVBQzVDLFFBQW9CLEVBQ25CLFlBQTRCLEVBRzVCLGVBQTJEO1FBTDVELDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQUNuQixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFHNUIsb0JBQWUsR0FBZixlQUFlLENBQTRDO1FBUjdELGVBQVUsR0FBa0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQVMvQyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sWUFBWSxHQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQy9CLENBQUM7WUFDSixNQUFNLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNELFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDekQsWUFBWSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUI7aUJBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUNoQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCx3SEFBd0g7SUFDeEgsS0FBSyxDQUFDLFdBQVcsQ0FBQyxlQUFnQztRQUNoRCxNQUFNLGFBQWEsR0FBbUIsQ0FDcEMsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQ3ZFLENBQUMsSUFBSSxDQUFDO1FBQ1AsTUFBTSxZQUFZLEdBQUcsRUFBRSxhQUFhLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRTtZQUNwRCxZQUFZO1lBQ1osS0FBSyxFQUFFLFVBQVU7WUFDakIsZUFBZSxFQUFFLFlBQVk7WUFDN0IsY0FBYyxFQUFFLGFBQWE7U0FDOUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FoRFUsNkJBQTZCLCtHQWE5QiwyQ0FBMkM7bUdBYjFDLDZCQUE2Qiw4SkFHN0Isc0JBQXNCLDhEQ3BCbkMsMmdCQW9CQTs7NEZESGEsNkJBQTZCO2tCQUp6QyxTQUFTOytCQUNFLDZCQUE2Qjs7MEJBZXBDLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsMkNBQTJDO3lDQVo1QyxhQUFhO3NCQUFyQixLQUFLO2dCQUdOLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJT3BlcmF0aW9uQnVsayB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEJ1bGtPcGVyYXRpb25zU2VydmljZSB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvb3BlcmF0aW9ucy9idWxrLW9wZXJhdGlvbnMtc2VydmljZSc7XG5pbXBvcnQgeyBhc3NpZ24gfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiwgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEJ1bGtPcGVyYXRpb25EZXRhaWxzTW9kYWxCb2R5LFxuICBCdWxrT3BlcmF0aW9uRGV0YWlsc01vZGFsQm9keUNvbmZpZ3VyYXRpb24sXG4gIEJVTEtfT1BFUkFUSU9OX1dSQVBQRVJfTU9EQUxfQk9EWV9DT01QT05FTlRcbn0gZnJvbSAnLi9idWxrLW9wZXJhdGlvbi13cmFwcGVyLm1vZGVsJztcbmltcG9ydCB7IE1vZGFsQm9keUhvc3REaXJlY3RpdmUgfSBmcm9tICcuL21vZGFsLWJvZHktaG9zdC5kaXJlY3RpdmUnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWJ1bGstb3BlcmF0aW9ucy13cmFwcGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1bGstb3BlcmF0aW9uLXdyYXBwZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEJ1bGtPcGVyYXRpb25XcmFwcGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBidWxrT3BlcmF0aW9uOiBQYXJ0aWFsPElPcGVyYXRpb25CdWxrPjtcblxuICBAVmlld0NoaWxkKE1vZGFsQm9keUhvc3REaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIG1vZGFsQm9keUhvc3Q6IE1vZGFsQm9keUhvc3REaXJlY3RpdmU7XG5cbiAgcHJpdmF0ZSBkZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgYnVsa09wZXJhdGlvbnNTZXJ2aWNlOiBCdWxrT3BlcmF0aW9uc1NlcnZpY2UsXG4gICAgcHVibGljIG1vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBCc01vZGFsU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoQlVMS19PUEVSQVRJT05fV1JBUFBFUl9NT0RBTF9CT0RZX0NPTVBPTkVOVClcbiAgICBwcml2YXRlIG1vZGFsQm9keUNvbmZpZzogQnVsa09wZXJhdGlvbkRldGFpbHNNb2RhbEJvZHlDb25maWd1cmF0aW9uXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tb2RhbEJvZHlDb25maWcpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9XG4gICAgICAgIHRoaXMubW9kYWxCb2R5SG9zdC52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudDxCdWxrT3BlcmF0aW9uRGV0YWlsc01vZGFsQm9keT4oXG4gICAgICAgICAgdGhpcy5tb2RhbEJvZHlDb25maWcuY29tcG9uZW50XG4gICAgICAgICk7XG4gICAgICBhc3NpZ24oY29tcG9uZW50UmVmLmluc3RhbmNlLCB0aGlzLm1vZGFsQm9keUNvbmZpZy5jb25maWcpO1xuICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJ1bGtPcGVyYXRpb24gPSB0aGlzLmJ1bGtPcGVyYXRpb247XG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2Uuc2hvd0ZhaWxlZE9wZXJhdGlvblxuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgICAgLnN1YnNjcmliZShldmVudCA9PiB0aGlzLm9wZW5EZXRhaWxzKGV2ZW50KSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8vIG9wZW5EZXRhaWxzIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIGJvdGggcGxhY2VzIChjb21wb25lbnQgYW5kIHRoZSBzZXJ2aWNlKSB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICBhc3luYyBvcGVuRGV0YWlscyhidWxrT3BlcmF0aW9uSWQ6IHN0cmluZyB8IG51bWJlcikge1xuICAgIGNvbnN0IGJ1bGtPcGVyYXRpb246IElPcGVyYXRpb25CdWxrID0gKFxuICAgICAgYXdhaXQgdGhpcy5idWxrT3BlcmF0aW9uc1NlcnZpY2UuZ2V0QnVsa09wZXJhdGlvbkJ5SWQoYnVsa09wZXJhdGlvbklkKVxuICAgICkuZGF0YTtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSB7IGJ1bGtPcGVyYXRpb24gfTtcbiAgICB0aGlzLm1vZGFsU2VydmljZS5zaG93KEJ1bGtPcGVyYXRpb25XcmFwcGVyQ29tcG9uZW50LCB7XG4gICAgICBpbml0aWFsU3RhdGUsXG4gICAgICBjbGFzczogJ21vZGFsLWxnJyxcbiAgICAgIGFyaWFEZXNjcmliZWRieTogJ21vZGFsLWJvZHknLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZSdcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInZpZXdwb3J0LW1vZGFsXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICA8aDMgaWQ9XCJtb2RhbC10aXRsZVwiPnt7ICdCdWxrIG9wZXJhdGlvbiBkZXRhaWxzJyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1pbm5lci1zY3JvbGxcIiBpZD1cIm1vZGFsLWJvZHlcIj5cbiAgICA8bmctY29udGFpbmVyIG1vZGFsQm9keUhvc3Q+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICA8YnV0dG9uXG4gICAgICB0aXRsZT1cInt7ICdDbG9zZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAoY2xpY2spPVwibW9kYWxSZWYuaGlkZSgpXCJcbiAgICA+XG4gICAgICB7eyAnQ2xvc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=