@universis/ngx-tables 6.0.0 → 15.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/actions/table.actions.mjs +27 -0
- package/esm2020/lib/advanced-aggregator.mjs +2 -0
- package/esm2020/lib/components/add-items/add-items.component.mjs +138 -0
- package/esm2020/lib/components/advanced-aggregator/advanced-aggregator.component.mjs +126 -0
- package/esm2020/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.mjs +53 -0
- package/esm2020/lib/components/advanced-list/advanced-list.component.mjs +184 -0
- package/esm2020/lib/components/advanced-row-action/advanced-row-action.component.mjs +178 -0
- package/esm2020/lib/components/advanced-search-form/advanced-search-form.component.mjs +154 -0
- package/esm2020/lib/components/advanced-select/advanced-select.component.mjs +42 -0
- package/esm2020/lib/components/advanced-select/advanced-select.service.mjs +38 -0
- package/esm2020/lib/components/advanced-table/advanced-filter-value-provider.service.mjs +31 -0
- package/esm2020/lib/components/advanced-table/advanced-table-resolvers.mjs +40 -0
- package/esm2020/lib/components/advanced-table/advanced-table-search-base.mjs +31 -0
- package/esm2020/lib/components/advanced-table/advanced-table-search.component.mjs +525 -0
- package/esm2020/lib/components/advanced-table/advanced-table-settings.component.mjs +108 -0
- package/esm2020/lib/components/advanced-table/advanced-table.component.mjs +1599 -0
- package/esm2020/lib/components/advanced-table/advanced-table.formatters.interface.mjs +17 -0
- package/esm2020/lib/components/advanced-table/advanced-table.formatters.mjs +429 -0
- package/esm2020/lib/components/advanced-table/advanced-table.interfaces.mjs +2 -0
- package/esm2020/lib/components/advanced-table-modal/advanced-table-modal-base.component.mjs +420 -0
- package/esm2020/lib/components/column-selector/column-selector.component.mjs +205 -0
- package/esm2020/lib/components/column-selector/column-selector.service.mjs +45 -0
- package/esm2020/lib/components/table-simple-header/table-simple-header.component.mjs +52 -0
- package/esm2020/lib/directives/advance-search-state.directive.mjs +111 -0
- package/esm2020/lib/directives/advance-table-state.directive.mjs +63 -0
- package/esm2020/lib/directives/advanced-search-router-state.directive.mjs +64 -0
- package/esm2020/lib/directives/advanced-table-editor.directive.mjs +154 -0
- package/esm2020/lib/directives/btnexp.directive.mjs +222 -0
- package/esm2020/lib/i18n/tables.el.mjs +129 -0
- package/esm2020/lib/i18n/tables.en.mjs +128 -0
- package/esm2020/lib/pipes/advanced-aggregator.pipe.mjs +38 -0
- package/esm2020/lib/pipes/advansed-aggregator-list-title-parse.pipe.mjs +45 -0
- package/esm2020/lib/reducers/index.mjs +37 -0
- package/esm2020/lib/services/advanced-aggregator/advanced-aggregator.service.mjs +119 -0
- package/esm2020/lib/tables.activated-table.service.mjs +46 -0
- package/esm2020/lib/tables.module.mjs +218 -0
- package/esm2020/public_api.mjs +37 -0
- package/esm2020/universis-ngx-tables.mjs +5 -0
- package/fesm2015/universis-ngx-tables.mjs +5642 -0
- package/fesm2015/universis-ngx-tables.mjs.map +1 -0
- package/fesm2020/universis-ngx-tables.mjs +5609 -0
- package/fesm2020/universis-ngx-tables.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/actions/table.actions.d.ts +4 -4
- package/lib/components/add-items/add-items.component.d.ts +5 -5
- package/lib/components/advanced-aggregator/advanced-aggregator.component.d.ts +10 -4
- package/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.d.ts +4 -1
- package/lib/components/advanced-list/advanced-list.component.d.ts +6 -3
- package/lib/components/advanced-row-action/advanced-row-action.component.d.ts +9 -7
- package/lib/components/advanced-search-form/advanced-search-form.component.d.ts +4 -1
- package/lib/components/advanced-select/advanced-select.component.d.ts +3 -1
- package/lib/components/advanced-select/advanced-select.service.d.ts +3 -0
- package/lib/components/advanced-table/advanced-filter-value-provider.service.d.ts +3 -0
- package/lib/components/advanced-table/advanced-table-resolvers.d.ts +5 -0
- package/lib/components/advanced-table/advanced-table-search-base.d.ts +6 -2
- package/lib/components/advanced-table/advanced-table-search.component.d.ts +6 -2
- package/lib/components/advanced-table/advanced-table-settings.component.d.ts +3 -0
- package/lib/components/advanced-table/advanced-table.component.d.ts +21 -12
- package/lib/components/advanced-table-modal/advanced-table-modal-base.component.d.ts +4 -1
- package/lib/components/column-selector/column-selector.component.d.ts +5 -2
- package/lib/components/column-selector/column-selector.service.d.ts +3 -0
- package/lib/components/table-simple-header/table-simple-header.component.d.ts +5 -0
- package/lib/directives/advance-search-state.directive.d.ts +3 -0
- package/lib/directives/advance-table-state.directive.d.ts +3 -0
- package/lib/directives/advanced-search-router-state.directive.d.ts +3 -0
- package/lib/directives/advanced-table-editor.directive.d.ts +4 -1
- package/lib/directives/btnexp.directive.d.ts +3 -0
- package/lib/i18n/tables.el.d.ts +107 -107
- package/lib/i18n/tables.en.d.ts +106 -106
- package/lib/pipes/advanced-aggregator.pipe.d.ts +4 -1
- package/lib/pipes/advansed-aggregator-list-title-parse.pipe.d.ts +4 -1
- package/lib/reducers/index.d.ts +5 -3
- package/lib/services/advanced-aggregator/advanced-aggregator.service.d.ts +3 -0
- package/lib/tables.activated-table.service.d.ts +5 -1
- package/lib/tables.module.d.ts +36 -0
- package/package.json +44 -42
- package/public_api.d.ts +3 -0
- package/bundles/universis-ngx-tables.umd.js +0 -8161
- package/bundles/universis-ngx-tables.umd.js.map +0 -1
- package/bundles/universis-ngx-tables.umd.min.js +0 -2
- package/bundles/universis-ngx-tables.umd.min.js.map +0 -1
- package/esm2015/lib/actions/table.actions.js +0 -69
- package/esm2015/lib/advanced-aggregator.js +0 -6
- package/esm2015/lib/components/add-items/add-items.component.js +0 -209
- package/esm2015/lib/components/advanced-aggregator/advanced-aggregator.component.js +0 -190
- package/esm2015/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +0 -80
- package/esm2015/lib/components/advanced-list/advanced-list.component.js +0 -245
- package/esm2015/lib/components/advanced-row-action/advanced-row-action.component.js +0 -265
- package/esm2015/lib/components/advanced-search-form/advanced-search-form.component.js +0 -213
- package/esm2015/lib/components/advanced-select/advanced-select.component.js +0 -97
- package/esm2015/lib/components/advanced-select/advanced-select.service.js +0 -57
- package/esm2015/lib/components/advanced-table/advanced-filter-value-provider.service.js +0 -58
- package/esm2015/lib/components/advanced-table/advanced-table-resolvers.js +0 -72
- package/esm2015/lib/components/advanced-table/advanced-table-search-base.js +0 -49
- package/esm2015/lib/components/advanced-table/advanced-table-search.component.js +0 -718
- package/esm2015/lib/components/advanced-table/advanced-table-settings.component.js +0 -191
- package/esm2015/lib/components/advanced-table/advanced-table.component.js +0 -1973
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.interface.js +0 -53
- package/esm2015/lib/components/advanced-table/advanced-table.formatters.js +0 -642
- package/esm2015/lib/components/advanced-table/advanced-table.interfaces.js +0 -6
- package/esm2015/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +0 -553
- package/esm2015/lib/components/column-selector/column-selector.component.js +0 -296
- package/esm2015/lib/components/column-selector/column-selector.service.js +0 -64
- package/esm2015/lib/components/table-simple-header/table-simple-header.component.js +0 -76
- package/esm2015/lib/directives/advance-search-state.directive.js +0 -147
- package/esm2015/lib/directives/advance-table-state.directive.js +0 -86
- package/esm2015/lib/directives/advanced-search-router-state.directive.js +0 -90
- package/esm2015/lib/directives/advanced-table-editor.directive.js +0 -186
- package/esm2015/lib/directives/btnexp.directive.js +0 -272
- package/esm2015/lib/i18n/tables.el.js +0 -133
- package/esm2015/lib/i18n/tables.en.js +0 -132
- package/esm2015/lib/pipes/advanced-aggregator.pipe.js +0 -39
- package/esm2015/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +0 -58
- package/esm2015/lib/reducers/index.js +0 -63
- package/esm2015/lib/services/advanced-aggregator/advanced-aggregator.service.js +0 -142
- package/esm2015/lib/tables.activated-table.service.js +0 -85
- package/esm2015/lib/tables.module.js +0 -163
- package/esm2015/public_api.js +0 -37
- package/esm2015/universis-ngx-tables.js +0 -13
- package/esm5/lib/actions/table.actions.js +0 -64
- package/esm5/lib/advanced-aggregator.js +0 -6
- package/esm5/lib/components/add-items/add-items.component.js +0 -243
- package/esm5/lib/components/advanced-aggregator/advanced-aggregator.component.js +0 -265
- package/esm5/lib/components/advanced-aggregator-list/advanced-aggregator-list.component.js +0 -99
- package/esm5/lib/components/advanced-list/advanced-list.component.js +0 -273
- package/esm5/lib/components/advanced-row-action/advanced-row-action.component.js +0 -288
- package/esm5/lib/components/advanced-search-form/advanced-search-form.component.js +0 -232
- package/esm5/lib/components/advanced-select/advanced-select.component.js +0 -103
- package/esm5/lib/components/advanced-select/advanced-select.service.js +0 -61
- package/esm5/lib/components/advanced-table/advanced-filter-value-provider.service.js +0 -82
- package/esm5/lib/components/advanced-table/advanced-table-resolvers.js +0 -80
- package/esm5/lib/components/advanced-table/advanced-table-search-base.js +0 -59
- package/esm5/lib/components/advanced-table/advanced-table-search.component.js +0 -828
- package/esm5/lib/components/advanced-table/advanced-table-settings.component.js +0 -212
- package/esm5/lib/components/advanced-table/advanced-table.component.js +0 -2145
- package/esm5/lib/components/advanced-table/advanced-table.formatters.interface.js +0 -53
- package/esm5/lib/components/advanced-table/advanced-table.formatters.js +0 -815
- package/esm5/lib/components/advanced-table/advanced-table.interfaces.js +0 -6
- package/esm5/lib/components/advanced-table-modal/advanced-table-modal-base.component.js +0 -555
- package/esm5/lib/components/column-selector/column-selector.component.js +0 -389
- package/esm5/lib/components/column-selector/column-selector.service.js +0 -68
- package/esm5/lib/components/table-simple-header/table-simple-header.component.js +0 -92
- package/esm5/lib/directives/advance-search-state.directive.js +0 -169
- package/esm5/lib/directives/advance-table-state.directive.js +0 -87
- package/esm5/lib/directives/advanced-search-router-state.directive.js +0 -98
- package/esm5/lib/directives/advanced-table-editor.directive.js +0 -244
- package/esm5/lib/directives/btnexp.directive.js +0 -389
- package/esm5/lib/i18n/tables.el.js +0 -133
- package/esm5/lib/i18n/tables.en.js +0 -132
- package/esm5/lib/pipes/advanced-aggregator.pipe.js +0 -65
- package/esm5/lib/pipes/advansed-aggregator-list-title-parse.pipe.js +0 -75
- package/esm5/lib/reducers/index.js +0 -65
- package/esm5/lib/services/advanced-aggregator/advanced-aggregator.service.js +0 -196
- package/esm5/lib/tables.activated-table.service.js +0 -88
- package/esm5/lib/tables.module.js +0 -168
- package/esm5/public_api.js +0 -37
- package/esm5/universis-ngx-tables.js +0 -13
- package/fesm2015/universis-ngx-tables.js +0 -6745
- package/fesm2015/universis-ngx-tables.js.map +0 -1
- package/fesm5/universis-ngx-tables.js +0 -7837
- package/fesm5/universis-ngx-tables.js.map +0 -1
- package/universis-ngx-tables.d.ts +0 -8
- package/universis-ngx-tables.metadata.json +0 -1
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
// tslint:disable-next-line:max-line-length
|
|
2
|
+
import { Component, Input, EventEmitter, ViewEncapsulation, ViewChild } from '@angular/core';
|
|
3
|
+
import { FormControl } from '@angular/forms';
|
|
4
|
+
import { RouterModalOkCancel } from '@universis/common/routing';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/router";
|
|
7
|
+
import * as i2 from "ngx-bootstrap/modal";
|
|
8
|
+
import * as i3 from "@angular/common";
|
|
9
|
+
import * as i4 from "@ngx-translate/core";
|
|
10
|
+
import * as i5 from "@angular/forms";
|
|
11
|
+
import * as i6 from "ngx-pipes";
|
|
12
|
+
export class ColumnSelectorComponent extends RouterModalOkCancel {
|
|
13
|
+
ok() {
|
|
14
|
+
this._changeDetector.detectChanges();
|
|
15
|
+
setTimeout(() => {
|
|
16
|
+
this.changing = true;
|
|
17
|
+
this._modalRef.hide();
|
|
18
|
+
}, 0);
|
|
19
|
+
try {
|
|
20
|
+
this.applyChanges();
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
throw err;
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
this.changing = false;
|
|
27
|
+
}
|
|
28
|
+
this.dismiss.emit('ok');
|
|
29
|
+
return Promise.resolve('ok');
|
|
30
|
+
}
|
|
31
|
+
cancel() {
|
|
32
|
+
this._modalRef.hide();
|
|
33
|
+
this.dismiss.emit('cancel');
|
|
34
|
+
return Promise.resolve('cancel');
|
|
35
|
+
}
|
|
36
|
+
constructor(router, activatedRoute, _modalRef, _changeDetector) {
|
|
37
|
+
super(router, activatedRoute);
|
|
38
|
+
this._modalRef = _modalRef;
|
|
39
|
+
this._changeDetector = _changeDetector;
|
|
40
|
+
this.dismiss = new EventEmitter();
|
|
41
|
+
this.availableColumnsControl = new FormControl();
|
|
42
|
+
this.selectedColumnsControl = new FormControl();
|
|
43
|
+
this.changing = false;
|
|
44
|
+
}
|
|
45
|
+
ngOnChanges(changes) {
|
|
46
|
+
//
|
|
47
|
+
}
|
|
48
|
+
ngOnDestroy() {
|
|
49
|
+
//
|
|
50
|
+
}
|
|
51
|
+
ngOnInit() {
|
|
52
|
+
if (Array.isArray(this.columns)) {
|
|
53
|
+
this.selectedColumns = this.columns.filter((item) => {
|
|
54
|
+
return item.visible;
|
|
55
|
+
}).sort((a, b) => {
|
|
56
|
+
if (a.index < b.index) {
|
|
57
|
+
return -1;
|
|
58
|
+
}
|
|
59
|
+
if (a.index > b.index) {
|
|
60
|
+
return 1;
|
|
61
|
+
}
|
|
62
|
+
return 0;
|
|
63
|
+
}).map((item) => {
|
|
64
|
+
return {
|
|
65
|
+
key: item.key,
|
|
66
|
+
title: item.title
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
applyChanges() {
|
|
72
|
+
if (this.selectedColumns && this.columns) {
|
|
73
|
+
let moveIndex = this.selectedColumns.length - 1;
|
|
74
|
+
for (const column of this.columns) {
|
|
75
|
+
const findIndex = this.selectedColumns.findIndex((item) => {
|
|
76
|
+
return item.key === column.key;
|
|
77
|
+
});
|
|
78
|
+
if (findIndex < 0) {
|
|
79
|
+
column.visible = false;
|
|
80
|
+
moveIndex += 1;
|
|
81
|
+
column.index = moveIndex;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
column.visible = true;
|
|
85
|
+
column.index = findIndex;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
removeColumns() {
|
|
91
|
+
if (this.selectedColumns) {
|
|
92
|
+
const selected = this.selectedColumnsControl.value;
|
|
93
|
+
if (selected.length > 0) {
|
|
94
|
+
for (const value of selected) {
|
|
95
|
+
const findIndex = this.selectedColumns.findIndex((item) => {
|
|
96
|
+
return item.key === value;
|
|
97
|
+
});
|
|
98
|
+
if (findIndex >= 0) {
|
|
99
|
+
this.selectedColumns.splice(findIndex, 1);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// reset column
|
|
103
|
+
this.selectedColumnsControl.reset();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
addColumns() {
|
|
108
|
+
if (this.columns && this.selectedColumns) {
|
|
109
|
+
const selected = this.availableColumnsControl.value;
|
|
110
|
+
if (selected.length > 0) {
|
|
111
|
+
for (const value of selected) {
|
|
112
|
+
const findColumn = this.columns.find((item) => {
|
|
113
|
+
return item.key === value;
|
|
114
|
+
});
|
|
115
|
+
if (findColumn) {
|
|
116
|
+
const findIndex = this.selectedColumns.findIndex((item) => {
|
|
117
|
+
return item.key === value;
|
|
118
|
+
});
|
|
119
|
+
if (findIndex < 0) {
|
|
120
|
+
this.selectedColumns.push({
|
|
121
|
+
key: findColumn.key,
|
|
122
|
+
title: findColumn.title
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// find the last index of the selected items
|
|
128
|
+
const lastSelectedIndex = this.columns.findIndex((item) => {
|
|
129
|
+
return item.key === selected[selected.length - 1];
|
|
130
|
+
});
|
|
131
|
+
// reset control
|
|
132
|
+
this.availableColumnsControl.reset();
|
|
133
|
+
if (lastSelectedIndex > -1 && lastSelectedIndex < this.columns.length - 1) {
|
|
134
|
+
this.availableColumnsControl.patchValue([
|
|
135
|
+
this.columns[lastSelectedIndex + 1].key
|
|
136
|
+
]);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
moveUp() {
|
|
142
|
+
if (this.moveUpButton) {
|
|
143
|
+
this.moveUpButton.nativeElement.disabled = true;
|
|
144
|
+
}
|
|
145
|
+
if (this.selectedColumns) {
|
|
146
|
+
const selected = this.selectedColumnsControl.value;
|
|
147
|
+
if (selected.length > 0) {
|
|
148
|
+
for (const value of selected) {
|
|
149
|
+
const findIndex = this.selectedColumns.findIndex((item) => {
|
|
150
|
+
return item.key === value;
|
|
151
|
+
});
|
|
152
|
+
if (findIndex > 0) {
|
|
153
|
+
const column = this.selectedColumns[findIndex];
|
|
154
|
+
this.selectedColumns.splice(findIndex, 1);
|
|
155
|
+
this.selectedColumns.splice(findIndex - 1, 0, column);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (this.moveUpButton) {
|
|
161
|
+
this.moveUpButton.nativeElement.disabled = false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
moveDown() {
|
|
165
|
+
if (this.moveDownButton) {
|
|
166
|
+
this.moveDownButton.nativeElement.disabled = true;
|
|
167
|
+
}
|
|
168
|
+
if (this.selectedColumns && this.columns) {
|
|
169
|
+
const selected = this.selectedColumnsControl.value;
|
|
170
|
+
if (selected.length > 0) {
|
|
171
|
+
for (const value of selected) {
|
|
172
|
+
const findIndex = this.selectedColumns.findIndex((item) => {
|
|
173
|
+
return item.key === value;
|
|
174
|
+
});
|
|
175
|
+
const length = this.columns.length;
|
|
176
|
+
if (findIndex >= 0 && findIndex < length) {
|
|
177
|
+
const column = this.selectedColumns[findIndex];
|
|
178
|
+
this.selectedColumns.splice(findIndex, 1);
|
|
179
|
+
this.selectedColumns.splice(findIndex + 1, 0, column);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (this.moveDownButton) {
|
|
185
|
+
this.moveDownButton.nativeElement.disabled = false;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
ColumnSelectorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ColumnSelectorComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.BsModalRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
190
|
+
ColumnSelectorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ColumnSelectorComponent, selector: "app-column-selector", inputs: { columns: "columns", selectedColumns: "selectedColumns" }, viewQueries: [{ propertyName: "moveUpButton", first: true, predicate: ["moveUpButton"], descendants: true }, { propertyName: "moveDownButton", first: true, predicate: ["moveDownButton"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{'Tables.SelectColumns' | translate}}</h5>\n <button (click)=\"cancel()\"\n type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Cancel\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body pt-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p [translate]=\"'Tables.SelectColumnHelp'\"></p>\n <p [translate]=\"'Tables.MoveColumnHelp'\"></p>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-4\">\n <select [formControl]=\"availableColumnsControl\" size=\"10\" class=\"form-select form-control\" multiple aria-label=\"multiple select example\">\n <ng-container *ngIf=\"columns\">\n <ng-container *ngFor=\"let column of columns | orderBy: ['title']\">\n <option class=\"text-wrap\" [value]=\"column.key\">{{column.title}}</option>\n </ng-container>\n </ng-container>\n </select>\n </div>\n <div class=\"col-4 d-flex justify-content-center align-items-center\">\n <div class=\"col-9\">\n <div>\n <button [disabled]=\"!(availableColumnsControl.value && availableColumnsControl.value.length)\" (click)=\"addColumns()\" type=\"button\" class=\"btn btn-primary btn-block\">\n <i class=\"fas fa-plus mr-2\"></i><span [translate]=\"'Tables.AddColumn'\"></span>\n </button>\n </div>\n <div class=\"mt-3\">\n <button [disabled]=\"!(selectedColumnsControl.value && selectedColumnsControl.value.length)\" (click)=\"removeColumns()\" type=\"button\" class=\"btn btn-secondary btn-block\">\n <i class=\"fas fa-minus mr-2\"></i><span [translate]=\"'Tables.RemoveColumn'\"></span>\n </button>\n </div>\n </div>\n </div>\n <div class=\"col-4\">\n <select [formControl]=\"selectedColumnsControl\" size=\"10\" class=\"form-select form-control\" multiple aria-label=\"multiple select example\">\n <ng-container *ngIf=\"selectedColumns\">\n <ng-container *ngFor=\"let column of selectedColumns\">\n <option class=\"text-wrap\" [value]=\"column.key\">{{column.title}}</option>\n </ng-container>\n </ng-container>\n </select>\n <div class=\"d-flex justify-content-center align-items-center\">\n <div class=\"btn-group mt-4\">\n <button #moveUpButton (click)=\"moveUp()\" type=\"button\" class=\"btn btn-primary\">\n <i class=\"fas fa-chevron-up mr-2\"></i><span [translate]=\"'Tables.MoveUp'\"></span>\n </button>\n <button #moveDownButton (click)=\"moveDown()\" type=\"button\" class=\"btn btn-primary ml-2\">\n <i class=\"fas fa-chevron-down mr-2\"></i><span [translate]=\"'Tables.MoveDown'\"></span>\n </button>\n </div>\n </div>\n </div>\n </div>\n \n </div>\n <div class=\"modal-footer justify-content-end\">\n\n <button [disabled]=\"okButtonDisabled\" (click)=\"ok()\"\n type=\"button\" class=\"btn btn-primary\">\n <i *ngIf=\"changing\" class=\"fa fa-spinner fa-spin mr-1\"></i>\n {{'OK' | translate}}\n </button>\n <button [disabled]=\"cancelButtonDisabled\"\n (click)=\"cancel()\" type=\"button\" [ngClass]=\"cancelButtonClass\" data-dismiss=\"modal\">\n {{'Cancel' | translate}}\n </button>\n </div>\n </div>\n ", styles: [".form-select{-webkit-appearance:none;appearance:none;padding:5px}.form-select *{padding:5px}.btn.disabled,.btn:disabled{border-color:transparent!important}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "pipe", type: i6.OrderByPipe, name: "orderBy" }] });
|
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ColumnSelectorComponent, decorators: [{
|
|
192
|
+
type: Component,
|
|
193
|
+
args: [{ selector: 'app-column-selector', encapsulation: ViewEncapsulation.Emulated, template: "<div>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">{{'Tables.SelectColumns' | translate}}</h5>\n <button (click)=\"cancel()\"\n type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Cancel\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div class=\"modal-body pt-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <p [translate]=\"'Tables.SelectColumnHelp'\"></p>\n <p [translate]=\"'Tables.MoveColumnHelp'\"></p>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-4\">\n <select [formControl]=\"availableColumnsControl\" size=\"10\" class=\"form-select form-control\" multiple aria-label=\"multiple select example\">\n <ng-container *ngIf=\"columns\">\n <ng-container *ngFor=\"let column of columns | orderBy: ['title']\">\n <option class=\"text-wrap\" [value]=\"column.key\">{{column.title}}</option>\n </ng-container>\n </ng-container>\n </select>\n </div>\n <div class=\"col-4 d-flex justify-content-center align-items-center\">\n <div class=\"col-9\">\n <div>\n <button [disabled]=\"!(availableColumnsControl.value && availableColumnsControl.value.length)\" (click)=\"addColumns()\" type=\"button\" class=\"btn btn-primary btn-block\">\n <i class=\"fas fa-plus mr-2\"></i><span [translate]=\"'Tables.AddColumn'\"></span>\n </button>\n </div>\n <div class=\"mt-3\">\n <button [disabled]=\"!(selectedColumnsControl.value && selectedColumnsControl.value.length)\" (click)=\"removeColumns()\" type=\"button\" class=\"btn btn-secondary btn-block\">\n <i class=\"fas fa-minus mr-2\"></i><span [translate]=\"'Tables.RemoveColumn'\"></span>\n </button>\n </div>\n </div>\n </div>\n <div class=\"col-4\">\n <select [formControl]=\"selectedColumnsControl\" size=\"10\" class=\"form-select form-control\" multiple aria-label=\"multiple select example\">\n <ng-container *ngIf=\"selectedColumns\">\n <ng-container *ngFor=\"let column of selectedColumns\">\n <option class=\"text-wrap\" [value]=\"column.key\">{{column.title}}</option>\n </ng-container>\n </ng-container>\n </select>\n <div class=\"d-flex justify-content-center align-items-center\">\n <div class=\"btn-group mt-4\">\n <button #moveUpButton (click)=\"moveUp()\" type=\"button\" class=\"btn btn-primary\">\n <i class=\"fas fa-chevron-up mr-2\"></i><span [translate]=\"'Tables.MoveUp'\"></span>\n </button>\n <button #moveDownButton (click)=\"moveDown()\" type=\"button\" class=\"btn btn-primary ml-2\">\n <i class=\"fas fa-chevron-down mr-2\"></i><span [translate]=\"'Tables.MoveDown'\"></span>\n </button>\n </div>\n </div>\n </div>\n </div>\n \n </div>\n <div class=\"modal-footer justify-content-end\">\n\n <button [disabled]=\"okButtonDisabled\" (click)=\"ok()\"\n type=\"button\" class=\"btn btn-primary\">\n <i *ngIf=\"changing\" class=\"fa fa-spinner fa-spin mr-1\"></i>\n {{'OK' | translate}}\n </button>\n <button [disabled]=\"cancelButtonDisabled\"\n (click)=\"cancel()\" type=\"button\" [ngClass]=\"cancelButtonClass\" data-dismiss=\"modal\">\n {{'Cancel' | translate}}\n </button>\n </div>\n </div>\n ", styles: [".form-select{-webkit-appearance:none;appearance:none;padding:5px}.form-select *{padding:5px}.btn.disabled,.btn:disabled{border-color:transparent!important}\n"] }]
|
|
194
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.BsModalRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { columns: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], selectedColumns: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], moveUpButton: [{
|
|
199
|
+
type: ViewChild,
|
|
200
|
+
args: ['moveUpButton']
|
|
201
|
+
}], moveDownButton: [{
|
|
202
|
+
type: ViewChild,
|
|
203
|
+
args: ['moveDownButton']
|
|
204
|
+
}] } });
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9jb2x1bW4tc2VsZWN0b3IvY29sdW1uLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFxQixLQUFLLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUE0QixTQUFTLEVBQWlDLE1BQU0sZUFBZSxDQUFDO0FBQ3pLLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7QUF3QmhFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFlNUQsRUFBRTtRQUNFLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDckMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ04sSUFBSTtZQUNBLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUN2QjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1YsTUFBTSxHQUFHLENBQUM7U0FDYjtnQkFBUztZQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElB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QU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztvQkFDbkMsSUFBSSxTQUFTLElBQUksQ0FBQyxJQUFJLFNBQVMsR0FBRyxNQUFNLEVBQUU7d0JBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7d0JBQy9DLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDMUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7cUJBQzFEO2lCQUNKO2FBQ0o7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3REO0lBQ0wsQ0FBQzs7b0hBN0xRLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDRYQzVCcEMsZ3BIQTBFRTsyRkQ5Q1csdUJBQXVCO2tCQXRCbkMsU0FBUzsrQkFFRSxxQkFBcUIsaUJBRWhCLGlCQUFpQixDQUFDLFFBQVE7bUxBb0I5QixPQUFPO3NCQUFmLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFFcUIsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUNJLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQsIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24sIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJvdXRlck1vZGFsT2tDYW5jZWwgfSBmcm9tICdAdW5pdmVyc2lzL2NvbW1vbi9yb3V0aW5nJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbkBDb21wb25lbnQoe1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYXBwLWNvbHVtbi1zZWxlY3RvcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4tc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgIC5mb3JtLXNlbGVjdCB7XG4gICAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgICAgLW1vei1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgICAgICBwYWRkaW5nOiA1cHg7XG4gICAgfVxuICAgIC5mb3JtLXNlbGVjdCAqIHtcbiAgICAgICAgcGFkZGluZzogNXB4IDVweDtcbiAgICB9XG4gICAgLmJ0bi5kaXNhYmxlZCwgLmJ0bjpkaXNhYmxlZCB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICB9XG4gICAgYFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbHVtblNlbGVjdG9yQ29tcG9uZW50IGV4dGVuZHMgUm91dGVyTW9kYWxPa0NhbmNlbCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuXG4gICAgQElucHV0KCkgY29sdW1ucz86IHsga2V5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIHZpc2libGU6IGJvb2xlYW4sIGluZGV4OiBudW1iZXIgfVtdO1xuICAgIHB1YmxpYyBkaXNtaXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBJbnB1dCgpIHNlbGVjdGVkQ29sdW1ucz86IHsga2V5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcgfVtdO1xuXG4gICAgQFZpZXdDaGlsZCgnbW92ZVVwQnV0dG9uJykgbW92ZVVwQnV0dG9uPzogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdtb3ZlRG93bkJ1dHRvbicpIG1vdmVEb3duQnV0dG9uPzogRWxlbWVudFJlZjtcblxuICAgIGF2YWlsYWJsZUNvbHVtbnNDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gICAgc2VsZWN0ZWRDb2x1bW5zQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuXG4gICAgcHVibGljIGNoYW5naW5nID0gZmFsc2U7XG5cbiAgICBvaygpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2luZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9tb2RhbFJlZi5oaWRlKCk7XG4gICAgICAgIH0sIDApO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5hcHBseUNoYW5nZXMoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5naW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNtaXNzLmVtaXQoJ29rJyk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJ29rJyk7XG4gICAgfVxuICAgIGNhbmNlbCgpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICB0aGlzLl9tb2RhbFJlZi5oaWRlKCk7XG4gICAgICAgIHRoaXMuZGlzbWlzcy5lbWl0KCdjYW5jZWwnKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnY2FuY2VsJyk7XG4gICAgfVxuXG4gIGNvbnN0cnVjdG9yKHJvdXRlcjogUm91dGVyLFxuICAgIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIF9tb2RhbFJlZjogQnNNb2RhbFJlZixcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIocm91dGVyLCBhY3RpdmF0ZWRSb3V0ZSk7XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgLy9cbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIC8vXG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmNvbHVtbnMpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS52aXNpYmxlO1xuICAgICAgICAgICAgfSkuc29ydCgoYSwgYikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhLmluZGV4IDwgYi5pbmRleCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhLmluZGV4ID4gYi5pbmRleCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9KS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IGl0ZW0ua2V5LFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXBwbHlDaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbHVtbnMgJiYgdGhpcy5jb2x1bW5zKSB7XG4gICAgICAgICAgICBsZXQgbW92ZUluZGV4ID0gdGhpcy5zZWxlY3RlZENvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29sdW1uIG9mIHRoaXMuY29sdW1ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbmRJbmRleCA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmZpbmRJbmRleCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5rZXkgPT09IGNvbHVtbi5rZXk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKGZpbmRJbmRleCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgbW92ZUluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5pbmRleCA9IG1vdmVJbmRleDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW4udmlzaWJsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbi5pbmRleCA9IGZpbmRJbmRleDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZW1vdmVDb2x1bW5zKCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvbHVtbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZENvbHVtbnNDb250cm9sLnZhbHVlIGFzIHN0cmluZ1tdO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmRJbmRleCA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmZpbmRJbmRleCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ua2V5ID09PSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5kSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMuc3BsaWNlKGZpbmRJbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gcmVzZXQgY29sdW1uXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnNDb250cm9sLnJlc2V0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRDb2x1bW5zKCkge1xuICAgICAgICBpZiAodGhpcy5jb2x1bW5zICYmIHRoaXMuc2VsZWN0ZWRDb2x1bW5zKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuYXZhaWxhYmxlQ29sdW1uc0NvbnRyb2wudmFsdWUgYXMgc3RyaW5nW107XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2Ygc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZENvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5rZXkgPT09IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRDb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmRJbmRleCA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmZpbmRJbmRleCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmtleSA9PT0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5kSW5kZXggPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogZmluZENvbHVtbi5rZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBmaW5kQ29sdW1uLnRpdGxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gZmluZCB0aGUgbGFzdCBpbmRleCBvZiB0aGUgc2VsZWN0ZWQgaXRlbXNcbiAgICAgICAgICAgICAgICBjb25zdCBsYXN0U2VsZWN0ZWRJbmRleCA9IHRoaXMuY29sdW1ucy5maW5kSW5kZXgoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ua2V5ID09PSBzZWxlY3RlZFtzZWxlY3RlZC5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyByZXNldCBjb250cm9sXG4gICAgICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVDb2x1bW5zQ29udHJvbC5yZXNldCgpO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0U2VsZWN0ZWRJbmRleCA+IC0xICYmIGxhc3RTZWxlY3RlZEluZGV4IDwgdGhpcy5jb2x1bW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdmFpbGFibGVDb2x1bW5zQ29udHJvbC5wYXRjaFZhbHVlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc1tsYXN0U2VsZWN0ZWRJbmRleCArIDFdLmtleVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlVXAoKSB7XG4gICAgICAgIGlmICh0aGlzLm1vdmVVcEJ1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5tb3ZlVXBCdXR0b24ubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRDb2x1bW5zKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zQ29udHJvbC52YWx1ZSBhcyBzdHJpbmdbXTtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiBzZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5kSW5kZXggPSB0aGlzLnNlbGVjdGVkQ29sdW1ucy5maW5kSW5kZXgoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmtleSA9PT0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5zZWxlY3RlZENvbHVtbnNbZmluZEluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLnNwbGljZShmaW5kSW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbHVtbnMuc3BsaWNlKGZpbmRJbmRleCAtIDEgLCAwLCBjb2x1bW4pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1vdmVVcEJ1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5tb3ZlVXBCdXR0b24ubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbW92ZURvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLm1vdmVEb3duQnV0dG9uKSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVEb3duQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ29sdW1ucyAmJiB0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5zZWxlY3RlZENvbHVtbnNDb250cm9sLnZhbHVlIGFzIHN0cmluZ1tdO1xuICAgICAgICAgICAgaWYgKHNlbGVjdGVkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmRJbmRleCA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zLmZpbmRJbmRleCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ua2V5ID09PSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IHRoaXMuY29sdW1ucy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5kSW5kZXggPj0gMCAmJiBmaW5kSW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuc2VsZWN0ZWRDb2x1bW5zW2ZpbmRJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkQ29sdW1ucy5zcGxpY2UoZmluZEluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2x1bW5zLnNwbGljZShmaW5kSW5kZXggKyAxICwgMCwgY29sdW1uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tb3ZlRG93bkJ1dHRvbikge1xuICAgICAgICAgICAgdGhpcy5tb3ZlRG93bkJ1dHRvbi5uYXRpdmVFbGVtZW50LmRpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cbiAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3snVGFibGVzLlNlbGVjdENvbHVtbnMnIHwgdHJhbnNsYXRlfX08L2g1PlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNhbmNlbFwiPlxuICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgcHQtMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgPHAgW3RyYW5zbGF0ZV09XCInVGFibGVzLlNlbGVjdENvbHVtbkhlbHAnXCI+PC9wPlxuICAgICAgICAgIDxwIFt0cmFuc2xhdGVdPVwiJ1RhYmxlcy5Nb3ZlQ29sdW1uSGVscCdcIj48L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICAgICAgPHNlbGVjdCBbZm9ybUNvbnRyb2xdPVwiYXZhaWxhYmxlQ29sdW1uc0NvbnRyb2xcIiBzaXplPVwiMTBcIiBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tY29udHJvbFwiIG11bHRpcGxlIGFyaWEtbGFiZWw9XCJtdWx0aXBsZSBzZWxlY3QgZXhhbXBsZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2x1bW4gb2YgY29sdW1ucyB8IG9yZGVyQnk6IFsndGl0bGUnXVwiPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIGNsYXNzPVwidGV4dC13cmFwXCIgW3ZhbHVlXT1cImNvbHVtbi5rZXlcIj57e2NvbHVtbi50aXRsZX19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtOVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiIShhdmFpbGFibGVDb2x1bW5zQ29udHJvbC52YWx1ZSAmJiBhdmFpbGFibGVDb2x1bW5zQ29udHJvbC52YWx1ZS5sZW5ndGgpXCIgKGNsaWNrKT1cImFkZENvbHVtbnMoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tYmxvY2tcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzIG1yLTJcIj48L2k+PHNwYW4gW3RyYW5zbGF0ZV09XCInVGFibGVzLkFkZENvbHVtbidcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhKHNlbGVjdGVkQ29sdW1uc0NvbnRyb2wudmFsdWUgJiYgc2VsZWN0ZWRDb2x1bW5zQ29udHJvbC52YWx1ZS5sZW5ndGgpXCIgKGNsaWNrKT1cInJlbW92ZUNvbHVtbnMoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1ibG9ja1wiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzIG1yLTJcIj48L2k+PHNwYW4gW3RyYW5zbGF0ZV09XCInVGFibGVzLlJlbW92ZUNvbHVtbidcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTRcIj5cbiAgICAgICAgICAgIDxzZWxlY3QgW2Zvcm1Db250cm9sXT1cInNlbGVjdGVkQ29sdW1uc0NvbnRyb2xcIiBzaXplPVwiMTBcIiBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tY29udHJvbFwiIG11bHRpcGxlIGFyaWEtbGFiZWw9XCJtdWx0aXBsZSBzZWxlY3QgZXhhbXBsZVwiPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sdW1uIG9mIHNlbGVjdGVkQ29sdW1uc1wiPlxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiBjbGFzcz1cInRleHQtd3JhcFwiIFt2YWx1ZV09XCJjb2x1bW4ua2V5XCI+e3tjb2x1bW4udGl0bGV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIG10LTRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiAjbW92ZVVwQnV0dG9uIChjbGljayk9XCJtb3ZlVXAoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tdXAgbXItMlwiPjwvaT48c3BhbiBbdHJhbnNsYXRlXT1cIidUYWJsZXMuTW92ZVVwJ1wiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gI21vdmVEb3duQnV0dG9uIChjbGljayk9XCJtb3ZlRG93bigpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1sLTJcIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd24gbXItMlwiPjwvaT48c3BhbiBbdHJhbnNsYXRlXT1cIidUYWJsZXMuTW92ZURvd24nXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgICBcbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyIGp1c3RpZnktY29udGVudC1lbmRcIj5cblxuICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwib2tCdXR0b25EaXNhYmxlZFwiIChjbGljayk9XCJvaygpXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XG4gICAgICAgICAgICAgIDxpICpuZ0lmPVwiY2hhbmdpbmdcIiBjbGFzcz1cImZhIGZhLXNwaW5uZXIgZmEtc3BpbiBtci0xXCI+PC9pPlxuICAgICAgICB7eydPSycgfCB0cmFuc2xhdGV9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJjYW5jZWxCdXR0b25EaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJjYW5jZWxCdXR0b25DbGFzc1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+XG4gICAgICAgIHt7J0NhbmNlbCcgfCB0cmFuc2xhdGV9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICAiXX0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { ColumnSelectorComponent } from './column-selector.component';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@universis/common";
|
|
5
|
+
export class ColumnSelectorService {
|
|
6
|
+
constructor(_modal) {
|
|
7
|
+
this._modal = _modal;
|
|
8
|
+
//
|
|
9
|
+
}
|
|
10
|
+
selectColumns(columns) {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
try {
|
|
13
|
+
const modalRef = this._modal.openModalComponent(ColumnSelectorComponent, {
|
|
14
|
+
class: 'modal-lg modal-table',
|
|
15
|
+
ignoreBackdropClick: true,
|
|
16
|
+
animated: true,
|
|
17
|
+
initialState: {
|
|
18
|
+
columns: columns,
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
const componentRef = modalRef.content;
|
|
22
|
+
componentRef.dismiss.subscribe((result) => {
|
|
23
|
+
if (result === 'ok') {
|
|
24
|
+
return resolve({
|
|
25
|
+
result: result,
|
|
26
|
+
columns: componentRef.columns
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return resolve({
|
|
30
|
+
result: result
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
return reject(err);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
ColumnSelectorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ColumnSelectorService, deps: [{ token: i1.ModalService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
41
|
+
ColumnSelectorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ColumnSelectorService });
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ColumnSelectorService, decorators: [{
|
|
43
|
+
type: Injectable
|
|
44
|
+
}], ctorParameters: function () { return [{ type: i1.ModalService }]; } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXNlbGVjdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvY29sdW1uLXNlbGVjdG9yL2NvbHVtbi1zZWxlY3Rvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7OztBQUd0RSxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQW9CLE1BQW9CO1FBQXBCLFdBQU0sR0FBTixNQUFNLENBQWM7UUFDdEMsRUFBRTtJQUNKLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBd0U7UUFHcEYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJO2dCQUNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCLEVBQUU7b0JBQ3ZFLEtBQUssRUFBRSxzQkFBc0I7b0JBQzdCLG1CQUFtQixFQUFFLElBQUk7b0JBQ3pCLFFBQVEsRUFBRSxJQUFJO29CQUNkLFlBQVksRUFBRTt3QkFDWixPQUFPLEVBQUUsT0FBTztxQkFDakI7aUJBQ0YsQ0FBQyxDQUFDO2dCQUNILE1BQU0sWUFBWSxHQUE0QixRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUMvRCxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO29CQUNoRCxJQUFJLE1BQU0sS0FBSyxJQUFJLEVBQUU7d0JBQ25CLE9BQU8sT0FBTyxDQUFDOzRCQUNiLE1BQU0sRUFBRSxNQUFNOzRCQUNkLE9BQU8sRUFBRSxZQUFZLENBQUMsT0FBTzt5QkFDOUIsQ0FBQyxDQUFDO3FCQUNKO29CQUNELE9BQU8sT0FBTyxDQUFDO3dCQUNiLE1BQU0sRUFBRSxNQUFNO3FCQUNmLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQzthQUNKO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O2tIQW5DVSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnQHVuaXZlcnNpcy9jb21tb24nO1xuaW1wb3J0IHsgQ29sdW1uU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbHVtbi1zZWxlY3Rvci5jb21wb25lbnQnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29sdW1uU2VsZWN0b3JTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9tb2RhbDogTW9kYWxTZXJ2aWNlKSB7XG4gICAgLy9cbiAgfVxuXG4gIHNlbGVjdENvbHVtbnMoY29sdW1uczogeyBrZXk6IHN0cmluZywgdGl0bGU6IHN0cmluZywgdmlzaWJsZTogYm9vbGVhbiwgaW5kZXg6IG51bWJlciB9KTpcbiAgICBQcm9taXNlPHtyZXN1bHQ6IHN0cmluZywgY29sdW1ucz86IHsga2V5OiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsXG4gICAgICB2aXNpYmxlOiBib29sZWFuLCBpbmRleDogbnVtYmVyIH1bXX0+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLl9tb2RhbC5vcGVuTW9kYWxDb21wb25lbnQoQ29sdW1uU2VsZWN0b3JDb21wb25lbnQsIHtcbiAgICAgICAgICBjbGFzczogJ21vZGFsLWxnIG1vZGFsLXRhYmxlJyxcbiAgICAgICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgICAgIGFuaW1hdGVkOiB0cnVlLFxuICAgICAgICAgIGluaXRpYWxTdGF0ZToge1xuICAgICAgICAgICAgY29sdW1uczogY29sdW1ucyxcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjb21wb25lbnRSZWY6IENvbHVtblNlbGVjdG9yQ29tcG9uZW50ID0gbW9kYWxSZWYuY29udGVudDtcbiAgICAgICAgY29tcG9uZW50UmVmLmRpc21pc3Muc3Vic2NyaWJlKChyZXN1bHQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChyZXN1bHQgPT09ICdvaycpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHtcbiAgICAgICAgICAgICAgcmVzdWx0OiByZXN1bHQsXG4gICAgICAgICAgICAgIGNvbHVtbnM6IGNvbXBvbmVudFJlZi5jb2x1bW5zXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc29sdmUoe1xuICAgICAgICAgICAgcmVzdWx0OiByZXN1bHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
import * as i2 from "@ngx-translate/core";
|
|
5
|
+
export class SimpleHeaderToolsComponent {
|
|
6
|
+
}
|
|
7
|
+
SimpleHeaderToolsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SimpleHeaderToolsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8
|
+
SimpleHeaderToolsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: SimpleHeaderToolsComponent, selector: "table-simple-header-tools", ngImport: i0, template: `
|
|
9
|
+
<ng-content></ng-content>
|
|
10
|
+
`, isInline: true });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SimpleHeaderToolsComponent, decorators: [{
|
|
12
|
+
type: Component,
|
|
13
|
+
args: [{ selector: 'table-simple-header-tools', template: `
|
|
14
|
+
<ng-content></ng-content>
|
|
15
|
+
` }]
|
|
16
|
+
}] });
|
|
17
|
+
export class TableSimpleHeaderComponent {
|
|
18
|
+
ngOnChanges(changes) {
|
|
19
|
+
if (changes.table) {
|
|
20
|
+
if (changes.table.currentValue == null) {
|
|
21
|
+
if (this.dataLoadSubscription) {
|
|
22
|
+
this.dataLoadSubscription.unsubscribe();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// tslint:disable-next-line:triple-equals
|
|
27
|
+
if (changes.table.currentValue != changes.table.previousValue) {
|
|
28
|
+
this.dataLoadSubscription = changes.table.currentValue.load.subscribe((data) => {
|
|
29
|
+
this.recordsTotal = data.recordsTotal;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
ngOnDestroy() {
|
|
35
|
+
if (this.dataLoadSubscription) {
|
|
36
|
+
this.dataLoadSubscription.unsubscribe();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
constructor() { }
|
|
40
|
+
ngOnInit() {
|
|
41
|
+
//
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
TableSimpleHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableSimpleHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
45
|
+
TableSimpleHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: TableSimpleHeaderComponent, selector: "app-table-simple-header", inputs: { table: "table" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-auto mt-4\">\n <div class=\"font-xl text-secondary\" *ngIf=\"recordsTotal === 0\">\n <span> </span>\n </div>\n <div class=\"font-xl text-secondary\" *ngIf=\"recordsTotal && recordsTotal > 1\">\n <span>{{recordsTotal}}</span><span> </span><span [translate]=\"'Tables.Items'\"></span>\n </div>\n <div class=\"font-xl text-secondary\" *ngIf=\"recordsTotal === 1\">\n <span>{{recordsTotal}}</span><span> </span><span [translate]=\"'Tables.Item'\"></span>\n </div>\n </div>\n <div class=\"pull-right ml-auto mr-3 mt-3\">\n <div class=\"font-lg btn-toolbar mt-2\">\n <ng-content select=\"table-simple-header-tools\"></ng-content>\n </div>\n </div>\n</div>\n\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }] });
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableSimpleHeaderComponent, decorators: [{
|
|
47
|
+
type: Component,
|
|
48
|
+
args: [{ selector: 'app-table-simple-header', template: "<div class=\"row\">\n <div class=\"col-auto mt-4\">\n <div class=\"font-xl text-secondary\" *ngIf=\"recordsTotal === 0\">\n <span> </span>\n </div>\n <div class=\"font-xl text-secondary\" *ngIf=\"recordsTotal && recordsTotal > 1\">\n <span>{{recordsTotal}}</span><span> </span><span [translate]=\"'Tables.Items'\"></span>\n </div>\n <div class=\"font-xl text-secondary\" *ngIf=\"recordsTotal === 1\">\n <span>{{recordsTotal}}</span><span> </span><span [translate]=\"'Tables.Item'\"></span>\n </div>\n </div>\n <div class=\"pull-right ml-auto mr-3 mt-3\">\n <div class=\"font-lg btn-toolbar mt-2\">\n <ng-content select=\"table-simple-header-tools\"></ng-content>\n </div>\n </div>\n</div>\n\n" }]
|
|
49
|
+
}], ctorParameters: function () { return []; }, propDecorators: { table: [{
|
|
50
|
+
type: Input
|
|
51
|
+
}] } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2ltcGxlLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUtc2ltcGxlLWhlYWRlci90YWJsZS1zaW1wbGUtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZS1zaW1wbGUtaGVhZGVyL3RhYmxlLXNpbXBsZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQXVDLE1BQU0sZUFBZSxDQUFDOzs7O0FBWTlGLE1BQU0sT0FBTywwQkFBMEI7O3VIQUExQiwwQkFBMEI7MkdBQTFCLDBCQUEwQixpRUFMM0I7O0dBRVQ7MkZBR1UsMEJBQTBCO2tCQVJ0QyxTQUFTOytCQUVFLDJCQUEyQixZQUMzQjs7R0FFVDs7QUFhSCxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDakIsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxJQUFJLEVBQUU7Z0JBQ3RDLElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO29CQUM3QixJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3hDLE9BQU87aUJBQ1I7YUFDRjtZQUNELHlDQUF5QztZQUN6QyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsWUFBWSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFO2dCQUM3RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQTZCLEVBQUUsRUFBRTtvQkFDdEcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUN4QyxDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7SUFDSCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLG9CQUFvQixFQUFFO1lBQzdCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN6QztJQUNILENBQUM7SUFLRCxnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO1FBQ04sRUFBRTtJQUNKLENBQUM7O3VIQTlCVSwwQkFBMEI7MkdBQTFCLDBCQUEwQixnSEN0QnZDLG14QkFtQkE7MkZER2EsMEJBQTBCO2tCQU50QyxTQUFTOytCQUVFLHlCQUF5QjswRUEyQjFCLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT25EZXN0cm95LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFkdmFuY2VkVGFibGVDb21wb25lbnQsIEFkdmFuY2VkVGFibGVEYXRhUmVzdWx0IH0gZnJvbSAnLi4vYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3RhYmxlLXNpbXBsZS1oZWFkZXItdG9vbHMnLFxuICB0ZW1wbGF0ZTogYFxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW11cbn0pXG5leHBvcnQgY2xhc3MgU2ltcGxlSGVhZGVyVG9vbHNDb21wb25lbnQge1xuICAvL1xufVxuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmNvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2FwcC10YWJsZS1zaW1wbGUtaGVhZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLXNpbXBsZS1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlU2ltcGxlSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy50YWJsZSkge1xuICAgICAgaWYgKGNoYW5nZXMudGFibGUuY3VycmVudFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YUxvYWRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICB0aGlzLmRhdGFMb2FkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHJpcGxlLWVxdWFsc1xuICAgICAgaWYgKGNoYW5nZXMudGFibGUuY3VycmVudFZhbHVlICE9IGNoYW5nZXMudGFibGUucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICB0aGlzLmRhdGFMb2FkU3Vic2NyaXB0aW9uID0gY2hhbmdlcy50YWJsZS5jdXJyZW50VmFsdWUubG9hZC5zdWJzY3JpYmUoKGRhdGE6IEFkdmFuY2VkVGFibGVEYXRhUmVzdWx0KSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWNvcmRzVG90YWwgPSBkYXRhLnJlY29yZHNUb3RhbDtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFMb2FkU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmRhdGFMb2FkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgQElucHV0KCkgdGFibGU/OiBBZHZhbmNlZFRhYmxlQ29tcG9uZW50O1xuICBwdWJsaWMgcmVjb3Jkc1RvdGFsPzogbnVtYmVyO1xuICBwdWJsaWMgZGF0YUxvYWRTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy9cbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwicm93XCI+XG4gICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gbXQtNFwiPlxuICAgICA8ZGl2IGNsYXNzPVwiZm9udC14bCB0ZXh0LXNlY29uZGFyeVwiICpuZ0lmPVwicmVjb3Jkc1RvdGFsID09PSAwXCI+XG4gICAgICAgIDxzcGFuPiZuYnNwOzwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvbnQteGwgdGV4dC1zZWNvbmRhcnlcIiAqbmdJZj1cInJlY29yZHNUb3RhbCAmJiByZWNvcmRzVG90YWwgPiAxXCI+XG4gICAgICAgIDxzcGFuPnt7cmVjb3Jkc1RvdGFsfX08L3NwYW4+PHNwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuIFt0cmFuc2xhdGVdPVwiJ1RhYmxlcy5JdGVtcydcIj48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb250LXhsIHRleHQtc2Vjb25kYXJ5XCIgKm5nSWY9XCJyZWNvcmRzVG90YWwgPT09IDFcIj5cbiAgICAgICAgPHNwYW4+e3tyZWNvcmRzVG90YWx9fTwvc3Bhbj48c3Bhbj4mbmJzcDs8L3NwYW4+PHNwYW4gW3RyYW5zbGF0ZV09XCInVGFibGVzLkl0ZW0nXCI+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInB1bGwtcmlnaHQgbWwtYXV0byBtci0zIG10LTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb250LWxnIGJ0bi10b29sYmFyIG10LTJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidGFibGUtc2ltcGxlLWhlYWRlci10b29sc1wiPjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { Directive, Optional, Input } from '@angular/core';
|
|
2
|
+
import { select } from '@ngrx/store';
|
|
3
|
+
import { AppendFilter } from '../actions/table.actions';
|
|
4
|
+
import { selectTable } from '../reducers';
|
|
5
|
+
import { first } from 'rxjs/operators';
|
|
6
|
+
import { AdvancedTableState } from './advance-table-state.directive';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../components/advanced-table/advanced-table-search.component";
|
|
9
|
+
import * as i2 from "@ngrx/store";
|
|
10
|
+
export class AdvancedTableSearchComponentNotNull extends Error {
|
|
11
|
+
constructor() {
|
|
12
|
+
super('Advanced table search component cannot be empty at this context.');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
// tslint:disable-next-line:directive-class-suffix
|
|
16
|
+
export class AdvancedSearchState {
|
|
17
|
+
constructor(search, store) {
|
|
18
|
+
this.search = search;
|
|
19
|
+
this.store = store;
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
if (this.store == null) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (this.search == null) {
|
|
26
|
+
throw new AdvancedTableSearchComponentNotNull();
|
|
27
|
+
}
|
|
28
|
+
if (this.search.table) {
|
|
29
|
+
// set auto load to false
|
|
30
|
+
this.search.table.autoLoad = false;
|
|
31
|
+
// handle filtering
|
|
32
|
+
this.filterChangeSubscription = this.search.filterChange.subscribe((filter) => {
|
|
33
|
+
this.onSearchFilter(filter);
|
|
34
|
+
});
|
|
35
|
+
// apply table state
|
|
36
|
+
this.applyTableState();
|
|
37
|
+
// handle table init
|
|
38
|
+
this.tableInitSubscription = this.search.table.init.subscribe(() => {
|
|
39
|
+
return this.onTableInit();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
applyTableState() {
|
|
44
|
+
if (this.search.table) {
|
|
45
|
+
// handle table state (via directive)
|
|
46
|
+
const tableState = new AdvancedTableState(this.search.table, this.store);
|
|
47
|
+
tableState.tableState = this.searchState;
|
|
48
|
+
tableState.ngOnInit();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
onTableInit() {
|
|
52
|
+
this.store.pipe(select(selectTable, { id: this.searchState }), first()).subscribe((state) => {
|
|
53
|
+
// use order
|
|
54
|
+
if (state) {
|
|
55
|
+
if (state.order && state.order.length && this.search.table) {
|
|
56
|
+
this.search.table.dataTable.order(state.order);
|
|
57
|
+
}
|
|
58
|
+
// use text search
|
|
59
|
+
if (state.filter && state.filter.q && this.search.table) {
|
|
60
|
+
this.search.text = state.filter.q;
|
|
61
|
+
this.search.collapsed = true;
|
|
62
|
+
return this.search.table.search(this.search.text);
|
|
63
|
+
}
|
|
64
|
+
// use predefined search
|
|
65
|
+
if (state.filter && state.filter.s) {
|
|
66
|
+
this.search.selectedList = this.search.userSearchList.find((item) => {
|
|
67
|
+
return item.name === state.filter.s;
|
|
68
|
+
});
|
|
69
|
+
return this.search.search();
|
|
70
|
+
}
|
|
71
|
+
if (state.filter) {
|
|
72
|
+
if (Object.keys(state.filter).length) {
|
|
73
|
+
// set collapsed to false (advanced search)
|
|
74
|
+
this.search.collapsed = false;
|
|
75
|
+
this.search.filter = state.filter;
|
|
76
|
+
return this.search.search();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// ensure empty filter at this moment
|
|
80
|
+
// because search() function triggers a store dispatch
|
|
81
|
+
this.search.filter = {};
|
|
82
|
+
return this.search.search();
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
onSearchFilter(filter) {
|
|
87
|
+
this.store.dispatch(new AppendFilter(this.searchState, filter));
|
|
88
|
+
}
|
|
89
|
+
ngOnDestroy() {
|
|
90
|
+
if (this.filterChangeSubscription) {
|
|
91
|
+
this.filterChangeSubscription.unsubscribe();
|
|
92
|
+
}
|
|
93
|
+
if (this.tableInitSubscription) {
|
|
94
|
+
this.tableInitSubscription.unsubscribe();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
AdvancedSearchState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AdvancedSearchState, deps: [{ token: i1.AdvancedTableSearchComponent }, { token: i2.Store, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
99
|
+
AdvancedSearchState.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AdvancedSearchState, selector: "[searchState]", inputs: { searchState: "searchState" }, ngImport: i0 });
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AdvancedSearchState, decorators: [{
|
|
101
|
+
type: Directive,
|
|
102
|
+
args: [{
|
|
103
|
+
// tslint:disable-next-line: directive-selector
|
|
104
|
+
selector: '[searchState]',
|
|
105
|
+
}]
|
|
106
|
+
}], ctorParameters: function () { return [{ type: i1.AdvancedTableSearchComponent }, { type: i2.Store, decorators: [{
|
|
107
|
+
type: Optional
|
|
108
|
+
}] }]; }, propDecorators: { searchState: [{
|
|
109
|
+
type: Input
|
|
110
|
+
}] } });
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZS1zZWFyY2gtc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9kaXJlY3RpdmVzL2FkdmFuY2Utc2VhcmNoLXN0YXRlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQzNCLE1BQU0sZUFBZSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxNQUFNLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXhELE9BQU8sRUFBa0IsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQUduRSxNQUFNLE9BQU8sbUNBQW9DLFNBQVEsS0FBSztJQUM1RDtRQUNFLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQzVFLENBQUM7Q0FDRjtBQVFELGtEQUFrRDtBQUNsRCxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCLFlBQXNCLE1BQW9DLEVBQ2hDLEtBQTRCO1FBRGhDLFdBQU0sR0FBTixNQUFNLENBQThCO1FBQ2hDLFVBQUssR0FBTCxLQUFLLENBQXVCO0lBQ3RELENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFO1lBQ3JCLE1BQU0sSUFBSSxtQ0FBbUMsRUFBRSxDQUFDO1NBQ25EO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtZQUNuQix5QkFBeUI7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENB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S0FBSyxDQUFDO3dCQUM5QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO3dCQUNsQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7cUJBQzdCO2lCQUNGO2dCQUNELHFDQUFxQztnQkFDckMsc0RBQXNEO2dCQUN0RCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFXO1FBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFxQixFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRTtZQUNqQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDN0M7UUFDRCxJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUM5QixJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDMUM7SUFDSCxDQUFDOztnSEF4RlUsbUJBQW1CO29HQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFQL0IsU0FBUzttQkFDVDtvQkFDRSwrQ0FBK0M7b0JBQy9DLFFBQVEsRUFBRSxlQUFlO2lCQUMxQjs7MEJBVUssUUFBUTs0Q0FMSixXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsIE9wdGlvbmFsLCBJbnB1dCwgT25Jbml0LCBPbkRlc3Ryb3lcbiAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBBcHBlbmRGaWx0ZXIgfSBmcm9tICcuLi9hY3Rpb25zL3RhYmxlLmFjdGlvbnMnO1xuaW1wb3J0IHsgQWR2YW5jZWRUYWJsZVNlYXJjaENvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtdGFibGUtc2VhcmNoLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOZ3hUYWJsZXNTdGF0ZSwgc2VsZWN0VGFibGUgfSBmcm9tICcuLi9yZWR1Y2Vycyc7XG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFkdmFuY2VkVGFibGVTdGF0ZSB9IGZyb20gJy4vYWR2YW5jZS10YWJsZS1zdGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbiAgZXhwb3J0IGNsYXNzIEFkdmFuY2VkVGFibGVTZWFyY2hDb21wb25lbnROb3ROdWxsIGV4dGVuZHMgRXJyb3Ige1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgc3VwZXIoJ0FkdmFuY2VkIHRhYmxlIHNlYXJjaCBjb21wb25lbnQgY2Fubm90IGJlIGVtcHR5IGF0IHRoaXMgY29udGV4dC4nKTtcbiAgICB9XG4gIH1cblxuICBARGlyZWN0aXZlKFxuICAge1xuICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGRpcmVjdGl2ZS1zZWxlY3RvclxuICAgICBzZWxlY3RvcjogJ1tzZWFyY2hTdGF0ZV0nLFxuICAgfSxcbiAgKVxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6ZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuICBleHBvcnQgY2xhc3MgQWR2YW5jZWRTZWFyY2hTdGF0ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpIHNlYXJjaFN0YXRlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgZmlsdGVyQ2hhbmdlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgdGFibGVJbml0U3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNlYXJjaDogQWR2YW5jZWRUYWJsZVNlYXJjaENvbXBvbmVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIHN0b3JlOiBTdG9yZTxOZ3hUYWJsZXNTdGF0ZT4pIHtcbiAgICB9XG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICBpZiAodGhpcy5zdG9yZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnNlYXJjaCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEFkdmFuY2VkVGFibGVTZWFyY2hDb21wb25lbnROb3ROdWxsKCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWFyY2gudGFibGUpIHtcbiAgICAgICAgICAvLyBzZXQgYXV0byBsb2FkIHRvIGZhbHNlXG4gICAgICAgICAgdGhpcy5zZWFyY2gudGFibGUuYXV0b0xvYWQgPSBmYWxzZTtcbiAgICAgICAgICAvLyBoYW5kbGUgZmlsdGVyaW5nXG4gICAgICAgICAgdGhpcy5maWx0ZXJDaGFuZ2VTdWJzY3JpcHRpb24gPSB0aGlzLnNlYXJjaC5maWx0ZXJDaGFuZ2Uuc3Vic2NyaWJlKChmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25TZWFyY2hGaWx0ZXIoZmlsdGVyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICAvLyBhcHBseSB0YWJsZSBzdGF0ZVxuICAgICAgICAgIHRoaXMuYXBwbHlUYWJsZVN0YXRlKCk7XG4gICAgICAgICAgLy8gaGFuZGxlIHRhYmxlIGluaXRcbiAgICAgICAgICB0aGlzLnRhYmxlSW5pdFN1YnNjcmlwdGlvbiA9IHRoaXMuc2VhcmNoLnRhYmxlLmluaXQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9uVGFibGVJbml0KCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFwcGx5VGFibGVTdGF0ZSgpIHtcbiAgICAgIGlmICh0aGlzLnNlYXJjaC50YWJsZSkge1xuICAgICAgICAvLyBoYW5kbGUgdGFibGUgc3RhdGUgKHZpYSBkaXJlY3RpdmUpXG4gICAgICAgIGNvbnN0IHRhYmxlU3RhdGUgPSBuZXcgQWR2YW5jZWRUYWJsZVN0YXRlKHRoaXMuc2VhcmNoLnRhYmxlLCB0aGlzLnN0b3JlKTtcbiAgICAgICAgdGFibGVTdGF0ZS50YWJsZVN0YXRlID0gdGhpcy5zZWFyY2hTdGF0ZSBhcyBzdHJpbmc7XG4gICAgICAgIHRhYmxlU3RhdGUubmdPbkluaXQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25UYWJsZUluaXQoKSB7XG4gICAgICB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHNlbGVjdFRhYmxlLCB7IGlkOiB0aGlzLnNlYXJjaFN0YXRlIGFzIHN0cmluZ30pLCBmaXJzdCgpKS5zdWJzY3JpYmUoKHN0YXRlOiBhbnkpID0+IHtcbiAgICAgICAgLy8gdXNlIG9yZGVyXG4gICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgIGlmIChzdGF0ZS5vcmRlciAmJiBzdGF0ZS5vcmRlci5sZW5ndGggJiYgdGhpcy5zZWFyY2gudGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoLnRhYmxlLmRhdGFUYWJsZS5vcmRlcihzdGF0ZS5vcmRlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIHVzZSB0ZXh0IHNlYXJjaFxuICAgICAgICAgIGlmIChzdGF0ZS5maWx0ZXIgJiYgc3RhdGUuZmlsdGVyLnEgJiYgdGhpcy5zZWFyY2gudGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoLnRleHQgPSBzdGF0ZS5maWx0ZXIucTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoLmNvbGxhcHNlZCA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2gudGFibGUuc2VhcmNoKHRoaXMuc2VhcmNoLnRleHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB1c2UgcHJlZGVmaW5lZCBzZWFyY2hcbiAgICAgICAgICBpZiAoc3RhdGUuZmlsdGVyICYmIHN0YXRlLmZpbHRlci5zKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaC5zZWxlY3RlZExpc3QgPSB0aGlzLnNlYXJjaC51c2VyU2VhcmNoTGlzdC5maW5kKChpdGVtOiB7IG5hbWU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWUgPT09IHN0YXRlLmZpbHRlci5zO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2guc2VhcmNoKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdGF0ZS5maWx0ZXIpIHtcbiAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhzdGF0ZS5maWx0ZXIpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAvLyBzZXQgY29sbGFwc2VkIHRvIGZhbHNlIChhZHZhbmNlZCBzZWFyY2gpXG4gICAgICAgICAgICAgIHRoaXMuc2VhcmNoLmNvbGxhcHNlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLnNlYXJjaC5maWx0ZXIgPSBzdGF0ZS5maWx0ZXI7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlYXJjaC5zZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gZW5zdXJlIGVtcHR5IGZpbHRlciBhdCB0aGlzIG1vbWVudFxuICAgICAgICAgIC8vIGJlY2F1c2Ugc2VhcmNoKCkgZnVuY3Rpb24gdHJpZ2dlcnMgYSBzdG9yZSBkaXNwYXRjaFxuICAgICAgICAgIHRoaXMuc2VhcmNoLmZpbHRlciA9IHt9O1xuICAgICAgICAgIHJldHVybiB0aGlzLnNlYXJjaC5zZWFyY2goKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblNlYXJjaEZpbHRlcihmaWx0ZXI6IGFueSkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChuZXcgQXBwZW5kRmlsdGVyKHRoaXMuc2VhcmNoU3RhdGUgYXMgc3RyaW5nLCBmaWx0ZXIpKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgIGlmICh0aGlzLmZpbHRlckNoYW5nZVN1YnNjcmlwdGlvbikge1xuICAgICAgICB0aGlzLmZpbHRlckNoYW5nZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudGFibGVJbml0U3Vic2NyaXB0aW9uKSB7XG4gICAgICAgIHRoaXMudGFibGVJbml0U3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Directive, Optional, Input, } from '@angular/core';
|
|
2
|
+
import { select } from '@ngrx/store';
|
|
3
|
+
import * as fromTables from '../reducers';
|
|
4
|
+
import { first } from 'rxjs/operators';
|
|
5
|
+
import { AppendState } from '../actions/table.actions';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../components/advanced-table/advanced-table.component";
|
|
8
|
+
import * as i2 from "@ngrx/store";
|
|
9
|
+
// tslint:disable-next-line:directive-class-suffix
|
|
10
|
+
export class AdvancedTableState {
|
|
11
|
+
constructor(table, store) {
|
|
12
|
+
this.table = table;
|
|
13
|
+
this.store = store;
|
|
14
|
+
}
|
|
15
|
+
ngOnInit() {
|
|
16
|
+
if (this.store == null) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
this.table.stateSave = true;
|
|
20
|
+
this.table.stateLoadCallback = (settings, callback) => {
|
|
21
|
+
this.store.pipe(select(fromTables.selectTable, { id: this.tableState }), first()).subscribe((state) => {
|
|
22
|
+
callback(state && state.table);
|
|
23
|
+
if (state && state.table && state.table.ColReorder) {
|
|
24
|
+
this.table.dataTable.colReorder.order(state.table.ColReorder, true);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
let firstDraw = true;
|
|
29
|
+
this.table.draw.subscribe(() => {
|
|
30
|
+
if (firstDraw === false) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (this.table.dataTable == null) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
firstDraw = false;
|
|
37
|
+
const loadeStateSettings = this.table.dataTable.settings()[0];
|
|
38
|
+
const scrollerSettings = loadeStateSettings.oSavedState &&
|
|
39
|
+
loadeStateSettings.oSavedState.scroller;
|
|
40
|
+
if (scrollerSettings && scrollerSettings.topRow) {
|
|
41
|
+
const scroller = this.table.dataTable.scroller();
|
|
42
|
+
scroller.scrollToRow(scrollerSettings.topRow, true);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
this.table.stateSaveCallback = (settings, data) => {
|
|
46
|
+
this.store.dispatch(new AppendState(this.tableState, data));
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
AdvancedTableState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AdvancedTableState, deps: [{ token: i1.AdvancedTableComponent }, { token: i2.Store, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
51
|
+
AdvancedTableState.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: AdvancedTableState, selector: "[tableState]", inputs: { tableState: "tableState" }, ngImport: i0 });
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AdvancedTableState, decorators: [{
|
|
53
|
+
type: Directive,
|
|
54
|
+
args: [{
|
|
55
|
+
// tslint:disable-next-line: directive-selector
|
|
56
|
+
selector: '[tableState]',
|
|
57
|
+
}]
|
|
58
|
+
}], ctorParameters: function () { return [{ type: i1.AdvancedTableComponent }, { type: i2.Store, decorators: [{
|
|
59
|
+
type: Optional
|
|
60
|
+
}] }]; }, propDecorators: { tableState: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}] } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZS10YWJsZS1zdGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RpcmVjdGl2ZXMvYWR2YW5jZS10YWJsZS1zdGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxHQUM3QixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE9BQU8sS0FBSyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFRdkQsa0RBQWtEO0FBQ2xELE1BQU0sT0FBTyxrQkFBa0I7SUFJM0IsWUFBb0IsS0FBNkIsRUFDekIsS0FBNEI7UUFEaEMsVUFBSyxHQUFMLEtBQUssQ0FBd0I7UUFDekIsVUFBSyxHQUFMLEtBQUssQ0FBdUI7SUFDcEQsQ0FBQztJQUNELFFBQVE7UUFDSixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3BCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFvQixFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUNqSCxRQUFRLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtvQkFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDdkU7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQztRQUNGLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksU0FBUyxLQUFLLEtBQUssRUFBRTtnQkFDckIsT0FBTzthQUNWO1lBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7Z0JBQzlCLE9BQU87YUFDVjtZQUNELFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDbEIsTUFBTSxrQkFBa0IsR0FTcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXO2dCQUNuRCxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1lBQzVDLElBQUksZ0JBQWdCLElBQUksZ0JBQWdCLENBQUMsTUFBTSxFQUFFO2dCQUM3QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDakQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDdkQ7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQW9CLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDLENBQUM7SUFDTixDQUFDOzsrR0FqRFEsa0JBQWtCO21HQUFsQixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFQOUIsU0FBUzttQkFDTjtvQkFDSSwrQ0FBK0M7b0JBQy9DLFFBQVEsRUFBRSxjQUFjO2lCQUMzQjs7MEJBUUksUUFBUTs0Q0FISixVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsIE9wdGlvbmFsLCBJbnB1dCwgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBOZ3hUYWJsZXNTdGF0ZSB9IGZyb20gJy4uL3JlZHVjZXJzJztcbmltcG9ydCB7IEFkdmFuY2VkVGFibGVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLXRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgKiBhcyBmcm9tVGFibGVzIGZyb20gJy4uL3JlZHVjZXJzJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwZW5kU3RhdGUgfSBmcm9tICcuLi9hY3Rpb25zL3RhYmxlLmFjdGlvbnMnO1xuXG5ARGlyZWN0aXZlKFxuICAgIHtcbiAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBkaXJlY3RpdmUtc2VsZWN0b3JcbiAgICAgICAgc2VsZWN0b3I6ICdbdGFibGVTdGF0ZV0nLFxuICAgIH0sXG4pXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6ZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkVGFibGVTdGF0ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICBASW5wdXQoKSB0YWJsZVN0YXRlPzogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB0YWJsZTogQWR2YW5jZWRUYWJsZUNvbXBvbmVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzdG9yZTogU3RvcmU8Tmd4VGFibGVzU3RhdGU+KSB7XG4gICAgfVxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zdG9yZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50YWJsZS5zdGF0ZVNhdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnRhYmxlLnN0YXRlTG9hZENhbGxiYWNrID0gKHNldHRpbmdzLCBjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdG9yZS5waXBlKHNlbGVjdChmcm9tVGFibGVzLnNlbGVjdFRhYmxlLCB7IGlkOiB0aGlzLnRhYmxlU3RhdGUgYXMgc3RyaW5nIH0pLCBmaXJzdCgpKS5zdWJzY3JpYmUoKHN0YXRlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhzdGF0ZSAmJiBzdGF0ZS50YWJsZSk7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlLnRhYmxlICYmIHN0YXRlLnRhYmxlLkNvbFJlb3JkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZS5kYXRhVGFibGUuY29sUmVvcmRlci5vcmRlcihzdGF0ZS50YWJsZS5Db2xSZW9yZGVyLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgbGV0IGZpcnN0RHJhdyA9IHRydWU7XG4gICAgICAgIHRoaXMudGFibGUuZHJhdy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGZpcnN0RHJhdyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy50YWJsZS5kYXRhVGFibGUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpcnN0RHJhdyA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgbG9hZGVTdGF0ZVNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgb1NhdmVkU3RhdGU/OiB7XG4gICAgICAgICAgICAgICAgICAgIENvbFJlb3JkZXI/OiBudW1iZXJbXTtcbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcFJvdzogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVNjcm9sbFRvcDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVJvd1RvcDogbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9ID0gdGhpcy50YWJsZS5kYXRhVGFibGUuc2V0dGluZ3MoKVswXTtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbGVyU2V0dGluZ3MgPSBsb2FkZVN0YXRlU2V0dGluZ3Mub1NhdmVkU3RhdGUgJiZcbiAgICAgICAgICAgICAgICBsb2FkZVN0YXRlU2V0dGluZ3Mub1NhdmVkU3RhdGUuc2Nyb2xsZXI7XG4gICAgICAgICAgICBpZiAoc2Nyb2xsZXJTZXR0aW5ncyAmJiBzY3JvbGxlclNldHRpbmdzLnRvcFJvdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbGVyID0gdGhpcy50YWJsZS5kYXRhVGFibGUuc2Nyb2xsZXIoKTtcbiAgICAgICAgICAgICAgICBzY3JvbGxlci5zY3JvbGxUb1JvdyhzY3JvbGxlclNldHRpbmdzLnRvcFJvdywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnRhYmxlLnN0YXRlU2F2ZUNhbGxiYWNrID0gKHNldHRpbmdzLCBkYXRhKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKG5ldyBBcHBlbmRTdGF0ZSh0aGlzLnRhYmxlU3RhdGUgYXMgc3RyaW5nLCBkYXRhKSk7XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
|