@easydata/crud 1.4.0-beta01 → 1.4.1-rc01

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 (34) hide show
  1. package/dist/browser/easydata.css +7 -7
  2. package/dist/browser/easydata.css.map +1 -1
  3. package/dist/browser/easydata.js +811 -596
  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 +549 -345
  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 +36 -25
  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 +13 -9
  23. package/dist/lib/main/data_context.js +38 -28
  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.d.ts +4 -4
  28. package/dist/lib/views/easy_data_view_dispatcher.js +38 -34
  29. package/dist/lib/views/easy_data_view_dispatcher.js.map +1 -1
  30. package/dist/lib/views/entity_data_view.js +20 -16
  31. package/dist/lib/views/entity_data_view.js.map +1 -1
  32. package/dist/lib/views/options.d.ts +2 -0
  33. package/dist/lib/widgets/text_filter_widget.js.map +1 -1
  34. 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) {
@@ -3708,31 +3764,18 @@ var GridColumn = /** @class */ (function () {
3708
3764
  this.isRowNum = false;
3709
3765
  this.dataColumn = column;
3710
3766
  this.grid = grid;
3767
+ var widthOptions = grid.options.columnWidths || {};
3711
3768
  if (column) {
3712
3769
  if (column.style.alignment) {
3713
3770
  this.align = MapAlignment(column.style.alignment);
3714
3771
  }
3715
- var coltype = column.type;
3716
- var cellType = this.grid.cellRendererStore.getCellType(coltype);
3717
- switch (cellType) {
3718
- case _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].NUMBER:
3719
- this.width = DEFAULT_WIDTH_NUMBER;
3720
- break;
3721
- case _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].DATETIME:
3722
- this.width = DEFAULT_WIDTH_DATE;
3723
- break;
3724
- case _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].BOOL:
3725
- this.width = DEFAULT_WIDTH_BOOL;
3726
- break;
3727
- default:
3728
- this.width = DEFAULT_WIDTH_STRING;
3729
- }
3772
+ this.width = (widthOptions && widthOptions[this.type]) ? widthOptions[this.type].default : DEFAULT_WIDTH_STRING;
3730
3773
  this.cellRenderer = this.grid.cellRendererStore.getDefaultRenderer(column.type);
3731
3774
  this._description = column.description;
3732
3775
  }
3733
3776
  else if (isRowNum) {
3734
3777
  this.isRowNum = true;
3735
- this.width = ROW_NUM_WIDTH;
3778
+ this.width = (widthOptions && widthOptions.rowNumColumn) ? widthOptions.rowNumColumn.default : ROW_NUM_WIDTH;
3736
3779
  this._label = '';
3737
3780
  this.cellRenderer = this.grid.cellRendererStore.getDefaultRendererByType(_easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_1__[/* CellRendererType */ "a"].NUMBER);
3738
3781
  }
@@ -3778,9 +3821,10 @@ var GridColumnList = /** @class */ (function () {
3778
3821
  GridColumnList.prototype.sync = function (columnList, hasRowNumCol) {
3779
3822
  if (hasRowNumCol === void 0) { hasRowNumCol = true; }
3780
3823
  this.clear();
3781
- if (hasRowNumCol) {
3782
- var rowNumCol = new GridColumn(null, this.grid, true);
3783
- this.add(rowNumCol);
3824
+ var rowNumCol = new GridColumn(null, this.grid, true);
3825
+ this.add(rowNumCol);
3826
+ if (!hasRowNumCol) {
3827
+ rowNumCol.isVisible = false;
3784
3828
  }
3785
3829
  if (columnList) {
3786
3830
  for (var _i = 0, _a = columnList.getItems(); _i < _a.length; _i++) {
@@ -3848,173 +3892,28 @@ var GridColumnList = /** @class */ (function () {
3848
3892
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
3849
3893
 
3850
3894
  "use strict";
3851
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return DFMT_REGEX; });
3852
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CellRendererType; });
3853
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return GridCellRendererStore; });
3854
- /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
3855
- /* harmony import */ var _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
3856
- /* harmony import */ var _utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
3857
-
3858
-
3859
-
3860
- var cssPrefix = "keg";
3861
- var DFMT_REGEX = /{0:(.*?)}/g;
3862
- var CellRendererType;
3863
- (function (CellRendererType) {
3864
- CellRendererType[CellRendererType["STRING"] = 1] = "STRING";
3865
- CellRendererType[CellRendererType["NUMBER"] = 2] = "NUMBER";
3866
- CellRendererType[CellRendererType["DATETIME"] = 3] = "DATETIME";
3867
- CellRendererType[CellRendererType["BOOL"] = 4] = "BOOL";
3868
- })(CellRendererType || (CellRendererType = {}));
3869
- var StringCellRendererDefault = function (value, column, cellElement, rowElement) {
3870
- var text = value ? value.toString().replace(/\n/g, '\u21B5 ') : '';
3871
- var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3872
- .addClass(cssPrefix + "-cell-value")
3873
- .addHtml(text)
3874
- .title(value || '');
3875
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
3876
- builder.addClass(cssPrefix + "-cell-value-align-left");
3877
- }
3878
- };
3879
- var NumberCellRendererDefault = function (value, column, cellElement, rowElement) {
3880
- var strValue = (value || '').toString();
3881
- if (typeof value == 'number') {
3882
- if (column.dataColumn && column.dataColumn.displayFormat
3883
- && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
3884
- strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
3885
- return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].numberToStr(value, $1);
3886
- });
3887
- }
3888
- else {
3889
- strValue = value.toLocaleString();
3890
- }
3891
- }
3892
- var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3893
- .addClass(cssPrefix + "-cell-value")
3894
- .addHtml(strValue)
3895
- .title(strValue);
3896
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
3897
- builder.addClass(cssPrefix + "-cell-value-align-right");
3898
- }
3899
- };
3900
- var DateTimeCellRendererDefault = function (value, column, cellElement, rowElement) {
3901
- var isDate = Object.prototype.toString.call(value) === '[object Date]';
3902
- var strValue = (value || '').toString();
3903
- if (isDate) {
3904
- if (column.dataColumn && column.dataColumn.displayFormat
3905
- && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
3906
- strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
3907
- return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].dateTimeToStr(value, column.type, $1);
3908
- });
3909
- }
3910
- else {
3911
- var locale = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].getCurrentLocale();
3912
- var timeOptions = { hour: 'numeric', minute: 'numeric', second: 'numeric' };
3913
- switch (column.type) {
3914
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Date:
3915
- strValue = value.toLocaleDateString(locale);
3916
- break;
3917
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Time:
3918
- strValue = value.toLocaleTimeString(locale, timeOptions);
3919
- break;
3920
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].DateTime:
3921
- strValue = value.toLocaleDateString(locale) + " " + value.toLocaleTimeString(locale, timeOptions);
3922
- break;
3923
- }
3924
- }
3925
- }
3926
- var builder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3927
- .addClass(cssPrefix + "-cell-value")
3928
- .addHtml(strValue)
3929
- .title(strValue);
3930
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_1__[/* GridColumnAlign */ "b"].NONE) {
3931
- builder.addClass(cssPrefix + "-cell-value-align-right");
3932
- }
3933
- };
3934
- var BoolCellRendererDefault = function (value, column, cellElement, rowElement) {
3935
- if (column.dataColumn && column.dataColumn.displayFormat
3936
- && DFMT_REGEX.test(column.dataColumn.displayFormat)) {
3937
- var strValue = column.dataColumn.displayFormat.replace(DFMT_REGEX, function (_, $1) {
3938
- return _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].booleanToStr(value, $1);
3939
- });
3940
- return StringCellRendererDefault(strValue, column, cellElement, rowElement);
3941
- }
3942
- else {
3943
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div', cellElement)
3944
- .addClass(cssPrefix + "-cell-value")
3945
- .addClass(cssPrefix + "-cell-value-bool")
3946
- .addClass(cssPrefix + "-" + (value ? 'cell-value-true' : 'cell-value-false'));
3947
- }
3948
- };
3949
- var GridCellRendererStore = /** @class */ (function () {
3950
- function GridCellRendererStore(options) {
3951
- this.renderers = {};
3952
- this.defaultRenderers = {};
3953
- this.registerRenderer('StringDefault', StringCellRendererDefault);
3954
- this.setDefaultRenderer(CellRendererType.STRING, StringCellRendererDefault);
3955
- this.registerRenderer('NumberDefault', NumberCellRendererDefault);
3956
- this.setDefaultRenderer(CellRendererType.NUMBER, NumberCellRendererDefault);
3957
- this.registerRenderer('DateTimeDefault', DateTimeCellRendererDefault);
3958
- this.setDefaultRenderer(CellRendererType.DATETIME, DateTimeCellRendererDefault);
3959
- this.registerRenderer('BoolDefault', BoolCellRendererDefault);
3960
- 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() {
3961
3898
  }
3962
- GridCellRendererStore.prototype.getDefaultRenderer = function (columnType) {
3963
- var cellType = this.getCellType(columnType);
3964
- return this.defaultRenderers[CellRendererType[cellType]];
3965
- };
3966
- GridCellRendererStore.prototype.getDefaultRendererByType = function (rendererType) {
3967
- return this.defaultRenderers[CellRendererType[rendererType]];
3968
- };
3969
- GridCellRendererStore.prototype.setDefaultRenderer = function (cellType, renderer) {
3970
- if (renderer) {
3971
- this.defaultRenderers[CellRendererType[cellType]] = renderer;
3972
- }
3973
- };
3974
- GridCellRendererStore.prototype.getRenderer = function (name) {
3975
- return this.renderers[name];
3976
- };
3977
- GridCellRendererStore.prototype.registerRenderer = function (name, renderer) {
3978
- this.renderers[name] = renderer;
3979
- };
3980
- GridCellRendererStore.prototype.getCellType = function (dataType) {
3981
- switch (dataType) {
3982
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Autoinc:
3983
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Byte:
3984
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Word:
3985
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Currency:
3986
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Float:
3987
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Int32:
3988
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Int64:
3989
- return CellRendererType.NUMBER;
3990
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Date:
3991
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].DateTime:
3992
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Time:
3993
- return CellRendererType.DATETIME;
3994
- case _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Bool:
3995
- return CellRendererType.BOOL;
3996
- default:
3997
- return CellRendererType.STRING;
3998
- }
3999
- };
4000
- return GridCellRendererStore;
3899
+ return Validator;
4001
3900
  }());
4002
3901
 
4003
- //# sourceMappingURL=easy_grid_cell_renderer.js.map
3902
+ //# sourceMappingURL=validator.js.map
4004
3903
 
4005
3904
  /***/ }),
4006
3905
  /* 10 */
4007
3906
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4008
3907
 
4009
3908
  "use strict";
4010
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Validator; });
4011
- var Validator = /** @class */ (function () {
4012
- function Validator() {
4013
- }
4014
- return Validator;
4015
- }());
4016
-
4017
- //# 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
4018
3917
 
4019
3918
  /***/ }),
4020
3919
  /* 11 */
@@ -4385,35 +4284,194 @@ var DragManager = /** @class */ (function () {
4385
4284
  this.updateImageClass(this.dropEffect);
4386
4285
  }
4387
4286
  };
4388
- DragManager.prototype.detectDragEnterEvent = function (container, ev) {
4389
- var containerPos = Object(_ui_utils__WEBPACK_IMPORTED_MODULE_1__[/* getElementAbsolutePos */ "g"])(container);
4390
- var pos = new Position(ev);
4391
- if (pos.y < containerPos.y || pos.y > containerPos.y + container.offsetHeight) {
4392
- return false;
4393
- }
4394
- if (pos.x < containerPos.x || pos.x > containerPos.x + container.offsetWidth) {
4395
- return false;
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;
4396
4440
  }
4397
- return true;
4398
4441
  };
4399
- DragManager.prototype.detectDragLeaveEvent = function (container, ev) {
4400
- var containerPos = Object(_ui_utils__WEBPACK_IMPORTED_MODULE_1__[/* getElementAbsolutePos */ "g"])(container);
4401
- var pos = new Position(ev);
4402
- if (pos.y > containerPos.y && pos.y < containerPos.y + container.offsetHeight
4403
- && pos.x > containerPos.x && pos.x < containerPos.x + container.offsetWidth) {
4404
- return false;
4442
+ GridCellRendererStore.prototype.getRenderer = function (name) {
4443
+ return this.renderers[name];
4444
+ };
4445
+ GridCellRendererStore.prototype.registerRenderer = function (name, renderer) {
4446
+ this.renderers[name] = renderer;
4447
+ };
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;
4405
4466
  }
4406
- return true;
4407
4467
  };
4408
- return DragManager;
4468
+ return GridCellRendererStore;
4409
4469
  }());
4410
4470
 
4411
- //global variable
4412
- var eqDragManager = new DragManager();
4413
- //# sourceMappingURL=drag_manager.js.map
4471
+ //# sourceMappingURL=easy_grid_cell_renderer.js.map
4414
4472
 
4415
4473
  /***/ }),
4416
- /* 13 */
4474
+ /* 14 */
4417
4475
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4418
4476
 
4419
4477
  "use strict";
@@ -4455,7 +4513,7 @@ function combinePath(path1, path2) {
4455
4513
  //# sourceMappingURL=string_utils.js.map
4456
4514
 
4457
4515
  /***/ }),
4458
- /* 14 */
4516
+ /* 15 */
4459
4517
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4460
4518
 
4461
4519
  "use strict";
@@ -4507,7 +4565,7 @@ var DataRow = /** @class */ (function () {
4507
4565
  //# sourceMappingURL=data_row.js.map
4508
4566
 
4509
4567
  /***/ }),
4510
- /* 15 */
4568
+ /* 16 */
4511
4569
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4512
4570
 
4513
4571
  "use strict";
@@ -4572,7 +4630,7 @@ var HttpRequest = /** @class */ (function () {
4572
4630
  //# sourceMappingURL=http_request.js.map
4573
4631
 
4574
4632
  /***/ }),
4575
- /* 16 */
4633
+ /* 17 */
4576
4634
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4577
4635
 
4578
4636
  "use strict";
@@ -4607,6 +4665,7 @@ var DataColumn = /** @class */ (function () {
4607
4665
  this.groupFooterColumnTemplate = desc.gfct;
4608
4666
  this.style = desc.style || {};
4609
4667
  this.description = desc.description;
4668
+ this.calculatedWidth = 0;
4610
4669
  }
4611
4670
  return DataColumn;
4612
4671
  }());
@@ -4646,9 +4705,10 @@ var DataColumnList = /** @class */ (function () {
4646
4705
  .map(function (col, index) { return index; });
4647
4706
  };
4648
4707
  DataColumnList.prototype.put = function (index, col) {
4649
- //!!!!!!!!!check on "out of index"
4650
- this.items[index] = col;
4651
- this.updateDateColumnIdx();
4708
+ if (index >= 0 && index < this.count) {
4709
+ this.items[index] = col;
4710
+ this.updateDateColumnIdx();
4711
+ }
4652
4712
  };
4653
4713
  DataColumnList.prototype.move = function (col, newIndex) {
4654
4714
  var oldIndex = this.items.indexOf(col);
@@ -4658,8 +4718,12 @@ var DataColumnList = /** @class */ (function () {
4658
4718
  }
4659
4719
  };
4660
4720
  DataColumnList.prototype.get = function (index) {
4661
- //!!!!!!!!!check on "out of index"
4662
- return this.items[index];
4721
+ if (index >= 0 && index < this.count) {
4722
+ return this.items[index];
4723
+ }
4724
+ else {
4725
+ return null;
4726
+ }
4663
4727
  };
4664
4728
  DataColumnList.prototype.getIndex = function (id) {
4665
4729
  return this.mapper[id];
@@ -4690,7 +4754,7 @@ var DataColumnList = /** @class */ (function () {
4690
4754
  //# sourceMappingURL=data_column.js.map
4691
4755
 
4692
4756
  /***/ }),
4693
- /* 17 */
4757
+ /* 18 */
4694
4758
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4695
4759
 
4696
4760
  "use strict";
@@ -4765,7 +4829,7 @@ var browserUtils;
4765
4829
  //# sourceMappingURL=browser_utils.js.map
4766
4830
 
4767
4831
  /***/ }),
4768
- /* 18 */
4832
+ /* 19 */
4769
4833
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4770
4834
 
4771
4835
  "use strict";
@@ -4868,7 +4932,7 @@ function mask(input, maskPattern) {
4868
4932
  //# sourceMappingURL=mask.js.map
4869
4933
 
4870
4934
  /***/ }),
4871
- /* 19 */
4935
+ /* 20 */
4872
4936
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
4873
4937
 
4874
4938
  "use strict";
@@ -4877,7 +4941,7 @@ function mask(input, maskPattern) {
4877
4941
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return DefaultProgressDialog; });
4878
4942
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return DefaultDialogSet; });
4879
4943
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
4880
- /* 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);
4881
4945
  /* harmony import */ var _utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
4882
4946
  var __extends = (undefined && undefined.__extends) || (function () {
4883
4947
  var extendStatics = function (d, b) {
@@ -5391,10 +5455,10 @@ var DefaultDialogSet = /** @class */ (function () {
5391
5455
  }());
5392
5456
 
5393
5457
  //# sourceMappingURL=default_dialog_service.js.map
5394
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(29)))
5458
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
5395
5459
 
5396
5460
  /***/ }),
5397
- /* 20 */
5461
+ /* 21 */
5398
5462
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5399
5463
 
5400
5464
  "use strict";
@@ -5408,7 +5472,7 @@ var DialogFooterAlignment;
5408
5472
  //# sourceMappingURL=dialog_service.js.map
5409
5473
 
5410
5474
  /***/ }),
5411
- /* 21 */
5475
+ /* 22 */
5412
5476
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5413
5477
 
5414
5478
  "use strict";
@@ -5427,11 +5491,11 @@ var __assign = (undefined && undefined.__assign) || function () {
5427
5491
  };
5428
5492
 
5429
5493
  var TextDataFilter = /** @class */ (function () {
5430
- function TextDataFilter(loader, sourceTable, entityId, isLookup) {
5494
+ function TextDataFilter(loader, sourceTable, sourceId, isLookup) {
5431
5495
  if (isLookup === void 0) { isLookup = false; }
5432
5496
  this.loader = loader;
5433
5497
  this.sourceTable = sourceTable;
5434
- this.entityId = entityId;
5498
+ this.sourceId = sourceId;
5435
5499
  this.isLookup = isLookup;
5436
5500
  this.filterValue = '';
5437
5501
  //turns off client-side search
@@ -5468,7 +5532,7 @@ var TextDataFilter = /** @class */ (function () {
5468
5532
  limit: this.sourceTable.chunkSize,
5469
5533
  needTotal: true,
5470
5534
  filters: filters_1,
5471
- entityId: this.entityId,
5535
+ sourceId: this.sourceId,
5472
5536
  lookup: this.isLookup
5473
5537
  })
5474
5538
  .then(function (data) {
@@ -5476,7 +5540,7 @@ var TextDataFilter = /** @class */ (function () {
5476
5540
  chunkSize: _this.sourceTable.chunkSize,
5477
5541
  loader: {
5478
5542
  loadChunk: function (params) { return _this.loader
5479
- .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 })); }
5480
5544
  }
5481
5545
  });
5482
5546
  for (var _i = 0, _a = _this.sourceTable.columns.getItems(); _i < _a.length; _i++) {
@@ -5497,26 +5561,26 @@ var TextDataFilter = /** @class */ (function () {
5497
5561
  return new Promise(function (resolve, reject) {
5498
5562
  var filteredTable = new _easydata_core__WEBPACK_IMPORTED_MODULE_0__["EasyDataTable"]({
5499
5563
  chunkSize: _this.sourceTable.chunkSize,
5564
+ inMemory: true
5500
5565
  });
5501
5566
  for (var _i = 0, _a = _this.sourceTable.columns.getItems(); _i < _a.length; _i++) {
5502
5567
  var col = _a[_i];
5503
5568
  filteredTable.columns.add(col);
5504
5569
  }
5505
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; });
5506
5574
  var hasEnterance = function (row) {
5507
- for (var _i = 0, _a = _this.sourceTable.columns.getItems(); _i < _a.length; _i++) {
5508
- var col = _a[_i];
5509
- if (_easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].isIntType(col.type)
5510
- || _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getStringDataTypes().indexOf(col.type) >= 0) {
5511
- var value = row.getValue(col.id);
5512
- if (value) {
5513
- var normalized = value.toString()
5514
- .toLowerCase();
5515
- for (var _b = 0, words_1 = words; _b < words_1.length; _b++) {
5516
- var word = words_1[_b];
5517
- if (normalized.indexOf(word) >= 0) {
5518
- return true;
5519
- }
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;
5520
5584
  }
5521
5585
  }
5522
5586
  }
@@ -5529,8 +5593,7 @@ var TextDataFilter = /** @class */ (function () {
5529
5593
  filteredTable.addRow(row);
5530
5594
  }
5531
5595
  }
5532
- if (filteredTable.getCachedCount() == 0)
5533
- filteredTable.setTotal(0);
5596
+ filteredTable.setTotal(filteredTable.getCachedCount());
5534
5597
  resolve(filteredTable);
5535
5598
  });
5536
5599
  };
@@ -5538,10 +5601,10 @@ var TextDataFilter = /** @class */ (function () {
5538
5601
  }());
5539
5602
 
5540
5603
  //# sourceMappingURL=text_data_filter.js.map
5541
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
5604
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(31)))
5542
5605
 
5543
5606
  /***/ }),
5544
- /* 22 */
5607
+ /* 23 */
5545
5608
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5546
5609
 
5547
5610
  "use strict";
@@ -5549,7 +5612,7 @@ var TextDataFilter = /** @class */ (function () {
5549
5612
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
5550
5613
  /* harmony import */ var _easydata_ui__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
5551
5614
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
5552
- /* 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);
5553
5616
 
5554
5617
 
5555
5618
 
@@ -5684,19 +5747,19 @@ var EntityEditForm = /** @class */ (function () {
5684
5747
  }());
5685
5748
 
5686
5749
  //# sourceMappingURL=entity_edit_form.js.map
5687
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
5750
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(31)))
5688
5751
 
5689
5752
  /***/ }),
5690
- /* 23 */
5753
+ /* 24 */
5691
5754
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
5692
5755
 
5693
5756
  "use strict";
5694
5757
  /* WEBPACK VAR INJECTION */(function(Promise) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return HttpResponseError; });
5695
5758
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return HttpClient; });
5696
5759
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
5697
- /* 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);
5698
5761
  /* harmony import */ var _http_method__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
5699
- /* 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);
5700
5763
  var __extends = (undefined && undefined.__extends) || (function () {
5701
5764
  var extendStatics = function (d, b) {
5702
5765
  extendStatics = Object.setPrototypeOf ||
@@ -5768,7 +5831,7 @@ var HttpClient = /** @class */ (function () {
5768
5831
  var desc = {
5769
5832
  method: method,
5770
5833
  url: url,
5771
- headers: __assign({}, this.defaultHeaders, options.headers || {}),
5834
+ headers: __assign(__assign({}, this.defaultHeaders), options.headers || {}),
5772
5835
  queryParams: options.queryParams || {},
5773
5836
  data: data
5774
5837
  };
@@ -5838,10 +5901,10 @@ var HttpClient = /** @class */ (function () {
5838
5901
  }());
5839
5902
 
5840
5903
  //# sourceMappingURL=http_client.js.map
5841
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(24)))
5904
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
5842
5905
 
5843
5906
  /***/ }),
5844
- /* 24 */
5907
+ /* 25 */
5845
5908
  /***/ (function(module, exports, __webpack_require__) {
5846
5909
 
5847
5910
  /* WEBPACK VAR INJECTION */(function(process, global) {/*!
@@ -7018,10 +7081,10 @@ return Promise$1;
7018
7081
 
7019
7082
  //# sourceMappingURL=es6-promise.map
7020
7083
 
7021
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25), __webpack_require__(26)))
7084
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(26), __webpack_require__(27)))
7022
7085
 
7023
7086
  /***/ }),
7024
- /* 25 */
7087
+ /* 26 */
7025
7088
  /***/ (function(module, exports) {
7026
7089
 
7027
7090
  // shim for using process in browser
@@ -7211,7 +7274,7 @@ process.umask = function() { return 0; };
7211
7274
 
7212
7275
 
7213
7276
  /***/ }),
7214
- /* 26 */
7277
+ /* 27 */
7215
7278
  /***/ (function(module, exports) {
7216
7279
 
7217
7280
  var g;
@@ -7237,13 +7300,13 @@ module.exports = g;
7237
7300
 
7238
7301
 
7239
7302
  /***/ }),
7240
- /* 27 */
7303
+ /* 28 */
7241
7304
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
7242
7305
 
7243
7306
  "use strict";
7244
7307
  /* WEBPACK VAR INJECTION */(function(Promise) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return EasyDataTable; });
7245
- /* harmony import */ var _data_column__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16);
7246
- /* 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);
7247
7310
  /* harmony import */ var _types_data_type__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2);
7248
7311
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
7249
7312
 
@@ -7254,16 +7317,23 @@ var EasyDataTable = /** @class */ (function () {
7254
7317
  function EasyDataTable(options) {
7255
7318
  this._chunkSize = 1000;
7256
7319
  this._elasticChunks = false;
7257
- // object keeps number keys sorted
7258
- this.chunkMap = {};
7320
+ this.cachedRows = [];
7259
7321
  this.total = 0;
7260
7322
  this.loader = null;
7261
7323
  this.needTotal = true;
7324
+ this.isInMemory = false;
7262
7325
  options = options || {};
7263
7326
  this._chunkSize = options.chunkSize || this._chunkSize;
7264
7327
  this._elasticChunks = options.elasticChunks || this._elasticChunks;
7265
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
+ }
7266
7335
  this._columns = new _data_column__WEBPACK_IMPORTED_MODULE_0__[/* DataColumnList */ "c"]();
7336
+ this.onUpdate = options.onUpdate;
7267
7337
  if (options.columns) {
7268
7338
  for (var _i = 0, _a = options.columns; _i < _a.length; _i++) {
7269
7339
  var colDesc = _a[_i];
@@ -7294,7 +7364,7 @@ var EasyDataTable = /** @class */ (function () {
7294
7364
  this._chunkSize = value;
7295
7365
  this.total = 0;
7296
7366
  this.needTotal = !this.elasticChunks;
7297
- this.chunkMap = {};
7367
+ this.cachedRows = [];
7298
7368
  },
7299
7369
  enumerable: true,
7300
7370
  configurable: true
@@ -7307,7 +7377,7 @@ var EasyDataTable = /** @class */ (function () {
7307
7377
  this._elasticChunks = value;
7308
7378
  this.total = 0;
7309
7379
  this.needTotal = !this.elasticChunks;
7310
- this.chunkMap = {};
7380
+ this.cachedRows = [];
7311
7381
  },
7312
7382
  enumerable: true,
7313
7383
  configurable: true
@@ -7335,22 +7405,12 @@ var EasyDataTable = /** @class */ (function () {
7335
7405
  endIndex = this.total;
7336
7406
  }
7337
7407
  }
7338
- var lbChunk = Math.trunc(fromIndex / this._chunkSize);
7339
- var ubChunk = Math.trunc((endIndex - 1) / this._chunkSize);
7340
- var allChunksCached = true;
7341
- for (var i = lbChunk; i <= ubChunk; i++) {
7342
- if (!this.chunkMap[i]) {
7343
- allChunksCached = false;
7344
- break;
7345
- }
7408
+ if (this.isInMemory && endIndex > this.cachedRows.length) {
7409
+ endIndex = this.cachedRows.length;
7346
7410
  }
7411
+ var allChunksCached = endIndex <= this.cachedRows.length;
7347
7412
  if (allChunksCached) {
7348
- var resultArr = [];
7349
- for (var i = lbChunk; i <= ubChunk; i++) {
7350
- resultArr = resultArr.concat(this.chunkMap[i].rows);
7351
- }
7352
- var firstChunkOffset = this.chunkMap[lbChunk].offset;
7353
- return Promise.resolve(resultArr.slice(fromIndex - firstChunkOffset, endIndex - firstChunkOffset));
7413
+ return Promise.resolve(this.cachedRows.slice(fromIndex, endIndex));
7354
7414
  }
7355
7415
  //if loader is not defined
7356
7416
  if (!this.loader) {
@@ -7361,53 +7421,34 @@ var EasyDataTable = /** @class */ (function () {
7361
7421
  if (this.needTotal) {
7362
7422
  this.needTotal = false;
7363
7423
  }
7364
- var limit = this._chunkSize * (ubChunk - lbChunk + 1);
7365
- if (this.elasticChunks)
7366
- limit++;
7367
- return this.loader.loadChunk({
7368
- 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,
7369
7431
  limit: limit,
7370
7432
  needTotal: needTotal
7371
7433
  })
7372
7434
  .then(function (result) {
7373
- var chunks = result.table.getCachedChunks();
7374
7435
  if (needTotal) {
7375
7436
  _this.total = result.total;
7376
- if (endIndex > _this.total) {
7377
- endIndex = _this.total;
7378
- }
7379
7437
  }
7380
- var index = lbChunk;
7381
- for (var _i = 0, chunks_1 = chunks; _i < chunks_1.length; _i++) {
7382
- var chunk = chunks_1[_i];
7383
- _this.chunkMap[index] = {
7384
- offset: index * _this._chunkSize,
7385
- rows: chunk.rows
7386
- };
7387
- index++;
7438
+ Array.prototype.push.apply(_this.cachedRows, result.table.getCachedRows());
7439
+ if (endIndex > _this.cachedRows.length) {
7440
+ endIndex = _this.cachedRows.length;
7388
7441
  }
7389
7442
  if (_this.elasticChunks) {
7390
7443
  var count_1 = result.table.getCachedCount();
7391
- if (count_1 > 0) {
7392
- var chunk = _this.chunkMap[index - 1];
7393
- if (count_1 === limit) {
7394
- chunk.rows.splice(chunk.rows.length - 1, 1);
7395
- if (chunk.rows.length == 0) {
7396
- delete _this.chunkMap[index - 1];
7397
- }
7398
- }
7399
- if (count_1 < limit) {
7400
- _this.total = _this.getCachedCount();
7401
- }
7444
+ if (count_1 < limit) {
7445
+ _this.total = _this.cachedRows.length;
7402
7446
  }
7403
7447
  }
7404
- var resultArr = [];
7405
- for (var i = lbChunk; i <= ubChunk; i++) {
7406
- resultArr = resultArr.concat(_this.chunkMap[i].rows);
7407
- }
7408
- var firstChunkOffset = _this.chunkMap[lbChunk].offset;
7409
- return resultArr.slice(fromIndex - firstChunkOffset, endIndex - firstChunkOffset);
7448
+ _this.fireUpdated();
7449
+ return _this.cachedRows.slice(fromIndex, endIndex);
7410
7450
  });
7451
+ return resultPromise;
7411
7452
  };
7412
7453
  EasyDataTable.prototype.getRow = function (index) {
7413
7454
  return this.getRows({ offset: index, limit: 1 })
@@ -7419,16 +7460,16 @@ var EasyDataTable = /** @class */ (function () {
7419
7460
  EasyDataTable.prototype.setTotal = function (total) {
7420
7461
  this.total = total;
7421
7462
  this.needTotal = false;
7422
- this.chunkMap = {};
7423
7463
  };
7424
7464
  EasyDataTable.prototype.getCachedCount = function () {
7425
- return this.getCachedRows().length;
7465
+ return this.cachedRows.length;
7426
7466
  };
7427
7467
  EasyDataTable.prototype.clear = function () {
7428
7468
  this.columns.clear();
7429
- this.chunkMap = {};
7469
+ this.cachedRows = [];
7430
7470
  this.total = 0;
7431
7471
  this.needTotal = !this._elasticChunks;
7472
+ this.fireUpdated();
7432
7473
  };
7433
7474
  EasyDataTable.prototype.createRow = function (dataOrRow) {
7434
7475
  var _this = this;
@@ -7459,60 +7500,33 @@ var EasyDataTable = /** @class */ (function () {
7459
7500
  }
7460
7501
  return null;
7461
7502
  };
7462
- EasyDataTable.prototype.addRow = function (rowOrValue) {
7503
+ EasyDataTable.prototype.addRow = function (rowOrValues) {
7463
7504
  var newRow;
7464
- if (Array.isArray(rowOrValue)) {
7505
+ if (Array.isArray(rowOrValues)) {
7506
+ var values = rowOrValues;
7465
7507
  var dateIdx = this._columns.getDateColumnIndexes();
7466
7508
  if (dateIdx.length > 0) {
7467
7509
  for (var _i = 0, dateIdx_1 = dateIdx; _i < dateIdx_1.length; _i++) {
7468
7510
  var idx = dateIdx_1[_i];
7469
- if (rowOrValue[idx]) {
7470
- rowOrValue[idx] = this.mapDate(rowOrValue[idx], this._columns.get(idx).type);
7511
+ if (values[idx]) {
7512
+ values[idx] = this.mapDate(values[idx], this._columns.get(idx).type);
7471
7513
  }
7472
7514
  }
7473
7515
  }
7474
- newRow = new _data_row__WEBPACK_IMPORTED_MODULE_1__[/* DataRow */ "a"](this._columns, rowOrValue);
7516
+ newRow = new _data_row__WEBPACK_IMPORTED_MODULE_1__[/* DataRow */ "a"](this._columns, values);
7475
7517
  }
7476
7518
  else {
7477
- newRow = this.createRow(rowOrValue);
7519
+ newRow = this.createRow(rowOrValues);
7478
7520
  }
7479
- var lastChunk = this.getLastChunk();
7480
- if (!lastChunk || lastChunk.rows.length >= this._chunkSize) {
7481
- lastChunk = this.createChunk();
7482
- }
7483
- lastChunk.rows.push(newRow);
7521
+ this.cachedRows.push(newRow);
7484
7522
  var cachedTotal = this.getCachedCount();
7485
7523
  if (cachedTotal > this.total) {
7486
7524
  this.total = cachedTotal;
7487
7525
  }
7488
7526
  return newRow;
7489
7527
  };
7490
- EasyDataTable.prototype.createChunk = function (index) {
7491
- if (typeof index == 'undefined') {
7492
- index = this.getLastChunkIndex() + 1;
7493
- }
7494
- var chunk = { offset: index * this._chunkSize, rows: [] };
7495
- this.chunkMap[index] = chunk;
7496
- return chunk;
7497
- };
7498
- EasyDataTable.prototype.getLastChunkIndex = function () {
7499
- var keys = Object.keys(this.chunkMap);
7500
- return keys.length > 0
7501
- ? parseInt(keys[keys.length - 1])
7502
- : -1;
7503
- };
7504
- EasyDataTable.prototype.getLastChunk = function () {
7505
- var index = this.getLastChunkIndex();
7506
- return index > -1
7507
- ? this.chunkMap[index]
7508
- : null;
7509
- };
7510
7528
  EasyDataTable.prototype.getCachedRows = function () {
7511
- return this.getCachedChunks()
7512
- .reduce(function (acc, v) { return acc.concat(v.rows); }, []);
7513
- };
7514
- EasyDataTable.prototype.getCachedChunks = function () {
7515
- return Object.values(this.chunkMap);
7529
+ return this.cachedRows;
7516
7530
  };
7517
7531
  EasyDataTable.prototype.totalIsKnown = function () {
7518
7532
  if (this.elasticChunks) {
@@ -7521,14 +7535,19 @@ var EasyDataTable = /** @class */ (function () {
7521
7535
  }
7522
7536
  return !this.needTotal;
7523
7537
  };
7538
+ EasyDataTable.prototype.fireUpdated = function () {
7539
+ if (this.onUpdate) {
7540
+ this.onUpdate(this);
7541
+ }
7542
+ };
7524
7543
  return EasyDataTable;
7525
7544
  }());
7526
7545
 
7527
7546
  //# sourceMappingURL=easy_data_table.js.map
7528
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(24)))
7547
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25)))
7529
7548
 
7530
7549
  /***/ }),
7531
- /* 28 */
7550
+ /* 29 */
7532
7551
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
7533
7552
 
7534
7553
  "use strict";
@@ -7537,8 +7556,9 @@ var EasyDataTable = /** @class */ (function () {
7537
7556
  /* harmony import */ var _utils_drag_manager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
7538
7557
  /* harmony import */ var _utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1);
7539
7558
  /* harmony import */ var _utils_ui_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6);
7540
- /* harmony import */ var _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8);
7541
- /* harmony import */ var _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9);
7559
+ /* harmony import */ var _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(10);
7560
+ /* harmony import */ var _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(8);
7561
+ /* harmony import */ var _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(13);
7542
7562
  var __assign = (undefined && undefined.__assign) || function () {
7543
7563
  __assign = Object.assign || function(t) {
7544
7564
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -7550,6 +7570,14 @@ var __assign = (undefined && undefined.__assign) || function () {
7550
7570
  };
7551
7571
  return __assign.apply(this, arguments);
7552
7572
  };
7573
+ var __spreadArrays = (undefined && undefined.__spreadArrays) || function () {
7574
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
7575
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
7576
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
7577
+ r[k] = a[j];
7578
+ return r;
7579
+ };
7580
+
7553
7581
 
7554
7582
 
7555
7583
 
@@ -7582,14 +7610,42 @@ var EasyGrid = /** @class */ (function () {
7582
7610
  pageSize: 30,
7583
7611
  pageSizeItems: [20, 30, 50, 100, 200]
7584
7612
  },
7585
- addColumns: false,
7613
+ columnWidths: {
7614
+ autoResize: _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Always,
7615
+ stringColumns: {
7616
+ min: 100,
7617
+ max: 500,
7618
+ default: 250
7619
+ },
7620
+ numberColumns: {
7621
+ min: 60,
7622
+ default: 120
7623
+ },
7624
+ boolColumns: {
7625
+ min: 50,
7626
+ default: 80
7627
+ },
7628
+ dateColumns: {
7629
+ min: 80,
7630
+ default: 200
7631
+ },
7632
+ otherColumns: {
7633
+ min: 100,
7634
+ max: 500,
7635
+ default: 250
7636
+ },
7637
+ rowNumColumn: {
7638
+ min: 40,
7639
+ default: 60
7640
+ }
7641
+ },
7642
+ showPlusButton: false,
7586
7643
  viewportRowsCount: null,
7587
7644
  showActiveRow: true
7588
7645
  };
7589
7646
  this.rowsOnPagePromise = null;
7590
7647
  this.containerInitialHeight = 0;
7591
7648
  this.firstRender = true;
7592
- this.compareValues = this.strictCompare;
7593
7649
  this.prevRowTotals = null;
7594
7650
  this.landingIndex = -1;
7595
7651
  this.landingSlot = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
@@ -7601,18 +7657,55 @@ var EasyGrid = /** @class */ (function () {
7601
7657
  if (options && options.paging) {
7602
7658
  options.paging = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].assign(this.defaultDataGridOptions.paging, options.paging);
7603
7659
  }
7604
- this.options = __assign({}, this.defaultDataGridOptions, options);
7660
+ this.options = this.mergeOptions(options);
7661
+ this.processColumnWidthsOptions();
7605
7662
  if (!this.options.slot)
7606
7663
  throw Error('"slot" parameter is required to initialize EasyDataGrid');
7607
7664
  if (!this.options.dataTable)
7608
7665
  throw Error('"dataTable" parameter is required to initialize EasyDataGrid');
7609
7666
  this.dataTable = options.dataTable;
7610
7667
  this.eventEmitter = new _easydata_core__WEBPACK_IMPORTED_MODULE_0__["EventEmitter"](this);
7611
- this.cellRendererStore = new _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_5__[/* GridCellRendererStore */ "c"](options);
7612
- this.columns = new _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnList */ "c"](this.dataTable.columns, this);
7668
+ this.cellRendererStore = new _easy_grid_cell_renderer__WEBPACK_IMPORTED_MODULE_6__[/* GridCellRendererStore */ "c"](options);
7669
+ this.columns = new _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnList */ "c"](this.dataTable.columns, this);
7613
7670
  this.setSlot(this.options.slot);
7614
7671
  this.init(this.options);
7615
7672
  }
7673
+ EasyGrid.prototype.mergeOptions = function (options) {
7674
+ var colWidthOptions = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].assignDeep({}, this.defaultDataGridOptions.columnWidths, options.columnWidths);
7675
+ var pagingOptions = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].assignDeep({}, this.defaultDataGridOptions.paging, options.paging);
7676
+ var result = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].assign({}, this.defaultDataGridOptions, options);
7677
+ result.columnWidths = colWidthOptions;
7678
+ result.paging = pagingOptions;
7679
+ return result;
7680
+ };
7681
+ EasyGrid.prototype.processColumnWidthsOptions = function () {
7682
+ var widthOptions = this.options.columnWidths;
7683
+ if (!widthOptions)
7684
+ return;
7685
+ //string columns
7686
+ _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getStringDataTypes().forEach(function (dataType) {
7687
+ widthOptions[dataType] = __assign(__assign({}, widthOptions.stringColumns), widthOptions[dataType]);
7688
+ });
7689
+ //numeric columns
7690
+ _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getNumericDataTypes().forEach(function (dataType) {
7691
+ widthOptions[dataType] = __assign(__assign({}, widthOptions.numberColumns), widthOptions[dataType]);
7692
+ });
7693
+ //bool columns
7694
+ widthOptions[_easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Bool] = __assign(__assign({}, widthOptions.boolColumns), widthOptions[_easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Bool]);
7695
+ //date columns
7696
+ _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getDateDataTypes().forEach(function (dataType) {
7697
+ widthOptions[dataType] = __assign(__assign({}, widthOptions.dateColumns), widthOptions[dataType]);
7698
+ });
7699
+ //other columns
7700
+ 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(), [
7701
+ _easydata_core__WEBPACK_IMPORTED_MODULE_0__["DataType"].Bool
7702
+ ]);
7703
+ _easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].getAllDataTypes().forEach(function (dataType) {
7704
+ if (!(dataType in knownTypes)) {
7705
+ widthOptions[dataType] = __assign(__assign({}, widthOptions.otherColumns), widthOptions[dataType]);
7706
+ }
7707
+ });
7708
+ };
7616
7709
  EasyGrid.prototype.setSlot = function (slot) {
7617
7710
  if (typeof slot === 'string') {
7618
7711
  if (slot.length) {
@@ -7645,8 +7738,8 @@ var EasyGrid = /** @class */ (function () {
7645
7738
  if (options.onRowDbClick) {
7646
7739
  this.addEventListener('rowDbClick', options.onRowDbClick);
7647
7740
  }
7648
- if (options.onAddColumnClick) {
7649
- this.addEventListener('addColumnClick', options.onAddColumnClick);
7741
+ if (options.onPlusButtonClick) {
7742
+ this.addEventListener('plusButtonClick', options.onPlusButtonClick);
7650
7743
  }
7651
7744
  if (options.onColumnChanged) {
7652
7745
  this.addEventListener('columnChanged', options.onColumnChanged);
@@ -7732,7 +7825,7 @@ var EasyGrid = /** @class */ (function () {
7732
7825
  };
7733
7826
  EasyGrid.prototype.render = function () {
7734
7827
  var _this = this;
7735
- if (!this.hasData() && !this.options.addColumns)
7828
+ if (!this.hasData() && !this.options.showPlusButton)
7736
7829
  return;
7737
7830
  this.containerInitialHeight = this.slot.clientHeight;
7738
7831
  this.rootDiv = document.createElement('div');
@@ -7749,6 +7842,7 @@ var EasyGrid = /** @class */ (function () {
7749
7842
  gridContainer.classList.add(this.cssPrefix + "-container");
7750
7843
  gridContainer.appendChild(this.rootDiv);
7751
7844
  this.slot.appendChild(gridContainer);
7845
+ var needAutoResize = this.options.columnWidths.autoResize !== _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Never;
7752
7846
  if (this.rowsOnPagePromise) {
7753
7847
  this.rowsOnPagePromise
7754
7848
  .then(function () { return _this.updateHeight(); })
@@ -7759,8 +7853,13 @@ var EasyGrid = /** @class */ (function () {
7759
7853
  }
7760
7854
  else {
7761
7855
  setTimeout(function () {
7762
- _this.updateHeight();
7763
- _this.firstRender = false;
7856
+ _this.updateHeight()
7857
+ .then(function () {
7858
+ _this.firstRender = false;
7859
+ if (needAutoResize) {
7860
+ _this.resizeColumns();
7861
+ }
7862
+ });
7764
7863
  }, 100);
7765
7864
  }
7766
7865
  };
@@ -7771,14 +7870,14 @@ var EasyGrid = /** @class */ (function () {
7771
7870
  var firstRow = _this.bodyCellContainerDiv.firstElementChild;
7772
7871
  var rowHeight = firstRow ? firstRow.offsetHeight : DEFAULT_ROW_HEIGHT;
7773
7872
  var rowCount = _this.options.viewportRowsCount; // || DEFAULT_ROW_COUNT;
7774
- var bodyHeight_1 = rowHeight * rowCount;
7775
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyDiv)
7776
- .setStyle('height', bodyHeight_1 + "px");
7873
+ var viewportHeight_1 = rowHeight * rowCount;
7874
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyViewportDiv)
7875
+ .setStyle('height', viewportHeight_1 + "px");
7777
7876
  setTimeout(function () {
7778
7877
  var sbHeight = _this.bodyViewportDiv.offsetHeight - _this.bodyViewportDiv.clientHeight;
7779
- bodyHeight_1 = bodyHeight_1 + sbHeight;
7780
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyDiv)
7781
- .setStyle('height', bodyHeight_1 + "px");
7878
+ viewportHeight_1 = viewportHeight_1 + sbHeight;
7879
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyViewportDiv)
7880
+ .setStyle('height', viewportHeight_1 + "px");
7782
7881
  resolve();
7783
7882
  }, 100);
7784
7883
  return;
@@ -7825,7 +7924,7 @@ var EasyGrid = /** @class */ (function () {
7825
7924
  _this.headerRowDiv.appendChild(hd);
7826
7925
  if (column.isRowNum) {
7827
7926
  Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(hd)
7828
- .addChildElement(_this.renderAddColumnButton());
7927
+ .addChildElement(_this.renderHeaderButtons());
7829
7928
  }
7830
7929
  });
7831
7930
  var containerWidth = this.getContainerWidth();
@@ -7839,7 +7938,7 @@ var EasyGrid = /** @class */ (function () {
7839
7938
  var _this = this;
7840
7939
  var colBuilder = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
7841
7940
  .addClass(this.cssPrefix + "-header-cell")
7842
- .data('col-idx', "" + (index + 1))
7941
+ .data('col-idx', "" + index)
7843
7942
  .setStyle('width', column.width + "px");
7844
7943
  if (column.dataColumn) {
7845
7944
  colBuilder
@@ -7877,14 +7976,6 @@ var EasyGrid = /** @class */ (function () {
7877
7976
  }
7878
7977
  return colDiv;
7879
7978
  };
7880
- EasyGrid.prototype.strictCompare = function (value1, value2) {
7881
- return value1 !== value2;
7882
- };
7883
- EasyGrid.prototype.caseInsensitiveCompare = function (value1, value2) {
7884
- var val1 = (typeof value1 === 'string') ? value1.toLowerCase() : value1;
7885
- var val2 = (typeof value2 === 'string') ? value2.toLowerCase() : value2;
7886
- return val1 !== val2;
7887
- };
7888
7979
  EasyGrid.prototype.renderBody = function () {
7889
7980
  var _this = this;
7890
7981
  this.bodyDiv = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
@@ -7898,10 +7989,6 @@ var EasyGrid = /** @class */ (function () {
7898
7989
  .addClass(this.cssPrefix + "-cell-container")
7899
7990
  .toDOM();
7900
7991
  var showAggrs = this.canShowAggregates();
7901
- this.compareValues = this.caseInsensitiveCompare;
7902
- if (showAggrs && this.options.aggregates.settings.caseSensitiveGroups) {
7903
- this.compareValues = this.strictCompare;
7904
- }
7905
7992
  if (this.dataTable) {
7906
7993
  this.showProgress();
7907
7994
  this.rowsOnPagePromise = this.getRowsToRender()
@@ -7911,15 +7998,22 @@ var EasyGrid = /** @class */ (function () {
7911
7998
  //prevent double rendering (bad solution, we have to figure out how to avoid this behavior properly)
7912
7999
  _this.bodyCellContainerDiv.innerHTML = '';
7913
8000
  _this.prevRowTotals = null;
8001
+ var rowsToRender = 0;
7914
8002
  if (rows.length) {
7915
8003
  var groups_1 = showAggrs
7916
8004
  ? _this.options.aggregates.settings.getGroups()
7917
8005
  : [];
8006
+ rowsToRender = (rows.length < _this.pagination.pageSize)
8007
+ ? rows.length
8008
+ : _this.pagination.pageSize;
7918
8009
  rows.forEach(function (row, index) {
7919
8010
  if (showAggrs)
7920
8011
  _this.updateTotalsState(groups_1, row);
7921
- var tr = _this.renderRow(row, index);
7922
- _this.bodyCellContainerDiv.appendChild(tr);
8012
+ //we don't actually render the last row
8013
+ if (index < rowsToRender) {
8014
+ var tr = _this.renderRow(row, index);
8015
+ _this.bodyCellContainerDiv.appendChild(tr);
8016
+ }
7923
8017
  });
7924
8018
  var showGrandTotalsOnEachPage = _this.options.aggregates && _this.options.aggregates.showGrandTotalsOnEachPage;
7925
8019
  if (showAggrs && (_this.isLastPage() || showGrandTotalsOnEachPage)) {
@@ -7927,10 +8021,16 @@ var EasyGrid = /** @class */ (function () {
7927
8021
  _this.updateTotalsState(groups_1, row, true);
7928
8022
  }
7929
8023
  }
7930
- var containerWidth = _this.getContainerWidth();
7931
- Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyCellContainerDiv)
7932
- .setStyle('width', containerWidth + "px");
7933
- return rows.length;
8024
+ var needAutoResize = _this.options.columnWidths.autoResize !== _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Never;
8025
+ if (needAutoResize) {
8026
+ _this.resizeColumns();
8027
+ }
8028
+ else {
8029
+ var containerWidth = _this.getContainerWidth();
8030
+ Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.bodyCellContainerDiv)
8031
+ .setStyle('width', containerWidth + "px");
8032
+ }
8033
+ return rowsToRender;
7934
8034
  })
7935
8035
  .catch(function (error) { console.error(error); return 0; });
7936
8036
  }
@@ -7938,7 +8038,7 @@ var EasyGrid = /** @class */ (function () {
7938
8038
  Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])(_this.headerViewportDiv)
7939
8039
  .setStyle('margin-left', "-" + _this.bodyViewportDiv.scrollLeft + "px");
7940
8040
  });
7941
- this.bodyViewportDiv.addEventListener('keydown', this.onVieportKeydown.bind(this));
8041
+ this.bodyViewportDiv.addEventListener('keydown', this.onViewportKeydown.bind(this));
7942
8042
  };
7943
8043
  EasyGrid.prototype.isLastPage = function () {
7944
8044
  if (this.dataTable.elasticChunks) {
@@ -7964,7 +8064,7 @@ var EasyGrid = /** @class */ (function () {
7964
8064
  var group = groups[level - 1];
7965
8065
  for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
7966
8066
  var col = _a[_i];
7967
- if (this.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {
8067
+ if (!aggrSettings.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {
7968
8068
  changeLevel = level;
7969
8069
  break;
7970
8070
  }
@@ -8025,8 +8125,8 @@ var EasyGrid = /** @class */ (function () {
8025
8125
  });
8026
8126
  var aggrContainer = this.options.aggregates.calculator.getAggrContainer();
8027
8127
  var aggrCols = aggrSettings.getAggregates().map(function (c) { return c.colId; });
8028
- var key = this.buildGroupKey(group, row);
8029
- aggrContainer.getAggregates(level, key)
8128
+ var key = aggrSettings.buildGroupKey(group, row);
8129
+ aggrContainer.getAggregateData(level, key)
8030
8130
  .then(function (values) {
8031
8131
  for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {
8032
8132
  var aggrColId = aggrCols_1[_i];
@@ -8067,34 +8167,20 @@ var EasyGrid = /** @class */ (function () {
8067
8167
  }
8068
8168
  }
8069
8169
  if (groupFooterTemplate) {
8070
- var cellDiv_1 = _this.renderCell(column, colIndex, val, rowElement);
8170
+ var cellDiv_1 = _this.renderCell(column, index, val, rowElement);
8071
8171
  var innerCell = cellDiv_1.firstChild;
8072
8172
  val = innerCell.innerHTML;
8073
8173
  val = _this.applyGroupColumnTemplate(groupFooterTemplate, val, values[aggrSettings.COUNT_FIELD_NAME]);
8074
8174
  }
8075
8175
  }
8076
- var cellDiv = _this.renderCell(column, colIndex, val, rowElement);
8176
+ var cellDiv = _this.renderCell(column, index, val, rowElement);
8077
8177
  rowElement.appendChild(cellDiv);
8078
8178
  });
8079
8179
  })
8080
8180
  .catch(function (error) { return console.error(error); });
8081
8181
  return rowElement;
8082
8182
  };
8083
- EasyGrid.prototype.buildGroupKey = function (group, row) {
8084
- var aggrSettings = this.options.aggregates.settings;
8085
- var caseInsensitive = aggrSettings && !aggrSettings.caseSensitiveGroups;
8086
- var result = {};
8087
- for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
8088
- var colId = _a[_i];
8089
- var keyVal = row.getValue(colId);
8090
- if (caseInsensitive && typeof (keyVal) === 'string') {
8091
- keyVal = keyVal.toLowerCase();
8092
- }
8093
- result[colId] = keyVal;
8094
- }
8095
- return result;
8096
- };
8097
- EasyGrid.prototype.onVieportKeydown = function (ev) {
8183
+ EasyGrid.prototype.onViewportKeydown = function (ev) {
8098
8184
  if (this.options.showActiveRow) {
8099
8185
  var rowCount = this.bodyCellContainerDiv.querySelectorAll("." + this.cssPrefix + "-row").length;
8100
8186
  var newValue = void 0;
@@ -8148,13 +8234,17 @@ var EasyGrid = /** @class */ (function () {
8148
8234
  }
8149
8235
  }
8150
8236
  };
8237
+ /** Returns a promise with the list of the rows to render on one page.
8238
+ * The list contains pageSize+1 row to make it possible
8239
+ * to render the totals row (if it appears to be on the edge between pages)
8240
+ */
8151
8241
  EasyGrid.prototype.getRowsToRender = function () {
8152
8242
  if (this.options.paging.enabled === false) {
8153
8243
  return Promise.resolve(this.dataTable.getCachedRows());
8154
8244
  }
8155
8245
  return this.dataTable.getRows({
8156
- page: this.pagination.page,
8157
- pageSize: this.pagination.pageSize
8246
+ offset: (this.pagination.page - 1) * this.pagination.pageSize,
8247
+ limit: this.pagination.pageSize + 1
8158
8248
  })
8159
8249
  .catch(function (error) {
8160
8250
  console.error(error);
@@ -8179,23 +8269,26 @@ var EasyGrid = /** @class */ (function () {
8179
8269
  var pageInfoDiv = Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
8180
8270
  .addClass(this.cssPrefix + "-page-info")
8181
8271
  .toDOM();
8182
- var fistPageRecordNum = count
8183
- ? (this.pagination.page - 1) * this.pagination.pageSize + 1
8184
- : 0;
8185
- var lastPageRecordNum = count
8186
- ? fistPageRecordNum + count - 1
8187
- : 0;
8188
- var totalStr = this.dataTable.getTotal().toString();
8189
- if (this.dataTable.elasticChunks) {
8190
- var count_1 = this.dataTable.getCachedCount();
8191
- var total = this.dataTable.getTotal();
8192
- if (count_1 !== total)
8193
- totalStr = '?';
8194
- }
8195
- pageInfoDiv.innerHTML = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].getText('GridPageInfo')
8196
- .replace('{FirstPageRecordNum}', "<span>" + fistPageRecordNum.toString() + "</span>")
8197
- .replace('{LastPageRecordNum}', "<span>" + lastPageRecordNum.toString() + "</span>")
8198
- .replace('{Total}', "<span>" + totalStr + "</span>");
8272
+ var rowCount = this.dataTable.getTotal();
8273
+ if (rowCount > 0) {
8274
+ var fistPageRecordNum = count
8275
+ ? (this.pagination.page - 1) * this.pagination.pageSize + 1
8276
+ : 0;
8277
+ var lastPageRecordNum = count
8278
+ ? fistPageRecordNum + count - 1
8279
+ : 0;
8280
+ var totalStr = this.dataTable.getTotal().toString();
8281
+ if (this.dataTable.elasticChunks) {
8282
+ var count_1 = this.dataTable.getCachedCount();
8283
+ var total = this.dataTable.getTotal();
8284
+ if (count_1 !== total)
8285
+ totalStr = '?';
8286
+ }
8287
+ pageInfoDiv.innerHTML = _easydata_core__WEBPACK_IMPORTED_MODULE_0__["i18n"].getText('GridPageInfo')
8288
+ .replace('{FirstPageRecordNum}', "<span>" + fistPageRecordNum.toString() + "</span>")
8289
+ .replace('{LastPageRecordNum}', "<span>" + lastPageRecordNum.toString() + "</span>")
8290
+ .replace('{Total}', "<span>" + totalStr + "</span>");
8291
+ }
8199
8292
  return pageInfoDiv;
8200
8293
  };
8201
8294
  EasyGrid.prototype.showProgress = function () {
@@ -8250,13 +8343,13 @@ var EasyGrid = /** @class */ (function () {
8250
8343
  if (this.options.showActiveRow && index == this.activeRowIndex) {
8251
8344
  rowBuilder.addClass(this.cssPrefix + "-row-active");
8252
8345
  }
8253
- this.columns.getItems().forEach(function (column) {
8346
+ this.columns.getItems().forEach(function (column, index) {
8254
8347
  if (!column.isVisible) {
8255
8348
  return;
8256
8349
  }
8257
8350
  var colindex = column.isRowNum ? -1 : _this.dataTable.columns.getIndex(column.dataColumn.id);
8258
8351
  var val = column.isRowNum ? indexGlobal + 1 : row.getValue(colindex);
8259
- rowElement.appendChild(_this.renderCell(column, colindex, val, rowElement));
8352
+ rowElement.appendChild(_this.renderCell(column, index, val, rowElement));
8260
8353
  });
8261
8354
  return rowElement;
8262
8355
  };
@@ -8266,13 +8359,13 @@ var EasyGrid = /** @class */ (function () {
8266
8359
  .data('col-idx', "" + colIndex)
8267
8360
  .attr('tabindex', '-1')
8268
8361
  .setStyle('width', column.width + "px");
8269
- if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnAlign */ "b"].LEFT) {
8362
+ if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnAlign */ "b"].LEFT) {
8270
8363
  builder.addClass(this.cssPrefix + "-cell-align-left");
8271
8364
  }
8272
- else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnAlign */ "b"].RIGHT) {
8365
+ else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnAlign */ "b"].RIGHT) {
8273
8366
  builder.addClass(this.cssPrefix + "-cell-align-right");
8274
8367
  }
8275
- else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_4__[/* GridColumnAlign */ "b"].CENTER) {
8368
+ else if (column.align == _easy_grid_columns__WEBPACK_IMPORTED_MODULE_5__[/* GridColumnAlign */ "b"].CENTER) {
8276
8369
  builder.addClass(this.cssPrefix + "-cell-align-center");
8277
8370
  }
8278
8371
  if (column.cellRenderer) {
@@ -8290,7 +8383,8 @@ var EasyGrid = /** @class */ (function () {
8290
8383
  var _this = this;
8291
8384
  var paginateDiv = document.createElement('div');
8292
8385
  paginateDiv.className = this.cssPrefix + "-pagination-wrapper";
8293
- if (this.options.paging && this.options.paging.enabled) {
8386
+ var rowCount = this.dataTable.getTotal();
8387
+ if (this.options.paging && this.options.paging.enabled && rowCount > 0) {
8294
8388
  var prefix_1 = this.paginationOptions.useBootstrap ? '' : this.cssPrefix + "-";
8295
8389
  var buttonClickHandler_1 = function (ev) {
8296
8390
  var element = ev.target;
@@ -8416,18 +8510,18 @@ var EasyGrid = /** @class */ (function () {
8416
8510
  EasyGrid.prototype.removeEventListener = function (eventType, handlerId) {
8417
8511
  this.eventEmitter.unsubscribe(eventType, handlerId);
8418
8512
  };
8419
- EasyGrid.prototype.renderAddColumnButton = function () {
8513
+ EasyGrid.prototype.renderHeaderButtons = function () {
8420
8514
  var _this = this;
8421
- if (this.options.addColumns) {
8515
+ if (this.options.showPlusButton) {
8422
8516
  return Object(_utils_dom_elem_builder__WEBPACK_IMPORTED_MODULE_2__[/* domel */ "e"])('div')
8423
- .addClass(this.cssPrefix + "-addrow")
8424
- .title(this.options.addColumnsTitle || 'Add column')
8517
+ .addClass(this.cssPrefix + "-header-btn-plus")
8518
+ .title(this.options.plusButtonTitle || 'Add')
8425
8519
  .addChild('a', function (builder) { return builder
8426
8520
  .attr('href', 'javascript:void(0)')
8427
8521
  .on('click', function (e) {
8428
8522
  e.preventDefault();
8429
8523
  _this.fireEvent({
8430
- type: 'addColumnClick',
8524
+ type: 'plusButtonClick',
8431
8525
  sourceEvent: e
8432
8526
  });
8433
8527
  }); })
@@ -8528,14 +8622,105 @@ var EasyGrid = /** @class */ (function () {
8528
8622
  EasyGrid.prototype.focus = function () {
8529
8623
  this.bodyViewportDiv.focus();
8530
8624
  };
8625
+ EasyGrid.prototype.resizeColumns = function () {
8626
+ if (this.options.columnWidths.autoResize === _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Never)
8627
+ return;
8628
+ var containerWidth = this.bodyCellContainerDiv.style.width;
8629
+ this.bodyCellContainerDiv.style.visibility = 'hidden';
8630
+ this.bodyCellContainerDiv.style.width = '1px';
8631
+ //this.headerRowDiv.style.visibility = 'hidden';
8632
+ this.headerRowDiv.style.width = '1px';
8633
+ var sumWidth = 0;
8634
+ var columns = this.columns.getItems();
8635
+ var headerCells = this.headerCellContainerDiv.querySelectorAll("." + this.cssPrefix + "-header-cell");
8636
+ var headerIdx = 0;
8637
+ var _loop_1 = function (idx) {
8638
+ var column = columns[idx];
8639
+ if (!column.isVisible)
8640
+ return "continue";
8641
+ var calculatedWidth = this_1.options.columnWidths.autoResize !== _easy_grid_options__WEBPACK_IMPORTED_MODULE_4__[/* AutoResizeColumns */ "a"].Always && column.dataColumn
8642
+ ? column.dataColumn.calculatedWidth
8643
+ : 0;
8644
+ var cellValues = this_1.bodyCellContainerDiv.querySelectorAll("." + this_1.cssPrefix + "-cell[data-col-idx=\"" + idx + "\"] > ." + this_1.cssPrefix + "-cell-value");
8645
+ var maxWidth = 0;
8646
+ if (calculatedWidth > 0) {
8647
+ sumWidth += calculatedWidth;
8648
+ column.width = calculatedWidth;
8649
+ cellValues.forEach(function (value) {
8650
+ value.parentElement.style.width = calculatedWidth + "px";
8651
+ });
8652
+ headerCells[headerIdx].style.width = calculatedWidth + "px";
8653
+ }
8654
+ else {
8655
+ if (cellValues.length == 0) {
8656
+ headerCells[headerIdx].style.width = null;
8657
+ headerCells[headerIdx].style.whiteSpace = 'nowrap';
8658
+ }
8659
+ maxWidth = headerCells[headerIdx].offsetWidth;
8660
+ if (cellValues.length > 0) {
8661
+ cellValues.forEach(function (value) {
8662
+ value.parentElement.style.width = null;
8663
+ var width = value.parentElement.offsetWidth;
8664
+ if (width > maxWidth) {
8665
+ maxWidth = width;
8666
+ }
8667
+ });
8668
+ maxWidth += 3;
8669
+ var maxOption = column.isRowNum
8670
+ ? this_1.options.columnWidths.rowNumColumn.max || 500
8671
+ : this_1.options.columnWidths[column.dataColumn.type].max || 2000;
8672
+ var minOption = column.isRowNum
8673
+ ? this_1.options.columnWidths.rowNumColumn.min || 0
8674
+ : this_1.options.columnWidths[column.dataColumn.type].min || 20;
8675
+ if (maxWidth > maxOption) {
8676
+ maxWidth = maxOption;
8677
+ }
8678
+ if (maxWidth < minOption) {
8679
+ maxWidth = minOption;
8680
+ }
8681
+ if (_easydata_core__WEBPACK_IMPORTED_MODULE_0__["utils"].isNumericType(column.type)) {
8682
+ //increase the calculated width in 1.3 times for numeric columns
8683
+ maxWidth = Math.round(maxWidth * 1.3);
8684
+ }
8685
+ sumWidth += maxWidth;
8686
+ column.width = maxWidth;
8687
+ cellValues.forEach(function (value) {
8688
+ value.parentElement.style.width = maxWidth + "px";
8689
+ });
8690
+ headerCells[headerIdx].style.width = maxWidth + "px";
8691
+ if (column.dataColumn) {
8692
+ column.dataColumn.calculatedWidth = maxWidth;
8693
+ }
8694
+ }
8695
+ else {
8696
+ sumWidth += maxWidth;
8697
+ }
8698
+ }
8699
+ headerIdx++;
8700
+ };
8701
+ var this_1 = this;
8702
+ for (var idx = 0; idx < this.columns.count; idx++) {
8703
+ _loop_1(idx);
8704
+ }
8705
+ if (sumWidth > 0) {
8706
+ this.bodyCellContainerDiv.style.width = sumWidth + "px";
8707
+ this.headerCellContainerDiv.style.width = sumWidth + "px";
8708
+ }
8709
+ else {
8710
+ this.bodyCellContainerDiv.style.width = containerWidth;
8711
+ this.headerCellContainerDiv.style.width = containerWidth;
8712
+ }
8713
+ this.bodyCellContainerDiv.style.visibility = null;
8714
+ this.headerRowDiv.removeAttribute('style');
8715
+ };
8531
8716
  return EasyGrid;
8532
8717
  }());
8533
8718
 
8534
8719
  //# sourceMappingURL=easy_grid.js.map
8535
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(29)))
8720
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30)))
8536
8721
 
8537
8722
  /***/ }),
8538
- /* 29 */
8723
+ /* 30 */
8539
8724
  /***/ (function(module, exports, __webpack_require__) {
8540
8725
 
8541
8726
  /* WEBPACK VAR INJECTION */(function(process, global) {/*!
@@ -9712,10 +9897,10 @@ return Promise$1;
9712
9897
 
9713
9898
  //# sourceMappingURL=es6-promise.map
9714
9899
 
9715
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(25), __webpack_require__(26)))
9900
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(26), __webpack_require__(27)))
9716
9901
 
9717
9902
  /***/ }),
9718
- /* 30 */
9903
+ /* 31 */
9719
9904
  /***/ (function(module, exports, __webpack_require__) {
9720
9905
 
9721
9906
  /* WEBPACK VAR INJECTION */(function(process, global) {/*!
@@ -10892,10 +11077,10 @@ return Promise$1;
10892
11077
 
10893
11078
  //# sourceMappingURL=es6-promise.map
10894
11079
 
10895
- /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(39), __webpack_require__(40)))
11080
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40), __webpack_require__(41)))
10896
11081
 
10897
11082
  /***/ }),
10898
- /* 31 */
11083
+ /* 32 */
10899
11084
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10900
11085
 
10901
11086
  "use strict";
@@ -10926,13 +11111,13 @@ var HttpActionResult = /** @class */ (function () {
10926
11111
  //# sourceMappingURL=http_action_result.js.map
10927
11112
 
10928
11113
  /***/ }),
10929
- /* 32 */
11114
+ /* 33 */
10930
11115
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
10931
11116
 
10932
11117
  "use strict";
10933
11118
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return DateTimeValidator; });
10934
11119
  /* harmony import */ var _easydata_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
10935
- /* harmony import */ var _validator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
11120
+ /* harmony import */ var _validator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9);
10936
11121
  /* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
10937
11122
  var __extends = (undefined && undefined.__extends) || (function () {
10938
11123
  var extendStatics = function (d, b) {
@@ -10980,48 +11165,48 @@ var DateTimeValidator = /** @class */ (function (_super) {
10980
11165
  //# sourceMappingURL=datetime_validator.js.map
10981
11166
 
10982
11167
  /***/ }),
10983
- /* 33 */
11168
+ /* 34 */
10984
11169
  /***/ (function(module, exports, __webpack_require__) {
10985
11170
 
10986
- __webpack_require__(34);
10987
- module.exports = __webpack_require__(41);
11171
+ __webpack_require__(35);
11172
+ module.exports = __webpack_require__(42);
10988
11173
 
10989
11174
 
10990
11175
  /***/ }),
10991
- /* 34 */
11176
+ /* 35 */
10992
11177
  /***/ (function(module, exports, __webpack_require__) {
10993
11178
 
10994
- __webpack_require__(35);
10995
11179
  __webpack_require__(36);
10996
11180
  __webpack_require__(37);
10997
- __webpack_require__(38);
11181
+ __webpack_require__(38);
11182
+ __webpack_require__(39);
10998
11183
 
10999
11184
  /***/ }),
11000
- /* 35 */
11185
+ /* 36 */
11001
11186
  /***/ (function(module, exports, __webpack_require__) {
11002
11187
 
11003
11188
  // extracted by mini-css-extract-plugin
11004
11189
 
11005
11190
  /***/ }),
11006
- /* 36 */
11191
+ /* 37 */
11007
11192
  /***/ (function(module, exports, __webpack_require__) {
11008
11193
 
11009
11194
  // extracted by mini-css-extract-plugin
11010
11195
 
11011
11196
  /***/ }),
11012
- /* 37 */
11197
+ /* 38 */
11013
11198
  /***/ (function(module, exports, __webpack_require__) {
11014
11199
 
11015
11200
  // extracted by mini-css-extract-plugin
11016
11201
 
11017
11202
  /***/ }),
11018
- /* 38 */
11203
+ /* 39 */
11019
11204
  /***/ (function(module, exports, __webpack_require__) {
11020
11205
 
11021
11206
  // extracted by mini-css-extract-plugin
11022
11207
 
11023
11208
  /***/ }),
11024
- /* 39 */
11209
+ /* 40 */
11025
11210
  /***/ (function(module, exports) {
11026
11211
 
11027
11212
  // shim for using process in browser
@@ -11211,7 +11396,7 @@ process.umask = function() { return 0; };
11211
11396
 
11212
11397
 
11213
11398
  /***/ }),
11214
- /* 40 */
11399
+ /* 41 */
11215
11400
  /***/ (function(module, exports) {
11216
11401
 
11217
11402
  var g;
@@ -11237,7 +11422,7 @@ module.exports = g;
11237
11422
 
11238
11423
 
11239
11424
  /***/ }),
11240
- /* 41 */
11425
+ /* 42 */
11241
11426
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
11242
11427
 
11243
11428
  "use strict";
@@ -11273,10 +11458,10 @@ var public_api = __webpack_require__(0);
11273
11458
  var lib_public_api = __webpack_require__(3);
11274
11459
 
11275
11460
  // EXTERNAL MODULE: ./dist/lib/filter/text_data_filter.js
11276
- var text_data_filter = __webpack_require__(21);
11461
+ var text_data_filter = __webpack_require__(22);
11277
11462
 
11278
11463
  // EXTERNAL MODULE: ./dist/lib/form/entity_edit_form.js
11279
- var entity_edit_form = __webpack_require__(22);
11464
+ var entity_edit_form = __webpack_require__(23);
11280
11465
 
11281
11466
  // EXTERNAL MODULE: ./dist/lib/utils/utils.js
11282
11467
  var utils = __webpack_require__(7);
@@ -11550,12 +11735,13 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11550
11735
  var lookupTable = new public_api["EasyDataTable"]({
11551
11736
  loader: {
11552
11737
  loadChunk: function (chunkParams) { return _this.context.getDataLoader()
11553
- .loadChunk(__assign({}, chunkParams, { id: lookupEntity.id })); }
11738
+ .loadChunk(__assign(__assign({}, chunkParams), { id: lookupEntity.id })); }
11554
11739
  }
11555
11740
  });
11556
11741
  _this.context.getDataLoader()
11557
- .loadChunk({ offset: 0, limit: 1000, needTotal: true, entityId: lookupEntity.id })
11742
+ .loadChunk({ offset: 0, limit: 1000, needTotal: true, sourceId: lookupEntity.id })
11558
11743
  .then(function (data) {
11744
+ var _a;
11559
11745
  var _loop_1 = function (col) {
11560
11746
  var attrs = lookupEntity.attributes.filter(function (attr) {
11561
11747
  return attr.id == col.id && (attr.isPrimaryKey || attr.showInLookup);
@@ -11564,13 +11750,13 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11564
11750
  lookupTable.columns.add(col);
11565
11751
  }
11566
11752
  };
11567
- for (var _i = 0, _a = data.table.columns.getItems(); _i < _a.length; _i++) {
11568
- var col = _a[_i];
11753
+ for (var _i = 0, _b = data.table.columns.getItems(); _i < _b.length; _i++) {
11754
+ var col = _b[_i];
11569
11755
  _loop_1(col);
11570
11756
  }
11571
11757
  lookupTable.setTotal(data.total);
11572
- for (var _b = 0, _c = data.table.getCachedRows(); _b < _c.length; _b++) {
11573
- var row = _c[_b];
11758
+ for (var _c = 0, _d = data.table.getCachedRows(); _c < _d.length; _c++) {
11759
+ var row = _d[_c];
11574
11760
  lookupTable.addRow(row);
11575
11761
  }
11576
11762
  var ds = new lib_public_api["DefaultDialogService"]();
@@ -11609,7 +11795,9 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11609
11795
  .join(', ');
11610
11796
  };
11611
11797
  if (selectedValue) {
11612
- _this.context.getEntity(selectedValue, lookupEntity.id)
11798
+ var attr_1 = lookupEntity.getFirstPrimaryAttr();
11799
+ var key = attr_1.id.substring(attr_1.id.lastIndexOf('.') + 1);
11800
+ _this.context.fetchRecord((_a = {}, _a[key] = selectedValue, _a), lookupEntity.id)
11613
11801
  .then(function (data) {
11614
11802
  if (data.entity) {
11615
11803
  updateSelectedValue(data.entity);
@@ -11657,7 +11845,7 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11657
11845
  }); });
11658
11846
  });
11659
11847
  };
11660
- EntityEditFormBuilder.prototype.setupDateTimeField = function (parent, attr, readOnly, value) {
11848
+ EntityEditFormBuilder.prototype.setupDateTimeField = function (parent, attr, value, readOnly, hidden) {
11661
11849
  var _this = this;
11662
11850
  var horizClass = isIE
11663
11851
  ? 'kfrm-fields-ie is-horizontal'
@@ -11678,6 +11866,8 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11678
11866
  .addClass(horizClass)
11679
11867
  .addChild('input', function (b) {
11680
11868
  inputEl = b.toDOM();
11869
+ b.name(attr.id);
11870
+ b.type(hidden ? 'hidden' : _this.resolveInputType(attr.dataType));
11681
11871
  if (readOnly) {
11682
11872
  b.attr('readonly', '');
11683
11873
  }
@@ -11701,8 +11891,6 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11701
11891
  }
11702
11892
  });
11703
11893
  }
11704
- b.name(attr.id);
11705
- b.type(_this.resolveInputType(attr.dataType));
11706
11894
  b.value((public_api["utils"].IsDefinedAndNotNull(value)
11707
11895
  ? public_api["utils"].dateTimeToStr(value, editFormat)
11708
11896
  : ''));
@@ -11744,7 +11932,7 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11744
11932
  }).toDOM(); });
11745
11933
  });
11746
11934
  };
11747
- EntityEditFormBuilder.prototype.setupListField = function (parent, attr, readOnly, values, value) {
11935
+ EntityEditFormBuilder.prototype.setupListField = function (parent, attr, value, values, readOnly) {
11748
11936
  var _this = this;
11749
11937
  Object(lib_public_api["domel"])(parent)
11750
11938
  .addChild('div', function (b) { return b
@@ -11777,12 +11965,14 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11777
11965
  b.attr('accept', accept);
11778
11966
  });
11779
11967
  };
11780
- EntityEditFormBuilder.prototype.setupTextField = function (parent, attr, readOnly, value) {
11968
+ EntityEditFormBuilder.prototype.setupTextField = function (parent, attr, value, readOnly, hidden) {
11781
11969
  var _this = this;
11782
11970
  Object(lib_public_api["domel"])(parent)
11783
11971
  .addChild('input', function (b) {
11784
- if (readOnly)
11972
+ if (readOnly) {
11785
11973
  b.attr('readonly', '');
11974
+ }
11975
+ b.type(hidden ? 'hidden' : _this.resolveInputType(attr.dataType));
11786
11976
  b.name(attr.id)
11787
11977
  .type(_this.resolveInputType(attr.dataType));
11788
11978
  if (attr.dataType == public_api["DataType"].Bool) {
@@ -11797,7 +11987,7 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11797
11987
  }
11798
11988
  });
11799
11989
  };
11800
- EntityEditFormBuilder.prototype.setupTextArea = function (parent, attr, readOnly, value) {
11990
+ EntityEditFormBuilder.prototype.setupTextArea = function (parent, attr, value, readOnly) {
11801
11991
  // feature: modify size in value editor ??
11802
11992
  Object(lib_public_api["domel"])(parent)
11803
11993
  .addChild('textarea', function (b) {
@@ -11805,6 +11995,9 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11805
11995
  b.attr('readonly', '');
11806
11996
  b.attr('name', attr.id);
11807
11997
  b.setStyle('height', "120px");
11998
+ b.value(public_api["utils"].IsDefinedAndNotNull(value)
11999
+ ? value.toString()
12000
+ : '');
11808
12001
  });
11809
12002
  };
11810
12003
  EntityEditFormBuilder.prototype.addFormField = function (parent, attr) {
@@ -11831,16 +12024,17 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11831
12024
  .setStyle('display', 'inline-block'); });
11832
12025
  }
11833
12026
  });
12027
+ var hidden = attr.isPrimaryKey;
11834
12028
  if (attr.kind === public_api["EntityAttrKind"].Lookup) {
11835
12029
  this.setupLookupField(parent, attr, readOnly, value);
11836
12030
  return;
11837
12031
  }
11838
12032
  switch (editor.tag) {
11839
12033
  case public_api["EditorTag"].DateTime:
11840
- this.setupDateTimeField(parent, attr, readOnly, value);
12034
+ this.setupDateTimeField(parent, attr, value, readOnly, hidden);
11841
12035
  break;
11842
12036
  case public_api["EditorTag"].List:
11843
- this.setupListField(parent, attr, readOnly, editor.values, value);
12037
+ this.setupListField(parent, attr, value, editor.values, readOnly);
11844
12038
  break;
11845
12039
  case public_api["EditorTag"].File:
11846
12040
  this.setupFileField(parent, attr, readOnly, editor.accept);
@@ -11848,10 +12042,10 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11848
12042
  case public_api["EditorTag"].Edit:
11849
12043
  default:
11850
12044
  if (editor.multiline) {
11851
- this.setupTextArea(parent, attr, readOnly, value);
12045
+ this.setupTextArea(parent, attr, value, readOnly);
11852
12046
  }
11853
12047
  else {
11854
- this.setupTextField(parent, attr, readOnly, value);
12048
+ this.setupTextField(parent, attr, value, readOnly, hidden);
11855
12049
  }
11856
12050
  break;
11857
12051
  }
@@ -11903,13 +12097,15 @@ var entity_form_builder_EntityEditFormBuilder = /** @class */ (function () {
11903
12097
  this.form['setHtmlInt'](formHtml);
11904
12098
  for (var _i = 0, _a = this.context.getActiveEntity().attributes; _i < _a.length; _i++) {
11905
12099
  var attr = _a[_i];
11906
- if (this.params.isEditForm) {
11907
- if (!attr.showOnEdit)
11908
- continue;
11909
- }
11910
- else {
11911
- if (!attr.showOnCreate)
11912
- continue;
12100
+ if (!attr.isPrimaryKey) {
12101
+ if (this.params.isEditForm) {
12102
+ if (!attr.showOnEdit)
12103
+ continue;
12104
+ }
12105
+ else {
12106
+ if (!attr.showOnCreate)
12107
+ continue;
12108
+ }
11913
12109
  }
11914
12110
  this.addFormField(fb.toDOM(), attr);
11915
12111
  }
@@ -11944,8 +12140,8 @@ var easy_data_server_loader_EasyDataServerLoader = /** @class */ (function () {
11944
12140
  }
11945
12141
  EasyDataServerLoader.prototype.loadChunk = function (params) {
11946
12142
  var _this = this;
11947
- var url = this.context.resolveEndpoint('GetEntities', { entityId: params.entityId || this.context.getActiveEntity().id });
11948
- delete params.entityId;
12143
+ var url = this.context.resolveEndpoint('FetchDataset', { sourceId: params.sourceId || this.context.getActiveEntity().id });
12144
+ delete params.sourceId;
11949
12145
  this.context.startProcess();
11950
12146
  var http = this.context.getHttpClient();
11951
12147
  return http.post(url, params)
@@ -11982,6 +12178,17 @@ var easy_data_server_loader_EasyDataServerLoader = /** @class */ (function () {
11982
12178
 
11983
12179
  //# sourceMappingURL=easy_data_server_loader.js.map
11984
12180
  // CONCATENATED MODULE: ./dist/lib/main/data_context.js
12181
+ var data_context_assign = (undefined && undefined.__assign) || function () {
12182
+ data_context_assign = Object.assign || function(t) {
12183
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
12184
+ s = arguments[i];
12185
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12186
+ t[p] = s[p];
12187
+ }
12188
+ return t;
12189
+ };
12190
+ return data_context_assign.apply(this, arguments);
12191
+ };
11985
12192
 
11986
12193
 
11987
12194
 
@@ -11994,15 +12201,14 @@ var data_context_DataContext = /** @class */ (function () {
11994
12201
  this.model = new public_api["MetaData"]();
11995
12202
  this.model.id = options.metaDataId || '__default';
11996
12203
  this.dataLoader = new easy_data_server_loader_EasyDataServerLoader(this);
11997
- this.data = new public_api["EasyDataTable"]({
11998
- loader: this.dataLoader
11999
- });
12204
+ var dataTableOptions = data_context_assign({ loader: this.dataLoader }, options.dataTable);
12205
+ this.data = new public_api["EasyDataTable"](dataTableOptions);
12000
12206
  this.setDefaultEndpoints(this.options.endpoint || '/api/easydata');
12001
12207
  }
12002
12208
  DataContext.prototype.getActiveEntity = function () {
12003
12209
  return this.activeEntity;
12004
12210
  };
12005
- DataContext.prototype.setActiveEntity = function (entityId) {
12211
+ DataContext.prototype.setActiveSource = function (entityId) {
12006
12212
  this.activeEntity = this.model.getRootEntity().subEntities
12007
12213
  .filter(function (e) { return e.id == entityId; })[0];
12008
12214
  };
@@ -12015,8 +12221,8 @@ var data_context_DataContext = /** @class */ (function () {
12015
12221
  DataContext.prototype.getDataLoader = function () {
12016
12222
  return this.dataLoader;
12017
12223
  };
12018
- DataContext.prototype.createFilter = function (entityId, data, isLookup) {
12019
- return new text_data_filter["a" /* TextDataFilter */](this.dataLoader, data || this.getData(), entityId || this.activeEntity.id, isLookup);
12224
+ DataContext.prototype.createFilter = function (sourceId, data, isLookup) {
12225
+ return new text_data_filter["a" /* TextDataFilter */](this.dataLoader, data || this.getData(), sourceId || this.activeEntity.id, isLookup);
12020
12226
  };
12021
12227
  DataContext.prototype.loadMetaData = function () {
12022
12228
  var _this = this;
@@ -12040,7 +12246,7 @@ var data_context_DataContext = /** @class */ (function () {
12040
12246
  DataContext.prototype.getHttpClient = function () {
12041
12247
  return this.http;
12042
12248
  };
12043
- DataContext.prototype.getEntities = function () {
12249
+ DataContext.prototype.fetchDataset = function () {
12044
12250
  var _this = this;
12045
12251
  this.data.clear();
12046
12252
  return this.dataLoader.loadChunk({ offset: 0, limit: this.data.chunkSize, needTotal: true })
@@ -12057,33 +12263,33 @@ var data_context_DataContext = /** @class */ (function () {
12057
12263
  return _this.data;
12058
12264
  });
12059
12265
  };
12060
- DataContext.prototype.getEntity = function (id, entityId) {
12266
+ DataContext.prototype.fetchRecord = function (keys, sourceId) {
12061
12267
  var _this = this;
12062
- var url = this.resolveEndpoint('GetEntity', { id: id,
12063
- entityId: entityId || this.activeEntity.id });
12268
+ var url = this.resolveEndpoint('FetchRecord', { sourceId: sourceId || this.activeEntity.id });
12064
12269
  this.startProcess();
12065
- return this.http.get(url).getPromise()
12270
+ return this.http.get(url, { queryParams: keys })
12066
12271
  .finally(function () { return _this.endProcess(); });
12067
12272
  };
12068
- DataContext.prototype.createEntity = function (obj, entityId) {
12273
+ DataContext.prototype.createRecord = function (obj, sourceId) {
12069
12274
  var _this = this;
12070
- var url = this.resolveEndpoint('CreateEntity', { entityId: entityId || this.activeEntity.id });
12275
+ var url = this.resolveEndpoint('CreateRecord', { sourceId: sourceId || this.activeEntity.id });
12071
12276
  this.startProcess();
12072
- return this.http.post(url, obj, { dataType: 'json' }).getPromise().finally(function () { return _this.endProcess(); });
12277
+ return this.http.post(url, obj, { dataType: 'json' })
12278
+ .finally(function () { return _this.endProcess(); });
12073
12279
  };
12074
- DataContext.prototype.updateEntity = function (id, obj, entityId) {
12280
+ DataContext.prototype.updateRecord = function (obj, sourceId) {
12075
12281
  var _this = this;
12076
- var url = this.resolveEndpoint('UpdateEntity', { id: id,
12077
- entityId: entityId || this.activeEntity.id });
12282
+ var url = this.resolveEndpoint('UpdateRecord', { sourceId: sourceId || this.activeEntity.id });
12078
12283
  this.startProcess();
12079
- return this.http.post(url, obj, { dataType: 'json' }).getPromise().finally(function () { return _this.endProcess(); });
12284
+ return this.http.post(url, obj, { dataType: 'json' })
12285
+ .finally(function () { return _this.endProcess(); });
12080
12286
  };
12081
- DataContext.prototype.deleteEntity = function (id, entityId) {
12287
+ DataContext.prototype.deleteRecord = function (obj, sourceId) {
12082
12288
  var _this = this;
12083
- var url = this.resolveEndpoint('DeleteEntity', { id: id,
12084
- entityId: entityId || this.activeEntity.id });
12289
+ var url = this.resolveEndpoint('DeleteRecord', { sourceId: sourceId || this.activeEntity.id });
12085
12290
  this.startProcess();
12086
- return this.http.post(url, null).getPromise().finally(function () { return _this.endProcess(); });
12291
+ return this.http.post(url, obj, { dataType: 'json' })
12292
+ .finally(function () { return _this.endProcess(); });
12087
12293
  };
12088
12294
  DataContext.prototype.setEndpoint = function (key, value) {
12089
12295
  this.endpoints.set(key, value);
@@ -12108,7 +12314,7 @@ var data_context_DataContext = /** @class */ (function () {
12108
12314
  if (opt == 'modelId') {
12109
12315
  optVal = this.model.getId();
12110
12316
  }
12111
- else if (opt == 'entityId') {
12317
+ else if (opt == 'sourceId') {
12112
12318
  optVal = this.activeEntity.id;
12113
12319
  }
12114
12320
  else {
@@ -12130,18 +12336,18 @@ var data_context_DataContext = /** @class */ (function () {
12130
12336
  };
12131
12337
  DataContext.prototype.setDefaultEndpoints = function (endpointBase) {
12132
12338
  this.setEnpointIfNotExist('GetMetaData', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}'));
12133
- this.setEnpointIfNotExist('GetEntities', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/fetch'));
12134
- this.setEnpointIfNotExist('GetEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/fetch/{id}'));
12135
- this.setEnpointIfNotExist('CreateEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/create'));
12136
- this.setEnpointIfNotExist('UpdateEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/update/{id}'));
12137
- this.setEnpointIfNotExist('DeleteEntity', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/crud/{entityId}/delete/{id}'));
12339
+ this.setEnpointIfNotExist('FetchDataset', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/fetch'));
12340
+ this.setEnpointIfNotExist('FetchRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/fetch'));
12341
+ this.setEnpointIfNotExist('CreateRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/create'));
12342
+ this.setEnpointIfNotExist('UpdateRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/update'));
12343
+ this.setEnpointIfNotExist('DeleteRecord', Object(public_api["combinePath"])(endpointBase, 'models/{modelId}/sources/{sourceId}/delete'));
12138
12344
  };
12139
12345
  return DataContext;
12140
12346
  }());
12141
12347
 
12142
12348
  //# sourceMappingURL=data_context.js.map
12143
12349
  // EXTERNAL MODULE: ./dist/lib/validators/validator.js
12144
- var validator = __webpack_require__(10);
12350
+ var validator = __webpack_require__(9);
12145
12351
 
12146
12352
  // CONCATENATED MODULE: ./dist/lib/validators/type_validator.js
12147
12353
  var __extends = (undefined && undefined.__extends) || (function () {
@@ -12243,10 +12449,12 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12243
12449
  showBackToEntities: true
12244
12450
  };
12245
12451
  this.defaultValidators = [new required_validator_RequiredValidator(), new type_validator_TypeValidator()];
12246
- options = options || {};
12247
12452
  this.options = public_api["utils"].assignDeep(this.options, options || {});
12248
12453
  this.dlg = new lib_public_api["DefaultDialogService"]();
12249
12454
  var ent = this.context.getActiveEntity();
12455
+ if (!ent) {
12456
+ throw "Can't find active entity for " + window.location.pathname;
12457
+ }
12250
12458
  this.slot.innerHTML += "<h1>" + (ent.captionPlural || ent.caption) + "</h1>";
12251
12459
  if (this.options.showBackToEntities) {
12252
12460
  Object(lib_public_api["domel"])(this.slot)
@@ -12270,7 +12478,7 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12270
12478
  };
12271
12479
  EntityDataView.prototype.renderGrid = function () {
12272
12480
  var _this = this;
12273
- this.context.getEntities()
12481
+ this.context.fetchDataset()
12274
12482
  .then(function (result) {
12275
12483
  var gridSlot = document.createElement('div');
12276
12484
  _this.slot.appendChild(gridSlot);
@@ -12283,10 +12491,10 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12283
12491
  allowPageSizeChange: true,
12284
12492
  pageSizeItems: [15, 30, 50, 100, 200]
12285
12493
  },
12286
- addColumns: true,
12287
- addColumnsTitle: public_api["i18n"].getText('AddBtnTitle'),
12494
+ showPlusButton: _this.context.getActiveEntity().isEditable,
12495
+ plusButtonTitle: public_api["i18n"].getText('AddRecordBtnTitle'),
12288
12496
  showActiveRow: false,
12289
- onAddColumnClick: _this.addClickHandler.bind(_this),
12497
+ onPlusButtonClick: _this.addClickHandler.bind(_this),
12290
12498
  onGetCellRenderer: _this.manageCellRenderer.bind(_this),
12291
12499
  onRowDbClick: _this.rowDbClickHandler.bind(_this),
12292
12500
  onSyncGridColumn: _this.syncGridColumnHandler.bind(_this)
@@ -12341,7 +12549,7 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12341
12549
  if (!form.validate())
12342
12550
  return false;
12343
12551
  form.getData()
12344
- .then(function (obj) { return _this.context.createEntity(obj); })
12552
+ .then(function (obj) { return _this.context.createRecord(obj); })
12345
12553
  .then(function () {
12346
12554
  return _this.refreshData();
12347
12555
  })
@@ -12372,12 +12580,10 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12372
12580
  .replace('{entity}', activeEntity.caption),
12373
12581
  body: form.getHtml(),
12374
12582
  onSubmit: function () {
12375
- var keyAttrs = activeEntity.attributes.filter(function (attr) { return attr.isPrimaryKey; });
12376
- var keys = keyAttrs.map(function (attr) { return row.getValue(attr.id); });
12377
12583
  if (!form.validate())
12378
12584
  return false;
12379
12585
  form.getData()
12380
- .then(function (obj) { return _this.context.updateEntity(keys.join(':'), obj); })
12586
+ .then(function (obj) { return _this.context.updateRecord(obj); })
12381
12587
  .then(function () {
12382
12588
  return _this.refreshData();
12383
12589
  })
@@ -12398,16 +12604,20 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12398
12604
  .then(function (row) {
12399
12605
  if (row) {
12400
12606
  var activeEntity = _this.context.getActiveEntity();
12401
- var keyAttrs = activeEntity.attributes.filter(function (attr) { return attr.isPrimaryKey; });
12402
- var keys_1 = keyAttrs.map(function (attr) { return row.getValue(attr.id); });
12403
- var entityId = keyAttrs.map(function (attr, index) { return attr.id + ":" + keys_1[index]; }).join(';');
12607
+ var keyAttrs = activeEntity.getPrimaryAttrs();
12608
+ var keyVals_1 = keyAttrs.map(function (attr) { return row.getValue(attr.id); });
12609
+ var keys_1 = keyAttrs.reduce(function (val, attr, index) {
12610
+ var property = attr.id.substring(attr.id.lastIndexOf('.') + 1);
12611
+ val[property] = keyVals_1[index];
12612
+ return val;
12613
+ }, {});
12404
12614
  _this.dlg.openConfirm(public_api["i18n"].getText('DeleteDlgCaption')
12405
12615
  .replace('{entity}', activeEntity.caption), public_api["i18n"].getText('DeleteDlgMessage')
12406
- .replace('{entityId}', entityId))
12616
+ .replace('{recordId}', Object.keys(keys_1)
12617
+ .map(function (key) { return key + ":" + keys_1[key]; }).join(';')))
12407
12618
  .then(function (result) {
12408
12619
  if (result) {
12409
- //pass entityId in future
12410
- _this.context.deleteEntity(keys_1.join(':'))
12620
+ _this.context.deleteRecord(keys_1)
12411
12621
  .then(function () {
12412
12622
  return _this.refreshData();
12413
12623
  })
@@ -12429,7 +12639,7 @@ var entity_data_view_EntityDataView = /** @class */ (function () {
12429
12639
  };
12430
12640
  EntityDataView.prototype.refreshData = function () {
12431
12641
  var _this = this;
12432
- return this.context.getEntities()
12642
+ return this.context.fetchDataset()
12433
12643
  .then(function () {
12434
12644
  _this.grid.refresh();
12435
12645
  });
@@ -12497,50 +12707,62 @@ var root_data_view_RootDataView = /** @class */ (function () {
12497
12707
  var easy_data_view_dispatcher_EasyDataViewDispatcher = /** @class */ (function () {
12498
12708
  function EasyDataViewDispatcher(options) {
12499
12709
  var _this = this;
12500
- this.options = { basePath: 'easydata' };
12710
+ this.options = {
12711
+ container: '#EasyDataContainer',
12712
+ basePath: 'easydata'
12713
+ };
12501
12714
  this.onSetLocation = function () {
12502
12715
  _this.setActiveView();
12503
12716
  };
12504
- options = options || {};
12505
- this.options = public_api["utils"].assign(this.options, options);
12506
- this.options.basePath = (!this.options.rootEntity)
12507
- ? this.pretiffyPath(this.options.basePath)
12508
- : this.pretiffyPath(window.location.pathname);
12509
- if (this.options.rootEntity)
12717
+ this.options = public_api["utils"].assign(this.options, options || {});
12718
+ if (this.options.rootEntity) {
12510
12719
  this.options.showBackToEntities = false;
12511
- this.setContainer(options.container);
12720
+ this.basePath = '/';
12721
+ }
12722
+ else {
12723
+ this.basePath = this.normalizeBasePath(this.options.basePath);
12724
+ }
12725
+ this.setContainer(this.options.container);
12512
12726
  var progressBarSlot = document.createElement('div');
12513
12727
  var bar = new ProgressBar(progressBarSlot);
12514
12728
  var parent = this.container.parentElement;
12515
12729
  parent.insertBefore(progressBarSlot, parent.firstElementChild);
12516
12730
  this.context = new data_context_DataContext({
12517
- endpoint: options.endpoint,
12731
+ endpoint: this.options.endpoint,
12732
+ dataTable: this.options.dataTable,
12518
12733
  onProcessStart: function () { return bar.show(); },
12519
12734
  onProcessEnd: function () { return bar.hide(); }
12520
12735
  });
12521
- this.basePath = this.getBasePath();
12522
12736
  }
12523
- EasyDataViewDispatcher.prototype.pretiffyPath = function (path) {
12737
+ EasyDataViewDispatcher.prototype.normalizeBasePath = function (basePath) {
12738
+ basePath = this.trimSlashes(basePath);
12739
+ var fullPath = decodeURIComponent(window.location.pathname);
12740
+ var idx = fullPath.toLocaleLowerCase().indexOf(basePath);
12741
+ return idx >= 0 ? fullPath.substring(0, idx + basePath.length) : '/';
12742
+ };
12743
+ EasyDataViewDispatcher.prototype.trimSlashes = function (path) {
12524
12744
  return path.replace(/^\/|\/$/g, '');
12525
12745
  };
12526
12746
  EasyDataViewDispatcher.prototype.setContainer = function (container) {
12527
12747
  if (!container) {
12528
- this.container = document.getElementById('EasyDataContainer');
12529
- return;
12748
+ throw 'Container is undefined';
12530
12749
  }
12531
12750
  if (typeof container === 'string') {
12532
12751
  if (container.length) {
12533
- if (container[0] === '#') {
12534
- this.container = document.getElementById(container.substring(1));
12535
- }
12536
- else if (container[0] === '.') {
12752
+ if (container[0] === '.') {
12537
12753
  var result = document.getElementsByClassName(container.substring(1));
12538
12754
  if (result.length)
12539
12755
  this.container = result[0];
12540
12756
  }
12541
12757
  else {
12542
- throw Error('Unrecognized container parameter ' +
12543
- '(Must be an element ID, a class name or HTMLElement object itself): ' + container);
12758
+ if (container[0] === '#') {
12759
+ container = container.substring(1);
12760
+ }
12761
+ this.container = document.getElementById(container);
12762
+ }
12763
+ if (!this.container) {
12764
+ throw Error('Unrecognized `container` parameter: ' + container + '\n'
12765
+ + 'It must be an element ID, a class name (starting with .) or an HTMLElement object itself.');
12544
12766
  }
12545
12767
  }
12546
12768
  }
@@ -12548,20 +12770,12 @@ var easy_data_view_dispatcher_EasyDataViewDispatcher = /** @class */ (function (
12548
12770
  this.container = container;
12549
12771
  }
12550
12772
  };
12551
- EasyDataViewDispatcher.prototype.getActiveEntityId = function () {
12773
+ EasyDataViewDispatcher.prototype.getActiveSourceId = function () {
12552
12774
  if (this.options.rootEntity)
12553
12775
  return this.options.rootEntity;
12554
- var decodedUrl = decodeURIComponent(window.location.href);
12555
- var splitIndex = decodedUrl.lastIndexOf('/');
12556
- var typeName = decodedUrl.substring(splitIndex + 1);
12557
- return typeName && typeName.toLocaleLowerCase() !== this.options.basePath
12558
- ? typeName
12559
- : null;
12560
- };
12561
- EasyDataViewDispatcher.prototype.getBasePath = function () {
12562
- var decodedUrl = decodeURIComponent(window.location.href);
12563
- var optBasePathIndex = decodedUrl.toLocaleLowerCase().indexOf(this.options.basePath);
12564
- return decodedUrl.substring(0, optBasePathIndex + this.options.basePath.length);
12776
+ var path = decodeURIComponent(window.location.pathname);
12777
+ var idIndex = this.basePath.length + 1;
12778
+ return idIndex < path.length ? path.substring(idIndex) : null;
12565
12779
  };
12566
12780
  EasyDataViewDispatcher.prototype.run = function () {
12567
12781
  var _this = this;
@@ -12574,9 +12788,9 @@ var easy_data_view_dispatcher_EasyDataViewDispatcher = /** @class */ (function (
12574
12788
  };
12575
12789
  EasyDataViewDispatcher.prototype.setActiveView = function () {
12576
12790
  this.clear();
12577
- var activeEntityId = this.getActiveEntityId();
12578
- if (activeEntityId) {
12579
- this.context.setActiveEntity(activeEntityId);
12791
+ var sourceId = this.getActiveSourceId();
12792
+ if (sourceId) {
12793
+ this.context.setActiveSource(sourceId);
12580
12794
  window['EDView'] = new entity_data_view_EntityDataView(this.container, this.context, this.basePath, this.options);
12581
12795
  }
12582
12796
  else {
@@ -12609,13 +12823,14 @@ function addEasyDataCRUDTexts() {
12609
12823
  CalendarBtnTitle: 'Open calendar',
12610
12824
  TimerBtnTitle: 'Open timer',
12611
12825
  AddBtnTitle: 'Add',
12826
+ AddRecordBtnTitle: 'Add record',
12612
12827
  EditBtn: 'Edit',
12613
12828
  DeleteBtn: 'Delete',
12614
12829
  SelectLink: '[ select ]',
12615
12830
  AddDlgCaption: 'Create {entity}',
12616
12831
  EditDlgCaption: 'Edit {entity}',
12617
12832
  DeleteDlgCaption: 'Delete {entity}',
12618
- DeleteDlgMessage: 'Are you shure about removing this entity: [{entityId}]?',
12833
+ DeleteDlgMessage: 'Are you sure you want to remove this record: {{recordId}}?',
12619
12834
  EntityMenuDesc: 'Click on an entity to view/edit its content',
12620
12835
  BackToEntities: 'Back to entities',
12621
12836
  SearchBtn: 'Search',