From 461eb480f1dc511457b85584f8a664bde768b655 Mon Sep 17 00:00:00 2001 From: yuri Date: Tue, 15 Dec 2015 14:49:55 +0200 Subject: [PATCH] move populate assigned user and assigned teams to view --- .../Resources/metadata/entityDefs/User.json | 3 ++- frontend/client/src/controllers/record.js | 1 - frontend/client/src/model.js | 23 +++++----------- frontend/client/src/views/modals/edit.js | 1 - frontend/client/src/views/record/base.js | 27 +++++++++++++++++++ frontend/client/src/views/record/edit.js | 3 +++ 6 files changed, 38 insertions(+), 20 deletions(-) diff --git a/application/Espo/Resources/metadata/entityDefs/User.json b/application/Espo/Resources/metadata/entityDefs/User.json index 43e41a7e40..6ed6eebf58 100644 --- a/application/Espo/Resources/metadata/entityDefs/User.json +++ b/application/Espo/Resources/metadata/entityDefs/User.json @@ -84,7 +84,8 @@ "columns": { "role": "userRole" }, - "view": "User.Fields.Teams" + "view": "views/user/fields/teams", + "default": "javascript: return {teamsIds: []}" }, "roles": { "type": "linkMultiple", diff --git a/frontend/client/src/controllers/record.js b/frontend/client/src/controllers/record.js index 1f36202451..85440929a5 100644 --- a/frontend/client/src/controllers/record.js +++ b/frontend/client/src/controllers/record.js @@ -122,7 +122,6 @@ Espo.define('controllers/record', 'controller', function (Dep) { create: function (options) { options = options || {}; this.getModel(function (model) { - model.populateDefaults(); if (options.relate) { model.setRelate(options.relate); } diff --git a/frontend/client/src/model.js b/frontend/client/src/model.js index a80db8fe1b..e249640db3 100644 --- a/frontend/client/src/model.js +++ b/frontend/client/src/model.js @@ -98,34 +98,23 @@ Espo.define('model', [], function () { var defaultValue = this.getFieldParam(field, 'default'); if (defaultValue != null) { - var defaultValue = this._getDefaultValue(defaultValue); + var defaultValue = this.parseDefaultValue(defaultValue); defaultHash[field] = defaultValue; } } } - var user = this.getUser(); - if (user) { - if (this.hasField('assignedUser')) { - this.set('assignedUserId', this.getUser().id); - this.set('assignedUserName', this.getUser().get('name')); - } - var defaultTeamId = this.getUser().get('defaultTeamId'); - if (defaultTeamId) { - if (this.hasField('teams') && !this.getFieldParam('teams', 'default')) { - defaultHash['teamsIds'] = [defaultTeamId]; - defaultHash['teamsNames'] = {}; - defaultHash['teamsNames'][defaultTeamId] = this.getUser().get('defaultTeamName') - } + defaultHash = Espo.Utils.cloneDeep(defaultHash); + for (var attr in defaultHash) { + if (this.has(attr)) { + delete defaultHash[attr]; } } - defaultHash = Espo.Utils.cloneDeep(defaultHash); - this.set(defaultHash, {silent: true}); }, - _getDefaultValue: function (defaultValue) { + parseDefaultValue: function (defaultValue) { if (typeof defaultValue == 'string' && defaultValue.indexOf('javascript:') === 0 ) { var code = defaultValue.substring(11); defaultValue = (new Function( "with(this) { " + code + "}")).call(this); diff --git a/frontend/client/src/views/modals/edit.js b/frontend/client/src/views/modals/edit.js index f1a1fe86c9..9c3a296e8d 100644 --- a/frontend/client/src/views/modals/edit.js +++ b/frontend/client/src/views/modals/edit.js @@ -115,7 +115,6 @@ Espo.define('views/modals/edit', 'views/modal', function (Dep) { }, this); model.fetch(); } else { - model.populateDefaults(); if (this.options.relate) { model.setRelate(this.options.relate); } diff --git a/frontend/client/src/views/record/base.js b/frontend/client/src/views/record/base.js index 1bdd5346a0..133afeea9f 100644 --- a/frontend/client/src/views/record/base.js +++ b/frontend/client/src/views/record/base.js @@ -429,6 +429,33 @@ Espo.define('views/record/base', ['view', 'view-record-helper'], function (Dep, return data; }, + populateDefaults: function () { + this.model.populateDefaults(); + + var defaultHash = {}; + + if (this.model.hasField('assignedUser')) { + defaultHash['assignedUserId'] = this.getUser().id; + defaultHash['assignedUserName'] = this.getUser().get('name'); + } + var defaultTeamId = this.getUser().get('defaultTeamId'); + if (defaultTeamId) { + if (this.model.hasField('teams') && !this.model.getFieldParam('teams', 'default')) { + defaultHash['teamsIds'] = [defaultTeamId]; + defaultHash['teamsNames'] = {}; + defaultHash['teamsNames'][defaultTeamId] = this.getUser().get('defaultTeamName') + } + } + + for (var attr in defaultHash) { + if (this.model.has(attr)) { + delete defaultHash[attr]; + } + } + + this.model.set(defaultHash, {silent: true}); + }, + showDuplicate: function (duplicates) { }, diff --git a/frontend/client/src/views/record/edit.js b/frontend/client/src/views/record/edit.js index 51ec776e97..913a3a4336 100644 --- a/frontend/client/src/views/record/edit.js +++ b/frontend/client/src/views/record/edit.js @@ -75,6 +75,9 @@ Espo.define('views/record/edit', 'views/record/detail', function (Dep) { }, setup: function () { + if (this.model.isNew()) { + this.populateDefaults(); + } Dep.prototype.setup.call(this); },