Dinamically generate views for CORE Models
Change-Id: Ib1d042f366f916c2ba8513ee62014e7256ceb53d
diff --git a/src/app/datasources/stores/model.store.ts b/src/app/datasources/stores/model.store.ts
new file mode 100644
index 0000000..f31d571
--- /dev/null
+++ b/src/app/datasources/stores/model.store.ts
@@ -0,0 +1,44 @@
+/// <reference path="../../../../typings/index.d.ts"/>
+
+import {BehaviorSubject, Observable} from 'rxjs/Rx';
+import {IWSEvent, IWSEventService} from '../websocket/global';
+import {IXosResourceService} from '../rest/model.rest';
+import {IStoreHelpersService} from '../helpers/store.helpers';
+
+export interface IModelStoreService {
+ query(model: string): Observable<any>;
+}
+
+export class ModelStore {
+ static $inject = ['WebSocket', 'StoreHelpers', 'ModelRest'];
+ private _slices: BehaviorSubject<any[]> = new BehaviorSubject([]);
+ constructor(
+ private webSocket: IWSEventService,
+ private storeHelpers: IStoreHelpersService,
+ private sliceService: IXosResourceService
+ ) {
+ }
+
+ query(model: string) {
+ this.loadInitialData(model);
+ this.webSocket.list()
+ .filter((e: IWSEvent) => e.model === model)
+ .subscribe(
+ (event: IWSEvent) => {
+ this.storeHelpers.updateCollection(event, this._slices);
+ }
+ );
+ return this._slices.asObservable();
+ }
+
+ private loadInitialData(model: string) {
+ const endpoint = `/core/${model.toLowerCase()}s/`;
+ this.sliceService.getResource(endpoint).query().$promise
+ .then(
+ res => {
+ this._slices.next(res);
+ },
+ err => console.log(`Error retrieving ${model}`, err)
+ );
+ }
+}
diff --git a/src/app/datasources/stores/slices.store.ts b/src/app/datasources/stores/slices.store.ts
deleted file mode 100644
index 9c3389f..0000000
--- a/src/app/datasources/stores/slices.store.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-/// <reference path="../../../../typings/index.d.ts"/>
-
-import {BehaviorSubject, Observable} from 'rxjs/Rx';
-import {IWSEvent, IWSEventService} from '../websocket/global';
-import {IXosResourceService} from '../rest/slices.rest';
-import {IStoreHelpersService} from '../helpers/store.helpers';
-
-export interface IStoreService {
- query(): Observable<any>;
-}
-
-export class SliceStore {
- static $inject = ['WebSocket', 'StoreHelpers', 'SlicesRest'];
- private _slices: BehaviorSubject<any[]> = new BehaviorSubject([]);
- constructor(
- private webSocket: IWSEventService,
- private storeHelpers: IStoreHelpersService,
- private sliceService: IXosResourceService
- ) {
- this.loadInitialData();
- this.webSocket.list()
- .filter((e: IWSEvent) => e.model === 'Slice')
- .subscribe(
- (event: IWSEvent) => {
- this.storeHelpers.updateCollection(event, this._slices);
- }
- );
- }
-
- query() {
- return this._slices.asObservable();
- }
-
- private loadInitialData() {
- this.sliceService.getResource().query().$promise
- .then(
- res => {
- this._slices.next(res);
- },
- err => console.log('Error retrieving Slices', err)
- );
- }
-}
diff --git a/src/app/datasources/stores/synchronizer.store.ts b/src/app/datasources/stores/synchronizer.store.ts
index 598d23c..33a0c39 100644
--- a/src/app/datasources/stores/synchronizer.store.ts
+++ b/src/app/datasources/stores/synchronizer.store.ts
@@ -1,8 +1,12 @@
/// <reference path="../../../../typings/index.d.ts"/>
-import {Subject} from 'rxjs/Rx';
+import {Subject, Observable} from 'rxjs/Rx';
import {IWSEvent, IWSEventService} from '../websocket/global';
+export interface IStoreService {
+ query(): Observable<any>;
+}
+
export class SynchronizerStore {
static $inject = ['WebSocket'];
private _notifications: Subject<IWSEvent> = new Subject();