summaryrefslogtreecommitdiffstats
path: root/portal-FE-common/src/app/pages/dynamic-widget/dynamic-widget.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'portal-FE-common/src/app/pages/dynamic-widget/dynamic-widget.component.ts')
-rw-r--r--portal-FE-common/src/app/pages/dynamic-widget/dynamic-widget.component.ts80
1 files changed, 80 insertions, 0 deletions
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);
+ });
+ }
+}