@easyquery/enterprise 7.1.3-beta02 → 7.2.0-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.
@@ -180,8 +180,17 @@ var browserUtils;
180
180
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
181
181
 
182
182
  "use strict";
183
+ // ESM COMPAT FLAG
183
184
  __webpack_require__.r(__webpack_exports__);
184
185
 
186
+ // EXPORTS
187
+ __webpack_require__.d(__webpack_exports__, "EqServerAggregatesCalculator", function() { return /* reexport */ eqs_aggr_calculator_EqServerAggregatesCalculator; });
188
+ __webpack_require__.d(__webpack_exports__, "QueryEx", function() { return /* reexport */ query_ex_QueryEx; });
189
+ __webpack_require__.d(__webpack_exports__, "QueryColumnEx", function() { return /* reexport */ query_column_ex_QueryColumnEx; });
190
+ __webpack_require__.d(__webpack_exports__, "ConditionEx", function() { return /* reexport */ condition_ex_ConditionEx; });
191
+ __webpack_require__.d(__webpack_exports__, "DataModelEx", function() { return /* reexport */ model_ex_DataModelEx; });
192
+ __webpack_require__.d(__webpack_exports__, "EqServerQueryStorage", function() { return /* reexport */ EqServerQueryStorage; });
193
+
185
194
  // EXTERNAL MODULE: external "easyqueryCore"
186
195
  var external_easyqueryCore_ = __webpack_require__(0);
187
196
 
@@ -835,7 +844,7 @@ var i18n_i18n;
835
844
  var utils_utils;
836
845
  (function (utils) {
837
846
  function getAllDataTypes() {
838
- return Object.values(DataType);
847
+ return Object.values(DataType).filter(function (item) { return typeof item === "number"; });
839
848
  }
840
849
  utils.getAllDataTypes = getAllDataTypes;
841
850
  function getDateDataTypes() {
@@ -843,12 +852,16 @@ var utils_utils;
843
852
  }
844
853
  utils.getDateDataTypes = getDateDataTypes;
845
854
  function getStringDataTypes() {
846
- return [DataType.String, DataType.Memo];
855
+ return [DataType.String, DataType.Memo, DataType.FixedChar];
847
856
  }
848
857
  utils.getStringDataTypes = getStringDataTypes;
849
858
  var _numericTypes = [DataType.Byte, DataType.Word, DataType.Int32,
850
- DataType.Int64, DataType.Float, DataType.Currency];
851
- var _intTypes = [DataType.Byte, DataType.Word, DataType.Int32, DataType.Int64];
859
+ DataType.Int64, DataType.Float, DataType.Currency, DataType.Autoinc];
860
+ function getNumericDataTypes() {
861
+ return _numericTypes;
862
+ }
863
+ utils.getNumericDataTypes = getNumericDataTypes;
864
+ var _intTypes = [DataType.Byte, DataType.Word, DataType.Int32, DataType.Int64, DataType.Autoinc];
852
865
  //-------------- object functions -------------------
853
866
  /**
854
867
  * Copy the content of all objests passed in `args` parameters into `target`
@@ -913,7 +926,7 @@ var utils_utils;
913
926
  hashSet.set(sourceVal, target[key]);
914
927
  }
915
928
  else {
916
- if (typeof target[key] == 'undefined') {
929
+ if (typeof target[key] == 'undefined' || target[key] == null) {
917
930
  target[key] = Object.create(Object.getPrototypeOf(sourceVal));
918
931
  }
919
932
  hashSet.set(sourceVal, target[key]);
@@ -1442,7 +1455,7 @@ var http_client_HttpClient = /** @class */ (function () {
1442
1455
  var desc = {
1443
1456
  method: method,
1444
1457
  url: url,
1445
- headers: __assign({}, this.defaultHeaders, options.headers || {}),
1458
+ headers: __assign(__assign({}, this.defaultHeaders), options.headers || {}),
1446
1459
  queryParams: options.queryParams || {},
1447
1460
  data: data
1448
1461
  };
@@ -1588,6 +1601,12 @@ var MetaEntity = /** @class */ (function () {
1588
1601
  };
1589
1602
  internalProcessEntity(this);
1590
1603
  };
1604
+ MetaEntity.prototype.getFirstPrimaryAttr = function () {
1605
+ return this.getPrimaryAttrs()[0];
1606
+ };
1607
+ MetaEntity.prototype.getPrimaryAttrs = function () {
1608
+ return this.attributes.filter(function (attr) { return attr.isPrimaryKey; });
1609
+ };
1591
1610
  return MetaEntity;
1592
1611
  }());
1593
1612
 
@@ -2206,9 +2225,9 @@ var meta_data_MetaData = /** @class */ (function () {
2206
2225
  }());
2207
2226
 
2208
2227
  //# sourceMappingURL=meta_data.js.map
2209
- // CONCATENATED MODULE: c:/azuredevops-agents/korzhdev/_work/1/s/easydata/easydata.js/packs/core/dist/lib/data/aggr_calculator.js
2210
- var aggr_calculator_assign = (undefined && undefined.__assign) || function () {
2211
- aggr_calculator_assign = Object.assign || function(t) {
2228
+ // CONCATENATED MODULE: c:/azuredevops-agents/korzhdev/_work/1/s/easydata/easydata.js/packs/core/dist/lib/data/aggr_settings.js
2229
+ var aggr_settings_assign = (undefined && undefined.__assign) || function () {
2230
+ aggr_settings_assign = Object.assign || function(t) {
2212
2231
  for (var s, i = 1, n = arguments.length; i < n; i++) {
2213
2232
  s = arguments[i];
2214
2233
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -2216,7 +2235,7 @@ var aggr_calculator_assign = (undefined && undefined.__assign) || function () {
2216
2235
  }
2217
2236
  return t;
2218
2237
  };
2219
- return aggr_calculator_assign.apply(this, arguments);
2238
+ return aggr_settings_assign.apply(this, arguments);
2220
2239
  };
2221
2240
  /**
2222
2241
  * Defines aggregations settings for the current context.
@@ -2229,16 +2248,32 @@ var AggregationSettings = /** @class */ (function () {
2229
2248
  this.groups = [];
2230
2249
  this.useGrandTotals = false;
2231
2250
  this.useRecordCount = false;
2232
- this.caseSensitiveGroups = false;
2251
+ this._caseSensitiveGroups = false;
2233
2252
  this.COUNT_FIELD_NAME = 'GRPRECCNT';
2234
2253
  }
2254
+ Object.defineProperty(AggregationSettings.prototype, "caseSensitiveGroups", {
2255
+ get: function () {
2256
+ return this._caseSensitiveGroups;
2257
+ },
2258
+ set: function (value) {
2259
+ this._caseSensitiveGroups = value;
2260
+ this.updateCompareProc();
2261
+ },
2262
+ enumerable: true,
2263
+ configurable: true
2264
+ });
2265
+ AggregationSettings.prototype.updateCompareProc = function () {
2266
+ this.compareValues = this._caseSensitiveGroups
2267
+ ? this.strictCompare
2268
+ : this.caseInsensitiveCompare;
2269
+ };
2235
2270
  AggregationSettings.prototype.addGroup = function (settings) {
2236
2271
  var cols = settings.columns || this.colStore.getColumnIds(settings.from, settings.to);
2237
2272
  if (!this.colStore.validateColumns(cols))
2238
2273
  throw "Invalid columns: " + cols;
2239
2274
  if (this.hasColumnsInUse(cols))
2240
2275
  throw "Can't add same columns to different groups/aggregates";
2241
- this.groups.push(aggr_calculator_assign({ columns: cols, aggregates: null }, settings));
2276
+ this.groups.push(aggr_settings_assign({ columns: cols }, settings));
2242
2277
  return this;
2243
2278
  };
2244
2279
  AggregationSettings.prototype.addAggregateColumn = function (colIndexOrId, funcId) {
@@ -2263,7 +2298,7 @@ var AggregationSettings = /** @class */ (function () {
2263
2298
  var cols = [];
2264
2299
  var mappedGrops = this.groups.map(function (grp) {
2265
2300
  cols = cols.concat(grp.columns);
2266
- return aggr_calculator_assign({}, grp, { columns: Array.from(cols), aggregates: Array.from(_this.aggregates) });
2301
+ return aggr_settings_assign(aggr_settings_assign({}, grp), { columns: Array.from(cols), aggregates: Array.from(_this.aggregates) });
2267
2302
  });
2268
2303
  return mappedGrops;
2269
2304
  };
@@ -2355,10 +2390,35 @@ var AggregationSettings = /** @class */ (function () {
2355
2390
  }
2356
2391
  }
2357
2392
  };
2393
+ AggregationSettings.prototype.buildGroupKey = function (group, row) {
2394
+ var caseInsensitive = !this.caseSensitiveGroups;
2395
+ var result = {};
2396
+ if (group) {
2397
+ for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
2398
+ var colId = _a[_i];
2399
+ var keyVal = row.getValue(colId);
2400
+ if (caseInsensitive && typeof (keyVal) === 'string') {
2401
+ keyVal = keyVal.toLowerCase();
2402
+ }
2403
+ result[colId] = keyVal;
2404
+ }
2405
+ }
2406
+ return result;
2407
+ };
2408
+ //returns true if value1 == value2
2409
+ AggregationSettings.prototype.strictCompare = function (value1, value2) {
2410
+ return value1 === value2;
2411
+ };
2412
+ //makes a case insensative comparision of two values and return true if there are equal
2413
+ AggregationSettings.prototype.caseInsensitiveCompare = function (value1, value2) {
2414
+ var val1 = (typeof value1 === 'string') ? value1.toLowerCase() : value1;
2415
+ var val2 = (typeof value2 === 'string') ? value2.toLowerCase() : value2;
2416
+ return val1 === val2;
2417
+ };
2358
2418
  return AggregationSettings;
2359
2419
  }());
2360
2420
 
2361
- //# sourceMappingURL=aggr_calculator.js.map
2421
+ //# sourceMappingURL=aggr_settings.js.map
2362
2422
  // CONCATENATED MODULE: c:/azuredevops-agents/korzhdev/_work/1/s/easydata/easydata.js/packs/core/dist/lib/data/data_column.js
2363
2423
 
2364
2424
 
@@ -2386,6 +2446,7 @@ var data_column_DataColumn = /** @class */ (function () {
2386
2446
  this.groupFooterColumnTemplate = desc.gfct;
2387
2447
  this.style = desc.style || {};
2388
2448
  this.description = desc.description;
2449
+ this.calculatedWidth = 0;
2389
2450
  }
2390
2451
  return DataColumn;
2391
2452
  }());
@@ -2425,9 +2486,10 @@ var data_column_DataColumnList = /** @class */ (function () {
2425
2486
  .map(function (col, index) { return index; });
2426
2487
  };
2427
2488
  DataColumnList.prototype.put = function (index, col) {
2428
- //!!!!!!!!!check on "out of index"
2429
- this.items[index] = col;
2430
- this.updateDateColumnIdx();
2489
+ if (index >= 0 && index < this.count) {
2490
+ this.items[index] = col;
2491
+ this.updateDateColumnIdx();
2492
+ }
2431
2493
  };
2432
2494
  DataColumnList.prototype.move = function (col, newIndex) {
2433
2495
  var oldIndex = this.items.indexOf(col);
@@ -2437,8 +2499,12 @@ var data_column_DataColumnList = /** @class */ (function () {
2437
2499
  }
2438
2500
  };
2439
2501
  DataColumnList.prototype.get = function (index) {
2440
- //!!!!!!!!!check on "out of index"
2441
- return this.items[index];
2502
+ if (index >= 0 && index < this.count) {
2503
+ return this.items[index];
2504
+ }
2505
+ else {
2506
+ return null;
2507
+ }
2442
2508
  };
2443
2509
  DataColumnList.prototype.getIndex = function (id) {
2444
2510
  return this.mapper[id];
@@ -2522,16 +2588,23 @@ var easy_data_table_EasyDataTable = /** @class */ (function () {
2522
2588
  function EasyDataTable(options) {
2523
2589
  this._chunkSize = 1000;
2524
2590
  this._elasticChunks = false;
2525
- // object keeps number keys sorted
2526
- this.chunkMap = {};
2591
+ this.cachedRows = [];
2527
2592
  this.total = 0;
2528
2593
  this.loader = null;
2529
2594
  this.needTotal = true;
2595
+ this.isInMemory = false;
2530
2596
  options = options || {};
2531
2597
  this._chunkSize = options.chunkSize || this._chunkSize;
2532
2598
  this._elasticChunks = options.elasticChunks || this._elasticChunks;
2533
2599
  this.loader = options.loader;
2600
+ if (typeof options.inMemory !== 'undefined') {
2601
+ this.isInMemory = options.inMemory;
2602
+ }
2603
+ if (this.isInMemory) {
2604
+ this.needTotal = false;
2605
+ }
2534
2606
  this._columns = new data_column_DataColumnList();
2607
+ this.onUpdate = options.onUpdate;
2535
2608
  if (options.columns) {
2536
2609
  for (var _i = 0, _a = options.columns; _i < _a.length; _i++) {
2537
2610
  var colDesc = _a[_i];
@@ -2562,7 +2635,7 @@ var easy_data_table_EasyDataTable = /** @class */ (function () {
2562
2635
  this._chunkSize = value;
2563
2636
  this.total = 0;
2564
2637
  this.needTotal = !this.elasticChunks;
2565
- this.chunkMap = {};
2638
+ this.cachedRows = [];
2566
2639
  },
2567
2640
  enumerable: true,
2568
2641
  configurable: true
@@ -2575,7 +2648,7 @@ var easy_data_table_EasyDataTable = /** @class */ (function () {
2575
2648
  this._elasticChunks = value;
2576
2649
  this.total = 0;
2577
2650
  this.needTotal = !this.elasticChunks;
2578
- this.chunkMap = {};
2651
+ this.cachedRows = [];
2579
2652
  },
2580
2653
  enumerable: true,
2581
2654
  configurable: true
@@ -2603,22 +2676,12 @@ var easy_data_table_EasyDataTable = /** @class */ (function () {
2603
2676
  endIndex = this.total;
2604
2677
  }
2605
2678
  }
2606
- var lbChunk = Math.trunc(fromIndex / this._chunkSize);
2607
- var ubChunk = Math.trunc((endIndex - 1) / this._chunkSize);
2608
- var allChunksCached = true;
2609
- for (var i = lbChunk; i <= ubChunk; i++) {
2610
- if (!this.chunkMap[i]) {
2611
- allChunksCached = false;
2612
- break;
2613
- }
2679
+ if (this.isInMemory && endIndex > this.cachedRows.length) {
2680
+ endIndex = this.cachedRows.length;
2614
2681
  }
2682
+ var allChunksCached = endIndex <= this.cachedRows.length;
2615
2683
  if (allChunksCached) {
2616
- var resultArr = [];
2617
- for (var i = lbChunk; i <= ubChunk; i++) {
2618
- resultArr = resultArr.concat(this.chunkMap[i].rows);
2619
- }
2620
- var firstChunkOffset = this.chunkMap[lbChunk].offset;
2621
- return Promise.resolve(resultArr.slice(fromIndex - firstChunkOffset, endIndex - firstChunkOffset));
2684
+ return Promise.resolve(this.cachedRows.slice(fromIndex, endIndex));
2622
2685
  }
2623
2686
  //if loader is not defined
2624
2687
  if (!this.loader) {
@@ -2629,53 +2692,34 @@ var easy_data_table_EasyDataTable = /** @class */ (function () {
2629
2692
  if (this.needTotal) {
2630
2693
  this.needTotal = false;
2631
2694
  }
2632
- var limit = this._chunkSize * (ubChunk - lbChunk + 1);
2633
- if (this.elasticChunks)
2634
- limit++;
2635
- return this.loader.loadChunk({
2636
- offset: lbChunk * this._chunkSize,
2695
+ var offset = this.cachedRows.length;
2696
+ var limit = endIndex - offset;
2697
+ if (limit < this._chunkSize) {
2698
+ limit = this._chunkSize;
2699
+ }
2700
+ var resultPromise = this.loader.loadChunk({
2701
+ offset: offset,
2637
2702
  limit: limit,
2638
2703
  needTotal: needTotal
2639
2704
  })
2640
2705
  .then(function (result) {
2641
- var chunks = result.table.getCachedChunks();
2642
2706
  if (needTotal) {
2643
2707
  _this.total = result.total;
2644
- if (endIndex > _this.total) {
2645
- endIndex = _this.total;
2646
- }
2647
2708
  }
2648
- var index = lbChunk;
2649
- for (var _i = 0, chunks_1 = chunks; _i < chunks_1.length; _i++) {
2650
- var chunk = chunks_1[_i];
2651
- _this.chunkMap[index] = {
2652
- offset: index * _this._chunkSize,
2653
- rows: chunk.rows
2654
- };
2655
- index++;
2709
+ Array.prototype.push.apply(_this.cachedRows, result.table.getCachedRows());
2710
+ if (endIndex > _this.cachedRows.length) {
2711
+ endIndex = _this.cachedRows.length;
2656
2712
  }
2657
2713
  if (_this.elasticChunks) {
2658
2714
  var count_1 = result.table.getCachedCount();
2659
- if (count_1 > 0) {
2660
- var chunk = _this.chunkMap[index - 1];
2661
- if (count_1 === limit) {
2662
- chunk.rows.splice(chunk.rows.length - 1, 1);
2663
- if (chunk.rows.length == 0) {
2664
- delete _this.chunkMap[index - 1];
2665
- }
2666
- }
2667
- if (count_1 < limit) {
2668
- _this.total = _this.getCachedCount();
2669
- }
2715
+ if (count_1 < limit) {
2716
+ _this.total = _this.cachedRows.length;
2670
2717
  }
2671
2718
  }
2672
- var resultArr = [];
2673
- for (var i = lbChunk; i <= ubChunk; i++) {
2674
- resultArr = resultArr.concat(_this.chunkMap[i].rows);
2675
- }
2676
- var firstChunkOffset = _this.chunkMap[lbChunk].offset;
2677
- return resultArr.slice(fromIndex - firstChunkOffset, endIndex - firstChunkOffset);
2719
+ _this.fireUpdated();
2720
+ return _this.cachedRows.slice(fromIndex, endIndex);
2678
2721
  });
2722
+ return resultPromise;
2679
2723
  };
2680
2724
  EasyDataTable.prototype.getRow = function (index) {
2681
2725
  return this.getRows({ offset: index, limit: 1 })
@@ -2687,14 +2731,13 @@ var easy_data_table_EasyDataTable = /** @class */ (function () {
2687
2731
  EasyDataTable.prototype.setTotal = function (total) {
2688
2732
  this.total = total;
2689
2733
  this.needTotal = false;
2690
- this.chunkMap = {};
2691
2734
  };
2692
2735
  EasyDataTable.prototype.getCachedCount = function () {
2693
- return this.getCachedRows().length;
2736
+ return this.cachedRows.length;
2694
2737
  };
2695
2738
  EasyDataTable.prototype.clear = function () {
2696
2739
  this.columns.clear();
2697
- this.chunkMap = {};
2740
+ this.cachedRows = [];
2698
2741
  this.total = 0;
2699
2742
  this.needTotal = !this._elasticChunks;
2700
2743
  };
@@ -2727,60 +2770,33 @@ var easy_data_table_EasyDataTable = /** @class */ (function () {
2727
2770
  }
2728
2771
  return null;
2729
2772
  };
2730
- EasyDataTable.prototype.addRow = function (rowOrValue) {
2773
+ EasyDataTable.prototype.addRow = function (rowOrValues) {
2731
2774
  var newRow;
2732
- if (Array.isArray(rowOrValue)) {
2775
+ if (Array.isArray(rowOrValues)) {
2776
+ var values = rowOrValues;
2733
2777
  var dateIdx = this._columns.getDateColumnIndexes();
2734
2778
  if (dateIdx.length > 0) {
2735
2779
  for (var _i = 0, dateIdx_1 = dateIdx; _i < dateIdx_1.length; _i++) {
2736
2780
  var idx = dateIdx_1[_i];
2737
- if (rowOrValue[idx]) {
2738
- rowOrValue[idx] = this.mapDate(rowOrValue[idx], this._columns.get(idx).type);
2781
+ if (values[idx]) {
2782
+ values[idx] = this.mapDate(values[idx], this._columns.get(idx).type);
2739
2783
  }
2740
2784
  }
2741
2785
  }
2742
- newRow = new DataRow(this._columns, rowOrValue);
2786
+ newRow = new DataRow(this._columns, values);
2743
2787
  }
2744
2788
  else {
2745
- newRow = this.createRow(rowOrValue);
2746
- }
2747
- var lastChunk = this.getLastChunk();
2748
- if (!lastChunk || lastChunk.rows.length >= this._chunkSize) {
2749
- lastChunk = this.createChunk();
2789
+ newRow = this.createRow(rowOrValues);
2750
2790
  }
2751
- lastChunk.rows.push(newRow);
2791
+ this.cachedRows.push(newRow);
2752
2792
  var cachedTotal = this.getCachedCount();
2753
2793
  if (cachedTotal > this.total) {
2754
2794
  this.total = cachedTotal;
2755
2795
  }
2756
2796
  return newRow;
2757
2797
  };
2758
- EasyDataTable.prototype.createChunk = function (index) {
2759
- if (typeof index == 'undefined') {
2760
- index = this.getLastChunkIndex() + 1;
2761
- }
2762
- var chunk = { offset: index * this._chunkSize, rows: [] };
2763
- this.chunkMap[index] = chunk;
2764
- return chunk;
2765
- };
2766
- EasyDataTable.prototype.getLastChunkIndex = function () {
2767
- var keys = Object.keys(this.chunkMap);
2768
- return keys.length > 0
2769
- ? parseInt(keys[keys.length - 1])
2770
- : -1;
2771
- };
2772
- EasyDataTable.prototype.getLastChunk = function () {
2773
- var index = this.getLastChunkIndex();
2774
- return index > -1
2775
- ? this.chunkMap[index]
2776
- : null;
2777
- };
2778
2798
  EasyDataTable.prototype.getCachedRows = function () {
2779
- return this.getCachedChunks()
2780
- .reduce(function (acc, v) { return acc.concat(v.rows); }, []);
2781
- };
2782
- EasyDataTable.prototype.getCachedChunks = function () {
2783
- return Object.values(this.chunkMap);
2799
+ return this.cachedRows;
2784
2800
  };
2785
2801
  EasyDataTable.prototype.totalIsKnown = function () {
2786
2802
  if (this.elasticChunks) {
@@ -2789,6 +2805,11 @@ var easy_data_table_EasyDataTable = /** @class */ (function () {
2789
2805
  }
2790
2806
  return !this.needTotal;
2791
2807
  };
2808
+ EasyDataTable.prototype.fireUpdated = function () {
2809
+ if (this.onUpdate) {
2810
+ this.onUpdate(this);
2811
+ }
2812
+ };
2792
2813
  return EasyDataTable;
2793
2814
  }());
2794
2815
 
@@ -2973,7 +2994,6 @@ i18n_i18n.resetLocales();
2973
2994
 
2974
2995
 
2975
2996
 
2976
- //data
2977
2997
 
2978
2998
 
2979
2999
 
@@ -3347,6 +3367,13 @@ var dom_elem_builder_extends = (undefined && undefined.__extends) || (function (
3347
3367
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
3348
3368
  };
3349
3369
  })();
3370
+ var __spreadArrays = (undefined && undefined.__spreadArrays) || function () {
3371
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
3372
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
3373
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
3374
+ r[k] = a[j];
3375
+ return r;
3376
+ };
3350
3377
 
3351
3378
  var DomElementBuilder = /** @class */ (function () {
3352
3379
  function DomElementBuilder(tag, parent) {
@@ -3417,7 +3444,7 @@ var DomElementBuilder = /** @class */ (function () {
3417
3444
  classNames[_i - 1] = arguments[_i];
3418
3445
  }
3419
3446
  if (className) {
3420
- var fullList = className.trim().split(" ").concat(classNames);
3447
+ var fullList = __spreadArrays(className.trim().split(" "), classNames);
3421
3448
  for (var i = 0; i < fullList.length; i++)
3422
3449
  this.element.classList.add(fullList[i]);
3423
3450
  }
@@ -3429,7 +3456,7 @@ var DomElementBuilder = /** @class */ (function () {
3429
3456
  classNames[_i - 1] = arguments[_i];
3430
3457
  }
3431
3458
  if (className) {
3432
- var fullList = className.trim().split(" ").concat(classNames);
3459
+ var fullList = __spreadArrays(className.trim().split(" "), classNames);
3433
3460
  for (var i = 0; i < fullList.length; i++)
3434
3461
  this.element.classList.remove(fullList[i]);
3435
3462
  }
@@ -3996,6 +4023,14 @@ var drag_manager_DragManager = /** @class */ (function () {
3996
4023
  //global variable
3997
4024
  var eqDragManager = new drag_manager_DragManager();
3998
4025
  //# sourceMappingURL=drag_manager.js.map
4026
+ // CONCATENATED MODULE: c:/azuredevops-agents/korzhdev/_work/1/s/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_options.js
4027
+ var AutoResizeColumns;
4028
+ (function (AutoResizeColumns) {
4029
+ AutoResizeColumns[AutoResizeColumns["Always"] = 0] = "Always";
4030
+ AutoResizeColumns[AutoResizeColumns["Once"] = 1] = "Once";
4031
+ AutoResizeColumns[AutoResizeColumns["Never"] = 2] = "Never";
4032
+ })(AutoResizeColumns || (AutoResizeColumns = {}));
4033
+ //# sourceMappingURL=easy_grid_options.js.map
3999
4034
  // CONCATENATED MODULE: c:/azuredevops-agents/korzhdev/_work/1/s/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_cell_renderer.js
4000
4035
 
4001
4036
 
@@ -4147,13 +4182,7 @@ var easy_grid_cell_renderer_GridCellRendererStore = /** @class */ (function () {
4147
4182
  // CONCATENATED MODULE: c:/azuredevops-agents/korzhdev/_work/1/s/easydata/easydata.js/packs/ui/dist/lib/grid/easy_grid_columns.js
4148
4183
 
4149
4184
 
4150
- var DEFAULT_WIDTH = 150;
4151
- var DEFAULT_WIDTH_NUMBER = 120;
4152
- var DEFAULT_WIDTH_DATE = 200;
4153
- var DEFAULT_WIDTH_BOOL = 80;
4154
4185
  var DEFAULT_WIDTH_STRING = 250;
4155
- var MIN_WIDTH_STRING = 100;
4156
- var MAX_WIDTH_STRING = 500;
4157
4186
  var ROW_NUM_WIDTH = 60;
4158
4187
  var GridColumnAlign;
4159
4188
  (function (GridColumnAlign) {
@@ -4185,31 +4214,18 @@ var easy_grid_columns_GridColumn = /** @class */ (function () {
4185
4214
  this.isRowNum = false;
4186
4215
  this.dataColumn = column;
4187
4216
  this.grid = grid;
4217
+ var widthOptions = grid.options.columnWidths || {};
4188
4218
  if (column) {
4189
4219
  if (column.style.alignment) {
4190
4220
  this.align = MapAlignment(column.style.alignment);
4191
4221
  }
4192
- var coltype = column.type;
4193
- var cellType = this.grid.cellRendererStore.getCellType(coltype);
4194
- switch (cellType) {
4195
- case CellRendererType.NUMBER:
4196
- this.width = DEFAULT_WIDTH_NUMBER;
4197
- break;
4198
- case CellRendererType.DATETIME:
4199
- this.width = DEFAULT_WIDTH_DATE;
4200
- break;
4201
- case CellRendererType.BOOL:
4202
- this.width = DEFAULT_WIDTH_BOOL;
4203
- break;
4204
- default:
4205
- this.width = DEFAULT_WIDTH_STRING;
4206
- }
4222
+ this.width = (widthOptions && widthOptions[this.type]) ? widthOptions[this.type].default : DEFAULT_WIDTH_STRING;
4207
4223
  this.cellRenderer = this.grid.cellRendererStore.getDefaultRenderer(column.type);
4208
4224
  this._description = column.description;
4209
4225
  }
4210
4226
  else if (isRowNum) {
4211
4227
  this.isRowNum = true;
4212
- this.width = ROW_NUM_WIDTH;
4228
+ this.width = (widthOptions && widthOptions.rowNumColumn) ? widthOptions.rowNumColumn.default : ROW_NUM_WIDTH;
4213
4229
  this._label = '';
4214
4230
  this.cellRenderer = this.grid.cellRendererStore.getDefaultRendererByType(CellRendererType.NUMBER);
4215
4231
  }
@@ -4255,9 +4271,10 @@ var easy_grid_columns_GridColumnList = /** @class */ (function () {
4255
4271
  GridColumnList.prototype.sync = function (columnList, hasRowNumCol) {
4256
4272
  if (hasRowNumCol === void 0) { hasRowNumCol = true; }
4257
4273
  this.clear();
4258
- if (hasRowNumCol) {
4259
- var rowNumCol = new easy_grid_columns_GridColumn(null, this.grid, true);
4260
- this.add(rowNumCol);
4274
+ var rowNumCol = new easy_grid_columns_GridColumn(null, this.grid, true);
4275
+ this.add(rowNumCol);
4276
+ if (!hasRowNumCol) {
4277
+ rowNumCol.isVisible = false;
4261
4278
  }
4262
4279
  if (columnList) {
4263
4280
  for (var _i = 0, _a = columnList.getItems(); _i < _a.length; _i++) {
@@ -4331,6 +4348,14 @@ var easy_grid_assign = (undefined && undefined.__assign) || function () {
4331
4348
  };
4332
4349
  return easy_grid_assign.apply(this, arguments);
4333
4350
  };
4351
+ var easy_grid_spreadArrays = (undefined && undefined.__spreadArrays) || function () {
4352
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
4353
+ for (var r = Array(s), k = 0, i = 0; i < il; i++)
4354
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
4355
+ r[k] = a[j];
4356
+ return r;
4357
+ };
4358
+
4334
4359
 
4335
4360
 
4336
4361
 
@@ -4363,6 +4388,35 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4363
4388
  pageSize: 30,
4364
4389
  pageSizeItems: [20, 30, 50, 100, 200]
4365
4390
  },
4391
+ columnWidths: {
4392
+ autoResize: AutoResizeColumns.Once,
4393
+ stringColumns: {
4394
+ min: 100,
4395
+ max: 500,
4396
+ default: 250
4397
+ },
4398
+ numberColumns: {
4399
+ min: 60,
4400
+ default: 120
4401
+ },
4402
+ boolColumns: {
4403
+ min: 50,
4404
+ default: 80
4405
+ },
4406
+ dateColumns: {
4407
+ min: 80,
4408
+ default: 200
4409
+ },
4410
+ otherColumns: {
4411
+ min: 100,
4412
+ max: 500,
4413
+ default: 250
4414
+ },
4415
+ rowNumColumn: {
4416
+ min: 40,
4417
+ default: 60
4418
+ }
4419
+ },
4366
4420
  addColumns: false,
4367
4421
  viewportRowsCount: null,
4368
4422
  showActiveRow: true
@@ -4370,7 +4424,6 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4370
4424
  this.rowsOnPagePromise = null;
4371
4425
  this.containerInitialHeight = 0;
4372
4426
  this.firstRender = true;
4373
- this.compareValues = this.strictCompare;
4374
4427
  this.prevRowTotals = null;
4375
4428
  this.landingIndex = -1;
4376
4429
  this.landingSlot = domel('div')
@@ -4382,7 +4435,8 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4382
4435
  if (options && options.paging) {
4383
4436
  options.paging = utils_utils.assign(this.defaultDataGridOptions.paging, options.paging);
4384
4437
  }
4385
- this.options = easy_grid_assign({}, this.defaultDataGridOptions, options);
4438
+ this.options = this.mergeOptions(options);
4439
+ this.processColumnWidthsOptions();
4386
4440
  if (!this.options.slot)
4387
4441
  throw Error('"slot" parameter is required to initialize EasyDataGrid');
4388
4442
  if (!this.options.dataTable)
@@ -4394,6 +4448,42 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4394
4448
  this.setSlot(this.options.slot);
4395
4449
  this.init(this.options);
4396
4450
  }
4451
+ EasyGrid.prototype.mergeOptions = function (options) {
4452
+ var colWidthOptions = utils_utils.assignDeep({}, this.defaultDataGridOptions.columnWidths, options.columnWidths);
4453
+ var pagingOptions = utils_utils.assignDeep({}, this.defaultDataGridOptions.paging, options.paging);
4454
+ var result = utils_utils.assign({}, this.defaultDataGridOptions, options);
4455
+ result.columnWidths = colWidthOptions;
4456
+ result.paging = pagingOptions;
4457
+ return result;
4458
+ };
4459
+ EasyGrid.prototype.processColumnWidthsOptions = function () {
4460
+ var widthOptions = this.options.columnWidths;
4461
+ if (!widthOptions)
4462
+ return;
4463
+ //string columns
4464
+ utils_utils.getStringDataTypes().forEach(function (dataType) {
4465
+ widthOptions[dataType] = easy_grid_assign(easy_grid_assign({}, widthOptions.stringColumns), widthOptions[dataType]);
4466
+ });
4467
+ //numeric columns
4468
+ utils_utils.getNumericDataTypes().forEach(function (dataType) {
4469
+ widthOptions[dataType] = easy_grid_assign(easy_grid_assign({}, widthOptions.numberColumns), widthOptions[dataType]);
4470
+ });
4471
+ //bool columns
4472
+ widthOptions[DataType.Bool] = easy_grid_assign(easy_grid_assign({}, widthOptions.boolColumns), widthOptions[DataType.Bool]);
4473
+ //date columns
4474
+ utils_utils.getDateDataTypes().forEach(function (dataType) {
4475
+ widthOptions[dataType] = easy_grid_assign(easy_grid_assign({}, widthOptions.dateColumns), widthOptions[dataType]);
4476
+ });
4477
+ //other columns
4478
+ var knownTypes = easy_grid_spreadArrays(utils_utils.getStringDataTypes(), utils_utils.getNumericDataTypes(), utils_utils.getDateDataTypes(), [
4479
+ DataType.Bool
4480
+ ]);
4481
+ utils_utils.getAllDataTypes().forEach(function (dataType) {
4482
+ if (!(dataType in knownTypes)) {
4483
+ widthOptions[dataType] = easy_grid_assign(easy_grid_assign({}, widthOptions.otherColumns), widthOptions[dataType]);
4484
+ }
4485
+ });
4486
+ };
4397
4487
  EasyGrid.prototype.setSlot = function (slot) {
4398
4488
  if (typeof slot === 'string') {
4399
4489
  if (slot.length) {
@@ -4530,18 +4620,27 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4530
4620
  gridContainer.classList.add(this.cssPrefix + "-container");
4531
4621
  gridContainer.appendChild(this.rootDiv);
4532
4622
  this.slot.appendChild(gridContainer);
4623
+ var needAutoResize = this.options.columnWidths.autoResize !== AutoResizeColumns.Never;
4533
4624
  if (this.rowsOnPagePromise) {
4534
4625
  this.rowsOnPagePromise
4535
4626
  .then(function () { return _this.updateHeight(); })
4536
4627
  .then(function () {
4537
4628
  _this.firstRender = false;
4538
4629
  _this.rowsOnPagePromise = null;
4630
+ if (needAutoResize) {
4631
+ _this.resizeColumns();
4632
+ }
4539
4633
  });
4540
4634
  }
4541
4635
  else {
4542
4636
  setTimeout(function () {
4543
- _this.updateHeight();
4544
- _this.firstRender = false;
4637
+ _this.updateHeight()
4638
+ .then(function () {
4639
+ _this.firstRender = false;
4640
+ if (needAutoResize) {
4641
+ _this.resizeColumns();
4642
+ }
4643
+ });
4545
4644
  }, 100);
4546
4645
  }
4547
4646
  };
@@ -4620,7 +4719,7 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4620
4719
  var _this = this;
4621
4720
  var colBuilder = domel('div')
4622
4721
  .addClass(this.cssPrefix + "-header-cell")
4623
- .data('col-idx', "" + (index + 1))
4722
+ .data('col-idx', "" + index)
4624
4723
  .setStyle('width', column.width + "px");
4625
4724
  if (column.dataColumn) {
4626
4725
  colBuilder
@@ -4658,14 +4757,6 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4658
4757
  }
4659
4758
  return colDiv;
4660
4759
  };
4661
- EasyGrid.prototype.strictCompare = function (value1, value2) {
4662
- return value1 !== value2;
4663
- };
4664
- EasyGrid.prototype.caseInsensitiveCompare = function (value1, value2) {
4665
- var val1 = (typeof value1 === 'string') ? value1.toLowerCase() : value1;
4666
- var val2 = (typeof value2 === 'string') ? value2.toLowerCase() : value2;
4667
- return val1 !== val2;
4668
- };
4669
4760
  EasyGrid.prototype.renderBody = function () {
4670
4761
  var _this = this;
4671
4762
  this.bodyDiv = domel('div')
@@ -4679,10 +4770,6 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4679
4770
  .addClass(this.cssPrefix + "-cell-container")
4680
4771
  .toDOM();
4681
4772
  var showAggrs = this.canShowAggregates();
4682
- this.compareValues = this.caseInsensitiveCompare;
4683
- if (showAggrs && this.options.aggregates.settings.caseSensitiveGroups) {
4684
- this.compareValues = this.strictCompare;
4685
- }
4686
4773
  if (this.dataTable) {
4687
4774
  this.showProgress();
4688
4775
  this.rowsOnPagePromise = this.getRowsToRender()
@@ -4692,15 +4779,22 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4692
4779
  //prevent double rendering (bad solution, we have to figure out how to avoid this behavior properly)
4693
4780
  _this.bodyCellContainerDiv.innerHTML = '';
4694
4781
  _this.prevRowTotals = null;
4782
+ var rowsToRender = 0;
4695
4783
  if (rows.length) {
4696
4784
  var groups_1 = showAggrs
4697
4785
  ? _this.options.aggregates.settings.getGroups()
4698
4786
  : [];
4787
+ rowsToRender = (rows.length < _this.pagination.pageSize)
4788
+ ? rows.length
4789
+ : _this.pagination.pageSize;
4699
4790
  rows.forEach(function (row, index) {
4700
4791
  if (showAggrs)
4701
4792
  _this.updateTotalsState(groups_1, row);
4702
- var tr = _this.renderRow(row, index);
4703
- _this.bodyCellContainerDiv.appendChild(tr);
4793
+ //we don't actually render the last row
4794
+ if (index < rowsToRender) {
4795
+ var tr = _this.renderRow(row, index);
4796
+ _this.bodyCellContainerDiv.appendChild(tr);
4797
+ }
4704
4798
  });
4705
4799
  var showGrandTotalsOnEachPage = _this.options.aggregates && _this.options.aggregates.showGrandTotalsOnEachPage;
4706
4800
  if (showAggrs && (_this.isLastPage() || showGrandTotalsOnEachPage)) {
@@ -4711,7 +4805,7 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4711
4805
  var containerWidth = _this.getContainerWidth();
4712
4806
  domel(_this.bodyCellContainerDiv)
4713
4807
  .setStyle('width', containerWidth + "px");
4714
- return rows.length;
4808
+ return rowsToRender;
4715
4809
  })
4716
4810
  .catch(function (error) { console.error(error); return 0; });
4717
4811
  }
@@ -4719,7 +4813,7 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4719
4813
  domel(_this.headerViewportDiv)
4720
4814
  .setStyle('margin-left', "-" + _this.bodyViewportDiv.scrollLeft + "px");
4721
4815
  });
4722
- this.bodyViewportDiv.addEventListener('keydown', this.onVieportKeydown.bind(this));
4816
+ this.bodyViewportDiv.addEventListener('keydown', this.onViewportKeydown.bind(this));
4723
4817
  };
4724
4818
  EasyGrid.prototype.isLastPage = function () {
4725
4819
  if (this.dataTable.elasticChunks) {
@@ -4745,7 +4839,7 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4745
4839
  var group = groups[level - 1];
4746
4840
  for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
4747
4841
  var col = _a[_i];
4748
- if (this.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {
4842
+ if (!aggrSettings.compareValues(this.prevRowTotals.getValue(col), newRow.getValue(col))) {
4749
4843
  changeLevel = level;
4750
4844
  break;
4751
4845
  }
@@ -4806,8 +4900,8 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4806
4900
  });
4807
4901
  var aggrContainer = this.options.aggregates.calculator.getAggrContainer();
4808
4902
  var aggrCols = aggrSettings.getAggregates().map(function (c) { return c.colId; });
4809
- var key = this.buildGroupKey(group, row);
4810
- aggrContainer.getAggregates(level, key)
4903
+ var key = aggrSettings.buildGroupKey(group, row);
4904
+ aggrContainer.getAggregateData(level, key)
4811
4905
  .then(function (values) {
4812
4906
  for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {
4813
4907
  var aggrColId = aggrCols_1[_i];
@@ -4848,34 +4942,20 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4848
4942
  }
4849
4943
  }
4850
4944
  if (groupFooterTemplate) {
4851
- var cellDiv_1 = _this.renderCell(column, colIndex, val, rowElement);
4945
+ var cellDiv_1 = _this.renderCell(column, index, val, rowElement);
4852
4946
  var innerCell = cellDiv_1.firstChild;
4853
4947
  val = innerCell.innerHTML;
4854
4948
  val = _this.applyGroupColumnTemplate(groupFooterTemplate, val, values[aggrSettings.COUNT_FIELD_NAME]);
4855
4949
  }
4856
4950
  }
4857
- var cellDiv = _this.renderCell(column, colIndex, val, rowElement);
4951
+ var cellDiv = _this.renderCell(column, index, val, rowElement);
4858
4952
  rowElement.appendChild(cellDiv);
4859
4953
  });
4860
4954
  })
4861
4955
  .catch(function (error) { return console.error(error); });
4862
4956
  return rowElement;
4863
4957
  };
4864
- EasyGrid.prototype.buildGroupKey = function (group, row) {
4865
- var aggrSettings = this.options.aggregates.settings;
4866
- var caseInsensitive = aggrSettings && !aggrSettings.caseSensitiveGroups;
4867
- var result = {};
4868
- for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
4869
- var colId = _a[_i];
4870
- var keyVal = row.getValue(colId);
4871
- if (caseInsensitive && typeof (keyVal) === 'string') {
4872
- keyVal = keyVal.toLowerCase();
4873
- }
4874
- result[colId] = keyVal;
4875
- }
4876
- return result;
4877
- };
4878
- EasyGrid.prototype.onVieportKeydown = function (ev) {
4958
+ EasyGrid.prototype.onViewportKeydown = function (ev) {
4879
4959
  if (this.options.showActiveRow) {
4880
4960
  var rowCount = this.bodyCellContainerDiv.querySelectorAll("." + this.cssPrefix + "-row").length;
4881
4961
  var newValue = void 0;
@@ -4929,13 +5009,17 @@ var easy_grid_EasyGrid = /** @class */ (function () {
4929
5009
  }
4930
5010
  }
4931
5011
  };
5012
+ /** Returns a promise with the list of the rows to render on one page.
5013
+ * The list contains pageSize+1 row to make it possible
5014
+ * to render the totals row (if it appears to be on the edge between pages)
5015
+ */
4932
5016
  EasyGrid.prototype.getRowsToRender = function () {
4933
5017
  if (this.options.paging.enabled === false) {
4934
5018
  return Promise.resolve(this.dataTable.getCachedRows());
4935
5019
  }
4936
5020
  return this.dataTable.getRows({
4937
- page: this.pagination.page,
4938
- pageSize: this.pagination.pageSize
5021
+ offset: (this.pagination.page - 1) * this.pagination.pageSize,
5022
+ limit: this.pagination.pageSize + 1
4939
5023
  })
4940
5024
  .catch(function (error) {
4941
5025
  console.error(error);
@@ -5031,13 +5115,13 @@ var easy_grid_EasyGrid = /** @class */ (function () {
5031
5115
  if (this.options.showActiveRow && index == this.activeRowIndex) {
5032
5116
  rowBuilder.addClass(this.cssPrefix + "-row-active");
5033
5117
  }
5034
- this.columns.getItems().forEach(function (column) {
5118
+ this.columns.getItems().forEach(function (column, index) {
5035
5119
  if (!column.isVisible) {
5036
5120
  return;
5037
5121
  }
5038
5122
  var colindex = column.isRowNum ? -1 : _this.dataTable.columns.getIndex(column.dataColumn.id);
5039
5123
  var val = column.isRowNum ? indexGlobal + 1 : row.getValue(colindex);
5040
- rowElement.appendChild(_this.renderCell(column, colindex, val, rowElement));
5124
+ rowElement.appendChild(_this.renderCell(column, index, val, rowElement));
5041
5125
  });
5042
5126
  return rowElement;
5043
5127
  };
@@ -5309,6 +5393,97 @@ var easy_grid_EasyGrid = /** @class */ (function () {
5309
5393
  EasyGrid.prototype.focus = function () {
5310
5394
  this.bodyViewportDiv.focus();
5311
5395
  };
5396
+ EasyGrid.prototype.resizeColumns = function () {
5397
+ if (this.options.columnWidths.autoResize === AutoResizeColumns.Never)
5398
+ return;
5399
+ var containerWidth = this.bodyCellContainerDiv.style.width;
5400
+ this.bodyCellContainerDiv.style.visibility = 'hidden';
5401
+ this.bodyCellContainerDiv.style.width = '1px';
5402
+ //this.headerRowDiv.style.visibility = 'hidden';
5403
+ this.headerRowDiv.style.width = '1px';
5404
+ var sumWidth = 0;
5405
+ var columns = this.columns.getItems();
5406
+ var headerCells = this.headerCellContainerDiv.querySelectorAll("." + this.cssPrefix + "-header-cell");
5407
+ var headerIdx = 0;
5408
+ var _loop_1 = function (idx) {
5409
+ var column = columns[idx];
5410
+ if (!column.isVisible)
5411
+ return "continue";
5412
+ var calculatedWidth = this_1.options.columnWidths.autoResize !== AutoResizeColumns.Always && column.dataColumn
5413
+ ? column.dataColumn.calculatedWidth
5414
+ : 0;
5415
+ var cellValues = this_1.bodyCellContainerDiv.querySelectorAll("." + this_1.cssPrefix + "-cell[data-col-idx=\"" + idx + "\"] > ." + this_1.cssPrefix + "-cell-value");
5416
+ var maxWidth = 0;
5417
+ if (calculatedWidth > 0) {
5418
+ sumWidth += calculatedWidth;
5419
+ column.width = calculatedWidth;
5420
+ cellValues.forEach(function (value) {
5421
+ value.parentElement.style.width = calculatedWidth + "px";
5422
+ });
5423
+ headerCells[headerIdx].style.width = calculatedWidth + "px";
5424
+ }
5425
+ else {
5426
+ if (cellValues.length == 0) {
5427
+ headerCells[headerIdx].style.width = null;
5428
+ headerCells[headerIdx].style.whiteSpace = 'nowrap';
5429
+ }
5430
+ maxWidth = headerCells[headerIdx].offsetWidth;
5431
+ if (cellValues.length > 0) {
5432
+ cellValues.forEach(function (value) {
5433
+ value.parentElement.style.width = null;
5434
+ var width = value.parentElement.offsetWidth;
5435
+ if (width > maxWidth) {
5436
+ maxWidth = width;
5437
+ }
5438
+ });
5439
+ maxWidth += 3;
5440
+ var maxOption = column.isRowNum
5441
+ ? this_1.options.columnWidths.rowNumColumn.max || 500
5442
+ : this_1.options.columnWidths[column.dataColumn.type].max || 2000;
5443
+ var minOption = column.isRowNum
5444
+ ? this_1.options.columnWidths.rowNumColumn.min || 0
5445
+ : this_1.options.columnWidths[column.dataColumn.type].min || 20;
5446
+ if (maxWidth > maxOption) {
5447
+ maxWidth = maxOption;
5448
+ }
5449
+ if (maxWidth < minOption) {
5450
+ maxWidth = minOption;
5451
+ }
5452
+ if (utils_utils.isNumericType(column.type)) {
5453
+ //increase the calculated width in 1.3 times for numeric columns
5454
+ maxWidth = Math.round(maxWidth * 1.3);
5455
+ }
5456
+ sumWidth += maxWidth;
5457
+ column.width = maxWidth;
5458
+ cellValues.forEach(function (value) {
5459
+ value.parentElement.style.width = maxWidth + "px";
5460
+ });
5461
+ headerCells[headerIdx].style.width = maxWidth + "px";
5462
+ if (column.dataColumn) {
5463
+ column.dataColumn.calculatedWidth = maxWidth;
5464
+ }
5465
+ }
5466
+ else {
5467
+ sumWidth += maxWidth;
5468
+ }
5469
+ }
5470
+ headerIdx++;
5471
+ };
5472
+ var this_1 = this;
5473
+ for (var idx = 0; idx < this.columns.count; idx++) {
5474
+ _loop_1(idx);
5475
+ }
5476
+ if (sumWidth > 0) {
5477
+ this.bodyCellContainerDiv.style.width = sumWidth + "px";
5478
+ this.headerCellContainerDiv.style.width = sumWidth + "px";
5479
+ }
5480
+ else {
5481
+ this.bodyCellContainerDiv.style.width = containerWidth;
5482
+ this.headerCellContainerDiv.style.width = containerWidth;
5483
+ }
5484
+ this.bodyCellContainerDiv.style.visibility = null;
5485
+ this.headerRowDiv.removeAttribute('style');
5486
+ };
5312
5487
  return EasyGrid;
5313
5488
  }());
5314
5489
 
@@ -6495,6 +6670,7 @@ addEasyDataUITexts();
6495
6670
 
6496
6671
 
6497
6672
 
6673
+
6498
6674
  //datetimepicker
6499
6675
 
6500
6676
 
@@ -7107,167 +7283,168 @@ var model_ex_DataModelEx = /** @class */ (function (_super) {
7107
7283
  }(external_easyqueryCore_["DataModel"]));
7108
7284
 
7109
7285
 
7110
- // CONCATENATED MODULE: ./src/data/eqs_aggr_calculator.ts
7111
- var eqs_aggr_calculator_assign = (undefined && undefined.__assign) || function () {
7112
- eqs_aggr_calculator_assign = Object.assign || function(t) {
7113
- for (var s, i = 1, n = arguments.length; i < n; i++) {
7114
- s = arguments[i];
7115
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7116
- t[p] = s[p];
7117
- }
7118
- return t;
7119
- };
7120
- return eqs_aggr_calculator_assign.apply(this, arguments);
7121
- };
7122
-
7286
+ // CONCATENATED MODULE: ./src/data/data_table_aggr_calculator.ts
7123
7287
 
7124
- var eqs_aggr_calculator_EqAggregatesCalculator = /** @class */ (function () {
7125
- function EqAggregatesCalculator(context) {
7288
+ var data_table_aggr_calculator_DataTableAggregatesCalculator = /** @class */ (function () {
7289
+ function DataTableAggregatesCalculator(context) {
7126
7290
  this.context = context;
7291
+ //stores current totals by level (group) number
7292
+ this.levelsTotals = [];
7293
+ this.prevRow = null;
7127
7294
  this.aggrContainer = new external_easyqueryCore_["EqAggregatesContainer"](context);
7128
7295
  }
7129
- EqAggregatesCalculator.prototype.getAggrContainer = function () {
7296
+ DataTableAggregatesCalculator.prototype.getAggrContainer = function () {
7130
7297
  return this.aggrContainer;
7131
7298
  };
7132
- EqAggregatesCalculator.prototype.calculate = function (options) {
7299
+ DataTableAggregatesCalculator.prototype.initObjects = function () {
7300
+ var _this = this;
7301
+ this.aggrSettings = this.context.getQuery().getAggregationSettings();
7302
+ this.groups = this.aggrSettings.getGroups();
7303
+ this.aggregates = this.aggrSettings.getAggregates();
7304
+ this.aggrColIds = this.aggrSettings.getAggregates().map(function (a) { return a.colId; });
7305
+ this.aggrCols = this.context.resultTable.columns.getItems()
7306
+ .filter(function (col) { return _this.aggrColIds.indexOf(col.id) >= 0; });
7307
+ this.levelsTotals = [];
7308
+ this.prevRow = null;
7309
+ };
7310
+ DataTableAggregatesCalculator.prototype.createColumnAggregatesObject = function () {
7311
+ return {
7312
+ sum: 0,
7313
+ min: Number.MAX_VALUE,
7314
+ max: Number.MIN_VALUE
7315
+ };
7316
+ };
7317
+ DataTableAggregatesCalculator.prototype.calculate = function (options) {
7318
+ this.initObjects();
7133
7319
  this.aggrContainer.clear();
7134
7320
  options = options || {};
7135
7321
  options.maxLevel = options.maxLevel >= 0
7136
7322
  ? options.maxLevel : 0;
7137
- var levelPromises = [];
7138
- var query = this.context.createQuery();
7139
- query.loadFromData(this.context.getQuery().toJSONData());
7140
- var settings = this.context.getQuery().getAggregationSettings();
7141
- var aggregates = settings.getAggregates();
7142
- var aggrColIds = settings.getAggregates().map(function (a) { return a.colId; });
7143
- var aggrCols = query.getColumns()
7144
- .filter(function (col) { return aggrColIds.indexOf(col.id) >= 0; });
7145
- var _loop_1 = function (col) {
7146
- query.changeColumnType(col, external_easyqueryCore_["ExprTag"].AggregateFunction, { funcId: aggregates.filter(function (a) { return a.colId == col.id; })[0].funcId });
7147
- };
7148
- for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {
7149
- var col = aggrCols_1[_i];
7150
- _loop_1(col);
7323
+ var levelNumber = this.groups.length + 1; //number of groups plus grand totals
7324
+ for (var levelIndex = 0; levelIndex < levelNumber; levelIndex++) {
7325
+ var levelTotals = { count: 0, columns: {} };
7326
+ this.resetLevelTotals(levelTotals);
7327
+ this.levelsTotals.push(levelTotals);
7151
7328
  }
7152
- //get all non-aggregate columns
7153
- var queryCols = query.getColumns()
7154
- .filter(function (c) { return c.expr.tag !== external_easyqueryCore_["ExprTag"].AggregateFunction; });
7155
- for (var _a = 0, queryCols_1 = queryCols; _a < queryCols_1.length; _a++) {
7156
- var col = queryCols_1[_a];
7157
- col.setHidden(true);
7329
+ var allRows = this.context.resultTable.getCachedRows();
7330
+ for (var _i = 0, allRows_1 = allRows; _i < allRows_1.length; _i++) {
7331
+ var row = allRows_1[_i];
7332
+ this.processDataRow(row);
7158
7333
  }
7159
- if (settings.hasRecordCount()) {
7160
- var col = query.createColumn();
7161
- col.caption = settings.COUNT_FIELD_NAME;
7162
- col['_id'] = settings.COUNT_FIELD_NAME;
7163
- var sqlText = 'COUNT(*)';
7164
- var customSqlExpr = new external_easyqueryCore_["Expression"](col);
7165
- customSqlExpr.tag = external_easyqueryCore_["ExprTag"].CustomSql;
7166
- customSqlExpr.sql = sqlText;
7167
- customSqlExpr.baseAttrId = null;
7168
- col.expr = customSqlExpr;
7169
- query.getColumns().push(col);
7170
- }
7171
- if (settings.hasGrandTotals()) {
7172
- levelPromises.push(this.processLevel({
7173
- query: query,
7174
- level: 0,
7175
- groupName: 'Grand Totals',
7176
- resultObtainedCallback: options.resultObtained,
7177
- errorOccurredCallback: options.errorOccurred
7178
- }));
7334
+ //flusing the totals for all group levels
7335
+ for (var levelIndex = 1; levelIndex < levelNumber; levelIndex++) {
7336
+ this.flushLevelTotals(levelIndex);
7179
7337
  }
7180
- var groups = settings.getGroups();
7181
- for (var level = 1; level <= groups.length; level++) {
7182
- var group = groups[level - 1];
7183
- for (var _b = 0, queryCols_2 = queryCols; _b < queryCols_2.length; _b++) {
7184
- var col = queryCols_2[_b];
7185
- col.setHidden(group.columns.indexOf(col.id) < 0);
7186
- }
7187
- levelPromises.push(this.processLevel({
7188
- query: query,
7189
- level: level,
7190
- groupName: group.name,
7191
- resultObtainedCallback: options.resultObtained,
7192
- errorOccurredCallback: options.errorOccurred
7193
- }));
7338
+ //flusing the grand totals (if they are turned on)
7339
+ if (this.aggrSettings.hasGrandTotals()) {
7340
+ this.flushLevelTotals(0);
7194
7341
  }
7195
- return Promise.all(levelPromises)
7196
- .then(function () { return; })
7197
- .catch(function (error) { return console.error(error); });
7342
+ return Promise.resolve();
7198
7343
  };
7199
- EqAggregatesCalculator.prototype.processLevel = function (options) {
7200
- var _this = this;
7201
- var fetcher = this.context.getServices()
7202
- .getDataFetcher();
7203
- var fetchOptions = {
7204
- aux: true,
7205
- query: options.query
7206
- };
7207
- if (this.context.debugMode) {
7208
- fetchOptions.debug = "Fetching group data. Group: '" + options.groupName + "', level: " + options.level;
7344
+ DataTableAggregatesCalculator.prototype.resetLevelTotals = function (rowTotals) {
7345
+ for (var _i = 0, _a = this.aggrCols; _i < _a.length; _i++) {
7346
+ var aggrCol = _a[_i];
7347
+ rowTotals.columns[aggrCol.id] = this.createColumnAggregatesObject();
7209
7348
  }
7210
- var resultPromise = fetcher.fetchData(fetchOptions)
7211
- .then(function (result) {
7212
- var dataTable = new easy_data_table_EasyDataTable({
7213
- elasticChunks: true
7214
- });
7215
- var resultSet = result.resultSet;
7216
- for (var _i = 0, _a = resultSet.cols; _i < _a.length; _i++) {
7217
- var col = _a[_i];
7218
- dataTable.columns.add(col);
7219
- }
7220
- for (var _b = 0, _c = resultSet.rows; _b < _c.length; _b++) {
7221
- var row = _c[_b];
7222
- dataTable.addRow(row);
7223
- }
7224
- var levelData = _this.buildLevelData(options.level, dataTable);
7225
- _this.aggrContainer.setAggregates(options.level, levelData);
7226
- if (options.resultObtainedCallback) {
7227
- options.resultObtainedCallback(result, options.level);
7349
+ rowTotals.count = 0;
7350
+ };
7351
+ DataTableAggregatesCalculator.prototype.processDataRow = function (row) {
7352
+ var levelIndexChanged = this.checkLevelChange(row);
7353
+ if (levelIndexChanged >= 0) {
7354
+ for (var levelIndex_1 = levelIndexChanged; levelIndex_1 < this.levelsTotals.length; levelIndex_1++) {
7355
+ this.flushLevelTotals(levelIndex_1);
7228
7356
  }
7229
- })
7230
- .catch(function (error) {
7231
- if (options.errorOccurredCallback) {
7232
- options.errorOccurredCallback(eqs_aggr_calculator_assign({}, error, { level: options.level }));
7357
+ }
7358
+ if (this.aggrSettings.hasGrandTotals()) {
7359
+ this.updateLevelTotals(0, row);
7360
+ }
7361
+ var levelIndex = 1;
7362
+ for (var _i = 0, _a = this.groups; _i < _a.length; _i++) {
7363
+ var group = _a[_i];
7364
+ this.updateLevelTotals(levelIndex, row);
7365
+ levelIndex++;
7366
+ }
7367
+ this.prevRow = row;
7368
+ };
7369
+ /** Checks if the values in group columns were changed
7370
+ and return the level number they were */
7371
+ DataTableAggregatesCalculator.prototype.checkLevelChange = function (row) {
7372
+ if (this.prevRow == null)
7373
+ return -1;
7374
+ for (var groupIndex = 0; groupIndex < this.groups.length; groupIndex++) {
7375
+ var group = this.groups[groupIndex];
7376
+ for (var _i = 0, _a = group.columns; _i < _a.length; _i++) {
7377
+ var colId = _a[_i];
7378
+ var value = row.getValue(colId);
7379
+ var prevValue = this.prevRow.getValue(colId);
7380
+ if (!this.aggrSettings.compareValues(prevValue, value)) {
7381
+ return groupIndex + 1;
7382
+ }
7233
7383
  }
7234
- });
7235
- return resultPromise;
7384
+ }
7385
+ return -1;
7236
7386
  };
7237
- EqAggregatesCalculator.prototype.buildLevelData = function (level, dataTable) {
7238
- var aggrSettings = this.context.getQuery().getAggregationSettings();
7239
- var keyColumns = level > 0
7240
- ? aggrSettings.getGroups()[level - 1].columns
7241
- : [];
7242
- var valueColumns = aggrSettings.getAggregates().map(function (a) { return a.colId; });
7243
- if (aggrSettings.hasRecordCount()) {
7244
- valueColumns.push(aggrSettings.COUNT_FIELD_NAME);
7387
+ /** Saves the current values in levelData for the specified level to AggregateContainer
7388
+ and then reset the data row for that level
7389
+ */
7390
+ DataTableAggregatesCalculator.prototype.flushLevelTotals = function (levelIndex) {
7391
+ var levelTotals = this.levelsTotals[levelIndex];
7392
+ var group = levelIndex > 0 ? this.groups[levelIndex - 1] : null;
7393
+ var groupKey = this.aggrSettings.buildGroupKey(group, this.prevRow);
7394
+ var groupTotals = {};
7395
+ for (var _i = 0, _a = this.aggregates; _i < _a.length; _i++) {
7396
+ var aggr = _a[_i];
7397
+ var columnTotals = levelTotals.columns[aggr.colId];
7398
+ switch (aggr.funcId) {
7399
+ case "SUM":
7400
+ groupTotals[aggr.colId] = columnTotals.sum;
7401
+ break;
7402
+ case "AVG":
7403
+ groupTotals[aggr.colId] = columnTotals.sum / levelTotals.count;
7404
+ break;
7405
+ case "COUNT":
7406
+ case "CNTDST":
7407
+ groupTotals[aggr.colId] = levelTotals.count;
7408
+ break;
7409
+ case "MIN":
7410
+ groupTotals[aggr.colId] = columnTotals.min;
7411
+ break;
7412
+ case "MAX":
7413
+ groupTotals[aggr.colId] = columnTotals.max;
7414
+ break;
7415
+ }
7245
7416
  }
7246
- var data = new Map();
7247
- for (var _i = 0, _a = dataTable.getCachedRows(); _i < _a.length; _i++) {
7248
- var row = _a[_i];
7249
- var key = {};
7250
- var value = {};
7251
- for (var _b = 0, keyColumns_1 = keyColumns; _b < keyColumns_1.length; _b++) {
7252
- var keyCol = keyColumns_1[_b];
7253
- var colIdx = dataTable.columns.getIndex(keyCol);
7254
- if (colIdx >= 0) {
7255
- var keyVal = row.getValue(keyCol);
7256
- if (!aggrSettings.caseSensitiveGroups && typeof (keyVal) === 'string') {
7257
- keyVal = keyVal.toLowerCase();
7258
- }
7259
- key[keyCol] = keyVal;
7260
- }
7417
+ if (this.aggrSettings.hasRecordCount()) {
7418
+ groupTotals[this.aggrSettings.COUNT_FIELD_NAME] = levelTotals.count;
7419
+ }
7420
+ this.aggrContainer.updateAggregateData(levelIndex, groupKey, groupTotals);
7421
+ this.resetLevelTotals(levelTotals);
7422
+ };
7423
+ /** Updates the totals by values in the current DataRow
7424
+ * and according to the specified aggregate
7425
+ */
7426
+ DataTableAggregatesCalculator.prototype.updateLevelTotals = function (levelIndex, row) {
7427
+ var levelTotals = this.levelsTotals[levelIndex];
7428
+ levelTotals.count += 1;
7429
+ for (var _i = 0, _a = this.aggregates; _i < _a.length; _i++) {
7430
+ var aggr = _a[_i];
7431
+ var value = row.getValue(aggr.colId);
7432
+ var columnTotals = levelTotals.columns[aggr.colId];
7433
+ columnTotals.sum += value;
7434
+ if (value < columnTotals.min) {
7435
+ columnTotals.min = value;
7261
7436
  }
7262
- for (var _c = 0, valueColumns_1 = valueColumns; _c < valueColumns_1.length; _c++) {
7263
- var valueCol = valueColumns_1[_c];
7264
- value[valueCol] = row.getValue(valueCol);
7437
+ if (value > columnTotals.max) {
7438
+ columnTotals.max = value;
7265
7439
  }
7266
- data.set(JSON.stringify(key), value);
7267
7440
  }
7268
- return data;
7269
7441
  };
7270
- return EqAggregatesCalculator;
7442
+ DataTableAggregatesCalculator.prototype.needRecalculation = function () {
7443
+ return true;
7444
+ };
7445
+ DataTableAggregatesCalculator.prototype.reset = function () {
7446
+ };
7447
+ return DataTableAggregatesCalculator;
7271
7448
  }());
7272
7449
 
7273
7450
 
@@ -7293,7 +7470,7 @@ external_easyqueryCore_["EqContext"].prototype.useEnterprise = function (keyOrIn
7293
7470
  services.registerDataModelResolver(function (context) { return new model_ex_DataModelEx(); });
7294
7471
  services.registerQueryResolver(function (context) { return new query_ex_QueryEx(context.getModel()); });
7295
7472
  services.registerQueryStorageResolver(function (context) { return new EqServerQueryStorage(context); });
7296
- services.registerAggregatesCalculator(function (context) { return new eqs_aggr_calculator_EqAggregatesCalculator(context); });
7473
+ services.registerAggregatesCalculator(function (context) { return new data_table_aggr_calculator_DataTableAggregatesCalculator(context); });
7297
7474
  if (lcv.__kt === 2) {
7298
7475
  console.warn('EasyQuery.JS is working in the TRIAL MODE!\n'
7299
7476
  + 'Please order a license (https://korzh.com/eq) to get a proper product key.');
@@ -7422,13 +7599,182 @@ function hideTrialWM() {
7422
7599
  }
7423
7600
  }
7424
7601
 
7602
+ // CONCATENATED MODULE: ./src/data/eqs_aggr_calculator.ts
7603
+ var eqs_aggr_calculator_assign = (undefined && undefined.__assign) || function () {
7604
+ eqs_aggr_calculator_assign = Object.assign || function(t) {
7605
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
7606
+ s = arguments[i];
7607
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7608
+ t[p] = s[p];
7609
+ }
7610
+ return t;
7611
+ };
7612
+ return eqs_aggr_calculator_assign.apply(this, arguments);
7613
+ };
7614
+
7615
+
7616
+ var eqs_aggr_calculator_EqServerAggregatesCalculator = /** @class */ (function () {
7617
+ function EqServerAggregatesCalculator(context) {
7618
+ this.context = context;
7619
+ this._needRecalculation = true;
7620
+ this.aggrContainer = new external_easyqueryCore_["EqAggregatesContainer"](context);
7621
+ }
7622
+ EqServerAggregatesCalculator.prototype.getAggrContainer = function () {
7623
+ return this.aggrContainer;
7624
+ };
7625
+ EqServerAggregatesCalculator.prototype.calculate = function (options) {
7626
+ this._needRecalculation = false;
7627
+ this.aggrContainer.clear();
7628
+ options = options || {};
7629
+ options.maxLevel = options.maxLevel >= 0
7630
+ ? options.maxLevel : 0;
7631
+ var levelPromises = [];
7632
+ var query = this.context.createQuery();
7633
+ query.loadFromData(this.context.getQuery().toJSONData());
7634
+ var settings = this.context.getQuery().getAggregationSettings();
7635
+ var aggregates = settings.getAggregates();
7636
+ var aggrColIds = settings.getAggregates().map(function (a) { return a.colId; });
7637
+ var aggrCols = query.getColumns()
7638
+ .filter(function (col) { return aggrColIds.indexOf(col.id) >= 0; });
7639
+ var _loop_1 = function (col) {
7640
+ query.changeColumnType(col, external_easyqueryCore_["ExprTag"].AggregateFunction, { funcId: aggregates.filter(function (a) { return a.colId == col.id; })[0].funcId });
7641
+ };
7642
+ for (var _i = 0, aggrCols_1 = aggrCols; _i < aggrCols_1.length; _i++) {
7643
+ var col = aggrCols_1[_i];
7644
+ _loop_1(col);
7645
+ }
7646
+ //get all non-aggregate columns
7647
+ var queryCols = query.getColumns()
7648
+ .filter(function (c) { return c.expr.tag !== external_easyqueryCore_["ExprTag"].AggregateFunction; });
7649
+ for (var _a = 0, queryCols_1 = queryCols; _a < queryCols_1.length; _a++) {
7650
+ var col = queryCols_1[_a];
7651
+ col.setHidden(true);
7652
+ }
7653
+ if (settings.hasRecordCount()) {
7654
+ var col = query.createColumn();
7655
+ col.caption = settings.COUNT_FIELD_NAME;
7656
+ col['_id'] = settings.COUNT_FIELD_NAME;
7657
+ var sqlText = 'COUNT(*)';
7658
+ var customSqlExpr = new external_easyqueryCore_["Expression"](col);
7659
+ customSqlExpr.tag = external_easyqueryCore_["ExprTag"].CustomSql;
7660
+ customSqlExpr.sql = sqlText;
7661
+ customSqlExpr.baseAttrId = null;
7662
+ col.expr = customSqlExpr;
7663
+ query.getColumns().push(col);
7664
+ }
7665
+ if (settings.hasGrandTotals()) {
7666
+ levelPromises.push(this.processLevel({
7667
+ query: query,
7668
+ level: 0,
7669
+ groupName: 'Grand Totals',
7670
+ resultObtainedCallback: options.resultObtained,
7671
+ errorOccurredCallback: options.errorOccurred
7672
+ }));
7673
+ }
7674
+ var groups = settings.getGroups();
7675
+ for (var level = 1; level <= groups.length; level++) {
7676
+ var group = groups[level - 1];
7677
+ for (var _b = 0, queryCols_2 = queryCols; _b < queryCols_2.length; _b++) {
7678
+ var col = queryCols_2[_b];
7679
+ col.setHidden(group.columns.indexOf(col.id) < 0);
7680
+ }
7681
+ levelPromises.push(this.processLevel({
7682
+ query: query,
7683
+ level: level,
7684
+ groupName: group.name,
7685
+ resultObtainedCallback: options.resultObtained,
7686
+ errorOccurredCallback: options.errorOccurred
7687
+ }));
7688
+ }
7689
+ return Promise.all(levelPromises)
7690
+ .then(function () {
7691
+ return;
7692
+ })
7693
+ .catch(function (error) { return console.error(error); });
7694
+ };
7695
+ EqServerAggregatesCalculator.prototype.processLevel = function (options) {
7696
+ var _this = this;
7697
+ var fetcher = this.context.getServices()
7698
+ .getDataFetcher();
7699
+ var fetchOptions = {
7700
+ aux: true,
7701
+ query: options.query
7702
+ };
7703
+ if (this.context.debugMode) {
7704
+ fetchOptions.debug = "Fetching group data. Group: '" + options.groupName + "', level: " + options.level;
7705
+ }
7706
+ var resultPromise = fetcher.fetchData(fetchOptions)
7707
+ .then(function (result) {
7708
+ var dataTable = new easy_data_table_EasyDataTable({
7709
+ elasticChunks: true
7710
+ });
7711
+ var resultSet = result.resultSet;
7712
+ for (var _i = 0, _a = resultSet.cols; _i < _a.length; _i++) {
7713
+ var col = _a[_i];
7714
+ dataTable.columns.add(col);
7715
+ }
7716
+ for (var _b = 0, _c = resultSet.rows; _b < _c.length; _b++) {
7717
+ var row = _c[_b];
7718
+ dataTable.addRow(row);
7719
+ }
7720
+ var levelData = _this.buildLevelData(options.level, dataTable);
7721
+ console.log('Level', options.level, levelData);
7722
+ _this.aggrContainer.setAggregateData(options.level, levelData);
7723
+ if (options.resultObtainedCallback) {
7724
+ options.resultObtainedCallback(result, options.level);
7725
+ }
7726
+ })
7727
+ .catch(function (error) {
7728
+ if (options.errorOccurredCallback) {
7729
+ options.errorOccurredCallback(eqs_aggr_calculator_assign(eqs_aggr_calculator_assign({}, error), { level: options.level }));
7730
+ }
7731
+ });
7732
+ return resultPromise;
7733
+ };
7734
+ EqServerAggregatesCalculator.prototype.buildLevelData = function (level, dataTable) {
7735
+ var aggrSettings = this.context.getQuery().getAggregationSettings();
7736
+ var keyColumns = level > 0
7737
+ ? aggrSettings.getGroups()[level - 1].columns
7738
+ : [];
7739
+ var valueColumns = aggrSettings.getAggregates().map(function (a) { return a.colId; });
7740
+ if (aggrSettings.hasRecordCount()) {
7741
+ valueColumns.push(aggrSettings.COUNT_FIELD_NAME);
7742
+ }
7743
+ var data = new Map();
7744
+ for (var _i = 0, _a = dataTable.getCachedRows(); _i < _a.length; _i++) {
7745
+ var row = _a[_i];
7746
+ var key = {};
7747
+ var value = {};
7748
+ for (var _b = 0, keyColumns_1 = keyColumns; _b < keyColumns_1.length; _b++) {
7749
+ var keyCol = keyColumns_1[_b];
7750
+ var colIdx = dataTable.columns.getIndex(keyCol);
7751
+ if (colIdx >= 0) {
7752
+ var keyVal = row.getValue(keyCol);
7753
+ if (!aggrSettings.caseSensitiveGroups && typeof (keyVal) === 'string') {
7754
+ keyVal = keyVal.toLowerCase();
7755
+ }
7756
+ key[keyCol] = keyVal;
7757
+ }
7758
+ }
7759
+ for (var _c = 0, valueColumns_1 = valueColumns; _c < valueColumns_1.length; _c++) {
7760
+ var valueCol = valueColumns_1[_c];
7761
+ value[valueCol] = row.getValue(valueCol);
7762
+ }
7763
+ data.set(JSON.stringify(key), value);
7764
+ }
7765
+ return data;
7766
+ };
7767
+ EqServerAggregatesCalculator.prototype.needRecalculation = function () {
7768
+ return this._needRecalculation;
7769
+ };
7770
+ EqServerAggregatesCalculator.prototype.reset = function () {
7771
+ this._needRecalculation = true;
7772
+ };
7773
+ return EqServerAggregatesCalculator;
7774
+ }());
7775
+
7776
+
7425
7777
  // CONCATENATED MODULE: ./src/public_api.ts
7426
- /* concated harmony reexport EqAggregatesCalculator */__webpack_require__.d(__webpack_exports__, "EqAggregatesCalculator", function() { return eqs_aggr_calculator_EqAggregatesCalculator; });
7427
- /* concated harmony reexport QueryEx */__webpack_require__.d(__webpack_exports__, "QueryEx", function() { return query_ex_QueryEx; });
7428
- /* concated harmony reexport QueryColumnEx */__webpack_require__.d(__webpack_exports__, "QueryColumnEx", function() { return query_column_ex_QueryColumnEx; });
7429
- /* concated harmony reexport ConditionEx */__webpack_require__.d(__webpack_exports__, "ConditionEx", function() { return condition_ex_ConditionEx; });
7430
- /* concated harmony reexport DataModelEx */__webpack_require__.d(__webpack_exports__, "DataModelEx", function() { return model_ex_DataModelEx; });
7431
- /* concated harmony reexport EqServerQueryStorage */__webpack_require__.d(__webpack_exports__, "EqServerQueryStorage", function() { return EqServerQueryStorage; });
7432
7778
 
7433
7779
 
7434
7780