@michalrakus/x-react-web-lib 1.12.0 → 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.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 +9 -0
- package/lib/components/XLazyDataTable.js +21 -43
- 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/{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/XUtilsConversions.d.ts
CHANGED
package/XUtilsConversions.js
CHANGED
package/gulpfile.js
CHANGED
|
@@ -59,12 +59,13 @@ function generateApi(cb) {
|
|
|
59
59
|
"./lib/components/XToken",
|
|
60
60
|
"./lib/components/XToOneAssocButton",
|
|
61
61
|
"./lib/components/XUtils",
|
|
62
|
-
"./lib/components/XUtilsConversions",
|
|
63
62
|
"./lib/components/XUtilsMetadata",
|
|
64
63
|
|
|
65
64
|
"./lib/serverApi/ExportImportParam",
|
|
66
65
|
"./lib/serverApi/FindParam",
|
|
67
|
-
"./lib/serverApi/XUtilsCommon"
|
|
66
|
+
"./lib/serverApi/XUtilsCommon",
|
|
67
|
+
"./lib/serverApi/XUtilsConversions",
|
|
68
|
+
"./lib/serverApi/XUtilsMetadataCommon"
|
|
68
69
|
];
|
|
69
70
|
|
|
70
71
|
for (const apiFile of apiFileList) {
|
|
@@ -13,6 +13,7 @@ export interface XAutoCompleteProps extends XFormComponentProps<XObject> {
|
|
|
13
13
|
filter?: XFilterProp;
|
|
14
14
|
sortField?: string | DataTableSortMeta[];
|
|
15
15
|
suggestions?: any[];
|
|
16
|
+
lazy?: boolean;
|
|
16
17
|
size?: number;
|
|
17
18
|
inputStyle?: React.CSSProperties;
|
|
18
19
|
}
|
|
@@ -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,15 @@ 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 =
|
|
140
|
+
var xEntityAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.xAssoc.entityName);
|
|
141
|
+
//const xDisplayField = XUtilsMetadataCommon.getXFieldByPath(xEntityAssoc, this.props.displayField);
|
|
136
142
|
// TODO - readOnly
|
|
137
143
|
// TODO - size
|
|
138
144
|
//const size = this.props.size ?? xDisplayField.length;
|
|
139
145
|
// div className="col" nam zabezpeci aby XAutoCompleteBase nezaberal celu dlzku grid-u (ma nastaveny width=100% vdaka "formgroup-inline")
|
|
140
146
|
return (react_1.default.createElement("div", { className: "field grid" },
|
|
141
147
|
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); } })));
|
|
148
|
+
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, customFilterFunction: function () { return _this.getFilterBase(_this.props.filter); }, onSearchStart: this.props.lazy ? this.onSearchStart : undefined })));
|
|
143
149
|
};
|
|
144
150
|
return XAutoComplete;
|
|
145
151
|
}(XFormComponent_1.XFormComponent));
|
|
@@ -18,6 +18,7 @@ export interface XAutoCompleteBaseProps {
|
|
|
18
18
|
onErrorChange: (error: string | undefined) => void;
|
|
19
19
|
setFocusOnCreate?: boolean;
|
|
20
20
|
customFilterFunction?: () => XCustomFilter | undefined;
|
|
21
|
+
onSearchStart?: (finishSearchStart?: () => void) => void;
|
|
21
22
|
}
|
|
22
23
|
export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps> {
|
|
23
24
|
autoCompleteRef: any;
|
|
@@ -29,6 +30,7 @@ export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps>
|
|
|
29
30
|
formDialogOpened: boolean;
|
|
30
31
|
searchDialogOpened: boolean;
|
|
31
32
|
};
|
|
33
|
+
wasSearchStartCalled: boolean;
|
|
32
34
|
formDialogObjectId: number | undefined;
|
|
33
35
|
formDialogInitValuesForInsert: any | undefined;
|
|
34
36
|
constructor(props: XAutoCompleteBaseProps);
|
|
@@ -49,6 +51,8 @@ export declare class XAutoCompleteBase extends Component<XAutoCompleteBaseProps>
|
|
|
49
51
|
createInsertUpdateItems(splitButtonItems: MenuItem[]): void;
|
|
50
52
|
createSearchItem(splitButtonItems: MenuItem[]): void;
|
|
51
53
|
createDropdownItem(splitButtonItems: MenuItem[]): void;
|
|
54
|
+
onOpenDropdown(e: any): void;
|
|
55
|
+
openDropdown(e: any): void;
|
|
52
56
|
computeInputValue(): any;
|
|
53
57
|
createSearchBrowseParams(): XSearchBrowseParams;
|
|
54
58
|
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();
|
|
@@ -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});
|
|
@@ -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];
|
|
@@ -101,7 +101,7 @@ var XDropdownDTFilter = function (props) {
|
|
|
101
101
|
return __generator(this, function (_a) {
|
|
102
102
|
switch (_a.label) {
|
|
103
103
|
case 0:
|
|
104
|
-
xAssoc =
|
|
104
|
+
xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getLastXAssocByPath(XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(entity), path);
|
|
105
105
|
return [4 /*yield*/, XUtils_1.XUtils.fetchRows(xAssoc.entityName, undefined, displayField)];
|
|
106
106
|
case 1:
|
|
107
107
|
options = _a.sent();
|
|
@@ -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;
|
|
@@ -82,6 +82,7 @@ var XButtonIconNarrow_1 = require("./XButtonIconNarrow");
|
|
|
82
82
|
var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
|
|
83
83
|
var XLocale_1 = require("./XLocale");
|
|
84
84
|
var XInputIntervalDT_1 = require("./XInputIntervalDT");
|
|
85
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
85
86
|
var XFormDataTable2 = /** @class */ (function (_super) {
|
|
86
87
|
__extends(XFormDataTable2, _super);
|
|
87
88
|
function XFormDataTable2(props) {
|
|
@@ -89,11 +90,11 @@ var XFormDataTable2 = /** @class */ (function (_super) {
|
|
|
89
90
|
var _this = _super.call(this, props) || this;
|
|
90
91
|
_this.props = props;
|
|
91
92
|
_this.dataKey = props.dataKey;
|
|
92
|
-
var xEntityForm =
|
|
93
|
-
var xAssocToMany =
|
|
93
|
+
var xEntityForm = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(props.form.getEntity());
|
|
94
|
+
var xAssocToMany = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToMany(xEntityForm, props.assocField);
|
|
94
95
|
_this.entity = xAssocToMany.entityName;
|
|
95
96
|
if (_this.dataKey === undefined) {
|
|
96
|
-
_this.dataKey =
|
|
97
|
+
_this.dataKey = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(_this.entity).idField;
|
|
97
98
|
}
|
|
98
99
|
_this.state = {
|
|
99
100
|
selectedRow: undefined,
|
|
@@ -164,19 +165,19 @@ var XFormDataTable2 = /** @class */ (function (_super) {
|
|
|
164
165
|
}
|
|
165
166
|
else if (columnProps.type === "dropdown") {
|
|
166
167
|
var columnPropsDropdown = columnProps;
|
|
167
|
-
var xAssoc =
|
|
168
|
+
var xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(xEntity, columnPropsDropdown.assocField);
|
|
168
169
|
isNullable = xAssoc.isNullable;
|
|
169
170
|
readOnly = XFormDataTable2.isReadOnlyHeader(undefined, columnProps.readOnly);
|
|
170
171
|
}
|
|
171
172
|
else if (columnProps.type === "autoComplete") {
|
|
172
173
|
var columnPropsAutoComplete = columnProps;
|
|
173
|
-
var xAssoc =
|
|
174
|
+
var xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(xEntity, columnPropsAutoComplete.assocField);
|
|
174
175
|
isNullable = xAssoc.isNullable;
|
|
175
176
|
readOnly = XFormDataTable2.isReadOnlyHeader(undefined, columnProps.readOnly);
|
|
176
177
|
}
|
|
177
178
|
else if (columnProps.type === "searchButton") {
|
|
178
179
|
var columnPropsSearchButton = columnProps;
|
|
179
|
-
var xAssoc =
|
|
180
|
+
var xAssoc = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXAssocToOne(xEntity, columnPropsSearchButton.assocField);
|
|
180
181
|
isNullable = xAssoc.isNullable;
|
|
181
182
|
readOnly = XFormDataTable2.isReadOnlyHeader(undefined, columnProps.readOnly);
|
|
182
183
|
}
|
|
@@ -224,14 +225,14 @@ var XFormDataTable2 = /** @class */ (function (_super) {
|
|
|
224
225
|
if (this.props.filterDisplay === "none") {
|
|
225
226
|
return initFilters;
|
|
226
227
|
}
|
|
227
|
-
var xEntity =
|
|
228
|
+
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.getEntity());
|
|
228
229
|
try {
|
|
229
230
|
// TODO - asi by bolo fajn si tieto field, xField niekam ulozit a iterovat ulozene hodnoty, pouziva sa to na viacerych miestach
|
|
230
231
|
for (var _b = __values(this.props.children), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
231
232
|
var child = _c.value;
|
|
232
233
|
var childColumn = child; // nevedel som to krajsie...
|
|
233
234
|
var field = this.getPathForColumn(childColumn.props);
|
|
234
|
-
var xField =
|
|
235
|
+
var xField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldByPath(xEntity, field);
|
|
235
236
|
// TODO column.props.dropdownInFilter - pre "menu" by bolo fajn mat zoznam "enumov"
|
|
236
237
|
var filterMatchMode = this.getFilterMatchMode(xField);
|
|
237
238
|
var filterItem = void 0;
|
|
@@ -262,7 +263,7 @@ var XFormDataTable2 = /** @class */ (function (_super) {
|
|
|
262
263
|
XFormDataTable2.prototype.getFilterMatchMode = function (xField) {
|
|
263
264
|
var filterMatchMode;
|
|
264
265
|
if (xField.type === "string") {
|
|
265
|
-
filterMatchMode = api_1.FilterMatchMode.
|
|
266
|
+
filterMatchMode = api_1.FilterMatchMode.CONTAINS;
|
|
266
267
|
}
|
|
267
268
|
// zatial vsetky ostatne EQUALS
|
|
268
269
|
else if (xField.type === "decimal" || xField.type === "number" || xField.type === "date" || xField.type === "datetime" || xField.type === "boolean") {
|
|
@@ -353,7 +354,7 @@ var XFormDataTable2 = /** @class */ (function (_super) {
|
|
|
353
354
|
var readOnly = tableReadOnly ? true : columnProps.readOnly;
|
|
354
355
|
if (columnProps.type === "inputSimple") {
|
|
355
356
|
var columnPropsInputSimple = columnProps;
|
|
356
|
-
var xField =
|
|
357
|
+
var xField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldByPath(xEntity, columnPropsInputSimple.field);
|
|
357
358
|
if (xField.type === "decimal" || xField.type === "number") {
|
|
358
359
|
body = react_1.default.createElement(XInputDecimalDT_1.XInputDecimalDT, { form: this.props.form, entity: this.getEntity(), field: columnPropsInputSimple.field, rowData: rowData, readOnly: readOnly, onChange: columnPropsInputSimple.onChange });
|
|
359
360
|
}
|
|
@@ -514,7 +515,7 @@ var XFormDataTable2 = /** @class */ (function (_super) {
|
|
|
514
515
|
var thisLocal = this;
|
|
515
516
|
var object = this.props.form.state.object;
|
|
516
517
|
var valueList = object !== null ? object[this.props.assocField] : [];
|
|
517
|
-
var xEntity =
|
|
518
|
+
var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(this.getEntity());
|
|
518
519
|
var scrollWidth = undefined; // vypnute horizontalne scrollovanie
|
|
519
520
|
var scrollHeight = undefined; // vypnute vertikalne scrollovanie
|
|
520
521
|
if (this.props.scrollable) {
|
|
@@ -552,7 +553,7 @@ var XFormDataTable2 = /** @class */ (function (_super) {
|
|
|
552
553
|
// (aj ked, da sa to prebit na stlpcoch (na elemente Column), su na to atributy)
|
|
553
554
|
var field = thisLocal.getPathForColumn(childColumnProps);
|
|
554
555
|
// TODO - toto by sa mohlo vytiahnut vyssie, aj v bodyTemplate sa vola metoda XUtilsMetadata.getXFieldByPath
|
|
555
|
-
var xField =
|
|
556
|
+
var xField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldByPath(xEntity, field);
|
|
556
557
|
// *********** header ***********
|
|
557
558
|
var header = XFormDataTable2.getHeader(childColumnProps, xEntity, field, xField);
|
|
558
559
|
// *********** filterElement ***********
|
|
@@ -17,7 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
exports.XFtsInput = void 0;
|
|
18
18
|
var inputtext_1 = require("primereact/inputtext");
|
|
19
19
|
var react_1 = __importDefault(require("react"));
|
|
20
|
-
var XUtilsConversions_1 = require("
|
|
20
|
+
var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
|
|
21
21
|
var XFtsInput = function (props) {
|
|
22
22
|
var onChange = function (e) {
|
|
23
23
|
var value = (0, XUtilsConversions_1.stringFromUI)(e.target.value);
|
package/lib/components/XInput.js
CHANGED
|
@@ -16,14 +16,14 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
16
16
|
})();
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.XInput = void 0;
|
|
19
|
-
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
20
19
|
var XFormComponent_1 = require("./XFormComponent");
|
|
20
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
21
21
|
// spolocna nadtrieda pre jednoduche inputy (nie asociacne)
|
|
22
22
|
var XInput = /** @class */ (function (_super) {
|
|
23
23
|
__extends(XInput, _super);
|
|
24
24
|
function XInput(props) {
|
|
25
25
|
var _this = _super.call(this, props) || this;
|
|
26
|
-
_this.xField =
|
|
26
|
+
_this.xField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldByPathStr(props.form.getEntity(), props.field);
|
|
27
27
|
props.form.addField(props.field);
|
|
28
28
|
return _this;
|
|
29
29
|
}
|
|
@@ -16,14 +16,14 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
16
16
|
})();
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.XInputDT = void 0;
|
|
19
|
-
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
20
19
|
var XFormComponentDT_1 = require("./XFormComponentDT");
|
|
20
|
+
var XUtilsMetadataCommon_1 = require("../serverApi/XUtilsMetadataCommon");
|
|
21
21
|
// spolocna nadtrieda pre jednoduche inputy (nie asociacne)
|
|
22
22
|
var XInputDT = /** @class */ (function (_super) {
|
|
23
23
|
__extends(XInputDT, _super);
|
|
24
24
|
function XInputDT(props) {
|
|
25
25
|
var _this = _super.call(this, props) || this;
|
|
26
|
-
_this.xField =
|
|
26
|
+
_this.xField = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXFieldByPathStr(props.entity, props.field);
|
|
27
27
|
return _this;
|
|
28
28
|
}
|
|
29
29
|
XInputDT.prototype.getField = function () {
|
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.XInputDateDT = void 0;
|
|
7
|
-
var XUtilsConversions_1 = require("
|
|
7
|
+
var XUtilsConversions_1 = require("../serverApi/XUtilsConversions");
|
|
8
8
|
var calendar_1 = require("primereact/calendar");
|
|
9
9
|
var react_1 = __importDefault(require("react"));
|
|
10
10
|
var XUtilsCommon_1 = require("../serverApi/XUtilsCommon");
|
|
@@ -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);
|