Saving data from form
Change-Id: If78c7b7a8396a574edbc2cab3fd4150010f103b6
diff --git a/src/app/core/services/helpers/config.helpers.spec.ts b/src/app/core/services/helpers/config.helpers.spec.ts
index beec2e0..b39f444 100644
--- a/src/app/core/services/helpers/config.helpers.spec.ts
+++ b/src/app/core/services/helpers/config.helpers.spec.ts
@@ -2,8 +2,7 @@
import 'angular-mocks';
import 'angular-ui-router';
-import {IXosConfigHelpersService} from './config.helpers';
-import {xosCore} from '../../index';
+import {IXosConfigHelpersService, ConfigHelpers} from './config.helpers';
import {IModeldef} from '../../../datasources/rest/modeldefs.rest';
import {IXosTableCfg} from '../../table/table';
import {IXosFormInput, IXosFormConfig} from '../../form/form';
@@ -50,7 +49,17 @@
describe('The ConfigHelpers service', () => {
- beforeEach(angular.mock.module(xosCore));
+ beforeEach(() => {
+ angular
+ .module('test', ['toastr'])
+ .service('ConfigHelpers', ConfigHelpers)
+ .value('AuthService', {
+ getUser: () => {
+ return {id: 1};
+ }
+ });
+ angular.mock.module('test');
+ });
beforeEach(angular.mock.inject((
ConfigHelpers: IXosConfigHelpersService,
diff --git a/src/app/core/services/helpers/config.helpers.ts b/src/app/core/services/helpers/config.helpers.ts
index 6b89856..1df2662 100644
--- a/src/app/core/services/helpers/config.helpers.ts
+++ b/src/app/core/services/helpers/config.helpers.ts
@@ -3,6 +3,7 @@
import {IXosTableColumn, IXosTableCfg} from '../../table/table';
import {IModeldef} from '../../../datasources/rest/modeldefs.rest';
import {IXosFormConfig, IXosFormInput} from '../../form/form';
+import {IXosAuthService} from '../../../datasources/rest/auth.rest';
export interface IXosModelDefsField {
name: string;
@@ -44,7 +45,8 @@
];
constructor(
- private toastr: ng.toastr.IToastrService
+ private toastr: ng.toastr.IToastrService,
+ private AuthService: IXosAuthService
) {
pluralize.addIrregularRule('xos', 'xosses');
pluralize.addPluralRule(/slice$/i, 'slices');
@@ -165,18 +167,31 @@
public modelToFormCfg(model: IModeldef): IXosFormConfig {
return {
formName: `${model.name}Form`,
- exclude: ['backend_status'],
+ exclude: ['backend_status', 'creator'],
actions: [{
label: 'Save',
class: 'success',
icon: 'ok',
cb: (item, form) => {
+ const model = angular.copy(item);
+
+ // TODO remove ManyToMany relations and save them separately (how??)
+ delete item.networks;
+
+ // adding userId as creator
+ item.creator = this.AuthService.getUser().id;
+
item.$save()
- .then(res => {
- this.toastr.success(`${item.name} succesfully saved`);
+ .then((res) => {
+ if (res.status === 403 || res.status === 405 || res.status === 500) {
+ // TODO understand why 405 does not go directly in catch (it may be realted to ng-rest-gw)
+ throw new Error();
+ }
+ this.toastr.success(`${model.name} succesfully saved`);
})
.catch(err => {
- this.toastr.error(`Error while saving ${item.name}`);
+ // TODO keep the edited model
+ this.toastr.error(`Error while saving ${model.name}`);
});
}
}],