@refinitiv-ui/efx-grid 6.0.34 → 6.0.36
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/column-dragging/es6/ColumnDragging.js +50 -40
- package/lib/core/dist/core.css +1 -1
- package/lib/core/dist/core.js +248 -8
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/DataCache.js +20 -1
- package/lib/core/es6/data/DataTable.d.ts +2 -0
- package/lib/core/es6/data/DataTable.js +18 -1
- package/lib/core/es6/data/DataView.d.ts +2 -0
- package/lib/core/es6/data/DataView.js +11 -0
- package/lib/core/es6/grid/Core.d.ts +12 -0
- package/lib/core/es6/grid/Core.js +88 -3
- package/lib/core/es6/grid/ILayoutGrid.js +4 -0
- package/lib/core/es6/grid/LayoutGrid.d.ts +4 -0
- package/lib/core/es6/grid/LayoutGrid.js +95 -3
- package/lib/core/es6/grid/VirtualizedLayoutGrid.js +6 -0
- package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +6 -0
- package/lib/core/es6/tr-grid-theme.js +1 -1
- package/lib/grid/index.js +1 -1
- package/lib/grid/themes/halo/dark/efx-grid.js +1 -1
- package/lib/grid/themes/halo/dark/es5/all-elements.js +1 -1
- package/lib/grid/themes/halo/efx-grid.less +1 -1
- package/lib/grid/themes/halo/light/efx-grid.js +1 -1
- package/lib/grid/themes/halo/light/es5/all-elements.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +367 -148
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/Grid.js +37 -31
- package/lib/rt-grid/es6/RowDefSorter.d.ts +5 -5
- package/lib/rt-grid/es6/RowDefSorter.js +165 -71
- package/lib/tr-grid-column-selection/es6/ColumnSelection.js +66 -0
- package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +3 -0
- package/lib/tr-grid-column-stack/es6/ColumnStack.js +566 -607
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +1 -1
- package/lib/tr-grid-range-bar/es6/RangeBar.d.ts +4 -1
- package/lib/tr-grid-range-bar/es6/RangeBar.js +99 -39
- package/lib/tr-grid-row-dragging/es6/RowDragging.js +14 -3
- package/lib/tr-grid-rowcoloring/es6/RowColoring.js +3 -2
- package/lib/tr-grid-util/es6/DragUI.js +7 -3
- package/lib/tr-grid-util/es6/GroupDefinitions.d.ts +7 -1
- package/lib/tr-grid-util/es6/GroupDefinitions.js +39 -3
- package/lib/tr-grid-util/es6/jet/DataGenerator.js +36 -33
- package/lib/types/es6/ColumnStack.d.ts +2 -0
- package/lib/types/es6/Core/data/DataTable.d.ts +3 -1
- package/lib/types/es6/Core/data/DataView.d.ts +2 -0
- package/lib/types/es6/Core/grid/Core.d.ts +12 -0
- package/lib/types/es6/RealtimeGrid/RowDefSorter.d.ts +5 -5
- package/lib/versions.json +8 -8
- package/package.json +1 -1
@@ -920,7 +920,7 @@ ConditionalColoringPlugin._mergeUpdates = function(e) {
|
|
920
920
|
* @return {string} prettified CSS string
|
921
921
|
*/
|
922
922
|
ConditionalColoringPlugin.prototype._prepareStyles = function(colors) {
|
923
|
-
var prefix = ".tr-grid." + ConditionalColoringPlugin._controlClass + " .cell";
|
923
|
+
var prefix = ".tr-grid." + ConditionalColoringPlugin._controlClass + " .column.conditionally-colored .cell";
|
924
924
|
var css = [];
|
925
925
|
var ss, styles, value;
|
926
926
|
for (var className in colors) {
|
@@ -17,6 +17,9 @@ import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
|
|
17
17
|
* @property {string=} low="" Field used as minimum range
|
18
18
|
* @property {string=} high="" Field used as maximum range
|
19
19
|
* @property {string=} last="" Field used as current absolute value (white bar)
|
20
|
+
* @property {string=} vwap="" Field used as volume weighted average price (VWAP)
|
21
|
+
* @property {string=} close="" Field used as close price
|
22
|
+
* @property {string=} tick="" Field used as tick color
|
20
23
|
*/
|
21
24
|
|
22
25
|
/** @typedef {Object} RangeBarPlugin~Options
|
@@ -26,15 +29,15 @@ import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
|
|
26
29
|
// TODO: promote "valueLabel" option, that provide the user can show valueLabel in ef-led-gauge (default is false)
|
27
30
|
// @property {boolean=} valueLabel=false If disabled, it will be show text label in top of ef-led-gaguge
|
28
31
|
|
29
|
-
/** Used for tranfrom value from raw value to normalize value
|
32
|
+
/** Used for tranfrom value from raw value to normalize value (Percent value between -100 to 100)
|
30
33
|
* @private
|
31
34
|
* @param {number} low
|
32
|
-
* @param {number}
|
35
|
+
* @param {number} current
|
33
36
|
* @param {number} high
|
34
37
|
* @return {number}
|
35
38
|
*/
|
36
|
-
var _normalizeValue = function _normalizeValue(low,
|
37
|
-
return (low -
|
39
|
+
var _normalizeValue = function _normalizeValue(low, current, high) {
|
40
|
+
return (low - current) * 200 / (low - high) - 100;
|
38
41
|
};
|
39
42
|
|
40
43
|
/** Used for convert the rangeBarOption and rowData into an object that has the properties of low, last, and high.
|
@@ -43,26 +46,37 @@ var _normalizeValue = function _normalizeValue(low, last, high) {
|
|
43
46
|
* @param {Object} rowData
|
44
47
|
* @return {Object}
|
45
48
|
*/
|
46
|
-
var
|
47
|
-
var low, high, last;
|
49
|
+
var _getRangeBarData = function _getRangeBarData(rBarOpt, rowData) {
|
50
|
+
var low, high, last, close, vwap, tick;
|
48
51
|
if (rBarOpt.field) {
|
49
|
-
// Doesn't defined
|
52
|
+
// Doesn't defined range bar data, use field instead
|
50
53
|
low = rBarOpt.start;
|
51
54
|
last = rowData[rBarOpt.field];
|
52
55
|
high = rBarOpt.end;
|
53
56
|
} else {
|
54
|
-
// Defined
|
57
|
+
// Defined range bar data
|
55
58
|
low = rowData[rBarOpt.low];
|
56
59
|
last = rowData[rBarOpt.last];
|
57
60
|
high = rowData[rBarOpt.high];
|
61
|
+
close = rowData[rBarOpt.close];
|
62
|
+
vwap = rowData[rBarOpt.vwap];
|
63
|
+
tick = rowData[rBarOpt.tick];
|
58
64
|
}
|
59
65
|
return {
|
60
66
|
low: low,
|
61
67
|
last: last,
|
62
|
-
high: high
|
68
|
+
high: high,
|
69
|
+
close: close,
|
70
|
+
vwap: vwap,
|
71
|
+
tick: tick
|
63
72
|
};
|
64
73
|
};
|
65
74
|
|
75
|
+
/** @type {Array<string>}
|
76
|
+
* @constant
|
77
|
+
*/
|
78
|
+
var TICK_COLOR_MAPPING = ["var(--color-scheme-neutral)", "var(--color-scheme-tickup)", "var(--color-scheme-tickdown)"]; // ["level", "up", "down"]
|
79
|
+
|
66
80
|
/** @constructor
|
67
81
|
* @extends {GridPlugin}
|
68
82
|
*/
|
@@ -253,6 +267,15 @@ RangeBarPlugin.prototype.getColumnConfigObject = function (colIndex, out_obj) {
|
|
253
267
|
if (opt.high != null) {
|
254
268
|
rangeBar.high = opt.high;
|
255
269
|
}
|
270
|
+
if (opt.close != null) {
|
271
|
+
rangeBar.close = opt.close;
|
272
|
+
}
|
273
|
+
if (opt.vwap != null) {
|
274
|
+
rangeBar.vwap = opt.vwap;
|
275
|
+
}
|
276
|
+
if (opt.tick != null) {
|
277
|
+
rangeBar.tick = opt.tick;
|
278
|
+
}
|
256
279
|
return out_obj;
|
257
280
|
};
|
258
281
|
|
@@ -285,7 +308,7 @@ RangeBarPlugin.prototype.getValue = function (colRef, rowRef) {
|
|
285
308
|
if (!rowData) {
|
286
309
|
return null;
|
287
310
|
}
|
288
|
-
return
|
311
|
+
return _getRangeBarData(rBarOpt, rowData);
|
289
312
|
};
|
290
313
|
|
291
314
|
/** @public
|
@@ -310,16 +333,16 @@ RangeBarPlugin.prototype.getTooltipText = function (colRef, rowRef) {
|
|
310
333
|
if (typeof rowRef === "string") {
|
311
334
|
rowRef = dv.getRowIndex(rowRef);
|
312
335
|
}
|
313
|
-
if (rowRef
|
336
|
+
if (rowRef < 0) {
|
314
337
|
return "";
|
315
338
|
}
|
316
339
|
var rowData = this._getRow(dv, rowRef);
|
317
340
|
if (!rowData) {
|
318
341
|
return "";
|
319
342
|
}
|
320
|
-
var
|
343
|
+
var rangeBarValues = _getRangeBarData(rBarOpt, rowData);
|
321
344
|
if (this._tooltip) {
|
322
|
-
var textTooltip = this._calculateTooltip(rBarOpt,
|
345
|
+
var textTooltip = this._calculateTooltip(rBarOpt, rangeBarValues);
|
323
346
|
return textTooltip;
|
324
347
|
}
|
325
348
|
return "";
|
@@ -327,13 +350,16 @@ RangeBarPlugin.prototype.getTooltipText = function (colRef, rowRef) {
|
|
327
350
|
|
328
351
|
/** @private
|
329
352
|
* @param {RangeBarPlugin~RangeDefinition} rBarOpt range
|
330
|
-
* @param {!Object}
|
353
|
+
* @param {!Object} rangeBarValues
|
331
354
|
* @return {string} tooltip string value
|
332
355
|
*/
|
333
|
-
RangeBarPlugin.prototype._calculateTooltip = function (rBarOpt,
|
334
|
-
var low =
|
335
|
-
var last =
|
336
|
-
var high =
|
356
|
+
RangeBarPlugin.prototype._calculateTooltip = function (rBarOpt, rangeBarValues) {
|
357
|
+
var low = rangeBarValues.low;
|
358
|
+
var last = rangeBarValues.last;
|
359
|
+
var high = rangeBarValues.high;
|
360
|
+
var vwap = rangeBarValues.vwap;
|
361
|
+
var close = rangeBarValues.close;
|
362
|
+
var priceGraph = rBarOpt.priceGraph;
|
337
363
|
var textTooltip;
|
338
364
|
if (rBarOpt["field"]) {
|
339
365
|
// doesn't provide low,last,high case
|
@@ -343,7 +369,13 @@ RangeBarPlugin.prototype._calculateTooltip = function (rBarOpt, lowLastHigh) {
|
|
343
369
|
var lowValue = low != null ? low : '--';
|
344
370
|
var lastValue = last != null ? last : '--';
|
345
371
|
var highValue = high != null ? high : '--';
|
346
|
-
|
372
|
+
if (priceGraph) {
|
373
|
+
var vwapValue = vwap != null ? vwap : '--';
|
374
|
+
var closeValue = close != null ? close : '--';
|
375
|
+
textTooltip = 'Low: ' + lowValue + " " + 'Last: ' + lastValue + " " + 'High: ' + highValue + " " + 'VWAP: ' + vwapValue + " " + 'Close: ' + closeValue + " ";
|
376
|
+
} else {
|
377
|
+
textTooltip = 'Low: ' + lowValue + " " + 'Last: ' + lastValue + " " + 'High: ' + highValue;
|
378
|
+
}
|
347
379
|
}
|
348
380
|
return textTooltip;
|
349
381
|
};
|
@@ -375,6 +407,10 @@ RangeBarPlugin.prototype._calculateTooltip = function (rBarOpt, lowLastHigh) {
|
|
375
407
|
RangeBarPlugin.prototype._setColumnRangeBar = function (colIndex, columnOptions) {
|
376
408
|
var rDef = columnOptions["rangeBar"];
|
377
409
|
if (rDef) {
|
410
|
+
if (rDef["vwap"] || rDef["close"] || rDef["tick"]) {
|
411
|
+
rDef["priceGraph"] = true; // activate price graph mode
|
412
|
+
}
|
413
|
+
|
378
414
|
var colData = this._newColumnData(colIndex);
|
379
415
|
if (rDef === true || typeof rDef["field"] === "string") {
|
380
416
|
// The start and end properties were overwritten by the extension, so the value will be returned from the get configuration even if the user does not set it (minor issue).
|
@@ -423,16 +459,17 @@ RangeBarPlugin.prototype._onPostSectionBinding = function (e) {
|
|
423
459
|
if (!rBarOpt) {
|
424
460
|
continue;
|
425
461
|
}
|
462
|
+
var priceGraph = rBarOpt["priceGraph"];
|
426
463
|
for (var r = fromR; r < toR; ++r) {
|
427
464
|
var cell = section.getCell(c, r, false);
|
428
465
|
if (!cell) {
|
429
466
|
continue;
|
430
467
|
}
|
431
468
|
var rowData = this._getRowData(dataRows[r]);
|
432
|
-
var
|
433
|
-
var low =
|
434
|
-
var last =
|
435
|
-
var high =
|
469
|
+
var rangeBarData = _getRangeBarData(rBarOpt, rowData);
|
470
|
+
var low = rangeBarData.low;
|
471
|
+
var last = rangeBarData.last;
|
472
|
+
var high = rangeBarData.high;
|
436
473
|
var content = cell.getContent();
|
437
474
|
var rangeBar = content ? content._rangeBar : null;
|
438
475
|
if (!rangeBar) {
|
@@ -442,7 +479,7 @@ RangeBarPlugin.prototype._onPostSectionBinding = function (e) {
|
|
442
479
|
content = rangeBar;
|
443
480
|
}
|
444
481
|
if (this._tooltip) {
|
445
|
-
var textTooltip = this._calculateTooltip(rBarOpt,
|
482
|
+
var textTooltip = this._calculateTooltip(rBarOpt, rangeBarData);
|
446
483
|
cell.setTooltip(textTooltip); // WARNING: this may be confuse with auto-tooltip extension
|
447
484
|
}
|
448
485
|
|
@@ -464,22 +501,45 @@ RangeBarPlugin.prototype._onPostSectionBinding = function (e) {
|
|
464
501
|
|
465
502
|
// Clear the current range for apply a new one.
|
466
503
|
rangeBar.range.length = 0;
|
504
|
+
if (priceGraph) {
|
505
|
+
var close = rangeBarData.close;
|
506
|
+
var vwap = rangeBarData.vwap;
|
507
|
+
var vwapNormalize = _normalizeValue(low, vwap, high);
|
508
|
+
var rangeColor;
|
509
|
+
if (close > last) {
|
510
|
+
rangeColor = "var(--color-scheme-tickdown)";
|
511
|
+
} else {
|
512
|
+
rangeColor = "var(--color-scheme-tickup)";
|
513
|
+
}
|
514
|
+
var leftSegmentValue = _normalizeValue(low, close, high);
|
515
|
+
var rangeValue;
|
516
|
+
if (lastNormalize < leftSegmentValue) {
|
517
|
+
rangeValue = [lastNormalize, leftSegmentValue];
|
518
|
+
} else {
|
519
|
+
rangeValue = [leftSegmentValue, lastNormalize];
|
520
|
+
}
|
521
|
+
rangeBar.range = rangeValue;
|
522
|
+
rangeBar.topValue = lastNormalize;
|
523
|
+
rangeBar.bottomValue = vwapNormalize;
|
524
|
+
rangeBar.style.setProperty("--range-color", rangeColor);
|
525
|
+
rangeBar.style.setProperty("--bottom-selected-color", "var(--neutral-color)");
|
526
|
+
rangeBar.style.setProperty("--top-selected-color", TICK_COLOR_MAPPING[rangeBarData.tick]);
|
527
|
+
rangeBar.style.setProperty("--clash-color", "var(--color-scheme-secondary)");
|
528
|
+
} else {
|
529
|
+
// applied range when the last value out of range, by set new low/high with last value
|
530
|
+
if (last < low) {
|
531
|
+
var lowNormalize = _normalizeValue(last, low, high);
|
532
|
+
rangeBar.range = [lastNormalize, lowNormalize];
|
533
|
+
} else if (last > high) {
|
534
|
+
var highNormalize = _normalizeValue(low, high, last);
|
535
|
+
rangeBar.range = [highNormalize, lastNormalize];
|
536
|
+
}
|
537
|
+
// else {} // It is not necessary to apply a range in the case of equal low and high values
|
467
538
|
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
rangeBar.range = [lastNormalize, lowNormalize];
|
473
|
-
} else if (last > high) {
|
474
|
-
lastNormalize = _normalizeValue(low, last, last);
|
475
|
-
var highNormalize = _normalizeValue(low, high, last);
|
476
|
-
rangeBar.range = [highNormalize, lastNormalize];
|
477
|
-
}
|
478
|
-
// else {} // It is not necessary to apply a range in the case of equal low or high values
|
479
|
-
|
480
|
-
rangeBar.topValue = lastNormalize;
|
481
|
-
if (this.valueLabel) {
|
482
|
-
rangeBar.topLabel = last;
|
539
|
+
rangeBar.topValue = lastNormalize;
|
540
|
+
if (this.valueLabel) {
|
541
|
+
rangeBar.topLabel = last;
|
542
|
+
}
|
483
543
|
}
|
484
544
|
cell.setContent(content);
|
485
545
|
}
|
@@ -906,9 +906,12 @@ RowDraggingPlugin.prototype._moveRows = function (srcRowRef, destRowIndex, srcGr
|
|
906
906
|
var srcRowTypes = [];
|
907
907
|
var conRowType = "";
|
908
908
|
var api = this.getGridApi();
|
909
|
+
if(api && !api.getRowType) {
|
910
|
+
api = null;
|
911
|
+
}
|
909
912
|
for(i = 0; i < srcCount; ++i) {
|
910
913
|
var srcIndex = srcRowIndices[i];
|
911
|
-
var rowType = api.getRowType(srcIndex);
|
914
|
+
var rowType = api ? api.getRowType(srcIndex) : "CONTENT";
|
912
915
|
srcRowIds[i] = srcDv.getRowId(srcIndex);
|
913
916
|
srcRowTypes[i] = rowType;
|
914
917
|
if(conRowType) {
|
@@ -919,7 +922,10 @@ RowDraggingPlugin.prototype._moveRows = function (srcRowRef, destRowIndex, srcGr
|
|
919
922
|
conRowType = rowType;
|
920
923
|
}
|
921
924
|
}
|
922
|
-
|
925
|
+
if(!conRowType) {
|
926
|
+
conRowType = "CONTENT";
|
927
|
+
}
|
928
|
+
var destRowType = api ? api.getRowType(destRowIndex) : ""; // TODO: this has to be get from destGrid
|
923
929
|
var destRowId = destDv.getRowId(destRowIndex);
|
924
930
|
var parentRowId, childRowIds;
|
925
931
|
|
@@ -966,7 +972,8 @@ RowDraggingPlugin.prototype._moveRows = function (srcRowRef, destRowIndex, srcGr
|
|
966
972
|
}
|
967
973
|
} else if(conRowType === "GROUP_MEMBER") {
|
968
974
|
if(srcCount === 1) {
|
969
|
-
|
975
|
+
var srcRowId = srcRowIds[0];
|
976
|
+
parentRowId = rsp.getSegmentParentRowId(srcRowId);
|
970
977
|
childRowIds = rsp.getSegmentChildIds(parentRowId);
|
971
978
|
var childCount = childRowIds ? childRowIds.length : 0;
|
972
979
|
var endOfSegment = srcDv.getRowIndex(parentRowId) + childCount + 1;
|
@@ -976,6 +983,10 @@ RowDraggingPlugin.prototype._moveRows = function (srcRowRef, destRowIndex, srcGr
|
|
976
983
|
var destParentRowId = rsp.getSegmentParentRowId(destRowId);
|
977
984
|
if(parentRowId === destParentRowId) {
|
978
985
|
movedRowIds = srcDv.moveRow(srcRowIds, destRowId);
|
986
|
+
} else { // Moving row between two segments
|
987
|
+
rsp.removeSegmentChild(parentRowId, srcRowId);
|
988
|
+
rsp.addSegmentChild(destParentRowId, srcRowId);
|
989
|
+
movedRowIds = srcDv.moveRow(srcRowIds, destRowId);
|
979
990
|
}
|
980
991
|
} else if(_isNormalRowType(destRowType)) { // move member out of existing segment
|
981
992
|
rsp.removeSegmentChild(parentRowId, srcRowIds[0]);
|
@@ -320,11 +320,12 @@ RowColoringPlugin.prototype.setPredefinedColors = function (predefinedColors) {
|
|
320
320
|
* @param {Object} predefinedColors Predefined color object map
|
321
321
|
*/
|
322
322
|
RowColoringPlugin.prototype._injectStyles = function (predefinedColors) {
|
323
|
-
var
|
323
|
+
var prefix1 = ".tr-grid." + RowColoringPlugin._controlClass + " .section .column .cell";
|
324
|
+
var prefix2 = ".tr-grid." + RowColoringPlugin._controlClass + " .section .cover-layer .cell";
|
324
325
|
var css = [];
|
325
326
|
var ss, styles, value;
|
326
327
|
for (var className in predefinedColors) {
|
327
|
-
css.push(
|
328
|
+
css.push(prefix1 + "." + className + ", " + prefix2 + "." + className);
|
328
329
|
ss = [];
|
329
330
|
styles = predefinedColors[className];
|
330
331
|
value = styles["backgroundColor"];
|
@@ -62,8 +62,9 @@ DragUI.applyThemeColor = function(grid) {
|
|
62
62
|
*/
|
63
63
|
DragUI.prototype.onThemeLoaded = function(colors) {
|
64
64
|
if(!DragUI._styles) {
|
65
|
+
var ElfVersion = ElfUtil.getElfVersion();
|
65
66
|
var cursor = "grabbing";
|
66
|
-
if (
|
67
|
+
if (ElfVersion < 3) {
|
67
68
|
cursor = "move";
|
68
69
|
}
|
69
70
|
var styles = [ // Main Styles without theme
|
@@ -135,7 +136,8 @@ DragUI.prototype.onThemeLoaded = function(colors) {
|
|
135
136
|
"--grid-insertion-icon-bgcolor: #39c46e;",
|
136
137
|
"--grid-insertion-icon-color: #1A1A1A;",
|
137
138
|
"--grid-void-icon-bgcolor: #F5475B;",
|
138
|
-
"--grid-void-icon-color: #FFFFFF;"
|
139
|
+
"--grid-void-icon-color: #FFFFFF;",
|
140
|
+
"--grid-title-icon-color: var(--grid-guideline-color);" // v3 fallback
|
139
141
|
],
|
140
142
|
".mouse-dragging .cell:hover", [ // for change mouse cursor when hover header while dragging
|
141
143
|
"cursor: " + cursor + " !important;"
|
@@ -149,10 +151,12 @@ DragUI.prototype.onThemeLoaded = function(colors) {
|
|
149
151
|
".tr-dragging, .tr-dragging *", [
|
150
152
|
"-webkit-touch-callout: none;",
|
151
153
|
".user-select(none);"
|
154
|
+
],
|
155
|
+
".tr-dragbox", [
|
156
|
+
"background-color: unset;" // v3 fallback
|
152
157
|
]
|
153
158
|
];
|
154
159
|
var guidelineColor = "#ff9933";
|
155
|
-
var ElfVersion = ElfUtil.getElfVersion();
|
156
160
|
if(colors.primary) {
|
157
161
|
guidelineColor = colors.primary;
|
158
162
|
}
|
@@ -18,6 +18,8 @@ declare class GroupDefinitions {
|
|
18
18
|
|
19
19
|
public getGroups(): (any)[];
|
20
20
|
|
21
|
+
public getGroupIds(): (string)[];
|
22
|
+
|
21
23
|
public getGroupMap(): { [key: string]: any };
|
22
24
|
|
23
25
|
public cloneGroupMap(): { [key: string]: any };
|
@@ -36,6 +38,8 @@ declare class GroupDefinitions {
|
|
36
38
|
|
37
39
|
public getParentId(childId: string, groupLevel?: number|null): string;
|
38
40
|
|
41
|
+
public removeAllGroups(): boolean;
|
42
|
+
|
39
43
|
public setGroups(groupDefs?: (any)[]|null): void;
|
40
44
|
|
41
45
|
public addGroup(groupDef: any): string;
|
@@ -46,7 +50,7 @@ declare class GroupDefinitions {
|
|
46
50
|
|
47
51
|
public hasGroupChild(parentId: string, childId: string): boolean;
|
48
52
|
|
49
|
-
public addGroupChild(parentId: string, childId: string): boolean;
|
53
|
+
public addGroupChild(parentId: string, childId: string, position?: number|null): boolean;
|
50
54
|
|
51
55
|
public removeGroupChild(parentId: string, childId?: string|null): boolean;
|
52
56
|
|
@@ -56,6 +60,8 @@ declare class GroupDefinitions {
|
|
56
60
|
|
57
61
|
public setGroupChildren(groupId: string, newChildList: (string)[]|null): boolean;
|
58
62
|
|
63
|
+
public getGroupName(groupId: string): string;
|
64
|
+
|
59
65
|
public setGroupName(groupId: string, groupName: string): boolean;
|
60
66
|
|
61
67
|
}
|
@@ -187,6 +187,13 @@ GroupDefinitions.prototype.getGroups = function () {
|
|
187
187
|
}
|
188
188
|
return groupDefs;
|
189
189
|
};
|
190
|
+
/** Get array of all existing group ids
|
191
|
+
* @public
|
192
|
+
* @return {!Array.<string>}
|
193
|
+
*/
|
194
|
+
GroupDefinitions.prototype.getGroupIds = function () {
|
195
|
+
return Object.keys(this._groupMap);
|
196
|
+
};
|
190
197
|
/** @public
|
191
198
|
* @return {!Object.<string, Object>}
|
192
199
|
*/
|
@@ -293,7 +300,18 @@ GroupDefinitions.prototype.getParentId = function (childId, groupLevel) {
|
|
293
300
|
return parentId || "";
|
294
301
|
};
|
295
302
|
|
296
|
-
|
303
|
+
/** Remove all existing group definitions
|
304
|
+
* @public
|
305
|
+
* @return {boolean}
|
306
|
+
*/
|
307
|
+
GroupDefinitions.prototype.removeAllGroups = function () {
|
308
|
+
for(var groupId in this._groupMap) { // eslint-disable-line
|
309
|
+
this._groupMap = {};
|
310
|
+
this._childToParent = {};
|
311
|
+
return true;
|
312
|
+
}
|
313
|
+
return false;
|
314
|
+
};
|
297
315
|
/** Remove all existing group definitions and replace them with the given definitions.
|
298
316
|
* @public
|
299
317
|
* @param {Array.<Object>=} groupDefs Use null or empty array to remove all existing groups
|
@@ -438,9 +456,10 @@ GroupDefinitions.prototype.hasGroupChild = function (parentId, childId) {
|
|
438
456
|
/** @public
|
439
457
|
* @param {string} parentId Group id
|
440
458
|
* @param {string} childId
|
459
|
+
* @param {number=} position
|
441
460
|
* @return {boolean}
|
442
461
|
*/
|
443
|
-
GroupDefinitions.prototype.addGroupChild = function (parentId, childId) {
|
462
|
+
GroupDefinitions.prototype.addGroupChild = function (parentId, childId, position) {
|
444
463
|
var groupDef = this._groupMap[parentId];
|
445
464
|
|
446
465
|
if(childId && groupDef) {
|
@@ -453,7 +472,11 @@ GroupDefinitions.prototype.addGroupChild = function (parentId, childId) {
|
|
453
472
|
if(childDef) {
|
454
473
|
childDef.parentId = parentId;
|
455
474
|
}
|
456
|
-
|
475
|
+
if(position != null && position >= 0) {
|
476
|
+
chdr.splice(position, 0, childId);
|
477
|
+
} else {
|
478
|
+
chdr.push(childId);
|
479
|
+
}
|
457
480
|
return true;
|
458
481
|
}
|
459
482
|
}
|
@@ -562,6 +585,18 @@ GroupDefinitions.prototype.setGroupChildren = function (groupId, newChildList) {
|
|
562
585
|
}
|
563
586
|
return false;
|
564
587
|
};
|
588
|
+
|
589
|
+
/** @public
|
590
|
+
* @param {string} groupId
|
591
|
+
* @return {string}
|
592
|
+
*/
|
593
|
+
GroupDefinitions.prototype.getGroupName = function (groupId) {
|
594
|
+
var groupDef = this._groupMap[groupId];
|
595
|
+
if(groupDef) {
|
596
|
+
return groupDef.name || "";
|
597
|
+
}
|
598
|
+
return "";
|
599
|
+
};
|
565
600
|
/** @public
|
566
601
|
* @param {string} groupId
|
567
602
|
* @param {string} groupName
|
@@ -578,5 +613,6 @@ GroupDefinitions.prototype.setGroupName = function (groupId, groupName) {
|
|
578
613
|
|
579
614
|
return false;
|
580
615
|
};
|
616
|
+
|
581
617
|
export default GroupDefinitions;
|
582
618
|
export { GroupDefinitions };
|
@@ -83,7 +83,7 @@ var _fieldInfo = {
|
|
83
83
|
"words2": {type: "string", min: 3, max: 10},
|
84
84
|
"words3": {type: "string", min: 5, max: 15},
|
85
85
|
"sentence": {type: "string", min: 8, max: 20},
|
86
|
-
"id": {type: "function", generate: _generateId},
|
86
|
+
"id": {type: "function", hash: 0, generate: _generateId},
|
87
87
|
"companyName": {type: "set", members: DataSet.companyName },
|
88
88
|
"industry": {type: "set", members: DataSet.industry },
|
89
89
|
"market": {type: "set", members: DataSet.market },
|
@@ -103,14 +103,16 @@ var getFieldInfo = function(field) {
|
|
103
103
|
* @param {Object|Function} options
|
104
104
|
*/
|
105
105
|
var addFieldInfo = function(field, options) {
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
106
|
+
if(field) {
|
107
|
+
var opt = options;
|
108
|
+
if(typeof options === "function") {
|
109
|
+
opt = {
|
110
|
+
type: "function",
|
111
|
+
generate: options
|
112
|
+
};
|
113
|
+
}
|
114
|
+
_fieldInfo[field] = opt; // WARNING: This could replace existing info
|
112
115
|
}
|
113
|
-
_fieldInfo[field] = opt;
|
114
116
|
};
|
115
117
|
|
116
118
|
/** Return pseudo random number in the range of 0 to 1 (exclusive of 1)
|
@@ -452,8 +454,9 @@ var _generate2DArray = function(fields, options, seed) {
|
|
452
454
|
*/
|
453
455
|
var _hash = function(str) {
|
454
456
|
var sum = 0;
|
455
|
-
|
456
|
-
|
457
|
+
var i = str ? str.length : 0;
|
458
|
+
while(--i >= 0) {
|
459
|
+
sum += str.charCodeAt(i) * (i + 0.9879);
|
457
460
|
}
|
458
461
|
return sum;
|
459
462
|
};
|
@@ -465,35 +468,34 @@ var _hash = function(str) {
|
|
465
468
|
*/
|
466
469
|
var _generateFieldData = function(field, options, seed) {
|
467
470
|
var fInfo = getFieldInfo(field);
|
471
|
+
if(!fInfo.type) {
|
472
|
+
fInfo.type = "number";
|
473
|
+
addFieldInfo(field, fInfo);
|
474
|
+
}
|
475
|
+
if(fInfo.fixedValue){
|
476
|
+
fInfo.value = value;
|
477
|
+
return fInfo;
|
478
|
+
}
|
479
|
+
if(seed != null) {
|
480
|
+
if(fInfo.hash == null) {
|
481
|
+
fInfo.hash = _hash(field);
|
482
|
+
}
|
483
|
+
seed += fInfo.hash; // Make each field unique for the same seed
|
484
|
+
}
|
485
|
+
|
468
486
|
var min = fInfo.min != null ? fInfo.min : 100; // WARNING: Default values are non-standard values
|
469
487
|
var max = fInfo.max != null ? fInfo.max : 10000;
|
470
|
-
var prec = fInfo.prec != null ? fInfo.prec : 0;
|
471
488
|
var value;
|
472
489
|
|
473
|
-
if(fInfo.
|
474
|
-
value = fInfo.fixedValue;
|
475
|
-
} else if(!fInfo.type) { // Unknown type
|
476
|
-
if(seed != null) {
|
477
|
-
if(field) {
|
478
|
-
if(!fInfo.hash) {
|
479
|
-
fInfo.hash = _hash(field);
|
480
|
-
addFieldInfo(field, fInfo); // WARNING: modify global state
|
481
|
-
}
|
482
|
-
seed += fInfo.hash;
|
483
|
-
}
|
484
|
-
}
|
485
|
-
value = randNumber(min, max, prec, seed);
|
486
|
-
} else if(fInfo.type === "string") {
|
490
|
+
if(fInfo.type === "string") {
|
487
491
|
if(fInfo.min != null || fInfo.max != null) {
|
488
|
-
if(seed != null) {
|
489
|
-
if(!fInfo.hash) {
|
490
|
-
fInfo.hash = _hash(field);
|
491
|
-
}
|
492
|
-
seed += fInfo.hash;
|
493
|
-
}
|
494
492
|
value = randString(min, max, seed);
|
495
493
|
} else {
|
496
|
-
|
494
|
+
if(options) {
|
495
|
+
value = options.text || "";
|
496
|
+
} else {
|
497
|
+
value = "";
|
498
|
+
}
|
497
499
|
}
|
498
500
|
} else if(fInfo.type === "set") {
|
499
501
|
value = randMember(fInfo.members, seed);
|
@@ -510,7 +512,8 @@ var _generateFieldData = function(field, options, seed) {
|
|
510
512
|
} else if(fInfo.type === "function") {
|
511
513
|
fInfo.field = field;
|
512
514
|
value = fInfo.generate(fInfo, seed);
|
513
|
-
} else { // Default is number
|
515
|
+
} else { // Default is number for all unknown type
|
516
|
+
var prec = fInfo.prec != null ? fInfo.prec : 0;
|
514
517
|
value = randNumber(min, max, prec, seed);
|
515
518
|
}
|
516
519
|
fInfo.value = value;
|
@@ -137,6 +137,8 @@ declare class ColumnStackPlugin extends GridPlugin {
|
|
137
137
|
|
138
138
|
public isStackHidden(stackId: string): boolean|null|null;
|
139
139
|
|
140
|
+
public moveStack(stackId: string, destCol?: (number|string)|null): boolean;
|
141
|
+
|
140
142
|
}
|
141
143
|
|
142
144
|
export default ColumnStackPlugin;
|
@@ -70,6 +70,8 @@ declare class DataTable extends DataCache {
|
|
70
70
|
|
71
71
|
public setColumnSortingLogic(cid: string, func: DataTable.SortLogic|null): void;
|
72
72
|
|
73
|
+
public getColumnSortingLogic(cid?: string|null): DataTable.SortLogic|null;
|
74
|
+
|
73
75
|
public freeze(bool?: boolean|null): boolean;
|
74
76
|
|
75
77
|
public unfreeze(bool?: boolean|null): boolean;
|
@@ -90,7 +92,7 @@ declare class DataTable extends DataCache {
|
|
90
92
|
|
91
93
|
public getSegmentParentRowId(rid: string): string;
|
92
94
|
|
93
|
-
public getSegmentValues(rids?: (string)[]|null): (number)[]|null;
|
95
|
+
public getSegmentValues(rids?: (string)[]|null, partial?: boolean|null): (number)[]|null;
|
94
96
|
|
95
97
|
public fillSegment(segmentId: string): void;
|
96
98
|
|
@@ -80,6 +80,8 @@ declare class DataView extends EventDispatcher {
|
|
80
80
|
|
81
81
|
public setColumnSortingLogic(cid: string, func: DataTable.SortLogic|null): void;
|
82
82
|
|
83
|
+
public getColumnSortingLogic(cid?: string|null): DataTable.SortLogic|null;
|
84
|
+
|
83
85
|
public isSorting(): boolean;
|
84
86
|
|
85
87
|
public hideRow(rId: string|number|null, hidden?: boolean|null): void;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import Ext from "../../../../tr-grid-util/es6/Ext.js";
|
2
2
|
import GroupDefinitions from "../../../../tr-grid-util/es6/GroupDefinitions.js"; // eslint-disable-line
|
3
|
+
import { isEmptyObject } from "../../../../tr-grid-util/es6/Util.js";
|
3
4
|
import ElementWrapper from "./components/ElementWrapper.js";
|
4
5
|
import ILayoutGrid from "./ILayoutGrid.js"; // eslint-disable-line
|
5
6
|
import LayoutGrid from "./LayoutGrid.js";
|
@@ -32,6 +33,13 @@ declare namespace Core {
|
|
32
33
|
dataSource: DataView|null
|
33
34
|
};
|
34
35
|
|
36
|
+
type BatchInfo = {
|
37
|
+
reset?: string|null,
|
38
|
+
insertion?: string|null,
|
39
|
+
removal?: string|null,
|
40
|
+
moving?: string|null
|
41
|
+
};
|
42
|
+
|
35
43
|
type CellReference = Core.MouseInfo|ElementWrapper|Element|null;
|
36
44
|
|
37
45
|
type ColumnOptions = {
|
@@ -395,6 +403,10 @@ declare class Core extends ElementWrapper {
|
|
395
403
|
|
396
404
|
public getColumnGroupChildIds(groupId: string): (string)[]|null;
|
397
405
|
|
406
|
+
public startBatch(batchType: string): boolean;
|
407
|
+
|
408
|
+
public stopBatch(batchType: string): boolean;
|
409
|
+
|
398
410
|
public getColumnId(colIndex: number): string;
|
399
411
|
|
400
412
|
public getColumnIds(): (string)[];
|