@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.
Files changed (44) hide show
  1. package/XUtilsConversions.d.ts +1 -1
  2. package/XUtilsConversions.js +1 -1
  3. package/XUtilsMetadataCommon.d.ts +3 -0
  4. package/XUtilsMetadataCommon.js +5 -0
  5. package/gulpfile.js +3 -2
  6. package/lib/components/XAutoComplete.d.ts +3 -1
  7. package/lib/components/XAutoComplete.js +14 -8
  8. package/lib/components/XAutoCompleteBase.d.ts +4 -0
  9. package/lib/components/XAutoCompleteBase.js +33 -2
  10. package/lib/components/XAutoCompleteDT.js +4 -4
  11. package/lib/components/XCalendar.js +1 -1
  12. package/lib/components/XDropdown.js +2 -2
  13. package/lib/components/XDropdownDT.js +4 -4
  14. package/lib/components/XDropdownDTFilter.js +2 -2
  15. package/lib/components/XDropdownForEntity.js +2 -2
  16. package/lib/components/XEditBrowse.js +4 -3
  17. package/lib/components/XExportRowsDialog.js +1 -1
  18. package/lib/components/XFieldSelector.js +4 -4
  19. package/lib/components/XFormDataTable2.js +13 -12
  20. package/lib/components/XFtsInput.js +1 -1
  21. package/lib/components/XInput.js +2 -2
  22. package/lib/components/XInputDT.js +2 -2
  23. package/lib/components/XInputDateDT.js +1 -1
  24. package/lib/components/XInputFileList.js +6 -6
  25. package/lib/components/XInputIntervalBase.js +1 -1
  26. package/lib/components/XInputText.js +1 -1
  27. package/lib/components/XInputTextDT.js +3 -3
  28. package/lib/components/XInputTextarea.js +1 -1
  29. package/lib/components/XLazyDataTable.d.ts +9 -0
  30. package/lib/components/XLazyDataTable.js +21 -43
  31. package/lib/components/XSearchButton.js +4 -4
  32. package/lib/components/XSearchButtonDT.js +3 -3
  33. package/lib/components/XSearchButtonOld.js +5 -5
  34. package/lib/components/XToOneAssocButton.js +3 -3
  35. package/lib/components/XUtils.js +2 -1
  36. package/lib/components/XUtilsMetadata.d.ts +1 -19
  37. package/lib/components/XUtilsMetadata.js +8 -186
  38. package/lib/components/locale/x-en.json +4 -1
  39. package/lib/{components → serverApi}/XUtilsConversions.d.ts +18 -1
  40. package/lib/serverApi/XUtilsConversions.js +330 -0
  41. package/lib/serverApi/XUtilsMetadataCommon.d.ts +30 -0
  42. package/lib/serverApi/XUtilsMetadataCommon.js +208 -0
  43. package/package.json +2 -2
  44. package/lib/components/XUtilsConversions.js +0 -177
@@ -1,3 +1,3 @@
1
1
  // generated by gulp
2
2
 
3
- export * from './lib/components/XUtilsConversions';
3
+ export * from './lib/serverApi/XUtilsConversions';
@@ -2,4 +2,4 @@
2
2
 
3
3
  'use strict';
4
4
 
5
- module.exports = require('./lib/components/XUtilsConversions.js');
5
+ module.exports = require('./lib/serverApi/XUtilsConversions.js');
@@ -0,0 +1,3 @@
1
+ // generated by gulp
2
+
3
+ export * from './lib/serverApi/XUtilsMetadataCommon';
@@ -0,0 +1,5 @@
1
+ // generated by gulp
2
+
3
+ 'use strict';
4
+
5
+ module.exports = require('./lib/serverApi/XUtilsMetadataCommon.js');
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 = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.form.getEntity()), props.assocField);
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.readAndSetSuggestions();
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.xAssoc.entityName);
135
- //const xDisplayField = XUtilsMetadata.getXFieldByPath(xEntityAssoc, this.props.displayField);
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
- _this.autoCompleteRef.current.search(e, '', 'dropdown');
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.autoCompleteRef.current.search(e, '', 'dropdown'); }, className: 'x-dropdownbutton' + XUtils_1.XUtils.mobileCssSuffix(), disabled: readOnly });
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 = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity), props.assocField);
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.xAssoc.entityName);
133
- //const xDisplayField = XUtilsMetadata.getXFieldByPath(xEntityAssoc, this.props.displayField);
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("./XUtilsConversions");
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 = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.form.getEntity()), props.assocField);
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 XUtilsMetadata_1 = require("./XUtilsMetadata");
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 = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity), props.assocField);
71
- var idField = XUtilsMetadata_1.XUtilsMetadata.getXEntity(xAssoc.entityName).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 = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.entity), props.assocField);
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 XUtilsMetadata_1 = require("./XUtilsMetadata");
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 = XUtilsMetadata_1.XUtilsMetadata.getLastXAssocByPath(XUtilsMetadata_1.XUtilsMetadata.getXEntity(entity), path);
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 XUtilsMetadata_1 = require("./XUtilsMetadata");
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(_this.props.entity).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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.props.entity);
151
- var xFieldList = XUtilsMetadata_1.XUtilsMetadata.getXFieldList(xEntity);
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.props.entity);
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("./XUtilsConversions");
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 XUtilsMetadata_1 = require("./XUtilsMetadata");
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(entity);
69
- var xFieldList = XUtilsMetadata_1.XUtilsMetadata.getXFieldList(xEntity);
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 = XUtilsMetadata_1.XUtilsMetadata.getXAssocList(xEntity, ["many-to-one", "one-to-one"]);
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.form.getEntity());
93
- var xAssocToMany = XUtilsMetadata_1.XUtilsMetadata.getXAssocToMany(xEntityForm, props.assocField);
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(_this.entity).idField;
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 = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(xEntity, columnPropsDropdown.assocField);
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 = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(xEntity, columnPropsAutoComplete.assocField);
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 = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(xEntity, columnPropsSearchButton.assocField);
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.getEntity());
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 = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, field);
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.STARTS_WITH;
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 = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, columnPropsInputSimple.field);
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.getEntity());
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 = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, field);
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("./XUtilsConversions");
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);
@@ -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 = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPathStr(props.form.getEntity(), props.field);
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 = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPathStr(props.entity, props.field);
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("./XUtilsConversions");
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("./XUtilsConversions");
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.form.getEntity());
85
- var xAssocToMany = XUtilsMetadata_1.XUtilsMetadata.getXAssocToMany(xEntityForm, props.assocField);
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 = XUtilsMetadata_1.XUtilsMetadata.getXEntity(_this.entity);
87
+ var xEntity = XUtilsMetadataCommon_1.XUtilsMetadataCommon.getXEntity(_this.entity);
88
88
  _this.idField = xEntity.idField;
89
- _this.xFileField = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOneByAssocEntity(xEntity, 'XFile').name;
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);