Search ext: Improve styling
[civicrm-core.git] / ext / search / ang / searchAdmin / displays / searchAdminDisplayTable.component.js
CommitLineData
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._);