Bridge search displays and afforms
[civicrm-core.git] / ext / search / ang / crmSearchPage.module.js
CommitLineData
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._);