@easydata/crud 1.3.6-rc03 → 1.4.0-rc02

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 (33) hide show
  1. package/dist/browser/easydata.css +11 -3
  2. package/dist/browser/easydata.css.map +1 -1
  3. package/dist/browser/easydata.js +861 -602
  4. package/dist/browser/easydata.js.map +1 -1
  5. package/dist/browser/easydata.min.css +1 -1
  6. package/dist/browser/easydata.min.js +1 -1
  7. package/dist/browser/easydata.min.js.LICENSE.txt +0 -2
  8. package/dist/browser/easydata.min.js.map +1 -1
  9. package/dist/bundles/easydata.crud.js +571 -324
  10. package/dist/bundles/easydata.crud.js.map +1 -1
  11. package/dist/bundles/easydata.crud.min.js +1 -1
  12. package/dist/bundles/easydata.crud.min.js.LICENSE.txt +0 -2
  13. package/dist/bundles/easydata.crud.min.js.map +1 -1
  14. package/dist/lib/filter/text_data_filter.d.ts +2 -2
  15. package/dist/lib/filter/text_data_filter.js +18 -19
  16. package/dist/lib/filter/text_data_filter.js.map +1 -1
  17. package/dist/lib/form/entity_edit_form.js.map +1 -1
  18. package/dist/lib/form/entity_form_builder.js +47 -28
  19. package/dist/lib/form/entity_form_builder.js.map +1 -1
  20. package/dist/lib/i18n/text_resources.js +2 -1
  21. package/dist/lib/i18n/text_resources.js.map +1 -1
  22. package/dist/lib/main/data_context.d.ts +12 -8
  23. package/dist/lib/main/data_context.js +37 -27
  24. package/dist/lib/main/data_context.js.map +1 -1
  25. package/dist/lib/main/easy_data_server_loader.js +2 -2
  26. package/dist/lib/main/easy_data_server_loader.js.map +1 -1
  27. package/dist/lib/views/easy_data_view_dispatcher.js +1 -0
  28. package/dist/lib/views/easy_data_view_dispatcher.js.map +1 -1
  29. package/dist/lib/views/entity_data_view.js +17 -15
  30. package/dist/lib/views/entity_data_view.js.map +1 -1
  31. package/dist/lib/views/options.d.ts +2 -0
  32. package/dist/lib/widgets/text_filter_widget.js.map +1 -1
  33. package/package.json +4 -4
@@ -82,7 +82,7 @@ window["easydata"] =
82
82
  /******/
83
83
  /******/
84
84
  /******/ // Load entry module and return exports
85
- /******/ return __webpack_require__(__webpack_require__.s = 33);
85
+ /******/ return __webpack_require__(__webpack_require__.s = 34);
86
86
  /******/ })
87
87
  /************************************************************************/
88
88
  /******/ ([
@@ -119,6 +119,7 @@ __webpack_require__.d(__webpack_exports__, "reverseString", function() { return
119
119
  __webpack_require__.d(__webpack_exports__, "strEndsWith", function() { return /* reexport */ string_utils["d" /* strEndsWith */]; });
120
120
  __webpack_require__.d(__webpack_exports__, "combinePath", function() { return /* reexport */ string_utils["a" /* combinePath */]; });
121
121
  __webpack_require__.d(__webpack_exports__, "utils", function() { return /* reexport */ utils["a" /* utils */]; });
122
+ __webpack_require__.d(__webpack_exports__, "liquid", function() { return /* reexport */ liquid; });
122
123
 
123
124
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/types/data_type.js
124
125
  var data_type = __webpack_require__(2);
@@ -148,13 +149,13 @@ var EditorTag = {
148
149
  };
149
150
  //# sourceMappingURL=editor_tag.js.map
150
151
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/http/http_method.js
151
- var http_method = __webpack_require__(11);
152
+ var http_method = __webpack_require__(10);
152
153
 
153
154
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/http/http_request.js
154
- var http_request = __webpack_require__(15);
155
+ var http_request = __webpack_require__(16);
155
156
 
156
157
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/http/http_client.js
157
- var http_client = __webpack_require__(23);
158
+ var http_client = __webpack_require__(24);
158
159
 
159
160
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/i18n/i18n.js
160
161
  var i18n = __webpack_require__(5);
@@ -238,6 +239,12 @@ var MetaEntity = /** @class */ (function () {
238
239
  };
239
240
  internalProcessEntity(this);
240
241
  };
242
+ MetaEntity.prototype.getFirstPrimaryAttr = function () {
243
+ return this.getPrimaryAttrs()[0];
244
+ };
245
+ MetaEntity.prototype.getPrimaryAttrs = function () {
246
+ return this.attributes.filter(function (attr) { return attr.isPrimaryKey; });
247
+ };
241
248
  return MetaEntity;
242
249
  }());
243
250
 
@@ -856,7 +863,7 @@ var meta_data_MetaData = /** @class */ (function () {
856
863
  }());
857
864
 
858
865
  //# sourceMappingURL=meta_data.js.map
859
- // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/aggr_calculator.js
866
+ // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/aggr_settings.js
860
867
  var __assign = (undefined && undefined.__assign) || function () {
861
868
  __assign = Object.assign || function(t) {
862
869
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -879,16 +886,32 @@ var AggregationSettings = /** @class */ (function () {
879
886
  this.groups = [];
880
887
  this.useGrandTotals = false;
881
888
  this.useRecordCount = false;
882
- this.caseSensitiveGroups = false;
889
+ this._caseSensitiveGroups = false;
883
890
  this.COUNT_FIELD_NAME = 'GRPRECCNT';
884
891
  }
892
+ Object.defineProperty(AggregationSettings.prototype, "caseSensitiveGroups", {
893
+ get: function () {
894
+ return this._caseSensitiveGroups;
895
+ },
896
+ set: function (value) {
897
+ this._caseSensitiveGroups = value;
898
+ this.updateCompareProc();
899
+ },
900
+ enumerable: true,
901
+ configurable: true
902
+ });
903
+ AggregationSettings.prototype.updateCompareProc = function () {
904
+ this.compareValues = this._caseSensitiveGroups
905
+ ? this.strictCompare
906
+ : this.caseInsensitiveCompare;
907
+ };
885
908
  AggregationSettings.prototype.addGroup = function (settings) {
886
909
  var cols = settings.columns || this.colStore.getColumnIds(settings.from, settings.to);
887
910
  if (!this.colStore.validateColumns(cols))
888
911
  throw "Invalid columns: " + cols;
889
912
  if (this.hasColumnsInUse(cols))
890
913
  throw "Can't add same columns to different groups/aggregates";
891
- this.groups.push(__assign({ columns: cols, aggregates: null }, settings));
914
+ this.groups.push(__assign({ columns: cols }, settings));
892
915
  return this;
893
916
  };
894
917
  AggregationSettings.prototype.addAggregateColumn = function (colIndexOrId, funcId) {
@@ -913,7 +936,7 @@ var AggregationSettings = /** @class */ (function () {
913
936
  var cols = [];
914
937
  var mappedGrops = this.groups.map(function (grp) {
915
938
  cols = cols.concat(grp.columns);
916
- return __assign({}, grp, { columns: Array.from(cols), aggregates: Array.from(_this.aggregates) });
939
+ return __assign(__assign({}, grp), { columns: Array.from(cols), aggregates: Array.from(_this.aggregates) });
917
940
  });
918
941
  return mappedGrops;
919
942
  };
@@ -1005,18 +1028,43 @@ var AggregationSettings = /** @class */ (function () {
1005
1028
  }
1006
1029
  }
1007
1030
  };
1031
+ AggregationSettings.prototype.buildGroupKey = function (group, row) {
1032
+ var caseInsensitive = !this.caseSensitiveGroups;
1033
+ var result = {};
1034
+ if (group) {
1035
+ for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
1036
+ var colId = _a[_i];
1037
+ var keyVal = row.getValue(colId);
1038
+ if (caseInsensitive && typeof (keyVal) === 'string') {
1039
+ keyVal = keyVal.toLowerCase();
1040
+ }
1041
+ result[colId] = keyVal;
1042
+ }
1043
+ }
1044
+ return result;
1045
+ };
1046
+ //returns true if value1 == value2
1047
+ AggregationSettings.prototype.strictCompare = function (value1, value2) {
1048
+ return value1 === value2;
1049
+ };
1050
+ //makes a case insensative comparision of two values and return true if there are equal
1051
+ AggregationSettings.prototype.caseInsensitiveCompare = function (value1, value2) {
1052
+ var val1 = (typeof value1 === 'string') ? value1.toLowerCase() : value1;
1053
+ var val2 = (typeof value2 === 'string') ? value2.toLowerCase() : value2;
1054
+ return val1 === val2;
1055
+ };
1008
1056
  return AggregationSettings;
1009
1057
  }());
1010
1058
 
1011
- //# sourceMappingURL=aggr_calculator.js.map
1059
+ //# sourceMappingURL=aggr_settings.js.map
1012
1060
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/data_column.js
1013
- var data_column = __webpack_require__(16);
1061
+ var data_column = __webpack_require__(17);
1014
1062
 
1015
1063
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/data_row.js
1016
- var data_row = __webpack_require__(14);
1064
+ var data_row = __webpack_require__(15);
1017
1065
 
1018
1066
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/easy_data_table.js
1019
- var easy_data_table = __webpack_require__(27);
1067
+ var easy_data_table = __webpack_require__(28);
1020
1068
 
1021
1069
  // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/utils/easy_guid.js
1022
1070
  /**
@@ -1166,8 +1214,24 @@ var event_emitter_EventEmitter = /** @class */ (function () {
1166
1214
 
1167
1215
  //# sourceMappingURL=event_emitter.js.map
1168
1216
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/utils/string_utils.js
1169
- var string_utils = __webpack_require__(13);
1217
+ var string_utils = __webpack_require__(14);
1170
1218
 
1219
+ // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/utils/liquid.js
1220
+ var liquid;
1221
+ (function (liquid) {
1222
+ function renderLiquidTemplate(template, vars) {
1223
+ var result = template;
1224
+ if (vars) {
1225
+ for (var v in vars) {
1226
+ var liquidVarRegexp = new RegExp('\{\{' + v + '\}\}', 'g');
1227
+ result = result.replace(liquidVarRegexp, vars[v]);
1228
+ }
1229
+ }
1230
+ return result;
1231
+ }
1232
+ liquid.renderLiquidTemplate = renderLiquidTemplate;
1233
+ })(liquid || (liquid = {}));
1234
+ //# sourceMappingURL=liquid.js.map
1171
1235
  // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/i18n/load_default_locale_settings.js
1172
1236
 
1173
1237
  i18n["a" /* i18n */].resetLocales();
@@ -1185,7 +1249,6 @@ i18n["a" /* i18n */].resetLocales();
1185
1249
 
1186
1250
 
1187
1251
 
1188
- //data
1189
1252
 
1190
1253
 
1191
1254
 
@@ -1199,6 +1262,7 @@ i18n["a" /* i18n */].resetLocales();
1199
1262
 
1200
1263
 
1201
1264
 
1265
+
1202
1266
  if (typeof Object.values !== 'function') {
1203
1267
  Object.values = function (obj) {
1204
1268
  return Object.keys(obj).map(function (key) { return obj[key]; });
@@ -1227,7 +1291,7 @@ if (typeof Math.trunc !== 'function') {
1227
1291
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return DomInputElementBuilder; });
1228
1292
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return DomSelectElementBuilder; });
1229
1293
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return domel; });
1230
- /* harmony import */ var _mask__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
1294
+ /* harmony import */ var _mask__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);
1231
1295
  var __extends = (undefined && undefined.__extends) || (function () {
1232
1296
  var extendStatics = function (d, b) {
1233
1297
  extendStatics = Object.setPrototypeOf ||
@@ -1241,6 +1305,13 @@ var __extends = (undefined && undefined.__extends) || (function () {
1241
1305
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1242
1306
  };
1243
1307
  })();
1308
+ var __spreadArrays = (undefined && undefined.__spreadArrays) || function () {
1309
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
1310
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
1311
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
1312
+ r[k] = a[j];
1313
+ return r;
1314
+ };
1244
1315
 
1245
1316
  var DomElementBuilder = /** @class */ (function () {
1246
1317
  function DomElementBuilder(tag, parent) {
@@ -1311,7 +1382,7 @@ var DomElementBuilder = /** @class */ (function () {
1311
1382
  classNames[_i - 1] = arguments[_i];
1312
1383
  }
1313
1384
  if (className) {
1314
- var fullList = className.trim().split(" ").concat(classNames);
1385
+ var fullList = __spreadArrays(className.trim().split(" "), classNames);
1315
1386
  for (var i = 0; i < fullList.length; i++)
1316
1387
  this.element.classList.add(fullList[i]);
1317
1388
  }
@@ -1323,7 +1394,7 @@ var DomElementBuilder = /** @class */ (function () {
1323
1394
  classNames[_i - 1] = arguments[_i];
1324
1395
  }
1325
1396
  if (className) {
1326
- var fullList = className.trim().split(" ").concat(classNames);
1397
+ var fullList = __spreadArrays(className.trim().split(" "), classNames);
1327
1398
  for (var i = 0; i < fullList.length; i++)
1328
1399
  this.element.classList.remove(fullList[i]);
1329
1400
  }
@@ -1587,6 +1658,7 @@ __webpack_require__.r(__webpack_exports__);
1587
1658
 
1588
1659
  // EXPORTS
1589
1660
  __webpack_require__.d(__webpack_exports__, "EasyGrid", function() { return /* reexport */ easy_grid["a" /* EasyGrid */]; });
1661
+ __webpack_require__.d(__webpack_exports__, "AutoResizeColumns", function() { return /* reexport */ easy_grid_options["a" /* AutoResizeColumns */]; });
1590
1662
  __webpack_require__.d(__webpack_exports__, "GridColumnAlign", function() { return /* reexport */ easy_grid_columns["b" /* GridColumnAlign */]; });
1591
1663
  __webpack_require__.d(__webpack_exports__, "GridColumn", function() { return /* reexport */ easy_grid_columns["a" /* GridColumn */]; });
1592
1664
  __webpack_require__.d(__webpack_exports__, "GridColumnList", function() { return /* reexport */ easy_grid_columns["c" /* GridColumnList */]; });
@@ -1635,13 +1707,16 @@ __webpack_require__.d(__webpack_exports__, "DialogFooterAlignment", function() {
1635
1707
  __webpack_require__.d(__webpack_exports__, "dialogs", function() { return /* binding */ dialogs; });
1636
1708
 
1637
1709
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid.js
1638
- var easy_grid = __webpack_require__(28);
1710
+ var easy_grid = __webpack_require__(29);
1711
+
1712
+ // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_options.js
1713
+ var easy_grid_options = __webpack_require__(12);
1639
1714
 
1640
1715
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_columns.js
1641
1716
  var easy_grid_columns = __webpack_require__(8);
1642
1717
 
1643
1718
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_cell_renderer.js
1644
- var easy_grid_cell_renderer = __webpack_require__(9);
1719
+ var easy_grid_cell_renderer = __webpack_require__(13);
1645
1720
 
1646
1721
  // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/calendar.js
1647
1722
  var Calendar = /** @class */ (function () {
@@ -1785,7 +1860,7 @@ var date_time_picker_DateTimePicker = /** @class */ (function () {
1785
1860
  }());
1786
1861
 
1787
1862
  //# sourceMappingURL=date_time_picker.js.map
1788
- // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/public_api.js + 9 modules
1863
+ // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/public_api.js + 10 modules
1789
1864
  var public_api = __webpack_require__(0);
1790
1865
 
1791
1866
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/dom_elem_builder.js
@@ -2294,19 +2369,19 @@ var default_date_time_picker_DefaultDateTimePicker = /** @class */ (function (_s
2294
2369
 
2295
2370
  //# sourceMappingURL=default_date_time_picker.js.map
2296
2371
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/browser_utils.js
2297
- var browser_utils = __webpack_require__(17);
2372
+ var browser_utils = __webpack_require__(18);
2298
2373
 
2299
2374
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/drag_manager.js
2300
- var drag_manager = __webpack_require__(12);
2375
+ var drag_manager = __webpack_require__(11);
2301
2376
 
2302
2377
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/mask.js
2303
- var mask = __webpack_require__(18);
2378
+ var mask = __webpack_require__(19);
2304
2379
 
2305
2380
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/dialogs/default_dialog_service.js
2306
- var default_dialog_service = __webpack_require__(19);
2381
+ var default_dialog_service = __webpack_require__(20);
2307
2382
 
2308
2383
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/dialogs/dialog_service.js
2309
- var dialog_service = __webpack_require__(20);
2384
+ var dialog_service = __webpack_require__(21);
2310
2385
 
2311
2386
  // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/i18n/text_resources.js
2312
2387
 
@@ -2328,6 +2403,7 @@ addEasyDataUITexts();
2328
2403
 
2329
2404
 
2330
2405
 
2406
+
2331
2407
  //datetimepicker
2332
2408
 
2333
2409
 
@@ -2357,7 +2433,7 @@ var dialogs = new default_dialog_service["b" /* DefaultDialogService */]();
2357
2433
 
2358
2434
  "use strict";
2359
2435
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return utils; });
2360
- /* harmony import */ var _string_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
2436
+ /* harmony import */ var _string_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
2361
2437
  /* harmony import */ var _types_data_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
2362
2438
  /* harmony import */ var _i18n_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
2363
2439
 
@@ -2366,7 +2442,7 @@ var dialogs = new default_dialog_service["b" /* DefaultDialogService */]();
2366
2442
  var utils;
2367
2443
  (function (utils) {
2368
2444
  function getAllDataTypes() {
2369
- return Object.values(_types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"]);
2445
+ return Object.values(_types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"]).filter(function (item) { return typeof item === "number"; });
2370
2446
  }
2371
2447
  utils.getAllDataTypes = getAllDataTypes;
2372
2448
  function getDateDataTypes() {
@@ -2374,12 +2450,16 @@ var utils;
2374
2450
  }
2375
2451
  utils.getDateDataTypes = getDateDataTypes;
2376
2452
  function getStringDataTypes() {
2377
- return [_types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].String, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Memo];
2453
+ return [_types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].String, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Memo, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].FixedChar];
2378
2454
  }
2379
2455
  utils.getStringDataTypes = getStringDataTypes;
2380
2456
  var _numericTypes = [_types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Byte, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Word, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Int32,
2381
- _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Int64, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Float, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Currency];
2382
- var _intTypes = [_types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Byte, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Word, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Int32, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Int64];
2457
+ _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Int64, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Float, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Currency, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Autoinc];
2458
+ function getNumericDataTypes() {
2459
+ return _numericTypes;
2460
+ }
2461
+ utils.getNumericDataTypes = getNumericDataTypes;
2462
+ var _intTypes = [_types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Byte, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Word, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Int32, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Int64, _types_data_type__WEBPACK_IMPORTED_MODULE_1__[/* DataType */ "a"].Autoinc];
2383
2463
  //-------------- object functions -------------------
2384
2464
  /**
2385
2465
  * Copy the content of all objests passed in `args` parameters into `target`
@@ -2444,7 +2524,7 @@ var utils;
2444
2524
  hashSet.set(sourceVal, target[key]);
2445
2525
  }
2446
2526
  else {
2447
- if (typeof target[key] == 'undefined') {
2527
+ if (typeof target[key] == 'undefined' || target[key] == null) {
2448
2528
  target[key] = Object.create(Object.getPrototypeOf(sourceVal));
2449
2529
  }
2450
2530
  hashSet.set(sourceVal, target[key]);
@@ -3376,7 +3456,7 @@ var i18n;
3376
3456
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return slideUp; });
3377
3457
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return eqCssPrefix; });
3378
3458
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return eqCssMobile; });
3379
- /* harmony import */ var _browser_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17);
3459
+ /* harmony import */ var _browser_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
3380
3460
 
3381
3461
  /**
3382
3462
  * Wraps all the elements inside "parent" by "wrapper" element
@@ -3649,16 +3729,10 @@ var setLocation = function (path) {
3649
3729
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return GridColumn; });
3650
3730
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return GridColumnList; });
3651
3731
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
3652
- /* harmony import */ var _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
3732
+ /* harmony import */ var _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
3653
3733
 
3654
3734
 
3655
- var DEFAULT_WIDTH = 150;
3656
- var DEFAULT_WIDTH_NUMBER = 120;
3657
- var DEFAULT_WIDTH_DATE = 200;
3658
- var DEFAULT_WIDTH_BOOL = 80;
3659
3735
  var DEFAULT_WIDTH_STRING = 250;
3660
- var MIN_WIDTH_STRING = 100;
3661
- var MAX_WIDTH_STRING = 500;
3662
3736
  var ROW_NUM_WIDTH = 60;
3663
3737
  var GridColumnAlign;
3664
3738
  (function (GridColumnAlign) {
@@ -3683,36 +3757,25 @@ var GridColumn = /** @class */ (function () {
3683
3757
  function GridColumn(column, grid, isRowNum) {
3684
3758
  if (isRowNum === void 0) { isRowNum = false; }
3685
3759
  this._label = null;
3760
+ this._description = null;
3686
3761
  //public left: number;
3687
3762
  this.align = GridColumnAlign.NONE;
3688
3763
  this.isVisible = true;
3689
3764
  this.isRowNum = false;
3690
3765
  this.dataColumn = column;
3691
3766
  this.grid = grid;
3767
+ var widthOptions = grid.options.columnWidths || {};
3692
3768
  if (column) {
3693
3769
  if (column.style.alignment) {
3694
3770
  this.align = MapAlignment(column.style.alignment);
3695
3771
  }
3696
- var coltype = column.type;
3697
- var cellType = this.grid.cellRendererStore.getCellType(coltype);
3698
- switch (cellType) {
3699
- case _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].NUMBER:
3700
- this.width = DEFAULT_WIDTH_NUMBER;
3701
- break;
3702
- case _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].DATETIME:
3703
- this.width = DEFAULT_WIDTH_DATE;
3704
- break;
3705
- case _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].BOOL:
3706
- this.width = DEFAULT_WIDTH_BOOL;
3707
- break;
3708
- default:
3709
- this.width = DEFAULT_WIDTH_STRING;
3710
- }
3772
+ this.width = (widthOptions && widthOptions[this.type]) ? widthOptions[this.type].default : DEFAULT_WIDTH_STRING;
3711
3773
  this.cellRenderer = this.grid.cellRendererStore.getDefaultRenderer(column.type);
3774
+ this._description = column.description;
3712
3775
  }
3713
3776
  else if (isRowNum) {
3714
3777
  this.isRowNum = true;
3715
- this.width = ROW_NUM_WIDTH;
3778
+ this.width = (widthOptions && widthOptions.rowNumColumn) ? widthOptions.rowNumColumn.default : ROW_NUM_WIDTH;
3716
3779
  this._label = '';
3717
3780
  this.cellRenderer = this.grid.cellRendererStore.getDefaultRendererByType(_easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].NUMBER);
3718
3781
  }
@@ -3731,6 +3794,14 @@ var GridColumn = /** @class */ (function () {
3731
3794
  configurable: true
3732
3795
  });
3733
3796
  ;
3797
+ Object.defineProperty(GridColumn.prototype, "description", {
3798
+ /** Get column description. */
3799
+ get: function () {
3800
+ return this._description;
3801
+ },
3802
+ enumerable: true,
3803
+ configurable: true
3804
+ });
3734
3805
  Object.defineProperty(GridColumn.prototype, "type", {
3735
3806
  get: function () {
3736
3807
  return this.dataColumn ? this.dataColumn.type : null;
@@ -3750,9 +3821,10 @@ var GridColumnList = /** @class */ (function () {
3750
3821
  GridColumnList.prototype.sync = function (columnList, hasRowNumCol) {
3751
3822
  if (hasRowNumCol === void 0) { hasRowNumCol = true; }
3752
3823
  this.clear();
3753
- if (hasRowNumCol) {
3754
- var rowNumCol = new GridColumn(null, this.grid, true);
3755
- this.add(rowNumCol);
3824
+ var rowNumCol = new GridColumn(null, this.grid, true);
3825
+ this.add(rowNumCol);
3826
+ if (!hasRowNumCol) {
3827
+ rowNumCol.isVisible = false;
3756
3828
  }
3757
3829
  if (columnList) {
3758
3830
  for (var _i = 0, _a = columnList.getItems(); _i < _a.length; _i++) {
@@ -3819,165 +3891,6 @@ var GridColumnList = /** @class */ (function () {
3819
3891
  /* 9 */
3820
3892
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3821
3893
 
3822
- "use strict";
3823
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return DFMT_REGEX; });
3824
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CellRendererType; });
3825
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return GridCellRendererStore; });
3826
- /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
3827
- /* harmony import */ var _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
3828
- /* harmony import */ var _utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
3829
-
3830
-
3831
-
3832
- var cssPrefix = "keg";
3833
- var DFMT_REGEX = /{0:(.*?)}/g;
3834
- var CellRendererType;
3835
- (function (CellRendererType) {
3836
- CellRendererType[CellRendererType["STRING"] = 1] = "STRING";
3837
- CellRendererType[CellRendererType["NUMBER"] = 2] = "NUMBER";
3838
- CellRendererType[CellRendererType["DATETIME"] = 3] = "DATETIME";
3839
- CellRendererType[CellRendererType["BOOL"] = 4] = "BOOL";
3840
- })(CellRendererType || (CellRendererType = {}));
3841
- var StringCellRendererDefault = function (value, column, cellElement, rowElement) {
3842
- var text = value ? value.toString().replace(/\n/g, '\u21B5 ') : '';
3843
- var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3844
- .addClass(cssPrefix + "-cell-value")
3845
- .addHtml(text)
3846
- .title(value || '');
3847
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
3848
- builder.addClass(cssPrefix + "-cell-value-align-left");
3849
- }
3850
- };
3851
- var NumberCellRendererDefault = function (value, column, cellElement, rowElement) {
3852
- var strValue = (value || '').toString();
3853
- if (typeof value == 'number') {
3854
- if (column.dataColumn && column.dataColumn.displayFormat
3855
- && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
3856
- strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
3857
- return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].numberToStr(value, $1);
3858
- });
3859
- }
3860
- else {
3861
- strValue = value.toLocaleString();
3862
- }
3863
- }
3864
- var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3865
- .addClass(cssPrefix + "-cell-value")
3866
- .addHtml(strValue)
3867
- .title(strValue);
3868
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
3869
- builder.addClass(cssPrefix + "-cell-value-align-right");
3870
- }
3871
- };
3872
- var DateTimeCellRendererDefault = function (value, column, cellElement, rowElement) {
3873
- var isDate = Object.prototype.toString.call(value) === '[object Date]';
3874
- var strValue = (value || '').toString();
3875
- if (isDate) {
3876
- if (column.dataColumn && column.dataColumn.displayFormat
3877
- && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
3878
- strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
3879
- return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].dateTimeToStr(value, column.type, $1);
3880
- });
3881
- }
3882
- else {
3883
- var locale = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].getCurrentLocale();
3884
- var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };
3885
- switch (column.type) {
3886
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Date:
3887
- strValue = value.toLocaleDateString(locale);
3888
- break;
3889
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Time:
3890
- strValue = value.toLocaleTimeString(locale, timeOptions);
3891
- break;
3892
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].DateTime:
3893
- strValue = value.toLocaleDateString(locale) + " " + value.toLocaleTimeString(locale, timeOptions);
3894
- break;
3895
- }
3896
- }
3897
- }
3898
- var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3899
- .addClass(cssPrefix + "-cell-value")
3900
- .addHtml(strValue)
3901
- .title(strValue);
3902
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
3903
- builder.addClass(cssPrefix + "-cell-value-align-right");
3904
- }
3905
- };
3906
- var BoolCellRendererDefault = function (value, column, cellElement, rowElement) {
3907
- if (column.dataColumn && column.dataColumn.displayFormat
3908
- && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
3909
- var strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
3910
- return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].booleanToStr(value, $1);
3911
- });
3912
- return StringCellRendererDefault(strValue, column, cellElement, rowElement);
3913
- }
3914
- else {
3915
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3916
- .addClass(cssPrefix + "-cell-value")
3917
- .addClass(cssPrefix + "-cell-value-bool")
3918
- .addClass(cssPrefix + "-" + (value ? 'cell-value-true' : 'cell-value-false'));
3919
- }
3920
- };
3921
- var GridCellRendererStore = /** @class */ (function () {
3922
- function GridCellRendererStore(options) {
3923
- this.renderers = {};
3924
- this.defaultRenderers = {};
3925
- this.registerRenderer('StringDefault', StringCellRendererDefault);
3926
- this.setDefaultRenderer(CellRendererType.STRING, StringCellRendererDefault);
3927
- this.registerRenderer('NumberDefault', NumberCellRendererDefault);
3928
- this.setDefaultRenderer(CellRendererType.NUMBER, NumberCellRendererDefault);
3929
- this.registerRenderer('DateTimeDefault', DateTimeCellRendererDefault);
3930
- this.setDefaultRenderer(CellRendererType.DATETIME, DateTimeCellRendererDefault);
3931
- this.registerRenderer('BoolDefault', BoolCellRendererDefault);
3932
- this.setDefaultRenderer(CellRendererType.BOOL, BoolCellRendererDefault);
3933
- }
3934
- GridCellRendererStore.prototype.getDefaultRenderer = function (columnType) {
3935
- var cellType = this.getCellType(columnType);
3936
- return this.defaultRenderers[CellRendererType[cellType]];
3937
- };
3938
- GridCellRendererStore.prototype.getDefaultRendererByType = function (rendererType) {
3939
- return this.defaultRenderers[CellRendererType[rendererType]];
3940
- };
3941
- GridCellRendererStore.prototype.setDefaultRenderer = function (cellType, renderer) {
3942
- if (renderer) {
3943
- this.defaultRenderers[CellRendererType[cellType]] = renderer;
3944
- }
3945
- };
3946
- GridCellRendererStore.prototype.getRenderer = function (name) {
3947
- return this.renderers[name];
3948
- };
3949
- GridCellRendererStore.prototype.registerRenderer = function (name, renderer) {
3950
- this.renderers[name] = renderer;
3951
- };
3952
- GridCellRendererStore.prototype.getCellType = function (dataType) {
3953
- switch (dataType) {
3954
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Autoinc:
3955
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Byte:
3956
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Word:
3957
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Currency:
3958
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Float:
3959
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Int32:
3960
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Int64:
3961
- return CellRendererType.NUMBER;
3962
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Date:
3963
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].DateTime:
3964
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Time:
3965
- return CellRendererType.DATETIME;
3966
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Bool:
3967
- return CellRendererType.BOOL;
3968
- default:
3969
- return CellRendererType.STRING;
3970
- }
3971
- };
3972
- return GridCellRendererStore;
3973
- }());
3974
-
3975
- //# sourceMappingURL=easy_grid_cell_renderer.js.map
3976
-
3977
- /***/ }),
3978
- /* 10 */
3979
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
3980
-
3981
3894
  "use strict";
3982
3895
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Validator; });
3983
3896
  var Validator = /** @class */ (function () {
@@ -3989,7 +3902,7 @@ var Validator = /** @class */ (function () {
3989
3902
  //# sourceMappingURL=validator.js.map
3990
3903
 
3991
3904
  /***/ }),
3992
- /* 11 */
3905
+ /* 10 */
3993
3906
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3994
3907
 
3995
3908
  "use strict";
@@ -4006,7 +3919,7 @@ var HttpMethod;
4006
3919
  //# sourceMappingURL=http_method.js.map
4007
3920
 
4008
3921
  /***/ }),
4009
- /* 12 */
3922
+ /* 11 */
4010
3923
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4011
3924
 
4012
3925
  "use strict";
@@ -4339,53 +4252,226 @@ var DragManager = /** @class */ (function () {
4339
4252
  }
4340
4253
  }
4341
4254
  };
4342
- DragManager.prototype.dragLeaveEvent = function (ev) {
4343
- var descriptor = this.containerDescriptors[this.containerDescriptorIndex];
4344
- var container = {
4345
- element: descriptor.element,
4346
- scopes: descriptor.scopes,
4347
- data: descriptor.data
4348
- };
4349
- if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {
4350
- var event_5 = new EqDragEvent(this.draggableItem, this.dragImage, ev);
4351
- event_5.dropEffect = DropEffect.None;
4352
- if (descriptor.onDragLeave) {
4353
- descriptor.onDragLeave(container, event_5);
4354
- }
4355
- this.dropEffect = event_5.dropEffect;
4356
- this.updateCusror(this.dropEffect);
4357
- this.updateImageClass(this.dropEffect);
4358
- }
4255
+ DragManager.prototype.dragLeaveEvent = function (ev) {
4256
+ var descriptor = this.containerDescriptors[this.containerDescriptorIndex];
4257
+ var container = {
4258
+ element: descriptor.element,
4259
+ scopes: descriptor.scopes,
4260
+ data: descriptor.data
4261
+ };
4262
+ if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {
4263
+ var event_5 = new EqDragEvent(this.draggableItem, this.dragImage, ev);
4264
+ event_5.dropEffect = DropEffect.None;
4265
+ if (descriptor.onDragLeave) {
4266
+ descriptor.onDragLeave(container, event_5);
4267
+ }
4268
+ this.dropEffect = event_5.dropEffect;
4269
+ this.updateCusror(this.dropEffect);
4270
+ this.updateImageClass(this.dropEffect);
4271
+ }
4272
+ };
4273
+ DragManager.prototype.detectDragEnterEvent = function (container, ev) {
4274
+ var containerPos = Object(_ui_utils__WEBPACK_IMPORTED_MODULE_1__[/* getElementAbsolutePos */ "g"])(container);
4275
+ var pos = new Position(ev);
4276
+ if (pos.y < containerPos.y || pos.y > containerPos.y + container.offsetHeight) {
4277
+ return false;
4278
+ }
4279
+ if (pos.x < containerPos.x || pos.x > containerPos.x + container.offsetWidth) {
4280
+ return false;
4281
+ }
4282
+ return true;
4283
+ };
4284
+ DragManager.prototype.detectDragLeaveEvent = function (container, ev) {
4285
+ var containerPos = Object(_ui_utils__WEBPACK_IMPORTED_MODULE_1__[/* getElementAbsolutePos */ "g"])(container);
4286
+ var pos = new Position(ev);
4287
+ if (pos.y > containerPos.y && pos.y < containerPos.y + container.offsetHeight
4288
+ && pos.x > containerPos.x && pos.x < containerPos.x + container.offsetWidth) {
4289
+ return false;
4290
+ }
4291
+ return true;
4292
+ };
4293
+ return DragManager;
4294
+ }());
4295
+
4296
+ //global variable
4297
+ var eqDragManager = new DragManager();
4298
+ //# sourceMappingURL=drag_manager.js.map
4299
+
4300
+ /***/ }),
4301
+ /* 12 */
4302
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
4303
+
4304
+ "use strict";
4305
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AutoResizeColumns; });
4306
+ var AutoResizeColumns;
4307
+ (function (AutoResizeColumns) {
4308
+ AutoResizeColumns[AutoResizeColumns["Always"] = 0] = "Always";
4309
+ AutoResizeColumns[AutoResizeColumns["Once"] = 1] = "Once";
4310
+ AutoResizeColumns[AutoResizeColumns["Never"] = 2] = "Never";
4311
+ })(AutoResizeColumns || (AutoResizeColumns = {}));
4312
+ //# sourceMappingURL=easy_grid_options.js.map
4313
+
4314
+ /***/ }),
4315
+ /* 13 */
4316
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
4317
+
4318
+ "use strict";
4319
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return DFMT_REGEX; });
4320
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CellRendererType; });
4321
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return GridCellRendererStore; });
4322
+ /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
4323
+ /* harmony import */ var _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
4324
+ /* harmony import */ var _utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
4325
+
4326
+
4327
+
4328
+ var cssPrefix = "keg";
4329
+ var DFMT_REGEX = /{0:(.*?)}/g;
4330
+ var CellRendererType;
4331
+ (function (CellRendererType) {
4332
+ CellRendererType[CellRendererType["STRING"] = 1] = "STRING";
4333
+ CellRendererType[CellRendererType["NUMBER"] = 2] = "NUMBER";
4334
+ CellRendererType[CellRendererType["DATETIME"] = 3] = "DATETIME";
4335
+ CellRendererType[CellRendererType["BOOL"] = 4] = "BOOL";
4336
+ })(CellRendererType || (CellRendererType = {}));
4337
+ var StringCellRendererDefault = function (value, column, cellElement, rowElement) {
4338
+ var text = value ? value.toString().replace(/\n/g, '\u21B5 ') : '';
4339
+ var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
4340
+ .addClass(cssPrefix + "-cell-value")
4341
+ .addHtml(text)
4342
+ .title(value || '');
4343
+ if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
4344
+ builder.addClass(cssPrefix + "-cell-value-align-left");
4345
+ }
4346
+ };
4347
+ var NumberCellRendererDefault = function (value, column, cellElement, rowElement) {
4348
+ var strValue = (value || '').toString();
4349
+ if (typeof value == 'number') {
4350
+ if (column.dataColumn && column.dataColumn.displayFormat
4351
+ && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
4352
+ strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
4353
+ return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].numberToStr(value, $1);
4354
+ });
4355
+ }
4356
+ else {
4357
+ strValue = value.toLocaleString();
4358
+ }
4359
+ }
4360
+ var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
4361
+ .addClass(cssPrefix + "-cell-value")
4362
+ .addHtml(strValue)
4363
+ .title(strValue);
4364
+ if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
4365
+ builder.addClass(cssPrefix + "-cell-value-align-right");
4366
+ }
4367
+ };
4368
+ var DateTimeCellRendererDefault = function (value, column, cellElement, rowElement) {
4369
+ var isDate = Object.prototype.toString.call(value) === '[object Date]';
4370
+ var strValue = (value || '').toString();
4371
+ if (isDate) {
4372
+ if (column.dataColumn && column.dataColumn.displayFormat
4373
+ && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
4374
+ strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
4375
+ return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].dateTimeToStr(value, column.type, $1);
4376
+ });
4377
+ }
4378
+ else {
4379
+ var locale = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].getCurrentLocale();
4380
+ var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };
4381
+ switch (column.type) {
4382
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Date:
4383
+ strValue = value.toLocaleDateString(locale);
4384
+ break;
4385
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Time:
4386
+ strValue = value.toLocaleTimeString(locale, timeOptions);
4387
+ break;
4388
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].DateTime:
4389
+ strValue = value.toLocaleDateString(locale) + " " + value.toLocaleTimeString(locale, timeOptions);
4390
+ break;
4391
+ }
4392
+ }
4393
+ }
4394
+ var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
4395
+ .addClass(cssPrefix + "-cell-value")
4396
+ .addHtml(strValue)
4397
+ .title(strValue);
4398
+ if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
4399
+ builder.addClass(cssPrefix + "-cell-value-align-right");
4400
+ }
4401
+ };
4402
+ var BoolCellRendererDefault = function (value, column, cellElement, rowElement) {
4403
+ if (column.dataColumn && column.dataColumn.displayFormat
4404
+ && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
4405
+ var strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
4406
+ return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].booleanToStr(value, $1);
4407
+ });
4408
+ return StringCellRendererDefault(strValue, column, cellElement, rowElement);
4409
+ }
4410
+ else {
4411
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
4412
+ .addClass(cssPrefix + "-cell-value")
4413
+ .addClass(cssPrefix + "-cell-value-bool")
4414
+ .addClass(cssPrefix + "-" + (value ? 'cell-value-true' : 'cell-value-false'));
4415
+ }
4416
+ };
4417
+ var GridCellRendererStore = /** @class */ (function () {
4418
+ function GridCellRendererStore(options) {
4419
+ this.renderers = {};
4420
+ this.defaultRenderers = {};
4421
+ this.registerRenderer('StringDefault', StringCellRendererDefault);
4422
+ this.setDefaultRenderer(CellRendererType.STRING, StringCellRendererDefault);
4423
+ this.registerRenderer('NumberDefault', NumberCellRendererDefault);
4424
+ this.setDefaultRenderer(CellRendererType.NUMBER, NumberCellRendererDefault);
4425
+ this.registerRenderer('DateTimeDefault', DateTimeCellRendererDefault);
4426
+ this.setDefaultRenderer(CellRendererType.DATETIME, DateTimeCellRendererDefault);
4427
+ this.registerRenderer('BoolDefault', BoolCellRendererDefault);
4428
+ this.setDefaultRenderer(CellRendererType.BOOL, BoolCellRendererDefault);
4429
+ }
4430
+ GridCellRendererStore.prototype.getDefaultRenderer = function (columnType) {
4431
+ var cellType = this.getCellType(columnType);
4432
+ return this.defaultRenderers[CellRendererType[cellType]];
4433
+ };
4434
+ GridCellRendererStore.prototype.getDefaultRendererByType = function (rendererType) {
4435
+ return this.defaultRenderers[CellRendererType[rendererType]];
4436
+ };
4437
+ GridCellRendererStore.prototype.setDefaultRenderer = function (cellType, renderer) {
4438
+ if (renderer) {
4439
+ this.defaultRenderers[CellRendererType[cellType]] = renderer;
4440
+ }
4441
+ };
4442
+ GridCellRendererStore.prototype.getRenderer = function (name) {
4443
+ return this.renderers[name];
4359
4444
  };
4360
- DragManager.prototype.detectDragEnterEvent = function (container, ev) {
4361
- var containerPos = Object(_ui_utils__WEBPACK_IMPORTED_MODULE_1__[/* getElementAbsolutePos */ "g"])(container);
4362
- var pos = new Position(ev);
4363
- if (pos.y < containerPos.y || pos.y > containerPos.y + container.offsetHeight) {
4364
- return false;
4365
- }
4366
- if (pos.x < containerPos.x || pos.x > containerPos.x + container.offsetWidth) {
4367
- return false;
4368
- }
4369
- return true;
4445
+ GridCellRendererStore.prototype.registerRenderer = function (name, renderer) {
4446
+ this.renderers[name] = renderer;
4370
4447
  };
4371
- DragManager.prototype.detectDragLeaveEvent = function (container, ev) {
4372
- var containerPos = Object(_ui_utils__WEBPACK_IMPORTED_MODULE_1__[/* getElementAbsolutePos */ "g"])(container);
4373
- var pos = new Position(ev);
4374
- if (pos.y > containerPos.y && pos.y < containerPos.y + container.offsetHeight
4375
- && pos.x > containerPos.x && pos.x < containerPos.x + container.offsetWidth) {
4376
- return false;
4448
+ GridCellRendererStore.prototype.getCellType = function (dataType) {
4449
+ switch (dataType) {
4450
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Autoinc:
4451
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Byte:
4452
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Word:
4453
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Currency:
4454
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Float:
4455
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Int32:
4456
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Int64:
4457
+ return CellRendererType.NUMBER;
4458
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Date:
4459
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].DateTime:
4460
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Time:
4461
+ return CellRendererType.DATETIME;
4462
+ case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Bool:
4463
+ return CellRendererType.BOOL;
4464
+ default:
4465
+ return CellRendererType.STRING;
4377
4466
  }
4378
- return true;
4379
4467
  };
4380
- return DragManager;
4468
+ return GridCellRendererStore;
4381
4469
  }());
4382
4470
 
4383
- //global variable
4384
- var eqDragManager = new DragManager();
4385
- //# sourceMappingURL=drag_manager.js.map
4471
+ //# sourceMappingURL=easy_grid_cell_renderer.js.map
4386
4472
 
4387
4473
  /***/ }),
4388
- /* 13 */
4474
+ /* 14 */
4389
4475
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4390
4476
 
4391
4477
  "use strict";
@@ -4427,7 +4513,7 @@ function combinePath(path1, path2) {
4427
4513
  //# sourceMappingURL=string_utils.js.map
4428
4514
 
4429
4515
  /***/ }),
4430
- /* 14 */
4516
+ /* 15 */
4431
4517
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4432
4518
 
4433
4519
  "use strict";
@@ -4479,7 +4565,7 @@ var DataRow = /** @class */ (function () {
4479
4565
  //# sourceMappingURL=data_row.js.map
4480
4566
 
4481
4567
  /***/ }),
4482
- /* 15 */
4568
+ /* 16 */
4483
4569
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4484
4570
 
4485
4571
  "use strict";
@@ -4544,7 +4630,7 @@ var HttpRequest = /** @class */ (function () {
4544
4630
  //# sourceMappingURL=http_request.js.map
4545
4631
 
4546
4632
  /***/ }),
4547
- /* 16 */
4633
+ /* 17 */
4548
4634
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4549
4635
 
4550
4636
  "use strict";
@@ -4578,6 +4664,8 @@ var DataColumn = /** @class */ (function () {
4578
4664
  this.displayFormat = desc.dfmt;
4579
4665
  this.groupFooterColumnTemplate = desc.gfct;
4580
4666
  this.style = desc.style || {};
4667
+ this.description = desc.description;
4668
+ this.calculatedWidth = 0;
4581
4669
  }
4582
4670
  return DataColumn;
4583
4671
  }());
@@ -4617,9 +4705,10 @@ var DataColumnList = /** @class */ (function () {
4617
4705
  .map(function (col, index) { return index; });
4618
4706
  };
4619
4707
  DataColumnList.prototype.put = function (index, col) {
4620
- //!!!!!!!!!check on "out of index"
4621
- this.items[index] = col;
4622
- this.updateDateColumnIdx();
4708
+ if (index >= 0 && index < this.count) {
4709
+ this.items[index] = col;
4710
+ this.updateDateColumnIdx();
4711
+ }
4623
4712
  };
4624
4713
  DataColumnList.prototype.move = function (col, newIndex) {
4625
4714
  var oldIndex = this.items.indexOf(col);
@@ -4629,8 +4718,12 @@ var DataColumnList = /** @class */ (function () {
4629
4718
  }
4630
4719
  };
4631
4720
  DataColumnList.prototype.get = function (index) {
4632
- //!!!!!!!!!check on "out of index"
4633
- return this.items[index];
4721
+ if (index >= 0 && index < this.count) {
4722
+ return this.items[index];
4723
+ }
4724
+ else {
4725
+ return null;
4726
+ }
4634
4727
  };
4635
4728
  DataColumnList.prototype.getIndex = function (id) {
4636
4729
  return this.mapper[id];
@@ -4661,7 +4754,7 @@ var DataColumnList = /** @class */ (function () {
4661
4754
  //# sourceMappingURL=data_column.js.map
4662
4755
 
4663
4756
  /***/ }),
4664
- /* 17 */
4757
+ /* 18 */
4665
4758
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4666
4759
 
4667
4760
  "use strict";
@@ -4736,7 +4829,7 @@ var browserUtils;
4736
4829
  //# sourceMappingURL=browser_utils.js.map
4737
4830
 
4738
4831
  /***/ }),
4739
- /* 18 */
4832
+ /* 19 */
4740
4833
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4741
4834
 
4742
4835
  "use strict";
@@ -4839,7 +4932,7 @@ function mask(input, maskPattern) {
4839
4932
  //# sourceMappingURL=mask.js.map
4840
4933
 
4841
4934
  /***/ }),
4842
- /* 19 */
4935
+ /* 20 */
4843
4936
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4844
4937
 
4845
4938
  "use strict";
@@ -4848,7 +4941,7 @@ function mask(input, maskPattern) {
4848
4941
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return DefaultProgressDialog; });
4849
4942
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return DefaultDialogSet; });
4850
4943
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
4851
- /* harmony import */ var _dialog_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
4944
+ /* harmony import */ var _dialog_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21);
4852
4945
  /* harmony import */ var _utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
4853
4946
  var __extends = (undefined && undefined.__extends) || (function () {
4854
4947
  var extendStatics = function (d, b) {
@@ -4949,9 +5042,9 @@ var DefaultDialogService = /** @class */ (function () {
4949
5042
  _this.open(options);
4950
5043
  });
4951
5044
  };
4952
- DefaultDialogService.prototype.open = function (options) {
5045
+ DefaultDialogService.prototype.open = function (options, data) {
4953
5046
  var _this = this;
4954
- var dialog = new DefaultDialog(options);
5047
+ var dialog = new DefaultDialog(options, data);
4955
5048
  var onDestroy = options.onDestroy;
4956
5049
  options.onDestroy = function (dlg) {
4957
5050
  _this.untrack(dlg);
@@ -4999,7 +5092,7 @@ var DefaultDialogService = /** @class */ (function () {
4999
5092
  }());
5000
5093
 
5001
5094
  var DefaultDialog = /** @class */ (function () {
5002
- function DefaultDialog(options) {
5095
+ function DefaultDialog(options, data) {
5003
5096
  var _this = this;
5004
5097
  this.options = options;
5005
5098
  this.submitHandler = function (token) {
@@ -5027,6 +5120,7 @@ var DefaultDialog = /** @class */ (function () {
5027
5120
  return true;
5028
5121
  };
5029
5122
  this.dialogId = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].generateId('dlg');
5123
+ this.data = data;
5030
5124
  this.slot =
5031
5125
  Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', document.body)
5032
5126
  .attr('tab-index', '-1')
@@ -5061,7 +5155,8 @@ var DefaultDialog = /** @class */ (function () {
5061
5155
  .addClass(cssPrefix + "-body")
5062
5156
  .toDOM();
5063
5157
  if (typeof options.body === 'string') {
5064
- b.addHtml(options.body);
5158
+ var html = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["liquid"].renderLiquidTemplate(options.body, data);
5159
+ b.addHtml(html);
5065
5160
  }
5066
5161
  else {
5067
5162
  b.addChildElement(options.body);
@@ -5121,6 +5216,9 @@ var DefaultDialog = /** @class */ (function () {
5121
5216
  .toDOM(); })
5122
5217
  .toDOM();
5123
5218
  }
5219
+ DefaultDialog.prototype.getData = function () {
5220
+ return this.data;
5221
+ };
5124
5222
  DefaultDialog.prototype.getRootElement = function () {
5125
5223
  return this.slot;
5126
5224
  };
@@ -5245,7 +5343,7 @@ var DefaultDialog = /** @class */ (function () {
5245
5343
 
5246
5344
  var DefaultProgressDialog = /** @class */ (function (_super) {
5247
5345
  __extends(DefaultProgressDialog, _super);
5248
- function DefaultProgressDialog(options) {
5346
+ function DefaultProgressDialog(options, data) {
5249
5347
  var _this = this;
5250
5348
  var contentElement;
5251
5349
  var progressElement;
@@ -5280,7 +5378,7 @@ var DefaultProgressDialog = /** @class */ (function (_super) {
5280
5378
  cancelable: false,
5281
5379
  closable: false,
5282
5380
  onDestroy: options.onDestroy
5283
- }) || this;
5381
+ }, data) || this;
5284
5382
  _this.contentElement = contentElement;
5285
5383
  _this.progressElement = progressElement;
5286
5384
  return _this;
@@ -5321,13 +5419,13 @@ var DefaultDialogSet = /** @class */ (function () {
5321
5419
  DefaultDialogSet.prototype.getCurrent = function () {
5322
5420
  return this.currentDialog;
5323
5421
  };
5324
- DefaultDialogSet.prototype.openNext = function () {
5325
- return this.open(this.currentIndex + 1);
5422
+ DefaultDialogSet.prototype.openNext = function (data) {
5423
+ return this.open(this.currentIndex + 1, data);
5326
5424
  };
5327
- DefaultDialogSet.prototype.openPrev = function () {
5328
- return this.open(this.currentIndex - 1);
5425
+ DefaultDialogSet.prototype.openPrev = function (data) {
5426
+ return this.open(this.currentIndex - 1, data);
5329
5427
  };
5330
- DefaultDialogSet.prototype.open = function (page) {
5428
+ DefaultDialogSet.prototype.open = function (page, data) {
5331
5429
  if (page < 0) {
5332
5430
  this.currentIndex = 0;
5333
5431
  }
@@ -5343,7 +5441,8 @@ var DefaultDialogSet = /** @class */ (function () {
5343
5441
  }
5344
5442
  catch (e) { }
5345
5443
  }
5346
- this.currentDialog = this.dialogService.open(this.options[this.currentIndex]);
5444
+ var dlgOptions = this.options[this.currentIndex];
5445
+ this.currentDialog = this.dialogService.open(dlgOptions, data);
5347
5446
  return this.currentDialog;
5348
5447
  };
5349
5448
  DefaultDialogSet.prototype.close = function () {
@@ -5356,10 +5455,10 @@ var DefaultDialogSet = /** @class */ (function () {
5356
5455
  }());
5357
5456
 
5358
5457
  //# sourceMappingURL=default_dialog_service.js.map
5359
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(29)))
5458
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
5360
5459
 
5361
5460
  /***/ }),
5362
- /* 20 */
5461
+ /* 21 */
5363
5462
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5364
5463
 
5365
5464
  "use strict";
@@ -5373,7 +5472,7 @@ var DialogFooterAlignment;
5373
5472
  //# sourceMappingURL=dialog_service.js.map
5374
5473
 
5375
5474
  /***/ }),
5376
- /* 21 */
5475
+ /* 22 */
5377
5476
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5378
5477
 
5379
5478
  "use strict";
@@ -5392,11 +5491,11 @@ var __assign = (undefined && undefined.__assign) || function () {
5392
5491
  };
5393
5492
 
5394
5493
  var TextDataFilter = /** @class */ (function () {
5395
- function TextDataFilter(loader, sourceTable, entityId, isLookup) {
5494
+ function TextDataFilter(loader, sourceTable, sourceId, isLookup) {
5396
5495
  if (isLookup === void 0) { isLookup = false; }
5397
5496
  this.loader = loader;
5398
5497
  this.sourceTable = sourceTable;
5399
- this.entityId = entityId;
5498
+ this.sourceId = sourceId;
5400
5499
  this.isLookup = isLookup;
5401
5500
  this.filterValue = '';
5402
5501
  //turns off client-side search
@@ -5433,7 +5532,7 @@ var TextDataFilter = /** @class */ (function () {
5433
5532
  limit: this.sourceTable.chunkSize,
5434
5533
  needTotal: true,
5435
5534
  filters: filters_1,
5436
- entityId: this.entityId,
5535
+ sourceId: this.sourceId,
5437
5536
  lookup: this.isLookup
5438
5537
  })
5439
5538
  .then(function (data) {
@@ -5441,7 +5540,7 @@ var TextDataFilter = /** @class */ (function () {
5441
5540
  chunkSize: _this.sourceTable.chunkSize,
5442
5541
  loader: {
5443
5542
  loadChunk: function (params) { return _this.loader
5444
- .loadChunk(__assign({}, params, { filters: filters_1, entityId: _this.entityId, lookup: _this.isLookup })); }
5543
+ .loadChunk(__assign(__assign({}, params), { filters: filters_1, sourceId: _this.sourceId, lookup: _this.isLookup })); }
5445
5544
  }
5446
5545
  });
5447
5546
  for (var _i = 0, _a = _this.sourceTable.columns.getItems(); _i < _a.length; _i++) {
@@ -5462,26 +5561,26 @@ var TextDataFilter = /** @class */ (function () {
5462
5561
  return new Promise(function (resolve, reject) {
5463
5562
  var filteredTable = new _easydata_core__WEBPACK_IMPORTED_MODULE_0__["EasyDataTable"]({
5464
5563
  chunkSize: _this.sourceTable.chunkSize,
5564
+ inMemory: true
5465
5565
  });
5466
5566
  for (var _i = 0, _a = _this.sourceTable.columns.getItems(); _i < _a.length; _i++) {
5467
5567
  var col = _a[_i];
5468
5568
  filteredTable.columns.add(col);
5469
5569
  }
5470
5570
  var words = _this.filterValue.split('||').map(function (w) { return w.trim().toLowerCase(); });
5571
+ var suitableColumns = _this.sourceTable.columns.getItems()
5572
+ .filter(function (col) { return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].isIntType(col.type)
5573
+ || _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getStringDataTypes().indexOf(col.type) >= 0; });
5471
5574
  var hasEnterance = function (row) {
5472
- for (var _i = 0, _a = _this.sourceTable.columns.getItems(); _i < _a.length; _i++) {
5473
- var col = _a[_i];
5474
- if (_easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].isIntType(col.type)
5475
- || _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getStringDataTypes().indexOf(col.type) >= 0) {
5476
- var value = row.getValue(col.id);
5477
- if (value) {
5478
- var normalized = value.toString()
5479
- .toLowerCase();
5480
- for (var _b = 0, words_1 = words; _b < words_1.length; _b++) {
5481
- var word = words_1[_b];
5482
- if (normalized.indexOf(word) >= 0) {
5483
- return true;
5484
- }
5575
+ for (var _i = 0, suitableColumns_1 = suitableColumns; _i < suitableColumns_1.length; _i++) {
5576
+ var col = suitableColumns_1[_i];
5577
+ var value = row.getValue(col.id);
5578
+ if (value) {
5579
+ var normalized = value.toString().toLowerCase();
5580
+ for (var _a = 0, words_1 = words; _a < words_1.length; _a++) {
5581
+ var word = words_1[_a];
5582
+ if (normalized.indexOf(word) >= 0) {
5583
+ return true;
5485
5584
  }
5486
5585
  }
5487
5586
  }
@@ -5494,8 +5593,7 @@ var TextDataFilter = /** @class */ (function () {
5494
5593
  filteredTable.addRow(row);
5495
5594
  }
5496
5595
  }
5497
- if (filteredTable.getCachedCount() == 0)
5498
- filteredTable.setTotal(0);
5596
+ filteredTable.setTotal(filteredTable.getCachedCount());
5499
5597
  resolve(filteredTable);
5500
5598
  });
5501
5599
  };
@@ -5503,10 +5601,10 @@ var TextDataFilter = /** @class */ (function () {
5503
5601
  }());
5504
5602
 
5505
5603
  //# sourceMappingURL=text_data_filter.js.map
5506
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
5604
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(31)))
5507
5605
 
5508
5606
  /***/ }),
5509
- /* 22 */
5607
+ /* 23 */
5510
5608
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5511
5609
 
5512
5610
  "use strict";
@@ -5514,7 +5612,7 @@ var TextDataFilter = /** @class */ (function () {
5514
5612
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5515
5613
  /* harmony import */ var _easydata_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
5516
5614
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
5517
- /* harmony import */ var _validators_datetime_validator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(32);
5615
+ /* harmony import */ var _validators_datetime_validator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(33);
5518
5616
 
5519
5617
 
5520
5618
 
@@ -5649,19 +5747,19 @@ var EntityEditForm = /** @class */ (function () {
5649
5747
  }());
5650
5748
 
5651
5749
  //# sourceMappingURL=entity_edit_form.js.map
5652
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
5750
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(31)))
5653
5751
 
5654
5752
  /***/ }),
5655
- /* 23 */
5753
+ /* 24 */
5656
5754
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5657
5755
 
5658
5756
  "use strict";
5659
5757
  /* WEBPACK VAR INJECTION */(function(Promise) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return HttpResponseError; });
5660
5758
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HttpClient; });
5661
5759
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
5662
- /* harmony import */ var _http_action_result__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31);
5663
- /* harmony import */ var _http_method__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
5664
- /* harmony import */ var _http_request__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
5760
+ /* harmony import */ var _http_action_result__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(32);
5761
+ /* harmony import */ var _http_method__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
5762
+ /* harmony import */ var _http_request__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
5665
5763
  var __extends = (undefined && undefined.__extends) || (function () {
5666
5764
  var extendStatics = function (d, b) {
5667
5765
  extendStatics = Object.setPrototypeOf ||
@@ -5733,7 +5831,7 @@ var HttpClient = /** @class */ (function () {
5733
5831
  var desc = {
5734
5832
  method: method,
5735
5833
  url: url,
5736
- headers: __assign({}, this.defaultHeaders, options.headers || {}),
5834
+ headers: __assign(__assign({}, this.defaultHeaders), options.headers || {}),
5737
5835
  queryParams: options.queryParams || {},
5738
5836
  data: data
5739
5837
  };
@@ -5803,10 +5901,10 @@ var HttpClient = /** @class */ (function () {
5803
5901
  }());
5804
5902
 
5805
5903
  //# sourceMappingURL=http_client.js.map
5806
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(24)))
5904
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
5807
5905
 
5808
5906
  /***/ }),
5809
- /* 24 */
5907
+ /* 25 */
5810
5908
  /***/ (function(module, exports, __webpack_require__) {
5811
5909
 
5812
5910
  /* WEBPACK VAR INJECTION */(function(process, global) {/*!
@@ -6983,10 +7081,10 @@ return Promise$1;
6983
7081
 
6984
7082
  //# sourceMappingURL=es6-promise.map
6985
7083
 
6986
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25), __webpack_require__(26)))
7084
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(26), __webpack_require__(27)))
6987
7085
 
6988
7086
  /***/ }),
6989
- /* 25 */
7087
+ /* 26 */
6990
7088
  /***/ (function(module, exports) {
6991
7089
 
6992
7090
  // shim for using process in browser
@@ -7176,7 +7274,7 @@ process.umask = function() { return 0; };
7176
7274
 
7177
7275
 
7178
7276
  /***/ }),
7179
- /* 26 */
7277
+ /* 27 */
7180
7278
  /***/ (function(module, exports) {
7181
7279
 
7182
7280
  var g;
@@ -7202,13 +7300,13 @@ module.exports = g;
7202
7300
 
7203
7301
 
7204
7302
  /***/ }),
7205
- /* 27 */
7303
+ /* 28 */
7206
7304
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
7207
7305
 
7208
7306
  "use strict";
7209
7307
  /* WEBPACK VAR INJECTION */(function(Promise) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EasyDataTable; });
7210
- /* harmony import */ var _data_column__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16);
7211
- /* harmony import */ var _data_row__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
7308
+ /* harmony import */ var _data_column__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17);
7309
+ /* harmony import */ var _data_row__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
7212
7310
  /* harmony import */ var _types_data_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
7213
7311
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
7214
7312
 
@@ -7219,16 +7317,23 @@ var EasyDataTable = /** @class */ (function () {
7219
7317
  function EasyDataTable(options) {
7220
7318
  this._chunkSize = 1000;
7221
7319
  this._elasticChunks = false;
7222
- // object keeps number keys sorted
7223
- this.chunkMap = {};
7320
+ this.cachedRows = [];
7224
7321
  this.total = 0;
7225
7322
  this.loader = null;
7226
7323
  this.needTotal = true;
7324
+ this.isInMemory = false;
7227
7325
  options = options || {};
7228
7326
  this._chunkSize = options.chunkSize || this._chunkSize;
7229
7327
  this._elasticChunks = options.elasticChunks || this._elasticChunks;
7230
7328
  this.loader = options.loader;
7329
+ if (typeof options.inMemory !== 'undefined') {
7330
+ this.isInMemory = options.inMemory;
7331
+ }
7332
+ if (this.isInMemory) {
7333
+ this.needTotal = false;
7334
+ }
7231
7335
  this._columns = new _data_column__WEBPACK_IMPORTED_MODULE_0__[/* DataColumnList */ "c"]();
7336
+ this.onUpdate = options.onUpdate;
7232
7337
  if (options.columns) {
7233
7338
  for (var _i = 0, _a = options.columns; _i < _a.length; _i++) {
7234
7339
  var colDesc = _a[_i];
@@ -7259,7 +7364,7 @@ var EasyDataTable = /** @class */ (function () {
7259
7364
  this._chunkSize = value;
7260
7365
  this.total = 0;
7261
7366
  this.needTotal = !this.elasticChunks;
7262
- this.chunkMap = {};
7367
+ this.cachedRows = [];
7263
7368
  },
7264
7369
  enumerable: true,
7265
7370
  configurable: true
@@ -7272,7 +7377,7 @@ var EasyDataTable = /** @class */ (function () {
7272
7377
  this._elasticChunks = value;
7273
7378
  this.total = 0;
7274
7379
  this.needTotal = !this.elasticChunks;
7275
- this.chunkMap = {};
7380
+ this.cachedRows = [];
7276
7381
  },
7277
7382
  enumerable: true,
7278
7383
  configurable: true
@@ -7300,22 +7405,12 @@ var EasyDataTable = /** @class */ (function () {
7300
7405
  endIndex = this.total;
7301
7406
  }
7302
7407
  }
7303
- var lbChunk = Math.trunc(fromIndex / this._chunkSize);
7304
- var ubChunk = Math.trunc((endIndex - 1) / this._chunkSize);
7305
- var allChunksCached = true;
7306
- for (var i = lbChunk; i <= ubChunk; i++) {
7307
- if (!this.chunkMap[i]) {
7308
- allChunksCached = false;
7309
- break;
7310
- }
7408
+ if (this.isInMemory && endIndex > this.cachedRows.length) {
7409
+ endIndex = this.cachedRows.length;
7311
7410
  }
7411
+ var allChunksCached = endIndex <= this.cachedRows.length;
7312
7412
  if (allChunksCached) {
7313
- var resultArr = [];
7314
- for (var i = lbChunk; i <= ubChunk; i++) {
7315
- resultArr = resultArr.concat(this.chunkMap[i].rows);
7316
- }
7317
- var firstChunkOffset = this.chunkMap[lbChunk].offset;
7318
- return Promise.resolve(resultArr.slice(fromIndex - firstChunkOffset, endIndex - firstChunkOffset));
7413
+ return Promise.resolve(this.cachedRows.slice(fromIndex, endIndex));
7319
7414
  }
7320
7415
  //if loader is not defined
7321
7416
  if (!this.loader) {
@@ -7326,53 +7421,34 @@ var EasyDataTable = /** @class */ (function () {
7326
7421
  if (this.needTotal) {
7327
7422
  this.needTotal = false;
7328
7423
  }
7329
- var limit = this._chunkSize * (ubChunk - lbChunk + 1);
7330
- if (this.elasticChunks)
7331
- limit++;
7332
- return this.loader.loadChunk({
7333
- offset: lbChunk * this._chunkSize,
7424
+ var offset = this.cachedRows.length;
7425
+ var limit = endIndex - offset;
7426
+ if (limit < this._chunkSize) {
7427
+ limit = this._chunkSize;
7428
+ }
7429
+ var resultPromise = this.loader.loadChunk({
7430
+ offset: offset,
7334
7431
  limit: limit,
7335
7432
  needTotal: needTotal
7336
7433
  })
7337
7434
  .then(function (result) {
7338
- var chunks = result.table.getCachedChunks();
7339
7435
  if (needTotal) {
7340
7436
  _this.total = result.total;
7341
- if (endIndex > _this.total) {
7342
- endIndex = _this.total;
7343
- }
7344
7437
  }
7345
- var index = lbChunk;
7346
- for (var _i = 0, chunks_1 = chunks; _i < chunks_1.length; _i++) {
7347
- var chunk = chunks_1[_i];
7348
- _this.chunkMap[index] = {
7349
- offset: index * _this._chunkSize,
7350
- rows: chunk.rows
7351
- };
7352
- index++;
7438
+ Array.prototype.push.apply(_this.cachedRows, result.table.getCachedRows());
7439
+ if (endIndex > _this.cachedRows.length) {
7440
+ endIndex = _this.cachedRows.length;
7353
7441
  }
7354
7442
  if (_this.elasticChunks) {
7355
7443
  var count_1 = result.table.getCachedCount();
7356
- if (count_1 > 0) {
7357
- var chunk = _this.chunkMap[index - 1];
7358
- if (count_1 === limit) {
7359
- chunk.rows.splice(chunk.rows.length - 1, 1);
7360
- if (chunk.rows.length == 0) {
7361
- delete _this.chunkMap[index - 1];
7362
- }
7363
- }
7364
- if (count_1 < limit) {
7365
- _this.total = _this.getCachedCount();
7366
- }
7444
+ if (count_1 < limit) {
7445
+ _this.total = _this.cachedRows.length;
7367
7446
  }
7368
7447
  }
7369
- var resultArr = [];
7370
- for (var i = lbChunk; i <= ubChunk; i++) {
7371
- resultArr = resultArr.concat(_this.chunkMap[i].rows);
7372
- }
7373
- var firstChunkOffset = _this.chunkMap[lbChunk].offset;
7374
- return resultArr.slice(fromIndex - firstChunkOffset, endIndex - firstChunkOffset);
7448
+ _this.fireUpdated();
7449
+ return _this.cachedRows.slice(fromIndex, endIndex);
7375
7450
  });
7451
+ return resultPromise;
7376
7452
  };
7377
7453
  EasyDataTable.prototype.getRow = function (index) {
7378
7454
  return this.getRows({ offset: index, limit: 1 })
@@ -7384,14 +7460,13 @@ var EasyDataTable = /** @class */ (function () {
7384
7460
  EasyDataTable.prototype.setTotal = function (total) {
7385
7461
  this.total = total;
7386
7462
  this.needTotal = false;
7387
- this.chunkMap = {};
7388
7463
  };
7389
7464
  EasyDataTable.prototype.getCachedCount = function () {
7390
- return this.getCachedRows().length;
7465
+ return this.cachedRows.length;
7391
7466
  };
7392
7467
  EasyDataTable.prototype.clear = function () {
7393
7468
  this.columns.clear();
7394
- this.chunkMap = {};
7469
+ this.cachedRows = [];
7395
7470
  this.total = 0;
7396
7471
  this.needTotal = !this._elasticChunks;
7397
7472
  };
@@ -7424,60 +7499,33 @@ var EasyDataTable = /** @class */ (function () {
7424
7499
  }
7425
7500
  return null;
7426
7501
  };
7427
- EasyDataTable.prototype.addRow = function (rowOrValue) {
7502
+ EasyDataTable.prototype.addRow = function (rowOrValues) {
7428
7503
  var newRow;
7429
- if (Array.isArray(rowOrValue)) {
7504
+ if (Array.isArray(rowOrValues)) {
7505
+ var values = rowOrValues;
7430
7506
  var dateIdx = this._columns.getDateColumnIndexes();
7431
7507
  if (dateIdx.length > 0) {
7432
7508
  for (var _i = 0, dateIdx_1 = dateIdx; _i < dateIdx_1.length; _i++) {
7433
7509
  var idx = dateIdx_1[_i];
7434
- if (rowOrValue[idx]) {
7435
- rowOrValue[idx] = this.mapDate(rowOrValue[idx], this._columns.get(idx).type);
7510
+ if (values[idx]) {
7511
+ values[idx] = this.mapDate(values[idx], this._columns.get(idx).type);
7436
7512
  }
7437
7513
  }
7438
7514
  }
7439
- newRow = new _data_row__WEBPACK_IMPORTED_MODULE_1__[/* DataRow */ "a"](this._columns, rowOrValue);
7515
+ newRow = new _data_row__WEBPACK_IMPORTED_MODULE_1__[/* DataRow */ "a"](this._columns, values);
7440
7516
  }
7441
7517
  else {
7442
- newRow = this.createRow(rowOrValue);
7443
- }
7444
- var lastChunk = this.getLastChunk();
7445
- if (!lastChunk || lastChunk.rows.length >= this._chunkSize) {
7446
- lastChunk = this.createChunk();
7518
+ newRow = this.createRow(rowOrValues);
7447
7519
  }
7448
- lastChunk.rows.push(newRow);
7520
+ this.cachedRows.push(newRow);
7449
7521
  var cachedTotal = this.getCachedCount();
7450
7522
  if (cachedTotal > this.total) {
7451
7523
  this.total = cachedTotal;
7452
7524
  }
7453
7525
  return newRow;
7454
7526
  };
7455
- EasyDataTable.prototype.createChunk = function (index) {
7456
- if (typeof index == 'undefined') {
7457
- index = this.getLastChunkIndex() + 1;
7458
- }
7459
- var chunk = { offset: index * this._chunkSize, rows: [] };
7460
- this.chunkMap[index] = chunk;
7461
- return chunk;
7462
- };
7463
- EasyDataTable.prototype.getLastChunkIndex = function () {
7464
- var keys = Object.keys(this.chunkMap);
7465
- return keys.length > 0
7466
- ? parseInt(keys[keys.length - 1])
7467
- : -1;
7468
- };
7469
- EasyDataTable.prototype.getLastChunk = function () {
7470
- var index = this.getLastChunkIndex();
7471
- return index > -1
7472
- ? this.chunkMap[index]
7473
- : null;
7474
- };
7475
7527
  EasyDataTable.prototype.getCachedRows = function () {
7476
- return this.getCachedChunks()
7477
- .reduce(function (acc, v) { return acc.concat(v.rows); }, []);
7478
- };
7479
- EasyDataTable.prototype.getCachedChunks = function () {
7480
- return Object.values(this.chunkMap);
7528
+ return this.cachedRows;
7481
7529
  };
7482
7530
  EasyDataTable.prototype.totalIsKnown = function () {
7483
7531
  if (this.elasticChunks) {
@@ -7486,24 +7534,30 @@ var EasyDataTable = /** @class */ (function () {
7486
7534
  }
7487
7535
  return !this.needTotal;
7488
7536
  };
7537
+ EasyDataTable.prototype.fireUpdated = function () {
7538
+ if (this.onUpdate) {
7539
+ this.onUpdate(this);
7540
+ }
7541
+ };
7489
7542
  return EasyDataTable;
7490
7543
  }());
7491
7544
 
7492
7545
  //# sourceMappingURL=easy_data_table.js.map
7493
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(24)))
7546
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
7494
7547
 
7495
7548
  /***/ }),
7496
- /* 28 */
7549
+ /* 29 */
7497
7550
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
7498
7551
 
7499
7552
  "use strict";
7500
7553
  /* WEBPACK VAR INJECTION */(function(Promise) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EasyGrid; });
7501
7554
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
7502
- /* harmony import */ var _utils_drag_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
7555
+ /* harmony import */ var _utils_drag_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);
7503
7556
  /* harmony import */ var _utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
7504
7557
  /* harmony import */ var _utils_ui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6);
7505
- /* harmony import */ var _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8);
7506
- /* harmony import */ var _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9);
7558
+ /* harmony import */ var _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12);
7559
+ /* harmony import */ var _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(8);
7560
+ /* harmony import */ var _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(13);
7507
7561
  var __assign = (undefined && undefined.__assign) || function () {
7508
7562
  __assign = Object.assign || function(t) {
7509
7563
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -7515,6 +7569,14 @@ var __assign = (undefined && undefined.__assign) || function () {
7515
7569
  };
7516
7570
  return __assign.apply(this, arguments);
7517
7571
  };
7572
+ var __spreadArrays = (undefined && undefined.__spreadArrays) || function () {
7573
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
7574
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
7575
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
7576
+ r[k] = a[j];
7577
+ return r;
7578
+ };
7579
+
7518
7580
 
7519
7581
 
7520
7582
 
@@ -7547,14 +7609,42 @@ var EasyGrid = /** @class */ (function () {
7547
7609
  pageSize: 30,
7548
7610
  pageSizeItems: [20, 30, 50, 100, 200]
7549
7611
  },
7550
- addColumns: false,
7612
+ columnWidths: {
7613
+ autoResize: _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Once,
7614
+ stringColumns: {
7615
+ min: 100,
7616
+ max: 500,
7617
+ default: 250
7618
+ },
7619
+ numberColumns: {
7620
+ min: 60,
7621
+ default: 120
7622
+ },
7623
+ boolColumns: {
7624
+ min: 50,
7625
+ default: 80
7626
+ },
7627
+ dateColumns: {
7628
+ min: 80,
7629
+ default: 200
7630
+ },
7631
+ otherColumns: {
7632
+ min: 100,
7633
+ max: 500,
7634
+ default: 250
7635
+ },
7636
+ rowNumColumn: {
7637
+ min: 40,
7638
+ default: 60
7639
+ }
7640
+ },
7641
+ showPlusButton: false,
7551
7642
  viewportRowsCount: null,
7552
7643
  showActiveRow: true
7553
7644
  };
7554
7645
  this.rowsOnPagePromise = null;
7555
7646
  this.containerInitialHeight = 0;
7556
7647
  this.firstRender = true;
7557
- this.compareValues = this.strictCompare;
7558
7648
  this.prevRowTotals = null;
7559
7649
  this.landingIndex = -1;
7560
7650
  this.landingSlot = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
@@ -7566,18 +7656,55 @@ var EasyGrid = /** @class */ (function () {
7566
7656
  if (options && options.paging) {
7567
7657
  options.paging = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].assign(this.defaultDataGridOptions.paging, options.paging);
7568
7658
  }
7569
- this.options = __assign({}, this.defaultDataGridOptions, options);
7659
+ this.options = this.mergeOptions(options);
7660
+ this.processColumnWidthsOptions();
7570
7661
  if (!this.options.slot)
7571
7662
  throw Error('"slot" parameter is required to initialize EasyDataGrid');
7572
7663
  if (!this.options.dataTable)
7573
7664
  throw Error('"dataTable" parameter is required to initialize EasyDataGrid');
7574
7665
  this.dataTable = options.dataTable;
7575
7666
  this.eventEmitter = new _easydata_core__WEBPACK_IMPORTED_MODULE_0__["EventEmitter"](this);
7576
- this.cellRendererStore = new _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_5__[/* GridCellRendererStore */ "c"](options);
7577
- this.columns = new _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnList */ "c"](this.dataTable.columns, this);
7667
+ this.cellRendererStore = new _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_6__[/* GridCellRendererStore */ "c"](options);
7668
+ this.columns = new _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnList */ "c"](this.dataTable.columns, this);
7578
7669
  this.setSlot(this.options.slot);
7579
7670
  this.init(this.options);
7580
7671
  }
7672
+ EasyGrid.prototype.mergeOptions = function (options) {
7673
+ var colWidthOptions = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].assignDeep({}, this.defaultDataGridOptions.columnWidths, options.columnWidths);
7674
+ var pagingOptions = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].assignDeep({}, this.defaultDataGridOptions.paging, options.paging);
7675
+ var result = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].assign({}, this.defaultDataGridOptions, options);
7676
+ result.columnWidths = colWidthOptions;
7677
+ result.paging = pagingOptions;
7678
+ return result;
7679
+ };
7680
+ EasyGrid.prototype.processColumnWidthsOptions = function () {
7681
+ var widthOptions = this.options.columnWidths;
7682
+ if (!widthOptions)
7683
+ return;
7684
+ //string columns
7685
+ _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getStringDataTypes().forEach(function (dataType) {
7686
+ widthOptions[dataType] = __assign(__assign({}, widthOptions.stringColumns), widthOptions[dataType]);
7687
+ });
7688
+ //numeric columns
7689
+ _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getNumericDataTypes().forEach(function (dataType) {
7690
+ widthOptions[dataType] = __assign(__assign({}, widthOptions.numberColumns), widthOptions[dataType]);
7691
+ });
7692
+ //bool columns
7693
+ widthOptions[_easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Bool] = __assign(__assign({}, widthOptions.boolColumns), widthOptions[_easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Bool]);
7694
+ //date columns
7695
+ _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getDateDataTypes().forEach(function (dataType) {
7696
+ widthOptions[dataType] = __assign(__assign({}, widthOptions.dateColumns), widthOptions[dataType]);
7697
+ });
7698
+ //other columns
7699
+ var knownTypes = __spreadArrays(_easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getStringDataTypes(), _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getNumericDataTypes(), _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getDateDataTypes(), [
7700
+ _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Bool
7701
+ ]);
7702
+ _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getAllDataTypes().forEach(function (dataType) {
7703
+ if (!(dataType in knownTypes)) {
7704
+ widthOptions[dataType] = __assign(__assign({}, widthOptions.otherColumns), widthOptions[dataType]);
7705
+ }
7706
+ });
7707
+ };
7581
7708
  EasyGrid.prototype.setSlot = function (slot) {
7582
7709
  if (typeof slot === 'string') {
7583
7710
  if (slot.length) {
@@ -7610,8 +7737,8 @@ var EasyGrid = /** @class */ (function () {
7610
7737
  if (options.onRowDbClick) {
7611
7738
  this.addEventListener('rowDbClick', options.onRowDbClick);
7612
7739
  }
7613
- if (options.onAddColumnClick) {
7614
- this.addEventListener('addColumnClick', options.onAddColumnClick);
7740
+ if (options.onPlusButtonClick) {
7741
+ this.addEventListener('plusButtonClick', options.onPlusButtonClick);
7615
7742
  }
7616
7743
  if (options.onColumnChanged) {
7617
7744
  this.addEventListener('columnChanged', options.onColumnChanged);
@@ -7697,7 +7824,7 @@ var EasyGrid = /** @class */ (function () {
7697
7824
  };
7698
7825
  EasyGrid.prototype.render = function () {
7699
7826
  var _this = this;
7700
- if (!this.hasData() && !this.options.addColumns)
7827
+ if (!this.hasData() && !this.options.showPlusButton)
7701
7828
  return;
7702
7829
  this.containerInitialHeight = this.slot.clientHeight;
7703
7830
  this.rootDiv = document.createElement('div');
@@ -7714,18 +7841,27 @@ var EasyGrid = /** @class */ (function () {
7714
7841
  gridContainer.classList.add(this.cssPrefix + "-container");
7715
7842
  gridContainer.appendChild(this.rootDiv);
7716
7843
  this.slot.appendChild(gridContainer);
7844
+ var needAutoResize = this.options.columnWidths.autoResize !== _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Never;
7717
7845
  if (this.rowsOnPagePromise) {
7718
7846
  this.rowsOnPagePromise
7719
7847
  .then(function () { return _this.updateHeight(); })
7720
7848
  .then(function () {
7721
7849
  _this.firstRender = false;
7722
7850
  _this.rowsOnPagePromise = null;
7851
+ if (needAutoResize) {
7852
+ _this.resizeColumns();
7853
+ }
7723
7854
  });
7724
7855
  }
7725
7856
  else {
7726
7857
  setTimeout(function () {
7727
- _this.updateHeight();
7728
- _this.firstRender = false;
7858
+ _this.updateHeight()
7859
+ .then(function () {
7860
+ _this.firstRender = false;
7861
+ if (needAutoResize) {
7862
+ _this.resizeColumns();
7863
+ }
7864
+ });
7729
7865
  }, 100);
7730
7866
  }
7731
7867
  };
@@ -7736,14 +7872,14 @@ var EasyGrid = /** @class */ (function () {
7736
7872
  var firstRow = _this.bodyCellContainerDiv.firstElementChild;
7737
7873
  var rowHeight = firstRow ? firstRow.offsetHeight : DEFAULT_ROW_HEIGHT;
7738
7874
  var rowCount = _this.options.viewportRowsCount; // || DEFAULT_ROW_COUNT;
7739
- var bodyHeight_1 = rowHeight * rowCount;
7740
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyDiv)
7741
- .setStyle('height', bodyHeight_1 + "px");
7875
+ var viewportHeight_1 = rowHeight * rowCount;
7876
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyViewportDiv)
7877
+ .setStyle('height', viewportHeight_1 + "px");
7742
7878
  setTimeout(function () {
7743
7879
  var sbHeight = _this.bodyViewportDiv.offsetHeight - _this.bodyViewportDiv.clientHeight;
7744
- bodyHeight_1 = bodyHeight_1 + sbHeight;
7745
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyDiv)
7746
- .setStyle('height', bodyHeight_1 + "px");
7880
+ viewportHeight_1 = viewportHeight_1 + sbHeight;
7881
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyViewportDiv)
7882
+ .setStyle('height', viewportHeight_1 + "px");
7747
7883
  resolve();
7748
7884
  }, 100);
7749
7885
  return;
@@ -7762,6 +7898,12 @@ var EasyGrid = /** @class */ (function () {
7762
7898
  }
7763
7899
  });
7764
7900
  };
7901
+ EasyGrid.prototype.getContainerWidth = function () {
7902
+ return this.columns.getItems()
7903
+ .filter(function (col) { return col.isVisible; })
7904
+ .map(function (col) { return col.width; })
7905
+ .reduce(function (sum, current) { return sum + current; });
7906
+ };
7765
7907
  EasyGrid.prototype.renderHeader = function () {
7766
7908
  var _this = this;
7767
7909
  this.headerDiv = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
@@ -7784,10 +7926,10 @@ var EasyGrid = /** @class */ (function () {
7784
7926
  _this.headerRowDiv.appendChild(hd);
7785
7927
  if (column.isRowNum) {
7786
7928
  Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(hd)
7787
- .addChildElement(_this.renderAddColumnButton());
7929
+ .addChildElement(_this.renderHeaderButtons());
7788
7930
  }
7789
7931
  });
7790
- var containerWidth = this.columns.getItems().map(function (column) { return column.width; }).reduce(function (sum, current) { return sum + current; });
7932
+ var containerWidth = this.getContainerWidth();
7791
7933
  Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(this.headerCellContainerDiv)
7792
7934
  .setStyle('width', containerWidth + "px");
7793
7935
  };
@@ -7798,7 +7940,7 @@ var EasyGrid = /** @class */ (function () {
7798
7940
  var _this = this;
7799
7941
  var colBuilder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
7800
7942
  .addClass(this.cssPrefix + "-header-cell")
7801
- .data('col-idx', "" + (index + 1))
7943
+ .data('col-idx', "" + index)
7802
7944
  .setStyle('width', column.width + "px");
7803
7945
  if (column.dataColumn) {
7804
7946
  colBuilder
@@ -7812,6 +7954,11 @@ var EasyGrid = /** @class */ (function () {
7812
7954
  .addClass(this.cssPrefix + "-header-cell-label")
7813
7955
  .text(column.label);
7814
7956
  }
7957
+ if (column.description) {
7958
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', colDiv)
7959
+ .addClass('question-mark')
7960
+ .title(column.description);
7961
+ }
7815
7962
  if (this.options.allowDragDrop) {
7816
7963
  _utils_drag_manager__WEBPACK_IMPORTED_MODULE_1__[/* eqDragManager */ "d"].registerDraggableItem({
7817
7964
  element: colDiv,
@@ -7831,14 +7978,6 @@ var EasyGrid = /** @class */ (function () {
7831
7978
  }
7832
7979
  return colDiv;
7833
7980
  };
7834
- EasyGrid.prototype.strictCompare = function (value1, value2) {
7835
- return value1 !== value2;
7836
- };
7837
- EasyGrid.prototype.caseInsensitiveCompare = function (value1, value2) {
7838
- var val1 = (typeof value1 === 'string') ? value1.toLowerCase() : value1;
7839
- var val2 = (typeof value2 === 'string') ? value2.toLowerCase() : value2;
7840
- return val1 !== val2;
7841
- };
7842
7981
  EasyGrid.prototype.renderBody = function () {
7843
7982
  var _this = this;
7844
7983
  this.bodyDiv = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
@@ -7852,10 +7991,6 @@ var EasyGrid = /** @class */ (function () {
7852
7991
  .addClass(this.cssPrefix + "-cell-container")
7853
7992
  .toDOM();
7854
7993
  var showAggrs = this.canShowAggregates();
7855
- this.compareValues = this.caseInsensitiveCompare;
7856
- if (showAggrs && this.options.aggregates.settings.caseSensitiveGroups) {
7857
- this.compareValues = this.strictCompare;
7858
- }
7859
7994
  if (this.dataTable) {
7860
7995
  this.showProgress();
7861
7996
  this.rowsOnPagePromise = this.getRowsToRender()
@@ -7865,15 +8000,22 @@ var EasyGrid = /** @class */ (function () {
7865
8000
  //prevent double rendering (bad solution, we have to figure out how to avoid this behavior properly)
7866
8001
  _this.bodyCellContainerDiv.innerHTML = '';
7867
8002
  _this.prevRowTotals = null;
8003
+ var rowsToRender = 0;
7868
8004
  if (rows.length) {
7869
8005
  var groups_1 = showAggrs
7870
8006
  ? _this.options.aggregates.settings.getGroups()
7871
8007
  : [];
8008
+ rowsToRender = (rows.length < _this.pagination.pageSize)
8009
+ ? rows.length
8010
+ : _this.pagination.pageSize;
7872
8011
  rows.forEach(function (row, index) {
7873
8012
  if (showAggrs)
7874
8013
  _this.updateTotalsState(groups_1, row);
7875
- var tr = _this.renderRow(row, index);
7876
- _this.bodyCellContainerDiv.appendChild(tr);
8014
+ //we don't actually render the last row
8015
+ if (index < rowsToRender) {
8016
+ var tr = _this.renderRow(row, index);
8017
+ _this.bodyCellContainerDiv.appendChild(tr);
8018
+ }
7877
8019
  });
7878
8020
  var showGrandTotalsOnEachPage = _this.options.aggregates && _this.options.aggregates.showGrandTotalsOnEachPage;
7879
8021
  if (showAggrs && (_this.isLastPage() || showGrandTotalsOnEachPage)) {
@@ -7881,11 +8023,10 @@ var EasyGrid = /** @class */ (function () {
7881
8023
  _this.updateTotalsState(groups_1, row, true);
7882
8024
  }
7883
8025
  }
7884
- var containerWidth = _this.columns.getItems()
7885
- .map(function (column) { return column.width; }).reduce(function (sum, current) { return sum + current; });
8026
+ var containerWidth = _this.getContainerWidth();
7886
8027
  Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyCellContainerDiv)
7887
8028
  .setStyle('width', containerWidth + "px");
7888
- return rows.length;
8029
+ return rowsToRender;
7889
8030
  })
7890
8031
  .catch(function (error) { console.error(error); return 0; });
7891
8032
  }
@@ -7893,7 +8034,7 @@ var EasyGrid = /** @class */ (function () {
7893
8034
  Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.headerViewportDiv)
7894
8035
  .setStyle('margin-left', "-" + _this.bodyViewportDiv.scrollLeft + "px");
7895
8036
  });
7896
- this.bodyViewportDiv.addEventListener('keydown', this.onVieportKeydown.bind(this));
8037
+ this.bodyViewportDiv.addEventListener('keydown', this.onViewportKeydown.bind(this));
7897
8038
  };
7898
8039
  EasyGrid.prototype.isLastPage = function () {
7899
8040
  if (this.dataTable.elasticChunks) {
@@ -7919,7 +8060,7 @@ var EasyGrid = /** @class */ (function () {
7919
8060
  var group = groups[level - 1];
7920
8061
  for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
7921
8062
  var col = _a[_i];
7922
- if (this.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {
8063
+ if (!aggrSettings.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {
7923
8064
  changeLevel = level;
7924
8065
  break;
7925
8066
  }
@@ -7980,8 +8121,8 @@ var EasyGrid = /** @class */ (function () {
7980
8121
  });
7981
8122
  var aggrContainer = this.options.aggregates.calculator.getAggrContainer();
7982
8123
  var aggrCols = aggrSettings.getAggregates().map(function (c) { return c.colId; });
7983
- var key = this.buildGroupKey(group, row);
7984
- aggrContainer.getAggregates(level, key)
8124
+ var key = aggrSettings.buildGroupKey(group, row);
8125
+ aggrContainer.getAggregateData(level, key)
7985
8126
  .then(function (values) {
7986
8127
  for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {
7987
8128
  var aggrColId = aggrCols_1[_i];
@@ -8022,34 +8163,20 @@ var EasyGrid = /** @class */ (function () {
8022
8163
  }
8023
8164
  }
8024
8165
  if (groupFooterTemplate) {
8025
- var cellDiv_1 = _this.renderCell(column, colIndex, val, rowElement);
8166
+ var cellDiv_1 = _this.renderCell(column, index, val, rowElement);
8026
8167
  var innerCell = cellDiv_1.firstChild;
8027
8168
  val = innerCell.innerHTML;
8028
8169
  val = _this.applyGroupColumnTemplate(groupFooterTemplate, val, values[aggrSettings.COUNT_FIELD_NAME]);
8029
8170
  }
8030
8171
  }
8031
- var cellDiv = _this.renderCell(column, colIndex, val, rowElement);
8172
+ var cellDiv = _this.renderCell(column, index, val, rowElement);
8032
8173
  rowElement.appendChild(cellDiv);
8033
8174
  });
8034
8175
  })
8035
8176
  .catch(function (error) { return console.error(error); });
8036
8177
  return rowElement;
8037
8178
  };
8038
- EasyGrid.prototype.buildGroupKey = function (group, row) {
8039
- var aggrSettings = this.options.aggregates.settings;
8040
- var caseInsensitive = aggrSettings && !aggrSettings.caseSensitiveGroups;
8041
- var result = {};
8042
- for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
8043
- var colId = _a[_i];
8044
- var keyVal = row.getValue(colId);
8045
- if (caseInsensitive && typeof (keyVal) === 'string') {
8046
- keyVal = keyVal.toLowerCase();
8047
- }
8048
- result[colId] = keyVal;
8049
- }
8050
- return result;
8051
- };
8052
- EasyGrid.prototype.onVieportKeydown = function (ev) {
8179
+ EasyGrid.prototype.onViewportKeydown = function (ev) {
8053
8180
  if (this.options.showActiveRow) {
8054
8181
  var rowCount = this.bodyCellContainerDiv.querySelectorAll("." + this.cssPrefix + "-row").length;
8055
8182
  var newValue = void 0;
@@ -8103,13 +8230,17 @@ var EasyGrid = /** @class */ (function () {
8103
8230
  }
8104
8231
  }
8105
8232
  };
8233
+ /** Returns a promise with the list of the rows to render on one page.
8234
+ * The list contains pageSize+1 row to make it possible
8235
+ * to render the totals row (if it appears to be on the edge between pages)
8236
+ */
8106
8237
  EasyGrid.prototype.getRowsToRender = function () {
8107
8238
  if (this.options.paging.enabled === false) {
8108
8239
  return Promise.resolve(this.dataTable.getCachedRows());
8109
8240
  }
8110
8241
  return this.dataTable.getRows({
8111
- page: this.pagination.page,
8112
- pageSize: this.pagination.pageSize
8242
+ offset: (this.pagination.page - 1) * this.pagination.pageSize,
8243
+ limit: this.pagination.pageSize + 1
8113
8244
  })
8114
8245
  .catch(function (error) {
8115
8246
  console.error(error);
@@ -8134,23 +8265,26 @@ var EasyGrid = /** @class */ (function () {
8134
8265
  var pageInfoDiv = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
8135
8266
  .addClass(this.cssPrefix + "-page-info")
8136
8267
  .toDOM();
8137
- var fistPageRecordNum = count
8138
- ? (this.pagination.page - 1) * this.pagination.pageSize + 1
8139
- : 0;
8140
- var lastPageRecordNum = count
8141
- ? fistPageRecordNum + count - 1
8142
- : 0;
8143
- var totalStr = this.dataTable.getTotal().toString();
8144
- if (this.dataTable.elasticChunks) {
8145
- var count_1 = this.dataTable.getCachedCount();
8146
- var total = this.dataTable.getTotal();
8147
- if (count_1 !== total)
8148
- totalStr = '?';
8149
- }
8150
- pageInfoDiv.innerHTML = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].getText('GridPageInfo')
8151
- .replace('{FirstPageRecordNum}', "<span>" + fistPageRecordNum.toString() + "</span>")
8152
- .replace('{LastPageRecordNum}', "<span>" + lastPageRecordNum.toString() + "</span>")
8153
- .replace('{Total}', "<span>" + totalStr + "</span>");
8268
+ var rowCount = this.dataTable.getTotal();
8269
+ if (rowCount > 0) {
8270
+ var fistPageRecordNum = count
8271
+ ? (this.pagination.page - 1) * this.pagination.pageSize + 1
8272
+ : 0;
8273
+ var lastPageRecordNum = count
8274
+ ? fistPageRecordNum + count - 1
8275
+ : 0;
8276
+ var totalStr = this.dataTable.getTotal().toString();
8277
+ if (this.dataTable.elasticChunks) {
8278
+ var count_1 = this.dataTable.getCachedCount();
8279
+ var total = this.dataTable.getTotal();
8280
+ if (count_1 !== total)
8281
+ totalStr = '?';
8282
+ }
8283
+ pageInfoDiv.innerHTML = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].getText('GridPageInfo')
8284
+ .replace('{FirstPageRecordNum}', "<span>" + fistPageRecordNum.toString() + "</span>")
8285
+ .replace('{LastPageRecordNum}', "<span>" + lastPageRecordNum.toString() + "</span>")
8286
+ .replace('{Total}', "<span>" + totalStr + "</span>");
8287
+ }
8154
8288
  return pageInfoDiv;
8155
8289
  };
8156
8290
  EasyGrid.prototype.showProgress = function () {
@@ -8205,13 +8339,13 @@ var EasyGrid = /** @class */ (function () {
8205
8339
  if (this.options.showActiveRow && index == this.activeRowIndex) {
8206
8340
  rowBuilder.addClass(this.cssPrefix + "-row-active");
8207
8341
  }
8208
- this.columns.getItems().forEach(function (column) {
8342
+ this.columns.getItems().forEach(function (column, index) {
8209
8343
  if (!column.isVisible) {
8210
8344
  return;
8211
8345
  }
8212
8346
  var colindex = column.isRowNum ? -1 : _this.dataTable.columns.getIndex(column.dataColumn.id);
8213
8347
  var val = column.isRowNum ? indexGlobal + 1 : row.getValue(colindex);
8214
- rowElement.appendChild(_this.renderCell(column, colindex, val, rowElement));
8348
+ rowElement.appendChild(_this.renderCell(column, index, val, rowElement));
8215
8349
  });
8216
8350
  return rowElement;
8217
8351
  };
@@ -8221,13 +8355,13 @@ var EasyGrid = /** @class */ (function () {
8221
8355
  .data('col-idx', "" + colIndex)
8222
8356
  .attr('tabindex', '-1')
8223
8357
  .setStyle('width', column.width + "px");
8224
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnAlign */ "b"].LEFT) {
8358
+ if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnAlign */ "b"].LEFT) {
8225
8359
  builder.addClass(this.cssPrefix + "-cell-align-left");
8226
8360
  }
8227
- else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnAlign */ "b"].RIGHT) {
8361
+ else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnAlign */ "b"].RIGHT) {
8228
8362
  builder.addClass(this.cssPrefix + "-cell-align-right");
8229
8363
  }
8230
- else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnAlign */ "b"].CENTER) {
8364
+ else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnAlign */ "b"].CENTER) {
8231
8365
  builder.addClass(this.cssPrefix + "-cell-align-center");
8232
8366
  }
8233
8367
  if (column.cellRenderer) {
@@ -8245,7 +8379,8 @@ var EasyGrid = /** @class */ (function () {
8245
8379
  var _this = this;
8246
8380
  var paginateDiv = document.createElement('div');
8247
8381
  paginateDiv.className = this.cssPrefix + "-pagination-wrapper";
8248
- if (this.options.paging && this.options.paging.enabled) {
8382
+ var rowCount = this.dataTable.getTotal();
8383
+ if (this.options.paging && this.options.paging.enabled && rowCount > 0) {
8249
8384
  var prefix_1 = this.paginationOptions.useBootstrap ? '' : this.cssPrefix + "-";
8250
8385
  var buttonClickHandler_1 = function (ev) {
8251
8386
  var element = ev.target;
@@ -8371,18 +8506,18 @@ var EasyGrid = /** @class */ (function () {
8371
8506
  EasyGrid.prototype.removeEventListener = function (eventType, handlerId) {
8372
8507
  this.eventEmitter.unsubscribe(eventType, handlerId);
8373
8508
  };
8374
- EasyGrid.prototype.renderAddColumnButton = function () {
8509
+ EasyGrid.prototype.renderHeaderButtons = function () {
8375
8510
  var _this = this;
8376
- if (this.options.addColumns) {
8511
+ if (this.options.showPlusButton) {
8377
8512
  return Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
8378
- .addClass(this.cssPrefix + "-addrow")
8379
- .title(this.options.addColumnsTitle || 'Add column')
8513
+ .addClass(this.cssPrefix + "-header-btn-plus")
8514
+ .title(this.options.plusButtonTitle || 'Add')
8380
8515
  .addChild('a', function (builder) { return builder
8381
8516
  .attr('href', 'javascript:void(0)')
8382
8517
  .on('click', function (e) {
8383
8518
  e.preventDefault();
8384
8519
  _this.fireEvent({
8385
- type: 'addColumnClick',
8520
+ type: 'plusButtonClick',
8386
8521
  sourceEvent: e
8387
8522
  });
8388
8523
  }); })
@@ -8483,14 +8618,105 @@ var EasyGrid = /** @class */ (function () {
8483
8618
  EasyGrid.prototype.focus = function () {
8484
8619
  this.bodyViewportDiv.focus();
8485
8620
  };
8621
+ EasyGrid.prototype.resizeColumns = function () {
8622
+ if (this.options.columnWidths.autoResize === _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Never)
8623
+ return;
8624
+ var containerWidth = this.bodyCellContainerDiv.style.width;
8625
+ this.bodyCellContainerDiv.style.visibility = 'hidden';
8626
+ this.bodyCellContainerDiv.style.width = '1px';
8627
+ //this.headerRowDiv.style.visibility = 'hidden';
8628
+ this.headerRowDiv.style.width = '1px';
8629
+ var sumWidth = 0;
8630
+ var columns = this.columns.getItems();
8631
+ var headerCells = this.headerCellContainerDiv.querySelectorAll("." + this.cssPrefix + "-header-cell");
8632
+ var headerIdx = 0;
8633
+ var _loop_1 = function (idx) {
8634
+ var column = columns[idx];
8635
+ if (!column.isVisible)
8636
+ return "continue";
8637
+ var calculatedWidth = this_1.options.columnWidths.autoResize !== _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Always && column.dataColumn
8638
+ ? column.dataColumn.calculatedWidth
8639
+ : 0;
8640
+ var cellValues = this_1.bodyCellContainerDiv.querySelectorAll("." + this_1.cssPrefix + "-cell[data-col-idx=\"" + idx + "\"] > ." + this_1.cssPrefix + "-cell-value");
8641
+ var maxWidth = 0;
8642
+ if (calculatedWidth > 0) {
8643
+ sumWidth += calculatedWidth;
8644
+ column.width = calculatedWidth;
8645
+ cellValues.forEach(function (value) {
8646
+ value.parentElement.style.width = calculatedWidth + "px";
8647
+ });
8648
+ headerCells[headerIdx].style.width = calculatedWidth + "px";
8649
+ }
8650
+ else {
8651
+ if (cellValues.length == 0) {
8652
+ headerCells[headerIdx].style.width = null;
8653
+ headerCells[headerIdx].style.whiteSpace = 'nowrap';
8654
+ }
8655
+ maxWidth = headerCells[headerIdx].offsetWidth;
8656
+ if (cellValues.length > 0) {
8657
+ cellValues.forEach(function (value) {
8658
+ value.parentElement.style.width = null;
8659
+ var width = value.parentElement.offsetWidth;
8660
+ if (width > maxWidth) {
8661
+ maxWidth = width;
8662
+ }
8663
+ });
8664
+ maxWidth += 3;
8665
+ var maxOption = column.isRowNum
8666
+ ? this_1.options.columnWidths.rowNumColumn.max || 500
8667
+ : this_1.options.columnWidths[column.dataColumn.type].max || 2000;
8668
+ var minOption = column.isRowNum
8669
+ ? this_1.options.columnWidths.rowNumColumn.min || 0
8670
+ : this_1.options.columnWidths[column.dataColumn.type].min || 20;
8671
+ if (maxWidth > maxOption) {
8672
+ maxWidth = maxOption;
8673
+ }
8674
+ if (maxWidth < minOption) {
8675
+ maxWidth = minOption;
8676
+ }
8677
+ if (_easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].isNumericType(column.type)) {
8678
+ //increase the calculated width in 1.3 times for numeric columns
8679
+ maxWidth = Math.round(maxWidth * 1.3);
8680
+ }
8681
+ sumWidth += maxWidth;
8682
+ column.width = maxWidth;
8683
+ cellValues.forEach(function (value) {
8684
+ value.parentElement.style.width = maxWidth + "px";
8685
+ });
8686
+ headerCells[headerIdx].style.width = maxWidth + "px";
8687
+ if (column.dataColumn) {
8688
+ column.dataColumn.calculatedWidth = maxWidth;
8689
+ }
8690
+ }
8691
+ else {
8692
+ sumWidth += maxWidth;
8693
+ }
8694
+ }
8695
+ headerIdx++;
8696
+ };
8697
+ var this_1 = this;
8698
+ for (var idx = 0; idx < this.columns.count; idx++) {
8699
+ _loop_1(idx);
8700
+ }
8701
+ if (sumWidth > 0) {
8702
+ this.bodyCellContainerDiv.style.width = sumWidth + "px";
8703
+ this.headerCellContainerDiv.style.width = sumWidth + "px";
8704
+ }
8705
+ else {
8706
+ this.bodyCellContainerDiv.style.width = containerWidth;
8707
+ this.headerCellContainerDiv.style.width = containerWidth;
8708
+ }
8709
+ this.bodyCellContainerDiv.style.visibility = null;
8710
+ this.headerRowDiv.removeAttribute('style');
8711
+ };
8486
8712
  return EasyGrid;
8487
8713
  }());
8488
8714
 
8489
8715
  //# sourceMappingURL=easy_grid.js.map
8490
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(29)))
8716
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
8491
8717
 
8492
8718
  /***/ }),
8493
- /* 29 */
8719
+ /* 30 */
8494
8720
  /***/ (function(module, exports, __webpack_require__) {
8495
8721
 
8496
8722
  /* WEBPACK VAR INJECTION */(function(process, global) {/*!
@@ -9667,10 +9893,10 @@ return Promise$1;
9667
9893
 
9668
9894
  //# sourceMappingURL=es6-promise.map
9669
9895
 
9670
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25), __webpack_require__(26)))
9896
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(26), __webpack_require__(27)))
9671
9897
 
9672
9898
  /***/ }),
9673
- /* 30 */
9899
+ /* 31 */
9674
9900
  /***/ (function(module, exports, __webpack_require__) {
9675
9901
 
9676
9902
  /* WEBPACK VAR INJECTION */(function(process, global) {/*!
@@ -10847,10 +11073,10 @@ return Promise$1;
10847
11073
 
10848
11074
  //# sourceMappingURL=es6-promise.map
10849
11075
 
10850
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(39), __webpack_require__(40)))
11076
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40), __webpack_require__(41)))
10851
11077
 
10852
11078
  /***/ }),
10853
- /* 31 */
11079
+ /* 32 */
10854
11080
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10855
11081
 
10856
11082
  "use strict";
@@ -10881,13 +11107,13 @@ var HttpActionResult = /** @class */ (function () {
10881
11107
  //# sourceMappingURL=http_action_result.js.map
10882
11108
 
10883
11109
  /***/ }),
10884
- /* 32 */
11110
+ /* 33 */
10885
11111
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10886
11112
 
10887
11113
  "use strict";
10888
11114
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DateTimeValidator; });
10889
11115
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
10890
- /* harmony import */ var _validator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
11116
+ /* harmony import */ var _validator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
10891
11117
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
10892
11118
  var __extends = (undefined && undefined.__extends) || (function () {
10893
11119
  var extendStatics = function (d, b) {
@@ -10935,48 +11161,48 @@ var DateTimeValidator = /** @class */ (function (_super) {
10935
11161
  //# sourceMappingURL=datetime_validator.js.map
10936
11162
 
10937
11163
  /***/ }),
10938
- /* 33 */
11164
+ /* 34 */
10939
11165
  /***/ (function(module, exports, __webpack_require__) {
10940
11166
 
10941
- __webpack_require__(34);
10942
- module.exports = __webpack_require__(41);
11167
+ __webpack_require__(35);
11168
+ module.exports = __webpack_require__(42);
10943
11169
 
10944
11170
 
10945
11171
  /***/ }),
10946
- /* 34 */
11172
+ /* 35 */
10947
11173
  /***/ (function(module, exports, __webpack_require__) {
10948
11174
 
10949
- __webpack_require__(35);
10950
11175
  __webpack_require__(36);
10951
11176
  __webpack_require__(37);
10952
- __webpack_require__(38);
11177
+ __webpack_require__(38);
11178
+ __webpack_require__(39);
10953
11179
 
10954
11180
  /***/ }),
10955
- /* 35 */
11181
+ /* 36 */
10956
11182
  /***/ (function(module, exports, __webpack_require__) {
10957
11183
 
10958
11184
  // extracted by mini-css-extract-plugin
10959
11185
 
10960
11186
  /***/ }),
10961
- /* 36 */
11187
+ /* 37 */
10962
11188
  /***/ (function(module, exports, __webpack_require__) {
10963
11189
 
10964
11190
  // extracted by mini-css-extract-plugin
10965
11191
 
10966
11192
  /***/ }),
10967
- /* 37 */
11193
+ /* 38 */
10968
11194
  /***/ (function(module, exports, __webpack_require__) {
10969
11195
 
10970
11196
  // extracted by mini-css-extract-plugin
10971
11197
 
10972
11198
  /***/ }),
10973
- /* 38 */
11199
+ /* 39 */
10974
11200
  /***/ (function(module, exports, __webpack_require__) {
10975
11201
 
10976
11202
  // extracted by mini-css-extract-plugin
10977
11203
 
10978
11204
  /***/ }),
10979
- /* 39 */
11205
+ /* 40 */
10980
11206
  /***/ (function(module, exports) {
10981
11207
 
10982
11208
  // shim for using process in browser
@@ -11166,7 +11392,7 @@ process.umask = function() { return 0; };
11166
11392
 
11167
11393
 
11168
11394
  /***/ }),
11169
- /* 40 */
11395
+ /* 41 */
11170
11396
  /***/ (function(module, exports) {
11171
11397
 
11172
11398
  var g;
@@ -11192,7 +11418,7 @@ module.exports = g;
11192
11418
 
11193
11419
 
11194
11420
  /***/ }),
11195
- /* 41 */
11421
+ /* 42 */
11196
11422
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
11197
11423
 
11198
11424
  "use strict";
@@ -11221,17 +11447,17 @@ __webpack_require__.d(public_api_namespaceObject, "EasyDataViewDispatcher", func
11221
11447
  __webpack_require__.d(public_api_namespaceObject, "RootDataView", function() { return root_data_view_RootDataView; });
11222
11448
  __webpack_require__.d(public_api_namespaceObject, "EntityDataView", function() { return entity_data_view_EntityDataView; });
11223
11449
 
11224
- // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/public_api.js + 9 modules
11450
+ // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/public_api.js + 10 modules
11225
11451
  var public_api = __webpack_require__(0);
11226
11452
 
11227
11453
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/public_api.js + 7 modules
11228
11454
  var lib_public_api = __webpack_require__(3);
11229
11455
 
11230
11456
  // EXTERNAL MODULE: ./dist/lib/filter/text_data_filter.js
11231
- var text_data_filter = __webpack_require__(21);
11457
+ var text_data_filter = __webpack_require__(22);
11232
11458
 
11233
11459
  // EXTERNAL MODULE: ./dist/lib/form/entity_edit_form.js
11234
- var entity_edit_form = __webpack_require__(22);
11460
+ var entity_edit_form = __webpack_require__(23);
11235
11461
 
11236
11462
  // EXTERNAL MODULE: ./dist/lib/utils/utils.js
11237
11463
  var utils = __webpack_require__(7);
@@ -11505,12 +11731,13 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11505
11731
  var lookupTable = new public_api["EasyDataTable"]({
11506
11732
  loader: {
11507
11733
  loadChunk: function (chunkParams) { return _this.context.getDataLoader()
11508
- .loadChunk(__assign({}, chunkParams, { id: lookupEntity.id })); }
11734
+ .loadChunk(__assign(__assign({}, chunkParams), { id: lookupEntity.id })); }
11509
11735
  }
11510
11736
  });
11511
11737
  _this.context.getDataLoader()
11512
- .loadChunk({ offset: 0, limit: 1000, needTotal: true, entityId: lookupEntity.id })
11738
+ .loadChunk({ offset: 0, limit: 1000, needTotal: true, sourceId: lookupEntity.id })
11513
11739
  .then(function (data) {
11740
+ var _a;
11514
11741
  var _loop_1 = function (col) {
11515
11742
  var attrs = lookupEntity.attributes.filter(function (attr) {
11516
11743
  return attr.id == col.id && (attr.isPrimaryKey || attr.showInLookup);
@@ -11519,13 +11746,13 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11519
11746
  lookupTable.columns.add(col);
11520
11747
  }
11521
11748
  };
11522
- for (var _i = 0, _a = data.table.columns.getItems(); _i < _a.length; _i++) {
11523
- var col = _a[_i];
11749
+ for (var _i = 0, _b = data.table.columns.getItems(); _i < _b.length; _i++) {
11750
+ var col = _b[_i];
11524
11751
  _loop_1(col);
11525
11752
  }
11526
11753
  lookupTable.setTotal(data.total);
11527
- for (var _b = 0, _c = data.table.getCachedRows(); _b < _c.length; _b++) {
11528
- var row = _c[_b];
11754
+ for (var _c = 0, _d = data.table.getCachedRows(); _c < _d.length; _c++) {
11755
+ var row = _d[_c];
11529
11756
  lookupTable.addRow(row);
11530
11757
  }
11531
11758
  var ds = new lib_public_api["DefaultDialogService"]();
@@ -11564,7 +11791,9 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11564
11791
  .join(', ');
11565
11792
  };
11566
11793
  if (selectedValue) {
11567
- _this.context.getEntity(selectedValue, lookupEntity.id)
11794
+ var attr_1 = lookupEntity.getFirstPrimaryAttr();
11795
+ var key = attr_1.id.substring(attr_1.id.lastIndexOf('.') + 1);
11796
+ _this.context.fetchRecord((_a = {}, _a[key] = selectedValue, _a), lookupEntity.id)
11568
11797
  .then(function (data) {
11569
11798
  if (data.entity) {
11570
11799
  updateSelectedValue(data.entity);
@@ -11612,7 +11841,7 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11612
11841
  }); });
11613
11842
  });
11614
11843
  };
11615
- EntityEditFormBuilder.prototype.setupDateTimeField = function (parent, attr, readOnly, value) {
11844
+ EntityEditFormBuilder.prototype.setupDateTimeField = function (parent, attr, value, readOnly, hidden) {
11616
11845
  var _this = this;
11617
11846
  var horizClass = isIE
11618
11847
  ? 'kfrm-fields-ie is-horizontal'
@@ -11633,6 +11862,8 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11633
11862
  .addClass(horizClass)
11634
11863
  .addChild('input', function (b) {
11635
11864
  inputEl = b.toDOM();
11865
+ b.name(attr.id);
11866
+ b.type(hidden ? 'hidden' : _this.resolveInputType(attr.dataType));
11636
11867
  if (readOnly) {
11637
11868
  b.attr('readonly', '');
11638
11869
  }
@@ -11656,8 +11887,6 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11656
11887
  }
11657
11888
  });
11658
11889
  }
11659
- b.name(attr.id);
11660
- b.type(_this.resolveInputType(attr.dataType));
11661
11890
  b.value((public_api["utils"].IsDefinedAndNotNull(value)
11662
11891
  ? public_api["utils"].dateTimeToStr(value, editFormat)
11663
11892
  : ''));
@@ -11699,7 +11928,7 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11699
11928
  }).toDOM(); });
11700
11929
  });
11701
11930
  };
11702
- EntityEditFormBuilder.prototype.setupListField = function (parent, attr, readOnly, values, value) {
11931
+ EntityEditFormBuilder.prototype.setupListField = function (parent, attr, value, values, readOnly) {
11703
11932
  var _this = this;
11704
11933
  Object(lib_public_api["domel"])(parent)
11705
11934
  .addChild('div', function (b) { return b
@@ -11732,12 +11961,14 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11732
11961
  b.attr('accept', accept);
11733
11962
  });
11734
11963
  };
11735
- EntityEditFormBuilder.prototype.setupTextField = function (parent, attr, readOnly, value) {
11964
+ EntityEditFormBuilder.prototype.setupTextField = function (parent, attr, value, readOnly, hidden) {
11736
11965
  var _this = this;
11737
11966
  Object(lib_public_api["domel"])(parent)
11738
11967
  .addChild('input', function (b) {
11739
- if (readOnly)
11968
+ if (readOnly) {
11740
11969
  b.attr('readonly', '');
11970
+ }
11971
+ b.type(hidden ? 'hidden' : _this.resolveInputType(attr.dataType));
11741
11972
  b.name(attr.id)
11742
11973
  .type(_this.resolveInputType(attr.dataType));
11743
11974
  if (attr.dataType == public_api["DataType"].Bool) {
@@ -11752,7 +11983,7 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11752
11983
  }
11753
11984
  });
11754
11985
  };
11755
- EntityEditFormBuilder.prototype.setupTextArea = function (parent, attr, readOnly, value) {
11986
+ EntityEditFormBuilder.prototype.setupTextArea = function (parent, attr, value, readOnly) {
11756
11987
  // feature: modify size in value editor ??
11757
11988
  Object(lib_public_api["domel"])(parent)
11758
11989
  .addChild('textarea', function (b) {
@@ -11760,6 +11991,9 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11760
11991
  b.attr('readonly', '');
11761
11992
  b.attr('name', attr.id);
11762
11993
  b.setStyle('height', "120px");
11994
+ b.value(public_api["utils"].IsDefinedAndNotNull(value)
11995
+ ? value.toString()
11996
+ : '');
11763
11997
  });
11764
11998
  };
11765
11999
  EntityEditFormBuilder.prototype.addFormField = function (parent, attr) {
@@ -11775,19 +12009,28 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11775
12009
  .toDOM();
11776
12010
  }
11777
12011
  Object(lib_public_api["domel"])(parent)
11778
- .addChild('label', function (b) { return b
11779
- .attr('for', attr.id)
11780
- .addHtml(attr.caption + " " + (required ? '<sup style="color: red">*</sup>' : '') + ": "); });
12012
+ .addChild('label', function (b) {
12013
+ b.attr('for', attr.id);
12014
+ b.addHtml(attr.caption + " " + (required ? '<sup style="color: red">*</sup>' : '') + ": ");
12015
+ if (attr.description) {
12016
+ b.addChild('div', function (b) { return b
12017
+ .attr('title', attr.description)
12018
+ .addClass('question-mark')
12019
+ .setStyle('vertical-align', 'middle')
12020
+ .setStyle('display', 'inline-block'); });
12021
+ }
12022
+ });
12023
+ var hidden = attr.isPrimaryKey;
11781
12024
  if (attr.kind === public_api["EntityAttrKind"].Lookup) {
11782
12025
  this.setupLookupField(parent, attr, readOnly, value);
11783
12026
  return;
11784
12027
  }
11785
12028
  switch (editor.tag) {
11786
12029
  case public_api["EditorTag"].DateTime:
11787
- this.setupDateTimeField(parent, attr, readOnly, value);
12030
+ this.setupDateTimeField(parent, attr, value, readOnly, hidden);
11788
12031
  break;
11789
12032
  case public_api["EditorTag"].List:
11790
- this.setupListField(parent, attr, readOnly, editor.values, value);
12033
+ this.setupListField(parent, attr, value, editor.values, readOnly);
11791
12034
  break;
11792
12035
  case public_api["EditorTag"].File:
11793
12036
  this.setupFileField(parent, attr, readOnly, editor.accept);
@@ -11795,10 +12038,10 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11795
12038
  case public_api["EditorTag"].Edit:
11796
12039
  default:
11797
12040
  if (editor.multiline) {
11798
- this.setupTextArea(parent, attr, readOnly, value);
12041
+ this.setupTextArea(parent, attr, value, readOnly);
11799
12042
  }
11800
12043
  else {
11801
- this.setupTextField(parent, attr, readOnly, value);
12044
+ this.setupTextField(parent, attr, value, readOnly, hidden);
11802
12045
  }
11803
12046
  break;
11804
12047
  }
@@ -11850,13 +12093,15 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11850
12093
  this.form['setHtmlInt'](formHtml);
11851
12094
  for (var _i = 0, _a = this.context.getActiveEntity().attributes; _i < _a.length; _i++) {
11852
12095
  var attr = _a[_i];
11853
- if (this.params.isEditForm) {
11854
- if (!attr.showOnEdit)
11855
- continue;
11856
- }
11857
- else {
11858
- if (!attr.showOnCreate)
11859
- continue;
12096
+ if (!attr.isPrimaryKey) {
12097
+ if (this.params.isEditForm) {
12098
+ if (!attr.showOnEdit)
12099
+ continue;
12100
+ }
12101
+ else {
12102
+ if (!attr.showOnCreate)
12103
+ continue;
12104
+ }
11860
12105
  }
11861
12106
  this.addFormField(fb.toDOM(), attr);
11862
12107
  }
@@ -11891,8 +12136,8 @@ var easy_data_server_loader_EasyDataServerLoader = /** @class */ (function () {
11891
12136
  }
11892
12137
  EasyDataServerLoader.prototype.loadChunk = function (params) {
11893
12138
  var _this = this;
11894
- var url = this.context.resolveEndpoint('GetEntities', { entityId: params.entityId || this.context.getActiveEntity().id });
11895
- delete params.entityId;
12139
+ var url = this.context.resolveEndpoint('FetchDataset', { sourceId: params.sourceId || this.context.getActiveEntity().id });
12140
+ delete params.sourceId;
11896
12141
  this.context.startProcess();
11897
12142
  var http = this.context.getHttpClient();
11898
12143
  return http.post(url, params)
@@ -11929,6 +12174,17 @@ var easy_data_server_loader_EasyDataServerLoader = /** @class */ (function () {
11929
12174
 
11930
12175
  //# sourceMappingURL=easy_data_server_loader.js.map
11931
12176
  // CONCATENATED MODULE: ./dist/lib/main/data_context.js
12177
+ var data_context_assign = (undefined && undefined.__assign) || function () {
12178
+ data_context_assign = Object.assign || function(t) {
12179
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
12180
+ s = arguments[i];
12181
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12182
+ t[p] = s[p];
12183
+ }
12184
+ return t;
12185
+ };
12186
+ return data_context_assign.apply(this, arguments);
12187
+ };
11932
12188
 
11933
12189
 
11934
12190
 
@@ -11941,9 +12197,8 @@ var data_context_DataContext = /** @class */ (function () {
11941
12197
  this.model = new public_api["MetaData"]();
11942
12198
  this.model.id = options.metaDataId || '__default';
11943
12199
  this.dataLoader = new easy_data_server_loader_EasyDataServerLoader(this);
11944
- this.data = new public_api["EasyDataTable"]({
11945
- loader: this.dataLoader
11946
- });
12200
+ var dataTableOptions = data_context_assign({ loader: this.dataLoader }, options.dataTable);
12201
+ this.data = new public_api["EasyDataTable"](dataTableOptions);
11947
12202
  this.setDefaultEndpoints(this.options.endpoint || '/api/easydata');
11948
12203
  }
11949
12204
  DataContext.prototype.getActiveEntity = function () {
@@ -11962,8 +12217,8 @@ var data_context_DataContext = /** @class */ (function () {
11962
12217
  DataContext.prototype.getDataLoader = function () {
11963
12218
  return this.dataLoader;
11964
12219
  };
11965
- DataContext.prototype.createFilter = function (entityId, data, isLookup) {
11966
- return new text_data_filter["a" /* TextDataFilter */](this.dataLoader, data || this.getData(), entityId || this.activeEntity.id, isLookup);
12220
+ DataContext.prototype.createFilter = function (sourceId, data, isLookup) {
12221
+ return new text_data_filter["a" /* TextDataFilter */](this.dataLoader, data || this.getData(), sourceId || this.activeEntity.id, isLookup);
11967
12222
  };
11968
12223
  DataContext.prototype.loadMetaData = function () {
11969
12224
  var _this = this;
@@ -11987,7 +12242,7 @@ var data_context_DataContext = /** @class */ (function () {
11987
12242
  DataContext.prototype.getHttpClient = function () {
11988
12243
  return this.http;
11989
12244
  };
11990
- DataContext.prototype.getEntities = function () {
12245
+ DataContext.prototype.fetchDataset = function () {
11991
12246
  var _this = this;
11992
12247
  this.data.clear();
11993
12248
  return this.dataLoader.loadChunk({ offset: 0, limit: this.data.chunkSize, needTotal: true })
@@ -12004,33 +12259,33 @@ var data_context_DataContext = /** @class */ (function () {
12004
12259
  return _this.data;
12005
12260
  });
12006
12261
  };
12007
- DataContext.prototype.getEntity = function (id, entityId) {
12262
+ DataContext.prototype.fetchRecord = function (keys, sourceId) {
12008
12263
  var _this = this;
12009
- var url = this.resolveEndpoint('GetEntity', { id: id,
12010
- entityId: entityId || this.activeEntity.id });
12264
+ var url = this.resolveEndpoint('FetchRecord', { sourceId: sourceId || this.activeEntity.id });
12011
12265
  this.startProcess();
12012
- return this.http.get(url).getPromise()
12266
+ return this.http.get(url, { queryParams: keys })
12013
12267
  .finally(function () { return _this.endProcess(); });
12014
12268
  };
12015
- DataContext.prototype.createEntity = function (obj, entityId) {
12269
+ DataContext.prototype.createRecord = function (obj, sourceId) {
12016
12270
  var _this = this;
12017
- var url = this.resolveEndpoint('CreateEntity', { entityId: entityId || this.activeEntity.id });
12271
+ var url = this.resolveEndpoint('CreateRecord', { sourceId: sourceId || this.activeEntity.id });
12018
12272
  this.startProcess();
12019
- return this.http.post(url, obj, { dataType: 'json' }).getPromise().finally(function () { return _this.endProcess(); });
12273
+ return this.http.post(url, obj, { dataType: 'json' })
12274
+ .finally(function () { return _this.endProcess(); });
12020
12275
  };
12021
- DataContext.prototype.updateEntity = function (id, obj, entityId) {
12276
+ DataContext.prototype.updateRecord = function (obj, sourceId) {
12022
12277
  var _this = this;
12023
- var url = this.resolveEndpoint('UpdateEntity', { id: id,
12024
- entityId: entityId || this.activeEntity.id });
12278
+ var url = this.resolveEndpoint('UpdateRecord', { sourceId: sourceId || this.activeEntity.id });
12025
12279
  this.startProcess();
12026
- return this.http.post(url, obj, { dataType: 'json' }).getPromise().finally(function () { return _this.endProcess(); });
12280
+ return this.http.post(url, obj, { dataType: 'json' })
12281
+ .finally(function () { return _this.endProcess(); });
12027
12282
  };
12028
- DataContext.prototype.deleteEntity = function (id, entityId) {
12283
+ DataContext.prototype.deleteRecord = function (obj, sourceId) {
12029
12284
  var _this = this;
12030
- var url = this.resolveEndpoint('DeleteEntity', { id: id,
12031
- entityId: entityId || this.activeEntity.id });
12285
+ var url = this.resolveEndpoint('DeleteRecord', { sourceId: sourceId || this.activeEntity.id });
12032
12286
  this.startProcess();
12033
- return this.http.post(url, null).getPromise().finally(function () { return _this.endProcess(); });
12287
+ return this.http.post(url, obj, { dataType: 'json' })
12288
+ .finally(function () { return _this.endProcess(); });
12034
12289
  };
12035
12290
  DataContext.prototype.setEndpoint = function (key, value) {
12036
12291
  this.endpoints.set(key, value);
@@ -12055,7 +12310,7 @@ var data_context_DataContext = /** @class */ (function () {
12055
12310
  if (opt == 'modelId') {
12056
12311
  optVal = this.model.getId();
12057
12312
  }
12058
- else if (opt == 'entityId') {
12313
+ else if (opt == 'sourceId') {
12059
12314
  optVal = this.activeEntity.id;
12060
12315
  }
12061
12316
  else {
@@ -12077,18 +12332,18 @@ var data_context_DataContext = /** @class */ (function () {
12077
12332
  };
12078
12333
  DataContext.prototype.setDefaultEndpoints = function (endpointBase) {
12079
12334
  this.setEnpointIfNotExist('GetMetaData', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}'));
12080
- this.setEnpointIfNotExist('GetEntities', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/fetch'));
12081
- this.setEnpointIfNotExist('GetEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/fetch/{id}'));
12082
- this.setEnpointIfNotExist('CreateEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/create'));
12083
- this.setEnpointIfNotExist('UpdateEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/update/{id}'));
12084
- this.setEnpointIfNotExist('DeleteEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/delete/{id}'));
12335
+ this.setEnpointIfNotExist('FetchDataset', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/fetch'));
12336
+ this.setEnpointIfNotExist('FetchRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/fetch'));
12337
+ this.setEnpointIfNotExist('CreateRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/create'));
12338
+ this.setEnpointIfNotExist('UpdateRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/update'));
12339
+ this.setEnpointIfNotExist('DeleteRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/delete'));
12085
12340
  };
12086
12341
  return DataContext;
12087
12342
  }());
12088
12343
 
12089
12344
  //# sourceMappingURL=data_context.js.map
12090
12345
  // EXTERNAL MODULE: ./dist/lib/validators/validator.js
12091
- var validator = __webpack_require__(10);
12346
+ var validator = __webpack_require__(9);
12092
12347
 
12093
12348
  // CONCATENATED MODULE: ./dist/lib/validators/type_validator.js
12094
12349
  var __extends = (undefined && undefined.__extends) || (function () {
@@ -12217,7 +12472,7 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12217
12472
  };
12218
12473
  EntityDataView.prototype.renderGrid = function () {
12219
12474
  var _this = this;
12220
- this.context.getEntities()
12475
+ this.context.fetchDataset()
12221
12476
  .then(function (result) {
12222
12477
  var gridSlot = document.createElement('div');
12223
12478
  _this.slot.appendChild(gridSlot);
@@ -12230,10 +12485,10 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12230
12485
  allowPageSizeChange: true,
12231
12486
  pageSizeItems: [15, 30, 50, 100, 200]
12232
12487
  },
12233
- addColumns: true,
12234
- addColumnsTitle: public_api["i18n"].getText('AddBtnTitle'),
12488
+ showPlusButton: _this.context.getActiveEntity().isEditable,
12489
+ plusButtonTitle: public_api["i18n"].getText('AddRecordBtnTitle'),
12235
12490
  showActiveRow: false,
12236
- onAddColumnClick: _this.addClickHandler.bind(_this),
12491
+ onPlusButtonClick: _this.addClickHandler.bind(_this),
12237
12492
  onGetCellRenderer: _this.manageCellRenderer.bind(_this),
12238
12493
  onRowDbClick: _this.rowDbClickHandler.bind(_this),
12239
12494
  onSyncGridColumn: _this.syncGridColumnHandler.bind(_this)
@@ -12288,7 +12543,7 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12288
12543
  if (!form.validate())
12289
12544
  return false;
12290
12545
  form.getData()
12291
- .then(function (obj) { return _this.context.createEntity(obj); })
12546
+ .then(function (obj) { return _this.context.createRecord(obj); })
12292
12547
  .then(function () {
12293
12548
  return _this.refreshData();
12294
12549
  })
@@ -12319,12 +12574,10 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12319
12574
  .replace('{entity}', activeEntity.caption),
12320
12575
  body: form.getHtml(),
12321
12576
  onSubmit: function () {
12322
- var keyAttrs = activeEntity.attributes.filter(function (attr) { return attr.isPrimaryKey; });
12323
- var keys = keyAttrs.map(function (attr) { return row.getValue(attr.id); });
12324
12577
  if (!form.validate())
12325
12578
  return false;
12326
12579
  form.getData()
12327
- .then(function (obj) { return _this.context.updateEntity(keys.join(':'), obj); })
12580
+ .then(function (obj) { return _this.context.updateRecord(obj); })
12328
12581
  .then(function () {
12329
12582
  return _this.refreshData();
12330
12583
  })
@@ -12345,16 +12598,20 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12345
12598
  .then(function (row) {
12346
12599
  if (row) {
12347
12600
  var activeEntity = _this.context.getActiveEntity();
12348
- var keyAttrs = activeEntity.attributes.filter(function (attr) { return attr.isPrimaryKey; });
12349
- var keys_1 = keyAttrs.map(function (attr) { return row.getValue(attr.id); });
12350
- var entityId = keyAttrs.map(function (attr, index) { return attr.id + ":" + keys_1[index]; }).join(';');
12601
+ var keyAttrs = activeEntity.getPrimaryAttrs();
12602
+ var keyVals_1 = keyAttrs.map(function (attr) { return row.getValue(attr.id); });
12603
+ var keys_1 = keyAttrs.reduce(function (val, attr, index) {
12604
+ var property = attr.id.substring(attr.id.lastIndexOf('.') + 1);
12605
+ val[property] = keyVals_1[index];
12606
+ return val;
12607
+ }, {});
12351
12608
  _this.dlg.openConfirm(public_api["i18n"].getText('DeleteDlgCaption')
12352
12609
  .replace('{entity}', activeEntity.caption), public_api["i18n"].getText('DeleteDlgMessage')
12353
- .replace('{entityId}', entityId))
12610
+ .replace('{recordId}', Object.keys(keys_1)
12611
+ .map(function (key) { return key + ":" + keys_1[key]; }).join(';')))
12354
12612
  .then(function (result) {
12355
12613
  if (result) {
12356
- //pass entityId in future
12357
- _this.context.deleteEntity(keys_1.join(':'))
12614
+ _this.context.deleteRecord(keys_1)
12358
12615
  .then(function () {
12359
12616
  return _this.refreshData();
12360
12617
  })
@@ -12376,7 +12633,7 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12376
12633
  };
12377
12634
  EntityDataView.prototype.refreshData = function () {
12378
12635
  var _this = this;
12379
- return this.context.getEntities()
12636
+ return this.context.fetchDataset()
12380
12637
  .then(function () {
12381
12638
  _this.grid.refresh();
12382
12639
  });
@@ -12462,6 +12719,7 @@ var easy_data_view_dispatcher_EasyDataViewDispatcher = /** @class */ (function (
12462
12719
  parent.insertBefore(progressBarSlot, parent.firstElementChild);
12463
12720
  this.context = new data_context_DataContext({
12464
12721
  endpoint: options.endpoint,
12722
+ dataTable: options.dataTable,
12465
12723
  onProcessStart: function () { return bar.show(); },
12466
12724
  onProcessEnd: function () { return bar.hide(); }
12467
12725
  });
@@ -12556,13 +12814,14 @@ function addEasyDataCRUDTexts() {
12556
12814
  CalendarBtnTitle: 'Open calendar',
12557
12815
  TimerBtnTitle: 'Open timer',
12558
12816
  AddBtnTitle: 'Add',
12817
+ AddRecordBtnTitle: 'Add record',
12559
12818
  EditBtn: 'Edit',
12560
12819
  DeleteBtn: 'Delete',
12561
12820
  SelectLink: '[ select ]',
12562
12821
  AddDlgCaption: 'Create {entity}',
12563
12822
  EditDlgCaption: 'Edit {entity}',
12564
12823
  DeleteDlgCaption: 'Delete {entity}',
12565
- DeleteDlgMessage: 'Are you shure about removing this entity: [{entityId}]?',
12824
+ DeleteDlgMessage: 'Are you sure you want to remove this record: {{recordId}}?',
12566
12825
  EntityMenuDesc: 'Click on an entity to view/edit its content',
12567
12826
  BackToEntities: 'Back to entities',
12568
12827
  SearchBtn: 'Search',