@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.
@@ -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 createInitFilters = function () {
121
+ var createAggregateItems = function () {
121
122
  var e_1, _a;
122
- var initFilters = {};
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 (e_1_1) { e_1 = { error: e_1_1 }; }
159
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
137
160
  finally {
138
161
  try {
139
- if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
162
+ if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
140
163
  }
141
- finally { if (e_1) throw e_1.error; }
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 _a = __read((0, react_1.useState)({ rowList: [], totalRecords: 0 }), 2), value = _a[0], setValue = _a[1];
179
- var _b = __read((0, react_1.useState)(false), 2), loading = _b[0], setLoading = _b[1];
180
- var _c = __read((0, react_1.useState)(0), 2), first = _c[0], setFirst = _c[1];
181
- var _d = __read((0, react_1.useState)(props.paginator ? props.rows : undefined), 2), rows = _d[0], setRows = _d[1];
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 _e = __read((0, react_1.useState)(filtersInit), 2), filters = _e[0], setFilters = _e[1]; // filtrovanie na "controlled manner" (moze sa sem nainicializovat nejaka hodnota)
192
- var _f = __read((0, react_1.useState)(props.initSortField ? [{ field: props.initSortField, order: 1 }] : []), 2), multiSortMeta = _f[0], setMultiSortMeta = _f[1];
193
- var _g = __read((0, react_1.useState)(null), 2), selectedRow = _g[0], setSelectedRow = _g[1];
194
- var _h = __read((0, react_1.useState)(false), 2), dataLoaded = _h[0], setDataLoaded = _h[1]; // priznak kde si zapiseme, ci uz sme nacitali data
195
- var _j = __read((0, react_1.useState)(false), 2), exportRowsDialogOpened = _j[0], setExportRowsDialogOpened = _j[1];
196
- var _k = __read((0, react_1.useState)(), 2), exportRowsDialogRowCount = _k[0], setExportRowsDialogRowCount = _k[1]; // param pre dialog
197
- var _l = __read((0, react_1.useState)(filtersInit), 2), filtersAfterFiltering = _l[0], setFiltersAfterFiltering = _l[1]; // sem si odkladame stav filtra po kliknuti na button Filter (chceme exportovat presne to co vidno vyfiltrovane)
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 _a, rowList, totalRecords;
273
- return __generator(this, function (_b) {
274
- switch (_b.label) {
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
- _a = _b.sent(), rowList = _a.rowList, totalRecords = _a.totalRecords;
278
- return [2 /*return*/, { rowList: rowList, totalRecords: parseInt(totalRecords) }];
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 e_2, _a;
310
+ var e_3, _a;
286
311
  var fields = [];
287
312
  var columns = dataTableEl.current.props.children;
288
313
  try {
289
- for (var columns_2 = __values(columns), columns_2_1 = columns_2.next(); !columns_2_1.done; columns_2_1 = columns_2.next()) {
290
- var column = columns_2_1.value;
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 (e_2_1) { e_2 = { error: e_2_1 }; }
319
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
295
320
  finally {
296
321
  try {
297
- if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
322
+ if (columns_3_1 && !columns_3_1.done && (_a = columns_3.return)) _a.call(columns_3);
298
323
  }
299
- finally { if (e_2) throw e_2.error; }
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 e_3, _a;
331
+ var e_4, _a;
307
332
  var headers = [];
308
333
  var columns = dataTableEl.current.props.children;
309
334
  try {
310
- for (var columns_3 = __values(columns), columns_3_1 = columns_3.next(); !columns_3_1.done; columns_3_1 = columns_3.next()) {
311
- var column = columns_3_1.value;
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 (e_3_1) { e_3 = { error: e_3_1 }; }
341
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
317
342
  finally {
318
343
  try {
319
- if (columns_3_1 && !columns_3_1.done && (_a = columns_3.return)) _a.call(columns_3);
344
+ if (columns_4_1 && !columns_4_1.done && (_a = columns_4.return)) _a.call(columns_4);
320
345
  }
321
- finally { if (e_3) throw e_3.error; }
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, e_4, e_5;
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
- e_4 = _a.sent();
374
- XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_4);
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
- e_5 = _a.sent();
397
- XUtils_1.XUtils.showErrorMessage("Remove row failed.", e_5);
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, e_6, fileExt, fileName, respBlob, url, a;
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
- e_6 = _a.sent();
453
- XUtils_1.XUtils.showErrorMessage("Export failed.", e_6);
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
- var paginatorLeft = undefined;
682
- var paginatorRight = undefined;
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
- paginatorLeft = react_1.default.createElement("div", null);
691
- paginatorRight = 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" });
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 -> editMode is undefined - browse is not editable
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
- return react_1.default.createElement(column_1.Column, { field: childColumn.props.field, header: header, filter: true, sortable: true, filterElement: filterElement, dataType: dataType, showFilterMenu: showFilterMenu, showClearButton: showClearButton, body: body, headerStyle: headerStyle, align: align });
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: XCustomFilter | undefined, sortField?: string): Promise<any[]>;
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>;
@@ -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 = {}));
@@ -1,4 +1,8 @@
1
+ export interface XAggregateValues {
2
+ [key: string]: any;
3
+ }
1
4
  export interface FindResult {
2
5
  rowList?: any[];
3
6
  totalRecords?: number;
7
+ aggregateValues?: XAggregateValues;
4
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michalrakus/x-react-web-lib",
3
- "version": "1.4.1",
3
+ "version": "1.5.0",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "clean": "rimraf lib",