1 <div class=
"dataTables_wrapper">
3 <div *
ngIf=
"onlyActionHeader"
4 class=
"dataTables_header clearfix">
5 <div class=
"cd-datatable-actions">
6 <ng-content select=
".only-table-actions"></ng-content>
9 <div class=
"dataTables_header clearfix"
12 <div class=
"cd-datatable-actions">
13 <ng-content select=
".table-actions"></ng-content>
17 <!-- column filters -->
18 <div *
ngIf=
"columnFilters.length !== 0"
19 class=
"btn-group widget-toolbar">
21 placement=
"bottom-right"
22 class=
"tc_filter_name">
23 <button ngbDropdownToggle
24 class=
"btn btn-light">
25 <i [ngClass]=
"[icons.large, icons.filter]"></i>
26 {{ selectedFilter.column.name }}
29 <ng-container *
ngFor=
"let filter of columnFilters">
30 <button ngbDropdownItem
31 (click)=
"onSelectFilter(filter); false">{{ filter.column.name }}
</button>
37 placement=
"bottom-right"
38 class=
"tc_filter_option">
39 <button ngbDropdownToggle
41 [class.disabled]=
"selectedFilter.options.length === 0">
42 {{ selectedFilter.value ? selectedFilter.value.formatted: 'Any' }}
45 <ng-container *
ngFor=
"let option of selectedFilter.options">
46 <button ngbDropdownItem
47 (click)=
"onChangeFilter(selectedFilter, option); false">
48 {{ option.formatted }}
49 <i *
ngIf=
"selectedFilter.value !== undefined && (selectedFilter.value.raw === option.raw)"
50 [ngClass]=
"[icons.check]"></i>
56 <!-- end column filters -->
59 <div class=
"input-group search"
61 <span class=
"input-group-prepend">
62 <span class=
"input-group-text">
63 <i [ngClass]=
"[icons.search]"></i>
66 <input class=
"form-control"
69 (keyup)=
"updateFilter()">
70 <div class=
"input-group-append">
73 (click)=
"onClearSearch()">
74 <i class=
"icon-prepend {{ icons.destroy }}"></i>
80 <!-- pagination limit -->
81 <div class=
"input-group dataTables_paginate"
83 <input class=
"form-control"
87 [value]=
"userConfig.limit"
88 (click)=
"setLimit($event)"
89 (keyup)=
"setLimit($event)"
90 (blur)=
"setLimit($event)">
92 <!-- end pagination limit-->
94 <!-- show hide columns -->
95 <div class=
"widget-toolbar">
99 <button ngbDropdownToggle
100 class=
"btn btn-light tc_columnBtn">
101 <i [ngClass]=
"[icons.large, icons.table]"></i>
103 <div ngbDropdownMenu
>
104 <ng-container *
ngFor=
"let column of columns">
105 <button ngbDropdownItem
106 *
ngIf=
"column.name !== ''"
107 (click)=
"toggleColumn(column); false;">
108 <div class=
"custom-control custom-checkbox py-0">
109 <input class=
"custom-control-input"
113 [checked]=
"!column.isHidden">
114 <label class=
"custom-control-label"
115 [for]=
"column.prop">{{ column.name }}
</label>
122 <!-- end show hide columns -->
124 <!-- refresh button -->
125 <div class=
"widget-toolbar tc_refreshBtn"
126 *
ngIf=
"fetchData.observers.length > 0">
128 <button type=
"button"
129 [class]=
"'btn btn-' + status.type"
130 [ngbTooltip]=
"status.msg"
131 (click)=
"refreshBtn()">
132 <i [ngClass]=
"[icons.large, icons.refresh]"
133 [class.fa-spin]=
"updating || loadingIndicator"></i>
136 <!-- end refresh button -->
138 <div class=
"dataTables_header clearfix"
139 *
ngIf=
"toolHeader && columnFiltered">
140 <!-- filter chips for column filters -->
141 <div class=
"filter-chips">
142 <span *
ngFor=
"let filter of columnFilters">
143 <span *
ngIf=
"filter.value"
144 class=
"badge badge-info mr-2">
145 <span class=
"mr-2">{{ filter.column.name }}: {{ filter.value.formatted }}
</span>
146 <a class=
"badge-remove"
147 (click)=
"onChangeFilter(filter); false">
148 <i [ngClass]=
"[icons.destroy]"
149 aria-hidden=
"true"></i>
153 <a class=
"tc_clearSelections"
155 (click)=
"onClearFilters(); false">
156 <ng-container i18n
>Clear filters
</ng-container>
159 <!-- end filter chips for column filters -->
161 <ngx-datatable #table
162 class=
"bootstrap cd-datatable"
163 [cssClasses]=
"paginationClasses"
164 [selectionType]=
"selectionType"
165 [selected]=
"selection.selected"
166 (select)=
"onSelect($event)"
167 [sorts]=
"userConfig.sorts"
168 (sort)=
"changeSorting($event)"
169 [columns]=
"tableColumns"
170 [columnMode]=
"columnMode"
172 [rowClass]=
"getRowClass()"
173 [headerHeight]=
"header ? 'auto' : 0"
174 [footerHeight]=
"footer ? 'auto' : 0"
175 [limit]=
"userConfig.limit > 0 ? userConfig.limit : undefined"
176 [loadingIndicator]=
"loadingIndicator"
177 [rowIdentity]=
"rowIdentity()"
178 [rowHeight]=
"'auto'">
180 <!-- Row Detail Template -->
181 <ngx-datatable-row-detail rowHeight=
"auto"
183 <ng-template let-row=
"row"
184 let-expanded=
"expanded"
185 ngx-datatable-row-detail-template
>
186 <!-- Table Details -->
187 <ng-content select=
"[cdTableDetail]"></ng-content>
189 </ngx-datatable-row-detail>
191 <ngx-datatable-footer>
192 <ng-template ngx-datatable-footer-template
193 let-rowCount=
"rowCount"
194 let-pageSize=
"pageSize"
195 let-selectedCount=
"selectedCount"
196 let-curPage=
"curPage"
198 let-isVisible=
"isVisible">
199 <div class=
"page-count">
200 <span *
ngIf=
"selectionType">
201 {{ selectedCount }}
<ng-container i18n=
"X selected">selected
</ng-container> /
203 <span *
ngIf=
"rowCount != data?.length">
204 {{ rowCount }}
<ng-container i18n=
"X found">found
</ng-container> /
207 {{ data?.length ||
0 }}
<ng-container i18n=
"X total">total
</ng-container>
210 <datatable-pager [pagerLeftArrowIcon]=
"paginationClasses.pagerLeftArrow"
211 [pagerRightArrowIcon]=
"paginationClasses.pagerRightArrow"
212 [pagerPreviousIcon]=
"paginationClasses.pagerPrevious"
213 [pagerNextIcon]=
"paginationClasses.pagerNext"
217 [hidden]=
"!((rowCount / pageSize) > 1)"
218 (change)=
"table.onFooterPage($event)">
221 </ngx-datatable-footer>
225 <!-- cell templates that can be accessed from outside -->
226 <ng-template #tableCellBoldTpl
228 <strong>{{ value }}
</strong>
231 <ng-template #sparklineTpl
234 <cd-sparkline [data]=
"value"
235 [isBinary]=
"row.cdIsBinary"></cd-sparkline>
238 <ng-template #routerLinkTpl
241 <a [routerLink]=
"[row.cdLink]"
242 [queryParams]=
"row.cdParams">{{ value }}
</a>
245 <ng-template #checkIconTpl
247 <i [ngClass]=
"[icons.check]"
248 [hidden]=
"!(value | boolean)"></i>
251 <ng-template #perSecondTpl
254 {{ value | dimless }} /s
257 <ng-template #executingTpl
261 <i [ngClass]=
"[icons.spinner, icons.spin]"
262 *
ngIf=
"row.cdExecuting"></i>
263 <span [ngClass]=
"column?.customTemplateConfig?.valueClass">
266 <span *
ngIf=
"row.cdExecuting"
267 [ngClass]=
"column?.customTemplateConfig?.executingClass ? column.customTemplateConfig.executingClass : 'text-muted italic'">({{ row.cdExecuting }})
</span>
270 <ng-template #classAddingTpl
272 <span class=
"{{ value | pipeFunction:useCustomClass:this }}">{{ value }}
</span>
275 <ng-template #badgeTpl
278 <span *
ngFor=
"let item of (value | array); last as last">
280 [ngClass]=
"(column?.customTemplateConfig?.map && column?.customTemplateConfig?.map[item]?.class) ? column.customTemplateConfig.map[item].class : (column?.customTemplateConfig?.class ? column.customTemplateConfig.class : 'badge-primary')"
281 *
ngIf=
"(column?.customTemplateConfig?.map && column?.customTemplateConfig?.map[item]?.value) ? column.customTemplateConfig.map[item].value : column?.customTemplateConfig?.prefix ? column.customTemplateConfig.prefix + item : item">
282 {{ (column?.customTemplateConfig?.map && column?.customTemplateConfig?.map[item]?.value) ? column.customTemplateConfig.map[item].value : column?.customTemplateConfig?.prefix ? column.customTemplateConfig.prefix + item : item }}
284 <span *
ngIf=
"!last"> </span>
291 <span>{{ value | map:column?.customTemplateConfig }}
</span>
294 <ng-template #truncateTpl
297 <span data-toggle=
"tooltip"
298 [title]=
"value">{{ value | truncate:column?.customTemplateConfig?.length:column?.customTemplateConfig?.omission }}
</span>
301 <ng-template #rowDetailsTpl
303 let-isExpanded=
"expanded"
304 ngx-datatable-cell-template
>
305 <a href=
"javascript:void(0)"
306 [class.expand-collapse-icon-right]=
"!isExpanded"
307 [class.expand-collapse-icon-down]=
"isExpanded"
308 class=
"expand-collapse-icon tc_expand-collapse"
309 title=
"Expand/Collapse Row"
311 (click)=
"toggleExpandRow(row, isExpanded, $event)">