aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src
diff options
context:
space:
mode:
authorIdan Amit <ia096e@intl.att.com>2018-10-09 18:45:52 +0300
committerMichael Lando <michael.lando@intl.att.com>2018-10-10 14:16:02 +0000
commit3504f84909d1ee1963931e63bed694a533a84cd3 (patch)
tree76c0d4a298aac90efee26a8a9b4a96137aec187f /catalog-ui/src
parent1eda33de6c88b9c1d6259e74b50c55ab1bb9357a (diff)
Plugin load by the UI
Changed the original plugin API to only return the plugins list Changed the plugin Iframe to check if the plugin is online on every init Change-Id: I7916668de17c49a2639047ef243939889a933067 Issue-ID: SDC-1400 Signed-off-by: Idan Amit <ia096e@intl.att.com>
Diffstat (limited to 'catalog-ui/src')
-rw-r--r--catalog-ui/src/app/models/app-config.ts1
-rw-r--r--catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.html4
-rw-r--r--catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts16
-rw-r--r--catalog-ui/src/app/ng2/services/plugins.service.ts23
4 files changed, 36 insertions, 8 deletions
diff --git a/catalog-ui/src/app/models/app-config.ts b/catalog-ui/src/app/models/app-config.ts
index a0ebb54638..0e6284c669 100644
--- a/catalog-ui/src/app/models/app-config.ts
+++ b/catalog-ui/src/app/models/app-config.ts
@@ -54,6 +54,7 @@ export interface IApi {
GET_activity_log:string;
GET_configuration_ui:string;
GET_plugins_configuration:string;
+ GET_plugin_online_state:string;
GET_service:string;
GET_ecomp_menu_items:string;
GET_service_validate_name:string;
diff --git a/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.html b/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.html
index 54a5c2648c..cce1c40765 100644
--- a/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.html
+++ b/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.html
@@ -13,10 +13,10 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-
+
<div class="plugin-frame">
<div class="w-sdc-main-container">
<iframe *ngIf="plugin.isOnline" class="plugin-iframe" [src]="pluginUrl | safeUrlSanitizer"></iframe>
- <plugin-not-connected [pluginName]="plugin.pluginId" *ngIf="!plugin.isOnline"></plugin-not-connected>
+ <plugin-not-connected [pluginName]="plugin.pluginId" *ngIf="!plugin.isOnline && isPluginCheckDone"></plugin-not-connected>
</div>
</div>
diff --git a/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts b/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts
index cd92cca2f7..067bb96d8e 100644
--- a/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts
+++ b/catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts
@@ -2,6 +2,7 @@ import {Component, Inject, Input, Output, OnInit, EventEmitter} from "@angular/c
import {URLSearchParams} from '@angular/http';
import {Plugin} from "app/models";
import {EventBusService} from "../../../services/event-bus.service";
+import {PluginsService} from "../../../services/plugins.service";
@Component({
selector: 'plugin-frame',
@@ -17,17 +18,26 @@ export class PluginFrameComponent implements OnInit {
pluginUrl: string;
private urlSearchParams: URLSearchParams;
private isClosed: boolean;
+ private isPluginCheckDone: boolean;
constructor(private eventBusService: EventBusService,
+ private pluginsService: PluginsService,
@Inject('$scope') private $scope: ng.IScope,
@Inject('$state') private $state: ng.ui.IStateService) {
this.urlSearchParams = new URLSearchParams();
+ this.isPluginCheckDone = false;
}
ngOnInit(): void {
- if (this.plugin.isOnline) {
- this.initPlugin();
- }
+ this.pluginsService.isPluginOnline(this.plugin.pluginId).subscribe(isPluginOnline => {
+ this.plugin.isOnline = isPluginOnline;
+ this.isPluginCheckDone = true;
+
+ if (this.plugin.isOnline) {
+ this.initPlugin();
+ }
+ })
+
}
private initPlugin() {
diff --git a/catalog-ui/src/app/ng2/services/plugins.service.ts b/catalog-ui/src/app/ng2/services/plugins.service.ts
index 7a85b6e1b6..2a3b68fe25 100644
--- a/catalog-ui/src/app/ng2/services/plugins.service.ts
+++ b/catalog-ui/src/app/ng2/services/plugins.service.ts
@@ -1,10 +1,19 @@
-import { Injectable } from '@angular/core';
-import {Plugin, PluginsConfiguration} from "app/models";
+import { Injectable, Inject } from '@angular/core';
+import {Observable} from 'rxjs/Observable';
+import {Http, Response} from '@angular/http';
+import {IApi, IAppConfigurtaion, Plugin, Plugins, PluginsConfiguration} from "app/models";
+import {ISdcConfig, SdcConfigToken} from "../config/sdc-config.config";
@Injectable()
export class PluginsService {
- constructor() {
+ private baseUrl;
+ public configuration: IAppConfigurtaion;
+ public api: IApi;
+
+ constructor(private http: Http, @Inject(SdcConfigToken) private sdcConfig:ISdcConfig) {
+ this.api = this.sdcConfig.api;
+ this.baseUrl = this.api.root + this.sdcConfig.api.component_api_root;
}
public getPluginByStateUrl = (stateUrl: string) => {
@@ -20,4 +29,12 @@ export class PluginsService {
plugin.pluginDisplayOptions["context"].displayRoles.includes(userRole) &&
plugin.pluginDisplayOptions["context"].displayContext.indexOf(contextType) !== -1
};
+
+ public isPluginOnline = (pluginId: string): Observable<boolean> => {
+ let url:string = this.api.no_proxy_root + this.api.GET_plugin_online_state.replace(':pluginId', pluginId);
+ return this.http.get(url).map((res: Response) => {
+ return res.json()
+ })
+ .catch(error => Observable.of(false));
+ }
}