publish event to all models involved
Change-Id: I869692fbababaa881ce2a0fc8f2ef6add5c7c243
diff --git a/src/app/datasources/websocket/global.ts b/src/app/datasources/websocket/global.ts
index a5852c8..a820269 100644
--- a/src/app/datasources/websocket/global.ts
+++ b/src/app/datasources/websocket/global.ts
@@ -1,4 +1,5 @@
import * as io from 'socket.io-client';
+import * as _ from 'lodash';
import {Subject, Observable} from 'rxjs/Rx';
import {IXosAppConfig} from '../../../index';
@@ -17,16 +18,31 @@
export class WebSocketEvent {
- static $inject = ['AppConfig'];
+ static $inject = [
+ 'AppConfig',
+ '$log'
+ ];
private _events: Subject<IWSEvent> = new Subject<IWSEvent>();
private socket;
constructor(
- private AppConfig: IXosAppConfig
+ private AppConfig: IXosAppConfig,
+ private $log: ng.ILogService
) {
this.socket = io(this.AppConfig.websocketClient);
this.socket.on('event', (data: IWSEvent): void => {
+ this.$log.debug(`[WebSocket] Received Event for: ${data.model} [${data.msg.pk}]`);
this._events.next(data);
+
+ // NOTE update observers of parent classes
+ if (data.msg.object.class_names && angular.isString(data.msg.object.class_names)) {
+ const models = data.msg.object.class_names.split(',');
+ _.forEach(models, (m: string) => {
+ data.model = m;
+ this._events.next(data);
+ });
+ }
+
});
}
list() {