selectMandatoryAttributeList

This commit is contained in:
Yuri Kuznetsov
2023-08-16 14:46:38 +03:00
parent 634403cd6e
commit f503a08813
4 changed files with 52 additions and 24 deletions
+1
View File
@@ -633,6 +633,7 @@ class DetailView extends MainView {
massRelateEnabled: massRelateEnabled,
primaryFilterName: primaryFilterName,
boolFilterList: boolFilterList,
mandatorySelectAttributeList: panelDefs.selectMandatoryAttributeList,
}, dialog => {
dialog.render();
+21 -11
View File
@@ -383,9 +383,16 @@ class LinkMultipleFieldView extends BaseFieldView {
let url = this.foreignScope + '?&maxSize=' + this.getAutocompleteMaxCount();
if (!this.forceSelectAllAttributes) {
/** @var {Object.<string, *>} */
const panelDefs = this.getMetadata()
.get(['clientDefs', this.entityType, 'relationshipPanels', this.name]) || {};
const mandatorySelectAttributeList = this.mandatorySelectAttributeList ||
panelDefs.selectMandatoryAttributeList;
let select = ['id', 'name'];
if (this.mandatorySelectAttributeList) {
if (mandatorySelectAttributeList) {
select = select.concat(this.mandatorySelectAttributeList);
}
@@ -393,10 +400,10 @@ class LinkMultipleFieldView extends BaseFieldView {
}
/** @var {Object.<string, *>} */
let panelDefs = this.getMetadata()
const panelDefs = this.getMetadata()
.get(['clientDefs', this.entityType, 'relationshipPanels', this.name]) || {};
let boolList = [
const boolList = [
...(this.getSelectBoolFilterList() || []),
...(panelDefs.selectBoolFilterList || []),
];
@@ -405,7 +412,7 @@ class LinkMultipleFieldView extends BaseFieldView {
url += '&' + $.param({'boolFilterList': boolList});
}
let primary = this.getSelectPrimaryFilterName() || panelDefs.selectPrimaryFilter;
const primary = this.getSelectPrimaryFilterName() || panelDefs.selectPrimaryFilter;
if (primary) {
url += '&' + $.param({'primaryFilter': primary});
@@ -860,14 +867,17 @@ class LinkMultipleFieldView extends BaseFieldView {
Espo.Ui.notify(' ... ');
/** @var {Object.<string, *>} */
let panelDefs = this.getMetadata()
const panelDefs = this.getMetadata()
.get(['clientDefs', this.entityType, 'relationshipPanels', this.name]) || {};
let viewName = panelDefs.selectModalView ||
const viewName = panelDefs.selectModalView ||
this.getMetadata().get(`clientDefs.${this.foreignScope}.modalViews.select`) ||
this.selectRecordsView;
let handler = panelDefs.selectHandler || null;
const mandatorySelectAttributeList = this.mandatorySelectAttributeList ||
panelDefs.selectMandatoryAttributeList;
const handler = panelDefs.selectHandler || null;
let createButton = this.isEditMode() &&
(!this.createDisabled && !panelDefs.createDisabled || this.forceCreateButton);
@@ -912,13 +922,13 @@ class LinkMultipleFieldView extends BaseFieldView {
.then(filters => resolve(filters));
});
}).then(filters => {
let advanced = {...(this.getSelectFilters() || {}), ...(filters.advanced || {})};
let boolFilterList = [
const advanced = {...(this.getSelectFilters() || {}), ...(filters.advanced || {})};
const boolFilterList = [
...(this.getSelectBoolFilterList() || []),
...(filters.bool || []),
...(panelDefs.selectBoolFilterList || []),
];
let primaryFilter = this.getSelectPrimaryFilterName() ||
const primaryFilter = this.getSelectPrimaryFilterName() ||
filters.primary || panelDefs.selectPrimaryFilter;
this.createView('dialog', viewName, {
@@ -929,7 +939,7 @@ class LinkMultipleFieldView extends BaseFieldView {
primaryFilterName: primaryFilter,
filterList: this.getSelectFilterList(),
multiple: true,
mandatorySelectAttributeList: this.mandatorySelectAttributeList,
mandatorySelectAttributeList: mandatorySelectAttributeList,
forceSelectAllAttributes: this.forceSelectAllAttributes,
createAttributesProvider: createAttributesProvider,
}, dialog => {
+23 -13
View File
@@ -416,25 +416,32 @@ class LinkFieldView extends BaseFieldView {
* @return {string}
*/
getAutocompleteUrl() {
var url = this.foreignScope + '?maxSize=' + this.getAutocompleteMaxCount();
let url = this.foreignScope + '?maxSize=' + this.getAutocompleteMaxCount();
if (!this.forceSelectAllAttributes) {
var select = ['id', 'name'];
/** @var {Object.<string, *>} */
const panelDefs = this.getMetadata()
.get(['clientDefs', this.entityType, 'relationshipPanels', this.name]) || {};
if (this.mandatorySelectAttributeList) {
const mandatorySelectAttributeList = this.mandatorySelectAttributeList ||
panelDefs.selectMandatoryAttributeList;
let select = ['id', 'name'];
if (mandatorySelectAttributeList) {
select = select.concat(this.mandatorySelectAttributeList);
}
url += '&select=' + select.join(',');
}
var boolList = this.getSelectBoolFilterList();
const boolList = this.getSelectBoolFilterList();
if (boolList) {
url += '&' + $.param({'boolFilterList': boolList});
}
var primary = this.getSelectPrimaryFilterName();
const primary = this.getSelectPrimaryFilterName();
if (primary) {
url += '&' + $.param({'primaryFilter': primary});
@@ -919,16 +926,19 @@ class LinkFieldView extends BaseFieldView {
Espo.Ui.notify(' ... ');
/** @var {Object.<string, *>} */
let panelDefs = this.getMetadata()
const panelDefs = this.getMetadata()
.get(['clientDefs', this.entityType, 'relationshipPanels', this.name]) || {};
let viewName = panelDefs.selectModalView ||
const viewName = panelDefs.selectModalView ||
this.getMetadata().get(['clientDefs', this.foreignScope, 'modalViews', 'select']) ||
this.selectRecordsView;
let handler = panelDefs.selectHandler || null;
const mandatorySelectAttributeList = this.mandatorySelectAttributeList ||
panelDefs.selectMandatoryAttributeList;
let createButton = this.isEditMode() &&
const handler = panelDefs.selectHandler || null;
const createButton = this.isEditMode() &&
(!this.createDisabled && !panelDefs.createDisabled || this.forceCreateButton);
let createAttributesProvider = null;
@@ -971,13 +981,13 @@ class LinkFieldView extends BaseFieldView {
.then(filters => resolve(filters));
});
}).then(filters => {
let advanced = {...(this.getSelectFilters() || {}), ...(filters.advanced || {})};
let boolFilterList = [
const advanced = {...(this.getSelectFilters() || {}), ...(filters.advanced || {})};
const boolFilterList = [
...(this.getSelectBoolFilterList() || []),
...(filters.bool || []),
...(panelDefs.selectBoolFilterList || []),
];
let primaryFilter = this.getSelectPrimaryFilterName() ||
const primaryFilter = this.getSelectPrimaryFilterName() ||
filters.primary || panelDefs.selectPrimaryFilter;
this.createView('dialog', viewName, {
@@ -986,7 +996,7 @@ class LinkFieldView extends BaseFieldView {
filters: advanced,
boolFilterList: boolFilterList,
primaryFilterName: primaryFilter,
mandatorySelectAttributeList: this.mandatorySelectAttributeList,
mandatorySelectAttributeList: mandatorySelectAttributeList,
forceSelectAllAttributes: this.forceSelectAllAttributes,
filterList: this.getSelectFilterList(),
createAttributesProvider: createAttributesProvider,
+7
View File
@@ -400,6 +400,13 @@
"layout": {
"type": "string",
"description": "A list layout name."
},
"selectMandatoryAttributeList": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attributes to be selected when selecting records."
}
}
}