diff options
Diffstat (limited to 'catalog-ui/src')
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)); + } } |