@easydata/crud 1.3.6 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +821 -583
  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 +541 -314
  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
  /******/ ([
@@ -152,10 +152,10 @@ var EditorTag = {
152
152
  var http_method = __webpack_require__(11);
153
153
 
154
154
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/http/http_request.js
155
- var http_request = __webpack_require__(15);
155
+ var http_request = __webpack_require__(16);
156
156
 
157
157
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/http/http_client.js
158
- var http_client = __webpack_require__(23);
158
+ var http_client = __webpack_require__(24);
159
159
 
160
160
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/i18n/i18n.js
161
161
  var i18n = __webpack_require__(5);
@@ -239,6 +239,12 @@ var MetaEntity = /** @class */ (function () {
239
239
  };
240
240
  internalProcessEntity(this);
241
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
+ };
242
248
  return MetaEntity;
243
249
  }());
244
250
 
@@ -857,7 +863,7 @@ var meta_data_MetaData = /** @class */ (function () {
857
863
  }());
858
864
 
859
865
  //# sourceMappingURL=meta_data.js.map
860
- // 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
861
867
  var __assign = (undefined && undefined.__assign) || function () {
862
868
  __assign = Object.assign || function(t) {
863
869
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -880,16 +886,32 @@ var AggregationSettings = /** @class */ (function () {
880
886
  this.groups = [];
881
887
  this.useGrandTotals = false;
882
888
  this.useRecordCount = false;
883
- this.caseSensitiveGroups = false;
889
+ this._caseSensitiveGroups = false;
884
890
  this.COUNT_FIELD_NAME = 'GRPRECCNT';
885
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
+ };
886
908
  AggregationSettings.prototype.addGroup = function (settings) {
887
909
  var cols = settings.columns || this.colStore.getColumnIds(settings.from, settings.to);
888
910
  if (!this.colStore.validateColumns(cols))
889
911
  throw "Invalid columns: " + cols;
890
912
  if (this.hasColumnsInUse(cols))
891
913
  throw "Can't add same columns to different groups/aggregates";
892
- this.groups.push(__assign({ columns: cols, aggregates: null }, settings));
914
+ this.groups.push(__assign({ columns: cols }, settings));
893
915
  return this;
894
916
  };
895
917
  AggregationSettings.prototype.addAggregateColumn = function (colIndexOrId, funcId) {
@@ -914,7 +936,7 @@ var AggregationSettings = /** @class */ (function () {
914
936
  var cols = [];
915
937
  var mappedGrops = this.groups.map(function (grp) {
916
938
  cols = cols.concat(grp.columns);
917
- 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) });
918
940
  });
919
941
  return mappedGrops;
920
942
  };
@@ -1006,18 +1028,43 @@ var AggregationSettings = /** @class */ (function () {
1006
1028
  }
1007
1029
  }
1008
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
+ };
1009
1056
  return AggregationSettings;
1010
1057
  }());
1011
1058
 
1012
- //# sourceMappingURL=aggr_calculator.js.map
1059
+ //# sourceMappingURL=aggr_settings.js.map
1013
1060
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/data_column.js
1014
- var data_column = __webpack_require__(16);
1061
+ var data_column = __webpack_require__(17);
1015
1062
 
1016
1063
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/data_row.js
1017
- var data_row = __webpack_require__(14);
1064
+ var data_row = __webpack_require__(15);
1018
1065
 
1019
1066
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/data/easy_data_table.js
1020
- var easy_data_table = __webpack_require__(27);
1067
+ var easy_data_table = __webpack_require__(28);
1021
1068
 
1022
1069
  // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/utils/easy_guid.js
1023
1070
  /**
@@ -1167,7 +1214,7 @@ var event_emitter_EventEmitter = /** @class */ (function () {
1167
1214
 
1168
1215
  //# sourceMappingURL=event_emitter.js.map
1169
1216
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/utils/string_utils.js
1170
- var string_utils = __webpack_require__(13);
1217
+ var string_utils = __webpack_require__(14);
1171
1218
 
1172
1219
  // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/core/dist/lib/utils/liquid.js
1173
1220
  var liquid;
@@ -1202,7 +1249,6 @@ i18n["a" /* i18n */].resetLocales();
1202
1249
 
1203
1250
 
1204
1251
 
1205
- //data
1206
1252
 
1207
1253
 
1208
1254
 
@@ -1245,7 +1291,7 @@ if (typeof Math.trunc !== 'function') {
1245
1291
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return DomInputElementBuilder; });
1246
1292
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return DomSelectElementBuilder; });
1247
1293
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return domel; });
1248
- /* harmony import */ var _mask__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
1294
+ /* harmony import */ var _mask__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);
1249
1295
  var __extends = (undefined && undefined.__extends) || (function () {
1250
1296
  var extendStatics = function (d, b) {
1251
1297
  extendStatics = Object.setPrototypeOf ||
@@ -1259,6 +1305,13 @@ var __extends = (undefined && undefined.__extends) || (function () {
1259
1305
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1260
1306
  };
1261
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
+ };
1262
1315
 
1263
1316
  var DomElementBuilder = /** @class */ (function () {
1264
1317
  function DomElementBuilder(tag, parent) {
@@ -1329,7 +1382,7 @@ var DomElementBuilder = /** @class */ (function () {
1329
1382
  classNames[_i - 1] = arguments[_i];
1330
1383
  }
1331
1384
  if (className) {
1332
- var fullList = className.trim().split(" ").concat(classNames);
1385
+ var fullList = __spreadArrays(className.trim().split(" "), classNames);
1333
1386
  for (var i = 0; i < fullList.length; i++)
1334
1387
  this.element.classList.add(fullList[i]);
1335
1388
  }
@@ -1341,7 +1394,7 @@ var DomElementBuilder = /** @class */ (function () {
1341
1394
  classNames[_i - 1] = arguments[_i];
1342
1395
  }
1343
1396
  if (className) {
1344
- var fullList = className.trim().split(" ").concat(classNames);
1397
+ var fullList = __spreadArrays(className.trim().split(" "), classNames);
1345
1398
  for (var i = 0; i < fullList.length; i++)
1346
1399
  this.element.classList.remove(fullList[i]);
1347
1400
  }
@@ -1605,6 +1658,7 @@ __webpack_require__.r(__webpack_exports__);
1605
1658
 
1606
1659
  // EXPORTS
1607
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 */]; });
1608
1662
  __webpack_require__.d(__webpack_exports__, "GridColumnAlign", function() { return /* reexport */ easy_grid_columns["b" /* GridColumnAlign */]; });
1609
1663
  __webpack_require__.d(__webpack_exports__, "GridColumn", function() { return /* reexport */ easy_grid_columns["a" /* GridColumn */]; });
1610
1664
  __webpack_require__.d(__webpack_exports__, "GridColumnList", function() { return /* reexport */ easy_grid_columns["c" /* GridColumnList */]; });
@@ -1653,13 +1707,16 @@ __webpack_require__.d(__webpack_exports__, "DialogFooterAlignment", function() {
1653
1707
  __webpack_require__.d(__webpack_exports__, "dialogs", function() { return /* binding */ dialogs; });
1654
1708
 
1655
1709
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid.js
1656
- 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__(10);
1657
1714
 
1658
1715
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_columns.js
1659
1716
  var easy_grid_columns = __webpack_require__(8);
1660
1717
 
1661
1718
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_cell_renderer.js
1662
- var easy_grid_cell_renderer = __webpack_require__(9);
1719
+ var easy_grid_cell_renderer = __webpack_require__(13);
1663
1720
 
1664
1721
  // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/datetimepicker/calendar.js
1665
1722
  var Calendar = /** @class */ (function () {
@@ -2312,19 +2369,19 @@ var default_date_time_picker_DefaultDateTimePicker = /** @class */ (function (_s
2312
2369
 
2313
2370
  //# sourceMappingURL=default_date_time_picker.js.map
2314
2371
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/browser_utils.js
2315
- var browser_utils = __webpack_require__(17);
2372
+ var browser_utils = __webpack_require__(18);
2316
2373
 
2317
2374
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/drag_manager.js
2318
2375
  var drag_manager = __webpack_require__(12);
2319
2376
 
2320
2377
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/utils/mask.js
2321
- var mask = __webpack_require__(18);
2378
+ var mask = __webpack_require__(19);
2322
2379
 
2323
2380
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/dialogs/default_dialog_service.js
2324
- var default_dialog_service = __webpack_require__(19);
2381
+ var default_dialog_service = __webpack_require__(20);
2325
2382
 
2326
2383
  // EXTERNAL MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/dialogs/dialog_service.js
2327
- var dialog_service = __webpack_require__(20);
2384
+ var dialog_service = __webpack_require__(21);
2328
2385
 
2329
2386
  // CONCATENATED MODULE: d:/a/easydata/easydata/easydata.js/packs/ui/dist/lib/i18n/text_resources.js
2330
2387
 
@@ -2346,6 +2403,7 @@ addEasyDataUITexts();
2346
2403
 
2347
2404
 
2348
2405
 
2406
+
2349
2407
  //datetimepicker
2350
2408
 
2351
2409
 
@@ -2375,7 +2433,7 @@ var dialogs = new default_dialog_service["b" /* DefaultDialogService */]();
2375
2433
 
2376
2434
  "use strict";
2377
2435
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return utils; });
2378
- /* 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);
2379
2437
  /* harmony import */ var _types_data_type__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
2380
2438
  /* harmony import */ var _i18n_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
2381
2439
 
@@ -2384,7 +2442,7 @@ var dialogs = new default_dialog_service["b" /* DefaultDialogService */]();
2384
2442
  var utils;
2385
2443
  (function (utils) {
2386
2444
  function getAllDataTypes() {
2387
- 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"; });
2388
2446
  }
2389
2447
  utils.getAllDataTypes = getAllDataTypes;
2390
2448
  function getDateDataTypes() {
@@ -2392,12 +2450,16 @@ var utils;
2392
2450
  }
2393
2451
  utils.getDateDataTypes = getDateDataTypes;
2394
2452
  function getStringDataTypes() {
2395
- 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];
2396
2454
  }
2397
2455
  utils.getStringDataTypes = getStringDataTypes;
2398
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,
2399
- _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];
2400
- 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];
2401
2463
  //-------------- object functions -------------------
2402
2464
  /**
2403
2465
  * Copy the content of all objests passed in `args` parameters into `target`
@@ -2462,7 +2524,7 @@ var utils;
2462
2524
  hashSet.set(sourceVal, target[key]);
2463
2525
  }
2464
2526
  else {
2465
- if (typeof target[key] == 'undefined') {
2527
+ if (typeof target[key] == 'undefined' || target[key] == null) {
2466
2528
  target[key] = Object.create(Object.getPrototypeOf(sourceVal));
2467
2529
  }
2468
2530
  hashSet.set(sourceVal, target[key]);
@@ -3394,7 +3456,7 @@ var i18n;
3394
3456
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return slideUp; });
3395
3457
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return eqCssPrefix; });
3396
3458
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return eqCssMobile; });
3397
- /* 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);
3398
3460
 
3399
3461
  /**
3400
3462
  * Wraps all the elements inside "parent" by "wrapper" element
@@ -3667,16 +3729,10 @@ var setLocation = function (path) {
3667
3729
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return GridColumn; });
3668
3730
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return GridColumnList; });
3669
3731
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
3670
- /* 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);
3671
3733
 
3672
3734
 
3673
- var DEFAULT_WIDTH = 150;
3674
- var DEFAULT_WIDTH_NUMBER = 120;
3675
- var DEFAULT_WIDTH_DATE = 200;
3676
- var DEFAULT_WIDTH_BOOL = 80;
3677
3735
  var DEFAULT_WIDTH_STRING = 250;
3678
- var MIN_WIDTH_STRING = 100;
3679
- var MAX_WIDTH_STRING = 500;
3680
3736
  var ROW_NUM_WIDTH = 60;
3681
3737
  var GridColumnAlign;
3682
3738
  (function (GridColumnAlign) {
@@ -3701,36 +3757,25 @@ var GridColumn = /** @class */ (function () {
3701
3757
  function GridColumn(column, grid, isRowNum) {
3702
3758
  if (isRowNum === void 0) { isRowNum = false; }
3703
3759
  this._label = null;
3760
+ this._description = null;
3704
3761
  //public left: number;
3705
3762
  this.align = GridColumnAlign.NONE;
3706
3763
  this.isVisible = true;
3707
3764
  this.isRowNum = false;
3708
3765
  this.dataColumn = column;
3709
3766
  this.grid = grid;
3767
+ var widthOptions = grid.options.columnWidths || {};
3710
3768
  if (column) {
3711
3769
  if (column.style.alignment) {
3712
3770
  this.align = MapAlignment(column.style.alignment);
3713
3771
  }
3714
- var coltype = column.type;
3715
- var cellType = this.grid.cellRendererStore.getCellType(coltype);
3716
- switch (cellType) {
3717
- case _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].NUMBER:
3718
- this.width = DEFAULT_WIDTH_NUMBER;
3719
- break;
3720
- case _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].DATETIME:
3721
- this.width = DEFAULT_WIDTH_DATE;
3722
- break;
3723
- case _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].BOOL:
3724
- this.width = DEFAULT_WIDTH_BOOL;
3725
- break;
3726
- default:
3727
- this.width = DEFAULT_WIDTH_STRING;
3728
- }
3772
+ this.width = (widthOptions && widthOptions[this.type]) ? widthOptions[this.type].default : DEFAULT_WIDTH_STRING;
3729
3773
  this.cellRenderer = this.grid.cellRendererStore.getDefaultRenderer(column.type);
3774
+ this._description = column.description;
3730
3775
  }
3731
3776
  else if (isRowNum) {
3732
3777
  this.isRowNum = true;
3733
- this.width = ROW_NUM_WIDTH;
3778
+ this.width = (widthOptions && widthOptions.rowNumColumn) ? widthOptions.rowNumColumn.default : ROW_NUM_WIDTH;
3734
3779
  this._label = '';
3735
3780
  this.cellRenderer = this.grid.cellRendererStore.getDefaultRendererByType(_easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].NUMBER);
3736
3781
  }
@@ -3749,6 +3794,14 @@ var GridColumn = /** @class */ (function () {
3749
3794
  configurable: true
3750
3795
  });
3751
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
+ });
3752
3805
  Object.defineProperty(GridColumn.prototype, "type", {
3753
3806
  get: function () {
3754
3807
  return this.dataColumn ? this.dataColumn.type : null;
@@ -3768,9 +3821,10 @@ var GridColumnList = /** @class */ (function () {
3768
3821
  GridColumnList.prototype.sync = function (columnList, hasRowNumCol) {
3769
3822
  if (hasRowNumCol === void 0) { hasRowNumCol = true; }
3770
3823
  this.clear();
3771
- if (hasRowNumCol) {
3772
- var rowNumCol = new GridColumn(null, this.grid, true);
3773
- this.add(rowNumCol);
3824
+ var rowNumCol = new GridColumn(null, this.grid, true);
3825
+ this.add(rowNumCol);
3826
+ if (!hasRowNumCol) {
3827
+ rowNumCol.isVisible = false;
3774
3828
  }
3775
3829
  if (columnList) {
3776
3830
  for (var _i = 0, _a = columnList.getItems(); _i < _a.length; _i++) {
@@ -3838,173 +3892,28 @@ var GridColumnList = /** @class */ (function () {
3838
3892
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3839
3893
 
3840
3894
  "use strict";
3841
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return DFMT_REGEX; });
3842
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CellRendererType; });
3843
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return GridCellRendererStore; });
3844
- /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
3845
- /* harmony import */ var _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
3846
- /* harmony import */ var _utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
3847
-
3848
-
3849
-
3850
- var cssPrefix = "keg";
3851
- var DFMT_REGEX = /{0:(.*?)}/g;
3852
- var CellRendererType;
3853
- (function (CellRendererType) {
3854
- CellRendererType[CellRendererType["STRING"] = 1] = "STRING";
3855
- CellRendererType[CellRendererType["NUMBER"] = 2] = "NUMBER";
3856
- CellRendererType[CellRendererType["DATETIME"] = 3] = "DATETIME";
3857
- CellRendererType[CellRendererType["BOOL"] = 4] = "BOOL";
3858
- })(CellRendererType || (CellRendererType = {}));
3859
- var StringCellRendererDefault = function (value, column, cellElement, rowElement) {
3860
- var text = value ? value.toString().replace(/\n/g, '\u21B5 ') : '';
3861
- var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3862
- .addClass(cssPrefix + "-cell-value")
3863
- .addHtml(text)
3864
- .title(value || '');
3865
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
3866
- builder.addClass(cssPrefix + "-cell-value-align-left");
3867
- }
3868
- };
3869
- var NumberCellRendererDefault = function (value, column, cellElement, rowElement) {
3870
- var strValue = (value || '').toString();
3871
- if (typeof value == 'number') {
3872
- if (column.dataColumn && column.dataColumn.displayFormat
3873
- && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
3874
- strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
3875
- return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].numberToStr(value, $1);
3876
- });
3877
- }
3878
- else {
3879
- strValue = value.toLocaleString();
3880
- }
3881
- }
3882
- var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3883
- .addClass(cssPrefix + "-cell-value")
3884
- .addHtml(strValue)
3885
- .title(strValue);
3886
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
3887
- builder.addClass(cssPrefix + "-cell-value-align-right");
3888
- }
3889
- };
3890
- var DateTimeCellRendererDefault = function (value, column, cellElement, rowElement) {
3891
- var isDate = Object.prototype.toString.call(value) === '[object Date]';
3892
- var strValue = (value || '').toString();
3893
- if (isDate) {
3894
- if (column.dataColumn && column.dataColumn.displayFormat
3895
- && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
3896
- strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
3897
- return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].dateTimeToStr(value, column.type, $1);
3898
- });
3899
- }
3900
- else {
3901
- var locale = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].getCurrentLocale();
3902
- var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };
3903
- switch (column.type) {
3904
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Date:
3905
- strValue = value.toLocaleDateString(locale);
3906
- break;
3907
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Time:
3908
- strValue = value.toLocaleTimeString(locale, timeOptions);
3909
- break;
3910
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].DateTime:
3911
- strValue = value.toLocaleDateString(locale) + " " + value.toLocaleTimeString(locale, timeOptions);
3912
- break;
3913
- }
3914
- }
3915
- }
3916
- var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3917
- .addClass(cssPrefix + "-cell-value")
3918
- .addHtml(strValue)
3919
- .title(strValue);
3920
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
3921
- builder.addClass(cssPrefix + "-cell-value-align-right");
3922
- }
3923
- };
3924
- var BoolCellRendererDefault = function (value, column, cellElement, rowElement) {
3925
- if (column.dataColumn && column.dataColumn.displayFormat
3926
- && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
3927
- var strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
3928
- return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].booleanToStr(value, $1);
3929
- });
3930
- return StringCellRendererDefault(strValue, column, cellElement, rowElement);
3931
- }
3932
- else {
3933
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3934
- .addClass(cssPrefix + "-cell-value")
3935
- .addClass(cssPrefix + "-cell-value-bool")
3936
- .addClass(cssPrefix + "-" + (value ? 'cell-value-true' : 'cell-value-false'));
3937
- }
3938
- };
3939
- var GridCellRendererStore = /** @class */ (function () {
3940
- function GridCellRendererStore(options) {
3941
- this.renderers = {};
3942
- this.defaultRenderers = {};
3943
- this.registerRenderer('StringDefault', StringCellRendererDefault);
3944
- this.setDefaultRenderer(CellRendererType.STRING, StringCellRendererDefault);
3945
- this.registerRenderer('NumberDefault', NumberCellRendererDefault);
3946
- this.setDefaultRenderer(CellRendererType.NUMBER, NumberCellRendererDefault);
3947
- this.registerRenderer('DateTimeDefault', DateTimeCellRendererDefault);
3948
- this.setDefaultRenderer(CellRendererType.DATETIME, DateTimeCellRendererDefault);
3949
- this.registerRenderer('BoolDefault', BoolCellRendererDefault);
3950
- this.setDefaultRenderer(CellRendererType.BOOL, BoolCellRendererDefault);
3895
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Validator; });
3896
+ var Validator = /** @class */ (function () {
3897
+ function Validator() {
3951
3898
  }
3952
- GridCellRendererStore.prototype.getDefaultRenderer = function (columnType) {
3953
- var cellType = this.getCellType(columnType);
3954
- return this.defaultRenderers[CellRendererType[cellType]];
3955
- };
3956
- GridCellRendererStore.prototype.getDefaultRendererByType = function (rendererType) {
3957
- return this.defaultRenderers[CellRendererType[rendererType]];
3958
- };
3959
- GridCellRendererStore.prototype.setDefaultRenderer = function (cellType, renderer) {
3960
- if (renderer) {
3961
- this.defaultRenderers[CellRendererType[cellType]] = renderer;
3962
- }
3963
- };
3964
- GridCellRendererStore.prototype.getRenderer = function (name) {
3965
- return this.renderers[name];
3966
- };
3967
- GridCellRendererStore.prototype.registerRenderer = function (name, renderer) {
3968
- this.renderers[name] = renderer;
3969
- };
3970
- GridCellRendererStore.prototype.getCellType = function (dataType) {
3971
- switch (dataType) {
3972
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Autoinc:
3973
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Byte:
3974
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Word:
3975
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Currency:
3976
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Float:
3977
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Int32:
3978
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Int64:
3979
- return CellRendererType.NUMBER;
3980
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Date:
3981
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].DateTime:
3982
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Time:
3983
- return CellRendererType.DATETIME;
3984
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Bool:
3985
- return CellRendererType.BOOL;
3986
- default:
3987
- return CellRendererType.STRING;
3988
- }
3989
- };
3990
- return GridCellRendererStore;
3899
+ return Validator;
3991
3900
  }());
3992
3901
 
3993
- //# sourceMappingURL=easy_grid_cell_renderer.js.map
3902
+ //# sourceMappingURL=validator.js.map
3994
3903
 
3995
3904
  /***/ }),
3996
3905
  /* 10 */
3997
3906
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3998
3907
 
3999
3908
  "use strict";
4000
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Validator; });
4001
- var Validator = /** @class */ (function () {
4002
- function Validator() {
4003
- }
4004
- return Validator;
4005
- }());
4006
-
4007
- //# sourceMappingURL=validator.js.map
3909
+ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AutoResizeColumns; });
3910
+ var AutoResizeColumns;
3911
+ (function (AutoResizeColumns) {
3912
+ AutoResizeColumns[AutoResizeColumns["Always"] = 0] = "Always";
3913
+ AutoResizeColumns[AutoResizeColumns["Once"] = 1] = "Once";
3914
+ AutoResizeColumns[AutoResizeColumns["Never"] = 2] = "Never";
3915
+ })(AutoResizeColumns || (AutoResizeColumns = {}));
3916
+ //# sourceMappingURL=easy_grid_options.js.map
4008
3917
 
4009
3918
  /***/ }),
4010
3919
  /* 11 */
@@ -4357,53 +4266,212 @@ var DragManager = /** @class */ (function () {
4357
4266
  }
4358
4267
  }
4359
4268
  };
4360
- DragManager.prototype.dragLeaveEvent = function (ev) {
4361
- var descriptor = this.containerDescriptors[this.containerDescriptorIndex];
4362
- var container = {
4363
- element: descriptor.element,
4364
- scopes: descriptor.scopes,
4365
- data: descriptor.data
4366
- };
4367
- if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {
4368
- var event_5 = new EqDragEvent(this.draggableItem, this.dragImage, ev);
4369
- event_5.dropEffect = DropEffect.None;
4370
- if (descriptor.onDragLeave) {
4371
- descriptor.onDragLeave(container, event_5);
4372
- }
4373
- this.dropEffect = event_5.dropEffect;
4374
- this.updateCusror(this.dropEffect);
4375
- this.updateImageClass(this.dropEffect);
4376
- }
4269
+ DragManager.prototype.dragLeaveEvent = function (ev) {
4270
+ var descriptor = this.containerDescriptors[this.containerDescriptorIndex];
4271
+ var container = {
4272
+ element: descriptor.element,
4273
+ scopes: descriptor.scopes,
4274
+ data: descriptor.data
4275
+ };
4276
+ if (container.scopes.indexOf(this.draggableItem.scope) >= 0) {
4277
+ var event_5 = new EqDragEvent(this.draggableItem, this.dragImage, ev);
4278
+ event_5.dropEffect = DropEffect.None;
4279
+ if (descriptor.onDragLeave) {
4280
+ descriptor.onDragLeave(container, event_5);
4281
+ }
4282
+ this.dropEffect = event_5.dropEffect;
4283
+ this.updateCusror(this.dropEffect);
4284
+ this.updateImageClass(this.dropEffect);
4285
+ }
4286
+ };
4287
+ DragManager.prototype.detectDragEnterEvent = function (container, ev) {
4288
+ var containerPos = Object(_ui_utils__WEBPACK_IMPORTED_MODULE_1__[/* getElementAbsolutePos */ "g"])(container);
4289
+ var pos = new Position(ev);
4290
+ if (pos.y < containerPos.y || pos.y > containerPos.y + container.offsetHeight) {
4291
+ return false;
4292
+ }
4293
+ if (pos.x < containerPos.x || pos.x > containerPos.x + container.offsetWidth) {
4294
+ return false;
4295
+ }
4296
+ return true;
4297
+ };
4298
+ DragManager.prototype.detectDragLeaveEvent = function (container, ev) {
4299
+ var containerPos = Object(_ui_utils__WEBPACK_IMPORTED_MODULE_1__[/* getElementAbsolutePos */ "g"])(container);
4300
+ var pos = new Position(ev);
4301
+ if (pos.y > containerPos.y && pos.y < containerPos.y + container.offsetHeight
4302
+ && pos.x > containerPos.x && pos.x < containerPos.x + container.offsetWidth) {
4303
+ return false;
4304
+ }
4305
+ return true;
4306
+ };
4307
+ return DragManager;
4308
+ }());
4309
+
4310
+ //global variable
4311
+ var eqDragManager = new DragManager();
4312
+ //# sourceMappingURL=drag_manager.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];
4377
4444
  };
4378
- DragManager.prototype.detectDragEnterEvent = function (container, ev) {
4379
- var containerPos = Object(_ui_utils__WEBPACK_IMPORTED_MODULE_1__[/* getElementAbsolutePos */ "g"])(container);
4380
- var pos = new Position(ev);
4381
- if (pos.y < containerPos.y || pos.y > containerPos.y + container.offsetHeight) {
4382
- return false;
4383
- }
4384
- if (pos.x < containerPos.x || pos.x > containerPos.x + container.offsetWidth) {
4385
- return false;
4386
- }
4387
- return true;
4445
+ GridCellRendererStore.prototype.registerRenderer = function (name, renderer) {
4446
+ this.renderers[name] = renderer;
4388
4447
  };
4389
- DragManager.prototype.detectDragLeaveEvent = function (container, ev) {
4390
- var containerPos = Object(_ui_utils__WEBPACK_IMPORTED_MODULE_1__[/* getElementAbsolutePos */ "g"])(container);
4391
- var pos = new Position(ev);
4392
- if (pos.y > containerPos.y && pos.y < containerPos.y + container.offsetHeight
4393
- && pos.x > containerPos.x && pos.x < containerPos.x + container.offsetWidth) {
4394
- 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;
4395
4466
  }
4396
- return true;
4397
4467
  };
4398
- return DragManager;
4468
+ return GridCellRendererStore;
4399
4469
  }());
4400
4470
 
4401
- //global variable
4402
- var eqDragManager = new DragManager();
4403
- //# sourceMappingURL=drag_manager.js.map
4471
+ //# sourceMappingURL=easy_grid_cell_renderer.js.map
4404
4472
 
4405
4473
  /***/ }),
4406
- /* 13 */
4474
+ /* 14 */
4407
4475
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4408
4476
 
4409
4477
  "use strict";
@@ -4445,7 +4513,7 @@ function combinePath(path1, path2) {
4445
4513
  //# sourceMappingURL=string_utils.js.map
4446
4514
 
4447
4515
  /***/ }),
4448
- /* 14 */
4516
+ /* 15 */
4449
4517
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4450
4518
 
4451
4519
  "use strict";
@@ -4497,7 +4565,7 @@ var DataRow = /** @class */ (function () {
4497
4565
  //# sourceMappingURL=data_row.js.map
4498
4566
 
4499
4567
  /***/ }),
4500
- /* 15 */
4568
+ /* 16 */
4501
4569
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4502
4570
 
4503
4571
  "use strict";
@@ -4562,7 +4630,7 @@ var HttpRequest = /** @class */ (function () {
4562
4630
  //# sourceMappingURL=http_request.js.map
4563
4631
 
4564
4632
  /***/ }),
4565
- /* 16 */
4633
+ /* 17 */
4566
4634
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4567
4635
 
4568
4636
  "use strict";
@@ -4596,6 +4664,8 @@ var DataColumn = /** @class */ (function () {
4596
4664
  this.displayFormat = desc.dfmt;
4597
4665
  this.groupFooterColumnTemplate = desc.gfct;
4598
4666
  this.style = desc.style || {};
4667
+ this.description = desc.description;
4668
+ this.calculatedWidth = 0;
4599
4669
  }
4600
4670
  return DataColumn;
4601
4671
  }());
@@ -4635,9 +4705,10 @@ var DataColumnList = /** @class */ (function () {
4635
4705
  .map(function (col, index) { return index; });
4636
4706
  };
4637
4707
  DataColumnList.prototype.put = function (index, col) {
4638
- //!!!!!!!!!check on "out of index"
4639
- this.items[index] = col;
4640
- this.updateDateColumnIdx();
4708
+ if (index >= 0 && index < this.count) {
4709
+ this.items[index] = col;
4710
+ this.updateDateColumnIdx();
4711
+ }
4641
4712
  };
4642
4713
  DataColumnList.prototype.move = function (col, newIndex) {
4643
4714
  var oldIndex = this.items.indexOf(col);
@@ -4647,8 +4718,12 @@ var DataColumnList = /** @class */ (function () {
4647
4718
  }
4648
4719
  };
4649
4720
  DataColumnList.prototype.get = function (index) {
4650
- //!!!!!!!!!check on "out of index"
4651
- return this.items[index];
4721
+ if (index >= 0 && index < this.count) {
4722
+ return this.items[index];
4723
+ }
4724
+ else {
4725
+ return null;
4726
+ }
4652
4727
  };
4653
4728
  DataColumnList.prototype.getIndex = function (id) {
4654
4729
  return this.mapper[id];
@@ -4679,7 +4754,7 @@ var DataColumnList = /** @class */ (function () {
4679
4754
  //# sourceMappingURL=data_column.js.map
4680
4755
 
4681
4756
  /***/ }),
4682
- /* 17 */
4757
+ /* 18 */
4683
4758
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4684
4759
 
4685
4760
  "use strict";
@@ -4754,7 +4829,7 @@ var browserUtils;
4754
4829
  //# sourceMappingURL=browser_utils.js.map
4755
4830
 
4756
4831
  /***/ }),
4757
- /* 18 */
4832
+ /* 19 */
4758
4833
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4759
4834
 
4760
4835
  "use strict";
@@ -4857,7 +4932,7 @@ function mask(input, maskPattern) {
4857
4932
  //# sourceMappingURL=mask.js.map
4858
4933
 
4859
4934
  /***/ }),
4860
- /* 19 */
4935
+ /* 20 */
4861
4936
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4862
4937
 
4863
4938
  "use strict";
@@ -4866,7 +4941,7 @@ function mask(input, maskPattern) {
4866
4941
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return DefaultProgressDialog; });
4867
4942
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return DefaultDialogSet; });
4868
4943
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
4869
- /* 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);
4870
4945
  /* harmony import */ var _utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
4871
4946
  var __extends = (undefined && undefined.__extends) || (function () {
4872
4947
  var extendStatics = function (d, b) {
@@ -5380,10 +5455,10 @@ var DefaultDialogSet = /** @class */ (function () {
5380
5455
  }());
5381
5456
 
5382
5457
  //# sourceMappingURL=default_dialog_service.js.map
5383
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(29)))
5458
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
5384
5459
 
5385
5460
  /***/ }),
5386
- /* 20 */
5461
+ /* 21 */
5387
5462
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5388
5463
 
5389
5464
  "use strict";
@@ -5397,7 +5472,7 @@ var DialogFooterAlignment;
5397
5472
  //# sourceMappingURL=dialog_service.js.map
5398
5473
 
5399
5474
  /***/ }),
5400
- /* 21 */
5475
+ /* 22 */
5401
5476
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5402
5477
 
5403
5478
  "use strict";
@@ -5416,11 +5491,11 @@ var __assign = (undefined && undefined.__assign) || function () {
5416
5491
  };
5417
5492
 
5418
5493
  var TextDataFilter = /** @class */ (function () {
5419
- function TextDataFilter(loader, sourceTable, entityId, isLookup) {
5494
+ function TextDataFilter(loader, sourceTable, sourceId, isLookup) {
5420
5495
  if (isLookup === void 0) { isLookup = false; }
5421
5496
  this.loader = loader;
5422
5497
  this.sourceTable = sourceTable;
5423
- this.entityId = entityId;
5498
+ this.sourceId = sourceId;
5424
5499
  this.isLookup = isLookup;
5425
5500
  this.filterValue = '';
5426
5501
  //turns off client-side search
@@ -5457,7 +5532,7 @@ var TextDataFilter = /** @class */ (function () {
5457
5532
  limit: this.sourceTable.chunkSize,
5458
5533
  needTotal: true,
5459
5534
  filters: filters_1,
5460
- entityId: this.entityId,
5535
+ sourceId: this.sourceId,
5461
5536
  lookup: this.isLookup
5462
5537
  })
5463
5538
  .then(function (data) {
@@ -5465,7 +5540,7 @@ var TextDataFilter = /** @class */ (function () {
5465
5540
  chunkSize: _this.sourceTable.chunkSize,
5466
5541
  loader: {
5467
5542
  loadChunk: function (params) { return _this.loader
5468
- .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 })); }
5469
5544
  }
5470
5545
  });
5471
5546
  for (var _i = 0, _a = _this.sourceTable.columns.getItems(); _i < _a.length; _i++) {
@@ -5486,26 +5561,26 @@ var TextDataFilter = /** @class */ (function () {
5486
5561
  return new Promise(function (resolve, reject) {
5487
5562
  var filteredTable = new _easydata_core__WEBPACK_IMPORTED_MODULE_0__["EasyDataTable"]({
5488
5563
  chunkSize: _this.sourceTable.chunkSize,
5564
+ inMemory: true
5489
5565
  });
5490
5566
  for (var _i = 0, _a = _this.sourceTable.columns.getItems(); _i < _a.length; _i++) {
5491
5567
  var col = _a[_i];
5492
5568
  filteredTable.columns.add(col);
5493
5569
  }
5494
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; });
5495
5574
  var hasEnterance = function (row) {
5496
- for (var _i = 0, _a = _this.sourceTable.columns.getItems(); _i < _a.length; _i++) {
5497
- var col = _a[_i];
5498
- if (_easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].isIntType(col.type)
5499
- || _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getStringDataTypes().indexOf(col.type) >= 0) {
5500
- var value = row.getValue(col.id);
5501
- if (value) {
5502
- var normalized = value.toString()
5503
- .toLowerCase();
5504
- for (var _b = 0, words_1 = words; _b < words_1.length; _b++) {
5505
- var word = words_1[_b];
5506
- if (normalized.indexOf(word) >= 0) {
5507
- return true;
5508
- }
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;
5509
5584
  }
5510
5585
  }
5511
5586
  }
@@ -5518,8 +5593,7 @@ var TextDataFilter = /** @class */ (function () {
5518
5593
  filteredTable.addRow(row);
5519
5594
  }
5520
5595
  }
5521
- if (filteredTable.getCachedCount() == 0)
5522
- filteredTable.setTotal(0);
5596
+ filteredTable.setTotal(filteredTable.getCachedCount());
5523
5597
  resolve(filteredTable);
5524
5598
  });
5525
5599
  };
@@ -5527,10 +5601,10 @@ var TextDataFilter = /** @class */ (function () {
5527
5601
  }());
5528
5602
 
5529
5603
  //# sourceMappingURL=text_data_filter.js.map
5530
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
5604
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(31)))
5531
5605
 
5532
5606
  /***/ }),
5533
- /* 22 */
5607
+ /* 23 */
5534
5608
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5535
5609
 
5536
5610
  "use strict";
@@ -5538,7 +5612,7 @@ var TextDataFilter = /** @class */ (function () {
5538
5612
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5539
5613
  /* harmony import */ var _easydata_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
5540
5614
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
5541
- /* 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);
5542
5616
 
5543
5617
 
5544
5618
 
@@ -5673,19 +5747,19 @@ var EntityEditForm = /** @class */ (function () {
5673
5747
  }());
5674
5748
 
5675
5749
  //# sourceMappingURL=entity_edit_form.js.map
5676
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
5750
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(31)))
5677
5751
 
5678
5752
  /***/ }),
5679
- /* 23 */
5753
+ /* 24 */
5680
5754
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5681
5755
 
5682
5756
  "use strict";
5683
5757
  /* WEBPACK VAR INJECTION */(function(Promise) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return HttpResponseError; });
5684
5758
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HttpClient; });
5685
5759
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
5686
- /* harmony import */ var _http_action_result__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31);
5760
+ /* harmony import */ var _http_action_result__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(32);
5687
5761
  /* harmony import */ var _http_method__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
5688
- /* harmony import */ var _http_request__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
5762
+ /* harmony import */ var _http_request__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
5689
5763
  var __extends = (undefined && undefined.__extends) || (function () {
5690
5764
  var extendStatics = function (d, b) {
5691
5765
  extendStatics = Object.setPrototypeOf ||
@@ -5757,7 +5831,7 @@ var HttpClient = /** @class */ (function () {
5757
5831
  var desc = {
5758
5832
  method: method,
5759
5833
  url: url,
5760
- headers: __assign({}, this.defaultHeaders, options.headers || {}),
5834
+ headers: __assign(__assign({}, this.defaultHeaders), options.headers || {}),
5761
5835
  queryParams: options.queryParams || {},
5762
5836
  data: data
5763
5837
  };
@@ -5827,10 +5901,10 @@ var HttpClient = /** @class */ (function () {
5827
5901
  }());
5828
5902
 
5829
5903
  //# sourceMappingURL=http_client.js.map
5830
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(24)))
5904
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
5831
5905
 
5832
5906
  /***/ }),
5833
- /* 24 */
5907
+ /* 25 */
5834
5908
  /***/ (function(module, exports, __webpack_require__) {
5835
5909
 
5836
5910
  /* WEBPACK VAR INJECTION */(function(process, global) {/*!
@@ -7007,10 +7081,10 @@ return Promise$1;
7007
7081
 
7008
7082
  //# sourceMappingURL=es6-promise.map
7009
7083
 
7010
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25), __webpack_require__(26)))
7084
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(26), __webpack_require__(27)))
7011
7085
 
7012
7086
  /***/ }),
7013
- /* 25 */
7087
+ /* 26 */
7014
7088
  /***/ (function(module, exports) {
7015
7089
 
7016
7090
  // shim for using process in browser
@@ -7200,7 +7274,7 @@ process.umask = function() { return 0; };
7200
7274
 
7201
7275
 
7202
7276
  /***/ }),
7203
- /* 26 */
7277
+ /* 27 */
7204
7278
  /***/ (function(module, exports) {
7205
7279
 
7206
7280
  var g;
@@ -7226,13 +7300,13 @@ module.exports = g;
7226
7300
 
7227
7301
 
7228
7302
  /***/ }),
7229
- /* 27 */
7303
+ /* 28 */
7230
7304
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
7231
7305
 
7232
7306
  "use strict";
7233
7307
  /* WEBPACK VAR INJECTION */(function(Promise) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EasyDataTable; });
7234
- /* harmony import */ var _data_column__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16);
7235
- /* 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);
7236
7310
  /* harmony import */ var _types_data_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
7237
7311
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
7238
7312
 
@@ -7243,16 +7317,23 @@ var EasyDataTable = /** @class */ (function () {
7243
7317
  function EasyDataTable(options) {
7244
7318
  this._chunkSize = 1000;
7245
7319
  this._elasticChunks = false;
7246
- // object keeps number keys sorted
7247
- this.chunkMap = {};
7320
+ this.cachedRows = [];
7248
7321
  this.total = 0;
7249
7322
  this.loader = null;
7250
7323
  this.needTotal = true;
7324
+ this.isInMemory = false;
7251
7325
  options = options || {};
7252
7326
  this._chunkSize = options.chunkSize || this._chunkSize;
7253
7327
  this._elasticChunks = options.elasticChunks || this._elasticChunks;
7254
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
+ }
7255
7335
  this._columns = new _data_column__WEBPACK_IMPORTED_MODULE_0__[/* DataColumnList */ "c"]();
7336
+ this.onUpdate = options.onUpdate;
7256
7337
  if (options.columns) {
7257
7338
  for (var _i = 0, _a = options.columns; _i < _a.length; _i++) {
7258
7339
  var colDesc = _a[_i];
@@ -7283,7 +7364,7 @@ var EasyDataTable = /** @class */ (function () {
7283
7364
  this._chunkSize = value;
7284
7365
  this.total = 0;
7285
7366
  this.needTotal = !this.elasticChunks;
7286
- this.chunkMap = {};
7367
+ this.cachedRows = [];
7287
7368
  },
7288
7369
  enumerable: true,
7289
7370
  configurable: true
@@ -7296,7 +7377,7 @@ var EasyDataTable = /** @class */ (function () {
7296
7377
  this._elasticChunks = value;
7297
7378
  this.total = 0;
7298
7379
  this.needTotal = !this.elasticChunks;
7299
- this.chunkMap = {};
7380
+ this.cachedRows = [];
7300
7381
  },
7301
7382
  enumerable: true,
7302
7383
  configurable: true
@@ -7324,22 +7405,12 @@ var EasyDataTable = /** @class */ (function () {
7324
7405
  endIndex = this.total;
7325
7406
  }
7326
7407
  }
7327
- var lbChunk = Math.trunc(fromIndex / this._chunkSize);
7328
- var ubChunk = Math.trunc((endIndex - 1) / this._chunkSize);
7329
- var allChunksCached = true;
7330
- for (var i = lbChunk; i <= ubChunk; i++) {
7331
- if (!this.chunkMap[i]) {
7332
- allChunksCached = false;
7333
- break;
7334
- }
7408
+ if (this.isInMemory && endIndex > this.cachedRows.length) {
7409
+ endIndex = this.cachedRows.length;
7335
7410
  }
7411
+ var allChunksCached = endIndex <= this.cachedRows.length;
7336
7412
  if (allChunksCached) {
7337
- var resultArr = [];
7338
- for (var i = lbChunk; i <= ubChunk; i++) {
7339
- resultArr = resultArr.concat(this.chunkMap[i].rows);
7340
- }
7341
- var firstChunkOffset = this.chunkMap[lbChunk].offset;
7342
- return Promise.resolve(resultArr.slice(fromIndex - firstChunkOffset, endIndex - firstChunkOffset));
7413
+ return Promise.resolve(this.cachedRows.slice(fromIndex, endIndex));
7343
7414
  }
7344
7415
  //if loader is not defined
7345
7416
  if (!this.loader) {
@@ -7350,53 +7421,34 @@ var EasyDataTable = /** @class */ (function () {
7350
7421
  if (this.needTotal) {
7351
7422
  this.needTotal = false;
7352
7423
  }
7353
- var limit = this._chunkSize * (ubChunk - lbChunk + 1);
7354
- if (this.elasticChunks)
7355
- limit++;
7356
- return this.loader.loadChunk({
7357
- 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,
7358
7431
  limit: limit,
7359
7432
  needTotal: needTotal
7360
7433
  })
7361
7434
  .then(function (result) {
7362
- var chunks = result.table.getCachedChunks();
7363
7435
  if (needTotal) {
7364
7436
  _this.total = result.total;
7365
- if (endIndex > _this.total) {
7366
- endIndex = _this.total;
7367
- }
7368
7437
  }
7369
- var index = lbChunk;
7370
- for (var _i = 0, chunks_1 = chunks; _i < chunks_1.length; _i++) {
7371
- var chunk = chunks_1[_i];
7372
- _this.chunkMap[index] = {
7373
- offset: index * _this._chunkSize,
7374
- rows: chunk.rows
7375
- };
7376
- index++;
7438
+ Array.prototype.push.apply(_this.cachedRows, result.table.getCachedRows());
7439
+ if (endIndex > _this.cachedRows.length) {
7440
+ endIndex = _this.cachedRows.length;
7377
7441
  }
7378
7442
  if (_this.elasticChunks) {
7379
7443
  var count_1 = result.table.getCachedCount();
7380
- if (count_1 > 0) {
7381
- var chunk = _this.chunkMap[index - 1];
7382
- if (count_1 === limit) {
7383
- chunk.rows.splice(chunk.rows.length - 1, 1);
7384
- if (chunk.rows.length == 0) {
7385
- delete _this.chunkMap[index - 1];
7386
- }
7387
- }
7388
- if (count_1 < limit) {
7389
- _this.total = _this.getCachedCount();
7390
- }
7444
+ if (count_1 < limit) {
7445
+ _this.total = _this.cachedRows.length;
7391
7446
  }
7392
7447
  }
7393
- var resultArr = [];
7394
- for (var i = lbChunk; i <= ubChunk; i++) {
7395
- resultArr = resultArr.concat(_this.chunkMap[i].rows);
7396
- }
7397
- var firstChunkOffset = _this.chunkMap[lbChunk].offset;
7398
- return resultArr.slice(fromIndex - firstChunkOffset, endIndex - firstChunkOffset);
7448
+ _this.fireUpdated();
7449
+ return _this.cachedRows.slice(fromIndex, endIndex);
7399
7450
  });
7451
+ return resultPromise;
7400
7452
  };
7401
7453
  EasyDataTable.prototype.getRow = function (index) {
7402
7454
  return this.getRows({ offset: index, limit: 1 })
@@ -7408,14 +7460,13 @@ var EasyDataTable = /** @class */ (function () {
7408
7460
  EasyDataTable.prototype.setTotal = function (total) {
7409
7461
  this.total = total;
7410
7462
  this.needTotal = false;
7411
- this.chunkMap = {};
7412
7463
  };
7413
7464
  EasyDataTable.prototype.getCachedCount = function () {
7414
- return this.getCachedRows().length;
7465
+ return this.cachedRows.length;
7415
7466
  };
7416
7467
  EasyDataTable.prototype.clear = function () {
7417
7468
  this.columns.clear();
7418
- this.chunkMap = {};
7469
+ this.cachedRows = [];
7419
7470
  this.total = 0;
7420
7471
  this.needTotal = !this._elasticChunks;
7421
7472
  };
@@ -7448,60 +7499,33 @@ var EasyDataTable = /** @class */ (function () {
7448
7499
  }
7449
7500
  return null;
7450
7501
  };
7451
- EasyDataTable.prototype.addRow = function (rowOrValue) {
7502
+ EasyDataTable.prototype.addRow = function (rowOrValues) {
7452
7503
  var newRow;
7453
- if (Array.isArray(rowOrValue)) {
7504
+ if (Array.isArray(rowOrValues)) {
7505
+ var values = rowOrValues;
7454
7506
  var dateIdx = this._columns.getDateColumnIndexes();
7455
7507
  if (dateIdx.length > 0) {
7456
7508
  for (var _i = 0, dateIdx_1 = dateIdx; _i < dateIdx_1.length; _i++) {
7457
7509
  var idx = dateIdx_1[_i];
7458
- if (rowOrValue[idx]) {
7459
- 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);
7460
7512
  }
7461
7513
  }
7462
7514
  }
7463
- 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);
7464
7516
  }
7465
7517
  else {
7466
- newRow = this.createRow(rowOrValue);
7467
- }
7468
- var lastChunk = this.getLastChunk();
7469
- if (!lastChunk || lastChunk.rows.length >= this._chunkSize) {
7470
- lastChunk = this.createChunk();
7518
+ newRow = this.createRow(rowOrValues);
7471
7519
  }
7472
- lastChunk.rows.push(newRow);
7520
+ this.cachedRows.push(newRow);
7473
7521
  var cachedTotal = this.getCachedCount();
7474
7522
  if (cachedTotal > this.total) {
7475
7523
  this.total = cachedTotal;
7476
7524
  }
7477
7525
  return newRow;
7478
7526
  };
7479
- EasyDataTable.prototype.createChunk = function (index) {
7480
- if (typeof index == 'undefined') {
7481
- index = this.getLastChunkIndex() + 1;
7482
- }
7483
- var chunk = { offset: index * this._chunkSize, rows: [] };
7484
- this.chunkMap[index] = chunk;
7485
- return chunk;
7486
- };
7487
- EasyDataTable.prototype.getLastChunkIndex = function () {
7488
- var keys = Object.keys(this.chunkMap);
7489
- return keys.length > 0
7490
- ? parseInt(keys[keys.length - 1])
7491
- : -1;
7492
- };
7493
- EasyDataTable.prototype.getLastChunk = function () {
7494
- var index = this.getLastChunkIndex();
7495
- return index > -1
7496
- ? this.chunkMap[index]
7497
- : null;
7498
- };
7499
7527
  EasyDataTable.prototype.getCachedRows = function () {
7500
- return this.getCachedChunks()
7501
- .reduce(function (acc, v) { return acc.concat(v.rows); }, []);
7502
- };
7503
- EasyDataTable.prototype.getCachedChunks = function () {
7504
- return Object.values(this.chunkMap);
7528
+ return this.cachedRows;
7505
7529
  };
7506
7530
  EasyDataTable.prototype.totalIsKnown = function () {
7507
7531
  if (this.elasticChunks) {
@@ -7510,14 +7534,19 @@ var EasyDataTable = /** @class */ (function () {
7510
7534
  }
7511
7535
  return !this.needTotal;
7512
7536
  };
7537
+ EasyDataTable.prototype.fireUpdated = function () {
7538
+ if (this.onUpdate) {
7539
+ this.onUpdate(this);
7540
+ }
7541
+ };
7513
7542
  return EasyDataTable;
7514
7543
  }());
7515
7544
 
7516
7545
  //# sourceMappingURL=easy_data_table.js.map
7517
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(24)))
7546
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
7518
7547
 
7519
7548
  /***/ }),
7520
- /* 28 */
7549
+ /* 29 */
7521
7550
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
7522
7551
 
7523
7552
  "use strict";
@@ -7526,8 +7555,9 @@ var EasyDataTable = /** @class */ (function () {
7526
7555
  /* harmony import */ var _utils_drag_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
7527
7556
  /* harmony import */ var _utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
7528
7557
  /* harmony import */ var _utils_ui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6);
7529
- /* harmony import */ var _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8);
7530
- /* 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__(10);
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);
7531
7561
  var __assign = (undefined && undefined.__assign) || function () {
7532
7562
  __assign = Object.assign || function(t) {
7533
7563
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -7539,6 +7569,14 @@ var __assign = (undefined && undefined.__assign) || function () {
7539
7569
  };
7540
7570
  return __assign.apply(this, arguments);
7541
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
+
7542
7580
 
7543
7581
 
7544
7582
 
@@ -7571,14 +7609,42 @@ var EasyGrid = /** @class */ (function () {
7571
7609
  pageSize: 30,
7572
7610
  pageSizeItems: [20, 30, 50, 100, 200]
7573
7611
  },
7574
- addColumns: false,
7612
+ columnWidths: {
7613
+ autoResize: _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Always,
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,
7575
7642
  viewportRowsCount: null,
7576
7643
  showActiveRow: true
7577
7644
  };
7578
7645
  this.rowsOnPagePromise = null;
7579
7646
  this.containerInitialHeight = 0;
7580
7647
  this.firstRender = true;
7581
- this.compareValues = this.strictCompare;
7582
7648
  this.prevRowTotals = null;
7583
7649
  this.landingIndex = -1;
7584
7650
  this.landingSlot = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
@@ -7590,18 +7656,55 @@ var EasyGrid = /** @class */ (function () {
7590
7656
  if (options && options.paging) {
7591
7657
  options.paging = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].assign(this.defaultDataGridOptions.paging, options.paging);
7592
7658
  }
7593
- this.options = __assign({}, this.defaultDataGridOptions, options);
7659
+ this.options = this.mergeOptions(options);
7660
+ this.processColumnWidthsOptions();
7594
7661
  if (!this.options.slot)
7595
7662
  throw Error('"slot" parameter is required to initialize EasyDataGrid');
7596
7663
  if (!this.options.dataTable)
7597
7664
  throw Error('"dataTable" parameter is required to initialize EasyDataGrid');
7598
7665
  this.dataTable = options.dataTable;
7599
7666
  this.eventEmitter = new _easydata_core__WEBPACK_IMPORTED_MODULE_0__["EventEmitter"](this);
7600
- this.cellRendererStore = new _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_5__[/* GridCellRendererStore */ "c"](options);
7601
- 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);
7602
7669
  this.setSlot(this.options.slot);
7603
7670
  this.init(this.options);
7604
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
+ };
7605
7708
  EasyGrid.prototype.setSlot = function (slot) {
7606
7709
  if (typeof slot === 'string') {
7607
7710
  if (slot.length) {
@@ -7634,8 +7737,8 @@ var EasyGrid = /** @class */ (function () {
7634
7737
  if (options.onRowDbClick) {
7635
7738
  this.addEventListener('rowDbClick', options.onRowDbClick);
7636
7739
  }
7637
- if (options.onAddColumnClick) {
7638
- this.addEventListener('addColumnClick', options.onAddColumnClick);
7740
+ if (options.onPlusButtonClick) {
7741
+ this.addEventListener('plusButtonClick', options.onPlusButtonClick);
7639
7742
  }
7640
7743
  if (options.onColumnChanged) {
7641
7744
  this.addEventListener('columnChanged', options.onColumnChanged);
@@ -7721,7 +7824,7 @@ var EasyGrid = /** @class */ (function () {
7721
7824
  };
7722
7825
  EasyGrid.prototype.render = function () {
7723
7826
  var _this = this;
7724
- if (!this.hasData() && !this.options.addColumns)
7827
+ if (!this.hasData() && !this.options.showPlusButton)
7725
7828
  return;
7726
7829
  this.containerInitialHeight = this.slot.clientHeight;
7727
7830
  this.rootDiv = document.createElement('div');
@@ -7738,6 +7841,7 @@ var EasyGrid = /** @class */ (function () {
7738
7841
  gridContainer.classList.add(this.cssPrefix + "-container");
7739
7842
  gridContainer.appendChild(this.rootDiv);
7740
7843
  this.slot.appendChild(gridContainer);
7844
+ var needAutoResize = this.options.columnWidths.autoResize !== _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Never;
7741
7845
  if (this.rowsOnPagePromise) {
7742
7846
  this.rowsOnPagePromise
7743
7847
  .then(function () { return _this.updateHeight(); })
@@ -7748,8 +7852,13 @@ var EasyGrid = /** @class */ (function () {
7748
7852
  }
7749
7853
  else {
7750
7854
  setTimeout(function () {
7751
- _this.updateHeight();
7752
- _this.firstRender = false;
7855
+ _this.updateHeight()
7856
+ .then(function () {
7857
+ _this.firstRender = false;
7858
+ if (needAutoResize) {
7859
+ _this.resizeColumns();
7860
+ }
7861
+ });
7753
7862
  }, 100);
7754
7863
  }
7755
7864
  };
@@ -7760,14 +7869,14 @@ var EasyGrid = /** @class */ (function () {
7760
7869
  var firstRow = _this.bodyCellContainerDiv.firstElementChild;
7761
7870
  var rowHeight = firstRow ? firstRow.offsetHeight : DEFAULT_ROW_HEIGHT;
7762
7871
  var rowCount = _this.options.viewportRowsCount; // || DEFAULT_ROW_COUNT;
7763
- var bodyHeight_1 = rowHeight * rowCount;
7764
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyDiv)
7765
- .setStyle('height', bodyHeight_1 + "px");
7872
+ var viewportHeight_1 = rowHeight * rowCount;
7873
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyViewportDiv)
7874
+ .setStyle('height', viewportHeight_1 + "px");
7766
7875
  setTimeout(function () {
7767
7876
  var sbHeight = _this.bodyViewportDiv.offsetHeight - _this.bodyViewportDiv.clientHeight;
7768
- bodyHeight_1 = bodyHeight_1 + sbHeight;
7769
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyDiv)
7770
- .setStyle('height', bodyHeight_1 + "px");
7877
+ viewportHeight_1 = viewportHeight_1 + sbHeight;
7878
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyViewportDiv)
7879
+ .setStyle('height', viewportHeight_1 + "px");
7771
7880
  resolve();
7772
7881
  }, 100);
7773
7882
  return;
@@ -7786,6 +7895,12 @@ var EasyGrid = /** @class */ (function () {
7786
7895
  }
7787
7896
  });
7788
7897
  };
7898
+ EasyGrid.prototype.getContainerWidth = function () {
7899
+ return this.columns.getItems()
7900
+ .filter(function (col) { return col.isVisible; })
7901
+ .map(function (col) { return col.width; })
7902
+ .reduce(function (sum, current) { return sum + current; });
7903
+ };
7789
7904
  EasyGrid.prototype.renderHeader = function () {
7790
7905
  var _this = this;
7791
7906
  this.headerDiv = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
@@ -7808,10 +7923,10 @@ var EasyGrid = /** @class */ (function () {
7808
7923
  _this.headerRowDiv.appendChild(hd);
7809
7924
  if (column.isRowNum) {
7810
7925
  Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(hd)
7811
- .addChildElement(_this.renderAddColumnButton());
7926
+ .addChildElement(_this.renderHeaderButtons());
7812
7927
  }
7813
7928
  });
7814
- var containerWidth = this.columns.getItems().map(function (column) { return column.width; }).reduce(function (sum, current) { return sum + current; });
7929
+ var containerWidth = this.getContainerWidth();
7815
7930
  Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(this.headerCellContainerDiv)
7816
7931
  .setStyle('width', containerWidth + "px");
7817
7932
  };
@@ -7822,7 +7937,7 @@ var EasyGrid = /** @class */ (function () {
7822
7937
  var _this = this;
7823
7938
  var colBuilder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
7824
7939
  .addClass(this.cssPrefix + "-header-cell")
7825
- .data('col-idx', "" + (index + 1))
7940
+ .data('col-idx', "" + index)
7826
7941
  .setStyle('width', column.width + "px");
7827
7942
  if (column.dataColumn) {
7828
7943
  colBuilder
@@ -7836,6 +7951,11 @@ var EasyGrid = /** @class */ (function () {
7836
7951
  .addClass(this.cssPrefix + "-header-cell-label")
7837
7952
  .text(column.label);
7838
7953
  }
7954
+ if (column.description) {
7955
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', colDiv)
7956
+ .addClass('question-mark')
7957
+ .title(column.description);
7958
+ }
7839
7959
  if (this.options.allowDragDrop) {
7840
7960
  _utils_drag_manager__WEBPACK_IMPORTED_MODULE_1__[/* eqDragManager */ "d"].registerDraggableItem({
7841
7961
  element: colDiv,
@@ -7855,14 +7975,6 @@ var EasyGrid = /** @class */ (function () {
7855
7975
  }
7856
7976
  return colDiv;
7857
7977
  };
7858
- EasyGrid.prototype.strictCompare = function (value1, value2) {
7859
- return value1 !== value2;
7860
- };
7861
- EasyGrid.prototype.caseInsensitiveCompare = function (value1, value2) {
7862
- var val1 = (typeof value1 === 'string') ? value1.toLowerCase() : value1;
7863
- var val2 = (typeof value2 === 'string') ? value2.toLowerCase() : value2;
7864
- return val1 !== val2;
7865
- };
7866
7978
  EasyGrid.prototype.renderBody = function () {
7867
7979
  var _this = this;
7868
7980
  this.bodyDiv = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
@@ -7876,10 +7988,6 @@ var EasyGrid = /** @class */ (function () {
7876
7988
  .addClass(this.cssPrefix + "-cell-container")
7877
7989
  .toDOM();
7878
7990
  var showAggrs = this.canShowAggregates();
7879
- this.compareValues = this.caseInsensitiveCompare;
7880
- if (showAggrs && this.options.aggregates.settings.caseSensitiveGroups) {
7881
- this.compareValues = this.strictCompare;
7882
- }
7883
7991
  if (this.dataTable) {
7884
7992
  this.showProgress();
7885
7993
  this.rowsOnPagePromise = this.getRowsToRender()
@@ -7889,15 +7997,22 @@ var EasyGrid = /** @class */ (function () {
7889
7997
  //prevent double rendering (bad solution, we have to figure out how to avoid this behavior properly)
7890
7998
  _this.bodyCellContainerDiv.innerHTML = '';
7891
7999
  _this.prevRowTotals = null;
8000
+ var rowsToRender = 0;
7892
8001
  if (rows.length) {
7893
8002
  var groups_1 = showAggrs
7894
8003
  ? _this.options.aggregates.settings.getGroups()
7895
8004
  : [];
8005
+ rowsToRender = (rows.length < _this.pagination.pageSize)
8006
+ ? rows.length
8007
+ : _this.pagination.pageSize;
7896
8008
  rows.forEach(function (row, index) {
7897
8009
  if (showAggrs)
7898
8010
  _this.updateTotalsState(groups_1, row);
7899
- var tr = _this.renderRow(row, index);
7900
- _this.bodyCellContainerDiv.appendChild(tr);
8011
+ //we don't actually render the last row
8012
+ if (index < rowsToRender) {
8013
+ var tr = _this.renderRow(row, index);
8014
+ _this.bodyCellContainerDiv.appendChild(tr);
8015
+ }
7901
8016
  });
7902
8017
  var showGrandTotalsOnEachPage = _this.options.aggregates && _this.options.aggregates.showGrandTotalsOnEachPage;
7903
8018
  if (showAggrs && (_this.isLastPage() || showGrandTotalsOnEachPage)) {
@@ -7905,11 +8020,16 @@ var EasyGrid = /** @class */ (function () {
7905
8020
  _this.updateTotalsState(groups_1, row, true);
7906
8021
  }
7907
8022
  }
7908
- var containerWidth = _this.columns.getItems()
7909
- .map(function (column) { return column.width; }).reduce(function (sum, current) { return sum + current; });
7910
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyCellContainerDiv)
7911
- .setStyle('width', containerWidth + "px");
7912
- return rows.length;
8023
+ var needAutoResize = _this.options.columnWidths.autoResize !== _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Never;
8024
+ if (needAutoResize) {
8025
+ _this.resizeColumns();
8026
+ }
8027
+ else {
8028
+ var containerWidth = _this.getContainerWidth();
8029
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyCellContainerDiv)
8030
+ .setStyle('width', containerWidth + "px");
8031
+ }
8032
+ return rowsToRender;
7913
8033
  })
7914
8034
  .catch(function (error) { console.error(error); return 0; });
7915
8035
  }
@@ -7917,7 +8037,7 @@ var EasyGrid = /** @class */ (function () {
7917
8037
  Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.headerViewportDiv)
7918
8038
  .setStyle('margin-left', "-" + _this.bodyViewportDiv.scrollLeft + "px");
7919
8039
  });
7920
- this.bodyViewportDiv.addEventListener('keydown', this.onVieportKeydown.bind(this));
8040
+ this.bodyViewportDiv.addEventListener('keydown', this.onViewportKeydown.bind(this));
7921
8041
  };
7922
8042
  EasyGrid.prototype.isLastPage = function () {
7923
8043
  if (this.dataTable.elasticChunks) {
@@ -7943,7 +8063,7 @@ var EasyGrid = /** @class */ (function () {
7943
8063
  var group = groups[level - 1];
7944
8064
  for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
7945
8065
  var col = _a[_i];
7946
- if (this.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {
8066
+ if (!aggrSettings.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {
7947
8067
  changeLevel = level;
7948
8068
  break;
7949
8069
  }
@@ -8004,8 +8124,8 @@ var EasyGrid = /** @class */ (function () {
8004
8124
  });
8005
8125
  var aggrContainer = this.options.aggregates.calculator.getAggrContainer();
8006
8126
  var aggrCols = aggrSettings.getAggregates().map(function (c) { return c.colId; });
8007
- var key = this.buildGroupKey(group, row);
8008
- aggrContainer.getAggregates(level, key)
8127
+ var key = aggrSettings.buildGroupKey(group, row);
8128
+ aggrContainer.getAggregateData(level, key)
8009
8129
  .then(function (values) {
8010
8130
  for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {
8011
8131
  var aggrColId = aggrCols_1[_i];
@@ -8046,34 +8166,20 @@ var EasyGrid = /** @class */ (function () {
8046
8166
  }
8047
8167
  }
8048
8168
  if (groupFooterTemplate) {
8049
- var cellDiv_1 = _this.renderCell(column, colIndex, val, rowElement);
8169
+ var cellDiv_1 = _this.renderCell(column, index, val, rowElement);
8050
8170
  var innerCell = cellDiv_1.firstChild;
8051
8171
  val = innerCell.innerHTML;
8052
8172
  val = _this.applyGroupColumnTemplate(groupFooterTemplate, val, values[aggrSettings.COUNT_FIELD_NAME]);
8053
8173
  }
8054
8174
  }
8055
- var cellDiv = _this.renderCell(column, colIndex, val, rowElement);
8175
+ var cellDiv = _this.renderCell(column, index, val, rowElement);
8056
8176
  rowElement.appendChild(cellDiv);
8057
8177
  });
8058
8178
  })
8059
8179
  .catch(function (error) { return console.error(error); });
8060
8180
  return rowElement;
8061
8181
  };
8062
- EasyGrid.prototype.buildGroupKey = function (group, row) {
8063
- var aggrSettings = this.options.aggregates.settings;
8064
- var caseInsensitive = aggrSettings && !aggrSettings.caseSensitiveGroups;
8065
- var result = {};
8066
- for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
8067
- var colId = _a[_i];
8068
- var keyVal = row.getValue(colId);
8069
- if (caseInsensitive && typeof (keyVal) === 'string') {
8070
- keyVal = keyVal.toLowerCase();
8071
- }
8072
- result[colId] = keyVal;
8073
- }
8074
- return result;
8075
- };
8076
- EasyGrid.prototype.onVieportKeydown = function (ev) {
8182
+ EasyGrid.prototype.onViewportKeydown = function (ev) {
8077
8183
  if (this.options.showActiveRow) {
8078
8184
  var rowCount = this.bodyCellContainerDiv.querySelectorAll("." + this.cssPrefix + "-row").length;
8079
8185
  var newValue = void 0;
@@ -8127,13 +8233,17 @@ var EasyGrid = /** @class */ (function () {
8127
8233
  }
8128
8234
  }
8129
8235
  };
8236
+ /** Returns a promise with the list of the rows to render on one page.
8237
+ * The list contains pageSize+1 row to make it possible
8238
+ * to render the totals row (if it appears to be on the edge between pages)
8239
+ */
8130
8240
  EasyGrid.prototype.getRowsToRender = function () {
8131
8241
  if (this.options.paging.enabled === false) {
8132
8242
  return Promise.resolve(this.dataTable.getCachedRows());
8133
8243
  }
8134
8244
  return this.dataTable.getRows({
8135
- page: this.pagination.page,
8136
- pageSize: this.pagination.pageSize
8245
+ offset: (this.pagination.page - 1) * this.pagination.pageSize,
8246
+ limit: this.pagination.pageSize + 1
8137
8247
  })
8138
8248
  .catch(function (error) {
8139
8249
  console.error(error);
@@ -8158,23 +8268,26 @@ var EasyGrid = /** @class */ (function () {
8158
8268
  var pageInfoDiv = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
8159
8269
  .addClass(this.cssPrefix + "-page-info")
8160
8270
  .toDOM();
8161
- var fistPageRecordNum = count
8162
- ? (this.pagination.page - 1) * this.pagination.pageSize + 1
8163
- : 0;
8164
- var lastPageRecordNum = count
8165
- ? fistPageRecordNum + count - 1
8166
- : 0;
8167
- var totalStr = this.dataTable.getTotal().toString();
8168
- if (this.dataTable.elasticChunks) {
8169
- var count_1 = this.dataTable.getCachedCount();
8170
- var total = this.dataTable.getTotal();
8171
- if (count_1 !== total)
8172
- totalStr = '?';
8173
- }
8174
- pageInfoDiv.innerHTML = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].getText('GridPageInfo')
8175
- .replace('{FirstPageRecordNum}', "<span>" + fistPageRecordNum.toString() + "</span>")
8176
- .replace('{LastPageRecordNum}', "<span>" + lastPageRecordNum.toString() + "</span>")
8177
- .replace('{Total}', "<span>" + totalStr + "</span>");
8271
+ var rowCount = this.dataTable.getTotal();
8272
+ if (rowCount > 0) {
8273
+ var fistPageRecordNum = count
8274
+ ? (this.pagination.page - 1) * this.pagination.pageSize + 1
8275
+ : 0;
8276
+ var lastPageRecordNum = count
8277
+ ? fistPageRecordNum + count - 1
8278
+ : 0;
8279
+ var totalStr = this.dataTable.getTotal().toString();
8280
+ if (this.dataTable.elasticChunks) {
8281
+ var count_1 = this.dataTable.getCachedCount();
8282
+ var total = this.dataTable.getTotal();
8283
+ if (count_1 !== total)
8284
+ totalStr = '?';
8285
+ }
8286
+ pageInfoDiv.innerHTML = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].getText('GridPageInfo')
8287
+ .replace('{FirstPageRecordNum}', "<span>" + fistPageRecordNum.toString() + "</span>")
8288
+ .replace('{LastPageRecordNum}', "<span>" + lastPageRecordNum.toString() + "</span>")
8289
+ .replace('{Total}', "<span>" + totalStr + "</span>");
8290
+ }
8178
8291
  return pageInfoDiv;
8179
8292
  };
8180
8293
  EasyGrid.prototype.showProgress = function () {
@@ -8229,13 +8342,13 @@ var EasyGrid = /** @class */ (function () {
8229
8342
  if (this.options.showActiveRow && index == this.activeRowIndex) {
8230
8343
  rowBuilder.addClass(this.cssPrefix + "-row-active");
8231
8344
  }
8232
- this.columns.getItems().forEach(function (column) {
8345
+ this.columns.getItems().forEach(function (column, index) {
8233
8346
  if (!column.isVisible) {
8234
8347
  return;
8235
8348
  }
8236
8349
  var colindex = column.isRowNum ? -1 : _this.dataTable.columns.getIndex(column.dataColumn.id);
8237
8350
  var val = column.isRowNum ? indexGlobal + 1 : row.getValue(colindex);
8238
- rowElement.appendChild(_this.renderCell(column, colindex, val, rowElement));
8351
+ rowElement.appendChild(_this.renderCell(column, index, val, rowElement));
8239
8352
  });
8240
8353
  return rowElement;
8241
8354
  };
@@ -8245,13 +8358,13 @@ var EasyGrid = /** @class */ (function () {
8245
8358
  .data('col-idx', "" + colIndex)
8246
8359
  .attr('tabindex', '-1')
8247
8360
  .setStyle('width', column.width + "px");
8248
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnAlign */ "b"].LEFT) {
8361
+ if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnAlign */ "b"].LEFT) {
8249
8362
  builder.addClass(this.cssPrefix + "-cell-align-left");
8250
8363
  }
8251
- else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnAlign */ "b"].RIGHT) {
8364
+ else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnAlign */ "b"].RIGHT) {
8252
8365
  builder.addClass(this.cssPrefix + "-cell-align-right");
8253
8366
  }
8254
- else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnAlign */ "b"].CENTER) {
8367
+ else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnAlign */ "b"].CENTER) {
8255
8368
  builder.addClass(this.cssPrefix + "-cell-align-center");
8256
8369
  }
8257
8370
  if (column.cellRenderer) {
@@ -8269,7 +8382,8 @@ var EasyGrid = /** @class */ (function () {
8269
8382
  var _this = this;
8270
8383
  var paginateDiv = document.createElement('div');
8271
8384
  paginateDiv.className = this.cssPrefix + "-pagination-wrapper";
8272
- if (this.options.paging && this.options.paging.enabled) {
8385
+ var rowCount = this.dataTable.getTotal();
8386
+ if (this.options.paging && this.options.paging.enabled && rowCount > 0) {
8273
8387
  var prefix_1 = this.paginationOptions.useBootstrap ? '' : this.cssPrefix + "-";
8274
8388
  var buttonClickHandler_1 = function (ev) {
8275
8389
  var element = ev.target;
@@ -8395,18 +8509,18 @@ var EasyGrid = /** @class */ (function () {
8395
8509
  EasyGrid.prototype.removeEventListener = function (eventType, handlerId) {
8396
8510
  this.eventEmitter.unsubscribe(eventType, handlerId);
8397
8511
  };
8398
- EasyGrid.prototype.renderAddColumnButton = function () {
8512
+ EasyGrid.prototype.renderHeaderButtons = function () {
8399
8513
  var _this = this;
8400
- if (this.options.addColumns) {
8514
+ if (this.options.showPlusButton) {
8401
8515
  return Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
8402
- .addClass(this.cssPrefix + "-addrow")
8403
- .title(this.options.addColumnsTitle || 'Add column')
8516
+ .addClass(this.cssPrefix + "-header-btn-plus")
8517
+ .title(this.options.plusButtonTitle || 'Add')
8404
8518
  .addChild('a', function (builder) { return builder
8405
8519
  .attr('href', 'javascript:void(0)')
8406
8520
  .on('click', function (e) {
8407
8521
  e.preventDefault();
8408
8522
  _this.fireEvent({
8409
- type: 'addColumnClick',
8523
+ type: 'plusButtonClick',
8410
8524
  sourceEvent: e
8411
8525
  });
8412
8526
  }); })
@@ -8507,14 +8621,105 @@ var EasyGrid = /** @class */ (function () {
8507
8621
  EasyGrid.prototype.focus = function () {
8508
8622
  this.bodyViewportDiv.focus();
8509
8623
  };
8624
+ EasyGrid.prototype.resizeColumns = function () {
8625
+ if (this.options.columnWidths.autoResize === _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Never)
8626
+ return;
8627
+ var containerWidth = this.bodyCellContainerDiv.style.width;
8628
+ this.bodyCellContainerDiv.style.visibility = 'hidden';
8629
+ this.bodyCellContainerDiv.style.width = '1px';
8630
+ //this.headerRowDiv.style.visibility = 'hidden';
8631
+ this.headerRowDiv.style.width = '1px';
8632
+ var sumWidth = 0;
8633
+ var columns = this.columns.getItems();
8634
+ var headerCells = this.headerCellContainerDiv.querySelectorAll("." + this.cssPrefix + "-header-cell");
8635
+ var headerIdx = 0;
8636
+ var _loop_1 = function (idx) {
8637
+ var column = columns[idx];
8638
+ if (!column.isVisible)
8639
+ return "continue";
8640
+ var calculatedWidth = this_1.options.columnWidths.autoResize !== _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Always && column.dataColumn
8641
+ ? column.dataColumn.calculatedWidth
8642
+ : 0;
8643
+ var cellValues = this_1.bodyCellContainerDiv.querySelectorAll("." + this_1.cssPrefix + "-cell[data-col-idx=\"" + idx + "\"] > ." + this_1.cssPrefix + "-cell-value");
8644
+ var maxWidth = 0;
8645
+ if (calculatedWidth > 0) {
8646
+ sumWidth += calculatedWidth;
8647
+ column.width = calculatedWidth;
8648
+ cellValues.forEach(function (value) {
8649
+ value.parentElement.style.width = calculatedWidth + "px";
8650
+ });
8651
+ headerCells[headerIdx].style.width = calculatedWidth + "px";
8652
+ }
8653
+ else {
8654
+ if (cellValues.length == 0) {
8655
+ headerCells[headerIdx].style.width = null;
8656
+ headerCells[headerIdx].style.whiteSpace = 'nowrap';
8657
+ }
8658
+ maxWidth = headerCells[headerIdx].offsetWidth;
8659
+ if (cellValues.length > 0) {
8660
+ cellValues.forEach(function (value) {
8661
+ value.parentElement.style.width = null;
8662
+ var width = value.parentElement.offsetWidth;
8663
+ if (width > maxWidth) {
8664
+ maxWidth = width;
8665
+ }
8666
+ });
8667
+ maxWidth += 3;
8668
+ var maxOption = column.isRowNum
8669
+ ? this_1.options.columnWidths.rowNumColumn.max || 500
8670
+ : this_1.options.columnWidths[column.dataColumn.type].max || 2000;
8671
+ var minOption = column.isRowNum
8672
+ ? this_1.options.columnWidths.rowNumColumn.min || 0
8673
+ : this_1.options.columnWidths[column.dataColumn.type].min || 20;
8674
+ if (maxWidth > maxOption) {
8675
+ maxWidth = maxOption;
8676
+ }
8677
+ if (maxWidth < minOption) {
8678
+ maxWidth = minOption;
8679
+ }
8680
+ if (_easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].isNumericType(column.type)) {
8681
+ //increase the calculated width in 1.3 times for numeric columns
8682
+ maxWidth = Math.round(maxWidth * 1.3);
8683
+ }
8684
+ sumWidth += maxWidth;
8685
+ column.width = maxWidth;
8686
+ cellValues.forEach(function (value) {
8687
+ value.parentElement.style.width = maxWidth + "px";
8688
+ });
8689
+ headerCells[headerIdx].style.width = maxWidth + "px";
8690
+ if (column.dataColumn) {
8691
+ column.dataColumn.calculatedWidth = maxWidth;
8692
+ }
8693
+ }
8694
+ else {
8695
+ sumWidth += maxWidth;
8696
+ }
8697
+ }
8698
+ headerIdx++;
8699
+ };
8700
+ var this_1 = this;
8701
+ for (var idx = 0; idx < this.columns.count; idx++) {
8702
+ _loop_1(idx);
8703
+ }
8704
+ if (sumWidth > 0) {
8705
+ this.bodyCellContainerDiv.style.width = sumWidth + "px";
8706
+ this.headerCellContainerDiv.style.width = sumWidth + "px";
8707
+ }
8708
+ else {
8709
+ this.bodyCellContainerDiv.style.width = containerWidth;
8710
+ this.headerCellContainerDiv.style.width = containerWidth;
8711
+ }
8712
+ this.bodyCellContainerDiv.style.visibility = null;
8713
+ this.headerRowDiv.removeAttribute('style');
8714
+ };
8510
8715
  return EasyGrid;
8511
8716
  }());
8512
8717
 
8513
8718
  //# sourceMappingURL=easy_grid.js.map
8514
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(29)))
8719
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
8515
8720
 
8516
8721
  /***/ }),
8517
- /* 29 */
8722
+ /* 30 */
8518
8723
  /***/ (function(module, exports, __webpack_require__) {
8519
8724
 
8520
8725
  /* WEBPACK VAR INJECTION */(function(process, global) {/*!
@@ -9691,10 +9896,10 @@ return Promise$1;
9691
9896
 
9692
9897
  //# sourceMappingURL=es6-promise.map
9693
9898
 
9694
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25), __webpack_require__(26)))
9899
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(26), __webpack_require__(27)))
9695
9900
 
9696
9901
  /***/ }),
9697
- /* 30 */
9902
+ /* 31 */
9698
9903
  /***/ (function(module, exports, __webpack_require__) {
9699
9904
 
9700
9905
  /* WEBPACK VAR INJECTION */(function(process, global) {/*!
@@ -10871,10 +11076,10 @@ return Promise$1;
10871
11076
 
10872
11077
  //# sourceMappingURL=es6-promise.map
10873
11078
 
10874
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(39), __webpack_require__(40)))
11079
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40), __webpack_require__(41)))
10875
11080
 
10876
11081
  /***/ }),
10877
- /* 31 */
11082
+ /* 32 */
10878
11083
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10879
11084
 
10880
11085
  "use strict";
@@ -10905,13 +11110,13 @@ var HttpActionResult = /** @class */ (function () {
10905
11110
  //# sourceMappingURL=http_action_result.js.map
10906
11111
 
10907
11112
  /***/ }),
10908
- /* 32 */
11113
+ /* 33 */
10909
11114
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10910
11115
 
10911
11116
  "use strict";
10912
11117
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DateTimeValidator; });
10913
11118
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
10914
- /* harmony import */ var _validator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
11119
+ /* harmony import */ var _validator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
10915
11120
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
10916
11121
  var __extends = (undefined && undefined.__extends) || (function () {
10917
11122
  var extendStatics = function (d, b) {
@@ -10959,48 +11164,48 @@ var DateTimeValidator = /** @class */ (function (_super) {
10959
11164
  //# sourceMappingURL=datetime_validator.js.map
10960
11165
 
10961
11166
  /***/ }),
10962
- /* 33 */
11167
+ /* 34 */
10963
11168
  /***/ (function(module, exports, __webpack_require__) {
10964
11169
 
10965
- __webpack_require__(34);
10966
- module.exports = __webpack_require__(41);
11170
+ __webpack_require__(35);
11171
+ module.exports = __webpack_require__(42);
10967
11172
 
10968
11173
 
10969
11174
  /***/ }),
10970
- /* 34 */
11175
+ /* 35 */
10971
11176
  /***/ (function(module, exports, __webpack_require__) {
10972
11177
 
10973
- __webpack_require__(35);
10974
11178
  __webpack_require__(36);
10975
11179
  __webpack_require__(37);
10976
- __webpack_require__(38);
11180
+ __webpack_require__(38);
11181
+ __webpack_require__(39);
10977
11182
 
10978
11183
  /***/ }),
10979
- /* 35 */
11184
+ /* 36 */
10980
11185
  /***/ (function(module, exports, __webpack_require__) {
10981
11186
 
10982
11187
  // extracted by mini-css-extract-plugin
10983
11188
 
10984
11189
  /***/ }),
10985
- /* 36 */
11190
+ /* 37 */
10986
11191
  /***/ (function(module, exports, __webpack_require__) {
10987
11192
 
10988
11193
  // extracted by mini-css-extract-plugin
10989
11194
 
10990
11195
  /***/ }),
10991
- /* 37 */
11196
+ /* 38 */
10992
11197
  /***/ (function(module, exports, __webpack_require__) {
10993
11198
 
10994
11199
  // extracted by mini-css-extract-plugin
10995
11200
 
10996
11201
  /***/ }),
10997
- /* 38 */
11202
+ /* 39 */
10998
11203
  /***/ (function(module, exports, __webpack_require__) {
10999
11204
 
11000
11205
  // extracted by mini-css-extract-plugin
11001
11206
 
11002
11207
  /***/ }),
11003
- /* 39 */
11208
+ /* 40 */
11004
11209
  /***/ (function(module, exports) {
11005
11210
 
11006
11211
  // shim for using process in browser
@@ -11190,7 +11395,7 @@ process.umask = function() { return 0; };
11190
11395
 
11191
11396
 
11192
11397
  /***/ }),
11193
- /* 40 */
11398
+ /* 41 */
11194
11399
  /***/ (function(module, exports) {
11195
11400
 
11196
11401
  var g;
@@ -11216,7 +11421,7 @@ module.exports = g;
11216
11421
 
11217
11422
 
11218
11423
  /***/ }),
11219
- /* 41 */
11424
+ /* 42 */
11220
11425
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
11221
11426
 
11222
11427
  "use strict";
@@ -11252,10 +11457,10 @@ var public_api = __webpack_require__(0);
11252
11457
  var lib_public_api = __webpack_require__(3);
11253
11458
 
11254
11459
  // EXTERNAL MODULE: ./dist/lib/filter/text_data_filter.js
11255
- var text_data_filter = __webpack_require__(21);
11460
+ var text_data_filter = __webpack_require__(22);
11256
11461
 
11257
11462
  // EXTERNAL MODULE: ./dist/lib/form/entity_edit_form.js
11258
- var entity_edit_form = __webpack_require__(22);
11463
+ var entity_edit_form = __webpack_require__(23);
11259
11464
 
11260
11465
  // EXTERNAL MODULE: ./dist/lib/utils/utils.js
11261
11466
  var utils = __webpack_require__(7);
@@ -11529,12 +11734,13 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11529
11734
  var lookupTable = new public_api["EasyDataTable"]({
11530
11735
  loader: {
11531
11736
  loadChunk: function (chunkParams) { return _this.context.getDataLoader()
11532
- .loadChunk(__assign({}, chunkParams, { id: lookupEntity.id })); }
11737
+ .loadChunk(__assign(__assign({}, chunkParams), { id: lookupEntity.id })); }
11533
11738
  }
11534
11739
  });
11535
11740
  _this.context.getDataLoader()
11536
- .loadChunk({ offset: 0, limit: 1000, needTotal: true, entityId: lookupEntity.id })
11741
+ .loadChunk({ offset: 0, limit: 1000, needTotal: true, sourceId: lookupEntity.id })
11537
11742
  .then(function (data) {
11743
+ var _a;
11538
11744
  var _loop_1 = function (col) {
11539
11745
  var attrs = lookupEntity.attributes.filter(function (attr) {
11540
11746
  return attr.id == col.id && (attr.isPrimaryKey || attr.showInLookup);
@@ -11543,13 +11749,13 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11543
11749
  lookupTable.columns.add(col);
11544
11750
  }
11545
11751
  };
11546
- for (var _i = 0, _a = data.table.columns.getItems(); _i < _a.length; _i++) {
11547
- var col = _a[_i];
11752
+ for (var _i = 0, _b = data.table.columns.getItems(); _i < _b.length; _i++) {
11753
+ var col = _b[_i];
11548
11754
  _loop_1(col);
11549
11755
  }
11550
11756
  lookupTable.setTotal(data.total);
11551
- for (var _b = 0, _c = data.table.getCachedRows(); _b < _c.length; _b++) {
11552
- var row = _c[_b];
11757
+ for (var _c = 0, _d = data.table.getCachedRows(); _c < _d.length; _c++) {
11758
+ var row = _d[_c];
11553
11759
  lookupTable.addRow(row);
11554
11760
  }
11555
11761
  var ds = new lib_public_api["DefaultDialogService"]();
@@ -11588,7 +11794,9 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11588
11794
  .join(', ');
11589
11795
  };
11590
11796
  if (selectedValue) {
11591
- _this.context.getEntity(selectedValue, lookupEntity.id)
11797
+ var attr_1 = lookupEntity.getFirstPrimaryAttr();
11798
+ var key = attr_1.id.substring(attr_1.id.lastIndexOf('.') + 1);
11799
+ _this.context.fetchRecord((_a = {}, _a[key] = selectedValue, _a), lookupEntity.id)
11592
11800
  .then(function (data) {
11593
11801
  if (data.entity) {
11594
11802
  updateSelectedValue(data.entity);
@@ -11636,7 +11844,7 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11636
11844
  }); });
11637
11845
  });
11638
11846
  };
11639
- EntityEditFormBuilder.prototype.setupDateTimeField = function (parent, attr, readOnly, value) {
11847
+ EntityEditFormBuilder.prototype.setupDateTimeField = function (parent, attr, value, readOnly, hidden) {
11640
11848
  var _this = this;
11641
11849
  var horizClass = isIE
11642
11850
  ? 'kfrm-fields-ie is-horizontal'
@@ -11657,6 +11865,8 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11657
11865
  .addClass(horizClass)
11658
11866
  .addChild('input', function (b) {
11659
11867
  inputEl = b.toDOM();
11868
+ b.name(attr.id);
11869
+ b.type(hidden ? 'hidden' : _this.resolveInputType(attr.dataType));
11660
11870
  if (readOnly) {
11661
11871
  b.attr('readonly', '');
11662
11872
  }
@@ -11680,8 +11890,6 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11680
11890
  }
11681
11891
  });
11682
11892
  }
11683
- b.name(attr.id);
11684
- b.type(_this.resolveInputType(attr.dataType));
11685
11893
  b.value((public_api["utils"].IsDefinedAndNotNull(value)
11686
11894
  ? public_api["utils"].dateTimeToStr(value, editFormat)
11687
11895
  : ''));
@@ -11723,7 +11931,7 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11723
11931
  }).toDOM(); });
11724
11932
  });
11725
11933
  };
11726
- EntityEditFormBuilder.prototype.setupListField = function (parent, attr, readOnly, values, value) {
11934
+ EntityEditFormBuilder.prototype.setupListField = function (parent, attr, value, values, readOnly) {
11727
11935
  var _this = this;
11728
11936
  Object(lib_public_api["domel"])(parent)
11729
11937
  .addChild('div', function (b) { return b
@@ -11756,12 +11964,14 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11756
11964
  b.attr('accept', accept);
11757
11965
  });
11758
11966
  };
11759
- EntityEditFormBuilder.prototype.setupTextField = function (parent, attr, readOnly, value) {
11967
+ EntityEditFormBuilder.prototype.setupTextField = function (parent, attr, value, readOnly, hidden) {
11760
11968
  var _this = this;
11761
11969
  Object(lib_public_api["domel"])(parent)
11762
11970
  .addChild('input', function (b) {
11763
- if (readOnly)
11971
+ if (readOnly) {
11764
11972
  b.attr('readonly', '');
11973
+ }
11974
+ b.type(hidden ? 'hidden' : _this.resolveInputType(attr.dataType));
11765
11975
  b.name(attr.id)
11766
11976
  .type(_this.resolveInputType(attr.dataType));
11767
11977
  if (attr.dataType == public_api["DataType"].Bool) {
@@ -11776,7 +11986,7 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11776
11986
  }
11777
11987
  });
11778
11988
  };
11779
- EntityEditFormBuilder.prototype.setupTextArea = function (parent, attr, readOnly, value) {
11989
+ EntityEditFormBuilder.prototype.setupTextArea = function (parent, attr, value, readOnly) {
11780
11990
  // feature: modify size in value editor ??
11781
11991
  Object(lib_public_api["domel"])(parent)
11782
11992
  .addChild('textarea', function (b) {
@@ -11784,6 +11994,9 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11784
11994
  b.attr('readonly', '');
11785
11995
  b.attr('name', attr.id);
11786
11996
  b.setStyle('height', "120px");
11997
+ b.value(public_api["utils"].IsDefinedAndNotNull(value)
11998
+ ? value.toString()
11999
+ : '');
11787
12000
  });
11788
12001
  };
11789
12002
  EntityEditFormBuilder.prototype.addFormField = function (parent, attr) {
@@ -11799,19 +12012,28 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11799
12012
  .toDOM();
11800
12013
  }
11801
12014
  Object(lib_public_api["domel"])(parent)
11802
- .addChild('label', function (b) { return b
11803
- .attr('for', attr.id)
11804
- .addHtml(attr.caption + " " + (required ? '<sup style="color: red">*</sup>' : '') + ": "); });
12015
+ .addChild('label', function (b) {
12016
+ b.attr('for', attr.id);
12017
+ b.addHtml(attr.caption + " " + (required ? '<sup style="color: red">*</sup>' : '') + ": ");
12018
+ if (attr.description) {
12019
+ b.addChild('div', function (b) { return b
12020
+ .attr('title', attr.description)
12021
+ .addClass('question-mark')
12022
+ .setStyle('vertical-align', 'middle')
12023
+ .setStyle('display', 'inline-block'); });
12024
+ }
12025
+ });
12026
+ var hidden = attr.isPrimaryKey;
11805
12027
  if (attr.kind === public_api["EntityAttrKind"].Lookup) {
11806
12028
  this.setupLookupField(parent, attr, readOnly, value);
11807
12029
  return;
11808
12030
  }
11809
12031
  switch (editor.tag) {
11810
12032
  case public_api["EditorTag"].DateTime:
11811
- this.setupDateTimeField(parent, attr, readOnly, value);
12033
+ this.setupDateTimeField(parent, attr, value, readOnly, hidden);
11812
12034
  break;
11813
12035
  case public_api["EditorTag"].List:
11814
- this.setupListField(parent, attr, readOnly, editor.values, value);
12036
+ this.setupListField(parent, attr, value, editor.values, readOnly);
11815
12037
  break;
11816
12038
  case public_api["EditorTag"].File:
11817
12039
  this.setupFileField(parent, attr, readOnly, editor.accept);
@@ -11819,10 +12041,10 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11819
12041
  case public_api["EditorTag"].Edit:
11820
12042
  default:
11821
12043
  if (editor.multiline) {
11822
- this.setupTextArea(parent, attr, readOnly, value);
12044
+ this.setupTextArea(parent, attr, value, readOnly);
11823
12045
  }
11824
12046
  else {
11825
- this.setupTextField(parent, attr, readOnly, value);
12047
+ this.setupTextField(parent, attr, value, readOnly, hidden);
11826
12048
  }
11827
12049
  break;
11828
12050
  }
@@ -11874,13 +12096,15 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11874
12096
  this.form['setHtmlInt'](formHtml);
11875
12097
  for (var _i = 0, _a = this.context.getActiveEntity().attributes; _i < _a.length; _i++) {
11876
12098
  var attr = _a[_i];
11877
- if (this.params.isEditForm) {
11878
- if (!attr.showOnEdit)
11879
- continue;
11880
- }
11881
- else {
11882
- if (!attr.showOnCreate)
11883
- continue;
12099
+ if (!attr.isPrimaryKey) {
12100
+ if (this.params.isEditForm) {
12101
+ if (!attr.showOnEdit)
12102
+ continue;
12103
+ }
12104
+ else {
12105
+ if (!attr.showOnCreate)
12106
+ continue;
12107
+ }
11884
12108
  }
11885
12109
  this.addFormField(fb.toDOM(), attr);
11886
12110
  }
@@ -11915,8 +12139,8 @@ var easy_data_server_loader_EasyDataServerLoader = /** @class */ (function () {
11915
12139
  }
11916
12140
  EasyDataServerLoader.prototype.loadChunk = function (params) {
11917
12141
  var _this = this;
11918
- var url = this.context.resolveEndpoint('GetEntities', { entityId: params.entityId || this.context.getActiveEntity().id });
11919
- delete params.entityId;
12142
+ var url = this.context.resolveEndpoint('FetchDataset', { sourceId: params.sourceId || this.context.getActiveEntity().id });
12143
+ delete params.sourceId;
11920
12144
  this.context.startProcess();
11921
12145
  var http = this.context.getHttpClient();
11922
12146
  return http.post(url, params)
@@ -11953,6 +12177,17 @@ var easy_data_server_loader_EasyDataServerLoader = /** @class */ (function () {
11953
12177
 
11954
12178
  //# sourceMappingURL=easy_data_server_loader.js.map
11955
12179
  // CONCATENATED MODULE: ./dist/lib/main/data_context.js
12180
+ var data_context_assign = (undefined && undefined.__assign) || function () {
12181
+ data_context_assign = Object.assign || function(t) {
12182
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
12183
+ s = arguments[i];
12184
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12185
+ t[p] = s[p];
12186
+ }
12187
+ return t;
12188
+ };
12189
+ return data_context_assign.apply(this, arguments);
12190
+ };
11956
12191
 
11957
12192
 
11958
12193
 
@@ -11965,9 +12200,8 @@ var data_context_DataContext = /** @class */ (function () {
11965
12200
  this.model = new public_api["MetaData"]();
11966
12201
  this.model.id = options.metaDataId || '__default';
11967
12202
  this.dataLoader = new easy_data_server_loader_EasyDataServerLoader(this);
11968
- this.data = new public_api["EasyDataTable"]({
11969
- loader: this.dataLoader
11970
- });
12203
+ var dataTableOptions = data_context_assign({ loader: this.dataLoader }, options.dataTable);
12204
+ this.data = new public_api["EasyDataTable"](dataTableOptions);
11971
12205
  this.setDefaultEndpoints(this.options.endpoint || '/api/easydata');
11972
12206
  }
11973
12207
  DataContext.prototype.getActiveEntity = function () {
@@ -11986,8 +12220,8 @@ var data_context_DataContext = /** @class */ (function () {
11986
12220
  DataContext.prototype.getDataLoader = function () {
11987
12221
  return this.dataLoader;
11988
12222
  };
11989
- DataContext.prototype.createFilter = function (entityId, data, isLookup) {
11990
- return new text_data_filter["a" /* TextDataFilter */](this.dataLoader, data || this.getData(), entityId || this.activeEntity.id, isLookup);
12223
+ DataContext.prototype.createFilter = function (sourceId, data, isLookup) {
12224
+ return new text_data_filter["a" /* TextDataFilter */](this.dataLoader, data || this.getData(), sourceId || this.activeEntity.id, isLookup);
11991
12225
  };
11992
12226
  DataContext.prototype.loadMetaData = function () {
11993
12227
  var _this = this;
@@ -12011,7 +12245,7 @@ var data_context_DataContext = /** @class */ (function () {
12011
12245
  DataContext.prototype.getHttpClient = function () {
12012
12246
  return this.http;
12013
12247
  };
12014
- DataContext.prototype.getEntities = function () {
12248
+ DataContext.prototype.fetchDataset = function () {
12015
12249
  var _this = this;
12016
12250
  this.data.clear();
12017
12251
  return this.dataLoader.loadChunk({ offset: 0, limit: this.data.chunkSize, needTotal: true })
@@ -12028,33 +12262,33 @@ var data_context_DataContext = /** @class */ (function () {
12028
12262
  return _this.data;
12029
12263
  });
12030
12264
  };
12031
- DataContext.prototype.getEntity = function (id, entityId) {
12265
+ DataContext.prototype.fetchRecord = function (keys, sourceId) {
12032
12266
  var _this = this;
12033
- var url = this.resolveEndpoint('GetEntity', { id: id,
12034
- entityId: entityId || this.activeEntity.id });
12267
+ var url = this.resolveEndpoint('FetchRecord', { sourceId: sourceId || this.activeEntity.id });
12035
12268
  this.startProcess();
12036
- return this.http.get(url).getPromise()
12269
+ return this.http.get(url, { queryParams: keys })
12037
12270
  .finally(function () { return _this.endProcess(); });
12038
12271
  };
12039
- DataContext.prototype.createEntity = function (obj, entityId) {
12272
+ DataContext.prototype.createRecord = function (obj, sourceId) {
12040
12273
  var _this = this;
12041
- var url = this.resolveEndpoint('CreateEntity', { entityId: entityId || this.activeEntity.id });
12274
+ var url = this.resolveEndpoint('CreateRecord', { sourceId: sourceId || this.activeEntity.id });
12042
12275
  this.startProcess();
12043
- return this.http.post(url, obj, { dataType: 'json' }).getPromise().finally(function () { return _this.endProcess(); });
12276
+ return this.http.post(url, obj, { dataType: 'json' })
12277
+ .finally(function () { return _this.endProcess(); });
12044
12278
  };
12045
- DataContext.prototype.updateEntity = function (id, obj, entityId) {
12279
+ DataContext.prototype.updateRecord = function (obj, sourceId) {
12046
12280
  var _this = this;
12047
- var url = this.resolveEndpoint('UpdateEntity', { id: id,
12048
- entityId: entityId || this.activeEntity.id });
12281
+ var url = this.resolveEndpoint('UpdateRecord', { sourceId: sourceId || this.activeEntity.id });
12049
12282
  this.startProcess();
12050
- return this.http.post(url, obj, { dataType: 'json' }).getPromise().finally(function () { return _this.endProcess(); });
12283
+ return this.http.post(url, obj, { dataType: 'json' })
12284
+ .finally(function () { return _this.endProcess(); });
12051
12285
  };
12052
- DataContext.prototype.deleteEntity = function (id, entityId) {
12286
+ DataContext.prototype.deleteRecord = function (obj, sourceId) {
12053
12287
  var _this = this;
12054
- var url = this.resolveEndpoint('DeleteEntity', { id: id,
12055
- entityId: entityId || this.activeEntity.id });
12288
+ var url = this.resolveEndpoint('DeleteRecord', { sourceId: sourceId || this.activeEntity.id });
12056
12289
  this.startProcess();
12057
- return this.http.post(url, null).getPromise().finally(function () { return _this.endProcess(); });
12290
+ return this.http.post(url, obj, { dataType: 'json' })
12291
+ .finally(function () { return _this.endProcess(); });
12058
12292
  };
12059
12293
  DataContext.prototype.setEndpoint = function (key, value) {
12060
12294
  this.endpoints.set(key, value);
@@ -12079,7 +12313,7 @@ var data_context_DataContext = /** @class */ (function () {
12079
12313
  if (opt == 'modelId') {
12080
12314
  optVal = this.model.getId();
12081
12315
  }
12082
- else if (opt == 'entityId') {
12316
+ else if (opt == 'sourceId') {
12083
12317
  optVal = this.activeEntity.id;
12084
12318
  }
12085
12319
  else {
@@ -12101,18 +12335,18 @@ var data_context_DataContext = /** @class */ (function () {
12101
12335
  };
12102
12336
  DataContext.prototype.setDefaultEndpoints = function (endpointBase) {
12103
12337
  this.setEnpointIfNotExist('GetMetaData', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}'));
12104
- this.setEnpointIfNotExist('GetEntities', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/fetch'));
12105
- this.setEnpointIfNotExist('GetEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/fetch/{id}'));
12106
- this.setEnpointIfNotExist('CreateEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/create'));
12107
- this.setEnpointIfNotExist('UpdateEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/update/{id}'));
12108
- this.setEnpointIfNotExist('DeleteEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/delete/{id}'));
12338
+ this.setEnpointIfNotExist('FetchDataset', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/fetch'));
12339
+ this.setEnpointIfNotExist('FetchRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/fetch'));
12340
+ this.setEnpointIfNotExist('CreateRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/create'));
12341
+ this.setEnpointIfNotExist('UpdateRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/update'));
12342
+ this.setEnpointIfNotExist('DeleteRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/delete'));
12109
12343
  };
12110
12344
  return DataContext;
12111
12345
  }());
12112
12346
 
12113
12347
  //# sourceMappingURL=data_context.js.map
12114
12348
  // EXTERNAL MODULE: ./dist/lib/validators/validator.js
12115
- var validator = __webpack_require__(10);
12349
+ var validator = __webpack_require__(9);
12116
12350
 
12117
12351
  // CONCATENATED MODULE: ./dist/lib/validators/type_validator.js
12118
12352
  var __extends = (undefined && undefined.__extends) || (function () {
@@ -12241,7 +12475,7 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12241
12475
  };
12242
12476
  EntityDataView.prototype.renderGrid = function () {
12243
12477
  var _this = this;
12244
- this.context.getEntities()
12478
+ this.context.fetchDataset()
12245
12479
  .then(function (result) {
12246
12480
  var gridSlot = document.createElement('div');
12247
12481
  _this.slot.appendChild(gridSlot);
@@ -12254,10 +12488,10 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12254
12488
  allowPageSizeChange: true,
12255
12489
  pageSizeItems: [15, 30, 50, 100, 200]
12256
12490
  },
12257
- addColumns: true,
12258
- addColumnsTitle: public_api["i18n"].getText('AddBtnTitle'),
12491
+ showPlusButton: _this.context.getActiveEntity().isEditable,
12492
+ plusButtonTitle: public_api["i18n"].getText('AddRecordBtnTitle'),
12259
12493
  showActiveRow: false,
12260
- onAddColumnClick: _this.addClickHandler.bind(_this),
12494
+ onPlusButtonClick: _this.addClickHandler.bind(_this),
12261
12495
  onGetCellRenderer: _this.manageCellRenderer.bind(_this),
12262
12496
  onRowDbClick: _this.rowDbClickHandler.bind(_this),
12263
12497
  onSyncGridColumn: _this.syncGridColumnHandler.bind(_this)
@@ -12312,7 +12546,7 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12312
12546
  if (!form.validate())
12313
12547
  return false;
12314
12548
  form.getData()
12315
- .then(function (obj) { return _this.context.createEntity(obj); })
12549
+ .then(function (obj) { return _this.context.createRecord(obj); })
12316
12550
  .then(function () {
12317
12551
  return _this.refreshData();
12318
12552
  })
@@ -12343,12 +12577,10 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12343
12577
  .replace('{entity}', activeEntity.caption),
12344
12578
  body: form.getHtml(),
12345
12579
  onSubmit: function () {
12346
- var keyAttrs = activeEntity.attributes.filter(function (attr) { return attr.isPrimaryKey; });
12347
- var keys = keyAttrs.map(function (attr) { return row.getValue(attr.id); });
12348
12580
  if (!form.validate())
12349
12581
  return false;
12350
12582
  form.getData()
12351
- .then(function (obj) { return _this.context.updateEntity(keys.join(':'), obj); })
12583
+ .then(function (obj) { return _this.context.updateRecord(obj); })
12352
12584
  .then(function () {
12353
12585
  return _this.refreshData();
12354
12586
  })
@@ -12369,16 +12601,20 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12369
12601
  .then(function (row) {
12370
12602
  if (row) {
12371
12603
  var activeEntity = _this.context.getActiveEntity();
12372
- var keyAttrs = activeEntity.attributes.filter(function (attr) { return attr.isPrimaryKey; });
12373
- var keys_1 = keyAttrs.map(function (attr) { return row.getValue(attr.id); });
12374
- var entityId = keyAttrs.map(function (attr, index) { return attr.id + ":" + keys_1[index]; }).join(';');
12604
+ var keyAttrs = activeEntity.getPrimaryAttrs();
12605
+ var keyVals_1 = keyAttrs.map(function (attr) { return row.getValue(attr.id); });
12606
+ var keys_1 = keyAttrs.reduce(function (val, attr, index) {
12607
+ var property = attr.id.substring(attr.id.lastIndexOf('.') + 1);
12608
+ val[property] = keyVals_1[index];
12609
+ return val;
12610
+ }, {});
12375
12611
  _this.dlg.openConfirm(public_api["i18n"].getText('DeleteDlgCaption')
12376
12612
  .replace('{entity}', activeEntity.caption), public_api["i18n"].getText('DeleteDlgMessage')
12377
- .replace('{entityId}', entityId))
12613
+ .replace('{recordId}', Object.keys(keys_1)
12614
+ .map(function (key) { return key + ":" + keys_1[key]; }).join(';')))
12378
12615
  .then(function (result) {
12379
12616
  if (result) {
12380
- //pass entityId in future
12381
- _this.context.deleteEntity(keys_1.join(':'))
12617
+ _this.context.deleteRecord(keys_1)
12382
12618
  .then(function () {
12383
12619
  return _this.refreshData();
12384
12620
  })
@@ -12400,7 +12636,7 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12400
12636
  };
12401
12637
  EntityDataView.prototype.refreshData = function () {
12402
12638
  var _this = this;
12403
- return this.context.getEntities()
12639
+ return this.context.fetchDataset()
12404
12640
  .then(function () {
12405
12641
  _this.grid.refresh();
12406
12642
  });
@@ -12486,6 +12722,7 @@ var easy_data_view_dispatcher_EasyDataViewDispatcher = /** @class */ (function (
12486
12722
  parent.insertBefore(progressBarSlot, parent.firstElementChild);
12487
12723
  this.context = new data_context_DataContext({
12488
12724
  endpoint: options.endpoint,
12725
+ dataTable: options.dataTable,
12489
12726
  onProcessStart: function () { return bar.show(); },
12490
12727
  onProcessEnd: function () { return bar.hide(); }
12491
12728
  });
@@ -12580,13 +12817,14 @@ function addEasyDataCRUDTexts() {
12580
12817
  CalendarBtnTitle: 'Open calendar',
12581
12818
  TimerBtnTitle: 'Open timer',
12582
12819
  AddBtnTitle: 'Add',
12820
+ AddRecordBtnTitle: 'Add record',
12583
12821
  EditBtn: 'Edit',
12584
12822
  DeleteBtn: 'Delete',
12585
12823
  SelectLink: '[ select ]',
12586
12824
  AddDlgCaption: 'Create {entity}',
12587
12825
  EditDlgCaption: 'Edit {entity}',
12588
12826
  DeleteDlgCaption: 'Delete {entity}',
12589
- DeleteDlgMessage: 'Are you shure about removing this entity: [{entityId}]?',
12827
+ DeleteDlgMessage: 'Are you sure you want to remove this record: {{recordId}}?',
12590
12828
  EntityMenuDesc: 'Click on an entity to view/edit its content',
12591
12829
  BackToEntities: 'Back to entities',
12592
12830
  SearchBtn: 'Search',