Commit | Line | Data |
---|---|---|
44402a2e CW |
1 | (function(angular, $, _) { |
2 | "use strict"; | |
3 | ||
4 | // Declare module | |
5 | angular.module('crmSearchPage', CRM.angRequires('crmSearchPage')) | |
6 | ||
44402a2e | 7 | .config(function($routeProvider) { |
e7515b5b | 8 | // Load & render a SearchDisplay |
44402a2e CW |
9 | $routeProvider.when('/display/:savedSearchName/:displayName', { |
10 | controller: 'crmSearchPageDisplay', | |
e7515b5b CW |
11 | // Dynamic template generates the directive for each display type |
12 | template: function() { | |
13 | var html = | |
14 | '<h1 crm-page-title>{{:: $ctrl.display.label }}</h1>\n' + | |
15 | '<div ng-switch="$ctrl.display.type" id="bootstrap-theme">\n'; | |
16 | _.each(CRM.crmSearchPage.displayTypes, function(type) { | |
17 | html += | |
18 | ' <div ng-switch-when="' + type.name + '">\n' + | |
19 | ' <crm-search-display-' + type.name + ' api-entity="$ctrl.apiEntity" api-params="$ctrl.apiParams" settings="$ctrl.display.settings"></crm-search-display-' + type.name + '>\n' + | |
20 | ' </div>\n'; | |
21 | }); | |
22 | html += '</div>'; | |
23 | return html; | |
24 | }, | |
44402a2e CW |
25 | resolve: { |
26 | // Load saved search display | |
27 | display: function($route, crmApi4) { | |
28 | var params = $route.current.params; | |
29 | return crmApi4('SearchDisplay', 'get', { | |
30 | where: [['name', '=', params.displayName], ['saved_search.name', '=', params.savedSearchName]], | |
31 | select: ['*', 'saved_search.api_entity', 'saved_search.api_params'] | |
32 | }, 0); | |
33 | } | |
34 | } | |
35 | }); | |
36 | }) | |
37 | ||
38 | // Controller for displaying a search | |
39 | .controller('crmSearchPageDisplay', function($scope, $routeParams, $location, display) { | |
40 | this.display = display; | |
e7515b5b CW |
41 | this.apiEntity = display['saved_search.api_entity']; |
42 | this.apiParams = display['saved_search.api_params']; | |
44402a2e CW |
43 | $scope.$ctrl = this; |
44 | }); | |
45 | ||
46 | })(angular, CRM.$, CRM._); |