1 (function(angular
, $, _
) {
4 angular
.module('crmSearchAdmin').component('searchAdminDisplayTable', {
11 crmSearchAdmin
: '^crmSearchAdmin'
13 templateUrl
: '~/crmSearchAdmin/displays/searchAdminDisplayTable.html',
14 controller: function($scope
, searchMeta
) {
15 var ts
= $scope
.ts
= CRM
.ts(),
18 function fieldToColumn(fieldExpr
) {
19 var info
= searchMeta
.parseExpr(fieldExpr
);
22 label
: ctrl
.getFieldLabel(fieldExpr
),
23 dataType
: (info
.fn
&& info
.fn
.name
=== 'COUNT') ? 'Integer' : info
.field
.data_type
27 this.sortableOptions
= {
28 connectWith
: '.crm-search-admin-edit-columns',
29 containment
: '.crm-search-admin-edit-columns-wrapper'
32 this.removeCol = function(index
) {
33 ctrl
.hiddenColumns
.push(ctrl
.display
.settings
.columns
[index
]);
34 ctrl
.display
.settings
.columns
.splice(index
, 1);
37 this.restoreCol = function(index
) {
38 ctrl
.display
.settings
.columns
.push(ctrl
.hiddenColumns
[index
]);
39 ctrl
.hiddenColumns
.splice(index
, 1);
42 this.toggleLink = function(col
) {
43 col
.link
= col
.link
? '' : (window
.location
.pathname
+ window
.location
.search
).replace('civicrm/admin/search', 'civicrm/');
46 this.$onInit = function () {
47 ctrl
.getFieldLabel
= ctrl
.crmSearchAdmin
.getFieldLabel
;
48 if (!ctrl
.display
.settings
.columns
) {
49 ctrl
.display
.settings
.columns
= _
.transform(ctrl
.apiParams
.select
, function(columns
, fieldExpr
) {
50 columns
.push(fieldToColumn(fieldExpr
));
52 ctrl
.hiddenColumns
= [];
54 var activeColumns
= _
.collect(ctrl
.display
.settings
.columns
, 'expr');
55 ctrl
.hiddenColumns
= _
.transform(ctrl
.apiParams
.select
, function(hiddenColumns
, fieldExpr
) {
56 if (!_
.includes(activeColumns
, fieldExpr
)) {
57 hiddenColumns
.push(fieldToColumn(fieldExpr
));
60 _
.each(activeColumns
, function(fieldExpr
, index
) {
61 if (!_
.includes(ctrl
.apiParams
.select
, fieldExpr
)) {
62 ctrl
.display
.settings
.columns
.splice(index
, 1);
71 })(angular
, CRM
.$, CRM
._
);