summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-ui/src/app/ng2')
-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
3 files changed, 35 insertions, 8 deletions
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));
+ }
}