@refinitiv-ui/efx-grid 6.0.140 → 6.0.141
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.
- package/lib/core/dist/core.js +99 -28
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/DataTable.d.ts +5 -1
- package/lib/core/es6/data/DataTable.js +38 -8
- package/lib/core/es6/data/DataView.d.ts +2 -0
- package/lib/core/es6/data/DataView.js +8 -0
- package/lib/core/es6/data/Segment.d.ts +1 -1
- package/lib/core/es6/data/Segment.js +16 -4
- package/lib/core/es6/data/SegmentCollection.d.ts +2 -0
- package/lib/core/es6/data/SegmentCollection.js +21 -10
- package/lib/core/es6/grid/Core.js +1 -1
- package/lib/core/es6/grid/components/Cell.js +9 -3
- package/lib/core/es6/grid/components/ElementWrapper.d.ts +2 -0
- package/lib/core/es6/grid/components/ElementWrapper.js +6 -2
- package/lib/grid/index.js +1 -1
- package/lib/row-segmenting/es6/RowSegmenting.d.ts +8 -1
- package/lib/row-segmenting/es6/RowSegmenting.js +88 -23
- package/lib/rt-grid/dist/rt-grid.js +607 -566
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/Grid.js +37 -14
- package/lib/rt-grid/es6/RowDefinition.d.ts +1 -1
- package/lib/rt-grid/es6/RowDefinition.js +11 -3
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.d.ts +1 -1
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +2 -3
- package/lib/tr-grid-util/es6/jet/MockQuotes2.d.ts +2 -0
- package/lib/tr-grid-util/es6/jet/MockQuotes2.js +38 -8
- package/lib/types/es6/ConditionalColoring.d.ts +1 -1
- package/lib/types/es6/Core/data/DataTable.d.ts +5 -1
- package/lib/types/es6/Core/data/DataView.d.ts +2 -0
- package/lib/types/es6/Core/data/Segment.d.ts +1 -1
- package/lib/types/es6/Core/data/SegmentCollection.d.ts +2 -0
- package/lib/types/es6/Core/grid/components/ElementWrapper.d.ts +2 -0
- package/lib/versions.json +3 -3
- package/package.json +1 -1
package/lib/rt-grid/es6/Grid.js
CHANGED
@@ -617,6 +617,10 @@ Grid.prototype._topSection = true;
|
|
617
617
|
* @private
|
618
618
|
*/
|
619
619
|
Grid.prototype._focusingArgs = null;
|
620
|
+
/** @type {boolean}
|
621
|
+
* @private
|
622
|
+
*/
|
623
|
+
Grid.prototype._hasNewUpdates = false;
|
620
624
|
|
621
625
|
/** @public
|
622
626
|
*/
|
@@ -2381,8 +2385,12 @@ Grid.prototype.insertRow = function(rowOption, rowRef) {
|
|
2381
2385
|
}
|
2382
2386
|
}
|
2383
2387
|
let rowDef = new RowDefinition(rowOption);
|
2388
|
+
|
2389
|
+
if(rowDef.setDataSource(this._dc, this._subs)) { // This could also subscribe chain index/ric to JET/RTK
|
2390
|
+
this._hasNewUpdates = true; // Mark data table for cleaning it up later
|
2391
|
+
}
|
2384
2392
|
rowDef.registerToView(this._dv, this._getRowId(rowRef));
|
2385
|
-
|
2393
|
+
|
2386
2394
|
this._initDuplicateRicData(rowDef);
|
2387
2395
|
|
2388
2396
|
if(rowOption && rowOption["hidden"]) {
|
@@ -3763,11 +3771,21 @@ Grid.prototype._registerConstituents = function(rowDef) {
|
|
3763
3771
|
* @param {Object} e
|
3764
3772
|
*/
|
3765
3773
|
Grid.prototype._onDataChanged = function(e) {
|
3766
|
-
if(this._dt
|
3767
|
-
|
3768
|
-
|
3769
|
-
|
3770
|
-
|
3774
|
+
if(!this._dt) {
|
3775
|
+
return;
|
3776
|
+
}
|
3777
|
+
if(e) {
|
3778
|
+
if(e["initialChanges"] && !this._dt.hasSegmentClassification()) {
|
3779
|
+
return;
|
3780
|
+
}
|
3781
|
+
|
3782
|
+
// TODO: Insertion should also be addressed here.
|
3783
|
+
if(e["rid"] && e["changes"]) {
|
3784
|
+
let rowDef = this._getRowDefinitionById(e["rid"]);
|
3785
|
+
if(rowDef) {
|
3786
|
+
if(rowDef.addUpdate(e["changes"])) { // This is the only place that update array can grow. It is used for blinking data.
|
3787
|
+
this._hasNewUpdates = true; // Mark data table for cleaning it up later
|
3788
|
+
}
|
3771
3789
|
}
|
3772
3790
|
}
|
3773
3791
|
}
|
@@ -3776,10 +3794,8 @@ Grid.prototype._onDataChanged = function(e) {
|
|
3776
3794
|
return;
|
3777
3795
|
}
|
3778
3796
|
|
3779
|
-
|
3780
|
-
|
3781
|
-
this._dt.dispatchGlobalChange();
|
3782
|
-
}
|
3797
|
+
this._dt.classifySegments();
|
3798
|
+
this._dt.dispatchGlobalChange();
|
3783
3799
|
};
|
3784
3800
|
|
3785
3801
|
/** @private
|
@@ -3841,9 +3857,10 @@ Grid.prototype._asyncClearDataUpdates = function() {
|
|
3841
3857
|
/** @private
|
3842
3858
|
*/
|
3843
3859
|
Grid.prototype._clearDataUpdates = function() {
|
3844
|
-
if(!this._dt || !this.
|
3860
|
+
if(!this._dt || !this._hasNewUpdates) {
|
3845
3861
|
return;
|
3846
3862
|
}
|
3863
|
+
this._hasNewUpdates = false;
|
3847
3864
|
let rowIds = this._dt.getAllRowIds(true); // Use shallow copy for speed
|
3848
3865
|
for(let i = rowIds.length; --i >= 0;) {
|
3849
3866
|
let rowData = this._dt.getRowData(rowIds[i]);
|
@@ -4001,7 +4018,11 @@ Grid.prototype._onFormulaDataRequired = function(e) {
|
|
4001
4018
|
Grid.prototype._onDataComposed = function(e) {
|
4002
4019
|
let values = e["changes"];
|
4003
4020
|
if(!values) {
|
4004
|
-
|
4021
|
+
if(e["initialChanges"]) {
|
4022
|
+
values = e["changes"] = e["initialChanges"]; // Need to keep e["changes"] for backward compatibility.
|
4023
|
+
} else {
|
4024
|
+
return; // Cannot do data composition if there is no change in data
|
4025
|
+
}
|
4005
4026
|
}
|
4006
4027
|
|
4007
4028
|
if(!e["rowData"]) {
|
@@ -4009,7 +4030,7 @@ Grid.prototype._onDataComposed = function(e) {
|
|
4009
4030
|
}
|
4010
4031
|
|
4011
4032
|
let rowId = e["rid"];
|
4012
|
-
let rowDef = this._getRowDefinitionById(rowId);
|
4033
|
+
let rowDef = e["rowDef"] || this._getRowDefinitionById(rowId);
|
4013
4034
|
if(!rowDef) {
|
4014
4035
|
rowDef = this._constituentMap ? this._constituentMap[rowId] : null; // Row def could be in pending for adding to view
|
4015
4036
|
if(!rowDef) {
|
@@ -4079,8 +4100,10 @@ Grid.prototype._onSubSegmentChanged = function(e) {
|
|
4079
4100
|
rowDef = new RowDefinition({
|
4080
4101
|
"segmentId": segmentId // WARNING: This could cause row id duplication
|
4081
4102
|
});
|
4103
|
+
if(rowDef.setDataSource(this._dc)) { // auto generated row does not require a subscription
|
4104
|
+
this._hasNewUpdates = true; // Mark data table for cleaning it up later
|
4105
|
+
}
|
4082
4106
|
rowDef.registerToView(this._dv);
|
4083
|
-
rowDef.setDataSource(this._dc); // auto generated row does not require a subscription
|
4084
4107
|
}
|
4085
4108
|
};
|
4086
4109
|
|
@@ -603,20 +603,28 @@ RowDefinition.prototype.getType = function() {
|
|
603
603
|
* @public
|
604
604
|
* @param {DataCache} dataSource
|
605
605
|
* @param {Object=} subs Quotes2 subscription object
|
606
|
+
* @return {boolean} Returns true if there is an data update
|
606
607
|
*/
|
607
608
|
RowDefinition.prototype.setDataSource = function(dataSource, subs) {
|
608
609
|
this._dc = dataSource || null;
|
609
|
-
|
610
|
+
let dataUpdated = false;
|
610
611
|
if(this._dc) {
|
611
|
-
this.setRowData({}); // Trigger data change
|
612
612
|
if(this._staticValues) {
|
613
|
-
|
613
|
+
let rowData = _cloneObject(this._staticValues);
|
614
|
+
dataUpdated = this.addUpdate(rowData);
|
615
|
+
this._dc.setRowData(this._rowId, rowData, {
|
616
|
+
"rowDef": this, // The _onDataChanged and _onDataComposed handlers cannot get rowDef from DT because row does not register to view yet.
|
617
|
+
"initialChanges": this.getUpdates() // Used by _onDataComposed to keep backward compatibility.
|
618
|
+
}); // Trigger dataComposed and add updates
|
619
|
+
} else {
|
620
|
+
this._dc.setRowData(this._rowId, {});
|
614
621
|
}
|
615
622
|
}
|
616
623
|
|
617
624
|
this._subs = subs || null;
|
618
625
|
// This will work for runtime row insertion, but not for first initilization.
|
619
626
|
this.subscribeForUpdates();
|
627
|
+
return dataUpdated;
|
620
628
|
};
|
621
629
|
/** @public
|
622
630
|
* @return {DataCache} dataSource
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import {Ext} from '../../tr-grid-util/es6/Ext.js';
|
2
2
|
import {GridPlugin} from '../../tr-grid-util/es6/GridPlugin.js';
|
3
|
-
import {extendObject, injectCss, prettifyCss
|
3
|
+
import {extendObject, injectCss, prettifyCss} from '../../tr-grid-util/es6/Util.js';
|
4
4
|
import {CellPainter} from '../../tr-grid-util/es6/CellPainter.js';
|
5
5
|
import {FilterBuilder} from '../../tr-grid-util/es6/FilterBuilder.js';
|
6
6
|
import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import {Ext} from '../../tr-grid-util/es6/Ext.js';
|
2
2
|
import {GridPlugin} from '../../tr-grid-util/es6/GridPlugin.js';
|
3
|
-
import {extendObject, injectCss, prettifyCss
|
3
|
+
import {extendObject, injectCss, prettifyCss} from '../../tr-grid-util/es6/Util.js';
|
4
4
|
import {CellPainter} from '../../tr-grid-util/es6/CellPainter.js';
|
5
5
|
import {FilterBuilder} from '../../tr-grid-util/es6/FilterBuilder.js';
|
6
6
|
import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
|
@@ -1200,7 +1200,6 @@ ConditionalColoringPlugin.prototype._onSectionBinding = function (e) {
|
|
1200
1200
|
}
|
1201
1201
|
|
1202
1202
|
let prevDataRow, prevDataRows = host._prevDataRows;
|
1203
|
-
let isPrevRowExisted = !isEmptyObject(prevDataRows);
|
1204
1203
|
let api = this.getGridApi();
|
1205
1204
|
for (r = fromR; r < toR; ++r) {
|
1206
1205
|
rid = dv.getRowId(r);
|
@@ -1260,7 +1259,7 @@ ConditionalColoringPlugin.prototype._onSectionBinding = function (e) {
|
|
1260
1259
|
}
|
1261
1260
|
}
|
1262
1261
|
} else {
|
1263
|
-
if(
|
1262
|
+
if(insertedRow){
|
1264
1263
|
blinking = true;
|
1265
1264
|
bgBlinking = painter.flash(cell, this._insertionBlinking, dataRow);
|
1266
1265
|
}
|
@@ -29,6 +29,8 @@ declare class MockSubscriptions {
|
|
29
29
|
|
30
30
|
public setPercentageDataUpdate(percent?: number|null): void;
|
31
31
|
|
32
|
+
public setPercentageOrderChanged(percent?: number|null): void;
|
33
|
+
|
32
34
|
public setSeed(seed: number): void;
|
33
35
|
|
34
36
|
public addRic(ric: string, subId?: string|null): string|null|null;
|
@@ -152,6 +152,10 @@ MockSubscriptions.prototype._maxInterval = 850;
|
|
152
152
|
*/
|
153
153
|
MockSubscriptions.prototype._percentageDataUpdate = 0.1; // 10% by default
|
154
154
|
/** @private
|
155
|
+
* @type {number}
|
156
|
+
*/
|
157
|
+
MockSubscriptions.prototype._percentageOrderChange = 1; // 100%
|
158
|
+
/** @private
|
155
159
|
* @type {boolean}
|
156
160
|
*/
|
157
161
|
MockSubscriptions.prototype._constituentCache = false;
|
@@ -184,6 +188,11 @@ MockSubscriptions.prototype.config = function(options) {
|
|
184
188
|
this._percentageDataUpdate = num / 100;
|
185
189
|
}
|
186
190
|
|
191
|
+
num = options.percentageOrderChange;
|
192
|
+
if(typeof num === "number") {
|
193
|
+
this._percentageOrderChange = num / 100;
|
194
|
+
}
|
195
|
+
|
187
196
|
let value = options.constituentCache;
|
188
197
|
if(value != null) {
|
189
198
|
this._constituentCache = value;
|
@@ -212,6 +221,15 @@ MockSubscriptions.prototype.setPercentageDataUpdate = function(percent) {
|
|
212
221
|
}
|
213
222
|
};
|
214
223
|
|
224
|
+
/** @public
|
225
|
+
* @param {number=} percent
|
226
|
+
*/
|
227
|
+
MockSubscriptions.prototype.setPercentageOrderChanged = function(percent) {
|
228
|
+
if(typeof percent === "number") {
|
229
|
+
this._percentageOrderChange = Math.round(percent / 100);
|
230
|
+
}
|
231
|
+
};
|
232
|
+
|
215
233
|
/** @public
|
216
234
|
* @param {number} seed
|
217
235
|
*/
|
@@ -499,7 +517,7 @@ MockSubscriptions.prototype._addSymbol = function(ric, asChain, subId) {
|
|
499
517
|
childSub["CHILD_ORDER"] = i;
|
500
518
|
this._dataMap.addItem(_joinSubKeys(sub, childSub), childSub);
|
501
519
|
}
|
502
|
-
} else {
|
520
|
+
} else { // Duplicate chain
|
503
521
|
let firstSub = subs[0];
|
504
522
|
let constituents = firstSub["children"];
|
505
523
|
childCount = constituents.length;
|
@@ -547,7 +565,6 @@ MockSubscriptions.prototype._connect = function() {
|
|
547
565
|
}
|
548
566
|
};
|
549
567
|
|
550
|
-
/** @private */
|
551
568
|
MockSubscriptions.prototype._onSubscriptionResponse = function() {
|
552
569
|
this._timerId = 0;
|
553
570
|
|
@@ -565,20 +582,22 @@ MockSubscriptions.prototype._onSubscriptionResponse = function() {
|
|
565
582
|
let numRows = this._dataGen.randInt(minRow, maxRow);
|
566
583
|
let fields = this._fields;
|
567
584
|
|
585
|
+
let updateCount = 0;
|
586
|
+
let childOrderChange;
|
568
587
|
for(let i = 0; i < numRows; i++) {
|
588
|
+
// find key to random subs (key is subId)
|
569
589
|
let key = keys[this._dataGen.randIndex(len)]; // WARNING: Same sub could be picked more than once
|
570
590
|
let subs = this._dataMap.getItems(key); // Get all subs with the same RIC
|
571
591
|
|
572
592
|
let sub = subs[0]; // Only the first sub is need to generate data
|
593
|
+
let values, j, jLen;
|
573
594
|
let subParent = sub.parent;
|
574
|
-
let updatePosition = this._dataGen.
|
595
|
+
let updatePosition = this._dataGen.randInt(0, 100) < this._percentageOrderChange * 100 ? true : false; // Random chance to change dynamic chain position (2% to change)
|
575
596
|
|
576
|
-
let values, j, jLen;
|
577
597
|
if(_isDynamicChain(key) && subParent && updatePosition) { // subParent in header of dynamic chain is behavior like a normal ric
|
578
|
-
// TODO: support rate of ordering is changed
|
579
598
|
let children = subParent.children;
|
580
599
|
|
581
|
-
children = _shuffleArray(children);
|
600
|
+
children = _shuffleArray(children); // Random swap children in array
|
582
601
|
let childrenLen = children.length;
|
583
602
|
let subIndex = children.indexOf(sub);
|
584
603
|
sub["CHILD_ORDER"] = subIndex;
|
@@ -600,22 +619,33 @@ MockSubscriptions.prototype._onSubscriptionResponse = function() {
|
|
600
619
|
});
|
601
620
|
}
|
602
621
|
}
|
603
|
-
|
622
|
+
childOrderChange = true;
|
604
623
|
}
|
605
624
|
|
606
625
|
} else {
|
607
626
|
values = this._generateQuoteData(sub, fields);
|
608
|
-
jLen = subs.length;
|
627
|
+
jLen = subs.length; // Duplicate ric or chain
|
609
628
|
for(j = 0; j < jLen; ++j) { // It could be same ric and it need to dispatch with same ric number
|
610
629
|
let childOrder = subs[j]["CHILD_ORDER"];
|
611
630
|
if(childOrder != null) { // Children of chain will have a CHILD_ORDER
|
612
631
|
values["CHILD_ORDER"] = childOrder;
|
613
632
|
}
|
614
633
|
this._dispatchDataChanged(subs[j], values);
|
634
|
+
updateCount++;
|
615
635
|
}
|
616
636
|
}
|
617
637
|
}
|
618
638
|
|
639
|
+
let postObj = {};
|
640
|
+
if(childOrderChange != null) {
|
641
|
+
postObj["childOrderChange"] = childOrderChange;
|
642
|
+
}
|
643
|
+
if(updateCount != null) {
|
644
|
+
postObj["updateCount"] = updateCount;
|
645
|
+
}
|
646
|
+
|
647
|
+
this._dispatchPostUpdate(postObj);
|
648
|
+
|
619
649
|
this._connect();
|
620
650
|
};
|
621
651
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import {Ext} from '../../tr-grid-util/es6/Ext.js';
|
2
2
|
import {GridPlugin} from '../../tr-grid-util/es6/GridPlugin.js';
|
3
|
-
import {extendObject, injectCss, prettifyCss
|
3
|
+
import {extendObject, injectCss, prettifyCss} from '../../tr-grid-util/es6/Util.js';
|
4
4
|
import {CellPainter} from '../../tr-grid-util/es6/CellPainter.js';
|
5
5
|
import {FilterBuilder} from '../../tr-grid-util/es6/FilterBuilder.js';
|
6
6
|
import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
|
@@ -88,6 +88,8 @@ declare class DataTable extends DataCache {
|
|
88
88
|
|
89
89
|
public hasSegmentation(): boolean;
|
90
90
|
|
91
|
+
public hasSegmentClassification(): boolean;
|
92
|
+
|
91
93
|
public isSegmentSeparator(rid: string): boolean;
|
92
94
|
|
93
95
|
public getSegment(rid: string): Segment|null;
|
@@ -132,6 +134,8 @@ declare class DataTable extends DataCache {
|
|
132
134
|
|
133
135
|
public requestClassifying(): void;
|
134
136
|
|
137
|
+
public setSegmentDefaultCollapsing(bool: boolean): boolean;
|
138
|
+
|
135
139
|
public dispatchGlobalChange(suppressEvent?: boolean|null): void;
|
136
140
|
|
137
141
|
public static getSortingDefinitions(): void;
|
@@ -144,7 +148,7 @@ declare function prevFrozen(ary: (any)[][], opt_cidList?: (string)[]|null, opt_r
|
|
144
148
|
|
145
149
|
declare function cid(): null;
|
146
150
|
|
147
|
-
declare function removalList(
|
151
|
+
declare function removalList(bool: boolean): boolean;
|
148
152
|
|
149
153
|
declare function logic(a: number, b: number, order: number, sortingDefs: (any[])[]|null): number;
|
150
154
|
|
@@ -304,6 +304,8 @@ declare class DataView extends EventDispatcher {
|
|
304
304
|
|
305
305
|
public setSegmentClassification(segmentRef: string|number|null, fields: string|(string)[]|null): boolean;
|
306
306
|
|
307
|
+
public setSegmentDefaultCollapsing(bool: boolean): boolean;
|
308
|
+
|
307
309
|
public getWrapSize(): number;
|
308
310
|
|
309
311
|
public getWrappedViews(): (WrappedView)[]|null;
|
package/lib/versions.json
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"tr-grid-util": "1.3.
|
2
|
+
"tr-grid-util": "1.3.169",
|
3
3
|
"tr-grid-printer": "1.0.18",
|
4
4
|
"@grid/column-dragging": "1.0.21",
|
5
|
-
"@grid/row-segmenting": "2.0.
|
5
|
+
"@grid/row-segmenting": "2.0.1",
|
6
6
|
"@grid/statistics-row": "1.0.17",
|
7
7
|
"@grid/zoom": "1.0.13",
|
8
8
|
"tr-grid-auto-tooltip": "1.1.9",
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"tr-grid-column-resizing": "1.0.29",
|
15
15
|
"tr-grid-column-selection": "1.0.33",
|
16
16
|
"tr-grid-column-stack": "1.0.76",
|
17
|
-
"tr-grid-conditional-coloring": "1.0.
|
17
|
+
"tr-grid-conditional-coloring": "1.0.74",
|
18
18
|
"tr-grid-content-wrap": "1.0.20",
|
19
19
|
"tr-grid-contextmenu": "1.0.44",
|
20
20
|
"tr-grid-filter-input": "0.9.43",
|
package/package.json
CHANGED