aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--catalog-ui/src/app/models/base-pubsub.ts5
-rw-r--r--catalog-ui/src/app/ng2/components/ui/plugin/plugin-frame.component.ts19
-rw-r--r--catalog-ui/src/app/ng2/services/event-bus.service.ts3
-rw-r--r--catalog-ui/src/app/view-models/workspace/tabs/plugins/plugins-context-view.html2
4 files changed, 20 insertions, 9 deletions
diff --git a/catalog-ui/src/app/models/base-pubsub.ts b/catalog-ui/src/app/models/base-pubsub.ts
index c4b109f1d5..41e8039da5 100644
--- a/catalog-ui/src/app/models/base-pubsub.ts
+++ b/catalog-ui/src/app/models/base-pubsub.ts
@@ -6,12 +6,14 @@ export class BasePubSub {
eventsCallbacks: Array<Function>;
clientId: string;
eventsToWait: Map<string, Array<string>>;
+ lastEventNotified: string;
constructor(pluginId: string) {
this.subscribers = new Map<string, ISubscriber>();
this.eventsCallbacks = [];
this.eventsToWait = new Map<string, Array<string>>();
this.clientId = pluginId;
+ this.lastEventNotified = "";
this.onMessage = this.onMessage.bind(this);
window.addEventListener("message", this.onMessage);
@@ -54,9 +56,10 @@ export class BasePubSub {
this.subscribers.forEach( (subscriber: ISubscriber, subscriberId: string) => {
subscriber.window.postMessage(eventObj, subscriber.locationUrl);
-
});
+ this.lastEventNotified = eventType;
+
return {
subscribe: function(callbackFn) {
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 83d302b2a8..cd92cca2f7 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
@@ -58,15 +58,20 @@ export class PluginFrameComponent implements OnInit {
// before moving to a new state
this.$scope.$on('$stateChangeStart', (event, toState, toParams, fromState, fromParams) => {
if ((fromState.name !== toState.name) || (fromState.name === toState.name) && (toParams.path !== fromParams.path)) {
- if (!this.isClosed) {
- event.preventDefault();
+ if(this.eventBusService.NoWindowOutEvents.indexOf(this.eventBusService.lastEventNotified) == -1) {
+ if (!this.isClosed) {
+ event.preventDefault();
- this.eventBusService.notify("WINDOW_OUT").subscribe(() => {
- this.isClosed = true;
- this.eventBusService.unregister(this.plugin.pluginId);
+ this.eventBusService.notify("WINDOW_OUT").subscribe(() => {
+ this.isClosed = true;
+ this.eventBusService.unregister(this.plugin.pluginId);
- this.$state.go(toState.name, toParams);
- });
+ this.$state.go(toState.name, toParams);
+ });
+ }
+ }
+ else {
+ this.eventBusService.unregister(this.plugin.pluginId);
}
}
});
diff --git a/catalog-ui/src/app/ng2/services/event-bus.service.ts b/catalog-ui/src/app/ng2/services/event-bus.service.ts
index cff18e1db3..10990e2f2c 100644
--- a/catalog-ui/src/app/ng2/services/event-bus.service.ts
+++ b/catalog-ui/src/app/ng2/services/event-bus.service.ts
@@ -4,8 +4,11 @@ import {BasePubSub, IPubSubEvent} from "../../models/base-pubsub";
@Injectable()
export class EventBusService extends BasePubSub {
+ NoWindowOutEvents: Array<string>;
+
constructor() {
super("sdc-hub");
+ this.NoWindowOutEvents = ["CHECK_IN", "SUBMIT_FOR_TESTING", "UNDO_CHECK_OUT"];
}
protected handlePluginRegistration(eventData: IPubSubEvent, event: any) {
diff --git a/catalog-ui/src/app/view-models/workspace/tabs/plugins/plugins-context-view.html b/catalog-ui/src/app/view-models/workspace/tabs/plugins/plugins-context-view.html
index d70717a3ed..3746bc075e 100644
--- a/catalog-ui/src/app/view-models/workspace/tabs/plugins/plugins-context-view.html
+++ b/catalog-ui/src/app/view-models/workspace/tabs/plugins/plugins-context-view.html
@@ -1,4 +1,4 @@
-<loader display="isLoading"></loader>
+<loader display="isLoading && plugin.isOnline" ></loader>
<div class="workspace-plugins">
<plugin-frame (on-loading-done)="onLoadingDone(plugin)" [plugin]="plugin" [query-params]="queryParams"></plugin-frame>
</div>