@michalrakus/x-react-web-lib 1.18.0 → 1.20.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/XEditor.d.ts +3 -0
- package/XEditor.js +5 -0
- package/XEditorBase.d.ts +3 -0
- package/XEditorBase.js +5 -0
- package/XExportRowsDialog.d.ts +1 -1
- package/XExportRowsDialog.js +1 -1
- package/XHtmlRenderer.d.ts +3 -0
- package/XHtmlRenderer.js +5 -0
- package/XLazyDataTable.d.ts +1 -1
- package/XLazyDataTable.js +1 -1
- package/XMultilineRenderer.d.ts +3 -0
- package/XMultilineRenderer.js +5 -0
- package/gulpfile.js +7 -2
- package/lib/administration/XBrowseMetaBrowse.d.ts +1 -1
- package/lib/administration/XBrowseMetaBrowse.js +1 -1
- package/lib/administration/XUserBrowse.d.ts +1 -1
- package/lib/administration/XUserBrowse.js +1 -1
- package/lib/components/XAutoComplete.d.ts +11 -9
- package/lib/components/XAutoComplete.js +7 -78
- package/lib/components/XAutoCompleteBase.d.ts +42 -7
- package/lib/components/XAutoCompleteBase.js +342 -45
- package/lib/components/XAutoCompleteDT.d.ts +14 -8
- package/lib/components/XAutoCompleteDT.js +3 -69
- package/lib/components/XEditBrowse.js +1 -1
- package/lib/components/XEditor.d.ts +15 -0
- package/lib/components/XEditor.js +64 -0
- package/lib/components/XEditorBase.d.ts +9 -0
- package/lib/components/XEditorBase.js +91 -0
- package/lib/components/XFormBase.d.ts +1 -0
- package/lib/components/XFormBase.js +19 -4
- package/lib/components/XFormDataTable2.js +1 -1
- package/lib/components/XInputTextareaBase.js +3 -4
- package/lib/components/{XExportRowsDialog.d.ts → XLazyDataTable/XExportRowsDialog.d.ts} +1 -1
- package/lib/components/{XExportRowsDialog.js → XLazyDataTable/XExportRowsDialog.js} +5 -5
- package/lib/components/XLazyDataTable/XHtmlRenderer.d.ts +7 -0
- package/lib/components/XLazyDataTable/XHtmlRenderer.js +78 -0
- package/lib/components/{XLazyDataTable.d.ts → XLazyDataTable/XLazyDataTable.d.ts} +20 -8
- package/lib/components/{XLazyDataTable.js → XLazyDataTable/XLazyDataTable.js} +62 -36
- package/lib/components/XLazyDataTable/XMultilineRenderer.d.ts +8 -0
- package/lib/components/XLazyDataTable/XMultilineRenderer.js +80 -0
- package/lib/components/XLazyDataTable/XMultilineSwitch.d.ts +7 -0
- package/lib/components/XLazyDataTable/XMultilineSwitch.js +20 -0
- package/lib/components/XSearchBrowseParams.d.ts +2 -2
- package/lib/components/XSearchButton.js +2 -2
- package/lib/components/XSearchButtonDT.js +2 -2
- package/lib/components/XUtils.d.ts +4 -0
- package/lib/components/XUtils.js +51 -11
- package/lib/components/XUtilsMetadata.d.ts +1 -1
- package/lib/serverApi/FindParam.d.ts +12 -2
- package/lib/serverApi/FindParam.js +3 -2
- package/lib/serverApi/XUtilsCommon.d.ts +2 -0
- package/lib/serverApi/XUtilsCommon.js +37 -1
- package/lib/serverApi/XUtilsMetadataCommon.d.ts +1 -0
- package/lib/serverApi/XUtilsMetadataCommon.js +16 -0
- package/lib/serverApi/x-lib-api.d.ts +6 -0
- package/lib/serverApi/x-lib-api.js +3 -0
- package/package.json +2 -1
|
@@ -96,28 +96,40 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
96
96
|
}
|
|
97
97
|
return ar;
|
|
98
98
|
};
|
|
99
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
100
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
101
|
+
if (ar || !(i in from)) {
|
|
102
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
103
|
+
ar[i] = from[i];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
107
|
+
};
|
|
99
108
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
100
109
|
exports.XLazyColumn = exports.XLazyDataTable = void 0;
|
|
101
110
|
var react_1 = __importStar(require("react"));
|
|
102
111
|
var datatable_1 = require("primereact/datatable");
|
|
103
112
|
var column_1 = require("primereact/column");
|
|
104
|
-
var XButton_1 = require("
|
|
105
|
-
var XUtils_1 = require("
|
|
106
|
-
var XUtilsMetadata_1 = require("
|
|
107
|
-
var XDropdownDTFilter_1 = require("
|
|
108
|
-
var XUtilsConversions_1 = require("
|
|
109
|
-
var FindParam_1 = require("
|
|
110
|
-
var XButtonIconSmall_1 = require("
|
|
113
|
+
var XButton_1 = require("../XButton");
|
|
114
|
+
var XUtils_1 = require("../XUtils");
|
|
115
|
+
var XUtilsMetadata_1 = require("../XUtilsMetadata");
|
|
116
|
+
var XDropdownDTFilter_1 = require("../XDropdownDTFilter");
|
|
117
|
+
var XUtilsConversions_1 = require("../../serverApi/XUtilsConversions");
|
|
118
|
+
var FindParam_1 = require("../../serverApi/FindParam");
|
|
119
|
+
var XButtonIconSmall_1 = require("../XButtonIconSmall");
|
|
111
120
|
var tristatecheckbox_1 = require("primereact/tristatecheckbox");
|
|
112
|
-
var XUtilsCommon_1 = require("
|
|
121
|
+
var XUtilsCommon_1 = require("../../serverApi/XUtilsCommon");
|
|
113
122
|
var XExportRowsDialog_1 = require("./XExportRowsDialog");
|
|
114
123
|
var api_1 = require("primereact/api");
|
|
115
|
-
var XCalendar_1 = require("
|
|
116
|
-
var XInputDecimalBase_1 = require("
|
|
117
|
-
var XLocale_1 = require("
|
|
118
|
-
var XFtsInput_1 = require("
|
|
119
|
-
var XUtilsMetadataCommon_1 = require("
|
|
120
|
-
var
|
|
124
|
+
var XCalendar_1 = require("../XCalendar");
|
|
125
|
+
var XInputDecimalBase_1 = require("../XInputDecimalBase");
|
|
126
|
+
var XLocale_1 = require("../XLocale");
|
|
127
|
+
var XFtsInput_1 = require("../XFtsInput");
|
|
128
|
+
var XUtilsMetadataCommon_1 = require("../../serverApi/XUtilsMetadataCommon");
|
|
129
|
+
var editor_1 = require("primereact/editor");
|
|
130
|
+
var XMultilineSwitch_1 = require("./XMultilineSwitch");
|
|
131
|
+
var XMultilineRenderer_1 = require("./XMultilineRenderer");
|
|
132
|
+
var XHtmlRenderer_1 = require("./XHtmlRenderer");
|
|
121
133
|
var XLazyDataTable = function (props) {
|
|
122
134
|
var _a;
|
|
123
135
|
// must be here, is used in createInitFilters()
|
|
@@ -220,15 +232,15 @@ var XLazyDataTable = function (props) {
|
|
|
220
232
|
filtersInit[displayFieldFilter.field] = createFilterItem(props.filterDisplay, displayFieldFilter.constraint);
|
|
221
233
|
}
|
|
222
234
|
// ak mame props.searchBrowseParams.customFilterFunction, pridame filter
|
|
223
|
-
if (props.searchBrowseParams.
|
|
224
|
-
customFilterItems = XUtils_1.XUtils.filterAnd(customFilterItems, props.searchBrowseParams.
|
|
235
|
+
if (props.searchBrowseParams.customFilter) {
|
|
236
|
+
customFilterItems = XUtils_1.XUtils.filterAnd(customFilterItems, XUtils_1.XUtils.evalFilter(props.searchBrowseParams.customFilter));
|
|
225
237
|
}
|
|
226
238
|
}
|
|
227
239
|
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)
|
|
228
240
|
var initFtsInputValue = props.fullTextSearch ? createInitFtsInputValue() : undefined;
|
|
229
241
|
var _g = __read((0, react_1.useState)(initFtsInputValue), 2), ftsInputValue = _g[0], setFtsInputValue = _g[1];
|
|
230
|
-
var _h = __read((0, react_1.useState)(
|
|
231
|
-
var _j = __read((0, react_1.useState)(
|
|
242
|
+
var _h = __read((0, react_1.useState)(props.multilineSwitchInitValue), 2), multilineSwitchValue = _h[0], setMultilineSwitchValue = _h[1];
|
|
243
|
+
var _j = __read((0, react_1.useState)(XUtils_1.XUtils.createMultiSortMeta(props.sortField)), 2), multiSortMeta = _j[0], setMultiSortMeta = _j[1];
|
|
232
244
|
var _k = __read((0, react_1.useState)(null), 2), selectedRow = _k[0], setSelectedRow = _k[1];
|
|
233
245
|
var _l = __read((_a = props.dataLoadedState) !== null && _a !== void 0 ? _a : (0, react_1.useState)(false), 2), dataLoaded = _l[0], setDataLoaded = _l[1]; // priznak kde si zapiseme, ci uz sme nacitali data
|
|
234
246
|
var _m = __read((0, react_1.useState)(false), 2), exportRowsDialogOpened = _m[0], setExportRowsDialogOpened = _m[1];
|
|
@@ -335,6 +347,7 @@ var XLazyDataTable = function (props) {
|
|
|
335
347
|
xFullTextSearch = {
|
|
336
348
|
fields: Array.isArray(props.fullTextSearch) ? props.fullTextSearch : undefined,
|
|
337
349
|
value: ftsInputValue.value,
|
|
350
|
+
splitValue: true,
|
|
338
351
|
matchMode: ftsInputValue.matchMode
|
|
339
352
|
};
|
|
340
353
|
}
|
|
@@ -359,6 +372,9 @@ var XLazyDataTable = function (props) {
|
|
|
359
372
|
}
|
|
360
373
|
finally { if (e_3) throw e_3.error; }
|
|
361
374
|
}
|
|
375
|
+
if (props.fields) {
|
|
376
|
+
fields.push.apply(fields, __spreadArray([], __read(props.fields), false));
|
|
377
|
+
}
|
|
362
378
|
return fields;
|
|
363
379
|
};
|
|
364
380
|
var getHeaders = function () {
|
|
@@ -383,6 +399,10 @@ var XLazyDataTable = function (props) {
|
|
|
383
399
|
}
|
|
384
400
|
return headers;
|
|
385
401
|
};
|
|
402
|
+
var hasContentTypeHtml = function () {
|
|
403
|
+
var columns = props.children;
|
|
404
|
+
return columns.some(function (column) { return column.props.contentType === "html"; });
|
|
405
|
+
};
|
|
386
406
|
var onSelectionChange = function (event) {
|
|
387
407
|
//console.log("zavolany onSelectionChange");
|
|
388
408
|
//console.log(event.value);
|
|
@@ -604,23 +624,26 @@ var XLazyDataTable = function (props) {
|
|
|
604
624
|
}
|
|
605
625
|
return betweenFilter;
|
|
606
626
|
};
|
|
607
|
-
var valueAsUI = function (value, xField) {
|
|
627
|
+
var valueAsUI = function (value, xField, contentType) {
|
|
608
628
|
var valueResult;
|
|
609
629
|
if (xField.type === "boolean") {
|
|
610
630
|
// TODO - efektivnejsie by bolo renderovat len prislusne ikonky
|
|
611
631
|
valueResult = react_1.default.createElement(tristatecheckbox_1.TriStateCheckbox, { value: value, disabled: true });
|
|
612
632
|
}
|
|
613
633
|
else {
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
634
|
+
if (contentType === "html") {
|
|
635
|
+
// value should be always string (xField.type === "string")
|
|
636
|
+
valueResult = react_1.default.createElement(XHtmlRenderer_1.XHtmlRenderer, { htmlValue: value, renderType: multilineSwitchValue, fewLinesCount: props.multilineSwitchFewLinesCount });
|
|
637
|
+
}
|
|
638
|
+
else {
|
|
639
|
+
// ine typy - convertValue vrati string
|
|
640
|
+
// mame zapnutu konverziu fromModel, lebo z json-u nam prichadzaju objekty typu string (napr. pri datumoch)
|
|
641
|
+
valueResult = (0, XUtilsConversions_1.convertValue)(xField, value, true, XUtilsConversions_1.AsUIType.Form);
|
|
642
|
+
// ak mame viacriadkovy text a multilineSwitch nastaveny na viac ako 1 riadok (defaultne je nastaveny na "allLines") pouzijeme XMultilineRenderer
|
|
643
|
+
if (contentType === "multiline" && multilineSwitchValue !== "singleLine") {
|
|
644
|
+
if (xField.type === "string" && typeof valueResult === "string" && valueResult) {
|
|
645
|
+
var lines = valueResult.split(XUtilsCommon_1.XUtilsCommon.newLine);
|
|
646
|
+
valueResult = react_1.default.createElement(XMultilineRenderer_1.XMultilineRenderer, { valueList: lines, renderType: multilineSwitchValue, fewLinesCount: props.multilineSwitchFewLinesCount, multilineContent: true });
|
|
624
647
|
}
|
|
625
648
|
}
|
|
626
649
|
}
|
|
@@ -631,11 +654,11 @@ var XLazyDataTable = function (props) {
|
|
|
631
654
|
var bodyValue;
|
|
632
655
|
var rowDataValue = XUtilsCommon_1.XUtilsCommon.getValueOrValueListByPath(rowData, columnProps.field);
|
|
633
656
|
if (Array.isArray(rowDataValue)) {
|
|
634
|
-
var elemList = rowDataValue.map(function (value
|
|
635
|
-
bodyValue = react_1.default.createElement(
|
|
657
|
+
var elemList = rowDataValue.map(function (value) { return valueAsUI(value, xField, columnProps.contentType); });
|
|
658
|
+
bodyValue = react_1.default.createElement(XMultilineRenderer_1.XMultilineRenderer, { valueList: elemList, renderType: multilineSwitchValue, fewLinesCount: props.multilineSwitchFewLinesCount });
|
|
636
659
|
}
|
|
637
660
|
else {
|
|
638
|
-
bodyValue = valueAsUI(rowDataValue, xField);
|
|
661
|
+
bodyValue = valueAsUI(rowDataValue, xField, columnProps.contentType);
|
|
639
662
|
}
|
|
640
663
|
return bodyValue;
|
|
641
664
|
};
|
|
@@ -885,9 +908,9 @@ var XLazyDataTable = function (props) {
|
|
|
885
908
|
ftsInputValue ? react_1.default.createElement(XFtsInput_1.XFtsInput, { value: ftsInputValue, onChange: function (value) { return setFtsInputValue(value); } }) : null,
|
|
886
909
|
react_1.default.createElement(XButton_1.XButton, { key: "filter", label: (0, XLocale_1.xLocaleOption)('filter'), onClick: onClickFilter }),
|
|
887
910
|
react_1.default.createElement(XButton_1.XButton, { key: "clearFilter", label: (0, XLocale_1.xLocaleOption)('clearFilter'), onClick: onClickClearFilter }),
|
|
888
|
-
props.
|
|
911
|
+
props.multilineSwitch ? react_1.default.createElement(XMultilineSwitch_1.XMultilineSwitch, { value: multilineSwitchValue, onChange: function (value) { return setMultilineSwitchValue(value); }, className: "m-1" }) : null),
|
|
889
912
|
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
890
|
-
react_1.default.createElement(datatable_1.DataTable, { value: value.rowList, dataKey: dataKey, paginator: props.paginator, rows: rows, totalRecords: value.totalRecords, lazy: true, first: first, onPage: onPage, loading: loading, filterDisplay: props.filterDisplay, filters: filters, onFilter: onFilter, sortMode: "multiple", removableSort: true, multiSortMeta: multiSortMeta, onSort: onSort, selectionMode: "single", selection: selectedRow, onSelectionChange: onSelectionChange, onRowDoubleClick: onRowDoubleClick, ref: dataTableEl, className: "p-datatable-sm x-lazy-datatable", resizableColumns: true, columnResizeMode: "expand", tableStyle: tableStyle, paginatorLeft: paginatorLeft, paginatorRight: paginatorRight, scrollable: props.scrollable, scrollHeight: scrollHeight, style: style }, columnElemList)),
|
|
913
|
+
react_1.default.createElement(datatable_1.DataTable, { value: value.rowList, dataKey: dataKey, paginator: props.paginator, rows: rows, totalRecords: value.totalRecords, lazy: true, first: first, onPage: onPage, loading: loading, filterDisplay: props.filterDisplay, filters: filters, onFilter: onFilter, sortMode: "multiple", removableSort: true, multiSortMeta: multiSortMeta, onSort: onSort, selectionMode: "single", selection: selectedRow, onSelectionChange: onSelectionChange, onRowDoubleClick: onRowDoubleClick, rowClassName: props.rowClassName, ref: dataTableEl, className: "p-datatable-sm x-lazy-datatable", resizableColumns: true, columnResizeMode: "expand", tableStyle: tableStyle, paginatorLeft: paginatorLeft, paginatorRight: paginatorRight, scrollable: props.scrollable, scrollHeight: scrollHeight, style: style }, columnElemList)),
|
|
891
914
|
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
892
915
|
props.onAddRow !== undefined && props.searchBrowseParams === undefined ? react_1.default.createElement(XButton_1.XButton, { key: "addRow", icon: "pi pi-plus", label: (0, XLocale_1.xLocaleOption)('addRow'), onClick: onClickAddRow }) : null,
|
|
893
916
|
props.onEdit !== undefined && props.searchBrowseParams === undefined ? react_1.default.createElement(XButton_1.XButton, { key: "editRow", icon: "pi pi-pencil", label: (0, XLocale_1.xLocaleOption)('editRow'), onClick: onClickEdit }) : null,
|
|
@@ -896,7 +919,8 @@ var XLazyDataTable = function (props) {
|
|
|
896
919
|
props.appButtonsForRow ? props.appButtonsForRow.map(function (xAppButton) { return react_1.default.createElement(XButton_1.XButton, { key: xAppButton.key, icon: xAppButton.icon, label: xAppButton.label, onClick: function () { return onClickAppButtonForRow(xAppButton.onClick); } }); }) : null,
|
|
897
920
|
props.appButtons,
|
|
898
921
|
props.searchBrowseParams !== undefined ? react_1.default.createElement(XButton_1.XButton, { key: "choose", label: (0, XLocale_1.xLocaleOption)('chooseRow'), onClick: onClickChoose }) : null,
|
|
899
|
-
exportRows ? react_1.default.createElement(XExportRowsDialog_1.XExportRowsDialog, { key: "exportRowsDialog", dialogOpened: exportRowsDialogOpened, hideDialog: function () { return setExportRowsDialogOpened(false); }, rowCount: exportRowsDialogRowCount, exportParams: createExportParams }) : null)
|
|
922
|
+
exportRows ? react_1.default.createElement(XExportRowsDialog_1.XExportRowsDialog, { key: "exportRowsDialog", dialogOpened: exportRowsDialogOpened, hideDialog: function () { return setExportRowsDialogOpened(false); }, rowCount: exportRowsDialogRowCount, exportParams: createExportParams }) : null),
|
|
923
|
+
hasContentTypeHtml() ? react_1.default.createElement(editor_1.Editor, { style: { display: 'none' }, showHeader: false }) : null /* we want to import css if needed (<style type="text/css" data-primereact-style-id="editor">) */));
|
|
900
924
|
};
|
|
901
925
|
exports.XLazyDataTable = XLazyDataTable;
|
|
902
926
|
exports.XLazyDataTable.defaultProps = {
|
|
@@ -904,7 +928,9 @@ exports.XLazyDataTable.defaultProps = {
|
|
|
904
928
|
rows: 10,
|
|
905
929
|
filterDisplay: "row",
|
|
906
930
|
fullTextSearch: true,
|
|
907
|
-
|
|
931
|
+
multilineSwitch: false,
|
|
932
|
+
multilineSwitchInitValue: "allLines",
|
|
933
|
+
multilineSwitchFewLinesCount: 2,
|
|
908
934
|
scrollable: true,
|
|
909
935
|
scrollWidth: 'viewport',
|
|
910
936
|
scrollHeight: 'viewport',
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { XMultilineRenderType } from "./XLazyDataTable";
|
|
3
|
+
export declare const XMultilineRenderer: (props: {
|
|
4
|
+
valueList: React.ReactNode[];
|
|
5
|
+
renderType: XMultilineRenderType;
|
|
6
|
+
fewLinesCount: number;
|
|
7
|
+
multilineContent?: boolean;
|
|
8
|
+
}) => JSX.Element;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
26
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
27
|
+
if (!m) return o;
|
|
28
|
+
var i = m.call(o), r, ar = [], e;
|
|
29
|
+
try {
|
|
30
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
31
|
+
}
|
|
32
|
+
catch (error) { e = { error: error }; }
|
|
33
|
+
finally {
|
|
34
|
+
try {
|
|
35
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
36
|
+
}
|
|
37
|
+
finally { if (e) throw e.error; }
|
|
38
|
+
}
|
|
39
|
+
return ar;
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.XMultilineRenderer = void 0;
|
|
43
|
+
var react_1 = __importStar(require("react"));
|
|
44
|
+
var button_1 = require("primereact/button");
|
|
45
|
+
var XMultilineRenderer = function (props) {
|
|
46
|
+
// used only for props.renderType === "fewLines"
|
|
47
|
+
var _a = __read((0, react_1.useState)(false), 2), showAllLines = _a[0], setShowAllLines = _a[1];
|
|
48
|
+
var valueResult; // musime vracat element, ak chceme XMultilineRenderer volat priamo cez jsx
|
|
49
|
+
if (props.renderType === "singleLine") {
|
|
50
|
+
// TODO - joinovat elementy
|
|
51
|
+
valueResult = react_1.default.createElement("div", null, props.valueList.join(", ")); // pouziva sa hlavne pre oneToMany asociacie
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
var valueListLocal = props.valueList;
|
|
55
|
+
if (props.renderType === "fewLines" && !showAllLines) {
|
|
56
|
+
valueListLocal = valueListLocal.slice(0, props.fewLinesCount);
|
|
57
|
+
}
|
|
58
|
+
var elemList = valueListLocal.map(function (value, index) { return react_1.default.createElement("div", { key: index }, value); });
|
|
59
|
+
if (props.renderType === "fewLines") {
|
|
60
|
+
if (props.valueList.length > props.fewLinesCount) {
|
|
61
|
+
// prepiseme posledny element v zozname - pridame mu button
|
|
62
|
+
var elemListLastIndex = elemList.length - 1;
|
|
63
|
+
elemList[elemListLastIndex] =
|
|
64
|
+
react_1.default.createElement("div", { key: elemListLastIndex },
|
|
65
|
+
valueListLocal[elemListLastIndex],
|
|
66
|
+
react_1.default.createElement(button_1.Button, { icon: showAllLines ? "pi pi-angle-double-left" : "pi pi-angle-double-right", onClick: function () { return setShowAllLines(!showAllLines); }, className: "x-button-multiline-expand-collapse" }));
|
|
67
|
+
// ak by bol nejaky problem s tym hore tak treba pouzit toto:
|
|
68
|
+
// elemList[elemListLastIndex] =
|
|
69
|
+
// <div className="flex flex-row flex-wrap">
|
|
70
|
+
// <div key={elemListLastIndex}>{valueListLocal[elemListLastIndex]}</div>
|
|
71
|
+
// <Button icon={showAllLines ? "pi pi-angle-double-left" : "pi pi-angle-double-right"} onClick={() => setShowAllLines(!showAllLines)}
|
|
72
|
+
// className="x-button-multiline-expand-collapse"/>
|
|
73
|
+
// </div>;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
valueResult = react_1.default.createElement("div", { className: props.multilineContent ? "x-multiline-content" : undefined }, elemList);
|
|
77
|
+
}
|
|
78
|
+
return valueResult;
|
|
79
|
+
};
|
|
80
|
+
exports.XMultilineRenderer = XMultilineRenderer;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { XMultilineRenderType } from "./XLazyDataTable";
|
|
3
|
+
export declare const XMultilineSwitch: (props: {
|
|
4
|
+
value: XMultilineRenderType;
|
|
5
|
+
onChange: (value: XMultilineRenderType) => void;
|
|
6
|
+
className?: string | undefined;
|
|
7
|
+
}) => JSX.Element;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.XMultilineSwitch = void 0;
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
var selectbutton_1 = require("primereact/selectbutton");
|
|
9
|
+
var XMultilineSwitch = function (props) {
|
|
10
|
+
var options = [
|
|
11
|
+
{ icon: 'pi pi-minus', value: 'singleLine' },
|
|
12
|
+
{ icon: 'pi pi-bars', value: 'fewLines' },
|
|
13
|
+
{ icon: 'pi pi-align-justify', value: 'allLines' }
|
|
14
|
+
];
|
|
15
|
+
var itemTemplate = function (option) {
|
|
16
|
+
return react_1.default.createElement("i", { className: option.icon });
|
|
17
|
+
};
|
|
18
|
+
return (react_1.default.createElement(selectbutton_1.SelectButton, { value: props.value, onChange: function (e) { return props.onChange(e.value); }, options: options, optionValue: "value", itemTemplate: itemTemplate, className: props.className }));
|
|
19
|
+
};
|
|
20
|
+
exports.XMultilineSwitch = XMultilineSwitch;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DataTableFilterMetaData } from "primereact/datatable";
|
|
2
|
-
import {
|
|
2
|
+
import { XFilterOrFunction } from "./XAutoCompleteBase";
|
|
3
3
|
export interface XFieldFilter {
|
|
4
4
|
field: string;
|
|
5
5
|
constraint: DataTableFilterMetaData;
|
|
@@ -7,5 +7,5 @@ export interface XFieldFilter {
|
|
|
7
7
|
export interface XSearchBrowseParams {
|
|
8
8
|
onChoose: (chosenRow: any) => void;
|
|
9
9
|
displayFieldFilter?: XFieldFilter;
|
|
10
|
-
|
|
10
|
+
customFilter?: XFilterOrFunction;
|
|
11
11
|
}
|
|
@@ -203,8 +203,8 @@ var XSearchButton = /** @class */ (function (_super) {
|
|
|
203
203
|
var createSearchBrowseParams = function () {
|
|
204
204
|
return {
|
|
205
205
|
onChoose: onChoose,
|
|
206
|
-
displayFieldFilter: (inputChanged ? { field: props.displayField, constraint: { value: inputValueState, matchMode: "
|
|
207
|
-
|
|
206
|
+
displayFieldFilter: (inputChanged ? { field: props.displayField, constraint: { value: inputValueState, matchMode: "contains" } } : undefined),
|
|
207
|
+
customFilter: function () { return _this.getFilterBase(_this.props.filter); }
|
|
208
208
|
};
|
|
209
209
|
};
|
|
210
210
|
// vypocitame inputValue
|
|
@@ -184,8 +184,8 @@ var XSearchButtonDT = function (props) {
|
|
|
184
184
|
react_1.default.createElement(dialog_1.Dialog, { visible: dialogOpened, onHide: onHide }, react_1.default.cloneElement(props.searchBrowse, {
|
|
185
185
|
searchBrowseParams: {
|
|
186
186
|
onChoose: onChoose,
|
|
187
|
-
displayFieldFilter: (inputChanged ? { field: props.displayField, constraint: { value: inputValueState, matchMode: "
|
|
188
|
-
|
|
187
|
+
displayFieldFilter: (inputChanged ? { field: props.displayField, constraint: { value: inputValueState, matchMode: "contains" } } : undefined),
|
|
188
|
+
customFilter: undefined // TODO - dorobit
|
|
189
189
|
}
|
|
190
190
|
} /*, props.searchBrowse.children*/))));
|
|
191
191
|
};
|
|
@@ -7,6 +7,7 @@ import { XCustomFilter, XCustomFilterItem } from "../serverApi/FindParam";
|
|
|
7
7
|
import { DataTableSortMeta } from "primereact/datatable";
|
|
8
8
|
import { XObject } from "./XObject";
|
|
9
9
|
import { XTableFieldReadOnlyProp } from "./XFormDataTable2";
|
|
10
|
+
import { XFilterOrFunction } from "./XAutoCompleteBase";
|
|
10
11
|
export declare enum OperationType {
|
|
11
12
|
None = 0,
|
|
12
13
|
Insert = 1,
|
|
@@ -54,6 +55,7 @@ export declare class XUtils {
|
|
|
54
55
|
static getAppForm(entity: string, formId?: string): any;
|
|
55
56
|
static fetchMany(path: string, value: any, usePublicToken?: boolean | XToken): Promise<any[]>;
|
|
56
57
|
static fetchRows(entity: string, customFilter?: XCustomFilter | undefined, sortField?: string | DataTableSortMeta[] | undefined, fields?: string[]): Promise<any[]>;
|
|
58
|
+
static fetchRowCount(entity: string, customFilter?: XCustomFilter | undefined): Promise<number>;
|
|
57
59
|
static fetchOne(path: string, value: any, usePublicToken?: boolean | XToken): Promise<any>;
|
|
58
60
|
static fetchString(path: string, value: any): Promise<string>;
|
|
59
61
|
static fetch(path: string, value: any, usePublicToken?: boolean | XToken): Promise<any>;
|
|
@@ -108,8 +110,10 @@ export declare class XUtils {
|
|
|
108
110
|
static getErrorMessage(xError: XError): string | undefined;
|
|
109
111
|
static normalizeString(value: string): string;
|
|
110
112
|
static createCustomFilterItems(customFilter: XCustomFilter | undefined): XCustomFilterItem[] | undefined;
|
|
113
|
+
static createMultiSortMeta(sortField: string | DataTableSortMeta[] | undefined): DataTableSortMeta[] | undefined;
|
|
111
114
|
static filterAnd(...filters: (XCustomFilter | undefined)[]): XCustomFilterItem[] | undefined;
|
|
112
115
|
static filterIdIn(idField: string, idList: number[]): XCustomFilter;
|
|
116
|
+
static evalFilter(filter: XFilterOrFunction | undefined): XCustomFilter | undefined;
|
|
113
117
|
static isTableRowInserted(tableRow: any): boolean;
|
|
114
118
|
static xViewStatus(xViewStatusOrBoolean: XViewStatusOrBoolean): XViewStatus;
|
|
115
119
|
}
|
package/lib/components/XUtils.js
CHANGED
|
@@ -272,20 +272,11 @@ var XUtils = /** @class */ (function () {
|
|
|
272
272
|
// pomocna metodka pouzivajuca lazyDataTable service
|
|
273
273
|
XUtils.fetchRows = function (entity, customFilter, sortField, fields) {
|
|
274
274
|
return __awaiter(this, void 0, void 0, function () {
|
|
275
|
-
var
|
|
275
|
+
var findParam, rowList;
|
|
276
276
|
return __generator(this, function (_a) {
|
|
277
277
|
switch (_a.label) {
|
|
278
278
|
case 0:
|
|
279
|
-
|
|
280
|
-
if (sortField) {
|
|
281
|
-
if (Array.isArray(sortField)) {
|
|
282
|
-
multiSortMeta = sortField;
|
|
283
|
-
}
|
|
284
|
-
else {
|
|
285
|
-
multiSortMeta = [{ field: sortField, order: 1 }];
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
findParam = { resultType: FindParam_1.ResultType.AllRows, entity: entity, customFilterItems: XUtils.createCustomFilterItems(customFilter), multiSortMeta: multiSortMeta, fields: fields };
|
|
279
|
+
findParam = { resultType: FindParam_1.ResultType.AllRows, entity: entity, customFilterItems: XUtils.createCustomFilterItems(customFilter), multiSortMeta: XUtils.createMultiSortMeta(sortField), fields: fields };
|
|
289
280
|
return [4 /*yield*/, XUtils.fetchOne('lazyDataTableFindRows', findParam)];
|
|
290
281
|
case 1:
|
|
291
282
|
rowList = (_a.sent()).rowList;
|
|
@@ -294,6 +285,22 @@ var XUtils = /** @class */ (function () {
|
|
|
294
285
|
});
|
|
295
286
|
});
|
|
296
287
|
};
|
|
288
|
+
// pomocna metodka pouzivajuca lazyDataTable service
|
|
289
|
+
XUtils.fetchRowCount = function (entity, customFilter) {
|
|
290
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
291
|
+
var findParam, totalRecords;
|
|
292
|
+
return __generator(this, function (_a) {
|
|
293
|
+
switch (_a.label) {
|
|
294
|
+
case 0:
|
|
295
|
+
findParam = { resultType: FindParam_1.ResultType.OnlyRowCount, entity: entity, customFilterItems: XUtils.createCustomFilterItems(customFilter) };
|
|
296
|
+
return [4 /*yield*/, XUtils.fetchOne('lazyDataTableFindRows', findParam)];
|
|
297
|
+
case 1:
|
|
298
|
+
totalRecords = (_a.sent()).totalRecords;
|
|
299
|
+
return [2 /*return*/, totalRecords];
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
};
|
|
297
304
|
XUtils.fetchOne = function (path, value, usePublicToken) {
|
|
298
305
|
return XUtils.fetch(path, value, usePublicToken);
|
|
299
306
|
};
|
|
@@ -701,6 +708,28 @@ var XUtils = /** @class */ (function () {
|
|
|
701
708
|
}
|
|
702
709
|
return customFilterItems;
|
|
703
710
|
};
|
|
711
|
+
// pomocna metodka - konvertuje sortField -> DataTableSortMeta[]
|
|
712
|
+
XUtils.createMultiSortMeta = function (sortField) {
|
|
713
|
+
var multiSortMeta = undefined;
|
|
714
|
+
if (sortField) {
|
|
715
|
+
if (Array.isArray(sortField)) {
|
|
716
|
+
multiSortMeta = sortField;
|
|
717
|
+
}
|
|
718
|
+
else {
|
|
719
|
+
// default order is asc, supported is also value in form "<column name> desc"
|
|
720
|
+
var order = 1;
|
|
721
|
+
var fieldAndOrder = sortField.split(' ');
|
|
722
|
+
if (fieldAndOrder.length === 2) {
|
|
723
|
+
sortField = fieldAndOrder[0];
|
|
724
|
+
if (fieldAndOrder[1].toLowerCase() === "desc") {
|
|
725
|
+
order = -1;
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
multiSortMeta = [{ field: sortField, order: order }];
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
return multiSortMeta;
|
|
732
|
+
};
|
|
704
733
|
// pomocna metodka
|
|
705
734
|
XUtils.filterAnd = function () {
|
|
706
735
|
var e_7, _a;
|
|
@@ -736,6 +765,17 @@ var XUtils = /** @class */ (function () {
|
|
|
736
765
|
return { where: "[".concat(idField, "] IN (:...idList)"), params: { "idList": idList.length > 0 ? idList : [0] } };
|
|
737
766
|
};
|
|
738
767
|
// pomocna metodka
|
|
768
|
+
XUtils.evalFilter = function (filter) {
|
|
769
|
+
var customFilter = undefined;
|
|
770
|
+
if (typeof filter === 'object') {
|
|
771
|
+
customFilter = filter;
|
|
772
|
+
}
|
|
773
|
+
if (typeof filter === 'function') {
|
|
774
|
+
customFilter = filter();
|
|
775
|
+
}
|
|
776
|
+
return customFilter;
|
|
777
|
+
};
|
|
778
|
+
// pomocna metodka
|
|
739
779
|
XUtils.isTableRowInserted = function (tableRow) {
|
|
740
780
|
var _a;
|
|
741
781
|
return (_a = tableRow.__x_generatedRowId) !== null && _a !== void 0 ? _a : false; // specialny priznak, ze sme vygenerovali id-cko
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { XField } from "../serverApi/XEntityMetadata";
|
|
2
2
|
import { XBrowseMeta } from "../serverApi/XBrowseMetadata";
|
|
3
|
-
import { XBetweenFilterProp } from "./XLazyDataTable";
|
|
3
|
+
import { XBetweenFilterProp } from "./XLazyDataTable/XLazyDataTable";
|
|
4
4
|
export declare class XUtilsMetadata {
|
|
5
5
|
private static xBrowseMetaMap;
|
|
6
6
|
static fetchAndSetXEntityMap(): Promise<any>;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { DataTableFilterMeta, DataTableSortMeta } from "primereact/datatable";
|
|
2
2
|
export declare enum ResultType {
|
|
3
3
|
OnlyRowCount = 0,
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
OnlyPagedRows = 1,
|
|
5
|
+
RowCountAndPagedRows = 2,
|
|
6
|
+
AllRows = 3
|
|
6
7
|
}
|
|
7
8
|
export interface XParams {
|
|
8
9
|
[key: string]: any;
|
|
@@ -15,6 +16,7 @@ export type XCustomFilter = XCustomFilterItem | XCustomFilterItem[];
|
|
|
15
16
|
export interface XFullTextSearch {
|
|
16
17
|
fields?: string[];
|
|
17
18
|
value: string;
|
|
19
|
+
splitValue: boolean;
|
|
18
20
|
matchMode: 'startsWith' | 'contains' | 'endsWith' | 'equals';
|
|
19
21
|
}
|
|
20
22
|
export declare enum XAggregateType {
|
|
@@ -39,3 +41,11 @@ export interface FindParam {
|
|
|
39
41
|
fields?: string[];
|
|
40
42
|
aggregateItems?: XAggregateItem[];
|
|
41
43
|
}
|
|
44
|
+
export interface XLazyAutoCompleteSuggestionsRequest {
|
|
45
|
+
maxRows: number;
|
|
46
|
+
fullTextSearch?: XFullTextSearch;
|
|
47
|
+
entity: string;
|
|
48
|
+
filterItems?: XCustomFilterItem[];
|
|
49
|
+
multiSortMeta?: DataTableSortMeta[];
|
|
50
|
+
fields?: string[];
|
|
51
|
+
}
|
|
@@ -18,8 +18,9 @@ exports.XAggregateType = exports.ResultType = void 0;
|
|
|
18
18
|
var ResultType;
|
|
19
19
|
(function (ResultType) {
|
|
20
20
|
ResultType[ResultType["OnlyRowCount"] = 0] = "OnlyRowCount";
|
|
21
|
-
ResultType[ResultType["
|
|
22
|
-
ResultType[ResultType["
|
|
21
|
+
ResultType[ResultType["OnlyPagedRows"] = 1] = "OnlyPagedRows";
|
|
22
|
+
ResultType[ResultType["RowCountAndPagedRows"] = 2] = "RowCountAndPagedRows";
|
|
23
|
+
ResultType[ResultType["AllRows"] = 3] = "AllRows";
|
|
23
24
|
})(ResultType = exports.ResultType || (exports.ResultType = {}));
|
|
24
25
|
var XAggregateType;
|
|
25
26
|
(function (XAggregateType) {
|
|
@@ -8,7 +8,9 @@ export declare class XUtilsCommon {
|
|
|
8
8
|
static getPathToAssoc(path: string): string;
|
|
9
9
|
static getPathToAssocAndField(path: string): [string | null, string];
|
|
10
10
|
static isSingleField(path: string): boolean;
|
|
11
|
+
static getPrefixAndField(path: string): [string | null, string];
|
|
11
12
|
static objectAsJSON(value: any): string;
|
|
13
|
+
static arrayCreateMap<ID, T>(array: T[], idField: string): Map<ID, T>;
|
|
12
14
|
static getDayName(date: Date | null | undefined): string | undefined;
|
|
13
15
|
static dateAddDays(date: Date | null, days: number): Date | null;
|
|
14
16
|
static findFirstMatch(pattern: RegExp, value: string): string | null;
|
|
@@ -157,6 +157,17 @@ var XUtilsCommon = /** @class */ (function () {
|
|
|
157
157
|
XUtilsCommon.isSingleField = function (path) {
|
|
158
158
|
return path.indexOf(".") === -1;
|
|
159
159
|
};
|
|
160
|
+
XUtilsCommon.getPrefixAndField = function (path) {
|
|
161
|
+
var posDot = path.indexOf(":");
|
|
162
|
+
if (posDot === -1) {
|
|
163
|
+
return [null, path];
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
var prefix = path.substring(0, posDot);
|
|
167
|
+
var pathOnly = path.substring(posDot + 1);
|
|
168
|
+
return [prefix, pathOnly];
|
|
169
|
+
}
|
|
170
|
+
};
|
|
160
171
|
XUtilsCommon.objectAsJSON = function (value) {
|
|
161
172
|
// sem treba dat nejaku pre nas vhodnu serializaciu
|
|
162
173
|
// zatial provizorne robene cez antipatern - modifikaciu prototype funcii primitivnych typov
|
|
@@ -179,6 +190,26 @@ var XUtilsCommon = /** @class */ (function () {
|
|
|
179
190
|
Date.prototype.toJSON = dateToJSONOriginal;
|
|
180
191
|
return json;
|
|
181
192
|
};
|
|
193
|
+
XUtilsCommon.arrayCreateMap = function (array, idField) {
|
|
194
|
+
var e_2, _a;
|
|
195
|
+
var idRowMap = new Map();
|
|
196
|
+
try {
|
|
197
|
+
for (var array_1 = __values(array), array_1_1 = array_1.next(); !array_1_1.done; array_1_1 = array_1.next()) {
|
|
198
|
+
var row = array_1_1.value;
|
|
199
|
+
if (row) {
|
|
200
|
+
idRowMap.set(row[idField], row);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
205
|
+
finally {
|
|
206
|
+
try {
|
|
207
|
+
if (array_1_1 && !array_1_1.done && (_a = array_1.return)) _a.call(array_1);
|
|
208
|
+
}
|
|
209
|
+
finally { if (e_2) throw e_2.error; }
|
|
210
|
+
}
|
|
211
|
+
return idRowMap;
|
|
212
|
+
};
|
|
182
213
|
XUtilsCommon.getDayName = function (date) {
|
|
183
214
|
var days = ['nedeľa', 'pondelok', 'utorok', 'streda', 'štvrtok', 'piatok', 'sobota'];
|
|
184
215
|
return date ? days[date.getDay()] : undefined;
|
|
@@ -201,7 +232,12 @@ var XUtilsCommon = /** @class */ (function () {
|
|
|
201
232
|
};
|
|
202
233
|
XUtilsCommon.today = function () {
|
|
203
234
|
var today = new Date();
|
|
204
|
-
|
|
235
|
+
// vynulujeme casovu zlozku
|
|
236
|
+
// poznamka: Date vzdy obsahuje aj casovu zlozku. Nase konverzne funkcie dateFromModel a dateFromUI pouzivaju konverziu new Date('YYYY-MM-DD')
|
|
237
|
+
// a tato konverzia vytvara datum s GMT/UTC/Z casom 00:00:00 (stredoeuropsky 00:01:00 - akokeby sme zadavali new Date('YYYY-MM-DDT00:00:00Z'))
|
|
238
|
+
//today.setHours(0, 0, 0, 0); // nastavi cas 00:00:00 v aktualnej timezone (stredoeuropsky 00:00:00, GMT 23:00:00)
|
|
239
|
+
// - potom nam nefunguje porovnavanie s datumami vytvorenymi cez funkcie dateFromModel a dateFromUI
|
|
240
|
+
today.setUTCHours(0, 0, 0, 0);
|
|
205
241
|
return today;
|
|
206
242
|
};
|
|
207
243
|
// vrati true ak sa string sklada iba z cislic, moze mat + alebo - na zaciatku
|
|
@@ -11,6 +11,7 @@ export declare class XUtilsMetadataCommon {
|
|
|
11
11
|
static getXEntity(entity: string): XEntity;
|
|
12
12
|
static getXFieldBase(xEntity: XEntity, field: string): XField | undefined;
|
|
13
13
|
static getXField(xEntity: XEntity, field: string): XField;
|
|
14
|
+
static getXFieldByPathBase(xEntity: XEntity, path: string): XField | undefined;
|
|
14
15
|
static getXFieldByPath(xEntity: XEntity, path: string): XField;
|
|
15
16
|
static getXFieldByPathStr(entity: string, path: string): XField;
|
|
16
17
|
static getXAssocBase(xEntity: XEntity, assocField: string): XAssoc | undefined;
|
|
@@ -64,6 +64,22 @@ var XUtilsMetadataCommon = /** @class */ (function () {
|
|
|
64
64
|
}
|
|
65
65
|
return xField;
|
|
66
66
|
};
|
|
67
|
+
XUtilsMetadataCommon.getXFieldByPathBase = function (xEntity, path) {
|
|
68
|
+
var _a = __read(XUtilsCommon_1.XUtilsCommon.getFieldAndRestPath(path), 2), field = _a[0], restPath = _a[1];
|
|
69
|
+
if (restPath === null) {
|
|
70
|
+
return XUtilsMetadataCommon.getXFieldBase(xEntity, field);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
var xAssoc = XUtilsMetadataCommon.getXAssocBase(xEntity, field);
|
|
74
|
+
if (xAssoc) {
|
|
75
|
+
var xAssocEntity = XUtilsMetadataCommon.getXEntity(xAssoc.entityName);
|
|
76
|
+
return XUtilsMetadataCommon.getXFieldByPathBase(xAssocEntity, restPath);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
67
83
|
XUtilsMetadataCommon.getXFieldByPath = function (xEntity, path) {
|
|
68
84
|
var _a = __read(XUtilsCommon_1.XUtilsCommon.getFieldAndRestPath(path), 2), field = _a[0], restPath = _a[1];
|
|
69
85
|
if (restPath === null) {
|