ce4eb169aed97cd758c2294a92b53684475b2e03
[civicrm-core.git] / ext / search_kit / ang / crmSearchAdmin / searchList.html
1 <div id="bootstrap-theme" class="crm-search">
2 <h1 crm-page-title>{{:: ts('Saved Searches') }}</h1>
3 <div class="form-inline">
4 <label for="search-list-filter">{{:: ts('Filter') }}</label>
5 <input class="form-control" type="search" id="search-list-filter" ng-model="$ctrl.searchFilter" placeholder="&#xf002">
6 <a class="btn btn-primary pull-right" href="#/create/Contact/">
7 <i class="crm-i fa-plus"></i>
8 {{:: ts('New Search') }}
9 </a>
10 </div>
11 <table>
12 <thead>
13 <tr>
14 <th ng-click="$ctrl.sortBy('label')">
15 <i class="crm-i fa-sort disabled" ng-if="$ctrl.sortField !== 'label'"></i>
16 <i class="crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if="$ctrl.sortField === 'label'"></i>
17 {{:: ts('Label') }}
18 </th>
19 <th ng-click="$ctrl.sortBy('entity_title')">
20 <i class="crm-i fa-sort disabled" ng-if="$ctrl.sortField !== 'entity_title'"></i>
21 <i class="crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if="$ctrl.sortField === 'entity_title'"></i>
22 {{:: ts('For') }}
23 </th>
24 <th ng-click="$ctrl.sortBy('display_name.length')">
25 <i class="crm-i fa-sort disabled" ng-if="$ctrl.sortField !== 'display_name.length'"></i>
26 <i class="crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if="$ctrl.sortField === 'display_name.length'"></i>
27 {{:: ts('Displays') }}
28 </th>
29 <th ng-click="$ctrl.sortBy('groups[0]')">
30 <i class="crm-i fa-sort disabled" ng-if="$ctrl.sortField !== 'groups[0]'"></i>
31 <i class="crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if="$ctrl.sortField === 'groups[0]'"></i>
32 {{:: ts('Smart Group') }}
33 </th>
34 <th ng-if="$ctrl.afformEnabled" ng-click="$ctrl.sortBy('afform_count')">
35 <i class="crm-i fa-sort disabled" ng-if="$ctrl.sortField !== 'afform_count'"></i>
36 <i class="crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if="$ctrl.sortField === 'afform_count'"></i>
37 {{:: ts('Forms') }}
38 </th>
39 <th ng-click="$ctrl.sortBy('created_date')">
40 <i class="crm-i fa-sort disabled" ng-if="$ctrl.sortField !== 'created_date'"></i>
41 <i class="crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if="$ctrl.sortField === 'created_date'"></i>
42 {{:: ts('Created') }}
43 </th>
44 <th ng-click="$ctrl.sortBy('modified_date')">
45 <i class="crm-i fa-sort disabled" ng-if="$ctrl.sortField !== 'modified_date'"></i>
46 <i class="crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if="$ctrl.sortField === 'modified_date'"></i>
47 {{:: ts('Last Modified') }}
48 </th>
49 <th></th>
50 </tr>
51 </thead>
52 <tbody>
53 <tr ng-repeat="search in $ctrl.savedSearches | filter:$ctrl.searchFilter | orderBy:$ctrl.sortField:$ctrl.sortDir">
54 <td>{{:: search.label }}</td>
55 <td>{{:: search.entity_title }}</td>
56 <td>
57 <div class="btn-group">
58 <button type="button" disabled ng-if="!search.display_name" class="btn btn-xs dropdown-toggle btn-primary-outline">
59 {{:: ts('0 Displays') }}
60 </button>
61 <button type="button" ng-if="search.display_name" class="btn btn-xs dropdown-toggle btn-primary-outline" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
62 {{:: search.display_name.length === 1 ? ts('1 Display') : ts('%1 Displays', {1: search.display_name.length}) }} <span class="caret"></span>
63 </button>
64 <ul class="dropdown-menu" ng-if=":: search.display_name.length">
65 <li ng-repeat="display_name in search.display_name">
66 <a href="{{:: $ctrl.searchPath + '#/display/' + search.name + '/' + display_name }}" target="_blank">
67 <i class="fa {{:: search.display_icon[$index] }}"></i>
68 {{:: search.display_label[$index] }}
69 </a>
70 </li>
71 </ul>
72 </div>
73 </td>
74 <td>{{:: search.groups.join(', ') }}</td>
75 <td ng-if="::$ctrl.afformEnabled">
76 <div class="btn-group">
77 <button type="button" ng-click="$ctrl.loadAfforms()" ng-if="search.display_name" class="btn btn-xs dropdown-toggle btn-primary-outline" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
78 {{ $ctrl.afforms ? (search.afform_count === 1 ? ts('1 Form') : ts('%1 Forms', {1: search.afform_count})) : ts('Forms...') }}
79 <span class="caret"></span>
80 </button>
81 <ul class="dropdown-menu">
82 <li ng-repeat="display_name in search.display_name" ng-if="::$ctrl.afformAdminEnabled">
83 <a href="{{:: $ctrl.afformPath + '#/create/search/' + search.name + '.' + display_name }}">
84 <i class="fa fa-plus"></i> {{:: ts('Create form for %1', {1: search.display_label[$index]}) }}
85 </a>
86 </li>
87 <li class="divider" role="separator" ng-if="::$ctrl.afformAdminEnabled"></li>
88 <li ng-if="!search.afform_count" class="disabled">
89 <a href>
90 <i ng-if="!$ctrl.afforms" class="crm-i fa-spinner fa-spin"></i>
91 <em ng-if="$ctrl.afforms && !$ctrl.afforms[search.name]">{{:: ts('None Found') }}</em>
92 </a>
93 </li>
94 <li ng-if="$ctrl.afforms" ng-repeat="afform in $ctrl.afforms[search.name]" title="{{:: ts('Edit form') }}">
95 <a href="{{:: $ctrl.afformPath + '#/edit/' + afform.name }}">
96 <i class="crm-i fa-pencil-square-o"></i>
97 {{:: afform.title }}
98 </a>
99 </li>
100 </ul>
101 </div>
102 </td>
103 <td title="{{:: formatDate(search.created_date, null, true) }}">
104 {{:: search['created.display_name'] ? ts('%1 by %2', {1: formatDate(search.created_date), 2: search['created.display_name']}) : formatDate(search.created_date) }}
105 </td>
106 <td title="{{:: formatDate(search.modified_date, null, true) }}">
107 {{:: search['modified.display_name'] ? ts('%1 by %2', {1: formatDate(search.modified_date), 2: search['modified.display_name']}) : formatDate(search.modified_date) }}
108 </td>
109 <td class="text-right">
110 <a class="btn btn-xs btn-default" href="#/edit/{{:: search.id }}">{{:: ts('Edit') }}</a>
111 <a class="btn btn-xs btn-default" href="#/create/{{:: search.api_entity + '?params=' + $ctrl.encode(search.api_params) }}">{{:: ts('Clone') }}</a>
112 <a href class="btn btn-xs btn-danger" crm-confirm="{type: 'delete', obj: search}" on-yes="$ctrl.deleteSearch(search)">{{:: ts('Delete') }}</a>
113 </td>
114 </tr>
115 <tr ng-if="$ctrl.savedSearches.length === 0">
116 <td colspan="9">
117 <p class="messages status no-popup text-center">
118 {{:: ts('No saved searches.')}}
119 </p>
120 </td>
121 </tr>
122 </tbody>
123 </table>
124 </div>