[CORD-1927] Fixing generate url for service models
Change-Id: I08d0d853ba2ab041626e133d079ab4562d73171e
diff --git a/src/app/core/services/helpers/config.helpers.spec.ts b/src/app/core/services/helpers/config.helpers.spec.ts
index 7718a44..7120a6b 100644
--- a/src/app/core/services/helpers/config.helpers.spec.ts
+++ b/src/app/core/services/helpers/config.helpers.spec.ts
@@ -25,6 +25,7 @@
import {IXosTableCfg} from '../../table/table';
import {IXosFormInput, IXosFormCfg} from '../../form/form';
import {BehaviorSubject} from 'rxjs';
+import {XosFormHelpers} from '../../form/form-helpers';
let service: IXosConfigHelpersService;
@@ -95,6 +96,7 @@
.value('XosModelStore', {
})
+ .service('XosFormHelpers', XosFormHelpers)
.value('$state', {
get: () => {
return [
@@ -283,9 +285,9 @@
});
describe('the private methods', () => {
- let modelStoreMock, toastr, auth, stateMock;
+ let modelStoreMock, q, toastr, auth, stateMock, XosFormHelpersMock;
- beforeEach(angular.mock.inject((_toastr_, AuthService) => {
+ beforeEach(angular.mock.inject(($q, _toastr_, AuthService, XosFormHelpers) => {
modelStoreMock = {
query: () => {
const subject = new BehaviorSubject([
@@ -297,9 +299,11 @@
};
toastr = _toastr_;
auth = AuthService;
+ XosFormHelpersMock = XosFormHelpers;
stateMock = {
get: ''
};
+ q = $q;
}));
const field: IXosModelDefsField = {
@@ -316,7 +320,7 @@
test: 2
};
it('should add the formatted data to the column definition', () => {
- service = new ConfigHelpers(stateMock, toastr, modelStoreMock);
+ service = new ConfigHelpers(q, stateMock, toastr, modelStoreMock, XosFormHelpersMock);
service['populateRelated'](item, item.test, field);
expect(item['test-formatted']).toBe('second');
});
@@ -332,7 +336,7 @@
};
it('should add the available choice to the select', () => {
- service = new ConfigHelpers(stateMock, toastr, modelStoreMock);
+ service = new ConfigHelpers(q, stateMock, toastr, modelStoreMock, XosFormHelpersMock);
service['populateSelectField'](field, input);
expect(input.options).toEqual([
{id: 1, label: 'test'},
diff --git a/src/app/core/services/helpers/config.helpers.ts b/src/app/core/services/helpers/config.helpers.ts
index 445386a..b6f28f7 100644
--- a/src/app/core/services/helpers/config.helpers.ts
+++ b/src/app/core/services/helpers/config.helpers.ts
@@ -23,6 +23,7 @@
import {IXosFormCfg, IXosFormInput, IXosFormInputValidator, IXosFormInputOptions} from '../../form/form';
import {IXosModelStoreService} from '../../../datasources/stores/model.store';
import {IXosState} from '../runtime-states';
+import {IXosFormHelpersService} from '../../form/form-helpers';
export interface IXosModelDefsFieldValidators {
name: string;
@@ -61,9 +62,12 @@
export class ConfigHelpers implements IXosConfigHelpersService {
static $inject = [
+ '$q',
'$state',
'toastr',
- 'XosModelStore'];
+ 'XosModelStore',
+ 'XosFormHelpers'
+ ];
public excluded_fields = [
'created',
@@ -96,9 +100,11 @@
]);
constructor(
+ private $q: ng.IQService,
private $state: ng.ui.IStateService,
private toastr: ng.toastr.IToastrService,
- private XosModelStore: IXosModelStoreService
+ private XosModelStore: IXosModelStoreService,
+ private XosFormHelpers: IXosFormHelpersService
) {
pluralize.addIrregularRule('xos', 'xoses');
pluralize.addPluralRule(/slice$/i, 'slices');
@@ -299,7 +305,7 @@
};
formCfg.actions[0].cb = (item, form: angular.IFormController) => {
-
+ const d = this.$q.defer();
if (!form.$valid) {
formCfg.feedback = {
show: true,
@@ -318,9 +324,15 @@
// remove field added by xosTable
_.forEach(Object.keys(item), prop => {
- if (prop.indexOf('-formatted') > -1) {
+ // FIXME what _ptr fields comes from??
+ if (prop.indexOf('-formatted') > -1 || prop.indexOf('_ptr') > -1) {
delete item[prop];
}
+
+ // convert dates back to UnixTime
+ if (this.XosFormHelpers._getFieldFormat(item[prop]) === 'date') {
+ item[prop] = new Date(item[prop]).getTime() / 1000;
+ }
});
const itemName = (angular.isUndefined(itemCopy.name)) ? model.name : itemCopy.name;
@@ -334,6 +346,7 @@
closeBtn: true
};
this.toastr.success(`${itemName} successfully saved`);
+ d.resolve(res);
})
.catch(err => {
formCfg.feedback = {
@@ -343,7 +356,10 @@
closeBtn: true
};
this.toastr.error(err.specific_error || '', `Error while saving ${itemName}: ${err.error}`);
+ d.reject(err);
});
+
+ return d.promise;
};
return formCfg;