1 <div *ngIf="col.isFilterable" class="eg-grid-filter-control">
2 <div [ngSwitch]="col.datatype">
3 <div *ngSwitchCase="'link'">
4 <div class="input-group">
5 <div ngbDropdown class="d-inline-block" autoClose="outside" placement="bottom-left" [ngClass]="{'eg-grid-col-is-filtered' : col.isFiltered}">
6 <button ngbDropdownToggle class="form-control btn btn-sm btn-outline-dark text-button"><span class="material-icons mat-icon-in-button">filter_list</span></button>
7 <div ngbDropdownMenu class="eg-grid-filter-menu">
8 <div class="dropdown-item">
9 <div style="padding-top: 2px;">
10 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); applyFilter(col)" i18n>Apply filter</button>
11 <span style="padding-left: 2px;"></span>
12 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); clearFilter(col)" i18n>Clear filter</button>
17 <eg-combobox [idlClass]="col.idlFieldDef.class" (onChange)="applyLinkFilter($event, col)" placeholder="Enter value to filter by"></eg-combobox>
20 <div *ngSwitchCase="'bool'">
21 <div class="input-group">
22 <div ngbDropdown class="d-inline-block" autoClose="outside" placement="bottom-left" [ngClass]="{'eg-grid-col-is-filtered' : col.isFiltered}">
23 <button ngbDropdownToggle class="form-control btn btn-sm btn-outline-dark text-button"><span class="material-icons mat-icon-in-button">filter_list</span></button>
24 <div ngbDropdownMenu class="eg-grid-filter-menu">
25 <div class="dropdown-item">
26 <div style="padding-top: 2px;">
27 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); applyBooleanFilter(col)" i18n>Apply filter</button>
28 <span style="padding-left: 2px;"></span>
29 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); clearFilter(col)" i18n>Clear filter</button>
34 <select class="custom-select" [(ngModel)]="col.filterValue" (change)="applyBooleanFilter(col)">
35 <option value="" i18n>Any</option>
36 <option value="t" i18n>True</option>
37 <option value="f" i18n>False</option>
41 <div *ngSwitchCase="'text'">
42 <div class="input-group">
43 <div ngbDropdown class="d-inline-block" autoClose="outside" placement="bottom-left" [ngClass]="{'eg-grid-col-is-filtered' : col.isFiltered}">
44 <button ngbDropdownToggle class="form-control btn btn-sm btn-outline-dark text-button"><span class="material-icons mat-icon-in-button">filter_list</span></button>
45 <div ngbDropdownMenu class="eg-grid-filter-menu">
46 <div class="dropdown-item">
47 <label for="eg-filter-op-select-{{col.name}}" i18n>Operator</label>
48 <select id="eg-filter-op-select-{{col.name}}" class="form-control" [(ngModel)]="col.filterOperator" (change)="operatorChanged(col)">
49 <option value="=" i18n>Is exactly</option>
50 <option value="!=" i18n>Is not</option>
51 <option value="like" i18n>Contains</option>
52 <option value="not like" i18n>Does not contain</option>
53 <option value="startswith" i18n>Starts with</option>
54 <option value="endswith" i18n>Ends with</option>
55 <option value="not null" i18n>Exists</option>
56 <option value="null" i18n>Does not exist</option>
57 <option value="<" i18n>Is less than</option>
58 <option value=">" i18n>Is greater than</option>
59 <option value="<=" i18n>Is less than or equal to</option>
60 <option value=">=" i18n>Is greater than or equal to</option>
62 <div style="padding-top: 2px;">
63 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); applyFilter(col)" i18n>Apply filter</button>
64 <span style="padding-left: 2px;"></span>
65 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); clearFilter(col)" i18n>Clear filter</button>
70 <input type="text" class="form-control" [(ngModel)]="col.filterValue" (keyup.enter)="applyFilter(col)" [disabled]="col.filterInputDisabled" placeholder="Enter value to filter by">
73 <div *ngSwitchCase="'int'">
74 <div class="input-group">
75 <div ngbDropdown class="d-inline-block" autoClose="outside" placement="bottom-left" [ngClass]="{'eg-grid-col-is-filtered' : col.isFiltered}">
76 <button ngbDropdownToggle class="form-control btn btn-sm btn-outline-dark text-button"><span class="material-icons mat-icon-in-button">filter_list</span></button>
77 <div ngbDropdownMenu class="eg-grid-filter-menu">
78 <div class="dropdown-item">
79 <label for="eg-filter-op-select-{{col.name}}" i18n>Operator</label>
80 <select id="eg-filter-op-select-{{col.name}}" class="form-control" [(ngModel)]="col.filterOperator" (change)="operatorChanged(col)">
81 <option value="=" i18n>Is exactly</option>
82 <option value="!=" i18n>Is not</option>
83 <option value="not null" i18n>Exists</option>
84 <option value="null" i18n>Does not exist</option>
85 <option value="<" i18n>Is less than</option>
86 <option value=">" i18n>Is greater than</option>
87 <option value="<=" i18n>Is less than or equal to</option>
88 <option value=">=" i18n>Is greater than or equal to</option>
90 <div style="padding-top: 2px;">
91 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); applyFilter(col)" i18n>Apply filter</button>
92 <span style="padding-left: 2px;"></span>
93 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); clearFilter(col)" i18n>Clear filter</button>
98 <input type="number" min="0" step="1" class="form-control" [(ngModel)]="col.filterValue" (keyup.enter)="applyFilter(col)" [disabled]="col.filterInputDisabled">
101 <div *ngSwitchCase="'id'">
102 <div class="input-group">
103 <div ngbDropdown class="d-inline-block" autoClose="outside" placement="bottom-left" [ngClass]="{'eg-grid-col-is-filtered' : col.isFiltered}">
104 <button ngbDropdownToggle class="form-control btn btn-sm btn-outline-dark text-button"><span class="material-icons mat-icon-in-button">filter_list</span></button>
105 <div ngbDropdownMenu class="eg-grid-filter-menu">
106 <div class="dropdown-item">
107 <label for="eg-filter-op-select-{{col.name}}" i18n>Operator</label>
108 <select id="eg-filter-op-select-{{col.name}}" class="form-control" [(ngModel)]="col.filterOperator" (change)="operatorChanged(col)">
109 <option value="=" i18n>Is exactly</option>
110 <option value="!=" i18n>Is not</option>
111 <option value="not null" i18n>Exists</option>
112 <option value="null" i18n>Does not exist</option>
113 <option value="<" i18n>Is less than</option>
114 <option value=">" i18n>Is greater than</option>
115 <option value="<=" i18n>Is less than or equal to</option>
116 <option value=">=" i18n>Is greater than or equal to</option>
118 <div style="padding-top: 2px;">
119 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); applyFilter(col)" i18n>Apply filter</button>
120 <span style="padding-left: 2px;"></span>
121 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); clearFilter(col)" i18n>Clear filter</button>
126 <input type="number" min="0" step="1" class="form-control" [(ngModel)]="col.filterValue" (keyup.enter)="applyFilter(col)" [disabled]="col.filterInputDisabled">
129 <div *ngSwitchCase="'float'">
130 <div class="input-group">
131 <div ngbDropdown class="d-inline-block" autoClose="outside" placement="bottom-left" [ngClass]="{'eg-grid-col-is-filtered' : col.isFiltered}">
132 <button ngbDropdownToggle class="form-control btn btn-sm btn-outline-dark text-button"><span class="material-icons mat-icon-in-button">filter_list</span></button>
133 <div ngbDropdownMenu class="eg-grid-filter-menu">
134 <div class="dropdown-item">
135 <label for="eg-filter-op-select-{{col.name}}" i18n>Operator</label>
136 <select id="eg-filter-op-select-{{col.name}}" class="form-control" [(ngModel)]="col.filterOperator" (change)="operatorChanged(col)">
137 <option value="=" i18n>Is exactly</option>
138 <option value="!=" i18n>Is not</option>
139 <option value="not null" i18n>Exists</option>
140 <option value="null" i18n>Does not exist</option>
141 <option value="<" i18n>Is less than</option>
142 <option value=">" i18n>Is greater than</option>
143 <option value="<=" i18n>Is less than or equal to</option>
144 <option value=">=" i18n>Is greater than or equal to</option>
146 <div style="padding-top: 2px;">
147 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); applyFilter(col)" i18n>Apply filter</button>
148 <span style="padding-left: 2px;"></span>
149 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); clearFilter(col)" i18n>Clear filter</button>
154 <input type="number" class="form-control" [(ngModel)]="col.filterValue" (keyup.enter)="applyFilter(col)" [disabled]="col.filterInputDisabled">
157 <div *ngSwitchCase="'money'">
158 <div class="input-group">
159 <div ngbDropdown class="d-inline-block" autoClose="outside" placement="bottom-left" [ngClass]="{'eg-grid-col-is-filtered' : col.isFiltered}">
160 <button ngbDropdownToggle class="form-control btn btn-sm btn-outline-dark text-button"><span class="material-icons mat-icon-in-button">filter_list</span></button>
161 <div ngbDropdownMenu class="eg-grid-filter-menu">
162 <div class="dropdown-item">
163 <label for="eg-filter-op-select-{{col.name}}" i18n>Operator</label>
164 <select id="eg-filter-op-select-{{col.name}}" class="form-control" [(ngModel)]="col.filterOperator" (change)="operatorChanged(col)">
165 <option value="=" i18n>Is exactly</option>
166 <option value="!=" i18n>Is not</option>
167 <option value="not null" i18n>Exists</option>
168 <option value="null" i18n>Does not exist</option>
169 <option value="<" i18n>Is less than</option>
170 <option value=">" i18n>Is greater than</option>
171 <option value="<=" i18n>Is less than or equal to</option>
172 <option value=">=" i18n>Is greater than or equal to</option>
174 <div style="padding-top: 2px;">
175 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); applyFilter(col)" i18n>Apply filter</button>
176 <span style="padding-left: 2px;"></span>
177 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); clearFilter(col)" i18n>Clear filter</button>
182 <input type="number" step="0.01" class="form-control" [(ngModel)]="col.filterValue" (keyup.enter)="applyFilter(col)" [disabled]="col.filterInputDisabled">
185 <div *ngSwitchCase="'timestamp'">
186 <div class="input-group">
187 <div ngbDropdown class="d-inline-block" autoClose="outside" placement="bottom-left" [ngClass]="{'eg-grid-col-is-filtered' : col.isFiltered}">
188 <button ngbDropdownToggle class="form-control btn btn-sm btn-outline-dark text-button"><span class="material-icons mat-icon-in-button">filter_list</span></button>
189 <div ngbDropdownMenu class="eg-grid-filter-menu">
190 <div class="dropdown-item">
191 <label for="eg-filter-op-select-{{col.name}}" i18n>Operator</label>
192 <select id="eg-filter-op-select-{{col.name}}" class="form-control" [(ngModel)]="col.filterOperator" (change)="operatorChanged(col)">
193 <option value="=" i18n>Is exactly</option>
194 <option value="!=" i18n>Is not</option>
195 <option value="not null" i18n>Exists</option>
196 <option value="null" i18n>Does not exist</option>
197 <option value="<" i18n>Is less than</option>
198 <option value=">" i18n>Is greater than</option>
199 <option value="<=" i18n>Is less than or equal to</option>
200 <option value=">=" i18n>Is greater than or equal to</option>
201 <option value="between" i18n>Between</option>
203 <div style="padding-top: 2px;">
204 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); applyDateFilter(datesel.currentAsYmd(), col, dateendsel.currentAsYmd())" i18n>Apply filter</button>
205 <span style="padding-left: 2px;"></span>
206 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); clearFilter(col)" i18n>Clear filter</button>
211 <eg-date-select [initialYmd]="col.filterValue" (onChangeAsYmd)="applyDateFilter($event, col, dateendsel.currentAsYmd())" (onCleared)="clearDateFilter(col)"
212 [disabled]="col.filterInputDisabled" #datesel></eg-date-select>
213 <div [hidden]="col.filterOperator !== 'between'" class="form-inline form-group">
214 <label for="eg-filter-end-date-select-{{col.name}}" style="width: 3em;" i18n>and</label>
215 <eg-date-select [hidden]="col.filterOperator !== 'between'" (onChangeAsYmd)="applyDateFilter(datesel.currentAsYmd(), col, $event)"
216 [required]="col.filterOperator == 'between'" #dateendsel></eg-date-select>
220 <div *ngSwitchCase="'org_unit'">
221 <div class="input-group">
222 <div ngbDropdown class="d-inline-block" autoClose="outside" placement="bottom-left" [ngClass]="{'eg-grid-col-is-filtered' : col.isFiltered}">
223 <button ngbDropdownToggle class="form-control btn btn-sm btn-outline-dark text-button"><span class="material-icons mat-icon-in-button">filter_list</span></button>
224 <div ngbDropdownMenu class="eg-grid-filter-menu">
225 <div class="dropdown-item">
226 <label for="eg-filter-op-select-{{col.name}}" i18n>Operator</label>
227 <select id="eg-filter-op-select-{{col.name}}" class="form-control" [(ngModel)]="col.filterOperator" (change)="operatorChanged(col)">
228 <option value="=" i18n>Is (or includes)</option>
229 <option value="!=" i18n>Is not (or excludes)</option>
232 <div class="dropdown-item">
233 <div class="form-check">
234 <input type="checkbox"
235 [(ngModel)]="col.filterIncludeOrgAncestors"
236 class="form-check-input" id="include-ancestors">
237 <label class="form-check-label" for="include-ancestors" i18n>+ Ancestors</label>
239 <div class="form-check">
240 <input type="checkbox"
241 [(ngModel)]="col.filterIncludeOrgDescendants"
242 class="form-check-input" id="include-descendants">
243 <label class="form-check-label" for="include-descendants" i18n>+ Descendants</label>
245 <div style="padding-top: 2px;">
246 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); applyOrgFilter(ousel.selectedOrg(), col)" i18n>Apply filter</button>
247 <span style="padding-left: 2px;"></span>
248 <button class="btn btn-sm btn-outline-dark" (click)="closeDropdown(); clearFilter(col)" i18n>Clear filter</button>
253 <eg-org-select [applyOrgId]="col.filterValue" (onChange)="applyOrgFilter($event, col)" placeholder="Enter library to filter by" #ousel></eg-org-select>
256 <div *ngSwitchDefault>I don't know how to filter {{col.name}} - {{col.datatype}}</div>
258 <span *ngIf="col.datatype !== 'org_unit'" i18n class="eg-grid-filter-operator">Operator:
259 <span [ngSwitch]="col.filterOperator">
260 <span *ngSwitchCase="'='" i18n>Is exactly</span>
261 <span *ngSwitchCase="'!='" i18n>Is not</span>
262 <span *ngSwitchCase="'>'" i18n>Is greater than</span>
263 <span *ngSwitchCase="'>='" i18n>Is greater than or equal to</span>
264 <span *ngSwitchCase="'<'" i18n>Is less than</span>
265 <span *ngSwitchCase="'<='" i18n>Is less than or equal to</span>
266 <span *ngSwitchCase="'like'" i18n>Contains</span>
267 <span *ngSwitchCase="'not like'" i18n>Does not contain</span>
268 <span *ngSwitchCase="'startswith'" i18n>Starts with</span>
269 <span *ngSwitchCase="'endswith'" i18n>Ends with</span>
270 <span *ngSwitchCase="'null'" i18n>Does not exist</span>
271 <span *ngSwitchCase="'not null'" i18n>Exists</span>
272 <span *ngSwitchCase="'between'" i18n>Between</span>
275 <span *ngIf="col.datatype == 'org_unit'" i18n class="eg-grid-filter-operator">Operator:
276 <span [ngSwitch]="col.filterOperator">
277 <span *ngSwitchCase="'='" i18n>Is (or includes)</span>
278 <span *ngSwitchCase="'!='" i18n>Is not (or excludes)</span>