@michalrakus/x-react-web-lib 1.8.0 → 1.9.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/README.md +3 -3
- package/gulpfile.js +82 -82
- package/lib/administration/XBrowseMetaBrowse.d.ts +2 -2
- package/lib/administration/XBrowseMetaBrowse.js +21 -21
- package/lib/administration/XBrowseMetaForm.d.ts +5 -5
- package/lib/administration/XBrowseMetaForm.js +63 -63
- package/lib/administration/XUserBrowse.d.ts +2 -2
- package/lib/administration/XUserBrowse.js +88 -87
- package/lib/administration/XUserForm.d.ts +9 -9
- package/lib/administration/XUserForm.js +195 -194
- package/lib/components/SearchTableParams.d.ts +11 -11
- package/lib/components/SearchTableParams.js +2 -2
- package/lib/components/SourceCodeLinkEntity.d.ts +4 -4
- package/lib/components/SourceCodeLinkEntity.js +14 -14
- package/lib/components/XAutoComplete.d.ts +36 -36
- package/lib/components/XAutoComplete.js +155 -155
- package/lib/components/XAutoCompleteBase.d.ts +45 -45
- package/lib/components/XAutoCompleteBase.js +371 -371
- package/lib/components/XAutoCompleteDT.d.ts +33 -33
- package/lib/components/XAutoCompleteDT.js +140 -140
- package/lib/components/XBrowse.d.ts +33 -33
- package/lib/components/XBrowse.js +360 -360
- package/lib/components/XButton.d.ts +9 -9
- package/lib/components/XButton.js +13 -13
- package/lib/components/XButtonIconMedium.d.ts +9 -9
- package/lib/components/XButtonIconMedium.js +13 -13
- package/lib/components/XButtonIconNarrow.d.ts +10 -10
- package/lib/components/XButtonIconNarrow.js +25 -25
- package/lib/components/XButtonIconSmall.d.ts +9 -9
- package/lib/components/XButtonIconSmall.js +13 -13
- package/lib/components/XCalendar.d.ts +8 -8
- package/lib/components/XCalendar.js +27 -27
- package/lib/components/XChangePasswordForm.d.ts +5 -5
- package/lib/components/XChangePasswordForm.js +160 -160
- package/lib/components/XCheckbox.d.ts +8 -8
- package/lib/components/XCheckbox.js +57 -57
- package/lib/components/XCheckboxDT.d.ts +10 -10
- package/lib/components/XCheckboxDT.js +46 -46
- package/lib/components/XDataTable.d.ts +11 -11
- package/lib/components/XDataTable.js +197 -197
- package/lib/components/XDropdown.d.ts +18 -18
- package/lib/components/XDropdown.js +57 -57
- package/lib/components/XDropdownDT.d.ts +13 -13
- package/lib/components/XDropdownDT.js +128 -128
- package/lib/components/XDropdownDTFilter.d.ts +7 -7
- package/lib/components/XDropdownDTFilter.js +121 -121
- package/lib/components/XDropdownForEntity.d.ts +25 -25
- package/lib/components/XDropdownForEntity.js +149 -149
- package/lib/components/XDropdownFormDTFilter.d.ts +7 -7
- package/lib/components/XDropdownFormDTFilter.js +121 -121
- package/lib/components/XEditColumnDialog.d.ts +13 -13
- package/lib/components/XEditColumnDialog.js +112 -112
- package/lib/components/XEnvVars.d.ts +15 -12
- package/lib/components/XEnvVars.js +23 -20
- package/lib/components/XErrors.d.ts +12 -12
- package/lib/components/XErrors.js +2 -2
- package/lib/components/XExportRowsDialog.d.ts +15 -15
- package/lib/components/XExportRowsDialog.js +184 -184
- package/lib/components/XFieldChangeEvent.d.ts +11 -11
- package/lib/components/XFieldChangeEvent.js +2 -2
- package/lib/components/XFieldSelector.d.ts +7 -7
- package/lib/components/XFieldSelector.js +113 -113
- package/lib/components/XFormBase.d.ts +59 -59
- package/lib/components/XFormBase.js +526 -526
- package/lib/components/XFormBaseModif.d.ts +5 -5
- package/lib/components/XFormBaseModif.js +33 -33
- package/lib/components/XFormBaseT.d.ts +4 -4
- package/lib/components/XFormBaseT.js +31 -31
- package/lib/components/XFormComponent.d.ts +40 -40
- package/lib/components/XFormComponent.js +177 -177
- package/lib/components/XFormComponentDT.d.ts +30 -30
- package/lib/components/XFormComponentDT.js +145 -145
- package/lib/components/XFormDataTable2.d.ts +143 -143
- package/lib/components/XFormDataTable2.js +686 -686
- package/lib/components/XFormFooter.d.ts +6 -6
- package/lib/components/XFormFooter.js +19 -19
- package/lib/components/XFormNavigator3.d.ts +12 -12
- package/lib/components/XFormNavigator3.js +130 -130
- package/lib/components/XHolders.d.ts +7 -7
- package/lib/components/XHolders.js +15 -15
- package/lib/components/XInput.d.ts +13 -13
- package/lib/components/XInput.js +38 -38
- package/lib/components/XInputDT.d.ts +11 -11
- package/lib/components/XInputDT.js +37 -37
- package/lib/components/XInputDate.d.ts +13 -13
- package/lib/components/XInputDate.js +63 -63
- package/lib/components/XInputDateDT.d.ts +10 -10
- package/lib/components/XInputDateDT.js +55 -55
- package/lib/components/XInputDecimal.d.ts +15 -15
- package/lib/components/XInputDecimal.js +78 -78
- package/lib/components/XInputDecimalBase.d.ts +12 -12
- package/lib/components/XInputDecimalBase.js +18 -18
- package/lib/components/XInputDecimalDT.d.ts +11 -11
- package/lib/components/XInputDecimalDT.js +74 -74
- package/lib/components/XInputFileList.d.ts +36 -36
- package/lib/components/XInputFileList.js +251 -251
- package/lib/components/XInputText.d.ts +12 -12
- package/lib/components/XInputText.js +69 -69
- package/lib/components/XInputTextDT.d.ts +9 -9
- package/lib/components/XInputTextDT.js +42 -42
- package/lib/components/XInputTextarea.d.ts +18 -18
- package/lib/components/XInputTextarea.js +85 -85
- package/lib/components/XLazyDataTable.d.ts +78 -78
- package/lib/components/XLazyDataTable.js +885 -885
- package/lib/components/XLocale.d.ts +26 -26
- package/lib/components/XLocale.js +59 -59
- package/lib/components/XLoginDialog.d.ts +8 -8
- package/lib/components/XLoginDialog.js +21 -21
- package/lib/components/XLoginForm.d.ts +7 -7
- package/lib/components/XLoginForm.js +128 -128
- package/lib/components/XObject.d.ts +3 -3
- package/lib/components/XObject.js +2 -2
- package/lib/components/XResponseError.d.ts +11 -11
- package/lib/components/XResponseError.js +32 -32
- package/lib/components/XSearchButton.d.ts +26 -26
- package/lib/components/XSearchButton.js +225 -225
- package/lib/components/XSearchButtonDT.d.ts +12 -12
- package/lib/components/XSearchButtonDT.js +188 -188
- package/lib/components/XSearchButtonOld.d.ts +13 -13
- package/lib/components/XSearchButtonOld.js +212 -212
- package/lib/components/XToOneAssocButton.d.ts +8 -8
- package/lib/components/XToOneAssocButton.js +30 -30
- package/lib/components/XToken.d.ts +6 -6
- package/lib/components/XToken.js +2 -2
- package/lib/components/XUtils.d.ts +74 -74
- package/lib/components/XUtils.js +627 -627
- package/lib/components/XUtilsConversions.d.ts +12 -12
- package/lib/components/XUtilsConversions.js +125 -125
- package/lib/components/XUtilsMetadata.d.ts +39 -39
- package/lib/components/XUtilsMetadata.js +452 -452
- package/lib/components/locale/x-en.json +26 -26
- package/lib/components/useXToken.d.ts +2 -2
- package/lib/components/useXToken.js +44 -44
- package/lib/serverApi/ExportImportParam.d.ts +51 -51
- package/lib/serverApi/ExportImportParam.js +34 -34
- package/lib/serverApi/FindParam.d.ts +34 -34
- package/lib/serverApi/FindParam.js +30 -30
- package/lib/serverApi/FindResult.d.ts +8 -8
- package/lib/serverApi/FindResult.js +2 -2
- package/lib/serverApi/XBrowseMetadata.d.ts +19 -19
- package/lib/serverApi/XBrowseMetadata.js +2 -2
- package/lib/serverApi/XEntityMetadata.d.ts +35 -35
- package/lib/serverApi/XEntityMetadata.js +2 -2
- package/lib/serverApi/XFileJsonField.d.ts +6 -6
- package/lib/serverApi/XFileJsonField.js +2 -2
- package/lib/serverApi/XUser.d.ts +8 -7
- package/lib/serverApi/XUser.js +2 -2
- package/lib/serverApi/XUserAuthenticationIfc.d.ts +9 -9
- package/lib/serverApi/XUserAuthenticationIfc.js +2 -2
- package/lib/serverApi/XUtilsCommon.d.ts +13 -13
- package/lib/serverApi/XUtilsCommon.js +110 -110
- package/package.json +1 -1
|
@@ -1,686 +1,686 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
29
|
-
if (k2 === undefined) k2 = k;
|
|
30
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
31
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
32
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
33
|
-
}
|
|
34
|
-
Object.defineProperty(o, k2, desc);
|
|
35
|
-
}) : (function(o, m, k, k2) {
|
|
36
|
-
if (k2 === undefined) k2 = k;
|
|
37
|
-
o[k2] = m[k];
|
|
38
|
-
}));
|
|
39
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
40
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
41
|
-
}) : function(o, v) {
|
|
42
|
-
o["default"] = v;
|
|
43
|
-
});
|
|
44
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
45
|
-
if (mod && mod.__esModule) return mod;
|
|
46
|
-
var result = {};
|
|
47
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
48
|
-
__setModuleDefault(result, mod);
|
|
49
|
-
return result;
|
|
50
|
-
};
|
|
51
|
-
var __values = (this && this.__values) || function(o) {
|
|
52
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
53
|
-
if (m) return m.call(o);
|
|
54
|
-
if (o && typeof o.length === "number") return {
|
|
55
|
-
next: function () {
|
|
56
|
-
if (o && i >= o.length) o = void 0;
|
|
57
|
-
return { value: o && o[i++], done: !o };
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
61
|
-
};
|
|
62
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
63
|
-
exports.XFormSearchButtonColumn = exports.XFormAutoCompleteColumn = exports.XFormDropdownColumn = exports.XFormColumn = exports.XFormDataTable2 = void 0;
|
|
64
|
-
var XFormBase_1 = require("./XFormBase");
|
|
65
|
-
var react_1 = __importStar(require("react"));
|
|
66
|
-
var XDropdownDT_1 = require("./XDropdownDT");
|
|
67
|
-
var datatable_1 = require("primereact/datatable");
|
|
68
|
-
var column_1 = require("primereact/column");
|
|
69
|
-
var XButton_1 = require("./XButton");
|
|
70
|
-
var XInputTextDT_1 = require("./XInputTextDT");
|
|
71
|
-
var XSearchButtonDT_1 = require("./XSearchButtonDT");
|
|
72
|
-
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
73
|
-
var XUtils_1 = require("./XUtils");
|
|
74
|
-
var XDropdownDTFilter_1 = require("./XDropdownDTFilter");
|
|
75
|
-
var XInputDecimalDT_1 = require("./XInputDecimalDT");
|
|
76
|
-
var XInputDateDT_1 = require("./XInputDateDT");
|
|
77
|
-
var XCheckboxDT_1 = require("./XCheckboxDT");
|
|
78
|
-
var tristatecheckbox_1 = require("primereact/tristatecheckbox");
|
|
79
|
-
var api_1 = require("primereact/api");
|
|
80
|
-
var XAutoCompleteDT_1 = require("./XAutoCompleteDT");
|
|
81
|
-
var XButtonIconNarrow_1 = require("./XButtonIconNarrow");
|
|
82
|
-
var XLocale_1 = require("./XLocale");
|
|
83
|
-
var XFormDataTable2 = /** @class */ (function (_super) {
|
|
84
|
-
__extends(XFormDataTable2, _super);
|
|
85
|
-
function XFormDataTable2(props) {
|
|
86
|
-
var e_1, _a;
|
|
87
|
-
var _this = _super.call(this, props) || this;
|
|
88
|
-
_this.props = props;
|
|
89
|
-
_this.dataKey = props.dataKey;
|
|
90
|
-
var xEntityForm = XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.form.getEntity());
|
|
91
|
-
var xAssocToMany = XUtilsMetadata_1.XUtilsMetadata.getXAssocToMany(xEntityForm, props.assocField);
|
|
92
|
-
_this.entity = xAssocToMany.entityName;
|
|
93
|
-
if (_this.dataKey === undefined) {
|
|
94
|
-
_this.dataKey = XUtilsMetadata_1.XUtilsMetadata.getXEntity(_this.entity).idField;
|
|
95
|
-
}
|
|
96
|
-
_this.state = {
|
|
97
|
-
selectedRow: undefined,
|
|
98
|
-
dropdownOptionsMap: {},
|
|
99
|
-
filters: _this.createInitFilters()
|
|
100
|
-
};
|
|
101
|
-
_this.onClickAddRow = _this.onClickAddRow.bind(_this);
|
|
102
|
-
_this.onClickRemoveRowBySelection = _this.onClickRemoveRowBySelection.bind(_this);
|
|
103
|
-
_this.removeRow = _this.removeRow.bind(_this);
|
|
104
|
-
_this.onSelectionChange = _this.onSelectionChange.bind(_this);
|
|
105
|
-
_this.onDropdownOptionsMapChange = _this.onDropdownOptionsMapChange.bind(_this);
|
|
106
|
-
_this.onFilter = _this.onFilter.bind(_this);
|
|
107
|
-
_this.onCheckboxFilterChange = _this.onCheckboxFilterChange.bind(_this);
|
|
108
|
-
_this.getCheckboxFilterValue = _this.getCheckboxFilterValue.bind(_this);
|
|
109
|
-
_this.onDropdownFilterChange = _this.onDropdownFilterChange.bind(_this);
|
|
110
|
-
_this.getDropdownFilterValue = _this.getDropdownFilterValue.bind(_this);
|
|
111
|
-
_this.bodyTemplate = _this.bodyTemplate.bind(_this);
|
|
112
|
-
props.form.addXFormDataTable(_this);
|
|
113
|
-
try {
|
|
114
|
-
//props.form.addField(props.assocField + '.*FAKE*'); - vzdy mame aspon 1 field, nie je to potrebne
|
|
115
|
-
for (var _b = __values(props.children), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
116
|
-
var child = _c.value;
|
|
117
|
-
var childColumn = child; // nevedel som to krajsie...
|
|
118
|
-
var field = props.assocField + '.' + _this.getPathForColumn(childColumn.props);
|
|
119
|
-
props.form.addField(field);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
123
|
-
finally {
|
|
124
|
-
try {
|
|
125
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
126
|
-
}
|
|
127
|
-
finally { if (e_1) throw e_1.error; }
|
|
128
|
-
}
|
|
129
|
-
return _this;
|
|
130
|
-
}
|
|
131
|
-
XFormDataTable2.prototype.getPathForColumn = function (columnProps) {
|
|
132
|
-
if (columnProps.type === "inputSimple") {
|
|
133
|
-
var columnPropsInputSimple = columnProps;
|
|
134
|
-
return columnPropsInputSimple.field;
|
|
135
|
-
}
|
|
136
|
-
else if (columnProps.type === "dropdown") {
|
|
137
|
-
var columnPropsDropdown = columnProps;
|
|
138
|
-
return columnPropsDropdown.assocField + '.' + columnPropsDropdown.displayField;
|
|
139
|
-
}
|
|
140
|
-
else if (columnProps.type === "autoComplete") {
|
|
141
|
-
var columnPropsAutoComplete = columnProps;
|
|
142
|
-
return columnPropsAutoComplete.assocField + '.' + this.getDisplayFieldOrId(columnPropsAutoComplete);
|
|
143
|
-
}
|
|
144
|
-
else if (columnProps.type === "searchButton") {
|
|
145
|
-
var columnPropsSearchButton = columnProps;
|
|
146
|
-
return columnPropsSearchButton.assocField + '.' + columnPropsSearchButton.displayField;
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
throw "Unknown prop type = " + columnProps.type;
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
XFormDataTable2.prototype.getDisplayFieldOrId = function (columnPropsAutoComplete) {
|
|
153
|
-
// toto je hack - ak ratame displayField cez funkciu, tak nam potom v kode chyba (hociaky) atribut asociovaneho objektu
|
|
154
|
-
// aby sme nemuseli robit nejake velke prerabky a zmeny, tak podsunieme id-ckovy atribut
|
|
155
|
-
if (typeof columnPropsAutoComplete.displayField === 'string') {
|
|
156
|
-
return columnPropsAutoComplete.displayField; // vsetko ok
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
// v displayField mame funkciu, zistime id-ckovy atribut
|
|
160
|
-
// TODO - problem - sortovanie/filtrovanie bude fungovat podla tohto id atributu
|
|
161
|
-
var xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.getEntity()), columnPropsAutoComplete.assocField);
|
|
162
|
-
return XUtilsMetadata_1.XUtilsMetadata.getXEntity(xAssoc.entityName).idField;
|
|
163
|
-
}
|
|
164
|
-
};
|
|
165
|
-
XFormDataTable2.getHeader = function (columnProps, xEntity, field, xField) {
|
|
166
|
-
var _a, _b, _c, _d;
|
|
167
|
-
// poznamky - parametre field a xField by sme mohli vyratavat na zaklade columnProps ale kedze ich uz mame, setrime performance a neduplikujeme vypocet
|
|
168
|
-
// nie je to tu uplne idealne nakodene, ale je to pomerne prehladne
|
|
169
|
-
var isNullable = true;
|
|
170
|
-
var readOnly = false;
|
|
171
|
-
if (columnProps.type === "inputSimple") {
|
|
172
|
-
var columnPropsInputSimple = columnProps;
|
|
173
|
-
isNullable = xField.isNullable;
|
|
174
|
-
readOnly = XUtils_1.XUtils.isReadOnly(columnPropsInputSimple.field, columnProps.readOnly);
|
|
175
|
-
}
|
|
176
|
-
else if (columnProps.type === "dropdown") {
|
|
177
|
-
var columnPropsDropdown = columnProps;
|
|
178
|
-
var xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(xEntity, columnPropsDropdown.assocField);
|
|
179
|
-
isNullable = xAssoc.isNullable;
|
|
180
|
-
readOnly = (_a = columnProps.readOnly) !== null && _a !== void 0 ? _a : false;
|
|
181
|
-
}
|
|
182
|
-
else if (columnProps.type === "autoComplete") {
|
|
183
|
-
var columnPropsAutoComplete = columnProps;
|
|
184
|
-
var xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(xEntity, columnPropsAutoComplete.assocField);
|
|
185
|
-
isNullable = xAssoc.isNullable;
|
|
186
|
-
readOnly = (_b = columnProps.readOnly) !== null && _b !== void 0 ? _b : false;
|
|
187
|
-
}
|
|
188
|
-
else if (columnProps.type === "searchButton") {
|
|
189
|
-
var columnPropsSearchButton = columnProps;
|
|
190
|
-
var xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(xEntity, columnPropsSearchButton.assocField);
|
|
191
|
-
isNullable = xAssoc.isNullable;
|
|
192
|
-
readOnly = (_c = columnProps.readOnly) !== null && _c !== void 0 ? _c : false;
|
|
193
|
-
}
|
|
194
|
-
else {
|
|
195
|
-
throw "Unknown prop type = " + columnProps.type;
|
|
196
|
-
}
|
|
197
|
-
var header = (_d = columnProps.header) !== null && _d !== void 0 ? _d : field;
|
|
198
|
-
if (!isNullable && !readOnly) {
|
|
199
|
-
header = XUtils_1.XUtils.markNotNull(header);
|
|
200
|
-
}
|
|
201
|
-
return header;
|
|
202
|
-
};
|
|
203
|
-
XFormDataTable2.prototype.getEntity = function () {
|
|
204
|
-
if (this.entity === undefined) {
|
|
205
|
-
throw "Unexpected error: this.entity is undefined";
|
|
206
|
-
}
|
|
207
|
-
return this.entity;
|
|
208
|
-
};
|
|
209
|
-
XFormDataTable2.prototype.createInitFilters = function () {
|
|
210
|
-
var e_2, _a;
|
|
211
|
-
var initFilters = {};
|
|
212
|
-
if (this.props.filterDisplay === "none") {
|
|
213
|
-
return initFilters;
|
|
214
|
-
}
|
|
215
|
-
var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.getEntity());
|
|
216
|
-
try {
|
|
217
|
-
// TODO - asi by bolo fajn si tieto field, xField niekam ulozit a iterovat ulozene hodnoty, pouziva sa to na viacerych miestach
|
|
218
|
-
for (var _b = __values(this.props.children), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
219
|
-
var child = _c.value;
|
|
220
|
-
var childColumn = child; // nevedel som to krajsie...
|
|
221
|
-
var field = this.getPathForColumn(childColumn.props);
|
|
222
|
-
var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, field);
|
|
223
|
-
// TODO column.props.dropdownInFilter - pre "menu" by bolo fajn mat zoznam "enumov"
|
|
224
|
-
var filterMatchMode = this.getFilterMatchMode(xField);
|
|
225
|
-
var filterItem = void 0;
|
|
226
|
-
if (this.props.filterDisplay === "menu") {
|
|
227
|
-
// DataTableOperatorFilterMetaData: operator + filter values
|
|
228
|
-
filterItem = {
|
|
229
|
-
operator: api_1.FilterOperator.OR,
|
|
230
|
-
constraints: [{ value: null, matchMode: filterMatchMode }]
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
// props.filterDisplay === "row"
|
|
235
|
-
// DataTableFilterMetaData: filter value
|
|
236
|
-
filterItem = { value: null, matchMode: filterMatchMode };
|
|
237
|
-
}
|
|
238
|
-
initFilters[field] = filterItem;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
242
|
-
finally {
|
|
243
|
-
try {
|
|
244
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
245
|
-
}
|
|
246
|
-
finally { if (e_2) throw e_2.error; }
|
|
247
|
-
}
|
|
248
|
-
return initFilters;
|
|
249
|
-
};
|
|
250
|
-
XFormDataTable2.prototype.getFilterMatchMode = function (xField) {
|
|
251
|
-
var filterMatchMode;
|
|
252
|
-
if (xField.type === "string") {
|
|
253
|
-
filterMatchMode = api_1.FilterMatchMode.STARTS_WITH;
|
|
254
|
-
}
|
|
255
|
-
// zatial vsetky ostatne EQUALS
|
|
256
|
-
else if (xField.type === "decimal" || xField.type === "number" || xField.type === "date" || xField.type === "datetime" || xField.type === "boolean") {
|
|
257
|
-
filterMatchMode = api_1.FilterMatchMode.EQUALS;
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
throw "XField ".concat(xField.name, ": unknown xField.type = ").concat(xField.type);
|
|
261
|
-
}
|
|
262
|
-
return filterMatchMode;
|
|
263
|
-
};
|
|
264
|
-
XFormDataTable2.prototype.onSelectionChange = function (event) {
|
|
265
|
-
//console.log("zavolany onSelectionChange");
|
|
266
|
-
//console.log(event.value);
|
|
267
|
-
this.setState({ selectedRow: event.value });
|
|
268
|
-
};
|
|
269
|
-
XFormDataTable2.prototype.onDropdownOptionsMapChange = function (dropdownOptionsMap) {
|
|
270
|
-
this.setState({ dropdownOptionsMap: dropdownOptionsMap });
|
|
271
|
-
};
|
|
272
|
-
XFormDataTable2.prototype.onFilter = function (event) {
|
|
273
|
-
//console.log("zavolany onFilter - this.state.filters = " + JSON.stringify(this.state.filters));
|
|
274
|
-
//console.log("zavolany onFilter - event.filters = " + JSON.stringify(event.filters));
|
|
275
|
-
// tymto zavolanim sa zapise znak zapisany klavesnicou do inputu filtra (ak prikaz zakomentujeme, input filtra zostane prazdny)
|
|
276
|
-
this.setState({ filters: event.filters });
|
|
277
|
-
};
|
|
278
|
-
XFormDataTable2.prototype.onCheckboxFilterChange = function (field, checkboxValue) {
|
|
279
|
-
// TODO - treba vyklonovat?
|
|
280
|
-
var filtersCloned = __assign({}, this.state.filters);
|
|
281
|
-
if (checkboxValue !== null) {
|
|
282
|
-
filtersCloned[field] = { value: checkboxValue ? "true" : "false", matchMode: api_1.FilterMatchMode.EQUALS };
|
|
283
|
-
}
|
|
284
|
-
else {
|
|
285
|
-
// pouzivatel zrusil hodnotu vo filtri (vybral prazdny stav v checkboxe), zrusime polozku z filtra
|
|
286
|
-
//delete filtersCloned[field];
|
|
287
|
-
filtersCloned[field] = { value: null, matchMode: api_1.FilterMatchMode.EQUALS };
|
|
288
|
-
}
|
|
289
|
-
this.setState({ filters: filtersCloned });
|
|
290
|
-
};
|
|
291
|
-
XFormDataTable2.prototype.getCheckboxFilterValue = function (field) {
|
|
292
|
-
var checkboxValue = null;
|
|
293
|
-
var filterValue = this.state.filters[field];
|
|
294
|
-
if (filterValue !== undefined && filterValue !== null) {
|
|
295
|
-
if (filterValue.value === 'true') {
|
|
296
|
-
checkboxValue = true;
|
|
297
|
-
}
|
|
298
|
-
else if (filterValue.value === 'false') {
|
|
299
|
-
checkboxValue = false;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
return checkboxValue;
|
|
303
|
-
};
|
|
304
|
-
XFormDataTable2.prototype.onDropdownFilterChange = function (field, displayValue) {
|
|
305
|
-
// TODO - treba vyklonovat?
|
|
306
|
-
var filtersCloned = __assign({}, this.state.filters);
|
|
307
|
-
if (displayValue !== XUtils_1.XUtils.dropdownEmptyOptionValue) {
|
|
308
|
-
filtersCloned[field] = { value: displayValue, matchMode: api_1.FilterMatchMode.EQUALS };
|
|
309
|
-
}
|
|
310
|
-
else {
|
|
311
|
-
// pouzivatel zrusil hodnotu vo filtri (vybral prazdny riadok), zrusime polozku z filtra
|
|
312
|
-
//delete filtersCloned[field];
|
|
313
|
-
filtersCloned[field] = { value: null, matchMode: api_1.FilterMatchMode.EQUALS };
|
|
314
|
-
}
|
|
315
|
-
this.setState({ filters: filtersCloned });
|
|
316
|
-
};
|
|
317
|
-
XFormDataTable2.prototype.getDropdownFilterValue = function (field) {
|
|
318
|
-
var dropdownValue = XUtils_1.XUtils.dropdownEmptyOptionValue;
|
|
319
|
-
var filterValue = this.state.filters[field];
|
|
320
|
-
if (filterValue !== undefined && filterValue !== null) {
|
|
321
|
-
if (filterValue.value !== null) {
|
|
322
|
-
dropdownValue = filterValue.value;
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
return dropdownValue;
|
|
326
|
-
};
|
|
327
|
-
/* pravdepodobne zombie
|
|
328
|
-
onBodyValueChange (field: string, rowData: any, newValue: any) {
|
|
329
|
-
//console.log("onBodyValueChange");
|
|
330
|
-
|
|
331
|
-
// zmenime hodnotu v modeli (odtial sa hodnota cita)
|
|
332
|
-
rowData[field] = newValue;
|
|
333
|
-
// kedze "rowData" je sucastou "props.form.state.object", tak nam staci zavolat setState({object: object}), aby sa zmena prejavila
|
|
334
|
-
this.props.form.onObjectDataChange();
|
|
335
|
-
}
|
|
336
|
-
*/
|
|
337
|
-
// body={(rowData: any) => bodyTemplate(childColumn.props.field, rowData)}
|
|
338
|
-
XFormDataTable2.prototype.bodyTemplate = function (columnProps, tableReadOnly, rowData, xEntity) {
|
|
339
|
-
var _a, _b;
|
|
340
|
-
var body;
|
|
341
|
-
if (columnProps.type === "inputSimple") {
|
|
342
|
-
var columnPropsInputSimple = columnProps;
|
|
343
|
-
// tableReadOnly has higher prio then property readOnly
|
|
344
|
-
var readOnly = tableReadOnly || ((_a = columnPropsInputSimple.readOnly) !== null && _a !== void 0 ? _a : false);
|
|
345
|
-
var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, columnPropsInputSimple.field);
|
|
346
|
-
if (xField.type === "decimal" || xField.type === "number") {
|
|
347
|
-
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 });
|
|
348
|
-
}
|
|
349
|
-
else if (xField.type === "date" || xField.type === "datetime") {
|
|
350
|
-
body = react_1.default.createElement(XInputDateDT_1.XInputDateDT, { form: this.props.form, xField: xField, field: columnPropsInputSimple.field, rowData: rowData, readOnly: readOnly });
|
|
351
|
-
}
|
|
352
|
-
else if (xField.type === "boolean") {
|
|
353
|
-
body = react_1.default.createElement(XCheckboxDT_1.XCheckboxDT, { form: this.props.form, xField: xField, field: columnPropsInputSimple.field, rowData: rowData, readOnly: readOnly });
|
|
354
|
-
}
|
|
355
|
-
else {
|
|
356
|
-
// xField.type === "string", pripadne ine jednoduche typy
|
|
357
|
-
body = react_1.default.createElement(XInputTextDT_1.XInputTextDT, { form: this.props.form, entity: this.getEntity(), field: columnPropsInputSimple.field, rowData: rowData, readOnly: readOnly });
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
else if (columnProps.type === "dropdown") {
|
|
361
|
-
var columnPropsDropdown = columnProps;
|
|
362
|
-
body = react_1.default.createElement(XDropdownDT_1.XDropdownDT, { form: this.props.form, entity: this.getEntity(), assocField: columnPropsDropdown.assocField, displayField: columnPropsDropdown.displayField, dropdownOptionsMap: this.state.dropdownOptionsMap, onDropdownOptionsMapChange: this.onDropdownOptionsMapChange, rowData: rowData });
|
|
363
|
-
}
|
|
364
|
-
else if (columnProps.type === "autoComplete") {
|
|
365
|
-
var columnPropsAutoComplete = columnProps;
|
|
366
|
-
// tableReadOnly has higher prio then property readOnly
|
|
367
|
-
var readOnly = tableReadOnly || ((_b = columnPropsAutoComplete.readOnly) !== null && _b !== void 0 ? _b : false);
|
|
368
|
-
body = react_1.default.createElement(XAutoCompleteDT_1.XAutoCompleteDT, { form: this.props.form, entity: this.getEntity(), assocField: columnPropsAutoComplete.assocField, displayField: columnPropsAutoComplete.displayField, searchTable: columnPropsAutoComplete.searchTable, assocForm: columnPropsAutoComplete.assocForm, filter: columnPropsAutoComplete.filter, rowData: rowData, readOnly: readOnly });
|
|
369
|
-
}
|
|
370
|
-
else if (columnProps.type === "searchButton") {
|
|
371
|
-
var columnPropsSearchButton = columnProps;
|
|
372
|
-
body = react_1.default.createElement(XSearchButtonDT_1.XSearchButtonDT, { form: this.props.form, entity: this.getEntity(), assocField: columnPropsSearchButton.assocField, displayField: columnPropsSearchButton.displayField, searchTable: columnPropsSearchButton.searchTable, rowData: rowData, readOnly: columnPropsSearchButton.readOnly });
|
|
373
|
-
}
|
|
374
|
-
else {
|
|
375
|
-
throw "Unknown prop type = " + columnProps.type;
|
|
376
|
-
}
|
|
377
|
-
return body;
|
|
378
|
-
};
|
|
379
|
-
XFormDataTable2.prototype.onClickAddRow = function () {
|
|
380
|
-
if (this.props.onClickAddRow) {
|
|
381
|
-
// custom add row
|
|
382
|
-
this.props.onClickAddRow();
|
|
383
|
-
}
|
|
384
|
-
else {
|
|
385
|
-
// default add row
|
|
386
|
-
this.props.form.onTableAddRow(this.props.assocField, {}, this.dataKey, this.state.selectedRow);
|
|
387
|
-
}
|
|
388
|
-
};
|
|
389
|
-
;
|
|
390
|
-
XFormDataTable2.prototype.onClickRemoveRowBySelection = function () {
|
|
391
|
-
if (this.state.selectedRow !== undefined) {
|
|
392
|
-
this.removeRow(this.state.selectedRow);
|
|
393
|
-
}
|
|
394
|
-
else {
|
|
395
|
-
alert("Please select the row.");
|
|
396
|
-
}
|
|
397
|
-
};
|
|
398
|
-
;
|
|
399
|
-
XFormDataTable2.prototype.removeRow = function (row) {
|
|
400
|
-
if (this.props.onClickRemoveRow) {
|
|
401
|
-
// custom remove
|
|
402
|
-
this.props.onClickRemoveRow(row);
|
|
403
|
-
}
|
|
404
|
-
else {
|
|
405
|
-
// default remove
|
|
406
|
-
this.props.form.onTableRemoveRow(this.props.assocField, row);
|
|
407
|
-
}
|
|
408
|
-
};
|
|
409
|
-
XFormDataTable2.prototype.validate = function () {
|
|
410
|
-
var e_3, _a, e_4, _b;
|
|
411
|
-
// zvalidujeme vsetky rows a pripadne chyby zapiseme do specialneho fieldu __x_rowTechData
|
|
412
|
-
var object = this.props.form.getXObject();
|
|
413
|
-
var rowList = object[this.props.assocField];
|
|
414
|
-
try {
|
|
415
|
-
for (var rowList_1 = __values(rowList), rowList_1_1 = rowList_1.next(); !rowList_1_1.done; rowList_1_1 = rowList_1.next()) {
|
|
416
|
-
var row = rowList_1_1.value;
|
|
417
|
-
var xRowTechData = XFormBase_1.XFormBase.getXRowTechData(row);
|
|
418
|
-
var xErrorMap = {};
|
|
419
|
-
try {
|
|
420
|
-
for (var _c = (e_4 = void 0, __values(xRowTechData.xFormComponentDTList)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
421
|
-
var xFormComponentDT = _d.value;
|
|
422
|
-
var errorItem = xFormComponentDT.validate();
|
|
423
|
-
if (errorItem) {
|
|
424
|
-
//console.log("Mame field = " + errorItem.field);
|
|
425
|
-
xErrorMap[errorItem.field] = errorItem.xError;
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
430
|
-
finally {
|
|
431
|
-
try {
|
|
432
|
-
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
|
|
433
|
-
}
|
|
434
|
-
finally { if (e_4) throw e_4.error; }
|
|
435
|
-
}
|
|
436
|
-
xRowTechData.errorMap = xErrorMap;
|
|
437
|
-
}
|
|
438
|
-
}
|
|
439
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
440
|
-
finally {
|
|
441
|
-
try {
|
|
442
|
-
if (rowList_1_1 && !rowList_1_1.done && (_a = rowList_1.return)) _a.call(rowList_1);
|
|
443
|
-
}
|
|
444
|
-
finally { if (e_3) throw e_3.error; }
|
|
445
|
-
}
|
|
446
|
-
};
|
|
447
|
-
XFormDataTable2.prototype.getErrorMessages = function () {
|
|
448
|
-
var e_5, _a;
|
|
449
|
-
var msg = "";
|
|
450
|
-
var object = this.props.form.getXObject();
|
|
451
|
-
var rowList = object[this.props.assocField];
|
|
452
|
-
try {
|
|
453
|
-
for (var rowList_2 = __values(rowList), rowList_2_1 = rowList_2.next(); !rowList_2_1.done; rowList_2_1 = rowList_2.next()) {
|
|
454
|
-
var row = rowList_2_1.value;
|
|
455
|
-
var xRowTechData = XFormBase_1.XFormBase.getXRowTechData(row);
|
|
456
|
-
msg += XUtils_1.XUtils.getErrorMessages(xRowTechData.errorMap);
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
460
|
-
finally {
|
|
461
|
-
try {
|
|
462
|
-
if (rowList_2_1 && !rowList_2_1.done && (_a = rowList_2.return)) _a.call(rowList_2);
|
|
463
|
-
}
|
|
464
|
-
finally { if (e_5) throw e_5.error; }
|
|
465
|
-
}
|
|
466
|
-
return msg;
|
|
467
|
-
};
|
|
468
|
-
// TODO - velmi podobna funkcia ako XFormComponent.isReadOnly() - zjednotit ak sa da
|
|
469
|
-
XFormDataTable2.prototype.isReadOnly = function () {
|
|
470
|
-
var readOnly;
|
|
471
|
-
// the purpose of formReadOnly is to put the whole form to read only mode,
|
|
472
|
-
// that's why the formReadOnly has higher prio then property this.props.readOnly
|
|
473
|
-
if (this.props.form.formReadOnlyBase(this.props.assocField)) {
|
|
474
|
-
readOnly = true;
|
|
475
|
-
}
|
|
476
|
-
else if (typeof this.props.readOnly === 'boolean') {
|
|
477
|
-
readOnly = this.props.readOnly;
|
|
478
|
-
}
|
|
479
|
-
// TODO
|
|
480
|
-
// else if (typeof this.props.readOnly === 'function') {
|
|
481
|
-
// // TODO - tazko povedat ci niekedy bude object === null (asi ano vid metodu getFilterBase)
|
|
482
|
-
// const object: XObject = this.props.form.state.object;
|
|
483
|
-
// if (object) {
|
|
484
|
-
// readOnly = this.props.readOnly(this.props.form.getXObject());
|
|
485
|
-
// }
|
|
486
|
-
// else {
|
|
487
|
-
// readOnly = true;
|
|
488
|
-
// }
|
|
489
|
-
// }
|
|
490
|
-
else {
|
|
491
|
-
// readOnly is undefined
|
|
492
|
-
readOnly = false;
|
|
493
|
-
}
|
|
494
|
-
return readOnly;
|
|
495
|
-
};
|
|
496
|
-
XFormDataTable2.prototype.render = function () {
|
|
497
|
-
var _this = this;
|
|
498
|
-
var _a, _b;
|
|
499
|
-
var paginator = this.props.paginator !== undefined ? this.props.paginator : false;
|
|
500
|
-
var rows = undefined;
|
|
501
|
-
if (paginator) {
|
|
502
|
-
if (this.props.rows !== undefined) {
|
|
503
|
-
rows = this.props.rows;
|
|
504
|
-
}
|
|
505
|
-
else {
|
|
506
|
-
rows = 5; // default
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
var filterDisplay = this.props.filterDisplay !== "none" ? this.props.filterDisplay : undefined;
|
|
510
|
-
var label = this.props.label !== undefined ? this.props.label : this.props.assocField;
|
|
511
|
-
var readOnly = this.isReadOnly();
|
|
512
|
-
// v bloku function (child) nejde pouzit priamo this, thisLocal uz ide pouzit
|
|
513
|
-
var thisLocal = this;
|
|
514
|
-
var object = this.props.form.state.object;
|
|
515
|
-
var valueList = object !== null ? object[this.props.assocField] : [];
|
|
516
|
-
var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.getEntity());
|
|
517
|
-
var scrollWidth = undefined; // vypnute horizontalne scrollovanie
|
|
518
|
-
var scrollHeight = undefined; // vypnute vertikalne scrollovanie
|
|
519
|
-
if (this.props.scrollable) {
|
|
520
|
-
if (this.props.scrollWidth !== "none") {
|
|
521
|
-
scrollWidth = this.props.scrollWidth;
|
|
522
|
-
}
|
|
523
|
-
if (this.props.scrollHeight !== "none") {
|
|
524
|
-
scrollHeight = this.props.scrollHeight;
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
var style = {};
|
|
528
|
-
if (scrollWidth !== undefined) {
|
|
529
|
-
style.width = scrollWidth;
|
|
530
|
-
}
|
|
531
|
-
if (this.props.shrinkWidth) {
|
|
532
|
-
style.maxWidth = 'min-content'; // ak nic nedame (nechame auto), tak (v pripade ak nebudeme mat horizontalny scrollbar) natiahne tabulku na celu sirku stranky, co nechceme
|
|
533
|
-
}
|
|
534
|
-
// pri prechode z Primereact 6.x na 9.x sa tableLayout zmenil z fixed na auto a nefungovalo nastavenie sirok stlpcov - docasne teda takto
|
|
535
|
-
var tableStyle = { tableLayout: 'fixed' };
|
|
536
|
-
if (this.props.width !== undefined) {
|
|
537
|
-
var width = this.props.width;
|
|
538
|
-
if (!isNaN(Number(width))) { // if width is number
|
|
539
|
-
width = width + 'rem';
|
|
540
|
-
}
|
|
541
|
-
tableStyle = __assign(__assign({}, tableStyle), { width: width });
|
|
542
|
-
}
|
|
543
|
-
// pre lepsiu citatelnost vytvarame stlpce uz tu
|
|
544
|
-
var columnElemList = react_1.default.Children.map(this.props.children, function (child) {
|
|
545
|
-
// ak chceme zmenit child element, tak treba bud vytvorit novy alebo vyklonovat
|
|
546
|
-
// priklad je na https://soshace.com/building-react-components-using-children-props-and-context-api/
|
|
547
|
-
// (vzdy musime robit manipulacie so stlpcom, lebo potrebujeme pridat filter={true} sortable={true}
|
|
548
|
-
var childColumn = child; // nevedel som to krajsie...
|
|
549
|
-
var childColumnProps = childColumn.props;
|
|
550
|
-
// je dolezite, aby field obsahoval cely path az po zobrazovany atribut, lebo podla neho sa vykonava filtrovanie a sortovanie
|
|
551
|
-
// (aj ked, da sa to prebit na stlpcoch (na elemente Column), su na to atributy)
|
|
552
|
-
var field = thisLocal.getPathForColumn(childColumnProps);
|
|
553
|
-
// TODO - toto by sa mohlo vytiahnut vyssie, aj v bodyTemplate sa vola metoda XUtilsMetadata.getXFieldByPath
|
|
554
|
-
var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, field);
|
|
555
|
-
// *********** header ***********
|
|
556
|
-
var header = XFormDataTable2.getHeader(childColumnProps, xEntity, field, xField);
|
|
557
|
-
// *********** filterElement ***********
|
|
558
|
-
var filterElement;
|
|
559
|
-
if (thisLocal.props.filterDisplay !== "none") {
|
|
560
|
-
if (xField.type === "boolean") {
|
|
561
|
-
var checkboxValue = thisLocal.getCheckboxFilterValue(field);
|
|
562
|
-
filterElement = react_1.default.createElement(tristatecheckbox_1.TriStateCheckbox, { value: checkboxValue, onChange: function (e) { return thisLocal.onCheckboxFilterChange(field, e.value); } });
|
|
563
|
-
}
|
|
564
|
-
else if (childColumnProps.dropdownInFilter) {
|
|
565
|
-
var dropdownValue = thisLocal.getDropdownFilterValue(field);
|
|
566
|
-
filterElement = react_1.default.createElement(XDropdownDTFilter_1.XDropdownDTFilter, { entity: thisLocal.getEntity(), path: field, value: dropdownValue, onValueChange: thisLocal.onDropdownFilterChange });
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
// *********** showFilterMenu ***********
|
|
570
|
-
var showFilterMenu = false;
|
|
571
|
-
if (thisLocal.props.filterDisplay !== "none") {
|
|
572
|
-
if (childColumnProps.showFilterMenu !== undefined) {
|
|
573
|
-
showFilterMenu = childColumnProps.showFilterMenu;
|
|
574
|
-
}
|
|
575
|
-
else {
|
|
576
|
-
showFilterMenu = true; // default
|
|
577
|
-
if (thisLocal.props.filterDisplay === "row") {
|
|
578
|
-
if (xField.type === "boolean" || childColumnProps.dropdownInFilter) {
|
|
579
|
-
showFilterMenu = false;
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
}
|
|
583
|
-
}
|
|
584
|
-
// *********** showClearButton ***********
|
|
585
|
-
// pre filterDisplay = "row" nechceme clear button, chceme setrit miesto
|
|
586
|
-
var showClearButton = thisLocal.props.filterDisplay === "menu";
|
|
587
|
-
// *********** width/headerStyle ***********
|
|
588
|
-
var width = XUtils_1.XUtils.processPropWidth(childColumn.props.width);
|
|
589
|
-
if (width === undefined || width === "default") {
|
|
590
|
-
var filterMenuInFilterRow = thisLocal.props.filterDisplay === "row" && showFilterMenu;
|
|
591
|
-
var sortableButtonInHeader = thisLocal.props.sortable;
|
|
592
|
-
var filterButtonInHeader = thisLocal.props.filterDisplay === "menu";
|
|
593
|
-
width = XUtilsMetadata_1.XUtilsMetadata.computeColumnWidth(xField, undefined, filterMenuInFilterRow, childColumnProps.type, header, sortableButtonInHeader, filterButtonInHeader);
|
|
594
|
-
}
|
|
595
|
-
var headerStyle = {};
|
|
596
|
-
if (width !== undefined) {
|
|
597
|
-
headerStyle = { width: width };
|
|
598
|
-
}
|
|
599
|
-
// *********** align ***********
|
|
600
|
-
var align = undefined; // default undefined (left)
|
|
601
|
-
// do buducna
|
|
602
|
-
// if (childColumnProps.align !== undefined) {
|
|
603
|
-
// align = childColumnProps.align;
|
|
604
|
-
// }
|
|
605
|
-
// else {
|
|
606
|
-
// decimal defaultne zarovnavame doprava
|
|
607
|
-
// if (xField.type === "decimal") {
|
|
608
|
-
// align = "right";
|
|
609
|
-
// }
|
|
610
|
-
// else
|
|
611
|
-
if (xField.type === "boolean") {
|
|
612
|
-
align = "center";
|
|
613
|
-
}
|
|
614
|
-
// }
|
|
615
|
-
return react_1.default.createElement(column_1.Column, { field: field, header: header, filter: thisLocal.props.filterDisplay !== "none", sortable: thisLocal.props.sortable, filterElement: filterElement, showFilterMenu: showFilterMenu, showClearButton: showClearButton, headerStyle: headerStyle, align: align, body: function (rowData) { return thisLocal.bodyTemplate(childColumnProps, readOnly, rowData, xEntity); } });
|
|
616
|
-
});
|
|
617
|
-
if (this.props.showAddRemoveButtons && this.props.removeButtonInRow) {
|
|
618
|
-
// je dolezite nastavit sirku header-a, lebo inac ma stlpec sirku 0 a nevidno ho
|
|
619
|
-
columnElemList.push(react_1.default.createElement(column_1.Column, { key: "removeButton", headerStyle: { width: '2rem' }, body: function (rowData) { return react_1.default.createElement(XButtonIconNarrow_1.XButtonIconNarrow, { icon: "pi pi-times", onClick: function () { return _this.removeRow(rowData); }, disabled: readOnly, addMargin: false }); } }));
|
|
620
|
-
}
|
|
621
|
-
var addRowLabel = undefined;
|
|
622
|
-
var removeRowLabel = undefined;
|
|
623
|
-
if (this.props.showAddRemoveButtons) {
|
|
624
|
-
// calling xLocaleOption does not work in standard default values initialisation place (public static defaultProps)
|
|
625
|
-
addRowLabel = (_a = this.props.addRowLabel) !== null && _a !== void 0 ? _a : (0, XLocale_1.xLocaleOption)('addRow');
|
|
626
|
-
removeRowLabel = (_b = this.props.removeRowLabel) !== null && _b !== void 0 ? _b : (0, XLocale_1.xLocaleOption)('removeRow');
|
|
627
|
-
}
|
|
628
|
-
return (react_1.default.createElement("div", null,
|
|
629
|
-
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
630
|
-
react_1.default.createElement("label", null, label)),
|
|
631
|
-
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
632
|
-
react_1.default.createElement(datatable_1.DataTable, { ref: function (el) { return _this.dt = el; }, value: valueList, dataKey: this.dataKey, paginator: paginator, rows: rows, totalRecords: valueList.length, filterDisplay: filterDisplay, filters: this.state.filters, onFilter: this.onFilter, sortMode: "multiple", removableSort: true, multiSortMeta: this.props.sortField !== undefined ? [{ field: this.props.sortField, order: 1 }] : undefined, selectionMode: "single", selection: this.state.selectedRow, onSelectionChange: this.onSelectionChange, className: "p-datatable-sm x-form-datatable", resizableColumns: true, columnResizeMode: "expand", tableStyle: tableStyle, scrollable: this.props.scrollable, scrollHeight: scrollHeight, style: style }, columnElemList)),
|
|
633
|
-
this.props.showAddRemoveButtons ?
|
|
634
|
-
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
635
|
-
react_1.default.createElement(XButton_1.XButton, { icon: this.props.addRowIcon, label: addRowLabel, onClick: this.onClickAddRow, disabled: readOnly }),
|
|
636
|
-
this.props.removeButtonInRow ? undefined : react_1.default.createElement(XButton_1.XButton, { icon: this.props.removeRowIcon, label: removeRowLabel, onClick: this.onClickRemoveRowBySelection, disabled: readOnly }))
|
|
637
|
-
: undefined));
|
|
638
|
-
};
|
|
639
|
-
XFormDataTable2.defaultProps = {
|
|
640
|
-
filterDisplay: "row",
|
|
641
|
-
sortable: true,
|
|
642
|
-
scrollable: true,
|
|
643
|
-
scrollWidth: '100%',
|
|
644
|
-
scrollHeight: '200vh',
|
|
645
|
-
// tym ze pouzivame 200vh (max-height pre body), tak realne scrollovanie sa zapne az pri velmi vela riadkoch
|
|
646
|
-
shrinkWidth: true,
|
|
647
|
-
showAddRemoveButtons: true,
|
|
648
|
-
removeButtonInRow: true,
|
|
649
|
-
addRowIcon: "pi pi-plus",
|
|
650
|
-
removeRowIcon: "pi pi-times"
|
|
651
|
-
};
|
|
652
|
-
return XFormDataTable2;
|
|
653
|
-
}(react_1.Component));
|
|
654
|
-
exports.XFormDataTable2 = XFormDataTable2;
|
|
655
|
-
var XFormColumn = function (props) {
|
|
656
|
-
// nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
|
|
657
|
-
return (null);
|
|
658
|
-
};
|
|
659
|
-
exports.XFormColumn = XFormColumn;
|
|
660
|
-
exports.XFormColumn.defaultProps = {
|
|
661
|
-
type: "inputSimple"
|
|
662
|
-
};
|
|
663
|
-
var XFormDropdownColumn = function (props) {
|
|
664
|
-
// nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
|
|
665
|
-
return (null);
|
|
666
|
-
};
|
|
667
|
-
exports.XFormDropdownColumn = XFormDropdownColumn;
|
|
668
|
-
exports.XFormDropdownColumn.defaultProps = {
|
|
669
|
-
type: "dropdown"
|
|
670
|
-
};
|
|
671
|
-
var XFormAutoCompleteColumn = function (props) {
|
|
672
|
-
// nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
|
|
673
|
-
return (null);
|
|
674
|
-
};
|
|
675
|
-
exports.XFormAutoCompleteColumn = XFormAutoCompleteColumn;
|
|
676
|
-
exports.XFormAutoCompleteColumn.defaultProps = {
|
|
677
|
-
type: "autoComplete"
|
|
678
|
-
};
|
|
679
|
-
var XFormSearchButtonColumn = function (props) {
|
|
680
|
-
// nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
|
|
681
|
-
return (null);
|
|
682
|
-
};
|
|
683
|
-
exports.XFormSearchButtonColumn = XFormSearchButtonColumn;
|
|
684
|
-
exports.XFormSearchButtonColumn.defaultProps = {
|
|
685
|
-
type: "searchButton"
|
|
686
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
+
extendStatics(d, b);
|
|
13
|
+
function __() { this.constructor = d; }
|
|
14
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
+
};
|
|
16
|
+
})();
|
|
17
|
+
var __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
29
|
+
if (k2 === undefined) k2 = k;
|
|
30
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
31
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
32
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
33
|
+
}
|
|
34
|
+
Object.defineProperty(o, k2, desc);
|
|
35
|
+
}) : (function(o, m, k, k2) {
|
|
36
|
+
if (k2 === undefined) k2 = k;
|
|
37
|
+
o[k2] = m[k];
|
|
38
|
+
}));
|
|
39
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
40
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
41
|
+
}) : function(o, v) {
|
|
42
|
+
o["default"] = v;
|
|
43
|
+
});
|
|
44
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
45
|
+
if (mod && mod.__esModule) return mod;
|
|
46
|
+
var result = {};
|
|
47
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
48
|
+
__setModuleDefault(result, mod);
|
|
49
|
+
return result;
|
|
50
|
+
};
|
|
51
|
+
var __values = (this && this.__values) || function(o) {
|
|
52
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
53
|
+
if (m) return m.call(o);
|
|
54
|
+
if (o && typeof o.length === "number") return {
|
|
55
|
+
next: function () {
|
|
56
|
+
if (o && i >= o.length) o = void 0;
|
|
57
|
+
return { value: o && o[i++], done: !o };
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
61
|
+
};
|
|
62
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
63
|
+
exports.XFormSearchButtonColumn = exports.XFormAutoCompleteColumn = exports.XFormDropdownColumn = exports.XFormColumn = exports.XFormDataTable2 = void 0;
|
|
64
|
+
var XFormBase_1 = require("./XFormBase");
|
|
65
|
+
var react_1 = __importStar(require("react"));
|
|
66
|
+
var XDropdownDT_1 = require("./XDropdownDT");
|
|
67
|
+
var datatable_1 = require("primereact/datatable");
|
|
68
|
+
var column_1 = require("primereact/column");
|
|
69
|
+
var XButton_1 = require("./XButton");
|
|
70
|
+
var XInputTextDT_1 = require("./XInputTextDT");
|
|
71
|
+
var XSearchButtonDT_1 = require("./XSearchButtonDT");
|
|
72
|
+
var XUtilsMetadata_1 = require("./XUtilsMetadata");
|
|
73
|
+
var XUtils_1 = require("./XUtils");
|
|
74
|
+
var XDropdownDTFilter_1 = require("./XDropdownDTFilter");
|
|
75
|
+
var XInputDecimalDT_1 = require("./XInputDecimalDT");
|
|
76
|
+
var XInputDateDT_1 = require("./XInputDateDT");
|
|
77
|
+
var XCheckboxDT_1 = require("./XCheckboxDT");
|
|
78
|
+
var tristatecheckbox_1 = require("primereact/tristatecheckbox");
|
|
79
|
+
var api_1 = require("primereact/api");
|
|
80
|
+
var XAutoCompleteDT_1 = require("./XAutoCompleteDT");
|
|
81
|
+
var XButtonIconNarrow_1 = require("./XButtonIconNarrow");
|
|
82
|
+
var XLocale_1 = require("./XLocale");
|
|
83
|
+
var XFormDataTable2 = /** @class */ (function (_super) {
|
|
84
|
+
__extends(XFormDataTable2, _super);
|
|
85
|
+
function XFormDataTable2(props) {
|
|
86
|
+
var e_1, _a;
|
|
87
|
+
var _this = _super.call(this, props) || this;
|
|
88
|
+
_this.props = props;
|
|
89
|
+
_this.dataKey = props.dataKey;
|
|
90
|
+
var xEntityForm = XUtilsMetadata_1.XUtilsMetadata.getXEntity(props.form.getEntity());
|
|
91
|
+
var xAssocToMany = XUtilsMetadata_1.XUtilsMetadata.getXAssocToMany(xEntityForm, props.assocField);
|
|
92
|
+
_this.entity = xAssocToMany.entityName;
|
|
93
|
+
if (_this.dataKey === undefined) {
|
|
94
|
+
_this.dataKey = XUtilsMetadata_1.XUtilsMetadata.getXEntity(_this.entity).idField;
|
|
95
|
+
}
|
|
96
|
+
_this.state = {
|
|
97
|
+
selectedRow: undefined,
|
|
98
|
+
dropdownOptionsMap: {},
|
|
99
|
+
filters: _this.createInitFilters()
|
|
100
|
+
};
|
|
101
|
+
_this.onClickAddRow = _this.onClickAddRow.bind(_this);
|
|
102
|
+
_this.onClickRemoveRowBySelection = _this.onClickRemoveRowBySelection.bind(_this);
|
|
103
|
+
_this.removeRow = _this.removeRow.bind(_this);
|
|
104
|
+
_this.onSelectionChange = _this.onSelectionChange.bind(_this);
|
|
105
|
+
_this.onDropdownOptionsMapChange = _this.onDropdownOptionsMapChange.bind(_this);
|
|
106
|
+
_this.onFilter = _this.onFilter.bind(_this);
|
|
107
|
+
_this.onCheckboxFilterChange = _this.onCheckboxFilterChange.bind(_this);
|
|
108
|
+
_this.getCheckboxFilterValue = _this.getCheckboxFilterValue.bind(_this);
|
|
109
|
+
_this.onDropdownFilterChange = _this.onDropdownFilterChange.bind(_this);
|
|
110
|
+
_this.getDropdownFilterValue = _this.getDropdownFilterValue.bind(_this);
|
|
111
|
+
_this.bodyTemplate = _this.bodyTemplate.bind(_this);
|
|
112
|
+
props.form.addXFormDataTable(_this);
|
|
113
|
+
try {
|
|
114
|
+
//props.form.addField(props.assocField + '.*FAKE*'); - vzdy mame aspon 1 field, nie je to potrebne
|
|
115
|
+
for (var _b = __values(props.children), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
116
|
+
var child = _c.value;
|
|
117
|
+
var childColumn = child; // nevedel som to krajsie...
|
|
118
|
+
var field = props.assocField + '.' + _this.getPathForColumn(childColumn.props);
|
|
119
|
+
props.form.addField(field);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
123
|
+
finally {
|
|
124
|
+
try {
|
|
125
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
126
|
+
}
|
|
127
|
+
finally { if (e_1) throw e_1.error; }
|
|
128
|
+
}
|
|
129
|
+
return _this;
|
|
130
|
+
}
|
|
131
|
+
XFormDataTable2.prototype.getPathForColumn = function (columnProps) {
|
|
132
|
+
if (columnProps.type === "inputSimple") {
|
|
133
|
+
var columnPropsInputSimple = columnProps;
|
|
134
|
+
return columnPropsInputSimple.field;
|
|
135
|
+
}
|
|
136
|
+
else if (columnProps.type === "dropdown") {
|
|
137
|
+
var columnPropsDropdown = columnProps;
|
|
138
|
+
return columnPropsDropdown.assocField + '.' + columnPropsDropdown.displayField;
|
|
139
|
+
}
|
|
140
|
+
else if (columnProps.type === "autoComplete") {
|
|
141
|
+
var columnPropsAutoComplete = columnProps;
|
|
142
|
+
return columnPropsAutoComplete.assocField + '.' + this.getDisplayFieldOrId(columnPropsAutoComplete);
|
|
143
|
+
}
|
|
144
|
+
else if (columnProps.type === "searchButton") {
|
|
145
|
+
var columnPropsSearchButton = columnProps;
|
|
146
|
+
return columnPropsSearchButton.assocField + '.' + columnPropsSearchButton.displayField;
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
throw "Unknown prop type = " + columnProps.type;
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
XFormDataTable2.prototype.getDisplayFieldOrId = function (columnPropsAutoComplete) {
|
|
153
|
+
// toto je hack - ak ratame displayField cez funkciu, tak nam potom v kode chyba (hociaky) atribut asociovaneho objektu
|
|
154
|
+
// aby sme nemuseli robit nejake velke prerabky a zmeny, tak podsunieme id-ckovy atribut
|
|
155
|
+
if (typeof columnPropsAutoComplete.displayField === 'string') {
|
|
156
|
+
return columnPropsAutoComplete.displayField; // vsetko ok
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// v displayField mame funkciu, zistime id-ckovy atribut
|
|
160
|
+
// TODO - problem - sortovanie/filtrovanie bude fungovat podla tohto id atributu
|
|
161
|
+
var xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.getEntity()), columnPropsAutoComplete.assocField);
|
|
162
|
+
return XUtilsMetadata_1.XUtilsMetadata.getXEntity(xAssoc.entityName).idField;
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
XFormDataTable2.getHeader = function (columnProps, xEntity, field, xField) {
|
|
166
|
+
var _a, _b, _c, _d;
|
|
167
|
+
// poznamky - parametre field a xField by sme mohli vyratavat na zaklade columnProps ale kedze ich uz mame, setrime performance a neduplikujeme vypocet
|
|
168
|
+
// nie je to tu uplne idealne nakodene, ale je to pomerne prehladne
|
|
169
|
+
var isNullable = true;
|
|
170
|
+
var readOnly = false;
|
|
171
|
+
if (columnProps.type === "inputSimple") {
|
|
172
|
+
var columnPropsInputSimple = columnProps;
|
|
173
|
+
isNullable = xField.isNullable;
|
|
174
|
+
readOnly = XUtils_1.XUtils.isReadOnly(columnPropsInputSimple.field, columnProps.readOnly);
|
|
175
|
+
}
|
|
176
|
+
else if (columnProps.type === "dropdown") {
|
|
177
|
+
var columnPropsDropdown = columnProps;
|
|
178
|
+
var xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(xEntity, columnPropsDropdown.assocField);
|
|
179
|
+
isNullable = xAssoc.isNullable;
|
|
180
|
+
readOnly = (_a = columnProps.readOnly) !== null && _a !== void 0 ? _a : false;
|
|
181
|
+
}
|
|
182
|
+
else if (columnProps.type === "autoComplete") {
|
|
183
|
+
var columnPropsAutoComplete = columnProps;
|
|
184
|
+
var xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(xEntity, columnPropsAutoComplete.assocField);
|
|
185
|
+
isNullable = xAssoc.isNullable;
|
|
186
|
+
readOnly = (_b = columnProps.readOnly) !== null && _b !== void 0 ? _b : false;
|
|
187
|
+
}
|
|
188
|
+
else if (columnProps.type === "searchButton") {
|
|
189
|
+
var columnPropsSearchButton = columnProps;
|
|
190
|
+
var xAssoc = XUtilsMetadata_1.XUtilsMetadata.getXAssocToOne(xEntity, columnPropsSearchButton.assocField);
|
|
191
|
+
isNullable = xAssoc.isNullable;
|
|
192
|
+
readOnly = (_c = columnProps.readOnly) !== null && _c !== void 0 ? _c : false;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
throw "Unknown prop type = " + columnProps.type;
|
|
196
|
+
}
|
|
197
|
+
var header = (_d = columnProps.header) !== null && _d !== void 0 ? _d : field;
|
|
198
|
+
if (!isNullable && !readOnly) {
|
|
199
|
+
header = XUtils_1.XUtils.markNotNull(header);
|
|
200
|
+
}
|
|
201
|
+
return header;
|
|
202
|
+
};
|
|
203
|
+
XFormDataTable2.prototype.getEntity = function () {
|
|
204
|
+
if (this.entity === undefined) {
|
|
205
|
+
throw "Unexpected error: this.entity is undefined";
|
|
206
|
+
}
|
|
207
|
+
return this.entity;
|
|
208
|
+
};
|
|
209
|
+
XFormDataTable2.prototype.createInitFilters = function () {
|
|
210
|
+
var e_2, _a;
|
|
211
|
+
var initFilters = {};
|
|
212
|
+
if (this.props.filterDisplay === "none") {
|
|
213
|
+
return initFilters;
|
|
214
|
+
}
|
|
215
|
+
var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.getEntity());
|
|
216
|
+
try {
|
|
217
|
+
// TODO - asi by bolo fajn si tieto field, xField niekam ulozit a iterovat ulozene hodnoty, pouziva sa to na viacerych miestach
|
|
218
|
+
for (var _b = __values(this.props.children), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
219
|
+
var child = _c.value;
|
|
220
|
+
var childColumn = child; // nevedel som to krajsie...
|
|
221
|
+
var field = this.getPathForColumn(childColumn.props);
|
|
222
|
+
var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, field);
|
|
223
|
+
// TODO column.props.dropdownInFilter - pre "menu" by bolo fajn mat zoznam "enumov"
|
|
224
|
+
var filterMatchMode = this.getFilterMatchMode(xField);
|
|
225
|
+
var filterItem = void 0;
|
|
226
|
+
if (this.props.filterDisplay === "menu") {
|
|
227
|
+
// DataTableOperatorFilterMetaData: operator + filter values
|
|
228
|
+
filterItem = {
|
|
229
|
+
operator: api_1.FilterOperator.OR,
|
|
230
|
+
constraints: [{ value: null, matchMode: filterMatchMode }]
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// props.filterDisplay === "row"
|
|
235
|
+
// DataTableFilterMetaData: filter value
|
|
236
|
+
filterItem = { value: null, matchMode: filterMatchMode };
|
|
237
|
+
}
|
|
238
|
+
initFilters[field] = filterItem;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
242
|
+
finally {
|
|
243
|
+
try {
|
|
244
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
245
|
+
}
|
|
246
|
+
finally { if (e_2) throw e_2.error; }
|
|
247
|
+
}
|
|
248
|
+
return initFilters;
|
|
249
|
+
};
|
|
250
|
+
XFormDataTable2.prototype.getFilterMatchMode = function (xField) {
|
|
251
|
+
var filterMatchMode;
|
|
252
|
+
if (xField.type === "string") {
|
|
253
|
+
filterMatchMode = api_1.FilterMatchMode.STARTS_WITH;
|
|
254
|
+
}
|
|
255
|
+
// zatial vsetky ostatne EQUALS
|
|
256
|
+
else if (xField.type === "decimal" || xField.type === "number" || xField.type === "date" || xField.type === "datetime" || xField.type === "boolean") {
|
|
257
|
+
filterMatchMode = api_1.FilterMatchMode.EQUALS;
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
throw "XField ".concat(xField.name, ": unknown xField.type = ").concat(xField.type);
|
|
261
|
+
}
|
|
262
|
+
return filterMatchMode;
|
|
263
|
+
};
|
|
264
|
+
XFormDataTable2.prototype.onSelectionChange = function (event) {
|
|
265
|
+
//console.log("zavolany onSelectionChange");
|
|
266
|
+
//console.log(event.value);
|
|
267
|
+
this.setState({ selectedRow: event.value });
|
|
268
|
+
};
|
|
269
|
+
XFormDataTable2.prototype.onDropdownOptionsMapChange = function (dropdownOptionsMap) {
|
|
270
|
+
this.setState({ dropdownOptionsMap: dropdownOptionsMap });
|
|
271
|
+
};
|
|
272
|
+
XFormDataTable2.prototype.onFilter = function (event) {
|
|
273
|
+
//console.log("zavolany onFilter - this.state.filters = " + JSON.stringify(this.state.filters));
|
|
274
|
+
//console.log("zavolany onFilter - event.filters = " + JSON.stringify(event.filters));
|
|
275
|
+
// tymto zavolanim sa zapise znak zapisany klavesnicou do inputu filtra (ak prikaz zakomentujeme, input filtra zostane prazdny)
|
|
276
|
+
this.setState({ filters: event.filters });
|
|
277
|
+
};
|
|
278
|
+
XFormDataTable2.prototype.onCheckboxFilterChange = function (field, checkboxValue) {
|
|
279
|
+
// TODO - treba vyklonovat?
|
|
280
|
+
var filtersCloned = __assign({}, this.state.filters);
|
|
281
|
+
if (checkboxValue !== null) {
|
|
282
|
+
filtersCloned[field] = { value: checkboxValue ? "true" : "false", matchMode: api_1.FilterMatchMode.EQUALS };
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
// pouzivatel zrusil hodnotu vo filtri (vybral prazdny stav v checkboxe), zrusime polozku z filtra
|
|
286
|
+
//delete filtersCloned[field];
|
|
287
|
+
filtersCloned[field] = { value: null, matchMode: api_1.FilterMatchMode.EQUALS };
|
|
288
|
+
}
|
|
289
|
+
this.setState({ filters: filtersCloned });
|
|
290
|
+
};
|
|
291
|
+
XFormDataTable2.prototype.getCheckboxFilterValue = function (field) {
|
|
292
|
+
var checkboxValue = null;
|
|
293
|
+
var filterValue = this.state.filters[field];
|
|
294
|
+
if (filterValue !== undefined && filterValue !== null) {
|
|
295
|
+
if (filterValue.value === 'true') {
|
|
296
|
+
checkboxValue = true;
|
|
297
|
+
}
|
|
298
|
+
else if (filterValue.value === 'false') {
|
|
299
|
+
checkboxValue = false;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return checkboxValue;
|
|
303
|
+
};
|
|
304
|
+
XFormDataTable2.prototype.onDropdownFilterChange = function (field, displayValue) {
|
|
305
|
+
// TODO - treba vyklonovat?
|
|
306
|
+
var filtersCloned = __assign({}, this.state.filters);
|
|
307
|
+
if (displayValue !== XUtils_1.XUtils.dropdownEmptyOptionValue) {
|
|
308
|
+
filtersCloned[field] = { value: displayValue, matchMode: api_1.FilterMatchMode.EQUALS };
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
// pouzivatel zrusil hodnotu vo filtri (vybral prazdny riadok), zrusime polozku z filtra
|
|
312
|
+
//delete filtersCloned[field];
|
|
313
|
+
filtersCloned[field] = { value: null, matchMode: api_1.FilterMatchMode.EQUALS };
|
|
314
|
+
}
|
|
315
|
+
this.setState({ filters: filtersCloned });
|
|
316
|
+
};
|
|
317
|
+
XFormDataTable2.prototype.getDropdownFilterValue = function (field) {
|
|
318
|
+
var dropdownValue = XUtils_1.XUtils.dropdownEmptyOptionValue;
|
|
319
|
+
var filterValue = this.state.filters[field];
|
|
320
|
+
if (filterValue !== undefined && filterValue !== null) {
|
|
321
|
+
if (filterValue.value !== null) {
|
|
322
|
+
dropdownValue = filterValue.value;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return dropdownValue;
|
|
326
|
+
};
|
|
327
|
+
/* pravdepodobne zombie
|
|
328
|
+
onBodyValueChange (field: string, rowData: any, newValue: any) {
|
|
329
|
+
//console.log("onBodyValueChange");
|
|
330
|
+
|
|
331
|
+
// zmenime hodnotu v modeli (odtial sa hodnota cita)
|
|
332
|
+
rowData[field] = newValue;
|
|
333
|
+
// kedze "rowData" je sucastou "props.form.state.object", tak nam staci zavolat setState({object: object}), aby sa zmena prejavila
|
|
334
|
+
this.props.form.onObjectDataChange();
|
|
335
|
+
}
|
|
336
|
+
*/
|
|
337
|
+
// body={(rowData: any) => bodyTemplate(childColumn.props.field, rowData)}
|
|
338
|
+
XFormDataTable2.prototype.bodyTemplate = function (columnProps, tableReadOnly, rowData, xEntity) {
|
|
339
|
+
var _a, _b;
|
|
340
|
+
var body;
|
|
341
|
+
if (columnProps.type === "inputSimple") {
|
|
342
|
+
var columnPropsInputSimple = columnProps;
|
|
343
|
+
// tableReadOnly has higher prio then property readOnly
|
|
344
|
+
var readOnly = tableReadOnly || ((_a = columnPropsInputSimple.readOnly) !== null && _a !== void 0 ? _a : false);
|
|
345
|
+
var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, columnPropsInputSimple.field);
|
|
346
|
+
if (xField.type === "decimal" || xField.type === "number") {
|
|
347
|
+
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 });
|
|
348
|
+
}
|
|
349
|
+
else if (xField.type === "date" || xField.type === "datetime") {
|
|
350
|
+
body = react_1.default.createElement(XInputDateDT_1.XInputDateDT, { form: this.props.form, xField: xField, field: columnPropsInputSimple.field, rowData: rowData, readOnly: readOnly });
|
|
351
|
+
}
|
|
352
|
+
else if (xField.type === "boolean") {
|
|
353
|
+
body = react_1.default.createElement(XCheckboxDT_1.XCheckboxDT, { form: this.props.form, xField: xField, field: columnPropsInputSimple.field, rowData: rowData, readOnly: readOnly });
|
|
354
|
+
}
|
|
355
|
+
else {
|
|
356
|
+
// xField.type === "string", pripadne ine jednoduche typy
|
|
357
|
+
body = react_1.default.createElement(XInputTextDT_1.XInputTextDT, { form: this.props.form, entity: this.getEntity(), field: columnPropsInputSimple.field, rowData: rowData, readOnly: readOnly });
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
else if (columnProps.type === "dropdown") {
|
|
361
|
+
var columnPropsDropdown = columnProps;
|
|
362
|
+
body = react_1.default.createElement(XDropdownDT_1.XDropdownDT, { form: this.props.form, entity: this.getEntity(), assocField: columnPropsDropdown.assocField, displayField: columnPropsDropdown.displayField, dropdownOptionsMap: this.state.dropdownOptionsMap, onDropdownOptionsMapChange: this.onDropdownOptionsMapChange, rowData: rowData });
|
|
363
|
+
}
|
|
364
|
+
else if (columnProps.type === "autoComplete") {
|
|
365
|
+
var columnPropsAutoComplete = columnProps;
|
|
366
|
+
// tableReadOnly has higher prio then property readOnly
|
|
367
|
+
var readOnly = tableReadOnly || ((_b = columnPropsAutoComplete.readOnly) !== null && _b !== void 0 ? _b : false);
|
|
368
|
+
body = react_1.default.createElement(XAutoCompleteDT_1.XAutoCompleteDT, { form: this.props.form, entity: this.getEntity(), assocField: columnPropsAutoComplete.assocField, displayField: columnPropsAutoComplete.displayField, searchTable: columnPropsAutoComplete.searchTable, assocForm: columnPropsAutoComplete.assocForm, filter: columnPropsAutoComplete.filter, rowData: rowData, readOnly: readOnly });
|
|
369
|
+
}
|
|
370
|
+
else if (columnProps.type === "searchButton") {
|
|
371
|
+
var columnPropsSearchButton = columnProps;
|
|
372
|
+
body = react_1.default.createElement(XSearchButtonDT_1.XSearchButtonDT, { form: this.props.form, entity: this.getEntity(), assocField: columnPropsSearchButton.assocField, displayField: columnPropsSearchButton.displayField, searchTable: columnPropsSearchButton.searchTable, rowData: rowData, readOnly: columnPropsSearchButton.readOnly });
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
throw "Unknown prop type = " + columnProps.type;
|
|
376
|
+
}
|
|
377
|
+
return body;
|
|
378
|
+
};
|
|
379
|
+
XFormDataTable2.prototype.onClickAddRow = function () {
|
|
380
|
+
if (this.props.onClickAddRow) {
|
|
381
|
+
// custom add row
|
|
382
|
+
this.props.onClickAddRow();
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
// default add row
|
|
386
|
+
this.props.form.onTableAddRow(this.props.assocField, {}, this.dataKey, this.state.selectedRow);
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
;
|
|
390
|
+
XFormDataTable2.prototype.onClickRemoveRowBySelection = function () {
|
|
391
|
+
if (this.state.selectedRow !== undefined) {
|
|
392
|
+
this.removeRow(this.state.selectedRow);
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
alert("Please select the row.");
|
|
396
|
+
}
|
|
397
|
+
};
|
|
398
|
+
;
|
|
399
|
+
XFormDataTable2.prototype.removeRow = function (row) {
|
|
400
|
+
if (this.props.onClickRemoveRow) {
|
|
401
|
+
// custom remove
|
|
402
|
+
this.props.onClickRemoveRow(row);
|
|
403
|
+
}
|
|
404
|
+
else {
|
|
405
|
+
// default remove
|
|
406
|
+
this.props.form.onTableRemoveRow(this.props.assocField, row);
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
XFormDataTable2.prototype.validate = function () {
|
|
410
|
+
var e_3, _a, e_4, _b;
|
|
411
|
+
// zvalidujeme vsetky rows a pripadne chyby zapiseme do specialneho fieldu __x_rowTechData
|
|
412
|
+
var object = this.props.form.getXObject();
|
|
413
|
+
var rowList = object[this.props.assocField];
|
|
414
|
+
try {
|
|
415
|
+
for (var rowList_1 = __values(rowList), rowList_1_1 = rowList_1.next(); !rowList_1_1.done; rowList_1_1 = rowList_1.next()) {
|
|
416
|
+
var row = rowList_1_1.value;
|
|
417
|
+
var xRowTechData = XFormBase_1.XFormBase.getXRowTechData(row);
|
|
418
|
+
var xErrorMap = {};
|
|
419
|
+
try {
|
|
420
|
+
for (var _c = (e_4 = void 0, __values(xRowTechData.xFormComponentDTList)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
421
|
+
var xFormComponentDT = _d.value;
|
|
422
|
+
var errorItem = xFormComponentDT.validate();
|
|
423
|
+
if (errorItem) {
|
|
424
|
+
//console.log("Mame field = " + errorItem.field);
|
|
425
|
+
xErrorMap[errorItem.field] = errorItem.xError;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
430
|
+
finally {
|
|
431
|
+
try {
|
|
432
|
+
if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
|
|
433
|
+
}
|
|
434
|
+
finally { if (e_4) throw e_4.error; }
|
|
435
|
+
}
|
|
436
|
+
xRowTechData.errorMap = xErrorMap;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
440
|
+
finally {
|
|
441
|
+
try {
|
|
442
|
+
if (rowList_1_1 && !rowList_1_1.done && (_a = rowList_1.return)) _a.call(rowList_1);
|
|
443
|
+
}
|
|
444
|
+
finally { if (e_3) throw e_3.error; }
|
|
445
|
+
}
|
|
446
|
+
};
|
|
447
|
+
XFormDataTable2.prototype.getErrorMessages = function () {
|
|
448
|
+
var e_5, _a;
|
|
449
|
+
var msg = "";
|
|
450
|
+
var object = this.props.form.getXObject();
|
|
451
|
+
var rowList = object[this.props.assocField];
|
|
452
|
+
try {
|
|
453
|
+
for (var rowList_2 = __values(rowList), rowList_2_1 = rowList_2.next(); !rowList_2_1.done; rowList_2_1 = rowList_2.next()) {
|
|
454
|
+
var row = rowList_2_1.value;
|
|
455
|
+
var xRowTechData = XFormBase_1.XFormBase.getXRowTechData(row);
|
|
456
|
+
msg += XUtils_1.XUtils.getErrorMessages(xRowTechData.errorMap);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
460
|
+
finally {
|
|
461
|
+
try {
|
|
462
|
+
if (rowList_2_1 && !rowList_2_1.done && (_a = rowList_2.return)) _a.call(rowList_2);
|
|
463
|
+
}
|
|
464
|
+
finally { if (e_5) throw e_5.error; }
|
|
465
|
+
}
|
|
466
|
+
return msg;
|
|
467
|
+
};
|
|
468
|
+
// TODO - velmi podobna funkcia ako XFormComponent.isReadOnly() - zjednotit ak sa da
|
|
469
|
+
XFormDataTable2.prototype.isReadOnly = function () {
|
|
470
|
+
var readOnly;
|
|
471
|
+
// the purpose of formReadOnly is to put the whole form to read only mode,
|
|
472
|
+
// that's why the formReadOnly has higher prio then property this.props.readOnly
|
|
473
|
+
if (this.props.form.formReadOnlyBase(this.props.assocField)) {
|
|
474
|
+
readOnly = true;
|
|
475
|
+
}
|
|
476
|
+
else if (typeof this.props.readOnly === 'boolean') {
|
|
477
|
+
readOnly = this.props.readOnly;
|
|
478
|
+
}
|
|
479
|
+
// TODO
|
|
480
|
+
// else if (typeof this.props.readOnly === 'function') {
|
|
481
|
+
// // TODO - tazko povedat ci niekedy bude object === null (asi ano vid metodu getFilterBase)
|
|
482
|
+
// const object: XObject = this.props.form.state.object;
|
|
483
|
+
// if (object) {
|
|
484
|
+
// readOnly = this.props.readOnly(this.props.form.getXObject());
|
|
485
|
+
// }
|
|
486
|
+
// else {
|
|
487
|
+
// readOnly = true;
|
|
488
|
+
// }
|
|
489
|
+
// }
|
|
490
|
+
else {
|
|
491
|
+
// readOnly is undefined
|
|
492
|
+
readOnly = false;
|
|
493
|
+
}
|
|
494
|
+
return readOnly;
|
|
495
|
+
};
|
|
496
|
+
XFormDataTable2.prototype.render = function () {
|
|
497
|
+
var _this = this;
|
|
498
|
+
var _a, _b;
|
|
499
|
+
var paginator = this.props.paginator !== undefined ? this.props.paginator : false;
|
|
500
|
+
var rows = undefined;
|
|
501
|
+
if (paginator) {
|
|
502
|
+
if (this.props.rows !== undefined) {
|
|
503
|
+
rows = this.props.rows;
|
|
504
|
+
}
|
|
505
|
+
else {
|
|
506
|
+
rows = 5; // default
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
var filterDisplay = this.props.filterDisplay !== "none" ? this.props.filterDisplay : undefined;
|
|
510
|
+
var label = this.props.label !== undefined ? this.props.label : this.props.assocField;
|
|
511
|
+
var readOnly = this.isReadOnly();
|
|
512
|
+
// v bloku function (child) nejde pouzit priamo this, thisLocal uz ide pouzit
|
|
513
|
+
var thisLocal = this;
|
|
514
|
+
var object = this.props.form.state.object;
|
|
515
|
+
var valueList = object !== null ? object[this.props.assocField] : [];
|
|
516
|
+
var xEntity = XUtilsMetadata_1.XUtilsMetadata.getXEntity(this.getEntity());
|
|
517
|
+
var scrollWidth = undefined; // vypnute horizontalne scrollovanie
|
|
518
|
+
var scrollHeight = undefined; // vypnute vertikalne scrollovanie
|
|
519
|
+
if (this.props.scrollable) {
|
|
520
|
+
if (this.props.scrollWidth !== "none") {
|
|
521
|
+
scrollWidth = this.props.scrollWidth;
|
|
522
|
+
}
|
|
523
|
+
if (this.props.scrollHeight !== "none") {
|
|
524
|
+
scrollHeight = this.props.scrollHeight;
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
var style = {};
|
|
528
|
+
if (scrollWidth !== undefined) {
|
|
529
|
+
style.width = scrollWidth;
|
|
530
|
+
}
|
|
531
|
+
if (this.props.shrinkWidth) {
|
|
532
|
+
style.maxWidth = 'min-content'; // ak nic nedame (nechame auto), tak (v pripade ak nebudeme mat horizontalny scrollbar) natiahne tabulku na celu sirku stranky, co nechceme
|
|
533
|
+
}
|
|
534
|
+
// pri prechode z Primereact 6.x na 9.x sa tableLayout zmenil z fixed na auto a nefungovalo nastavenie sirok stlpcov - docasne teda takto
|
|
535
|
+
var tableStyle = { tableLayout: 'fixed' };
|
|
536
|
+
if (this.props.width !== undefined) {
|
|
537
|
+
var width = this.props.width;
|
|
538
|
+
if (!isNaN(Number(width))) { // if width is number
|
|
539
|
+
width = width + 'rem';
|
|
540
|
+
}
|
|
541
|
+
tableStyle = __assign(__assign({}, tableStyle), { width: width });
|
|
542
|
+
}
|
|
543
|
+
// pre lepsiu citatelnost vytvarame stlpce uz tu
|
|
544
|
+
var columnElemList = react_1.default.Children.map(this.props.children, function (child) {
|
|
545
|
+
// ak chceme zmenit child element, tak treba bud vytvorit novy alebo vyklonovat
|
|
546
|
+
// priklad je na https://soshace.com/building-react-components-using-children-props-and-context-api/
|
|
547
|
+
// (vzdy musime robit manipulacie so stlpcom, lebo potrebujeme pridat filter={true} sortable={true}
|
|
548
|
+
var childColumn = child; // nevedel som to krajsie...
|
|
549
|
+
var childColumnProps = childColumn.props;
|
|
550
|
+
// je dolezite, aby field obsahoval cely path az po zobrazovany atribut, lebo podla neho sa vykonava filtrovanie a sortovanie
|
|
551
|
+
// (aj ked, da sa to prebit na stlpcoch (na elemente Column), su na to atributy)
|
|
552
|
+
var field = thisLocal.getPathForColumn(childColumnProps);
|
|
553
|
+
// TODO - toto by sa mohlo vytiahnut vyssie, aj v bodyTemplate sa vola metoda XUtilsMetadata.getXFieldByPath
|
|
554
|
+
var xField = XUtilsMetadata_1.XUtilsMetadata.getXFieldByPath(xEntity, field);
|
|
555
|
+
// *********** header ***********
|
|
556
|
+
var header = XFormDataTable2.getHeader(childColumnProps, xEntity, field, xField);
|
|
557
|
+
// *********** filterElement ***********
|
|
558
|
+
var filterElement;
|
|
559
|
+
if (thisLocal.props.filterDisplay !== "none") {
|
|
560
|
+
if (xField.type === "boolean") {
|
|
561
|
+
var checkboxValue = thisLocal.getCheckboxFilterValue(field);
|
|
562
|
+
filterElement = react_1.default.createElement(tristatecheckbox_1.TriStateCheckbox, { value: checkboxValue, onChange: function (e) { return thisLocal.onCheckboxFilterChange(field, e.value); } });
|
|
563
|
+
}
|
|
564
|
+
else if (childColumnProps.dropdownInFilter) {
|
|
565
|
+
var dropdownValue = thisLocal.getDropdownFilterValue(field);
|
|
566
|
+
filterElement = react_1.default.createElement(XDropdownDTFilter_1.XDropdownDTFilter, { entity: thisLocal.getEntity(), path: field, value: dropdownValue, onValueChange: thisLocal.onDropdownFilterChange });
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
// *********** showFilterMenu ***********
|
|
570
|
+
var showFilterMenu = false;
|
|
571
|
+
if (thisLocal.props.filterDisplay !== "none") {
|
|
572
|
+
if (childColumnProps.showFilterMenu !== undefined) {
|
|
573
|
+
showFilterMenu = childColumnProps.showFilterMenu;
|
|
574
|
+
}
|
|
575
|
+
else {
|
|
576
|
+
showFilterMenu = true; // default
|
|
577
|
+
if (thisLocal.props.filterDisplay === "row") {
|
|
578
|
+
if (xField.type === "boolean" || childColumnProps.dropdownInFilter) {
|
|
579
|
+
showFilterMenu = false;
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
// *********** showClearButton ***********
|
|
585
|
+
// pre filterDisplay = "row" nechceme clear button, chceme setrit miesto
|
|
586
|
+
var showClearButton = thisLocal.props.filterDisplay === "menu";
|
|
587
|
+
// *********** width/headerStyle ***********
|
|
588
|
+
var width = XUtils_1.XUtils.processPropWidth(childColumn.props.width);
|
|
589
|
+
if (width === undefined || width === "default") {
|
|
590
|
+
var filterMenuInFilterRow = thisLocal.props.filterDisplay === "row" && showFilterMenu;
|
|
591
|
+
var sortableButtonInHeader = thisLocal.props.sortable;
|
|
592
|
+
var filterButtonInHeader = thisLocal.props.filterDisplay === "menu";
|
|
593
|
+
width = XUtilsMetadata_1.XUtilsMetadata.computeColumnWidth(xField, undefined, filterMenuInFilterRow, childColumnProps.type, header, sortableButtonInHeader, filterButtonInHeader);
|
|
594
|
+
}
|
|
595
|
+
var headerStyle = {};
|
|
596
|
+
if (width !== undefined) {
|
|
597
|
+
headerStyle = { width: width };
|
|
598
|
+
}
|
|
599
|
+
// *********** align ***********
|
|
600
|
+
var align = undefined; // default undefined (left)
|
|
601
|
+
// do buducna
|
|
602
|
+
// if (childColumnProps.align !== undefined) {
|
|
603
|
+
// align = childColumnProps.align;
|
|
604
|
+
// }
|
|
605
|
+
// else {
|
|
606
|
+
// decimal defaultne zarovnavame doprava
|
|
607
|
+
// if (xField.type === "decimal") {
|
|
608
|
+
// align = "right";
|
|
609
|
+
// }
|
|
610
|
+
// else
|
|
611
|
+
if (xField.type === "boolean") {
|
|
612
|
+
align = "center";
|
|
613
|
+
}
|
|
614
|
+
// }
|
|
615
|
+
return react_1.default.createElement(column_1.Column, { field: field, header: header, filter: thisLocal.props.filterDisplay !== "none", sortable: thisLocal.props.sortable, filterElement: filterElement, showFilterMenu: showFilterMenu, showClearButton: showClearButton, headerStyle: headerStyle, align: align, body: function (rowData) { return thisLocal.bodyTemplate(childColumnProps, readOnly, rowData, xEntity); } });
|
|
616
|
+
});
|
|
617
|
+
if (this.props.showAddRemoveButtons && this.props.removeButtonInRow) {
|
|
618
|
+
// je dolezite nastavit sirku header-a, lebo inac ma stlpec sirku 0 a nevidno ho
|
|
619
|
+
columnElemList.push(react_1.default.createElement(column_1.Column, { key: "removeButton", headerStyle: { width: '2rem' }, body: function (rowData) { return react_1.default.createElement(XButtonIconNarrow_1.XButtonIconNarrow, { icon: "pi pi-times", onClick: function () { return _this.removeRow(rowData); }, disabled: readOnly, addMargin: false }); } }));
|
|
620
|
+
}
|
|
621
|
+
var addRowLabel = undefined;
|
|
622
|
+
var removeRowLabel = undefined;
|
|
623
|
+
if (this.props.showAddRemoveButtons) {
|
|
624
|
+
// calling xLocaleOption does not work in standard default values initialisation place (public static defaultProps)
|
|
625
|
+
addRowLabel = (_a = this.props.addRowLabel) !== null && _a !== void 0 ? _a : (0, XLocale_1.xLocaleOption)('addRow');
|
|
626
|
+
removeRowLabel = (_b = this.props.removeRowLabel) !== null && _b !== void 0 ? _b : (0, XLocale_1.xLocaleOption)('removeRow');
|
|
627
|
+
}
|
|
628
|
+
return (react_1.default.createElement("div", null,
|
|
629
|
+
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
630
|
+
react_1.default.createElement("label", null, label)),
|
|
631
|
+
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
632
|
+
react_1.default.createElement(datatable_1.DataTable, { ref: function (el) { return _this.dt = el; }, value: valueList, dataKey: this.dataKey, paginator: paginator, rows: rows, totalRecords: valueList.length, filterDisplay: filterDisplay, filters: this.state.filters, onFilter: this.onFilter, sortMode: "multiple", removableSort: true, multiSortMeta: this.props.sortField !== undefined ? [{ field: this.props.sortField, order: 1 }] : undefined, selectionMode: "single", selection: this.state.selectedRow, onSelectionChange: this.onSelectionChange, className: "p-datatable-sm x-form-datatable", resizableColumns: true, columnResizeMode: "expand", tableStyle: tableStyle, scrollable: this.props.scrollable, scrollHeight: scrollHeight, style: style }, columnElemList)),
|
|
633
|
+
this.props.showAddRemoveButtons ?
|
|
634
|
+
react_1.default.createElement("div", { className: "flex justify-content-center" },
|
|
635
|
+
react_1.default.createElement(XButton_1.XButton, { icon: this.props.addRowIcon, label: addRowLabel, onClick: this.onClickAddRow, disabled: readOnly }),
|
|
636
|
+
this.props.removeButtonInRow ? undefined : react_1.default.createElement(XButton_1.XButton, { icon: this.props.removeRowIcon, label: removeRowLabel, onClick: this.onClickRemoveRowBySelection, disabled: readOnly }))
|
|
637
|
+
: undefined));
|
|
638
|
+
};
|
|
639
|
+
XFormDataTable2.defaultProps = {
|
|
640
|
+
filterDisplay: "row",
|
|
641
|
+
sortable: true,
|
|
642
|
+
scrollable: true,
|
|
643
|
+
scrollWidth: '100%',
|
|
644
|
+
scrollHeight: '200vh',
|
|
645
|
+
// tym ze pouzivame 200vh (max-height pre body), tak realne scrollovanie sa zapne az pri velmi vela riadkoch
|
|
646
|
+
shrinkWidth: true,
|
|
647
|
+
showAddRemoveButtons: true,
|
|
648
|
+
removeButtonInRow: true,
|
|
649
|
+
addRowIcon: "pi pi-plus",
|
|
650
|
+
removeRowIcon: "pi pi-times"
|
|
651
|
+
};
|
|
652
|
+
return XFormDataTable2;
|
|
653
|
+
}(react_1.Component));
|
|
654
|
+
exports.XFormDataTable2 = XFormDataTable2;
|
|
655
|
+
var XFormColumn = function (props) {
|
|
656
|
+
// nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
|
|
657
|
+
return (null);
|
|
658
|
+
};
|
|
659
|
+
exports.XFormColumn = XFormColumn;
|
|
660
|
+
exports.XFormColumn.defaultProps = {
|
|
661
|
+
type: "inputSimple"
|
|
662
|
+
};
|
|
663
|
+
var XFormDropdownColumn = function (props) {
|
|
664
|
+
// nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
|
|
665
|
+
return (null);
|
|
666
|
+
};
|
|
667
|
+
exports.XFormDropdownColumn = XFormDropdownColumn;
|
|
668
|
+
exports.XFormDropdownColumn.defaultProps = {
|
|
669
|
+
type: "dropdown"
|
|
670
|
+
};
|
|
671
|
+
var XFormAutoCompleteColumn = function (props) {
|
|
672
|
+
// nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
|
|
673
|
+
return (null);
|
|
674
|
+
};
|
|
675
|
+
exports.XFormAutoCompleteColumn = XFormAutoCompleteColumn;
|
|
676
|
+
exports.XFormAutoCompleteColumn.defaultProps = {
|
|
677
|
+
type: "autoComplete"
|
|
678
|
+
};
|
|
679
|
+
var XFormSearchButtonColumn = function (props) {
|
|
680
|
+
// nevadi ze tu nic nevraciame, field a header vieme precitat a zvysok by sme aj tak zahodili lebo vytvarame novy element
|
|
681
|
+
return (null);
|
|
682
|
+
};
|
|
683
|
+
exports.XFormSearchButtonColumn = XFormSearchButtonColumn;
|
|
684
|
+
exports.XFormSearchButtonColumn.defaultProps = {
|
|
685
|
+
type: "searchButton"
|
|
686
|
+
};
|