From f78ca003d2541703c40f1c8f46e24d07e760e48d Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Fri, 21 Feb 2025 17:40:23 +0200 Subject: [PATCH] ref --- client/src/views/fields/link-multiple.js | 4 +- client/src/views/fields/link-parent.js | 8 +--- client/src/views/fields/link.js | 8 +--- client/src/views/fields/user.js | 54 ++++++++++++------------ 4 files changed, 29 insertions(+), 45 deletions(-) diff --git a/client/src/views/fields/link-multiple.js b/client/src/views/fields/link-multiple.js index c9a1e609ad..ccd5329242 100644 --- a/client/src/views/fields/link-multiple.js +++ b/client/src/views/fields/link-multiple.js @@ -1107,9 +1107,7 @@ class LinkMultipleFieldView extends BaseFieldView { layoutName: this.panelDefs.selectLayout, orderBy: orderBy, orderDirection: orderDirection, - onSelect: (models) => { - view.close(); - + onSelect: models => { this.select(models); }, }; diff --git a/client/src/views/fields/link-parent.js b/client/src/views/fields/link-parent.js index 5cb7bc18b1..cc7d544a4c 100644 --- a/client/src/views/fields/link-parent.js +++ b/client/src/views/fields/link-parent.js @@ -381,9 +381,6 @@ class LinkParentFieldView extends BaseFieldView { const createButton = !this.createDisabled && this.isEditMode(); - /** @type {import('views/modal').default} */ - let view; - /** @type {module:views/modals/select-records~Options} */ const options = { scope: this.foreignScope, @@ -395,16 +392,13 @@ class LinkParentFieldView extends BaseFieldView { mandatorySelectAttributeList: this.getMandatorySelectAttributeList(), forceSelectAllAttributes: this.isForceSelectAllAttributes(), onSelect: models => { - view.close(); - this.select(models[0]); }, }; Espo.Ui.notifyWait(); - view = view = /** @type {import('views/modal').default} */ - await this.createView('modal', viewName, options); + const view = await this.createView('modal', viewName, options); await view.render(); diff --git a/client/src/views/fields/link.js b/client/src/views/fields/link.js index 0d128ffdd0..0167273695 100644 --- a/client/src/views/fields/link.js +++ b/client/src/views/fields/link.js @@ -1152,9 +1152,6 @@ class LinkFieldView extends BaseFieldView { const orderBy = filters.orderBy || this.panelDefs.selectOrderBy; const orderDirection = filters.orderBy ? filters.order : this.panelDefs.selectOrderDirection; - /** @type {import('views/modal').default} */ - let view; - /** @type {module:views/modals/select-records~Options} */ const options = { entityType: this.foreignScope, @@ -1170,14 +1167,11 @@ class LinkFieldView extends BaseFieldView { orderBy: orderBy, orderDirection: orderDirection, onSelect: models => { - view.close(); - this.select(models[0]); }, }; - view = /** @type {import('views/modal').default} */ - await this.createView('modal', viewName, options); + const view = await this.createView('modal', viewName, options); await view.render(); diff --git a/client/src/views/fields/user.js b/client/src/views/fields/user.js index dbf642a698..4701fc7efc 100644 --- a/client/src/views/fields/user.js +++ b/client/src/views/fields/user.js @@ -50,32 +50,7 @@ class UserFieldView extends LinkFieldView { this.deleteLinkTeams(id); }; - this.addActionHandler('selectLinkTeams', () => { - Espo.Ui.notifyWait(); - - const viewName = this.getMetadata().get('clientDefs.Team.modalViews.select') || - 'views/modals/select-records'; - - this.createView('dialog', viewName, { - scope: 'Team', - createButton: false, - multiple: true, - }, view => { - view.render(); - - Espo.Ui.notify(false); - - this.listenToOnce(view, 'select', models => { - if (Object.prototype.toString.call(models) !== '[object Array]') { - models = [models]; - } - - models.forEach(model => { - this.addLinkTeams(model.id, model.get('name')); - }); - }); - }); - }); + this.addActionHandler('selectLinkTeams', () => this.actionSelectLinkTeams()); this.events['click a[data-action="clearLinkTeams"]'] = e => { const id = $(e.currentTarget).data('id').toString(); @@ -84,13 +59,36 @@ class UserFieldView extends LinkFieldView { }; } + /** + * @protected + */ + async actionSelectLinkTeams() { + const viewName = this.getMetadata().get('clientDefs.Team.modalViews.select') || + 'views/modals/select-records'; + + /** @type {module:views/modals/select-records~Options} */ + const options = { + entityType: 'Team', + createButton: false, + multiple: true, + onSelect: models => { + models.forEach(model => this.addLinkTeams(model.id, model.attributes.name)); + }, + }; + + Espo.Ui.notifyWait(); + + const view = await this.createView('modal', viewName, options); + + await view.render(); + } + handleSearchType(type) { super.handleSearchType(type); if (type === 'isFromTeams') { this.$el.find('div.teams-container').removeClass('hidden'); - } - else { + } else { this.$el.find('div.teams-container').addClass('hidden'); } }