@genesislcap/grid-pro 11.3.0
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/README.md +5 -0
- package/dist/dts/cell/cell.d.ts +14 -0
- package/dist/dts/cell/cell.d.ts.map +1 -0
- package/dist/dts/cell/cell.template.d.ts +3 -0
- package/dist/dts/cell/cell.template.d.ts.map +1 -0
- package/dist/dts/cell/index.d.ts +3 -0
- package/dist/dts/cell/index.d.ts.map +1 -0
- package/dist/dts/cell-renderers/action.renderer.d.ts +33 -0
- package/dist/dts/cell-renderers/action.renderer.d.ts.map +1 -0
- package/dist/dts/cell-renderers/actions-menu.renderer.d.ts +19 -0
- package/dist/dts/cell-renderers/actions-menu.renderer.d.ts.map +1 -0
- package/dist/dts/cell-renderers/boolean.renderer.d.ts +25 -0
- package/dist/dts/cell-renderers/boolean.renderer.d.ts.map +1 -0
- package/dist/dts/cell-renderers/index.d.ts +6 -0
- package/dist/dts/cell-renderers/index.d.ts.map +1 -0
- package/dist/dts/cell-renderers/select.renderer.d.ts +34 -0
- package/dist/dts/cell-renderers/select.renderer.d.ts.map +1 -0
- package/dist/dts/cell-renderers/text.renderer.d.ts +30 -0
- package/dist/dts/cell-renderers/text.renderer.d.ts.map +1 -0
- package/dist/dts/cell-renderers/utils/accessor.d.ts +2 -0
- package/dist/dts/cell-renderers/utils/accessor.d.ts.map +1 -0
- package/dist/dts/cell-renderers/utils/index.d.ts +2 -0
- package/dist/dts/cell-renderers/utils/index.d.ts.map +1 -0
- package/dist/dts/column/column.d.ts +8 -0
- package/dist/dts/column/column.d.ts.map +1 -0
- package/dist/dts/column/column.template.d.ts +3 -0
- package/dist/dts/column/column.template.d.ts.map +1 -0
- package/dist/dts/column/index.d.ts +4 -0
- package/dist/dts/column/index.d.ts.map +1 -0
- package/dist/dts/column/utils/grid-pro-columns.d.ts +4 -0
- package/dist/dts/column/utils/grid-pro-columns.d.ts.map +1 -0
- package/dist/dts/column/utils/index.d.ts +2 -0
- package/dist/dts/column/utils/index.d.ts.map +1 -0
- package/dist/dts/external/ag-grid-css.d.ts +2 -0
- package/dist/dts/external/ag-grid-css.d.ts.map +1 -0
- package/dist/dts/external/ag-head-css.d.ts +2 -0
- package/dist/dts/external/ag-head-css.d.ts.map +1 -0
- package/dist/dts/external/ag-theme-alpine-no-font-css.d.ts +2 -0
- package/dist/dts/external/ag-theme-alpine-no-font-css.d.ts.map +1 -0
- package/dist/dts/external/ag-theme-balham-no-font-css.d.ts +2 -0
- package/dist/dts/external/ag-theme-balham-no-font-css.d.ts.map +1 -0
- package/dist/dts/external/ag-theme-material-no-font-css.d.ts +2 -0
- package/dist/dts/external/ag-theme-material-no-font-css.d.ts.map +1 -0
- package/dist/dts/external/fonts.d.ts +8 -0
- package/dist/dts/external/fonts.d.ts.map +1 -0
- package/dist/dts/external/index.d.ts +9 -0
- package/dist/dts/external/index.d.ts.map +1 -0
- package/dist/dts/grid-components.d.ts +59 -0
- package/dist/dts/grid-components.d.ts.map +1 -0
- package/dist/dts/grid-pro-genesis-datasource/grid-pro-genesis-datasource-next.d.ts +390 -0
- package/dist/dts/grid-pro-genesis-datasource/grid-pro-genesis-datasource-next.d.ts.map +1 -0
- package/dist/dts/grid-pro-genesis-datasource/grid-pro-genesis-datasource.d.ts +376 -0
- package/dist/dts/grid-pro-genesis-datasource/grid-pro-genesis-datasource.d.ts.map +1 -0
- package/dist/dts/grid-pro-genesis-datasource/index.d.ts +3 -0
- package/dist/dts/grid-pro-genesis-datasource/index.d.ts.map +1 -0
- package/dist/dts/grid-pro.d.ts +389 -0
- package/dist/dts/grid-pro.d.ts.map +1 -0
- package/dist/dts/grid-pro.definitions.d.ts +8 -0
- package/dist/dts/grid-pro.definitions.d.ts.map +1 -0
- package/dist/dts/grid-pro.styles.d.ts +3 -0
- package/dist/dts/grid-pro.styles.d.ts.map +1 -0
- package/dist/dts/grid-pro.template.d.ts +3 -0
- package/dist/dts/grid-pro.template.d.ts.map +1 -0
- package/dist/dts/grid-pro.types.d.ts +68 -0
- package/dist/dts/grid-pro.types.d.ts.map +1 -0
- package/dist/dts/index.d.ts +20 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/dts/index.federated.d.ts +1 -0
- package/dist/dts/index.federated.d.ts.map +1 -0
- package/dist/dts/style/colors.d.ts +4 -0
- package/dist/dts/style/colors.d.ts.map +1 -0
- package/dist/dts/style/index.d.ts +3 -0
- package/dist/dts/style/index.d.ts.map +1 -0
- package/dist/dts/style/tokens.d.ts +6 -0
- package/dist/dts/style/tokens.d.ts.map +1 -0
- package/dist/dts/utils/index.d.ts +2 -0
- package/dist/dts/utils/index.d.ts.map +1 -0
- package/dist/dts/utils/logger.d.ts +2 -0
- package/dist/dts/utils/logger.d.ts.map +1 -0
- package/dist/esm/cell/cell.js +46 -0
- package/dist/esm/cell/cell.template.js +6 -0
- package/dist/esm/cell/index.js +2 -0
- package/dist/esm/cell-renderers/action.renderer.js +85 -0
- package/dist/esm/cell-renderers/actions-menu.renderer.js +46 -0
- package/dist/esm/cell-renderers/boolean.renderer.js +42 -0
- package/dist/esm/cell-renderers/index.js +5 -0
- package/dist/esm/cell-renderers/select.renderer.js +69 -0
- package/dist/esm/cell-renderers/text.renderer.js +66 -0
- package/dist/esm/cell-renderers/utils/accessor.js +18 -0
- package/dist/esm/cell-renderers/utils/index.js +1 -0
- package/dist/esm/column/column.js +24 -0
- package/dist/esm/column/column.template.js +6 -0
- package/dist/esm/column/index.js +3 -0
- package/dist/esm/column/utils/grid-pro-columns.js +15 -0
- package/dist/esm/column/utils/index.js +1 -0
- package/dist/esm/external/ag-grid-css.js +7166 -0
- package/dist/esm/external/ag-head-css.js +19 -0
- package/dist/esm/external/ag-theme-alpine-no-font-css.js +452 -0
- package/dist/esm/external/ag-theme-balham-no-font-css.js +272 -0
- package/dist/esm/external/ag-theme-material-no-font-css.js +267 -0
- package/dist/esm/external/fonts.js +33 -0
- package/dist/esm/external/index.js +15 -0
- package/dist/esm/grid-components.js +21 -0
- package/dist/esm/grid-pro-genesis-datasource/grid-pro-genesis-datasource-next.js +328 -0
- package/dist/esm/grid-pro-genesis-datasource/grid-pro-genesis-datasource.js +339 -0
- package/dist/esm/grid-pro-genesis-datasource/index.js +2 -0
- package/dist/esm/grid-pro.definitions.js +43 -0
- package/dist/esm/grid-pro.js +297 -0
- package/dist/esm/grid-pro.styles.js +31 -0
- package/dist/esm/grid-pro.template.js +9 -0
- package/dist/esm/grid-pro.types.js +72 -0
- package/dist/esm/index.federated.js +1 -0
- package/dist/esm/index.js +19 -0
- package/dist/esm/style/colors.js +4 -0
- package/dist/esm/style/index.js +2 -0
- package/dist/esm/style/tokens.js +7 -0
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/logger.js +2 -0
- package/externals.js +11 -0
- package/federation.config.json +9 -0
- package/license.txt +46 -0
- package/package.json +107 -0
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Connect, dataServerResultFilter, DatasourceDefaults, extractFieldDefinitions, FieldTypeEnum, MessageType, toFieldMetadata, } from '@genesislcap/foundation-comms';
|
|
3
|
+
import { LifecycleMixin } from '@genesislcap/foundation-utils';
|
|
4
|
+
import { attr, customElement, DOM } from '@microsoft/fast-element';
|
|
5
|
+
import { FoundationElement } from '@microsoft/fast-foundation';
|
|
6
|
+
import { take } from 'rxjs/operators';
|
|
7
|
+
import { dateTimeValueFormatter, dateValueFormatter, getColumnType, getFilterByFieldType, getFilterParamsByFieldType, } from '../grid-pro.definitions';
|
|
8
|
+
import { GridProRendererTypes } from '../grid-pro.types';
|
|
9
|
+
import { logger } from '../utils';
|
|
10
|
+
export class StreamDatasource {
|
|
11
|
+
constructor(options) {
|
|
12
|
+
this.rowCount = 0;
|
|
13
|
+
this.moreRows = false;
|
|
14
|
+
this.calculatedRowsCount = 0;
|
|
15
|
+
this.lastSequenceId = 0;
|
|
16
|
+
this.dataserverStream = options.stream;
|
|
17
|
+
this.resourceName = options.resourceName;
|
|
18
|
+
this.resourceParams = options.resourceParams;
|
|
19
|
+
this.originalCriteriaMatch = options.resourceParams.CRITERIA_MATCH;
|
|
20
|
+
this.resourceIndexes = options.resourceIndexes;
|
|
21
|
+
this.resourceColDefs = options.resourceColDefs;
|
|
22
|
+
this.maxRows = options.maxRows;
|
|
23
|
+
this.maxView = options.maxView;
|
|
24
|
+
this.pagination = options.pagination;
|
|
25
|
+
}
|
|
26
|
+
getRows(params) {
|
|
27
|
+
var _a;
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const toBeAppliedFilterModel = params.request.filterModel;
|
|
30
|
+
if (JSON.stringify(toBeAppliedFilterModel) !== JSON.stringify(this.currentFilterModel) ||
|
|
31
|
+
Object.keys(toBeAppliedFilterModel).length > 0) {
|
|
32
|
+
if (Object.keys(toBeAppliedFilterModel).length === 0 && this.currentFilterModel) {
|
|
33
|
+
this.currentFilterModel = null;
|
|
34
|
+
this.resourceParams.CRITERIA_MATCH = this.originalCriteriaMatch;
|
|
35
|
+
this.restartSubscription();
|
|
36
|
+
}
|
|
37
|
+
else if (Object.keys(toBeAppliedFilterModel).length > 0) {
|
|
38
|
+
this.currentFilterModel = toBeAppliedFilterModel;
|
|
39
|
+
this.resourceParams.CRITERIA_MATCH = this.buildCriteriaMatchFromFilters();
|
|
40
|
+
this.restartSubscription();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const toBeAppliedSortModel = params.request.sortModel;
|
|
44
|
+
if (toBeAppliedSortModel.length !== ((_a = this.currentSortModel) === null || _a === void 0 ? void 0 : _a.length) ||
|
|
45
|
+
toBeAppliedSortModel.length > 0) {
|
|
46
|
+
if (toBeAppliedSortModel.length === 0 && this.currentSortModel) {
|
|
47
|
+
this.currentSortModel = null;
|
|
48
|
+
this.resourceParams.ORDER_BY = null;
|
|
49
|
+
this.resourceParams.REVERSE = null;
|
|
50
|
+
this.restartSubscription();
|
|
51
|
+
}
|
|
52
|
+
else if (toBeAppliedSortModel.length > 0) {
|
|
53
|
+
this.currentSortModel = toBeAppliedSortModel;
|
|
54
|
+
const coldIdBeingSorted = this.currentSortModel[0].colId;
|
|
55
|
+
const sortTypeBeingApplied = this.currentSortModel[0].sort;
|
|
56
|
+
const orderByAndToBeSortedColIds = this.getOrderByAndToBeSortedColIds(this.resourceIndexes, coldIdBeingSorted);
|
|
57
|
+
orderByAndToBeSortedColIds.toBeSorted.forEach((colId) => {
|
|
58
|
+
this.currentSortModel.push({ sort: sortTypeBeingApplied, colId });
|
|
59
|
+
});
|
|
60
|
+
this.resourceParams.ORDER_BY = orderByAndToBeSortedColIds.orderBy;
|
|
61
|
+
this.resourceParams.REVERSE = sortTypeBeingApplied === 'desc' ? true : false;
|
|
62
|
+
this.restartSubscription();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (this.moreRows && params.request.startRow >= this.maxRows) {
|
|
66
|
+
this.connect.getMoreRows(this.streamSourceRef);
|
|
67
|
+
}
|
|
68
|
+
this.dataserverStream.pipe(take(1)).subscribe((result) => {
|
|
69
|
+
var _a, _b;
|
|
70
|
+
const messageType = result.MESSAGE_TYPE;
|
|
71
|
+
if (messageType &&
|
|
72
|
+
(messageType === MessageType.LOGOFF_ACK || messageType === MessageType.MSG_NACK)) {
|
|
73
|
+
params.fail();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this.moreRows = result.MORE_ROWS;
|
|
77
|
+
let rowData = [];
|
|
78
|
+
if (result.ROW) {
|
|
79
|
+
const nextMessage = dataServerResultFilter(result);
|
|
80
|
+
rowData = this.handleStreamUpdate(nextMessage);
|
|
81
|
+
}
|
|
82
|
+
this.lastSequenceId = result.SEQUENCE_ID;
|
|
83
|
+
if (this.lastSequenceId === 1) {
|
|
84
|
+
this.streamSourceRef = result.SOURCE_REF;
|
|
85
|
+
this.rowCount = (_a = result.ROWS_COUNT) !== null && _a !== void 0 ? _a : rowData.length;
|
|
86
|
+
}
|
|
87
|
+
this.calculatedRowsCount += (_b = rowData === null || rowData === void 0 ? void 0 : rowData.length) !== null && _b !== void 0 ? _b : 0;
|
|
88
|
+
const successRowData = { rowData };
|
|
89
|
+
if (this.pagination) {
|
|
90
|
+
successRowData.rowCount = Math.min(this.rowCount, this.maxView);
|
|
91
|
+
}
|
|
92
|
+
else if (params.request.endRow > this.maxView ||
|
|
93
|
+
params.request.endRow > this.calculatedRowsCount) {
|
|
94
|
+
successRowData.rowCount = this.calculatedRowsCount;
|
|
95
|
+
}
|
|
96
|
+
params.success(successRowData);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
restartSubscription() {
|
|
101
|
+
this.connect.dataLogoff(this.streamSourceRef);
|
|
102
|
+
const streamOnMessage = (message) => message;
|
|
103
|
+
const onError = (error) => logger.error(error);
|
|
104
|
+
this.dataserverStream = this.connect.stream(this.resourceName, streamOnMessage, onError, this.resourceParams);
|
|
105
|
+
}
|
|
106
|
+
getOrderByAndToBeSortedColIds(map, searchValue) {
|
|
107
|
+
for (const [key, value] of map.entries()) {
|
|
108
|
+
const searchIndex = value.findIndex((x) => x === searchValue);
|
|
109
|
+
if (searchIndex !== -1) {
|
|
110
|
+
const copy = [...value];
|
|
111
|
+
copy.splice(searchIndex, 1);
|
|
112
|
+
return { orderBy: key, toBeSorted: copy };
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
handleStreamUpdate(result) {
|
|
117
|
+
var _a;
|
|
118
|
+
if (!result)
|
|
119
|
+
return;
|
|
120
|
+
const rows = new Map();
|
|
121
|
+
(_a = result.inserts) === null || _a === void 0 ? void 0 : _a.forEach((insertData) => {
|
|
122
|
+
rows.set(insertData.ROW_REF, insertData);
|
|
123
|
+
});
|
|
124
|
+
const rowData = Array.from(rows.values());
|
|
125
|
+
return rowData;
|
|
126
|
+
}
|
|
127
|
+
buildCriteriaMatchFromFilters() {
|
|
128
|
+
this.resourceParams.CRITERIA_MATCH = this.originalCriteriaMatch;
|
|
129
|
+
if (this.resourceParams.CRITERIA_MATCH &&
|
|
130
|
+
typeof this.resourceParams.CRITERIA_MATCH === 'string') {
|
|
131
|
+
this.resourceParams.CRITERIA_MATCH = this.resourceParams.CRITERIA_MATCH.split(';');
|
|
132
|
+
}
|
|
133
|
+
if (!this.resourceParams.CRITERIA_MATCH) {
|
|
134
|
+
this.resourceParams.CRITERIA_MATCH = [];
|
|
135
|
+
}
|
|
136
|
+
const criteria = this.resourceParams.CRITERIA_MATCH.concat(this.criteriaFromFilters());
|
|
137
|
+
return criteria.join(' && ');
|
|
138
|
+
}
|
|
139
|
+
criteriaFromFilters() {
|
|
140
|
+
const filters = [];
|
|
141
|
+
this.getFiltersByType('text').forEach((k) => filters.push(`Expr.containsIgnoreCase(${k}, '${this.currentFilterModel[k].filter.toLowerCase()}')`));
|
|
142
|
+
return filters;
|
|
143
|
+
}
|
|
144
|
+
getFiltersByType(filterType) {
|
|
145
|
+
return Object.keys(this.currentFilterModel)
|
|
146
|
+
.filter((k) => this.resourceColDefs.findIndex((o) => o.NAME === k) !== -1)
|
|
147
|
+
.filter((k) => this.currentFilterModel[k].filterType === filterType);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
__decorate([
|
|
151
|
+
Connect
|
|
152
|
+
], StreamDatasource.prototype, "connect", void 0);
|
|
153
|
+
let GridProGenesisDatasourceNext = class GridProGenesisDatasourceNext extends LifecycleMixin(FoundationElement) {
|
|
154
|
+
constructor() {
|
|
155
|
+
super(...arguments);
|
|
156
|
+
this.isSnapshot = false;
|
|
157
|
+
this.maxRows = DatasourceDefaults.MAX_ROWS_250;
|
|
158
|
+
this.maxView = DatasourceDefaults.MAX_VIEW_1000;
|
|
159
|
+
this.pagination = false;
|
|
160
|
+
this.reverse = false;
|
|
161
|
+
}
|
|
162
|
+
connectedCallback() {
|
|
163
|
+
super.connectedCallback();
|
|
164
|
+
DOM.queueUpdate(() => {
|
|
165
|
+
if (!this.shouldRunConnect)
|
|
166
|
+
return;
|
|
167
|
+
this.init();
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
disconnectedCallback() {
|
|
171
|
+
super.disconnectedCallback();
|
|
172
|
+
DOM.queueUpdate(() => {
|
|
173
|
+
if (!this.shouldRunDisconnect)
|
|
174
|
+
return;
|
|
175
|
+
this.reset();
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
init() {
|
|
179
|
+
if (this.agGrid && this.resourceName && this.connect.isConnected) {
|
|
180
|
+
this.agGrid.gridOptions = {
|
|
181
|
+
cacheBlockSize: this.maxRows,
|
|
182
|
+
defaultColDef: {
|
|
183
|
+
filter: true,
|
|
184
|
+
resizable: true,
|
|
185
|
+
sortable: true,
|
|
186
|
+
},
|
|
187
|
+
pagination: this.pagination,
|
|
188
|
+
paginationPageSize: this.maxRows,
|
|
189
|
+
rowBuffer: 0,
|
|
190
|
+
rowModelType: 'serverSide',
|
|
191
|
+
suppressServerSideInfiniteScroll: false,
|
|
192
|
+
suppressMultiSort: true,
|
|
193
|
+
onFilterChanged: (params) => { },
|
|
194
|
+
onSortChanged: (params) => { },
|
|
195
|
+
};
|
|
196
|
+
this.agGrid.addEventListener('onGridReady', () => __awaiter(this, void 0, void 0, function* () {
|
|
197
|
+
const meta = yield this.connect
|
|
198
|
+
.getMetadata(this.resourceName)
|
|
199
|
+
.catch((e) => logger.error(e));
|
|
200
|
+
if (!meta)
|
|
201
|
+
return false;
|
|
202
|
+
this.indexes = this.getResourceIndexes(meta.INDEXES);
|
|
203
|
+
this.originalFieldDef = extractFieldDefinitions(meta);
|
|
204
|
+
const fieldMetadata = toFieldMetadata(this.originalFieldDef);
|
|
205
|
+
const agColumnDefs = this.getAgColumnDefs(fieldMetadata);
|
|
206
|
+
this.agGrid.gridApi.setColumnDefs(agColumnDefs);
|
|
207
|
+
const dataserverStream = yield this.createDataserverStream();
|
|
208
|
+
this.dataserverStream = new StreamDatasource({
|
|
209
|
+
stream: dataserverStream,
|
|
210
|
+
resourceName: this.resourceName,
|
|
211
|
+
resourceParams: this.params,
|
|
212
|
+
resourceIndexes: this.indexes,
|
|
213
|
+
resourceColDefs: this.originalFieldDef,
|
|
214
|
+
maxRows: this.maxRows,
|
|
215
|
+
maxView: this.maxView,
|
|
216
|
+
pagination: this.pagination,
|
|
217
|
+
});
|
|
218
|
+
this.agGrid.gridApi.setServerSideDatasource(this.dataserverStream);
|
|
219
|
+
}), { once: true });
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
logger.warn(`Application not connected, falling back to local columnDefs/rowData`);
|
|
223
|
+
}
|
|
224
|
+
reset() { }
|
|
225
|
+
get agGrid() {
|
|
226
|
+
return this.parentElement;
|
|
227
|
+
}
|
|
228
|
+
getResourceIndexes(avaialbleIndexes) {
|
|
229
|
+
const resourceIndexesMap = new Map();
|
|
230
|
+
avaialbleIndexes === null || avaialbleIndexes === void 0 ? void 0 : avaialbleIndexes.forEach((index) => {
|
|
231
|
+
resourceIndexesMap.set(index.NAME, index.FIELDS.split(' '));
|
|
232
|
+
});
|
|
233
|
+
return resourceIndexesMap;
|
|
234
|
+
}
|
|
235
|
+
get params() {
|
|
236
|
+
const params = {
|
|
237
|
+
CRITERIA_MATCH: this.criteria,
|
|
238
|
+
FIELDS: this.fields,
|
|
239
|
+
MAX_ROWS: this.maxRows,
|
|
240
|
+
MAX_VIEW: this.maxView,
|
|
241
|
+
REVERSE: this.reverse,
|
|
242
|
+
};
|
|
243
|
+
const keys = Array.from(this.indexes.keys());
|
|
244
|
+
if (this.orderBy) {
|
|
245
|
+
if (keys.findIndex((key) => key === this.orderBy) > -1) {
|
|
246
|
+
params.ORDER_BY = this.orderBy;
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
const validIndexes = keys.map((key) => key);
|
|
250
|
+
logger.warn('Specified [orderBy] index is not valid and will not be used. See https://learn.genesis.global/docs/database/data-types/index-entities/ - Available indexes:', validIndexes);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
logger.debug('Getting configured params:', params);
|
|
254
|
+
return params;
|
|
255
|
+
}
|
|
256
|
+
createDataserverStream(existingParams = null) {
|
|
257
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
258
|
+
const streamOnMessage = (message) => message;
|
|
259
|
+
const onError = (error) => logger.error(error);
|
|
260
|
+
return this.connect.stream(this.resourceName, streamOnMessage, onError, existingParams !== null && existingParams !== void 0 ? existingParams : this.params);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
getAgColumnDefs(fieldsMetadata) {
|
|
264
|
+
const colDefsFromGenesisData = fieldsMetadata === null || fieldsMetadata === void 0 ? void 0 : fieldsMetadata.flatMap((field) => {
|
|
265
|
+
var _a;
|
|
266
|
+
const cellConfigs = {};
|
|
267
|
+
cellConfigs.filterParams = getFilterParamsByFieldType(field.type);
|
|
268
|
+
switch (field.type) {
|
|
269
|
+
case FieldTypeEnum.BOOLEAN:
|
|
270
|
+
if (this.agGrid.autoCellRendererByType) {
|
|
271
|
+
cellConfigs.cellRenderer = GridProRendererTypes.boolean;
|
|
272
|
+
}
|
|
273
|
+
break;
|
|
274
|
+
case FieldTypeEnum.DATE:
|
|
275
|
+
cellConfigs.valueFormatter = dateValueFormatter;
|
|
276
|
+
break;
|
|
277
|
+
case FieldTypeEnum.DATETIME:
|
|
278
|
+
cellConfigs.valueFormatter = dateTimeValueFormatter;
|
|
279
|
+
break;
|
|
280
|
+
default:
|
|
281
|
+
break;
|
|
282
|
+
}
|
|
283
|
+
const templateColDef = (_a = this.agGrid.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDef(field.name);
|
|
284
|
+
if (this.agGrid.onlyTemplateColDefs && !templateColDef) {
|
|
285
|
+
return [];
|
|
286
|
+
}
|
|
287
|
+
return Object.assign(Object.assign({ field: field.name, type: getColumnType(field.type), filter: getFilterByFieldType(field.type), sortable: [].concat(...this.indexes.values()).includes(field.name) }, cellConfigs), templateColDef);
|
|
288
|
+
});
|
|
289
|
+
const colDefsMergedWithTemplateDefs = this.agGrid.applyTemplateDefinitions(colDefsFromGenesisData);
|
|
290
|
+
return colDefsMergedWithTemplateDefs;
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
__decorate([
|
|
294
|
+
Connect
|
|
295
|
+
], GridProGenesisDatasourceNext.prototype, "connect", void 0);
|
|
296
|
+
__decorate([
|
|
297
|
+
attr
|
|
298
|
+
], GridProGenesisDatasourceNext.prototype, "criteria", void 0);
|
|
299
|
+
__decorate([
|
|
300
|
+
attr
|
|
301
|
+
], GridProGenesisDatasourceNext.prototype, "fields", void 0);
|
|
302
|
+
__decorate([
|
|
303
|
+
attr({ mode: 'boolean', attribute: 'is-snapshot' })
|
|
304
|
+
], GridProGenesisDatasourceNext.prototype, "isSnapshot", void 0);
|
|
305
|
+
__decorate([
|
|
306
|
+
attr({ attribute: 'max-rows' })
|
|
307
|
+
], GridProGenesisDatasourceNext.prototype, "maxRows", void 0);
|
|
308
|
+
__decorate([
|
|
309
|
+
attr({ attribute: 'max-view' })
|
|
310
|
+
], GridProGenesisDatasourceNext.prototype, "maxView", void 0);
|
|
311
|
+
__decorate([
|
|
312
|
+
attr({ attribute: 'order-by' })
|
|
313
|
+
], GridProGenesisDatasourceNext.prototype, "orderBy", void 0);
|
|
314
|
+
__decorate([
|
|
315
|
+
attr({ attribute: 'resource-name' })
|
|
316
|
+
], GridProGenesisDatasourceNext.prototype, "resourceName", void 0);
|
|
317
|
+
__decorate([
|
|
318
|
+
attr({ mode: 'boolean' })
|
|
319
|
+
], GridProGenesisDatasourceNext.prototype, "pagination", void 0);
|
|
320
|
+
__decorate([
|
|
321
|
+
attr({ mode: 'boolean' })
|
|
322
|
+
], GridProGenesisDatasourceNext.prototype, "reverse", void 0);
|
|
323
|
+
GridProGenesisDatasourceNext = __decorate([
|
|
324
|
+
customElement({
|
|
325
|
+
name: 'grid-pro-genesis-datasource-next',
|
|
326
|
+
})
|
|
327
|
+
], GridProGenesisDatasourceNext);
|
|
328
|
+
export { GridProGenesisDatasourceNext };
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import { Connect, dataServerResultFilter, Datasource, DatasourceDefaults, FieldTypeEnum, MessageType, normaliseCriteria, } from '@genesislcap/foundation-comms';
|
|
3
|
+
import { LifecycleMixin } from '@genesislcap/foundation-utils';
|
|
4
|
+
import { attr, customElement, DOM, observable } from '@microsoft/fast-element';
|
|
5
|
+
import { FoundationElement } from '@microsoft/fast-foundation';
|
|
6
|
+
import { BehaviorSubject } from 'rxjs';
|
|
7
|
+
import { debounceTime, skip, tap } from 'rxjs/operators';
|
|
8
|
+
import { dateTimeValueFormatter, dateValueFormatter, getFilterParamsByFieldType, } from '../grid-pro.definitions';
|
|
9
|
+
import { GridProRendererTypes } from '../grid-pro.types';
|
|
10
|
+
import { logger } from '../utils/logger';
|
|
11
|
+
const criteriaDelimiter = ';';
|
|
12
|
+
const criteriaJoin = ' && ';
|
|
13
|
+
const withoutFullInit = null;
|
|
14
|
+
let GridProGenesisDatasource = class GridProGenesisDatasource extends LifecycleMixin(FoundationElement) {
|
|
15
|
+
constructor() {
|
|
16
|
+
super(...arguments);
|
|
17
|
+
this.isSnapshot = false;
|
|
18
|
+
this.maxRows = DatasourceDefaults.MAX_ROWS_250;
|
|
19
|
+
this.maxView = DatasourceDefaults.MAX_VIEW_1000;
|
|
20
|
+
this.reverse = false;
|
|
21
|
+
this.rowId = 'ROW_REF';
|
|
22
|
+
this.requiresFullRowDataAndColDefs = true;
|
|
23
|
+
this.rows = new Map();
|
|
24
|
+
this.dataSubWasLoggedOff = false;
|
|
25
|
+
this.criteriaFromFilters = new Map();
|
|
26
|
+
this.update = new BehaviorSubject(new Map());
|
|
27
|
+
}
|
|
28
|
+
connectedCallback() {
|
|
29
|
+
super.connectedCallback();
|
|
30
|
+
DOM.queueUpdate(() => {
|
|
31
|
+
if (!this.shouldRunConnect)
|
|
32
|
+
return;
|
|
33
|
+
this.init();
|
|
34
|
+
});
|
|
35
|
+
this.connectionSub = this.connect._status.subscribe((status) => {
|
|
36
|
+
if (status === 'connected') {
|
|
37
|
+
this.agGrid.removeAttribute('ds-disconnected');
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.agGrid.setAttribute('ds-disconnected', 'ds-disconnected');
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
disconnectedCallback() {
|
|
45
|
+
var _a;
|
|
46
|
+
super.disconnectedCallback();
|
|
47
|
+
DOM.queueUpdate(() => {
|
|
48
|
+
if (!this.shouldRunDisconnect)
|
|
49
|
+
return;
|
|
50
|
+
this.reset();
|
|
51
|
+
});
|
|
52
|
+
(_a = this.connectionSub) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
53
|
+
}
|
|
54
|
+
deepClone() {
|
|
55
|
+
const copy = super.deepClone();
|
|
56
|
+
copy.deferredGridOptions = structuredClone(this.deferredGridOptions);
|
|
57
|
+
copy.request = structuredClone(this.request);
|
|
58
|
+
return copy;
|
|
59
|
+
}
|
|
60
|
+
get agGrid() {
|
|
61
|
+
return this.parentElement;
|
|
62
|
+
}
|
|
63
|
+
init() {
|
|
64
|
+
if (this.agGrid && this.resourceName && this.connect.isConnected) {
|
|
65
|
+
const gridOptions = Object.assign({ getRowId: (params) => params.data[this.rowId] }, this.deferredGridOptions);
|
|
66
|
+
this.agGrid.gridOptions = Object.assign({}, gridOptions);
|
|
67
|
+
this.agGrid.addEventListener('onGridReady', () => __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
yield this.loadResourceData();
|
|
69
|
+
}), { once: true });
|
|
70
|
+
const filterDebounceTime = 600;
|
|
71
|
+
this.updateSub = this.update
|
|
72
|
+
.pipe(skip(1), debounceTime(filterDebounceTime), tap((f) => logger.debug('filters (debounced): ', f)))
|
|
73
|
+
.subscribe((value) => {
|
|
74
|
+
this.loadResourceData(withoutFullInit);
|
|
75
|
+
});
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
logger.warn(`Application not connected, falling back to local columnDefs/rowData`);
|
|
79
|
+
}
|
|
80
|
+
reset() {
|
|
81
|
+
var _a, _b;
|
|
82
|
+
(_a = this.dataSub) === null || _a === void 0 ? void 0 : _a.unsubscribe();
|
|
83
|
+
(_b = this.updateSub) === null || _b === void 0 ? void 0 : _b.unsubscribe();
|
|
84
|
+
this.requiresFullRowDataAndColDefs = true;
|
|
85
|
+
this.clearRowData();
|
|
86
|
+
}
|
|
87
|
+
clearRowData() {
|
|
88
|
+
var _a, _b;
|
|
89
|
+
this.rows = new Map();
|
|
90
|
+
(_b = (_a = this.agGrid) === null || _a === void 0 ? void 0 : _a.gridApi) === null || _b === void 0 ? void 0 : _b.setRowData([]);
|
|
91
|
+
}
|
|
92
|
+
updateRowData(rowData) {
|
|
93
|
+
const agColumnDefs = this.getAgColumnDefs(this.datasource.fieldMetadata);
|
|
94
|
+
if (agColumnDefs.length > 0) {
|
|
95
|
+
this.agGrid.gridApi.setColumnDefs(agColumnDefs);
|
|
96
|
+
}
|
|
97
|
+
this.agGrid.gridApi.setRowData(rowData);
|
|
98
|
+
this.requiresFullRowDataAndColDefs = false;
|
|
99
|
+
}
|
|
100
|
+
loadResourceData(withFullInit = true) {
|
|
101
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
102
|
+
const requiresMetadataFetch = withFullInit || !this.datasource.initialized;
|
|
103
|
+
if (!requiresMetadataFetch) {
|
|
104
|
+
this.connect.dataLogoff(this.sourceRef);
|
|
105
|
+
this.clearRowData();
|
|
106
|
+
}
|
|
107
|
+
const initOK = yield this.datasource.init(this.datasourceOptions(), requiresMetadataFetch);
|
|
108
|
+
if (!initOK) {
|
|
109
|
+
logger.debug(`Genesis Datasource init failed for ${this.resourceName}`);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (this.isSnapshot) {
|
|
113
|
+
const result = yield this.datasource.snapshot();
|
|
114
|
+
if (result) {
|
|
115
|
+
const rowData = this.handleSnapshot(result);
|
|
116
|
+
this.updateRowData(rowData);
|
|
117
|
+
}
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
logger.debug(`requesting stream for ${this.resourceName}`);
|
|
121
|
+
this.dataSub = this.datasource.stream.subscribe((result) => {
|
|
122
|
+
this.sourceRef = result.SOURCE_REF;
|
|
123
|
+
const messageType = result.MESSAGE_TYPE;
|
|
124
|
+
if (messageType && messageType === MessageType.LOGOFF_ACK) {
|
|
125
|
+
this.dataSubWasLoggedOff = true;
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
this.dataSubWasLoggedOff = false;
|
|
129
|
+
if (result.ROW) {
|
|
130
|
+
const nextMessage = dataServerResultFilter(result);
|
|
131
|
+
this.handleStreamResult(nextMessage);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
this.handleStreamResult(result);
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
handleSnapshot(result) {
|
|
140
|
+
if (Array.isArray(result))
|
|
141
|
+
return result;
|
|
142
|
+
if (result.REPLY) {
|
|
143
|
+
return result.REPLY;
|
|
144
|
+
}
|
|
145
|
+
if (result.ROW) {
|
|
146
|
+
return dataServerResultFilter(result).inserts;
|
|
147
|
+
}
|
|
148
|
+
return result.inserts;
|
|
149
|
+
}
|
|
150
|
+
datasourceOptions() {
|
|
151
|
+
return {
|
|
152
|
+
criteria: this.buildCriteria(),
|
|
153
|
+
fields: this.fields,
|
|
154
|
+
isSnapshot: this.isSnapshot,
|
|
155
|
+
orderBy: this.orderBy,
|
|
156
|
+
resourceName: this.resourceName,
|
|
157
|
+
request: this.request,
|
|
158
|
+
reverse: this.reverse,
|
|
159
|
+
maxRows: this.maxRows,
|
|
160
|
+
maxView: this.maxView,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
handleStreamResult(result) {
|
|
164
|
+
if (!result)
|
|
165
|
+
return;
|
|
166
|
+
const isRequestServer = result.hasOwnProperty('REPLY');
|
|
167
|
+
if (isRequestServer) {
|
|
168
|
+
this.applyRequestServerData(result);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
this.applyDataserverData(result);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
applyRequestServerData(requestServerResult) {
|
|
175
|
+
var _a, _b;
|
|
176
|
+
if (!Array.isArray(requestServerResult.REPLY) ||
|
|
177
|
+
!((_a = requestServerResult.MESSAGE_TYPE) === null || _a === void 0 ? void 0 : _a.startsWith('REP_'))) {
|
|
178
|
+
logger.error('received invalid RequestServerResult', requestServerResult);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (this.requiresFullRowDataAndColDefs) {
|
|
182
|
+
if (this.rowId !== 'ROW_REF') {
|
|
183
|
+
(_b = requestServerResult.REPLY) === null || _b === void 0 ? void 0 : _b.forEach((insertData) => {
|
|
184
|
+
this.rows.set(insertData[this.rowId], insertData);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
const rowData = this.rows.size > 0 ? Array.from(this.rows.values()) : requestServerResult.REPLY;
|
|
188
|
+
this.updateRowData(rowData);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
this.agTransaction = { add: [], remove: [], update: [] };
|
|
192
|
+
this.handleStreamInserts(requestServerResult.REPLY);
|
|
193
|
+
const rowsToDelete = Array.from(this.rows.values()).filter((row) => !requestServerResult.REPLY.includes(row));
|
|
194
|
+
this.handleStreamDeletes(rowsToDelete);
|
|
195
|
+
this.agGrid.gridApi.applyTransactionAsync(this.agTransaction);
|
|
196
|
+
}
|
|
197
|
+
applyDataserverData(dataServerResult) {
|
|
198
|
+
var _a;
|
|
199
|
+
if (this.requiresFullRowDataAndColDefs) {
|
|
200
|
+
(_a = dataServerResult.inserts) === null || _a === void 0 ? void 0 : _a.forEach((insertData) => {
|
|
201
|
+
this.rows.set(insertData[this.rowId], insertData);
|
|
202
|
+
});
|
|
203
|
+
const rowData = Array.from(this.rows.values());
|
|
204
|
+
this.updateRowData(rowData);
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
this.agTransaction = { add: [], remove: [], update: [] };
|
|
208
|
+
this.handleStreamInserts(dataServerResult.inserts);
|
|
209
|
+
this.handleStreamDeletes(dataServerResult.deletes);
|
|
210
|
+
this.handleStreamUpdates(dataServerResult.updates);
|
|
211
|
+
this.agGrid.gridApi.applyTransactionAsync(this.agTransaction);
|
|
212
|
+
}
|
|
213
|
+
handleStreamInserts(insertedRows) {
|
|
214
|
+
insertedRows === null || insertedRows === void 0 ? void 0 : insertedRows.forEach((insertData) => {
|
|
215
|
+
if (this.rows.has(insertData[this.rowId]) || this.dataSubWasLoggedOff) {
|
|
216
|
+
const rowToBeUpdated = this.rows.get(insertData[this.rowId]);
|
|
217
|
+
const updatedRow = Object.assign(Object.assign({}, rowToBeUpdated), insertData);
|
|
218
|
+
this.agTransaction.update.push(updatedRow);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
this.agTransaction.add.push(insertData);
|
|
222
|
+
this.agTransaction.addIndex = 0;
|
|
223
|
+
}
|
|
224
|
+
this.rows.set(insertData[this.rowId], insertData);
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
handleStreamDeletes(deletedRows) {
|
|
228
|
+
deletedRows === null || deletedRows === void 0 ? void 0 : deletedRows.forEach((deleteData) => {
|
|
229
|
+
this.agTransaction.remove.push({ [this.rowId]: deleteData[this.rowId] });
|
|
230
|
+
this.rows.delete(deleteData[this.rowId]);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
handleStreamUpdates(updatedRows) {
|
|
234
|
+
updatedRows === null || updatedRows === void 0 ? void 0 : updatedRows.forEach((updateData) => {
|
|
235
|
+
const rowToBeUpdated = this.rows.get(updateData[this.rowId]);
|
|
236
|
+
const updatedRow = Object.assign(Object.assign({}, rowToBeUpdated), updateData);
|
|
237
|
+
this.agTransaction.update.push(updatedRow);
|
|
238
|
+
this.rows.set(updateData[this.rowId], updatedRow);
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
getAgColumnDefs(fieldsMetadata) {
|
|
242
|
+
const colDefsFromGenesisData = fieldsMetadata === null || fieldsMetadata === void 0 ? void 0 : fieldsMetadata.flatMap((field) => {
|
|
243
|
+
var _a;
|
|
244
|
+
const cellConfigs = {};
|
|
245
|
+
cellConfigs.filterParams = getFilterParamsByFieldType(field.type);
|
|
246
|
+
switch (field.type) {
|
|
247
|
+
case FieldTypeEnum.BOOLEAN:
|
|
248
|
+
if (this.agGrid.autoCellRendererByType) {
|
|
249
|
+
cellConfigs.cellRenderer = GridProRendererTypes.boolean;
|
|
250
|
+
}
|
|
251
|
+
break;
|
|
252
|
+
case FieldTypeEnum.DATE:
|
|
253
|
+
cellConfigs.valueFormatter = dateValueFormatter;
|
|
254
|
+
break;
|
|
255
|
+
case FieldTypeEnum.DATETIME:
|
|
256
|
+
cellConfigs.valueFormatter = dateTimeValueFormatter;
|
|
257
|
+
break;
|
|
258
|
+
default:
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
const templateColDef = (_a = this.agGrid.gridApi) === null || _a === void 0 ? void 0 : _a.getColumnDef(field.name);
|
|
262
|
+
if (this.agGrid.onlyTemplateColDefs && !templateColDef) {
|
|
263
|
+
return [];
|
|
264
|
+
}
|
|
265
|
+
if (this.fields && !this.fields.includes(field.name)) {
|
|
266
|
+
return [];
|
|
267
|
+
}
|
|
268
|
+
return Object.assign(Object.assign({ field: field.name }, cellConfigs), templateColDef);
|
|
269
|
+
});
|
|
270
|
+
const colDefsMergedWithTemplateDefs = this.agGrid.applyTemplateDefinitions(colDefsFromGenesisData);
|
|
271
|
+
return colDefsMergedWithTemplateDefs;
|
|
272
|
+
}
|
|
273
|
+
buildCriteria() {
|
|
274
|
+
var _a;
|
|
275
|
+
const initialCriteria = ((_a = this.criteria) === null || _a === void 0 ? void 0 : _a.split(criteriaDelimiter)) || [];
|
|
276
|
+
const criteria = initialCriteria.concat(Array.from(this.criteriaFromFilters.values()));
|
|
277
|
+
return normaliseCriteria(criteria.join(criteriaJoin), criteriaDelimiter);
|
|
278
|
+
}
|
|
279
|
+
criteriaChanged(oldCriteria, newCriteria) {
|
|
280
|
+
const firstCriteria = !oldCriteria && newCriteria;
|
|
281
|
+
const criteriaNotDuplicate = oldCriteria !== normaliseCriteria(newCriteria, criteriaDelimiter);
|
|
282
|
+
if (firstCriteria || criteriaNotDuplicate) {
|
|
283
|
+
DOM.queueUpdate(() => this.loadResourceData(withoutFullInit));
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
setFilter(fieldName, newFilter) {
|
|
287
|
+
this.criteriaFromFilters.set(fieldName, newFilter);
|
|
288
|
+
this.update.next(this.criteriaFromFilters);
|
|
289
|
+
}
|
|
290
|
+
removeFilter(fieldName) {
|
|
291
|
+
this.criteriaFromFilters.delete(fieldName);
|
|
292
|
+
this.update.next(this.criteriaFromFilters);
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
__decorate([
|
|
296
|
+
Connect
|
|
297
|
+
], GridProGenesisDatasource.prototype, "connect", void 0);
|
|
298
|
+
__decorate([
|
|
299
|
+
Datasource
|
|
300
|
+
], GridProGenesisDatasource.prototype, "datasource", void 0);
|
|
301
|
+
__decorate([
|
|
302
|
+
observable
|
|
303
|
+
], GridProGenesisDatasource.prototype, "deferredGridOptions", void 0);
|
|
304
|
+
__decorate([
|
|
305
|
+
attr
|
|
306
|
+
], GridProGenesisDatasource.prototype, "criteria", void 0);
|
|
307
|
+
__decorate([
|
|
308
|
+
attr
|
|
309
|
+
], GridProGenesisDatasource.prototype, "fields", void 0);
|
|
310
|
+
__decorate([
|
|
311
|
+
attr({ mode: 'boolean', attribute: 'is-snapshot' })
|
|
312
|
+
], GridProGenesisDatasource.prototype, "isSnapshot", void 0);
|
|
313
|
+
__decorate([
|
|
314
|
+
attr({ attribute: 'max-rows' })
|
|
315
|
+
], GridProGenesisDatasource.prototype, "maxRows", void 0);
|
|
316
|
+
__decorate([
|
|
317
|
+
attr({ attribute: 'max-view' })
|
|
318
|
+
], GridProGenesisDatasource.prototype, "maxView", void 0);
|
|
319
|
+
__decorate([
|
|
320
|
+
attr({ attribute: 'order-by' })
|
|
321
|
+
], GridProGenesisDatasource.prototype, "orderBy", void 0);
|
|
322
|
+
__decorate([
|
|
323
|
+
observable
|
|
324
|
+
], GridProGenesisDatasource.prototype, "request", void 0);
|
|
325
|
+
__decorate([
|
|
326
|
+
attr({ attribute: 'resource-name' })
|
|
327
|
+
], GridProGenesisDatasource.prototype, "resourceName", void 0);
|
|
328
|
+
__decorate([
|
|
329
|
+
attr({ mode: 'boolean' })
|
|
330
|
+
], GridProGenesisDatasource.prototype, "reverse", void 0);
|
|
331
|
+
__decorate([
|
|
332
|
+
attr({ attribute: 'row-id' })
|
|
333
|
+
], GridProGenesisDatasource.prototype, "rowId", void 0);
|
|
334
|
+
GridProGenesisDatasource = __decorate([
|
|
335
|
+
customElement({
|
|
336
|
+
name: 'grid-pro-genesis-datasource',
|
|
337
|
+
})
|
|
338
|
+
], GridProGenesisDatasource);
|
|
339
|
+
export { GridProGenesisDatasource };
|