diff options
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> |