UNPKG

ngx-dynamic-dashboard

Version:
48 lines 5.91 kB
import { Component, ComponentFactoryResolver, Input, ViewChild, ViewContainerRef } from '@angular/core'; import { GadgetInstanceService } from './grid.service'; import { GadgetFactory } from '../add-gadget/gadget-factory'; /* this class handles the dynamic creation of components */ export class CellComponent { constructor(cfr, gadgetInstanceService) { this.cfr = cfr; this.gadgetInstanceService = gadgetInstanceService; } ngOnInit() { /* create component instance dynamically */ const component = GadgetFactory.getComponentType(this.gadgetType); if (component) { const compFactory = this.cfr.resolveComponentFactory(component); const gadgetRef = this.viewContainerRef.createComponent(compFactory); /* we need to pass the input parameters (instance id and config) back into the newly created component. */ gadgetRef.instance.configureGadget(this.gadgetInstanceId, this.gadgetConfig, this.gadgetTags); /* add concrete component to service for tracking */ this.gadgetInstanceService.addInstance(gadgetRef); } } } CellComponent.decorators = [ { type: Component, args: [{ selector: 'dashboard-grid-cell', template: '<ng-template #container></ng-template>' },] } ]; CellComponent.ctorParameters = () => [ { type: ComponentFactoryResolver }, { type: GadgetInstanceService } ]; CellComponent.propDecorators = { gadgetType: [{ type: Input }], gadgetConfig: [{ type: Input }], gadgetInstanceId: [{ type: Input }], gadgetTags: [{ type: Input }], viewContainerRef: [{ type: ViewChild, args: ['container', { static: true, read: ViewContainerRef },] }] }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2JlbmxpL3dvcmtzcGFjZXMvbmd4LWR5bmFtaWMtZGFzaGJvYXJkLWZyYW1ld29yay9wcm9qZWN0cy9uZ3gtZHluYW1pYy1kYXNoYm9hcmQvc3JjLyIsInNvdXJjZXMiOlsiZGFzaGJvYXJkL2dyaWQvY2VsbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCx3QkFBd0IsRUFFeEIsS0FBSyxFQUVMLFNBQVMsRUFDVCxnQkFBZ0IsRUFDbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBRzNEOztHQUVHO0FBTUgsTUFBTSxPQUFPLGFBQWE7SUFTdEIsWUFDWSxHQUE2QixFQUFVLHFCQUE0QztRQUFuRixRQUFHLEdBQUgsR0FBRyxDQUEwQjtRQUFVLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7SUFDL0YsQ0FBQztJQUVELFFBQVE7UUFDSjs7V0FFRztRQUNILE1BQU0sU0FBUyxHQUFjLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0UsSUFBSSxTQUFTLEVBQUU7WUFDWCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hFLE1BQU0sU0FBUyxHQUE2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRS9GOztlQUVHO1lBQ0gsU0FBUyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRTlGOztlQUVHO1lBQ0gsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNyRDtJQUVMLENBQUM7OztZQXJDSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsUUFBUSxFQUFFLHdDQUF3QzthQUNyRDs7O1lBbEJHLHdCQUF3QjtZQU9wQixxQkFBcUI7Ozt5QkFheEIsS0FBSzsyQkFDTCxLQUFLOytCQUNMLEtBQUs7eUJBQ0wsS0FBSzsrQkFFTCxTQUFTLFNBQUMsV0FBVyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDb21wb25lbnRGYWN0b3J5LFxuICAgIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcbiAgICBDb21wb25lbnRSZWYsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LCBUeXBlLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtHYWRnZXRJbnN0YW5jZVNlcnZpY2V9IGZyb20gJy4vZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7R2FkZ2V0RmFjdG9yeX0gZnJvbSAnLi4vYWRkLWdhZGdldC9nYWRnZXQtZmFjdG9yeSc7XG5pbXBvcnQge0dhZGdldEJhc2V9IGZyb20gJy4uL2dhZGdldHMvX2NvbW1vbi9nYWRnZXQtYmFzZSc7XG5cbi8qXG4gdGhpcyBjbGFzcyBoYW5kbGVzIHRoZSBkeW5hbWljIGNyZWF0aW9uIG9mIGNvbXBvbmVudHNcbiAqL1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2Rhc2hib2FyZC1ncmlkLWNlbGwnLFxuICAgIHRlbXBsYXRlOiAnPG5nLXRlbXBsYXRlICNjb250YWluZXI+PC9uZy10ZW1wbGF0ZT4nXG59KVxuZXhwb3J0IGNsYXNzIENlbGxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGdhZGdldFR5cGU6IHN0cmluZztcbiAgICBASW5wdXQoKSBnYWRnZXRDb25maWc6IGFueTtcbiAgICBASW5wdXQoKSBnYWRnZXRJbnN0YW5jZUlkOiBudW1iZXI7XG4gICAgQElucHV0KCkgZ2FkZ2V0VGFnczogQXJyYXk8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHtzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWZ9KSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmO1xuXG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBjZnI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgcHJpdmF0ZSBnYWRnZXRJbnN0YW5jZVNlcnZpY2U6IEdhZGdldEluc3RhbmNlU2VydmljZSkge1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICAvKlxuICAgICAgICAgY3JlYXRlIGNvbXBvbmVudCBpbnN0YW5jZSBkeW5hbWljYWxseVxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgY29tcG9uZW50OiBUeXBlPGFueT4gPSBHYWRnZXRGYWN0b3J5LmdldENvbXBvbmVudFR5cGUodGhpcy5nYWRnZXRUeXBlKTtcbiAgICAgICAgaWYgKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgY29tcEZhY3RvcnkgPSB0aGlzLmNmci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnQpO1xuICAgICAgICAgICAgY29uc3QgZ2FkZ2V0UmVmOiBDb21wb25lbnRSZWY8R2FkZ2V0QmFzZT4gPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGNvbXBGYWN0b3J5KTtcblxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICB3ZSBuZWVkIHRvIHBhc3MgdGhlIGlucHV0IHBhcmFtZXRlcnMgKGluc3RhbmNlIGlkIGFuZCBjb25maWcpIGJhY2sgaW50byB0aGUgbmV3bHkgY3JlYXRlZCBjb21wb25lbnQuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGdhZGdldFJlZi5pbnN0YW5jZS5jb25maWd1cmVHYWRnZXQodGhpcy5nYWRnZXRJbnN0YW5jZUlkLCB0aGlzLmdhZGdldENvbmZpZywgdGhpcy5nYWRnZXRUYWdzKTtcblxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICBhZGQgY29uY3JldGUgY29tcG9uZW50IHRvIHNlcnZpY2UgZm9yIHRyYWNraW5nXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuZ2FkZ2V0SW5zdGFuY2VTZXJ2aWNlLmFkZEluc3RhbmNlKGdhZGdldFJlZik7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG4iXX0=