From 28218ad6485f5c95a663f5a955810d4446d8323c Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Fri, 6 Aug 2021 17:52:16 -0400 Subject: [PATCH] SearchKit - Refactor search displays to share more code --- ext/search_kit/ang/crmSearchAdmin.module.js | 36 +++++++++++++------ .../crmSearchAdminDisplay.component.js | 19 ++-------- .../searchAdminDisplayList.component.js | 2 +- .../searchAdminDisplayTable.component.js | 2 +- .../crmSearchDisplayTable.html | 11 +----- .../crmSearchDisplayTableBody.html | 8 +++++ 6 files changed, 38 insertions(+), 40 deletions(-) create mode 100644 ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTableBody.html diff --git a/ext/search_kit/ang/crmSearchAdmin.module.js b/ext/search_kit/ang/crmSearchAdmin.module.js index 6293e92cec..312466d47f 100644 --- a/ext/search_kit/ang/crmSearchAdmin.module.js +++ b/ext/search_kit/ang/crmSearchAdmin.module.js @@ -187,6 +187,29 @@ } return info; } + function getDefaultLabel(col) { + var info = parseExpr(col), + label = info.field.label; + if (info.fn) { + label = '(' + info.fn.title + ') ' + label; + } + if (info.join) { + label = info.join.label + ': ' + label; + } + return label; + } + function fieldToColumn(fieldExpr, defaults) { + var info = parseExpr(fieldExpr), + values = _.merge({ + type: 'field', + key: info.alias, + dataType: (info.fn && info.fn.dataType) || (info.field && info.field.data_type) + }, defaults); + if (defaults.label) { + values.label = getDefaultLabel(fieldExpr); + } + return values; + } return { getEntity: getEntity, getField: function(fieldName, entityName) { @@ -194,17 +217,8 @@ }, getJoin: getJoin, parseExpr: parseExpr, - getDefaultLabel: function(col) { - var info = parseExpr(col), - label = info.field.label; - if (info.fn) { - label = '(' + info.fn.title + ') ' + label; - } - if (info.join) { - label = info.join.label + ': ' + label; - } - return label; - }, + getDefaultLabel: getDefaultLabel, + fieldToColumn: fieldToColumn, // 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); diff --git a/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js b/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js index f895d2d538..21b6469b10 100644 --- a/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js @@ -163,21 +163,6 @@ return !col.rewrite && !col.link && !info.fn && info.field && !info.field.readonly; }; - function fieldToColumn(fieldExpr, defaults) { - var info = searchMeta.parseExpr(fieldExpr), - values = _.cloneDeep(defaults); - if (defaults.key) { - values.key = info.alias; - } - if (defaults.label) { - values.label = searchMeta.getDefaultLabel(fieldExpr); - } - if (defaults.dataType) { - values.dataType = (info.fn && info.fn.dataType) || (info.field && info.field.data_type); - } - return values; - } - this.toggleLink = function(column) { if (column.link) { ctrl.onChangeLink(column, column.link.path, ''); @@ -304,7 +289,7 @@ this.initColumns = function(defaults) { if (!ctrl.display.settings.columns) { ctrl.display.settings.columns = _.transform(ctrl.savedSearch.api_params.select, function(columns, fieldExpr) { - columns.push(fieldToColumn(fieldExpr, defaults)); + columns.push(searchMeta.fieldToColumn(fieldExpr, defaults)); }); ctrl.hiddenColumns = []; } else { @@ -315,7 +300,7 @@ ctrl.hiddenColumns = _.transform(ctrl.savedSearch.api_params.select, function(hiddenColumns, fieldExpr) { var key = _.last(fieldExpr.split(' AS ')); if (!_.includes(activeColumns, key)) { - hiddenColumns.push(fieldToColumn(fieldExpr, defaults)); + hiddenColumns.push(searchMeta.fieldToColumn(fieldExpr, defaults)); } }); _.eachRight(activeColumns, function(key, index) { diff --git a/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayList.component.js b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayList.component.js index dc4ceda0d8..fe35e0a024 100644 --- a/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayList.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayList.component.js @@ -38,7 +38,7 @@ pager: {} }; } - ctrl.parent.initColumns({key: true, dataType: true, type: 'field'}); + ctrl.parent.initColumns({}); }; } diff --git a/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.component.js b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.component.js index 6c95159180..23b7c4daeb 100644 --- a/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.component.js @@ -22,7 +22,7 @@ pager: {} }; } - ctrl.parent.initColumns({key: true, label: true, dataType: true, type: 'field'}); + ctrl.parent.initColumns({label: true}); }; } diff --git a/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html b/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html index dd4c502ef9..b711c5ee58 100644 --- a/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html +++ b/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html @@ -14,16 +14,7 @@ - - - - - - - - - - +
diff --git a/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTableBody.html b/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTableBody.html new file mode 100644 index 0000000000..3bdf16c9bc --- /dev/null +++ b/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTableBody.html @@ -0,0 +1,8 @@ + + + + + + + + -- 2.25.1