From 46c63acfdb4bfa54c5f2a6eb42d80e5dd853488a Mon Sep 17 00:00:00 2001 From: jz385p Date: Thu, 30 Jan 2020 19:36:10 +0530 Subject: Angular upgrade - Dynamic widget,widget catalog Angular upgrade Issue-ID: PORTAL-815 Change-Id: If3db891f2d02efa1d86b71198de97a322ddd0cfa Signed-off-by: jz385p --- .../dynamic-widget/dynamic-widget.component.ts | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 portal-FE-common/src/app/pages/dynamic-widget/dynamic-widget.component.ts (limited to 'portal-FE-common/src/app/pages/dynamic-widget/dynamic-widget.component.ts') diff --git a/portal-FE-common/src/app/pages/dynamic-widget/dynamic-widget.component.ts b/portal-FE-common/src/app/pages/dynamic-widget/dynamic-widget.component.ts new file mode 100644 index 00000000..21aab3a7 --- /dev/null +++ b/portal-FE-common/src/app/pages/dynamic-widget/dynamic-widget.component.ts @@ -0,0 +1,80 @@ +/*- + * ============LICENSE_START========================================== + * ONAP Portal + * =================================================================== + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * =================================================================== + * + * Unless otherwise specified, all software contained herein is licensed + * under the Apache License, Version 2.0 (the "License"); + * you may not use this software except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Unless otherwise specified, all documentation contained herein is licensed + * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); + * you may not use this documentation except in compliance with the License. + * You may obtain a copy of the License at + * + * https://creativecommons.org/licenses/by/4.0/ + * + * Unless required by applicable law or agreed to in writing, documentation + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ============LICENSE_END============================================ + * + * + */ +import { Compiler, Component, Injector, NgModule, NgModuleRef, ViewChild, ViewContainerRef, OnInit, Input } from '@angular/core'; +import { PluginLoaderService } from 'src/app/shared/plugin/plugin-loader/plugin-loader.service'; + +@Component({ + selector: 'app-dynamic-widget', + templateUrl: './dynamic-widget.component.html', + styleUrls: ['./dynamic-widget.component.scss'] +}) +export class DynamicWidgetComponent implements OnInit { + + @ViewChild('vc', { read: ViewContainerRef }) _container: ViewContainerRef; + @Input() widgetType:string; + + constructor(private injector: Injector, + private pluginLoader: PluginLoaderService) { + } + + ngOnInit() { + console.log('this.widgetType'+ this.widgetType); + this.loadPlugin(this.widgetType); + } + + + loadPlugin(pluginName: string) { + + setTimeout(() => { + this.executePlugin(pluginName); + + }, 2000); + + } + + executePlugin(pluginName: string) { + this.pluginLoader.load(pluginName).then(moduleFactory => { + const moduleRef = moduleFactory.create(this.injector); + const entryComponent = (moduleFactory.moduleType as any).entry; + const compFactory = moduleRef.componentFactoryResolver.resolveComponentFactory( + entryComponent + ); + this._container.createComponent(compFactory); + }); + } +} -- cgit 1.2.3-korg