Commit | Line | Data |
---|---|---|
44402a2e CW |
1 | (function(angular, $, _) { |
2 | "use strict"; | |
3 | ||
4 | angular.module('searchAdmin').component('searchAdminDisplayTable', { | |
5 | bindings: { | |
6 | display: '<', | |
7 | apiEntity: '<', | |
8 | apiParams: '<' | |
9 | }, | |
10 | require: { | |
11 | crmSearchAdmin: '^crmSearchAdmin' | |
12 | }, | |
13 | templateUrl: '~/searchAdmin/displays/searchAdminDisplayTable.html', | |
14 | controller: function($scope, searchMeta) { | |
15 | var ts = $scope.ts = CRM.ts(), | |
16 | ctrl = this; | |
17 | ||
18 | function fieldToColumn(fieldExpr) { | |
19 | var info = searchMeta.parseExpr(fieldExpr); | |
20 | return { | |
21 | expr: fieldExpr, | |
22 | label: ctrl.getFieldLabel(fieldExpr), | |
23 | dataType: (info.fn && info.fn.name === 'COUNT') ? 'Integer' : info.field.data_type | |
24 | }; | |
25 | } | |
26 | ||
27 | this.sortableOptions = { | |
28 | connectWith: '.crm-search-admin-table-columns', | |
29 | containment: '.crm-search-admin-table-columns-wrapper' | |
30 | }; | |
31 | ||
32 | this.removeCol = function(index) { | |
33 | ctrl.hiddenColumns.push(ctrl.display.settings.columns[index]); | |
34 | ctrl.display.settings.columns.splice(index, 1); | |
35 | }; | |
36 | ||
37 | this.restoreCol = function(index) { | |
38 | ctrl.display.settings.columns.push(ctrl.hiddenColumns[index]); | |
39 | ctrl.hiddenColumns.splice(index, 1); | |
40 | }; | |
41 | ||
42 | this.$onInit = function () { | |
44402a2e CW |
43 | ctrl.getFieldLabel = ctrl.crmSearchAdmin.getFieldLabel; |
44 | if (!ctrl.display.settings.columns) { | |
45 | ctrl.display.settings.columns = _.transform(ctrl.apiParams.select, function(columns, fieldExpr) { | |
46 | columns.push(fieldToColumn(fieldExpr)); | |
47 | }); | |
48 | ctrl.hiddenColumns = []; | |
49 | } else { | |
50 | var activeColumns = _.collect(ctrl.display.settings.columns, 'expr'); | |
51 | ctrl.hiddenColumns = _.transform(ctrl.apiParams.select, function(hiddenColumns, fieldExpr) { | |
52 | if (!_.includes(activeColumns, fieldExpr)) { | |
53 | hiddenColumns.push(fieldToColumn(fieldExpr)); | |
54 | } | |
55 | }); | |
56 | _.each(activeColumns, function(fieldExpr, index) { | |
57 | if (!_.includes(ctrl.apiParams.select, fieldExpr)) { | |
58 | ctrl.display.settings.columns.splice(index, 1); | |
59 | } | |
60 | }); | |
61 | } | |
62 | }; | |
63 | ||
64 | } | |
65 | }); | |
66 | ||
67 | })(angular, CRM.$, CRM._); |