From 25786bd043070081307d25383637913fcf013c3d Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Wed, 9 Dec 2020 09:27:16 -0500 Subject: [PATCH] Search kit: Improve labels & relevance of smart group field selection --- ext/search/ang/crmSearchAdmin.module.js | 20 ++++++++++---------- ext/search/ang/crmSearchAdmin/group.html | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ext/search/ang/crmSearchAdmin.module.js b/ext/search/ang/crmSearchAdmin.module.js index 9019da4f82..e06b22339d 100644 --- a/ext/search/ang/crmSearchAdmin.module.js +++ b/ext/search/ang/crmSearchAdmin.module.js @@ -106,11 +106,13 @@ } path = path.replace(join.alias + '_', ''); var num = parseInt(path.substr(0, 2), 10); - baseEntity = join.entity; label.push(join.label + (num > 1 ? ' ' + num : '')); path = path.replace(/^\d\d_?/, ''); + if (path.length) { + baseEntity = join.entity; + } } - result = _.assign(_.cloneDeep(join), {label: label.join(' - '), alias: alias}); + result = _.assign(_.cloneDeep(join), {label: label.join(' - '), alias: alias, baseEntity: baseEntity}); // Add the numbered suffix to the join conditions // If this is a deep join, also add the base entity prefix var prefix = alias.replace(new RegExp('_?' + join.alias + '_?\\d?\\d?$'), ''); @@ -201,23 +203,21 @@ }, // Find all possible search columns that could serve as contact_id for a smart group getSmartGroupColumns: function(api_entity, api_params) { - var joins = _.pluck((api_params.join || []), 0), - entityCount = {}; + var joins = _.pluck((api_params.join || []), 0); return _.transform([api_entity].concat(joins), function(columns, joinExpr) { var joinName = joinExpr.split(' AS '), - entityName = joinName[0], - entity = getEntity(entityName), - prefix = joinName[1] ? joinName[1] + '.' : ''; + joinInfo = joinName[1] ? getJoin(joinName[1]) : {entity: joinName[0]}, + entity = getEntity(joinInfo.entity), + prefix = joinInfo.alias ? joinInfo.alias + '.' : ''; _.each(entity.fields, function(field) { - if ((entityName === 'Contact' && field.name === 'id') || field.fk_entity === 'Contact') { + if ((entity.name === 'Contact' && field.name === 'id') || (field.fk_entity === 'Contact' && joinInfo.baseEntity !== 'Contact')) { columns.push({ id: prefix + field.name, - text: entity.title_plural + (entityCount[entityName] ? ' ' + entityCount[entityName] : '') + ': ' + field.label, + text: (joinInfo.label ? joinInfo.label + ': ' : '') + field.label, icon: entity.icon }); } }); - entityCount[entityName] = 1 + (entityCount[entityName] || 1); }); } }; diff --git a/ext/search/ang/crmSearchAdmin/group.html b/ext/search/ang/crmSearchAdmin/group.html index 10a1f4d27e..64bf4a30c4 100644 --- a/ext/search/ang/crmSearchAdmin/group.html +++ b/ext/search/ang/crmSearchAdmin/group.html @@ -6,7 +6,7 @@ - +
-- 2.25.1