@michalrakus/x-react-web-lib 1.12.0 → 1.14.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/XFormCol.d.ts +3 -0
- package/XFormCol.js +5 -0
- package/XFormInlineRow.d.ts +3 -0
- package/XFormInlineRow.js +5 -0
- package/XFormRow.d.ts +3 -0
- package/XFormRow.js +5 -0
- package/XFormRowCol.d.ts +3 -0
- package/XFormRowCol.js +5 -0
- 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 +8 -2
- package/lib/components/XAutoComplete.d.ts +4 -2
- package/lib/components/XAutoComplete.js +13 -11
- package/lib/components/XAutoCompleteBase.d.ts +5 -0
- package/lib/components/XAutoCompleteBase.js +34 -3
- 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.d.ts +3 -0
- package/lib/components/XDropdownDTFilter.js +7 -6
- 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.d.ts +15 -9
- package/lib/components/XFormDataTable2.js +42 -32
- package/lib/components/XFormRowCol/XFormCol.d.ts +8 -0
- package/lib/components/XFormRowCol/XFormCol.js +12 -0
- package/lib/components/XFormRowCol/XFormInlineRow.d.ts +8 -0
- package/lib/components/XFormRowCol/XFormInlineRow.js +12 -0
- package/lib/components/XFormRowCol/XFormRow.d.ts +8 -0
- package/lib/components/XFormRowCol/XFormRow.js +12 -0
- package/lib/components/XFormRowCol/XFormRowCol.d.ts +9 -0
- package/lib/components/XFormRowCol/XFormRowCol.js +30 -0
- package/lib/components/XFtsInput.js +1 -1
- 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 +19 -1
- package/lib/components/XLazyDataTable.js +26 -45
- 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.d.ts +8 -0
- package/lib/components/XUtils.js +25 -2
- 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/{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
package/XFormCol.d.ts
ADDED
package/XFormCol.js
ADDED
package/XFormRow.d.ts
ADDED
package/XFormRow.js
ADDED
package/XFormRowCol.d.ts
ADDED
package/XFormRowCol.js
ADDED
package/XUtilsConversions.d.ts
CHANGED
package/XUtilsConversions.js
CHANGED
package/gulpfile.js
CHANGED
|
@@ -18,6 +18,11 @@ function generateApi(cb) {
|
|
|
18
18
|
"./lib/administration/XBrowseMetaBrowse",
|
|
19
19
|
"./lib/administration/XBrowseMetaForm",
|
|
20
20
|
|
|
21
|
+
"./lib/components/XFormRowCol/XFormCol",
|
|
22
|
+
"./lib/components/XFormRowCol/XFormInlineRow",
|
|
23
|
+
"./lib/components/XFormRowCol/XFormRow",
|
|
24
|
+
"./lib/components/XFormRowCol/XFormRowCol",
|
|
25
|
+
|
|
21
26
|
"./lib/components/useXToken",
|
|
22
27
|
"./lib/components/XAutoComplete",
|
|
23
28
|
"./lib/components/XAutoCompleteBase",
|
|
@@ -59,12 +64,13 @@ function generateApi(cb) {
|
|
|
59
64
|
"./lib/components/XToken",
|
|
60
65
|
"./lib/components/XToOneAssocButton",
|
|
61
66
|
"./lib/components/XUtils",
|
|
62
|
-
"./lib/components/XUtilsConversions",
|
|
63
67
|
"./lib/components/XUtilsMetadata",
|
|
64
68
|
|
|
65
69
|
"./lib/serverApi/ExportImportParam",
|
|
66
70
|
"./lib/serverApi/FindParam",
|
|
67
|
-
"./lib/serverApi/XUtilsCommon"
|
|
71
|
+
"./lib/serverApi/XUtilsCommon",
|
|
72
|
+
"./lib/serverApi/XUtilsConversions",
|
|
73
|
+
"./lib/serverApi/XUtilsMetadataCommon"
|
|
68
74
|
];
|
|
69
75
|
|
|
70
76
|
for (const apiFile of apiFileList) {
|
|
@@ -13,7 +13,8 @@ export interface XAutoCompleteProps extends XFormComponentProps<XObject> {
|
|
|
13
13
|
filter?: XFilterProp;
|
|
14
14
|
sortField?: string | DataTableSortMeta[];
|
|
15
15
|
suggestions?: any[];
|
|
16
|
-
|
|
16
|
+
lazy?: boolean;
|
|
17
|
+
width?: string;
|
|
17
18
|
inputStyle?: React.CSSProperties;
|
|
18
19
|
}
|
|
19
20
|
export declare class XAutoComplete extends XFormComponent<XObject, XAutoCompleteProps> {
|
|
@@ -24,12 +25,13 @@ export declare class XAutoComplete extends XFormComponent<XObject, XAutoComplete
|
|
|
24
25
|
};
|
|
25
26
|
constructor(props: XAutoCompleteProps);
|
|
26
27
|
componentDidMount(): void;
|
|
27
|
-
readAndSetSuggestions(): Promise<void>;
|
|
28
|
+
readAndSetSuggestions(setStateCallback?: () => void): Promise<void>;
|
|
28
29
|
getField(): string;
|
|
29
30
|
isNotNull(): boolean;
|
|
30
31
|
getValue(): any | null;
|
|
31
32
|
onChangeAutoCompleteBase(object: any, objectChange: OperationType): void;
|
|
32
33
|
onErrorChangeAutoCompleteBase(error: string | undefined): void;
|
|
34
|
+
onSearchStart(finishSearchStart?: () => void): void;
|
|
33
35
|
validate(): {
|
|
34
36
|
field: string;
|
|
35
37
|
xError: XError;
|
|
@@ -57,28 +57,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
57
57
|
exports.XAutoComplete = void 0;
|
|
58
58
|
var react_1 = __importDefault(require("react"));
|
|
59
59
|
var XFormComponent_1 = require("./XFormComponent");
|
|
60
|
-
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
61
60
|
var XUtils_1 = require("./XUtils");
|
|
62
61
|
var XAutoCompleteBase_1 = require("./XAutoCompleteBase");
|
|
62
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
63
63
|
var XAutoComplete = /** @class */ (function (_super) {
|
|
64
64
|
__extends(XAutoComplete, _super);
|
|
65
65
|
function XAutoComplete(props) {
|
|
66
66
|
var _this = _super.call(this, props) || this;
|
|
67
|
-
_this.xAssoc =
|
|
67
|
+
_this.xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.form.getEntity()), props.assocField);
|
|
68
68
|
_this.errorInBase = undefined;
|
|
69
69
|
_this.state = {
|
|
70
70
|
suggestions: []
|
|
71
71
|
};
|
|
72
72
|
_this.onChangeAutoCompleteBase = _this.onChangeAutoCompleteBase.bind(_this);
|
|
73
73
|
_this.onErrorChangeAutoCompleteBase = _this.onErrorChangeAutoCompleteBase.bind(_this);
|
|
74
|
+
_this.onSearchStart = _this.onSearchStart.bind(_this);
|
|
74
75
|
props.form.addField(props.assocField + '.' + props.displayField);
|
|
75
76
|
return _this;
|
|
76
77
|
}
|
|
77
78
|
XAutoComplete.prototype.componentDidMount = function () {
|
|
78
79
|
//console.log("volany XAutoComplete.componentDidMount()");
|
|
79
|
-
this.
|
|
80
|
+
if (!this.props.lazy) {
|
|
81
|
+
this.readAndSetSuggestions();
|
|
82
|
+
}
|
|
80
83
|
};
|
|
81
|
-
XAutoComplete.prototype.readAndSetSuggestions = function () {
|
|
84
|
+
XAutoComplete.prototype.readAndSetSuggestions = function (setStateCallback) {
|
|
82
85
|
var _a;
|
|
83
86
|
return __awaiter(this, void 0, void 0, function () {
|
|
84
87
|
var suggestions;
|
|
@@ -89,7 +92,7 @@ var XAutoComplete = /** @class */ (function (_super) {
|
|
|
89
92
|
return [4 /*yield*/, XUtils_1.XUtils.fetchRows(this.xAssoc.entityName, this.getFilterBase(this.props.filter), (_a = this.props.sortField) !== null && _a !== void 0 ? _a : this.props.displayField)];
|
|
90
93
|
case 1:
|
|
91
94
|
suggestions = _b.sent();
|
|
92
|
-
this.setState({ suggestions: suggestions });
|
|
95
|
+
this.setState({ suggestions: suggestions }, setStateCallback);
|
|
93
96
|
_b.label = 2;
|
|
94
97
|
case 2: return [2 /*return*/];
|
|
95
98
|
}
|
|
@@ -119,6 +122,9 @@ var XAutoComplete = /** @class */ (function (_super) {
|
|
|
119
122
|
XAutoComplete.prototype.onErrorChangeAutoCompleteBase = function (error) {
|
|
120
123
|
this.errorInBase = error; // odlozime si error
|
|
121
124
|
};
|
|
125
|
+
XAutoComplete.prototype.onSearchStart = function (finishSearchStart) {
|
|
126
|
+
this.readAndSetSuggestions(finishSearchStart);
|
|
127
|
+
};
|
|
122
128
|
// overrides method in XFormComponent
|
|
123
129
|
XAutoComplete.prototype.validate = function () {
|
|
124
130
|
if (this.errorInBase) {
|
|
@@ -131,15 +137,11 @@ var XAutoComplete = /** @class */ (function (_super) {
|
|
|
131
137
|
XAutoComplete.prototype.render = function () {
|
|
132
138
|
var _this = this;
|
|
133
139
|
var _a;
|
|
134
|
-
var xEntityAssoc =
|
|
135
|
-
//const xDisplayField = XUtilsMetadata.getXFieldByPath(xEntityAssoc, this.props.displayField);
|
|
136
|
-
// TODO - readOnly
|
|
137
|
-
// TODO - size
|
|
138
|
-
//const size = this.props.size ?? xDisplayField.length;
|
|
140
|
+
var xEntityAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.xAssoc.entityName);
|
|
139
141
|
// div className="col" nam zabezpeci aby XAutoCompleteBase nezaberal celu dlzku grid-u (ma nastaveny width=100% vdaka "formgroup-inline")
|
|
140
142
|
return (react_1.default.createElement("div", { className: "field grid" },
|
|
141
143
|
react_1.default.createElement("label", { htmlFor: this.props.assocField, className: "col-fixed", style: this.getLabelStyle() }, this.getLabel()),
|
|
142
|
-
react_1.default.createElement(XAutoCompleteBase_1.XAutoCompleteBase, { value: this.getValue(), suggestions: (_a = this.props.suggestions) !== null && _a !== void 0 ? _a : this.state.suggestions, onChange: this.onChangeAutoCompleteBase, field: this.props.displayField, searchBrowse: this.props.searchBrowse, valueForm: this.props.assocForm, idField: xEntityAssoc.idField, error: this.getError(), onErrorChange: this.onErrorChangeAutoCompleteBase, customFilterFunction: function () { return _this.getFilterBase(_this.props.filter); } })));
|
|
144
|
+
react_1.default.createElement(XAutoCompleteBase_1.XAutoCompleteBase, { value: this.getValue(), suggestions: (_a = this.props.suggestions) !== null && _a !== void 0 ? _a : this.state.suggestions, onChange: this.onChangeAutoCompleteBase, field: this.props.displayField, searchBrowse: this.props.searchBrowse, valueForm: this.props.assocForm, idField: xEntityAssoc.idField, readOnly: this.isReadOnly(), error: this.getError(), onErrorChange: this.onErrorChangeAutoCompleteBase, width: this.props.width, customFilterFunction: function () { return _this.getFilterBase(_this.props.filter); }, onSearchStart: this.props.lazy ? this.onSearchStart : undefined })));
|
|
143
145
|
};
|
|
144
146
|
return XAutoComplete;
|
|
145
147
|
}(XFormComponent_1.XFormComponent));
|
|
@@ -13,11 +13,13 @@ export interface XAutoCompleteBaseProps {
|
|
|
13
13
|
valueForm?: JSX.Element;
|
|
14
14
|
idField?: string;
|
|
15
15
|
maxLength?: number;
|
|
16
|
+
width?: string;
|
|
16
17
|
readOnly?: boolean;
|
|
17
18
|
error?: string;
|
|
18
19
|
onErrorChange: (error: string | undefined) => void;
|
|
19
20
|
setFocusOnCreate?: boolean;
|
|
20
21
|
customFilterFunction?: () => XCustomFilter | undefined;
|
|
22
|
+
onSearchStart?: (finishSearchStart?: () => void) => void;
|
|
21
23
|
}
|
|
22
24
|
export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps> {
|
|
23
25
|
autoCompleteRef: any;
|
|
@@ -29,6 +31,7 @@ export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps>
|
|
|
29
31
|
formDialogOpened: boolean;
|
|
30
32
|
searchDialogOpened: boolean;
|
|
31
33
|
};
|
|
34
|
+
wasSearchStartCalled: boolean;
|
|
32
35
|
formDialogObjectId: number | undefined;
|
|
33
36
|
formDialogInitValuesForInsert: any | undefined;
|
|
34
37
|
constructor(props: XAutoCompleteBaseProps);
|
|
@@ -49,6 +52,8 @@ export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps>
|
|
|
49
52
|
createInsertUpdateItems(splitButtonItems: MenuItem[]): void;
|
|
50
53
|
createSearchItem(splitButtonItems: MenuItem[]): void;
|
|
51
54
|
createDropdownItem(splitButtonItems: MenuItem[]): void;
|
|
55
|
+
onOpenDropdown(e: any): void;
|
|
56
|
+
openDropdown(e: any): void;
|
|
52
57
|
computeInputValue(): any;
|
|
53
58
|
createSearchBrowseParams(): XSearchBrowseParams;
|
|
54
59
|
render(): JSX.Element;
|
|
@@ -94,6 +94,7 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
94
94
|
formDialogOpened: false,
|
|
95
95
|
searchDialogOpened: false
|
|
96
96
|
};
|
|
97
|
+
_this.wasSearchStartCalled = false;
|
|
97
98
|
_this.completeMethod = _this.completeMethod.bind(_this);
|
|
98
99
|
_this.onChange = _this.onChange.bind(_this);
|
|
99
100
|
_this.onSelect = _this.onSelect.bind(_this);
|
|
@@ -132,6 +133,15 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
132
133
|
};
|
|
133
134
|
XAutoCompleteBase.prototype.onChange = function (e) {
|
|
134
135
|
if (typeof e.value === 'string') {
|
|
136
|
+
// ak user zacne typovat znaky, nacitame suggestions, ak sme lazy (onSearchStart !== undefined)
|
|
137
|
+
if (this.props.onSearchStart) {
|
|
138
|
+
if (e.value !== '') { // ak user vymaze cely input, este nechceme nacitat suggestions, az ked zapise nejaky znak
|
|
139
|
+
if (!this.wasSearchStartCalled) {
|
|
140
|
+
this.props.onSearchStart();
|
|
141
|
+
this.wasSearchStartCalled = true; // ak user dalej typuje, nechceme znova nacitavat suggestions
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
135
145
|
this.setState({ inputChanged: true, inputValueState: e.value });
|
|
136
146
|
}
|
|
137
147
|
};
|
|
@@ -180,6 +190,8 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
180
190
|
}
|
|
181
191
|
}
|
|
182
192
|
}
|
|
193
|
+
// odchadzame z inputu, zresetujeme priznak - ak zacne user pracovat s autocomplete-om, nacitaju sa suggestions z DB (ak mame lazy)
|
|
194
|
+
this.wasSearchStartCalled = false;
|
|
183
195
|
};
|
|
184
196
|
XAutoCompleteBase.prototype.createErrorMessage = function () {
|
|
185
197
|
return "Value \"".concat(this.state.inputValueState, "\" was not found among valid values.");
|
|
@@ -314,10 +326,29 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
314
326
|
// this.autoCompleteRef.current je element <AutoComplete .../>, ktory vytvarame v render metode
|
|
315
327
|
//console.log(this.autoCompleteRef.current);
|
|
316
328
|
// otvori dropdown (search je metoda popisana v API, volanie sme skopcili zo zdrojakov primereact)
|
|
317
|
-
|
|
329
|
+
// if (this.props.onSearchStart) {
|
|
330
|
+
// this.props.onSearchStart(() => this.finishSearchStart(e));
|
|
331
|
+
// }
|
|
332
|
+
// this.autoCompleteRef.current.search(e, '', 'dropdown');
|
|
333
|
+
_this.onOpenDropdown(e);
|
|
318
334
|
}
|
|
319
335
|
});
|
|
320
336
|
};
|
|
337
|
+
XAutoCompleteBase.prototype.onOpenDropdown = function (e) {
|
|
338
|
+
var _this = this;
|
|
339
|
+
if (this.props.onSearchStart) {
|
|
340
|
+
this.props.onSearchStart(function () { return _this.openDropdown(e); });
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
// otvori dropdown (search je metoda popisana v API, volanie sme skopcili zo zdrojakov primereact)
|
|
344
|
+
//this.autoCompleteRef.current.search(e, '', 'dropdown');
|
|
345
|
+
this.openDropdown(e);
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
XAutoCompleteBase.prototype.openDropdown = function (e) {
|
|
349
|
+
// otvori dropdown (search je metoda popisana v API, volanie sme skopcili zo zdrojakov primereact)
|
|
350
|
+
this.autoCompleteRef.current.search(e, '', 'dropdown');
|
|
351
|
+
};
|
|
321
352
|
// vracia objekt (ak inputChanged === false) alebo string (ak inputChanged === true)
|
|
322
353
|
XAutoCompleteBase.prototype.computeInputValue = function () {
|
|
323
354
|
var inputValue;
|
|
@@ -358,7 +389,7 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
358
389
|
}
|
|
359
390
|
else {
|
|
360
391
|
// mame len 1 operaciu - dame jednoduchy button
|
|
361
|
-
dropdownButton = react_1.default.createElement(button_1.Button, { icon: "pi pi-chevron-down", onClick: function (e) { return _this.
|
|
392
|
+
dropdownButton = react_1.default.createElement(button_1.Button, { icon: "pi pi-chevron-down", onClick: function (e) { return _this.onOpenDropdown(e); }, className: 'x-dropdownbutton' + XUtils_1.XUtils.mobileCssSuffix(), disabled: readOnly });
|
|
362
393
|
}
|
|
363
394
|
// vypocitame inputValue
|
|
364
395
|
var inputValue = this.computeInputValue();
|
|
@@ -374,7 +405,7 @@ var XAutoCompleteBase = /** @class */ (function (_super) {
|
|
|
374
405
|
// <DobrovolnikForm id={this.formDialogObjectId} object={this.formDialogInitValuesForInsert} onSaveOrCancel={this.formDialogOnSaveOrCancel}/>
|
|
375
406
|
// formgroup-inline lepi SplitButton na autocomplete a zarovna jeho vysku
|
|
376
407
|
return (react_1.default.createElement("div", { className: "x-auto-complete-base" },
|
|
377
|
-
react_1.default.createElement(autocomplete_1.AutoComplete, __assign({ value: inputValue, suggestions: this.state.filteredSuggestions, completeMethod: this.completeMethod, field: this.props.field, onChange: this.onChange, onSelect: this.onSelect, onBlur: this.onBlur, maxLength: this.props.maxLength, ref: this.autoCompleteRef, readOnly: readOnly, disabled: readOnly }, XUtils_1.XUtils.createErrorProps(error))),
|
|
408
|
+
react_1.default.createElement(autocomplete_1.AutoComplete, __assign({ value: inputValue, suggestions: this.state.filteredSuggestions, completeMethod: this.completeMethod, field: this.props.field, onChange: this.onChange, onSelect: this.onSelect, onBlur: this.onBlur, maxLength: this.props.maxLength, ref: this.autoCompleteRef, readOnly: readOnly, disabled: readOnly }, XUtils_1.XUtils.createErrorProps(error), { style: { width: this.props.width } })),
|
|
378
409
|
dropdownButton,
|
|
379
410
|
this.props.valueForm != undefined && !readOnly ?
|
|
380
411
|
react_1.default.createElement(dialog_1.Dialog, { visible: this.state.formDialogOpened, onHide: this.formDialogOnHide, header: this.formDialogObjectId ? 'Modification' : 'New row' }, react_1.default.cloneElement(this.props.valueForm, {
|
|
@@ -55,16 +55,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
55
55
|
};
|
|
56
56
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
57
|
exports.XAutoCompleteDT = void 0;
|
|
58
|
-
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
59
58
|
var react_1 = __importDefault(require("react"));
|
|
60
59
|
var XFormComponentDT_1 = require("./XFormComponentDT");
|
|
61
60
|
var XUtils_1 = require("./XUtils");
|
|
62
61
|
var XAutoCompleteBase_1 = require("./XAutoCompleteBase");
|
|
62
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
63
63
|
var XAutoCompleteDT = /** @class */ (function (_super) {
|
|
64
64
|
__extends(XAutoCompleteDT, _super);
|
|
65
65
|
function XAutoCompleteDT(props) {
|
|
66
66
|
var _this = _super.call(this, props) || this;
|
|
67
|
-
_this.xAssoc =
|
|
67
|
+
_this.xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity), props.assocField);
|
|
68
68
|
_this.errorInBase = undefined;
|
|
69
69
|
_this.state = {
|
|
70
70
|
suggestions: []
|
|
@@ -129,8 +129,8 @@ var XAutoCompleteDT = /** @class */ (function (_super) {
|
|
|
129
129
|
XAutoCompleteDT.prototype.render = function () {
|
|
130
130
|
var _this = this;
|
|
131
131
|
var _a;
|
|
132
|
-
var xEntityAssoc =
|
|
133
|
-
//const xDisplayField =
|
|
132
|
+
var xEntityAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.xAssoc.entityName);
|
|
133
|
+
//const xDisplayField = XUtilsMetadataCommon.getXFieldByPath(xEntityAssoc, this.props.displayField);
|
|
134
134
|
// TODO - size
|
|
135
135
|
//const size = this.props.size ?? xDisplayField.length;
|
|
136
136
|
// div className="col" nam zabezpeci aby XAutoCompleteBase nezaberal celu dlzku grid-u (ma nastaveny width=100% vdaka "formgroup-inline")
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.XCalendar = void 0;
|
|
7
7
|
var react_1 = __importDefault(require("react"));
|
|
8
8
|
var calendar_1 = require("primereact/calendar");
|
|
9
|
-
var XUtilsConversions_1 = require("
|
|
9
|
+
var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
|
|
10
10
|
// wrapper for Calendar component, maybe better name would be XInputDateBase
|
|
11
11
|
var XCalendar = function (props) {
|
|
12
12
|
var _a;
|
|
@@ -20,14 +20,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
21
|
exports.XDropdown = void 0;
|
|
22
22
|
var react_1 = __importDefault(require("react"));
|
|
23
|
-
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
24
23
|
var XFormComponent_1 = require("./XFormComponent");
|
|
25
24
|
var XDropdownForEntity_1 = require("./XDropdownForEntity");
|
|
25
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
26
26
|
var XDropdown = /** @class */ (function (_super) {
|
|
27
27
|
__extends(XDropdown, _super);
|
|
28
28
|
function XDropdown(props) {
|
|
29
29
|
var _this = _super.call(this, props) || this;
|
|
30
|
-
_this.xAssoc =
|
|
30
|
+
_this.xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.form.getEntity()), props.assocField);
|
|
31
31
|
props.form.addField(props.assocField + '.' + props.displayField);
|
|
32
32
|
return _this;
|
|
33
33
|
}
|
|
@@ -63,12 +63,12 @@ exports.XDropdownDT = void 0;
|
|
|
63
63
|
var react_1 = __importStar(require("react"));
|
|
64
64
|
var XUtils_1 = require("./XUtils");
|
|
65
65
|
var dropdown_1 = require("primereact/dropdown");
|
|
66
|
-
var
|
|
66
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
67
67
|
var XDropdownDT = function (props) {
|
|
68
68
|
// poznamka: nacitanie/ulozenie options je vytiahnute do parent komponentu XFormDataTable koli tomu aby sme nenacitavali options pre kazdy riadok tabulky
|
|
69
69
|
// "members"
|
|
70
|
-
var xAssoc =
|
|
71
|
-
var idField =
|
|
70
|
+
var xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity), props.assocField);
|
|
71
|
+
var idField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(xAssoc.entityName).idField;
|
|
72
72
|
// parameter [] zabezpeci ze sa metoda zavola len po prvom renderingu (a nie po kazdej zmene stavu (zavolani setNieco()))
|
|
73
73
|
(0, react_1.useEffect)(function () {
|
|
74
74
|
//console.log("XDropdownDT - zavolany useEffect *******************")
|
|
@@ -88,7 +88,7 @@ var XDropdownDT = function (props) {
|
|
|
88
88
|
// Nacitanie z DB sa koli asynchronnosti vykona az po zavolani tejto metody pre vsetky riadky tabulky, co je pre nas neskoro.
|
|
89
89
|
// ak by tu tento riadok nebol, tak by sa options nacitavali tolkokrat, kolko je riadkov v tabulke
|
|
90
90
|
props.dropdownOptionsMap[props.assocField] = [];
|
|
91
|
-
xAssoc_1 =
|
|
91
|
+
xAssoc_1 = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.entity), props.assocField);
|
|
92
92
|
return [4 /*yield*/, XUtils_1.XUtils.fetchRows(xAssoc_1.entityName, props.filter, (_a = props.sortField) !== null && _a !== void 0 ? _a : props.displayField)];
|
|
93
93
|
case 1:
|
|
94
94
|
//options = await XUtils.fetchMany('findRowsForAssoc', {entity: props.entity, assocField: props.assocField});
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { XCustomFilter } from "../serverApi/FindParam";
|
|
2
3
|
export declare const XDropdownDTFilter: (props: {
|
|
3
4
|
entity: string;
|
|
4
5
|
path: string;
|
|
5
6
|
value: any;
|
|
6
7
|
onValueChange: (field: string, displayValue: any) => void;
|
|
8
|
+
filter?: XCustomFilter | undefined;
|
|
9
|
+
sortField?: string | undefined;
|
|
7
10
|
}) => JSX.Element;
|
|
@@ -80,7 +80,7 @@ var react_1 = __importStar(require("react"));
|
|
|
80
80
|
var XUtils_1 = require("./XUtils");
|
|
81
81
|
var dropdown_1 = require("primereact/dropdown");
|
|
82
82
|
var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
|
|
83
|
-
var
|
|
83
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
84
84
|
// pouzivany vo filtri v XLazyDataTable aj v XFormDataTable2
|
|
85
85
|
var XDropdownDTFilter = function (props) {
|
|
86
86
|
var _a = __read((0, react_1.useState)([]), 2), options = _a[0], setOptions = _a[1];
|
|
@@ -98,13 +98,14 @@ var XDropdownDTFilter = function (props) {
|
|
|
98
98
|
};
|
|
99
99
|
var findOptions = function (entity, path, displayField) { return __awaiter(void 0, void 0, void 0, function () {
|
|
100
100
|
var xAssoc, options, emptyOption;
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
var _a;
|
|
102
|
+
return __generator(this, function (_b) {
|
|
103
|
+
switch (_b.label) {
|
|
103
104
|
case 0:
|
|
104
|
-
xAssoc =
|
|
105
|
-
return [4 /*yield*/, XUtils_1.XUtils.fetchRows(xAssoc.entityName,
|
|
105
|
+
xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getLastXAssocByPath(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(entity), path);
|
|
106
|
+
return [4 /*yield*/, XUtils_1.XUtils.fetchRows(xAssoc.entityName, props.filter, (_a = props.sortField) !== null && _a !== void 0 ? _a : displayField)];
|
|
106
107
|
case 1:
|
|
107
|
-
options =
|
|
108
|
+
options = _b.sent();
|
|
108
109
|
emptyOption = {};
|
|
109
110
|
emptyOption[displayField] = XUtils_1.XUtils.dropdownEmptyOptionValue;
|
|
110
111
|
options.splice(0, 0, emptyOption); // null polozka (nepridavat pre not null atributy)
|
|
@@ -89,7 +89,7 @@ exports.XDropdownForEntity = void 0;
|
|
|
89
89
|
var react_1 = __importStar(require("react"));
|
|
90
90
|
var dropdown_1 = require("primereact/dropdown");
|
|
91
91
|
var XUtils_1 = require("./XUtils");
|
|
92
|
-
var
|
|
92
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
93
93
|
// vseobecny Dropdown ktoreho parametrom je entity, zobrazuje zaznamy danej entity, po selectnuti vracia zaznam danej entity
|
|
94
94
|
// ambicia je pouzivat ho vsade - vo formulari, vo filtroch, vo form tabulke, priamo aplikacnym programmerom
|
|
95
95
|
// dalo by sa vyclenit este XDropdownBase, ktory by dostaval ako parameter options (bol by nezavisly od DB), zatial ho nerobime,
|
|
@@ -101,7 +101,7 @@ var XDropdownForEntity = /** @class */ (function (_super) {
|
|
|
101
101
|
__extends(XDropdownForEntity, _super);
|
|
102
102
|
function XDropdownForEntity(props) {
|
|
103
103
|
var _this = _super.call(this, props) || this;
|
|
104
|
-
_this.idField =
|
|
104
|
+
_this.idField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(_this.props.entity).idField;
|
|
105
105
|
_this.state = {
|
|
106
106
|
options: []
|
|
107
107
|
};
|
|
@@ -109,6 +109,7 @@ var _ = __importStar(require("lodash"));
|
|
|
109
109
|
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
110
110
|
var XUtils_1 = require("./XUtils");
|
|
111
111
|
var XLazyDataTable_1 = require("./XLazyDataTable");
|
|
112
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
112
113
|
// TODO - pouzit extends XEditBrowseBase, ako je tomu pri CarForm?
|
|
113
114
|
var XEditBrowse = /** @class */ (function (_super) {
|
|
114
115
|
__extends(XEditBrowse, _super);
|
|
@@ -147,8 +148,8 @@ var XEditBrowse = /** @class */ (function (_super) {
|
|
|
147
148
|
XEditBrowse.prototype.createDefaultXBrowseMeta = function () {
|
|
148
149
|
var e_1, _a;
|
|
149
150
|
var xColumnMetaList = [];
|
|
150
|
-
var xEntity =
|
|
151
|
-
var xFieldList =
|
|
151
|
+
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.props.entity);
|
|
152
|
+
var xFieldList = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldList(xEntity);
|
|
152
153
|
try {
|
|
153
154
|
for (var xFieldList_1 = __values(xFieldList), xFieldList_1_1 = xFieldList_1.next(); !xFieldList_1_1.done; xFieldList_1_1 = xFieldList_1.next()) {
|
|
154
155
|
var xField = xFieldList_1_1.value;
|
|
@@ -310,7 +311,7 @@ var XEditBrowse = /** @class */ (function (_super) {
|
|
|
310
311
|
XEditBrowse.prototype.onEdit = function (selectedRow) {
|
|
311
312
|
var formElement = XUtils_1.XUtils.getAppForm(this.props.entity);
|
|
312
313
|
if (formElement !== undefined) {
|
|
313
|
-
var xEntity =
|
|
314
|
+
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.props.entity);
|
|
314
315
|
var id = selectedRow[xEntity.idField];
|
|
315
316
|
// we add property id={selectedRow.<id>} into formElement
|
|
316
317
|
var formElementCloned = react_1.default.cloneElement(formElement, { id: id }, formElement.children);
|
|
@@ -84,7 +84,7 @@ var dropdown_1 = require("primereact/dropdown");
|
|
|
84
84
|
var checkbox_1 = require("primereact/checkbox");
|
|
85
85
|
var XButton_1 = require("./XButton");
|
|
86
86
|
var XUtils_1 = require("./XUtils");
|
|
87
|
-
var XUtilsConversions_1 = require("
|
|
87
|
+
var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
|
|
88
88
|
var XLocale_1 = require("./XLocale");
|
|
89
89
|
var XExportRowsDialog = function (props) {
|
|
90
90
|
var _a, _b;
|
|
@@ -54,7 +54,7 @@ exports.XFieldSelector = void 0;
|
|
|
54
54
|
var react_1 = __importStar(require("react"));
|
|
55
55
|
var treetable_1 = require("primereact/treetable");
|
|
56
56
|
var column_1 = require("primereact/column");
|
|
57
|
-
var
|
|
57
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
58
58
|
var XFieldSelector = function (props) {
|
|
59
59
|
// poznamka: treeNodeList by sme mohli vypocitavat priamo, ale ked pouzijeme useState/useEffect tak sa createTreeNodeList zavola len raz pri vytvoreni komponentu
|
|
60
60
|
var _a = __read((0, react_1.useState)([]), 2), treeNodeList = _a[0], setTreeNodeList = _a[1];
|
|
@@ -65,8 +65,8 @@ var XFieldSelector = function (props) {
|
|
|
65
65
|
var createTreeNodeList = function (entity, keyPrefix) {
|
|
66
66
|
var e_1, _a, e_2, _b;
|
|
67
67
|
var treeNodeList = [];
|
|
68
|
-
var xEntity =
|
|
69
|
-
var xFieldList =
|
|
68
|
+
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(entity);
|
|
69
|
+
var xFieldList = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldList(xEntity);
|
|
70
70
|
try {
|
|
71
71
|
for (var xFieldList_1 = __values(xFieldList), xFieldList_1_1 = xFieldList_1.next(); !xFieldList_1_1.done; xFieldList_1_1 = xFieldList_1.next()) {
|
|
72
72
|
var xField = xFieldList_1_1.value;
|
|
@@ -84,7 +84,7 @@ var XFieldSelector = function (props) {
|
|
|
84
84
|
}
|
|
85
85
|
finally { if (e_1) throw e_1.error; }
|
|
86
86
|
}
|
|
87
|
-
var assocToOneList =
|
|
87
|
+
var assocToOneList = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocList(xEntity, ["many-to-one", "one-to-one"]);
|
|
88
88
|
try {
|
|
89
89
|
for (var assocToOneList_1 = __values(assocToOneList), assocToOneList_1_1 = assocToOneList_1.next(); !assocToOneList_1_1.done; assocToOneList_1_1 = assocToOneList_1.next()) {
|
|
90
90
|
var xAssoc = assocToOneList_1_1.value;
|
|
@@ -2,6 +2,7 @@ import { XFormBase } from "./XFormBase";
|
|
|
2
2
|
import { Component, ReactChild } from "react";
|
|
3
3
|
import { DataTableFilterMeta } from "primereact/datatable";
|
|
4
4
|
import { XEntity, XField } from "../serverApi/XEntityMetadata";
|
|
5
|
+
import { XViewStatusOrBoolean } from "./XUtils";
|
|
5
6
|
import { FilterMatchMode } from "primereact/api";
|
|
6
7
|
import { XTableFieldChangeEvent } from "./XFieldChangeEvent";
|
|
7
8
|
import { XCustomFilter } from "../serverApi/FindParam";
|
|
@@ -65,8 +66,8 @@ export declare class XFormDataTable2 extends Component<XFormDataTableProps> {
|
|
|
65
66
|
filters: DataTableFilterMeta;
|
|
66
67
|
};
|
|
67
68
|
constructor(props: XFormDataTableProps);
|
|
68
|
-
getPathForColumn(columnProps:
|
|
69
|
-
static getHeader(columnProps:
|
|
69
|
+
getPathForColumn(columnProps: XFormColumnBaseProps): string;
|
|
70
|
+
static getHeader(columnProps: XFormColumnBaseProps, xEntity: XEntity, field: string, xField: XField): string;
|
|
70
71
|
static isReadOnlyHeader(path: string | undefined, readOnly: XTableFieldReadOnlyProp | undefined): boolean;
|
|
71
72
|
getEntity(): string;
|
|
72
73
|
createInitFilters(): DataTableFilterMeta;
|
|
@@ -78,7 +79,7 @@ export declare class XFormDataTable2 extends Component<XFormDataTableProps> {
|
|
|
78
79
|
getCheckboxFilterValue(field: string): boolean | null;
|
|
79
80
|
onDropdownFilterChange(field: string, displayValue: any): void;
|
|
80
81
|
getDropdownFilterValue(field: string): any;
|
|
81
|
-
bodyTemplate(columnProps:
|
|
82
|
+
bodyTemplate(columnProps: XFormColumnBaseProps, tableReadOnly: boolean, rowData: any, xEntity: XEntity): any;
|
|
82
83
|
onClickAddRow(): void;
|
|
83
84
|
onClickRemoveRowBySelection(): void;
|
|
84
85
|
removeRow(row: any): void;
|
|
@@ -89,7 +90,7 @@ export declare class XFormDataTable2 extends Component<XFormDataTableProps> {
|
|
|
89
90
|
export type XTableFieldOnChange = (e: XTableFieldChangeEvent<any, any>) => void;
|
|
90
91
|
export type XTableFieldReadOnlyProp = boolean | ((object: any, tableRow: any) => boolean);
|
|
91
92
|
export type XTableFieldFilterProp = XCustomFilter | ((object: any, rowData: any) => XCustomFilter | undefined);
|
|
92
|
-
export interface
|
|
93
|
+
export interface XFormColumnBaseProps {
|
|
93
94
|
type: "inputSimple" | "dropdown" | "autoComplete" | "searchButton";
|
|
94
95
|
header?: any;
|
|
95
96
|
readOnly?: XTableFieldReadOnlyProp;
|
|
@@ -97,17 +98,18 @@ export interface XFormColumnProps {
|
|
|
97
98
|
showFilterMenu?: boolean;
|
|
98
99
|
width?: string;
|
|
99
100
|
onChange?: XTableFieldOnChange;
|
|
101
|
+
columnViewStatus: XViewStatusOrBoolean;
|
|
100
102
|
}
|
|
101
|
-
export interface
|
|
103
|
+
export interface XFormColumnProps extends XFormColumnBaseProps {
|
|
102
104
|
field: string;
|
|
103
105
|
}
|
|
104
|
-
export interface XFormDropdownColumnProps extends
|
|
106
|
+
export interface XFormDropdownColumnProps extends XFormColumnBaseProps {
|
|
105
107
|
assocField: string;
|
|
106
108
|
displayField: string;
|
|
107
109
|
sortField?: string;
|
|
108
110
|
filter?: XCustomFilter;
|
|
109
111
|
}
|
|
110
|
-
export interface XFormAutoCompleteColumnProps extends
|
|
112
|
+
export interface XFormAutoCompleteColumnProps extends XFormColumnBaseProps {
|
|
111
113
|
assocField: string;
|
|
112
114
|
displayField: string;
|
|
113
115
|
searchBrowse?: JSX.Element;
|
|
@@ -115,32 +117,36 @@ export interface XFormAutoCompleteColumnProps extends XFormColumnProps {
|
|
|
115
117
|
filter?: XTableFieldFilterProp;
|
|
116
118
|
suggestions?: any[];
|
|
117
119
|
}
|
|
118
|
-
export interface XFormSearchButtonColumnProps extends
|
|
120
|
+
export interface XFormSearchButtonColumnProps extends XFormColumnBaseProps {
|
|
119
121
|
assocField: string;
|
|
120
122
|
displayField: string;
|
|
121
123
|
searchBrowse: JSX.Element;
|
|
122
124
|
}
|
|
123
125
|
export declare const XFormColumn: {
|
|
124
|
-
(props:
|
|
126
|
+
(props: XFormColumnProps): null;
|
|
125
127
|
defaultProps: {
|
|
126
128
|
type: string;
|
|
129
|
+
columnViewStatus: boolean;
|
|
127
130
|
};
|
|
128
131
|
};
|
|
129
132
|
export declare const XFormDropdownColumn: {
|
|
130
133
|
(props: XFormDropdownColumnProps): null;
|
|
131
134
|
defaultProps: {
|
|
132
135
|
type: string;
|
|
136
|
+
columnViewStatus: boolean;
|
|
133
137
|
};
|
|
134
138
|
};
|
|
135
139
|
export declare const XFormAutoCompleteColumn: {
|
|
136
140
|
(props: XFormAutoCompleteColumnProps): null;
|
|
137
141
|
defaultProps: {
|
|
138
142
|
type: string;
|
|
143
|
+
columnViewStatus: boolean;
|
|
139
144
|
};
|
|
140
145
|
};
|
|
141
146
|
export declare const XFormSearchButtonColumn: {
|
|
142
147
|
(props: XFormSearchButtonColumnProps): null;
|
|
143
148
|
defaultProps: {
|
|
144
149
|
type: string;
|
|
150
|
+
columnViewStatus: boolean;
|
|
145
151
|
};
|
|
146
152
|
};
|