From: Coleman Watts Date: Wed, 15 Sep 2021 22:01:48 +0000 (-0400) Subject: SearchKit - Only allow real fields to be sortable X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=25ee62fe9b1710793dc2cc58c689f1acdf88bb2b;p=civicrm-core.git SearchKit - Only allow real fields to be sortable --- diff --git a/ext/search_kit/ang/crmSearchAdmin.module.js b/ext/search_kit/ang/crmSearchAdmin.module.js index 207c10670d..a3688afa9b 100644 --- a/ext/search_kit/ang/crmSearchAdmin.module.js +++ b/ext/search_kit/ang/crmSearchAdmin.module.js @@ -193,6 +193,9 @@ if (defaults.label === true) { values.label = getDefaultLabel(fieldExpr); } + if (defaults.sortable) { + values.sortable = (info.field.type === 'Field'); + } return values; } return { diff --git a/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.component.js b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.component.js index 7d546a38ef..c4df08c5c5 100644 --- a/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayTable.component.js @@ -43,7 +43,7 @@ } // Displays created prior to 5.43 may not have this property ctrl.display.settings.classes = ctrl.display.settings.classes || []; - ctrl.parent.initColumns({label: true}); + ctrl.parent.initColumns({label: true, sortable: true}); }; } diff --git a/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.component.js b/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.component.js index 2329ade4ea..025f1e6063 100644 --- a/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.component.js +++ b/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.component.js @@ -37,7 +37,7 @@ classes: ['table', 'table-striped'], button: ts('Search'), columns: _.transform(ctrl.search.api_params.select, function(columns, fieldExpr) { - var column = {label: true}, + var column = {label: true, sortable: true}, link = getViewLink(fieldExpr, links); if (link) { column.title = link.title; diff --git a/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.html b/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.html index ab98ae8534..f8c04f2f6c 100644 --- a/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.html +++ b/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.html @@ -11,7 +11,7 @@ - + {{ $ctrl.settings.columns[$index].label }} diff --git a/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplaySortableTrait.service.js b/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplaySortableTrait.service.js index 207da88e10..403ddeab53 100644 --- a/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplaySortableTrait.service.js +++ b/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplaySortableTrait.service.js @@ -10,6 +10,10 @@ sort: [], + isSortable: function(col) { + return col.type === 'field' && col.sortable !== false; + }, + getSort: function(col) { var dir = _.reduce(this.sort, function(dir, item) { return item[0] === col.key ? item[1] : dir; @@ -21,7 +25,7 @@ }, setSort: function(col, $event) { - if (col.type !== 'field') { + if (!this.isSortable(col)) { return; } var dir = this.getSort(col) === 'fa-sort-asc' ? 'DESC' : 'ASC'; diff --git a/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html b/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html index f3bd7b697b..5857239c13 100644 --- a/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html +++ b/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html @@ -9,8 +9,8 @@ - - + + {{:: col.label }}