@michalrakus/x-react-web-lib 1.4.1 → 1.5.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/lib/components/XLazyDataTable.d.ts +3 -1
- package/lib/components/XLazyDataTable.js +96 -53
- package/lib/components/XUtils.d.ts +1 -1
- package/lib/components/XUtils.js +2 -2
- package/lib/serverApi/FindParam.d.ts +11 -0
- package/lib/serverApi/FindParam.js +8 -1
- package/lib/serverApi/FindResult.d.ts +4 -0
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import React, { ReactChild } from 'react';
|
|
|
2
2
|
import { DataTableFilterMetaData, DataTableOperatorFilterMetaData } from 'primereact/datatable';
|
|
3
3
|
import { ColumnBodyOptions, ColumnFilterElementTemplateOptions } from 'primereact/column';
|
|
4
4
|
import { SearchTableParams } from "./SearchTableParams";
|
|
5
|
-
import { XCustomFilter } from "../serverApi/FindParam";
|
|
5
|
+
import { XAggregateType, XCustomFilter } from "../serverApi/FindParam";
|
|
6
6
|
import { XOnSaveOrCancelProp } from "./XFormBase";
|
|
7
7
|
export type XBetweenFilterProp = "row" | "column" | undefined;
|
|
8
8
|
export interface XEditModeHandlers {
|
|
@@ -36,6 +36,7 @@ export interface XLazyDataTableProps {
|
|
|
36
36
|
initSortField?: string;
|
|
37
37
|
searchTableParams?: SearchTableParams;
|
|
38
38
|
width?: string;
|
|
39
|
+
dataLoadedState?: [boolean, React.Dispatch<React.SetStateAction<boolean>>];
|
|
39
40
|
editMode?: boolean;
|
|
40
41
|
editModeHandlers?: XEditModeHandlers;
|
|
41
42
|
displayed?: boolean;
|
|
@@ -63,6 +64,7 @@ export interface XLazyColumnProps {
|
|
|
63
64
|
showFilterMenu?: boolean;
|
|
64
65
|
betweenFilter?: XBetweenFilterProp | "noBetween";
|
|
65
66
|
width?: string;
|
|
67
|
+
aggregateType?: XAggregateType;
|
|
66
68
|
filterElement?: XFilterElementProp;
|
|
67
69
|
body?: React.ReactNode | ((data: any, options: ColumnBodyOptions) => React.ReactNode);
|
|
68
70
|
}
|
|
@@ -115,17 +115,40 @@ var api_1 = require("primereact/api");
|
|
|
115
115
|
var XCalendar_1 = require("./XCalendar");
|
|
116
116
|
var XInputDecimalBase_1 = require("./XInputDecimalBase");
|
|
117
117
|
var XLazyDataTable = function (props) {
|
|
118
|
+
var _a;
|
|
118
119
|
// must be here, is used in createInitFilters()
|
|
119
120
|
var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity);
|
|
120
|
-
var
|
|
121
|
+
var createAggregateItems = function () {
|
|
121
122
|
var e_1, _a;
|
|
122
|
-
var
|
|
123
|
-
//let columns = dataTableEl.current.props.children; - does not work
|
|
123
|
+
var aggregateItems = [];
|
|
124
124
|
var columns = props.children;
|
|
125
125
|
try {
|
|
126
126
|
for (var columns_1 = __values(columns), columns_1_1 = columns_1.next(); !columns_1_1.done; columns_1_1 = columns_1.next()) {
|
|
127
127
|
var column = columns_1_1.value;
|
|
128
128
|
var xLazyColumn = column; // nevedel som to krajsie...
|
|
129
|
+
if (xLazyColumn.props.aggregateType) {
|
|
130
|
+
aggregateItems.push({ field: xLazyColumn.props.field, aggregateType: xLazyColumn.props.aggregateType });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
135
|
+
finally {
|
|
136
|
+
try {
|
|
137
|
+
if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
|
|
138
|
+
}
|
|
139
|
+
finally { if (e_1) throw e_1.error; }
|
|
140
|
+
}
|
|
141
|
+
return aggregateItems;
|
|
142
|
+
};
|
|
143
|
+
var createInitFilters = function () {
|
|
144
|
+
var e_2, _a;
|
|
145
|
+
var initFilters = {};
|
|
146
|
+
//let columns = dataTableEl.current.props.children; - does not work
|
|
147
|
+
var columns = props.children;
|
|
148
|
+
try {
|
|
149
|
+
for (var columns_2 = __values(columns), columns_2_1 = columns_2.next(); !columns_2_1.done; columns_2_1 = columns_2.next()) {
|
|
150
|
+
var column = columns_2_1.value;
|
|
151
|
+
var xLazyColumn = column; // nevedel som to krajsie...
|
|
129
152
|
var field = xLazyColumn.props.field;
|
|
130
153
|
var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, field);
|
|
131
154
|
// TODO column.props.dropdownInFilter - pre "menu" by bolo fajn mat zoznam "enumov"
|
|
@@ -133,12 +156,12 @@ var XLazyDataTable = function (props) {
|
|
|
133
156
|
initFilters[field] = createFilterItem(props.filterDisplay, { value: null, matchMode: filterMatchMode });
|
|
134
157
|
}
|
|
135
158
|
}
|
|
136
|
-
catch (
|
|
159
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
137
160
|
finally {
|
|
138
161
|
try {
|
|
139
|
-
if (
|
|
162
|
+
if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
|
|
140
163
|
}
|
|
141
|
-
finally { if (
|
|
164
|
+
finally { if (e_2) throw e_2.error; }
|
|
142
165
|
}
|
|
143
166
|
return initFilters;
|
|
144
167
|
};
|
|
@@ -175,10 +198,11 @@ var XLazyDataTable = function (props) {
|
|
|
175
198
|
// premenne platne pre cely component (obdoba member premennych v class-e)
|
|
176
199
|
var dataTableEl = (0, react_1.useRef)(null);
|
|
177
200
|
var customFilter = props.customFilter;
|
|
178
|
-
var
|
|
179
|
-
var _b = __read((0, react_1.useState)(
|
|
180
|
-
var _c = __read((0, react_1.useState)(
|
|
181
|
-
var _d = __read((0, react_1.useState)(
|
|
201
|
+
var aggregateItems = createAggregateItems();
|
|
202
|
+
var _b = __read((0, react_1.useState)({ rowList: [], totalRecords: 0, aggregateValues: [] }), 2), value = _b[0], setValue = _b[1];
|
|
203
|
+
var _c = __read((0, react_1.useState)(false), 2), loading = _c[0], setLoading = _c[1];
|
|
204
|
+
var _d = __read((0, react_1.useState)(0), 2), first = _d[0], setFirst = _d[1];
|
|
205
|
+
var _e = __read((0, react_1.useState)(props.paginator ? props.rows : undefined), 2), rows = _e[0], setRows = _e[1];
|
|
182
206
|
var filtersInit = createInitFilters();
|
|
183
207
|
if (props.searchTableParams !== undefined) {
|
|
184
208
|
var displayFieldFilter = props.searchTableParams.displayFieldFilter;
|
|
@@ -188,13 +212,13 @@ var XLazyDataTable = function (props) {
|
|
|
188
212
|
// ak mame props.searchTableParams.customFilter, pridame ho
|
|
189
213
|
customFilter = XUtils_1.XUtils.filterAnd(customFilter, props.searchTableParams.customFilter);
|
|
190
214
|
}
|
|
191
|
-
var
|
|
192
|
-
var
|
|
193
|
-
var
|
|
194
|
-
var
|
|
195
|
-
var
|
|
196
|
-
var
|
|
197
|
-
var
|
|
215
|
+
var _f = __read((0, react_1.useState)(filtersInit), 2), filters = _f[0], setFilters = _f[1]; // filtrovanie na "controlled manner" (moze sa sem nainicializovat nejaka hodnota)
|
|
216
|
+
var _g = __read((0, react_1.useState)(props.initSortField ? [{ field: props.initSortField, order: 1 }] : []), 2), multiSortMeta = _g[0], setMultiSortMeta = _g[1];
|
|
217
|
+
var _h = __read((0, react_1.useState)(null), 2), selectedRow = _h[0], setSelectedRow = _h[1];
|
|
218
|
+
var _j = __read((_a = props.dataLoadedState) !== null && _a !== void 0 ? _a : (0, react_1.useState)(false), 2), dataLoaded = _j[0], setDataLoaded = _j[1]; // priznak kde si zapiseme, ci uz sme nacitali data
|
|
219
|
+
var _k = __read((0, react_1.useState)(false), 2), exportRowsDialogOpened = _k[0], setExportRowsDialogOpened = _k[1];
|
|
220
|
+
var _l = __read((0, react_1.useState)(), 2), exportRowsDialogRowCount = _l[0], setExportRowsDialogRowCount = _l[1]; // param pre dialog
|
|
221
|
+
var _m = __read((0, react_1.useState)(filtersInit), 2), filtersAfterFiltering = _m[0], setFiltersAfterFiltering = _m[1]; // sem si odkladame stav filtra po kliknuti na button Filter (chceme exportovat presne to co vidno vyfiltrovane)
|
|
198
222
|
// parameter [] zabezpeci ze sa metoda zavola len po prvom renderingu (a nie po kazdej zmene stavu (zavolani setNieco()))
|
|
199
223
|
(0, react_1.useEffect)(function () {
|
|
200
224
|
// jednoduchy sposob - nepouzivame parameter props.displayed a priznak dataLoaded
|
|
@@ -227,7 +251,7 @@ var XLazyDataTable = function (props) {
|
|
|
227
251
|
return __generator(this, function (_a) {
|
|
228
252
|
//console.log("zavolany onPage");
|
|
229
253
|
setFirst(event.first);
|
|
230
|
-
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: event.first, rows: rows, filters: filters, customFilter: customFilter, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() });
|
|
254
|
+
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: event.first, rows: rows, filters: filters, customFilter: customFilter, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems });
|
|
231
255
|
return [2 /*return*/];
|
|
232
256
|
});
|
|
233
257
|
}); };
|
|
@@ -241,14 +265,14 @@ var XLazyDataTable = function (props) {
|
|
|
241
265
|
//console.log("zavolany onSort - this.state.multiSortMeta = " + JSON.stringify(multiSortMeta));
|
|
242
266
|
//console.log("zavolany onSort - event.multiSortMeta = " + JSON.stringify(event.multiSortMeta));
|
|
243
267
|
setMultiSortMeta(event.multiSortMeta);
|
|
244
|
-
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, customFilter: customFilter, multiSortMeta: event.multiSortMeta, entity: props.entity, fields: getFields() });
|
|
268
|
+
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, customFilter: customFilter, multiSortMeta: event.multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems });
|
|
245
269
|
};
|
|
246
270
|
var onClickFilter = function () {
|
|
247
271
|
//console.log("zavolany onClickFilter");
|
|
248
272
|
loadData();
|
|
249
273
|
};
|
|
250
274
|
var loadData = function () {
|
|
251
|
-
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, customFilter: customFilter, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() });
|
|
275
|
+
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, customFilter: customFilter, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems });
|
|
252
276
|
};
|
|
253
277
|
var loadDataBase = function (findParam) { return __awaiter(void 0, void 0, void 0, function () {
|
|
254
278
|
var findResult;
|
|
@@ -269,56 +293,57 @@ var XLazyDataTable = function (props) {
|
|
|
269
293
|
});
|
|
270
294
|
}); };
|
|
271
295
|
var findByFilter = function (findParam) { return __awaiter(void 0, void 0, void 0, function () {
|
|
272
|
-
var
|
|
273
|
-
return __generator(this, function (
|
|
274
|
-
switch (
|
|
296
|
+
var findResult;
|
|
297
|
+
return __generator(this, function (_a) {
|
|
298
|
+
switch (_a.label) {
|
|
275
299
|
case 0: return [4 /*yield*/, XUtils_1.XUtils.fetchOne('lazyDataTableFindRows', findParam)];
|
|
276
300
|
case 1:
|
|
277
|
-
|
|
278
|
-
|
|
301
|
+
findResult = _a.sent();
|
|
302
|
+
findResult.totalRecords = parseInt(findResult.totalRecords);
|
|
303
|
+
return [2 /*return*/, findResult];
|
|
279
304
|
}
|
|
280
305
|
});
|
|
281
306
|
}); };
|
|
282
307
|
var getFields = function () {
|
|
283
308
|
// krasne zobrazi cely objekt!
|
|
284
309
|
//console.log(dataTableEl.current);
|
|
285
|
-
var
|
|
310
|
+
var e_3, _a;
|
|
286
311
|
var fields = [];
|
|
287
312
|
var columns = dataTableEl.current.props.children;
|
|
288
313
|
try {
|
|
289
|
-
for (var
|
|
290
|
-
var column =
|
|
314
|
+
for (var columns_3 = __values(columns), columns_3_1 = columns_3.next(); !columns_3_1.done; columns_3_1 = columns_3.next()) {
|
|
315
|
+
var column = columns_3_1.value;
|
|
291
316
|
fields.push(column.props.field);
|
|
292
317
|
}
|
|
293
318
|
}
|
|
294
|
-
catch (
|
|
319
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
295
320
|
finally {
|
|
296
321
|
try {
|
|
297
|
-
if (
|
|
322
|
+
if (columns_3_1 && !columns_3_1.done && (_a = columns_3.return)) _a.call(columns_3);
|
|
298
323
|
}
|
|
299
|
-
finally { if (
|
|
324
|
+
finally { if (e_3) throw e_3.error; }
|
|
300
325
|
}
|
|
301
326
|
return fields;
|
|
302
327
|
};
|
|
303
328
|
var getHeaders = function () {
|
|
304
329
|
// krasne zobrazi cely objekt!
|
|
305
330
|
//console.log(dataTableEl.current);
|
|
306
|
-
var
|
|
331
|
+
var e_4, _a;
|
|
307
332
|
var headers = [];
|
|
308
333
|
var columns = dataTableEl.current.props.children;
|
|
309
334
|
try {
|
|
310
|
-
for (var
|
|
311
|
-
var column =
|
|
335
|
+
for (var columns_4 = __values(columns), columns_4_1 = columns_4.next(); !columns_4_1.done; columns_4_1 = columns_4.next()) {
|
|
336
|
+
var column = columns_4_1.value;
|
|
312
337
|
// pozor! headers tahame z primereact DataTable a napr. pri editacii nemusi byt v atribute header string
|
|
313
338
|
headers.push(column.props.header);
|
|
314
339
|
}
|
|
315
340
|
}
|
|
316
|
-
catch (
|
|
341
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
317
342
|
finally {
|
|
318
343
|
try {
|
|
319
|
-
if (
|
|
344
|
+
if (columns_4_1 && !columns_4_1.done && (_a = columns_4.return)) _a.call(columns_4);
|
|
320
345
|
}
|
|
321
|
-
finally { if (
|
|
346
|
+
finally { if (e_4) throw e_4.error; }
|
|
322
347
|
}
|
|
323
348
|
return headers;
|
|
324
349
|
};
|
|
@@ -355,7 +380,7 @@ var XLazyDataTable = function (props) {
|
|
|
355
380
|
}
|
|
356
381
|
};
|
|
357
382
|
var onClickRemoveRow = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
358
|
-
var reread,
|
|
383
|
+
var reread, e_5, e_6;
|
|
359
384
|
return __generator(this, function (_a) {
|
|
360
385
|
switch (_a.label) {
|
|
361
386
|
case 0:
|
|
@@ -370,8 +395,8 @@ var XLazyDataTable = function (props) {
|
|
|
370
395
|
reread = _a.sent();
|
|
371
396
|
return [3 /*break*/, 4];
|
|
372
397
|
case 3:
|
|
373
|
-
|
|
374
|
-
XUtils_1.XUtils.showErrorMessage("Remove row failed.",
|
|
398
|
+
e_5 = _a.sent();
|
|
399
|
+
XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_5);
|
|
375
400
|
return [3 /*break*/, 4];
|
|
376
401
|
case 4:
|
|
377
402
|
if (reread) {
|
|
@@ -393,8 +418,8 @@ var XLazyDataTable = function (props) {
|
|
|
393
418
|
_a.sent();
|
|
394
419
|
return [3 /*break*/, 9];
|
|
395
420
|
case 8:
|
|
396
|
-
|
|
397
|
-
XUtils_1.XUtils.showErrorMessage("Remove row failed.",
|
|
421
|
+
e_6 = _a.sent();
|
|
422
|
+
XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_6);
|
|
398
423
|
return [3 /*break*/, 9];
|
|
399
424
|
case 9:
|
|
400
425
|
loadData();
|
|
@@ -415,7 +440,7 @@ var XLazyDataTable = function (props) {
|
|
|
415
440
|
return __generator(this, function (_a) {
|
|
416
441
|
switch (_a.label) {
|
|
417
442
|
case 0:
|
|
418
|
-
findParam = { resultType: FindParam_1.ResultType.OnlyRowCount, first: first, rows: rows, filters: filtersAfterFiltering, customFilter: customFilter, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() };
|
|
443
|
+
findParam = { resultType: FindParam_1.ResultType.OnlyRowCount, first: first, rows: rows, filters: filtersAfterFiltering, customFilter: customFilter, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems };
|
|
419
444
|
return [4 /*yield*/, findByFilter(findParam)];
|
|
420
445
|
case 1:
|
|
421
446
|
findResult = _a.sent();
|
|
@@ -427,7 +452,7 @@ var XLazyDataTable = function (props) {
|
|
|
427
452
|
});
|
|
428
453
|
}); };
|
|
429
454
|
var exportRowsDialogOnHide = function (ok, exportType, csvParam) { return __awaiter(void 0, void 0, void 0, function () {
|
|
430
|
-
var path, exportParam, response,
|
|
455
|
+
var path, exportParam, response, e_7, fileExt, fileName, respBlob, url, a;
|
|
431
456
|
return __generator(this, function (_a) {
|
|
432
457
|
switch (_a.label) {
|
|
433
458
|
case 0:
|
|
@@ -449,8 +474,8 @@ var XLazyDataTable = function (props) {
|
|
|
449
474
|
response = _a.sent();
|
|
450
475
|
return [3 /*break*/, 4];
|
|
451
476
|
case 3:
|
|
452
|
-
|
|
453
|
-
XUtils_1.XUtils.showErrorMessage("Export failed.",
|
|
477
|
+
e_7 = _a.sent();
|
|
478
|
+
XUtils_1.XUtils.showErrorMessage("Export failed.", e_7);
|
|
454
479
|
return [2 /*return*/];
|
|
455
480
|
case 4:
|
|
456
481
|
fileExt = exportType;
|
|
@@ -678,19 +703,22 @@ var XLazyDataTable = function (props) {
|
|
|
678
703
|
if ((props.editMode === true || props.editMode === false) && props.editModeHandlers === undefined) {
|
|
679
704
|
throw "XLazyDataTable: for props.editMode = true/false, props.editModeHandlers must be defined.";
|
|
680
705
|
}
|
|
681
|
-
|
|
682
|
-
|
|
706
|
+
// pouzivame paginatorLeft aj paginatorRight (aj prazdny) pouzivame, aby bol default paginator v strede (bez paginatorLeft je default paginator presunuty dolava a naopak)
|
|
707
|
+
// sirku div-ov este nastavujeme v css na 10rem
|
|
708
|
+
var paginatorLeft = react_1.default.createElement("div", null,
|
|
709
|
+
"Total records: ",
|
|
710
|
+
value.totalRecords);
|
|
711
|
+
var paginatorRight = react_1.default.createElement("div", null);
|
|
683
712
|
if (props.editMode === true) {
|
|
684
|
-
paginatorLeft = react_1.default.createElement("div", null); // paginatorLeft pouzivame, aby bol default paginator v strede (bez paginatorLeft je default paginator presunuty dolava)
|
|
685
713
|
paginatorRight = react_1.default.createElement("div", null,
|
|
686
714
|
react_1.default.createElement(XButtonIconSmall_1.XButtonIconSmall, { icon: "pi pi-save", onClick: function () { var _a; return (_a = props.editModeHandlers) === null || _a === void 0 ? void 0 : _a.onSave(); }, tooltip: "Save form" }),
|
|
687
715
|
react_1.default.createElement(XButtonIconSmall_1.XButtonIconSmall, { icon: "pi pi-times", onClick: function () { var _a; return (_a = props.editModeHandlers) === null || _a === void 0 ? void 0 : _a.onCancel(); }, tooltip: "Cancel editing" }));
|
|
688
716
|
}
|
|
689
717
|
else if (props.editMode === false) {
|
|
690
|
-
|
|
691
|
-
|
|
718
|
+
paginatorRight = react_1.default.createElement("div", null,
|
|
719
|
+
react_1.default.createElement(XButtonIconSmall_1.XButtonIconSmall, { icon: "pi pi-pencil", onClick: function () { var _a; return (_a = props.editModeHandlers) === null || _a === void 0 ? void 0 : _a.onStart(); }, tooltip: "Edit form" }));
|
|
692
720
|
}
|
|
693
|
-
// else
|
|
721
|
+
// else - editMode is undefined - browse is not editable
|
|
694
722
|
// export pre search button-y zatial vypneme
|
|
695
723
|
var exportRows = (props.searchTableParams === undefined);
|
|
696
724
|
// pre lepsiu citatelnost vytvarame stlpce uz tu
|
|
@@ -825,7 +853,22 @@ var XLazyDataTable = function (props) {
|
|
|
825
853
|
align = "center";
|
|
826
854
|
}
|
|
827
855
|
}
|
|
828
|
-
|
|
856
|
+
// *********** footer ***********
|
|
857
|
+
var footer = undefined;
|
|
858
|
+
if (childColumn.props.aggregateType && value.aggregateValues) {
|
|
859
|
+
var aggregateValue = value.aggregateValues[childColumn.props.field];
|
|
860
|
+
if (aggregateValue !== undefined && aggregateValue !== null) {
|
|
861
|
+
if (xField.type === "decimal" || xField.type === "number") {
|
|
862
|
+
// v json subore su stringy (cislo v ""), konvertujeme aby sme zmenili 123.45 na 123,45
|
|
863
|
+
aggregateValue = (0, XUtilsConversions_1.numberAsUI)((0, XUtilsConversions_1.numberFromModel)(aggregateValue), xField.scale);
|
|
864
|
+
}
|
|
865
|
+
}
|
|
866
|
+
else {
|
|
867
|
+
aggregateValue = ""; // nemame este nacitane data
|
|
868
|
+
}
|
|
869
|
+
footer = aggregateValue;
|
|
870
|
+
}
|
|
871
|
+
return react_1.default.createElement(column_1.Column, { field: childColumn.props.field, header: header, footer: footer, filter: true, sortable: true, filterElement: filterElement, dataType: dataType, showFilterMenu: showFilterMenu, showClearButton: showClearButton, body: body, headerStyle: headerStyle, align: align });
|
|
829
872
|
});
|
|
830
873
|
return (react_1.default.createElement("div", null,
|
|
831
874
|
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
@@ -34,7 +34,7 @@ export declare class XUtils {
|
|
|
34
34
|
static registerAppForm(elem: any, entity: string, formId?: string): void;
|
|
35
35
|
static getAppForm(entity: string, formId?: string): any;
|
|
36
36
|
static fetchMany(path: string, value: any, usePublicToken?: boolean | XToken): Promise<any[]>;
|
|
37
|
-
static fetchRows(entity: string, customFilter
|
|
37
|
+
static fetchRows(entity: string, customFilter?: XCustomFilter | undefined, sortField?: string, fields?: string[]): Promise<any[]>;
|
|
38
38
|
static fetchOne(path: string, value: any, usePublicToken?: boolean | XToken): Promise<any>;
|
|
39
39
|
static fetchString(path: string, value: any): Promise<string>;
|
|
40
40
|
static fetch(path: string, value: any, usePublicToken?: boolean | XToken): Promise<any>;
|
package/lib/components/XUtils.js
CHANGED
|
@@ -254,13 +254,13 @@ var XUtils = /** @class */ (function () {
|
|
|
254
254
|
return XUtils.fetch(path, value, usePublicToken);
|
|
255
255
|
};
|
|
256
256
|
// pomocna metodka pouzivajuca lazyDataTable service
|
|
257
|
-
XUtils.fetchRows = function (entity, customFilter, sortField) {
|
|
257
|
+
XUtils.fetchRows = function (entity, customFilter, sortField, fields) {
|
|
258
258
|
return __awaiter(this, void 0, void 0, function () {
|
|
259
259
|
var findParam, rowList;
|
|
260
260
|
return __generator(this, function (_a) {
|
|
261
261
|
switch (_a.label) {
|
|
262
262
|
case 0:
|
|
263
|
-
findParam = { resultType: FindParam_1.ResultType.AllRows, entity: entity, customFilter: customFilter, multiSortMeta: sortField ? [{ field: sortField, order: 1 }] : undefined };
|
|
263
|
+
findParam = { resultType: FindParam_1.ResultType.AllRows, entity: entity, customFilter: customFilter, multiSortMeta: sortField ? [{ field: sortField, order: 1 }] : undefined, fields: fields };
|
|
264
264
|
return [4 /*yield*/, XUtils.fetchOne('lazyDataTableFindRows', findParam)];
|
|
265
265
|
case 1:
|
|
266
266
|
rowList = (_a.sent()).rowList;
|
|
@@ -11,6 +11,16 @@ export interface XCustomFilter {
|
|
|
11
11
|
filter: string;
|
|
12
12
|
values: XCustomFilterValues;
|
|
13
13
|
}
|
|
14
|
+
export declare enum XAggregateType {
|
|
15
|
+
Min = "MIN",
|
|
16
|
+
Max = "MAX",
|
|
17
|
+
Sum = "SUM",
|
|
18
|
+
Avg = "AVG"
|
|
19
|
+
}
|
|
20
|
+
export interface XAggregateItem {
|
|
21
|
+
field: string;
|
|
22
|
+
aggregateType: XAggregateType;
|
|
23
|
+
}
|
|
14
24
|
export interface FindParam {
|
|
15
25
|
resultType: ResultType;
|
|
16
26
|
first?: number;
|
|
@@ -20,4 +30,5 @@ export interface FindParam {
|
|
|
20
30
|
multiSortMeta?: DataTableSortMeta[];
|
|
21
31
|
entity: string;
|
|
22
32
|
fields?: string[];
|
|
33
|
+
aggregateItems?: XAggregateItem[];
|
|
23
34
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ResultType = void 0;
|
|
3
|
+
exports.XAggregateType = exports.ResultType = void 0;
|
|
4
4
|
// TODO - replaced with DataTableFilterMetaData
|
|
5
5
|
// export interface FilterValue {
|
|
6
6
|
// value : string;
|
|
@@ -21,3 +21,10 @@ var ResultType;
|
|
|
21
21
|
ResultType[ResultType["RowCountAndPagedRows"] = 1] = "RowCountAndPagedRows";
|
|
22
22
|
ResultType[ResultType["AllRows"] = 2] = "AllRows";
|
|
23
23
|
})(ResultType = exports.ResultType || (exports.ResultType = {}));
|
|
24
|
+
var XAggregateType;
|
|
25
|
+
(function (XAggregateType) {
|
|
26
|
+
XAggregateType["Min"] = "MIN";
|
|
27
|
+
XAggregateType["Max"] = "MAX";
|
|
28
|
+
XAggregateType["Sum"] = "SUM";
|
|
29
|
+
XAggregateType["Avg"] = "AVG";
|
|
30
|
+
})(XAggregateType = exports.XAggregateType || (exports.XAggregateType = {}));
|