Adding relations links to table
Change-Id: I5dd2d206a6da7fec163342f54f1143a7783f7758
diff --git a/src/app/datasources/helpers/store.helpers.spec.ts b/src/app/datasources/helpers/store.helpers.spec.ts
index 1793a7c..82a5e7a 100644
--- a/src/app/datasources/helpers/store.helpers.spec.ts
+++ b/src/app/datasources/helpers/store.helpers.spec.ts
@@ -39,6 +39,12 @@
expect(service.updateCollection).toBeDefined();
});
+
+ it('should convert a core model name in an URL', () => {
+ expect(service.urlFromCoreModel('Slice')).toBe('/core/slices');
+ expect(service.urlFromCoreModel('Xos')).toBe('/core/xosses');
+ });
+
describe('when updating a collection', () => {
beforeEach(() => {
diff --git a/src/app/datasources/helpers/store.helpers.ts b/src/app/datasources/helpers/store.helpers.ts
index 1458d81..aa18bd8 100644
--- a/src/app/datasources/helpers/store.helpers.ts
+++ b/src/app/datasources/helpers/store.helpers.ts
@@ -1,22 +1,26 @@
import {BehaviorSubject} from 'rxjs';
import * as _ from 'lodash';
+import * as pluralize from 'pluralize';
import {IWSEvent} from '../websocket/global';
import {IXosResourceService} from '../rest/model.rest';
-import {IXosConfigHelpersService} from '../../core/services/helpers/config.helpers';
export interface IStoreHelpersService {
+ urlFromCoreModel(name: string): string;
updateCollection(event: IWSEvent, subject: BehaviorSubject<any>): BehaviorSubject<any>;
}
export class StoreHelpers {
- static $inject = ['ConfigHelpers', 'ModelRest'];
+ static $inject = ['ModelRest'];
constructor (
- private configHelpers: IXosConfigHelpersService,
private modelRest: IXosResourceService
) {
}
+ public urlFromCoreModel(name: string): string {
+ return `/core/${pluralize(name.toLowerCase())}`;
+ }
+
public updateCollection(event: IWSEvent, subject: BehaviorSubject<any>): BehaviorSubject<any> {
const collection: any[] = subject.value;
const index: number = _.findIndex(collection, (i) => {
@@ -27,7 +31,7 @@
const isDeleted: boolean = _.includes(event.msg.changed_fields, 'deleted');
// generate a resource for the model
- const endpoint = this.configHelpers.urlFromCoreModel(event.model);
+ const endpoint = this.urlFromCoreModel(event.model);
const resource = this.modelRest.getResource(endpoint);
const model = new resource(event.msg.object);
diff --git a/src/app/datasources/stores/model.store.ts b/src/app/datasources/stores/model.store.ts
index 21f42ac..fdcac63 100644
--- a/src/app/datasources/stores/model.store.ts
+++ b/src/app/datasources/stores/model.store.ts
@@ -4,25 +4,23 @@
import {IWSEvent, IWSEventService} from '../websocket/global';
import {IXosResourceService} from '../rest/model.rest';
import {IStoreHelpersService} from '../helpers/store.helpers';
-import {IXosConfigHelpersService} from '../../core/services/helpers/config.helpers';
export interface IModelStoreService {
query(model: string): Observable<any>;
}
export class ModelStore {
- static $inject = ['WebSocket', 'StoreHelpers', 'ModelRest', 'ConfigHelpers'];
+ static $inject = ['WebSocket', 'StoreHelpers', 'ModelRest'];
private _collections: any; // NOTE contains a map of {model: BehaviourSubject}
constructor(
private webSocket: IWSEventService,
private storeHelpers: IStoreHelpersService,
private ModelRest: IXosResourceService,
- private ConfigHelpers: IXosConfigHelpersService
) {
this._collections = {};
}
- query(model: string) {
+ public query(model: string) {
// if there isn't already an observable for that item
if (!this._collections[model]) {
this._collections[model] = new BehaviorSubject([]); // NOTE maybe this can be created when we get response from the resource
@@ -41,9 +39,13 @@
return this._collections[model].asObservable();
}
+ public get(model: string, id: number) {
+ // TODO implement a get method
+ }
+
private loadInitialData(model: string) {
// NOTE check what is the correct pattern to pluralize this
- const endpoint = this.ConfigHelpers.urlFromCoreModel(model);
+ const endpoint = this.storeHelpers.urlFromCoreModel(model);
this.ModelRest.getResource(endpoint).query().$promise
.then(
res => {