From 850492ded0d36781075e57a0fcda9cb7d907db2c Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Mon, 4 Oct 2021 14:05:26 -0400 Subject: [PATCH] SearchKit - Sortable column fixes/improvements Fix sortable column headers on SearchKit admin tables Make click-sortable column headers configurable --- ext/search_kit/ang/crmSearchAdmin.module.js | 4 ++-- .../ang/crmSearchAdmin/crmSearchAdminDisplay.component.js | 7 +++++++ .../crmSearchAdmin/displays/searchAdminDisplayTable.html | 6 ++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ext/search_kit/ang/crmSearchAdmin.module.js b/ext/search_kit/ang/crmSearchAdmin.module.js index 248e3f5dfc..ee6bb116f5 100644 --- a/ext/search_kit/ang/crmSearchAdmin.module.js +++ b/ext/search_kit/ang/crmSearchAdmin.module.js @@ -277,7 +277,7 @@ } function fieldToColumn(fieldExpr, defaults) { var info = parseExpr(fieldExpr), - field = _.findWhere(info.args, {type: 'field'}) || {}, + field = (_.findWhere(info.args, {type: 'field'}) || {}).field || {}, values = _.merge({ type: 'field', key: info.alias, @@ -287,7 +287,7 @@ values.label = getDefaultLabel(fieldExpr); } if (defaults.sortable) { - values.sortable = field.type === 'Field'; + values.sortable = field.type && field.type !== 'Pseudo'; } return values; } diff --git a/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js b/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js index 3d8feee314..9bb5c4f7f7 100644 --- a/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminDisplay.component.js @@ -192,6 +192,13 @@ return !col.image && !col.rewrite && !col.link && !info.fn && info.args[0] && info.args[0].field && !info.args[0].field.readonly; }; + this.canBeSortable = function(col) { + var expr = ctrl.getExprFromSelect(col.key), + info = searchMeta.parseExpr(expr), + arg = (_.findWhere(info.args, {type: 'field'}) || {}); + return arg.field && arg.field.type !== 'Pseudo'; + }; + // Aggregate functions (COUNT, AVG, MAX) cannot display as links, except for GROUP_CONCAT // which gets special treatment in APIv4 to convert it to an array. this.canBeLink = function(col) { diff --git a/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.html b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.html index c467764726..b3234eadaa 100644 --- a/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.html +++ b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.html @@ -43,6 +43,12 @@ +
+ +
-- 2.25.1