From 1daac4cfad88f175275dd2e93a1b284cd368bc10 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Tue, 30 May 2023 12:37:26 +0300 Subject: [PATCH] foreign field copy params --- client/src/helpers/misc/foreign-field.js | 11 +++++++++++ client/src/views/fields/foreign-bool.js | 15 ++++++++++++++- client/src/views/fields/foreign-date.js | 15 ++++++++++++++- client/src/views/fields/foreign-datetime.js | 16 +++++++++++++++- client/src/views/fields/foreign-float.js | 15 ++++++++++++++- client/src/views/fields/foreign-int.js | 4 ++++ client/src/views/fields/foreign-text.js | 15 ++++++++++++++- client/src/views/fields/foreign-url-multiple.js | 16 +++++++++++++++- client/src/views/fields/foreign-url.js | 15 ++++++++++++++- client/src/views/fields/foreign-varchar.js | 16 ++++++++++++++-- 10 files changed, 129 insertions(+), 9 deletions(-) diff --git a/client/src/helpers/misc/foreign-field.js b/client/src/helpers/misc/foreign-field.js index 7a80aa1b36..858c451df5 100644 --- a/client/src/helpers/misc/foreign-field.js +++ b/client/src/helpers/misc/foreign-field.js @@ -54,12 +54,23 @@ define('helpers/misc/foreign-field', [], function () { let fieldDefs = metadata.get(['entityDefs', entityType, 'fields', field]) || {}; let type = fieldDefs.type; + let ignoreList = [ + 'default', + 'audited', + 'readOnly', + 'required', + ]; + /** @private */ this.foreignParams = {}; view.getFieldManager().getParamList(type).forEach(defs => { let name = defs.name; + if (ignoreList.includes(name)) { + return; + } + this.foreignParams[name] = fieldDefs[name] || null; }); } diff --git a/client/src/views/fields/foreign-bool.js b/client/src/views/fields/foreign-bool.js index c8e6fe2834..1bb26e319a 100644 --- a/client/src/views/fields/foreign-bool.js +++ b/client/src/views/fields/foreign-bool.js @@ -26,10 +26,23 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('views/fields/foreign-bool', ['views/fields/bool'], function (Dep) { +define('views/fields/foreign-bool', ['views/fields/bool', 'helpers/misc/foreign-field'], function (Dep, Helper) { return Dep.extend({ type: 'foreign', + + setup: function () { + Dep.prototype.setup.call(this); + + /** @var {module:helpers/misc/foreign-field.Class} */ + let helper = new Helper(this); + + let foreignParams = helper.getForeignParams(); + + for (let param in foreignParams) { + this.params[param] = foreignParams[param]; + } + }, }); }); diff --git a/client/src/views/fields/foreign-date.js b/client/src/views/fields/foreign-date.js index 898f25ab6e..b2e745fccd 100644 --- a/client/src/views/fields/foreign-date.js +++ b/client/src/views/fields/foreign-date.js @@ -26,11 +26,24 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('views/fields/foreign-date', ['views/fields/date'], function (Dep) { +define('views/fields/foreign-date', ['views/fields/date', 'helpers/misc/foreign-field'], function (Dep, Helper) { return Dep.extend({ type: 'foreign', + + setup: function () { + Dep.prototype.setup.call(this); + + /** @var {module:helpers/misc/foreign-field.Class} */ + let helper = new Helper(this); + + let foreignParams = helper.getForeignParams(); + + for (let param in foreignParams) { + this.params[param] = foreignParams[param]; + } + }, }); }); diff --git a/client/src/views/fields/foreign-datetime.js b/client/src/views/fields/foreign-datetime.js index e47a14517f..eb7ffb0d3c 100644 --- a/client/src/views/fields/foreign-datetime.js +++ b/client/src/views/fields/foreign-datetime.js @@ -26,11 +26,25 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('views/fields/foreign-datetime', ['views/fields/datetime'], function (Dep) { +define('views/fields/foreign-datetime', ['views/fields/datetime', 'helpers/misc/foreign-field'], +function (Dep, Helper) { return Dep.extend({ type: 'foreign', + + setup: function () { + Dep.prototype.setup.call(this); + + /** @var {module:helpers/misc/foreign-field.Class} */ + let helper = new Helper(this); + + let foreignParams = helper.getForeignParams(); + + for (let param in foreignParams) { + this.params[param] = foreignParams[param]; + } + }, }); }); diff --git a/client/src/views/fields/foreign-float.js b/client/src/views/fields/foreign-float.js index aa063ab8ff..2b743dbf48 100644 --- a/client/src/views/fields/foreign-float.js +++ b/client/src/views/fields/foreign-float.js @@ -26,10 +26,23 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('views/fields/foreign-float', ['views/fields/float'], function (Dep) { +define('views/fields/foreign-float', ['views/fields/float', 'helpers/misc/foreign-field'], function (Dep, Helper) { return Dep.extend({ type: 'foreign', + + setup: function () { + Dep.prototype.setup.call(this); + + /** @var {module:helpers/misc/foreign-field.Class} */ + let helper = new Helper(this); + + let foreignParams = helper.getForeignParams(); + + for (let param in foreignParams) { + this.params[param] = foreignParams[param]; + } + }, }); }); diff --git a/client/src/views/fields/foreign-int.js b/client/src/views/fields/foreign-int.js index 88e164e8e6..59081546cb 100644 --- a/client/src/views/fields/foreign-int.js +++ b/client/src/views/fields/foreign-int.js @@ -41,6 +41,10 @@ define('views/fields/foreign-int', let foreignParams = helper.getForeignParams(); + for (let param in foreignParams) { + this.params[param] = foreignParams[param]; + } + this.disableFormatting = foreignParams.disableFormatting; }, }); diff --git a/client/src/views/fields/foreign-text.js b/client/src/views/fields/foreign-text.js index 545dcfaef2..0d77d1ac1c 100644 --- a/client/src/views/fields/foreign-text.js +++ b/client/src/views/fields/foreign-text.js @@ -26,10 +26,23 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('views/fields/foreign-text', ['views/fields/text'], function (Dep) { +define('views/fields/foreign-text', ['views/fields/text', 'helpers/misc/foreign-field'], function (Dep, Helper) { return Dep.extend({ type: 'foreign', + + setup: function () { + Dep.prototype.setup.call(this); + + /** @var {module:helpers/misc/foreign-field.Class} */ + let helper = new Helper(this); + + let foreignParams = helper.getForeignParams(); + + for (let param in foreignParams) { + this.params[param] = foreignParams[param]; + } + }, }); }); diff --git a/client/src/views/fields/foreign-url-multiple.js b/client/src/views/fields/foreign-url-multiple.js index be7ac3df9c..5c3ab27024 100644 --- a/client/src/views/fields/foreign-url-multiple.js +++ b/client/src/views/fields/foreign-url-multiple.js @@ -26,10 +26,24 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('views/fields/foreign-url-multiple', ['views/fields/url-multiple'], function (Dep) { +define('views/fields/foreign-url-multiple', +['views/fields/url-multiple', 'helpers/misc/foreign-field'], function (Dep, Helper) { return Dep.extend({ type: 'foreign', + + setup: function () { + Dep.prototype.setup.call(this); + + /** @var {module:helpers/misc/foreign-field.Class} */ + let helper = new Helper(this); + + let foreignParams = helper.getForeignParams(); + + for (let param in foreignParams) { + this.params[param] = foreignParams[param]; + } + }, }); }); diff --git a/client/src/views/fields/foreign-url.js b/client/src/views/fields/foreign-url.js index 9c36329e93..69780a3d46 100644 --- a/client/src/views/fields/foreign-url.js +++ b/client/src/views/fields/foreign-url.js @@ -26,12 +26,25 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('views/fields/foreign-url', ['views/fields/url'], function (Dep) { +define('views/fields/foreign-url', ['views/fields/url', 'helpers/misc/foreign-field'], function (Dep, Helper) { return Dep.extend({ type: 'foreign', readOnly: true, + + setup: function () { + Dep.prototype.setup.call(this); + + /** @var {module:helpers/misc/foreign-field.Class} */ + let helper = new Helper(this); + + let foreignParams = helper.getForeignParams(); + + for (let param in foreignParams) { + this.params[param] = foreignParams[param]; + } + }, }); }); diff --git a/client/src/views/fields/foreign-varchar.js b/client/src/views/fields/foreign-varchar.js index 428381527a..f252d49ef9 100644 --- a/client/src/views/fields/foreign-varchar.js +++ b/client/src/views/fields/foreign-varchar.js @@ -26,11 +26,23 @@ * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ -define('views/fields/foreign-varchar', ['views/fields/varchar'], function (Dep) { +define('views/fields/foreign-varchar', ['views/fields/varchar', 'helpers/misc/foreign-field'], function (Dep, Helper) { return Dep.extend({ type: 'foreign', + + setup: function () { + Dep.prototype.setup.call(this); + + /** @var {module:helpers/misc/foreign-field.Class} */ + let helper = new Helper(this); + + let foreignParams = helper.getForeignParams(); + + for (let param in foreignParams) { + this.params[param] = foreignParams[param]; + } + }, }); }); -