1 (function(angular
, $, _
) {
4 angular
.module('crmSearchAdmin').component('crmSearchAdminLinkSelect', {
10 templateUrl
: '~/crmSearchAdmin/crmSearchAdminLinkSelect.html',
11 controller: function ($scope
, $element
, $timeout
, searchMeta
) {
12 var ts
= $scope
.ts
= CRM
.ts(),
15 // Return all possible links to main entity or join entities
17 var links
= _
.cloneDeep(searchMeta
.getEntity(ctrl
.apiEntity
).paths
|| []);
18 _
.each(ctrl
.apiParams
.join
, function(join
) {
19 var joinName
= join
[0].split(' AS '),
20 joinEntity
= searchMeta
.getEntity(joinName
[0]);
21 _
.each(joinEntity
.paths
, function(path
) {
22 var link
= _
.cloneDeep(path
);
23 link
.path
= link
.path
.replace(/\[/g, '[' + joinName
[1] + '.');
31 var val
= $('select', $element
).val();
32 if (val
!== ctrl
.column
.link
) {
33 var link
= ctrl
.getLink(val
);
35 ctrl
.column
.link
= link
.path
;
36 ctrl
.column
.title
= link
.title
;
37 } else if (val
=== 'civicrm/') {
38 ctrl
.column
.link
= val
;
40 $('input', $element
).focus();
43 ctrl
.column
.link
= '';
44 ctrl
.column
.title
= '';
49 this.$onInit = function() {
50 this.links
= getLinks();
52 $('select', $element
).on('change', function() {
53 $scope
.$apply(onChange
);
57 this.getLink = function(path
) {
58 return _
.findWhere(ctrl
.links
, {path
: path
});
64 })(angular
, CRM
.$, CRM
._
);