@michalrakus/x-react-web-lib 1.11.1 → 1.13.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/XUtilsConversions.d.ts +1 -1
- package/XUtilsConversions.js +1 -1
- package/XUtilsMetadataCommon.d.ts +3 -0
- package/XUtilsMetadataCommon.js +5 -0
- package/gulpfile.js +3 -2
- package/lib/components/XAutoComplete.d.ts +3 -1
- package/lib/components/XAutoComplete.js +14 -8
- package/lib/components/XAutoCompleteBase.d.ts +4 -0
- package/lib/components/XAutoCompleteBase.js +33 -2
- package/lib/components/XAutoCompleteDT.js +4 -4
- package/lib/components/XCalendar.js +1 -1
- package/lib/components/XDropdown.js +2 -2
- package/lib/components/XDropdownDT.js +4 -4
- package/lib/components/XDropdownDTFilter.js +2 -2
- package/lib/components/XDropdownForEntity.js +2 -2
- package/lib/components/XEditBrowse.js +4 -3
- package/lib/components/XExportRowsDialog.js +1 -1
- package/lib/components/XFieldSelector.js +4 -4
- package/lib/components/XFormDataTable2.js +13 -12
- package/lib/components/XFtsInput.d.ts +9 -0
- package/lib/components/XFtsInput.js +30 -0
- package/lib/components/XInput.js +2 -2
- package/lib/components/XInputDT.js +2 -2
- package/lib/components/XInputDateDT.js +1 -1
- package/lib/components/XInputFileList.js +6 -6
- package/lib/components/XInputIntervalBase.js +1 -1
- package/lib/components/XInputText.js +1 -1
- package/lib/components/XInputTextDT.js +3 -3
- package/lib/components/XInputTextarea.js +1 -1
- package/lib/components/XLazyDataTable.d.ts +11 -0
- package/lib/components/XLazyDataTable.js +58 -55
- package/lib/components/XSearchButton.js +4 -4
- package/lib/components/XSearchButtonDT.js +3 -3
- package/lib/components/XSearchButtonOld.js +5 -5
- package/lib/components/XToOneAssocButton.js +3 -3
- package/lib/components/XUtils.js +2 -1
- package/lib/components/XUtilsMetadata.d.ts +1 -19
- package/lib/components/XUtilsMetadata.js +8 -186
- package/lib/components/locale/x-en.json +4 -1
- package/lib/serverApi/ExportImportParam.d.ts +2 -1
- package/lib/serverApi/FindParam.d.ts +6 -0
- package/lib/{components → serverApi}/XUtilsConversions.d.ts +18 -1
- package/lib/serverApi/XUtilsConversions.js +330 -0
- package/lib/serverApi/XUtilsMetadataCommon.d.ts +30 -0
- package/lib/serverApi/XUtilsMetadataCommon.js +208 -0
- package/package.json +2 -2
- package/lib/components/XUtilsConversions.js +0 -177
|
@@ -69,24 +69,24 @@ exports.XInputFileList = void 0;
|
|
|
69
69
|
var react_1 = __importDefault(require("react"));
|
|
70
70
|
var react_2 = require("react");
|
|
71
71
|
var fileupload_1 = require("primereact/fileupload");
|
|
72
|
-
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
73
72
|
var XUtils_1 = require("./XUtils");
|
|
74
73
|
var XButton_1 = require("./XButton");
|
|
75
74
|
var XButtonIconNarrow_1 = require("./XButtonIconNarrow");
|
|
76
|
-
var XUtilsConversions_1 = require("
|
|
75
|
+
var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
|
|
77
76
|
var XLocale_1 = require("./XLocale");
|
|
77
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
78
78
|
var XInputFileList = /** @class */ (function (_super) {
|
|
79
79
|
__extends(XInputFileList, _super);
|
|
80
80
|
function XInputFileList(props) {
|
|
81
81
|
var _this = _super.call(this, props) || this;
|
|
82
82
|
_this.fileUploadRef = react_1.default.createRef();
|
|
83
83
|
_this.props = props;
|
|
84
|
-
var xEntityForm =
|
|
85
|
-
var xAssocToMany =
|
|
84
|
+
var xEntityForm = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.form.getEntity());
|
|
85
|
+
var xAssocToMany = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToMany(xEntityForm, props.assocField);
|
|
86
86
|
_this.entity = xAssocToMany.entityName;
|
|
87
|
-
var xEntity =
|
|
87
|
+
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(_this.entity);
|
|
88
88
|
_this.idField = xEntity.idField;
|
|
89
|
-
_this.xFileField =
|
|
89
|
+
_this.xFileField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOneByAssocEntity(xEntity, 'XFile').name;
|
|
90
90
|
_this.onDownloadFile = _this.onDownloadFile.bind(_this);
|
|
91
91
|
_this.onRemoveFile = _this.onRemoveFile.bind(_this);
|
|
92
92
|
_this.uploadHandler = _this.uploadHandler.bind(_this);
|
|
@@ -53,7 +53,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
53
53
|
exports.XInputIntervalBase = void 0;
|
|
54
54
|
var inputtext_1 = require("primereact/inputtext");
|
|
55
55
|
var react_1 = __importStar(require("react"));
|
|
56
|
-
var XUtilsConversions_1 = require("
|
|
56
|
+
var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
|
|
57
57
|
var XUtils_1 = require("./XUtils");
|
|
58
58
|
// zatial podporuje len hours a minutes - TODO - pridat aj seconds, ale cez nejaky prepinac
|
|
59
59
|
var XInputIntervalBase = function (props) {
|
|
@@ -31,7 +31,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
31
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
32
|
exports.XInputText = void 0;
|
|
33
33
|
var react_1 = __importDefault(require("react"));
|
|
34
|
-
var XUtilsConversions_1 = require("
|
|
34
|
+
var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
|
|
35
35
|
var inputtext_1 = require("primereact/inputtext");
|
|
36
36
|
var XInput_1 = require("./XInput");
|
|
37
37
|
var XInputText = /** @class */ (function (_super) {
|
|
@@ -6,12 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.XInputTextDT = void 0;
|
|
7
7
|
var react_1 = __importDefault(require("react"));
|
|
8
8
|
var inputtext_1 = require("primereact/inputtext");
|
|
9
|
-
var XUtilsConversions_1 = require("
|
|
10
|
-
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
9
|
+
var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
|
|
11
10
|
var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
|
|
12
11
|
var XUtils_1 = require("./XUtils");
|
|
12
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
13
13
|
var XInputTextDT = function (props) {
|
|
14
|
-
var xField =
|
|
14
|
+
var xField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldByPathStr(props.entity, props.field);
|
|
15
15
|
var onValueChange = function (field, rowData, newValue) {
|
|
16
16
|
// zmenime hodnotu v modeli (odtial sa hodnota cita)
|
|
17
17
|
rowData[field] = (0, XUtilsConversions_1.stringFromUI)(newValue);
|
|
@@ -31,7 +31,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
31
31
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
32
|
exports.XInputTextarea = void 0;
|
|
33
33
|
var react_1 = __importDefault(require("react"));
|
|
34
|
-
var XUtilsConversions_1 = require("
|
|
34
|
+
var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
|
|
35
35
|
var XInput_1 = require("./XInput");
|
|
36
36
|
var inputtextarea_1 = require("primereact/inputtextarea");
|
|
37
37
|
var XUtils_1 = require("./XUtils");
|
|
@@ -4,7 +4,15 @@ import { ColumnBodyOptions, ColumnFilterElementTemplateOptions } from 'primereac
|
|
|
4
4
|
import { XSearchBrowseParams } from "./XSearchBrowseParams";
|
|
5
5
|
import { XAggregateType, XCustomFilter } from "../serverApi/FindParam";
|
|
6
6
|
import { XOnSaveOrCancelProp } from "./XFormBase";
|
|
7
|
+
import { IconType } from "primereact/utils";
|
|
8
|
+
import { ButtonProps } from "primereact/button";
|
|
7
9
|
export type XBetweenFilterProp = "row" | "column" | undefined;
|
|
10
|
+
export interface XAppButtonForRow {
|
|
11
|
+
key?: string;
|
|
12
|
+
icon?: IconType<ButtonProps>;
|
|
13
|
+
label: string;
|
|
14
|
+
onClick: (selectedRow: any) => void;
|
|
15
|
+
}
|
|
8
16
|
export interface XEditModeHandlers {
|
|
9
17
|
onStart: () => void;
|
|
10
18
|
onSave: () => void;
|
|
@@ -38,10 +46,12 @@ export interface XLazyDataTableProps {
|
|
|
38
46
|
onEdit?: (selectedRow: any) => void;
|
|
39
47
|
removeRow?: ((selectedRow: any) => Promise<boolean>) | boolean;
|
|
40
48
|
onRemoveRow?: XOnSaveOrCancelProp;
|
|
49
|
+
appButtonsForRow?: XAppButtonForRow[];
|
|
41
50
|
appButtons?: any;
|
|
42
51
|
filters?: DataTableFilterMeta;
|
|
43
52
|
customFilter?: XCustomFilter;
|
|
44
53
|
sortField?: string;
|
|
54
|
+
fullTextSearch: boolean | string[];
|
|
45
55
|
searchBrowseParams?: XSearchBrowseParams;
|
|
46
56
|
width?: string;
|
|
47
57
|
dataLoadedState?: [boolean, React.Dispatch<React.SetStateAction<boolean>>];
|
|
@@ -56,6 +66,7 @@ export declare const XLazyDataTable: {
|
|
|
56
66
|
paginator: boolean;
|
|
57
67
|
rows: number;
|
|
58
68
|
filterDisplay: string;
|
|
69
|
+
fullTextSearch: boolean;
|
|
59
70
|
scrollable: boolean;
|
|
60
71
|
scrollWidth: string;
|
|
61
72
|
scrollHeight: string;
|
|
@@ -105,7 +105,7 @@ var XButton_1 = require("./XButton");
|
|
|
105
105
|
var XUtils_1 = require("./XUtils");
|
|
106
106
|
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
107
107
|
var XDropdownDTFilter_1 = require("./XDropdownDTFilter");
|
|
108
|
-
var XUtilsConversions_1 = require("
|
|
108
|
+
var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
|
|
109
109
|
var FindParam_1 = require("../serverApi/FindParam");
|
|
110
110
|
var XButtonIconSmall_1 = require("./XButtonIconSmall");
|
|
111
111
|
var tristatecheckbox_1 = require("primereact/tristatecheckbox");
|
|
@@ -115,10 +115,12 @@ var api_1 = require("primereact/api");
|
|
|
115
115
|
var XCalendar_1 = require("./XCalendar");
|
|
116
116
|
var XInputDecimalBase_1 = require("./XInputDecimalBase");
|
|
117
117
|
var XLocale_1 = require("./XLocale");
|
|
118
|
+
var XFtsInput_1 = require("./XFtsInput");
|
|
119
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
118
120
|
var XLazyDataTable = function (props) {
|
|
119
121
|
var _a;
|
|
120
122
|
// must be here, is used in createInitFilters()
|
|
121
|
-
var xEntity =
|
|
123
|
+
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity);
|
|
122
124
|
var createAggregateItems = function () {
|
|
123
125
|
var e_1, _a;
|
|
124
126
|
var aggregateItems = [];
|
|
@@ -151,7 +153,7 @@ var XLazyDataTable = function (props) {
|
|
|
151
153
|
var column = columns_2_1.value;
|
|
152
154
|
var xLazyColumn = column; // nevedel som to krajsie...
|
|
153
155
|
var field = xLazyColumn.props.field;
|
|
154
|
-
var xField =
|
|
156
|
+
var xField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldByPath(xEntity, field);
|
|
155
157
|
// TODO column.props.dropdownInFilter - pre "menu" by bolo fajn mat zoznam "enumov"
|
|
156
158
|
var filterMatchMode = getFilterMatchMode(xField);
|
|
157
159
|
initFilters[field] = createFilterItem(props.filterDisplay, { value: null, matchMode: filterMatchMode });
|
|
@@ -169,7 +171,7 @@ var XLazyDataTable = function (props) {
|
|
|
169
171
|
var getFilterMatchMode = function (xField) {
|
|
170
172
|
var filterMatchMode;
|
|
171
173
|
if (xField.type === "string") {
|
|
172
|
-
filterMatchMode = api_1.FilterMatchMode.
|
|
174
|
+
filterMatchMode = api_1.FilterMatchMode.CONTAINS;
|
|
173
175
|
}
|
|
174
176
|
// zatial vsetky ostatne EQUALS
|
|
175
177
|
else if (xField.type === "decimal" || xField.type === "number" || xField.type === "date" || xField.type === "datetime" || xField.type === "boolean") {
|
|
@@ -196,6 +198,9 @@ var XLazyDataTable = function (props) {
|
|
|
196
198
|
}
|
|
197
199
|
return filterItem;
|
|
198
200
|
};
|
|
201
|
+
var createInitFtsInputValue = function () {
|
|
202
|
+
return { value: null, matchMode: "contains" };
|
|
203
|
+
};
|
|
199
204
|
// premenne platne pre cely component (obdoba member premennych v class-e)
|
|
200
205
|
var dataTableEl = (0, react_1.useRef)(null);
|
|
201
206
|
var customFilterItems = XUtils_1.XUtils.createCustomFilterItems(props.customFilter);
|
|
@@ -219,12 +224,15 @@ var XLazyDataTable = function (props) {
|
|
|
219
224
|
}
|
|
220
225
|
}
|
|
221
226
|
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)
|
|
222
|
-
var
|
|
223
|
-
var
|
|
224
|
-
var
|
|
225
|
-
var
|
|
226
|
-
var
|
|
227
|
-
var
|
|
227
|
+
var initFtsInputValue = props.fullTextSearch ? createInitFtsInputValue() : undefined;
|
|
228
|
+
var _g = __read((0, react_1.useState)(initFtsInputValue), 2), ftsInputValue = _g[0], setFtsInputValue = _g[1];
|
|
229
|
+
var _h = __read((0, react_1.useState)(props.sortField ? [{ field: props.sortField, order: 1 }] : []), 2), multiSortMeta = _h[0], setMultiSortMeta = _h[1];
|
|
230
|
+
var _j = __read((0, react_1.useState)(null), 2), selectedRow = _j[0], setSelectedRow = _j[1];
|
|
231
|
+
var _k = __read((_a = props.dataLoadedState) !== null && _a !== void 0 ? _a : (0, react_1.useState)(false), 2), dataLoaded = _k[0], setDataLoaded = _k[1]; // priznak kde si zapiseme, ci uz sme nacitali data
|
|
232
|
+
var _l = __read((0, react_1.useState)(false), 2), exportRowsDialogOpened = _l[0], setExportRowsDialogOpened = _l[1];
|
|
233
|
+
var _m = __read((0, react_1.useState)(), 2), exportRowsDialogRowCount = _m[0], setExportRowsDialogRowCount = _m[1]; // param pre dialog
|
|
234
|
+
var _o = __read((0, react_1.useState)(filtersInit), 2), filtersAfterFiltering = _o[0], setFiltersAfterFiltering = _o[1]; // sem si odkladame stav filtra po kliknuti na button Filter (chceme exportovat presne to co vidno vyfiltrovane)
|
|
235
|
+
var _p = __read((0, react_1.useState)(initFtsInputValue), 2), ftsInputValueAfterFiltering = _p[0], setFtsInputValueAfterFiltering = _p[1]; // tak isto ako filtersAfterFiltering
|
|
228
236
|
// parameter [] zabezpeci ze sa metoda zavola len po prvom renderingu (a nie po kazdej zmene stavu (zavolani setNieco()))
|
|
229
237
|
(0, react_1.useEffect)(function () {
|
|
230
238
|
// jednoduchy sposob - nepouzivame parameter props.displayed a priznak dataLoaded
|
|
@@ -252,12 +260,12 @@ var XLazyDataTable = function (props) {
|
|
|
252
260
|
}
|
|
253
261
|
}); // eslint-disable-line react-hooks/exhaustive-deps
|
|
254
262
|
// TODO - preco je to tu? presunut dole ak sa da...
|
|
255
|
-
var dataKey = props.dataKey !== undefined ? props.dataKey :
|
|
263
|
+
var dataKey = props.dataKey !== undefined ? props.dataKey : XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity).idField;
|
|
256
264
|
var onPage = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
257
265
|
return __generator(this, function (_a) {
|
|
258
266
|
//console.log("zavolany onPage");
|
|
259
267
|
setFirst(event.first);
|
|
260
|
-
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: event.first, rows: rows, filters: filters, customFilterItems: customFilterItems, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems });
|
|
268
|
+
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: event.first, rows: rows, filters: filters, fullTextSearch: createXFullTextSearch(ftsInputValue), customFilterItems: customFilterItems, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems });
|
|
261
269
|
return [2 /*return*/];
|
|
262
270
|
});
|
|
263
271
|
}); };
|
|
@@ -271,7 +279,7 @@ var XLazyDataTable = function (props) {
|
|
|
271
279
|
//console.log("zavolany onSort - this.state.multiSortMeta = " + JSON.stringify(multiSortMeta));
|
|
272
280
|
//console.log("zavolany onSort - event.multiSortMeta = " + JSON.stringify(event.multiSortMeta));
|
|
273
281
|
setMultiSortMeta(event.multiSortMeta);
|
|
274
|
-
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, customFilterItems: customFilterItems, multiSortMeta: event.multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems });
|
|
282
|
+
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, fullTextSearch: createXFullTextSearch(ftsInputValue), customFilterItems: customFilterItems, multiSortMeta: event.multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems });
|
|
275
283
|
};
|
|
276
284
|
var onClickFilter = function () {
|
|
277
285
|
//console.log("zavolany onClickFilter");
|
|
@@ -281,9 +289,12 @@ var XLazyDataTable = function (props) {
|
|
|
281
289
|
// najjednoduchsi sposob - pomeni aj pripadne nastavene matchMode hodnoty
|
|
282
290
|
var filtersInit = createInitFilters();
|
|
283
291
|
setFilters(filtersInit);
|
|
292
|
+
if (ftsInputValue) {
|
|
293
|
+
setFtsInputValue(createInitFtsInputValue());
|
|
294
|
+
}
|
|
284
295
|
};
|
|
285
296
|
var loadData = function () {
|
|
286
|
-
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, customFilterItems: customFilterItems, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems });
|
|
297
|
+
loadDataBase({ resultType: FindParam_1.ResultType.RowCountAndPagedRows, first: first, rows: rows, filters: filters, fullTextSearch: createXFullTextSearch(ftsInputValue), customFilterItems: customFilterItems, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems });
|
|
287
298
|
};
|
|
288
299
|
var loadDataBase = function (findParam) { return __awaiter(void 0, void 0, void 0, function () {
|
|
289
300
|
var findResult;
|
|
@@ -299,6 +310,7 @@ var XLazyDataTable = function (props) {
|
|
|
299
310
|
setLoading(false);
|
|
300
311
|
// odlozime si filter hodnoty pre pripadny export - deep cloning vyzera ze netreba
|
|
301
312
|
setFiltersAfterFiltering(filters);
|
|
313
|
+
setFtsInputValueAfterFiltering(ftsInputValue ? __assign({}, ftsInputValue) : undefined);
|
|
302
314
|
return [2 /*return*/];
|
|
303
315
|
}
|
|
304
316
|
});
|
|
@@ -315,6 +327,17 @@ var XLazyDataTable = function (props) {
|
|
|
315
327
|
}
|
|
316
328
|
});
|
|
317
329
|
}); };
|
|
330
|
+
var createXFullTextSearch = function (ftsInputValue) {
|
|
331
|
+
var xFullTextSearch = undefined; // default
|
|
332
|
+
if (ftsInputValue && ftsInputValue.value !== null) {
|
|
333
|
+
xFullTextSearch = {
|
|
334
|
+
fields: Array.isArray(props.fullTextSearch) ? props.fullTextSearch : undefined,
|
|
335
|
+
value: ftsInputValue.value,
|
|
336
|
+
matchMode: ftsInputValue.matchMode
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
return xFullTextSearch;
|
|
340
|
+
};
|
|
318
341
|
var getFields = function () {
|
|
319
342
|
// krasne zobrazi cely objekt!
|
|
320
343
|
//console.log(dataTableEl.current);
|
|
@@ -446,12 +469,20 @@ var XLazyDataTable = function (props) {
|
|
|
446
469
|
}
|
|
447
470
|
});
|
|
448
471
|
}); };
|
|
472
|
+
var onClickAppButtonForRow = function (onClick) {
|
|
473
|
+
if (selectedRow !== null) {
|
|
474
|
+
onClick(selectedRow);
|
|
475
|
+
}
|
|
476
|
+
else {
|
|
477
|
+
alert((0, XLocale_1.xLocaleOption)('pleaseSelectRow'));
|
|
478
|
+
}
|
|
479
|
+
};
|
|
449
480
|
var onClickExport = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
450
481
|
var findParam, findResult;
|
|
451
482
|
return __generator(this, function (_a) {
|
|
452
483
|
switch (_a.label) {
|
|
453
484
|
case 0:
|
|
454
|
-
findParam = { resultType: FindParam_1.ResultType.OnlyRowCount, first: first, rows: rows, filters: filtersAfterFiltering, customFilterItems: customFilterItems, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems };
|
|
485
|
+
findParam = { resultType: FindParam_1.ResultType.OnlyRowCount, first: first, rows: rows, filters: filtersAfterFiltering, fullTextSearch: createXFullTextSearch(ftsInputValueAfterFiltering), customFilterItems: customFilterItems, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields(), aggregateItems: aggregateItems };
|
|
455
486
|
return [4 /*yield*/, findByFilter(findParam)];
|
|
456
487
|
case 1:
|
|
457
488
|
findResult = _a.sent();
|
|
@@ -463,7 +494,7 @@ var XLazyDataTable = function (props) {
|
|
|
463
494
|
});
|
|
464
495
|
}); };
|
|
465
496
|
var createExportParams = function () {
|
|
466
|
-
var queryParam = { filters: filtersAfterFiltering, customFilterItems: customFilterItems, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() };
|
|
497
|
+
var queryParam = { filters: filtersAfterFiltering, fullTextSearch: createXFullTextSearch(ftsInputValueAfterFiltering), customFilterItems: customFilterItems, multiSortMeta: multiSortMeta, entity: props.entity, fields: getFields() };
|
|
467
498
|
return {
|
|
468
499
|
path: "x-lazy-data-table-export",
|
|
469
500
|
queryParam: queryParam,
|
|
@@ -572,47 +603,15 @@ var XLazyDataTable = function (props) {
|
|
|
572
603
|
return betweenFilter;
|
|
573
604
|
};
|
|
574
605
|
var valueAsUI = function (value, xField) {
|
|
575
|
-
var valueResult
|
|
576
|
-
if (xField.type === "
|
|
577
|
-
// tuto zatial hack, mal by vzdy prist number
|
|
578
|
-
var numberValue = null;
|
|
579
|
-
if (typeof value === 'string') {
|
|
580
|
-
numberValue = parseFloat(value);
|
|
581
|
-
}
|
|
582
|
-
else if (typeof value === 'number') {
|
|
583
|
-
numberValue = value;
|
|
584
|
-
}
|
|
585
|
-
valueResult = (0, XUtilsConversions_1.numberAsUI)(numberValue, xField.scale);
|
|
586
|
-
}
|
|
587
|
-
else if (xField.type === "date") {
|
|
588
|
-
// tuto zatial hack, mal by prist Date
|
|
589
|
-
var dateValue = null;
|
|
590
|
-
if (typeof value === 'string') {
|
|
591
|
-
dateValue = new Date(value);
|
|
592
|
-
}
|
|
593
|
-
else if (typeof value === 'object' && value instanceof Date) {
|
|
594
|
-
dateValue = value;
|
|
595
|
-
}
|
|
596
|
-
valueResult = (0, XUtilsConversions_1.dateAsUI)(dateValue);
|
|
597
|
-
}
|
|
598
|
-
else if (xField.type === "datetime") {
|
|
599
|
-
// tuto zatial hack, mal by prist Date
|
|
600
|
-
var dateValue = null;
|
|
601
|
-
if (typeof value === 'string') {
|
|
602
|
-
dateValue = new Date(value);
|
|
603
|
-
}
|
|
604
|
-
else if (typeof value === 'object' && value instanceof Date) {
|
|
605
|
-
dateValue = value;
|
|
606
|
-
}
|
|
607
|
-
valueResult = (0, XUtilsConversions_1.datetimeAsUI)(dateValue);
|
|
608
|
-
}
|
|
609
|
-
else if (xField.type === "boolean") {
|
|
606
|
+
var valueResult;
|
|
607
|
+
if (xField.type === "boolean") {
|
|
610
608
|
// TODO - efektivnejsie by bolo renderovat len prislusne ikonky
|
|
611
609
|
valueResult = react_1.default.createElement(tristatecheckbox_1.TriStateCheckbox, { value: value, disabled: true });
|
|
612
610
|
}
|
|
613
611
|
else {
|
|
614
|
-
//
|
|
615
|
-
|
|
612
|
+
// ine typy - convertValue vrati string
|
|
613
|
+
// mame zapnutu konverziu fromModel, lebo z json-u nam prichadzaju objekty typu string (napr. pri datumoch)
|
|
614
|
+
valueResult = (0, XUtilsConversions_1.convertValue)(xField, value, true, XUtilsConversions_1.AsUIType.Form);
|
|
616
615
|
}
|
|
617
616
|
return valueResult;
|
|
618
617
|
};
|
|
@@ -726,7 +725,7 @@ var XLazyDataTable = function (props) {
|
|
|
726
725
|
// priklad je na https://soshace.com/building-react-components-using-children-props-and-context-api/
|
|
727
726
|
// (vzdy musime robit manipulacie so stlpcom, lebo potrebujeme pridat filter={true} sortable={true}
|
|
728
727
|
var childColumn = child; // nevedel som to krajsie...
|
|
729
|
-
var xField =
|
|
728
|
+
var xField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldByPath(xEntity, childColumn.props.field);
|
|
730
729
|
// *********** header ***********
|
|
731
730
|
var headerLabel = childColumn.props.header !== undefined ? childColumn.props.header : childColumn.props.field;
|
|
732
731
|
var header;
|
|
@@ -868,8 +867,10 @@ var XLazyDataTable = function (props) {
|
|
|
868
867
|
}
|
|
869
868
|
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 });
|
|
870
869
|
});
|
|
870
|
+
// align-items-center centruje vertikalne (posuva smerom doulu do stredu)
|
|
871
871
|
return (react_1.default.createElement("div", null,
|
|
872
|
-
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
872
|
+
react_1.default.createElement("div", { className: "flex justify-content-center align-items-center" },
|
|
873
|
+
ftsInputValue ? react_1.default.createElement(XFtsInput_1.XFtsInput, { value: ftsInputValue, onChange: function (value) { return setFtsInputValue(value); } }) : null,
|
|
873
874
|
react_1.default.createElement(XButton_1.XButton, { key: "filter", label: (0, XLocale_1.xLocaleOption)('filter'), onClick: onClickFilter }),
|
|
874
875
|
react_1.default.createElement(XButton_1.XButton, { key: "clearFilter", label: (0, XLocale_1.xLocaleOption)('clearFilter'), onClick: onClickClearFilter })),
|
|
875
876
|
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
@@ -879,6 +880,7 @@ var XLazyDataTable = function (props) {
|
|
|
879
880
|
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,
|
|
880
881
|
props.removeRow !== undefined && props.removeRow !== false && props.searchBrowseParams === undefined ? react_1.default.createElement(XButton_1.XButton, { key: "removeRow", icon: "pi pi-times", label: (0, XLocale_1.xLocaleOption)('removeRow'), onClick: onClickRemoveRow }) : null,
|
|
881
882
|
exportRows ? react_1.default.createElement(XButton_1.XButton, { key: "exportRows", icon: "pi pi-file-export", label: (0, XLocale_1.xLocaleOption)('exportRows'), onClick: onClickExport }) : null,
|
|
883
|
+
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,
|
|
882
884
|
props.appButtons,
|
|
883
885
|
props.searchBrowseParams !== undefined ? react_1.default.createElement(XButton_1.XButton, { key: "choose", label: (0, XLocale_1.xLocaleOption)('chooseRow'), onClick: onClickChoose }) : null,
|
|
884
886
|
exportRows ? react_1.default.createElement(XExportRowsDialog_1.XExportRowsDialog, { key: "exportRowsDialog", dialogOpened: exportRowsDialogOpened, hideDialog: function () { return setExportRowsDialogOpened(false); }, rowCount: exportRowsDialogRowCount, exportParams: createExportParams }) : null)));
|
|
@@ -888,6 +890,7 @@ exports.XLazyDataTable.defaultProps = {
|
|
|
888
890
|
paginator: true,
|
|
889
891
|
rows: 10,
|
|
890
892
|
filterDisplay: "row",
|
|
893
|
+
fullTextSearch: true,
|
|
891
894
|
scrollable: true,
|
|
892
895
|
scrollWidth: 'viewport',
|
|
893
896
|
scrollHeight: 'viewport',
|
|
@@ -71,13 +71,13 @@ var inputtext_1 = require("primereact/inputtext");
|
|
|
71
71
|
var button_1 = require("primereact/button");
|
|
72
72
|
var XUtils_1 = require("./XUtils");
|
|
73
73
|
var dialog_1 = require("primereact/dialog");
|
|
74
|
-
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
75
74
|
var XFormComponent_1 = require("./XFormComponent");
|
|
75
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
76
76
|
var XSearchButton = /** @class */ (function (_super) {
|
|
77
77
|
__extends(XSearchButton, _super);
|
|
78
78
|
function XSearchButton(props) {
|
|
79
79
|
var _this = _super.call(this, props) || this;
|
|
80
|
-
_this.xAssoc =
|
|
80
|
+
_this.xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.form.getEntity()), props.assocField);
|
|
81
81
|
_this.inputTextRef = react_1.default.createRef();
|
|
82
82
|
// POVODNY KOD
|
|
83
83
|
//this.overlayPanelEl = React.createRef();
|
|
@@ -99,8 +99,8 @@ var XSearchButton = /** @class */ (function (_super) {
|
|
|
99
99
|
var _this = this;
|
|
100
100
|
var _a;
|
|
101
101
|
var props = this.props;
|
|
102
|
-
var xEntityAssoc =
|
|
103
|
-
var xDisplayField =
|
|
102
|
+
var xEntityAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.xAssoc.entityName);
|
|
103
|
+
var xDisplayField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldByPath(xEntityAssoc, props.displayField);
|
|
104
104
|
// tu boli hook-y kedysi...
|
|
105
105
|
var inputChanged = this.state.inputChanged;
|
|
106
106
|
var setInputChanged = function (inputChanged) { _this.setState({ inputChanged: inputChanged }); };
|
|
@@ -81,7 +81,7 @@ var XUtils_1 = require("./XUtils");
|
|
|
81
81
|
var inputtext_1 = require("primereact/inputtext");
|
|
82
82
|
var button_1 = require("primereact/button");
|
|
83
83
|
var dialog_1 = require("primereact/dialog");
|
|
84
|
-
var
|
|
84
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
85
85
|
var XSearchButtonDT = function (props) {
|
|
86
86
|
var inputTextRef = (0, react_1.useRef)(null);
|
|
87
87
|
var _a = __read((0, react_1.useState)(false), 2), inputChanged = _a[0], setInputChanged = _a[1]; // priznak, ci uzivatel typovanim zmenil hodnotu v inpute
|
|
@@ -147,8 +147,8 @@ var XSearchButtonDT = function (props) {
|
|
|
147
147
|
}
|
|
148
148
|
else {
|
|
149
149
|
if (props.assocForm !== undefined) {
|
|
150
|
-
var xEntity =
|
|
151
|
-
var xEntityAssoc =
|
|
150
|
+
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity);
|
|
151
|
+
var xEntityAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntityForAssocToOne(xEntity, props.assocField);
|
|
152
152
|
if (props.rowData !== null) {
|
|
153
153
|
var assocObject = props.rowData[props.assocField];
|
|
154
154
|
// OTAZKA - ziskavat id priamo z root objektu? potom ho vsak treba do root objektu pridat
|
|
@@ -81,14 +81,14 @@ var inputtext_1 = require("primereact/inputtext");
|
|
|
81
81
|
var button_1 = require("primereact/button");
|
|
82
82
|
var XUtils_1 = require("./XUtils");
|
|
83
83
|
var dialog_1 = require("primereact/dialog");
|
|
84
|
-
var
|
|
84
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
85
85
|
var XSearchButtonOld = function (props) {
|
|
86
86
|
var _a, _b, _c;
|
|
87
87
|
props.form.addField(props.assocField + '.' + props.displayField);
|
|
88
|
-
var xEntity =
|
|
89
|
-
var xAssoc =
|
|
90
|
-
var xEntityAssoc =
|
|
91
|
-
var xDisplayField =
|
|
88
|
+
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.form.getEntity());
|
|
89
|
+
var xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(xEntity, props.assocField);
|
|
90
|
+
var xEntityAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(xAssoc.entityName);
|
|
91
|
+
var xDisplayField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldByPath(xEntityAssoc, props.displayField);
|
|
92
92
|
// POVODNY KOD
|
|
93
93
|
//const overlayPanelEl = useRef<any>(null);
|
|
94
94
|
var inputTextEl = (0, react_1.useRef)(null);
|
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.XToOneAssocButton = void 0;
|
|
7
7
|
var react_1 = __importDefault(require("react"));
|
|
8
8
|
var button_1 = require("primereact/button");
|
|
9
|
-
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
10
9
|
var XUtils_1 = require("./XUtils");
|
|
10
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
11
11
|
var XToOneAssocButton = function (props) {
|
|
12
12
|
// mozno lepsie by bolo sem dat xEntityAssoc.idField ale postaci aj *FAKE*
|
|
13
13
|
props.form.addField(props.assocField + '.*FAKE*');
|
|
@@ -15,8 +15,8 @@ var XToOneAssocButton = function (props) {
|
|
|
15
15
|
var object = props.form.state.object;
|
|
16
16
|
var assocObject = object !== null ? object[props.assocField] : null;
|
|
17
17
|
var onClickButton = function (e) {
|
|
18
|
-
var xEntity =
|
|
19
|
-
var xEntityAssoc =
|
|
18
|
+
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.form.getEntity());
|
|
19
|
+
var xEntityAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntityForAssocToOne(xEntity, props.assocField);
|
|
20
20
|
// OTAZKA - ziskavat id priamo z root objektu? potom ho vsak treba do root objektu pridat
|
|
21
21
|
var id = assocObject !== null ? assocObject[xEntityAssoc.idField] : null;
|
|
22
22
|
// klonovanim elementu pridame atribut id
|
package/lib/components/XUtils.js
CHANGED
|
@@ -89,6 +89,7 @@ var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
|
|
|
89
89
|
var ExportImportParam_1 = require("../serverApi/ExportImportParam");
|
|
90
90
|
var XResponseError_1 = require("./XResponseError");
|
|
91
91
|
var FindParam_1 = require("../serverApi/FindParam");
|
|
92
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
92
93
|
var OperationType;
|
|
93
94
|
(function (OperationType) {
|
|
94
95
|
OperationType[OperationType["None"] = 0] = "None";
|
|
@@ -454,7 +455,7 @@ var XUtils = /** @class */ (function () {
|
|
|
454
455
|
return __generator(this, function (_a) {
|
|
455
456
|
switch (_a.label) {
|
|
456
457
|
case 0:
|
|
457
|
-
xEntity =
|
|
458
|
+
xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(entity);
|
|
458
459
|
id = row[xEntity.idField];
|
|
459
460
|
return [4 /*yield*/, XUtils.post('removeRow', { entity: entity, id: id })];
|
|
460
461
|
case 1:
|
|
@@ -1,25 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { XField } from "../serverApi/XEntityMetadata";
|
|
2
2
|
import { XBrowseMeta } from "../serverApi/XBrowseMetadata";
|
|
3
3
|
import { XBetweenFilterProp } from "./XLazyDataTable";
|
|
4
4
|
export declare class XUtilsMetadata {
|
|
5
|
-
private static xEntityMap;
|
|
6
5
|
private static xBrowseMetaMap;
|
|
7
6
|
static fetchAndSetXEntityMap(): Promise<any>;
|
|
8
7
|
static fetchAndSetXBrowseMetaMap(): Promise<any>;
|
|
9
|
-
static getXEntity(entity: string): XEntity;
|
|
10
|
-
static getXField(xEntity: XEntity, field: string): XField;
|
|
11
|
-
static getXFieldByPath(xEntity: XEntity, path: string): XField;
|
|
12
|
-
static getXFieldByPathStr(entity: string, path: string): XField;
|
|
13
|
-
static getXAssocByPath(xEntity: XEntity, path: string): XAssoc;
|
|
14
|
-
static getLastXAssocByPath(xEntity: XEntity, path: string): XAssoc;
|
|
15
|
-
static getXAssocToOne(xEntity: XEntity, assocField: string): XAssoc;
|
|
16
|
-
static getXAssocToMany(xEntity: XEntity, assocField: string): XAssoc;
|
|
17
|
-
static getXAssocToOneByAssocEntity(xEntity: XEntity, assocEntityName: string): XAssoc;
|
|
18
|
-
static getXAssocToManyByAssocEntity(xEntity: XEntity, assocEntityName: string): XAssoc;
|
|
19
|
-
static getXEntityForAssocToOne(xEntity: XEntity, assocField: string): XEntity;
|
|
20
|
-
static getXEntityForAssocToMany(xEntity: XEntity, assocField: string): XEntity;
|
|
21
|
-
static getXFieldList(xEntity: XEntity): XField[];
|
|
22
|
-
static getXAssocList(xEntity: XEntity, relationTypeList?: XRelationType[]): XAssoc[];
|
|
23
8
|
static getParamsForInputNumber(xField: XField): {
|
|
24
9
|
useGrouping: boolean;
|
|
25
10
|
fractionDigits?: number;
|
|
@@ -33,7 +18,4 @@ export declare class XUtilsMetadata {
|
|
|
33
18
|
static getXBrowseMeta(entity: string, browseId?: string): XBrowseMeta;
|
|
34
19
|
static setXBrowseMeta(entity: string, browseId: string | undefined, xBrowseMeta: XBrowseMeta): void;
|
|
35
20
|
static getXBrowseFormMetaKey(entity: string, browseId?: string): string;
|
|
36
|
-
private static getXAssoc;
|
|
37
|
-
private static getXAssocByAssocEntity;
|
|
38
|
-
private static getXEntityForAssoc;
|
|
39
21
|
}
|