| 1 | (function(angular, $, _) { |
| 2 | "use strict"; |
| 3 | |
| 4 | // Declare module |
| 5 | angular.module('crmSearchPage', CRM.angRequires('crmSearchPage')) |
| 6 | |
| 7 | .config(function($routeProvider) { |
| 8 | // Load & render a SearchDisplay |
| 9 | $routeProvider.when('/display/:savedSearchName/:displayName', { |
| 10 | controller: 'crmSearchPageDisplay', |
| 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 | }, |
| 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; |
| 41 | this.apiEntity = display['saved_search.api_entity']; |
| 42 | this.apiParams = display['saved_search.api_params']; |
| 43 | $scope.$ctrl = this; |
| 44 | }); |
| 45 | |
| 46 | })(angular, CRM.$, CRM._); |